新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 定點DSP中高精度除法的實現(xiàn)方法

定點DSP中高精度除法的實現(xiàn)方法

作者: 時間:2012-10-22 來源:網(wǎng)絡(luò) 收藏

引 言

本文引用地址:http://www.butianyuan.cn/article/170751.htm

各種集成化單片數(shù)字信號處理器()以其功能強、集成度高、應(yīng)用靈活、性價比高等優(yōu)點,在信號處理和系統(tǒng)控制中的主導(dǎo)性地位日益明顯。許多信號處理和控制需要運用運算。一般的數(shù)字信號處理器中沒有現(xiàn)成的指令。十多年前誕生的浮點,由于其用硬件完成浮點數(shù)的運算,在數(shù)據(jù)處理和運算能力上大大超出,處理運算也比DSP更為簡單。但是DSP每器件產(chǎn)品的價格更低,這對大規(guī)模的大眾市場應(yīng)用而言是相當(dāng)重要的優(yōu)勢,也是定點器件至今仍是業(yè)界主流的主要原因。所以,討論定點DSP中除法的仍不失其意義。在定點DSP中雖然已經(jīng)有人給出除法的算法,但是由于其運算的復(fù)雜和精度難以如愿,致使一些帶有除法的好的算法在信號處理中難以得到應(yīng)用。

為了提高運算結(jié)果的精度,本文在已有除法算法的基礎(chǔ)上進(jìn)行了一些改進(jìn),最大限度地保證了結(jié)果的精度。最后在TI公司的TMS320C5416芯片里具體并驗證了這一度除法。

1 經(jīng)典算法

DSP中沒有現(xiàn)成的除法指令,除法是靠被除數(shù)與除數(shù)之間的移位相減來的。在C54X系列里利用減法指令SUBC和循環(huán)指令RPT實現(xiàn)2個16位數(shù)的相除。下面以C54X為例來具體實現(xiàn)經(jīng)典的除法:

C54X提供的SuBC指令僅對無符號數(shù)進(jìn)行操作,所以在移位相減開始之前必須先將被除數(shù)和除數(shù)取絕對值,僅考慮2個正數(shù)的除法。此時除法運算有兩種情況:

當(dāng)|被除數(shù)||除數(shù)|時,將|被除數(shù)|存放在累加器的高16位,然后用SUBC完成15次移位相減,相減之后在累加器A的低16位中存放商的絕對值。根據(jù)運算前被除數(shù)和除數(shù)的符號是否相同來決定是否要改變所得結(jié)果的符號。

當(dāng)|被除數(shù)|≥|除數(shù)|時,將|被除數(shù)|存放在累加器的低16位,然后用SUBC完成16次移位相減,相減之后在累加器A的低16位中存放商的絕對值。根據(jù)運算前被除數(shù)和除數(shù)的符號是否相同來決定是否要改變所得結(jié)果的符號。

從實現(xiàn)的過程分析,當(dāng)|被除數(shù)||除數(shù)|時,移位相減開始時|被除數(shù)|和|除數(shù)|的小數(shù)點位置正好相差一位。第一次相減后在累加器A的O位最低位存進(jìn)的數(shù)值正是商的最高位,該位為商的小數(shù)點后第一位。在15次移位相減之后,累加器A低16位所得的結(jié)果為Q值為15的小數(shù)。當(dāng)|被除數(shù)|≥|除數(shù)|時,在第l6次相減時,|被除數(shù)|位于A的高16位(30~15位)上,小數(shù)點位在A的15位后,和|除數(shù)|的小數(shù)點位正好對齊,則此次相減后在A的0位加上的值正好是商的最低有效整數(shù)位,相當(dāng)于十進(jìn)制數(shù)中的個位。所以在16次移位相減之后,累加器A低16位所得的結(jié)果為Q值為0的整數(shù)。以此分析,當(dāng)商的精確值不是整數(shù),或者超出Q值15所表示的范圍時,此算法所得結(jié)果就達(dá)不到16位數(shù)據(jù)所能表達(dá)的精確度。

表1中任取幾組數(shù)據(jù)來說明。


上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