
一、阵列乘法器
将上文中的AB两数相乘的例子:

4比特的AB两数相乘的竖式计算表示成如下,为了区分,方便在阵列格式中看出差异,图中标记了不同的颜色,每组颜色表示一组部分和:

其中ai,bi表示A和B的某个比特,aibi表示ai与bi相与,使用与门电路生成,aibi的值只有0和1。S表示AB相乘的结果。
每一列将使用半加器或者全加器两两相加,其结果表示为Si,如S0 = a0b0,S1 = ( a1b0+a0b1 )mod 2,……,每一列每两个数产生的进位将传递至相邻高的一列参与计算。
所以,将其结构表示为如下结构,即阵列乘法器(Array Multiplier)。

其中HA表示半加器,FA表示全加器,虚线箭头表示进位传播的路线。使用行波进位加法器RCA搭建如上的阵列乘法器即RCA阵列乘法器。
对于m*n的RCA阵列乘法器,将消耗资源如下:
(1)m*n个与门
(2)n个半加器
(3)mn - m – n个加法器
根据进位传播链,可以看出RCA阵列乘法器的关键路径如下:

上图中红线和紫线是该阵列乘法器中由于累加造成的进位链的最长路径。另外,通过使用不同结构的加法器可缩短该进位链的传播延时,如使用进位保留加法器(Carry Save Adder, CSA)。

将RCA阵列乘法器的进位连接至斜下角的加法器,变成上图结构即CSA阵列乘法器,CSA结构的阵列乘法器将进位与和分别计算,不必计算该层的进位,省去了行波进位加法器进位链的依赖,只在最后一级通过RCA结构(上图绿色虚框)传递进位合并最后的结果。
将两种结构的阵列乘法器面积与关键路径对比如下:
RCA结构乘法器使用了8个FA,4个HA,关键路径经过5个FA,2个HA。
CSA结构乘法器使用了8个FA,4个HA,关键路径经过3个FA,3个HA。
CSA结构使用相同的资源却有更优的性能。
以上即是阵列乘法器的基本原理,其中半加器,全加器,行波进位加法器(RCA),进位保留加法器(CSA),参考阅读:
纸上谈芯:【HDL系列】半加器、全加器和行波进位加法器原理与设计zhuanlan.zhihu.com

二、Verilog设计
根据以上例子设计4*4无符号RCA阵列乘法器,主要要点如下:
(1)与门结构,将输入Ai和Bi相与;
(2)半加器和全加器,用于求解阵列乘法器的部分和,对于4*4阵列乘法器,该部分和个数3个。如果扩展成任意位宽的乘法器,可以使用generate…endgenerate生成每个层级的信号;
(3)阵列结构拓扑结构,因为每一部分是行波进位加法器结构,所以,将每个部分和看出N比特的行波进位加法器,即RCA。



阵列乘法器,源码公众号回复00d。
欢迎批评指正,更多阅读,关注“纸上谈芯”,不定期更新,共同学习:
