3.定點(diǎn)數(shù)的加減乘除運(yùn)算
簡單的說,各種運(yùn)算的原則就是先把待運(yùn)算的數(shù)據(jù)放大一定的倍數(shù),在運(yùn)算的過程中使用的放大的數(shù)據(jù),在最終需要輸出結(jié)果的時候再調(diào)整回去。
舉個例來說,有如下運(yùn)算:
// coefs1 = 0.023423; coefs2=0.2131
float coefs1,coefs2;
int result;
…
result = 34* coefs1+72* coefs2;
…
代碼的意思是,該模塊需要輸出一個整型的結(jié)果,但計算的過程中有浮點(diǎn)的運(yùn)算。如果在定點(diǎn)的DSP中,這段代碼是無法運(yùn)行的。
為了解決這個問題,我們可以這樣處理:首先,把coefs1,coefs2等類似的浮點(diǎn)數(shù)據(jù)擴(kuò)大一定的倍數(shù)(具體擴(kuò)大多少倍,依據(jù)精度要求不同),我們暫且把小數(shù)點(diǎn)向右移動4位,也就是擴(kuò)大的倍數(shù)為:*10000,在最終的輸出的時候在縮小相同的倍數(shù)。修改后的代碼大致如下:
int coefs1,coefs2;
int result;
…
result = 34* coefs1+72* coefs2;
result /= 10000;
…
當(dāng)然,上面的例子為了大家好理解,寫的可能不是太正確,不過基本的精髓應(yīng)該是這些了。具體的處理過程,大家可以在網(wǎng)上搜索“第3章 DSP芯片的定點(diǎn)運(yùn)算.doc”這篇文章,寫的很具體,這里不再羅嗦了。
以上就是本文的全部內(nèi)容,希望能給大家一個參考,也希望大家多多支持武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選