新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 基于FPGA的IIR數(shù)字濾波器的快捷設(shè)計

基于FPGA的IIR數(shù)字濾波器的快捷設(shè)計

作者: 時間:2013-01-05 來源:網(wǎng)絡(luò) 收藏

3.2 VHDL代碼頂層模塊

圖4是該MATLAB設(shè)計的頂層模塊“top_lev-el”的示意圖。圖中,Gclk為全局時鐘輸入(來自40MHz晶振),AD9218clk和AD9765clk是由Gclk直通送往AD9218和AD9765的驅(qū)動時鐘;AD9218data_out(9:0)是來自AD9218的10位濾波器輸入信號,設(shè)計時可與核心模塊“lpf”的輸人data_in(9:0)相連;AD9765data_in(9:0)是送往AD9765的10位濾波器輸出信號,可與核心模塊“lpf”的輸出data_out(9:0)相連。

基于FPGA的IIR數(shù)字濾波器的快捷設(shè)計

圖5給出了頂層模塊的資源占用情況,由圖5可見,該系統(tǒng)的資源占用率非常少。

3.3 VHDL代碼核心模塊

圖6所示為用于信號處理的核心模塊“lpf”。

基于FPGA的IIR數(shù)字濾波器的快捷設(shè)計

在核心模塊VHDL代碼編寫時應(yīng)當(dāng)注意語句“use IEEE.STD_LOGIC_SIGNED.ALL;”,并使用有符號數(shù)運(yùn)算程序包。另外,在將設(shè)計好的整數(shù)系數(shù)B和A轉(zhuǎn)換為二進(jìn)制補(bǔ)碼時,為方便起見,可使用程序包STD_LOGlC_SIGNED.vhd中的類型轉(zhuǎn)換運(yùn)算符CONV_STD_LOGIC_VECTOR()來接收整數(shù)和轉(zhuǎn)換后的長度等兩個參數(shù),然后返回STD_LOGIC_VECTOR型。

本系統(tǒng)的代碼結(jié)構(gòu)體architecture采用行為描述方式,它類似于高級語言,其優(yōu)點(diǎn)在于只需描述清楚輸入與輸出的行為,而無需花費(fèi)更多的時間和精力關(guān)注設(shè)計功能的門級實現(xiàn),因為這些完全可以由EDA工具綜合生成,因而可大大縮短開發(fā)設(shè)計的時間。

核心模塊“lpf”的VHDL語言源代碼如下:

librarv IEEE;

在modelsim上對本核心模塊進(jìn)行仿真及代碼優(yōu)化時,其測試激勵仍然可以分別選用0.5 MHz、3 MHz和6 MHz的正弦波。產(chǎn)生的方法有兩種:一是采用ISE中集成的測試激勵生成器HDL Bencher新建Test bench waveform型文件,并從中輸入一周期正弦數(shù)據(jù);二是將正弦數(shù)據(jù)存為文本文件,然后以TEXTIO方式讀取。限于篇幅,具體操作這里不作介紹。

這種行為仿真(Simulate Behavioral Model)的波形與圖3相同,可見,本模塊源代碼在功能上完全正確。但時序仿真(布局布線后仿真SimulatePost-PlaceRoute VHDL Model)的濾波器輸出波形中的大幅度尖銳毛刺嚴(yán)重影響了濾波器的性能。消除毛刺的具體做法是將進(jìn)程中的最后一條信號賦值語句改為:

經(jīng)過上述賦值語句的修改,再經(jīng)優(yōu)化之后進(jìn)行時序仿真以及后面的硬件驗證,就會發(fā)現(xiàn),濾波器輸出中的毛刺全部被消除,波形平滑,可見優(yōu)化效果非常好。

低通濾波器相關(guān)文章:低通濾波器原理


電源濾波器相關(guān)文章:電源濾波器原理




關(guān)鍵詞: FPGA IIR 數(shù)字濾波器

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