物理与电子工程学院集成电路设计课程论文题目:乘法器的研究
学生姓名:XXX
指导教师:XXX 201X年XX月XX日
乘法器
摘要:乘法器,其基础就是加法器结构,它已经是现代计算机中必不可少的一部分。
乘法器的模型就是基于“移位和相加”的算法。
本文讨论基本的阵列乘法器,以及产生部分
积和最终求和。
关键词:全加器,半加器,阵列。
引言: 乘法运算非常耗费硬件面积并且速度很慢,许多计算问题解决的快慢受乘法器电
路工作速度的约束,因此在现代高级的数字信号处理器和微处理器中都集成了硬件乘法单
元。
并且乘法器在当今数字信号处理以及其他诸多应用领域中起着十分重要的作用。
随着科
学技术的发展,许多研究人员已经开始试图设计一类拥有更高速率和低功耗,布局规律占用
面积小,集成度高的乘法器。
这样,就能让它们更加适用于高速率,低功耗的大规模集成电
路的应用当中。
通常的乘法计算方法是添加和位移的算法。
在并行乘法器当中,相加的部分乘积的数量是主要的参数。
它决定了乘法器的性能。
为了减少相加的部分乘积的数量,修正
的Booth 算法是最常用的一类算法。
但是,随着并行化的增多,大量的部分乘积和中间求和
的增加,会导致运行速度的下降。
不规则的结构会增加硅板的面积,并且由于路由复杂而导
致中间连接过程的增多继而导致功耗的增大。
另一方面串并行乘法器牺牲了运行速度来获得
更好的性能和功耗。
因此,选择一款并行或串行乘法器实际上取决于它的应用性质。
主体
1.1.1二进制乘法定义
考虑两个无符号二进制数X 和Y ,X 为M 位宽,Y 为N 位宽,将它们用下列二进制数形
式表达
i 1
-M 0i i 2X X ∑== (1.1)
j 1
-N 0j j 2Y Y ∑== (1.2)
其中i X 和j Y 为0或者1,那么X 和Y 的乘法运算定义如下
Z=X ×Y=
k 1
-N M 0k k 2Z ∑+= =(i M i i X 210∑-=)(j
1-N 0j j 2Y ∑=)=∑∑=-=+⎪⎪⎭⎫ ⎝⎛1-M 0i 10j 2N j i j i Y X (1.3) 我们先来看一下手工是如何进行二进制乘法运算的。
如图1-1所示,被乘数与乘数的第一个
位相乘(实际为“与”操作)产生积,并且根据乘数相应位的位置对部分积进行左移(例如,
被乘数与乘数的第0位相乘,则不移位;与第一位相乘,部分积左移1位,以此类推),最
终将所有的部分积相加得到乘法运算的结果。
M 位被乘数与N 位乘数相乘得到的乘积是
M+N 位的。
1.1.2部分积生成
部分积是由被乘数X 与乘数的位i Y 进行“与”操作得到的,如图1-2所示部分积阵列中, 101010 被乘数 每行或者是被乘数,或者是全0。
对部分积产
× 1011 乘数 生电路进行仔细优化,可以大大减少延时时间 和面积。
我们注意到,在部分积阵列中有许多
101010 全0的行,他对运算结果是没有影响的。
如
101010 部分积 果乘数位全为1,则所有部分积都存在并参与
000000 运算;如果乘数位全为0,则一个部分积也不
+ 101010 会产生。
由此我们可以得到将部分积个数减
少到乘数位数的一半。
1110011110 结果
图1-1 二进制乘法计算
X 1X 2X 3X 4X 6X 5X 7X i Y
PP 1PP 2PP 3PP 4PP 5PP 6PP 7PP 图1-2
我们举例来说明,假设一个8位乘数为01111110,它将产生6个非0的部分积。
如果
将乘数重新编码成不同的格式,如10000010其中1代表-1.可以证明这个数字和01111110
是相等的。
但新的乘数只需要产生2个部分积,当然最终的求和电路也必须可以完成减法
运算。
这种编码转换称为Booth 编码,可以将部分积的个数减少到最多为乘数位数的一半。
他确保乘数的每两个连续位中至多有一位是1或者-1。
减少了部分积德个数就相当于减少了
加法运算步骤,也就是减少了面积,提高了运算速度。
1.1.3阵列乘法器
部分积产生之后,要对其进行累加。
部分积的累加实际上是被乘数的加法,最直接的方
法就是使用一个加法器阵列,这正是阵列乘法器名字的由来。
图1-3是一个4×4阵列乘法
器的组成结构的例子。
图中3X ~0X 是被乘数,3Y ~0Y 是乘数,7Z ~0Z 是乘积。
图1-3的
电路是和图1-1手工乘法计算在拓扑结构上是一一对应的,N 个部分积的产生需要N×M 个
二输入与门。
乘法器的主要面积是被加法器占用了,用于N 个部分相加需要N -1个M 位
加法器。
部分积的移位并不需要任何逻辑电路,只要将部分积适当的对准,通过简单的布线
就可以实现。
整个乘法器电路可以被压缩成矩形,版图的效率可以做的很高。
下面我们来分析阵列乘法器的延时。
图1-3是一个阵列结构,所以分析传输延时并不是
很直观。
实际上部分积相加的加法器是脉动进位的加法器,为了优化乘法器的性能,我们需
要首先找出阵列乘法器的关键路径。
图1-3所示阵列乘法器中有多个路径的延时是几乎相同
的,这里我们给出两个关键的路径,如图1-4所示。
由关键路径,我们可以推导出阵列乘法
0Y 3X 2X 1X 0X 3X 2X 1X 0X 1Y 0
Z 3X 2X 1X 0X 3X 2X 1X 0X 3Y 2Y 全加器半加器
半加器
半加器半加器
全加器全加器全加器全加器←←←←←←←↓↓1
Z 2
Z 3
Z 全加器全加器全加器←←↓↓↓↓4Z 5Z 6Z 7Z
图1-3
全加器
半加器半加器全加器↓
半加器
全加器全加器全加器半加器
←全加器全加器全加器关键路径1关键路径2↓
↓↓↓↓↓↓↓↓图1-4
器的延时时间的近似表达式
()()[]()and sum carry m ult t t 1-N t 2-N 1t +++-≈M (1.4)
其中carry t 是进位输入到进位输出的传输延时,sum t 是全加器进位输入到和输出的延时,and
t 是与门的延时。
所有的关键路径有相同的长度,如果能用选用更快的加法器,比如进位选择
加法器,则阵列乘法器的速度就会提高。
由式(1.4)可知减少乘法器的延时mult t ,必须同
时减少carry t 和sum t 。
这样如果carry t 和sum t 相等对阵列乘法器是有好处的。
1.1.4最终求和
乘法器的最后一步是由最终求和电路得到乘积结果。
最终求和加法器类型的选择取决于
累加阵列的结构。
结论
本文通过对乘法器的概述开始,从二进制乘法定义的引入,以及部分积产生和阵列乘法
器详细讨论,并通过最中求和进行完结。
让我知道在数字的乘法运算过程中其本质还是由全
加器和半加器组合成的加法。
让我懂得对于一件事情可以换一种方式解决,以及乘法器在当
今社会的重要性和不可取代的事实,希望后来人继续努力,使乘法器的性能更好,更高。
对
于我本人我也学会了很多知识,再此也感谢我的老师,给我了这个对于乘法器学习的机会。
参考文献
陈贵灿,张瑞智,程军著, 《大规模集成电路设计》 北京:高等教育出版社,2005,7 第
409页-416页。