雖然Xilinx已經將和AXI時序有關的細節都封裝起來,給出了官方IP和向導生成自定義IP,用戶只需要關注自己的邏輯實現,但是還是有必要簡單了解一下AXI的時序,畢竟咱是做硬件設計的。
AXI(Advanced eXtensible Interface)是一種總線協議,該協議是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0協議中最重要的部分,是一種面向高性能、高帶寬、低延遲的片內總線。它的地址/控制和數據相位是分離的,支持不對齊的數據傳輸,同時在突發傳輸中,只需要首地址,同時分離的讀寫數據通道、並支持顯著傳輸訪問和亂序訪問,並更加容易就行時序收斂。AXI 是AMBA 中一個新的高性能協議。AXI 技術豐富了現有的AMBA 標准內容,滿足超高性能和復雜的片上系統(SoC)設計的需求。
AXI總線是一種基於burst的傳輸總線,分為5個通道:read address, read data, write address, write data, write response。
- read data channel是一種從slave到master的傳輸,在一個讀操作中,response與read data同一通道,分別為transfer返回response
- write data channel是一種從master到slave的傳輸,在一個寫操作中,返回一個整體的response。
- AXI中的每個通道都包含一個信息信號和一個雙路的VALD、READY握手機制。信息源通過VALID信號來指示通道中的數據和控制信息什么時候有效。目地源用READY信號來表示何時能夠接收數據。讀數據和寫數據通道都包括一個LAST信號,用來指明一個事物傳輸的最后一個數據。
- 寫數據通路傳送着主機向設備的寫數據。每八個數據都會有一個byte lane ,用來指明數據總線上面的哪些byte有效。寫響應通道提供了設備響應寫事務的一種方式。這完成信號每一次突發式讀寫會產生一個。
- 主機和設備的接口和互聯圖如下:
- 傳輸地址信息和數據都是在VALID和READY同時為高時有效。
- 突發式讀的時序圖如下:
當地址出現在地址總線后,傳輸的數據將出現在讀數據通道上。設備保持VALID為低直到讀數據有效。為了表明一次突發式讀寫的完成,設備用RLAST信號來表示最后一個被傳輸的數據。
- 重疊突發式讀時序圖如下:
設備會在第一次突發式讀完成后處理第二次突發式讀數據。也就意味着,主機一開始傳送了兩個地址給設備。設備在完全處理完第一個地址的數據之后才開始處理第二個地址的數據。
- 突發式寫時序圖如下:
這一過程的開始時,主機發送地址和控制信息到寫地址通道中,然后主機發送每一個寫數據到寫數據通道中。當主機發送最后一個數據時,WLAST信號就變為高。當設備接收完所有數據之后他將一個寫響應發送回主機來表明寫事務完成。
- AXI協議支持亂序傳輸。他給每一個通過接口的事務一個IDtag。協議要求相同ID tag的事務必須有序完成,而不同ID tag可以亂序完成。
信號說明:
1、全局信號
信號 |
源 |
描述 |
ACLK |
Clock source |
全局時鍾信號 |
ARESETn |
Reset source |
全局復位信號,低電平有效 |
2、寫地址通道信號
信號 |
源 |
描述 |
AWID[3:0] |
主機 |
寫地址ID,這個信號是寫地址信號組的ID tag。 |
AWADDR[31:0] |
主機 |
寫地址。 |
AWLEN[3:0] |
主機 |
突發式寫的長度。此長度決定突發式寫所傳輸的數據的個數。 |
AWSIZE[2:0] |
主機 |
突發式寫的大小。 |
AWBURST[1:0] |
主機 |
突發式寫的類型。 |
AWLOCK[1:0] |
主機 |
鎖類型。 |
AWCACHE[3:0] |
主機 |
Cache類型。這信號指明事務的bufferable、cacheable、write-through、write-back、allocate attributes信息。 |
AWPROT[2:0] |
主機 |
保護類型。 |
AWVALID |
主機 |
寫地址有效。 1 = 地址和控制信息有效 0 = 地址和控制信息無效 這個信號會一直保持,直到AWREADY變為高。 |
AWREADY |
設備 |
寫地址准備好。這個信號用來指明設備已經准備好接受地址和控制信息了。 1 = 設備准備好 0 = 設備沒准備好 |
3、寫數據通道信號
信號 |
源 |
描述 |
WID[3:0] |
主機 |
寫ID tag,WID的值必須與AWID的值匹配 |
WDATA[31:0] |
主機 |
寫的數據。 |
WSTRB[3:0] |
主機 |
寫閥門。WSTRB[n]標示的區間為WDATA[(8*n)+7:(8*n)]
|
WLAST |
主機 |
寫的最后一個數據。 |
WVALID |
主機 |
寫有效 1 = 寫數據和閥門有效 0 = 寫數據和閥門無效 |
WREADY |
設備 |
寫就緒。指明設備已經准備好接受數據了 1 = 設備就緒 0 = 設備未就緒 |
4、寫響應通道信號
信號 |
源 |
描述 |
BID[3:0] |
設備 |
響應ID , 這個數值必須與AWID的數值匹配。 |
BRESP[1:0] |
設備 |
寫響應。這個信號指明寫事務的狀態。可能有的響應:OKAY、EXOKAY、SLVERR、DECERR。 |
BVALID |
設備 |
寫響應有效。 1 = 寫響應有效 0 = 寫響應無效 |
BREADY |
主機 |
接受響應就緒。該信號表示主機已經能夠接受響應信息。 1 = 主機就緒 0 = 主機未就緒 |
5、讀地址通道信號
信號 |
源 |
描述 |
ARID[3:0] |
主機 |
讀地址ID。 |
ARADDR[31:0] |
主機 |
讀地址。 |
ARLEN[3:0] |
主機 |
突發式讀長度。 |
ARSIZE[2:0] |
主機 |
突發式讀大小。 |
ARBURST[1:0] |
主機 |
突發式讀類型。 |
ARLOCK[1:0] |
主機 |
鎖類型。 |
ARCACHE[3:0] |
主機 |
Cache類型。 |
ARPROT[2:0] |
主機 |
保護類型。 |
ARVALID |
主機 |
讀地址有效。信號一直保持,直到ARREADY為高。 1 = 地址和控制信息有效 0 = 地址和控制信息無效 |
ARREADY |
設備 |
讀地址就緒。指明設備已經准備好接受數據了。 1 = 設備就緒 0 = 設備未就緒 |
6、讀數據通道信號
信號 |
源 |
描述 |
RID[3:0] |
設備 |
讀ID tag。RID的數值必須與ARID的數值匹配。 |
RDATA[31:0] |
設備 |
讀數據。 |
RRESP[1:0] |
設備 |
讀響應。這個信號指明讀傳輸的狀態:OKAY、EXOKAY、SLVERR、DECERR。 |
RLAST |
設備 |
讀事務傳送的最后一個數據。 |
RVALID |
設備 |
讀數據有效。 1 = 讀數據有效。 0 = 讀數據無效。 |
RREADY |
主機 |
讀數據就緒。 1 = 主機就緒 0 = 主機未就緒 |
7、低功耗接口信號
信號 |
源 |
描述 |
CSYSREQ |
CLOCK controller |
系統低功耗請求。此信號來自系統時鍾控制器,使外圍設備進入低功耗狀態。 |
CSYSACK |
外圍設備 |
低功耗請求應答。 |
CACTIVE |
外圍設備 |
Clock active 1 = 外圍設備時鍾請求 0 = 外圍設備時鍾無請求 |