如何利用基于模型的設(shè)計方法,借助 AMD 的 Vitis Model Composer 工具來創(chuàng)建一個包含 1024 個點的快速傅里葉變換(FFT)
在之前的文章中,我們已經(jīng)了解到如何在 AMD Versal AIE-ML 架構(gòu)上創(chuàng)建一個 FFT 應(yīng)用程序,而無需進行任何 AIE-ML 內(nèi)核編碼,只需使用 AMD DSP 庫即可實現(xiàn)。然后,我們還看到了如何利用 Vitis 功能仿真在 MATLAB 環(huán)境中模擬我們的 AIE-ML 圖形。
AMD 還提供了一款名為“Vitis? 模型編排器”(VMC)的工具,它將人工智能引擎的編碼需求降低到了零(無需進行圖形編碼)。
AMD 的 Vitis 模型編譯器是一款基于模型的設(shè)計工具,它能夠在 Simulink® 環(huán)境中實現(xiàn)快速的設(shè)計探索,并通過自動代碼生成加快在 AMD 設(shè)備上的產(chǎn)品開發(fā)進程。
所有用于人工智能引擎的數(shù)字信號處理庫模塊都包含在 Simulink 軟件中的 AMD 工具箱中。
Vitis Model Composer 不僅能避免圖形(以及在使用提供的模塊時的內(nèi)核)中的任何編碼錯誤,而且還提供了一種快速配置 DSP 庫的有效方法,使其能夠以正確的配置進行設(shè)置。
VMC 可以通過 Vitis 統(tǒng)一安裝程序進行安裝。
Vitis Model Composer 需要從 AMD 購買附加許可證,同時還需要獲得 MATLAB? 和 Simulink® 的許可證。在進行數(shù)字信號處理設(shè)計時,我強烈建議您同時擁有 MATLAB? 數(shù)字信號處理系統(tǒng)工具箱。
如果您只是想對這款工具進行評估,您可以從 AMD 產(chǎn)品授權(quán)網(wǎng)站上獲取免費的評估許可證。
創(chuàng)建 Vitis 模型編譯器設(shè)計
在安裝了 Vitis 模型編譯器(VMC)作為 Vitis 工具的一部分,并且已設(shè)置好 VMC、MATLAB? 和 Simulink® 的許可證之后,要啟動 VMC,我們只需設(shè)置好 Vitis 工具、MATLAB?,然后調(diào)用 model_composer 即可。
這將啟動帶有 Vitis Model Composer 插件的 MATLAB? 系統(tǒng)。
由于 VMC 可以作為 Simulink 環(huán)境的一部分使用,所以第一步是啟動 Simulink 系統(tǒng)。
我們可以從一個空白模型開始。
如果您打開“庫瀏覽器”,您應(yīng)該能看到“AMD 工具箱”這一選項,其中包含了針對 AI 引擎或可編程邏輯(硬件描述語言或硬件描述語言高級版)的模塊。
我總是首先添加的第一個模塊是“Vitis Model Composer Hub”模塊。每個 Model Composer 模型都需要一個 Model Composer Hub 來配置編譯、模擬以及生成輸出。在這個模塊中,例如,您可以定義您要針對的設(shè)備或板卡,因此在使用 AI 引擎時,它會確定您所使用的變體或架構(gòu)(AIE、AIE-ML 或 AIE-MLv2)。您可以在 AMD 工具箱的“實用工具 > 代碼生成”選項下找到“Vitis Model Composer Hub”模塊。
我們可以將該模塊拖拽至模型中,然后雙擊它來進行配置。我只選擇了目標(biāo)設(shè)備。我正在使用 xcve2302-sfva784-1LP-e-S 這個設(shè)備,它位于 Trenz TE0950 上,與我之前的教程中的設(shè)備相同。
然后我們可以開始進行設(shè)計了。我們想要實現(xiàn)的是一個簡單的 1024 點快速傅里葉變換。正如在上一篇文章中所述,我們可以使用 AMD DSP 庫來完成這項任務(wù),因為它是集成在 VMC 中的,作為 AMD 工具箱的一部分。在“AI Engine”菜單下,我們可以找到“DSP”子菜單中的“緩沖輸入/輸出”部分,那里有用于 AI 引擎的 FFT 塊。
我們可以將 FFT 塊拖放到模型中,并雙擊它來進行配置。為了與之前的教程中的使用場景類似,我只配置了 FFT 的大小(并且將輸入、輸出和旋轉(zhuǎn)因子的數(shù)據(jù)類型保持為 cint16),其余所有參數(shù)則保持默認(rèn)值。
然后為了模擬我們的快速傅里葉變換模塊,我們需要一個輸入信號。為此,我使用了來自 MATLAB DSP 系統(tǒng)工具箱的正弦波,這樣它就能生成離散的輸入信號。我將兩個這樣的信號相加,以便得到與上一個項目中相同的雙音信號。
對于第一個設(shè)置,我將振幅設(shè)為 6,輸出頻率設(shè)為 150MHz,輸出設(shè)為復(fù)數(shù)形式,采樣頻率設(shè)為 600MHz,每幀的采樣次數(shù)設(shè)為 1024。我還將計算方法設(shè)置為表格查找,因為當(dāng)輸出數(shù)據(jù)為定點數(shù)時(我將進行這樣的設(shè)置)這是必需的。
在“數(shù)據(jù)類型”選項卡中,我將輸出設(shè)置為 16 位定點數(shù)。
然后我將這個塊復(fù)制并粘貼,以創(chuàng)建我們輸入信號的另一個音調(diào)部分。我只是將振幅調(diào)整為 4,將頻率調(diào)整為 50MHz。
然后,我只需添加一個“添加”模塊,以添加音頻并將其傳送給 AI 引擎的 FFT 模塊。
然后,為了驗證快速傅里葉變換(FFT)的輸出結(jié)果,我們需要繪制其輸出圖。為此,我使用了 MATLAB DSP 系統(tǒng)工具箱中的數(shù)組繪圖塊。我只想繪制絕對值,以便僅查看信號的頻率成分,所以我還添加了一個“abs”塊。由于 abs 塊在處理復(fù)數(shù)數(shù)據(jù)時只接受雙精度數(shù)據(jù)類型,所以我還添加了一個將 FFT 塊的輸出轉(zhuǎn)換為雙精度數(shù)據(jù)類型的塊。
這就是我完整的設(shè)計方案的樣子。
我們可以進行模擬。由于我們已將采樣時間設(shè)置為 1/600e6,所以可能需要在經(jīng)過幾組包含 1024 個樣本的數(shù)據(jù)窗口后停止模擬。我以 2 為例進行說明(2*1024/600e6)
我們可以看到,正如我們所預(yù)期的那樣,我們的信號中有兩個主要的頻率成分。
將快速傅里葉變換(FFT)的結(jié)果與 MATLAB 實現(xiàn)進行對比
來自“AI 引擎”塊的快速傅里葉變換似乎運行正常,但最好還是驗證一下結(jié)果,將其與 MATLAB 中快速傅里葉變換的實現(xiàn)進行對比。為此,我只需復(fù)制該分支,并將“AI 引擎”的快速傅里葉變換替換為 MATLAB DSP 系統(tǒng)工具箱中的快速傅里葉變換。
我對快速傅里葉變換(FFT)模塊所做的唯一修改是將輸出數(shù)據(jù)類型更改為 16 位定點數(shù)。
運行該模擬程序后,我們發(fā)現(xiàn) MATLAB 中的快速傅里葉變換(FFT)結(jié)果與在 AIE-ML 上實現(xiàn)的 FFT 結(jié)果非常相似,因此我們在 AIE-ML 中的實現(xiàn)似乎滿足了我們的需求。
總結(jié)
在這個項目中,我們看到了如何利用 Vitis Model Composer(這是 MATLAB 內(nèi)置的一個工具箱)采用基于模型的方法來創(chuàng)建 AIE-ML 設(shè)計。
本文編譯自hackster.io





