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

FPGA设计中的float

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在通常的设计中,不建议使用浮点数计算,因为浮点数计算会消耗FPGA大量的逻辑单元。但很多情况下,又需要使用浮点数进行计算提高精度。
7 N( q% y' J- }7 d8 `) Y" {' C) V; H' T1 H0 u- c+ d& D! `4 ^
所以需要有合适的方法计算浮点运算。3 P2 C" f; \6 h. t* T5 f/ `

& D5 J  I* z: t. c  L2 r3 |正常情况下FPGA只能以整形数据进行计算,必须将浮点数转换为二进制整形数据进行输入。那么小数点就在你的心中。# @5 g  l2 Y$ [. y
5 `8 `+ c. s8 b8 n4 p2 y9 ^* q0 A
比如,当输入123乘以241给FPGA的时候,FPGA计算的就是123*241的整形乘法,得到的结果也是整形输出,但是你也可以说我做的是1.23*2.41,数据里面小数点究竟在哪里自己的程序知道就行了。比如可以统一约定,所有的数据总线低4bit是小数部分,写在spec里面即可,FPGA是不知道的,算完的数据解释权在你手上。但是不可能给FPGA输入1.23乘以2.41,这个没法做。4 \% G2 o7 G2 d9 }

9 ?, s# I: a$ I& y2 ]9 i' @理论上讲,所有的硬件只能算整数,小数点在哪里,那一部分是指数,那一部分是底数,那是一种额外约定。运算器得到整形的结果之后,软件根据小数点的约定,将其理解为小数。. d0 W2 E2 u" Z6 a- n

  X# T8 C$ ^: l% `就好比你有一个只能算整数的计算器。怎么算小数呢?自己大脑里面转一下,先算整数出来,再加小数点就行了。硬件的设计自然也是这样,人类已经设计出来了整形乘法器,还有必要再重新设计浮点乘法器吗?不过是在整形乘法器前后加了一点数据处理而已。
) M6 j) K) F% J& s& B: z
- A2 v2 Z9 [5 E- W接下来介绍一款标准:, ?8 G9 E  u! ?# \$ p8 M& J
7 y: R* K- f' P/ Q1 `  d7 o
可以根据IEEE 754 floating point single precision 标准进行32bit单精度浮点数输入。; R$ V2 i( D: q2 X1 h0 S% P
5 s/ W+ K' B. Z  e- r( ?/ g; N

0 s" |, O5 N* `9 y. G3 \9 Y* ^* B' F3 X  i, O) Y# V3 k
需要注意的是Exponent(指数)若全为0,则Mantissa(位数)要进行denormal操作。) t  l% z) l+ s2 n. S+ T
5 g: F7 u/ F8 N& ^0 F7 M7 T7 ?
根据相关的标准或者约定,可自行设计FPU。& {+ B0 l# S& `( T1 w0 A
--------------------- - V1 {7 ]* f& }
作者:ALIFPGA * ], I+ m0 s4 H2 m. h% z

' L6 _* v4 T, B1 A- ^" ~
7 Q8 X  r: t& v( t. b7 V: ?& n
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-31 18:42 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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