乘法器的设计
乘法器设计方法

乘法器设计方法
乘法器是计算机中用于执行乘法运算的重要组件之一。
乘法器的设计方法可以分为以下几种:
1. 基于模2乘法的乘法器设计方法:此方法利用数字电路中的“与门”和“异或门”等基本逻辑门来实现乘法运算。
根据乘法的位运算特性,可以将乘法拆分成各位上的与门和异或门操作,然后通过级联这些门来实现完整的乘法运算。
2. 基于部分积累加法的乘法器设计方法:该方法利用部分积和累加的方式来实现乘法运算。
乘法器将两个操作数拆分成若干部分积,然后进行部分积的累加,最终得到乘法结果。
这种设计方法可以提高乘法器的运算速度和效率。
3. 基于Booth编码的乘法器设计方法:此方法利用Booth编码技术来减少乘法器中的部分积个数,从而减少乘法器的规模和功耗。
Booth编码是一种通过对数字进行编码来表示正负数的方法,利用Booth编码可以将乘法运算转化为模2加法运算,从而简化乘法器的设计和实现。
4. 基于乘法查找表的乘法器设计方法:该方法利用事先生成好的乘法查找表来实现乘法运算。
乘法查找表中存储了所有可能的乘法结果,通过查表即可得到运算结果。
这种设计方法在少位数乘法中具有较高的速度和效率。
5. 基于并行结构的乘法器设计方法:此方法利用并行计算的原理,将乘法运算过程中的各个部分并行处理,以提高乘法器的
运算速度。
这种设计方法常用于乘法器的优化和高速运算要求较高的场合。
以上是乘法器的一些常见设计方法,具体的设计方法选择应根据实际需求和应用场景来确定。
4位乘法器的设计

4位乘法器的设计乘法器是计算机中非常重要的组成部分,用于实现数字乘法运算。
在设计4位乘法器时,需要考虑到多个方面,如计算的准确性、速度和功耗等。
本文将详细探讨4位乘法器的设计原理、逻辑电路实现以及性能分析。
1.乘法器的基本原理乘法操作是通过将被乘数与乘数一位一位地相乘,再将各位的结果相加得到最终的乘积。
因此,4位乘法器的设计需要考虑到每一位乘法的计算和结果的累加。
2.乘法器的逻辑电路实现2.14位乘法器的简单实现最简单的方法是采用两个4位二进制数相乘的定义,即将每一位的乘积相加得到最终的结果。
这可以通过4个并行的与门和一些全加器来实现。
具体的逻辑电路图如下所示:A0───────┐┌─────A1───────┤├─────A2───────┤├─────A3───────┤├─────AND0 OR0 CoutB0───────┐│B1───────┤XOR0B2───────┤B3───────┘从上图可以看出,A0到A3和B0到B3分别作为输入,经过与门得到各位的乘积,然后通过一系列的全加器将乘积相加得到最终结果。
在这种设计中,每个位的计算之间是并行的,因此可以快速得到乘法运算的结果。
2.2优化的4位乘法器上述简单实现的4位乘法器虽然能够实现乘法运算,但其性能方面存在一些不足。
为了提高性能,可以采用更复杂的逻辑电路设计。
一种常见的优化方法是使用布斯加算器(Booth's Algorithm)来实现乘法运算。
这种方法通过将乘法运算转化为位移和加减运算来减少乘法的次数,从而提高性能。
具体的实现方法如下:1)将被乘数和乘数拓展到5位,比特位B4作为符号位,初始值为0。
2)将被乘数拓展为4位乘子,乘数拓展为5位乘数。
3)初始化中间结果为0。
4)迭代循环4次进行乘法运算,每次进行下面的步骤:-如果乘数的最低位和符号位相同,什么都不做。
-如果乘数的最低位为0且前一位为1,将乘数和被乘数相加。
-如果乘数的最低位为1且前一位为0,将乘数和被乘数相减。
16位有符号乘法器设计

