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;
#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的大门,虽然磕磕绊绊,但是我发现我还是挺喜欢这样一个过程,我希望自己能认真努力,让自己的学习更进一步,让之后的实验能顺利一点。