天天看點

AXI4總線協定

轉至https://blog.csdn.net/next_fse/article/details/73692959

新一代FPGA中采用的基本都是AXI4總線協定,例如與slaver側的DMA或DDR等通信。這篇講AXI4的博文感覺講的很清楚。

0.緒論

AXI是進階擴充接口,在AMBA3.0中提出,AMBA4.0将其修改更新為AXI4.0。AMBA4.0 包括AXI4.0、AXI4.0-lite、ACE4.0、AXI4.0-stream

AXI4.0-lite是AXI的簡化版本,ACE4.0 是AXI緩存一緻性擴充接口,AXI4.0-stream是ARM公司和Xilinx公司一起提出,主要用在FPGA進行以資料為主導的大量資料的傳輸應用。

1.簡介

1.1 關于AXI協定

AMBA AXI協定支援支援高性能、高頻率系統設計。

  • 适合高帶寬低延時設計
  • 無需複雜的橋就能實作高頻操作
  • 能滿足大部分器件的接口要求
  • 适合高初始延時的存儲控制器
  • 提供互聯架構的靈活性與獨立性
  • 向下相容已有的AHB和APB接口

關鍵特點:

  • 分離的位址/控制、資料相位
  • 使用位元組線來支援非對齊的資料傳輸
  • 使用基于burst的傳輸,隻需傳輸首位址
  • 分離的讀、寫資料通道,能提供低功耗DMA
  • 支援多種尋址方式
  • 支援亂序傳輸
  • 允許容易的添加寄存器級來進行時序收斂

1.2 AXI架構

AXI協定是基于burst的傳輸,并且定義了以下5個獨立的傳輸通道:讀位址通道、讀資料通道、寫位址通道、寫資料通道、寫響應通道。

位址通道攜帶控制消息用于描述被傳輸的資料屬性,資料傳輸使用寫通道來實作“主”到“從”的傳輸,“從”使用寫響應通道來完成一次寫傳輸;讀通道用來實作資料從“從”到“主”的傳輸。

圖 1-1 讀架構

AXI4總線協定

圖 1-2 寫架構

AXI4總線協定

AXI是基于VALID/READY的握手機制資料傳輸協定,傳輸源端使用VALID表明位址/控制信号、資料是有效的,目的端使用READY表明自己能夠接受資訊。

讀/寫位址通道:讀、寫傳輸每個都有自己的位址通道,對應的位址通道承載着對應傳輸的位址控制資訊。

讀資料通道:讀資料通道承載着讀資料和讀響應信号包括資料總線(8/16/32/64/128/256/512/1024bit)和訓示讀傳輸完成的讀響應信号。

寫資料通道:寫資料通道的資料資訊被認為是緩沖(buffered)了的,“主”無需等待“從”對上次寫傳輸的确認即可發起一次新的寫傳輸。寫通道包括資料總線(8/16…1024bit)和位元組線(用于訓示8bit 資料信号的有效性)。

寫響應通道:“從”使用寫響應通道對寫傳輸進行響應。所有的寫傳輸需要寫響應通道的完成信号。

圖 1-3 接口與互聯

AXI4總線協定

AXI協定提供單一的接口定義,能用在下述三種接口之間:master/interconnect、slave/interconnect、master/slave。

可以使用以下幾種典型的系統拓撲架構:

  • 共享位址與資料總線
  • 共享位址總線,多資料總線
  • multilayer多層,多位址總線,多資料總線

在大多數系統中,位址通道的帶寬要求沒有資料通道高,是以可以使用共享位址總線,多資料總線結構來對系統性能和互聯複雜度進行平衡。

寄存器片(Register Slices):

每個AXI通道使用單一方向傳輸資訊,并且各個通道直接沒有任何固定關系。是以可以可以在任何通道任何點插入寄存器片,當然這會導緻額外的周期延遲。

使用寄存器片可以實作周期延遲(cycles of latency)和最大操作頻率的折中;使用寄存器片可以分割低速外設的長路徑。

2.信号描述

表 2-1 全局信号

信号名 描述
ACLK   時鐘源   全局時鐘信号
ARESETn   複位源 全局複位信号,低有效

