当前位置:文档之家› 一种开关移位式32位乘法器的设计

一种开关移位式32位乘法器的设计

第31卷 第5期2008年10月电子器件Chinese J ournal Of Elect ron DevicesVol.31 No.5Oct.2008A 32bit Multiplier DesignB ased on Switch &ShiftL I U X ue 2yong ,L I X i ao 2j i ang ,M A Chen g 2y an3(T he I nstit ute of Microelect ronics ,CA S ,Hangz hou 310053,Chi na )Abstract :The multiplier is an important and co mplex part in t he AL U design of CPU ,it takes up a relative larger area and longer delay.According to t he different requirement s of system ,we can design out vario us multipliers.This paper makes a compromise between system clock and area ,bringing out a none single clock multiplier design based on switch and shift operation.At last by using SYNOPS YS tools it gives out t he synt hesis report and simulating wave to draw a parallel between t his multiplier and t he one generated f rom S YNOPS YS design_ware.K ey w ords :switch ;multi 2cycle ;shift ;multiplier EEACC :6230一种开关移位式32位乘法器的设计刘学勇,李晓江,马成炎3(杭州中科微电子有限公司,杭州310053)收稿日期:2007212206作者简介:刘学勇(19842),男,现为中国科学院微电子研究所2005级硕士研究生,主要研究方向为数字SOC 设计;李晓江,男,现为中国科学院微电子研究硕士生导师,主要研究方向为数字SOC 设计;马成炎,男,研究员,中国科学院微电子研究所博士生导师,研究方向模拟射频芯片设计,machengyan @ 。

摘 要:乘法器在CPU 的AL U 设计中是很重要,也是较为复杂的一部分,它占据大的面积和较长的延时。

根据系统不同的要求,我们可以设计出不同的乘法器。

本文是在系统时钟要求和面积两方的限制下做了折衷,提出了一种基于开关和移位工作方式的多时钟周期乘法器的设计。

最后用DC 进行综合,并经VCS 仿真得到结果与SYNOPSYS 公司design_ware 里的乘法器进行比较,指出其优缺点。

关键词:开关;移位;多周期;乘法器中图分类号:TN 402 文献标识码:A 文章编号:100529490(2008)0521671203 乘法器的代价很高并且运算很慢,许多计算问题的性能常常是由乘法运算所能执行的速度决定的[3]。

在CPU 的运算功能块AL U 设计中,根据系统不同的要求,我们又可以设计单时钟周期或者多时钟周期的乘法器。

有关单周期和多周期乘法器稍微系统一点的阐述,可以参考文献[7]。

一般说来直接在verilog 代码“×”号会使DC 直接调用design 2ware 里的单时钟乘法器进行综合,此乘法器的面积和延时都比较大。

如果需要降低延时并且减小面积的情况下,我们要对乘法操作时钟数进行牺牲。

为此,针对小面积小延时的情况,作者采用分解成原子操作的方法来实现32带符号位数的乘法,达到减小面积和延时的目的。

其具体思路是把2个32bit 分解成为4个16bit 的数来进行操作。

其分解出来的16×16位的无符号数乘法属于一个原子操作,用一个组合逻辑在一个clock 内完成。

1 原子乘法的实现乘法原子操作是16×16位乘法的一个时钟实现,是整个32位乘法器的关键。

此实现基于开关移位原理。

考虑到图的表示过于复杂,暂用8×8的原子操作来图解原理,以此达到理会16×16的原子操作过程。

先给出A =10111101,B =10110001。

如图1,圆圈里的数字表示乘数B ,如果为1则表示开关打开,选择A ;如为0则不打开选择0。

图1 原子操作原理解析考虑对称性,把B 的8bit 数据首先分为4组,两两相邻为一组,每组2bit ,根据其值来选择是否传递A 。

把每组左边传递出来的数据左移1位(方框L1)加上右边传递出来的数据,形成新的数据,如图形成了A1,S1,0和A 。

再把这四个数据重新分组,此时移位为移2位。

最后得出来的数据只有一组,左边移4位与右边相加就得到乘法原子操作的结果S3。

下面给出每步操作的中间结果,如图2。

图2 原子操作数据运算说明2 32位乘法器的整合有了16×16位乘法原子操作,我们可以由它构造多周期32位乘法器。

两个32位乘数都是被转换成了绝对值的,所以最高位都为0,这样2个32位乘数实质上分解成2个15位数和2个16位的数。

这样也有一个好处就是可以消除一些乘积间有进位的问题。

还是用图来说明问题,取A =F5D8_C3D5,B =7DF8_FA1B 。

先把它们转换成补码即绝对值,分别为0A27_3C2B 和7DF8_FA1B 。

再对这两个补码进行乘数分解,如图3。

这个流程图很明朗,B EHAV IOR 一栏用箭头指出各步骤操作的意义。

在经过4个clock 后已经可以得到一个乘法结果,但其还不是最终结果,还缺图3 32bit 乘法整合实例少符号的判断。

通常的做法是在写代码时分为正数乘正数,负数乘负数等[6]。

