




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南科技大学杜文龙毕业设计(论文)高性能数字乘法器芯片电路设计摘 要高性能乘法器是现代数字信号处理器(DSP)中的重要部件,是完成高性能实时数字信号处理和图像处理的关键所在。浮点乘法器具有面积大、延迟长、结构复杂的特点。如何设计出高速、简单且结构规则的浮点乘法器成为广泛关注的问题。过去的十年中,研究者扩展了Booth编码算法的空间,提高了乘法器的性能;改进了部分积压缩技术,使乘法器结构更加规则;以传输管逻辑、多路选择器和动态技术为基础的各种电路实现方法也持续刷新高性能乘法器的实现记录;与此同时,与物理实现紧密相关的乘法器拓扑结构的研究也硕果累累。但不断提高的高性能运算需求使得高性能乘法器的设计和实现仍然是当前的热门话题。本文从延迟、面积、结构复杂性等方面系统地研究了乘法部件的各个过程。在研究了乘法器Booth编码算法,乘法器部分积压缩拓扑结构和高速求和等算法的基础上,分析比较乘法器各部分的不同实现方法,设计了一个高性能的16位浮点并行乘法器。该乘法器的指数部分与尾数部分并行运算,缩短了关键路径;采用修正Booth编码缩减了部分积数量;采用结构规整的(4:2)压缩树结构加快部分积的求和,得到Carry、Sum形式的部分积;最后采用高速的超前进位加法器求得乘积;验证部分采用全面覆盖可能情况的验证方法保证了设计的正确性;包含本乘法器的设计代码已通过软件、硬件验证;关键字:浮点乘法器,修正Booth算法,4:2压缩器,3:2压缩器,规格化Design of Digit and High-speed multiplier IC CircuitAbstractHigh performance multiplier is the important component of the digital signal processor,the key to implement the signal processing and image processing;Multiplier always has large area, long latency and complex structureIt becomes attractive how to design a fast,simple and regular multiplierIn the past ten years,researchers have developed new Booth algorithm to improve the performance of the multiplier;Developed many formal compress trees to make the structure of the multiplier more regular;Implement the circuits using pass-transistor logic,multiplexer, dynamic method and so on;The topology of multiplier, which related with physical implementation closely,also developed very rapidlyHowever,the desire for high performance computation makes the design of multiplier not come to the endBased on the work in designing a floating-point multiplier in the 16 bit floating point DSP, this dissertation gives a systematic research on the every stages of the multiplier considering delay, area and complexBased on the study of Booth algorithm,multiplier topology, and the final adder, this thesis introduces and compares kinds of multipliers,implemented a 16 bit high performance parallel multiplier, the exponent and mantissa of which compute in parallel way ,modified Booth algorithm and(4:2) compress tree are used to generate and calculate the partial productsCarry select adder sums the final two partial products;Character vectors and random vectors are used to test the multiplier, the code includes this multiplier has passed the software/hardware test.Keywords :Floating Point Multiplier, Booth Encoder,(4:2) Compressor , (3:2) Compressor Normalize目 录. 前 言1第1章 绪 论21.1 高性能乘法器设计研究的依据和意义21.2 高性能处理器中乘法器的应用现状21.3 国外乘法器现状31.4 国内乘法器现状41.5 课题设计(研究内容)41.6 研究方法4第2章 浮点数的数据格式52.1 数据的表示方法52.2 浮点运算中的数据格式52.3 舍入与规格化62.4 定点乘法运算72.5 浮点乘法运算8第3章 乘法器基本原理与算法113.1 乘法器基本原理113.1.1 乘法定义113.1.2 迭代乘法器123.1.3 线性阵列乘法器133.1.4 并行乘法器133.2 乘法器编码算法143.2.1 阵列乘法器143.2.2 Booth编码143.2.3 修正Booth编码153.3 乘法器拓扑结构163.4 加法器183.5 压缩器18第4章 乘法器结构与设计214.1 乘法器结构214.2 尾数扩展和部分积产生224.3 压缩器的选择224.4 乘法器端口定义234.5 浮点数规格化244.6 指数修正25第5章 乘法器的验证265.1 Modelsim模拟仿真265.2 FPGA硬件仿真27第6章 ASIC综合29结 论31参考文献32致 谢34附 录3540前 言随着微电子技术的不断进步、计算机技术的不断发展,集成电路经历了小规模、中规模、大规模的发展过程,目前已经进入超大规模(VLSI)和甚大规模集成电路(ULSI)阶段。超大规模集成电路工艺在21世纪初得到了高速的发展,目前商业化半导体芯片制造技术的主流已经达到45nm的线宽并正迅速向更高集成度、超小型化、高性能、高可靠性的方向发展。在早期的计算机中都不具备浮点运算硬件,而是采用IBM公司的J.Backus发明的软件,由定点运算部件完成浮点运算。然而,基于软件的实现方法速度较慢,无法满足高速浮点计算的需要。为此WKahan在Intel公司工作期间,主持设计和开发了8087芯片,于1980年实现了高速、高效的浮点运算处理器。从此,乘法器随着浮点运算的发展独立出来,现代高性能处理器中整数运算单元和浮点运算单元均设有独立的乘法器。乘法器研究上的里程碑应该从Booth AD在1951年提出的Booth编码方法和Wallace的树型压缩开始。随后出现了Booth2算法、压缩器(进位保留加法)、延迟平衡树等各种算法结构。在国内乘法器的研究主要集中在各个研究所和高校并且都在稳步的发展当中。本文将从延迟、面积、结构复杂性等方面系统地研究乘法部件的各个过程,在研究乘法器Booth编码算法,乘法器部分积压缩拓扑结构和高速求和等算法的基础上,分析比较乘法器各部分的不同实现方法,设计了一个高性能的16位浮点并行乘法器。第1章 绪 论 1.1 高性能乘法器设计研究的依据和意义微处理器的发展也随着集成电路的迅猛发展而日新月异。已经有越来越多的处理器包含多个运算单元,算术运算单元已经成为处理器结构中的一个重要组成部分。作为数字处理器中重要的部分,浮点运算部件通常都是整个设计中需要重点考虑的对象。浮点运算通常需要多个时钟周期才能完成,为了得到接近实际值的运算结果,某些数值计算领域如流体动力、计算物理学、气象模型等等,需要很高精度(如128位字长)的浮点运算。而高精度浮点运算的固有特性决定了它具有面积大、功耗大的特点。速度、成本和功耗成为集成电路设计中目前最受关注的几个问题。高性能数字乘法器是数字信号处理器中的重要部件,且往往位于处理器的关键路径上。数字信号处理中的图像、语音、加密等信号处理需要进行大量的卷积、相关、窗口及FFT等基本运算,需要频繁进行大数据量的乘法和加法运算。通过对大量数字信号处理算法的分析,卷积、相关、变换、级数等运算占数据处理总运算量的75。因此乘法器和加法器很大程度上左右着信号处理系统的性能。根据SFOberman和MJFlynn的技术报告,浮点乘法的使用频率占浮点运算37。正因为乘法器被如此广泛地采用,高性能乘法器的研究和实现十分重要。1.2 高性能处理器中乘法器的应用现状过去十年,高性能处理器日新月异,乘法器的性能也随之不断提高。当前处理器中,800MHz的Itanium需要5个周期完成一个54位浮点乘加运算。Compaq公司的Alpha21264包含整数运算单元和浮点运算单元两个部分,其中整数运算单元专门设置了定点乘法运算器。在1 GHz的时钟主频下,018um 54位浮点乘法采用流水线结构需要4个时钟周期,64位定点乘法需要7个时钟周期。除此之外,0.18um425MHz的MIPS R20000也包含定点和浮点两种乘法器,其54位浮点乘法在5个周期内完成,64位定点乘法在7个周期内完成。Sun的UItraSparc IV包含定点和浮点两种乘法器,浮点乘法在4周期内完成,64位定点乘法在9周期内完成,0.13um工艺制作的CPU工作频率1.2GHz。IBM的013 um 18 GHz的Power PC970包含有多周期的定点乘法器。HP的1GHz PA-8800利用浮点运算单元处理定点乘法,定点乘法通过一系列移位加指令实现。DSP的核心是其中的乘法累加单元,且乘法器占据了DSP的大部分硬件资源。1981年,日本NEC公司推出的uPD7720是第一个具有乘法器的商用DSP芯片。1982年日本的Hitachi公司推出了浮点DSP芯片。1983年,日本的Fujitsu公司推出的MB8764其指令周期为120ns,且具有双内部总线,从而处理的吞吐量发生了一个大的飞跃。而第一个高性能的浮点DSP芯片应是AT&T公司于1984年推出的DSP32。生产32位浮点DSP的主要厂家有Analog Devices,AT&T,Motorola以及Texas Instruments等公司。1.3 国外乘法器现状理论方面:乘法器研究上的里程碑应该从Booth AD在1951年提出的Booth编码方法和Wallace的树型压缩开始。随后出现了Booth2算法、压缩器(进位保留加法)、延迟平衡树等各种算法结构。电路方面:1995年Ohkubo基于传输管逻辑实现了44ns 54位乘法器,同时提出了新的4:2压缩单元结构和进位选择加法器结构。1996年Hanawa实现了43nS的54位乘法器,同一年,Makino实现了88ns54位冗余二进制编码乘法器。1997年Inoue提出了符号选择Booth解码和改进的4:2压缩单元结构,实现了41ns的54位乘法器。1998年Hagihara基于动态技术和传输管逻辑实现了27 ns的54位乘法器。同年Carlson介绍了60 ns的64位乘法器实现方法。2001年Itoh实现了一个600MHz的两级流水线的54位乘法器。2003年Cho基于标准单元库实现了一个325ns的54位乘法器,并提出了改进的进位选择加法器结构。1.4 国内乘法器现状1993年中科院声学研究所应用于18位乘法器,实现工作频率38MHZ.。1997年国防科技大学完成应用于数字神经处理的16位乘法器,频率30MHZ。2001年西安微电子技术中心于敦山实现了32位定/浮点乘法器延时56/76ns。2002年西安交通大学袁寿财实现了0.25um下延时40ns。2003年中科院计算研究所周旭采用0.18um的工艺实现54位浮点乘法器384MHZ。2004年复旦大学武新宇采用0.18um的工艺实现64位乘法器延时2.82ns。2005年上海大学王田采用0.18um的工艺实现32位乘法器延时3.15ns。2007年东南大学王定采用FPGA设计24位乘法器延时18.81ns。1.5 课题设计(研究内容)从延迟、面积、结构复杂性等方面系统地研究乘法部件的各个过程,在研究乘法器Booth编码算法,乘法器部分积压缩拓扑结构和高速求和等算法的基础上,分析比较乘法器各部分的不同实现方法,设计了一个高性能的16位浮点并行乘法器。1.6 研究方法首先,研究乘法器常见的算法与结构,各种不同算法的性能和适应范围。其次,确定乘法器的结构,主要是根据乘法器需要达到的性能要求来初步确定可能影响到乘法器性能的主要因素。进而,重点在算法与结构方面来优化乘法器的性能。最后,采用多种结构来进行乘法器的RTL级设计,前仿真验证其功能的正确性,后仿真验证其性能在特定工艺与电压下达到要求,并得到版图文件。第2章 浮点数的数据格式2.1 数据的表示方法计算机常用的数据表示方法有:带符号数值表示法、基数反码表示法、基数补码表示法:正数的三种表示方法相同,负数的表示方法入下:(1)、带符号数值表示法: A=(smn-1mn-2m1m0)在原码的基础上增加一位符号位来表示。其中s表示数据的符号,l表示负数,0表示正数。(2)、基数的反码表示(补“1”表示法):A=(),即在不改变符号位的基础上,将其它数据位取反。(3)、基数的补码表示(补“2”表示法):A=()+1),原码取反然后加1得到。2.2 浮点运算中的数据格式浮点格式数据包括三个组成部分:指数区(Exponent),符号区(Sign),分数区(Fraction),其中将符号区和分数区统称为尾数区(Mantissa)。如图2-1浮点数的计算方法是,s是数据的符号位,f是分数区数据(二进制),e是指数区数据(等价到十进制),尾数区是一个规格化的二进制补码,小数点在尾数区与指数之间。X=0时,f=0,s=0,e=10000(负的最大值)。图2-1 浮点数据格式(1) 短浮点格式短浮点格式的数据由4位指数位,1位符号位和1l位分数位组成,本文采用这种数据格式,如图2-2。图2-2 短浮点数据格式(2) 单精度浮点格式单精度浮点格式由8位指数位,l位符号位与23位分数位组成,是DSP中常用的浮点数据表示格式,如图2-3。图2-3 单精度浮点数据格式(3) 扩展精度浮点格式扩展精度浮点数由8位指数位,1位符号位与31位分数位组成,使DSP中输入数据的常见表示方式,如图2-4。图2-4 扩展精度浮点数据格式2.3 舍入与规格化通常把尾数最高位为非零的浮点数称为规格化浮点数,在浮点数的运算中,当出现非规格化数时,需要通过移位操作来使它变成规格化数。如果尾数采用小数表示,当出现尾数绝对值小于12时,要把尾数左移,每次移动一个单位,同时把阶码减l,直到尾数的绝对值大于12,当尾数绝对值大于1时,要把尾数右移,每次移动1位,同时阶码加1,直到尾数的绝对值小于l。浮点数要进行舍入的原因是:由于任何一种浮点数表示方式尾数字长总是有限的,因此可能发生如下两个问题,一是在把通常的十进制数转化成计算机的浮点数使其有效长度可能超过给定的尾数字长,必须要舍去多余的部分;二是两个规格化的浮点数进行加减乘除,结果尾数的字长超过了给定的尾数字长,如在乘法运算时,乘积的尾数字长是给定的浮点数字长两倍,需要将一部分的数舍弃。常见的舍入方法有:(1) 恒舍法:直接舍去需要移出的位数损失一位精度实现起来比较容易。(2) 恒置法:舍去移出位后将最末的尾数位置为1,损失一位精度,实现起来比较容易。(3) 下舍上入法:类似于四舍五入法,实现起来有一定复杂性。(4) R*舍入法:对下舍上入法的一种改进,不存在累计误差的一种舍入方法,实现起来很复杂。(5) 查表法:通过ROM或者PLA中的内容来修正误差,比较有前途的一种舍入方法,实现难度一般。规格化和舍入的关系是:必须要先进行规格化,然后舍入,否则舍入是没有任何意义的。2.4 定点乘法运算溢出:指的是所得到的结果的超过了定点数所能表示的上限。如图2-5图2-5 定点数溢出定点乘法运算流程第一步:判断输入的操作数,若其中之一或者全部是0时直接将结果置为0。第二步:若操作数有效,则进行乘法运算。第三步:判定运算的结果,是否有溢出,若发生溢出时,判断结果正负,若结果是正数,则将最终结果置为最大正数,否则置为最小负数。第四步:舍入以得到符合要求的数据格式。第五步:得到最终结果。图2-6 定点乘法运算流程图2.5 浮点乘法运算浮点数的乘法相对定点数的乘法要复杂,可以理解为浮点数的乘法包含了尾数定点数(man)的乘法与指数定点数(exp)的加法两个运算部分。阶的上溢:指的是所得到的结果的阶超过了浮点数所能表示的上限与或下限,也就是说+或者是-都被认为是溢出的条件。阶的下溢:指的是所得到数的阶超出了最小允许值。如图2-7图2-7 浮点数溢出浮点运算流程图图2-8 浮点运算流程图第一步:操作数的尾数位进行乘法运算,输入的数据为12位输出结果为24位;第二步:操作数的指数部分进行相加运算结果为c(exp);第三步:判定尾数情况,若为0则执行第七步操作将结果的指数位置为-128;第四步与第五步:用于对结果进行规格化处理;如果需要进行右移1位进行规格化,执行第八步,尾数右移,直属加1,如果需要右移两位进行规格化,则执行第九步,尾数右移两位,指数加2;第十步,将尾数结果扩展为扩展精度浮点格式。第六步到第十一步:判断指数情况如果指数溢出,进行第十四步操作,如果尾数大于0,将指数置成最大正数,若尾数小于0,则将指数置成最小负数。如果指数下溢出,则执行第十五步,将指数置成-128,尾数为0,若指数在范围内。则进行第十六步操作,得到最终结果。第3章 乘法器基本原理与算法乘法运算可以通过硬件方法和软件方法来实现,具体实现方法根据乘法运算所需要的开销和硬件配置情况决定。在计算机发展的早期阶段,复杂的运算往往通过编写程序或者硬件微程序的方法来实现。今天,科学计算、数字信号处理和图像处理等计算量很大的领域对高性能乘法运算的需求使得乘法运算必须通过全硬件方法实现。而微电子和计算机技术的快速发展和进步,令专用乘法器电路的实现成为可能,并且成本不断降低。对于高性能的乘法器设计,优秀的乘法算法与结构是其硬件实现的基础,浮点乘法中几个主要步骤是:部分积产生、部分积压缩、进位传播加法和舍入处理。除了针对浮点数的指数操作、舍入和规格化等操作以外,浮点乘法器的结构和定点乘法器没有什么区别。如何进行部分积的缩减与压缩是区分各种乘法算法的关键所在。简单的算法容易实现,但速度较慢;复杂的算法可以满足快速运算的要求,但是要占用更多的硬件资源导致芯片面积增加。因此,实际设计的时候就需要根据具体的速度、面积、复杂度等要求选择一种合适的算法。本章首先介绍乘法器的基本原理以及简单的乘法器,紧接着介绍部分积缩减算法与部分积压缩算法;最后介绍各种高性能加法器。3.1 乘法器基本原理3.1.1 乘法定义考虑两个没有符号的二进制数,X与Y,长度分别M与N,可以用二进制形式来表示X与Y这里X、Y在0 1范围内,乘法器的定义如下:无论乘法是采用何种方式来实现,任何一种乘法器都可以分成部分积的产生与部分积求和两个部分。因此提高乘法器的速度可以从减少部分积的数量与缩短部分积的求和延时两个方面出发,电路设计是面积,延时,复杂度的折中,所以一般来说,简单的乘法器易于实现,延时较大,而高速乘法器将会有复杂的电路结构。3.1.2 迭代乘法器从手算的经验可知执行一个乘法运算最简单的方法就是采用一个两输入的加法器,进行部分积的累加,得到最终结果。对于N位的乘数与N位的被乘数的输入,实现乘法运算需要N个加法器与2N个寄存器,乘法的移位和相加把N个部分积加在一起,部分积是通过被乘数与乘数移位后末位相与操作得到,然后将结果与存放在寄存器中的前次运算得到的结果进行相加,并将结果仍然存放在寄存器中,如此反复。这样的操作在硬件实现上就是迭代乘法器。迭代乘法器的中间结果需要用寄存器保存的。其中时钟信号可以使用系统时钟信号。迭代乘法器需要的硬件资源比较少,所以,其消耗的功耗也比较小。但是因为它是迭代的,需要分时利用资源,所以总的延迟时间比较长。图3-1 迭代乘法器3.1.3 线性阵列乘法器通过研究可知迭代乘法器的速度不能满足高速运算的需求,一种改进的方法是将迭代乘法过程展开,在一个时钟周期内完成两个部分积的求和,这样在同样的时钟周期完成求和次数是迭代乘法器的两倍。将这一操作映射到硬件上就是线性阵列乘法器。它结合了三个功能:部分积产生,累加部分积与最终相加。乘法器需要消耗的资源增加了,功耗与复杂度也有一定的增加。3.1.4 并行乘法器根据上述两种乘法器结构可以看出,将迭代的结构展开,乘法器的速度会有所提升,所以,进一步将阵列乘法器的迭代进行展开就得到完全并行的乘法器结构。全阵列乘法器完成NN的乘法需要NN个加法器与NN个部分积的产生单元,延迟时间为O(N),为了进一步提升乘法器的速度,将部分积求和网络连接成树型结构,采用压缩器来压缩部分积,树型结构需要的资源要比全阵列结构要少,完成NN乘法运算的时间为O(Log(N)。但是树型乘法器的连线比阵列乘法器来的复杂。图3-2 并行乘法器3.2 乘法器编码算法3.2.1 阵列乘法器首先介绍简单的阵列乘法方法,这是最原始的运算方法,通过被乘数与乘数的每一位相与操作后得到的部分积只有两种情况0,M,即部分积在乘数相应位为0时为0,乘数相应位为1时就为被乘数M,运算规则如图3-3。而且控制选择这两种情况只需要通过一个与门就可以了。阵列乘法器缺点是部分积的个数和乘数的位宽相同。对于16x16位的乘法过程,需要处理的点的数量为256(16x16=256),而点阵的高度与乘数的位宽相同。图3-3阵列乘法器3.2.2 Booth编码ADBooth研究了有符号乘法运算中复杂的符号修正问题并提出了一种乘数编码方法。该算法通过每次在乘数中交叠取两位()来产生部分积P,运算规则和操作过程如图3-4所示。该算法需要N拍,最多会产生N个部分积。该算法的原理与后面介绍的修正Booth算法类似,对于补码表示的两数相乘无需进行符号位修正,并且对乘数的扫描可以从乘数的任意端开始。其主要缺陷是对于N位乘数仍需要N次移位和平均N2次加法,对于16x16位的乘法过程,需要处理的点的数量为256(16x16=256),而且点阵高度与乘数位宽相同。图3-4 Booth算法3.2.3 修正Booth编码显然,采用Booth编码并没有提高乘法器的运算速度,1961年OLMcsorley把Booth算法中的每次交叠检验乘法的两位推广到每次交叠检验三位,即著名的BoothMacSorley算法或修正Booth算法。本文后面提到的Booth或修正Booth算法都是指的这种算法。修正Booth算法每次编码时检查3位,其中2位来自当前组,第3位来自高一组的最低位。实际上,每组的最低位被检查2次。这种改进Booth算法能保证使部分积减少一半,从而提高了运算速度并降低了硬件复杂度,该算法在1975年被LPRubinfield所证明。通俗点以k=2为例介绍Booth算法,如果这两位二进制数为00,则加0;如果为01,则加A(A为被乘数);如果为10, 则加2A(A左移一位)。然而,如果这两位二进制数为11,应加3A,而3A= A +2A,引入了一次加法运算,这是不希望的。发现3A可以写成4A-A。如果2位二进制数为11减A。但本次还没有加,要记上待下一次补上。如何记住是一个问题,可以这样做:在检查当前2位的同时,也检查与这2位相邻的低位,如果它为1,则要加A(相当于前一次加4A)。由于10 的高位也为1,因此要把加2A变成加4A-2A。这就是改进的Booth算法的基本思想。在乘法器设计中大都采用改进Booth 算法以减少部分积,简化电路和提高运算速度。改进的Booth 算法的原理证明如下:设乘数:那么乘数Y 也可以表示为:其中n 是偶数,如果是奇数的数则需要扩展1 位。根据式(2)可以知道部分积只有位数的一半,而且根据的不同,与被乘数相乘得到的部分积也不同。表3-1 列出了不同的所对应的对被乘数的操作。表3-1 Booth 编码操作列表 对被乘数操作(部分积)0 0 0 部分积= 被乘数0 0 0 1 部分积= 被乘数(+1) 0 1 0 部分积= 被乘数(+1) 0 1 1 部分积= 被乘数(+2) 1 0 0 部分积= 被乘数(-2) 1 0 1 部分积= 被乘数(-1) 1 1 0 部分积= 被乘数(-1)1 1 1 部分积= 被乘数0 3.3 乘法器拓扑结构乘法器拓扑结构可以说是整个乘法器的核心,它直接决定着乘法器的性能。我们研究的乘法器阵列拓扑结构主要有简单阵列拓扑结构与双阵列或者高阶阵列拓扑结构,简单的拓扑结构(也叫重复阵列结构),如图3-5所示。在此结构中,每行(3:2)计数器将一个部分积和部分积累加器中结果相加,产生新的部分累加结果和进位序列,因此简单阵列结构的延时由阵列的深度决定。很明显,简单阵列结构的利用率并不高。在计算中,每个计数器仅仅使用一次,而其他时间一直处于休闲状态。图3-5 常见压缩器拓扑结构对于部分积求和而言,各种计数器和压缩器的不同连接方法,构成阵列结构和树型结构两大类拓扑结构。阵列类型的拓扑结构十分规整,但是延时大,占用硬件资源多:树型结构则规整性差一些,但压缩速度快,硬件需求较小。但是对于位宽较大的高速乘法器而言,阵列结构很显然,不能满足对速度的要求,而树型拓扑结构是必然的选择。图3-6 Wallace压缩树结构3.4 加法器全加器的电路结构如图3-7所示,从图中可以看出两级级连的XORXNOR是全加器的主要组成部分,也是全加器的关键路径,它直接决定了全加器的速度与功耗。表3-2 全加器真值表全加器真值表输入端a输入端b进位 c_in和输出s进位c_out0000000110010100110110010101011100111111s=abc_in cout=(ab)&c_in)|(a&b)图3-7 加法器3.5 压缩器进位保留加法器,顾名思义,这种加法器并不急于把进位相加,而是把它留到下一次加法中。由于这种加法器可以减少输出的个数,故又称之压缩器(Compressor)。根据输入和输出之间的个数比,有(3:2)压缩器、(4:2)压缩器和(5:3)压缩器等。常用的是前两种。(3:2)压缩器实际上是一个一位的全加器,通过把它们连结成并行的树形结构,可以避免费时的进位过程,加快部分积的累加速度,这种树型结构就是Wallace树。 图3-8 3:2压缩器结构图3-9 4:2压缩器结构但是如图3-9示,4:2压缩器的延时为两级3:2压缩器延时之和,延时时间过于长不符合电路设计高速性的要求,我们对其重新编码如表3-3示:表3-3 4:2压缩器真值表4:2压缩器真值表输入端a1输入端a2输入端a3输入端a4进位c_in和输出c进位c_out和输出s0000000000001001000100010001101000100001001010100011001000111011010000010100101001010010010110110110001001101011011100110111111010000001100011011001010010011101101001001010110110110101101111101100010011001101110101011101111011100101111011101111011011111111依真值表我们可以得出如下改进过的压缩器电路,在逻辑资源方面并没有改变但是少了一级XOR延时,并且高位进位也无需等待低位的进位,充分考虑的关键路径,能够满足电路高速性的要求。图3-10 改进的4:2压缩器图3-11 4:2压缩器实现电路第4章 乘法器结构与设计前两章节详细介绍了乘法器的数据格式、算法与结构,本章将在此基础上完成16位浮点乘法器的设计。按照设计规范该浮点乘法器能够完成12位定点数乘和16位浮点数乘,而浮点运算要比定点运算复杂的多,且12位定点乘法为扩展功能因此本文针对浮点乘法器的设计来展开讨论。4.1 乘法器结构浮点数包括尾数和指数两部分,尾数部分进行的是乘法运算,指数部分进行的是加法运算,并依据尾数运算结果进行指数调整。图4-1 乘法器结构尾数处理部分主要进行尾数扩展和一些数据正负的判断以及负数的生成,以备在进行Booth编码的时候使用。部分积的产生采用修正的Booth算法产生6个部分积,然后采用3:2和4:2压缩器将结构压缩为两个,高速相加得到结果。之后通过符号修正、尾数舍入、规格化等操作对指数进行调整即可完成乘法功能。4.2 尾数扩展和部分积产生本文设计的是16位的浮点乘法器,所以在乘数和被乘数输入计算电路之前应该进行符号的扩展使其满足16位,并为判断正负产生Booth编码时候需要的负乘数,相对来说尾数的设计部分比较简单,具体电路见附录代码部分。部分积得产生采用修正Booth算法,在第三章有详细介绍这里不做过多说明,详细实现电路见附录代码部分。4.3 压缩器的选择限制乘法器高速性的因素有两个,部分积的产生和求和。我们采用Booth编码将部分积减少一半产生6个部分积,接下来可以采用压缩器实现部分积的高速求和。在第二章我们介绍了两种压缩器,分别是3:2压缩器和4:2压缩器。现在我们分别用这两种电路构成三种电路比较其性能,再决定具体采用电路。图4-2 采用3:2压缩器结构 图4-3 采用4:2压缩器结构1:采用3:2压缩器 三级6级XOR延迟、占用8个XOR、4个MUX2:采用4:2压缩器 两级6级XOR延迟、占用8个XOR、4个MUX3:采用混合压缩器 两级5级XOR延迟、占用8个XOR、4个MUX选用方案3可以节省一级XOR延迟,在耗费相同的逻辑资源的情况下取得更大高的速度,如图4-4示:图4-44.4 乘法器端口定义根据乘法器的功能计算要求定义乘法器的端口如下:图4-5 乘法器端口图ain :16位浮点乘数输入bin :16位浮点被乘数输入clk :工作时钟输入res :复位信号输入f :定点/浮点运算选择输入cout:32位浮点运算结果输出4.5 浮点数规格化关于浮点数的范围如下:最大正数值 是由尾数的最大正数值与阶码的最大正数值组合而成的;最小正数值 是由尾数的最小正数值与阶码的最小负数值组合而成的;最大负数值 是由尾数的最大负数值与阶码的最小负数值组合而成的;最小负数值 是由尾数的最小负数值与阶码的最大正数值组合而成的;16进制浮点数最大正数值C=0111_0111_1111_1111最小正数值C=1000_0000_0000_0000最大负数值C=1000_0000_0000_0000最小负数值C=0111_1000_0000_0000两个数据相乘无外乎两种结果,正数和负数。(1)正数结果的分析:规格化后尾数部分的范围(尾数可以都为正或负,但结果为正处理方式相同所以加绝对值)0.100_0000_0000|C(man)|0.111_1111_1111 0.5|C(man)|0.99951171875相乘的最终结果范围0.01(20位0) C(man) 0.11_1111_1111_0000_0000_0001 0.25 C(man) 0.9990236759185791015625结果:正数结果的移位规格化(高位的0为无效位)1:尾数右移一位,指数减12:尾数不用移位,指数不变(2)负数结果的分析:规格化后尾数部分的范围(尾数符号相异)0.100_0000_0000C(man)0.111_1111_1111 0.5C(man)0.999511718751.000_0000_0000C(man)1.011_1111_1111 -1C(man)-0.50048828125相乘的最终结果范围-0.99951171875C(man)-0.50048828125*0.5=-0.25024414062511.00_0000_0000_1000_0000_0000C(man)11.10_1111_1111_1100_0000_0000结果:负数结果的移位规格化(高位的1为无效位)1:尾数右移一位,指数减12:尾数不用移位,指数不变4.6 指数修正本文的设计的浮点乘法器的指数部分有四位,两个四位的数相加的范围是: -16e14一个五位数的表示范围是:-16e15当存在移位规格化操作时候一个五位的数是不能表示的,因为存在一个特殊的数-16,在减1时发生溢出。尾数规格化的时候需要小数点向右移,指数会减少1,在结尾对输出进行赋值时采用指数修正之前的符号可以有效的防止指数溢出情况的发生,在程序上只需要加一级判断而已,详细实现过程见附录部分程序。第5章 乘法器的验证在前文已完成的浮点乘法器设计的基础上,本章将该乘法器的功能与性能进行验证。验证是芯片设计的重要组成部分,目的是要检查设计的电路是否达到预期的功能和性能要求,验证的基本思路是:模拟待验证的设计的输入端输入不同的信号观察信号在设计内部的传播与输出的结果,从而分析出设计是否达到要求。验证主要分为软件的模拟仿真和硬件仿真。5.1 Modelsim模拟仿真Modelsim仿真工具是Model公司开发的,它支持Verilog、VHDL以及他们的混合仿真。它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在Dataflow窗口查看某一单元或模块的输入输出的连续变化等。比Quartus自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。在采用Modelsim开始仿真之前我们首先应该搭建一个仿真测试的平台,即为即将进行的测试文件编写一个测试激励(Testbench)。一个测试平台文件就是一个Verilog模型,可以用来验证所设计的硬件模型的正确性。测试平台就是为所测试的元件提供一个测试激励,仿真结果可以以波形的方式显示或存储测试结果到文件中。激励信号可以直接集成在测试平台文件中,也可以外部文件加载,在这里我们采用集成在测试平台中如图5-1。图5-1 仿真测试平台仿真模拟文件是采用软件方法模拟一个乘法器,在编写的时候并不考虑硬件情况所以是不可综合的。它仅仅用于仿真,在相同的测试激励下会产生和待测试文件一样的乘法结果。但由于它采用的是纯粹的软件的仿真并不关心实际硬件,所以我们可以采用直接使用乘法得出结果,从而大大减小它的编写难度同时能够保证结果的正确性。如果待测试文件和仿真模拟文件在相同的测试激励下输出相同的结果,那么我们就可以认为设计是正确的。同时得益于软件仿真的高速性我们可以再完成一组仿真比较之后紧接着自动进入下一组,同时自动改变仿真的数据组合,逐步将16位浮点数据的全部组合进行测试,确保在所有情况下的结果都是正确的。仿真测试平台提供两个相同的测试激励分别将值给待测试文件和模拟测试文件,然后得到它们的结构进行比较,如果相同说明我们的设计在功能上是正确的,如果不同说明设计存在问题,验证测试马上终止,并给出错误位置和激励信号帮助改正,具体实现代码见附录测试代码部分。Modelsim版本:Modelsim SE 6.5系统平台:WIN7旗舰版图5-2 Modelsim仿真结果5.2 FPGA硬件仿真在代码编写完成后通过Quartus的编译和综合下载到FPGA的实验板上进行实际的硬件仿真,在这里可以完全模拟芯片在生产出来之后所遇到的实际问题并提前改善。Quartus版本:Quartus8.0系统平台 :WIN7旗舰版实验板 :EP1C6Q240C8抓图 :嵌入式逻辑分析仪图5-3 逻辑资源占用情况图5-4 嵌入式逻辑分析仪抓图第6章 ASIC综合所谓ASIC逻辑综合是指在给定工艺库的基础上通过映射和优化,将行为级描述的设计在一定的规则下转化为逻辑电路结构。它是面向给定的设计约束,将高级的设计代码描述映射为基于工艺库的门级网表的自动化过程。ASIC综合器在把可综合的VHDL/Verilog程序转化成硬件电路时,一般要经过两个步骤:第一步是HDL综合器对VHDL/Verilog进行分析处理,并将其转成相应的电路结构或模块,这时是不考虑实际器件实现的,即完全与硬件无关,这个过程是一个通用电路原理图形成的过程;第二步是对应实际实现的目标器件的结构进行优化,并使之满足各种约束条件,优化关键路径等。图6-1 DC综合优化之前的电路图图6-2 DC 综合优化之后的电路图第一步我们采用DC综合,生成相应的电路模块和时序文件,以及接下来用到的sdc文件。图6-3 Astro布局布线完成后电路第二步我们采用Astro进行自动的布局布线,得到最终的GDS文件。结 论本文采用自上而下的正向设计方法在仔细分析了各种算法的基础之上设计了一种高速CMOS浮点乘法器,可以实现16位浮点和12位定点的乘法运算。通过Verilog HDL语言进行了硬件电路的描述,并利用Altera公司的Cyclone系列的EP1C6进行了硬件电路的实现,而该电路的功能仿真和硬件验证都已经正确通过,验证表明乘法器具有优良的性能。通过对电路进行时序分析,可以得出该种设计方法的电路比传统方法设计的电路有了明显性能改善的结论。乘法运算在一个时钟周期完成,可以处理16位浮点或12位定点两种类型数据,具有更广泛的应用范围。整个乘法器都进行了高度并行化的设计,使乘法器具有较快的运算速度,且结构规整。数据格式的识别与切换可由乘法器自行完成。乘法器的设计采用软IP形式,具有一定的通用性和可移植性,且易
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新质生产力:生活中的实例
- 宿迁新质生产力赋能培训
- 物资仓储管理课件
- 2026年高考总复习优化设计一轮复习政治(人教福建版)-第2课 我国的社会主义市场经济体制
- 新质生产力相关行业解析
- 新质生产力党建引领
- 2025年生物饲料添加剂产品性能提升鉴定报告
- 2025年政府会计准则考试题及答案解析
- 广东省深圳市平湖中学2025年高三生物第一学期期末学业质量监测试题
- 微生物、洁净作业和卫生知识培训试卷及答案
- 《宠物解剖生理》课程标准
- 山西航空公司招聘笔试真题
- 电子商务法律风险与合规管理
- 缆索起重机检查评分
- 妊娠期并发产前子痫的处理培训课件
- 中国民族史纲要罗佑贤
- 城市道路路名牌设置、管理和维护导则
- 肝性脑病患者护理查房
- JJF(石化)053-2021间隙式湿膜制备器校准规范
- 4.3闭环控制系统的工作过程教学设计-高中通用技术必修《技术与设计2》
- 2023版设备管理体系标准
评论
0/150
提交评论