轉至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 讀架構
圖 1-2 寫架構
AXI是基于VALID/READY的握手機制資料傳輸協定,傳輸源端使用VALID表明位址/控制信号、資料是有效的,目的端使用READY表明自己能夠接受資訊。
讀/寫位址通道:讀、寫傳輸每個都有自己的位址通道,對應的位址通道承載着對應傳輸的位址控制資訊。
讀資料通道:讀資料通道承載着讀資料和讀響應信号包括資料總線(8/16/32/64/128/256/512/1024bit)和訓示讀傳輸完成的讀響應信号。
寫資料通道:寫資料通道的資料資訊被認為是緩沖(buffered)了的,“主”無需等待“從”對上次寫傳輸的确認即可發起一次新的寫傳輸。寫通道包括資料總線(8/16…1024bit)和位元組線(用于訓示8bit 資料信号的有效性)。
寫響應通道:“從”使用寫響應通道對寫傳輸進行響應。所有的寫傳輸需要寫響應通道的完成信号。
圖 1-3 接口與互聯
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 握手
圖 3-2 READY before VALID 握手
圖 3-3 VALID with READY 握手
通道信号要求
通道握手信号:每個通道有自己的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 讀傳輸握手依耐關系
圖 3-5 寫傳輸握手依耐關系
圖 3-6 從機寫響應握手依耐關系
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
下圖給出3次突發,起始位址為4,每次傳輸32bit,資料總線為64bit。
圖 3-8 窄傳輸示例2
非對齊傳輸
AXI支援非對齊傳輸。在大于一個位元組的傳輸中,第一個自己的傳輸可能是非對齊的。如32-bit資料包起始位址在0x1002,非32bit對齊。
主機可以①使用低位位址線來表示非對齊的起始位址;②提供對齊的起始位址,使用位元組線來表示非對齊的起始位址。
圖 3-9 對齊非對齊傳輸示例1-32bit總線
圖 3-10 對齊非對齊傳輸示例2-64bit總線
圖 3-11 對齊的回環傳輸示例
讀寫響應結構
讀傳輸的響應資訊是附加在讀資料通道上的,寫傳輸的響應在寫響應通道。
RRESP[1:0],讀傳輸
BRESP[1:0],寫傳輸
OKAY(‘b00):正常通路成功
EXOKAY(‘b01):Exclusive 通路成功
SLVERR(‘b10):從機錯誤。表明通路已經成功到了從機,但從機希望傳回一個錯誤的情況給主機。
DECERR(‘b11):譯碼錯誤。一般由互聯元件給出,表明沒有對應的從機位址。