HDL实验报告
专 业 电子科学与技术
姓 名
学 号
指导老师
1
(3)用Verilog HDL 语言设计四位二进制全加器,并仿真,下载验证其功能。
实验原理
(1)一位全加器原理:
Ai ,Bi分别是两个二进制位,Ci-1是前级进位,Ci是进位,Si是加法结果。
Si=Ai^Bi^Ci-1 ; Ci=(Ai&Bi)|(Ai&Ci-1)|(Bi&Ci-1)
(2)四位二进制全加器原理:
在一位全加器基础上设计多位全加器,利用进位进行级联。
实验步骤
(1)分析原理及功能;
(2)根据原理用Verilog HDL编写程序;
(3)编写测试程序进行仿真;
(4)观察波形,分析仿真结果是否正确。
实验内容
(1)用Verilog HDL 语言描述一位全加器,并使用modelsim 仿真验证结果;
(2)用Verilog HDL 元件例化语句实现四位全加器,modelsim 仿真并下载到实验箱,
用按键模拟输入,led 灯模拟输出,验证结果;
(3)设计程序将加法结果分开输出,即十位数和个位数分别用四位数组表示。
一位全加器
程序
module add_1bit(a,b,ci,co,s);
input a,b,ci;
output co,s;
assign s=a^b^ci,
co=(a&b)|(a&ci)|(b&ci);
endmodule
module t_add1;
reg a,b,ci;
wire co,s;
initial
begin
a=1'b0;
forever #1 a=~a;
end
initial
begin
b=1'b0;
forever #2 b=~b;
end
5
initial
begin
ci=1'b0;
forever #4 ci=~ci;
end
add_1bit tt(.a(a),.b(b),.ci(ci),.co(co),.s(s));
endmodule
波形
四位全加器
程序
module add_1bit(a,b,ci,co,s);
input a,b,ci;
output co,s;
assign s=a^b^ci,
co=(a&b)|(a&ci)|(b&ci);
endmodule
module add_4bit(a,b,ci,co,s);
input[3:0] a,b;
input ci;
output[3:0] s;
output co;
wire[2:0] temp;
add_1bit add0(a[0],b[0],ci,temp[0],s[0]);
add_1bit add1(a[1],b[1],temp[0],temp[1],s[1]);
add_1bit add2(a[2],b[2],temp[1],temp[2],s[2]);
add_1bit add3(a[3],b[3],temp[2],co,s[3]);
endmodule
6
波形
结果分成十位数和个位数的全加器
程序
module add_4bit_2(a,b,ci,out1,out2);
input [3:0] a,b;
input ci;
output [3:0] out1,out2;
reg [3:0] out1,out2;
wire co;
wire [3:0] s;
add_4bit add4(a,b,ci,co,s);
always@(s)
begin
if(co==0)
begin
if(s<=4'b1001)
begin
out2=s;
out1=4'b0000;
end
else if(s>4'b1001)
begin
out2=s-4'
Verilog-HDL实验报告 来自淘豆网m.daumloan.com转载请标明出处.