本文逐步演示了如何使用 AMD Vitis HLS 來(lái)創(chuàng)建一個(gè) HLS IP,通過(guò) AXI4 接口從存儲(chǔ)器讀取數(shù)據(jù)、執(zhí)行簡(jiǎn)單的數(shù)學(xué)運(yùn)算,然后將數(shù)據(jù)寫回存儲(chǔ)器。接著會(huì)在 AMD Vivado Design Suite 設(shè)計(jì)中使用此 HLS IP,并使用嵌入式 Vitis 應(yīng)用控制此 HLS IP。
具體的運(yùn)行和測(cè)試條件如下:
操作系統(tǒng):Ubuntu 20.04
版本:2023.1
注釋:請(qǐng)確保使用您的操作系統(tǒng)支持的版本 -受支持的操作系統(tǒng):
https://docs.amd.com/r/2023.1-English/ug973-vivado-release-notes-install-license/Supported-Operating-Systems
本文使用的工具流程為 Vitis HLS > Vivado > Vitis IDE。我們將使用 Vitis HLS 創(chuàng)建一個(gè)自定義 IP,將該 HLS IP 合并到 Vivado 的硬件設(shè)計(jì)中,然后創(chuàng)建一個(gè)與 HLS IP 通信的 Vitis 應(yīng)用。該 Vitis 應(yīng)用將按照自定義硬件上的嵌入式工程所需進(jìn)行設(shè)置。應(yīng)用代碼將利用自動(dòng)生成的 HLS API 驅(qū)動(dòng)程序調(diào)用來(lái)控制 HLS IP 并與之通信。整個(gè)流程假設(shè)您已經(jīng)安裝了 Vitis、Vitis HLS 和 Vivado。
1下載并解壓縮 ReferenceDocs 文件夾
將該文件夾保存在所需工作位置。vitis_hls 和 Vivado 各有單獨(dú)的文件夾。稍后,可創(chuàng)建自己的 Vitis 應(yīng)用工程文件夾。
2創(chuàng)建 HLS IP
打開 Linux 終端,執(zhí)行以下命令以便:
進(jìn)入 vitis_hls 文件夾 - 該文件夾包含 HLS IP 的源代碼。
運(yùn)行 TCL 腳本來(lái)設(shè)置 HLS 工程 - 該腳本還將運(yùn)行 C 語(yǔ)言仿真、C 語(yǔ)言綜合與協(xié)同仿真。
在 GUI 中打開 HLS 工程
打開 GUI 后,檢查 example.cpp 源代碼。HLS IP 使用 Volatile 指針和 Memcpy 函數(shù)在存儲(chǔ)器上讀取和寫入數(shù)據(jù)。Memcpy 需要一個(gè)緩沖器來(lái)存儲(chǔ)存儲(chǔ)器傳輸事務(wù)的各項(xiàng)結(jié)果。m_axi 接口編譯指示要求此 IP 使用存儲(chǔ)器映射。深度設(shè)置為 50 意味著串流在給定時(shí)間最多可以容納 50 個(gè)未完成的元素,選擇該值是為了匹配緩沖器的大小。s_axilite 接口編譯指示允許此 IP 接受應(yīng)用的控制,并與 AMD Zynq SoC 器件通信。
使用 GUI 左下角的 Flow Navigator,以便在 GUI 中運(yùn)行 C 語(yǔ)言仿真、C 語(yǔ)言綜合與協(xié)同仿真,查看每項(xiàng)報(bào)告并熟悉 IDE。準(zhǔn)備就緒后,可以通過(guò)在 Flow Navigator 中選擇“Export RTL”來(lái)導(dǎo)出 HLS IP,以便在 Vivado 中使用。
3創(chuàng)建 Vivado 平臺(tái)
有兩種方法可用于創(chuàng)建 Vivado 平臺(tái)。
選項(xiàng) 1:
使用以下所示命令從“Vivado”文件夾運(yùn)行 Tcl 腳本。運(yùn)行此腳本后,將創(chuàng)建一個(gè) Vivado 工程,隨后可在 GUI 中打開該工程。在 GUI 中,您需要綜合、實(shí)現(xiàn)、生成比特流,并導(dǎo)出硬件。
選項(xiàng) 2:
按照以下步驟在 Vivado 中自行創(chuàng)建平臺(tái):
打開 Vivado,并使用 ZCU102 評(píng)估板創(chuàng)建一個(gè)新工程
將 Vitis HLS IP 添加到 IP 目錄中:
打開 IP 目錄,右鍵單擊并選擇“add Repo”。
瀏覽到導(dǎo)出 IP 的位置,并將“ip”文件夾添加到目錄中。默認(rèn)路徑為
注釋:如果希望使用不同的位置將 HLS IP 添加到 IP 目錄中,可以使用導(dǎo)出 HLS IP 時(shí)創(chuàng)建的export.zip文件:
https://docs.xilinx.com/r/en-US/ug1399-vitis-hls/Exporting-the-RTL-Design
它位于相同的默認(rèn)路徑中,但您可以將其移至期望的位置,并使用該位置代替“ip”文件夾,以添加到 IP 目錄中?!癷p”文件夾所含內(nèi)容與解壓后 IP 的內(nèi)容相同。
創(chuàng)建一個(gè)新的塊設(shè)計(jì),并添加 HLS IP 和 Zynq UltraScale+ MPSoC。通過(guò)雙擊 Zynq,對(duì)其進(jìn)行自定義。在該設(shè)計(jì)中,我們添加了 S_AXI_HP0_FPD 端口。該評(píng)估板默認(rèn)啟用 DDR,但請(qǐng)?jiān)凇癉DR Configurations”選項(xiàng)卡中確認(rèn) DDR 是否已啟用。
使用設(shè)計(jì)輔助來(lái)運(yùn)行自動(dòng)連接。它將通過(guò) AXI Interconnect 和 AXI SmartConnect 自動(dòng)連接 Zynq 和 HLS IP。
須手動(dòng)將 HLS IP 上的中斷端口連接到 Zynq 上的 pl_ps_irq 端口。此時(shí)設(shè)計(jì)應(yīng)與以下截屏相似:
打開“Address Editor”選項(xiàng)卡,確保已如下所示分配了所有地址。
確認(rèn)該設(shè)計(jì)。如果沒有錯(cuò)誤,則運(yùn)行綜合、實(shí)現(xiàn)和生成比特流的步驟。完成后,選擇“File > Export > Export Hardware”導(dǎo)出設(shè)計(jì),并將 XSA 文件保存到期望的位置。
注釋:在導(dǎo)出硬件時(shí),確保選擇“Include bitstream”。
4創(chuàng)建 Vitis 應(yīng)用
打開 Vitis 并選擇“Create Application Project”- 這適用于獨(dú)立的嵌入式系統(tǒng)。
對(duì)于平臺(tái)選擇,請(qǐng)選擇“Create a new platform from hardware (XSA)”選項(xiàng)卡,并瀏覽到您在上一節(jié)中創(chuàng)建的 XSA 文件所在位置。單擊“Next”。
確保選中“Generate boot components”以及“psu_cortexa53_0”。在下一個(gè)框中按需更改平臺(tái)名稱,然后單擊“Next”。
命名應(yīng)用工程。系統(tǒng)名稱將使用相同的標(biāo)題。選擇處理器“psu_cortexa53_0”。單擊“Next”。
對(duì)于“Domain”選擇,請(qǐng)確保操作系統(tǒng)設(shè)置為“standalone”,且架構(gòu)為 64 位。單擊“Next”。
對(duì)于模板,請(qǐng)選擇“Empty C Application”。
設(shè)置源代碼
在 GUI 中打開 Vitis 工程后,在左側(cè)的“Explorer”選項(xiàng)卡中右鍵單擊 projectName_system/projectName/src,然后選擇“Import Sources”。在彈出窗口中,瀏覽至源代碼所在的文件夾。
添加 helloworld.c,它位于“閱讀原文”底部的壓縮文件夾中,然后從文件列表中選擇 helloworld.c,如下圖所示。接著單擊“Finish”。
檢查 helloworld.c。整個(gè)過(guò)程中都有注釋用于解釋每一節(jié)的作用。以“XExample”開頭的數(shù)據(jù)類型和函數(shù)調(diào)用是自動(dòng)生成的 API 調(diào)用,用來(lái)控制 HLS IP 并與之通信。
關(guān)鍵要點(diǎn)包括:須創(chuàng)建一個(gè) Vitis HLS IP 實(shí)例,如第 14 行所示,并使用 API 調(diào)用來(lái)獲取/設(shè)置 IP 與數(shù)據(jù)并且啟動(dòng)它(第 34、35 和 48 行)。
此時(shí)還須完成另一項(xiàng)不尋常的操作,即,使用 Xil_DCacheInvalidate() 函數(shù),告訴處理器對(duì) DDR(而非其高速緩存)執(zhí)行讀取/寫入操作,以確保處理器和 HLS IP 在相同的位置執(zhí)行讀取/寫入。
構(gòu)建并運(yùn)行工程
構(gòu)建系統(tǒng)工程。這將構(gòu)建整個(gè)工程,包括平臺(tái)和應(yīng)用。右鍵單擊系統(tǒng)工程或選擇錘子圖標(biāo)。還可以使用左下角的應(yīng)用助手來(lái)構(gòu)建和運(yùn)行設(shè)計(jì)。
該工程未經(jīng)軟件仿真測(cè)試,因?yàn)檫@需要執(zhí)行額外的步驟,不在本博客的討論范圍之內(nèi)。但在 ZCU102 評(píng)估板上,已通過(guò)選擇“Run As”選項(xiàng)中的“Launch Hardware”來(lái)對(duì)該工程進(jìn)行了測(cè)試和驗(yàn)證。當(dāng)連接到該評(píng)估板時(shí),您還可以運(yùn)行調(diào)試器并單步執(zhí)行代碼。您可使用終端連接到 UART (com0),以查看硬件上的輸出。
參考文件
HLS - Tcl 腳本 - run_hls.tcl
HLS - 源代碼 - example.cpp 和測(cè)試激勵(lì)文件
Vivado - 從 write_project_tcl 創(chuàng)建的 Tcl 腳本
Vitis - 應(yīng)用源代碼
-
amd
+關(guān)注
關(guān)注
25文章
5570瀏覽量
135975 -
接口
+關(guān)注
關(guān)注
33文章
8961瀏覽量
153265 -
Vivado
+關(guān)注
關(guān)注
19文章
831瀏覽量
68305 -
Vitis
+關(guān)注
關(guān)注
0文章
148瀏覽量
7853
原文標(biāo)題:開發(fā)者分享|AMD Vitis? HLS 系列 1 - AMD Vivado? IP 流程(Vitis 傳統(tǒng) IDE)
文章出處:【微信號(hào):gh_2d1c7e2d540e,微信公眾號(hào):XILINX開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
FPGA高層次綜合HLS之Vitis HLS知識(shí)庫(kù)簡(jiǎn)析
使用Vitis HLS創(chuàng)建屬于自己的IP相關(guān)資料分享
如何在Vitis HLS中使用C語(yǔ)言代碼創(chuàng)建AXI4-Lite接口

Vivado HLS和Vitis HLS 兩者之間有什么區(qū)別
Vitis HLS工具簡(jiǎn)介及設(shè)計(jì)流程
如何在Vitis HLS中使用C語(yǔ)言代碼創(chuàng)建AXI4-Lite接口
Vitis HLS如何添加HLS導(dǎo)出的.xo文件

使用AXI4-Lite將Vitis HLS創(chuàng)建的IP連接到PS

Vitis HLS前端現(xiàn)已全面開源
Vitis HLS知識(shí)庫(kù)總結(jié)
HLS最全知識(shí)庫(kù)
AMD全新Vitis HLS資源現(xiàn)已推出

關(guān)于HLS IP無(wú)法編譯解決方案

研討會(huì):利用編譯器指令提升AMD Vitis? HLS 設(shè)計(jì)性能

評(píng)論