网站大量收购独家精品文档,联系QQ:2885784924

第11讲 Verilog数字电路设计I(精品·公开课件).ppt

第11讲 Verilog数字电路设计I(精品·公开课件).ppt

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9.1 加 法 器 加法、乘法作为基本的运算,大量应用在数字信号处理和 数字通信的各种算法中。由于加法器、乘法器的使用频繁, 所以其速度往往影响整个系统的运行速度。如果可实现快速 加法器和快速乘法器的设计,则可以提高整个系统的速度。 因此,对加法运算的实现进行一些研究是非常必要的,实 现加法运算的方法有: 级联加法器 并行加法器 超前进位加法器 流水线加法器 9.1.1 级联加法器 级联加法器是由1位全加器构成的,本级的进位输出作为 下一级的进位输入,图9.1是8位级联加法器的结构示意图。 级联加法器的结构简单,但N位级联加法运算的延时是1位 全加器的N倍。因此,在需要高性能的设计中,这种加法结 构不宜采用。 例9.1 8位级联加法器(RTL综合原理图) module add_jl(sum,cout,a,b,cin); output[7:0] sum; output cout; input[7:0] a,b; input cin; full_add1 f0(a[0],b[0],cin,sum[0],cin1); full_add1 f1(a[1],b[1],cin1,sum[1],cin2); full_add1 f2(a[2],b[2],cin2,sum[2],cin3); full_add1 f3(a[3],b[3],cin3,sum[3],cin4); full_add1 f4(a[4],b[4],cin4,sum[4],cin5); full_add1 f5(a[5],b[5],cin5,sum[5],cin6); full_add1 f6(a[6],b[6],cin6,sum[6],cin7); full_add1 f7(a[7],b[7],cin7,sum[7],cout); endmodule module full_add1(a,b,cin,sum,cout); input a,b,cin; output sum,cout; wire s1,m1,m2,m3; and (m1,a,b), (m2,b,cin), (m3,a,cin); xor (s1,a,b), (sum,s1,cin); or (cout,m1,m2,m3); endmodule 9.1.2 并行加法器 采用Verilog语言的加法运算符直接描述。 实现起来容易,其运算速度快,但是耗用的资源多。 例9.2 8位并行加法器 module add_bx(cout,sum,a,b,cin); output[7:0] sum; output cout; input[7:0] a,b; input cin; assign {cout,sum}=a+b+cin; endmodule 9.1.3 超前进位加法器 级联加法器的延时主要是由进位的延时造成的,因此要加 快加法器的运算速度,就必须减少进位延迟,超前进位链能 有效减少进位的延迟。 在级联运算时,高位的进位输入其实是低位的进位输出, 只有完低位运算后,才知道高位有没有进位。 而超前进位链是研究各个进位之间的关系。下面以4位超 前进位链来介绍超前进位的概念。 在书P197例7.14中,我们可以知道: 从上面的超前进位链可以看出,各个进位之间是 彼此独立产生的,因此可以先将每位的进位值计算 出来,不需要按级联的方式,先计算低位相加的结 果得出向高位进位的进位值。因此超前进位可将进 位级联传播给去掉,减小了进位产生的延迟时间。 用样可推导下面的式子: 例9.3 8位超前进位加法器 module add_ahead(sum,cout,a,b,cin); output[7:0] sum; output cout; input[7:0] a,b; input cin; wire[7:0] G,P; wire[7:0] C,sum; assign G[0]=a[0]b[0]; //产生第0本位值和进位值 assign P[0]=a[0]|b[0]; assign C[0]=cin; assign sum[0]=G[0]^P[0]^C[0]; assign G[1]=a[1]b[1]; //产生第1本位值和进位值 assign P[1]=a[1]|b[1]; assign C[1]=G[0]|(P[0]cin); assign sum[1]=G[1]^P[1]^C[1]; assign G[2]=a[2]b[2]; //产生第2本位值和进位值 assign P[2]=a[2]|b[2]; assign C[2]=G[

文档评论(0)

秦圈圈 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档