一、总体设计:
1.电子计算机是由具有各种逻辑功能的逻辑部件组成的,加法器就属于其中的组合逻辑电路。如果对传统的加法器电路进行改进,在超前进位链的基础上,用一种新的超前进位链树的设计方法不仅可以克服串行进位加法器速度低的缺点,也可以解决单纯的超前进位加法器带负载能力不足等问题,从而在实际电路中使加法器的运算速度达到最优。根据这种理论,可以推导得到最优的任意位加法器。
2.原理如下:
设二进制加法器第i位为Ai,Bi,输出为Si,进位输入为Ci,进位输出为Ci+1
则有:
Si=Ai⊕Bi⊕Ci
Ci+1 =Ai * Bi+ Ai *Ci+ Bi*Ci =Ai * Bi+(Ai+Bi)* Ci
令Gi = Ai * Bi , Pi = Ai+Bi
则Ci+1= Gi+ Pi *Ci
当Ai和Bi都为1时,Gi = 1, 产生进位Ci+1 = 1
当Ai和Bi有一个为1时,Pi = 1,传递进位Ci+1= Ci
因此Gi定义为进位产生信号,Pi定义为进位传递信号。Gi的优先级比Pi高,也就是说:当Gi = 1时(当然此时也有Pi = 1),无条件产生进位,而不管Ci是多少;
当Gi=0而Pi=1时,进位输出为Ci,跟Ci之前的逻辑有关。
3.总体设计思想:设计先行进位加法器的初衷是为了减少甚至消除各个位之间的进位延迟,由上面的原理可思考得到用p和g来表示进位c。但是仅仅求出每个位的p和g是远远不够的,需要进行级联,不同位之间先行进位代替串行,以保证前一个进位可以影响后面多个位的进位,换句话说,就是后面的位的进位可以由很靠前的位的进位求得,以此来减少相邻位之间的进位延迟。进位c得出后,结果s和zero,overflow更是不再话下了。
4.原理图:
二、功能模块设计:
总共9个模块,1个主模块,4个核心模块,4个辅助模块。
1.主模块mu0:即32位先行进位加法器,输入为两个加数32位的x1和x2,输出为结果32位的s,以及判零标识信号和溢出标识信号。内部调用各个子模块以及判零标识信号和溢出标识信号的产生。见3.1之原理图。
2.核心模块mu1:输入为两个加数32位的x1和x2,输出为进位产生信号g和进位传递信号p。功能即由x1和x2求出p和g。p[31:0] = x1[31:0]| x2[31:0],g[31:0] = x1[31:0]&x2[31:0]。见下图: