新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于改进的布斯算法FPGA嵌入式18×18乘法器

基于改进的布斯算法FPGA嵌入式18×18乘法器

作者:时间:2012-05-22来源:网络收藏

摘要:设计了一款嵌入,该能够满足两个18 b有符号或17 b无符号数的乘法运算。该设计基于改进的布斯,提出了一种新的布斯译码和部分积结构,并对9-2压缩树和超前进位加法器进行了优化。该采用TSMC 0.18μn CMOS工艺,其关键路径延迟为3.46 ns。

本文引用地址:http://www.eepw.com.cn/article/190351.htm

关键词:布斯;部分积;9-2压缩;两级超前进位加法器

目前,作为可编程逻辑器件(PLD)的主要产品,在通信、消赞电子、汽车电子、工业控制、国防安全等领域得到广泛的应用。由于在性能和灵活性方面的完美组合,的使用范围越来越广,客观上要求加强FPGA数字处理功能(如嵌入乘法器,数字信号处理器(DSP)等)。现住几乎每一款商用FPGA内部几乎都嵌入了乘法器或数字信号处理器,如Xilinx公司的VirtexⅡ系列、Spartan-3/3A系列等。相对来说我国的FPGA仅仅处于起步阶段,FPGA的发展特别是高性能FPGA的发展刻不容缓。本文紧跟国家重大项目,对嵌入到FPGA的乘法器进行了深入的研究提出了一个低功耗、高速度的乘法器。该乘法器采用了高速布斯译码、基于全加器的9-2压缩树和35 b两级超前进位加法器。高速布斯译码器采用了改进的布斯,使得部分积经过3个门的延迟得到,提高速度约为50%;9-2压缩树由3个3-2压缩和一个4-2压缩组成,使得部分积阵列仅经过7个异或门延迟;35 b两级超前进位加法器采用的是基于4 b超前进位加法器,使得加法器仅仅经过10个门的延迟。

1 整体结构

图1为18×18位乘法器的整体结构,它包含了布斯译码模块、压缩树模块和超前进位加法模块。部分积是通过本文采取的布斯译码器快速产生,然后其通过9-2压缩树被压缩成两个35 b的二进制数,最后通过超前进位加法器生成无符号位的35 b的结果。通过乘数和被乘数的符号位异或产生最终积的符号位,这样就得到了36 b的最终结果。从图1可以看出该乘法器整体结构和传统的结构是一样的。

a.JPG

2 布斯译码和部分积

通常进行两个数相乘,是通过所有的部分积相加得到。这样,不仅乘法器的速度都得不到保证,而且会浪费芯片的面积。因此采取现在比较流行的布斯算法,因为它可以使部分积的数目减半,这样对面积和速度都比较有利。在原算法的基础上进行了改进并得到一种新的布斯译码和部分积结构。我们将布斯算法分解为“sig”,“sht”,“add”三个个因子,分别用来代表对被乘数的不同操作。其中“sig”用来决定被乘数是取反还是保持不变;“sht”代表是否对被乘数进行左移一位;而“add”则表示决定最终得到部分积。改进的算法用表达式表示则为:

b.JPG

c.JPG

从图2可以看出,改进的布斯译码器由1个异或门、2个与门和1个或门构成而部分积则是有3个二选一多路选择器构成,其关键路径为3个门的延迟。因此结构要比传统的更为简单、延迟更小。

3 9-2压缩树

华莱士树(Wallace Tree)算法通过并行相加来提高速度。在华莱士树中所有部分积列在同一时间各自独立的进行相加。采用的是一种基于保留进位全加器的9-2压缩树用来压缩部分积阵列的,在每一个9-2压缩树的最顶层有9 b的部分积。9-2压缩树中用到了3个3-2压缩和1个4-2压缩。对于那些少于9 b的部分积列,为了进一步减小芯片面积,根据部分积的数目采用相应的压缩树,并且可以用半加器用来代替3-2压缩(全加器)。

d.JPG

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