ImageVerifierCode 换一换
格式:DOCX , 页数:55 ,大小:682.82KB ,
资源ID:894710      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-894710.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于FPGA的浮点运算器IP核的设计与实现.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于FPGA的浮点运算器IP核的设计与实现.docx

1、基于FPGA的浮点运算器IP核的设计与实现基于FPGA的浮点运算器IP核的设计与实现摘 要浮点运算作为数字信号处理的最基本的运算,具备动态范围大的特点,不仅成为衡量微处理器性能的主要指标之一,而且广泛适用于复杂的数学计算、科学应用和工程设计中,随着多媒体技术的蓬勃发展,浮点运算单元的应用范围越来越广泛,它已经走入了千家万户,用来解决复杂的数字图像处理,移动物体模型的建立,三维动画设计与演示等等。随着FPGA的出现以及EDA技术的成熟,采用FPGA实现数字信号处理的方法已经显示出巨大的潜力,利用FPGA技术设计浮点乘法器可以缩短产品的开发周期。本设计提出了一种基于VHDL语言的浮点乘法器的硬件实

2、现方法,就是用VHDL语言描述设计文件和原理图方式设计,以Altera公司的Cyclone系列产品为硬件平台,以Quartus为软件工具进行模拟仿真,实现了任意以IEEE754标准表示的23位单精度浮点数的乘法运算。设计中对阶码的溢出进行了研究并进行了处理,同时对结果进行了规格化处理,通过利用FPGA在线可编程的技术,设计出的浮点乘法器更加方便灵活,克服了专用乘法器的不足,更能广泛的应用到各个领域。关键词:IEEE754,单精度浮点数,乘法器,硬件描述语言,FPGA,Quartus THE DESIGN AND IMPLEMENTATION OF FLOATING-POINT UNIT IP

3、CORE BASED ON FPGAABSTRACT As the most basic operation of digital signal processing, floating-point calculation is equipped with the characteristic of dynamic range, it is not only the main measure of microprocessor performance indexes, but also is widely used in complex mathematical calculation, sc

4、ience applications and engineering design. with the vigorous development of multimedia technology, floating point arithmetic unit has been widely used, and it has come home, been used to solve complex problems, such as digital image processing, the establishment of the moving object model, 3-d anima

5、tion design and demonstrate, etc. With the maturity of FPGA presence and EDA technology, it has shown great potential to realize digital signal processing by the method of using FPGA, it can cut short the development cycle by using the FPGA technology design floating-point on time-multiplier. The de

6、sign is proposed based on VHDL language of floating on time-multiplier, the hardware realization method is described with VHDL language schematic design documents and Altera design, by the way the Cyclone series products for hardware platform, with Quartus for software tools for simulation,it realiz

7、ed any twenty-three single precision floating-point multiplication which is in the IEEE754 standard. Design of order yards was studied and spill the processing, and the results are the normalized processing, by using the on-line programmable FPGA technology, design the floating-point greater flexibi

8、lity on time-multiplier, overcome the deficiency of special on time-multiplier, more can widely used in various fields.KEY WORDS:IEEE754,float,multiplier unit,VHDL,FPGA,Quartus目录前言21世纪是信息化的时代,信息产业已经成为衡量一个国家经济科技实力的重要标志,集成电路则是信息技术与信息产业的基础,是电子信息产业的命脉。自1971年Intel公司第一块4位处理器芯片面世以来,微处理器的性能遵照“摩尔定律”按照每18个月翻一

9、番的速度不断提高。而随着技术的发展,在国民经济生产的各个领域,越来越需要更高性能的处理器对大量的数据进行处理,且对数据计算精度和实时性要求更高。目前,浮点乘法器不仅应用在许多数字信号处理器中,而且广泛地应用于通用微处理器中,浮点乘法的操作主要包括单、双精度的操作,与IEEE754标准兼容的浮点乘法操作还应包括对乘积的正确舍入、对阶码的必要调整,多数FPGA上可以实现整数和标准逻辑矢量的乘法,但不支持浮点乘法运算,因此使得FPGA在数值计算、数据分析和信号处理能力等方面受到了限制,所以对浮点数据的处理能力就被提上了日程。随着半导体工艺技术的进步和浮点处理器设计技术的发展,浮点处理器经历了由数字协

10、处理器,到集成在微处理器中的浮点处理器单元,到集成多个浮点处理单元等不同阶段。我国微处理器和浮点处理器的研制水平还比较落后,规模和档次与国外相比差距较大,但经过这几年的努力,已经取得了不少可惜的研究成果。16位DSP汉芯一号的问世,打破了国内没有自主知识产权的局面,使得我国的DSP芯片得到蓬勃的发展。但是汉芯系列芯片,目前仍然只能处理定点数据,这在一定程度上限制了汉芯打入高端DSP市场的发展。而且目前国外的著名芯片设计生产厂无一不推出了浮点DSP产品,如TI的6X系列等,在高端市场上有垄断性的地位。所以研究浮点协处理器对将来推出汉芯系列浮点DSP芯片具有重要的意义。现在一般的浮点处理器都是在采