对每个部分积,符号扩展的过程可以看成符号位取非,再上全 1 的扩展。这也是前面部 分积产生电路中取 E 为符号位的非的原因。 对于全 1 的扩展,可以预先计算出结果。如图 6 中的 1 阵列,经过计算,可以化简成 图 7 的样子。 然后,加上符号位的非,得图 8。类似前面符号位扩展,可以把 E+(11)b 变为 EEE 。(图 9)
1. 部分积的产生
我们知道,N 位补码表示的数,它的值等于
val ( X ) X N 1 2N 1 X N 2 2N 2
X 2 22 X1 21 X 0 20
2 / 12
根据 ( X k ) 2k ( X k ) 2k 1 (2 X k ) 2k 1 ,可以把一个奇数项分解成前后两个偶数项 (图 1),那么部分积的数量减少了一半。变换之后,X 的值可以表示为
表 1 Wallace 资源使用情况
资源 半加器 全加器
数量 22 个 91 个
7 / 12
16 bits
A
PP[i] 1 E E S Half Adder Full Adder
B
C
D
E
F
图 10 构造 Wallace Tree
3) 加法器的选择 使用 DC 综合时,可以指定加法器的实现方式。在 Verilog 代码中,通过注释指定 DC 综 合时选用的加法器类型, 如图 11。 根据 synopsys 提供的 DesignWare Building Block IP user guide,在设计中指定模块实现的方法如下。
二. 方案选择
编码方式: Booth2 编码 拓扑结构: Wallace 树 加法器:Carry look ahead Adder Booth2 编码可以使部分积的数量减半,并且解决了符号问题,也就是说,符号位不需要 单独处理。 部分积的累加采用 Wallace 树,和其它拓扑结构相比,Wallace 具有硬件节省,延时小的 优点,Wallace 树的传播延时等于 O(log3/2 N ) 。 最终相加使用的加法器使用的是 DesignWare 中的超前进位加法器,通过在 Verilog 中添 加 synopsis 控制命令来明确指定 DC 选择何种实现。
数字电路课程设计之乘法器精选全文完整版

