本文是該系列的第2篇,上一篇介紹了System Generator的基本知識(shí)以及軟件的安裝。本文將以一個(gè)簡單的數(shù)字濾波器的設(shè)計(jì)為主題,介紹Sysgem Generator的完整設(shè)計(jì)流程,同時(shí)詳細(xì)介紹使用到的各個(gè)block。 本設(shè)計(jì)使用到的block 2.其它block: 這里給出了設(shè)計(jì)中用到的所有block在庫中的路徑,后文不再提及(同一block會(huì)包含在多個(gè)庫中,為了尋找方便這里只列出一個(gè)路徑)。 System Generator設(shè)計(jì)流程 1.生成正弦信號(hào)
雙擊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ì) 添加一個(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)配置
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)仿真 添加一個(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
這里可以設(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示例工程 module sysgen_filter_bd_wrapper wire clk; sysgen_filter_bd sysgen_filter_bd_i 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é)果完全一致。 1. 更強(qiáng)大、更方便的仿真環(huán)境; 在后面的文章中將記錄更多、更復(fù)雜的DSP系統(tǒng)設(shè)計(jì)。 FDATool block的使用 添加FDATool block到model中,配置完成后點(diǎn)擊“Design Filter”。其它模塊調(diào)用這個(gè)FDATool設(shè)計(jì)的濾波器可以借助兩個(gè)函數(shù): 對(duì)于FIR濾波器而言,分母為1,只提取分子即可。如下圖所示:
所有濾波器block的系數(shù)都可以用這種方式設(shè)置。 文章來源:FPGADesigner的博客 |
|