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

上传人:b****2 文档编号:894710 上传时间:2023-04-30 格式:DOCX 页数:55 大小:682.82KB
下载 相关 举报
基于FPGA的浮点运算器IP核的设计与实现.docx_第1页
第1页 / 共55页
基于FPGA的浮点运算器IP核的设计与实现.docx_第2页
第2页 / 共55页
基于FPGA的浮点运算器IP核的设计与实现.docx_第3页
第3页 / 共55页
基于FPGA的浮点运算器IP核的设计与实现.docx_第4页
第4页 / 共55页
基于FPGA的浮点运算器IP核的设计与实现.docx_第5页
第5页 / 共55页
基于FPGA的浮点运算器IP核的设计与实现.docx_第6页
第6页 / 共55页
基于FPGA的浮点运算器IP核的设计与实现.docx_第7页
第7页 / 共55页
基于FPGA的浮点运算器IP核的设计与实现.docx_第8页
第8页 / 共55页
基于FPGA的浮点运算器IP核的设计与实现.docx_第9页
第9页 / 共55页
基于FPGA的浮点运算器IP核的设计与实现.docx_第10页
第10页 / 共55页
基于FPGA的浮点运算器IP核的设计与实现.docx_第11页
第11页 / 共55页
基于FPGA的浮点运算器IP核的设计与实现.docx_第12页
第12页 / 共55页
基于FPGA的浮点运算器IP核的设计与实现.docx_第13页
第13页 / 共55页
基于FPGA的浮点运算器IP核的设计与实现.docx_第14页
第14页 / 共55页
基于FPGA的浮点运算器IP核的设计与实现.docx_第15页
第15页 / 共55页
基于FPGA的浮点运算器IP核的设计与实现.docx_第16页
第16页 / 共55页
基于FPGA的浮点运算器IP核的设计与实现.docx_第17页
第17页 / 共55页
基于FPGA的浮点运算器IP核的设计与实现.docx_第18页
第18页 / 共55页
基于FPGA的浮点运算器IP核的设计与实现.docx_第19页
第19页 / 共55页
基于FPGA的浮点运算器IP核的设计与实现.docx_第20页
第20页 / 共55页
亲,该文档总共55页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《基于FPGA的浮点运算器IP核的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于FPGA的浮点运算器IP核的设计与实现.docx(55页珍藏版)》请在冰点文库上搜索。

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

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

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

摘要

浮点运算作为数字信号处理的最基本的运算,具备动态范围大的特点,不仅成为衡量微处理器性能的主要指标之一,而且广泛适用于复杂的数学计算、科学应用和工程设计中,随着多媒体技术的蓬勃发展,浮点运算单元的应用范围越来越广泛,它已经走入了千家万户,用来解决复杂的数字图像处理,移动物体模型的建立,三维动画设计与演示等等。

随着FPGA的出现以及EDA技术的成熟,采用FPGA实现数字信号处理的方法已经显示出巨大的潜力,利用FPGA技术设计浮点乘法器可以缩短产品的开发周期。

本设计提出了一种基于VHDL语言的浮点乘法器的硬件实现方法,就是用VHDL语言描述设计文件和原理图方式设计,以Altera公司的Cyclone系列产品为硬件平台,以Quartus为软件工具进行模拟仿真,实现了任意以IEEE754标准表示的23位单精度浮点数的乘法运算。

设计中对阶码的溢出进行了研究并进行了处理,同时对结果进行了规格化处理,通过利用FPGA在线可编程的技术,设计出的浮点乘法器更加方便灵活,克服了专用乘法器的不足,更能广泛的应用到各个领域。

关键词:

IEEE754,单精度浮点数,乘法器,硬件描述语言,FPGA,Quartus

THEDESIGNANDIMPLEMENTATIONOFFLOATING-POINTUNITIPCOREBASEDONFPGA

ABSTRACT

 

