16位先行进位加法器--原理篇
来源:互联网 发布:java泛型教程 编辑:程序博客网 时间:2024/05/02 02:58
前话
这个加法器写的是一波三折啊,昨天晚上花了两三个小时好不容易写完编译通过了,之后modelsim莫名其妙弹出一个对话框,我没看清就那么不小心一点,结果代码没了,惨痛啊。害的我今天早上又花了一上午的时间重写,结果又遇到了搞不清楚的编译问题。不过在重写的过程中,我还是发现昨天写的一些地方有问题,通过这次重写,我把verilog的语句并行理解的更加深刻了。下面总结一下原理和具体的实现。
原理
进位的传递
ci+1 = ai*bi+ai*ci+bi*ci
= ai*bi+(ai+bi)*ci
= gi+pi*ci
gi=ai*bi称为进位生成因子, 只要gi为1, 就有进位
pi=ai+bi称为进位传递因子, 只要pi为1, 就有把低位的进位向前传递
四位进位传递为例
c1 = g0+(p0*c0)
c2 = g1+(p1*g0)+(p1*p0*c0)
c3 = g2+(p2*g1)+(p2*p1*g0)+(p2*p1*p0*c0)
c4 = g3+(p3*g2)+(p3*p2*g1)+(p3*p2*p1*g0)+(p3*p2*p1*p0*c0)
只要低位有一个进位生成, 而且被传递, 则进位输出为1.
对于16位先行加法器,采用4个4位先行进位加法器组成,块内并行,由于高位的块需要用到低位块的进位,快间仍然并行计算进位。方法是产生每块的进位传递因子和进位产生因子。
块间进位传递因子: 每一位的传递因子都为1时才能传递
P0 = p0*p1*p2*p3
块间进位产生因子: 块内产生进位, 不考虑进位输入
G0 = g3+(p3*g2)+(p3*p2*g1)+(p3*p2*p1*g0)
块间进位的计算方法同上(只需要将p,g换成P,G就可以了)。
16位加法器相当与16个半加器同时工作,而每个半加器输入的进位cin都有传递因子和生产因子通过最低进位c0得到,而这16歌进位也是同时得到的。这大大提高了加法器的速度,设一个与非门的延迟为T,先行进位加法器总的延迟11T=2T(产生组内p g)+2T(产生组间P G)+2T(产生组内进位)+2T(产生组间进位)+3T(计算全加)。注意依赖关系,组内p g依赖于操作数a b,组内进位依赖于p g,组间的PG依赖于组内的p g,组间的进位依赖于P G,而全加依赖于组内和组间的进位。
- 16位先行进位加法器--原理篇
- 超前进位加法器(32位)
- 16位行波进位加法器建模和验证
- 4位超前进位加法器-Verilog HDL
- 3-2 Verilog 4位行波进位加法器
- 3-3 Verilog 4位超前进位加法器
- 使用Verilog HDL语言实现4位超前进位加法器
- 先行进位加法
- 超前进位加法器
- 超前进位加法器的理解
- forahead adder 超前进位加法器
- 数字电路设计之32位先进进位加法器的verilog实现
- 16位2级流水灯加法器
- 8位加法器
- FPGA第三篇:加法器
- 加法器
- 加法器
- 加法器
- 线性汇编总结和函数说明
- 访谈录:中国的软件业需要悟道
- 对网站整体的SEO优化规则
- 转载-Cookie应用
- 英语六级作文
- 16位先行进位加法器--原理篇
- 朋友间是没有压力的...
- Eclipse 实用快捷键大全
- CHKJ3000E错误解决
- 已知中序与后序,或者中序与先序,构造二叉树
- 中央经济工作会议落幕 提出明年经济工作任务
- http协议
- [转贴]希腊字母读音表
- 使用javascript在客户端通过 XSLT 将 XML 文档转换为 XHTML,兼容IE和Firefox