數(shù)字濾波(idgital filter)是由數(shù)字乘法器、加法器和延時單元組成的一種計算方法。其功能是對輸入離散信號的數(shù)字代碼進行運算處理,以達到改變信號頻譜的目的。數(shù)字濾波器根據(jù)頻域特性可分為低通、高通、帶通和帶阻4個基本類型;根據(jù)時域特性可分為無限脈沖響應(yīng)(infinite impulse response,IIR)濾波器和有限脈沖響應(yīng)(finite impulse response,F(xiàn)IR)濾波器。FIR濾波器不存在穩(wěn)定性和是否可實現(xiàn)的問題,容易做到線性相位,故在數(shù)據(jù)通信、圖像處理等領(lǐng)域廣泛應(yīng)用。
目前,F(xiàn)IR濾波器的硬件實現(xiàn)有以下幾種方式:一種是使用通用數(shù)字濾波器集成電路,這種電路使用簡單,但是由于字長和階數(shù)的規(guī)格較少,不易完全滿足實際需要;雖然可采用多片擴展來滿足要求,但會增加體積和功耗,因而在實際應(yīng)用中受到限制。另一種是使用DSP芯片,DSP芯片有專用的數(shù)字信號處理函數(shù)可調(diào)用,實現(xiàn)FIR濾波器相對簡單,但是由于程序順序執(zhí)行,速度受到限制。而且,就是同一公司不同系統(tǒng)的DSP芯片,其編程指令也會有所不同,開發(fā)周期較長。還有一種是使用可編程邏輯器件,如FPGA(field programmable gate array),即現(xiàn)場可編程門陣列,有著規(guī)整的內(nèi)部邏輯塊整列和豐富的連線資源,特別適合用于細(xì)粒度和高并行度結(jié)構(gòu)的FIR濾波器實現(xiàn),相對于串行運算主導(dǎo)的通用DSP芯片來說,并行性和可擴展性都更好。
本文介紹一種基于SoPC的FIR濾波器設(shè)計方案,設(shè)計流程如圖l所示。該設(shè)計方法程序簡單,調(diào)試方便,得到的FIR濾波器精確度高。
1 FIR濾波器原理
FIR數(shù)字濾波器是一種非遞歸系統(tǒng),其沖激響應(yīng)總是有限長的,其系統(tǒng)函數(shù)可以記為:
,最基本的FIR濾波器可用下式表示
輸入采樣序列;h(m)是濾波器系數(shù);N是濾波器的階數(shù);y(n)表示濾波器的輸出序列。也可以用卷積來表示輸出序列y(n)與x(n),h(n)的關(guān)系:
y(n)=x(n)*h(n)
圖2顯示了一個典型的直接T型3階FIR濾波器,其輸出序列y(n)滿足下列等式:
在該FIR濾波器中,總共存在3個延時結(jié),4個乘法單元,1個4輸入的加法器。如果采用普通的數(shù)字信號處理器(DSP)來實現(xiàn),只能用串行的方式順序地執(zhí)行延時、乘加操作,不可能在1個DSP處理器指令周期內(nèi)完成,必須用多個指令周期來完成。但如果采用FPGA來實現(xiàn),就可以采用并行結(jié)構(gòu),在1個時鐘周期內(nèi)得到1個FIR濾波器的輸出。不難發(fā)現(xiàn),圖2的電路結(jié)構(gòu)是一種流水線結(jié)構(gòu),這種結(jié)構(gòu)在硬件系統(tǒng)中有利于并行高速運行。
2 FIR濾波器的實現(xiàn)
Altera提供的FIR Complier是結(jié)合Altera FPGA器件的FIR Filter Core,DSP Builder與FIR Compiler可以緊密結(jié)合起來。DSP Builder提供了FIR Core的應(yīng)用環(huán)境和仿真驗證環(huán)境。
2.1 建立模型文件
為了調(diào)用FIR IP Core,在Simulink環(huán)境中新建模型文件,放置Sigtlal Compiler模塊和FIR模塊。啟動Simulink的方法:打開Matlab,在主命令窗口直接鍵入Simulink,按回車即可。然后打開Altera DSP Builder模塊,在MegaCore Functions調(diào)出fir_compiler_v7_0。
2.2 配置FIR濾波器核
雙擊模型中的FIR模塊,在彈出來的選擇窗口中有:關(guān)于這個核(about this core)、程序說明書(documentation)、顯示元件(display symb01)、步驟1確定參數(shù)(Stepl:Parameterize)和步驟2生成(Step2:Generate)等4個不同的選項。點擊stepl,便打開了FIR濾波器核的參數(shù)設(shè)置窗口,如圖3所示。
由圖3可見,濾波器的系數(shù)精度為32位,器件為CycloneⅢ,結(jié)構(gòu)為并行濾波器,結(jié)構(gòu)選擇了1級流水線,濾波器由LC邏輯宏單元構(gòu)成,系數(shù)數(shù)據(jù)存于FPGA的M9K模塊中,1個輸入通道,32位有符號并行輸入,全精度數(shù)據(jù)輸出。設(shè)定后會直接顯示濾波器的頻率響應(yīng)(frequency res-ponse)或時域響應(yīng)及系數(shù)值(timeresponse & coefficeient values)。由其頻率響應(yīng)圖可以看出,此FIR濾波器為低通濾波器。如果不符合設(shè)計要求,則可以通過對Edit Coefficient Set選項,對濾波器進行重新配置。
2.3 生成VHDL語言
完成FIR濾波器核配置后,便可得到設(shè)計好的濾波器,加入輸入/輸出信號,形成如圖4所示電路。點擊SignalCompiler,再選擇Anal-yze,選擇Sigle step compilation中的Convert MDL to VHDL,就可以生成對應(yīng)的VHDL語言。
在QuartusⅡ中打開編譯后生成的fir.qpf工程文件,可以得到濾波器的VHDL語言,其部分代碼如下:
編譯成功后,可以將其轉(zhuǎn)換成元件。
2.4 系統(tǒng)功能仿真
在Matlab中,建立M文件,運用前面設(shè)置好參數(shù)所生成的FIR濾波器,打開FIR濾波器時域響應(yīng)與系數(shù)值(time response & coefficeient vahles)。得到該濾波器的時域響應(yīng)和系數(shù)值如圖5所示,由該系數(shù)表確定濾波器,并進行算法級仿真,得到如圖6所示的波形。
圖6(a)為濾波前信號,圖6(b)為濾波后信號。從仿真波形可以看出,經(jīng)過FIR濾波器之后,高次諧波信號被很好地濾除了,達到了預(yù)定的設(shè)計目標(biāo)。
3 基本FPGA片上系統(tǒng)的功能測試
設(shè)計目標(biāo)器件選用美國Altera公司Cyclone系列FPGA器件中的EP3C25E144C8N芯片,通過開發(fā)工具QuartusⅡ?qū)Ω鱾€模塊的VHDL源程序及頂層電路進行編譯、邏輯綜合、電路的糾錯、驗證、自動布局布線及仿真等各種測試,最終將設(shè)計編譯的數(shù)據(jù)下載到芯片中,同時與單片機AT89C51結(jié)合,進一步進行數(shù)據(jù)的快速處理和控制,實現(xiàn)鍵盤可設(shè)置參數(shù)及LCD顯示。經(jīng)實際電路測試驗證,達到了設(shè)計的要求。
4 結(jié)語
這種基于SoPC數(shù)字濾波器的設(shè)計與實現(xiàn),不僅利用Matlab中的Simulink與Alterl DSP Builder工具確定FIR濾波器系數(shù),不用編程,只需簡單的設(shè)置,而且通過VHDL層次化設(shè)計方法,同時使FPGA與單片機相結(jié)合,采用C51及VHDL語言模塊化設(shè)計思想進行優(yōu)化編程,進一步完善了數(shù)據(jù)的快速處理和有效控制,提高了設(shè)計的靈活性、可靠性,也增強了系統(tǒng)功能的可擴展性。
責(zé)任編輯:gt
-
FPGA
+關(guān)注
關(guān)注
1629文章
21729瀏覽量
602986 -
芯片
+關(guān)注
關(guān)注
455文章
50714瀏覽量
423138 -
濾波器
+關(guān)注
關(guān)注
161文章
7795瀏覽量
177993
發(fā)布評論請先 登錄
相關(guān)推薦
評論