馬桂芳 劉生建
(龍巖學院物理與機電工程學院,福建 龍巖 364012)
隨著信息與數(shù)字技術(shù)的發(fā)展,數(shù)字信號處理已成為當今極其重要的學科與技術(shù)領域之一。而數(shù)字信號處理領域中的重要環(huán)節(jié)之一就是數(shù)字濾波器。數(shù)字濾波器根據(jù)數(shù)字濾波器沖激響應的時域特性,可分為有限長沖激響應(FIR)濾波器和無限長沖激響應(IIR)濾波器。FIR濾波器具有只有零點、系統(tǒng)穩(wěn)定、線性相位、設計更為靈活的特性,因此在實際中得到更為廣泛的應用。
FIR濾波器的方案設計采用基于DSP Builder的FPGA設計方法。利用Matlab的FDATool(Filter Design&Analysis Tool)工具計算所要設計的FIR數(shù)字濾波器的參數(shù);然后根據(jù)要求,使用DSP Builder設計FIR數(shù)字濾波器,并下載到FPGA進行硬件測試。該方案使FIR數(shù)字濾波器設計簡單易行,并能滿足設計要求。圖1為FIR濾波器的系統(tǒng)框圖。
圖1 FIR數(shù)字濾波器的系統(tǒng)框圖
對于一個FIR濾波器系統(tǒng),它的沖激響應總是有限長的,其數(shù)學表達式用差分方程可以表示為:
其中,x(n-i)是輸入采樣序列;h(i)是濾波器系數(shù);L是FIR濾波器的階數(shù);y(n)表示濾波器的輸出序列。
濾波器就是要尋求一個可實現(xiàn)的系統(tǒng)函數(shù)H(z),使其頻率響應H(ejω)滿足所希望得到的頻域信號。結(jié)合FIR濾波器的實現(xiàn)指標,可知本設計的沖激響應h(n)應滿足式(2),h(n)為偶對稱,N為偶數(shù):
H(ejω)的幅值關于ω=π成奇對稱,不適合作高通。
在實際進行數(shù)字信號處理時,往往需要把信號的觀察時間限制在一定的時間間隔內(nèi),只需要選擇一段時間信號對其進行分析。這樣,取用有限個數(shù)據(jù),即將信號數(shù)據(jù)截斷的過程就等于將信號進行加窗函數(shù)操作。選窗標準[1]如下:
①較低的旁瓣幅度,尤其是第一旁瓣。
②旁瓣幅度要下降得快,以利于增加阻帶衰減。
③主瓣寬度要窄,這樣濾波器過渡帶較窄。
根據(jù)標準可知,要設計符合題目要求的FIR濾波器,需要選擇哈明窗(海明窗)作為本設計的窗函數(shù)類型,具體參數(shù)如表1。
表1 哈明窗函數(shù)的基本參數(shù)
FDATool是Matlab信號處理工具箱里專用的濾波器設計分析工具,Matlab 6.0以上的版本還專門增加了濾波器設計工具箱。FDATool可以設計幾乎所有的基本的常規(guī)濾波器,包括FIR和IIR的各種設計方法。它操作簡單,方便靈活。
啟動 Matlab的 FDATool工具,選擇 Dsign Filter,指定FIR數(shù)字濾波器為低通濾波器,采樣頻率fs為20 MHz,截止頻率 fc為500 kHz,使用窗函數(shù)(hamming),將濾波器階數(shù)設置為31。這是由于設置了32階FIR濾波器的常數(shù)系數(shù)項h(0)=0。此時可利用FDATool有關工具分析所設計出的濾波器的幅頻特性、相頻特性、沖激響應、階躍響應、零極點等。由于導出的濾波器系數(shù)是一個一維的小數(shù)變量NUM,而VHDL綜合器又不支持實數(shù),因此要在FIR濾波器模型中使用這些數(shù)據(jù),需要在Matlab命令窗口輸入:round(NUM*(2^8))。此時可以得到一系列的濾波器參數(shù),具體如下:
對于直接I型的FIR濾波器是可以級聯(lián)的。在實際應用中通過不斷地調(diào)用FIR濾波器節(jié),級聯(lián)起來,用來完成多階FIR濾波器的設計。
基于這種思想方法,本系統(tǒng)先設計了一個8階的FIR濾波器子系統(tǒng),然后通過級聯(lián)的方式,構(gòu)成32階FIR低通濾波器。
根據(jù)FIR數(shù)字濾波器的結(jié)構(gòu)原理設計一個低通的8階FIR數(shù)字濾波器的MDL模型,如圖2所示。接著把設計好的MDL模型文件創(chuàng)建成一個8階FIR濾波器子系統(tǒng)并mask subsystem。
復制4個8階FIR濾波器子系統(tǒng),并將子系統(tǒng)銜接起來,將確定的濾波器系數(shù)添加作為32個常數(shù)端口,把4個8階濾波器子系統(tǒng)的輸出端連接起來,接入一個加法器,從而得到32階低通的FIR數(shù)字濾波器的輸出。又因為其后面要接的是一個10位的DA芯片(THS5651),而該芯片的數(shù)據(jù)又是無符號類型的,所以需要對其輸出截取高10位,并轉(zhuǎn)化成無符號輸出。這樣才能在 Cyclone系列的FPGA平臺上進行硬件測試。
圖2 8階低通FIR數(shù)字濾波器的MDL模型
在建立頂層原理圖前,要先生成32階FIR數(shù)字濾波器的VQM文件,然后把生成的VQM文件復制到32階FIR數(shù)字濾波器的文件夾里。
由DSP Builder生成的QuartusII工程,根據(jù)FPGA平臺特性建立頂層原理圖。在圖3所示的FIR數(shù)字濾波器的頂層原理圖中,設置輸入時鐘為20 MHz,然后通過PLL生成20 MHz時鐘給片外的10位高速D/A部門電路和FIR數(shù)字濾波器使用,生成的20 MHz時鐘經(jīng)過二分頻產(chǎn)生10 MHz時鐘作為A/D轉(zhuǎn)換器的時鐘。
在FIR數(shù)字濾波器的頂層原理圖建立后,應將其輸入輸出信號鎖定在芯片確定的引腳上,編譯后下載,以便能對所設計的FIR數(shù)字濾波器進行硬件測試。因此先設置FPGA芯片類型為Cyclone系列GWAC6 EP1C6Q240C8,然后通過查閱有關芯片引腳對照表進行引腳鎖定,最后存儲這些引腳鎖定的信息。在以上步驟完成后還必須在編譯(啟動 Start Compilation)[2]1 次,才能將引腳鎖定信息編譯進編程下載文件中。此后就可以準備將編譯好的SOF文件下載到實驗系統(tǒng)的FPGA中去了。
圖3 FIR數(shù)字濾波器的頂層原理圖
如圖3所示,在32階低通的FIR數(shù)字濾波器的MDL模型文件中添加20 MHz的正弦波和500 kHz的正弦波,并把疊加后得到的波形作為該濾波器的信號源,在輸出端口和輸入端口分別添加一個2通道示波器來觀察波形和一個頻譜分析儀來觀察頻譜的分布。其中20 MHz的正弦波和500 kHz的正弦波的類型是基于采樣的。在仿真前,先進行該濾波器的 configuration parameters。設仿真時間為3000 s,type為fixed-step,solver為discrete(no continuous states),接著點擊 simulation-start來啟動32階低通FIR數(shù)字濾波器的功能仿真,觀察到的結(jié)果如圖4所示。
由圖4可以得出,所設計的32階低通FIR濾波器不僅實現(xiàn)了濾除混疊波中的高頻成分(20 MHz)的功能,而且具有線性相位的特點,符合設計要求。
數(shù)字信號處理系統(tǒng)實際上是由運行在數(shù)字計算機上的軟件實現(xiàn)的,在這種情況下,由于有限精度運算而造成的量化誤差都是固有的,其誤差類型有:
①將輸入信號量化到一組離散電平上而引入的誤差,如模數(shù)轉(zhuǎn)換。
②用有限字長表示乘法系數(shù)而造成的濾波器頻率響應誤差或變換系數(shù)誤差。
③在加法之前或之后對諸如乘法輸出等內(nèi)部數(shù)據(jù)進行量化而造成的誤差。
本設計需要用到A/D變換器來完成將模擬信號轉(zhuǎn)換為數(shù)字信號,即將輸入的模擬信號轉(zhuǎn)換為b位二進制數(shù)字信號。變換器位數(shù)有限,因而存在量化誤差,其量化誤差取決于量化位數(shù),位數(shù)越多量化誤差就越少。如N位的A/D轉(zhuǎn)換器,其量化誤差為1/2N+1。本設計采用的A/D轉(zhuǎn)換器(TLC5540)輸入數(shù)據(jù)為8位,其量化誤差為1/512。
在本設計中采用逼近法來設計FIR數(shù)字濾波器時,是在無限精度的假設條件下計算濾波器的系數(shù)。在實際實現(xiàn)時,這些系數(shù)要被量化,要用有限的字長來表示,因而實際濾波器的時間和頻率響應與理想情況會有偏差。經(jīng)過量化后的FIR濾波器的幅頻、相頻性能會有所改變。
本文主要采用基于FPGA和DSP Builder技術(shù),設計了一個低通的32階FIR數(shù)字濾波器,并分析了所設計的低通FIR數(shù)字濾波器的性能,從而實現(xiàn)了濾除混疊波的功能。該設計克服了傳統(tǒng)的設計方法(如:FPGA、Matlab等)的缺點,提高了系統(tǒng)的分辨率,只有切換速度快,具有切換相位連續(xù)、輸出信號相位噪聲低、可編程、全數(shù)字化易于集成、體積小、重量輕等優(yōu)點。系統(tǒng)設計考慮的諸多要素中,保持系統(tǒng)的穩(wěn)定性與抗干擾性是開發(fā)的關鍵,因此應該慎重選擇適合的方案。
圖4 時間關系曲線
[1]黃亮,張友純.基于FPGA的FIR濾波器的設計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2006(10):20-22.
[2]潘松,黃繼業(yè),王國棟.現(xiàn)代DSP技術(shù)[M].西安:西安電子科技大學出版社,2004.
[3]潘松,黃繼業(yè).EDA技術(shù)使用教程[M].西安:西安電子科技大學出版社,2004.
[4]胡廣書.數(shù)字信號處理——理論、算法與實現(xiàn)[M].北京:清華大學出版社,2002.
[5]楊麗杰,崔葛瑾.基于 FPGA的 FIR濾波器設計方法的研究[J].東北大學學報,2006,32(6):93 -96.
[6]齊海兵,曹志亮,劉春錦.基于DSP Builder的FIR濾波器的設計與實現(xiàn)[J].國外電子元器件,2006(7):7-9.
[7]張登奇,李望移.基于MATLAB的FIR濾波器的設計[J].計算機時代,20067(11):47 -49.