DSP技術(shù)與DSP芯片第8章_第1頁
DSP技術(shù)與DSP芯片第8章_第2頁
DSP技術(shù)與DSP芯片第8章_第3頁
DSP技術(shù)與DSP芯片第8章_第4頁
DSP技術(shù)與DSP芯片第8章_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

DSP器件實(shí)現(xiàn)數(shù)字信號(hào)處理

用DSP器件實(shí)現(xiàn)FFT變換

傅里葉變換的快速算法FFT使得DFT的計(jì)算大大簡化,從而使DFT在實(shí)際應(yīng)用中得到了廣泛的運(yùn)用。DSP芯片的硬件結(jié)構(gòu)使得FFT的計(jì)算變得更加快捷。FFT算法的C實(shí)現(xiàn)FFT算法分為3個(gè)步驟:首先,把N點(diǎn)的時(shí)域信號(hào)分解成N個(gè)時(shí)域信號(hào),每個(gè)信號(hào)都由單點(diǎn)組成,并計(jì)算這N個(gè)信號(hào)的頻譜。然后將輸入序列整理成位序顛倒的次序,為FFT變換做準(zhǔn)備。最后通過3個(gè)循環(huán)套計(jì)算FFT變換。最外層的循環(huán)是執(zhí)行劃分級(jí)數(shù)的,一共分為Log2N級(jí)。兩個(gè)內(nèi)循環(huán)的作用是濾去FFT子頻譜,合成高一級(jí)的子頻譜。中循環(huán)循環(huán)次數(shù)為所需濾去子頻譜總數(shù)的一半。最內(nèi)層循環(huán)是對(duì)每一個(gè)頻譜進(jìn)行蝶形運(yùn)算。輸入序列顛倒次序使用的是雷德(Rader)算法。雷德算法是實(shí)現(xiàn)數(shù)據(jù)按二進(jìn)制反序重排的有效算法。其中i表示順序數(shù)序號(hào),j則與反序數(shù)相對(duì)應(yīng)。循環(huán)語句使i逐一增加,并計(jì)算與之相對(duì)應(yīng)的反序數(shù)。這種計(jì)算的核心是一種“反向加法”,即每一次在最高位加上二進(jìn)制數(shù)字“1”,并按反方向(自左向右)進(jìn)行位運(yùn)算。如果最高位原來是“0”,則加上“1”,對(duì)應(yīng)的普通運(yùn)算就是一個(gè)小于N/2的數(shù)加上N/2;如果最高位原來是“1”,則使最高位變成“0”,而且向右一位進(jìn)“1”,對(duì)應(yīng)的普通的運(yùn)算是先把大于或等于N/2的數(shù)減去N/2,然后對(duì)次高位進(jìn)行同樣的反向加法運(yùn)算,以此類推。N=8,雷德算法的實(shí)現(xiàn)過程FFT算法的C54x實(shí)現(xiàn)在C54x系列的DSP上做FFT運(yùn)算時(shí),應(yīng)充分利用DSP芯片所提供的各種資源,包括片內(nèi)RAM和專為FFT運(yùn)算提供的比特反轉(zhuǎn)尋址方式。FFT算法處理的輸入序列是復(fù)數(shù)序列,但是實(shí)際應(yīng)用中輸入序列一般是實(shí)數(shù)序列。這時(shí)可以將實(shí)數(shù)序列看作虛部為0的復(fù)數(shù)序列。FFT算法程序首先對(duì)輸入序列進(jìn)行位倒序,使得序列順序符合FFT算法的要求,然后對(duì)序列進(jìn)行FFT運(yùn)算得出結(jié)果。當(dāng)輸入序列為實(shí)數(shù)序列時(shí),一個(gè)優(yōu)化的實(shí)數(shù)FFT算法是一個(gè)組合以后的算法。原始的2N個(gè)點(diǎn)的實(shí)數(shù)輸入序列組合構(gòu)成一個(gè)N點(diǎn)復(fù)數(shù)序列,然后對(duì)復(fù)數(shù)序列進(jìn)行N點(diǎn)的FFT運(yùn)算,最后再由N點(diǎn)復(fù)數(shù)輸出拆散成2N點(diǎn)的實(shí)數(shù)序列,與原始2N點(diǎn)的實(shí)數(shù)輸入序列的DFT輸出一致。使用這種方法,在組合輸入和拆散輸出的操作過程中,F(xiàn)FT運(yùn)算量減半。這樣,利用實(shí)數(shù)FFT算法來計(jì)算實(shí)數(shù)輸入的DFT的速度幾乎是一般復(fù)數(shù)FFT算法的兩倍。

