行波进位(Ripple Carry)与超前进位(Loodahead Carry)

本来是想研究CPU硬件设计中的中断控制器,找到了magic1的电路图,在分析ALU部分时发现以下电路:

 

查了一下74F382的芯片资料,比较简单,就是进行4位算术/逻辑运算,并输出进位标志C和溢出标志V:

  

74F381也是ALU,S0~S2所选择的功能跟74F382一样,但它的输出就复杂了一点,多了P和G信号。

    

原来,它是为了构建“超前进位”运算单元:

与之相比,使用74F382只能构建“行波进位”:

 

那么,为什么要使用381配合182来产生“超前进位”呢?74F182又是什么呢?它叫“Carry Lookahead Generator”

   

超前进位有什么好处呢?就是为了减少传输延时。不再需要等到低位的计算结果出来后才知道是否进位,才能计算高位的结果。

具体原理为:计算某一位的进位标志 C为输入(A、B、Cin)的三选二表决结果。即:

由此来表示4个全加器的进位输出为:

最终我们需要得到的是C4,经过换算,C4=G3+P3·G2+P3·P2·G1+P3·P2·P1·G0+P3·P2·P1·P0·C0

具体请参考附录的文献1.

 

再回过头来看magic1的电路。

如果只是需要计算16位的结果,只需要三个74381(U1,U2,U3)加一个74382(U5),再配合74182(U6)即可。而U4(74382)的作用是,为了得到低8位的结果标志C和V。

U6右边的一堆或非门和与非门是为了得到低8位和全16位的零标志Z。

 

 

 

参考文献:

1- 加法器的优化——超前进位加法器(Carry-Lookahead Adder,CLA)

https://www.jianshu.com/p/6ce9cad8b467

 

2-Magic1 Homebrew CPU电路原理图

http://www.homebrewcpu.com/Magic1.pdf

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值