2020年1月2日 星期四

DSP TI IQ_math and Float format


IEEE 754單精度Float為32bit浮點數,TI定義了IQ-Math,在某些沒有FPU的
C2000 MCU,用定點來模擬浮點。例如F28035沒有FPU單元,就可以用
IQ-Math來做浮點運算,而F28335有FPU單元,就可以用Float來做運算。
下面解釋兩者的格式與差異。


Float Format
Float總有有32bit,格式如下
s為正負號(sign),佔1 個bit,0為正, 1為負。
e為指數(exponent),佔8個bit。
f為尾數(fraction),佔23個bit。
數值非平均分佈,離中心值"0"越遠,解析度越差。






例如:0x41200000 =  0 , 100 0001 0, 010 0000 0000 ....  0000b ,
可以得到 s=0,  e=130,  f=1.01b = 1.25(十進制), v=2^3 * (1.25)= 10.0。


IQ-Math Format
TI IQ-Math總共有32bit,I與Q的佔多少bit,是可以設定的,像是I1Q31或I31Q1。

例如"I8Q24"格式如下:
S為正負號,佔1 個bit,0為正, 1為負。
I為指數,佔7個bit。
f為分數,佔24個bit。
可以表示的範圍為 -2^(I-1)~ 2^(I-1) => -128 ~ 128,解析度為2^(-Q)=2(-24),
所以如果我們要增加表示的範圍,就增加I,要增加解析度,就要增加Q。









當S=1:表示這個數值為負,在I8Q24,就會有前面的 -2^I= -256,
              在2進制就用2的補數來表示負數。例如11010110表示為
              負的"101010"= -42
當S=0:就沒有-2^I這個值。將前面的例子11010110將前面的sign
               bit改為"0",會得到正數"01010110"=78。
例如:0x41200000 =  0 , 100 0001, 0 010 0000 0000 ....  0000b ,
 =2^6+2^0+2^(-3)=65.125。


IQ-Math Function
浮點運算與IQmath在算數函式、三角函式的指令,



















浮點運算與IQmath的轉換函式。





















Referemce
1.IQ Math on the Texas Instruments TMS320C28x DSP
http://read.pudn.com/downloads287/ebook/1294018/IQMath-datasheet/IQmath%E7%9A%84%E4%BD%BF%E7%94%A8.pdf