一、AXI4簡介
AXI4(Advanced eXtensible Interface 4)是ARM公司推出的高性能片上總線協議,屬于AMBA(Advanced Microcontroller Bus Architecture)標準的一部分。它專為高帶寬、低延遲的片上通信設計,廣泛應用于處理器、DSP、FPGA等復雜系統中。AXI4包含三個變體:
- AXI4:標準版本,支持高帶寬內存映射通信。
- AXI4-Lite:簡化版,用于寄存器等簡單設備的輕量級訪問。
- AXI4-Stream:無地址協議,適用于高速數據流傳輸(如視頻、音頻)。
二、寫數據
一、寫地址通道
一、不重要信號:
信號名 | 信號源 | 信號介紹 |
AWID | mastar | 寫地址ID。這個信號是寫地址組的標識標簽的信號 |
AWLOCK | mastar | 提供有關傳輸的原子特性的其他信息。 |
AWCACHE | mastar | 總線存儲類型 |
AWPROT | mastar | 保護類型。他的信號表明事務的特權和安全級別,以及該事務是數據訪問還是指令訪問。 |
AWQOS | mastar | 服務質量,QoS為每個寫事務發送的QoS標識符。僅在axis4中實現。 |
AWREGION | mastar | 區域標識符。允許從機上的單個物理接口用于多個邏輯接口。僅在axis4中實現。 |
AWUSER | mastar | 用戶信號。可選寫地址通道中的用戶自定義信號。僅在axis4中支持 |
二、重要信號
信號名 | 信號源 | 信號介紹 |
AWADDR | mastar | 寫地址.寫地址給出了寫突發事務中第一次傳輸的地址 |
AWLEN | mastar | 突發長度,突發長度給出了突發中傳輸的確切數量。此信息確定與該地址相關的數據傳輸的數量。這在AXI3和AXI4之間有所不同 |
AWSIZE | mastar | 突發大小。這個信號表示在突發中每次傳輸的大小 |
AWBURST | mastar | 突發類型。突發類型,加上大小信息(AWSIZE),詳細說明了如何在突發中計算每個傳輸的地址。 |
AWVALID | mastar | 寫地址有效。該信號表明通道正在發送有效寫入信號地址和控制信息 |
AWREADY | slaver | 寫地址準備好。這個信號表明從機準備好接受一個地址和相關的控制信號:1 =從機準備好了0 =從機還沒有準備好 |
二、寫數據通道
一、不重要信號:
信號名 | 信號源 | 信號介紹 |
WID | mastar | 寫ID標簽。這個信號是寫入數據傳輸的ID標簽。僅在axis3中支持。 |
WUSER | mastar | 用戶信號。可選寫數據通道中的用戶自定義信號。僅在axis4中支持 |
二、重要信號:
信號名 | 信號源 | 信號介紹 |
WDATA | mastar | 寫數據 |
WSTRB | mastar | 寫選通(strobe)。這個信號指示內存中要更新的字節位置。寫數據總線的每8位都有一個寫選通。因此,WSTRB[n]對應于WDATA[(8 × n) + 7:(8 × n)],即每一位選通自己對應的Byte |
WLAST | mastar | 寫最后一個數據。這個信號指示寫突發中的最后一次傳輸。 |
WVALID | mastar | 寫有效。這個信號表示有效的寫數據和選通可用:1 = 寫數據和WSTRB可用 ; 0 =寫數據和WSTRB不可用。 |
WREADY | slaver | 寫準備好信號。這個信號表示從機可以接受寫數據 |
寫選通介紹:假如32數據我們只要寫入低十六位,只要將WSTRB設置為0011即可。
verilog
// 只更新低16位數據
WDATA = 32'hAABBCCDD;
WSTRB = 4'b0011; // 只使能最低兩個字節// 這將導致:
// - 字節0 (DATA[7:0]) = DD (被寫入)
// - 字節1 (DATA[15:8]) = CC (被寫入)
// - 字節2 (DATA[23:16]) = BB (被忽略)
// - 字節3 (DATA[31:24]) = AA (被忽略)
三、寫響應通道信號
一、不重要信號
信號名 | 信號源 | 信號介紹 |
BID | slave | 寫ID標簽。這個信號是寫入數據傳輸的ID標簽。僅在axis3中支持。 |
BUSER | slave | 用戶信號。可選寫數據通道中的用戶自定義信號。僅在axis4中支持 |
二、重要信號
信號名 | 信號源 | 信號介紹 |
BRESP | slave | 寫響應。這個信號指示寫事務的狀態。允許的響應有OKAY、EXOKAY、SLVERR和DECERR。 |
BVALID | slave | 寫響應有效。這個信號表明一個有效的寫響應是可用的:1 =寫響應可用0 =寫響應不可用 |
BREADY | mastar | 響應ready。這個信號表示主機可以接受響應信息。1 = master就緒0 = master未就緒 |
四、寫通道介紹
寫數據的三個通道是相互獨立的。顯示寫事務如何使用寫地址、寫數據和寫響應通道。
三、讀數據
一、讀地址通道
一、不重要信號
信號名 | 信號源 | 信號介紹 |
ARID | mastar | 讀地址ID。該信號是信號讀地址組的識別標簽 |
ARLOCK | mastar | 提供有關傳輸的原子特性的其他信息。 |
ARCACHE | mastar | 存儲類型。該信號指示事務如何在系統中進行 |
ARPROT | mastar | 保護類型。該信號表示事務的特權和安全級別,以及該事務是數據訪問還是指令訪問 |
ARQOS | mastar | 服務質量,QoS為每個讀事務發送的QoS標識符。僅實現在axis4中 |
ARREGION | mastar | 區域標識符。允許從機上的單個物理接口用于多個接口邏輯接口。僅在axis4中實現 |
ARUSER | mastar | 用戶信號。可選讀地址通道中自定義信號。僅在axis4中支持 |
二、重要信號
信號名 | 信號源 | 信號介紹 |
ARADDR | mastar | 讀地址。讀地址給出了讀突發中第一次傳輸的地址事務 |
ARLEN | mastar | 突發長度。這個信號表明在一個突發中傳輸的確切數量。這在AXI3和AXI4之間有所不同 |
ARSIZE | mastar | 突發大小。這個信號表示在突發中每次傳輸的大小。 |
ARBURST | mastar | 突發類型。突發類型和大小信息決定了如何計算突發內每個傳輸的地址 |
ARVALID | mastar | 讀地址有效。該信號表明通道正在發送有效的讀地址和控制信息 |
ARREADY | Slave | 讀地址準備好了。這個信號表明從機已經準備好接受一個地址以及相關的控制信號 |
二、讀數據通道
一、不重要信號
信號名 | 信號源 | 信號介紹 |
RID | Slave | 讀取ID標簽。該信號是從機產生的讀數據組信號的識別標簽 |
RRESP | Slave | 讀取響應。該信號表示讀傳輸的狀態。 |
RUSER | Slave | 用戶信號。可選讀數據通道中的用戶自定義信號。僅在axis4中支持。 |
二、重要信號
信號名 | 信號源 | 信號介紹 |
RDATA | Slave | 讀數據。 |
RLAST | Slave | 讀最后一次。這個信號表示讀突發中的最后一次傳輸 |
RVALID | Slave | 讀有效信號。該信號表明通道正在發送所需的讀取數據 |
RREADY | mastar | 都準備好信號。這個信號表示主機可以接受讀取的數據和響應信息 |
三、讀數據介紹
AXI4讀事務使用讀地址和讀數據通道示意:
四、AXI4 LIte和AXI4接口對比圖。
如下可見AXI4 lite接口相較于AXI4做了很多簡化,基本上只保留重要信號。
特性 | AXI4-Lite | AXI4 (Full) |
---|---|---|
設計目的 | 簡單控制寄存器訪問 | 高性能大數據量傳輸 |
突發傳輸 | 不支持。每次傳輸只讀/寫一個數據。 | 支持。可傳輸大量連續數據(最多256 beat)。 |
數據寬度 | 通常固定為 32bit 或 64bit | 支持更寬的數據總線(可到1024bit) |
通道信號 | 大幅簡化 | 功能完整 |
讀寫通道 | 分離的讀/寫地址和數據通道 | 分離的讀/寫地址和數據通道 |
事務屬性 | 極少(如:非安全、非特權、數據無關) | 豐富(如:內存類型、緩存、緩沖區策略) |
使用場景 | 訪問IP核的控制狀態寄存器(CSR) | 與高帶寬內存(DDR)、DMA、高速外設通信 |
實現復雜度 | 低,邏輯資源占用少 | 高,邏輯資源占用多 |
握手信號 | 必須有(xVALID /xREADY ) | 必須有(xVALID /xREADY ) |
1. 突發傳輸 (Burst Transfer)
這是最根本的區別。
AXI4-Lite:每次事務只能傳輸一個數據單元。例如,要寫入4個32位的數據,主設備必須發起4次獨立的寫事務(每次包含地址 phase 和數據 phase)。這效率低下,但控制簡單。
AXI4:支持突發傳輸。主設備只需提供起始地址和突發長度(Burst Length,例如4),就可以在一次事務中連續傳輸4個數據。從設備會自動遞增地址。這極大地提高了數據傳輸效率,減少了總線開銷。
2. 通道信號簡化
AXI4-Lite 移除了AXI4中與高性能操作相關的所有復雜信號,例如:
AxLEN
:突發長度。AXI4-Lite 沒有這個信號,因為長度固定為1。AxSIZE
:突發大小。每次傳輸的大小必須與數據總線寬度一致(如32位總線就是4字節)。AxBURST
:突發類型。固定為增量突發(Incr),但因為長度是1,所以地址也不會變。WLAST
:最后一個寫數據。因為每次寫只有一個數據,所以這個信號不需要。RLAST
:最后一個讀數據。同理,不需要。AxLOCK
,?AxCACHE
,?AxQOS
,?AxPROT
?等:事務屬性。大部分被移除或固定為常量值。
3.如何選擇?
選擇使用哪種接口取決于IP核的功能和性能需求:
使用 AXI4-Lite 當:
IP核只需要被配置(例如:設置使能位、中斷掩碼、控制寄存器)。
IP核只需要提供狀態信息(例如:讀取狀態寄存器、中斷狀態位)。
數據傳輸是偶爾的、零星的,對帶寬要求極低。
你想要最小化邏輯資源和功耗。
使用 AXI4 當:
IP核需要持續不斷地流式傳輸大量數據(例如:視頻幀、音頻數據、網絡數據包)。
IP核作為DMA控制器,需要在內存和外設之間搬移大塊數據。
IP核需要高帶寬和低延遲來訪問系統內存(DDR)。
性能是首要考慮因素。
五、握手機制
1、基本握手機制
AXI4 使用簡單的雙向握手協議:
VALID?信號:由發送方驅動,表示數據/地址/控制信息已經準備好并有效
READY?信號:由接收方驅動,表示接收方已準備好接受數據
傳輸發生在時鐘上升沿當 VALID 和 READY 同時為高時
2、AXI4 通道及其握手信號
通道 | 方向 | VALID 信號 | READY 信號 | 功能描述 |
---|---|---|---|---|
寫地址通道 | 主→從 | AWVALID | AWREADY | 傳輸寫地址和控制信息 |
寫數據通道 | 主→從 | WVALID | WREADY | 傳輸寫數據和寫選通 |
寫響應通道 | 從→主 | BVALID | BREADY | 返回寫操作響應 |
讀地址通道 | 主→從 | ARVALID | ARREADY | 傳輸讀地址和控制信息 |
讀數據通道 | 從→主 | RVALID | RREADY | 返回讀數據和響應 |
六、突發傳輸
由圖可見在突發讀時候,地址必須要在讀地址有效和讀地址準備信號同時有效時候才能有效。T2時刻上升沿時候可見。然后就是讀數據通道。讀數據通道下,讀有效和讀有效準備信號也是同時拉高才有效。然后在讀數據通道根據我們讀地址信號的數據進行突發傳輸。但是從機響應的準備信號拉高時和用戶讀有效拉高時候才傳輸。突發寫同理不過多介紹。