1 引言 隨著數(shù)字信號(hào)處理理論及應(yīng)用技術(shù)的迅速發(fā)展,在一個(gè)數(shù)字系統(tǒng)中只用一個(gè)采樣頻率已 經(jīng)很難滿足要求。在實(shí)際的應(yīng)用中,經(jīng)常會(huì)遇到采樣率的轉(zhuǎn)換問(wèn)題,即要求一個(gè)數(shù)字系統(tǒng)能 工作在“多采樣率”狀態(tài)。近年來(lái),建立在采樣率轉(zhuǎn)換基礎(chǔ)上的“多采樣率數(shù)字信號(hào)處理” 已成為數(shù)字信號(hào)處理學(xué)科中的主要研究?jī)?nèi)容之一。直觀地考慮,首先將以采樣率 F1 采集的數(shù)字信號(hào)進(jìn)行數(shù)模轉(zhuǎn)換,這樣就變成模擬信號(hào),再按采樣率 F2 進(jìn)行模數(shù)轉(zhuǎn)換,從而實(shí)現(xiàn)了從F1 到F2 的采樣率轉(zhuǎn)換,這就是變換采樣率的最簡(jiǎn)單方法。但是這樣較麻煩,且易使信號(hào)受到損傷,所以在實(shí)際應(yīng)用的變采樣系統(tǒng)中,改變采樣頻率并不經(jīng)過(guò)模擬信號(hào),而是完全 在數(shù)字域中實(shí)現(xiàn)的。在數(shù)字信號(hào)處理中,濾波占有極其重要的作用,適用于變采樣率系統(tǒng) 中的數(shù)字濾波器就是本文要談?wù)摰闹饕獌?nèi)容。 2 FIR 數(shù)字濾波器的設(shè)計(jì)過(guò)程及結(jié)構(gòu) 數(shù)字濾波器根據(jù)其沖擊響應(yīng)函數(shù)的時(shí)域特性,可分為兩種:無(wú)限長(zhǎng)沖激響應(yīng)(IIR)濾波器和有限長(zhǎng)沖激響應(yīng)(FIR)濾波器。FIR 濾波器被廣泛應(yīng)用于各類(lèi)數(shù)字信號(hào)處理系統(tǒng), 它的系統(tǒng)總是穩(wěn)定的,可以滿足濾波器對(duì)幅度和相位特性的嚴(yán)格要求,避免模擬濾波器溫漂 和噪聲等問(wèn)題,易實(shí)現(xiàn)線性相位且易用硬件實(shí)現(xiàn),這些都是FIR 系統(tǒng)的突出優(yōu)點(diǎn),也是IIR 系統(tǒng)不易實(shí)現(xiàn)的。盡管IIR 濾波器系統(tǒng)比FIR 濾波器系統(tǒng)易取得較好的通帶和阻帶衰減特性,F(xiàn)IR 系統(tǒng)若要取得較好的衰減特性,一般要求系統(tǒng)函數(shù)H(z)階次要高,也即濾波器長(zhǎng)度M 要大。綜合以上考慮,本文選用FIR 濾波器來(lái)完成設(shè)計(jì)。 2.1FIR 數(shù)字濾波器的基本原理及設(shè)計(jì)基礎(chǔ) FIR濾波器的系統(tǒng)函數(shù)為: ![]() ![]() ![]() 圖1 FIR濾波囂基本結(jié)構(gòu) 圖1 中x(n)是輸入信號(hào),x(n-i)是延時(shí)了i 個(gè)采樣周期的輸入信號(hào),h(i)(i = 0,1,…,n-1)是第i 個(gè)延時(shí)節(jié)的加權(quán)值(即濾波器系數(shù)),y(n)是時(shí)刻t = nT 時(shí)濾波器的輸出信號(hào)。 FIR 數(shù)字濾波器的設(shè)計(jì)一般要經(jīng)過(guò)三步:確定目標(biāo)、逼近和計(jì)算機(jī)實(shí)現(xiàn)。通常在設(shè)計(jì) 濾波器之前,應(yīng)該先根據(jù)具體的應(yīng)用確定一些技術(shù)指標(biāo)。指標(biāo)的形式一般在頻域中給出幅度 和相位響應(yīng)。幅度指標(biāo)主要有2 種方式,分別是絕對(duì)指標(biāo)和相對(duì)指標(biāo)。在確定了技術(shù)指標(biāo)之 后,就可以根據(jù)數(shù)學(xué)知識(shí)和濾波器的基本原理確定濾波器的模型來(lái)逼近給定的指標(biāo)。上兩步 的結(jié)果通常是得到以差分或系數(shù)函數(shù)或沖擊響應(yīng)描述的濾波器,根據(jù)這個(gè)描述用硬件或軟件 實(shí)現(xiàn)并分析其頻率特性和相位特性。至此完成了一個(gè)濾波器設(shè)計(jì)的全過(guò)程。 2.2 利用Matlab 實(shí)現(xiàn)FIR 數(shù)字濾波器 Matlab 是一個(gè)交互式的以矩陣為基礎(chǔ)的軟件,它被廣泛應(yīng)用與教學(xué)、科研和工程設(shè)計(jì) 等各個(gè)領(lǐng)域。隨著Matlab 軟件的發(fā)展,尤其是Matlab 的信號(hào)處理工具箱的不斷完善,不僅 數(shù)字濾波器的計(jì)算機(jī)輔助設(shè)計(jì)有了可能,而且還可以使設(shè)計(jì)達(dá)到最優(yōu)化。 在數(shù)字信號(hào)處理領(lǐng)域里,采樣頻率轉(zhuǎn)換就是將信號(hào)采樣頻率從一個(gè)給定的頻率F1=1/T1 轉(zhuǎn)換到另一頻率F2=1/T2 的過(guò)程,它是一個(gè)非線性過(guò)程。當(dāng)新的采樣頻率高于原始頻率,即 F2 > F1 時(shí),稱為升采樣率或插值;反之,當(dāng)新的采樣頻率低于原始頻率,稱為降采樣率或 抽取。 設(shè)對(duì)某限帶時(shí)間波形x(t),以采樣率fs(在滿足采樣定理的條件下)進(jìn)行采樣,得到時(shí)間列x(k).對(duì)x(k)進(jìn)行采樣率變換,如升采樣率,即提高采樣率L(正整數(shù))倍,升采樣后的序列用Y(m)表示,那么,升采樣前后序列的關(guān)系為: ![]() ![]() 變采樣率FIR數(shù)字濾波器的設(shè)計(jì)分為內(nèi)插FIR濾波器設(shè)計(jì)和抽取FIR濾波器設(shè)計(jì)。對(duì)內(nèi)插和抽取濾波器的設(shè)計(jì)以半帶濾波器為基礎(chǔ)。下面便是設(shè)計(jì)實(shí)例: 半帶濾波器是一種特殊的FIR濾波器,其特征如下: (1)半帶濾波器的沖激響應(yīng)除了零點(diǎn)不為零外,在其余偶數(shù)點(diǎn)均為零; (2)半帶濾波器所要求的濾波器模板必須關(guān)于f/4對(duì)稱.即H(ejπ/2)=0.5,而且濾波器的參數(shù)個(gè)數(shù)必須為奇數(shù); (3)濾波器的頻率響應(yīng)以似中心對(duì)稱,即 ![]() 基于半帶濾波器的優(yōu)點(diǎn),在半帶濾波器的基礎(chǔ)上設(shè)計(jì)FIR 濾波器一般采用等波紋逼近法,該方法對(duì)同樣的技術(shù)指標(biāo),能使誤差均勻分布在整個(gè)頻帶,而且這種逼近法需要的濾波器階數(shù)低,且最大誤差最小。 給定半帶濾波器的設(shè)計(jì)指標(biāo): 通帶截止頻率為20KHz,采樣頻率為88.2KHz,通帶波紋為0.001,阻帶衰減70dB。 根據(jù)上述指標(biāo),結(jié)合其優(yōu)點(diǎn),利用Matlab 的信號(hào)處理工具中的remez 函數(shù)進(jìn)行FIR 濾 波器的設(shè)計(jì)。remez 函數(shù)利用Parks-McClellan 算法,該算法利用remez 交換算法和切比雪夫逼近理論來(lái)設(shè)計(jì)濾波器,使實(shí)際濾波器的幅頻響應(yīng)最優(yōu)地?cái)M合理想濾波器的幅頻響應(yīng),使它們之間最大誤差最小化。 調(diào)用remezord 和remez 函數(shù)設(shè)計(jì)此濾波器, 由調(diào)用格式 [N,fo,ao,w]=remezord(f,m,,rip,Fs)知道,首先根據(jù)設(shè)計(jì)指標(biāo)確定remezord 函數(shù)的調(diào)用參數(shù),估算出濾波器的最低階數(shù)N ,其返回函數(shù)再作為remez 函數(shù)的調(diào)用參數(shù),再直接編寫(xiě)程序調(diào)用remez 函數(shù)得到濾波器單位脈沖響應(yīng)h(n),得到如圖2 所示的幅頻響應(yīng): ![]() 圖2變采樣率FTIR濾波器的幅頻響應(yīng) 通過(guò)分析該半帶濾波器的幅頻響應(yīng),可以發(fā)現(xiàn)該濾波器的通帶和阻帶波紋俱在 0.0015dB 以內(nèi),阻帶衰減達(dá)到了70dB。 程序運(yùn)行結(jié)果顯示,濾波器階數(shù)N=43,基本符合設(shè)計(jì)要求。 3 FIR 數(shù)字濾波器的FPGA硬件實(shí)現(xiàn) 由前面的Matlab 設(shè)計(jì)已經(jīng)求得了要求的FIR 濾波器的濾波系數(shù)及階數(shù),下面利用FPGA來(lái)完成濾波器的硬件實(shí)現(xiàn)。FIR 濾波器主要是由乘加單元組成,如果按照直觀結(jié)構(gòu)直接構(gòu)造 FIR 濾波器會(huì)占用大量資源,這顯然是不經(jīng)濟(jì)的。現(xiàn)提出一種利用FPGA 硬件實(shí)現(xiàn)濾波的 TOP-DOWN 結(jié)構(gòu)圖,如圖3所示。它采用串行結(jié)構(gòu)實(shí)現(xiàn)硬件即將輸入數(shù)據(jù)直接與其對(duì)應(yīng)的濾波系數(shù)相乘,但不需像并行結(jié)構(gòu)中那樣,必須所有的數(shù)都相乘完才能相加,而是將前一級(jí)乘積鎖存,直接與后一級(jí)乘積累加,這樣就可以極大地節(jié)約硬件資源,提高執(zhí)行速度。FIR 數(shù)字濾波器系統(tǒng)主要分為數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)運(yùn)算兩大模塊。數(shù)據(jù)存儲(chǔ)模塊主要功能是以時(shí)鐘去控 制片選信號(hào)和地址譯碼,在ROM 查找表中讀出與ROM 地址相對(duì)應(yīng)的數(shù)據(jù),即為濾波系數(shù),并 將它與對(duì)應(yīng)的輸入信號(hào)同步輸出至數(shù)據(jù)運(yùn)算模塊。數(shù)據(jù)運(yùn)算模塊主要功能就是完成輸入信號(hào)與對(duì)應(yīng)濾波系數(shù)的相乘和累加。 ![]() 圖3 FIR濾波囂硬件實(shí)現(xiàn)top-down結(jié)構(gòu)圖 4 結(jié)論 由于FPGA具有速率高,面積小,性能可靠等特點(diǎn),成為數(shù)字濾波器工作在很高頻率上的首先硬件實(shí)現(xiàn)方案。本文利用Matlab 設(shè)計(jì)了一個(gè)給定指標(biāo)的適用于變采樣率FIR 濾波器, 并對(duì)它進(jìn)行了FPGA 硬件實(shí)現(xiàn)。 本文的創(chuàng)新點(diǎn):提出一種基于FPGA 實(shí)現(xiàn)變采樣率FIR 數(shù)字濾波器的硬件實(shí)現(xiàn)方案,節(jié)約了硬件資源,降低設(shè)計(jì)成本,具有實(shí)用價(jià)值。 作者:徐燕,孫麗華 來(lái)源:《微計(jì)算機(jī)信息》(嵌入式與SOC)2009年第7-2期 |