CMOS乘法器版图设计与仿真 - 第1章-第4章 下载本文

西南交通大学本科毕业设计(论文) 第5页

Verilog-XL Behavioral Verilog Synopsys Synthesis Cadence Silicon Standard Cell Circuit Layout Cadence Virtuoso Layout LVS Layout-XL Ensemble CSI Verilog-XL Cadence Composer Schematic 图1-1 IC设计流程图

1.3 本文的主要内容

本文主要介绍了移位相加串行阵列乘法器和并行阵列乘法器的基本原理,并设计出了四位串行乘法器和四位并行乘法器,对它们的性能进行了分析比较(延时和面积参数)。

设计出了基于层次设计的带符号位扩展8位并行乘法器,使用verilog-xl对其功能进行了验证,并完成了版图的设计和版图参数的提取和LVS,以及版图的后端仿真。对所设计的8位并行乘法器进行了优化,完成了优化后的原理图设计,版图设计和后端仿真。

西南交通大学本科毕业设计(论文) 第6页

第2章 乘法器设计方案选择比较

阵列乘法器具有结构规则,利于布局布线等优点;常见的有移位加算法、Pezaris算法和Baugh-Wooley算法。 1. 移位加算法

移位加算法是一种比较简单的算法。每一个部分积都是由被乘数与一位乘数相乘产生,然后按照笔算乘法的规则进行移位和相加。它将两个N位的有符号数写成一位符号位和(N-1)位数码位。并对它们分别进行处理。 移位加算法在运算上简单明了,但是它对有符号数的处理只是单纯地将符号数与数码位分开,这就增加了控制部件的难度,而且,数码位的运算中也存在许多冗余运算,导致运算速度的降低。由于该算法建立在无符号数运算的基础上,延时长、速度慢是其主要的缺点,不适合VLSI的实现。 2. Pezaris算法

相对于移位加算法,Pezaris算法无需将有符号数分为符号位和数码位,可直接用于补码乘法的算法,因此提高了乘法器的速度。 Pezaris算法的最大特点是仅通过不同类型的全加器组成的阵列就可以完成对补码数的乘法运算。该算法的乘法阵列并不是唯一的,还可以有许多组合方式。 这种乘法阵列可以直接求有符号数的乘积,但是因为用到的全加器类型多,使得乘法阵列不规则,不利于VLSI版图的设计。 3. Baugh-Wooley算法

Baugh-Wooley算法也是一种补码乘法的算法,它仅需要使用全加器构成乘法阵列。由于结构规整,适合于VLSI的实现。

两个5位的补码数来说明Baugh-Wooley算法的实现过程。设被乘数A=(a4)a3a2a1a0,乘数B=(b4)b3b2b1b0其运算过程如图2-1所示[8]。

图2-1 Baugh-Wooley算法实现图

西南交通大学本科毕业设计(论文) 第7页

该算法的乘法阵列如图所示。Baugh-Wooley算法只要用到一种类型的全加器,其不足之处是求补运算需要花较多的时间。

阵列乘法器所具有的优点在于其结构规整,有利于版图的设计及实现,但所占用的面积较大,运算速度一般。而且在设计过程当中,随着输入位数的增加,其面积呈几何倍数增加。分为串行乘法器和并行乘法器。

2.1 串行阵列乘法器

图2-2 串行乘法器原理

图中的FA 为一位全加器,FA 的斜线方向为进位输出,竖线方向为和输出。

算法示例如下:(XY=1111x1111=11100001)

1111 X x 1111 Y

1111 + 1111 101101 + 1111 1101001 +1111 11100001

西南交通大学本科毕业设计(论文) 第8页

由算法可以看出,在此原理中使用了移位相加算法,乘数Y的每一位分别和被乘数X的各位相乘,依照Y的各位相应的向左移动后进行相加,最终得到相乘结果。

2.2 并行乘法器原理

并行乘法器有三个主要部分[1]:部分积产生器、加法阵列块和进位加法器。部分积产生器的功能是根据输入的操作数产生部分积;加法阵列块完成对部分积的归约,将所有的部分积相加产生2n位的结果;进位加法器是为了生成最终结果。

在并行乘法器中,产生的相加部分积的数目是衡量乘法器性能的主要参数。为了减少相加部分积的数目, 修正布斯(modified booth)编码算法成为了最流行的算法之一。为了进一步加快运算速度,华莱士(wallace)树型算法被用来减少连续相加阶段的数目。藉由联合布斯编码算法和华莱士树型技术,能在一个乘法器中见到两者算法的优点。 然而,随着位数的逐渐增加, 在部分积和中间和之间变化的总数量也将会增加,这就可能导致降低运行速度, 由于不规则的结构和复杂的互联线将导致硅片面积和功耗的增加。 另一方面,连续并行乘法器为达到较好的面积和功耗性能而牺牲了运算速度。

2.2.1 并行阵列乘法器

对数码位进行相乘。从乘数的最低位开始,每次取一位乘数,与被乘数相乘得到部分积,并将其与上次产生的部分积相加形成新的部分积,再逻辑右移一位(前面空位补‘0’)。重复上述步骤,直到N 次“相加右移”的操作结束,得到部分积的总和。 现在以4位乘4位不带符号的阵列乘法器( m = n = 4 )为例来说明并行阵列乘法器的基本原理。实现这个乘法过程所需要的操作如下所示。

图2-3 并行乘法器算法图