一,内容介绍
加法器是数字电路中的最基础电路之一,也是CPU的核心功能之一。
在这个专栏,我会把所有我知道的数字电路的加法器相关模型都实现一遍并解释其原理。
编程使用的语言为Verilog,代码风格为强迫症系列风格。
加法器系列链接:
上一篇:4位行波加法器设计
目前:四位超前进位加法器设计
下一篇:进位选择加法器
二,超前进位加法器设计原理
超前进位加法器(CLA):carry look-ahead adder
所谓超前进位加法器,即在输入信号a和b到达加法器端口的时候,立刻开始计算所有的进位,从而最大限度的减少我们消耗的时间,提高加法器的工作频率。
下面介绍超前进位加法器的设计原理:
由上上篇全加器的设计我们可以知道,对于一个一位全加器,产生进位的逻辑表达式为:
c_o[1] = (a_i && b_i) || (a_i && c_i) || (b_i && c_i);
转换成数学公式为:
c_o[1] = a_i*b_i + a_i*c_i + b_i*c_i
由二进制加法的交换律,我们可以进一步变换为如下公式:
c_o[1] = a_i*b_i + (a_i + b_i)*c_i
对于四位超前进位加法器而言,第二级加法器的进位carry[0]可以表示为
carry[0] = a_i[0]*b_i[0] + (a_i[0] + b_i[0])*c_i (公式1)
第三级加法器的进位carry[1]可以表示为
carry[1] = a_i[1]*b_i[1] + (a_i[1] + b_i[1])*carry[0] (公式2)
将carry[0]的公式1带入公式2中
可以直接得出carry[1]和a_i[1:0</