本文包含兩部分內容:1)AXI接口簡介;2)AXI IP核的創建流程及讀寫邏輯分析。
1 AXI簡介(本部分內容參考官網資料翻譯)
自定義IP核是Zynq學習與開發中的難點,AXI IP核又是十分常用的自定義IP核,因此掌握AXI IP核的創建流程及通信機制顯得尤為重要。要搞懂AXI IP核,就必須先了解AXI接口。先介紹如下:
1) AXI(Advanced eXtensible Interface)協議主要描述了主設備(Master)和從設備(Slave)之間的數據傳輸方式,主設備和從設備之間通過握手信號建立連接。當主設備的數據準備好時,會發出和維持VALID信號,表示數據有效;當從設備準備好接收數據時,會發出READY信號。數據只有在這兩個信號都有效時才開始傳輸。
2) AXI協議(又稱AXI4.0),包括3種接口標準:AXI4、AXI-Stream、AXI-lite。
AXI4:適用于要求數據高速傳輸的場合。
AXI-Stream:如FIFO,數據傳輸不需要地址,而是主從設備間直接進行數據的讀寫,主要用于高速數據傳輸的場合,如視頻、高速AD等。
AXI-lite:可用于單個數據傳輸,主要用于訪問一些低速外設。
3) AXI接口具有5個獨立通道:WriteAddress通道、Write Data通道、Write Response通道、Read Address通道、Read Address通道、Read Data通道。
4) 讀/寫通道并行地進行數據交互,明顯提高了數據吞吐量,對寫數據,從設備會返回確認信號,這樣可以保證寫數據通道的安全,讀/寫模型分別如圖1-1、圖1-2。
讀模型:主設備發送讀地址占用信號給從設備→從設備將數據寫入主設備,實現讀操作。
寫模型:主設備發送寫地址占用信號給從設備→主設備將數據寫入從設備→從設備回復確認收到信號,實現寫操作。
5) AXI協議嚴格來講是一個點對點的主/從接口協議,當多個外設需要互相交互數據時,我們需要加入一個AXI Interconnect模塊,也就是AXI互聯矩陣,AXI Interconnect的作用是將一個或多個AXI主設備連接到一個或多個AXI 從設備。
6) AXI Interconnect IP核最多支持16個主設備和16個從設備,如果需要更多的接口可以在設計中加入多個IP核。
7) ZYNQ中的AXI接口包含三個類型,共9個,主要用于PS與PL的互聯。
(1)AXI_HP接口(PL模塊作為主設備)
包括4個,主要用于PL訪問PS上的存儲器。每個接口都有兩個FIFO緩沖器,一個是讀緩沖,一個是寫緩沖。
【實例:設計視頻處理時,高清的圖像可由FPGA直接完成采集、預處理,然后通過AXI_HP接口將數據高速傳輸至DDR中,供APU(加速處理器)完成進一步的圖像處理】
(2)AXI_ACP接口(PS端是從設備端)
只有1個,又叫加速器一致性端口,適合做專用指令加速器模塊接口。PL端可直接從PS部分的Cache中拿到CPU的計算結果,同時也可以第一時間將邏輯加速運算的結果送至Cache中,延時很小。
(3)AXI_GP接口(PS端是從設備端)
通用AXI接口,總共有4個。可用于控制電機運轉,獲取傳感器信號等邏輯模塊的連接接口。
2 AXI IP核的創建流程及讀寫邏輯小結
(1)AXI IP核的創建流程(以AXI PWM IP為例)
環境:win 7 +64(i5,4G) Vivado 2014.4+Xilinx SDK2014.4
開發板:zedboard version d xc7z020clg484-1
1) 新建工程→Tools → Create and PackageIP → Next → Create a new AXI4 peripheral → 修改name: axi_pwm(如圖1)→ Next → 為用戶IP核添加AXI4總線接口的支持(如圖2)→ Add IP to the repository →Finish
圖1
圖2
2) 在Flow Navigator中選擇 IP Catalog,打開IP管理器,看到剛才添加的axi_pwm_v1.0(如圖3)→ 右擊axi_pwm_v1.0 → Edit in IPPackager選項,單擊OK,此時系統會自動打開另一個Vivado IDE來對用戶IP核進行編輯,完成IP核的封裝。
3) 在新打開的VivadoIDE中,在source窗口中雙擊打開axi_pwm_v1_0.v頂層文件,添加用戶自定義端口pwm_out(如圖4),并對端口進行例化(如圖5)。
圖4
圖5
4) 雙擊打開axi_pwm_v1_0_S00_AXI.v實例化文件,添加端口聲明(如圖6),添加用戶信號(如圖7),添加用戶邏輯(如圖8)。
圖6
圖7
圖8
5) 切換到Package IP-axi_pwm窗口,點擊CustomizationParameters,單擊如圖9所示鏈接,對剛才修改過的頂層文件進行更新。
圖 9
6) 點擊Review and Package →Re-Package IP,至此,AXI PWM IP核設計完成。
(2)讀寫邏輯小結
a. 輸入信號:
Input
Name
Remark
S_AXI_ACLK
全局時鐘信號
S_AXI_ARESETN
全局復位信號
S_AXI_AWADDR
寫地址信號
主機發送,從機接收
S_AXI_AWPROT
寫通道保護信號
這個信號標志著傳輸的特權與安全
S_AXI_AWVALID
寫地址有效信號
S_AXI_WDATA
寫數據信號
主機發送,從機接收
S_AXI_WSTRB
寫選通信號
這個信號表示寫字節通道保持有效,在每8位的寫數據總線上有1位被選通
S_AXI_WVALID
寫有效信號
S_AXI_BREADY
寫答復準備好信號
這個信號表示主機可以接收到寫答復信號
S_AXI_ARADDR
讀地址信號
S_AXI_ARPROT
讀保護信號
S_AXI_ARVALID
讀地址有效信號
S_AXI_RREADY
讀準備好信號
表示主機可以接收從機發送的數據并且給予答復
b. 輸出信號:
Output
Name
Remark
S_AXI_AWREADY
寫地址準備好信號
表示主機可以控制寫數據總線實現寫功能
S_AXI_WREADY
寫準備好信號
表示從機可以接收主機發送的數據
S_AXI_BRESP
寫答復信號
標志從機是否接收到主機發送的數據
S_AXI_BVALID
寫答復有效信號
表示從機接收到主機發送的數據
S_AXI_ARREADY
讀地址準備好信號
表示主機可以讀取數據
S_AXI_RDATA
讀數據信號
從機發送,主機接收,即寫入主機
S_AXI_RRESP
讀答復信號
表示讀數據傳輸的狀態
S_AXI_RVALID
讀有效信號
表示有效的數據已傳輸
c. 4個從機寄存器(在創建AXI IP時,可以自己設定個數,如圖2)
slv_reg0; slv_reg1; slv_reg2; slv_reg3;
d. 讀寫邏輯示意
寫://寫準備好信號——寫準備好地址總線被占用——寫地址通道有效——寫地址選擇——寫數據傳輸——寫應答回復
讀://讀地址準備好——讀總線被占用——讀地址有效信號產生——讀數據總線有效——讀數據有效——讀地址有效——主機寄存器讀取數據
注:寫的比較片面,期待大家的意見及補充。
-
IP
+關注
關注
5文章
1787瀏覽量
151349 -
AXI
+關注
關注
1文章
134瀏覽量
17101
發布評論請先 登錄
ARM+FPGA開發:基于AXI總線的GPIO IP創建

AXI VIP設計示例 AXI接口傳輸分析
創建AXI Sniffer IP以在Vivado IP Integrator中使用教程
一文詳解Video In to AXI4-Stream IP核

PCIE項目中AXI4 IP核例化詳解
AXI4-Stream Video 協議和AXI_VDMA的IP核介紹
AXI_GPIO簡介與使用指南
使用AXI4-Lite將Vitis HLS創建的IP連接到PS

評論