一文了解FPGA浮点小数与定点小数的换算及应用Word格式.docx

上传人:b****3 文档编号:17561718 上传时间:2022-12-07 格式:DOCX 页数:3 大小:16.73KB
下载 相关 举报
一文了解FPGA浮点小数与定点小数的换算及应用Word格式.docx_第1页
第1页 / 共3页
一文了解FPGA浮点小数与定点小数的换算及应用Word格式.docx_第2页
第2页 / 共3页
一文了解FPGA浮点小数与定点小数的换算及应用Word格式.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

一文了解FPGA浮点小数与定点小数的换算及应用Word格式.docx

《一文了解FPGA浮点小数与定点小数的换算及应用Word格式.docx》由会员分享,可在线阅读,更多相关《一文了解FPGA浮点小数与定点小数的换算及应用Word格式.docx(3页珍藏版)》请在冰豆网上搜索。

一文了解FPGA浮点小数与定点小数的换算及应用Word格式.docx

这里1.2的小数点在第1位之前,而4.08的小数点在第2位之前,小数点发生了移动。

所以在做乘法的时候,需要对小数点的位置进行调整?

可是既然我们是做定点小数运算,那就说小数点的位置不能动!

怎么解决这个矛盾呢,那就是舍弃最低位。

也就说1.2*3.4=4.1,这样我们就得到正确的定点运算的结果了。

所以在做定点小数运算的时候不仅需要牢记小数点的位置,还需要记住表达定点小数的有效位数。

上面这个例子中,有效位数为2,小数点之后有一位。

现在进入二进制。

我们的定点小数用16位二进制表达,最高位是符号位,那么有效位就是15位。

小数点之后可以有0-15位。

我们把小数点之后有n位叫做Qn,例如小数点之后有12位叫做Q12格式的定点小数,而Q0就是我们所说的整数。

Q12的正数的最大值是0111。

111111111111,第一个0是符号位,后面的数都是1,那么这个数是十进制的多少呢,很好运算,就是0x7fff/2

=7.999755859375。

对于Qn格式的定点小数的表达的数值就它的整数值除以2

在计算机中还是以整数来运算,我们把它想象成实际所表达的值的时候,进行这个运算。

反过来把一个实际所要表达的值x转换Qn型的定点小数的时候,就是x*2

了。

例如0.2的Q12型定点小数为:

0.2*2

=819.2,由于这个数要用整数储存,所以是819即0x0333。

因为舍弃了小数部分,所以0x0333不是精确的0.2,实际上它是819/2

=0.199********5。

我们用数学表达式做一下总结:

x表示实际的数(*一个浮点数),q表示它的Qn型定点小数(一个整数)。

q=(int)(x*2

x=(float)q/2

验证:

由于/2

和*2

可以简单的用移位来计算,所以定点小数的运算比浮点小数要快得多。

下面我们用一个例子来验证一下上面的公式:

用Q12来计算2.1*2.2,先把2.12.2转换为Q12定点小数:

2.1*2

=8601.6=8602

2.2*2

=9011.2=9011

(8602*9011)》》12=18923

18923的实际值是18923/2

=4.619873046875和实际的结果4.62相差0.000126953125,对于一般的计算已经足够精确了。

小数的定标精度、范围

采用定点数进行数值运算,其操作数一般采用整型数来表示。

一个整型数的最大表示范围取决于DSP芯片所给定的字长,一般为16位或24位。

显然,字长越长,所能表示的数的范围越大,精度也越高。

对于FPGA而言,FPGA对小数是无能为力的,一种解决方法是采用定标,就是将运算的浮点数扩大很多倍,然后取整,再用这个数进行运算,运算结束后再缩小相应的倍数。

通过设定小数点在16位数中的不同位置,就可以表示不同大小和不同精度的小数了。

数的定标有Q表示法和S表示法两种。

表1.1列出了一个16位数的16种Q表示、S表示及它们所能表示的十进制数值范围。

同样一个16位数,若小数点设定的位置不同,它所表示的数也就不同。

例如:

16进制数2000H=8192,用Q0表示

16进制数2000H=0.25,用Q15表示

不同的Q所表示的数不仅范围不同,而且精度也不相同。

Q越大,数值范围越小,但精度越高;

相反,Q越小,数值范围越大,但精度就越低。

例如,Q0的数值范围是一32768到+32767,其精度为1,,浮点数x=0.5,定标Q=15,则定点数xq=L0.5*32768J=16384,式中LJ表示下取整。

反之,一个用Q=15表示的定点数16384,其浮点数为16384*2-15=16384/32768=0.5。

浮点数转换为定点数时,为了降低截尾误差,在取整前可以先加上0.5。

Q和S表示方法,如下表所示。

Q表示S表示十进制表示范围

Q15S0.15-1≤x≤0.9999695

Q14S1.14-2≤x≤1.9999390

Q13S2.13-4≤x≤3.9998779

Q12S3.12-8≤x≤7.9997559

Q11S4.11-16≤x≤15.9995117

Q10S5.10-32≤x≤31.9990234

Q9S6.9-64≤x≤63.9980469

Q8S7.8-128≤x≤127.9960938

Q7S8.7-256≤x≤255.9921875

Q6S9.6-512≤x≤511.9804375

Q5S10.5-1024≤x≤1023.96875

Q4S11.4-2048≤x≤2047.9375

Q3S12.3-4096≤x≤4095.875

Q2S13.2-8192≤x≤8191.75

Q1S14.1-16384≤x≤16383.5

Q0S15.0-32768≤x≤32767

一般在FPGA中处理小数定点数,需要自己去定点,比如用16位,就可以分成8位整数和8位小数,即(8,8),即“定点”在第8位。

那么:

1-》16‘h0100

1.5-》16’h0180

-1.5-》-1.5*256+65536(补码)-》16‘hFE80

1.164-》1.164*256=298=16’h012A

如果两个小数相乘,即表示定点数相乘,比如,Q15表示的4000H(浮点数0.5)乘以Q15表示的4000H,4000H×

4000H=10000000H,那么乘完之后的Q值为15+15=30.即浮点数表示0.25.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1