XILINX FPGA大位宽加法运算怎样实现才高效?

这里要求输入数据(两个加数) 的位宽至少大于48-bit,目标是充分利用DSP48的功能,实现高
速设计(时钟频率至少400MHz) 。

先来看看DSP48执行加法运算时的结构:此时乘法器之后的加法器可配置为48-bit有符号数加法
器,其中输入数据来自两部分,一部分由C端口之间提供,另一部分由A端口和B端口一起拼接
为48-bit构成。因此,DSP48执行的是C+A:B。当然,可以通过控制ALUMODE,实现C-A:B 。
我们还注意到,DSP48提供了CARRYCASOUT和CARRYCASIN端口,即级联进位输出和输入端
口,从而可以实现更大位宽的加法运算。

以96-bit有符号数加法运算为例,基于DSP48的架构如下图所示。这里使用了两个DSP48。两者
都执行C+A:B运算。其中底部的DSP48取输入数据的低48位,并将进位输出通过
CARRYCASOUT传递给顶部的DSP48,由CARRYCASIN端口进入。顶部的DSP48取输入数据的
高48位。为了保证输入数据对齐,这里底部的DSP48输入使用了一级流水寄存器,加法器输出使
用了一级流水寄存器。顶部的DSP48输入使用了两级流水寄存器。由于C端口在DSP48内部只有
一级寄存器,故在需要在外部添加一级寄存器。同时,底部DSP48输出端需要在外部添加一级寄
存器。

FPGA大位宽加法运算高效实现.png

有了这样的电路架构,我们就可以在SysGen下使用DSP48E2快速将其搭来,如下图所示这里的核心是设定OPMODE,ALUMODE等控制字以及DSP48E2的内部流水。

2.png

OPMODE实际上是用来控制W/Z/Y/X四个数据选择器的输出,从而调整乘法器或者后续加法器的输入数据源。OPMODE具体内容如下图所示。
3.png

对于更大的位宽,无非是更多的DSP48级联,但从级联个数的角度而言,最好控制在8以内,这样可以缓解布局布线的压力。

从设计方法角度来讲,可以用原语的方式,RTL代码的方式,也可以使用System Generator,相比之下,System Genrator更快捷,这正是模块化设计带来的好处。

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除
匿名用户

匿名