本篇博文旨在演示如何通過 NoC 從 Versal 應用處理單元 (APU) 訪問 AXI BRAM。
設計示例是使用 Vivado 2020.2 版本創建的,評估板使用的是 VCK190 評估板。
Versal
Versal 架構將“Scalar Engine”(標量引擎)、“Adaptable Engine”(自適應引擎)和“Intelligent Engine”(智能引擎)這三種不同類型的引擎與豐富的連接和通信功能以及片上網絡 (NoC) 有機結合,從而支持實現覆蓋整個器件的無縫式存儲器映射訪問。
智能引擎包括:
SIMD VLIW AI 引擎,適用于自適應推斷和高級信號處理計算
DSP 引擎,適用于定點運算、浮點運算和復雜的 MAC 運算。
自適應引擎將可編程邏輯塊與存儲器有機結合,它具備專為應對高計算密度需求而設計的架構。
標量引擎包括 Arm Cortex-A72 和 Cortex-R5 處理器,支持計算密集型任務。
片上網絡 (NoC)
片上網絡 (NoC) 是一個 AXI 互連網絡,用于在可編程邏輯 (PL)、處理器系統 (PS) 和其它硬核塊中的 IP 端點之間共享數據。
此基礎架構覆蓋整個器件,基于專有的切換開關形成高速集成的數據路徑。
模塊框圖
Vivado 步驟
步驟 1:
以 VCK190 評估板為目標創建工程,并在 IP integrator 內創建塊設計。
步驟 2:
添加 versal_cips IP (Control, Interfaces and Processing System),并運行塊自動化設置。在設置中配置 NoC 的存儲器控制器 (DDR4),并將 PL 時鐘和 PL 復位的數量配置為 1。
步驟 3:
雙擊打開 NoC IP,在“General”(常規)選項卡中進行以下設置:
Number of AXI Master Interfaces(AXI 主接口數)= 1
Number of AXI Clocks(AXI 時鐘數)= 7
步驟 4:
轉至“Connectivity”(連接)選項卡,檢查 S0xAXI 與 M00_AXI 之間的連接,然后單擊“OK”(確定)。
步驟 5:
將 AXI BRAM 添加到塊設計中,單擊“Run Connection Automation”(運行自動連接),然后選中 pl_clk0 作為從接口的時鐘源。
步驟 6:
再次運行“Run Connection Automation”,配置 ext_reset_in接口。
步驟 7:
運行“validation”(確認)步驟,確認成功后,檢查“Address Editor”(地址編輯器)選項卡。
步驟 8:
為 BD 創建頂層文件,運行綜合與實現,然后生成器件鏡像。
步驟 9:
導出硬件設計以獲取 XSA 文件。
Vitis 步驟
步驟 1:
在 Vitis 中創建新的應用工程,然后切換至“Create a new platform from hardware”(基于硬件創建新平臺)選項卡。
單擊“+”,選擇從 Vivado 導出的 XSA 文件。
步驟 2:
提供工程名稱,并選擇處理器。
步驟 3:
選擇 Hello World 模板,然后單擊“Finish”(完成)。
代碼修改
創建完應用工程后,在 main.c 中修改代碼對 AXI BRAM進行讀寫。
Xil_Out64 函數用于將數據寫入 64 位地址,而Xil_In32 函數則用于地址中讀取 32 位數據。
示例:
寫入數據 API
Xil_Out64(bram_address_write,write_data);
讀取數據 API
read_data=Xil_In32(bram_address_read);
代碼快照:
運行設計
連接到VCK190 評估板,并設置啟動模式為 JTAG 啟動模式,然后運行應用。
控制臺輸出示例:
審核編輯:郭婷
-
dsp
+關注
關注
552文章
7962瀏覽量
348262 -
引擎
+關注
關注
1文章
360瀏覽量
22531
發布評論請先 登錄
相關推薦
評論