基于Verilog 的乘法器设计一、设计目标使用Verilog 语言实现4bit*4bit 乘法器设计,并使用Quartes 编写程序,使用modelsin 进行仿真验证设计二、基本原理2.1半加器半加器是为两输入两输出的加法电路,输入无进位,真值表如下图所示,输入X,Y,输出C,SX Y C S 0 0 0 0 0 1 0 1 1 0 0 1 111最简积之和式为 S=X`Y+XY`=X ○+Y;C=XY. 电路图为:2.2全加器全加器是为三输入两输出,输入存在进位,真值表如下图所示,输入X,Y,Z,输出C,SX Y Z C S 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 11111化简最简积之和式为:S=X`Y`Z+X`YZ`+XY`Z`+XYZ; C=XY+XZ+YZ; 通过使用半加器组成全加器进行化简为:S=Z(X`Y`+XY)+Z`(X`Y+XY`)=Z(X ○+Y)`+Z`(X ○+Y)=X ○+Y ○+Z123YX C123123Y X`X Y`123S123C123X YSguan tian liangC 的卡诺图如下图X YZ 00 01 11 10 0 0 0 1 0 1111按两两结合 C=XY+YZ+XZ 换一种结合方式 C= XY+XY`Z+X`YZ=Z(XY`+X`Y)+XY=Z(X ○+Y)+XY 电路图如下所示(使用两个半加器与一个或门)123123X Y123123SZ123C多位二进制加法实现 2.2.1 行波进位加法器B2A3B3C3C4C2C1C0S0S1S2S3FA FALL_ADD A1B2Cout 3Cin4S5FA FALL_ADD A1B2Cout 3Cin4S5FAFALL_ADDA1B2Cout 3Cin4S5FAFALL_ADD A1B 2Cout 3Cin4S5A0B0A1B1A2行波进位加法器优点在于结构逻辑简单,缺点速度很慢,在最坏情况下,进位必须从最低有效位传到最高有效加法器,假设同时给出所有加数位,则总的最长延迟为:CinSCinCout ABCout ADD t t n t t +⨯−+=)2(ABCoutt 为最低有效级上从A 或B 到Cout 的延迟,CinCoutt 为中间级上Cin 与Cout 的延迟,CinSt 为最高有效位上从Cin 到S 的延迟。
移位乘法器的设计

移位乘法器的设计一.设计要求。
乘法器的输入为两个四位二进制数a 和b ,闸门信号STB 启动乘法操作,时钟信号提供系统定时。
乘法结果为8位二进制信号RESULT, 乘法结束后置信号DONE 为1。
框图如下:二.算法思路如下:采用原码移位算法,即对两操作数进行逐位的移位相加,迭代四次后获得乘法结果。
1. 在被乘数和乘数的高位补0后扩展成8位。
2. 乘数依次向右移位,并检查其最低位,如果该位为1,则将被乘数与部分积的和相加,然后被乘数向左端移位;如果最低位为0,则仅仅对被乘数进行移位操作。
移位时,乘数的高端和被乘数的低端都移入0。
3. 当乘数变成全0后,乘法结束。
三. 模块划分和进程设计:把乘法器电路映射为控制器进程CONTROLLER、锁存移位进程SRA和SRB、加法进程ADDER以及锁存结果的进程ACC。
四. 移位乘法器的进程模块图五. 按照书本上的代码仿真后的波形如下:得出的是错误的结果。
经分析,可知道是由于在第三周期是shift 的值出现错误,才导致结果错误。
为此修改源代码。
如下(红色为修改的部分):library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity shift_mul isport (a,b :in std_logic_vector(3 downto 0);stb,clk :in std_logic;done :out std_logic;result :out std_logic_vector(7 downto 0));end shift_mul;architecture behav of shift_mul issignal init,shift,stop,add :std_logic;signal sraa,srbb,accout,addout:std_logic_vector(7 downto 0); begincontroller :processbeginwait until clk'event and clk='1' and stb='1';done<='0';init<='1';shift<='0';add<='0';result<="00000000";wait until clk'event and clk='1';init<='0';wait until clk'event and clk='1';wait until clk'event and clk='1';run_loop: while (stop/='1') loopwait until clk'event and clk='1';if sraa(0)='1' thenwait until clk'event and clk='1';add<='1';wait until clk'event and clk='1';add<='0';shift<='1';wait until clk'event and clk='1';elsewait until clk'event and clk='1';shift<='1';wait until clk'event and clk='1';end if;shift<='0';end loop run_loop;done<='1'; result<=accout;end process controller;sral:processbeginwait until clk'event and clk='1';if init='1'thensraa<="0000"&a;elsif shift='1'thensraa<='0'&sraa(7 downto 1);end if;stop<=not (sraa(3) or sraa(2) or sraa(1) or sraa(0) );end process sral;srar:processbeginwait until clk'event and clk='1';if init='1'thensrbb<="0000"&b;elsif shift='1'thensrbb<=srbb(6 downto 0)&'0';end if;end process srar;adder: process(accout,srbb)variable sum,tmp1,tmp2:std_logic_vector(7 downto 0);variable carry:std_logic;begintmp1:=accout;tmp2:=srbb;carry:='0';for I in 0 to 7 loopsum(I):=tmp1(I) xor tmp2(I) xor carry;carry:=(tmp1(I) and tmp2(I)) or (tmp1(I) and carry) or (tmp2(I) and carry);end loop;addout<=sum;end process adder;acc:processbeginwait until clk'event and clk='1';if init='1' thenaccout<=(others =>'0');elsif add='1' thenaccout<=addout;end if;end process acc;end behav;七。
小学数学实验2自动乘法器的设计

小学数学实验2自动乘法器的设计自动乘法器是一种常见的计算器件,用于进行数字乘法运算。
它通过输入两个数,自动计算其乘积,并将结果输出。
在小学的数学实验中,我们可以设计一个简单的自动乘法器,让学生了解数字乘法运算的原理和实现方式。
在设计112自动乘法器时,我们需要考虑以下几个方面:输入数字的位数、进位的处理、乘法运算的基本原理以及结果的输出。
下面将对这些方面进行详细的描述。
1.输入数字的位数小学生通常只接触到两位数的乘法,所以我们设计的自动乘法器适用于两位数的乘法运算。
乘法器的输入端有两组,分别用来输入被乘数和乘数。
每个输入端都需要有相应的开关,用来选择输入的数字。
由于被乘数和乘数都是两位数,所以每个输入端都需要设置两个开关,用来选择数字的十位和个位。
2.进位的处理在乘法运算中,可能存在进位的情况。
为了处理进位,我们可以在计算过程中使用一个进位器。
当进行个位数相乘的时候,如果得到的结果大于等于10,则进位到十位。
当进行十位数相乘的时候,不管结果是否大于等于10,都需要进位到百位。
进位器可以使用逻辑门电路实现。
3.乘法运算的基本原理乘法运算的基本原理是将两个数的每一位相乘,然后将相乘的结果相加得到最后的结果。
我们可以使用乘法器阵列实现这个原理。
乘法器阵列是一种由乘法器组成的电路,用来实现高位数的乘法运算。
由于本实验只涉及两位数的乘法,所以我们可以直接使用电路连线的方式实现乘法运算。
4.结果的输出在设计112自动乘法器时,我们可以使用显示器展示计算结果。
显示器可以使用七段数码管或液晶显示屏等设备。
显示器的每一段可以显示一个数字或符号,通过组合不同的段,可以显示多个数字。
学生可以通过查看显示器上的结果来了解乘法运算的结果。
以上是112自动乘法器的设计方案的简要描述。
为了实现这个设计,我们需要详细规划每个电路的连接和元器件的选型。
在实施实验时,还需要对自动乘法器进行测试和调试,以确保其正常工作。
通过这个实验,学生可以加深对数字乘法运算的理解,并提高他们的实践能力。
4位乘法器的设计

设计思想:确定该乘法器工作的基本原理是首先生成部分积,再将这些部分积相加得到乘积。
设计的基本思想为:从被乘数的最低位开始移位,若移出位为1,则乘数左移后与上一次的和相加,若移出位为0,则乘数左移后以全0相加,循环上述操作,直至被乘数的最高位。
主要是进行移位、相加两项操作的重复。
乘法器设计根据乘法器工作原理可知,确定输入与输出。
输入的两个乘数分别为din[4 .. 0]、din1 [4.. 0],另外clk、clr作为控制输入,dout[7..0]作为输出。
由分析可知乘法器原理框图包括右移寄存器(sregb)、8位寄存器(regb)、选通与门(andarith)、4位加法器(adder4)四部分。
其中,sreg4b对被乘数进行右移移位,andarith对乘数与被乘数相乘过程中的部分积进行相与,adder4对右移寄存器的移位位数进行计数,regb对乘数和被乘数相乘之后的结果进行存储。
下面分别对各部分元件进行设计,然后再由这些元件构成整个乘法器电路图。
1)设计一个右移寄存器(sregb)LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY sregb ISPORT( clk : IN STD_LOGIC;load : IN STD_LOGIC;din : IN STD_LOGIC_VECTOR(3 downto 0);qb : OUT STD_LOGIC);END sregb;ARCHITECTURE sregb_architecture OF sregb ISSIGNAL regb : STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINPROCESS (clk, load)BEGINIF load = '1' THEN regb<= din;ELSIF CLK'EVENT AND CLK = '1' THENregb(2 DOWNTO 0) <= regb(3 DOWNTO 1);qb <= regb(0);END IF;END PROCESS;END sregb_architecture;2)设计一个选通与门(andarith)LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY andarith ISPORT( qb: IN STD_LOGIC;din1 : IN STD_LOGIC_VECTOR(3 downto 0);dout1 : OUT STD_LOGIC_VECTOR(3 downto 0) );END andarith;ARCHITECTURE andarith_architecture OF andarith ISBEGINPROCESS(qb, din1)BEGINFOR i IN 0 TO 3 LOOPDOUT1(i) <= DIN1(i) AND qb;END LOOP;END PROCESS;END andarith_architecture;3)设计一个计数器(adder4)LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;ENTITY adder4 ISPORT( dout1 : IN STD_LOGIC_VECTOR(3 downto 0);dout : IN STD_LOGIC_VECTOR(7 downto 4);s : OUT STD_LOGIC_VECTOR(4 downto 0));END adder4;ARCHITECTURE adder4_architecture OF adder4 ISBEGINs <= ('0' & dout1) + ('0'& dout) ;END adder4_architecture;4)设计一个8位寄存器(rega)LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY rega ISPORT( clk : IN STD_LOGIC;load : IN STD_LOGIC;s : IN STD_LOGIC_VECTOR(3 downto 0);dout : OUT STD_LOGIC_VECTOR(7 downto 0) );END rega;ARCHITECTURE rega_architecture OF rega ISSIGNAL R8S : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINPROCESS(clk, load)BEGINIF load = '1' THEN R8S <= (OTHERS =>'0') ; --清零部分积 ELSIF rising_edge(clk) THENR8S(2 DOWNTO 0) <= R16S(3 DOWNTO 1); --右移低3位R8S(7 DOWNTO 3) <= s; --将加法和输入锁到高5位Load= '0 ';END IF;END PROCESS;dout <= R8S;END rega_architecture;。
定点原码二位乘法器的设计

定点原码二位乘法器的设计定点原码二位乘法器是一种用于计算机中定点数的乘法操作的电路或逻辑器件。
在计算机中,定点数是以固定小数位数和整数位数表示的数字。
定点原码乘法器可以实现定点数之间的乘法运算,这对于一些计算机应用非常重要,如数字信号处理、图像处理和数值计算等。
1.电路模块划分:定点原码二位乘法器可以划分为多个电路模块,如部分积生成器、积累器、符号位处理器、溢出判断器等。
每个模块要根据功能设计相应的电路和逻辑。
2.全加器设计:全加器是定点二位乘法器中的核心电路模块。
它用于进行两个二进制位相加,并输出相加结果和进位。
全加器可以使用门电路和触发器进行实现。
在设计全加器时,需要考虑到功耗、速度和面积等因素。
3.流程控制设计:定点原码乘法器的计算过程可以划分为多个时钟周期。
在每个时钟周期内,需要按照特定的顺序对电路模块进行控制。
流程控制的设计需要考虑到时序逻辑和状态机的应用。
4.精度控制设计:定点原码乘法器的乘法结果可能会造成溢出或截断。
为了保证计算结果的精度,需要设计相应的溢出判断器和截断处理器。
溢出判断器可以通过比较定点数的符号位来实现,而截断处理器可以使用位移操作实现。
5.优化设计:在定点原码二位乘法器的设计过程中,可以采用一些优化策略来提高性能和减小电路面积。
例如,可以使用逻辑门和触发器的级联来减小时延,使用布线优化来减小电路面积。
总结来说,定点原码二位乘法器的设计需要考虑到电路模块划分、全加器设计、流程控制设计、精度控制设计和优化设计等因素。
通过合理的设计和优化,可以实现高效、准确和可靠的定点数乘法运算。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
物理与电子工程学院集成电路设计课程论文题目:乘法器的研究
学生姓名: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页。