verilog语言编写8位全加器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;
#10A=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;
#10A=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得大门,虽然磕磕绊绊,但就是我发现我还就是挺喜欢这样一个过程,我希望自己能认真努力,让自己得学习更进一步,让之后得实验能顺利一点。