verilog语言编写8位全加器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8位全加器

一、实验目的

用verilog语言编写一个8位全加器,并在modelsim软件上进行仿真。

二、代码

1、源代码:

module add8(sum,cout,in1,in2,cin);

input [7:0] in1,in2;

input cin;

output [7:0] sum;

output cout;

assign {cout,sum}=in1+in2+cin;

endmodule

2、激励:

`timescale 1ns/100ps

module add8_tb;

reg[7:0] A,B;

reg CIN;

wire [7:0] SUM;

wire COUT;

add8 ul(

.sum(SUM),

.cout(COUT),

.in1(A),

.in2(B),

.cin(CIN)

);

initial

begin

A=8'd0;B=8'd0;CIN=1'b0;

#10 A=8'd20;B=8'd129;CIN=1'b1;

#10 A=8'd27;B=8'd19;CIN=1'b0;

#10 A=8'd157;B=8'd29;CIN=1'b0;

#10 A=8'd37;B=8'd68;CIN=1'b0;

#10 A=8'd11;B=8'd69;CIN=1'b0;

#10 A=8'd54;B=8'd67;CIN=1'b1;

#10 A=8'd211;B=8'd0;CIN=1'b0;

#10 A=8'd87;B=8'd43;CIN=1'b1;

#10 A=8'd23;B=8'd171;CIN=1'b0;

#10 A=8'd12;B=8'd12;CIN=1'b1;

#10 A=8'd112;B=8'd115;CIN=1'b0;

end

endmodule

三、实验过程

1、上机过程

2、仿真波形

3、波形说明

波形图中,从上至下依次为:输入加数A、输入加数B、输入进位CIN、输出进位COUT、输出和SUM。该程序实现的是A+B+CIN=SUM+COUT。

0+0+0=0;

20+129+1=150;

27+19+0=46;

157+29+0=186;

37+68+0=105;

11+69+0=80;

54+67+1=122;

211+0+0=211;

87+43+1=131;

23+171+0=194;

12+12+1=25;

112+115+0=227;

四、实验过程中碰到的问题

1、对于modelsim软件太陌生,在开始实验的时候,经常做完了上一步就忘了下一步是什么,而且对老师反复强调的很多问题也在手忙脚乱间给忽略了,比如,实验一定要在计算机某一个盘里建立一个独立的文件夹,每次都是实验进行到这一步的时候才想起来还没有建这个文件夹,造成很多返工的情况。

2、开始的时候,由于C语言的习惯,程序的注解全部是用汉字写的,还有在实验刚开始时,将独立文件夹建在桌面上,使得程序在运行过程中出现了大量的汉字,最终结果就是程序莫名其妙的报错,还完全找不到错在哪里,不注重细节导致浪费大量时间。

四、实验心得

本次试验带我进入了verilog的大门,虽然磕磕绊绊,但是我发现我还是挺喜欢这样一个过程,我希望自己能认真努力,让自己的学习更进一步,让之后的实验能顺利一点。

相关文档
最新文档