<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 數字濾波器的MATLAB設計與DSP上的實(shí)現

數字濾波器的MATLAB設計與DSP上的實(shí)現

作者: 時(shí)間:2004-12-06 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要:以窗函數法線(xiàn)性相位FIR為例,介紹用工具軟件的方法和在定點(diǎn)上的。時(shí),先在CCS5000仿真開(kāi)發(fā),然后將程序加載到TMS320VC5409評估板上實(shí)時(shí)運行,結果了目標要求。文中還討論了定標、誤差、循環(huán)尋址等在上實(shí)現的關(guān)鍵問(wèn)題。

關(guān)鍵詞:

引言

隨著(zhù)信息時(shí)代和數字世界的到來(lái),數字信號處理已成為今一門(mén)極其重要的學(xué)科和技術(shù)領(lǐng)域。數字信號處理在通信、語(yǔ)音、圖像、自動(dòng)控制、雷達、軍事、航空航天、醫療和家用電器等眾多領(lǐng)域得到了廣泛的應用。在數字信號處理應用中,數字濾波器十分重要并已獲得廣泛應用。

1 數字濾波器的

1.1 數字濾波器設計的基本步驟

數字濾波器根據其沖激響應函數的時(shí)域特性,可分為兩種,即無(wú)限長(cháng)沖激響應(IIR)濾波器和有限長(cháng)沖激響應(FIR)濾波器。IIR濾波器的特征是,具有無(wú)限持續時(shí)間沖激響應。種濾波器一般需要用遞歸模型來(lái)實(shí)現,因而有時(shí)也稱(chēng)之為遞歸濾波器。FIR濾波器的沖激響應只能延續一定時(shí)間,在工程實(shí)際中可以采用遞歸的方式實(shí)現,也可以采用非遞歸的方式實(shí)現。數字濾波器的設計方法有多種,如雙線(xiàn)性變換法、窗函數設計法、插值逼近法和Chebyshev逼近法等等。隨著(zhù)軟件尤其是MATLAB的信號處理工作箱的不斷完善,不僅數字濾波器的計算機輔助設計有了可能,而且還可以使設計達到最優(yōu)化。

數字濾波器設計的基本步驟如下:

(1)確定指標

在設計一個(gè)濾波器之前,必須首先根據工程實(shí)際的需要確定濾波器的技術(shù)指標。在很多實(shí)際應用中,數字濾波器常常被用來(lái)實(shí)現選頻操作。因此,指標的形式一般在頻域中給出幅度和相位響應。幅度指標主要以?xún)煞N方式給出。第一種是絕對指標。它提供對幅度響應函數的要求,一般應用于FIR濾波器的設計。第二種指標是相對指標。它以分貝值的形式給出要求。在工程實(shí)際中,這種指標最受歡迎。對于相位響應指標形式,通常希望系統在通頻帶中人有線(xiàn)性相位。運用線(xiàn)性相位響應指標進(jìn)行濾波器設計具有如下優(yōu)點(diǎn):①只包含實(shí)數算法,不涉及復數運算;②不存在延遲失真,只有固定數量的延遲;③長(cháng)度為N的濾波器(階數為N-1),計算量為N/2數量級。因此,本文中濾波器的設計就以線(xiàn)性相位FIR濾波器的設計為例。

(2)逼近

確定了技術(shù)指標后,就可以建立一個(gè)目標的數字濾波器模型。通常采用理想的數字濾波器模型。之后,利用數字濾波器的設計方法,設計出一個(gè)實(shí)際濾波器模型來(lái)逼近給定的目標。

(3)性能分析和計算機仿真

上兩步的結果是得到以差分或系統函數或沖激響應描述的濾波器。根據這個(gè)描述就可以分析其頻率特性和相位特性,以驗證設計結果是否滿(mǎn)足指標要求;或者利用計算機仿真實(shí)現設計的濾波器,再分析濾波結果來(lái)判斷。

1.2 濾波器的MATLAB設計

(1)MATLAB

MATLAB是一套用于科學(xué)計算的可視化高性能語(yǔ)言與軟件環(huán)境。它集數值分析、矩陣運算、信號處理和圖形顯示于一體,構成了一個(gè)界面友好的用戶(hù)環(huán)境。它的信號處理工具箱包含了各種經(jīng)典的和現代的數字信號處理技術(shù),是一個(gè)非常優(yōu)秀的算法研究與輔助設計的工具。在設計數字濾波器時(shí),通常采用MATLAB來(lái)進(jìn)行輔助設計和仿真。

