基于.DSP的IIR設計(C語言編程)_第1頁
基于.DSP的IIR設計(C語言編程)_第2頁
基于.DSP的IIR設計(C語言編程)_第3頁
基于.DSP的IIR設計(C語言編程)_第4頁
基于.DSP的IIR設計(C語言編程)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

...wd......wd......wd...基于DSP的IIR濾波器設計姓名:專業(yè):學號:指導教師:日期:設計目的為了熟練使用DSP,在本課程完畢之際,利用所學的數(shù)字信號處理知識設計一IIR濾波器,并在基于DSP平臺的仿真軟件CCS下通過軟件模擬仿真實現(xiàn)基本的濾波功能,其中輸入信號和濾波器的各個參數(shù)自行確定。首先可以借助Matlab來產(chǎn)生輸入數(shù)據(jù),并根據(jù)輸入信號確定濾波器參數(shù),然后根據(jù)產(chǎn)生濾波器參數(shù)在CCS下編寫程序?qū)崿F(xiàn)濾波器功能,最后進展濾波器性能的測試,完成本次課程設計。本設計中使用的信號為信息信號:signal=sin(2*pi*sl*n*T)高頻噪聲:noise=0.5*sin(2*pi*ns1*n*T)混合信號:x=(signal+noise)其中sl=1000Hz,ns1=4500Hz,T=1/10000?;旌闲盘柌ㄐ螢闉V波器輸入信號波形,信息信號波形為輸出信號波形,濾波器的效果為濾除兩個高頻噪聲。數(shù)字濾波器根據(jù)其沖激響應函數(shù)的時域特性,可分為兩種,即無限長沖激響應(IIR)數(shù)字濾波器和有限長沖激響應(FIR)數(shù)字濾波器。IIR濾波器與FIR濾波器相比,具有相位特性差的缺點,但它的構(gòu)造簡單,運算量小,具有經(jīng)濟、高效的特點,并且可以用較少的階數(shù)獲得很高的選擇性。因此也得到了較為廣泛的應用?!?〕IIR濾波器的基本構(gòu)造IIR濾波器差分方程的一般表達式為:式中x(n)為輸入序列;y(n)為輸出序列;和為濾波器系數(shù)。IIR濾波器具有無限長的單位脈沖響應,在構(gòu)造上存在反響回路,具有遞歸性,即IIR濾波器的輸出不僅與輸入有關,而且與過去的輸出有關.其傳遞函數(shù)為:設計IIR濾波器的任務就是尋求一個物理上可實現(xiàn)的系統(tǒng)函數(shù)H(z),使其頻率響應H(z)滿足所希望得到的頻域指標,即符合給定的通帶截止頻率、阻帶截止頻率、通帶衰減系數(shù)和阻帶衰減系數(shù)。IIR濾波器具有多種形式,主要有:直接型(也稱直接I型)、標準型(也稱直接II型)、變換型、級聯(lián)型和并聯(lián)型.二階IIR濾波器,又稱為二階基本節(jié),分為直接型、標準型和變換型.對于一個二階IIR濾波器,其輸出可以寫成:a.直接型(直接I型)根據(jù)上式可以得到直接二型IIR濾波器的構(gòu)造圖.如以下列圖.共使用了4個延遲單元().圖直接I型二階IIR濾波器直接型二階IIR濾波器還可以用圖的構(gòu)造實現(xiàn).圖直接I型二階IIR濾波器此時,延時變量變成了w(n).可以證明上圖的構(gòu)造仍滿足二階IIR濾波器輸出方程.b.標準型(直接II型)從圖2可以看出,左右兩組延遲單元可以重疊,從而得到標準二階IIR濾波器的構(gòu)造圖,如以下列圖.由于這種構(gòu)造所使用的延遲單元最少(只有2個),得到了廣泛地應用,因此稱之為標準型IIR濾波器.圖標準型二階IIR濾波器〔2〕設計方法及原理IIR濾波器的設計可以利用模擬濾波器原型,借鑒成熟的模擬濾波器的設計結(jié)果進展雙線性變換,將模擬濾波器變換成滿足預定指標的數(shù)字濾波器,即根據(jù)模擬設計理論設計出滿足要求的傳遞函數(shù)H(s),然后將H(s)變換成數(shù)字濾波器的傳遞函數(shù)H(z)。設計IIR濾波器的根基是設計模擬濾波器的原型,這些原型濾波器主要有:①巴特沃茲(Butterworth)濾波器,其幅度響應在通帶內(nèi)具有最平特性;②切比雪夫(Chebyshev)濾波器,在通帶內(nèi)具有等波紋特性,且階數(shù)小于巴特沃茲濾波器;③橢圓(Elliptic)濾波器,在通帶內(nèi)具有等波紋特性,且階數(shù)最小。a.用脈沖相應不變法設計IIR數(shù)字濾波器利用模擬濾波器來設計數(shù)字濾波器,也就是使數(shù)字濾波器能模仿模擬濾波器的特性,這種模仿可以從不同的角度出發(fā)。脈沖響應不變法是從濾波器的脈沖響應出發(fā),使數(shù)字濾波器的單位脈沖響應序列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平面變換成數(shù)字濾波器的Z平面,這個從s到z的變換z=esT是從S平面變換到Z平面的標準變換關系式。圖脈沖響應不變法的映射關系由上式,數(shù)字濾波器的頻率響應和模擬濾波器的頻率響應間的關系為這就是說,數(shù)字濾波器的頻率響應是模擬濾波器頻率響應的周期延拓。正如采樣定理所討論的,只有當模擬濾波器的頻率響應是限帶的,且?guī)抻谡郫B頻率以內(nèi)時,即才能使數(shù)字濾波器的頻率響應在折疊頻率以內(nèi)重現(xiàn)模擬濾波器的頻率響應,而不產(chǎn)生混疊失真,即但是,任何一個實際的模擬濾波器頻率響應都不是嚴格限帶的,變換后就會產(chǎn)生周期延拓分量的頻譜交疊,即產(chǎn)生頻率響應的混疊失真,如以下列圖。這時數(shù)字濾波器的頻響就不同于原模擬濾波器的頻響,而帶有一定的失真。當模擬濾波器的頻率響應在折疊頻率以上處衰減越大、越快時,變換后頻率響應混疊失真就越小。這時,采用脈沖響應不變法設計的數(shù)字濾波器才能得到良好的效果。圖脈沖響應不變法中的頻響混疊現(xiàn)象對某一模擬濾波器的單位沖激響應ha(t)進展采樣,采樣頻率為fs,假設使fs增加,即令采樣時間間隔〔T=1/fs〕減小,那么系統(tǒng)頻率響應各周期延拓分量之間相距更遠,因而可減小頻率響應的混疊效應。脈沖響應不變法優(yōu)缺點:從以上討論可以看出,脈沖響應不變法使得數(shù)字濾波器的單位脈沖響應完全模仿模擬濾波器的單位沖激響應,也就是時域逼近良好,而且模擬頻率Ω和數(shù)字頻率ω之間呈線性關系ω=ΩT。因而,一個線性相位的模擬濾波器〔例如貝塞爾濾波器〕通過脈沖響應不變法得到的仍然是一個線性相位的數(shù)字濾波器。脈沖響應不變法的最大缺點是有頻率響應的混疊效應。所以,脈沖響應不變法只適用于限帶的模擬濾波器(例如,衰減特性很好的低通或帶通濾波器),而且高頻衰減越快,混疊效應越小。至于高通和帶阻濾波器,由于它們在高頻局部不衰減,因此將完全混淆在低頻響應中。如果要對高通和帶阻濾波器采用脈沖響應不變法,就必須先對高通和帶阻濾波器加一保護濾波器,濾掉高于折疊頻率以上的頻率,然后再使用脈沖響應不變法轉(zhuǎn)換為數(shù)字濾波器。當然這樣會進一步增加設計復雜性和濾波器的階數(shù)。b.用雙線性變換法設計IIR數(shù)字濾波器脈沖響應不變法的主要缺點是產(chǎn)生頻率響應的混疊失真。這是因為從S平面到Z平面是多值的映射關系所造成的。為了抑制這一缺點,可以采用非線性頻率壓縮方法,將整個頻率軸上的頻率范圍壓縮到-π/T~π/T之間,再用z=esT轉(zhuǎn)換到Z平面上。也就是說,第一步先將整個S平面壓縮映射到S1平面的-π/T~π/T一條橫帶里;第二步再通過標準變換關系z=es1T將此橫帶變換到整個Z平面上去。這樣就使S平面與Z平面建設了一一對應的單值關系,消除了多值變換性,也就消除了頻譜混疊現(xiàn)象,映射關系如以下列圖。圖雙線性變換的映射關系為了將S平面的整個虛軸jΩ壓縮到S1平面jΩ1軸上的-π/T到π/T段上,可以通過以下的正切變換實現(xiàn)式中,T仍是采樣間隔。當Ω1由-π/T經(jīng)過0變化到π/T時,Ω由-∞經(jīng)過0變化到+∞,也即映射了整個jΩ軸。將上式寫成將此關系解析延拓到整個S平面和S1平面,令jΩ=s,jΩ1=s1,那么得再將S1平面通過以下標準變換關系映射到Z平面z=es1T從而得到S平面和Z平面的單值映射關系為:上兩式是S平面與Z平面之間的單值映射關系,這種變換都是兩個線性函數(shù)之比,因此稱為雙線性變換。首先,把z=ejω,可得即S平面的虛軸映射到Z平面的單位圓。其次,將s=σ+jΩ代入式,得因此由此看出,當σ<0時,|z|<1;當σ>0時,|z|>1。也就是說,S平面的左半平面映射到Z平面的單位圓內(nèi),S平面的右半平面映射到Z平面的單位圓外,S平面的虛軸映射到Z平面的單位圓上。因此,穩(wěn)定的模擬濾波器經(jīng)雙線性變換后所得的數(shù)字濾波器也一定是穩(wěn)定的。雙線性變換法優(yōu)缺點雙線性變換法與脈沖響應不變法相比,其主要的優(yōu)點是防止了頻率響應的混疊現(xiàn)象。這是因為S平面與Z平面是單值的一一對應關系。S平面整個jΩ軸單值地對應于Z平面單位圓一周,即頻率軸是單值變換關系。S平面上Ω與Z平面的ω成非線性的正切關系,如以下列圖。由圖7-7看出,在零頻率附近,模擬角頻率Ω與數(shù)字頻率ω之間的變換關系接近于線性關系;但當Ω進一步增加時,ω增長得越來越慢,最后當Ω→∞時,ω終止在折疊頻率ω=π處,因而雙線性變換就不會出現(xiàn)由于高頻局部超過折疊頻率而混淆到低頻局部去的現(xiàn)象,從而消除了頻率混疊現(xiàn)象。圖雙線性變換法的頻率變換關系但是雙線性變換的這個特點是靠頻率的嚴重非線性關系而得到的。由于這種頻率之間的非線性變換關系,就產(chǎn)生了新的問題。首先,一個線性相位的模擬濾波器經(jīng)雙線性變換后得到非線性相位的數(shù)字濾波器,不再保持原有的線性相位了;其次,這種非線性關系要求模擬濾波器的幅頻響應必須是分段常數(shù)型的,即某一頻率段的幅頻響應近似等于某一常數(shù)〔這正是一般典型的低通、高通、帶通、帶阻型濾波器的響應特性〕,不然變換所產(chǎn)生的數(shù)字濾波器幅頻響應相對于原模擬濾波器的幅頻響應會有畸變,如以下列圖。圖雙線性變換法幅度和相位特性的非線性映射對于分段常數(shù)的濾波器,雙線性變換后,仍得到幅頻特性為分段常數(shù)的濾波器,但是各個分段邊緣的臨界頻率點產(chǎn)生了畸變,這種頻率的畸變,可以通過頻率的預畸來加以校正。也就是將臨界模擬頻率事先加以畸變,然后經(jīng)變換后正好映射到所需要的數(shù)字頻率上。三、IIR濾波器的MATLAB實現(xiàn)MATLAB輔助DSP實現(xiàn)IIR,其總體過程為在DSP中編寫處理程序,在MATLAB中利用濾波器設計、分析工具(FDATOOL),根據(jù)指定的濾波器性能快速設計一個FIR,再把濾波器系數(shù)以頭文件形式導入CCS中,頭文件中MATLAB輔助DSP實現(xiàn)IIR數(shù)字濾波器含濾波器階數(shù)和系數(shù)數(shù)組,在MATLAB中調(diào)試、運行DSP程序并顯示、分析處理后的數(shù)據(jù)。使用該方法,便于采用匯編語言來實現(xiàn)程序。頭文件名不變,當MATLAB中設計的濾波器系數(shù)改變時,相應頭文件中系數(shù)也改變,方便程序調(diào)試、仿真。sl=1000;%有效信號ns1=4500;%高頻噪聲fs=10000;%采樣頻率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)%濾波數(shù)據(jù)導出xout=x/max(x);%歸一化xto_css=round(32767*xout);%數(shù)據(jù)取整xoutcss=xto_css;fid=fopen('iir_input.dat','w');%翻開文件fprintf(fid,'16511000\n');%輸出文件頭fprintf(fid,'%d\n',xoutcss);%輸出fclose(fid);產(chǎn)生的時域波形如以下列圖:圖輸入信號波形頻譜如以下列圖:圖輸入頻譜經(jīng)過濾波器后的預期時域波形如圖:圖輸出時域波形頻譜如以下列圖圖輸出頻譜濾波器的設計MATLAB集成了一套功能強大的濾波器設計工具FDATool〔FilterDesign&AnalysisTool〕,可以完成多種濾波器的設計、分析和性能評估。a.翻開FilterDesign&AnalysisTool單擊MATLAB主窗口下方的“Start〞按鈕,選擇菜單“ToolBox〞→“FilterDesign〞→“FilterDesign&AnalysisTool〔FDATool〕〞命令,翻開FDATool,如以下列圖。圖fadatool的啟動b.產(chǎn)生濾波器階數(shù)為2階,這里應填1,比階數(shù)少1。IIR類型選擇切比雪夫型I型〔chebyshev〕采樣頻率為10000Hz,通帶截止頻率為1000Hz。圖濾波器的幅頻特性圖濾波器的相位特性c.產(chǎn)生濾波器系數(shù)和頭文件圖濾波器系數(shù)圖頭文件的產(chǎn)生最后將產(chǎn)生的頭文件中的濾波器系數(shù)數(shù)組放入編寫好的濾波器函數(shù)中,并在進展CCS中進展調(diào)試與測試。FIR濾波器的Simulink仿真通過Matlab的FDATOOL設計濾波器后,為了確認該濾波器是否有效,現(xiàn)通過simulink進展建模仿真觀察該濾波器是否有效。把兩個信號通過加法器相加后,再通過FDATOOL設計的濾波器即可。注意此處設計的是數(shù)字濾波器,需要把三個輸入信號數(shù)字化。具體仿真模型建設如下:分別觀察濾波前后的時域波形圖圖濾波前時域波形圖濾波后時域波形五、IIR濾波器的DSP實現(xiàn)〔1〕標準型二階IIR濾波器的實現(xiàn)在二階IIR濾波器構(gòu)造中,標準型構(gòu)造是最常見的濾波器構(gòu)造,其構(gòu)造如以下列圖:圖標準型二階IIR濾波器由其差分方程對二階IIR濾波器進展編程,其中乘法-累加運算可采用單操作數(shù)指令或雙操作數(shù)指令,數(shù)據(jù)和系數(shù)可存放在DARAM中,如以下列圖:圖雙操作數(shù)數(shù)據(jù)存放和系數(shù)表〔2〕直接型二階IIR濾波器的實現(xiàn)二階IIR濾波器可以用直接型構(gòu)造來實現(xiàn).在迭代運算中,先衰減后增益,系統(tǒng)的動態(tài)范圍和魯棒性要好些.直接型二階IIR濾波器的構(gòu)造如以下列圖:圖直接型二階IIR濾波器為了實現(xiàn)直接型濾波,可在DARAM中開辟4個循環(huán)緩沖區(qū),用來存放變量和系數(shù),并采用循環(huán)緩沖區(qū)方式尋址.這4個循環(huán)緩沖區(qū)的構(gòu)造如以下列圖:圖循環(huán)緩沖區(qū)構(gòu)造C語言實現(xiàn)IIR采用C語言算法在DSP平臺上實現(xiàn)了FIR低通數(shù)字濾波器,C語言算法相比于匯編算法可移植性很強。這里是在TMS320VC5510DSP為平臺編寫的C語言算法,此算法可以稍加改動用在其他DSP芯片上,而匯編算法那么不然。這種方法具有以下優(yōu)點:(a)程序的入口和出口由C語言自動管理,不必手工編寫匯編程序?qū)崿F(xiàn)。(b)程序構(gòu)造清晰,可讀性強。(c)程序調(diào)試方便。由于C程序中的變量全部由C語言來定義,因此采用C源碼調(diào)試器可以方便地觀察C語言變量。(d)可移植性較強,通用性較好。具體代碼如下:#include"math.h"#defineIIRNUMBER2//濾波器的階數(shù)intInputWave();//函數(shù)申明intIIR();//IIR濾波函數(shù)floatfBn[IIRNUMBER]={0.0,0.7757};floatfAn[IIRNUMBER]={0.1122,0.1122};//濾波器系數(shù)floatfXn[IIRNUMBER]={0.0};floatfYn[IIRNUMBER]={0.0};intfInput,fOutput;inti,m=0;intfIn[256],fOut[256];//輸入輸出緩存intinput[256];intnIn,nOut;main(){nIn=0;nOut=0;fInput=fOutput=0;while(1){ fInput=InputWave();//從數(shù)據(jù)中導入數(shù)據(jù)到輸入緩存fIn[nIn]=fInput;nIn++;nIn%=256;//保證數(shù)據(jù)緩存不溢出fOutput=IIR();//調(diào)用IIR濾波函數(shù)fOut[nOut]=fOutput;//放入輸出緩存nOut++;if(nOut>=256)//保證數(shù)據(jù)緩存不溢出{nOut=0;}}}intInputWave()//處理輸入數(shù)據(jù){for(i=IIRNUMBER-1;i>0;i--){fXn[i]=fXn[i-1];fYn[i]=fYn[i-1];}fXn[0]=input[m];fYn[0]=0.0;m++;m%=256;return(fXn[0]);}intIIR()//IIR濾波函數(shù){intfSum;fSum=0;for(i=0;i<IIRNUMBER;i++){fSum+=(fXn[i]*fAn[i]);//輸入乘累加fSum+=(fYn[i]*fBn[i]);//輸出乘累加}return(fSum);}CSS仿真調(diào)試CCS是TI推出的用于開發(fā)其DSP芯片的繼承開發(fā)調(diào)試工具,集編輯、編譯、鏈接、軟件仿真、硬件調(diào)試及實時跟蹤等功能于一體,極大地方便了DSP程序的設計與開發(fā),此外還提供圖形顯示功能,方便用戶觀察特定地址的波形。此外,還需向工程中添加Link.cmd文件〔源碼見附錄〕。在CCSV3.3中建設工程,把c源代碼和d文件導入后,外加rts.lib文件,它是TI提供的運行時支持庫,如果是C代碼寫的源程序,必須要包含該庫,該庫由TI公司做好放在CCS\cgtools\lib中,源代碼TI網(wǎng)站可以下載。添加完成后,編譯通過后,下載.out文件,導入.dat文件后運行程序。工程建設如下:圖工程建設采用CCS的圖形顯示功能,分別觀察輸入信號x(n)、輸出信號y(n)的時域波形和頻域波形,輸入信號波形如以下列圖。圖濾波前時域波形圖濾波前頻譜圖經(jīng)過濾波后,觀察輸出波形如下圖濾波后時域波形圖濾波后頻譜圖為了更加直觀的觀察濾波器的性能和濾波效果,把濾波前后的時域波形和頻譜圖進展比照和分析,具體如下:圖濾波前后比照時域和頻譜從上圖中可以看出,輸入信號明顯有高頻噪聲,波形有很明顯的失真。從輸入頻譜分析,可以看出除了有1000Hz的信息信號還有4500Hz的高頻噪聲。經(jīng)過濾波器后,輸出的時域波形有了明顯改善,幾乎接近信息信號。而頻譜圖中也可以看出4500Hz的高頻噪聲基本已經(jīng)被濾除,而且對原來的信息信號幾乎沒有影響。但是由于設計濾波器的階數(shù)較低,濾波器性能有限,可以看出還有局部高頻分量沒有濾除干

溫馨提示

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

評論

0/150

提交評論