⑴實(shí)數(shù)FFT運(yùn)算的存儲(chǔ)區(qū)分配程序開始時(shí),原始2N點(diǎn)實(shí)數(shù)輸入序列a(n)存儲(chǔ)在4N個(gè)字的數(shù)據(jù)緩沖器的低半部分。⑵實(shí)數(shù)FFT算法。下面給出的實(shí)數(shù)FFT算法是以2為基數(shù)的運(yùn)算,其步驟分為下面4步。1)輸入數(shù)據(jù)的組合和位倒序。輸入序列位倒序的目的是使整個(gè)運(yùn)算的最后輸出使自然順序的序列。首先,將原始輸入的2N個(gè)點(diǎn)的實(shí)數(shù)序列復(fù)制到標(biāo)記有“real_fft_input”存儲(chǔ)器的相鄰單元,作為N點(diǎn)的復(fù)數(shù)序列d[n]。偶數(shù)地址是d[n]的實(shí)部,奇數(shù)地址是d[n]的虛部。這個(gè)過程叫組合。然后,復(fù)數(shù)序列經(jīng)過位倒序,存儲(chǔ)在數(shù)據(jù)處理緩沖區(qū)中,標(biāo)記為fft_data。如圖所示,輸入實(shí)數(shù)序列為a(n),n=0,1,2,3,…,2N-1。存儲(chǔ)區(qū)分為兩個(gè)部分,對(duì)16點(diǎn)FFT來說,如圖所示。原始的輸入序列是從地址0C10h到0C1Fh,組合序列地址從0C00h到0C0Fh。d(n)表示復(fù)數(shù)FFT的輸入,r(n)表示實(shí)部,i(n)表示虛部。

d(n)=r(n)+ji(n)按位倒序方式存儲(chǔ)d(n)到數(shù)據(jù)處理緩沖器中,如圖所示。2)N點(diǎn)復(fù)數(shù)FFT運(yùn)算。在這一步中,數(shù)據(jù)處理緩沖區(qū)進(jìn)行N點(diǎn)復(fù)數(shù)FFT運(yùn)算。Q15格式的旋轉(zhuǎn)因子存儲(chǔ)在兩個(gè)分離的表中,分別是正弦項(xiàng)和余弦項(xiàng)。每個(gè)表有512個(gè)值,分別對(duì)應(yīng)0°~180°。索引表在系統(tǒng)中的使用,允許對(duì)不同大小的輸入采用同一張表。因?yàn)椴捎醚h(huán)尋址來對(duì)表進(jìn)行尋址,因此每張表的起始地址低8位必須為0。對(duì)d(n)進(jìn)行N點(diǎn)復(fù)數(shù)FFT運(yùn)算,結(jié)果表示為:D[k]=F{d(n)}=R[k]+jI[k]其中,R[k]和I[k]分別是D[k]的實(shí)部和虛部。FFT運(yùn)算完成后,結(jié)果序列D[k]就存儲(chǔ)到數(shù)據(jù)處理緩沖器的上半部分,如圖所示。下半部分仍然保留原始的輸入序列a(n),這將在下一步中改寫。原始a(n)序列的所有DFT運(yùn)算結(jié)果都在D[k]中了,接下來的工作就是把D[k]變?yōu)樽罱K的2N點(diǎn)復(fù)數(shù)序列,A[k]=F{a(n)}。3)分離奇數(shù)和偶數(shù)部分。分離FFT輸出為相關(guān)的4個(gè)序列:RP,RM,IP和IM,即偶實(shí)數(shù)、奇實(shí)數(shù)、偶虛數(shù)和奇虛數(shù)4個(gè)部分。D[k]通過下面的公式分為偶實(shí)數(shù)RP[k]、奇實(shí)數(shù)RM[k]、偶虛數(shù)IP[k]和奇虛數(shù)IM[k]。

RP[k]=RP[N–k]=(R[k]+R[N–k])/2RM[k]=–RM[N–k]=(R[k]–R[N–k])/2IP[k]=IP[N–k]=(I[k]+I[N–k])/2IM[k]=–IM[N–k]=(I[k]–I[N–k])/2RP[0]=R[0]IP[0]=I[0]RM[0]=IM[0]=RM[N/2]=IM[N/2]=0RP[N/2]=R[N/2]IP[N/2]=I[N/2]