表 2-2 寫位址通道信号

信号名     源     描述      
AWID 主機 寫位址ID,用來标志一組寫信号
AWADDR 主機 寫位址,給出一次寫突發傳輸的寫位址
AWLEN 主機 突發長度,給出突發傳輸的次數
AWSIZE 主機 突發大小,給出每次突發傳輸的位元組數
AWBURST 主機 突發類型
AWLOCK 主機 總線鎖信号,可提供操作的原子性
AWCACHE 主機 記憶體類型,表明一次傳輸是怎樣通過系統的
AWPROT 主機 保護類型,表明一次傳輸的特權級及安全等級
AWQOS 主機 品質服務QoS
AWREGION 主機 區域标志,能實作單一實體接口對應的多個邏輯接口
AWUSER 主機 使用者自定義信号
AWVALID 主機 有效信号,表明此通道的位址控制信号有效
AWREADY 從機 表明“從”可以接收位址和對應的控制信号

表 2-3 寫資料通道信号

信号名     源     描述      
WID 主機 一次寫傳輸的ID tag
WDATA 主機 寫資料
WSTRB 主機 寫資料有效的位元組線,用來表明哪8bits資料是有效的
WLAST 主機 表明此次傳輸是最後一個突發傳輸
WUSER 主機 使用者自定義信号
WVALID 主機 寫有效,表明此次寫有效
WREADY 從機 表明從機可以接收寫資料

表 2-4 寫響應通道信号

信号名     源     描述      
BID 從機 寫響應ID tag
BRESP 從機 寫響應,表明寫傳輸的狀态
BUSER 從機 使用者自定義
BVALID 從機 寫響應有效
BREADY 主機 表明主機能夠接收寫響應

表 2-5 讀位址通道信号

信号名     源     描述      
ARID 主機 讀位址ID,用來标志一組寫信号
ARADDR 主機 讀位址,給出一次寫突發傳輸的讀位址
ARLEN 主機 突發長度,給出突發傳輸的次數
ARSIZE 主機 突發大小,給出每次突發傳輸的位元組數
ARBURST 主機 突發類型
ARLOCK 主機 總線鎖信号,可提供操作的原子性
ARCACHE 主機 記憶體類型,表明一次傳輸是怎樣通過系統的
ARPROT 主機 保護類型,表明一次傳輸的特權級及安全等級
ARQOS 主機 品質服務QoS
ARREGION 主機 區域标志,能實作單一實體接口對應的多個邏輯接口
ARUSER 主機 使用者自定義信号
ARVALID 主機 有效信号,表明此通道的位址控制信号有效
ARREADY 從機 表明“從”可以接收位址和對應的控制信号

 表 2-6 讀資料通道信号

信号名     源     描述      
RID 從機 讀ID tag
RDATA 從機 讀資料
RRESP 從機 讀響應,表明讀傳輸的狀态
RLAST 從機 表明讀突發的最後一次傳輸
RUSER 從機 使用者自定義
RVALID 從機 表明此通道信号有效
RREADY 主機 表明主機能夠接收讀資料和響應資訊

表 2-7 低功耗接口信号

信号名     源     描述    
CSYSREQ 時鐘控制器 系統退出低功耗請求,此信号從“時鐘控制器”到“外設”
CSYSACK 外設 退出低功耗狀态确認
CACTIVE 外設 外設請求時鐘有效

3.信号接口要求

3.1時鐘複位

時鐘

每個AXI元件使用一個時鐘信号ACLK,所有輸入信号在ACLK上升沿采樣,所有輸出信号必須在ACLK上升沿後發生。

複位

AXI使用一個低電平有效的複位信号ARESETn,複位信号可以異步斷言,但必須和時鐘上升沿同步去斷言。

複位期間對接口有如下要求:①主機接口必須驅動ARVALID,AWVALID,WVALID為低電平;②從機接口必須驅動RVALID,BVALID為低電平;③所有其他信号可以被驅動到任意值。

在複位後,主機可以在時鐘上升沿驅動ARVALID,AWVALID,WVALID為高電平。

3.2基本讀寫傳輸

握手過程

