先行进位加法器课件

上传人:29 文档编号:69008023 上传时间:2022-04-05 格式:DOC 页数:11 大小:310KB
收藏 版权申诉 举报 下载
先行进位加法器课件_第1页
第1页 / 共11页
先行进位加法器课件_第2页
第2页 / 共11页
先行进位加法器课件_第3页
第3页 / 共11页
资源描述:

《先行进位加法器课件》由会员分享,可在线阅读,更多相关《先行进位加法器课件(11页珍藏版)》请在装配图网上搜索。

1、精选优质文档-倾情为你奉上实验四 32位先行进位加法器一、 功能概述串行进位加法器延时很大,每级的输出结果都要等上一级的进位到来才可以求和算出结果,这次实验对普通全加器进行改良,改良为先行进位加法器。 先行进位加法器,各级的进位彼此是独立产生,只与输入数据A,B和C_in有关,将各级间的进位级联传播给去掉了,这样就可以减小进位产生的延时。每个等式与只有三级延迟的电路对应,第一级延迟对应进位产生信号和进位传递信号,后两级延迟对应上面的积之和。通过这种进位方式实现的加法器称为超前进位加法器。因为各个进位是并行产生的,所以是一种并行进位加法器。二、 实验原理1、设二进制加法器第i位为Ai,Bi,输出

2、为Si,进位输入为Ci,进位输出为Ci+1,则有: Si=AiBiCi (1-1) Ci+1=Ai *Bi+ Ai *Ci+ Bi*Ci=Ai *Bi+(Ai+Bi)* Ci (1-2)令Gi= Ai* Bi, Pi= Ai+Bi,则Ci+1= Gi+ Pi *Ci当Ai和Bi都为1时,Gi= 1, 产生进位Ci+1= 1当Ai和Bi有一个为1时,Pi= 1,传递进位Ci+1= Ci因此Gi定义为进位产生信号,Pi定义为进位传递信号。Gi的优先级比Pi高,也就是说:当Gi = 1时(当然此时也有Pi = 1),无条件产生进位,而不管Ci是多少;当Gi=0而Pi=1时,进位输出为Ci,跟Ci之前

3、的逻辑有关。 下面推导4位超前进位加法器。设4位加数和被加数为A和B,进位输入为Cin,进位输出为Cout,对于第i位的进位产生Gi = AiBi ,进位传递Pi=Ai+Bi , i=0,1,2,3。于是这各级进位输出,递归的展开Ci,有:C0 = CinC1=G0 + P0C0C2=G1 + P1C1 = G1 + P1G0 + P1P0 C0C3=G2 + P2C2 = G2 + P2G1 + P2P1G0 + P2P1P0C0C4=G3 + P3C3 = G3 + P3G2 + P3P2G1 + P3P2P1G0 + P3P2P1P0C0 (1-3)Cout=C4由此可以看出,各级的进位

4、彼此独立产生,只与输入数据Ai、Bi和Cin有关。2、接口说明表1: 32位超前进位加法器接口信号说明表序号接口信号名称方向说明备注1A31:0I输入数据2B31:0I输入数据3S31:0O加法结果4countO最高位进位3、结构框图三、 实验方案方案一:分为两个模块:1个4位add_4和1个add_32,其中add_32调用4个add_4.首先设计4位超前进位加法器:框图如下:设计好四位的之后,开始调用四位的实现32位的。方案二:分为五个模块:(1)计算传播值和产生值模块:pg模块(2)超前进位模块:cla模块 (3)加法求和模块:sum模块(4)求和并按输出a,b,c_in分组:bit_s

5、lice模块(5)32位超前进位加法器总模块:cla_32总框图:四、 验证方案:对32位的两个输入赋值:当a=32b1000_0001_0111_1011_1101_1001_1101_1000;b=32b0111_1000_0001_1000_1100_0111_0101_0001;c_in=1b0;结果:s=32b1111_1001_1001_0100_1010_0001_0010_1001;当 a=32b1000_0001_0111_1011_1101_1001_1101_1000;b=32b0111_1000_0001_1000_1100_0111_0101_0001;c_in=1b

