基础知识
浮点数与定点数概念
浮点数:小数点是浮动的,不是在一个固定的位置上的 定点数:小数点的位置是固定的 在FPGA内部只能处理定点数无法处理浮点数 当浮点数转换成定点数的时候要明确的知道小数有多少位,整数有多少位
浮点数转换为定点数
无损量化:量化误差小于量化精度的一半
位数:3位整数位宽,12位的小数位宽,最高位的符号位1位。则这个就是16位的
对于16位的符号数:最大可以表示2的15次方=32767,最小值为-32768
量化精度:小数12位精度为1/(2的12次方)= 0.000244140625
量化误差:以2.918,12位小数定点量化
2.918/0.000244140625=11952.128~=11952(小数部分进行四舍五入)量化误差为(11952.128-11952)×0.000244140625=0.00003125即2.918-11952×0.000244140625=0.00003125这个就叫做量化的误差
举例
大疆2020芯片开发工程师A卷)
对12.918做无损定点化,需要的最小位宽是多少位,位宽选择11位时的量化误差是多少?
A. 12位,0.0118
B. 13位,0.0039
C. 12位,0.0039
D. 13位,0.0118
答案:C,12位,误差0.0039
12.918,定点量化时对整数部分和小数部分分别量化。
(1)整数部分12,最少使用4位量化,4-bit表示范围0~15;
(2)小数部分0.918
第一问:
假设12.918使用12位量化,整数已使用4bit,则小数部分还能使用8bit量化
量化精度:1/(2的8次方)=0.00390625
量化误差:0.918/(2的8次方)= 235.008~=235(四舍五入)
0.008×(2的8次方)= 0.00003125
量化误差小于量化精度的一半,认为是“无损量化”。
第二问:
量化精度:1/(2的7次方)=0.0078125
量化误差:0.918/(2的7次方)=117.504~=118(四舍五入)
(117.504-118)×(2的7次方)= -0.003875保留四位小数并取正数,0.0039
所以选C