謝海霞,孫志雄
(海南熱帶海洋學院海洋信息工程學院,海南三亞572022)
軟件無線電系統中各個模塊的信號速率是不同的,它實質上通過抽取和內插的方法來改變數字信號的速率,多速率信號處理是數字上變頻、下變頻技術處理的依據。實際應用中,通常采用CIC濾波器,HB濾波器,多相結構濾波器和FIR濾波器等改變信號速率且避免頻域混疊[1-3]。
文中對不同級數、不同抽取因子的CIC、HB作性能對比,提出一種抽取濾波器級聯組的設計方案,旨在解決在AD采樣速率很高,所需基帶信號的帶寬很窄,且計算量減少時等問題,從而找出最適用的多速率濾波器,最后通過MATLAB仿真實現[4-6]。
多速率信號處理技術的基礎理論是抽取和內插,如D倍抽取是每隔D-1個采樣點抽取一個點即去掉多余數據降低采樣率的過程,I倍內插是相鄰抽樣點之間插入I-1個零值點即增加數據提高采樣率的過程。從時域上直接進行抽取和內插會產生頻域的擴展和壓縮,導致頻譜失真。實質上多速率信號處理是先通過時域上的抽取和內插,再結合濾波器一起操作,以達到轉換信號速率,保證有用頻帶內沒有頻譜混疊的目的。當A/D采樣速率很高,所需基帶信號的帶寬很窄時,那么抽取因子D必然會很大,如采用一級抽取濾波器完成,則該濾波器階數非常高,計算量大,難實現。實際實現中常采用多級級聯抽取結構來實現,同時減少計算量。經典多速率信號抽取處理結構如圖1所示[7-9]。

圖1 多速率信號抽取器結構圖
在多級級聯抽取器中,第一級一般采用積分梳狀(CIC)抽取濾波器實現,因為其實現結構簡單,適合高采樣速率的情況。CIC濾波器系統傳遞函數為:

CIC濾波器由梳狀部分和積分部分組成,其HC(z)是梳狀濾波器,HI(z)是積分器,D為抽取倍數。其幅頻響應為:

在[0,2π/D]頻率區稱為CIC濾波器的主瓣,其他區間為旁瓣。由于單級CIC濾波器的第一旁瓣電平比較大,只比主瓣電平低13.46dB,這意味著阻帶衰減較差,難以滿足實際使用要求。為了降低旁瓣電平,工程上多采用CIC多級級聯的方法來解決[10-12]。
多級CIC抽取濾波器傳遞函數為:

N不宜取太大,一般取N=5時,阻帶衰減達到67.3 dB,基本能滿足實際要求。
多級級聯CIC濾波器在降低了旁瓣電平,增大了阻帶衰減的同時也大大提高了通帶的失真。為了解決傳統的CIC濾波器的通帶波紋大、過渡帶長、阻帶衰減小,最直接最簡單的辦法就是在CIC濾波器之后級聯一個補償濾波器,它可以在一定程度上改善CIC濾波器的性能。
半帶(HB)濾波器的阻帶寬度(π-WA)與通帶寬度(WC)是相等的,且通阻帶波紋也相等,如圖2所示[10-12]。

圖2 HB濾波器頻響圖
半帶濾波器的沖激響應h(n)除零點不為零處,在其余偶數點全都為零,所以采用半帶濾波器來實現速率變換時,只需一半的計算量,適合處理較高速的數據。
FIR濾波器也是有限沖激響應濾波器,實現時是一個無反饋的電路。輸出值均不受之前的輸出狀態影響,只與此時的與之前的輸入有關。前面的CIC濾波器和HB濾波器是具有獨特性質的FIR濾波器,而這里指的是普通型的FIR濾波器。值得注意的是如果將CIC濾波器或HB濾波器作為多級濾波器的最后一級時,過渡帶往往過大且有混疊而不能滿足濾波器特性的總體要求,所以后級必須要用其他類型的FIR濾波器對整體濾波器的輸出進行整波濾除多余的頻率分量。
多速率系統中只有抽取和內插實現速率轉換,計算量很大。如果抽取濾波器的H(z)長度為N,抽取因子為D倍。則


圖3 D倍抽取器的示意圖
對u(n)每D個點進行抽取一次輸出,也就是只需在n=kD(k=1,2,…)時計算輸出結果,計算復雜度為原來的1/D。為適用于實時系統,采取優化實現結構,提高計算效率,使用多相分解[13]。

由式子(5)可得:


