当前位置:文档之家› DSP-定点和浮点数格式

DSP-定点和浮点数格式


1. 浮点数的格式
浮点数表示为尾数和指数的形式
x m 2
e
式中,m 为尾数,e 为指数 符号、尾数和指数编码在同一个二进制字中
符号、尾数和指数的位数和位域不同,浮点数格式不 同,常用的浮点数格式有
IEEE754标准定义的单精度格式和双精度格式 TI公司定义的TMS320C3X浮点数格式
最高位(第31位)为符号位s 通常情况,即 1 ≤ e ≤ 254 时
s
x 1 1. f 2e-127
四种特殊情况
① 当 e=0、f≠0 时,尾数是个非归一化的数
x 1 0. f 2-126
s
② 当 e=0、f=0 时,x=0 ③ 当 e=255、f=0 时,x为正(s=0)或负(s=1)的无穷大 ④ 当 e=255、f≠0 时,x为一个无效数(NaN—Not a Number)
如果除法运算中包含负数,应将负数变换为等值的正数, 然后作除法运算,最后加上正确的符号
2.3 浮点数的格式与运算
• 1. 浮点数的格式
- 1)IEEE754浮点数格式 - 2)TMS320C3X浮点数格式 - 3)浮点数的数值范围、精度和 动态范围
• 2. 浮点数的算术运算
- 1)浮点数的加减法运算 - 2)浮点数的乘法运算 - 3)浮点数的除法运算
③ 整数乘整数(n=m=0)
例:两个相乘数都为Q0格式,8位字长
整数相乘,结果为Q0格式,需查询标志位确定保存的位数, 结果不需要左移一位
11111100.b(-4
Q0)

11111001.b(-7
Q0)
0000000000011100.b(28 Q0) 取低8位: 00011100.b(28 Q0)
0.00390625
0.0078125 0.015625 0.03125 0.0625 0.125 0.25 0.5 1
3)动态范围
动态范围:数据表示格式中可以表示的最大值与最小值之比
N位定点数的动态范围:
(2 N 1 1) / 2n N 1 DR fix= 2 1 n 1/ 2 用分贝表示为:
定点数与浮点数、定点数与定点数之间的转换关系
浮点数X Qn格式的定点数Xn
X n (int) X 2 n
例:5.1875 Q4定点数 4 5.1875×2 =83 =01010011b
Qn格式的定点数Xn 为浮点数X
X (float) X n / 2 n
- 00000110b
商数:00000011 余数:00000010b

00000100b - 00000110b
余数(丢弃):11111110b
商数:00000110 余数:00000100b

00001000b
- 00000110b
商数:00001101 余数:00000010b
⑥ 00000100b
例: (Q7) 01010011b 浮点数 7 83/2 =0.6484375
Qn格式的定点数Xn Qm格式的定点数Xm
n m (int) X n 2mn X m (int) X / 2 2 n

例:(Q7) 01010011b Q4定点数 7 83/2 =0.6484375 4 int(0.6484375 ×2 ) =int(10.375) =10=00001010b 4 10/2 =0.625≠ 0.6484375
DR fix=20 log10 2 N 1 1 6.02( N 1)
dB
动态范围:数据表示格式中可以表示的最大值与最小值之 比定点DSP处理器大多采用16位定点数 对于要求更大动态范围的应用,可以采用扩展字长的方式, 即用两个或更多的字来表示数据 定点DSP处理器要求编程时要仔细考虑信号幅值和中间结 果,在避免溢出和尽可能减小舍入误差的前提下,使精度和 动态范围最大化
Q8
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
-128~127.99609375
-256~255.9921875 -512~511.984375 -1024~1023.96875 -2048~2047.9375 -4096~4095.875 -8192~8191.75 -16384~16383.5 -32768~32767
000.1100000000000b(0.75 Q13)
左移一位:00.11000000000000b(0.75 Q14) 取高8位: 00.110000b(0.75 Q6 )
② 整数乘小数(n≠0、m=0)
例:两个相乘数分别为Q7和Q0格式,8位字长
0.1000000b(0.5 Q7) 11111001.b(-7 Q0) 111111100.1000000b(-3.5 Q7)
2. 定点数的算术运算 1)定点数的加减法运算
相同的Qn格式,保证隐含的小数点对齐 最可能出现的问题是运算结果的溢出
例:两个8位数相加,无溢出 进位位与最高位(MSB)相同 8位字长可以表示结果,没有发生数据溢出 11111100b( -4) + 11111110b( -2) 111111010b( -6) 00101001b( 41) + 00110011b( 51) 001011100Βιβλιοθήκη ( 92)DSP 运算基础
• 1、 DSP的数据表示
• 2、定点数的格式与运算 • 3、浮点数的格式与运算
1、 DSP的数据表示
定点
格式
浮点 16位 24位 32位
字长
格式和字长决定了数据的精度和动态范围 格式和字长也在一定程度上决定了DSP处理器 的成本、功耗和编程难度
2、 定点数的格式与运算
• 1. 定点数的格式
① 小数乘小数(n、m≠0,m≤ n) ② 整数乘小数(n≠0、m=0) ③ 整数乘整数(n=m=0)
① 小数乘小数(n、m≠0,m≤ n)
例:两个相乘数分别为Q7和Q6格式,8位字长 两个定点小数作乘法运算,结果左移一位,保存高位得到 运算结果,结果为Qm(m≤ n)格式
0.1000000b(0.5 01.100000b(1.5 Q7 ) Q6 )
- 00000110b
余数(丢弃):11111110b 商数:00011010 余数:00000100b ⑦ 00001000b - 00000110b
商数: 00110101 余数:00000010b

