1. 程式人生 > >ZCU106開發詳解之AXI_Bram(重磅推出,進階必備)

ZCU106開發詳解之AXI_Bram(重磅推出,進階必備)

感謝大家兩週的等待!!本週連發兩篇!!!!

 最近團隊事情比較多,在忙ZCU106的視訊處理方面的開發實現了編解碼,RTSP視訊流,影象疊加等應用。如果有朋友想了解更多相關資訊請加QQ群836535064。我們會將相關資料釋出於QQ群中。

歡迎有需求的朋友深度合作。本團隊專注於高速視訊編解碼,高速訊號採集處理方案提供。同樣也請入群加管理員。

ZCU106開發詳解之AXI_Bram(重磅推出,進階必備)

本期部落格主要介紹使用AXI BRAM 控制器實現PS側對PL 側System Monitor的控制,並把其監測的資料讀回到PS側處理,這是一個很實用的應用方式。

AXI BRAM 控制器是一款 Xilinx 軟 IP 核,既能與 Xilinx 嵌入式開發套件 (EDK) 及 Vivado® IP 整合器 (IPI) 一起使用,也可作為 Vivado IP 目錄中的獨立核心提供。 該核心按照 AXI 端點從 IP 設計,能夠與 AXI 互連器件以及系統主器件整合,從而能夠與本地 BRAM 進行通訊。 它支援針對 BRAM 的單項事物處理和突發事物處理,並針對性能進行了優化。詳細介紹參考《AXI Block RAM (BRAM) Controller v4.0-pg78》。

Xilinx 繼續為7系列、Zynq®-7000、UltraScale™ 和 UltraScale+ 產品系列提供整合型綜合系統監控器 (SYSMON) 功能。這一非常受歡迎的特性有利於監控 FPGA 的物理工作狀況,包括器件的結溫、電源電壓和外部電壓,這是很多工業標準(包括 FIPS 140-2、IEC 61508 和 ISO26262)的一項重要要求,本章中的System Monitor是xilinx提供的IP核,用來讀取SYSMON的監控資料,關於System Monitor的詳細介紹參考《UltraScale Architecture System Monitor-ug580》。

本期部落格不再詳細介紹工程建立的具體步驟,有不熟悉的可以參照前兩章(PL側閃燈和PS側MIO閃燈)的詳細介紹,下面主要說明BD的相關設定和連線。

一、PL側工程設定及原始碼

首先建立一個BD,新增需要的IP,新增後的圖如下

IP新增好後,需要做一定的設定,本章Axi Bram的設定如下

Zynq核的設定如下,其他部分使用預設設定

Ip設定好後,需要連線各IP,首先點選Run Block Automation,在彈出的對話方塊中,按如下設定,點選ok,完成zynq核的內部連線

點選Run Connection Automation,在彈出的對話方塊中按如下設定,點選ok,工具會自動連線zynq 和 axi_bram

自動連線完成後如下圖所示

為了能與PL側互動,刪除Block Memory Generator ,將滑鼠放在BRAM PORTA埠上,等滑鼠變成一支筆後,點選滑鼠右鍵,選擇Make External,完成連線後如下圖所示

接下來按照前面章節步驟,校驗Block Design、生成Output Products和HDL Wrapper

整個工程的結構如下圖所示:

頂層(Main)模組的原始碼如下:

Pll設定如下:

Bram_Expand原始碼如下:

Sysmon_Module原始碼如下:

Blink_Led原始碼

約束檔案程式碼如下:

綜合編譯生成bit,就可以匯入到SDK中了,具體方法參照前面章節。

二、PS側工程設定及原始碼

SDK新建空工程後,加入如下程式碼,該程式碼主要用來計算開發板上一些重要電壓和溫度,程式碼中0x8000_0000為Bram控制器的起始地址,在此地址中寫入0x08用來控制System Monitor啟動取樣,0x8000_0008-0x8000_0020為各電壓和溫度暫存器,ps側讀取回來後通過計算公式算出各監測資料的實際值,各計算公式參考《UltraScale Architecture System Monitor-ug580》文件。

編譯完成後就可以進行除錯了,在vivado中下載bit檔案,SDK中下載elf檔案,執行後的結果如下:其中VCCAUX、VCCINT、VCCBRAM、PSINTLP、PSINTFP、PSAUX的標準電壓分別為1.8v、0.85v、0.85v、0.85v、0.85v、1.81v,監測值與標準值有一點出入,主要是System Monitor檢測誤差。