Asthemostbasicoperationofdigitalsignalprocessing,floating-pointcalculationisequippedwiththecharacteristicofdynamicrange,itisnotonlythemainmeasureofmicroprocessorperformanceindexes,butalsoiswidelyusedincomplexmathematicalcalculation,scienceapplicationsandengineeringdesign.withthevigorousdevelopmentofmultimediatechnology,floatingpointarithmeticunithasbeenwidelyused,andithascomehome,beenusedtosolvecomplexproblems,suchasdigitalimageprocessing,theestablishmentofthemovingobjectmodel,3-danimationdesignanddemonstrate,etc.WiththematurityofFPGApresenceandEDAtechnology,ithasshowngreatpotentialtorealizedigitalsignalprocessingbythemethodofusingFPGA,itcancutshortthedevelopmentcyclebyusingtheFPGAtechnologydesignfloating-pointontime-multiplier.ThedesignisproposedbasedonVHDLlanguageoffloatingontime-multiplier,thehardwarerealizationmethodisdescribedwithVHDLlanguageschematicdesigndocumentsandAlteradesign,bythewaytheCycloneseriesproductsforhardwareplatform,withQuartusforsoftwaretoolsforsimulation,itrealizedanytwenty-threesingleprecisionfloating-pointmultiplicationwhichisintheIEEE754standard.Designoforderyardswasstudiedandspilltheprocessing,andtheresultsarethenormalizedprocessing,byusingtheon-lineprogrammableFPGAtechnology,designthefloating-pointgreaterflexibilityontime-multiplier,overcomethedeficiencyofspecialontime-multiplier,morecanwidelyusedinvariousfields.

KEYWORDS:

IEEE754,float,multiplierunit,VHDL,FPGA,Quartus

目 录

前 言

21世纪是信息化的时代,信息产业已经成为衡量一个国家经济科技实力的重要标志,集成电路则是信息技术与信息产业的基础,是电子信息产业的命脉。

自1971年Intel公司第一块4位处理器芯片面世以来,微处理器的性能遵照“摩尔定律”按照每18个月翻一番的速度不断提高。

而随着技术的发展,在国民经济生产的各个领域,越来越需要更高性能的处理器对大量的数据进行处理,且对数据计算精度和实时性要求更高。

目前,浮点乘法器不仅应用在许多数字信号处理器中,而且广泛地应用于通用微处理器中,浮点乘法的操作主要包括单、双精度的操作,与IEEE754标准兼容的浮点乘法操作还应包括对乘积的正确舍入、对阶码的必要调整,多数FPGA上可以实现整数和标准逻辑矢量的乘法,但不支持浮点乘法运算,因此使得FPGA在数值计算、数据分析和信号处理能力等方面受到了限制,所以对浮点数据的处理能力就被提上了日程。

随着半导体工艺技术的进步和浮点处理器设计技术的发展,浮点处理器经历了由数字协处理器,到集成在微处理器中的浮点处理器单元,到集成多个浮点处理单元等不同阶段。

我国微处理器和浮点处理器的研制水平还比较落后,规模和档次与国外相比差距较大,但经过这几年的努力,已经取得了不少可惜的研究成果。

16位DSP汉芯一号的问世,打破了国内没有自主知识产权的局面,使得我国的DSP芯片得到蓬勃的发展。

但是汉芯系列芯片,目前仍然只能处理定点数据,这在一定程度上限制了汉芯打入高端DSP市场的发展。

而且目前国外的著名芯片设计生产厂无一不推出了浮点DSP产品,如TI的6X系列等,在高端市场上有垄断性的地位。

所以研究浮点协处理器对将来推出汉芯系列浮点DSP芯片具有重要的意义。

现在一般的浮点处理器都是在采用定点DSP的条件下由软件实现浮点计算,但是这样的软件程序会占用大量处理器的时间,效率低下。

即使采用改进的方法(块浮点法,用软件或软硬件协同来实现),软件的执行效率仍不能与本课题所采用的硬件实现高,所以基于FPGA设计的浮点处理器具有速度快、效率高、性能好的优势。

