八位加法器设计实验报告
- 格式:doc
- 大小:1.10 MB
- 文档页数:10
实验四:8位加法器设计实验
1.实验目的:熟悉利用quartus原理图输入方法设计简单组合电路,掌握层次化设计方法。
2.实验原理:一个八位加法器可以由八个全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相接。
3.实验任务:完成半加器,全加器,八位加法器设计,使用例化语句,并将其设计成一个原件符号入库,做好程序设计,编译,程序仿真。
1)编译成功的半加器程序:
module h_adder(a,b,so,co);
input a,b;
output so,co;
assign so=a^b;
assign co=a&b;
endmodule
2)编译成功的全加器程序:
module f_adder(ain,bin,cin,cout,sum);
output cout,sum;input ain,bin,cin;
wire net1,net2,net3;
h_adder u1(ain,bin,net1,net2);
h_adder u2(.a(net1),.so(sum),.b(cin),.co(net3));
or u3(cout,net2,net3);
endmodule
3)编译成功的八位加法器程序:
module f_adder8(ain,bin,cin,cout,sum);
output [7:0]sum; output cout;input [7:0]ain,bin;input cin;
wire cout0, cout1, cout2 ,cout3, cout4,cout5,cout6; f_adder
u0(.ain(ain[0]),.bin(bin[0]),.cin(cin),.sum(sum[0]) ,.cout(cout0));
f_adder
u1(.ain(ain[1]),.bin(bin[1]),.cin(cout0),.sum(sum[1 ]),.cout(cout1));
f_adder
u2(.ain(ain[2]),.bin(bin[2]),.cin(cout1),.sum(sum[2 ]),.cout(cout2));
f_adder
u3(.ain(ain[3]),.bin(bin[3]),.cin(cout2),.sum(sum[3 ]),.cout(cout3));
f_adder
u4(.ain(ain[4]),.bin(bin[4]),.cin(cout3),.sum(sum[4
]),.cout(cout4));
f_adder
u5(.ain(ain[5]),.bin(bin[5]),.cin(cout4),.sum(sum[5 ]),.cout(cout5));
f_adder
u6(.ain(ain[6]),.bin(bin[6]),.cin(cout5),.sum(sum[6 ]),.cout(cout6));
f_adder
u7(.ain(ain[7]),.bin(bin[7]),.cin(cout6),.sum(sum[7 ]),.cout(cout));
endmodule
4)八位加法器仿真程序:
module f_adder8_vlg_tst();
// constants // general purpose registers
//reg eachvec;
// test vector input registers
reg [7:0] ain;
reg [7:0] bin;
reg cin;
// wires wire cout;
wire [7:0] sum;
// assign statements (if any) f_adder8 i1 (
// port map - connection between master ports and signals/registers
.ain(ain),
.bin(bin),
.cin(cin),
.cout(cout),
.sum(sum)
);
initial begin ain=10;bin=11;cin=0;
#100 ain=10;bin=10;cin=0;
#100 ain=10;bin=10;cin=1;
#100 ain=12;bin=18;cin=0;
#100 ain=12;bin=18;cin=1;
#100 $stop;
end
endmodule
5)八位加法器仿真图:
6)元件原理图及元件入库:
半加器原理图:
文件入库bsf:
全加器原理图:
全加器元件入库:
八位全加器rtl图:
八位全加器仿真图: