浮点数乘法器的设计_第1页
浮点数乘法器的设计_第2页
浮点数乘法器的设计_第3页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浮点数乘法器的设计

0浮点数乘法器模块的改进随着现代通信的发展,数字数据处理的广泛应用日益增多。在数据分析和数值计算中,乘法是非常重要的运算之一,尤其是浮点乘法运算。乘法器所占的资源较大。在小规模设计中,如果要用乘法器,通常会为减少资源占用(面积)而减少位数,则精度得不到保证,这样就会出现资源与精度相矛盾的情况,而成为设计中的瓶颈。笔者通过实际工作,自己设计了浮点数乘法器模块,很好地解决了这一问题。该模块可根据精度要求的不同,可以改变阶码和尾数的长度,从而方便的嵌入到其他设计中,实践证明收到了良好的效果。本文详细阐述了浮点数的构成、重点介绍了该乘法器的结构,使设计者可以方便的移植利用。1阶码e的表示根据IEEE754标准,单精浮点数的格式如图1:通常用下式表示F=(-1)S×M×RE(1)其中S为符号,‘0’表示正数,‘1’表示负数;M为尾数,E是阶码。R=2称作“阶的基数”。对于阶码E来说其表示范围是0~255,将其减去偏移量2N-1可使其表示范围为-128~127。而其尾数表示整数部分为‘1’的小数二进制数,即M=1.XXX……X=1.Mi。在标准格式中,第一位‘1’是被省去的,也就是说F=(-1)S×1.M′×RE-2N-1(2)例如3D82A993中S=0,E=(7B)H,M′=(02A993)H⇒E=(7B-80)H=(FB)H=(-4)D⇒M=(1.00000101010100110010011)B=(1.0208)D⇒F=(-1)0×1.0208×2-4=0.06382浮点数乘法器2.1浮点数乘法器运算由式(2)可知乘法运算的两浮点数可表示为FA=(-1)SA×1.M′A×REA-2N-1(3)FB=(-1)SB×1.M′B×REB-2N-1(4)乘法运算表达式为FA×FB=(-1)SA+SB×1.M′A×1.M′B×REA+EB-2N-1-2N-1(5)可以看出在结果中对偏移量进行了重复相加,因此在结果中阶码和应减去偏移量,即F=(-1)S×1.M′A×1.M′B×RE-2N-1(6)浮点数乘法器运算可分为三步:第一步:将数据分为三个部分,符号、阶码、尾数。第二步:符号位异或,阶码相加,尾数相乘。第三步:对结果进行规格化并输出。2.2浮点数的n-1浮点数乘法先利用无符号乘法器将两浮点数的尾数相乘得到双精度的运算结果,同时阶码相加并且减去偏移量2N-1,由于标准的浮点数表示省略了首位‘1’,所以在运算时需将首位‘1’还原。阶码相加并减去偏移量后还应加两次1,但由于两尾数均为1XXX…X形式,乘法运算后其结果必然为01XXX…X的形式或1XXX…X的形式,所以阶码相加并减去偏移量后只加了一个1,而另一次加1则根据乘法运算结果的形式来确定。2.3dat-jud模块根据浮点数乘法的原理,其结构如图2所示。可以看出,首先乘数与被乘数两路浮点数据通过DAT-DIV模块分为符号、阶码与尾数三部分,两路数据的符号SA、SB通过异或门直接进入DAT-COM模块输出。阶码部分做加法运算,为防止两阶码相加结果超过255,阶码部分的宽度为9,其结果须进入一个常数加法器,即与(110000001)B相加,此模块的功能是实现阶码和减去偏移量再加‘1’的运算。尾数部分宽度为24,且第一位补一。而两数据尾数部分则通过一个无符号乘法运算得到一个双精度的结果,此处为满足规格化要求,不能直接输入给DAT-COM,需通过DAT-JUD模块。对这一结果进行判断,若最高位为‘1’则向指数运算过程中的常数加法器的进位位送‘1’,反之为‘0’。同时选择乘法结果的第46位至第24位或第45位至第23位位最终的尾数输出,最后DAT-COM将异或运算得到结果的符号、处理后的阶码及规格化的尾数组合成32位的浮点数结果输出。3u3000epf30etc144-1该模块设计结构为两输入一输出,其DATAA、DATAB端输入被乘数和乘数且均为32位输入端。DATAOUT为32位的输出端。选择器件EPF10K30ETC144-1,系统综合后共占用逻辑单元1679个。为了验证该模块功能,这里列出了四组数据如表1。表中的乘数、被乘数及结果反映了数据符号及阶码符号不同的情况,有一定的代表性。如第一组数据中被乘数阶码小于等于零,乘数阶码大于零且均为正数,结果为阶码大于零的正数;第二组中被乘数为阶码大于零的正数,乘数阶码小于零,结果为正且阶码小于零。仿真后波形如图3所示,其运算结果是正确的。4altfp-mslt浮点数乘法器简介实践证明,该乘法器模块同种芯片用不同的工具综合,其结果占用的资源不同。以芯片10K30ETC144-1为例,本乘法器模块用Quartus综合,占用821个LCS(逻辑单元),占用了资源的47%;用MaxplusⅡ综合,占用逻辑单元1679,占了资源的97%。Quartus中的宏模块ALTFP-mult,可以生成singleprecision(32位)、doubleprecision(64位)和singleextendedprecision(43位~64位)的浮点数乘法器。利用该宏模块生成的单精度浮点数乘法器,综合后在10K200SFC672-1中占用逻辑单元1422个。然而,ALTFP-mult不支持10K及其以下芯片,因此本文提出的设计用VHDL语言编写,并设有参数MANT-WIDTH,EXPT-WIDTH可以根据需要改变浮点数的格式,以更好的适应小规模设计的需要。此外

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论