DSPIIR設計C語言編程_第1頁
DSPIIR設計C語言編程_第2頁
DSPIIR設計C語言編程_第3頁
DSPIIR設計C語言編程_第4頁
DSPIIR設計C語言編程_第5頁
已閱讀5頁,還剩17頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、word基于DSP的IIR濾波器設計姓 名: 專 業: 學 號: 指導教師: 日期:1、 設計目的為了熟練使用DSP,在本課程結束之際,利用所學的數字信號處理知識設計一IIR濾波器,并在基于DSP平臺的仿真軟件CCS下通過軟件模擬仿真實現根本的濾波功能,其中輸入信號和濾波器的各個參數自行確定。首先可以借助Matlab來產生輸入數據,并根據輸入信號確定濾波器參數,然后根據產生濾波器參數在CCS下編寫程序實現濾波器功能,最后進行濾波器性能的測試,完本錢次課程設計。本設計中使用的信號為信息信號: signal=sin(2*pi*sl*n*T)高頻噪聲: noise =0.5*sin(2*pi*ns1

2、*n*T)混合信號: x=(signal+noise)其中sl=1000Hz,ns1=4500Hz,T=1/10000。混合信號波形為濾波器輸入信號波形,信息信號波形為輸出信號波形,濾波器的效果為濾除兩個高頻噪聲。2、 IIR濾波器根本理論數字濾波器根據其沖激響應函數的時域特性,可分為兩種,即無限長沖激響應(IIR)數字濾波器和有限長沖激響應(FIR)數字濾波器。IIR濾波器與FIR濾波器相比,具有相位特性差的缺點,但它的結構簡單,運算量小,具有經濟、高效的特點,并且可以用較少的階數獲得很高的選擇性。因此也得到了較為廣泛的應用。1IIR濾波器的根本結構 IIR濾波器差分方程的一般表達式為:式中

3、x(n)為輸入序列;y(n)為輸出序列;和為濾波器系數。IIR濾波器具有無限長的單位脈沖響應,在結構上存在反應回路,具有遞歸性,即IIR濾波器的輸出不僅與輸入有關,而且與過去的輸出有關.其傳遞函數為:設計IIR濾波器的任務就是尋求一個物理上可實現的系統函數H(z),使其頻率響應H(z)滿足所希望得到的頻域指標,即符合給定的通帶截止頻率、阻帶截止頻率、通帶衰減系數和阻帶衰減系數。IIR濾波器具有多種形式,主要有:直接型(也稱直接I型)、標準型(也稱直接II型)、變換型、級聯型和并聯型.二階IIR濾波器,又稱為二階根本節,分為直接型、標準型和變換型.對于一個二階IIR濾波器,其輸出可以寫成: a.

4、直接型(直接I型)根據上式可以得到直接二型IIR濾波器的結構圖.如下圖.共使用了4個延遲單元().圖 直接I型二階IIR濾波器直接型二階IIR濾波器還可以用圖的結構實現.圖 直接I型二階IIR濾波器此時,延時變量變成了w(n).可以證明上圖的結構仍滿足二階IIR濾波器輸出方程. b.標準型(直接II型) 從圖2可以看出,左右兩組延遲單元可以重疊,從而得到標準二階IIR濾波器的結構圖,如下圖.由于這種結構所使用的延遲單元最少(只有2個),得到了廣泛地應用,因此稱之為標準型IIR濾波器.圖 標準型二階IIR濾波器2設計方法及原理IIR濾波器的設計可以利用模擬濾波器原型,借鑒成熟的模擬濾波器的設計結

5、果進行雙線性變換,將模擬濾波器變換成滿足預定指標的數字濾波器,即根據模擬設計理論設計出滿足要求的傳遞函數H(s),然后將H(s)變換成數字濾波器的傳遞函數H(z)。設計IIR濾波器的根底是設計模擬濾波器的原型,這些原型濾波器主要有:巴特沃茲(Butterworth)濾波器,其幅度響應在通帶內具有最平特性;切比雪夫(Chebyshev)濾波器,在通帶內具有等波紋特性,且階數小于巴特沃茲濾波器;橢圓(Elliptic)濾波器,在通帶內具有等波紋特性,且階數最小。 a.用脈沖相應不變法設計IIR數字濾波器 利用模擬濾波器來設計數字濾波器,也就是使數字濾波器能模仿模擬濾波器的特性,這種模仿可以從不同的

