<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 使用FPGA構建的數字濾波器設計方案

使用FPGA構建的數字濾波器設計方案

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

  在Matlab/Simulink環(huán)境下,采用DSP Builder模塊搭建FIR模型,根據FDATool工具對FIR濾波器進(jìn)行了設計,然后進(jìn)行系統級仿真和ModelSim功能仿真,其仿真結果表明其的濾波效果良好。通過(guò)SignalCompiler把模型轉換成VHDL語(yǔ)言加入到FPGA的硬件設計中,從QuartusⅡ軟件中的虛擬邏輯分析工具SignalTapⅡ中得到實(shí)時(shí)的結果波形圖,結果符合預期。

本文引用地址:http://dyxdggzs.com/article/201710/367069.htm

  0 引言

  在信息信號處理過(guò)程中,是信號處理中使用最廣泛的一種方法。通過(guò)濾波運算,將一組輸入數據序列轉變?yōu)榱硪唤M輸出數據序列,從而實(shí)現時(shí)域或頻域中信號屬性的改變。常用的數字濾波器可分為有限脈沖響應(FIR)濾波器和無(wú)限脈沖響應(IIR)濾波器兩種。其中,FIR數字濾波器具有嚴格的線(xiàn)性相位,而且非遞歸結構也保證了運算的穩定性。在實(shí)時(shí)性要求比較高的應用場(chǎng)合,采用可編程芯片FPGA加以實(shí)現,相比于DSP芯片或專(zhuān)用芯片的實(shí)現方法,具有高速、高精度、高靈活性的優(yōu)點(diǎn)。本文在采取了一種基于FPGA和DSP Builder的方法設計FIR數字濾波器時(shí),采用了層次化、模塊化的設計思想,遵循DSP Builder的設計開(kāi)發(fā)流程,在Matlab/Simulink 中建立模型并進(jìn)行系統級仿真,再進(jìn)行Verilog語(yǔ)言轉換,ModelSim仿真驗證無(wú)誤后實(shí)現了FIR數字濾波器的實(shí)時(shí)測試。

  1 FIR 數字濾波器的基本原理及結構

  對于一個(gè)FIR濾波器系統,它的沖擊響應總是有限長(cháng)的,其系統函數可以記為:

  

  式中:x(n) 是輸入采樣序列;h(i) 是濾波器系數;k 是濾波器階數;y(n) 表示濾波器的輸出序列。

  圖1為k 階FIR數字濾波器的結構框圖。

  

  2 FIR 數字濾波器的設計流程

  該設計流程主要涉及到Matlab/Simulink、DSPBuilder和Quartus Ⅱ等工具軟件的開(kāi)發(fā)設計。整個(gè)設計流程,包括從系統描述直至硬件實(shí)現,可以在一個(gè)完整的設計環(huán)境中完成,如圖2所示。

  

 ?。?)Matlab/Simulink 中設計輸入,即在Matlab 的Simulink環(huán)境中建立一個(gè)擴展名為mdl的模型文件,用圖形方式調用Altera DSP Builder 和其他Simulink庫中的圖形模塊(Block),構成系統級或算法級設計框圖(或稱(chēng)Simulink設計模型)。

 ?。?)利用Simulink的圖形化仿真、分析功能,分析此設計模型的正確性,完成模型仿真,也叫系統級仿真。

 ?。?)DSP Builder設計實(shí)現的關(guān)鍵一步,通過(guò)Signal-Compiler把Simulink的模型文件轉化成通用的硬件描述語(yǔ)言Verilog文件。

 ?。?)轉換好的Verilog源代碼用ModelSim軟件進(jìn)行功能仿真,驗證Verilog文件的正確性。接下來(lái)的幾個(gè)步驟是對以上設計產(chǎn)生的Verilog的RTL代碼和仿真文件在Quartus Ⅱ工具軟件中進(jìn)行綜合、編譯適配,生成擴展名為。sof的文件加載到FPGA硬件系統中。

  3 FIR 數字濾波器的詳細設計

  3.1 FIR數字濾波器模塊設計與系統級仿真

  根據FIR數字濾波器的原理,在Simulink環(huán)境下搭建16階的FIR數字濾波器結構,如圖3所示。

  在模型的搭建過(guò)程中,使用了兩個(gè)8位的Shift Taps移位寄存器模塊對輸入信號進(jìn)行分解,然后根據數字濾波器的原理進(jìn)行算法計算。

  

  模型搭建好之后,需要確定16階FIR數字濾波器的系數,在這使用Matlab中的FDATool濾波器設計工具來(lái)確定。確定好濾波器的指標:

 ?。?)設計一個(gè)16階的FIR 濾波器;

 ?。?)低通濾波器;

 ?。?)采樣頻率fs為16 384 Hz,截頻點(diǎn)頻率fs為533 Hz;

 ?。?)輸入序列位寬為16位。

  在設計濾波器界面中,如圖4所示,進(jìn)行下列選擇:

 ?。?)濾波器類(lèi)型(Filter Type)為低通(Lowpass);

 ?。?)設計方法(Design Method)為FIR,采用窗口法(Window);

 ?。?)濾波器階數(Filter Order)定制為15(設置為15 階而不是16階,是由于設計的16階FIR濾波器的常系數項h(0)=0);

 ?。?)濾波器窗口類(lèi)型為Kaiser,Beta為0.5.

  所有的選項確定好后,在FDATool濾波器設計界面中點(diǎn)擊“Design Filter”,Matlab就會(huì )計算濾波器系數并作相關(guān)分析。圖5所示為濾波器的幅頻響應,圖6所示為濾波器的階躍響應。

  

  

  由于所有的模塊都在同一個(gè)Simulink圖中,這時(shí)的Simulink設計圖顯得很復雜,不利于閱讀和排錯,因此把FIR數字濾波器模型做成一個(gè)子系統在設計圖中顯示出來(lái),如圖7所示,這就是Matlab中的層次化設計,在頂層設計圖中,濾波器作為名稱(chēng)是SubFIR_533_16js的一個(gè)模塊出現。同時(shí),圖7中還設置了其他模塊,包括仿真信號輸入模塊、Signal Tap Ⅱ信號實(shí)時(shí)監測模塊、Signal Compiler模塊、硬件開(kāi)發(fā)板模塊、TestBench模塊。

  

  這樣整個(gè)濾波器的Simulink電路設計模型就完成了,然后要對該模型進(jìn)行系統級仿真,查看其仿真結果,在頻率為533 Hz的波形輸入上加入了頻率為3 600 Hz的擾動(dòng)波形,其Simulink仿真結果如圖8所示。

  

  圖中,上面的波形是533 Hz的輸出,中間的波形是533 Hz加上3 600 Hz高頻干擾后的輸出,下面的波形是經(jīng)過(guò)濾波后的輸出。

  3.2 從模型文件到Verilog代碼的RTL級轉換和編譯適配

  利用Signal Compiler模塊將電路模型文件即Simu-link 模塊文件(。mdl)轉換成RTL 級的Verilog 代碼表述和Tcl(工具命令語(yǔ)言)腳本。這種轉換是用來(lái)對數字濾波器Simulink模型進(jìn)行結構化分析的[5]。獲得轉換好的VHDL描述后就可以調用 Verilog綜合器,這里我們選用Quartus Ⅱ,用來(lái)生成底層網(wǎng)表文件,同時(shí)也就可以得到其網(wǎng)表文件對應的RTL電路圖。如圖9所示。

  

  3.3 數字濾波器的ModelSim功能仿真

  ModelSim軟件可支持VHDL和Verilog混合仿真,無(wú)論是FPGA設計的RTL級和門(mén)級電路仿真,還是系統的功能仿真都可以用ModelSim來(lái)實(shí)現[4-5]。由Signal Com-piler生成的Verilog硬件描述語(yǔ)言模塊,在ModelSim中可以直接對Verilog代碼進(jìn)行仿真,檢測源代碼是否符合功能要求。圖 10所示的16階FIR數字濾波器的功能仿真結果圖。與圖8的Simulink仿真結果圖的波形一致,表明經(jīng)過(guò)轉換的Verilog源代碼可以實(shí)現正常的濾波功能。

  

  3.4 FIR數字濾波器的FPGA硬件實(shí)現

  FIR數字濾波器一般是嵌入在采集器的采集板卡中進(jìn)行工作的,把由數字濾波器的Verilog源代碼生成的模塊嵌入到采集板卡的FPGA邏輯中,如圖11所示。

  在Quartus Ⅱ環(huán)境下,數字濾波器的內部邏輯經(jīng)過(guò)編譯適配之后,以。sof文件的形式直接加載到FPGA中。

  

  4 FIR 數字濾波器的FPGA 實(shí)時(shí)測試

  進(jìn)行實(shí)時(shí)測試的電路是應用FPGA和USB的數據采集電路,如圖12所示。

  

  測試時(shí)把信號發(fā)生器設置好的輸入信號輸入到A/D,采樣得到的數據經(jīng)過(guò)FPGA,再通過(guò)USB與PC機相連,應用QuartusⅡ中的SignalTapⅡ工具進(jìn)行實(shí)時(shí)檢測,結果如圖13所示,其中,上面的波形為輸入波形,頻率為200 Hz,下面的波形為輸出波形,由于200 Hz在低通的帶通內,所以?xún)烧叩牟ㄐ蜗嗖畈淮?。當輸入波形為頻率533 Hz時(shí),由于是在截頻點(diǎn),其輸出波形的幅值約為輸入波形幅值的71%,如圖13和14所示。

  

  

  5 結束

  FIR數字濾波器在數字信號處理領(lǐng)域有著(zhù)廣泛的使用,本文通過(guò)仿真和實(shí)時(shí)驗證兩種方式實(shí)現了一種基于FPGA和DSP Builder的FIR數字濾波器。先根據FIR濾波器的基本原理和結構框圖搭建了濾波器的模型,再根據濾波器的性能指標通過(guò)FDATool工具對其進(jìn)行設計,并通過(guò)系統級仿真和ModelSim功能仿真進(jìn)行了簡(jiǎn)要的可行性分析,最后通過(guò)QuartusⅡ軟件對FIR數字濾波器進(jìn)行實(shí)時(shí)驗證,表明本方案所設計的FIR 濾波器功能正確,性能良好。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>