打印
[Quartus]

基于FPGA的WALLACE TREE乘法器设计

[复制链接]
2329|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaochy1126|  楼主 | 2012-9-15 11:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在数字信号处理中, 乘法器是整个硬件电路时序的关键路径[ 1] 。速度和面积的优化是乘法器设计过程的两个主要考虑因素。由于现代可编程逻辑芯片FPGA的集成度越来越高, 及其相对于ASIC 设计难度较低和产品设计周期短, 受到很多厂家和研究机构的关注。利用它的可编程和可扩展性, 可将传统乘法器设计方法应用到FPGA 芯片中。乘法器设计基本上是部分积的生成及其之间的相加的优化过程[ 2] 。针对FPGA 内部固有结构的特点, 本文着重介绍了一种基于WA LLACETREE 优化算法的改进型乘法器架构。根据FPGA 内部标准独特slice 单元, 有必要对WA LLACE T REE 部分单元加以研究优化, 从而让在FPGA 的乘法器设计中的关键路径时延得以减小, 整体时钟性能得以提高。也能够使FPGA 的面积资源合理优化, 提高器件的整体资源利用率。
1、WALLACE TREE 结构
WALLACE TREE 是对部分积规约, 减小乘法器关键路径时延的一种算法。传统WALLACE T REE结构的CSA( Carry Save Adder ) 阵列乘法器如图1 所示, 其中“.”代表生成的多个部分乘积项, 相应电路中用逻辑与门来实现。求和阵列将前面生成的多个部分积通过3:2 CSA 压缩器, 将其压缩成2 个部分积[ 3] ,最后通过末级进位相加得到所需的最终乘积结果。图中矩形框所示为3: 2 CSA 压缩器, 其电路逻辑等效于一个全加器结构。通过运算可知N 个部分积, 要经类似的log( 2N / 3) 级3:2 压缩, 就可得到2 个部分积[ 4] 。

2、压缩器的优化
由于FPGA 内部的结构是固定的, 没有以上WALLACE T REE 所需要的CSA 标准全加器结构。因此, 在传统的FPGA 电路综合实现时, 该CSA 全加器被综合在FPGA 内部查找表( LU T) 和进位链中, 占用了整个slice 单元的资源。由于经典WA LLACE TREE 结构不具有良好的对称性且需要权重对齐等因素[ 5] , 势必要增大FPGA 电路的复杂度, 增加大量的
FPGA 内部布局和布线资源, 在FPGA 中不规则的布局布线结构, 也增大了关键路径的时延。
为在FPGA 中较好地实现WALLACE T REE 结构, 结合FPGA 中最小标准单元的结构silce, 对CSA全加器单元结构加以改进。如图2 所示, 可将WALLACE TREE 相邻的平级3:2 CSA 压缩器合并成一个6:4 压缩器。该压缩器只需使用1 个FPGA的silce 资源, 就能实现其数字逻辑。下面以3:3 乘法器为例, 进行WALLACE T REE 压缩器的推导和优化。如图2 的第一个部分积, 部分积低位空白应补0,高位空白位用该部分积的最高位补齐[ 6] 。

下面对2 个3:2 CSA 压缩器合并成一个6:4 压缩器单元运算逻辑做理论推导, 其中:

合并这两项3:2 压缩为6:4 压缩时, A1B 2 和P 23 属同级进位, 在计算过程中可将这两项的位置互换, 因此上式可推导演化成:

