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

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

第31卷 第5期

2008年10月

电子器件

Chinese J ournal Of Elect ron Devices

Vol.31 No.5Oct.2008

A 32bit Multiplier Design

B ased on Switch &Shift

L I U X ue 2yong ,L I X i ao 2j i ang ,M A Chen g 2y an

3

(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 @https://www.360docs.net/doc/a27969170.html, 。

摘 要:乘法器在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 https://www.360docs.net/doc/a27969170.html,puter Organization

&Design:The Hardware/Software[M].Interface(Second E2 dition).郑纬民,等译.第二版,清华大学出版社,2003,12. [2] Samir Palnit kar.Verilog HDL A Guide to Digital Design and

Synt hesis[M].(Second Edition).夏宇闻,胡燕详,刁岚松等译,第二版,电子工业出版社,2004,11.

[3] Rabaey J am M,Chandrakasan Anat ha,Digital Integrated Cir2

cuit 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 Verilog

HDL[M].张雅绮,李锵等译,电子工业出版社,2005,1.

3761

第5期刘学勇,李晓江等:一种开关移位式32位乘法器的设计

乘法器

课程设计任务书 题目基于FPGA的6*6串行乘法器设计起讫日期 学生姓名专业班级通信工程 所在院系电气信息学院 指导教师职称 所在单位通信工程教研室

任务及要求: 1.设计内容和要求(包括设计内容、主要指标与技术参数) 设计内容:设计一个6*6串行乘法器 设计要求: (1)设计语言为Verilog,仿真软件为ISE自带仿真软件iSIM; (2)该设计不要求下载到硬件开发板上,只需给出仿真波形图,但要求能够从波形图 中看出实现了乘法运算 2.原始依据 本设计要求学生应用Xilinx FPGA设计一个6*6串行乘法器,通过设计能够让学生进一步掌握FPGA的基本开发流程,同时提高时序设计能力,学生已学习过EDA课程,掌握硬件描述语言基本知识,通过本次设计可进一步提高学生的动手能力,加强理论联系实际的能力。 3.进度计划 3.4-3.8 查阅相关资料,掌握FPGA基本知识。 3.11-3.15 应用Verilog语言进行程序开发,设计调试。 3.18-3.22 调试验收,撰写专业课程实践训练报告。 4.参考文献 [1] 夏宇闻. Verilog数字系统设计教程[M]. 北京:北京航空航天大学出版社,2008. [2] Snair Palnitkar(美). VerilogHDL数字设计与综合. 夏宇闻等译.(第二版)[M]. 北京:电子工业出版社,2009. [3] Xilinx. UG230 [Z/OL]. https://www.360docs.net/doc/a27969170.html, 指导教师签字: 教研室主任签字:

目录 摘要: (4) 关键词 (4) 一:FPGA (4) 1.1名称 (4) 1.2背景 (4) 1.3工作原理 (4) 1.4芯片结构 (5) 二:Verilog HDL (5) 2.1verilog hdl名称 (5) 2.2verilog hdl用途 (5) 2.3 Ve r i l o g硬件描述语言的主要能力 (6) 三:Spartan3E (7) 四:乘法器 (8) 4.1什么是乘法器 (8) 4.2实现乘法器的方法 (8) 4.3 6*6串行乘法器的设计思路 (9) 4.4 6*6乘法器程序代码 (9) 4.5 6*6乘法器设计仿真图 (11) 4.6结果分析 (12) 四:总结 (12) 参考文献 (12)

移位相加8位乘法器的设计

EDA技术课程大作业 设计题目:移位相加8位乘法器的设计 院系:电子信息与电气工程学院 学生姓名: 学号:200902070017 专业班级:09电子信息工程专升本 2010年12月3日

移位相加8位乘法器的设计 1.设计背景和设计方案 1.1设计背景 EDA技术(即Electronic Design Automation技术)就是依赖强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL(Hardware Ddscription Langurage)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。它在硬件实现方面融合了大规模集成电路制造技术、IC版图设计、ASIC 测试和封装、FPGA(Gield Peogrammable Gate Array)/CPLD(Complex Programmable Logic Device)编程下载和自动测试等技术;在计算机辅助工程方面融合了计算机辅助设计(CAD),计算机辅助制造(CAM),计算机辅助测试(CAT),计算机辅助工程(CAE)技术以及多种计算机语言的设计概念;而在现代电子学方面则容纳了更多的内容,如电子线路设计理论、数字信号处理技术、数字系统建模和优化技术及长线技术理论等。本文介绍设计一个两个5位数相乘的乘法器。用发光二极管显示输入数值,用7段显示器显示十进制结果。乘数和被乘数分两次输入。在输入乘数和被乘数时,要求显示十进制输入数据。输入显示和计算结果显示,采用分时显示方式进行,可参见计算器的显示功能 1.2设计方案 此设计是由八位加法器构成的以时序逻辑方式设计的八位乘法器,它的核心器件是八位加法器,所以关键是设计好八位加法器。 方案一:八位直接宽位加法器,它的速度较快,但十分耗费硬件资源,对于工业化设计是不合理的。 方案二:由两个四位加法器组合八位加法器,其中四位加法器是四位二进制并行加法器,它的原理简单,资源利用率和进位速度方面都比较好。综合各方面的考虑,决定采用方案二。 该乘法器是由8位加法器构成的以时序方式设计的8位乘法器。其乘法原理是乘法通过逐项移位相加原理来实现,从被乘数的最低位开始,若为1,则乘数左移后与上一次的和相加;若为0,左移后以全零相加,直至被乘数的最高位。从

各种乘法器比较

各种乘法器比较 韦其敏08321050 引言:乘法器频繁地使用在数字信号处理和数字通信的各种算法中,并往往影响着整个系统的运行速度。如何实现快速高效的乘法器关系着整个系统的运算速度和资源效率。本位用如下算法实现乘法运算:并行运算、移位相加、查找表、加法树。并行运算是纯组合逻辑实现乘法器,完全由逻辑门实现;移位相加乘法器将乘法变为加法,通过逐步移位相加实现;查找表乘法器将乘积结果存储于存储器中,将操作数作为地址访问存储器,得到的输出数据就是乘法运算结果;加法树乘法器结合移位相加乘法器和查找表乘法器的优点,增加了芯片耗用,提高运算速度。 注:笔者使用综合软件为Quartus II 9.1,选用器件为EP2C70,选用ModelSim SE 6.1b进行仿真,对于其他的软硬件环境,需视具体情况做对应修改。 汇总的比较: 详细实现过程: 1.并行乘法器 源代码: module Mult1(outcome,a,b); parameter MSB=8; input [MSB:1] a,b; output [2*MSB:1] outcome; assign outcome=a*b; endmodule

资源耗用情况: ModelSim测试激励文件源代码:`timescale 10ns/1ns module Mult1_test(); reg [8:1] a,b; wire [16:1] outcome; Mult1 u1(outcome,a,b); parameter delay=2; initial begin a=1; b=0; end initial forever begin #delay a=a+1; b=b+1; if(outcome>=16'h0FFF) $stop;

4位乘法器

一、概述 利用四位二进制寄存器、全加器以及D触发器等元器件,实现四位二进制乘法器的控制部分和乘法的实现部分。成法是加法的简便运算乘法运算只能通过加法运算以及移位运算来实现。在控制端用四个触发器产生四个控制信号来控制实现的加法移位功能,实现端在控制端信号作用下依次执行置零、加法、移位和循环操作。 二、方案说明 设计一个4位二进制乘法器,可以存储其乘积。 电路原理框图如图1所示。乘法器可以利用家发起和寄存器实现。 图1 乘法器原理框图 寄存器B存放被乘数,寄存器Q存放乘数,两个乘积长度可能是原来的2倍,故计算完成后将累加和高位放入寄存器A,而Q放寄存器的低位,P 记录乘数的位数,每形成一个部分P加1,当P=4时,乘法结束,两数之积放在AQ寄存器中。 控制端产生四个控制信号分别为T0、T1、T2、T3。在初态T0时,被乘数和乘数已分别存于寄存器B和Q中,等待启动信号S的到来,当S=1时控制器进入状态T1,在此状态下A、E、P清零,准备乘法操作。 从状态T2开始,控制器进入累计部分积的循环操作过程。首先检验乘数的最低有效位Q1。如Q1=1,A和B相加结果存于A和E之中;如果Q1=0,不做加法运算。无论Q1为何值,都要将计数器P加1。在状态T3,合成寄存器EAQ右移一位得到累计的部分积,时检测P之值,如果P不等于4,状态返回T2,继续累计部分积的过程。如果P=4,停止循环,系统返回初始状态T0。 三、电路设计 1、控制器设计

根据图2所示的ASM图表,可以设计二进制乘法器的控制器。 图2 二进制乘法器ASM图表四个D触发器的驱动方程为: D0=T0S’+T3Z=((T0S’)’·(T3Z)’)’ D1=T0S=((T0S)’)’ D2=T1+T3Z’=(T1’·(T3Z’)’)’ D3=T2

模拟乘法器AD834的原理与应用

模拟乘法器AD834的原理与应用 1.AD834的主要特性 AD834是美国ADI公司推出的宽频带、四象限、高性能乘法器,其主要特性如下: ●带符号差分输入方式,输出按四象限乘法结果表示;输出端为集电极开路差分电流结构,可以保证宽频率响应特性;当两输入X=Y=±1V时,输出电流为±4mA; ●频率响应范围为DC~500MHz; ●乘方计算误差小于0.5%; ●工作稳定,受温度、电源电压波动的影响小; ●低失真,在输入为0dB时,失真小于0.05%; ●低功耗,在±5V供电条件下,功耗为280mW; ●对直通信号的衰减大于65dB; ●采用8脚DIP和SOIC封装形式。 2.AD834的工作原理 AD834的引脚排列如图1所示。它有三个差分信号端口:电压输入端口X=X1-X2和Y=Y1-Y2,电流输出端口W=W1-W2;W1、W2的静态电流均为8.5mA。在芯片内部,输入电压先转换为差分电流(V-I转换电阻约为280Ω),目的是降低噪声和漂移;然而,输入电压较低时将导致V-I转换线性度变差,为此芯片内含失真校正电路,以改善小信号V-I转换时的线性特性。电流放大器用于对乘法运算电路输出的电流进行放大,然后以差分电流形式输出。 AD834的传递函数为: W=4XY (X、Y的单位为伏特,W的单位为mA) 3.应用考虑 3.1 输入端连接

尽管AD834的输入电阻较高(20kΩ),但输入端仍有45μA的偏置电流。当输入采用单端方式时,假如信号源的内阻为50Ω,就会在输入端产生1.125mV的失调电压。为消除该失调电压,可在另一输入端到地之间接一个与信号源内阻等值的电阻,或加一个大小、极性可调的直流电压,以使差分输入端的静态电压相等;此外,在单端输入方式下,最好使用远离输出端的X2、Y1作为输入端,以减小输入直接耦合到输出的直通分量。 应当注意的是,当输入差分电压超过AD834的限幅电平(±1.3V)时,系统将会出现较大的失真。 3.2 输出端连接 采用差分输出,可有效地抑制输入直接耦合到输出的直通分量。差分输出端的耦合方式,可用RC耦合到下一级运算放大器,进而转换为单端输出,也可用初级带中心抽头的变压器将差分信号转换为单端输出。 3.3 电源的连接 AD834的电源电压允许范围为±4V~±9V,一般采用±5V。要求VW1和VW2的静态电压略高于引脚+VS上的电压,也就是+VS引脚上的电去耦电阻RS应大于W1和W2上的集电极负载电阻RW1、RW2。例如,RS为62Ω,RW1和RW2可选为49.9Ω,而+V=4.4V,VW1=VW2=4.6V,乘法器的满量程输出为±400mV。 引脚-VS到负电源之间应串接一个小电阻,以消除引脚电感以及去耦电容可能产生的寄生振荡;较大的电阻对抑制寄生振荡有利,但也会使VW1和VW2的静态工作电压降低;该电阻也可用高频电感来代替。 4.应用实例 AD834主要用于高频信号的运算与处理,如宽带调制、功率测量、真有效值测量、倍频等。在某航空通信设备扩频终端机(如图2所示)的研制中,笔者应用AD834设计了扩频信号调制器和扩频信号接收AGC电路。

8.模拟乘法器的应用-乘积型混频器

模拟乘法器的应用 ——乘积型混频器 学号:200800120228 姓名:辛义磊仪器编号:30 一、实验目的 1、掌握集成模拟乘法器的工作原理及其特点 2、进一步掌握集成模拟乘法器(MC1596/1496)实现振幅调制、同步检波、混频、倍频的电路调整与测试方法 二、实验仪器 低频信号发生器 高频信号发生器 频率计 稳压电源 万用表 示波器 三、实验原理与实验电路 集成模拟乘法器是继集成运算放大器后最通用的模拟集成电路之一,是一种多用途的线性集成电路。可用作宽带、抑制载波双边带平衡调制器,不需要耦合变压器或调谐电路,还可作为高性能的SSB乘法检波器、AM调制解调器、FM解调器、混频器、倍频器、鉴相器等,它与放大器相结合还可以完成许多数学运算,如乘法、除法、乘方、开放等。 MC1496的内部电路继引脚排列如图所示

MC1496型模拟乘法器只适用于频率较低的场合,一般工作在1MHz以下的频率。双差分对模拟乘法器MC1496/1596的差值输出电流为 MC1595是差值输出电流为 式中,错误!未找到引用源。为乘法器的乘法系数。 MC1496/1596使用时,VT 1至VT 6 的基极均需外加偏置电压。 实验电路 四、实验步骤

检查电路无误后接通电源,完成如下操作: 1、 当本振信号的频率为43 .4=L f MHz 、振幅为5 .0≤-p p V V ,输入信号的频率 为4 =C f MHz ,振幅为50 ≤-p p V mV 时,观察并测绘输入输出信号波形,记 录I L C f f f 、、。 2、当本振信号的频率为43.4=L f MHz 、振幅为5.0≤-p p V V ,输入信号的振幅为 50 ≤-p p V mV 时,改变输入信号频率C f (在3.9-4.1MHz 之间,每隔200kHz 测量 一次),测量输出信号的频率和幅度,记录在表格中,并由此计算带通滤波器的 通频带宽度。 f c 3.9MHz 4.0MHz 4.1MHz f 4.43 MHz 4.43 MHz 4.43 MHz v 500mV 500mV 500mV 3、保持两输入信号的频率及本振信号幅度不变,改变输入信号振幅V sm (峰峰值在40-100mV 之间变化)的大小,逐渐测量输入V sm 和中频输出V im 。将测量及计算结果填入表格中,并完成下列任务: ①计算混频增益A vc 。将混频电压增益A vc 定义为变频器中频输出电压幅值与输入信号幅值之比,以分贝表示为sm vc V V A Im lg 20= ②作出V sm 和V im 的关系曲线 V sm 40 mV 60 mV 80 mV 100mV V im 60mV 85mV 100mV 120mV 五、思考题

基于标准单元库扩展的快速乘法器设计

收稿日期:2011-09-20;修回日期:2011-11-04 基金项目:国家科技重大专项基金资助项目(2009ZX01030-001-002). 作者简介:曾宪恺(1987-),男,湖北孝感人,硕士,主要研究方向为超大规模集成电路设计自动化(zengxk@vlsi.zju.edu.cn );郑丹丹(1981-),女,博士,主要研究方向为超深亚微米集成电路SOC 设计;严晓浪(1947-),男,教授,主要研究方向为超大规模集成电路设计、VLSI 设计自动化;吕冬明(1981-),男,博士,主要研究方向为集成电路CAD 研究;葛海通(1972-),男,博士,主要研究方向为嵌入式系统设计. 基于标准单元库扩展的快速乘法器设计 * 曾宪恺,郑丹丹,严晓浪,吕冬明,葛海通 (浙江大学超大规模集成电路设计研究所,杭州310027) 摘 要:设计并实现17?17bit 带符号数字乘法器。为了提高乘法器的性能,采用改进的Booth 编码算法、 Wal-lace 树型结构以及基于标准单元库扩展的设计方法。该方法使用逻辑功效模型分析乘法器的关键路径,通过构造驱动能力更为完备的单元以实现关键路径中每一级门功效相等,从而得到最短路径延时。将TSMC 90nm 标准单元库扩展得到扩展单元库, 使用两个单元库版图分别实现数字乘法器,基于扩展单元库实现的乘法器速度提升10.87%。实验结果表明,基于标准单元库扩展的半定制设计方法可以有效提升电路的性能,这种方法尤其适用于电路负载过大的情况。 关键词:乘法器;标准单元库扩展;改进的Booth 编码算法;Wallace 树;逻辑功效中图分类号:TN47 文献标志码:A 文章编号:1001-3695(2012)05-1778-03 doi :10.3969/j.issn.1001-3695.2012.05.047 Design of high-speed multiplier based on standard cell library extension ZENG Xian-kai ,ZHENG Dan-dan ,YAN Xiao-lang ,LV Dong-ming ,GE Hai-tong (Institute of VLSI Design ,Zhejiang University ,Hangzhou 310027,China ) Abstract :This paper proposed a 17?17bit signed digital multiplier.To improve the performance ,the multiplier used modi-fied Booth ’s recoding algorithm ,a Wallace tree structure and design method based on standard cell library extension.It ana-lyzed critical path using logical effort model ,and by constructing cells with different driving capabilities , it implemented equal logical effort in each stage to achieve minimum path delay.Based on TSMC 90nm standard cell library , generated an extended cell library ,and implemented the layouts of multiplier respectively.Compared to standard cell library ,the multiplier imple-mented with extended cell library achieved a performance improvement of 10.87%.Experimental results show that the semi-custom design methodology based on standard cell library extension can improve circuit performance effectively ,which is espe-cially appropriate for designs with large loads. Key words :multiplier ;standard cell library extension ;modified Booth ’s recoding algorithm ;Wallace tree ;logical effort 0引言 乘法器是嵌入式CPU 的重要部件,其运算速度决定了逻 辑运算单元的工作频率,因此高性能乘法器的设计仍然被关注 [1,2] 。同时,市场的需求加速了产品的上市进程,从而要求 设计者尽量缩短设计时间。为了兼顾乘法器的性能和设计时间, 通常使用基于标准单元库的半定制设计方法。但该方法受限于库中标准单元有限的驱动能力,无法实现最短路径延时。为此,本文提出基于标准单元库扩展的乘法器设计方法,消除了传统方法因关键路径优化不足对乘法器性能的影响。基于TSMC 90nm 工艺标准单元库扩展,设计并实现了17?17bit 乘法器模块。该乘法器支持带符号二进制乘法运算, 最差情况下(工作电压0.9V ,温度125℃)工作频率为346MHz 。设计过程中,使用EDA 工具进行了速度优先的逻辑综合以及布局布线;在关键路径的处理中,采用了基于逻辑功效的优化方法。 1乘法器 二进制乘法器实现了二进制数的乘法运算,它将两个二进 制数X 和Y 作为输入,将乘法运算的积Z 作为输出。设被乘数为m 位,记为X m -1X m -2…X 0,乘数为n 位,记为Y n -1Y n -2…Y 0,则积为m +n 位,记为Z m +n -1Z m +n -2…Z 0。将m 位被乘数X 与n 位乘数Y 的每一位进行与运算,可以得到n 项位数为m 的部分积, 用加法器阵列将n 项部分积相加,得到积Z 。乘法器的具体实现分为部分积生成、部分积压缩、最终加法三个步骤。通常,使用与门来产生部分积,用加法器阵列对部分积压缩来构成阵列乘法器。这种架构算法简单,易于实现,并且能够实现规则的版图结构,但是由于部分积个数较多,压缩时间较长,无法得到快速的乘法器。使用改进的Booth 编码算法[3,4] 有效地减少了部分积的个数,使用Wallace 树型结 构 [5] 缩短部分积压缩的时间,其算法较复杂,并且版图结构不 规则, 但可以有效地提升乘法器的性能。第29卷第5期2012年5月计算机应用研究 Application Research of Computers Vol.29No.5May 2012

专用集成电路,verilog移位乘法器,源代码及电路仿真

生命科学技术学院《CMOS专用集成电路》实验报告 学院(系):生命科学技术学院 专业:生物医学工程 班级:151011 学号:15101004 学生姓名:柳琳 2013年06 月29 日

一、实验题目 (1)更改测试文件相关部分的参数值,将该乘法器的数据位宽改为8-Bit。 (2)根据对实验电路的分析,绘制该移位式乘法器电路详细的电路结构框图,并对每一功能部件的功能及相关参数的意义进行说明; (3)采用Verilog HDL硬件描述语言设计一个16-Bit超前进位加法器; (4)在上面超前进位加法器基础上,将原电路的部分积求和电路改进成超前进位加法器。 二、实验结果与讨论 (1)更改测试文件相关部分的参数值,将该乘法器的数据位宽改为8-Bit。 module multiplier_nbit ( rst, clk, x, y, result ); parameter mwidth = 8; parameter rwidth = mwidth + mwidth; input rst, clk; … reg [1:0] stcnt; reg [2:0] mucnt; … assign mucnt_en = (stcnt == 2'b01) ? 1'b1 : 1'b0; assign mucnt_full = (mucnt == 3'b111) ? 1'b1 : 1'b0; assign stcnt_load = (stcnt == 2'b10) ? 1'b1 : 1'b0; … always @(posedge rst or posedge clk) begin if(rst) mucnt <= 3'b000; else if(mucnt_en) mucnt <= mucnt + 1; else mucnt <= mucnt; end module test_mult; reg rst, clk; reg [7:0] x, y; wire [15:0] result;

模拟乘法器及其应用

模拟乘法器及其应用

摘要 模拟乘法器是一种普遍应用的非线性模拟集成电路。模拟乘法器能实现两个互不相关的模拟信号间的相乘功能。它不仅应用于模拟运算方面,而且广泛地应用于无线电广播、电视、通信、测量仪表、医疗仪器以及控制系统,进行模拟信号的变换及处理。在高频电子线路中,振幅调制、同步检波、混频、倍频、鉴频、鉴相等调制与解调的过程,均可视为两个信号相乘或包含相乘的过程。采用集成模拟乘法器实现上述功能比采用分立器件如二极管和三极管要简单的多,而且性能优越。 Analog multiplier is a kind of widely used nonlinear analog integrated multiplier can be achieved between two unrelated analog multiplication is not only applied in the simulation operation aspect, and widely used in radio, television, communications, measuring instruments, medical equipment and control system, the analog signal conversion and the high frequency electronic circuit, amplitude modulation, synchronous detection, mixing, frequency doubling, frequency, modulation and demodulation process, the same as can be seen as two signal multiplication or contain multiplication function is realized by using integrated analog multiplier than using discrete components such as diodes and transistors are much more simple, and superior performance.

定点原码两位乘法器的设计

沈阳航空航天大学 课程设计报告 课程设计名称:计算机组成原理课程设计 课程设计题目:定点原码二位乘法器的设计 目录 第1章总体设计方案 (1) 1.1设计原理 (1) 1.2设计思路 (3) 1.3设计环境 (5) 第2章功能模块的设计与实现 (6) 2.1总体的设计与实现 (6) 2.1.1总体方案的逻辑图 (6) 2.2基本功能模块的组成及工作原理 (8) 2.2.1被乘数模块的组成及工作原理 (8) 2.2.2乘数模块的组成及工作原理 (8) 2.2.3选择模块的组成及工作原理 (9) 2.2.4 移位模块的工作原理 (9)

第3章程序仿真与测试 (10) 3.1程序仿真 (10) 3.2仿真测试及结果分析 (10) 参考文献 (12) 附录(汇编程序) (13)

第1章总体设计方案 1.1 设计原理 定点原码两位乘与定点原码一位乘一样,符号位的运算和数值部分是分开进行的,但为了提高运算速度,所以采用了原码两位乘,因为原码两位乘是用乘数的末两位的状态来决定新的部分积如何形成,可提高运算速度。乘数和被乘数都用原码表示。 两位乘数有四种可能的组合,每种组合对应的操作如表1.1所示 表1.1 乘数组合与部分积关系对照表 乘数y n-1y n 新的部分积 00 新部分积等于原部分积右移两位 01 新部分积等于原部分积加被乘数后右移两位 10 新部分积等于原部分积加2倍被乘数后右移两位 11 新部分积等于原部分积加3倍被乘数后右移两位 与一位乘法比较,多出了+2X和3X两种情况。把X左移1位即得到2X,在机器内通常采用左斜送一位来实现。可是+3X一般不能一次完成,如分成两次进行,又降低了计算速度。解决问题的办法是:以(4X-X)来代替3X运算,在本次运算中只执行-X,而+4X则归并到下一步执行,此时部分积以右移了两位,上一步欠下的+4X已变成+X,在实际线路中要用一个触发器C来记录是否欠下+4X,若是,则C变为1。因此实际操作用Yi-1,Yi,C三位来控制,运算规则如下所示: 表1.2 判断值对应的操作以及C值的变化情况 组合值Yi-1 Yi C 操作C值变化 0 0 0 0 部分积+0;右移两位C=0 1 0 0 1 部分积+x;右移两位C=0 1 0 1 0 部分积+x;右移两位C=0 2 0 1 1 部分积+2x;右移两位C=0 2 1 0 0 部分积+2x;右移两位C=0

32位乘法器性能比较

32位乘法器性能比较 对基于阵列乘法器、修正布斯算法(MBA)乘法器、华莱士(WT)乘法器和MBA-WT混合乘法器的四种架构的32位乘法器性能进行了比较,在选择乘法器时,应根据实际应用,从面积、速度、功耗等角度权衡考虑。 乘法是数字信号处理中重要的基本运算。在图像、语音、加密等数字信号处理领域,乘法器扮演着重要的角色,并在很大程度上左右着系统性能。随着实时信号处理的提出和集成电路工艺水平的进步,人们开始致力于高速乘法器设计。 最初,阵列乘法采用移位与求和算法,部分乘积项(Partial Product, PP)数目决定了求和运算的次数,直接影响乘法器的速度。修正布斯算法(Modified Booth Algorithm, MBA)对乘数重新编码,以压缩PP。华莱士树(Wallace Tree, WT)结构改变求和方式,将求和级数从O(N)降为O(logN),提高了运算速度,但是WT存在结构不规整,布线困难的缺点。用4:2压缩器(4: 2 compressor)代替全加器(FA)可以解决这一问题。将MBA算法和WT结构的优点相结合,形成了MBA-WT乘法器。 以下1~4节将分别介绍阵列乘法器、MBA乘法器、WT乘法器、MBA?WT乘法器。最后对四种乘法器的性能进行比较,并总结全文。 1 阵列乘法器 阵列乘法器基于移位与求和算法。被乘数与乘数中的某一位相乘,产生一组PP,将该组PP移位,使LSB与乘数对应位对齐;求出全部PP,并相应移位;对所有PP求和,得到乘积。因此,加法阵列结构非常重要。CRA (Carry Ripple Adder)存在进位问题,运算速度慢。CSA (Carry Save Adder)将本级进位传至下级,求和速度快,且速度与字长无关。阵列乘法器中,CSA 把PP阵列缩减至Sum和Carry两项,再用高速加法器求和得积。阵列乘法器结构规范,利于布局布线。 因为乘数和被乘数可正、可负,所以一般用二进制补码表示,以简化加、减运算。补码运算需要符号扩展,符号扩展宽度与加法器结构有关。对于CRA,加数和被加数符号扩展至本级和的最高位;对于CSA,扩展至两数最高位对齐。符号扩展增加了符号位扇出,使电容负载不平衡,影响电路整体速度;需要冗余的加法器,扩大了版图面积。符号扩展问题可用以下算法解决[1]。假设P1=A、P2=B,求A+B: ①将A符号位扩展一位,对扩展位取反;②将B符号位取反;③在B符号位左边添1;④求和。 假设两个6位部分积A、B相加,需扩展一位符号位,如图1(a)所示;采用新算法后,计算式如图1(b)所示;相应6×6乘法

流水线乘法器

流水线乘法器 一般的快速乘法器通常采用逐位并行的迭代阵列结构,将每个操作数的N位都并行地提交给乘法器。但是一般对于FPGA来讲,进位的速度快于加法的速度,这种阵列结构并不是最优的。所以可以采用多级流水线的形式,将相邻的两个部分乘积结果再加到最终的输出乘积上,即排成一个二叉树形式的结构,这样对于N位乘法器需要log2(N)级来实现。一个8位乘法器,如图所示。 module mux_4(mul_a,mul_b,mul_out,clk,rst_n); parameter MUL_WIDTH = 4; parameter MUL_RESULT = 8; input [MUL_WIDTH-1:0] mul_a; input [MUL_WIDTH-1:0] mul_b; input clk; input rst_n; output [MUL_RESULT-1:0] mul_out; reg [MUL_RESULT-1:0] mul_out; reg [MUL_RESULT-1:0] stored0; reg [MUL_RESULT-1:0] stored1; reg [MUL_RESULT-1:0] stored2; reg [MUL_RESULT-1:0] stored3; reg [MUL_RESULT-1:0] add01; reg [MUL_RESULT-1:0] add23; always @(posedge clk or negedge rst_n) begin if(!rst_n) begin mul_out <= 8'b0000_0000;

stored0 <= 8'b0000_0000; stored1 <= 8'b0000_0000; stored2 <= 8'b0000_0000; stored3 <= 8'b0000_0000; add01 <= 8'b0000_0000; add23 <= 8'b0000_0000;; end else begin stored3 <= mul_b[3] ? {1'b0,mul_a,3'b0} : 8'b0; stored2 <= mul_b[2] ? {2'b0,mul_a,2'b0} : 8'b0; stored1 <= mul_b[1] ? {3'b0,mul_a,1'b0} : 8'b0; stored0 <= mul_b[0] ? {4'b0,mul_a} : 8'b0; add01 <= stored1 + stored0; add23 <= stored3 + stored2; mul_out <= add01 + add23; end end endmodule

32位快速乘法器 压缩树连线

34B,33:0 636261605958575655545352515049484746454443424140393837 3635343332313029282726252423222120191817161514131211109876543210A PP0333333333332313029282726252423222120191817161514131211109876543210B PP1 33333332313029282726252423222120191817161514131211109876543210NU NU CIN PP233 3231302928272625242322212019181716151413121110987654321034B,33:0 636261605958575655545352515049484746454443424140393837 363534333231302928272625242322212019181716151413121110987654 3 2 1 A PP33332313029282726252423222120191817161514131211109876543210 B C13 333332313029282726252423222120191817161514131211109876543210NU CIN S1******* 3231302928272625242322212019181716151413121110987654321034B,33:0 636261605958575655545352515049484746454443424140393837 3635343332313029282726252423222120191817161514131211109876 54 3210 A PP4333333333332313029282726252423222120191817161514131211109876543210 B PP5 33333332313029282726252423222120191817161514131211109876543210NU NU CIN PP6333231302928272625 242322212019181716151413121110987654321034B,33:0 636261605958575655545352515049484746454443424140393837 36353433323130292827262524232221201918171615141312 11109 8 76543210 A PP733333332313029282726252423222120191817161514131211109876543210NU B PP8 3332313029282726252423222120191817161514131211109876543210CIN C1433333333323130292827262524 23222120191817161514131211109876543210 34B,33:0 636261605958575655545352515049484746454443424140393837 363534333231302928272625242322212019181716 151413121110 9876543210 A PP9333333333332313029282726252423222120191817161514131211109876543210 B PP10 33333332313029282726252423222120191817161514131211109876543210NU NU CIN PP1133323130292827262524232221201918171615 1413121110987654321034B,33:0 636261605958575655545352515049484746454443424140393837 363534333231302928272625242322 2120191817161514131211109876543210 A PP123332313029282726252423222120191817161514131211109876543210 B C11 333332313029282726252423222120191817161514131211109876543210NU CIN S11333333323130292827262524232221201918171615 14131211109876543210 34B,33:0 63626160595857565554535251504948474645444342414039383736353433323130292827262524 2322212019181716151413121110 9876543210 A PP13333333333332313029282726252423222120191817161514131211109876543210 B PP14 33333332313029282726252423222120191817161514131211109876543210NU NU CIN PP15333231302928272625242322212019181716151413121110987654321038B,37:0 6362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 A PP16313029282726252423222120191817161514131211109876543210NU I15 B C12 32313029282726252423222120191817161514131211109876543210NU CIN S123332313029282726252423222120191817161514131211109876543210NU I14NU I1340B,39:0 6362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 A S213333333333333332313029282726252423222120191817161514131211109876543210 B C22 3635343332313029282726252423222120191817161514131211109876543210NU NU NU CIN S22373635343332313029282726252423222120191817161514131211109876543210NU I1239B,38:0 636261605958575655545352515049484746454443424140393837 3635343332313029282726252423222120191817161514131211109876543210 A C243332313029282726252423222120191817161514131211109876543210NU NU B S24 333332313029282726252423222120191817161514131211109876543210 NU CIN S143333333333333231302928272625 2423222120191817161514131211109876543210 46B,45:0 636261605958575655545352515049484746454443424140393837363534333231302928272625242322212019181716151413121110 9876543210 A C2133333333333332313029282726252423222120191817161514131211109876543210NU B C31 38373635343332313029282726252423222120191817161514131211109876543210NU CIN S313938373635343332313029282726252423222120191817161514131211109876543210NU I11NU I10NU I946B,45:0 636261605958575655545352515049484746454443424140393837 3635343332313029282726252423222120191817161514131211109876543210A C2333333333333333333333333332313029282726252423222120191817161514131211109876543210NU B S23 3333333333333333333333333332313029282726252423222120191817161514131211109876543210CIN C32383736353433323130292827262524 23222120191817161514131211109876543210I6NU I5NU I4NU I3 47B,46:0 636261605958575655545352515049484746454443424140393837 3635343332313029282726252423222120191817161514131211109876543210A C424544434241403938373635343332313029282726252423222120191817161514131211109876543210NU B S32 383838373635343332313029282726252423222120191817161514131211109876543210NU NU NU NU NU NU CIN S4245454443424140393837363534333231 3029282726252423222120191817161514131211109876543210 57B,56:0 6362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 A C4144434241403938373635343332313029282726252423222120191817161514131211109876543210NU NU NU NU NU NU NU NU B S41 4544434241403938373635343332313029282726252423222120191817161514131211109876543210NU I8NU I7NU NU NU CIN C5146464646464646464646464544434241403938373635343332313029282726252423222120191817161514131211109876543210 64B,63:0 6362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210A C61555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210NU NU B S61 56555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210NU CIN S51 4646464646464646464646464544434241403938373635343332313029282726252423222120191817161514131211109876543210NU I2NU I1NU I0636261605958575655545352515049484746454443424140393837 3635343332313029282726252423222120191817161514131211109876543210fin C7162616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210fin S716362616059585756555453525150494847464544434241403938373635343332313029 2827 2625 2423 2221 2019 18 171615141312 11109876543210 CSA21CSA13CSA23CSA14CSA24CSA11CSA51CSA61CSA71CSA12CSA22CSA31CSA32CSA41CSA42

相关文档
最新文档