免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

學會System Generator(2)

 奔跑的瓦力 2018-07-29

本文是該系列的第2篇,上一篇介紹了System Generator的基本知識以及軟件的安裝。本文將以一個簡單的數字濾波器的設計為主題,介紹Sysgem Generator的完整設計流程,同時詳細介紹使用到的各個block。

本設計使用到的block
1.Xilinx block:
Digital FIR Filter(->DSP):數字濾波器
Gateway In(->Basic Elements):數據輸入
Gateway Out(->Basic Elements):數據輸出
System Generator(->Basic Elements):系統(tǒng)管理
FDATool(->DSP):濾波器設計

2.其它block:
Sin Wave(Simulink->Sources):生成正弦波
Add(Simulink->Math Operations):加法器
Zero-Order Hold(Simulink->Discrete):零階保持器
Scope(Simulink->Commonly Used Blocks):示波器
Spectrum Analyzer(DSP System Toolbox->Sinks):頻譜分析儀

這里給出了設計中用到的所有block在庫中的路徑,后文不再提及(同一block會包含在多個庫中,為了尋找方便這里只列出一個路徑)。

System Generator設計流程
新建一個文件夾,啟動System Generator,建立一個空的simulink模型(sysgen_filter.slx)。設置一個1MHz+9MHz的正弦疊加信號,使用FIR低通濾波器濾除9MHz頻率分量,系統(tǒng)采樣率為20MHz。

1.生成正弦信號
在庫中找到Sine Wave,添加兩個到model中,一個產生1MHz正弦波,另一個產生9MHz正弦波。

雙擊Sine Wave,可以設置正弦波的幅度、電平偏置、頻率、初相、采樣時間等信息。這里只需要將頻率分別設置為1MHz(2*pi*1e6)和9MHz(2*pi*9e6)。兩路信號的疊加需要使用加法器,添加一個Add到model中:

“List of signs”設置加法器的輸入端口,“++”表示兩個輸入相加(“+-”則表示A-B)。

為了確保模塊輸出信號正確,添加一個Scope觀察信號波形。雙擊打開示波器窗口,在View->Configuration Properties:Scope中,將Number of input ports設置為3(觀察3路信號);點擊Layout,選擇3*1排列方式(每路信號分開顯示):

此時模型的連接圖如下所示:

將Simulink仿真時間設置為0.00001(時間太長會導致仿真很慢),點擊運行,Simulink窗口的右小角可以觀察到運行狀態(tài)。運行結束后打開Scope:

第一個為1Mhz信號,第三個為9MHz信號,中間為兩路信號疊加。接下來設計一個LPF濾除掉9MHz頻率分量。

2.數字濾波器設計
我們知道,Simulink中的仿真模型為連續(xù)時間系統(tǒng),數據格式多種多樣;而FPGA中為離散時間系統(tǒng),數據必須用一定的位數進行量化。兩者之間必須要進行從連續(xù)到離散的轉換、數據格式的轉換,否則無法進行正確的FPGA設計。Xilinx Blockset中提供了相應的解決方案。

添加一個Gateway In和一個Gateway Out模塊到model中,再添加一個Digital FIR Filter模塊。按照加法器輸出->Gateway In->Digital FIR Filter->Gateway Out的順序依次連接。雙擊打開Gateway In模塊的屬性窗口:

這個模塊可以Simulink到FPGA之間的數據轉換。將Sample period設置為“1/20e6”(20MHz采樣率),完成連續(xù)時間到離散時間的轉換;設置Out Type完成數據格式的轉換。這里保持為默認的二進制帶符號數補碼、定點數的設置。Quantization中可以設置量化方式為Truncate(截斷)或者round(四舍五入)。

Gateway In的設置會自動傳遞到Gateway In和Gateway Out之間的整個系統(tǒng)中,因此不需要再設置其它模塊的采樣率與數據格式。

雙擊Digital FIR Filter:

FIR濾波器的系數可以使用fir1等MATLAB函數設計,也可以使用FDATOOL工具設計。選中“Use FDA Tool as coefficient source”,點擊“FDA Tool”按鈕,會彈出FDATOOL窗口,設置采樣率為20Mhz,通帶截止頻率1.5MHz,阻帶截止頻率8.5Mhz,通帶衰減0.01dB,阻帶衰減100dB,點擊“Design”設計后退出。

3.FPGA系統(tǒng)配置
以上僅僅是完成了數字濾波器的設計,但是仍然沒有建立起模型與FPGA之間的實質聯系。添加System Generator模塊到model中,這個block便是配置與FPGA相關的系統(tǒng)參數。這個block的配置會應用到Gateway In和Gateway Out之間的所有模塊中。雙擊打開,切換到Clock標簽:

FPGA clock period設置為50ns,Simulink system period設置為1/20e6(都是20Mhz)。Perfor analysis設置為Post Sythesis,Analyzer type設置為Resource,在系統(tǒng)綜合后會進行資源使用情況的分析。

4.系統(tǒng)仿真
使用Simulink完成FPGA中的DSP系統(tǒng)設計,最大的好處就是仿真極其方便(包括后面文章會用到的ModelSim協(xié)同仿真、硬件協(xié)同仿真等特性)。

