找回密码
 注册
关于网站域名变更的通知
查看: 261|回复: 1
打印 上一主题 下一主题

FPGA设计中的float

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-4-25 09:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
在通常的设计中,不建议使用浮点数计算,因为浮点数计算会消耗FPGA大量的逻辑单元。但很多情况下,又需要使用浮点数进行计算提高精度。( o6 T/ h$ t: P1 H1 |3 ]

) @& h5 D1 u6 f3 _, f% S  ?8 ~) M8 c所以需要有合适的方法计算浮点运算。
" n- o# R. b$ l8 m6 B' ~7 H6 o& ]! ~# H! L6 {8 j) p
正常情况下FPGA只能以整形数据进行计算,必须将浮点数转换为二进制整形数据进行输入。那么小数点就在你的心中。7 H$ b& s$ H- t: f: r! V

7 c. v- [5 h" V, R比如,当输入123乘以241给FPGA的时候,FPGA计算的就是123*241的整形乘法,得到的结果也是整形输出,但是你也可以说我做的是1.23*2.41,数据里面小数点究竟在哪里自己的程序知道就行了。比如可以统一约定,所有的数据总线低4bit是小数部分,写在spec里面即可,FPGA是不知道的,算完的数据解释权在你手上。但是不可能给FPGA输入1.23乘以2.41,这个没法做。/ H: l; b8 S, c2 H
) W1 v2 f: F, _: x1 }7 P
理论上讲,所有的硬件只能算整数,小数点在哪里,那一部分是指数,那一部分是底数,那是一种额外约定。运算器得到整形的结果之后,软件根据小数点的约定,将其理解为小数。
) V: l: P  f) R/ [1 E  r, P
, q: _/ x; O1 [- j+ B就好比你有一个只能算整数的计算器。怎么算小数呢?自己大脑里面转一下,先算整数出来,再加小数点就行了。硬件的设计自然也是这样,人类已经设计出来了整形乘法器,还有必要再重新设计浮点乘法器吗?不过是在整形乘法器前后加了一点数据处理而已。0 [! S! ~+ K3 Q- N2 b

7 g$ {, e* Z4 w7 k接下来介绍一款标准:( E  I  }" ~7 |' p: x
6 S  \; l. e5 B1 c& z; [
可以根据IEEE 754 floating point single precision 标准进行32bit单精度浮点数输入。# G7 H2 B3 J/ Y) n" R

3 x! `" F2 _! F) g4 c$ F1 R2 y. F! e+ @5 f4 M6 l

8 h* g( j+ H' {6 ]- S" r需要注意的是Exponent(指数)若全为0,则Mantissa(位数)要进行denormal操作。: A( a5 ?* q" R( Y" T4 p0 h
3 ?2 W# q$ s# s3 D3 A# C& U- |
根据相关的标准或者约定,可自行设计FPU。
. M. c: T2 k5 K---------------------
7 U' d% C& F$ T0 E! f$ E/ ~5 A5 q作者:ALIFPGA
0 N' n, s( p0 J$ B$ y$ j; c+ R6 X$ j

0 U4 _" W4 W# \4 d
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-9 05:34 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表