一,内容介绍
加法器是数字电路中的最基础电路之一,也是CPU的核心功能之一。
在这个专栏,我会把所有我知道的数字电路的加法器相关模型都实现一遍并解释其原理。
编程使用的语言为Verilog,代码风格为强迫症系列风格。
加法器系列链接:
上一篇:koggle-stone加法器设计
目前:brent-kung加法器设计
下一篇:从加法器到计算单元
二,brent-kung加法器设计原理
brent-kung加法器是树形结构,由Richard P.Brent 和 H.T.Kung教授于上世纪80年代提出。设计的思想类似于超前进位加法器,但是brent和kung教授充分的考虑了开销和电路结构本身的拓扑学特性,针对性的升级了超前进位加法器的性能,使其达到了N比特加法器延迟正比于logN, 面积正比于N的效果。
下面介绍一下原理:
以下代码摘自前文:超前进位加法器
carry[0] = p[0] + q[0]*c_i
carry[1] = p[1] + p[0]*q[1] + q[1]*q[0]*c_i
carry[2] = p[2] + p[1]*q[2] + p[0]*q[1]*q[2] + q[2]*q[1]*q[0]*c_i
carry[3] = p[3] + p[2]*q[3] + p[1]*q[2]*q[3] + p[0]*q[1]*q[2]*q[3] +
q[3]*q[2]*q[1]*q[0]*c_i
根据超前进位加法器的进位满足下列关系式:
carry[i] = a