6、角度出發。脈沖響應不變法是從濾波器的脈沖響應出發,使數字濾波器的單位脈沖響應序列h(n)模仿模擬濾波器的沖激響應ha(t),即將ha(t)進行等間隔采樣,使h(n)正好等于ha(t)的采樣值,滿足h(n)=ha(nT)式中,T是采樣周期。 如果令Ha(s)是ha(t)的拉普拉斯變換,H(z)為h(n)的Z變換,利用采樣序列的Z變換與模擬信號的拉普拉斯變換的關系得那么可看出,脈沖響應不變法將模擬濾波器的S平面變換成數字濾波器的Z平面,這個從s到z的變換z=esT是從S平面變換到Z平面的標準變換關系式。圖 脈沖響應不變法的映射關系 由上式,數字濾波器的頻率響應和模擬濾波器的頻率響應間的關系為這就是

7、說,數字濾波器的頻率響應是模擬濾波器頻率響應的周期延拓。正如采樣定理所討論的,只有當模擬濾波器的頻率響應是限帶的,且帶限于折疊頻率以內時,即 才能使數字濾波器的頻率響應在折疊頻率以內重現模擬濾波器的頻率響應,而不產生混疊失真,即 但是,任何一個實際的模擬濾波器頻率響應都不是嚴格限帶的,變換后就會產生周期延拓分量的頻譜交疊,即產生頻率響應的混疊失真,如下圖。這時數字濾波器的頻響就不同于原模擬濾波器的頻響,而帶有一定的失真。當模擬濾波器的頻率響應在折疊頻率以上處衰減越大、越快時,變換后頻率響應混疊失真就越小。這時,采用脈沖響應不變法設計的數字濾波器才能得到良好的效果。圖 脈沖響應不變法中的頻響混疊

8、現象 對某一模擬濾波器的單位沖激響應ha(t)進行采樣,采樣頻率為fs,假設使fs增加,即令采樣時間間隔T=1/fs減小,那么系統頻率響應各周期延拓分量之間相距更遠,因而可減小頻率響應的混疊效應。脈沖響應不變法優缺點:從以上討論可以看出,脈沖響應不變法使得數字濾波器的單位脈沖響應完全模仿模擬濾波器的單位沖激響應,也就是時域逼近良好,而且模擬頻率和數字頻率之間呈線性關系=T。因而,一個線性相位的模擬濾波器例如貝塞爾濾波器通過脈沖響應不變法得到的仍然是一個線性相位的數字濾波器。脈沖響應不變法的最大缺點是有頻率響應的混疊效應。所以,脈沖響應不變法只適用于限帶的模擬濾波器(例如,衰減特性很好的低通或帶

9、通濾波器),而且高頻衰減越快,混疊效應越小。至于高通和帶阻濾波器,由于它們在高頻局部不衰減,因此將完全混淆在低頻響應中。如果要對高通和帶阻濾波器采用脈沖響應不變法,就必須先對高通和帶阻濾波器加一保護濾波器,濾掉高于折疊頻率以上的頻率,然后再使用脈沖響應不變法轉換為數字濾波器。當然這樣會進一步增加設計復雜性和濾波器的階數。 b.用雙線性變換法設計IIR數字濾波器脈沖響應不變法的主要缺點是產生頻率響應的混疊失真。這是因為從S平面到平面是多值的映射關系所造成的。為了克服這一缺點,可以采用非線性頻率壓縮方法,將整個頻率軸上的頻率范圍壓縮到-/T/T之間,再用z=esT轉換到Z平面上。也就是說,第一步先

10、將整個S平面壓縮映射到S1平面的-/T/T一條橫帶里;第二步再通過標準變換關系z=es1T將此橫帶變換到整個Z平面上去。這樣就使S平面與Z平面建立了一一對應的單值關系,消除了多值變換性,也就消除了頻譜混疊現象,映射關系如下圖。圖 雙線性變換的映射關系為了將S平面的整個虛軸j壓縮到S1平面j1軸上的-/T到/T段上,可以通過以下的正切變換實現式中,T仍是采樣間隔。當1由-/T經過0變化到/T時,由-經過0變化到+,也即映射了整個j軸。將上式寫成將此關系解析延拓到整個S平面和S1平面,令j=s,j1=s1,那么得再將S1平面通過以下標準變換關系映射到Z平面z=es1T從而得到S平面和Z平面的單值映

11、射關系為:上兩式是S平面與Z平面之間的單值映射關系,這種變換都是兩個線性函數之比,因此稱為雙線性變換。首先,把z=ej,可得即S平面的虛軸映射到Z平面的單位圓。其次,將s=+j代入式,得因此由此看出,當<0時,|z|<1;當>0時,|z|>1。也就是說,S平面的左半平面映射到Z平面的單位圓內,S平面的右半平面映射到Z平面的單位圓外,S平面的虛軸映射到Z平面的單位圓上。因此,穩定的模擬濾波器經雙線性變換后所得的數字濾波器也一定是穩定的。 雙線性變換法優缺點雙線性變換法與脈沖響應不變法相比,其主要的優點是防止了頻率響應的混疊現象。這是因為S平面與Z平面是單值的一一對應關系。

