• FPGA设计中的float



    在通常的设计中,不建议使用浮点数计算,因为浮点数计算会消耗FPGA大量的逻辑单元。但很多情况下,又需要使用浮点数进行计算提高精度。

    所以需要有合适的方法计算浮点运算。

    正常情况下FPGA只能以整形数据进行计算,必须将浮点数转换为二进制整形数据进行输入。那么小数点就在你的心中。

    比如,当输入123乘以241给FPGA的时候,FPGA计算的就是123*241的整形乘法,得到的结果也是整形输出,但是你也可以说我做的是1.23*2.41,数据里面小数点究竟在哪里自己的程序知道就行了。比如可以统一约定,所有的数据总线低4bit是小数部分,写在spec里面即可,FPGA是不知道的,算完的数据解释权在你手上。但是不可能给FPGA输入1.23乘以2.41,这个没法做。

    理论上讲,所有的硬件只能算整数,小数点在哪里,那一部分是指数,那一部分是底数,那是一种额外约定。运算器得到整形的结果之后,软件根据小数点的约定,将其理解为小数。

    就好比你有一个只能算整数的计算器。怎么算小数呢?自己大脑里面转一下,先算整数出来,再加小数点就行了。硬件的设计自然也是这样,人类已经设计出来了整形乘法器,还有必要再重新设计浮点乘法器吗?不过是在整形乘法器前后加了一点数据处理而已。

    接下来介绍一款标准:

    可以根据IEEE 754 floating point single precision 标准进行32bit单精度浮点数输入。

    需要注意的是Exponent(指数)若全为0,则Mantissa(位数)要进行denormal操作。

    根据相关的标准或者约定,可自行设计FPU。


    版权所有权归卿萃科技 杭州FPGA事业部,转载请注明出处

    作者:杭州卿萃科技ALIFPGA

    原文地址:杭州卿萃科技FPGA极客空间 微信公众号


    扫描二维码关注杭州卿萃科技FPGA极客空间


  • 相关阅读:
    便利的开发文档工具doxygen
    父页面 js 取得弹出窗口所选择的值, 弹出窗口关闭后刷新父页面
    ASCII码对照表
    C#中Brush、Color、String相互转换
    C#获取标准北京时间
    2005数据库脚本在SQL2000上执行 注意事项
    给Image控件后台赋Source值
    Web服务枚举组件不可用
    泛型集合转化为DataSet
    网站常见关于"登录|注册"和"姓名|注销"用JS实现
  • 原文地址:https://www.cnblogs.com/alifpga/p/9181421.html
Copyright © 2020-2023  润新知