新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA的IIR數字濾波器的快捷設計

        基于FPGA的IIR數字濾波器的快捷設計

        作者: 時間:2013-01-05 來源:網絡 收藏

        3.2 VHDL代碼頂層模塊

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

        基于FPGA的IIR數字濾波器的快捷設計

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

        3.3 VHDL代碼核心模塊

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

        基于FPGA的IIR數字濾波器的快捷設計

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

        本系統的代碼結構體architecture采用行為描述方式,它類似于高級語言,其優點在于只需描述清楚輸入與輸出的行為,而無需花費更多的時間和精力關注設計功能的門級實現,因為這些完全可以由EDA工具綜合生成,因而可大大縮短開發設計的時間。

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

        librarv IEEE;

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

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

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

        低通濾波器相關文章:低通濾波器原理


        電源濾波器相關文章:電源濾波器原理




        關鍵詞: FPGA IIR 數字濾波器

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 青岛市| 汉寿县| 石城县| 栾川县| 施秉县| 商洛市| 炎陵县| 棋牌| 曲靖市| 阳春市| 孝义市| 辽宁省| 炎陵县| 贵定县| 盐山县| 邯郸市| 抚宁县| 岗巴县| 开江县| 邵阳县| 宁乡县| 阜南县| 彰武县| 屏边| 麻栗坡县| 青浦区| 麟游县| 修武县| 河间市| 澄城县| 江西省| 会泽县| 灵丘县| 兴山县| 石河子市| 九江县| 大方县| 南涧| 万荣县| 上高县| 京山县|