參考資料
基于Vivado的AXI參考指南UG1037
ARM文檔:AMBA AXI協(xié)議規(guī)范(IHI0022D)
可去官網(wǎng)下載英文文檔查看,也可下載資源:https://download.csdn.net/download/unique_ZRF/87008791
一、AXI接口簡(jiǎn)介
1.1 什么是AXI
AXI(高級(jí)可擴(kuò)展接口) 是ARM AMBA的一部分
AMBA(Advanced Microcontorller Bus Architecture)高級(jí)微控制器總線架構(gòu);是1996年首次引入的一組微控制器總線;開放的片內(nèi)互聯(lián)的總線標(biāo)準(zhǔn),能在多主機(jī)設(shè)計(jì)中實(shí)現(xiàn)多個(gè)控制器和外圍設(shè)備之間的連接和管理。
1.2 AXI接口的三種類型
三種類型都是基于握手的機(jī)制
1.2.1 AXI4(AXI4-FULL)
用于高性能的存儲(chǔ)器映射需求;
可傳輸大量數(shù)據(jù)到內(nèi)存中,或從內(nèi)存中讀出數(shù)據(jù)。
存儲(chǔ)器映射:指主機(jī)在對(duì)從機(jī)進(jìn)行讀寫操作時(shí),指定一個(gè)目標(biāo)地址,這個(gè)地址對(duì)應(yīng)系統(tǒng)存儲(chǔ)空間的地址,表示對(duì)該空間進(jìn)行讀寫操作;
1.2.2 AXI4-Lite
簡(jiǎn)化版的AXI4接口;
用于低吞吐率存儲(chǔ)器映射的通信。
1.2.3 AXI4-Stream(ST)
用于高速的流數(shù)據(jù)通信:不需要指定地址;單一通道的單向數(shù)據(jù)流的通信;一般可用于傳輸視頻數(shù)據(jù);
1.3 AXI的優(yōu)點(diǎn)
生產(chǎn)力:
標(biāo)準(zhǔn)AXI接口,只需要學(xué)習(xí)單一的協(xié)議即可。
靈活性:
AXI4:進(jìn)行讀寫操作只需一個(gè)單一地址就可以進(jìn)行突發(fā)傳輸,最大支持256個(gè)數(shù)據(jù)
AXI4-Lite:輕量級(jí),不支持突發(fā)傳輸,支持單次傳輸一個(gè)數(shù)據(jù)
AXI4-Stream:移除了關(guān)于地址的需求,沒(méi)有限制單次突發(fā)傳輸?shù)拈L(zhǎng)度。
可獲得性
1.4 AXI的工作
AXI規(guī)范描述了單個(gè)AXI主機(jī)和AXI從機(jī)之間的接口,表示相互交換信息的IP核。
1.4.1 AXI4和AXI4-Lite包含5個(gè)獨(dú)立的通道
讀地址通道
讀數(shù)據(jù)通道
寫地址通道
寫數(shù)據(jù)通道
寫響應(yīng)通道
1.4.2 舉例
帶AXI主從接口的IP核如下圖所示:
從機(jī)接口展開如下圖所示:
AXI4操作
讀和寫地址通道是分離的,所以支持雙向同時(shí)傳輸;對(duì)于AXI4,只需知道一個(gè)地址,就可以突發(fā)傳輸256個(gè)字節(jié)的數(shù)據(jù)。
AXI4讀操作示意圖
AXI4寫操作示意圖
主機(jī)設(shè)備通過(guò)寫地址通道發(fā)送寫地址和控制命令–>主機(jī)設(shè)備通過(guò)寫數(shù)據(jù)傳輸數(shù)據(jù)–>從機(jī)設(shè)備通過(guò)寫相應(yīng)通道發(fā)送應(yīng)答
AXI4-Lite操作
與AXI4相似,區(qū)別是,AXI4-Lite只支持單次數(shù)據(jù)的傳輸,不支持突發(fā)傳輸.
AXI4-Stream
定義了一個(gè)單一通道傳輸流數(shù)據(jù),Stream通道模型與AXI4的寫數(shù)據(jù)通道相似,不同的是Stream的突發(fā)傳輸?shù)臄?shù)據(jù)大小是不受限制的
1.4.3 基礎(chǔ)架構(gòu)的IP核
用來(lái)搭建系統(tǒng)的構(gòu)建塊
詳細(xì)內(nèi)容可參考xilinx的手冊(cè)UG1037
例如:
AXI寄存器片
AXI FIFOs
AXI 互聯(lián)IP和AXI Spart互聯(lián)IP
AXI Direct Memory Access(DMA): 實(shí)現(xiàn)Stream數(shù)據(jù)流到存儲(chǔ)器映射的數(shù)據(jù)流的轉(zhuǎn)換
AXI ItertConnect和AXI SmartConnect:這兩個(gè)IP核都用于連接單/多個(gè)存儲(chǔ)器映射的AXI Master和單/多個(gè)存儲(chǔ)器映射的AXI Slave
二、AXI接口詳細(xì)介紹
2.1 AXI的通道定義
每一個(gè)獨(dú)立的通道都包含一組信息信號(hào)、VALID信號(hào)和READY信號(hào),用于提供雙向的握手機(jī)制;
信息源端使用VALID信號(hào)表示當(dāng)前通道地址、數(shù)據(jù)和控制信息什么時(shí)候有效;
目的端使用READY信號(hào)表示什么時(shí)候可以接收信息;
讀數(shù)據(jù)通道和寫數(shù)據(jù)通道都包含一個(gè)LAST信號(hào),用于表示傳輸?shù)淖詈笠粋€(gè)數(shù)據(jù)。
2.1.1 讀和寫數(shù)據(jù)通道
讀數(shù)據(jù)通道和寫數(shù)據(jù)通道都包含各自的地址通道,地址通道攜帶了請(qǐng)求所需的地址和信息。
讀數(shù)據(jù)通道由從機(jī)發(fā)送給主機(jī),包含了讀數(shù)據(jù)和讀響應(yīng)的信息,讀相應(yīng)的信號(hào)用于表示讀傳輸是否操作完成;
寫數(shù)據(jù)通道由主機(jī)發(fā)送給從機(jī),包含了寫數(shù)據(jù),然后通過(guò)WSTRB信號(hào)表示當(dāng)前數(shù)據(jù)的哪個(gè)字節(jié)有效
寫響應(yīng)通道由從機(jī)發(fā)送給主機(jī),包含了寫響應(yīng)信號(hào),用于表示當(dāng)前寫操作是否完成。
2.2 信號(hào)描述(AXI4-Full)
詳細(xì)內(nèi)容可查看文檔:IHI0022D_amba_axi_protocol_spec.pdf
2.2.1 全局信號(hào)
ACLK:所有信號(hào)在全局時(shí)鐘上升沿采樣
ARESETn:低電平有效的復(fù)位
2.2.2 寫地址通道(AXI4-Full)
接口圖片如下所示:
寫地址通道定義的信號(hào)如下圖所示:
(1)AWID:主機(jī)發(fā)送到從機(jī),表示寫地址的ID,指定某些特殊傳輸任務(wù)的順序
(2)AWADDR:寫地址;由主機(jī)發(fā)送;給出突發(fā)傳輸?shù)钠鹗嫉刂?/p>
(3)AWLEN: 突發(fā)長(zhǎng)度,給出突發(fā)傳輸時(shí)的數(shù)據(jù)量。
突發(fā)長(zhǎng)度:自增的突發(fā)模式(INCR)下:Burst_Length=AxLEN[7:0]+1
若給出的突發(fā)長(zhǎng)度為15,則實(shí)際突發(fā)長(zhǎng)度要加1為16
(4) AWSIZE:突發(fā)傳輸?shù)拇笮?br> 突發(fā)傳輸模式下,單次傳輸?shù)臄?shù)據(jù)量
AWLINE和AWSIZE舉例:
(5)AWBURST:突發(fā)類型,從機(jī)根據(jù)突發(fā)類型和大小,計(jì)算后面的數(shù)據(jù)傳輸?shù)侥膫€(gè)地址
固定突發(fā)類型(FIXED):突發(fā)傳輸?shù)乃袛?shù)據(jù)寫到同一個(gè)地址中
自增突發(fā)類型(INCR):在突發(fā)傳輸?shù)臅r(shí)候,地址是進(jìn)行累加的
舉例:增加的值取決于傳輸?shù)臄?shù)據(jù)大小,比如在一次4個(gè)字節(jié)的突發(fā)傳輸中,地址也是每次累加4
回環(huán)突發(fā)(WRAP):與自增突發(fā)模式類似,區(qū)別是:地址累加到達(dá)上限之后,回到較低的地址再進(jìn)行累加
(6)AWLOCK:0的時(shí)候表示正常傳輸,1的時(shí)候表示獨(dú)有傳輸
(7)AWCACHE:存儲(chǔ)器類型
例如:值為0010表示不緩存
(8)AWPROT:保護(hù)類型
該信號(hào)指示傳輸?shù)奶貦?quán)和安全級(jí)別,以及傳輸是數(shù)據(jù)訪問(wèn)還是指令訪問(wèn)。
(9)AWQOS:服務(wù)質(zhì)量
(10)AWREGION:區(qū)域ID
(11)AWUSER:用戶可定義的信號(hào)
(12)AWVALID:寫地址有效;表示當(dāng)前通道的寫地址和控制地址是否有效;(源)發(fā)出方為主機(jī)(Master)
(13)AWREADY:當(dāng)前從機(jī)是否準(zhǔn)備好接收主機(jī)的地址和控制信息;(源)發(fā)出方是從機(jī)(Slave)
(14)AWVALID和AWREADY握手機(jī)制:
AWVALID和AWREADY兩個(gè)信號(hào)同時(shí)拉高,即同時(shí)有效的時(shí)候,主機(jī)才能正式將數(shù)據(jù)寫到從機(jī)
2.2.3 寫數(shù)據(jù)通道
接口圖如下所示:
(1)WID:寫數(shù)據(jù)的ID
(2)WDATA:寫數(shù)據(jù);其所攜帶的信息即為要寫入的數(shù)據(jù)
(3)WSTRB:屏閃信號(hào),指示當(dāng)前的WDATA哪一個(gè)字節(jié)有效(即可以屏蔽不需要寫入的數(shù)據(jù))
(4)WLAST:表示每次突發(fā)傳輸最后一個(gè)數(shù)據(jù)的時(shí)候,拉高一下WLAST信號(hào)
(5)WUSER:用戶自定義的信號(hào)
(6)WVALID:握手機(jī)制,作用于寫地址通道相同
(7)WREADY:握手機(jī)制,作用于寫地址通道相同
2.2.4 寫響應(yīng)通道信號(hào)
(1)BID:寫響應(yīng)ID
(2)BRESP:寫傳輸?shù)臓顟B(tài)(從機(jī)發(fā)送給主機(jī))
OKAY:正常訪問(wèn)成功
EXOKAY:獨(dú)占式存取OK
SLVERR:從機(jī)錯(cuò)誤,從機(jī)已經(jīng)接收到數(shù)據(jù),但出現(xiàn)錯(cuò)誤
DECERR:解碼錯(cuò)誤,互聯(lián)模塊無(wú)法成功譯碼從機(jī)
(3)BUER:用戶自定義
(4)BVALID:握手機(jī)制,從機(jī)發(fā)送給主機(jī)
(5)BREADY: 握手機(jī)制,主機(jī)發(fā)送給從機(jī)
2.2.5 讀地址通道
功能與寫地址類似
ARID、ARADDR、ARLEN、ARSIZE、ARBURST、ARLOCK、ARCACHE、ARPROT、ARQOS、ARREGION、ARUSER、ARVALID、ARREADY
2.2.6 讀數(shù)據(jù)通道
RID
RDATA: 讀數(shù)據(jù)
RRESP:讀響應(yīng)
RLAST:突發(fā)傳輸讀最后一個(gè)數(shù)據(jù)時(shí),拉高
RUSER: 用戶自定義
RVALID: 握手機(jī)制,從機(jī)發(fā)給主機(jī)
RREADY: 握手機(jī)制,主機(jī)發(fā)給從機(jī)
2.3 單一接口介紹
2.3.1 時(shí)鐘和復(fù)位
時(shí)鐘(ACLK):
每個(gè)AXI使用單一時(shí)鐘信號(hào)ACLK。所有輸入的信號(hào)在ACLK的上升沿采樣,所有的輸出的改變必須發(fā)生在ACLK上升沿之后。
復(fù)位(Reset):
(1) 低電平觸發(fā)
(2)復(fù)位的時(shí)候,主機(jī)接口要驅(qū)動(dòng)信號(hào)ARVALID、AWVALID和WVALID 為低電平
(3)復(fù)位的時(shí)候,從機(jī)接口要驅(qū)動(dòng)信號(hào)RVALID和BVALID 為低電平
(4)其他信號(hào)可以為任意值
2.3.2 基本讀寫處理
握手機(jī)制:
(1)所有這5個(gè)通道都通過(guò)相同的VALID/READY握手過(guò)程來(lái)傳輸?shù)刂?、?shù)據(jù)和控制信息。這種雙向握手的機(jī)制意味著主機(jī)和從機(jī)之間在傳輸數(shù)據(jù)時(shí),都可以控制傳輸?shù)乃俾省?br> (2)只有當(dāng)VALID和READY信號(hào)同時(shí)為高電平的時(shí)候,傳輸才會(huì)發(fā)生。
通道握手信號(hào):
每個(gè)通道都有自己的握手信號(hào)對(duì)
舉例:寫地址通道
(1)主機(jī)在地址和控制信號(hào)都有效的時(shí)候拉高AWVALID信號(hào),當(dāng)AWVALID信號(hào)拉高之后,要保持高電平不變,直到在時(shí)鐘上升沿之后從機(jī)拉高AWREADY,此時(shí)AWVALID才可以改變。
(2)當(dāng)主機(jī)在突發(fā)寫傳輸最后一個(gè)數(shù)據(jù)的時(shí)候,WLAST信號(hào)要拉高
各個(gè)通道之間的關(guān)系
寫響應(yīng)必須跟在最后一次寫數(shù)據(jù)傳輸?shù)暮竺妫ㄋ瞧渲械囊徊糠郑?br> 讀數(shù)據(jù)必須跟在讀地址的后面
握手信號(hào)之間的相關(guān)性
單箭頭指向的信號(hào)可以提前或滯后于箭頭的開始進(jìn)行拉高
雙箭頭指向的信號(hào)必須滯后于箭頭的開始進(jìn)行拉高
如下為讀操作握手示意圖,RVALID和RREADY信號(hào)必須滯后于ARVALID和ARREADY進(jìn)行拉高;而ARVALID和ARREADY之間不用管先后拉高順序;RVALID和RREADY之間也不用管先后拉高順序
寫操作握手示意圖:
寫響應(yīng)握手示意圖:
2.4 AXI4-Lite介紹
AXI4-Lite適用于當(dāng)不需要AXI4完整功能的時(shí)候,比如一些簡(jiǎn)單的控制寄存器的讀寫(AXI GPIO、AXI 定時(shí)器、AXI UART)
2.4.1 AXI4-Lite定義
AXI4-Lite操作的關(guān)鍵功能:
(1) 所有傳輸?shù)耐话l(fā)長(zhǎng)度為1
(2) 支持的數(shù)據(jù)總線位寬為32位或64位
(3)所有的訪問(wèn)不能修改且沒(méi)有緩存
(4)不支持獨(dú)占式訪問(wèn)
接口數(shù)量比AXI4少,但是接口含義是相同的
2.5 AXI突發(fā)傳輸時(shí)序圖
2.5.1 AXI突發(fā)讀
AXI突發(fā)讀的時(shí)序圖如下所示:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-708907.html
2.5.2 AXI突發(fā)寫
AXI突發(fā)寫的時(shí)序圖如下所示:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-708907.html
到了這里,關(guān)于FPGA — AXI接口協(xié)議介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!