本文将讨论浮点数按IEEE754标准表示的方法,并针对IEEE754单精度浮点数据格式进行浮点乘法器设计,即将任意输入的两个以IEEE754标准表示浮点数,遵循其乘法规则,采用VHDL和原理图的设计方法,利用Quartus软件进行在线编程调试,并下载到FPGA芯片中,验证输出结果的正确性。

本课题解决的主要问题有对阶码溢出的处理、结果的规格化处理以及合理利用实验箱的资源进行验证这三方面,最后画出其硬件电路图。

全文共分为4章,主要介绍了利用VHDL语言设计乘法器的步骤,本论文的结构为:

第1章为绪论,介绍了IEEE754标准及浮点乘法器的原理。

第2章主要介绍了EDA工具,包括VHDL的介绍以及Quartus等相应设计工具的使用方法。

第3章给出了系统整体框架设计和各模块的实现,详细介绍了每个模块的功能及运用Quartus软件工具进行波形仿真的结果。

第4章主要对设计顶层进行仿真以及对结果进行验证并画出其硬件电路图。

最后总结了全文的主要内容,并提出了今后研究的方向。

 

第1章绪论

 

§1.1引言

计算机中常用的数据一般来说,定点格式容许的数值范围有限,但要求的处理硬件比较简单。

而浮点格式容许的数值范围太大,但要求的处理硬件较为复杂。

所谓定点格式,即约定机器中所有的数据的小数点位置是固定不变的,通常将数据表示成纯小数或纯整数。

可是电子的质量(

克)和太阳的质量(

克)相差甚远,在定点计算机中无法直接来表示这个数值范围。

这便引入了浮点数表示法既把一个数的有效数字和数的范围在计算机的一个存储单元中分别予以表示,相当于数的小数点位置随比例因子的不同而在一定范围内可以自由浮动,浮点运算与定点运算相比,具有运算速度快,有效精度高,计数范围宽等特点,更适合运用在工程计算与科学计算中,它已成为计算机运算的重要方式。

§1.2浮点数的格式

§1.2.1一般浮点数表示方法

任意一个十进制数N可以写成

同样,在计算机中一个任意进制数N可以写成

其中M称为浮点数的尾数,是一个纯小数。

e是比例因子的指数,称为浮点数的指数,是一个整数。

比例因子的基数R=2对二进记数制的机器是一个常数。

在机器中表示一个浮点数时,一是要给出尾数,用定点小数形式表示。

尾数部分给出有效数字的位数,因而决定了浮点数的表示精度。

二是要给出指数,用整数形式表示,常称为阶码,阶码指明小数点在数据中的位置,因而决定了浮点数的表示范围。

浮点数也要有符号位。

早期计算机中,一个机器浮点数由阶码和尾数及其符号位组成,表示方法见图1-1。

图1-1早期浮点数表示方法

§1.2.2IEEE754标准表示的浮点数

为便于软件的移植,浮点数的表示格式应该有统一标准。

1985年IEEE(InstituteofElectricalandElectronicsEngineers)提出了IEEE754标准。

该标准规定基数为2,阶码E用移码表示,尾数M用原码表示,根据原码的规格化方法,最高数字位总是1,该标准将这个1缺省存储,使得尾数表示范围比实际存储的多一位。

其3种浮点格式见表1-1。

表1-1IEEE754三种浮点数格式参数

类型

存储位数

偏移值

数符(S)

阶码(E)

尾数(M)

总位数

十六进制

十进制

短实数(单精度)

1位

8位

23位

32位

0X7FH

+127

长实数(双精度)

1位

11位

52位

64位

0X3FFH

+1023

临时实数(不常用)

1位

15位

64位

80位

0X3FFFH

+16383

32位单精度浮点数标准格式见图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位,阶符采用隐含方式,即采用移码方法来表示正负指数。