5個傳輸通道均使用VALID/READY信号對傳輸過程的位址、資料、控制信号進行握手。使用雙向握手機制,傳輸僅僅發生在VALID、READY同時有效的時候。下圖是幾種握手機制:

圖 3-1 VALID before READY 握手

AXI4總線協定

圖 3-2 READY before VALID 握手

AXI4總線協定

圖 3-3 VALID with READY 握手

AXI4總線協定

通道信号要求

通道握手信号:每個通道有自己的xVALID/xREADY握手信号對。

寫位址通道:當主機驅動有效的位址和控制信号時,主機可以斷言AWVALID,一旦斷言,需要保持AWVALID的斷言狀态,直到時鐘上升沿采樣到從機的AWREADY。AWREADY預設值可高可低,推薦為高(如果為低,一次傳輸至少需要兩個周期,一個用來斷言AWVALID,一個用來斷言AWREADY);當AWREADY為高時,從機必須能夠接受提供給它的有效位址。

寫資料通道:在寫突發傳輸過程中,主機隻能在它提供有效的寫資料時斷言WVALID,一旦斷言,需要保持斷言狀态,知道時鐘上升沿采樣到從機的WREADY。WREADY預設值可以為高,這要求從機總能夠在單個周期内接受寫資料。主機在驅動最後一次寫突發傳輸是需要斷言WLAST信号。

寫響應通道:從機隻能它在驅動有效的寫響應時斷言BVALID,一旦斷言需要保持,直到時鐘上升沿采樣到主機的BREADY信号。當主機總能在一個周期内接受寫響應信号時,可以将BREADY的預設值設為高。

讀位址通道:當主機驅動有效的位址和控制信号時,主機可以斷言ARVALID,一旦斷言,需要保持ARVALID的斷言狀态,直到時鐘上升沿采樣到從機的ARREADY。ARREADY預設值可高可低,推薦為高(如果為低,一次傳輸至少需要兩個周期,一個用來斷言ARVALID,一個用來斷言ARREADY);當ARREADY為高時,從機必須能夠接受提供給它的有效位址。

讀資料通道:隻有當從機驅動有效的讀資料時從機才可以斷言RVALID,一旦斷言需要保持直到時鐘上升沿采樣到主機的BREADY。BREADY預設值可以為高,此時需要主機任何時候一旦開始讀傳輸就能立馬接受讀資料。當最後一次突發讀傳輸時,從機需要斷言RLAST。

通道間關系

AXI協定要求通道間滿足如下關系:

  • 寫響應必須跟随最後一次burst的的寫傳輸
  • 讀資料必須跟随資料對應的位址
  • 通道握手信号需要确認一些依耐關系

通道握手信号的依耐關系

為防止死鎖,通道握手信号需要遵循一定的依耐關系。①VALID信号不能依耐READY信号。②AXI接口可以等到檢測到VALID才斷言對應的READY,也可以檢測到VALID之前就斷言READY。下面有幾個圖表明依耐關系,單箭頭指向的信号能在箭頭起點信号之前或之後斷言;雙箭頭指向的信号必須在箭頭起點信号斷言之後斷言。

圖 3-4 讀傳輸握手依耐關系

AXI4總線協定

圖 3-5 寫傳輸握手依耐關系

AXI4總線協定

圖 3-6 從機寫響應握手依耐關系

AXI4總線協定

3.3傳輸結構

位址結構

AXI協定是基于burst的,主機隻給出突發傳輸的第一個位元組的位址,從機必須計算突發傳輸後續的位址。突發傳輸不能跨4KB邊界(防止突發跨越兩個從機的邊界,也限制了從機所需支援的位址自增數)。

1)突發長度

ARLEN[7:0]決定讀傳輸的突發長度,AWLEN[7:0]決定寫傳輸的突發長度。AXI3隻支援1~16次的突發傳輸(Burst_length=AxLEN[3:0]+1),AXI4擴充突發長度支援INCR突發類型為1~256次傳輸,對于其他的傳輸類型依然保持1~16次突發傳輸(Burst_Length=AxLEN[7:0]+1)。

