小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

學(xué)會(huì)System Generator(2)

 奔跑的瓦力 2018-07-29

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

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

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):頻譜分析儀

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

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

1.生成正弦信號(hào)
在庫中找到Sine Wave,添加兩個(gè)到model中,一個(gè)產(chǎn)生1MHz正弦波,另一個(gè)產(chǎn)生9MHz正弦波。

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

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

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

此時(shí)模型的連接圖如下所示:

將Simulink仿真時(shí)間設(shè)置為0.00001(時(shí)間太長會(huì)導(dǎo)致仿真很慢),點(diǎn)擊運(yùn)行,Simulink窗口的右小角可以觀察到運(yùn)行狀態(tài)。運(yùn)行結(jié)束后打開Scope:

第一個(gè)為1Mhz信號(hào),第三個(gè)為9MHz信號(hào),中間為兩路信號(hào)疊加。接下來設(shè)計(jì)一個(gè)LPF濾除掉9MHz頻率分量。

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

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

這個(gè)模塊可以Simulink到FPGA之間的數(shù)據(jù)轉(zhuǎn)換。將Sample period設(shè)置為“1/20e6”(20MHz采樣率),完成連續(xù)時(shí)間到離散時(shí)間的轉(zhuǎn)換;設(shè)置Out Type完成數(shù)據(jù)格式的轉(zhuǎn)換。這里保持為默認(rèn)的二進(jìn)制帶符號(hào)數(shù)補(bǔ)碼、定點(diǎn)數(shù)的設(shè)置。Quantization中可以設(shè)置量化方式為Truncate(截?cái)啵┗蛘遰ound(四舍五入)。

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

雙擊Digital FIR Filter:

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

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

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

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

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

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

注意,雖然Gateway In轉(zhuǎn)換后的數(shù)據(jù)也是離散的,但是Spectrum Analyzer不能接入到這里,否則會(huì)出現(xiàn)錯(cuò)誤。Gateway In和Gateway Out之間只能連接其它Xilinx Blockset中的模塊。

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

經(jīng)過濾波后僅剩下1MHz的單頻分量,且數(shù)據(jù)為離散值。信號(hào)濾波前后的頻譜對(duì)比如下圖所示:

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

5.將設(shè)計(jì)導(dǎo)出到FPGA
仿真驗(yàn)證功能正確后,需要將設(shè)計(jì)導(dǎo)出到FPGA中,這個(gè)步驟仍然要借助System Generator這個(gè)block。雙擊打開,切換到Compilation標(biāo)簽下:

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

在slx同文件夾下,生成netlist文件夾。其中sysgen子文件夾包含了導(dǎo)出的Verilog或VHDL設(shè)計(jì)文件;ip子文件夾是設(shè)計(jì)導(dǎo)出的IP核形式;ip_catalog子文件夾包含一個(gè)調(diào)用該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是調(diào)用System Generator導(dǎo)出的IP核的子模塊。16Bits輸入數(shù)據(jù)經(jīng)過濾波后得到36Bits的輸出結(jié)果。運(yùn)行RTL ANALYSIS,打開RTL視圖,找到最底層:

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

理論上經(jīng)過Simulink中的仿真,已經(jīng)可以確定設(shè)計(jì)的正確性。但這是使用System Generator完成的第一個(gè)實(shí)驗(yàn),本文仍然在Vivado中進(jìn)行一次仿真,增強(qiáng)使用者對(duì)System Generator設(shè)計(jì)的信心。使用MATLAB產(chǎn)生一個(gè)1MHz+9Mhz的正弦疊加信號(hào),導(dǎo)入到TXT文件中。編寫testbench讀取txt文件,對(duì)信號(hào)進(jìn)行濾波。Vivado中的仿真結(jié)果如下圖所示:

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

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

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

FDATool block的使用
前文中我們?cè)贒igital FIR Filter block的配置界面直接調(diào)用FDATool工具完成FIR濾波器的設(shè)計(jì)。但是有一些濾波器block,如2n-tap MAC FIR Filter,并沒有提供這樣一個(gè)接口。Xilinx Blockset中單獨(dú)提供了一個(gè)FDATool block,可以提供更廣泛的使用。

添加FDATool block到model中,配置完成后點(diǎn)擊“Design Filter”。其它模塊調(diào)用這個(gè)FDATool設(shè)計(jì)的濾波器可以借助兩個(gè)函數(shù):

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


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

    文章來源:FPGADesigner的博客
    *本文由作者授權(quán)轉(zhuǎn)發(fā),如需轉(zhuǎn)載請(qǐng)聯(lián)系作者本人

      本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
      轉(zhuǎn)藏 分享 獻(xiàn)花(0

      0條評(píng)論

      發(fā)表

      請(qǐng)遵守用戶 評(píng)論公約

      類似文章 更多