12、S平面整個j軸單值地對應于Z平面單位圓一周,即頻率軸是單值變換關系。S平面上與Z平面的成非線性的正切關系,如下圖。由圖7-7看出,在零頻率附近,模擬角頻率與數字頻率之間的變換關系接近于線性關系;但當進一步增加時,增長得越來越慢,最后當時,終止在折疊頻率=處,因而雙線性變換就不會出現由于高頻局部超過折疊頻率而混淆到低頻局部去的現象,從而消除了頻率混疊現象。圖 雙線性變換法的頻率變換關系但是雙線性變換的這個特點是靠頻率的嚴重非線性關系而得到的。由于這種頻率之間的非線性變換關系,就產生了新的問題。首先,一個線性相位的模擬濾波器經雙線性變換后得到非線性相位的數字濾波器,不再保持原有的線性相位了;其次,

13、這種非線性關系要求模擬濾波器的幅頻響應必須是分段常數型的,即某一頻率段的幅頻響應近似等于某一常數這正是一般典型的低通、高通、帶通、帶阻型濾波器的響應特性,不然變換所產生的數字濾波器幅頻響應相對于原模擬濾波器的幅頻響應會有畸變,如下圖。圖 雙線性變換法幅度和相位特性的非線性映射對于分段常數的濾波器,雙線性變換后,仍得到幅頻特性為分段常數的濾波器,但是各個分段邊緣的臨界頻率點產生了畸變,這種頻率的畸變,可以通過頻率的預畸來加以校正。也就是將臨界模擬頻率事先加以畸變,然后經變換后正好映射到所需要的數字頻率上。三、IIR濾波器的MATLAB實現MATLAB輔助DSP 實現IIR ,其總體過程為在DSP

14、中編寫處理程序,在MATLAB中利用濾波器設計、分析工具( FDATOOL) ,根據指定的濾波器性能快速設計一個FIR ,再把濾波器系數以頭文件形式導入CCS 中,頭文件中MATLAB 輔助DSP 實現IIR 數字濾波器含濾波器階數和系數數組,在MATLAB中調試、運行DSP 程序并顯示、分析處理后的數據。使用該方法,便于采用匯編語言來實現程序。頭文件名不變,當MATLAB中設計的濾波器系數改變時,相應頭文件中系數也改變,方便程序調試、仿真。1輸入信號的產生首先利用Matlab產生導入CCS的dat文件,具體實現如下代碼所示sl=1000; %有效信號ns1=4500; %高頻噪聲fs=100

