謝海霞,孫志雄
(瓊州學院電子信息工程學院,海南三亞572022)
多速率指的是一個系統(tǒng)中存在著兩種或者兩種以上的信號采樣率,多速率信號處理最早于20世紀70年代提出,具有重要的理論和工程價值。近10年來,隨著大規(guī)模集成電路的發(fā)展和A/D、D/A采樣率的不斷提高,多速率數(shù)字濾波器和濾波器組在很多領域有著廣泛的應用,如數(shù)字音頻處理、語音處理及數(shù)字通信等。多速率信號處理是軟件無線電系統(tǒng)中的基礎理論,它通過內(nèi)插和抽取改變數(shù)字信號的速率,以適應軟件無線電系統(tǒng)中不同模塊對信號速率的不同要求,使采樣率降低的轉換,稱為抽取;使信號采樣率升高的轉換,稱為內(nèi)插。單獨的抽取和內(nèi)插實現(xiàn)抽樣率轉換計算量很大,為適用于實時系統(tǒng),采取優(yōu)化實現(xiàn)結構,使用多相分解,提高計算效率。在此討論了濾波器的多相分解,及其FPGA實現(xiàn)的過程[1-5]。
當在IIR或者FIR濾波器和濾波器組中實現(xiàn)抽取或插值時,多相分解是非常有用的。下面以多速率抽取濾波器為例來說明多相分解的好處[6-7]。
對于圖1中的抽取濾波器,如果H(z)是一個用直接型實現(xiàn)的長度為N的FIR濾波器,那么
圖1 M-抽取器的示意圖
現(xiàn)在,對v(n)每M個點進行抽樣一次作為下抽樣器的輸出。因此,在上式中只需在n=kM(k=1,2,)時計算v(n)的值即可,可以跳過其他中間的樣值。這使得計算復雜度節(jié)省為原來的1/M。而利用多相分解可以達到相同的效果,下面進行具體的分析。
假設系統(tǒng)下抽樣率為M,對于序列h(n),其Z變換為:
由式(2)可得:
如果令
式(4)可以改寫為:
其中,h(Mn+1)被稱為多相分量。考慮到h(n)為因果序列,以上各式求和都是從[0,∞]。對于任一序列,可以將求和擴展至[-∞,∞]。
多相分解對于FIR、IIR系統(tǒng)都適用。圖2給出了基于多相分解的FIR系統(tǒng)的抽取器結構,其中抽取器的速率比后面的FIR濾波器El(zM)快M倍。濾波器El(zM)被稱為多相濾波器。[8-10]
圖2 FIR濾波器的多相分解圖
對于低通濾波器的傳輸函數(shù)進行多相分解,得到圖2中的高效抽取器結構,下面對圖1中的抽取濾波器和多相分解的結構進行對比分析。對于前者,假設FIR濾波器長度為N,輸入信號抽樣周期為T=1。由于抽取器的輸出y(n)可以從M倍下抽樣濾波器的輸出v(n)得到,故僅僅需要計算當n=…,-2M,-M,0,M,2M,…時的v(n)。因此,輸出每個樣本需要的計算量為N次乘法和(N-1)次加法。然而,隨著n的增加,延時寄存器中存儲的信號會不斷地變化。因此全部的計算必須在一個抽樣周期T中完成,而接下來的(M-1)個抽樣周期中,運算單元就保持空閑。但是對于圖2中的多相結構,假設子濾波器El(zM)的長度是Nl,則。第l個子濾波器輸出每個樣本需要計算N1次乘法和(N1-1)次加法,因此對于整個結構,抽取器輸出每個樣本仍需要計算N次乘法和(N-1)次加法。然而,運算單元在輸出抽樣周期MT的所有時刻都在工作,這使得計算更加有效。
設實現(xiàn)一個長度為4的FIR多相抽取濾波器,實現(xiàn)M=2倍下采樣。其傳遞函數(shù)為:
首先將濾波器進行量化,字長為8 bit,則:
將式(6)化在M=2時的多相表示,得:
由(7)可知:
E0(z)和E1(z)分別是第0個多相分量和第1個多相分量。
用Verilog HDL語言實現(xiàn)該2相抽取濾波器。
系數(shù)運算的部分程序:
程序在QuartusⅡ中編寫完畢后,進行波形仿真,仿真結果如圖3所示。clk是輸入信號的速率,clk2是輸入信號速率的一半,為2相分量的信號傳輸速率,x_in 是輸入信號,序列為{0,1,2,3,4,5,6,7,8},y_out是輸出信號,序列為{0,1,4,7,10}。
圖3 多相濾波器的波形仿真圖
可以用MATLAB來驗證該設計的正確性。
MATLAB仿真波形圖(圖4)和圖3的仿真結果一致[11-12],因此該設計是正確的,最后把生成的編程數(shù)據(jù)文件下載到FPGA芯片中即可。
圖4 MATLAB驗證仿真結果圖
對于多相抽取濾波器,各個多相分量的工作速率是輸入信號速率的1/M,速率下降,運算單元在M個單位時刻都在工作,使用多相分解不但可以在抽樣率轉換的過程中去掉許多不必要的計算,從而大大提高運算的速度。本文介紹的多相濾波器的FPGA實現(xiàn)的設計、驗證方法都是可行的,而且在實際使用的時候,人們可以根據(jù)應用不同的場所在程序里可以很方便地改變?yōu)V波器的參數(shù),以簡便的操作來達到降低系統(tǒng)的計算復雜性的功能。設計不僅對抽取濾波系統(tǒng)的多相結構適用,而且對內(nèi)插系統(tǒng)的多相分解的實現(xiàn)也有一定的參考作用。
[1]陶然,張惠云,王越.多抽樣率數(shù)字信號處理理論及其應用[M].北京:清華大學出版社,2007:4.
[2]高媛菲.數(shù)字下變頻中抽取濾波器的設計[J].桂林電子科技大學學報,2009,29(6):467-471.
[3]雷能芳.基于FPGA的CIC抽取濾波器設計與實現(xiàn)[J].計算機與數(shù)字工程,2012(1):137-139.
[4]劉彬彬,林偉.基于Matlab和FPGA的CIC濾波器的設計[J].電子器件,2010,33(2):231-234.
[5]潘桃莉,謝光忠,周云,等.改進的抽取濾波器設計[J].微處理機,2011(1):7-10.
[6]王福維,程乃平,倪淑艷.基于FPGA的CIC抽取濾波器的設計與實現(xiàn)[J].計算機工程與應用,2011,47(8S):415-418.
[7]Meyer-Baese,著.劉凌,胡永生,譯.數(shù)字信號處理的 FPGA實現(xiàn)[M].北京:清華大學出版社,2003.
[8]田耘,徐文波,張延偉.無線通信FPGA設計[M].北京:電子工業(yè)出版社,2007.
[9]Vaidyanathan P P.Filter Banks in Digital Communications[J].IEEE Circuits and Systems Magazine,2001,1(2):4-25.
[10]陳后金,薛健,胡健.數(shù)字信號處理[M].北京:高等教育出版社,2008.
[11]王旭東,潘廣禎.MATLAB及其在FPGA中的應用[M].北京:國防工業(yè)出版社,2005.
[12]陳懷琛.數(shù)字信號處理教程-MATLAB釋義與實現(xiàn)[M].北京:電子工業(yè)出版社,2004.