burst傳輸具有如下規則:

  • wraping burst ,burst長度必須是2,4,8,16
  • burst不能跨4KB邊界
  • 不支援提前終止burst傳輸

所有的元件都不能提前終止一次突發傳輸。然而,主機可以通過解斷言所有的寫的strobes來使非所有的寫位元組來減少寫傳輸的數量。讀burst中,主機可以忽略後續的讀資料來減少讀個數。也就是說,不管怎樣,都必須完成所有的burst傳輸。

注:對于FIFO,忽略後續讀資料可能導緻資料丢失,必須保證突發傳輸長度和要求的資料傳輸大小比對。

突發大小

ARSIZE[2:0],讀突發傳輸;AWSIZE[2:0],寫突發傳輸。

AxSIZE[2:0]    bytes in transfer

‘b000      1

‘b001      2

‘b010      4

‘b011      8

‘b100      16

‘b101      32

‘b110      64

‘b111      128

突發類型

FIXED:突發傳輸過程中位址固定,用于FIFO通路

INCR:增量突發,傳輸過程中,位址遞增。增加量取決AxSIZE的值。

WRAP:回環突發,和增量突發類似,但會在特定高位址的邊界處回到低位址處。回環突發的長度隻能是2,4,8,16次傳輸,傳輸首位址和每次傳輸的大小對齊。最低的位址整個傳輸的資料大小對齊。回環邊界等于(AxSIZE*AxLEN)。

AxBURST[1:0]    burst type

‘b00          FIXED

‘b01          INCR

‘b10          WRAP

‘b11          Reserved

Start_Address=AxADDR

Number_Bytes=2^AxSIZE

Burst_Length=AxLEN+1

Aligned_Addr=(INT(Start_Address/Number_Bytes))xNumber_Bytes。//INT表示向下取整。

對于INCR突發和WRAP突發但沒有到達回環邊界,位址由下述方程決定:

Address_N=Aligned_Address+(N-1)xNumber_Bytes

WRAP突發,突發邊界:

Wrap_Boundary=(INT(Start_Address/(Number_Bytes x Burst_Length)))x(Number_Bytes x Burst_Length)

資料讀寫結構

WSTRB[n:0]對應于對應的寫位元組,WSTRB[n]對應WDATA[8n+7:8n]。WVALID為低時,WSTRB可以為任意值,WVALID為高時,WSTRB為高的位元組線必須訓示有效的資料。

窄傳輸

當主機産生比它資料總線要窄的傳輸時,由位址和控制信号決定哪個位元組被傳輸:

INCR和WRAP,不同的位元組線決定每次burst傳輸的資料,FIXED,每次傳輸使用相同的位元組線。

下圖給出了5次突發傳輸,起始位址為0,每次傳輸為8bit,資料總線為32bit,突發類型為INCR。

圖 3-7 窄傳輸示例1

AXI4總線協定

下圖給出3次突發,起始位址為4,每次傳輸32bit,資料總線為64bit。

圖 3-8 窄傳輸示例2

AXI4總線協定

非對齊傳輸

AXI支援非對齊傳輸。在大于一個位元組的傳輸中,第一個自己的傳輸可能是非對齊的。如32-bit資料包起始位址在0x1002,非32bit對齊。

主機可以①使用低位位址線來表示非對齊的起始位址;②提供對齊的起始位址,使用位元組線來表示非對齊的起始位址。

圖 3-9 對齊非對齊傳輸示例1-32bit總線

AXI4總線協定

圖 3-10 對齊非對齊傳輸示例2-64bit總線

AXI4總線協定

圖 3-11 對齊的回環傳輸示例

AXI4總線協定

讀寫響應結構

讀傳輸的響應資訊是附加在讀資料通道上的,寫傳輸的響應在寫響應通道。

RRESP[1:0],讀傳輸

BRESP[1:0],寫傳輸

OKAY(‘b00):正常通路成功

EXOKAY(‘b01):Exclusive 通路成功

SLVERR(‘b10):從機錯誤。表明通路已經成功到了從機,但從機希望傳回一個錯誤的情況給主機。

DECERR(‘b11):譯碼錯誤。一般由互聯元件給出,表明沒有對應的從機位址。