11、用定点DSP的条件下由软件实现浮点计算,但是这样的软件程序会占用大量处理器的时间,效率低下。即使采用改进的方法(块浮点法,用软件或软硬件协同来实现),软件的执行效率仍不能与本课题所采用的硬件实现高,所以基于FPGA设计的浮点处理器具有速度快、效率高、性能好的优势。本文将讨论浮点数按IEEE754标准表示的方法,并针对IEEE754 单精度浮点数据格式进行浮点乘法器设计,即将任意输入的两个以IEEE754标准表示浮点数,遵循其乘法规则,采用VHDL和原理图的设计方法,利用Quartus软件进行在线编程调试,并下载到FPGA芯片中,验证输出结果的正确性。本课题解决的主要问题有对阶码溢出的处理、结果

12、的规格化处理以及合理利用实验箱的资源进行验证这三方面,最后画出其硬件电路图。全文共分为4章,主要介绍了利用VHDL语言设计乘法器的步骤,本论文的结构为:第1章为绪论,介绍了IEEE754标准及浮点乘法器的原理。第2章主要介绍了EDA工具,包括VHDL的介绍以及Quartus等相应设计工具的使用方法。第3章给出了系统整体框架设计和各模块的实现,详细介绍了每个模块的功能及运用Quartus软件工具进行波形仿真的结果。第4章主要对设计顶层进行仿真以及对结果进行验证并画出其硬件电路图。最后总结了全文的主要内容,并提出了今后研究的方向。第1章 绪论1.1 引言计算机中常用的数据一般来说,定点格式容许的数

13、值范围有限,但要求的处理硬件比较简单。而浮点格式容许的数值范围太大,但要求的处理硬件较为复杂。所谓定点格式,即约定机器中所有的数据的小数点位置是固定不变的,通常将数据表示成纯小数或纯整数。可是电子的质量(克)和太阳的质量(克)相差甚远,在定点计算机中无法直接来表示这个数值范围。这便引入了浮点数表示法既把一个数的有效数字和数的范围在计算机的一个存储单元中分别予以表示,相当于数的小数点位置随比例因子的不同而在一定范围内可以自由浮动,浮点运算与定点运算相比,具有运算速度快,有效精度高,计数范围宽等特点,更适合运用在工程计算与科学计算中,它已成为计算机运算的重要方式。1.2 浮点数的格式1.2.1 一

14、般浮点数表示方法任意一个十进制数N可以写成同样,在计算机中一个任意进制数N可以写成其中M称为浮点数的尾数,是一个纯小数。e是比例因子的指数,称为浮点数的指数,是一个整数。比例因子的基数R=2对二进记数制的机器 是一个常数。在机器中表示一个浮点数时,一是要给出尾数,用定点小数形式表示。尾数部分给出有效数字的位数,因而决定了浮点数的表示精度。二是要给出指数,用整数形式表示,常称为阶码,阶码指明小数点在数据中的位置,因而决定了浮点数的表示范围。浮点数也要有符号 位。早期计算机中,一个机器浮点数由阶码和尾数及其符号位组成,表示方法见图1-1。图1-1 早期浮点数表示方法1.2.2 IEEE754标准表

15、示的浮点数为便于软件的移植,浮点数的表示格式应该有统一标准。1985年IEEE(Institute of Electrical and Electronics Engineers)提出了IEEE754标准。该标准规定基数为2,阶码E用移码表示,尾数M用原码表示,根据原码的规格化方法,最高数字位总是1,该标准将这个1缺省存储,使得尾数表示范围比实际存储的多一位。其3种浮点格式见表1-1。表1-1 IEEE754三种浮点数格式参数类型存储位数偏移值数符(S)阶码(E)尾数(M)总位数十六进制十进制短实数(单精度)1位8位23位32位0X7FH+127长实数(双精度)1位11位52位64位0X3FF

16、H+1023临时实数(不常用)1位15位64位80位0X3FFFH+1638332位单精度浮点数标准格式见图1-2;64位双精度浮点数标准格式见图1-3。图1-2 单精度浮点数标准格式图1-3 双精度浮点数标准格式不论是32位浮点数还是64位浮点数,规定基数R=2。由于基数2是固定常数,对每一个浮点数都一样,所以不必用显示方式来表示它。32位的浮点数中,S是浮点数的符号位,占1位,安排在最高位,S=0表示正数,S=1表示负数。M是尾数,放在低位部分,占用23位,小数点位置放在尾数域最左(最高)有效位的右边。E是阶码,占用8位,阶符采用隐含方式,即采用移码方法来表示正负指数。移码方法对两个指数大

