崔 亮,張芝賢
(沈陽航空航天大學 電子信息工程學院,遼寧 沈陽 110136)
數(shù)字濾波器通常都是應用于修正或改變信號的屬性[1]。最為普通的數(shù)字濾波器就是線性時間不變量 (LTI)濾波器。LTI與其輸入信號之間相互作用,是經(jīng)過一個線性卷積的過程。
LTI濾波器分為兩類:IIR和FIR濾波器。在數(shù)據(jù)通訊,語音信號處理,圖像處理,雷達信號處理中,不能有明顯的相位失真,而有限長單位沖激相應FIR具有嚴格的線性相位的特點;此外,F(xiàn)IR濾波器的單位抽樣響應序列是有限長的,因此是一個穩(wěn)定的系統(tǒng),故FIR濾波器在上述領域中得到廣泛應用[2]。
隨著現(xiàn)代電子技術的發(fā)展,采用FPGA(Field Programmable Gata Aarry)[3]進行數(shù)字信號處理技術得到廣泛應用。以現(xiàn)場可編程門陣列(FPGA)為代表的ASIC器件得到迅速普及和發(fā)展。數(shù)字濾波器的設計正擺脫傳統(tǒng)的設計模式,而采用FPGA技術來設計FIR濾波器正成為設計的趨勢。目前在FPGA中用于設計FIR濾波器有很多種方法,即直接乘加結構、乘法器復用結構、乘累加結構、DA(分布式算法)。在文中是以一32階FIR濾波器進行比較的。
這里設計的是低通濾波器,其中Fpass=23 MHz,F(xiàn)stop=40 MHz, Fs=160 MHz,Apass=0.1 dB,Astop=80 dB。 通過調(diào)用MATLAB中濾波器設計的工具箱[4](FDATool),生成FIR系數(shù)。
從FIR公式出發(fā)[5],可以得道fir濾波器的輸出是輸入數(shù)據(jù)和系數(shù)相卷積得到的,如公式(1)所示。
具有嚴格線性相位FIR濾波器具有對稱的性質(zhì),即滿足偶對稱性或奇對稱,在這里介紹下偶對稱的結構,即滿足公式(2):
由上面討論知道FIR的輸出等于輸入信號與FIR系數(shù)的卷積,如式(3)所示:
s為輸入信號,h為FIR濾波器系數(shù),N為濾波器的系數(shù)。
從公式可得到是把輸入數(shù)據(jù)進行延遲,與系數(shù)相乘后加在一起即可得到最后輸出結果。據(jù)此可以得到直接乘加結構[5],整體框架如圖1所示。
輸入數(shù)據(jù)通過32個延遲單元并和系數(shù)相乘,相乘后的結果通過加法樹就可得到輸出數(shù)據(jù)。該結構使用了32個乘法器和31個加法器。對于更高階的濾波器,使用的乘法器和加法器更多,需要占用大量的FPGA資源。
圖1 整體框架Fig.1 Overall diagram
由于嚴格線性相位的FIR具有偶對稱的性質(zhì),即h(i)=h(N-i),因此在實現(xiàn)中可以先進行延遲再把數(shù)據(jù)進行兩兩相加并與對應的系數(shù)相乘,然后通過加法樹得到最終輸出結果。
先定義32個寄存器用于保存通過延遲單元延時的數(shù)據(jù),然后把寄存器中的數(shù)據(jù)進行兩兩相加再同系數(shù)相乘,最后通過加法樹得到最后的輸出結果[6]。整體框圖[3]如圖2所示。
圖2 整體結構Fig.2 Overall diagram
該結構使用了16個乘法器和31個加法器,比直接乘加結構節(jié)省了一半的乘法器,但是如果對于階數(shù)很多的濾波器,仍然會占用大量的資源。
乘累加結構是通過對輸入數(shù)據(jù)進行延遲后先進行兩兩相加,再選擇對應的數(shù)據(jù)和系數(shù)作為乘法器的輸入數(shù)據(jù),再把相乘后的結果通過累加器的累加得到最終的輸出結果[6]。整體框圖如圖3所示。
圖3 整體框圖Fig.3 Overall diagram
通過觀察框圖可看出只使用了1個乘法器和1個加法器,這會節(jié)省很多的資源,相應的會造成時序控制的復雜性。
分布式算法(DA算法)是一種以實現(xiàn)乘加為目的的運算方法[6]。它是在完成乘加功能時是通過將各輸入數(shù)據(jù)每一對應位產(chǎn)生的部分積預先進行相加形成對應部分積,然后再把各部分積保存起來作為查找表的內(nèi)容,通過將輸入數(shù)據(jù)的每一位最為查找表的地址讀出數(shù)據(jù),再通過加法樹得到最終輸出結果[6]。FIR公式可用式(4)表示。
對于一個16位的有符號數(shù),x(i)可表示為:
代入式(4)可得:
從式 (6)可看出當輸入數(shù)據(jù)很多時,則查找表需要做2^16=65 536個部分積,即查找表要存儲65 536個可能組合值,這個數(shù)據(jù)是很多的,不利于工程實現(xiàn)。因此這里可以先做一個4階的查找表,把這4階的查找表做成一個4階的FIR濾波器,再把這4階的FIR濾波器構建一個32階的濾波器。
4階FIR查找表結構如表1所示。
表1 查找表中值的設置Tab.1 Median of the lookup table setting
4階的FIR整體框圖結構如圖4所示。
32階FIR濾波器結構如圖5所示。
DA算法僅使用加法器和查找表的結構,而不使用乘法器,這樣會節(jié)省很多資源,在現(xiàn)在工程量很大的情況下可以節(jié)省很多資源。
在這里可以對上述各種實現(xiàn)結構做一個資源統(tǒng)計表如表2所示。
圖4 4階FIR框圖Fig.4 Overall diagram of 4 FIR
圖5 32階FIR濾波器結框圖Fig.5 Overall diagram of 32 FIR
表2 資源統(tǒng)計表Tab.2 Resource statistics
根據(jù)表格2得到乘法器復用結構比直接乘加結構會節(jié)省一半的乘法器、而乘累加結構只使用了一個乘法器、DA只使用加法器沒有用到乘法器。在FPGA中乘法器會占用大量的邏輯資源,從統(tǒng)計表中得到DA算法雖然沒有用到乘法器但是用到的資源是比較多的,相比下直接乘加結構占用的資源最較少,但是他用到了乘法器。
[1]Lyons R G.數(shù)字信號處理[M].2版.朱光明,譯.北京:機械工業(yè)出版社,2006.
[2]余琳,黃光明.基于FPGA的FIR濾波器的性能研究[J].電子設計工程,2011,19(9):125-128.YU Lin,HUANG Guang-ming.Performance of FIR digital filterbased on FPGA.ElectronicDesign Engineering,2011,19(9):125-128.
[3]王旭東,潘廣楨.MATLAB及其在FPGA中的應用[M].北京:國防工業(yè)出版社,2006.
[4]羅軍輝,羅勇江,白義臣,等.MATLAB 7.0在數(shù)字信號處理中的應用[M].北京:機械工業(yè)出版社,2005.
[5]程培青.數(shù)字信號處理教程 [M].北京:清華大學出版社,2007.
[6]田耕,許文波,張延偉.無線通信FPGA設計[M].北京:電子工業(yè)出版社,2007.