竇恬恬
遼寧錦州渤海大學工學院
基于FPGA的數字濾波器實現
竇恬恬
遼寧錦州渤海大學工學院
對于現今的電子系統而言,尤其是圖像處理、視頻通訊等系統在處理信號方面有很高的要求,信號上要滿足靈活性以及實時性,同時目前的信號處理器無法滿足靈活性以及實時性方面的需求。隨著EDA以及可編程邏輯器件相關技術的不斷發展,無論是從成本、靈活性性能以及功耗等方面出發,FPGA都體現出了很大的優勢,在信號處理領域中已經廣泛運用到了基于FPGA的信號處理器。本文主要實現了基于FPGA的IIR數字濾波器。
FPGA 信號處理 數字濾波器
現今為止,實現數字濾波器的方法主要分為兩種:硬件實現以及軟件實現。其中的軟件實現指的是借助于微型計算機平臺通過軟件實現。運用相關的計算機存儲器、控制器、以及運算器從而通過計算機將濾波器需要實現的運算編成程序執行起來,使用者可以獨自編寫軟件,也能夠選擇用現成的軟件。國內外的很多的研究公司實現了多種語言的信號處理軟件包,然而采取該方法實現效率比較低,很難實時處理信號,即使能夠選擇快速傅立葉變換算法增快計算速度,然而這是需要有所付出的,所以該方法用在科研以及教學方面比較多。
硬件實現指的是選擇專門的硬件數字濾波,現今大部分選擇的是單片機、DSP(數字信號處理器)、以及專門的集成電路。選擇單片機速率比較低,專門的集成電路性能好。現今比較常用的方法是選擇數字信號處理芯片。DSP處理器在本質上指的是應用于數字信號處理方面的一種單片微處理器,該處理器的最大特點是具有很強的靈活性,而且適應性也很強,另外還可以實現可編程,而且具有高效的處理速度。
數字濾波器作為線性處理模塊中的一種,在數字信號處理中具有很廣泛的影響意義,數字濾波器的功能從實際上講就是把再將一組輸入的序列經過運算以后再次形成另一組數字序列。數字濾波器能夠達到準確線性相位特性的效果,而這個是模擬器件無法做到的。數字濾波器通常情況下是由2部分組成,分別是有限沖激響應濾波器,簡稱為FIR和另一種就是無限沖激響應,簡稱為IIR。IIR濾波器中的h(n)是無限長的,也即是單位沖激響應,而同時IIR濾波器的傳遞函數H(z)是存在極點的,在結構上也是有輸出輸入反饋的存在,在結構上稱為是遞歸型的。IIR數字濾波器的傳遞函數可以用以下公式表示。

當設計指標是相同的時候,FIR濾波器在階數方面的要求是高于IIR濾波器5倍左右,而且具有較高的成本,同時具有較大的信號延遲。IIR濾波器在階數方面要求比較低,同時還能夠根據模擬濾波器實現所需要的效果,選擇基于FPGA的IIR濾波器在很多方面都占據優勢。
延時模塊的結構圖如圖1所示。

圖1 延時模塊的結構圖
其中這里的移位寄存器的實現語言選擇的是VHDL,延時模塊程序流程圖如圖2所示。

圖2 延時模塊程序流程圖
控制模塊在設計的過程中主要是采用了從結果開始,進而生成多種控制信號的思想。但是因為不同的控制信號就會有不同的時序,所以必須要確保時序的正確性,從而才可以保證每個模塊能夠相互協調運作,最終獲得正確的結果。在這個過程中的預備工作就是將信號輸入以及輸出的個數確定下來,并且掌握這些信號之間的相互時序關系。
把IIR濾波器中的每個基本二階節的邏輯符號通過固定的方式連接起來,從而實現IIR濾波器的邏輯設計。在IIR濾波器的設計中選擇的二階子系統就有5個,他們之間是相互級聯的關系,而且在同一時鐘的情況下這5個二階子系統是并行工作的,同時需要把12位輸入數據通過補零的方式形成16位,其中所有的級聯二階子系統里面都包括了每個模塊,從而達到處理數字濾波的目的。
濾波器的工作是否正確的檢測需要通過手動的方式將周期數據輸入,表1中所示的是指Matlab的計算值和采用Quartusn進行仿真的結果值,從相關的理論中可以知道,周期方波信號是不存在偶次諧波的,因此當諧波衰減達到了3次以上的時候,需要通過IIR濾波器從而輸出的結果中顯示的是基波。表1中的誤差主要是由于精度問題計算,誤差降低能夠通過二進制位數增加的方式進行改善。

表1 濾波后輸出的數據
有關IIR濾波器的設計指標可以設置成:低通濾波器的抽樣率Fs是等于10M赫茲,而低通濾波器的通帶截止頻率是等于500K赫茲的,阻帶截止頻率的值是等于550K赫茲,而通帶最大衰減的值是等于0.ldB,阻帶最小衰減的值是等于60dB。本文在濾波器方式選擇方面進行了采用切比雪夫I/II型、橢圓型、以及巴特沃斯型等的對比分析。從而能夠得出當IIR濾波器的性能指標是相同的時候,選擇用橢圓型濾波器效果是最佳的,而且該方式所需要的階數是最小的,比較容易實現。
6.1 實驗電路
作為系統測試中最重要的一個部分,實驗電路顯示的是系統的實現情況,該部分主要介紹的是實驗電路中的A/D轉換電路、D/A轉換電路以及IIR數字濾波電路等。
6.1.1 A/D轉換電路
A/D轉換電路中實現的是信號的轉換過程,而這個信號是從模擬信號到數字信號。在A/D轉換電路的實現過程中具體的包括了A/D的轉換芯片以及型號為AD828的運算放大器、以及其他的電阻電容之類的元件。該A/D轉換電路中的芯片選擇的是效率最佳的,而且選擇差分的形式實現模擬信號的輸入,該電路的電壓范圍在1V波動。
6.2 實驗結果與分析
在實際芯片里面保存的是系統設計的10階IIR低通濾波器的相關文件,通過編譯以后從而進一步濾波的測試。在測試IIR濾波器的流程中,輸入的周期方波信號的頻率是不一樣的,首先需要選擇Quartusn軟件里面的邏輯分析儀實現調試和驗證的過程,接著根據雙蹤示波器從而將輸入輸出的波形進行測試。具體的測試波形結果如圖3所示。

圖3 周期等于100KHZ方法的濾波效果

圖4 100KHZ方波濾波前的FFT圖
結語:本文主要介紹了基于基于FPGA的數字濾波器的設計,重點從IIR濾波器的角度進行分析。程序設計部分包括了控制模塊以及延時模塊的設計,課題結尾部分實現了數字濾波器的測試,并且給出了測試的結果圖。
[1]齊海兵,劉雄飛,張德恒.基于FPGA的數字濾波器的設計與實現[J].現代電子技術,2006,29(15):70-71
[2]梁二虎,劉文怡,張文棟.基于FPGA的IIR數字濾波器硬件模塊的設計[J].微計算機信息,2008,24(2):205+225-226
[3]蔣壘,王昌林,劉鎏,等.基于FPGA的FIR數字濾波器算法實現[J].艦船電子工程,2006,26(1):151-156
[4]楊國慶,YANGGuoqing.基于FPGA的FIR數字濾波器的設計與實現[J].現代電子技術,2008,31(19):184-186