移码方法对两个指数大小的比较和对阶操作都比较简单,因为阶码域值大者其指数值大,采用这种方式时,将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值127,即E=e+127。

§1.2.3浮点数的规格化

若不对浮点数的表示做出明确的规定,同一个浮点数的表示就不是惟一的。

例如(1.75)10可以表示成,

等多种形式。

为了提高数据的表示精度,当尾数的值不为0时,尾数域的最高有效位应为1,这称为浮点数的规格化表示,否则以修改阶码同时左右移小数点位置的办法,使其变成规格化数的形式。

在IEEE754标准中,一个规格化的32位浮点数x的真值表示成:

e=E-127

其中尾数域所表示的值是1.M。

因为规格化的浮点数的尾数域最左边(最高有效位)总是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特殊浮点数

单精度(32bit)

双精度(64bit)

符号位

指数

尾数

符号位

指数

尾数

正零

0

0

0

0

0

0

0

0

负零

1

0

0

-0

1

0

0

-0

正无穷大

0

255

0

0

2047

0

负无穷大

1

255

0

-∞

1

2047

0

-∞

§1.3浮点乘法器的原理

32位浮点数据格式已知:

其中乘法器运算操作分4步进行:

一、确定结果的符号,对A和B的符号位做异或操作。

 

二、计算阶码,两数相乘,结果的阶码是两数的阶码相加,由于A和B都是偏移码,因此需要从中减去偏移码值127,得到A和B的实际阶码,然后相加,得到的是结果的阶码,再把他加上127,变成偏移码。

 

三、尾数相乘,A和B的实际尾数分别为24位数,即1×Ma和1×Mb,最高位1是隐藏位,浮点数据格式只显示后23位,所以尾数相乘结果应为一个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.1EDA技术及其发展

EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。

EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

EDA技术的出现,极大地提高了电路设计的效率和可靠性,减轻了设计者的劳动强度。

20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。

在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。

这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。

这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。

§2.2EDA设计流程及其工具

§2.2.1设计流程

一个完整的EDA设计流程采用的是自顶向下的设计方法,图2-1是基于EDA软件的FPGA/CPLD开发流程框图。

其一般流程如图2-1所示。

图2-1应用于FPGA/CPLD的EDA开发流程

一、电路设计输入

1、图形输入:

原理图输入、状态图输入,波形图输入。

2、HDL文本输入。

二、综合。

综合是仅对HDL而言的,综合过程是把软件设计的HDL描述与硬件结构挂钩,是将软件软化为硬件电路的关键步骤,是文字描述与硬件实现的一座桥梁。

三、适配。

适配是将综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件。

四、时序仿真和功能仿真。

在编程下载前必须利用EDA工具对适配生成的结果进行模拟测试。

五、编程下载。

把适配后生成的下载或配置文件,通过编程器或编程电缆向FPGA或CPLD下载,以便进行硬件调试和验证。

六、硬件测试。

最后是将含有载入了设计的FPGA或CPLD的硬件系统进行统一测试,以便最终验证设计项目在目标系统上的实际工作情况。

§2.2.2HDL简介

硬件描述语言HDL是EDA技术的重要组成部分,常见的HDL主要VHDL、Verilog、HDL、ABEL、AHDL、SystemVerilog和SystemC。

其中VHDL、Verilog和现在的EDA设计中使用最多。

VHDL的英文全名是VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage),由IEEE(InstituteofElectricalandElectronicsEngineers)进一步发展,并在1987年作为“IEEE标准1076”公布。

从此VHDL成为硬件描述语言的业界标准之一。

VHDL技术与传统的数字电子系统或IC设计相比之下有很大的优势,主要表现在:

第一,VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务提高了设计效率和可靠性。

第二,VHDL语言具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的的能力,并在语言易读性和层次化,结构化设计方面,表现了强大的生命力和应用潜力。

§2.2.3Quartus

简介

Quartus

是Altera提供的FPGA/CPLD开发集成环境,Altera是世界上最大的可编程逻辑器件供应商之一。