(2)FIR濾波器的MATLAB設計

下面以設計線(xiàn)性相位FIR濾波器為例介紹具體的設計方法。

線(xiàn)性相位FIR濾波器通常采用窗函數法設計。窗函數法設計FIR濾波器的基本思想是:根據給定的濾波器技術(shù)指標,選擇濾波器長(cháng)度N和窗函數ω(n),使其具有最窄寬度的主瓣和最小的旁瓣。其核心是從給定的頻率特性,通過(guò)加窗確定有限長(cháng)單位脈沖響應序列h(n)。工程中常用的窗函數共有6種,即矩形窗、巴特利特(Bartlett)窗、漢寧(Hanning)窗、漢明(Hamming)窗、布萊克曼(Blackman)窗和凱塞(Kaiser)窗。

假設實(shí)際工程需要設計一個(gè)線(xiàn)性相位帶通FIR濾波器指標如下:

fn=[1000,1375,3625,4000];

a=[0,1,0];

dev=[0.0005,0.05,0.0005];

阻帶最小衰減60dB,再設采樣頻率fs=10kHz,則根據阻帶最小衰減來(lái)選擇凱塞(Kaiser)窗,利用MATLAB的求階函數和FIR濾波器的設計函數,可以快速地設計出所需的數字濾波器。這兩個(gè)設計函數如下:

[N,Wn,beta,ftype]=kaiserord(fn,a,dev,fs);