3、改进CSA 的FPGA 实现
Xilinx 提供了一项强大的用户界面软件工具FPGA Editer, 可以通过手动编辑和修改FPGA 最基本的标准单元slice 结构, 使其符合所需要的逻辑。图3左边是一个WALLACE TREE 6:4 压缩的整体结构,右边是实现架构中一个6:4 压缩的FPGA 内部标准单元slice。slice 电路中虚线是器件原有的预布线, 实线是根据实际电路逻辑手动编辑后slice 内部电路布线。根据上一面的推导式( 5) ~ ( 8) , slice 内部的2 个查找表( LU T) 单元被配置成2 输入异或门单元。为了使整体WALLACE TREE 布线齐整, 还将式( 7) 直通逻辑实现也在该级slice 压缩器中完成, 其中输入电平A1 B2 经过2 个MUX 和一个配置为1 的常有效LATCH 输出到PF2- 3 , 形成一个直通电路[ 7 ] 。
从图3 可以看出, WA LLACE T REE 的6:4 压缩器单元只用一个slice 就可以实现。而几乎所有Xilinx 的FPGA 器件内部slice 结构都类似[ 8] , 因此该6:4 压缩器在基本的FPGA 器件中都可以通过此手动编辑方法实现, 形成一个可供顶层WALLA CETREE 逻辑调用的硬宏模块。

相关帖子

沙发
gaochy1126|  楼主 | 2012-9-15 11:41 | 只看该作者
4、乘法器的FPGA实现和仿真
在顶层乘法器WALLACE T REE 逻辑架构设计中, 可以通过描述语言模块例化来调用前面手动实现的6:4 压缩器, 可将slice 压缩模块看成一个FPGA 中固有的IP 硬宏模块, 调用方法与使用FPGA 器件内部的其他IP 没有区别。在FPGA Editer 中对各个模块相互位置按树的层次和数字逻辑顺序进行约束排列[ 9] , 形成一个约束文件。这样FPGA 芯片面积资源不仅得到充分的利用, 在时序方面也会减小关键路径的时延, 提高时钟频率。
该乘法器的末级加法器要把WALLACE T REE得到的最后2 个部分积快速的相加得到最终结果。末级加法器的实现方法有CPA ( Car ry Propagatio n A dder), 该加法器的利用超前进位, 可以使进位链这个关键路径的时序在逻辑上层次减小[ 10] 。但该加法器在FPGA 综合实现后形成复杂结构, 带来的是利用了很大的布局面积和布线资源。FPGA 内部结构中以其特有纵向结构的超级进位链, 可将进位的器件延时和布线延时优化。可以利用该进位链, 合理进行布局约束优化,使进位链路径时序减小[ 11] 。实践表明, 在16:16的加法器中, 该进位链的时延只有6 ns 左右, 大大减小了整个乘法器关键路径延时。在图4 中列出了本设计的FPGA 布局布线布局布线后仿真结果。该结果在XILINX-Virtex5-VC5VSX35T 器件中运行, 通过Mo de-lSim 仿真输出采集。mult in_a 和mult in_b 分别是16 位乘数, acc_out 是相乘后输出的32 位结果, rst_n 是复
位清0 信号。整个设计的硬件描述语言采用Verelo g语言, 其中例化了预先用FPGA Editer 工具设计好的6:4硬宏压缩模块。

图5 给出了WALLACE T REE 乘法器设计的XILINX-Virtex5-VC5VSX35T 器件实际运行性能参数。该结果是FPGA 器件以系统时钟为120 MHz 运行时, 通过XILINX 公司ISE 套装软件ChipScope 采集获取的数据。图中, unt1 和unt2 采用FPGA 内部一个测试计数器输出的16 位无符号乘数, 将其输入WALLACE TREE 乘法器运算后, 得到一组32 位乘积结果。该实测结果表明, 该结构的乘法器能工作正常工作在120 MHz 系统时钟的条件下, 其实现电路关键路径的延时小于8. 33 ns。

表1 分别列出了16:16, 24:24 位乘法器在FPGA中用工具默认方法和本文方法生成的资源和时序对照图。可以看出, 本文的结构更合理, 资源和速度都得到了一定程度的优化。

5、结语
本文根据FPGA内部标准单元结构, 提出了一种改进的WA LLACE TREE 6:4 压缩器的新型逻辑结构, 并用Xilinx 提供的工具套件FPGA Editer 实现了该压缩器单元。结合乘法器在FPGA 中的仿真表明,该结构的乘法器在提高系统的时钟频率和节省布局布线方面都有很大的优势。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1051

主题

11300

帖子

26

粉丝