

摘 要: 設計一種基于Verilog的FIR數字低通濾波器。在結構上改變了以往乘法器和加法器的簡單結合,利用分布式算法構造查找表進行乘累加運算,節約資源占用并且提高運算速率。利用Matlab工具設計和獲取濾波器參數,并且進行仿真驗證。濾波器參數量化后形成查找表,利用Verilog HDL語言對硬件電路模塊進行設計描述,并且用ModelSim進行整個硬件電路系統的功能仿真,驗證了設計的正確性。設計在速度和面積方面做了折中和優化,成功實現了數字濾波的功能。
關鍵詞: Verilog; 數字濾波器; 分布式算法; FIR
中圖分類號: TN713?34 文獻標識碼: A 文章編號: 1004?373X(2016)10?0001?04
Design and simulation of FIR digital filter based on Verilog
HE Yunliang, GENG Shuqin, WANG Jinhui
(College of Electronic Information Control Engineering, Beijing University of Technology, Beijing 100022, China)
Abstract: A FIR digital low?pass filter based on Verilog was designed and changed in its the structure. It isn’t a commonly used simple combination of multipliers and adders, but the distributed algorithm was used to construct a lookup table to achieve the multiply?accumulate operation. Resource occupation was reduced and the operating rate was improved by this way. The Matlab was used to obtain parameters of the filter. The look?up table is formed by quantification of the parameters. The hardware circuit modules are designed and are described with Verilog HDL. The functional simulation of the whole hardware circuit system was conducted to verify correctness of the design by ModelSim. A compromise and optimization in speed and area were made, by which the functions of digital filtering were achieved successfully.
Keywords: Verilog; digital filter; distributed algorithm; FIR
從帶有干擾的原始信號中提取有效信號并對其進行處理,幾乎是所有科學技術領域都必然涉及的重要環節。信號處理的任務主要是對信號進行采樣接收、頻譜分析、域變換、綜合和估值識別等[1]。現在的信號處理的系統主要分為兩大類:模擬信號處理系統和數字信號處理系統。數字信號處理,主要是利用計算機或專用處理設備對數字信號進行分析、變換、綜合、估計與識別等進行加工處理。數字信號處理的核心的內容主要是傅里葉變換和數字濾波。而其中數字濾波技術的主要任務是從帶有噪聲干擾的信號中提取所需要的有效信號,而抑制不需要的噪聲信號。數字濾波器(Digital Filter)是用來對輸入信號進行濾波的硬件或軟件。它的輸入和輸出均為數字信號,并通過一定運算關系改變輸入信號所含頻率成分的器件[2]。與模擬濾波器相比,數字濾波器的處理的信號形式,實現濾波的方法不同,因此數字濾波器具有精度高、穩定,體積小、重量輕、靈活,不要求阻抗匹配等優點。數字濾波器在實驗和現實的生產生活中起著廣泛和重要的作用。
1 FIR數字濾波器原理及結構
1.1 FIR數字濾波器原理和特點
數字濾波器分為有限沖激響應(FIR)數字濾波器和無限沖激響應(IIR)數字濾波器兩種,這兩種濾波器均被廣泛應用于數字信號處理系統中。IIR數字濾波器設計方便簡單,但是它的相位具有非線性,所以要求全通網絡進行相位的校正,而且它的穩定性難以保障。而FIR濾波器具有很好的線性相位特性,使得它越來越受到廣泛的重視[3]。FIR數字濾波器是一個線性時不變系統,所以N階因果有限沖激響應濾波器可以用傳輸函數H(z)來描述:
將上式中的第二部分展開,重新分別求和,這也是“分布式算法”名稱的由來,可以得到:
化簡為:
要設計的濾波器的參數如圖3所示:設計低通濾波器,采用窗函數中的Kaiser窗來實現,Beta值為2.116,Wc為0.4。按照給定的參數設計數字濾波器,得到的沖擊響應、線性相位和幅度響應如圖4所示,可見第一旁瓣響應小于-30 dB,符合設計要求。由于Matlab計算得到的濾波系數均為有符號浮點值,但在后續利用硬件描述語言對數字濾波器進行 RTL 建模和功能仿真時,濾波系數都必須為定點值。因此,還需要將這些浮點形式的濾波系數定點量化[8]。將量化后轉換成補碼形式,得到的系數如表1所示。
3.2 Matlab仿真和結果分析
把設計的濾波器實例化,并在Matlab中Simulink工具下仿真,測試它是否可以完成濾波功能。搭建測試平臺如圖5所示。給定高頻和低頻兩個測試信號,并將這兩個測試信號混合,混合后的信號如圖6所示。然后再通過濾波器,經過濾波器處理的信號如圖7所示,觀測輸出信號是否可以成功地濾掉高頻信號,保留理想的低頻信號。
4 模塊描述和仿真
4.1 模塊描述
上文中證實了該數字濾波器功能的正確性,開始把整個設計劃分成各個功能模塊,并且定義各個模塊的功能,然后對濾波器的各個功能模塊進行硬件語言描述,形成各個模塊的實例。
移位寄存模塊的功能是將輸入的數據在時鐘的上升沿依次進行移位寄存,即就是產生一次數據延遲的過程。因為抽頭系數的對稱性,所以可以把首尾的輸入系數預先進行相加處理,然后對這個預相加的結果再進行數據的處理,合二為一,這樣可以節省芯片面積和運算時間。串并轉換模塊,把并行的數據轉化為串行的數據,然后輸入到查找表中進行查找。查找表模塊,該模塊的作用是對輸入的數據進行查找,輸出查找表結果。查找表結構相加模塊的功能是把查找表中輸出的數據進行相加。
計算模塊的功能是把相加后的數據進行加或者減操作,輸出最終的結果。整合好的電路頂層連接如圖8所示。
5 結 語
本文設計實現了FIR數字低通濾波器,整個設計分成濾波器系數設計提取和濾波電路的Verilog實現。濾波系數設計提取利用Matlab工具,并用其進行仿真驗證,證明該濾波算法原理的正確性。采用自頂向下的設計方法,將FIR濾波器系統劃分為若干電路的模塊,分別對各個模塊進行Verilog設計實現,最后整合成整個濾波器電路,經過仿真驗證了其功能的正確性。
參考文獻
[1] 戴明禎.數字信號處理的硬件實現[M].北京:航空工業出版社,1998.
[2] 劉朋全.基于FPGA的FIR數字濾波器的設計和實現[D].西安:西北工業大學,2006.
[3] 王旭東,潘明海.數字信號處理的FPGA實現[M].北京:清華大學出版社,2011.
[4] 劉福泉.基于FPGA的FIR數字濾波器實現[D].北京:北京郵電大學,2012.
[5] 王一海,俞筱楠,姜志鵬.并行分布式算法FIR濾波器的FPGA實現[J].電子器件,2012,35(5):545?548.
[6] 王天云.基于分布式算法FIR濾波器的FPGA實現[J].艦船電子工程,2005,25(5):107?110.
[7] 孫耀奇,高火濤,熊超,等.基于Matlab和FPGA的FIR數字濾波器設計及實現[J].現代電子技術,2008,31(11):89?92.
[8] 王赟松.FIR數字濾波器設計[D].西安:西安電子科技大學,2012.