在 AXI 基礎(chǔ)第 6 講 - Vitis HLS 中的 AXI4-Lite 簡介中,使用 C 語言在 HLS 中創(chuàng)建包含 AXI4-Lite 接口的 IP。
在本篇博文中,我們將學(xué)習(xí)如何導(dǎo)出 IP 以供在 Vivado Design Suite 中使用、如何將其連接到其它 IP 核與處理器以及如何在板上運行工程。
本篇博文將分為 3 個部分:
1. 從 Vitis HLS 導(dǎo)出 IP。
2. 使用Vivado Design Suite創(chuàng)建硬件。
3. 在Vitis 統(tǒng)一軟件平臺中編寫軟件并在板上運行。
1. 導(dǎo)出 IP
在AXI 基礎(chǔ)第 6 講 - Vitis HLS 中的 AXI4-Lite 簡介中(AXI 第六講請回復(fù)本公眾號AXI 獲得),我們創(chuàng)建了 1 個包含 AXI4-Lite 接口的 IP。如果要把新 IP 連接到任何其它 IP 或者連接到 PS,則首先需要將軟件代碼綜合成 RTL(即,將其轉(zhuǎn)換為硬件)。隨后,我們就可以將 RTL IP 導(dǎo)出到 Vivado Design Suite,以便在其中將其連接到其它 IP 核或者連接到 PS。
1.1. 按如下所示編輯代碼,然后保存。
int example(char *a, char *b, char *c) { #pragma HLS INTERFACE s_axilite port=a bundle=BUS_A #pragma HLS INTERFACE s_axilite port=b bundle=BUS_A #pragma HLS INTERFACE s_axilite port=c bundle=BUS_A #pragma HLS INTERFACE s_axilite port=return bundle=BUS_A *c += *a + *b; int result = 0; result = *c; return result; }
1.2. 鑒于我們將在板上運行此代碼,因此需要將綜合設(shè)置更改為對應(yīng)于可用的開發(fā)板的設(shè)置。
我這里選擇的是 Zynq UltraScale+ ZCU106 評估板。要更改所使用的開發(fā)板,請轉(zhuǎn)至“解決方案 (Solution) -> 解決方案設(shè)置 (Solution Settings) -> 綜合設(shè)置 (Synthesis Settings)”,然后選擇如下所示高亮的“...”即可選擇可用的開發(fā)板。
1.3. 選擇屏幕頂部的綠色運行按鈕 即可運行 C 語言綜合。這樣即可將代碼轉(zhuǎn)換為 RTL:
1.4. 完成綜合后,您可選擇“導(dǎo)出 RTL (ExportRTL)”工具欄按鈕,或者也可以單擊“解決方案 (Solution) -> 導(dǎo)出 RTL (Export RTL)”以打開“Export RTL”對話框。
1.5. 打開的對話框應(yīng)如下截屏所示。
本文包含有關(guān)所有可用選項的詳細解釋。
- 選擇“配置 (configuration)”選項,為新 RTL IP 添加詳細信息。將顯示名稱更改為“Example”,然后選擇“確定 (OK)”。當(dāng)您在 Vivado Design Suite 中打開自己的 IP 時,將顯示此名稱。
- 選擇“瀏覽 (Browse)”按鈕以選擇 Vivado IP (.zip) 文件的輸出位置及其名稱。輸出的 ZIP 文件將包含您的 RTL IP,您可將其導(dǎo)入 Vivado Design Suite。
?
1.6. 等待工具完成導(dǎo)出,然后打開 Vivado Design Suite。選擇“創(chuàng)建新工程”選項:
1.7. 對于后續(xù)所有其它步驟,請選擇“下一步 (Next)”。選擇器件時,請務(wù)必選擇您在創(chuàng)建工程時所選的器件。如果您不確定,可在 Vitis HLS 中的“解決方案設(shè)置 (solution settings) -> 綜合設(shè)置 (synthesis settings)”下找到該器件。如果您選擇其它器件,那么將您的 IP 導(dǎo)入 Vivado Design Suite 時可能會出現(xiàn)問題。
最后,選擇“完成 (Finish)”以打開空工程。
1.8. 要使用 Vivado 工程中生成的 IP,首先必須將新 IP 存儲庫添加到 Vivado 工程中。此處所示文件夾包含從 Vitis HLS 導(dǎo)出的 .zip 文件。要添加存儲庫,請選擇“設(shè)置 (Settings) -> IP -> 存儲庫 (Repository)”。選擇 + 按鈕并在 Vitis HLS 中選擇 IP 導(dǎo)出的位置(即,以上第 6 步)。
選擇位于對話框底部的“應(yīng)用 (Apply)”按鈕,然后選擇“確定 (OK)”。
1.9. 選擇 IP 目錄 (Select IP Catalog)?,F(xiàn)在,您的新存儲庫應(yīng)已顯示在目錄中。
如已成功導(dǎo)入 IP,那么詳細信息窗口中所列出的 IP 數(shù)量應(yīng)為“1”。
注:如果列出的 IP 數(shù)量為 0,那么您可右鍵單擊自己的新存儲庫并選擇“將 IP 添加到存儲庫中 (Add IP to Repository)”。選擇您從 Vitis HLS 導(dǎo)出的 ZIP 文件。隨后,存儲庫中的 IP 數(shù)量應(yīng)已顯示為“1”。如果未顯示正確數(shù)量,請檢查您在 Vitis HLS 中所選的板/器件與您在 Vivado 中所使用的是否相同,否則,則表示您的 IP 可能不兼容。
1.10. 在 Flow Navigator 中,選擇“創(chuàng)建模塊設(shè)計 (Create Block Design)”。
在顯示的選項卡中,選擇 + 按鈕并搜索您在第 6 步中在 Vitis HLS 中指定的 IP 名稱(即,Example)。
祝賀您!您已成功創(chuàng)建了 IP、將其從 Vitis HLS 導(dǎo)出并已添加到 Vivado Design Suite 中的模塊設(shè)計中。
單擊 s_axi_BUS_A 旁的 + 按鈕即可展開端口。如需獲取更多相關(guān)信息,請參閱 (PG155 )中的 “端口描述”。https://www.xilinx.com/support/documentation/ip_documentation/axi_lite_i...
2. 創(chuàng)建硬件
您可能會想要連接到 PS 以便充分利用其功能。添加 PS IP(如 ZCU106 評估板上提供的 Zynq UltraScale+ MPSoC IP)即可支持您執(zhí)行此操作。如需獲取有關(guān) Zynq UltraScale+ MPSoC IP 的更多信息,請參閱:https://china.xilinx.com/content/xilinx/en/products/intellectual-propert...
2.1. 將 Zynq UltraScale+ MPSoC IP 添加到模塊框圖中。添加完成后,將在屏幕頂部出現(xiàn)一條提示信息。選擇“運行自動連接功能 (Run Connection Automation)”。
2.2. 這樣即可得到如下圖示?;蛘撸蔀榇?IP 手動添加所有器件,并如該圖所示連接這些器件。這樣即可得到如下圖示:
2.3. 右鍵單擊“源 (Source)”選項卡下的.bd 以創(chuàng)建 HDL 封裝器 (wrapper)。運行綜合、運行實現(xiàn),然后生成比特流。下一步,選擇“文件 (File) -> 導(dǎo)出 (Export) -> 導(dǎo)出硬件 (Export Hardware)”。請務(wù)必選中包含比特流的選項,并記下所選導(dǎo)出位置。這樣即可創(chuàng)建包含所有硬件信息的 XSA 文件。現(xiàn)在,您可以關(guān)閉 Vivado。
3. 編寫軟件
鑒于您的硬件已完成創(chuàng)建并導(dǎo)出,我們需要編寫軟件以向硬件提供操作指示。我們將在Vitis中編寫軟件。您將需要從賽靈思網(wǎng)站下載 Vitis Core 開發(fā)套件(查閱:https://china.xilinx.com/support/download/index.html/content/xilinx/en/d... )。
3.1. 打開 Vitis。在打開的菜單中,選擇“創(chuàng)建平臺工程 (Create Platform Project)”。這將生成工程基本信息,我們將在其中添加硬件信息(XSA 文件)并編寫一些軟件定義。出現(xiàn)提示時,請選中“從 XSA 文件創(chuàng)建 (create from XSA file)”選項。隨后,我們需要選擇以上步驟 2.3 中的 XSA 文件導(dǎo)出位置。繼續(xù)完成其它設(shè)置,最后單擊“完成 (Finish)”。
3.2. 下一步,我們需要創(chuàng)建包含軟件的應(yīng)用工程。它將基于我們的平臺工程,因此其中包含我們的硬件信息,并且我們需要使用該應(yīng)用工程在目標板上運行應(yīng)用。選擇“文件 (File) -> 新建 (New) -> 新建應(yīng)用工程 (New Application Project)”。
3.3. 出現(xiàn)提示時,選中“選擇存儲庫中的平臺 (Select a platform from arepository)”選項。選擇步驟 3.1 中創(chuàng)建的平臺工程,然后單擊“下一步 (Next)”。
3.4. 選擇 Hello World 模板,然后單擊“完成 (Finish)”。
3.5. 現(xiàn)在,Hello World 代碼會顯示在/src/helloworld.c下。為了執(zhí)行完整性檢查,我們將通過 JTAG 把示例下載到板上,并使用 UART 終端查看 printf 信息。
為此,請連接目標板,并打開終端仿真器軟件(例如,Tera Term)以讀取輸出消息。如果您不知曉如何執(zhí)行此操作,請參閱板相關(guān)的用戶指南。 編譯并運行程序。正確完成此操作后,您應(yīng)可在 Tera Term 中看到 Hello World 打印信息。
3.6. 現(xiàn)在,確認板已正確連接后,下一步即可創(chuàng)建使用 HLS IP 的代碼。從Vitis_Code.c復(fù)制代碼(隨附于本教程)并將其粘貼到 helloworld.c 中,替換原有 helloworld 代碼。
保存,然后重新編譯并運行軟件。這次 Tera Term 會提示您提供 2 項輸入:A 和 B,這 2 項將作為輸入一并傳遞給 HLS IP 中,并顯示結(jié)果。
注:由于在 Vitis HLS 中,A 和 B 已定義為“char”類型,因此輸入的值上限為 127。
示例代碼使用由 Vitis 自動創(chuàng)建的函數(shù),因此開發(fā)非常便捷。
在名為X.h的文件中以及在
/hw/drivers//src 下可找到所使用的函數(shù)。
如需獲取有關(guān)這些函數(shù)的詳細信息,請參閱:https://china.xilinx.com/html_docs/xilinx2020_1/vitis_doc/axi4liteslavec... 。請查看此文件以及該文件夾中的其它相關(guān)文件。您可通過編輯這些文件來進一步控制自己的 IP 以及執(zhí)行中斷編程等操作。
祝賀您
現(xiàn)在,您已在 Vitis HLS 中通過 AXI-Lite 接口創(chuàng)建了自己的 IP,并已將其連接到 PS。
如需了解有關(guān) AXI 第一講到第六講的更多信息,請私信本公眾號回復(fù) AXI 參閱本系列其它教程。
審核編輯:湯梓紅
評論
查看更多