b=fir1(n,Wn,ftype,Kaiser(n+1,beta);

最后,利用的濾波器分析函數freqz分析所設計出的濾波器的幅頻特性和相頻特性,并用圖形顯示函數plot將它們顯示出來(lái),如圖1所示。由圖1可見(jiàn),設計結果滿(mǎn)足指標要求。

2 數字濾波器的實(shí)現方法

數字濾波器的實(shí)現方法一般有以下幾種。

①采用加法器、乘法器、延時(shí)器設計專(zhuān)用的濾波電路。

②在通用計算機系統中加上專(zhuān)用的加速處理機設計實(shí)現。

③用通用的可編程DSP芯片實(shí)現。

④用專(zhuān)用的DSP芯片實(shí)現。在一些特殊的場(chǎng)合,要求的信號處理速度極高,用通用DSP芯片很難實(shí)現。這種芯片將相應的濾波算法在芯片內部用硬件實(shí)現,無(wú)需進(jìn)行編程。

⑤采用FPGA/CPLD設計實(shí)現。

在上述幾種方法中,第②種方法的缺點(diǎn)是速度較慢,一般可用于DSP算法的模擬。第①、④種方法專(zhuān)用性強,應用受到很大的限制。第③、⑤種方法都可以通過(guò)編程來(lái)實(shí)現各種數字濾波,但是,第③種因有專(zhuān)用的指令來(lái)實(shí)現濾波運算編程實(shí)現容易,而第⑤種方法編程實(shí)現較為困難。

3 數字濾波器的DSP實(shí)現

DSP是一種實(shí)時(shí)、快速、特別適合于實(shí)現各種數字信號處理運算的微處理器。由于它由具有豐富的硬件資源、改進(jìn)的哈佛結構、高速數據處理能力和強大的指令系統,而在通信、航空、航天、雷達、工業(yè)控制、網(wǎng)絡(luò )及家用電器等各個(gè)領(lǐng)域得到廣泛應用。DSP分為定點(diǎn)和浮點(diǎn)兩種,下面以定點(diǎn)DSP芯片為例,討論FIR濾波器實(shí)現的幾個(gè)關(guān)鍵問(wèn)題。所討論的這些問(wèn)題,在DSP系統設計中有實(shí)際的參考和應用價(jià)值。

3.1 定點(diǎn)數的定標

在定點(diǎn)DSP芯片中,采用定點(diǎn)數進(jìn)行數值運算,其操作數一般采用整型數來(lái)表示。一個(gè)整型數的最大表示范圍取決于DSP芯片所給定的字長(cháng),一般為16位或24位。顯然,字長(cháng)越長(cháng),所能表示的數的范圍越大,精度也越高。在濾波器的實(shí)現過(guò)程中,DSP所要處理的數可能是整數,也可能是小數或混合小數;然而,DSP在執行算術(shù)運算指令時(shí),并不知道當前所處理的數據是整數還是小數,更不能指出小數點(diǎn)的位置在哪里。因此,在編程時(shí)必須指定一個(gè)數的小數點(diǎn)處于哪一位,這就是定標。通過(guò)定標,可以在16位數的不同位置上確定小數點(diǎn),從而表示出一個(gè)范圍大小不同且精度也不同的小數。例如:在Q15中,1080H=0.12890625;在Q0時(shí),1080H=4224。

在使用定點(diǎn)DSP時(shí),如何選擇合適的Q值是一個(gè)關(guān)鍵性問(wèn)題。就DSP運算的處理過(guò)程來(lái)說(shuō),實(shí)際參與運算的都是變量,有的是未知的,有的則在運算過(guò)程中不斷改變數值,但它們在一實(shí)際工程環(huán)境中作為一個(gè)物理參量而言都有一定的動(dòng)態(tài)范圍。只要個(gè)動(dòng)態(tài)范圍確定了,Q值也就確定了。因此,在程序設計前,首先要通過(guò)細致和嚴謹的分析,找出參與運算的所有變量的變化范圍,充分估計運算中可能出現的各種情況,然后確定采用何種定標標準才能保證運算結果正確可靠。這里,所討論的理論分析法和統計分析法確定變量絕對值最大值|max|,然后根據|max|再確定Q值。但是,DSP操作過(guò)程中的意外情況是無(wú)法避免的,即使采用統計分析法也不可能涉及到所有情況。因此,在定點(diǎn)運算過(guò)程中應該采取一些判斷和保護措施(特別是在定點(diǎn)加法中)。另外,在數字信號處理中的大量運算是乘法和累加,應盡量采用純整數或純小數運算,即全部變量都用Q0或Q15格式表示。這樣做的好處是操作簡(jiǎn)單、編程方便。只有當純整數或純小數運算不能滿(mǎn)足變量的動(dòng)態(tài)范圍和精度要求時(shí),才采用混合小數表示法進(jìn)行定點(diǎn)運算。

3.2 誤差問(wèn)題

因為在用定點(diǎn)DSP實(shí)現時(shí),所有的數據都是定長(cháng)的,運算也都是定點(diǎn)運算,因而會(huì )產(chǎn)生有限字長(cháng)效應。所產(chǎn)生的誤差主要包括:數模轉換引起的量化誤差、系數量化引起的誤差以及運算過(guò)程中的舍入誤差。在用定點(diǎn)DSP時(shí),產(chǎn)生誤差是不能避免的,但是可以通過(guò)一些方法減小誤差。如,可以用兩個(gè)存儲單元來(lái)表示一個(gè)數,運算時(shí)使用雙字運算;可以根據需要要將濾波器系數都用雙字表示,也可以只將一半的系數用雙字表示,視需要而定。另外,FIR數字濾波器和IIR數字濾波器所引入的量化誤差是不一樣的。FIR數字濾波器主要采用非遞歸結構,因而在有限精度的運算中都是穩定的;而IIR數字濾波器是遞歸結構,極點(diǎn)必須在z平面單位圓內才能穩定,這種結構運算中的四舍五入處理有時(shí)會(huì )引起寄生振蕩。除了有限字長(cháng)效應以外,不同結構引入的誤差也有所不同。在實(shí)際設計中,要注意實(shí)現中的誤差問(wèn)題。在選擇不同的結構時(shí),應考慮它們所引入的誤差,并用高級語(yǔ)言進(jìn)行定點(diǎn)仿真,以比較不同結構下誤差的大小,從而作出合理選擇。

3.3 循環(huán)尋址

循環(huán)尋址(circular addressing)是DSP中經(jīng)常用到的一種尋址方式。該尋址方法可以對一塊特定存儲區實(shí)現循環(huán)的操作??梢园蜒h(huán)尋址理解為實(shí)現一個(gè)滑動(dòng)窗,新數據引入后將覆蓋老的數據,便得該窗中包含了需處理的最新數據。在數字信號處理中的FIR、卷積等運算中,循環(huán)尋址具有極其重要的意義。

在TI的DSP中,循環(huán)尋址通過(guò)如下方法實(shí)現。

①設定BK(寄存器塊大?。┲?,以確定循環(huán)尋址緩沖區的大小,也可將它看作是循環(huán)的周期。

②設定緩沖區的底部地址。必須注意:其低N位為零,其中N為滿(mǎn)足式(1)的最小N值。

2 N>BK (1)

③用輔助寄存器間接尋址循環(huán)緩沖區。

圖2 輸入數據頻譜圖 圖3 輸出數據頻譜圖

3.4 實(shí)現舉例

根據上述設計出來(lái)的FIR濾波器,考慮工程實(shí)際的需要(精度的要求)和采用定點(diǎn)DSP芯片的方便實(shí)現,選擇Q15定標。為此,必須對輸入數據和濾波器的系數進(jìn)行歸一化處理。輸入數據的歸一化處理可通過(guò)設置A/D轉換的參考電平來(lái)實(shí)現。濾波器的系數歸一化只要求取系數中的最大值,再用這個(gè)最大值去系數便可。

由于一個(gè)N(設N為偶數)階的FIR濾波器具有系數對稱(chēng)特性,其輸出方程可以寫(xiě)為:

y(n)=ao[x(n)+x(n-N+1)]+a1[x(n-1)+x(n-N+2)]+…+aN/2-1[X(n-N/2+1)+x(n-N/2)] (2)

根據式(2)可建立如下實(shí)現算法:

①在數據存儲中開(kāi)辟兩個(gè)循環(huán)緩沖區,New循環(huán)緩沖區存放新數據,O1d循環(huán)緩沖區中存放老數據。循環(huán)緩沖區的長(cháng)度為N/2。

②設置循環(huán)緩沖區指針,AR2指向New緩沖區中最新的數據,AR3指向O1d緩沖區中最老的數據。

③在程序存儲器中設置系數表。

④(AR2)+(AR3)→AH(累加器A的高位);(AR2)-1→AR2;(AR3)-1→AR3。

⑤將累加器B清零,重復執行下列操作N/2次:(AH)*系數ai+(B)→B,系數指針(PAR)加1,(AR2)+(AR3)→AH,AR2和AR3減1。

⑥保存和輸出結果(結果在BH中)。

⑦修正數據指針,讓AR2和AR3分別指向New緩沖區最新數據和O1d緩沖區中最老的數據。

⑧用New緩沖區中最老的數據替代O1d緩沖區中最老的數據。O1d緩沖區指針減1。

⑨輸入一個(gè)新數據替代New緩沖區中最老的數據。

重復執行第④~⑨步。

根據上述算法編制程序[4、5],在CCS5000上進(jìn)行仿真調試運行,并分析輸入數據和輸出的頻譜,結果如圖2、圖3所示。由圖可見(jiàn),濾波器實(shí)現了目標要求。

最后,將程序移植為聞亭公司的TMS320VC5409評估板的MCBSP0的中斷服務(wù)程序,并將形成的可執行文件加載到評估板上運行。由TMS320VC5409評估板的模擬輸入口輸入模擬信號,經(jīng)TLC320A/D轉換芯片,按8kHz的采樣頻率采樣轉換成數字信號,輸入DSP。濾波后經(jīng)D/A輸出模擬量,結果證實(shí)該程序可實(shí)現對采樣率為8kHz的模擬信號進(jìn)行實(shí)時(shí)濾波處理。

結語(yǔ)

數字濾波器的應用十分廣泛,運行MATLAB語(yǔ)言,能很容易地設計出具有嚴格要求(如線(xiàn)性相位等)的濾波器。用定點(diǎn)DSP實(shí)現濾波器械要考慮DSP的定標、誤差、循環(huán)尋址等幾個(gè)關(guān)鍵問(wèn)題。文中實(shí)例是為了表明,可方便地用DSP實(shí)現模擬信號的實(shí)時(shí)濾波處理,所采用的采樣頻率并不高。如果DSP采用更高的時(shí)鐘,它的處理速度將更快,將能夠滿(mǎn)足更高采樣率的數字信號的實(shí)時(shí)濾波處理。

濾波器相關(guān)文章:濾波器原理


濾波器相關(guān)文章:濾波器原理


電源濾波器相關(guān)文章:電源濾波器原理




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>