




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西安电子科技大学硕士学位论文基于fpga浮点运算器的设计及其在雷达中的应用姓名:崔云娟中请学位级别:硕士专业:信号与信息处理指导教师:陈伯孝20070101摘要在很多髙精度计算场合需要采用浮点运算。过去用门电路进行各种运算通常 为定点运算,但其计算精度有限。随着现场可编程门阵(fpga)的迅速发展, 可以采用fpga实现浮点运算。本文首先介绍定点数和浮点数的格式,完成基于fpga的几种常用浮点运算 器的vhdl设计,包括浮点数与定点数之间的相互转换,浮点加法器、减法器、 乘法器以及除法器。在这些浮点运算单元电路中采用多级流水线技术,并在某些 方面优化算法,提高了运算器的性能。在此基础上讨论浮点
2、运算器的应用,通 过调用自主开发的浮点乘、加模块设计浮点fir滤波器,并将其应用于正交中频 采样,结果表明浮点运算的正交中频采样可以得到更高的镜频抑制比。最后应用 浮点运算模块设计浮点fft处理器,在fpga中实现高精度的fft处理。关键词:fpga 浮点数 vhdl fir滤波器 中频正交采样 fftabstractfloating-point (fp) arithmetic is usually used in many high accuracy calculation fields in the past, fixing-point operation is usually used
3、in gate circuits whose calculation precision is limited with the rapid development of fpga, it is possible to do fp operation in fpga.this paper introduces the format of floating-point (fp) and fixing-point data at the beginning. accomplish the vhdl design of floating-point(fp) arithmetic units in c
4、ommon use based on fpga, including the conversion between fp data and fixingpoint data. fp addition, subtraction, multiplication and division. all of them are pipeline architectures and specified in vhdl, are fully synthesizable with performance comparable to other available high speed implementatio
5、ns. special emphasis is put on the application of fp data in radar. as an example, the fp operation modules are used in quadrature sampling of intermediate frequency (if) signal, to show that a much higher performance can be obtained. at last the fp operation modules are used to design fp ffr proces
6、sor, achieve high precision of fft processing on fpga.key words: fpga floating-point(fp) vhdl fir filter quadrature sampling fft西安电子科技大学学位论文独创性(或创新性)声明秉承学校严谨的学风和优良的科学道德,本人声明所呈交的论文是我个人在导 师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注 和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成果; 也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的材 料。与我一同
7、工作的同志对本研究所做的任何贡献均己在论文中做了明确的说明 并表示了谢意。申请学位论文与资料若有不实之处,本人承担一切的法律责任。本人签名:卷n妁fi期2。°7丿20西安电子科技大学关于论文使用授权的说明本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。学校有权保 留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内 容,可以允许采用影印、缩印或其它复制手段保存论文。同时本人保证,毕业后 结合学位论文硏究课题再撰写的文章一律署名单位为西安电子科技大学。(保密的论文在解密后遵守此规定)本人签
8、名:程人请fi期7叫/ 20导师签名:丫耶磷日期®宀第一章绪论1.1论文选题的背景及意义在现代雷达、通讯、图象处理等领域中,数字信号系统经常需要高精度的计 算。在某些应用场合定点数己经不能满足计算精度的要求,因此需要将定点运算 转化为浮点运算。使用有符号数值表达方式时,如果遇到超过32位的大范围 数,表示时必须放弃低位,这时为了提髙精度可以选择用浮点数来表示。浮点数 的主要特点是存储范围大,因此用浮点数来表示数或进行运算可以得到比较精确 的结果。fpga (现场可编程门阵列)技术及其硬件描述语言(vhdl) 1,1121 jf.得到越 來越广泛的应用。fpga是一种半定制集成电路,具
9、有面向数字信号处理算法的 物理结构。fpga芯片在每次加电时从外部读入构造数据。因此具有以下优点:无限可重复编程,且编程速度快(毫秒级);不需要专用的或价格高的编程设备,用户只需对装载构造数据的prom 或eprom编程,不需要对fpga本身进行编程;在系统加电运行时完成重构,需要时可让芯片重新编程,读入另一种设计 的构造数拯,完成系统在线重构;设计修改方便,可在不改变印制板连线关系的情况下,对设计作较大的改 动,产品换代升级方便,尤其适合于新产品开发。fpga逻辑设计与综合的软件已经发展得相当完善,用户甚至可以不用详细 了解fpga的内部结构,也能用自己熟悉的方法來完成fpga的设计。用fp
10、ga实现浮点运算具有硬件系统简单、功耗低以及开发时间较短、成本 较低等优点。绝大多数的商用浮点运算库只提供一小部分具有固定位宽和运算速 度的浮点模块,而在实际的工程运用中通常需要改良设计以满足实际需要。本 文设计的浮点运算器灵活的采用流水线结构,在一定范围内可调整流水线的深度 以满足实际运算速度的需要,并在某些方面优化算法较一般的浮点运算器也能达 到更高的性能。1.2 fpga与数字信号处理1. 2. 1实现数字信号处理的两种主要手段:实现数字信号处理主要有两种形式:一种是使用单片机或数字信号处理器 (dsp),通过软件编程来实现;另一种是应用专用集成电路芯片或可编程大规模 集成电路来实现。第
11、一种利用软件编程來实现,虽然有很大的灵活性,但受dsp 本身性能及程序指令顺序执行的限制,难以实现高速、大规模运算;而专用集成 fr路芯片或可编程大规模集成电路却可以实现很高的运算速度,非常适合高速信 号处理系统的应用。1.2.2实现数字信号处理的两种手段的比较传统dsp技术主要是指以dsp处理器为核心或作为主要处理单元的dsp应 用系统及其开发技术。现代dsp技术主要指的是第二种形式中的可编程大规模集 成电路实现(即使用fpga技术)。但到目前为止,这两种技术还没有较好地相互 替代(或相互包含、相互覆盖),也没有很好地相互融合。严格地说,现代dsp技术不可能融入传统dsp技术,但反过来却可以
12、归属 于传统技术范畴,因为其自底向上的设计流程没有改变。现代dsp技术与传统dsp技术的不同之处主要表现在以下几个方面叫1)系统工作速度不同与fpga相比,dsp处理器最大的劣势之一是处理速度比较慢。尽管在硬件 结构上作了大量的改进,如增加硬件乘法累加模块和加入各种专用的加速协处理 器等,但其速度瓶颈来自于基于cpu的指令顺序执行的基本工作模式,以及通 常使用的多片dsp组合电路和过多的外部接口电路(fpga通常可以实现单片系 统)导致的信号通道过长、过复杂。用dsp处理器和fpga完成同一算法(即8位224阶f1r滤波器)如表1.1。表1. 1 fpga与dsp处理器运算速度的比较功能实现资
13、源需求tms320c5402tms320c6414ep1s】2o(fpga)阶数224224224乘法累加器数18(最人)224 (28个dsp模块)内部时钟速度100mhz600mhz250mhz算出结果的时钟周期数224281每秒乘加运算次数ojgmacs4.8gmacs56gmacs从表1.1可以看岀,tms320c6414和tms32oc5402中分别有8和1个 mac模块,而ep1s120中有28个dsp模块,并且fpga中数以力计的逻辑宏 单元可随意组合成各种类型的硬件电路功能模块。由表1.1可见,ep1s120型的fpga的乘加速度最快,每秒为56千兆个乘加 (mac)操作,是
14、tms320c6414 的 12 倍,tms320c5402 的 560 倍。而这时 fpga中采用的内部时钟速度还不到tms320c6414的1/2。此外还应看到tms320c6414与epis120的单片售价相当,但在实用dsp系 统中,单片c6x几乎无法完成实际的运算任务,而fpga却常能构成单片系 统。2) 系统结构可重构性不同虽然加载不同的软件程序能够改变dsp处理器的功能,但这种相对于asic 系统来说十分灵活的功能并没有什么实用价值。因为仅仅通过对dsp处理器加载 不同的程序代码,并不能有效地改变dsp系统的诸如吞吐量、数据总线宽度、 dsp加速模块的数量与功能、调制模式(如am
15、, fm, tsb, fsk, psk, msk, qam等)、实时加密算法、处理频段带宽、通信协议、动态范围等技术参数和技 术方案。因为这一切必须完全改变硬件结构、硬件功能和硬件组成才能实现。也 就是说除非dsp系统具有硬件可重构性,即结构有可重配置性才能实现上述变 化。由于不同的配置文件下载于fpga后,将能获得不同的硬件结构和硬件功 能,因此基于fpga的dsp系统具有良好的系统结构可重配置特性。3) 系统知识产权自主性不同由于基于fpga的dsp系统主要是纯硬件系统设计,可选的硬件实现方式很 多,因此系统具有较好的自主知识产权属性。基于dsp处理器的系统则没有这种 属性。4) 开发技术
16、标准化、规范化与技术兼容性不同为了适应不同dsp应用系统的技术指标要求和适用领域,必须推岀不同系列 和具有不同功能特点的dsp处理器,而不同的dsp处理器其硬件结构通常都有 较大的差别,因此对应不同的汇编语言,需要不同的软硬件开发工具和仿真器。 此外,由于相应的c程序的运行效率比较低,实时要求较高的系统仍然需要利用 汇编语言进行开发,因此调试成熟的软件模块难以移植和再利用。在这里,硬件 结构与计算机语言的密切相关性、仿真测试与硬件系统的密切相关性,以及系统 性能与dsp处理器选择的密切相关性,注定了无论是设计流程、仿真开发王具还 是开发语言都不可能得到标准化、规范化,从而极大地降低了 dsp开
17、发技术的学 习效率、开发效率、实现效率及升级更新效率。传统dsp技术难以标准化的另一重要原因是该技术的实现流程过于单向化, 技术兼容性不好,很难与其它开发技术融为一体。如单片机开发技术、嵌入式系 统开发技术、可配胃模拟系统开发技术、大规模可编程逻辑系统开发技术等。开 发技术标准化和规范化是现代dsp技术的优势之一。自顶向下的设计流程为dsp 开发技术的标准化奠定了基础;标准化的硬件描述语言和大量支持这一语言的综 合器与仿真器构成了这一技术的核心;功能强大、适用面广的dsp开发集成环境 将多种开发目标兼收并蓄;大规模的可重配置器件fpga/cpld及相关的软硬ip 核确保了 dsp硬件系统离效高
18、质的实现。5) 掌握开发技术的难易程度不同掌握传统dsp技术的困难主要来自以下几个方面:(1) 不同的开发目标需要选择不同的dsp处理器,详细了解dsp器件的结构 对正确地设计dsp硬件系统至关重要,特别当需要多片dsp连用时更是如此。 对器件硬件结构的熟悉和关注能力需要相当的硬件开发经验,这显然增加了学习 难度。(2) 不同的dsp处理器结构将对应不同的汇编语言,以及不同的编程方法和 编程技巧。语言与结构的密切相关性在明显增加学习难度的同时,缩短了新的计 算机语言的可用性周期,即学会的软硬件知识容易过时。(3) 不同的dsp处理器结构、不同的汇编语言及其对应的不同的dsp系统结 构,都将对应
19、不同的仿真开发工具以及编译软件。(4) 由于必须直接使用计算机语言來描述和实现复杂的算法,且描述的方法与 dsp结构相关,因而设计过程缺乏直观性和一般性。(5) 由于系统的低速性,为了了解和实现典型的dsp功能,需将大量的精力 花在本应由计算机就能实现的软硬件结构技巧上。现代dsp技术(fpga)是完 全基于电子设计自动化技术的,系统级开发工具是目前各学科领域普遍使用的 r/atlab, 一切设计操作都可以在同一环境中完成,整个设计流程中儿乎可以不 必了解1pga的结构和vhdl硬件描述语言,从而最大程度地发挥了计算机自动 化设计的优势。设计者所有的任务都集中在系统行为和功能的描述,以及系统性
20、 能的优化上。6) 系统成本、功耗、集成度与可靠性不同111于cpu的灵活性,对于低速、低吞吐量和大量复杂运算的情况,dsp处 淮器方案的系统成本要比fpga系统低得多,而且此方案貝有不可替代性。然 而,以上的情况在实用系统中是比较少的。大多数情况中不但需要尽可能高速、 高性能的dsp处理器,而且多片dsp连用的情况也十分普遍。在这种多片dsp 系统中,每一片dsp处理器都必须配置完整的辅助器件才能正常工作,其中包括 诸如数据ram、程序ram和rom、fifo、双口 ram、fpga/cpld辅助接口 盎件等等。这种系统的成本将成倍提高,而且功耗、集成度与可靠性等性能指标 也都有不同程度地下
21、降。但是如果使用fpga来构成dsp系统,在dsp处理器 系统中存在的许多问题将迎刃而解。基于fpga的dsp系统的优势主要源于可以 形成单片系统。目前拥有大规模逻辑资源的fpga完全能容纳本来必须由多片 dsp处理器构成的系统,从而使得单片dsp系统在各项技术指标大幅度提髙的前 提下,成本和功耗大幅度下降,集成度与可靠性则大幅度提高。1.2.3总结总之,上述两种方法各有优缺点,应根据实际需要决定采用哪种方法,或者 将两者结合起來使用。在实现fft运算或其逆变换ifft运算时,尤其是在对实时性要求很高的情 况下,几乎所有的通用dsp都难以实现这一要求。可编程逻辑器件允许设计人员 利用并行处理技
22、术实现髙速信号处理算法,并且只需单个器件就能实现所期望的 性能。当通用的dsp无法达到速度要求时,唯一的选择是增加处理器的数目,或 采用定制门阵列产品。现在,随着微电子技术的发展,采用现场可编程门阵列 (fpga)进行数字信号处理发展迅速,而且还可以内嵌dsp模块。釆用现场可编 程器件不仅加速了产品上市时间,还可满足现在和下一代便携式设计所需要的成 本、性能、尺寸等方面的要求,并提供系统级支持。本文也正是基于fpga芯 片,设计浮点运算器,并将其运用于雷达系统。13研究内容及本文组成本文基于fpga,用vhdl语言设计浮点运算器,并讨论其应用。主要做了 以下几个方面的工作:(1) 介绍定点数和
23、ieee单精度浮点数格式,讨论定点数转化为浮点数、浮 点数转化为定点数的fpga设计方法及其vhdl语言实现;(2) 介绍浮点数乘法器、加法/减法器以及除法器的基本运算步骤,以及用 vhdl语言实现的具体流程,并讨论如何在fpga中实现浮点运算的最优设计;(3) 将自行设计的浮点运算器应用于数字信号处理中常用的fir滤波器、 中频正交釆样、fft,讨论如何变定点运算为浮点,得到高精度的处理结果。第二章 定点数、浮点数格式及其相互转化在进行浮点运算之前,首先要将a/d变换等釆样后的定点数转化为浮点数; 处理结果通常要将浮点数转化为定点数。本章重点介绍定点数和ieee单精度浮点 数格式,讨论定点数
24、转化为浮点数、浮点数转化为定点数的fpga设计方法及其 vhdl语言实现。2.1定点数的格式定点法是小数点在数中的位置固定不变。以定点法表示的实数称作定点数。 通常,定点数有两种表示方法:方法一:规定小数点固定在最高数值位之前,表示的所有数都是小数。n位数 值部分所能表示的数n的范围为(原码表示)l-2-n>y>-(l-2"n)(2-1)它能表示的数的最大绝对值为1-2-最小绝对值为2-方法二:规定小数点固定在最低数值位之后,表示的所有数都是整数。n位数 值部分所能表示的数n的范围为-qnn-(2-”-1)(2-2)它能表示的数的最大绝对值为2n-l,最小绝对值为lo本文
25、用的定点数为十二位有符号定点数,表示如下:dll d10do符号数值位此定点数所表示的整数范围是一2047+ 2047,表示数的范围较小,在运算 过程中容易产生溢出。2.1. 1补码的表示在计算机中定点数都是以补码的形式來表示的。二进制的补码就是用机器数 的最高1位表示符号,以下的各位以给出数值按2取模的结果來表示。其具体定 义为:设以二进制补码表示数以一2卒),那么根据x-的不同值可以得到:当和=0时,表示x是正数,即x = (0xk_2xxq)9它所表示的数值为:*-2x = °2(2-3)(2) 当仏=1,表示x是负数,即x = (ixk_2-xx0),它所表示的数值为:x =
26、 42(*',)-(x,_2.-xix0)29 x“2(5 + (*2)/-0x=-(d2)+i综上所述,可以得出采用二进制补码运算的几个特点:(1) 在采用补码表示的二进制数中,机器数的最高一位是符号位,0表示正数, 1表示负数。(2-4)(2-5)(2-6)+0complement=-01complement=0(2-7)(2) 在釆用补码表示的二进制数中,0具有唯一的编码,即:釆用补码表示后,进行加法运算时,可以将符号位与数值位等同处理。但是, 要特别注意的是,得到的结果不能超过计算机系统所能表达的数值范围,否则可 能会产生“溢出”的异常。2.2浮点数的格式目前通用的浮点数字信号
27、处理器(dsp)大多采用ieee的32位单精度、40 位扩展精度浮点格式。浮点数即小数点的位置是可以变化的,用阶码表征小数点 的位置。ieee 754单精度浮点数的格式如图2.2所示,包括符号位、阶码位和尾 数,共32位。其中:符号(s)占1位;阶码(e)占8位,视作无符号数(心255)。 e有127的偏移,因此小数点实际移动位数等于e-127;尾数(q为23位,对应 定点数的数值部分,但是隐藏了其最高位1,且小数点在阶码(e)的右边, 表示的定点数为1齐d31d30d23d22do符号(s)阶码)尾数s小数点图2.2 ieee单精度浮点数格式按照ieee单精度浮点数格式标准:浮点数的数值=(
28、-l)a5xip<2a(e-127)o在 单精度浮点格式中ieee还提供了几种特殊的数据形式,如表2.1。表2.1 ieee单精度浮点数据类型阶码)尾数(/)含义nan255非零数据溢出、未经初始化的变童值或无效运算结果无穷大2550正无穷或负无穷正常l<e<254任意m)xl./x2(e-127)零00040位扩展精度与32位单精度浮点数格式大致相同,只是尾数(p多了 8位, 为31位。双精度浮点数格式(也称为长实数格式)为64位。符号位1位,尾数域52 位,及指数域11位。同短实数格式一样,尾数经过规格化并对数字的整数部分使 用隐含位。这样,长实数格式便有53位有效二进制
29、数字。本文主要针对ieee754 单精度浮点格式进行浮点运算器的设计。应特别注意:浮点数的尾数存着定点数的数值部分,但是隐藏了其最高位1。 例如:整数2对应定点数000000000010b,对应的浮点数为40000000h。2. 3.1定点数转化为浮点数的基本方法对照定点数以及浮点数的格式可以看出,把定点数转化为浮点数就是将定点 数的符号、小数点位置、数值大小的信息对应存入浮点数的符号位、阶码、尾数。在转化过程中移动定点数的小数点使其只有一位整数(即变为1./的形式), 再将定点数的符号位、小数点移动位数+127和移动后定点数的小数部分(q分别 存入浮点数的符号位、阶码和尾数。下面以12位定点
30、数为例,如果是其它位数的定点数,转化方法类似。具体转 化步骤如下:符号位不变,即 a31 (float) =a 11 (fix)阶码=小数点移动位数+ 7fh (移动二进制数的小数点使其只有一位整数) 尾数=移动后二进制数的小数部分例如:将定点数1111 1111 1010(-6)转化为浮点数该数对应的原码为:1000 0000 0110,符号位不变,a(31)=l;数值为110, “小数点”左移两位变为1.10,所以阶码为:e =a30a23 = 2+127 = 10000001 ;将小数点后的部分存入y的高位,所以a22aomoooooh;因此,一6对应 的浮点数为cocoooooho具体
31、流程图如下:a(ll)a(10)a(0)图2.3定点数转化为浮点数实例2. 3.2流程图及程序说明由定点数转化为浮点数的实例可以得出在利用vhdl语言编程时,关键是从 高位a(10)开始逐一往下找1,当找到第一个1时,将其后部分存入的高位, 阶码作相应的调整。具体流程是对输入的12位定点数a,先判断是否为零,若为则输出y=0。否 则对a作进一步的处理。第一步:将a的补码转化为原码;第二步:将a的符号 位存入y的符号位;第三步:从高位a(10)开始逐一往下找1,当找到第一个1时, 将其后部分存入v的高位,阶码作相应的调整。流程图如下:图2.4定点数转化为浮点数流程图2. 3.3生成模块将12位定
32、点数转化为浮点数,在quartusii环境下生成的模块如下: 输入:时钟,12位定点数a11.o输出:ieee的32位浮点数y31.otlmf巴; i floatt * clk?匸三5彗护r iclmr*iypi x) me叶ypi:;o1刚i5>。17?'l 的)戦丫 j : ! inrt9i*图2. 5定点数转浮点数模块可将此模块调用于各个应用场合,方便的变定点运算为浮点运算。2. 3.4仿真波形及结果对照表对此模块进行时序仿真,按时钟输入定点数,经过一段时间的延迟后输出对 应浮点数,最高时钟频率能达到1 oomhzo并且可以根拯实际工程需要灵活变换 定点数的位宽。(1) 在
33、具体仿真时,定点数a按时钟输入:1、1、2040、3、2040、3、 6、2044、1、6(十进制),经过定点转浮点模块后输出对应浮点数y: bf800000 、 3f800000 、 44ff0000 、 c0400000 、 44ff0000 、 44ff8000 、dk® y10.0 ns»20.0 m130 0 ns40.0 as50.0 ns60 0 m j 10.0 as z±zi 2040n_rn_rr -3 y 2040lj*n_jt2rly 2044 y -3 y -6 丫 2d44 y 1屹mj2-alak v收 bmiao人 cvv,hama
34、 £vt,人厶人d_a*丁3祕侦 *44fftts*c0401xo* 44fk0x) :(?4顽 ®cmucoooy cococttlo c0400000、c0c00000(均为十六进制)如下图所示:tme jhr: 10.0 ds :川pointer: 736.7 minternl: j25.7 m sttrt:fed:-图2. 6时序仿真波形图(2) 输入定点数a的十进制、十六进制原码及补码,输出浮点数y的十六进 制对照表如下:表2. 2仿真结果对照表定点数a十进制-1-62040-32044原码(h)8018067f88037fc补码(h)fffff27f8ffd7f
35、c浮点数y十六进制bf800000cocooooo44ff0000c040000044ff80002.4浮点数转化为定点数久4. 1转化方法浮点运算结束后,通常要将数据定点化以方便后续处理,下面将讨论如何将 浮点数转化为所需位长的定点数:由浮点数以及定点数的格式可以看岀,定点数占用的位数是由浮点数的阶码 來确定的,而定点数的数值则由浮点数的尾数确定,所以转换过程大概可以分为 三个步骤;(1)算出二进制定点数的有效位数:count=ae-127+1(2)根® count将街存入y,并在y的高位补1和0(3)原码转化为补码,输岀。2. 4.2流程图浮点数转化为定点数与定点数转化为浮点数相
36、反,用vhdl语言具体实现其 转化时:先算出浮点数转化为定点数之后所占用的位数,即counted26;再根据 onim的值将/存入定点数的低位,并在其的髙位补出隐藏的1,即为浮点数所对 应的定点数了。用vhdl语言实现的关键是:根据浮点数的阶码算出定点数要占 用位数,并在定点数的高位补出隐藏的1。图2. 7浮点数转化为定点数流程图2. 4.3仿真波形在quartusli环境下对生成的浮点转定点模块进行时序仿真,按时钟输入浮点 数,经过一段时间的延迟后输岀对应浮点数,类似定点转浮点模块,最高时钟频 率能达到loomhzo并且可以根据实际工程需要确定输出定点数的位宽。按时钟输入数a为32位的iee
37、e浮点格式:bf8oooo、44ff0000、c0400000、 44ff8000、c0c00000. cooooooo、44ffc000、41000000. 3f8ooooo(十六进制) 经过仿真后输出十二位的定点数为:-k 2040、-3、2044、6、2、2046、8、1(十 进制)。图2.8时序仿真波形图2.5本章小结本章重点讨论定点数、浮点数的格式以及如何用vhdl语言来实现它们之间的 相互转化。定点数的位宽固定,小数点位置固定,所表示数的范围较小,在运算 过程中容易产生溢出。而浮点数由符号位、阶码、尾数构成,由阶码给出实际小 数点的位置,规格化后的尾数表示1到2之间的实数。所表示数
38、的动态范围比较大, 适合对数掘精度要求较髙的处理场合。以12位定点数及单精度浮点数为例,讨论 如何用vhdl语言实现其相互转化。第三章浮点运算电路的设计将定点数转化为浮点数后就可以在fpga中实现浮点运算。下面介绍用 vhdl语言编写浮点数乘法器、加法/减法器以及除法器的基本操作步骤。其中输 入的两浮点数用a、b表示,运算结果用y表示,阶码用e,尾数用/表示。3. 1浮点数乘法器3.1.1浮点数乘法的基本方法由浮点数的格式可以看出两浮点数相乘,步骤比较简单,直接把符号位异 或、阶码相加、尾数相乘,最后把结果规格化输岀即可。具体转化步骤如下:(1) 检测a或b是否为0,若为,则结果置0,运算结束
39、。(2) 符号位:y(31)=a(31)xor(b(31)o(3) 尾数运算:街、b/高位移入1。注:两个相同位数的二进制数相乘其结果的位数为乘数的两倍或两倍减lo 因为定点数转化为浮点数时省略髙位1,并将其后部分存入浮点数尾数的高位。 所以在进行乘法运算时先在尾数高位移入1,再将23位尾数相乘。用vhdl语 言可以表示为:c(48 downto l)v=(t&ax22 downto 0)*(t&b/(22 downto 0);(4) 阶码相加:若c(48)=0,则尾数相乘无进位e=y(30 downto 23)<=a(30 downto 23)“0111111 l”+b
40、(30 downto 23); 若c(48)=l,则尾数相乘有进位e-y(30 downto 23)<=a(30 downto 23)”01111110”+b(30 downto 23); 注:阶码=小数点移动位数+ 7fh (移动二进制数的小数点使其只有一位整数)(5) 归一化:即是将上面的运算结果规范为单精度浮点数格式输岀。具体 操作时,将c(48 downto 1)的最高位1省略,把其后部分存入y/的高位。即:若 c(48)=0,则.戶y(22 downto 0)<=c(46 downto 24);若 c(48)=l,则.戶y(22 downto 0)<=c(47 do
41、wnto 25);下面将给岀一个两浮点数相乘的例子:例如 a-40400000, b=c2cc0000, y=c3990000, y=a*baby=a*b单精度浮点(h)40400000c2cc0000c3990000定点数(d)3102306第一步:在a/, b/的高位移入1第二步:则ap b/的长度变成了 24位,即从0到23,所以c(48 downto l)=(t&a/22 downto 0)*(,r&b/22 downto 0) =10011001 00000第三步:因为 c(48)=l,所以 y(3023)= 10000000-1111111+10000101 = 1
42、0000110,最后将 c(47 downto 25)存入 y(22 downto 0)。-具体运算流程如下:a:a。,y=c3990000h图3. 1浮点数乘法运算实例3. 1.2流程图根拒两浮点数相乘的步骤,用vhdl语言编写程序。先判断输入a或者b 是否为零,若为则输岀y=0o否则继续运算,第一步先处理符号位 y(31)-a(31)xor b(31);第二步:a和b的尾数高位移入1;第三步:运算c(48 downto opa® 第四步:根据c(48)为0或1,将c的高位做归一化处理,存入y尾数的高位,并对阶码做相应的调整。具体流程如下图所示:图3. 2浮点乘法器流程图3.1.
43、3生成模块在quartusii环境下生成了 32位浮点数乘法器的模块如下:输入:clk、ieee 单精度浮点数 a31.0、b31.o输出:ieee单精度浮点数y31.oa()b(3l.o图33浮点乘法模块3.1.4仿真波形及结果对照表按时钟clk(最高时钟频率可以达到50mhz),输入两浮点数a、ba: 3f8ooooo、40000000、3f800000.4040000040a00000、bf800000、40400000b: 3f800000. bf800000.44ff0000.40400000> c0000000.44ffe000、coaooooo经过仿真输出结果为浮点数y=a
44、*by: 3f800000 > c0000000、44ffoooo >41100000、c1200000、c4ffe000、c170000090.0 m;fi图3. 4时序仿真波形输入数a, b的定点十进制、浮点十六进制以及对应相乘结果y的定点十进 制、浮点十六进制的对照表如下:表3. 1仿真结果对照表a定点(d)12351a浮点(h)3f800000400000003f8000004040000040aooooobf800000b定点(d)1120403-22047b浮点(h)3f8ooooobf80000044ffoooo40400000cooooooo44ffe000y=a*
45、b定点(d)1-220409-10-2047浮点(h)3f800000cooooooo44ffoooo41100000cl200000c4ffe0003. 2浮点数加法器3. 2. 1浮点数加法的基本思路浮点加法器的运算比较复杂,是浮点运算的基础和处理器的核心部件。因此 加法器的运算速度制约着浮点处理器的运算速度,其设计优化是提高浮点运算速 度和精度的关键途径。浮点加法器的设计经过多年的发展,在算法的改进上取得 了大量的成果,其中最主要的是twopath算法。此算法的目的就是使各个操作 步骤尽可能的并行化,以减少算法的总延时。这些改进一般都需要附加硬件,改 进是基于浮点加/减计算的某些特性。基
46、于这种算法的加法器已经在一些商用机上 设计实现。浮点数加法在运算过程中大概可以分为以下几个步骤:(1) 对阶一对阶操作就是使两个数据的阶码相等,这样才能进行尾数的加减 运算。在对阶操作时,使小阶向大阶对齐,即小阶尾数右移才不会导致溢出。其具体实现方法为:比较2、be的大小(假设ae>be),得阶差a£,将b/ 右移位,即b/高位移入ae个oo(2) 运算原码带符号位加法的规则为:若a和b同号,则符号位不变, y/=vb/o若a和b异号,符号位由绝对值大者决定(假设反之亦然。(3) 归一化将定点数存入浮点数尾数过程中,省略了定点数最高位的1, 因此在运算过程中首先还原1 (即在尾
47、数高位移入1)。运算完毕,其结果要归一 化为ieee的浮点格式。具体做法,找出运算结果的最高位1,将其后部分存入勺髙位,阶码作相应 的调整。';下面给出两浮点数相加的例子:例如 a=cooooooo, b=42f40000, y=a+b=42f00000。结合图 3.5 的运算过程 作以下分析:a(22)a(0)b(22)b(0)图35浮点加法器实例a(31)=l, b(31)=0,a(30 downto 23)=10000000, b(30 downto 23)=10000101第一步:釦,色的高位移入1即:a(23 downto 0)=1000-00, b(23 downto 0)
48、=111010-000第二步:算出阶差。beae=101b=5,在小阶釦的高位移入5个0,即:a(23 downto 0)=000001000第三步:运算。a为负数,b为正数,且釦,所以 y/24 downto 0)=a/=0111100-0 0第四步:符号位由b决定,y(31)=1,因为yx23)=0,所以y(30 downto 23)=10000101将y/(23)后的数存入y尾数的高位y(22 downto 0)=11100-000由浮点加法运算过程可以看出,浮点数加法的操作步骤比较复杂,在实际设 计过程中为了提高运算速度,通常采用流水线结构。下面将对流水线结构作简要 介绍。.3. 2.
49、2流水线结构设计简介何3流水线处理是高速设计中的一个常用设计手段。如果某个设计的处理流程分 为若干步骤,而且整个数据处理是“单流向”的,即没有反馈或者迭代运算,前 一个步骤的输出是下一个步骤的输入则可以考虑采用流水线设计方法提髙系统的工作频率问。流水线设计的结构示意图如图3.6所示:? step 2stepn s图3.6流水线设计结构示意图图3.7流水线设计时序示意图其基本结构为:将适当划分的单个操作步骤单流向串联起来。流水线操作的特点和要求是,从时间上看数据流在各个步骤的处理是连续的。如果将每个操作步骤简化假设为通过一个d触发器(就是用寄存器打一个节拍),那么流水线操作就类似一个移位寄存器组
50、,数据流依次流经d触发器,完成每个步骤的操作。流水线时序设计如图3.7所示。流水线设计的关键在于,整个设计时序的合理安排。要求每个操作步骤的划 分合理。如果前级操作时间恰好等于后级操作时间,设计最为简单,前级的输出 直接汇入后级的输入即可。如果前级操作时间大于后级的操作时间,则需要对前 级的输出数据适为缓存,才能汇入后级的输入端。如果前级操作时间恰好小于后 级的操作时间,则必须通过复制逻辑,将数据流分流,或者在前级对数据采用存 储、后处理方式,否则会造成后级数拯溢出。由于流水线的处理方式相当于复制了处理模块,所以通过这种方式设计的芯 片频率较高,现如今,在fpga的设计中使用相当普遍。为了达到
51、较高的运算速 度,本文所设计的浮点运算器均可釆用流水线结构。并且可以根据实际的工程需 要,灵活改变流水线的级数,达到最佳的速度/面积比。下面以浮点数加法器为例 说明如何在具体设计中采用流水线结构提高工作频率。3.2.3浮点加法流程图及程序说明本文用vhdl语言设计的浮点数加法器也是基于two-path算法,并做岀了 一些改进。先比较两操作数绝对值的大小,如有需要则交换操作数使其总是绝对 值大的减小的。根据运算的特点采用4级流水线结构如图3.8。$丿 $2e, e2fif2图3.8浮点加法器流程图step 1:比较两浮点数绝对值的大小,如果|a|<|b|,那么交换a、b的位置。 在计算前使
52、得对于任何输入操作数,a总是对应绝对值大者。绝对值的比较是通 过比较阶码和尾数来完成的。然后在尾数高位补岀隐藏的1(a/vr&釦, r/<=1&b/)以便于一步操作。step 2:对阶,当小数点移动的位数相同时才能进彳亍浮点数加/减运算,即让 两浮点数的阶码相等。操作时让小阶向大阶对齐,将小阶的尾数右移才不会导致 溢岀。具体实现方法为:aebe得阶差ae,再将b/右移山位。step 3:数值计算,根据符号位,将浮点尾数相加或者相减。如果符号位相 同,则y/=a/i-b/;若符号位相反,则y/=ab/ostep4:规格化,整理运算结果,变成为ieee单精度浮点格式后输岀。具
53、体 实现方法就是找出运算结果的最高位1,将其后部分存入y/的高位,阶码作相应 的调整。3. 2. 4生成模块在quartus ii环境下生成32位浮点数加法器模块如下:y-ahb输入:clk、浮点数 a31.o、b31.o图3. 9浮点加法模块亦可将此浮点加法模块方便调用于各个应用场合,实现浮点运算。34. 5仿真波形及结果对照表将此浮点加法模块在quartusii坏境下进行时序仿真。对于四级流水线结构, 最高时钟频率能达到30mhz。若想提高运算速度,则可通过增加流水线级数來实 现,但这样做会相应增加所使用逻辑单元的数目。所以在实际运用中,我们可灵 活的根据需要选择流水线的级数,來达到最佳的
54、速度/面积比。按时钟clk输入浮点数a、ba; 45924000、3f800000、00000000> 40c00000、00000000、40c00000;b: 478fee00、00000000、44ffa000、c0c00000、c0c00000. 40800000;经过一段时间延迟,输出浮点数y=a+by; 47991200、3f800000、44ffa000、00000000. c0c00000、41200000;由图3. 10可以看岀,使用了两个时钟clk (30ns)和clk1 (7ns)。前者 为外部送数时钟,每个时钟输入两个加数,经过一段时间的延迟后输出一个持续 30n
55、s的运算结果;后者为内部运算时钟,比较两数绝对值的大小、对阶、数值 计算以及对结果的归一化操作都用的是clk1,这样可以大大提高运算速度。)09 am i2d.0 xa 1».o m 200./) mm 280 0 ns 320 0 as 380 0 m 400 p »他 9 ri 480.(5 0dkr 1 r l_r ) rn lnr!_r<lk!wumnwuirinjuuirmimjmuuuuuwuuuuuuuuuumwwuwuuwjuuws ai ocowcoo 7x 378x0® :oqxooq x iocoowo x coxcoco x3 b(u
56、ftamo xocjttooysfi滅to& yl|ocomxoxi yrsoaxi 厂cokdis j cxaiuj |cixoxe图3.10时序仿真波形输入加数al, a2的定点十进制、浮点十六进制以及对应相加结果y的定点 十进制、浮点十六进制的对照表如下:表3. 2仿真结杲对照表a定点(d)468010606a浮点(h)459240003f8000000000000040cooooo0000000040cooooob定点(d)7369202045664b浮点(h)478fee000000000044ffa000cocooooococooooo40800000y-a+b定点(d)78
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 语文-福建省漳州市2025届高三毕业班第三次教学质量检测(漳州三检)试题和答案
- 《探索与发现:三角形边的关系》(教学设计)-2023-2024学年四年级下册数学北师大版
- 乡村公路养护合同范例
- 幼儿园小班角色游戏与社会认知计划
- 卖车正规交易合同范例
- 高中教师工作计划
- 如何在变化中保持年度目标的稳定计划
- 加强行业知识的学习目标计划
- 信贷行业月度个人工作计划
- 社团资源整合优化计划
- 使用林地可行性报告三篇
- 《跨文化传播》教学大纲
- 高管履历核实调查报告
- 制作塔台模型课件科学六年级下册教科版
- 中国新能源汽车“车电分离”行业市场现状分析及竞争格局与投资发展研究报告2024-2029版
- 双t板屋面施工方案
- 【消毒供应中心护理人员职业暴露与安全防护探究5200字(论文)】
- 2025年湖南省邵阳市新宁县初三第一次联考综合试题含答案
- 2024-2025学年新教材高中地理 第三章 产业区位因素 第二节 工业区位因素及其变化(2)教案 新人教版必修2
- 财务管理委托代理会计服务 投标文件(技术方案)
- 常用焊管规格表
评论
0/150
提交评论