15、00; %采樣頻率N=1000;T=1/fs;n=0:N;signal=sin(2*pi*sl*n*T);noise=0.5*sin(2*pi*ns1*n*T);x=(signal+noise);%待濾波信號figure(1)plot(x)figure(2)y=abs(fft(x);%待濾波頻譜df=n*(fs/N);plot(df,y)figure(3)plot(signal)figure(4)ysignal=abs(fft(signal);%濾波后頻譜df=n*(fs/N);plot(df,ysignal)%濾波數據導出xout=x/max(x); %歸一化xto_css=round(32

16、767*xout);%數據取整xoutcss=xto_css;fid=fopen('iir_input.dat','w'); %翻開文件fprintf(fid,'1651 1 0 0 0n');%輸出文件頭fprintf(fid,'%dn',xoutcss); %輸出fclose(fid);產生的時域波形如下圖:圖 輸入信號波形頻譜如下圖:圖 輸入頻譜經過濾波器后的預期時域波形如圖:圖 輸出時域波形頻譜如下圖圖 輸出頻譜(2) 濾波器的設計MATLAB集成了一套功能強大的濾波器設計工具FDAToolFilter Design &a

17、mp; Analysis Tool,可以完成多種濾波器的設計、分析和性能評估。a.翻開Filter Design & Analysis Tool單擊MATLAB主窗口下方的“Start按鈕,選擇菜單“ToolBox “Filter Design “Filter Design & Analysis ToolFDATool命令,翻開FDATool,如下圖。圖 fadatool的啟動b.產生濾波器 階數為2階,這里應填1,比階數少1。IIR類型選擇切比雪夫型I型chebyshev采樣頻率為10000Hz,通帶截止頻率為1000Hz。圖 濾波器的幅頻特性圖 濾波器的相位特性c.產生濾波

18、器系數和頭文件圖 濾波器系數圖 頭文件的產生最后將產生的頭文件中的濾波器系數數組放入編寫好的濾波器函數中,并在進行CCS中進行調試與測試。4、 FIR濾波器的Simulink仿真通過Matlab的 FDATOOL設計濾波器后,為了確認該濾波器是否有效,現通過simulink進行建模仿真觀察該濾波器是否有效。把兩個信號通過加法器相加后,再通過FDATOOL設計的濾波器即可。注意此處設計的是數字濾波器,需要把三個輸入信號數字化。具體仿真模型建立如下:分別觀察濾波前后的時域波形圖圖 濾波前時域波形圖 濾波后時域波形五、IIR濾波器的DSP實現1標準型二階IIR濾波器的實現在二階IIR濾波器結構中,標

19、準型結構是最常見的濾波器結構,其結構如下圖:圖 標準型二階IIR濾波器 由其差分方程對二階IIR濾波器進行編程,其中乘法-累加運算可采用單操作數指令或雙操作數指令,數據和系數可存放在DARAM中,如下圖:圖 雙操作數數據存放和系數表2直接型二階IIR濾波器的實現二階IIR濾波器可以用直接型結構來實現.在迭代運算中,先衰減后增益,系統的動態范圍和魯棒性要好些.直接型二階IIR濾波器的結構如下圖:圖 直接型二階IIR濾波器為了實現直接型濾波,可在DARAM中開辟4個循環緩沖區,用來存放變量和系數,并采用循環緩沖區方式尋址.這4個循環緩沖區的結構如下圖:圖 循環緩沖區結構(2) C語言實現IIR采用

20、C語言算法在DSP平臺上實現了FIR低通數字濾波器,C語言算法相比于匯編算法可移植性很強。這里是在TMS320VC5510DSP為平臺編寫的C語言算法, 此算法可以稍加改動用在其他DSP芯片上, 而匯編算法那么不然。這種方法具有以下優點:(a) 程序的入口和出口由C語言自動管理,不必手工編寫匯編程序實現。(b) 程序結構清晰,可讀性強。(c) 程序調試方便。由于C程序中的變量全部由C語言來定義,因此采用C源碼調試器可以方便地觀察C語言變量。(d) 可移植性較強,通用性較好。具體代碼如下:#include"math.h" #define IIRNUMBER 2 /濾波器的階數

21、 int InputWave(); /函數申明int IIR(); /IIR濾波函數float fBnIIRNUMBER= 0.0,0.7757 ; float fAnIIRNUMBER= 0.1122,0.1122 ; /濾波器系數 float fXnIIRNUMBER= 0.0 ; float fYnIIRNUMBER= 0.0 ; int fInput,fOutput; int i,m=0; int fIn256,fOut256; /輸入輸出緩存int input256; int nIn,nOut; main() nIn=0; nOut=0; fInput=fOutput=0; whil

22、e ( 1 ) fInput=InputWave(); /從數據中導入數據到輸入緩存 fInnIn=fInput; nIn+; nIn%=256; /保證數據緩存不溢出 fOutput=IIR(); /調用IIR濾波函數 fOutnOut=fOutput; /放入輸出緩存 nOut+; if ( nOut>=256 ) /保證數據緩存不溢出 nOut=0; int InputWave() /處理輸入數據 for ( i=IIRNUMBER-1;i>0;i- ) fXni=fXni-1; fYni=fYni-1; fXn0=inputm; fYn0=0.0; m+;m%=256; r

23、eturn(fXn0); int IIR() /IIR濾波函數 int fSum; fSum=0; for ( i=0;i<IIRNUMBER;i+ ) fSum+=(fXni*fAni); /輸入乘累加 fSum+=(fYni*fBni); /輸出乘累加 return(fSum); (3) CSS仿真調試CCS 是TI 推出的用于開發其DSP 芯片的繼承開發調試工具, 集編輯、編譯、鏈接、軟件仿真、硬件調試及實時跟蹤等功能于一體, 極大地方便了DSP 程序的設計與開發, 此外還提供圖形顯示功能, 方便用戶觀察特定地址的波形。此外, 還需向工程中添加Link. cmd文件源碼見附錄。在C

24、CSV3.3中建立工程,把c源代碼和 d文件導入后,外加rts. lib文件,它是TI提供的運行時支持庫, 如果是C代碼寫的源程序, 必須要包含該庫,該庫由TI公司做好放在CCS cgtools lib中, 源代碼TI網站可以下載。添加完成后,編譯通過后,下載.out文件,導入.dat文件后運行程序。工程建立如下:圖 工程建立采用CCS 的圖形顯示功能, 分別觀察輸入信號x ( n)、輸出信號y ( n)的時域波形和頻域波形, 輸入信號波形如下圖。圖 濾波前時域波形圖 濾波前頻譜圖經過濾波后,觀察輸出波形如下圖 濾波后時域波形圖 濾波后頻譜圖為了更加直觀的觀察濾波器的性能和濾波效果,把濾波前后的時域波形和頻譜圖進行比照和分析,具體如下:圖 濾波前后比照時域和頻譜從上圖中可以看出,輸入信號明顯有高頻噪聲,波形有很明顯的失真。從輸入頻譜分析,可以看出除了有1000Hz的信息信

溫馨提示

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

評論

0/150

提交評論