(1)定点数:小数点固定在数据的某一位置的数,可以分为定点整数和定点小数和普通定点数。定点数广泛应用于数字图像处理(图像滤波、图像缩放)和数字信号处理(如FFT、定点卷积)中。
- 定点整数:小数点在整个数据的最右侧。
+100(D)= 01100100(B)
- 定点小数:小数点在整个数据除了符号位的最左边。
0.125(D)= 0.001(B)
- 普通定点数:小数点在数据的中间某个位置。
例如:我们约定一个字节的前5bit为整数位、后3bit为小数位,则
1.5(D) = 00001_100(B)
25.125(D)= 11001_001(B)
(2)在FPGA中,浮点数主要由尾数M和阶码E构成,例如基数为2的数F的浮点数表示为:
其中,M必须为小数,用n+1位有符号定点小数表示,可以采用原码、补码;E必须为整数,用k+1位有符号定点整数表示,可以采用原码、补码、移码;浮点数编码总bit位数:m = (n+1)+(k+1)。
(3)IEEE754标准浮点数
尾数M使用原码,阶码E使用移码,基为2,单精度和双精度浮点数格式如下:
其中,S为尾数M的符号,0为正,1为负;M为尾数,定点小数表示,采用原码表示;E采用“移码”表示(移码是在补码的基础上,符号位取反得到的,这时1为正数,0为负数)。
(4)在FPGA中,如何表示小数
乘以2^N(N越大,精度越高),得出最终结果时,右移N位即可,例如计算y = 0.564 * x,则进行如下计算:
reg [15:0] x;
reg [15:0] y;
//0.564 * 2048 = 1155.072
assign y = (x * 1155) >> 11;