17、小的比较和对阶操作都比较简单,因为阶码域值大者其指数值大,采用这种方式时,将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值127,即E=e+127。1.2.3 浮点数的规格化若不对浮点数的表示做出明确的规定,同一个浮点数的表示就不是惟一的。例如(1.75)10可以表示成,等 多种形式。为了提高数据的表示精度,当尾数的值不为0时,尾数域的最高有效位应为1,这称为浮点数的规格化表示,否则以修改阶码同时左右移小数点位置的办法,使其变成规格化数的形式。在IEEE754标准中,一个规格化的32位浮点数x的真值表示成:e=E-127其中尾数域所表示的值是1.M。因为规格化的浮点数的尾数域最

18、左边(最高有效位)总是1,故这一位经常不予存储,而认为隐藏在小数点的左边。1.2.4 特殊浮点数指数的偏移值为什么不选128而选127呢?因为存在特殊的浮点数。当阶码E为全0时,表示的真值x为零,结合符号位S为0或1,有正零和负零之分。当阶码E为全1且尾数M为全0时,表示的真值x为无穷大,结合符号位S为0或1,也有正无穷大和负无穷大之分。这样在32位浮点数表示中,要除去E用全0和全1表示零和无穷大的特殊情况,指数的偏移量不选128而选127,对于规格化浮点数,E的范围变为1到254,真正的指数值e则为-126到+127。特殊浮点数见表1-2。表1-2 特殊浮点数单精度(32 bit)双精度(6

19、4 bit)符号位指数尾数值符号位指数尾数值正零00000000负零100-0100-0正无穷大02550020470负无穷大12550-120470-1.3 浮点乘法器的原理32位浮点数据格式已知:。其中乘法器运算操作分4步进行:一、确定结果的符号,对A 和B 的符号位做异或操作。二、计算阶码,两数相乘, 结果的阶码是两数的阶码相加,由于A 和B 都是偏移码,因此需要从中减去偏移码值127,得到A 和B 的实际阶码, 然后相加,得到的是结果的阶码,再把他加上127,变成偏移码。三、尾数相乘,A 和B 的实际尾数分别为24位数,即1Ma 和1Mb,最高位1是隐藏位,浮点数据格式只显示后23位,

20、所以尾数相乘结果应为一个48位的数据。四、尾数规格化,需要把尾数相乘的48位结果数据变成24 位的数据分3步进行:1、如果乘积的整数位为01,则尾数已经是规格化了;如果乘积的整数位为10、11,则需要把尾数右移1位,同时把结果阶码加1。2、对尾数进行舍入操作,使尾数为24位,包括整数的隐藏位。3、把结果数据处理为32位符合IEEE754浮点数标准的结果,包括1位符号位,8位结果阶码位,23位尾数位。其设计流程图如图1-4所示。图1-4 设计流程图第2章 EDA工具介绍2.1 EDA技术及其发展EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪9

21、0年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可靠性,减轻了设计者的劳动强度。20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可

22、编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。 2.2 EDA设计流程及其工具2.2.1 设计流程一个完整的EDA设计流程采用的是自顶向下的设计方法,图2-1是基于EDA软件的FPGA/CPLD开发流程框图。其一般流程如图2-1所示。图2-1 应用于FPGA/CPLD的EDA开发流程一、电路设计输入1、图形输入:原理图输入、状态图输入,波形图

23、输入。2、HDL文本输入。二、 综合。综合是仅对HDL而言的,综合过程是把软件设计的HDL描述与硬件结构挂钩,是将软件软化为硬件电路的关键步骤,是文字描述与硬件实现的一座桥梁。三、适配。适配是将综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件。四、时序仿真和功能仿真。在编程下载前必须利用EDA工具对适配生成的结果进行模拟测试。五、编程下载。把适配后生成的下载或配置文件,通过编程器或编程电缆向FPGA或CPLD下载,以便进行硬件调试和验证。六、 硬件测试。最后是将含有载入了设计的FPGA或CPLD的硬件系统进行统一测试,以便最终验证设计项目在目标系统上的实际工作情况。2.2.2

24、 HDL简介硬件描述语言HDL是EDA技术的重要组成部分,常见的HDL主要VHDL、Verilog、HDL、ABEL、AHDL、System Verilog和SystemC。其中VHDL、Verilog和现在的EDA设计中使用最多。VHDL的英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Description Language),由IEEE(Institute of Electrical and Electronics Engineers)进一步发展,并在1987年作为“IEEE标准1076”公布。从此VHDL成为硬件描述语言的业

