欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    先行进位加法器.docx

    • 资源ID:3287476       资源大小:39.23KB        全文页数:8页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    先行进位加法器.docx

    先行进位加法器实验四 32位先行进位加法器 一、 功能概述 串行进位加法器延时很大,每级的输出结果都要等上一级的进位到来才可以求和算出结果,这次实验对普通全加器进行改良,改良为先行进位加法器。 先行进位加法器,各级的进位彼此是独立产生,只与输入数据A,B和C_in有关,将各级间的进位级联传播给去掉了,这样就可以减小进位产生的延时。每个等式与只有三级延迟的电路对应,第一级延迟对应进位产生信号和进位传递信号,后两级延迟对应上面的积之和。通过这种进位方式实现的加法器称为超前进位加法器。因为各个进位是并行产生的,所以是一种并行进位加法器。 二、 实验原理 1、设二进制加法器第i位为Ai,Bi,输出为Si,进位输入为Ci,进位输出为Ci+1,则有: Si=AiBiCi Ci+1 =Ai * Bi+ Ai *Ci+ Bi*Ci =Ai * Bi+* Ci 令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时,无条件产生进位,而不管Ci是多少;当Gi=0而Pi=1时,进位输出为Ci,跟Ci之前的逻辑有关。 下面推导4位超前进位加法器。设4位加数和被加数为A和B,进位输入为Cin,进位输出为Cout,对于第i位的进位产生Gi = AiBi ,进位传递Pi=Ai+Bi , i=0,1,2,3。于是这各级进位输出,递归的展开Ci,有: C0 = Cin C1=G0 + P0C0 C2=G1 + P1C1 = G1 + P1G0 + P1P0 C0 C3=G2 + P2C2 = G2 + P2G1 + P2P1G0 + P2P1P0C0 C4=G3 + P3C3 = G3 + P3G2 + P3P2G1 + P3P2P1G0 + P3P2P1P0C0 Cout=C4 由此可以看出,各级的进位彼此独立产生,只与输入数据Ai、Bi和Cin有关。 2、接口说明 表1: 32位超前进位加法器接口信号说明表 序号 接口信号名称 方向 1 2 3 4 3、结构框图 A3128B3128A2724B2724A2320B2320A1916B19164位CLAC284位CLAC244位CLAC204位CLAS1916gm4pm4A1512B1512A118B1184位CLAC124位CLAC8A74B74A30B304位CLAC44位CLAS30gm0pm0C0说明 输入数据 输入数据 加法结果 备注 A31:0 B31:0 S31:0 count I I O O 最高位进位 S3128gm7pm7S2724S2320gm5pm5gm6pm64位BCLAS1512S118S74gm3pm3gm2pm2gm1pm14位BCLA16位CLAgx1px1C32C16gx14位BCLAgx0px0三、 实验方案 方案一:分为两个模块:1个4位add_4和1个add_32,其中add_32调用4个add_4. 首先设计4位超前进位加法器: 框图如下: 设计好四位的之后,开始调用四位的实现32位的。 方案二:分为五个模块:计算传播值和产生值模块:pg模块 超前进位模块:cla模块 加法求和模块:sum模块 求和并按输出a,b,c_in分组:bit_slice模块 32位超前进位加法器总模块:cla_32 总框图: 四、 验证方案: 对32位的两个输入赋值: 当a=32'b1000_0001_0111_1011_1101_1001_1101_1000; b=32'b0111_1000_0001_1000_1100_0111_0101_0001; c_in=1'b0; 结果:s=32'b1111_1001_1001_0100_1010_0001_0010_1001; 当 a=32'b1000_0001_0111_1011_1101_1001_1101_1000; b=32'b0111_1000_0001_1000_1100_0111_0101_0001; c_in=1'b1; 结果:s=32'b1111_1001_1001_0100_1010_0001_0010_1010; 来对波形进行观察,看波形是否正确。 五、 实验代码: 方案一:add_32模块顶层模块: 4位add_4模块 方案二: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: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_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); cla c0(.p(gp3:0),.g(gg3:0),.c_in(ggc0),.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=2'b11; assign ggg3:2=2'b00; cla c2(.p(ggp),.g(ggg),.c_in(c_in),.c(ggc),.gp(gggp),.gg(gggg); assign count=gggg|(gggp&c_in); endmodule pg模块: module pg(a,b,p,g); input 3:0 a,b; output 3:0 p,g; assign p=ab; assign g=a&b; endmodule 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;i<4;i=i+1) begin gp=gp&pi; gg=(gg&pi)|gi; ci=(ci-1&pi-1)|gi-1; end do_cla=c,gp,gg; end endfunction assign c,gp,gg=do_cla(p,g,c_in); endmodule 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 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,p,g); cla i2(p,g,c_in,c,gp,gg); sum i3(a,b,c,s); endmodule 激励代码: module cla32_tb; / Instantiate the Unit Under Test (UUT) cla_32 uut ( .a(a), .b(b), .c_in(c_in), .s(s), / Inputs reg 31:0 a; reg 31:0 b; reg c_in; / Outputs wire 31:0 s; wire count; ); .count(count) initial begin / Initialize Inputs a = 0; b = 0; c_in = 0; / Wait 100 ns for global reset to finish #10 a=32'b1000_0001_0111_1011_1101_1001_1101_1000; b=32'b0111_1000_0001_1000_1100_0111_0101_0001; c_in=1'b0; #10 a=32'b1000_0001_0111_1011_1101_1001_1101_1000; b=32'b0111_1000_0001_1000_1100_0111_0101_0001; c_in=1'b1; / Add stimulus here end endmodule 六、波形图说明 1、仿真波形 2、结果说明 对于三个输入: a=32'b1000_0001_0111_1011_1101_1001_1101_1000; b=32'b0111_1000_0001_1000_1100_0111_0101_0001; c_in=1'b0; 结果与实验方案的相同,结果仿真正确. 七、 实验总结 对于这次实验,自己在老师布置完,努力做了几个下午,不断调试才得到正确结果波形,是非常有收获的。同时我也采用了两种方案来设计,真正的对先行进位加法器有了全新的认识,对于它的内部工作原理深有体会,对自己以后的电路设计奠定了基础,自己以后会更加努力。

    注意事项

    本文(先行进位加法器.docx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开