定點(diǎn)DSP中高精度除法的實(shí)現(xiàn)方法
引 言
本文引用地址:http://butianyuan.cn/article/170751.htm各種集成化單片數(shù)字信號處理器(DSP)以其功能強(qiáng)、集成度高、應(yīng)用靈活、性價比高等優(yōu)點(diǎn),在信號處理和系統(tǒng)控制中的主導(dǎo)性地位日益明顯。許多信號處理和控制需要運(yùn)用除法運(yùn)算。一般的數(shù)字信號處理器中沒有現(xiàn)成的除法指令。十多年前誕生的浮點(diǎn)DSP,由于其用硬件完成浮點(diǎn)數(shù)的運(yùn)算,在數(shù)據(jù)處理和運(yùn)算能力上大大超出定點(diǎn)DSP,處理除法運(yùn)算也比定點(diǎn)DSP更為簡單。但是定點(diǎn)DSP每器件產(chǎn)品的價格更低,這對大規(guī)模的大眾市場應(yīng)用而言是相當(dāng)重要的優(yōu)勢,也是定點(diǎn)器件至今仍是業(yè)界主流的主要原因。所以,討論定點(diǎn)DSP中除法的實(shí)現(xiàn)仍不失其意義。在定點(diǎn)DSP中雖然已經(jīng)有人給出除法的算法,但是由于其運(yùn)算的復(fù)雜和精度難以如愿,致使一些帶有除法的好的算法在信號處理中難以得到應(yīng)用。
為了提高運(yùn)算結(jié)果的精度,本文在已有除法算法的基礎(chǔ)上進(jìn)行了一些改進(jìn),最大限度地保證了結(jié)果的精度。最后在TI公司的TMS320C5416芯片里具體實(shí)現(xiàn)并驗(yàn)證了這一高精度除法。
1 經(jīng)典算法
DSP中沒有現(xiàn)成的除法指令,除法是靠被除數(shù)與除數(shù)之間的移位相減來實(shí)現(xiàn)的。在C54X系列里利用減法指令SUBC和循環(huán)指令RPT實(shí)現(xiàn)2個16位數(shù)的相除。下面以C54X為例來具體實(shí)現(xiàn)經(jīng)典的除法:
C54X提供的SuBC指令僅對無符號數(shù)進(jìn)行操作,所以在移位相減開始之前必須先將被除數(shù)和除數(shù)取絕對值,僅考慮2個正數(shù)的除法。此時除法運(yùn)算有兩種情況:
當(dāng)|被除數(shù)||除數(shù)|時,將|被除數(shù)|存放在累加器的高16位,然后用SUBC完成15次移位相減,相減之后在累加器A的低16位中存放商的絕對值。根據(jù)運(yùn)算前被除數(shù)和除數(shù)的符號是否相同來決定是否要改變所得結(jié)果的符號。
當(dāng)|被除數(shù)|≥|除數(shù)|時,將|被除數(shù)|存放在累加器的低16位,然后用SUBC完成16次移位相減,相減之后在累加器A的低16位中存放商的絕對值。根據(jù)運(yùn)算前被除數(shù)和除數(shù)的符號是否相同來決定是否要改變所得結(jié)果的符號。
從實(shí)現(xiàn)的過程分析,當(dāng)|被除數(shù)||除數(shù)|時,移位相減開始時|被除數(shù)|和|除數(shù)|的小數(shù)點(diǎn)位置正好相差一位。第一次相減后在累加器A的O位最低位存進(jìn)的數(shù)值正是商的最高位,該位為商的小數(shù)點(diǎn)后第一位。在15次移位相減之后,累加器A低16位所得的結(jié)果為Q值為15的小數(shù)。當(dāng)|被除數(shù)|≥|除數(shù)|時,在第l6次相減時,|被除數(shù)|位于A的高16位(30~15位)上,小數(shù)點(diǎn)位在A的15位后,和|除數(shù)|的小數(shù)點(diǎn)位正好對齊,則此次相減后在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ù)來說明。
評論