这样比较麻烦,本文干脆直接先把两个乘数转换成绝对值后再根据原来两数的最高位符号位来判断乘积结果是否要由补码转成原码。

这只需要用A[31]和B[31]相异出来的结果用来选择乘积和补码就行了。

图中的t rans 以及t rans64都是进行补码转换。

3 进位问题的说明由于两个32位乘数的最高位都为0,所以最终乘积一定是62位的。

分解的乘数中得到的4个子乘积项依次为32位,31位,31位,30位。

要考虑进位问题,我们只需要拿最大的数去相乘,如果最大的数都没有发生进位,则其他数据更不可能有进位问题。

选取最大的数7FFF_FFFF 和它自己7FFF_FFFF 相乘。

以此来考虑进位问题。

下面分时钟来说明子乘积项如何相加。

(1)第1个CL K 后,得到32位乘积FFFE 20001。

(2)第2个CL K 后,得到31位乘积7FFE 28001。

把它与第一个乘积的高16位FFFE 进行相加,得到31位(而不是32位)和7FFF_7FFF 。

所以此31位加法操作没有进位。

(3)第3个CL K 后,得到31位乘积7FFE 28001,然后在加上第2个CL K 后得到的和7FFF 27FFF 得到FFFE_0000,此时两个31位数相加发生了进位但最后结果没有超过32位。

(4)第4个CL K 后,子乘积结果为30位的3FFF 20001,加上上个CL K 得到的和的高16位FFFE 得到30位的3FFF_FFFF ,无加法进位。

这说明,这步操作最多就是产生30位的和。

通过以上4个CL K 的运算,我们可以看到,最2761电 子 器 件第31卷长的是31位加31位得到32位的数据,我们就可以通过资源复用,用一个32位的半加器用来完成上述全部操作,其中位数不够的高位填补0。

这样在最大的数都只采用一个32位加法器和4个时钟周期完成了乘法操作,我们可以推测出其他数据一样满足这样的要求。

4 对比本设计用了4个时钟周期来完成一次带符号32位数据乘法运算,虽然时钟周期多,但换来的是面积的减少。

这在面积要求比较严格而时钟数不太紧的情况下是很有利的。

作者完成乘法器verilog代码[2]并且使用S YNO PS YS工具DC和SM IC0.18μm库综合得到数据如下:面积:35700μm×μm 最大延时:15.18ns而如果调用用S YNOPS YS自身design_ware 的乘法器(单时钟周期)我们得到数据如下:面积:64440μm×μm 最大延时:25.24ns对于design_ware里的乘法器,它本身是采用了Wallace t ree或者基于Boot h编码等途径优化过的[5],所以相对作者自己直接用32位(即一个clock 做完)做原子操作得出的面积和延时来说是比较好的。

所以要想进一步减少延时和面积,只有通过牺牲时钟数来获取。

由数据可见,本设计要求的面积减少了近一半,由于设计中多出了许多不必要的控制,如果是单纯乘法内核的话可以使面积更加少。

再者最大延时缩短了不少,使得系统工作频率得到提高。

如果对16位原子操作进行进一步的优化,比如深入研究使其中一个乘数和积的部分寄存器共用[1],还可以使面积和延时更加小,不过鉴于这是新提出的一种基于开关移位的乘法器,故不做优化保持原样,目的是使读者知道这么一种思路。

用S YNOPS YS的VCS仿真器仿真,得到如下波形,结果正确,注意第一个时钟周期是用来装载数据用,故共5个CLOC K出结果。

图4 仿真波形5 总结本文提出了一种比较新的乘法器设计方法,基于开关和移位,但其本质上是移位相加。

这种设计虽然不是最快的设计,但是也开拓了设计思路。

另外把32位乘法分解这一操作对于减小面积也是种有效的方法。

再者进位的考虑使用了最大数据来衡量其他数据也是可行的。

最后把带符号数相成转换成绝对值后再转换回来也是本文的一个特点。

参考文献:[1] Patterson David A,Hennessy John puter Organization&Design:The Hardware/Software[M].Interface(Second E2 dition).郑纬民,等译.第二版,清华大学出版社,2003,12. [2] Samir Palnit kar.Verilog HDL A Guide to Digital Design andSynt hesis[M].(Second Edition).夏宇闻,胡燕详,刁岚松等译,第二版,电子工业出版社,2004,11.[3] Rabaey J am M,Chandrakasan Anat ha,Digital Integrated Cir2cuit s A Design Perspective(second Edition).周润德等译,第二版,电子工业出版社,2005,7.[4] Hennessy John L,Patterson David A,Computer Architecture:A Quantitative Approach[M].(Third Edition),机械工业出版社,2002.9.[5] 王彬,任艳颖编著.数字IC系统设计[M].西安电子科技大学出版社,2005,9.[6] 朱子玉,李亚民,CPU芯片逻辑设计技术[M].清华大学出版社,2005,1.[7] Ciletti Michael D,Advanced Digital Design wit h t he VerilogHDL[M].张雅绮,李锵等译,电子工业出版社,2005,1.3761第5期刘学勇,李晓江等:一种开关移位式32位乘法器的设计。

相关主题