AXI 總線web
上面介紹了AMBA總線中的兩種,下面看下咱們的主角—AXI,在ZYNQ中有支持三種AXI總線,擁有三種AXI接口,固然用的都是AXI協議。其中三種AXI總線分別爲:緩存
AXI4:(For high-performance memory-mapped requirements.)主要面向高性能地址映射通訊的需求,是面向地址映射的接口,容許最大256輪的數據突發傳輸;微信
AXI4-Lite:(For simple, low-throughput memory-mapped communication )是一個輕量級的地址映射單次傳輸接口,佔用不多的邏輯單元。網絡
AXI4-Stream:(For high-speed streaming data.)面向高速流數據傳輸;去掉了地址項,容許無限制的數據突發傳輸規模。架構
Stream的理解,能夠想象一下水流,是接二連三的,向某一方向,以固定的速度輸送的接口。以咱們看視頻爲例,視頻文件原本是保存在硬盤裏的,怎麼播放呢,不能一會兒把整個文件都顯示到屏幕上,而是以必定速度,接二連三地輸出到屏幕上(每秒若干幀),這個過程就是流Stream接口完成的。app
1、通訊模型ide
圖4‑10 AXI主設備與從設備之間的通訊性能
從上圖很容易看出,要經過AXI總線實現通訊,咱們須要一個主設備/上位機(Master)和一個從設備/下位機(Slave),並經過AXI總線將其相連。咱們能夠將上圖中的主設備假定爲CPU,從設備假定爲RAM(DDR)。主設備和從設備的通訊主要爲了實現主設備對從設備的讀寫控制。字體
那若是多設備經過AXI進行鏈接呢?其實能夠經過AXI Interconnect實現,在Vivado中也有相似的IP可使用。flex
圖4‑11 AXI Interconnect
AXI Interconnect能夠將其簡單地認爲是一個帶仲裁功能的多路選擇器(MUX)。在配置從設備的地址時(Address)時,注意設備地址不能重疊,且地址分配時須要整塊分配,而不是簡單地跟在上個設備分配的地址以後繼續分配。
關於地址分配舉例以下:
圖4‑12 地址分配舉例
如上圖所示,給Slave1分配好地址以後,直接接在Slave1的地址以後給Slave2分配地址是不行的,由於Slave2的地址範圍(Address Range)過大,從0x40001000分配最多隻能分配到0x40001FFF,即最多分配4K,而如今須要分配2G,應將地址偏移(Address Offset)設爲2G的邊界(boundary),即地址偏移+地址範圍=FFFFFFFF,故此時地址偏移應該爲0x80000000。
2、信號說明
首先說AXI4總線和AXI4-Lite總線具備相同的組成部分:
(1)讀地址通道,包含ARVALID, ARADDR, ARREADY信號;
(2)讀數據通道,包含RVALID, RDATA, RREADY, RRESP信號;
(3)寫地址通道,包含AWVALID, AWADDR, AWREADY信號;
(4)寫數據通道,包含WVALID, WDATA, WSTRB, WREADY信號;
(5)寫應答通道,包含BVALID, BRESP, BREADY信號;
(6)系統通道,包含: ACLK, ARESETN信號。
AXI4總線和AXI4-Lite總線的信號也有他的命名特色
讀地址信號都是以AR開頭(A: address; R: read)
寫地址信號都是以AW開頭(A: address; W: write)
讀數據信號都是以R開頭(R: read)
寫數據信號都是以W開頭(W: write)
應答型號都是以B開頭(B: back(answer back))
瞭解到總線的組成部分以及命名特色,那麼在後續的實驗中您將逐漸看到他們的身影。每一個信號的做用暫停不表,放在後面一一介紹。
而AXI4-Stream總線的組成有:
(1) ACLK信號:總線時鐘,上升沿有效;
(2) ARESETN信號:總線復位,低電平有效
(3) TREADY信號:從機告訴主機作好傳輸準備;
(4) TDATA信號:數據,可選寬度32,64,128,256bit
(5) TSTRB信號:每一bit對應TDATA的一個有效字節,寬度爲TDATA/8
(6) TLAST信號:主機告訴從機該次傳輸爲突發傳輸的結尾;
(7) TVALID信號:主機告訴從機數據本次傳輸有效;
(8) TUSER信號 :用戶定義信號,寬度爲128bit。
對於AXI4-Stream總線命名而言,除了總線時鐘和總線復位,其餘的信號線都是以T字母開頭,後面跟上一個有意義的單詞,看清這一點後,能幫助記憶每一個信號線的意義。如TVALID = T+單詞Valid(有效),那麼就應該馬上反應該信號的做用。每一個信號的具體做用,在後面分析源碼時再作分析。
3、各類 AXI 的應用的例子
表4‑11 各類 AXI 的應用的例子
接口 |
行業 |
應用例子 |
AXI4 |
音頻和視頻 / 圖像處理 |
視頻 DMA |
通訊 / 網絡 |
以太網 VoIP 接收器,3GPP LTE 頻道解碼 r |
|
嵌入式處理 |
AXI/PLBV46 橋(爲了向下兼容),ChipScope AXI 監視器 (爲了調試 / 嵌入式系統診斷) |
|
AXI4-Lite |
音頻和視頻 / 圖像處理 |
解交織器,Gamma 校訂,圖像邊緣輕度加強 |
汽車 |
控制器區域網絡 (CAN) |
|
通訊 / 網絡 |
10G 以太網 MAC,數字預失真 (DPD),波峯因數抑制 (CFR) |
|
嵌入式處理 |
硬件 ICAP,BRAM 接口控制器,外部設備控制器 |
|
AXI4-Stream |
音頻和視頻 / 圖像處理 |
流式視頻輸入 / 輸出,圖像降噪 |
通訊 / 網絡 |
編碼器 / 解碼器,交織器 / 解交織器 |
|
DSP |
CORDIC,FFT,FIR 編譯器 |
|
嵌入式處理 |
流 FIFO,以太網外設 |
AXI 接口
三種AXI接口分別是:
AXI-GP接口(4個) :是通用的AXI接口,包括兩個32位主設備接口和兩個32位從設備接口,用過改接口能夠訪問PS中的片內外設。
AXI-HP接口(4個):是高性能/帶寬的標準的接口, PL模塊做爲主設備鏈接(從下圖中箭頭能夠看出)。主要用於PL訪問PS上的存儲器(DDR和On-Chip RAM)
AXI-ACP接口(1個):是ARM多核架構下定義的一種接口,中文翻譯爲加速器一致性端口,用來管理DMA之類的不帶緩存的AXI外設, PS端是Slave接口。
咱們能夠雙擊查看ZYNQ的IP核的內部配置,就能發現上述的三種接口,圖中已用紅色方框標記出來,咱們能夠清楚的看出接口鏈接與總線的走向:
總結以上特色以下表所示:
接口名稱 |
接口描述 |
主機 |
從機 |
M_AXI_GP0 |
通用 (AXI_GP) |
PS |
PL |
M_AXI_GP1 |
PS |
PL |
|
S_AXI_GP0 |
通用 (AXI_GP) |
PL |
PS |
S_AXI_GP1 |
PL |
PS |
|
S_AXI_ACP |
加速器一致性端口 (ACP),cache 一致性回話 |
PL |
PS |
S_AXI_HP0 |
帶有讀 / 寫 FIFO 的高性能端口(AXI_HP) 。( 注意 AXI_HP 接口有時被稱做 AXI Fifo 接口,或 AFI)。 |
PL |
PS |
S_AXI_HP1 |
PL |
PS |
|
S_AXI_HP2 |
PL |
PS |
|
S_AXI_HP3 |
PL |
PS |
注意接口命名的規範(在表 2.2 的第一列)是表示了 PS 的角色的,也就是說,第一個字母 「M」 表示 PS 是主機,而第一個字母 「S」 表示 PS 是從機。
在ZYNQ中,支持AXI-Lite,AXI4和AXI-Stream三種總線,但PS與PL之間的接口卻只支持前兩種,AXI-Stream只能在PL中實現,不能直接和PS相連,必須經過AXI-Lite或AXI4轉接。PS與PL之間的物理接口有9個,包括4個AXI-GP接口和4個AXI-HP接口、1個AXI-ACP接口。
AXI-DMA:實現從PS內存到PL高速傳輸高速通道AXI-HP<---->AXI-Stream的轉換
AXI-FIFO-MM2S:實現從PS內存到PL通用傳輸通道AXI-GP<----->AXI-Stream的轉換
AXI-DataMover:實現從PS內存到PL高速傳輸高速通道AXI-HP<---->AXI-Stream的轉換,只不過此次是徹底由PL控制的,PS是徹底被動的。
AXI-VDMA:實現從PS內存到PL高速傳輸高速通道AXI-HP<---->AXI-Stream的轉換,只不過是專門針對視頻、圖像等二維數據的。
除了上面的還有一個AXI-CDMA IP核,這個是由PL完成的將數據從內存的一個位置搬移到另外一個位置,無需CPU來插手。
上面的IP是完成總線協議轉換,若是須要作某些處理(如變換、迭代、訓練……),則須要生成一個自定義Stream類型IP,與上面的Stream接口鏈接起來,實現數據輸入輸出。用戶的功能在自定義Stream類型IP中實現。
oAXI 協議
講到協議不可能說是撇開總線單講協議,由於協議的制定也是要創建在總線構成之上的。雖說AXI4, AXI4-Lite, AXI4-Stream都是AXI4協議,可是各自細節上仍是不一樣的。
總的來講, AXI總線協議的兩端能夠分爲分爲主(master)、從(slave)兩端,他們之間通常須要經過一個AXI Interconnect相鏈接,做用是提供將一個或多個AXI主設備鏈接到一個或多個AXI從設備的一種交換機制。當咱們添加了zynq以及帶AXI的IP後再進行自動連線時vivado會自動幫咱們添加上這個IP,你們應該是不陌生了。
AXI Interconnect的主要做用是,當存在多個主機以及從機器時, AXI Interconnect負責將它們聯繫並管理起來。因爲AXI支持亂序發送,亂序發送須要主機的ID信號支撐,而不一樣的主機發送的ID可能相同,而AXI Interconnect解決了這一問題,他會對不一樣主機的ID信號進行處理讓ID變得惟一。
AXI協議將讀地址通道,讀數據通道,寫地址通道,寫數據通道,寫響應通道分開,各自通道都有本身的握手協議。每一個通道互不干擾卻又彼此依賴。這也是AXI高效的緣由之一。
AXI 協議之握手協議
AXI4 所採用的是一種 READY, VALID 握手通訊機制,簡單來講主從雙方進行數據通訊前,有一個握手的過程。 傳輸源產生 VLAID 信號來指明什麼時候數據或控制信息有效。而目地源產生 READY 信號來指明已經準備好接受數據或控制信息。傳輸發生在 VALID和 READY 信號同時爲高的時候。 VALID 和 READY 信號的出現有三種關係。
AXI4和AXi4-stream都支持三種握手機制,但其具體的總線結構是不一樣的,詳情在後文中會介紹。這三種握手機制分別是:
(1) VALID 先變高 READY 後變高。時序圖以下:
上圖中的模式爲VALID信號先於READY信號拉高,此時數據在VALID信號和READY信號爲高時,在時鐘上升沿觸發,開始傳輸在箭頭處發生。
(2) READY 先變高 VALID 後變高。時序圖以下:
上圖中的模式爲READY信號先於VALID信號拉高,此時數據在VALID信號和READY信號爲高時,在時鐘上升沿觸發,一樣在箭頭處信息傳輸發生。
(3) VALID 和 READY 信號同時變高。時序圖以下:
上圖中的模式爲READY信號伴隨着VALID信號拉高,此時數據在VALID信號和READY信號爲高時,在時鐘上升沿觸發。在這種狀況下,信息傳輸立馬發生,如圖箭頭處指明信息傳輸發生。
須要強調的是, AXI的五個通道,每一個通道都有握手機制。
3、突發式讀寫
一、突發式讀的時序圖以下
按照傳統的RAM的讀寫方式,給定一個Address,只能讀取或者寫入一個Data,可是在Burst模式下,給定一個Address,能夠連續寫入或者讀取多組數據。
當地址出如今地址總線後,傳輸的數據將出如今讀數據通道上。設備保持 VALID 爲低直到讀數據有效。爲了代表一次突發式讀寫的完成,設備用 RLAST 信號來表示最後一個被傳輸的數據。
二、 突發式寫時序圖以下:
OVER
-END-
上面連接失效或者羣滿200人
NOW現在行動!
推薦閱讀
AXI總線詳解-總線、接口以及協議
AXI協議詳解-AMBA總線協議AHB、APB、AXI對比分析
點擊上方字體便可跳轉閱讀喲
本文分享自微信公衆號 - OpenFPGA(OpenFPGA)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。