如何使用Vitis Model Composer從建模到部署生成FPGA IP核
在當今快節(jié)奏的世界中,技術正以前所未有的速度發(fā)展,FPGA設計也不例外。高級工具正在迅速出現(xiàn),以前所未有的速度加速開發(fā)。傳統(tǒng)上,F(xiàn)PGA設計包括用硬件描述語言(hdl)編寫代碼,并使用合成工具來映射設計。雖然這些傳統(tǒng)方法仍然是必不可少的,但像Vitis Model Composer和HDL Coder這樣的工具已經大大簡化了開發(fā)過程,特別是對于基于sdr和fpga的系統(tǒng)。BAE系統(tǒng)公司的一位高級官員表示:“一位擁有多年VHDL編程經驗的工程師用我們的傳統(tǒng)設計流程手工編寫了一個功能齊全的SDR波形,耗時645小時。另一位經驗有限的工程師使用Simulink和Xilinx System Generator在不到46小時內完成了相同的項目。”
“一位擁有多年VHDL編程經驗的工程師使用我們的傳統(tǒng)設計流程手工編寫了一個功能齊全的SDR波形,耗時645小時。另一位經驗有限的工程師使用Simulink和Xilinx System Generator在不到46小時內完成了相同的項目。”
今天的教程提供了創(chuàng)建自定義IP的分步指南,從算法開發(fā)到為IP生成準備模型,包括資源和時序分析,最后將其添加到Vivado IP目錄。
介紹
在所有的信號處理應用中,檢測噪聲中的信號是至關重要的,因為噪聲是幾乎所有數(shù)字系統(tǒng)的固有部分。準確的檢測是確保可靠通信和數(shù)據處理的關鍵。在今天的教程中,我們將開發(fā)一種算法,用于確定頻率未知的信號中是否存在脈沖。在處理噪聲信號時,這種類型的檢測尤其重要,因為將脈沖與背景噪聲區(qū)分開來可能具有挑戰(zhàn)性。我們將通過所需的步驟來創(chuàng)建一個強大的算法,可以有效地識別脈沖的存在,無論信號的頻率,在一個嘈雜的環(huán)境。
環(huán)境設置
Vitis Model Composer是Vitis套件的一部分,它為基于fpga的加速提供了一個高級設計環(huán)境。要學習本教程,請確保在您的系統(tǒng)上安裝了Vitis套件,并且在您的終端中有正確的源代碼。執(zhí)行如下命令:
一旦獲得了Vitis,您就可以通過在終端中執(zhí)行以下命令來啟動Vitis Model Composer:
這將打開MATLAB與AMD工具箱啟用。在MATLAB中,打開Simulink,您現(xiàn)在就可以開始使用Vitis Model Composer設計和模擬您的模型。
信號一代
在Simulink中,我們嘗試模擬啁啾脈沖信號進行分析。為了實現(xiàn)這一點,我們使用Chirp塊生成調頻信號,然后將其與脈沖發(fā)生器塊相乘,將其塑造成不同的脈沖。為了使模擬更真實,更接近現(xiàn)實世界的場景,我們在信號中引入了高斯白噪聲。該附加功能模擬了實際系統(tǒng)中不可避免的噪聲,使我們能夠分析在噪聲條件下檢測和處理信號的效果。
包絡檢波
在信號生成后,為了實現(xiàn)脈沖檢測,我們首先對信號進行平方,以去除負值,然后進行FIR抽取,然后進行低通濾波器。simulink模塊設計如圖5所示。
包絡提取后的信號如圖8所示。
如圖8所示,應用包絡檢測算法后,信號幅度明顯增大,有效地將其與噪聲區(qū)分開來。在噪聲區(qū)域內,不存在不必要的過渡,使其更容易從背景中區(qū)分脈沖。這種增強提高了我們準確確定信號中是否存在脈沖的能力,從而導致更可靠的檢測。
基于信號的這種后處理,選擇一個恒定的閾值來確定脈沖的存在變得更加容易。該模塊輸出‘1’或‘0 ’,表示是否檢測到脈沖。然而,不使用固定的閾值,可以通過使用基于標準差的分析等方法使閾值自適應來進一步改進檢測。該方法允許系統(tǒng)根據噪聲變化動態(tài)調整閾值,提高在不同信號條件下的檢測精度。最終的simulink模型如圖9所示。
最終結果
檢測結果如下所示
在針對多個測試用例成功驗證算法之后,下一步是使用Vitis Model Composer復制類似的結果。要生成IP并執(zhí)行其他相關功能,首先需要從Simulink庫中插入Vitis Model Composer Hub塊。這可以在下面找到:
Simulink庫瀏覽器→AMD工具箱→實用工具→代碼生成→Vitis模型編寫器中心
Vitis Model Composer Hub作為中心流程顧問,指導從設計到代碼生成的整個過程,確保與Vitis工具鏈的無縫集成。
板的選擇
對于本教程,我使用Zynq UltraScale+ MPSoC ZCU102板。但是,您可以選擇任何可用的主板,只要它來自AMD(以前的Xilinx)。
要選擇一個板,打開Vitis Model Composer Hub并按照下圖所示的步驟操作。單板選擇過程確保生成的IP和設計配置與您的特定硬件平臺兼容。
模型創(chuàng)建
對于IP核的生成,AMD給出了一些具體的指導方針。要學習本教程,請記住以下幾點。
網關輸入/輸出塊作為輸入/輸出進行測試
這些端口之間的任何內容都將被vitis模型編寫器中心自動識別,并可以轉換為ip。
為了使vitis模型編寫器中心能夠識別執(zhí)行功能的所需模塊轉換為子系統(tǒng),AMD為IP核生成提供了具體的指導方針-因為,當然,設計硬件還不夠復雜!要成功地遵循本教程,請記住以下幾點:
網關In/Out塊被視為輸入和輸出??梢园阉鼈兛醋魇菙?shù)據的VIP入口和出口。
這些端口之間的任何內容都將被Vitis Model Composer Hub自動檢測,并可以轉換為類似ip的魔法,但需要更多的調試。
為了正確識別,任何執(zhí)行功能的塊都必須轉換為子系統(tǒng)。如果您不這樣做,Vitis可能會假裝從未見過它們。
網關在/
現(xiàn)在是時候在您的模塊設計中插入兩個Gateway In和Gateway Out模塊了,因為很明顯,Simulink還不能讀取您的思想。
將信號產生分系統(tǒng)的輸出連接到網關In的輸入端。這確保了你精心制作的信號有一個合適的切入點。
如果您還沒有從信號生成過程中創(chuàng)建一個子系統(tǒng),那么現(xiàn)在是時候這樣做了——因為手工勞動仍然是自動化世界中的一件事。
類似地,為信封檢測算法創(chuàng)建一個子系統(tǒng),確保它只由通用的Simulink塊組成。這里沒有捷徑!
根據下圖所示的設置修改Gateway In塊參數(shù)——因為默認設置從來都不是我們所需要的,不是嗎?同時,保持Gateway Out塊不變,因為這一次,這個過程中的某些東西不需要額外的調整。
IP生成的算法復制
在Gateway In塊的輸出處,連接一個乘法塊來計算樣本的平方—因為很明顯,Vitis Model Composer不相信內置的平方函數(shù)。
由于沒有直接的平方運算,下面是解決方法:
將相同的輸入輸入到第一個乘法塊的兩個端口。瞧!你用老辦法平方了這個值。
現(xiàn)在,為了進行額外的數(shù)學練習,取另一個乘法塊,并將其輸出與前一個乘法塊的結果相加——因為沒有什么比為一個函數(shù)使用多個塊更“工程”的了。
最后,將第二個輸入連接到一個值為4的常量塊,有效地提高幅度水平。
這些塊的塊參數(shù)如下圖所示
此時,您的圖形模型應該如圖16所示。
對于抽取,雖然預先構建的抽取塊在Simulink的通用庫中可用,但它不包括在AMD工具箱中。然而,我們可以使用低通濾波器和下采樣器來實現(xiàn)相同的功能,兩者都可以在AMD工具箱中獲得。
要實現(xiàn)這一點:
在第二個乘法器的輸出端,在下采樣之前添加一個數(shù)字FIR濾波器來平滑信號。
然后使用AMD工具箱中的Downsample塊來降低采樣率。
為了設計過濾器,我們將使用FDA工具,它提供了一個用戶友好的界面來指定過濾器參數(shù)。
注意:將FDA工具放在設計的根級別(在更高的級別,而不是在任何子系統(tǒng)中)。它可以在下面找到:
Simulink庫瀏覽器→AMD工具箱→實用程序→工具→FDATool
FDAToolPulse檢測輸出模型作曲家流
雙擊FDA工具塊打開其配置窗口。修改如下圖所示的參數(shù),以確保結果的精確復制。這些設置將定義適當?shù)男盘柼幚硭璧臑V波器特性。
要在模型中使用設計好的濾波器,請打開我們之前插入的FIR濾波器的塊參數(shù)。在“系數(shù)向量”字段下,輸入如下一行:
這將FIR濾波器連接到FDA工具生成的系數(shù),確保正確應用設計的濾波器。此塊的確切配置如圖18所示。
應用更改后,在繼續(xù)下一步之前,請驗證過濾器是否按預期運行。類似地,打開Downsample塊的塊參數(shù),并根據圖19修改其設置,以確保正確的功能。這些調整將配置下采樣過程以匹配設計要求。
過濾
在抽取步驟之后,添加另一個低通濾波器以進一步細化信號。在過濾器塊參數(shù)的系數(shù)向量字段中,輸入以下一行:
它使用Parks-McClellan算法定義濾波器,指定所需的頻率響應。根據圖20配置其余參數(shù),以確保正確實現(xiàn)。
最終框圖
最終的Simulink框圖如圖21所示。在濾波器的輸出端,使用一個關系運算符塊將過濾后的信號與一個常數(shù)閾值2.5進行比較。該塊輸出1或0,表示信號是否超過閾值,有效地對脈沖檢測做出判斷。
如圖21所示,已經創(chuàng)建了多個子系統(tǒng)來組織設計。您可以類似地構建模型,也可以通過將從Gateway In到Gateway Out的所有內容封裝到單個子系統(tǒng)中來簡化模型。
塊設計現(xiàn)在已經完成,我們準備繼續(xù)進行代碼生成。在進入下一步之前,請確保所有配置都設置正確。
最終結果(模型編輯器流程)
在這一點上模擬設計,如果兩個輸出正常的simulink流和模型編寫器流是相似的意味著你已經成功地復制了算法。我的結果完全匹配如下所示。
代碼/ IP代
再次打開Vitis Model Composer Hub。如果正確地遵循了所有步驟,那么您的系統(tǒng)現(xiàn)在應該在Code Generation選項卡下列出,并帶有綠色的復選標記,表明它已準備好進行進一步處理。
此外,在同一選項卡下,您將看到四個不同的部分:
設置:包含與時鐘配置和目標語言選擇相關的一般設置。
分析:用于時間和資源分析,確保設計滿足硬件約束。
在硬件上驗證:此選項允許您在實際硬件上測試設計,驗證其實際性能。(我們不討論這個)
導出:允許導出生成的IP,使其可以集成到Vivado或其他工具中。
根據圖22所示的步驟配置所有這些設置。
分析
Analysis部分是一個非常有用的實用程序,它允許您在合成和實現(xiàn)之后執(zhí)行計時和資源分析。這有助于做出明智的設計決策、優(yōu)化資源利用和微調算法以獲得更好的性能。
要執(zhí)行分析,請遵循下圖所示的步驟。這將提供對時間限制、資源消耗和整體系統(tǒng)效率的洞察,允許您在最終部署之前根據需要改進設計
在單擊Analyze之后,Vitis Model Composer將花費一些時間來處理設計,并根據您的選擇生成時序和資源分析報告。
時序分析報告提供了有關時鐘頻率、延遲和設置/保持違規(guī)的詳細信息,有助于確保您的設計滿足時序限制。
資源分析報告分解了lut、dsp、bram和ff的使用情況,提供了對硬件利用率和優(yōu)化機會的見解。
我們設計的時序和資源分析報告分別如圖24和25所示。檢查這些報告,以確認您的設計滿足所需的性能和資源限制,然后再繼續(xù)。
出口
導出部分是我們?yōu)閂ivado完成和導出IP的地方。為了確保順利集成,請按照圖26所示的方式配置設置,然后單擊Export。這將花費一些時間,并將出現(xiàn)與圖27類似的消息。
這個過程將生成必要的IP文件,使它們準備好在Vivado的IP Catalog中使用。導出后,您可以輕松地將自定義IP集成到Vivado設計流中,以便進一步處理和實現(xiàn)。
添加自定義到Vivado
打開Vivado并創(chuàng)建一個新項目。項目設置完成后,導航到頂部欄,單擊Tools,然后選擇Settings。
按照圖28所示的步驟配置所需的設置。此步驟確保正確設置Vivado以識別導出的自定義IP并將其集成到您的項目中。
成功完成所有步驟后,您的自定義IP現(xiàn)在就可以集成到Vivado中了。該IP可以無縫地用于IP集成商和塊設計,使其成為FPGA開發(fā)工作流程的多功能補充。
將IP添加到您的模塊設計中:
?在Vivado中打開框圖。
?按CTRL + I調出IP搜索欄。
?鍵入自定義IP的名稱,選擇它,并將其添加到設計中。
?瞧!您的IP現(xiàn)在已經完全集成,可以進行進一步的執(zhí)行和測試。
結論
隨著自定義IP的成功創(chuàng)建和集成,您已經完成了FPGA開發(fā)的關鍵步驟。這種工作流程不僅簡化了IP設計過程,還提高了未來項目的效率、模塊化和可擴展性。通過利用Vitis Model Composer和Vivado,您可以確保從算法開發(fā)到硬件實現(xiàn)的無縫過渡。
隨著您的發(fā)展,進一步的優(yōu)化、硬件驗證和性能調優(yōu)將使您的設計更適合實際應用程序。這標志著更先進的基于fpga的解決方案的基礎,為高性能,硬件加速系統(tǒng)鋪平了道路。
本文編譯自hackster.io