1、DSP 运算基础 1、DSP的数据表示的数据表示 2、定点数的格式与运算、定点数的格式与运算 3、浮点数的格式与运算、浮点数的格式与运算1、DSP的数据表示的数据表示格式格式字长字长16位位32位位定点定点浮点浮点24位位格式和字长决定了数据的格式和字长决定了数据的精度精度和和动态范围动态范围格式和字长也在一定程度上决定了格式和字长也在一定程度上决定了DSP处理器处理器的的成本成本、功耗功耗和和编程难度编程难度2、定点数的格式与运算定点数的格式与运算 1.定点数的格式定点数的格式 1)Qn格式格式 2)数值范围与精度)数值范围与精度 3)动态范围)动态范围 2.定点数的算术运算定点数的算术运算
2、 1)定点数的加减法运算)定点数的加减法运算 2)定点数的乘法运算)定点数的乘法运算 3)定点数的除法运算)定点数的除法运算l 小数点小数点1.定点数的格式定点数的格式1)Qn格式格式l Q标志:表示隐含的小数点的位置标志:表示隐含的小数点的位置l 二进制补码数二进制补码数01010011b,粗线表示隐含的小数点位置,粗线表示隐含的小数点位置l 对于负数(最高位对于负数(最高位MSB为为1),要先把它转化为无符号二进制数,再进),要先把它转化为无符号二进制数,再进行计算,最后加上负号行计算,最后加上负号 例:例:8位字长位字长位位7MSB6543210LSB二进制补码二进制补码01010011
3、Q0符号符号26252423222120Q4符号符号2221202-12-22-32-4Q7符号符号2-12-22-32-42-52-62-7定点数与浮点数、定点数与定点数之间的转换关系定点数与浮点数、定点数与定点数之间的转换关系l 浮点数浮点数X Qn格式的定点数格式的定点数Xnl例:例:5.1875 Q4定点数定点数l5.187524 83 01010011b(int)2nnXXl Qn格式的定点数格式的定点数Xn 为浮点数为浮点数Xl例:例:(Q7)01010011b 浮点数浮点数l83/27 0.6484375(float)/2nnXXl Qn格式的定点数格式的定点数Xn Qm格式的定
4、点数格式的定点数Xml例:例:(Q7)01010011b Q4定点数定点数l83/27 0.6484375lint(0.6484375 24)int(10.375)1000001010bl10/24 0.625 0.6484375(int)/22(int)2nmm nmnnXXXl 给定字长给定字长N,采用,采用Qn格式表示小数格式表示小数l 数值范围:数值范围:l 精精 度:度:2)数值范围与精度)数值范围与精度1122122NNnn12nQn格式格式数值范围数值范围精度精度Q15-10.9999694824218750.000030517578125Q14-21.9999389648437
5、50.00006103515625Q13-43.99987792968750.0001220703125Q12-87.9997558593750.000244140625Q11-1615.999511718750.00048828125Q10-3231.99902343750.0009765625Q9-6463.9980468750.001953125Q8-128127.996093750.00390625Q7-256255.99218750.0078125Q6-512511.9843750.015625Q5-10241023.968750.03125Q4-20482047.93750.062
6、5Q3-40964095.8750.125Q2-81928191.750.25Q1-1638416383.50.5Q0-32768327671l 16位字长位字长Qn格式的数值范围与精度格式的数值范围与精度l 动态范围:数据表示格式中可以表示的最大值与最小值之比动态范围:数据表示格式中可以表示的最大值与最小值之比l N位定点数的动态范围:位定点数的动态范围:l 用分贝表示为:用分贝表示为:3)动态范围)动态范围11(21)/2211/2NnNfixnDR11020 log216.02(1)NfixDRNdBl 动态范围:数据表示格式中可以表示的最大值与最小值之动态范围:数据表示格式中可以表示的
7、最大值与最小值之比定点比定点DSP处理器大多采用处理器大多采用16位定点数位定点数l 对于要求更大动态范围的应用,可以采用扩展字长的方式,对于要求更大动态范围的应用,可以采用扩展字长的方式,即用两个或更多的字来表示数据即用两个或更多的字来表示数据l 定点定点DSP处理器要求编程时要仔细考虑信号幅值和中间结处理器要求编程时要仔细考虑信号幅值和中间结果,在避免溢出和尽可能减小舍入误差的前提下,使精度和果,在避免溢出和尽可能减小舍入误差的前提下,使精度和动态范围最大化动态范围最大化 2.定点数的算术运算定点数的算术运算1)定点数的加减法运算)定点数的加减法运算l 相同的相同的Qn格式,保证隐含的小数
8、点对齐格式,保证隐含的小数点对齐l 最可能出现的问题是运算结果的溢出最可能出现的问题是运算结果的溢出l 例:两个例:两个8位数相加,无溢出位数相加,无溢出l 进位位与最高位(进位位与最高位(MSB)相同)相同l 8位字长可以表示结果,没有发生数据溢出位字长可以表示结果,没有发生数据溢出11111100b(-4)00101001b(41)+11111110b(-2)+00110011b(51)111111010b(-6)001011100b(92)l 例:两个例:两个8位数相加,有溢出位数相加,有溢出l 进位位与最高位(进位位与最高位(MSB)不同)不同l 运算结果发生溢出,运算结果发生溢出,8
9、位字长已不能正确地表示结果位字长已不能正确地表示结果10110000b(-80)00101001b(41)+10111111b(-65)+01110011b(115)非饱和模式:非饱和模式:101101111b(-145)非饱和模式:非饱和模式:010011100b(156)饱和模式:饱和模式:110000000b(-128)饱和模式:饱和模式:001111111b(127)l 溢出是由于字长有限,运算结果超出数值的表示范围引溢出是由于字长有限,运算结果超出数值的表示范围引起的起的l 饱和模式饱和模式l 定点数减法运算的原理与加法运算相同定点数减法运算的原理与加法运算相同 2)定点数的乘法运算
10、)定点数的乘法运算l DSP处理器都有硬件乘法器和乘法指令,可实现单周期乘处理器都有硬件乘法器和乘法指令,可实现单周期乘法运算法运算l 二进制乘法运算包含一系列的移位和加法运算二进制乘法运算包含一系列的移位和加法运算l 定点数乘法运算不要求相乘数有相同的定点数乘法运算不要求相乘数有相同的Qn格式格式l 两个相乘数分别为两个相乘数分别为Qn和和Qm格式,字长为格式,字长为N,结果为,结果为Q(n+m)格式,字长为格式,字长为2Nl 根据根据n和和m的不同取值,定点数乘法运算可以分成三种情况的不同取值,定点数乘法运算可以分成三种情况l 小数乘小数(小数乘小数(n、m0,m n)l 整数乘小数(整数
11、乘小数(n0、m=0)l 整数乘整数(整数乘整数(n=m=0)小数乘小数(小数乘小数(n、m0,m n)l 例:两个相乘数分别为例:两个相乘数分别为Q7和和Q6格式,格式,8位字长位字长l 两个定点小数作乘法运算,结果左移一位,保存高位得到两个定点小数作乘法运算,结果左移一位,保存高位得到运算结果,结果为运算结果,结果为Qm(m n)格式)格式 0.1000000b(0.5 Q7 )01.100000b(1.5 Q6 )000.1100000000000b(0.75 Q13)左移一位:00.11000000000000b(0.75 Q14)取高8位:00.110000b(0.75 Q6 )整数
12、乘小数(整数乘小数(n0、m=0)l 例:两个相乘数分别为例:两个相乘数分别为Q7和和Q0格式,格式,8位字长位字长0.1000000b(0.5 Q7)11111001.b(-7 Q0)111111100.1000000b(-3.5 Q7)左移一位:11111100.10000000b(-3.5 Q8)取高8位:11111100.b(-3.Q0)l 误差小于等于误差小于等于Qn格式精度的一半,即小于等于格式精度的一半,即小于等于1/2n+1l 单次计算的误差并不大,但如果是连续的运算,则误差会单次计算的误差并不大,但如果是连续的运算,则误差会累积和传递,从而产生比较大的误差累积和传递,从而产生
13、比较大的误差l DSP处理器提供了自动舍入功能来减小误差处理器提供了自动舍入功能来减小误差l 保留整个保留整个32位中间结果位中间结果l 小数乘小数、整数乘小数运算都要求对乘积结果左移一位小数乘小数、整数乘小数运算都要求对乘积结果左移一位后,保存高位后,保存高位l DSP处理器带有可选的处理器带有可选的自动左移一位自动左移一位的功能,消除移位操的功能,消除移位操作的时间开销作的时间开销 整数乘整数(整数乘整数(n=m=0)l 例:两个相乘数都为例:两个相乘数都为Q0格式,格式,8位字长位字长l 整数相乘,结果为整数相乘,结果为Q0格式,需查询标志位确定保存的位数,格式,需查询标志位确定保存的位
14、数,结果不需要左移一位结果不需要左移一位11111100.b(-4 Q0)11111001.b(-7 Q0)0000000000011100.b(28 Q0)取低8位:00011100.b(28 Q0)3)定点数的除法运算)定点数的除法运算l 大多数大多数DSP处理器不提供单周期除法指令处理器不提供单周期除法指令l 除法是乘法的逆运算,包括一系列移位和条件减法运除法是乘法的逆运算,包括一系列移位和条件减法运算,需要用除法子程序实现算,需要用除法子程序实现l 例:例:8位字长的正整数相除位字长的正整数相除l 被除数为被除数为00001010b(10)l 除数为除数为00000011b(3)l l
15、 00001010b 00000110b商数:00000001 余数:00000100bl 00001000b 00000110b商数:00000011 余数:00000010bl l 00000100b 00000110b余数(丢弃):11111110b商数:00000110 余数:00000100b00001000b 00000110b商数:00001101 余数:00000010bl l 00000100b 00000110b余数(丢弃):11111110b商数:00011010 余数:00000100b00001000b 00000110b商数:00110101 余数:00000010
16、bl l 对结果的小数点右移一位,得到对结果的小数点右移一位,得到Q5格式的结果格式的结果011.01010b(3.3125),最高位),最高位MSB为符号位为符号位 00000100b 00000110b余数(丢弃):11111110b商数:01101010 余数:00000100bl 计算中,共进行了计算中,共进行了7次移位和条件减操作,得到次移位和条件减操作,得到8位(位(1个符号位和个符号位和7个数据位)的结果个数据位)的结果l 要增加精度,可以增加移位和条件减的次数,如要增加精度,可以增加移位和条件减的次数,如15次移次移位和条件减可以得到位和条件减可以得到16位的结果位的结果l 对
17、于两个正的小数相除(对于两个正的小数相除(Qn格式除以格式除以Qm格式)格式)l 如如Q3格式的格式的00001.010b(1.25)除以)除以Q2格式的格式的000000.11b(0.75)l 把两个正的小数看作两个把两个正的小数看作两个Q0格式的正整数相除,即格式的正整数相除,即00001010b(10)除以)除以00000011b(3)l 与上面例子相同,结果为与上面例子相同,结果为Q5格式格式011.01010bl 最后对结果的小数点位置最后对结果的小数点位置左左移移n-m 位位l 对于本例对于本例3-2=10,则结果的小数点左移一位,最后结果为,则结果的小数点左移一位,最后结果为Q6
18、格式格式01.101010b(1.65625)l 如果除法运算中包含负数,应将负数变换为等值的正数,如果除法运算中包含负数,应将负数变换为等值的正数,然后作除法运算,最后加上正确的符号然后作除法运算,最后加上正确的符号2.3 浮点数的格式与运算浮点数的格式与运算 1.浮点数的格式浮点数的格式-1)IEEE754浮点数格式浮点数格式-2)TMS320C3X浮点数格式浮点数格式-3)浮点数的数值范围、精度和)浮点数的数值范围、精度和动态范围动态范围 2.浮点数的算术运算浮点数的算术运算-1)浮点数的加减法运算)浮点数的加减法运算-2)浮点数的乘法运算)浮点数的乘法运算-3)浮点数的除法运算)浮点数
19、的除法运算l 浮点数表示为尾数和指数的形式浮点数表示为尾数和指数的形式l 式中,式中,m 为尾数,为尾数,e 为指数为指数l 符号、尾数和指数编码在同一个二进制字中符号、尾数和指数编码在同一个二进制字中1.浮点数的格式浮点数的格式l 符号、尾数和指数的位数和位域不同,浮点数格式不符号、尾数和指数的位数和位域不同,浮点数格式不同,常用的浮点数格式有同,常用的浮点数格式有l IEEE754标准定义的单精度格式和双精度格式标准定义的单精度格式和双精度格式l TI公司定义的公司定义的TMS320C3X浮点数格式浮点数格式 2exm 1)IEEE754浮点数格式浮点数格式l 单精度格式:单精度格式:24
20、位有效数字,总共占用位有效数字,总共占用32 位位l 双精度格式:双精度格式:53位有效数字精度,并总共占用位有效数字精度,并总共占用64位位l 扩展单精度格式:扩展单精度格式:l 扩展双精度格式:必须至少具有扩展双精度格式:必须至少具有64位有效数字,并总位有效数字,并总共占用至少共占用至少79 位位l 表示的数值表示的数值 e-12712611.2125410.20,000,01255,0255,0sssfefefxefefNaNef l 通常情况,即通常情况,即 1 e 254 时时l 四种特殊情况四种特殊情况l 当当 e=0、f0 时,尾数是个非归一化的数时,尾数是个非归一化的数l 当
21、当 e=0、f=0 时,时,x=0l 当当 e=255、f=0 时,时,x为正(为正(s=0)或负()或负(s=1)的无穷大)的无穷大l 当当 e=255、f0 时,时,x为一个无效数(为一个无效数(NaNNot a Number)e-12711.2sxf-12610.2sxfl 最高位(第最高位(第31位)为符号位位)为符号位sl 32位单精度浮点数位单精度浮点数1100,0011,0101,0010,0000,0000,0000,0000bl 32位单精度浮点数位单精度浮点数0011,1101,0011,1110,0000,0000,0000,0000bl 例例l许多许多32位浮点位浮点D
22、SP处理器具有处理器具有40位的运位的运算单元,可以进行扩展单精度格式的浮算单元,可以进行扩展单精度格式的浮点运算点运算l扩展单精度格式与单精度格式的区别是,扩展单精度格式与单精度格式的区别是,扩展单精度格式的尾数增加了扩展单精度格式的尾数增加了8位,达位,达到到31位位 2)TMS320C3X浮点数格式浮点数格式l 16位短浮点格式位短浮点格式l 32位单精度格式位单精度格式l 40位扩展精度格式位扩展精度格式l 32位单精度浮点数格式用的最多位单精度浮点数格式用的最多l 表示的数值表示的数值 e2.222.sesxfmmf3)浮点数的数值范围、精度和动态范围)浮点数的数值范围、精度和动态范
23、围l 以以IEEE754单精度浮点数为例单精度浮点数为例l 数值范围数值范围l 不考虑不考虑s,当,当e=254,f 为全为全1l 最大的数(最大的数(12-23)2127=1.7014121038,加,加上符号就对应为正的和负的最大数上符号就对应为正的和负的最大数l IEEE754单精度浮点数的数值范围为,单精度浮点数的数值范围为,l 1.70141210381.7014121038l 精度精度l 尾数尾数 f 为为23位,位,f 变化的最小值为变化的最小值为1/2 23l 与定点数不同,这个最小值并不是浮点数的精与定点数不同,这个最小值并不是浮点数的精度,精度还与指数有关度,精度还与指数有
24、关l 浮点数的精度是变化的,与数值的大小有关浮点数的精度是变化的,与数值的大小有关l 定点数的数值是等间隔的定点数的数值是等间隔的l 由于指数项的存在,浮点数的变化不是等间隔的,由于指数项的存在,浮点数的变化不是等间隔的,指数大、数值大、数值间隔也大;相反,指数小、指数大、数值大、数值间隔也大;相反,指数小、数值小、数值间隔也小数值小、数值间隔也小l 最大数(最大数(12-23)2127l 不考虑不考虑s,当,当e=1,f 为全零时,得到最小数为全零时,得到最小数2-126l 动态范围动态范围23127321012612220 log1523.2 2IEEEflaotDRdB-l 动态范围动态
25、范围l 若考虑若考虑e=0、f0 时的情况,动态范围还会更大时的情况,动态范围还会更大l 浮点数的数值范围和动态范围都要比定点数大浮点数的数值范围和动态范围都要比定点数大的多,浮点数的精度是变化的,与数值的大小的多,浮点数的精度是变化的,与数值的大小有关有关2.浮点数的算术运算浮点数的算术运算l 浮点数的算术运算分成两个部分浮点数的算术运算分成两个部分l 尾数的算术运算尾数的算术运算l 指数的算术运算指数的算术运算l 设两个浮点数分别为设两个浮点数分别为l x1 m1 2e1l x2 m2 2e2l m1和和e1分别为分别为x1的指数和尾数的指数和尾数l m2和和e2分别为分别为x2的指数和尾
26、数的指数和尾数l 浮点浮点DSP处理器提供单周期加法、乘法和乘累加运处理器提供单周期加法、乘法和乘累加运算算1)浮点数的加减法运算)浮点数的加减法运算l 设设e1e2,浮点数,浮点数x1和和x2的加法为的加法为l x1 x2 m12e1 (m2 2e2e1)2e1l (m1 m22e2e1)2e1l 加法运算的过程为加法运算的过程为l 先对指数小的数按照指数大的数归正,使两个数的指数先对指数小的数按照指数大的数归正,使两个数的指数相等相等l 然后将归正后的尾数相加然后将归正后的尾数相加l 浮点数减法运算的原理与加法运算相同浮点数减法运算的原理与加法运算相同2)浮点数的乘法运算)浮点数的乘法运算
27、l 浮点数浮点数x1和和x2的乘积为的乘积为l x1 x2 (m1 m2)2e1e2l 乘法运算的过程乘法运算的过程l 尾数尾数m1和和m2相乘相乘l 指数指数e1和和e2相加相加l 为满足浮点数的格式要求,还需要对尾数乘积的结果进为满足浮点数的格式要求,还需要对尾数乘积的结果进行归一化处理,并相应调整指数值,以及对特殊情况的行归一化处理,并相应调整指数值,以及对特殊情况的处理等处理等3)浮点数的除法运算)浮点数的除法运算l 浮点数浮点数x1除以除以x2为为l x1 x2 (m1 m2)2e1e2l 除法运算的过程为除法运算的过程为l 尾数尾数m1除以除以m2l 指数指数e1和和e2相减相减l 为满足浮点数的格式要求,还需要对尾数相除的结果进为满足浮点数的格式要求,还需要对尾数相除的结果进行归一化处理,并相应调整指数值,以及对特殊情况的行归一化处理,并相应调整指数值,以及对特殊情况的处理等处理等l 浮点浮点DSP处理器一般不提供单周期除法指令,浮点处理器一般不提供单周期除法指令,浮点除法需要用除法子程序来实现除法需要用除法子程序来实现练习(1)试写出下述X,Y定点乘法C语言模拟程序设x=18.4,y=36.8,Qx=10;Qy=9;Qz=5(2)试写出下述X,Y定点除法C语言模拟程序设x=18.4,y=36.8,Qx=10;Qy=9;Qz=15