00000100b
- 00000110b
余数(丢弃):11111110b 商数: 01101010 余数:00000100b ⑨ 对结果的小数点右移一位,得到Q5格式的结果011.01010b (3.3125),最高位MSB为符号位
– 1)Qn格式 – 2)数值范围与精度 – 3)动态范围
• 2. 定点数的算术运算
– 1)定点数的加减法运算 – 2)定点数的乘法运算 – 3)定点数的除法运算
1. 定点数的格式
1)Qn格式
小数点
Q标志:表示隐含的小数点的位置
例:8位字长
二进制补码数01010011b,粗线表示隐含的小数点位置
饱和模式:110000000b(-128)
饱和模式:001111111b(127)
溢出是由于字长有限,运算结果超出数值的表示范围引 起的
饱和模式
定点数减法运算的原理与加法运算相同
2)定点数的乘法运算
DSP处理器都有硬件乘法器和乘法指令,可实现单周期乘 法运算 二进制乘法运算包含一系列的移位和加法运算 定点数乘法运算不要求相乘数有相同的Qn格式 两个相乘数分别为Qn和Qm格式,字长为N,结果为 Q(n+m)格式,字长为2N 根据n和m的不同取值,定点数乘法运算可以分成三种情况
例 ① 32位单精度浮点数 1100,0011,0101,0010,0000,0000,0000,0000b
例:两个8位数相加,有溢出 进位位与最高位(MSB)不同 运算结果发生溢出,8位字长已不能正确地表示结果
10110000b( -80) + 10111111b( -65) 非饱和模式:101101111b(-145)
00101001b( 41) + 01110011b(115) 非饱和模式:010011100b(156)
对于负数(最高位MSB为1),要先把它转化为无符号二进制数,再进 行计算,最后加上负号
位 二进制补码 Q0 Q4 Q7 7 MSB 0 符号 符号 符号 6 1 26 22 2-1 5 0 25 21 2-2 4 1 24 20 2-3 3 0 23 2-1 2-4 2 0 22 2-2 2-5 1 1 21 2-3 2-6 0 LSB 1 20 2-4 2-7
计算中,共进行了7次移位和条件减操作,得到8位(1 个符号位和7个数据位)的结果 要增加精度,可以增加移位和条件减的次数,如15次移 位和条件减可以得到16位的结果
对于两个正的小数相除(Qn格式除以Qm格式)
如Q3格式的00001.010b(1.25)除以Q2格式的000000.11b (0.75) 把两个正的小数看作两个Q0格式的正整数相除,即00001010b (10)除以00000011b(3) 与上面例子相同,结果为Q5格式011.01010b 最后对结果的小数点位置左移n-m 位 对于本例3-2=1>0,则结果的小数点左移一位,最后结果为Q6 格式01.101010b(1.65625)
左移一位:11111100.10000000b(-3.5 Q8) 取高8位: 11111100.b(-3. Q0)
误差小于等于Qn格式精度的一半,即小于等于1/2n+1 单次计算的误差并不大,但如果是连续的运算,则误差会 累积和传递,从而产生比较大的误差 DSP处理器提供了自动舍入功能来减小误差 保留整个32位中间结果 小数乘小数、整数乘小数运算都要求对乘积结果左移一位 后,保存高位 DSP处理器带有可选的自动左移一位的功能,消除移位操 作的时间开销
相关主题