DSP-定点和浮点数格式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
- 00000110b
余数(丢弃):11111110b 商数:00011010 余数:00000100b ⑦ 00001000b - 00000110b
商数: 00110101 余数:00000010b
⑧
00000100b
- 00000110b
余数(丢弃):11111110b 商数: 01101010 余数:00000100b ⑨ 对结果的小数点右移一位,得到Q5格式的结果011.01010b (3.3125),最高位MSB为符号位
Q13 Q12 Q11 Q10 Q9
-2~1.99993896484375
-4~3.9998779296875 -8~7.999755859375 -16~15.99951171875 -32~31.9990234375 -64~63.998046875
0.00006103515625
0.0001220703125 0.000244140625 0.00048828125 0.0009765625 0.001953125
DR fix=20 log10 2 N 1 1 6.02( N 1)
dB
动态范围:数据表示格式中可以表示的最大值与最小值之 比定点DSP处理器大多采用16位定点数 对于要求更大动态范围的应用,可以采用扩展字长的方式, 即用两个或更多的字来表示数据 定点DSP处理器要求编程时要仔细考虑信号幅值和中间结 果,在避免溢出和尽可能减小舍入误差的前提下,使精度和 动态范围最大化
对于负数(最高位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
- 00000110b
商数:00000011 余数:00000010b
④
00000100b - 00000110b
余数(丢弃):11111110b
商数:00000110 余数:00000100b
⑤
00001000b
- 00000110b
商数:00001101 余数:00000010b
⑥ 00000100b
例:两个8位数相加,有溢出 进位位与最高位(MSB)不同 运算结果发生溢出,8位字长已不能正确地表示结果
10110000b( -80) + 10111111b( -65) 非饱和模式:101101111b(-145)
00101001b( 41) + 01110011b(115) 非饱和模式:010011100b(156)
定点数与浮点数、定点数与定点数之间的转换关系
浮点数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
饱和模式:110000000b(-128)
饱和模式:001111111b(127)
溢出是由于字长有限,运算结果超出数值的表示范围引 起的
饱和模式
定点数减法运算的原理与加法运算相同
2)定点数的乘法运算
DSP处理器都有硬件乘法器和乘法指令,可实现单周期乘 法运算 二进制乘法运算包含一系列的移位和加法运算 定点数乘法运算不要求相乘数有相同的Qn格式 两个相乘数分别为Qn和Qm格式,字长为N,结果为 Q(n+m)格式,字长为2N 根据n和m的不同取值,定点数乘法运算可以分成三种情况
如果除法运算中包含负数,应将负数变换为等值的正数, 然后作除法运算,最后加上正确的符号
2.3 浮点数的格式与运算
• 1. 浮点数的格式
- 1)IEEE754浮点数格式 - 2)TMS320C3X浮点数格式 - 3)浮点数的数值范围、精度和 动态范围
• 2. 浮点数的算术运算
- 1)浮点数的加减法运算 - 2)浮点数的乘法运算 - 3)浮点数的除法运算
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 用分贝表示为:
1)IEEE754浮点数格式
单精度格式:24位有效数字,总共占用32 位 双精度格式:53位有效数字精度,并总共占用64位 扩展单精度格式: 扩展双精度格式:必须至少具有64位有效数字,并总 共占用至少79 位
表示的数值
1 s 1. f 2e-127 1 e 254 s 1 0. f 2126 e 0, f 0 x 0 e 0, f 0 s e 255, f 0 1 e 255, f 0 NaN
最高位(第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)
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
DSP 运算基础
• 1、 DSP的数据表示
• 2、定点数的格式与运算 • 3、浮点数的格式与运算
1、 DSP的数据表示
定点
格式
浮点 16位 24位 32位
字长
格式和字长决定了数据的精度和动态范围 格式和字长也在一定程度上决定了DSP处理器 的成本、功耗和编程难度
2、 定点数的格式与运算
• 1. 定点数的格式
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)
例 ① 32位单精度浮点数 1100,0011,0101,0010,0000,0000,0000,0000b
1. 浮点数的格式
浮点数表示为尾数和指数的形式
x m 2
e
式中,m 为尾数,e 为指数 符号、尾数和指数编码在同一个二进制字中
符号、尾数和指数的位数和位域不同,浮点数格式不 同,常用的浮点数格式有
IEEE754标准定义的单精度格式和双精度格式 TI公司定义的TMS320C3X浮点数格式
– Hale Waihona Puke Baidu)Qn格式 – 2)数值范围与精度 – 3)动态范围
• 2. 定点数的算术运算
– 1)定点数的加减法运算 – 2)定点数的乘法运算 – 3)定点数的除法运算
1. 定点数的格式
1)Qn格式
小数点
Q标志:表示隐含的小数点的位置
例:8位字长
二进制补码数01010011b,粗线表示隐含的小数点位置
2)数值范围与精度
给定字长N,采用Qn格式表示小数
2 N 1 2 N 1 1 数值范围: n ~ 2 2n
精
度:
1
2n
16位字长Qn格式的数值范围与精度
Qn格式 Q15 数值范围 -1~0.999969482421875 精度 0.000030517578125
Q14
左移一位:11111100.10000000b(-3.5 Q8) 取高8位: 11111100.b(-3. Q0)
误差小于等于Qn格式精度的一半,即小于等于1/2n+1 单次计算的误差并不大,但如果是连续的运算,则误差会 累积和传递,从而产生比较大的误差 DSP处理器提供了自动舍入功能来减小误差 保留整个32位中间结果 小数乘小数、整数乘小数运算都要求对乘积结果左移一位 后,保存高位 DSP处理器带有可选的自动左移一位的功能,消除移位操 作的时间开销
2. 定点数的算术运算 1)定点数的加减法运算
相同的Qn格式,保证隐含的小数点对齐 最可能出现的问题是运算结果的溢出
例:两个8位数相加,无溢出 进位位与最高位(MSB)相同 8位字长可以表示结果,没有发生数据溢出 11111100b( -4) + 11111110b( -2) 111111010b( -6) 00101001b( 41) + 00110011b( 51) 001011100b( 92)
① 小数乘小数(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 )
例: (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
③ 整数乘整数(n=m=0)
例:两个相乘数都为Q0格式,8位字长
整数相乘,结果为Q0格式,需查询标志位确定保存的位数, 结果不需要左移一位
11111100.b(-4
Q0)
11111001.b(-7
Q0)
0000000000011100.b(28 Q0) 取低8位: 00011100.b(28 Q0)
计算中,共进行了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)
3)定点数的除法运算
大多数DSP处理器不提供单周期除法指令 除法是乘法的逆运算,包括一系列移位和条件减法运 算,需要用除法子程序实现
例:8位字长的正整数相除 被除数为00001010b(10) 除数为00000011b(3)
① ② 00001010b - 00000110b 商数:00000001 余数:00000100b ③ 00001000b