右圖給出了第三步完成以后存儲(chǔ)器中的數(shù)據(jù)存儲(chǔ)情況,RP[k]和IP[k]存儲(chǔ)在上半部分,RM[k]和IM[k]存儲(chǔ)在下半部分。4)拆散產(chǎn)生最后輸出。最后這一步產(chǎn)生2N個(gè)點(diǎn)的復(fù)數(shù)輸出,它與原始的2N實(shí)數(shù)輸入序列的DFT一致。輸出駐留在數(shù)據(jù)緩沖區(qū)中。AR[k]=AR[2N–k]=RP[k]+cos(kp/N)*IP[k]–sin(kp/N)*RM[k]AI[k]=–AI[2N–k]=IM[k]–cos(kp/N)*RM[k]–sin(kp/N)*IP[k]AR[0]=RP[0]+IP[0]AI[0]=IM[0]–RM[0]AR[N]=R[0]–I[0]AI[N]=0其中A[k]=A[2N–k]=AR[k]+jAI[k]=F{a(n)}最終實(shí)數(shù)FFT輸出按照實(shí)數(shù)、虛數(shù)的自然順序填滿整個(gè)4N字節(jié)的數(shù)據(jù)緩沖區(qū),如圖所示。FFT算法是DSP處理中的一個(gè)非常重要的算法,它的運(yùn)算效率直接影響著DSP系統(tǒng)實(shí)際性能。實(shí)數(shù)運(yùn)算的C54x代碼可參見《TMS320C54xDSPApplicationGuide》的實(shí)例內(nèi)容。用DSP器件實(shí)現(xiàn)IIR

IIR濾波器是數(shù)字信號(hào)處理中得到了廣泛的應(yīng)用。它的傳輸函數(shù)為:傳輸函數(shù)有零點(diǎn)和極點(diǎn)。它的輸出依賴于輸入和之前的輸出。IIR濾波器所需的計(jì)算量比FIR濾波器要少,但是它有穩(wěn)定問題。濾波器系數(shù)對(duì)系數(shù)量化非常敏感。如圖所示是一個(gè)典型的IIR濾波器結(jié)構(gòu)。IIR濾波器經(jīng)常會(huì)通過級(jí)聯(lián)的二階節(jié)來構(gòu)成,如圖所示。用DSP器件實(shí)現(xiàn)FIR在數(shù)字濾波器中,F(xiàn)IR濾波器具有如下3個(gè)優(yōu)點(diǎn)??梢栽诜忍匦噪S意設(shè)計(jì)的同時(shí),保證精確、嚴(yán)格的線性相位。由于FIR濾波器的單位脈沖響應(yīng)h(n)是有限長序列,因此FIR濾波器沒有不穩(wěn)定的問題。由于FIR濾波器一般為非遞歸結(jié)構(gòu),因此在有限精度運(yùn)算下,不會(huì)出現(xiàn)遞歸型結(jié)構(gòu)中的極限震蕩等不穩(wěn)定現(xiàn)象,誤差較小。如果FIR濾波器的沖擊響應(yīng)為h(0),h(1),…,h(N-1),x(n)表示濾波器在n時(shí)刻的輸入,則n時(shí)刻的輸出為:

y(n)=h(0)x(n)+h(1)x(n–1)+h(2)x(n–2)+...+h(N–1)x[n–(N–1)]下圖說明使用循環(huán)尋址實(shí)現(xiàn)FIR濾波器的方法。為建立循環(huán)尋址,首先要初始化BK,塊長為N。數(shù)據(jù)緩沖區(qū)和沖擊響應(yīng)(即濾波器系數(shù)COFF_FIR)的起始地址必須是大于N的2的最小次方的倍數(shù)。例如N=11,那么數(shù)據(jù)緩沖區(qū)的第一個(gè)地址應(yīng)是16的倍數(shù),起始地址的最低4位必為0。FIR濾波器可以在循環(huán)尋址模式下,使用帶MAC指令匯編程序?qū)崿F(xiàn)。對(duì)于特殊的FIR濾波器可以利用C54x系列芯片的循環(huán)尋址和FIRS指令來實(shí)現(xiàn)。如圖所示為中心點(diǎn)對(duì)稱的FIR濾波器,它具有線性相位響應(yīng)特性,因而在數(shù)字信號(hào)處理中得到了廣泛應(yīng)用。長度為N的線性相位FIR濾波器的輸出表達(dá)式和結(jié)構(gòu)圖為:下圖顯示輸入序列在兩個(gè)循環(huán)緩沖區(qū)里的存儲(chǔ)區(qū)里的存儲(chǔ)情況。要建立緩沖區(qū),首先要將循環(huán)緩沖區(qū)大小寄存器的值設(shè)為N/2,輔助寄存器AR4指向緩沖區(qū)1的頂部,AR5指到緩沖區(qū)2的底部。新來的一個(gè)抽樣存儲(chǔ)到緩沖區(qū)1中時(shí),應(yīng)先將緩沖區(qū)1頂部的數(shù)據(jù)移到緩沖區(qū)2的底部,然后DSP芯片進(jìn)行乘累加運(yùn)算,即h(0){x(0)+x(–N+1)},每步運(yùn)算后,AR4指向緩沖區(qū)1的下一個(gè)數(shù)據(jù)單元,而AR5則指向緩沖區(qū)2的上一個(gè)數(shù)據(jù)單元。比如,下圖中一步運(yùn)算結(jié)束后,AR4指向地址1,AR5指向地

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論