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

FPGA设计中的float

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在通常的设计中,不建议使用浮点数计算,因为浮点数计算会消耗FPGA大量的逻辑单元。但很多情况下,又需要使用浮点数进行计算提高精度。
3 F/ F- [9 O; h0 x9 L$ e* o8 b, f. I
( y( z4 a' R: z6 q$ T3 u9 e9 R所以需要有合适的方法计算浮点运算。" ^: W; }) m2 Z& j( m

  w& t! _, n* r正常情况下FPGA只能以整形数据进行计算,必须将浮点数转换为二进制整形数据进行输入。那么小数点就在你的心中。
- R1 g# E2 N' O
" C1 o$ l4 O% @比如,当输入123乘以241给FPGA的时候,FPGA计算的就是123*241的整形乘法,得到的结果也是整形输出,但是你也可以说我做的是1.23*2.41,数据里面小数点究竟在哪里自己的程序知道就行了。比如可以统一约定,所有的数据总线低4bit是小数部分,写在spec里面即可,FPGA是不知道的,算完的数据解释权在你手上。但是不可能给FPGA输入1.23乘以2.41,这个没法做。
5 Z4 G8 f% ?  {: C# v" U6 ~
" k1 I' d2 A2 D2 B理论上讲,所有的硬件只能算整数,小数点在哪里,那一部分是指数,那一部分是底数,那是一种额外约定。运算器得到整形的结果之后,软件根据小数点的约定,将其理解为小数。% i6 G2 [/ n* r* N1 |' V0 _! V; Q
$ ]3 X  `* d3 A  c* q
就好比你有一个只能算整数的计算器。怎么算小数呢?自己大脑里面转一下,先算整数出来,再加小数点就行了。硬件的设计自然也是这样,人类已经设计出来了整形乘法器,还有必要再重新设计浮点乘法器吗?不过是在整形乘法器前后加了一点数据处理而已。8 t1 P8 z" Y1 [0 X; d
( q8 E2 L8 M; y& F
接下来介绍一款标准:
& G3 S8 E. u! j* {# i# G+ e9 ?* L2 N7 G& D% M
可以根据IEEE 754 floating point single precision 标准进行32bit单精度浮点数输入。
: }4 R* w4 h' `& d9 g% q% e0 x
6 W, Q4 K! ]2 J, X2 t: ^2 P& C  R' ]( I$ N
# x# M' P; h5 P/ H3 z
需要注意的是Exponent(指数)若全为0,则Mantissa(位数)要进行denormal操作。
  E  c* F" z; m1 R+ p& @6 E
: J- [) Y7 K9 Q3 T8 A根据相关的标准或者约定,可自行设计FPU。8 |5 r, t0 p5 |6 i9 R
---------------------
  X. P9 V$ [2 ]( \作者:ALIFPGA ' c- x6 J% @" D: ~+ B6 Q

: U% x/ a, G5 q0 e0 v- R' w+ F, n2 J! ?0 Y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-2 02:54 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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