圖4 多相濾波器結構圖
根據多相濾波的原理,對整個多速率系統的非遞歸各個單元作多相并行處理,圖4中濾波器EK(zD)為多相濾波器放在抽取之后進行,這就大大降低了對處理速度的要求,提高了實時處理能力。另一個好處就是每一分支路濾波器的系數由原先的N個減少為N/D個,可以減小濾波運算累積誤差,提高計算精度[14-15]。
輸入采樣頻率512 kHz,輸出信號頻率4 kHz,通帶截止頻率1.2 kHz,帶內波動小于0.01 dB,阻帶起始頻率2 kHz,帶外抑制大于65 dB。
設計的數字抽取器要求實現128倍的抽取,如采用單個濾波器實現時,需要2294階,這樣高階數的濾波器實現起來非常困難。而解決這個難題的方法是采用濾波器多級級聯來實現。通常用來實現抽取的濾波器主要有CIC抽取濾波器,HB抽取濾波器。本文對于抽取倍數D=128,取三級抽取倍數分別為 D1=32,D2=2,D3=2(D=D1D2D3),CIC濾波器能實現抽取倍數比較大的抽取,因此作為整個數字抽取濾的第一級,為了補償CIC抽取濾波器的通帶衰減速,在其后面級聯一個補償濾波器,而HB抽取濾波器能實現兩倍抽取,所以D2和D3倍的抽取由HB濾波器來實現。FIR濾波器放在最后級聯以進行較為精確的濾波整形,濾掉無用信號。
32倍抽取采用CIC抽取濾波器實現,階數為3,其幅頻響應如5圖所示。

圖5 CIC濾波器幅頻響應圖
從圖5中可以看出,3階32倍CIC抽取濾波器的通帶內衰減較大,δ≈0.1102dB,顯然不滿足要求,所以后級必須對其進行通帶補償。
4倍抽取分別由兩級2倍BH抽取濾波器來實現,經過32倍CIC抽取濾波器處理后,采樣率下降至16 kHz,因此第一級HB濾波器的采樣頻率為16 kHz,利用MATLAB中的FDATool工具進行設計,輸入設計參數,采用等波紋設計法(equiripple),可得到第一級HB濾波器的系數,如表1所示。第二級HB抽取濾波器的采樣率為8 kHz,設計方法同第一級HB抽取濾波器,得到第二級HB濾波器的系數,如表1所示[16]。

表1 兩級HB濾波器的系數
補償濾波器是實現CIC濾波器通帶頻率響應的修正。MATLAB帶有的inverse sinc濾波器幅頻響應與CIC濾波器的相反,因此可以用它來逼近。利用MATLAB中的filter builder工具設計該濾波器,其幅頻響應如圖6所示,在通帶0.8 kHz邊緣處幅度增加約0.11 dB,可以補償CIC抽取濾波器的通帶衰減。補償濾波器的系數如表2所示。
最后一級FIR濾波器實現濾波整形。確定濾波器采樣頻率為8 kHz,通帶截止為0.8 kHz,阻帶起始頻率為1.2 kHz,通帶衰減0.01 dB,阻帶衰減65 dB,采用FDATool設計可以得到所需的FIR濾波器的系數。其系數見表2。

圖6 補償濾波器幅頻響應圖
將整個系統按照圖1全部級聯,各級濾波器及整體系統的幅頻響應如圖7所示,通過觀察可以看出經過補償濾波器以后整體的通帶衰減改善了不少,幅頻曲線十分平坦,整體的通帶波動在0.01 dB以內,達到了的要求。

表2 補償及FIR濾波器的系數

圖7 各級濾波器及整體抽取器頻譜圖
各級濾波器由MATLAB設計完畢后,具體的實現由verilog HDL代碼來描述。先把將各級濾波器的代碼寫好,最后將各級濾波器實現整體級聯,編寫測試文件,在ModelSim進行仿真,觀察輸出波形圖。從圖8可以看到,clk為輸入時鐘,,clk_enable為輸入使能信號,reset為復位信號,filter_in為輸入信號,filter_out為輸出信號,ce_out為輸出提示信號。在輸入信號作用下,每隔128個時鐘周期信號對整體濾波器的輸出信號filter_out進行一次賦值。也就是說,每隔一個時鐘周期輸入信號filter_in變化一次,每隔128個時鐘周期才會有一個filter_out輸出變化,顯然,輸入信號的頻率是輸出信號頻率的128倍,也就是說對輸入信號filter_in實現128倍抽取,整個系統達到128倍抽取的功能。這與我們想要實現的目的相吻合的。

圖8 仿真波形圖
文中介紹了CIC濾波器、HB濾波器、FIR濾波器和多相濾波器等多速率處理技術實現信號的抽取和內插,并通過MATLAB設計了一種多級抽取濾波器,通過verilog HDL代碼實現該系統,最后在ModelSim進行仿真,驗證了我們設計的正確性。