添加一個Scope觀察Gateway Out輸出的波形(濾波后波形),再添加兩個Spectrum Analyzer觀察濾波前后的信號頻譜。Spectrum Analyzer這個block必須輸入離散的數據,因此在加法器輸出后需要經過一個零階保持器Zero-Order Hold,轉換為離散數據后再輸入到Spectrum Analyzer中。零階保持器的采樣率設置為1/20e6(20Mhz)。

系統(tǒng)的整體連接框圖如下:

注意,雖然Gateway In轉換后的數據也是離散的,但是Spectrum Analyzer不能接入到這里,否則會出現錯誤。Gateway In和Gateway Out之間只能連接其它Xilinx Blockset中的模塊。

將仿真時間設置為0.0005(Spectrum Analyzer必須有足夠多的采樣數據才能計算出頻譜),輸出信號的波形如下所示:

經過濾波后僅剩下1MHz的單頻分量,且數據為離散值。信號濾波前后的頻譜對比如下圖所示:

可以看到經過濾波后,9Mhz的頻率分量有大約100dB的衰減(頻譜呈對稱性),設計符合預期。

5.將設計導出到FPGA
仿真驗證功能正確后,需要將設計導出到FPGA中,這個步驟仍然要借助System Generator這個block。雙擊打開,切換到Compilation標簽下:

這里可以設置使用的開發(fā)板(Board,只能選擇Xilinx官方開發(fā)板)、FPGA芯片(Part),也可以設置導出設計的硬件描述語言(Verilog或VHDL)。點擊“Generate”,System Generator會將Gateway In和Gateway Out之間的模塊導出到FPGA中。運行結束后,根據前面的設置,彈出了資源分析報告:

在slx同文件夾下,生成netlist文件夾。其中sysgen子文件夾包含了導出的Verilog或VHDL設計文件;ip子文件夾是設計導出的IP核形式;ip_catalog子文件夾包含一個調用該IP核的Vivado的示例工程。

打開Vivado示例工程
用Vivado打開ip_catalog下的工程,頂層模塊代碼如下:
`timescale 1 ps / 1 ps

module sysgen_filter_bd_wrapper
(clk,
gateway_in,
gateway_out);
input clk;
input [15:0]gateway_in;
output [35:0]gateway_out;

wire clk;
wire [15:0]gateway_in;
wire [35:0]gateway_out;

sysgen_filter_bd sysgen_filter_bd_i
(.clk(clk),
.gateway_in(gateway_in),
.gateway_out(gateway_out));
endmodule

sysgen_filter_bd是調用System Generator導出的IP核的子模塊。16Bits輸入數據經過濾波后得到36Bits的輸出結果。運行RTL ANALYSIS,打開RTL視圖,找到最底層:

可以看到其本質上仍然是調用了FIR Compiler IP核來實現數字濾波,只不過我們是在Simulink中完成的設計。在其它工程中可以像示例工程一樣調用這個System Generator導出的IP核,來完成特定的DSP系統(tǒng)功能。

理論上經過Simulink中的仿真,已經可以確定設計的正確性。但這是使用System Generator完成的第一個實驗,本文仍然在Vivado中進行一次仿真,增強使用者對System Generator設計的信心。使用MATLAB產生一個1MHz+9Mhz的正弦疊加信號,導入到TXT文件中。編寫testbench讀取txt文件,對信號進行濾波。Vivado中的仿真結果如下圖所示:

可以看到經過濾波后,只剩下1Mhz的單頻信號,與Simulink中的仿真結果完全一致。
總而言之,從這個實驗出發(fā),博主認為在System Generator中完成DSP系統(tǒng)設計與直接在Vivado環(huán)境下進行DSP系統(tǒng)設計相比,有兩個優(yōu)點:

1. 更強大、更方便的仿真環(huán)境;
2. 系統(tǒng)級設計角度,無需關心RTL設計細節(jié)以及一些IP核的具體使用方法。

在后面的文章中將記錄更多、更復雜的DSP系統(tǒng)設計。

FDATool block的使用
前文中我們在Digital FIR Filter block的配置界面直接調用FDATool工具完成FIR濾波器的設計。但是有一些濾波器block,如2n-tap MAC FIR Filter,并沒有提供這樣一個接口。Xilinx Blockset中單獨提供了一個FDATool block,可以提供更廣泛的使用。

添加FDATool block到model中,配置完成后點擊“Design Filter”。其它模塊調用這個FDATool設計的濾波器可以借助兩個函數:

  • xlfda_numerator(‘FDATool’):提取濾波器系數的分子
  • xlfda_denominator(‘FDATool’):提取濾波器系數的分母
  • 對于FIR濾波器而言,分母為1,只提取分子即可。如下圖所示:


    所有濾波器block的系數都可以用這種方式設置。

    文章來源:FPGADesigner的博客
    *本文由作者授權轉發(fā),如需轉載請聯系作者本人

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發(fā)表

      請遵守用戶 評論公約

      類似文章 更多