基於System Generator的數字濾波器(Simulink驗證+Block設計+FPGA的仿真驗證)

前兩天簡單的對System Generator作了下了解和使用,接下來幾天將用這個工具來設計一些數字信號處理裏的東西,今天搞下數字濾波器的設計。

~Show Time~git

首先打開System Generator 2018.2,不清楚咋打開的能夠看下我前兩天發的,等待MATLAB啓動完成後,再打開simulink而且創建一個空白模型(以.slx爲後綴),將其存放到本身想要存放的位置,保存好文件後就開始放置相關的模塊來進行今天的設計。
首先產生帶有兩個或多個頻率信息的信號,使用Sine Wave產生,而後用Add進行疊加,而後用scope觀察信號,設計結果以下圖所示,用到的 B lock能夠直接在庫的界面進行搜索或者自行百度找對應的位置所在

圖中使用了兩個Sine Wave模塊,分別產生9M和1M的正弦信號,而後疊加,在示波器上看到各個信號的樣子。
9M的Sine Wave設置:

1M的Sine Wave設置:

Add使用默認設置「++」
而後scope就是示波器,須要一下的設置,或者直接放置三個進行查看,我是在示波器上設置了三個PORT,操做依次以下:

若是此時沒有將各個通道的信號分開查看,則會出現混在一塊兒,可是分顏色的現象,以下:

爲方便看清每一個通道的信號,繼續以下操做:微信

上面三個藍色的框框就是表明設置一列三行的顯示框,效果以下:工具

第一個波形表明9MHz,第三個表明1M,第二個表明兩個相疊加的信號,也是後面用於濾波所需的原始信號。spa

開始設計濾波器,準備將1MHz的信號從疊加的信號中濾出,可使用Simulink中的FDATool(使用Digital Filter Design模塊進行設置的時候就是直接調用的FDATool)或者Lowpass Filter模塊實現濾波器的設計,以前發的「模數和數模」已經有介紹過,在數字信號處理前須要將模擬信號轉換爲數字信號,所以在濾波前須要添加一個轉換,該設計使用0階保持(Zero-Order Hold),將信號變成離散的用於後續的使用,而後爲方便直觀的觀察濾波效果,使用頻譜分析儀(Spectrum Analyzer)進行查看濾波後的頻率信息。.net

運行後,能夠看到原始的頻譜、使用FDATool設計的濾波器以及Lowpass Fiter進行濾波後的所存的頻譜信息,示波器就是用於觀察濾波後的波形,濾波器的設計都根據如下的參數進行設計,頻率參數包括:採樣頻率20MHz,帶通頻率1.5MHz,帶阻頻率8.5MHz,這樣就能夠將1M頗有效的保持,並將9M的信號濾除;幅度參數包括:通帶衰減0.01dB,阻帶衰減100dB,相應的以下所示;設計

例如使用FDATool設計的以下,其餘的根據以上的參數信息進行設置便可,點擊Design Filter後看上方的幅頻特性曲線,在1.5M之前都是保持一條線,而後在1.5到8.5M慢慢衰減到了將近-90dB的幅值,符合以前的「模數和數模」裏的濾波器設計要求:

設計成功後運行,運行的時間稍微設置下,設置的結果以下,Stop Time使用的是10000/20e6,表明在20M的採樣率下有10000個採樣點,否則採的點數太多,須要運行好久,太少則沒法進行頻譜的分析。

各個頻譜分析儀以及濾波後的樣子所得效果以下:

能夠從圖中看到疊加的信號中有兩個頻率信息,通過濾波器後,9M的頻率被抑制了。
Simulink已經驗證完數字濾波器的效果了,而後就是使用System Generator來實現FPGA的設計了。

和上一篇的同樣,先將System Generator中所需的模塊添加進來,本次的設計須要有如下模塊:
Xilinx Blockset—>DSP—>Digital FIR Filter+FDATool
Xilinx Blockset—>BasicElements menu—>Gateway In+ Gateway Out+ SystemGenerator
而後再加一個Spectrum Analyzer用於觀察濾波後信號的頻譜,示波器觀察實際濾波後的信號,添加方式舉一個例子,其餘的相似進行便可,或者直接拖到模型文件中;

連好各個模塊之間的線,結果以下:

相關Blocks的配置以下,沒寫的默認便可:
Gateway In

Implementation此次就不進行設置了,不配置管腳那些,有須要的話能夠本身弄。
Digital FIR Filter,下圖中箭頭所指的內容,表明該濾波器使用FDATool設計的係數。

FDATool,該模塊的配置和前面設計數字濾波器時的配置一致

System Generator,Compilation菜單下的IP Catalog 用來確保在輸出IP目錄的格式,Part我就直接使用默認的FPGA器件,Hardwaredescription language選擇Verilog,選擇VHDL也能夠,而後勾上Create testbench生成激勵文件,在VIVADO中進行仿真驗證濾波器的設計結果。

而後點擊OK就能夠保存配置並關閉該模塊的配置,其餘的模塊也是相似。
而後直接點Run,能夠看到這部分的頻譜分析儀的波形,與Simulink中的FDATool設計的數字濾波器濾波後的信號的頻譜進行對比,以下:

能夠看到右邊窗口的頻譜(Spectrum Analyzer SysGen的窗口)和左邊窗口即用Simulink的數字濾波器設計所得的(Spectrum Analyzer FDATool)有輕微的不一樣,這是由於當連續時間系統在離散時間硬件描述時受到量化和採樣的影響。

生成VIVADO工程還須要設置一下systemgenerator這個模塊,在Clocking菜單下時鐘週期-FPGA clock Period爲50ns,也就是1/20MHz,Simulink system period也所以是1/20e6(sec),Perform analysis下選擇Post Synthesis,Analyzer type選擇Resource,這部分的選擇是爲了在編譯好VIVADO工程後獲得資源利用率的詳情,設置結果以下

而後Apply進行應用一下,再Generate進行編譯生成,編譯結束後出現資源信息

點擊OK退出該窗口,其餘彈出的信息窗口同此,直接點叉叉關閉也行。
最終完成的整個設計的結果以下:

而後打開生成的VIVADO工程,打開方式在上一次已經講過,就再也不多述,打開後看下仿真的頂層文件是否是帶了_tb的那個,不是的話本身把它設置爲TOP層,而後依次二三步驟運行仿真, 

而後Run個幾百微秒,設置下波形的格式,就出現仿真波形了,gateway_in_net就是疊加了兩個頻率的原始信號。Gateway_out_net就是濾波後的結果,很明顯是將低頻的那部分信號濾出來了。

數字濾波器的設計結束了,若是有些不太理解的能夠看看以前的幾篇文章,以後遇到相同的步驟就再也不進行一一講述了。

模數與數模
3d

初識System Generator(安裝+使用)
orm

System Generator設計轉FPGA設計
blog

若是以上的文章中沒有相關的介紹,能夠在後臺回覆留下你的問題,這篇文章設計的工程文件都已經上傳了,須要作參考的能夠回覆關鍵字獲取。


閱讀本文共使用    ip

軟件 獲取 方式以下
公衆號中回覆【0519
🔥更多精彩等你發現🔥

長按識別二維碼關注電子狂人


本文分享自微信公衆號 - 電子狂人(DZKR666)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索