25、界标准之一。VHDL技术与传统的数字电子系统或IC设计相比之下有很大的优势,主要表现在:第一,VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务提高了设计效率和可靠性。第二,VHDL语言具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的的能力,并在语言易读性和层次化,结构化设计方面,表现了强大的生命力和应用潜力。2.2.3 Quartus简介Quartus是Altera提供的FPGA/CPLD开发集成环境,Altera是世界上最大的可编程逻辑器件供应商之一。Quartus在21世纪初推出时,是Altera

26、前一代FPGA/CPLD集成开发环境MAX+plus的更新换代产品,其界面友好,使用便捷。Altera的Quartus提供了完整的多平台设计环境,能满足各种特定设计的需要,也是单芯片可编程系统(SOPC)设计的综合性环境和SOPC开发的基本设计工具。此外,Quartus与MATLAB 和DSP Builder结合,可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA工具。第3章 整体框架设计及功能模块介绍3.1 设计思路首先要根据该乘法器的原理确定本次设计的主要功能模块,本次设计主要实现了以下功能:用实验箱的按键手动输入两个32位的单精度浮点数,并用数码管显示,然后实现这两个

27、数的乘法,进行规格化处理,最终显示在数码管上,同时用两个指示灯来表示阶码的溢出。该乘法器主要由预处理模块、相乘模块、计算阶码模块、计算尾数模块、计算阶码模块、溢出模块、显示模块组成。其中预处理模块主要是实现对两个浮点数符号位、阶码、尾数的提取,以便为下面的乘法做准备;相乘模块主要实现尾数的相乘得出去其整数部分和小数部分,为计算尾数、规格化处理、以及阶码是否加1做准备;计算阶码模块主要是计算阶码;溢出模块主要对阶码是否溢出做出判断;显示模块主要实现了2个乘数和结果的切换显示。3.2 预处理模块由于实验箱的硬件有限,假若一次输入32位二进制数,则将没有多余的控制键,不利于设计的进行,所以在充分利用

28、其硬件资源的情况下,采取一次输入4位二进制数,并对应一个数码管显示,进行16次的输入完成两个乘数的输入。其模块端口如图3-1所示。 图3-1 预处理模块其中input3.0为一次输入的4位二进制数,ok为每次输入的确认键,rst是复位键,a31.0、b31.0是最终得到的两个单精度浮点数。a_s、a_e7.0、a_m22.0和b_s、b_e7.0、b_m22.0分别为两个数的符号位、阶码、尾数。 时序仿真结果如图3-2所示。图3-2 预处理模块仿真波形根据仿真波形可以看出经过16次的ok键确认后,把输入的input最终转化成了两个单精度浮点数a=(D5685462)16和b=(33642222

29、)16,此时再经过一次ok键确认便得到了它们各自的符号位、阶码、尾数,a的符号位a_s=1、阶码a_e=10101010、尾数a_m=110100*01100010,b的符号b_s=0、阶码b_e=01100110、尾数b_m=11001000010001000100010。这为下面的运算做好准备。3.3 定点乘法器3.3.1 IEEE754舍入模式在浮点运算过程中一个很重要的步骤是舍入,舍入的目的是使得有效数据的位数保持在固定位数范围内。一、就近舍入(偶数):目标是使舍入结果尽可能接近实际值。最大误差为LSB(Least Significant Bit)。二、零舍入RZ:通过截断实际值的多余

30、位来实现。最大误差为土LSB。三、+舍入:结果向正无穷大方向舍入。所有值被舍入到下一个可能值,负数的舍入结果将截去多余位,正数的舍入结果为下一个较大的 有效值。四、-舍入:结果向负无穷大方向舍入,负数的舍入结果将为下一个较小的有效值。 下表给出了不同的舍入方法下的舍入结果,以8位值舍入为4位值为例。表3-1 不同舍入方法的舍入值数值就近舍入零舍入+舍入-舍入.01101001.0111.0110.0111.0110-.01101001-.0111-.0110-.0110-.0111.10000111.1000.1000.1001.1000-10000111-.1000-.1000-.1000-

31、.1001.10000000.1000.1000.1000.1000本次设计中对小数部分的舍入采取零舍入RZ模式。3.3.2 定点乘法器原理 相乘模块主要实现尾数的相乘,是一个24位定点乘法器,送入定点乘法器的处理后尾数部分都是1.m,所以2个数相乘一定大于1小于4,将相乘的结果分为整数部分和小数部分,则输出结果小数点前的整数部分应有2 bit,且只有01、10、11三种取值;小数点后面的小数部分应该有46位。当整数位为01时,则只需要对小数部分进行舍入得到23位,这23位即相乘后的尾数部分;当整数位为10、11时,此时需要进行规格化处理,阶码应该加上偏移量1,小数部分进行舍入得到22位,第23位由整数部分决定,整数位为10时,第23位为0,整数位为11时,第23位为1。3.3.3 定点乘法器模块该模块的主要功能是得到整数部分和小数部分的

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2