FPGA Player

好记性不如烂笔头

导航

乘法器之四( 乘加器(Sum of multiplication))

3)      乘加器(Sum of multiplication

乘加模式乘法器的运算结果就是一系列输入数据(乘数)乘以一系列被乘数所产生的部份积的和。

这种乘加结构易于实现MAC(乘-累加)函数,乘累加运算在FIR滤波器等应用中非常常见。乘法器

的每个输入数据(乘数)被乘到一个特定的系数(或者叫被乘数),然后把所有乘积项相加后得到最

终的乘法结果。

在乘加器模式下,每个输入总线每个时钟周期送一位到存储器的地址端口,低位先送。如果乘法器块有

四个输入总线(分别是A、B、C和D),那么第一个时钟送入的四个输入的最低位形成一个4位的 RAM

块地址。下一个时钟,送入四个输入总线的次低位形成RAM块的第二个4位地址值,依此类推。所以对

于一组n位宽度的输入总线,需要n个时钟来送入运算所需要的数据。在每个时钟周期,RAM块依次输

出该特定位和被乘数相乘运算的结果。 

图14是用RAM LUT实现四个4位输入数据以及高达16位常系数的例子。根据不同的权位,移位累加每

个时钟从RAM块得到的部份积,总共需要花费6个时钟周期(四个时钟加载输入数据到RAM块,两个时

钟用于流水延时)来完成这种常系数乘法操作。部份积的每次移位累加增加一个进位位。当第四个部份

积累加完成后,乘法器产生一个22位的输出。输入数据的位宽决定了乘法器的输出位宽以及延时。

 地址位数为16个,每个字为18位, 

图15画出了实现图14所示乘加器的等效电路。

 

图14中的例子是四个4位的数据输入。因为M512 RAM块的大小是32X18 位所以每个M512 RAM块实现图中的

系数时支持的最大输入位宽是5(2^5=32)。根据乘法器的输入数目、位宽,系数的数目、位宽以及需要的执行

速度的不同,所需的RAM块的数目也是不一样的。图14是一个只需一个M512 RAM块的例子。

图16显示了基于图14所示的例子的仿真结果。该例子有一级可选的流水进程,输入A的值中有一个是二进制数

“0001”,系数c0的值是3。

提醒:设计者可以选择减少流水的级数,不过如此会减小设计结果的Fmax

 

表24和表25分别显示了用StratixII和Stratix器件实现图14所示的四输入、16位定系数乘加模式乘法器的结果。

 

表26和表27分别显示了用StratixII和Stratix器件实现四输入、16位变系数乘加模式乘法器的结果。

 

可以将多个M512块和(或者)M4K块组合在一起实现更大的乘法结构,这样就可以同时运算更多的

输入数据和系数的乘积。图17中的例子是用两个M512 RAM块实现八个4位输入数据、八个16位常

系数的乘法器。

 

 

同样也可以用M4K来实现乘法器,特别是当系数大于16位的时候。图18是用一个M4K实现七个16位输入数据乘以

一个20位常系数的乘法器。M4K RAM块的128根地址线对应于七个输入数据或者唯一的系数。执行七个16X20的

乘法,从M4K RAM块产生一个23位的输出。共需18个时钟周期来完成部份积的累加(16个时钟周期用于移位输入

数据到RAM块的地址端口,外加2个时钟周期用来流水延迟)。每次部份积相加,结果的位数会增加一位,这样乘法

器最终产生一个39位的输出结果。

posted on 2012-08-15 16:43  中国的孩子  阅读(3800)  评论(0编辑  收藏  举报