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





