Q格式(Q15)DSP上浮點資料定點化處理

2021-10-08 00:28:05 字數 2356 閱讀 2209

許多dsp都是定點dsp,處理定點資料會相當快,但是處理浮點資料就會非常慢。可以利用q格式進行浮點資料到定點的轉化,節約cpu時間。實際應用中,浮點運算大都時候都是既有整數部分,也有小數部分的。所以要選擇乙個適當的定標格式才能更好的處理運算。

q格式表示為:qm.n,表示資料用m位元表示整數部分,n位元表示小數部分,共需要m+n+1位來表示這個資料,多餘的一位用作符合位。假設小數點在n位的左邊(從右向左數),從而確定小數的精度

例如q15表示小數部分有15位,乙個short型資料,佔2個位元組,最高位是符號位,後面15位是小數字,就假設小數點在第15位左邊,表示的範圍是:-1浮點資料轉化為q15,將資料乘以2^15;q15資料轉化為浮點資料,將資料除以2^15。

例如:假設資料儲存空間為2個位元組,0.333×2^15=10911=0x2a9f,0.333的所有運算就可以用0x2a9f表示,同理10911×2^(-15)=0.332977294921875,可以看出浮點資料通過q格式轉化後是有誤差的。

例:兩個小數相乘,0.333*0.414=0.137862

0.333*2^15=10911=0x2a9f,0.414*2^15=13565=0x34fd

short a = 0x2a9f;

short b = 0x34fd;

short c = a * b >> 15;  // 兩個q15格式的資料相乘後為q30格式資料,因此為了得到q15的資料結果需要右移15位

這樣c的結果是0x11a4=0001000110100100,這個資料同樣是q15格式的,它的小數點假設在第15位左邊,即為0.001000110100100=0.1378173828125...和實際結果0.137862差距不大。或者0x11a4 / 2^15 = 0.1378173828125

1> 定點加減法:須轉換成相同的q格式才能加減

2> 定點乘法:不同q格式的資料相乘,相當於q值相加,即q15資料乘以q10資料後的結果是q25格式的資料

3> 定點除法:不同q格式的資料相除,相當於q值相減

4> 定點左移:左移相當於q值增加

5> 定點右移:右移相當於q減少

實際應用中,浮點運算大都時候都是既有整數部分,也有小數部分的。所以要選擇乙個適當的定標格式才能更好的處理運算。一般用如下兩種方法:

1> 使用時使用適中的定標,既可以表示一定的整數復位也可以表示小數復位,如對於2812的32位系統,使用q15格式,可表示-65536.0~65535.999969482區間內的資料。

2> 全部採用小數,這樣因為小數之間相乘永遠是小數,永遠不會溢位。取乙個極限最大值(最好使用2的n次冪),轉換成x/max的小數(如果max是取的2的 n次冪,就可以使用移位代替除法)。

許多dsp都是定點dsp,處理定點資料會相當快,但是處理浮點資料就會非常慢。可以利用q格式進行浮點資料到定點的轉化,節約cpu時間。實際應用中,浮點運算大都時候都是既有整數部分,也有小數部分的。所以要選擇乙個適當的定標格式才能更好的處理運算。

q格式表示為:qm.n,表示資料用m位元表示整數部分,n位元表示小數部分,共需要m+n+1位來表示這個資料,多餘的一位用作符合位。假設小數點在n位的左邊(從右向左數),從而確定小數的精度

例如q15表示小數部分有15位,乙個short型資料,佔2個位元組,最高位是符號位,後面15位是小數字,就假設小數點在第15位左邊,表示的範圍是:-1浮點資料轉化為q15,將資料乘以2^15;q15資料轉化為浮點資料,將資料除以2^15。

例如:假設資料儲存空間為2個位元組,0.333×2^15=10911=0x2a9f,0.333的所有運算就可以用0x2a9f表示,同理10911×2^(-15)=0.332977294921875,可以看出浮點資料通過q格式轉化後是有誤差的。

例:兩個小數相乘,0.333*0.414=0.137862

0.333*2^15=10911=0x2a9f,0.414*2^15=13565=0x34fd

short a = 0x2a9f;

short b = 0x34fd;

short c = a * b >> 15;  // 兩個q15格式的資料相乘後為q30格式資料,因此為了得到q15的資料結果需要右移15位

這樣c的結果是0x11a4=0001000110100100,這個資料同樣是q15格式的,它的小數點假設在第15位左邊,即為0.001000110100100=0.1378173828125...和實際結果0.137862差距不大。或者0x11a4 / 2^15 = 0.1378173828125

1> 定點加減法:須轉換成相同的q格式才能加減

2> 定點乘法:不同q格式的資料相乘,相當於q值相加,即q15資料乘以q10資料後的結果是q25格式的資料

3> 定點除法:不同q格式的資料相除,相當於q值相減

4> 定點左移:左移相當於q值增加

5> 定點右移:右移相當於q減少

Q格式 TI的dsp的IQmath學習

接觸dsp和無刷電機原始碼時,對於計算的要求比較高。對q格式做一下了解,當然也解答了我以前的疑問。1.什麼是定點數?2.印象中的dsp不是應該支援浮點數的運算麼?在看st的變換原始碼時,本沒了解什麼是q格式,不過當時的理解是將sin theta 在0 90度的值 0 1 區間做了放大,即為0 327...

Q15格式說明

今天看pic的逆變器程式,看到採集後的adbuf資料全部都是 5,這就搞不明白了,為什麼要左移5呀?然後看到上面說是相容q15,在qq群裡也問了高手,說是用於dsp小數運算,於是在網上找了下q15的定義,下面把q15整理下。許多dsp都是定點dsp,處理定點資料會相當快,但是處理浮點資料就會非常慢。...

關於Q格式資料總結

q格式表示為 qm.n,表示資料用m位元表示整數部分,n位元表示小數部分,共需要 m n 1位來表示這個資料,多餘的一位用作符合位。假設小數點在 n位的左邊 從右向左數 從而確定小數的精度 例如q15表示小數部分有15位,乙個short 型資料,佔2個位元組,最高位是符號位,後面 15位是小數字,就...