新聞中心

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

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

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

3.2 VHDL代碼頂層模塊

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

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

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

3.3 VHDL代碼核心模塊

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

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

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

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

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

librarv IEEE;

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

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

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

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


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




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

評(píng)論


相關(guān)推薦

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

關(guān)閉