资源描述:
《数字系统设计32位进位选择加法器设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1、12进位选择加法器原理图32位进位选择加法器原理图仅仅是将12位进位选择加法器原理图中虚线框内的模块再向后重复5次,这就构成了32位进位选择加法器原理图。2、Verilog模块根据上图可以将进位选择加法器在结构上分为四个模块:① 四位先行进位加法器adder_4bits② 四位数据选择器mux_2to1③ 高四位选择加法器(虚线框内部分)adder_high_4bits④ 顶层设计32位进位选择加法器adder_32_bits3、Verilog代码#四位先行进位加法器moduleadder_4bits(a,b,s,ci,co);parameterN=4;input[N-1:0]a;inpu
2、t[N-1:0]b;inputci;output[N-1:0]s;outputco;wire[N-1:0]c;wire[N-1:0]g;wire[N-1:0]p;assigng=a&b;assignp=a
3、b;assignc[0]=g[0]
4、
5、(p[0]&&ci);assignc[1]=g[1]
6、
7、(p[1]&&g[0])
8、
9、(p[1]&&p[0]&&ci);assignc[2]=g[2]
10、
11、(p[2]&&g[1])
12、
13、(p[2]&&p[1]&&g[0])
14、
15、(p[2]&&p[1]&&p[0]&&ci);assignc[3]=g[3]
16、
17、(p[3]&&g[2])
18、
19、(p[3]&&p[2]&&g
20、[1])
21、
22、(p[3]&&p[2]&&p[1]&&g[0])
23、
24、(p[3]&&p[2]&&p[1]&&p[0]&&ci);assigns[0]=p[0]&~g[0]^ci;assigns[1]=p[1]&~g[1]^c[0];assigns[2]=p[2]&~g[2]^c[1];assigns[3]=p[3]&~g[3]^c[2];assignco=c[3];endmodule#四位数据选择器modulemux_2to1(out,in0,in1,sel);parameterN=4;output[N:1]out;input[N:1]in0,in1;inputsel;assignout=sel?i
25、n1:in0;endmodule#高四位选择加法器moduleadder_high_4bits(a,b,ci,co,s);parameterN=4;input[N-1:0]a;input[N-1:0]b;inputci;output[N-1:0]s;outputco;wire[N-1:0]sum1,sum0;wireco1,co0,cand;adder_4bits#(4)adder_1(.a(a),.b(b),.s(sum1),.ci(1'b1),.co(co1));adder_4bits#(4)adder_2(.a(a),.b(b),.s(sum0),.ci(1'b0),.co(co0));
26、mux_2to1#(4)mux1(.in0(sum0),.in1(sum1),.sel(ci),.out(s));andG1(cand,ci,co1);orG2(co,cand,co0);endmodule#顶层设计32位进位选择加法器moduleadder_32bits(a,b,s,ci,co);parameterN=32;input[N-1:0]a;input[N-1:0]b;inputci;output[N-1:0]s;outputco;wireco1,co2,co3,co4,co5,co6,co7;adder_4bits#(4)adder1(.a(a[3:0]),.b(b[3:0]),
27、.ci(ci),.s(s[3:0]),.co(co1));adder_high_4bits#(4)adder2(.a(a[7:4]),.b(b[7:4]),.ci(co1),.s(s[7:4]),.co(co2));adder_high_4bits#(4)adder3(.a(a[11:8]),.b(b[11:8]),.ci(co2),.s(s[11:8]),.co(co3));adder_high_4bits#(4)adder4(.a(a[15:12]),.b(b[15:12]),.ci(co3),.s(s[15:12]),.co(co4));adder_high_4bits#(4)adder
28、5(.a(a[19:16]),.b(b[19:16]),.ci(co4),.s(s[19:16]),.co(co5));adder_high_4bits#(4)adder6(.a(a[23:20]),.b(b[23:20]),.ci(co5),.s(s[23:20]),.co(co6));adder_high_4bits#(4)adder7(.a(a[27:24]),.b(b[27:24]),.c