何蘊(yùn)良,耿淑琴,汪金輝(北京工業(yè)大學(xué)電子信息與控制工程學(xué)院,北京 100022)
?
基于Verilog的FIR數(shù)字濾波器設(shè)計與仿真
何蘊(yùn)良,耿淑琴,汪金輝
(北京工業(yè)大學(xué)電子信息與控制工程學(xué)院,北京100022)
摘要:設(shè)計一種基于Verilog的FIR數(shù)字低通濾波器。在結(jié)構(gòu)上改變了以往乘法器和加法器的簡單結(jié)合,利用分布式算法構(gòu)造查找表進(jìn)行乘累加運(yùn)算,節(jié)約資源占用并且提高運(yùn)算速率。利用Matlab工具設(shè)計和獲取濾波器參數(shù),并且進(jìn)行仿真驗證。濾波器參數(shù)量化后形成查找表,利用Verilog HDL語言對硬件電路模塊進(jìn)行設(shè)計描述,并且用ModelSim進(jìn)行整個硬件電路系統(tǒng)的功能仿真,驗證了設(shè)計的正確性。設(shè)計在速度和面積方面做了折中和優(yōu)化,成功實現(xiàn)了數(shù)字濾波的功能。
關(guān)鍵詞:Verilog;數(shù)字濾波器;分布式算法;FIR
從帶有干擾的原始信號中提取有效信號并對其進(jìn)行處理,幾乎是所有科學(xué)技術(shù)領(lǐng)域都必然涉及的重要環(huán)節(jié)。信號處理的任務(wù)主要是對信號進(jìn)行采樣接收、頻譜分析、域變換、綜合和估值識別等[1]?,F(xiàn)在的信號處理的系統(tǒng)主要分為兩大類:模擬信號處理系統(tǒng)和數(shù)字信號處理系統(tǒng)。數(shù)字信號處理,主要是利用計算機(jī)或?qū)S锰幚碓O(shè)備對數(shù)字信號進(jìn)行分析、變換、綜合、估計與識別等進(jìn)行加工處理。數(shù)字信號處理的核心的內(nèi)容主要是傅里葉變換和數(shù)字濾波。而其中數(shù)字濾波技術(shù)的主要任務(wù)是從帶有噪聲干擾的信號中提取所需要的有效信號,而抑制不需要的噪聲信號。數(shù)字濾波器(Digital Filter)是用來對輸入信號進(jìn)行濾波的硬件或軟件。它的輸入和輸出均為數(shù)字信號,并通過一定運(yùn)算關(guān)系改變輸入信號所含頻率成分的器件[2]。與模擬濾波器相比,數(shù)字濾波器的處理的信號形式,實現(xiàn)濾波的方法不同,因此數(shù)字濾波器具有精度高、穩(wěn)定,體積小、重量輕、靈活,不要求阻抗匹配等優(yōu)點。數(shù)字濾波器在實驗和現(xiàn)實的生產(chǎn)生活中起著廣泛和重要的作用。
1.1FIR數(shù)字濾波器原理和特點
數(shù)字濾波器分為有限沖激響應(yīng)(FIR)數(shù)字濾波器和無限沖激響應(yīng)(IIR)數(shù)字濾波器兩種,這兩種濾波器均被廣泛應(yīng)用于數(shù)字信號處理系統(tǒng)中。IIR數(shù)字濾波器設(shè)計方便簡單,但是它的相位具有非線性,所以要求全通網(wǎng)絡(luò)進(jìn)行相位的校正,而且它的穩(wěn)定性難以保障。而FIR濾波器具有很好的線性相位特性,使得它越來越受到廣泛的重視[3]。FIR數(shù)字濾波器是一個線性時不變系統(tǒng),所以N階因果有限沖激響應(yīng)濾波器可以用傳輸函數(shù)H(z)來描述:
在時域中,上述有限沖激響應(yīng)濾波器的輸入/輸出關(guān)系為:
式中:x(n)和y(n)分別是輸入和輸出序列。FIR濾波器的主要特點是:既具有嚴(yán)格的線性相位,又具有任意的幅度。它的單位抽樣響應(yīng)是有限長的,因而濾波器性能比較穩(wěn)定。只要經(jīng)過一定的延時,任何非因果有限長序列都能變成因果的有限長序列,因而能用因果系統(tǒng)來實現(xiàn)。它的單位沖擊響應(yīng)是有限長的,可用快速傅里葉變換來實現(xiàn)過濾信號,運(yùn)算效率可以有很大提高。
1.2FIR數(shù)字濾波器結(jié)構(gòu)
FIR數(shù)字濾波器的實現(xiàn)一般有直接型、轉(zhuǎn)置型、線性相位型、級聯(lián)和頻率采樣等[4]。乘法運(yùn)算是實現(xiàn)濾波的關(guān)鍵方法,但是乘法運(yùn)算占用電路資源很大,因此,在選擇結(jié)構(gòu)時,也要考慮到資源的占用。線性相位的FIR濾波器結(jié)構(gòu)比一般直接型結(jié)構(gòu)可以節(jié)省幾乎一半的乘法次數(shù),設(shè)計中選擇了線性相位的FIR濾波結(jié)構(gòu)。FIR濾波器的線性相位非常重要,數(shù)據(jù)的傳輸和圖像處理都要求系統(tǒng)具有線性相位。由于FIR濾波器的沖激響應(yīng)是有限長的,有可能做成嚴(yán)格線性相位。當(dāng)沖擊響應(yīng)滿足下列公式時,F(xiàn)IR濾波器具有對稱結(jié)構(gòu),為線性相位濾波器;N階線性相位的因果FIR系統(tǒng)的單位沖激響應(yīng)濾波器的對稱的沖激響應(yīng)公式為:
或者反對稱的沖激響應(yīng)公式:
當(dāng)N為偶數(shù)時:
當(dāng)N為奇數(shù)時:
因此FIR線性相位系統(tǒng)的結(jié)構(gòu)可轉(zhuǎn)化成如圖1和圖2所示的電路圖。
這樣就實現(xiàn)了結(jié)構(gòu)上的對稱,因此減少了乘法次數(shù)。由于這種對稱性,使得乘法器數(shù)量可以減半。乘法器的減少,意味著電路成本減少,可以提高電路的工作效率。
圖1 FIR線性相位系統(tǒng)的結(jié)構(gòu)(N為奇數(shù))
圖2 FIR線性相位系統(tǒng)的結(jié)構(gòu)(N為偶數(shù))
分布式算法是一項重要的FPGA技術(shù),這種算法使得一般的乘積和計算在FPGA實施過程中不再需要通用乘法器[5]。分布式算法和傳統(tǒng)實現(xiàn)乘累加運(yùn)算的主要不同是:執(zhí)行部分積運(yùn)算的先后順序不同。分布式算法完成乘累加功能是通過把輸入數(shù)據(jù)每一個對應(yīng)的位產(chǎn)生的部分積預(yù)先進(jìn)行相加形成相應(yīng)部分積,然后再對各部分產(chǎn)生的積相加起來得到最終結(jié)果。
而傳統(tǒng)的算法是在所有的乘積產(chǎn)生之后,再進(jìn)行相加得到最后的結(jié)果。與傳統(tǒng)算法相比,運(yùn)用分布式算法之后可以極大地減少硬件電路規(guī)模,并且容易實現(xiàn)流水線處理,因而提高了電路執(zhí)行的速度。對于FIR數(shù)字濾波器,基本結(jié)構(gòu)是一個分節(jié)的延時線,每一節(jié)的輸出加權(quán)累加,得到濾波器的輸出。它的輸出y就是輸入x和系數(shù)h的內(nèi)積:
輸入數(shù)據(jù)x(n)可以采用B+1位補(bǔ)碼來表示,即:
因為系數(shù)h(n)為已知常數(shù),則內(nèi)積y可以寫成:
將上式中的第二部分展開,重新分別求和,這也是“分布式算法”名稱的由來,可以得到:
化簡為:
計算h(n)xb(n)的方法就是用查找表來實現(xiàn)一個映射,然后再將此映射得到的結(jié)果經(jīng)過相應(yīng)的二次冪加權(quán),最后得到濾波器的輸出。分布式算法在大規(guī)模集成電路實現(xiàn)中被廣泛應(yīng)用,它的顯著優(yōu)點包括可節(jié)約硬件資源,所實現(xiàn)硬件結(jié)構(gòu)具有高度規(guī)整性,最小的傳輸延時和最少的跨區(qū)域連接等[6]。
3.1濾波參數(shù)提取與量化
FIR濾波器系數(shù)計算是比較繁瑣的,在設(shè)計時,可以借助Matlab工具箱,根據(jù)設(shè)計需求選擇合適的窗函數(shù),即可方便地計算濾波器系數(shù),并分析幅頻、相頻特性[7]。采用Matlab中工具箱中的Filter Design來設(shè)計和提取濾波器參數(shù)。利用其中FDAtool工具可以設(shè)計出滿足所需性能指標(biāo)的濾波器。界面如圖3所示。
圖3 Toolboxes工具箱界面
要設(shè)計的濾波器的參數(shù)如圖3所示:設(shè)計低通濾波器,采用窗函數(shù)中的Kaiser窗來實現(xiàn),Beta值為2.116,Wc為0.4。按照給定的參數(shù)設(shè)計數(shù)字濾波器,得到的沖擊響應(yīng)、線性相位和幅度響應(yīng)如圖4所示,可見第一旁瓣響應(yīng)小于-30 dB,符合設(shè)計要求。由于Matlab計算得到的濾波系數(shù)均為有符號浮點值,但在后續(xù)利用硬件描述語言對數(shù)字濾波器進(jìn)行RTL建模和功能仿真時,濾波系數(shù)都必須為定點值。因此,還需要將這些浮點形式的濾波系數(shù)定點量化[8]。將量化后轉(zhuǎn)換成補(bǔ)碼形式,得到的系數(shù)如表1所示。
3.2Matlab仿真和結(jié)果分析
把設(shè)計的濾波器實例化,并在Matlab中Simulink工具下仿真,測試它是否可以完成濾波功能。搭建測試平臺如圖5所示。給定高頻和低頻兩個測試信號,并將這兩個測試信號混合,混合后的信號如圖6所示。然后再通過濾波器,經(jīng)過濾波器處理的信號如圖7所示,觀測輸出信號是否可以成功地濾掉高頻信號,保留理想的低頻信號。
圖4 濾波器的沖擊響應(yīng)、線性相位和幅度響應(yīng)
表1 量化系數(shù)和補(bǔ)碼表
圖5 測試平臺
圖6 混合后的信號
圖7 經(jīng)過濾波的信號
4.1模塊描述
上文中證實了該數(shù)字濾波器功能的正確性,開始把整個設(shè)計劃分成各個功能模塊,并且定義各個模塊的功能,然后對濾波器的各個功能模塊進(jìn)行硬件語言描述,形成各個模塊的實例。
移位寄存模塊的功能是將輸入的數(shù)據(jù)在時鐘的上升沿依次進(jìn)行移位寄存,即就是產(chǎn)生一次數(shù)據(jù)延遲的過程。因為抽頭系數(shù)的對稱性,所以可以把首尾的輸入系數(shù)預(yù)先進(jìn)行相加處理,然后對這個預(yù)相加的結(jié)果再進(jìn)行數(shù)據(jù)的處理,合二為一,這樣可以節(jié)省芯片面積和運(yùn)算時間。串并轉(zhuǎn)換模塊,把并行的數(shù)據(jù)轉(zhuǎn)化為串行的數(shù)據(jù),然后輸入到查找表中進(jìn)行查找。查找表模塊,該模塊的作用是對輸入的數(shù)據(jù)進(jìn)行查找,輸出查找表結(jié)果。查找表結(jié)構(gòu)相加模塊的功能是把查找表中輸出的數(shù)據(jù)進(jìn)行相加。
計算模塊的功能是把相加后的數(shù)據(jù)進(jìn)行加或者減操作,輸出最終的結(jié)果。整合好的電路頂層連接如圖8所示。
圖8 電路頂層連接框圖
4.2電路仿真
將測試數(shù)據(jù)依次送到輸入端,觀察輸出數(shù)據(jù)的結(jié)果,經(jīng)過計算,輸出結(jié)果和計算應(yīng)得結(jié)果一致,準(zhǔn)確無誤,說明濾波器仿真功能正確,輸入和輸出信號見圖9。
圖9 電路仿真結(jié)果
本文設(shè)計實現(xiàn)了FIR數(shù)字低通濾波器,整個設(shè)計分成濾波器系數(shù)設(shè)計提取和濾波電路的Verilog實現(xiàn)。濾波系數(shù)設(shè)計提取利用Matlab工具,并用其進(jìn)行仿真驗證,證明該濾波算法原理的正確性。采用自頂向下的設(shè)計方法,將FIR濾波器系統(tǒng)劃分為若干電路的模塊,分別對各個模塊進(jìn)行Verilog設(shè)計實現(xiàn),最后整合成整個濾波器電路,經(jīng)過仿真驗證了其功能的正確性。
參考文獻(xiàn)
[1]戴明禎.數(shù)字信號處理的硬件實現(xiàn)[M].北京:航空工業(yè)出版社,1998.
[2]劉朋全.基于FPGA的FIR數(shù)字濾波器的設(shè)計和實現(xiàn)[D].西安:西北工業(yè)大學(xué),2006.
[3]王旭東,潘明海.數(shù)字信號處理的FPGA實現(xiàn)[M].北京:清華大學(xué)出版社,2011.
[4]劉福泉.基于FPGA的FIR數(shù)字濾波器實現(xiàn)[D].北京:北京郵電大學(xué),2012.
[5]王一海,俞筱楠,姜志鵬.并行分布式算法FIR濾波器的FPGA實現(xiàn)[J].電子器件,2012,35(5):545?548.
[6]王天云.基于分布式算法FIR濾波器的FPGA實現(xiàn)[J].艦船電子工程,2005,25(5):107?110.
[7]孫耀奇,高火濤,熊超,等.基于Matlab和FPGA的FIR數(shù)字濾波器設(shè)計及實現(xiàn)[J].現(xiàn)代電子技術(shù),2008,31(11):89?92.
[8]王赟松.FIR數(shù)字濾波器設(shè)計[D].西安:西安電子科技大學(xué),2012.
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 Mat?lab was used to obtain parameters of the filter. The look?up table is formed by quantification of the parameters. The hardware cir?cuit 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
中圖分類號:TN713?34
文獻(xiàn)標(biāo)識碼:A
文章編號:1004?373X(2016)10?0001?04
doi:10.16652/j.issn.1004?373x.2016.10.001
收稿日期:2015?09?06
基金項目:國家自然科學(xué)基金(61204040;60976028);教育部博士點基金(20121103120018);北京市教育委員會科技計劃面上項目(JC002999201301);北京市自然科學(xué)基金資助(4152004)
作者簡介:何蘊(yùn)良(1991—),男,河北秦皇島人,碩士研究生。研究方向為集成電路設(shè)計與系統(tǒng)。耿淑琴(1970—),女,山西運(yùn)城人,博士。研究方向為集成電路設(shè)計與系統(tǒng)、無線傳感網(wǎng)絡(luò)等。汪金輝(1982—),男,河北唐山人,副教授,博士。研究方向為集成電路設(shè)計、嵌入式系統(tǒng)等。