6、1;结果:s=32b1111_1001_1001_0100_1010_0001_0010_1010;来对波形进行观察,看波形是否正确。五、 实验代码:方案一:(1)add_32模块顶层模块:(2)4位add_4模块方案二:(1)cla_32顶层模块:module cla_32(a,b,c_in,s,count ); input 31:0 a,b; input c_in; output 31:0 s; output count; wire 7:0 gg,gp,gc; wire 3:0 ggg,ggp,ggc; wire gggg,gggp; bit_slice b1(.a(a3:0),.b(b3

7、:0),.c_in(gc0),.s(s3:0),.gp(gp0),.gg(gg0); bit_slice b2(.a(a7:4),.b(b7:4),.c_in(gc1),.s(s7:4),.gp(gp1),.gg(gg1); bit_slice b3(.a(a11:8),.b(b11:8),.c_in(gc2),.s(s11:8),.gp(gp2),.gg(gg2); bit_slice b4(.a(a15:12),.b(b15:12),.c_in(gc3),.s(s15:12),.gp(gp3),.gg(gg3); bit_slice b5(.a(a19:16),.b(b19:16),.c_

8、in(gc4),.s(s19:16),.gp(gp4),.gg(gg4); bit_slice b6(.a(a23:20),.b(b23:20),.c_in(gc5),.s(s23:20),.gp(gp5),.gg(gg5); bit_slice b7(.a(a27:24),.b(b27:24),.c_in(gc6),.s(s27:24),.gp(gp6),.gg(gg6); bit_slice b8(.a(a31:28),.b(b31:28),.c_in(gc7),.s(s31:28),.gp(gp7),.gg(gg7); clac0(.p(gp3:0),.g(gg3:0),.c_in(gg

9、c0),.c(gc3:0),.gp(ggp0),.gg(ggg0);cla c1(.p(gp7:4),.g(gg7:4),.c_in(ggc1),.c(gc7:4),.gp(ggp1),.gg(ggg1);assign ggp3:2=2b11;assign ggg3:2=2b00;cla c2(.p(ggp),.g(ggg),.c_in(c_in),.c(ggc),.gp(gggp),.gg(gggg);assign count=gggg|(gggp&c_in);endmodule(2)pg模块:module pg(a,b,p,g);input 3:0 a,b;output 3:0 p,g;a

10、ssign p=ab;assign g=a&b;endmodule(3)cla模块:module cla(p,g,c_in,c,gp,gg);input 3:0 p,g;input c_in;output 3:0 c;output gp,gg;function 99:0 do_cla; input 3:0 p,g; input c_in; begin:label integer i; reg gp,gg; reg 3:0 c; gp=p0; gg=g0; c0=c_in; for(i=1;i4;i=i+1) begin gp=gpπgg=(gg&pi)|gi;ci=(ci-1&pi-1)

11、|gi-1; enddo_cla=c,gp,gg;end endfunctionassign c,gp,gg=do_cla(p,g,c_in);endmodule(4)sum模块:module sum(a,b,c,s );input 3:0 a,b,c;output 3:0 s;wire 3:0 t=ab;assign s=tc;endmodule(5)bit_slice模块:module bit_slice(a,b,c_in,s,gp,gg );input 3:0 a,b;input c_in;output 3:0 s;output gp,gg;wire 3:0p,g,c;pg i1(a,b

12、,p,g);cla i2(p,g,c_in,c,gp,gg);sum i3(a,b,c,s);endmodule(6)激励代码:module cla32_tb;/ Inputsreg 31:0 a;reg 31:0 b;reg c_in;/ Outputswire 31:0 s;wire count;/ Instantiate the Unit Under Test (UUT)cla_32 uut (.a(a), .b(b), .c_in(c_in), .s(s), .count(count);initial begin/ Initialize Inputsa = 0;b = 0;c_in =

13、 0;/ Wait 100 ns for global reset to finish#10 a=32b1000_0001_0111_1011_1101_1001_1101_1000;b=32b0111_1000_0001_1000_1100_0111_0101_0001;c_in=1b0;#10 a=32b1000_0001_0111_1011_1101_1001_1101_1000;b=32b0111_1000_0001_1000_1100_0111_0101_0001;c_in=1b1; / Add stimulus hereend endmodule六、波形图说明1、仿真波形2、结果说明对于三个输入: a=32b1000_0001_0111_1011_1101_1001_1101_1000; b=32b0111_1000_0001_1000_1100_0111_0101_0001; c_in=1b0;结果与实验方案的相同,结果仿真正确.七、 实验总结 对于这次实验,自己在老师布置完,努力做了几个下午,不断调试才得到正确结果波形,是非常有收获的。同时我也采用了两种方案来设计,真正的对先行进位加法器有了全新的认识,对于它的内部工作原理深有体会,对自己以后的电路设计奠定了基础,自己以后会更加努力。专心-专注-专业

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!