Quartus

在21世纪初推出时,是Altera前一代FPGA/CPLD集成开发环境MAX+plus

的更新换代产品,其界面友好,使用便捷。

Altera的Quartus

提供了完整的多平台设计环境,能满足各种特定设计的需要,也是单芯片可编程系统(SOPC)设计的综合性环境和SOPC开发的基本设计工具。

此外,Quartus

与MATLAB和DSPBuilder结合,可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA工具。

第3章整体框架设计及功能模块介绍

 

§3.1设计思路

首先要根据该乘法器的原理确定本次设计的主要功能模块,本次设计主要实现了以下功能:

用实验箱的按键手动输入两个32位的单精度浮点数,并用数码管显示,然后实现这两个数的乘法,进行规格化处理,最终显示在数码管上,同时用两个指示灯来表示阶码的溢出。

该乘法器主要由预处理模块、相乘模块、计算阶码模块、计算尾数模块、计算阶码模块、溢出模块、显示模块组成。

其中预处理模块主要是实现对两个浮点数符号位、阶码、尾数的提取,以便为下面的乘法做准备;相乘模块主要实现尾数的相乘得出去其整数部分和小数部分,为计算尾数、规格化处理、以及阶码是否加1做准备;计算阶码模块主要是计算阶码;溢出模块主要对阶码是否溢出做出判断;显示模块主要实现了2个乘数和结果的切换显示。

§3.2预处理模块

由于实验箱的硬件有限,假若一次输入32位二进制数,则将没有多余的控制键,不利于设计的进行,所以在充分利用其硬件资源的情况下,采取一次输入4位二进制数,并对应一个数码管显示,进行16次的输入完成两个乘数的输入。

其模块端口如图3-1所示。

图3-1预处理模块

其中input[3..0]为一次输入的4位二进制数,ok为每次输入的确认键,rst是复位键,a[31..0]、b[31..0]是最终得到的两个单精度浮点数。

a_s、a_e[7..0]、a_m[22..0]和b_s、b_e[7..0]、b_m[22..0]分别为两个数的符号位、阶码、尾数。

时序仿真结果如图3-2所示。

图3-2预处理模块仿真波形

根据仿真波形可以看出经过16次的ok键确认后,把输入的input最终转化成了两个单精度浮点数a=(D5685462)16和b=(33642222)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.1IEEE754舍入模式

在浮点运算过程中一个很重要的步骤是舍入,舍入的目的是使得有效数据的位数保持在固定位数范围内。

一、就近舍入(偶数):

目标是使舍入结果尽可能接近实际值。

最大误差为±

LSB(LeastSignificantBit)。

二、零舍入RZ:

通过截断实际值的多余位来实现。

最大误差为土LSB。

三、+∞舍入:

结果向正无穷大方向舍入。

所有值被舍入到下一个可能值,负数的舍入结果将截去多余位,正数的舍入结果为下一个较大的有效值。

四、-∞舍入:

结果向负无穷大方向舍入,负数的舍入结果将为下一个较小的有效值。

下表给出了不同的舍入方法下的舍入结果,以8位值舍入为4位值为例。

表3-1不同舍入方法的舍入值

数值

就近舍入

零舍入

+∞舍入

-∞舍入

.01101001

.0111

.0110

.0111

.0110

-.01101001

-.0111

-.0110

-.0110

-.0111

.10000111

.1000

.1000

.1001

.1000

-10000111

-.1000

-.1000

-.1000

-.1001

.10000000

.1000

.1000

.1000

.1000

本次设计中对小数部分的舍入采取零舍入RZ模式。

§3.3.2定点乘法器原理

相乘模块主要实现尾数的相乘,是一个24位定点乘法器,送入定点乘法器的处理后尾数部分都是1.m,所以2个数相乘一定大于1小于4,将相乘的结果分为整数部分和小数部分,则输出结果小数点前的整数部分应有2bit,且只有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