FPGA笔记之——FPGA浮点运算的实现

一、IEEE-754规范

        IEEE-754标准数值表示包括:浮点数,特殊值(零,无穷大,非标准数值,nan), 单精度、双精度、单精度扩展格式的浮点数。

(1)浮点格式。在IEEE-754标准中,所有的浮点数都用二进制模板表示:

IEEE-754格式

 

其中,S域表示符号位,E域表示指数,M域表示尾数(对数的一部分或小数)。 对于标准浮点数,默认总是存在1个隐含的引导位“1”。例如,二进制数1.0011或十进制数1.1875用IEEE-754标准格式表示时其M域的值为0011,在标识格式中不保存隐含的引导位“1”。对于非标准浮点数,引导位可以是“1”或“0”。对于零,无穷大和nan, M域没有隐含的引导位“1”或者没有明确的引导位。

(2)单精度浮点数。单精度浮点数用32位二进制数表示,其中最高位( Bit[31], MSB)为符号位,即S域; Bit[30:23]为 E域,这8位数据表示指数;最低的23位(Bit[22:0], LSB )为M域,用于表示浮点数的小数部分。

(3)双精度浮点数。双精度浮点数用64位二进制数表示,其中最高位( Bit[63], MSB)为符号位,即S域; Bit[62:52]为E域, 这11位表示指数;最低的52位(Bit[51:0], LSB)为M域,用于表示浮点数的小数部分。

所以它表示的浮点数y值如下所示

                                                                             y=(-1)^s*2^{e-127}*f

二、浮点数的加减运算

        浮点加法运算的实现包括以下几个步骤符号判断、: 对阶、尾数加减操作、规格化、舍入操作、溢出判断。具体实现时通常把规格化、舍入操作、溢出判断作为一个步骤实现。浮点数的格式显然可以分为两部分, 即符号和数据的绝对值。若符号相同则符号不便绝对值相加; 若符号不同则须比较两绝对值的大小然后两绝对值作差运算。符号不同时首先判断和的符号, 显然若两浮点数的阶不同时和的符号当与阶数大的操作数相同; 若阶数不同则继续比较对阶操作首先比较两浮点数的阶数大小。然后需要两数对阶。对阶的原则是小阶对大阶,小阶对大阶的好处是,当小阶不同于大阶时,只需要移除小阶数的尾数部分的低位部分。加法流程图见下图

加/减运算流程

 

三、浮点数的乘法运算

浮点数的乘法运算相对比较简单,只需要将两个操作数的符号位进行异或运算,再将阶码部分做和、尾数部分做积即可。同时需要检查操作数的运算结果是否有溢出问题。乘法流程如下图:

乘/除运算流程

 

四、使用Altera的IP核实现浮点运算

        下图为Altera提供的浮点加法运算IP核设置界面。

IP核

IP核设置为64位输入与输出、延迟14个时钟周期输出结果、选择速度优化、使能‘加、减’动态切换功能。模块功能引脚见下表

模块引脚功能
信号名称信号方向说明
dataaI数据输入符合IEEE-754标准
databI数据输入符合IEEE-754标准
add_subI加减法功能动态切换,高电平执行加操作
clkI系统时钟
resultO运算输出
NaNONaN异常输出
overflowOoverflow异常输出,
underflowOunderflow异常输出
zeroO零输出

接下来例化加法模块,然后写一个tb进行功能仿真,仿真结果下图所示,其中inNum1和inNum2为两个加数,outNum为运算结果数。

仿真结果

五、总结

        在FPGA中做运算时特别是浮点运算时,相比ARM和DSP总是显得力不从心,但FPGA 来实现浮点运算成为具有高速、低成本、开发周期短等优点。并且使用IP核进行开发FPGA可以大大缩短算法在FPGA上实现的周期。

        本文为笔者学习笔记,笔者经验不足,能力有限,如有纰漏望即使提出。

  • 13
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 《FPGA自学笔记——设计与验证》是一本关于FPGA设计和验证的入门教材。本书以VHDL和Verilog两种HDL语言为主要工具,通过实例讲解FPGA的基本概念、设计流程和验证方法。同时,本书还通过实例演示了如何使用Xilinx ISE和ModelSim这两个主流软件工具进行FPGA设计和验证。 本书的内容分为五个部分,分别是FPGA基础知识、FPGA设计流程、FPGA验证方法、FPGA性能优化以及FPGA应用实例。其中,FPGA基础知识部分介绍了FPGA的基本构成、组成部件以及通用数字电路设计知识;FPGA设计流程部分从设计输入、RTL设计、布局布线、实现生成等方面详细介绍了FPGA设计流程;FPGA验证方法部分主要介绍了功能验证和时序验证这两个方面的知识;FPGA性能优化部分介绍了FPGA的几种性能指标以及如何通过一定的优化方法提高FPGA性能;FPGA应用实例部分通过几个实例演示了如何应用FPGA进行数字电路设计。 本书的难度适中,适合初学者学习和参考,同时也可以作为FPGA初学者的参考书籍。本书涉及的知识点较为全面,可以为初学者提供一个全面的FPGA设计和验证入门指南。其内容易于理解,实例讲解深入浅出,对于想要学习FPGA设计和验证的人群来说是一本很好的参考书。 ### 回答2: 《FPGA自学笔记——设计与验证》PDF是一本很好的自学FPGA的书籍。这本书包含了FPGA基本概念、设计流程、Verilog HDL语言、开发工具、测试方法等多个主题,非常详尽地介绍了FPGA的基本知识和开发技巧。读这本书可以帮助我们更好地理解FPGA的原理和功能,从而更加熟练地掌握FPGA的设计和验证。 此外,这本书还提供了很多实例来帮助我们更好地理解FPGA的设计和验证。这些实例包含多种应用场景,例如数字逻辑、时序控制、通信等,能够帮助我们从不同角度学习FPGA的相关知识。而且,这本书还提供了实验指导,通过做实验来让我们更深入地理解FPGA的各种知识和技能。 总之,这本书《FPGA自学笔记——设计与验证》PDF是一本非常好的FPGA自学指南,通过阅读这本书,我们可以掌握FPGA基本知识和开发技能,更好地应用FPGA进行各种应用开发。我相信,读完这本书,你一定能够对FPGA有更深刻的认识,并且能够灵活运用FPGA进行各种应用开发。 ### 回答3: 《FPGA自学笔记——设计与验证》是一本以FPGA为研究对象的书籍。它详细介绍了FPGA的诸多特性和应用。该书主要分为两部分,第一部分介绍了FPGA的基本概念,并讲解了Verilog的语法和使用方法。第二部分是实践性较强的部分,通过编写案例代码进行实际操作。 该书着重强调了FPGA设计流程,通过案例演示了FPGA设计的全过程。该书还提供了大量的练习题和案例代码,读者可以通过反复练习和实际操作,逐渐掌握FPGA的设计和验证技能。 总体来说,《FPGA自学笔记——设计与验证》是一本非常实用的FPGA入门教材。它从基础知识入手,循序渐进地讲解了FPGA的各个方面。并且,该书重点讲解了如何运用Verilog语言进行FPGA设计,这对FPGA初学者来说是一个非常实用的指南。 如果你对FPGA领域感兴趣,且希望通过自学来掌握FPGA的基本操作和设计方法,那么《FPGA自学笔记——设计与验证》是一本非常值得推荐的书籍。  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值