0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

AXI總線知識點快速學(xué)習(xí)

FPGA設(shè)計論壇 ? 來源:FPGA設(shè)計論壇 ? 作者:FPGA設(shè)計論壇 ? 2022-03-14 14:13 ? 次閱讀

一、AXI簡介

AXI——Advanced eXtensible Interface,直譯過來就是先進(jìn)的可擴(kuò)展接口,是由ARM公司提出的,是一種高性能、高帶寬、低延遲的片內(nèi)總線。FPGA工程師會發(fā)現(xiàn)其大量運(yùn)用于FPGA設(shè)計中,Vivado中的接口類IP全部都配有AXI接口,可見其重要性。AXI包括AXI、AXI-Lite(輕量級、簡化級)和AXI-Stream(Xilinx特有的高速數(shù)據(jù)流傳輸模式),其官方標(biāo)準(zhǔn)文檔我已經(jīng)上傳,下載鏈接在這里,官方標(biāo)準(zhǔn)文檔不建議從頭看到尾,只需必要時查詢使用。

AXI是多Master和多Slave的拓?fù)浣Y(jié)構(gòu),如下圖所示:

f5d4d2ca-a22a-11ec-952b-dac502259ad0.jpg

圖1 AXI的拓?fù)浣Y(jié)構(gòu)

中間的Interconnect是指的AXI交換設(shè)備。上圖需要特別注意的是,我們在設(shè)計過程中,有時同一個設(shè)備既可以作為Master,也可以作為Slave。

二、AXI總線的信號描述

AXI總線使用基于VALID/READY握手機(jī)制的數(shù)據(jù)傳輸協(xié)議,這是什么意思呢?就是無論是Master端,還是Slave端,要傳輸任何內(nèi)容必須要確認(rèn)對方給出了READY有效(不一定有效之后才傳輸,但是一定要等到有效,后面會有解釋),且無論傳輸給對方的是數(shù)據(jù)還是地址,是控制信號還是狀態(tài)信號,都要在VALID有效時進(jìn)行傳輸。

1、AXI總線的通道和信號(AXI和AXI-Lite)

AXI總線一共分為6大通道,對于AXI和AXI-Lite,一般傳輸?shù)男盘柧€如下列出,對于AXI-Stream,后面單獨(dú)討論,對于猝發(fā)傳輸,會多幾根信號線,也放在后面單獨(dú)討論。

(1)讀地址通道,包含ARVALID, ARADDR, ARREADY信號。

(2)讀數(shù)據(jù)通道,包含RVALID, RDATA, RREADY, RRESP信號。

(3)寫地址通道,包含AWVALID,AWADDR, AWREADY信號。

(4)寫數(shù)據(jù)通道,包含WVALID, WDATA,WSTRB, WREADY信號。

(5)寫應(yīng)答通道,包含BVALID, BRESP, BREADY信號。

(6)系統(tǒng)通道,包含ACLK,ARESETN信號。

可以看出,除了系統(tǒng)通道之外,每個通道都有VALID和READY。對于每個通道的信號名稱,可以得到這樣的一個規(guī)律:在前面加上一個字母R,表示讀通道,加上一個字母W,表示寫通道,加上一個字母B,表示應(yīng)答通道(因為是VALID/READY機(jī)制,所以應(yīng)答通道必然是寫應(yīng)答,表示寫操作成功了,為什么沒有讀應(yīng)答?讀者請自己思考。),對于讀通道和寫通道,再在前面加上一個字母A表示地址通道,如果不加就是數(shù)據(jù)通道。根據(jù)這樣的命名規(guī)律,大部分的信號線的意思就十分明白了,只有下面兩種信號線需要說明。

RESP——表示Slave發(fā)出響應(yīng)(response),其中BRESP是從設(shè)備發(fā)出的寫響應(yīng),表示寫操作的狀態(tài),RRESP是從設(shè)備發(fā)出的讀響應(yīng),表示讀操作的狀態(tài),這兩個信號都是2位的,從00-11分別表示OKAY,EXOKAY,SLVERR,DECERR,一般情況下都是00,表示OKAY,就是說訪問成功。EXOKAY是單獨(dú)訪問(exclusive)成功的意思,單獨(dú)訪問是AXI總線的一種訪問模式,只允許一個Master對一個Slave進(jìn)行訪問。SLVERR表示訪問錯誤,這時Master的地址和命令是已經(jīng)給到了Slave了,但是Slave返回一個錯誤信息給Master。DECERR表示解碼(decode)錯誤,其實是地址解碼錯誤的意思,Master發(fā)出的訪問地址如果不能被識別,則會由中間的交換設(shè)備Interconnect返回DECERR給Master。

WSTRB——寫數(shù)據(jù)段有效,其每一位對應(yīng)WDATA中的8位(1字節(jié)),用于標(biāo)識對應(yīng)字節(jié)是否有效,WSTRB的第0位為1表示W(wǎng)DATA的低8位有效,第1位為1表示W(wǎng)DATA的次低8位有效,以此類推。

AXI總線的R/WDATA的位寬可以選擇32、64、128和256,一般32和64就滿足于大部分設(shè)計了。當(dāng)然,對于不同的數(shù)據(jù)位寬n,WSTRB的位寬是n/8。

2、AXI-Stream的信號和波形

可以不管這個小節(jié)直接跳到第三節(jié)。AXI4-Stream去掉了地址項,在這種模式下,其實就是簡單的從Master發(fā)送數(shù)據(jù)到Slave,中間不經(jīng)過交換設(shè)備,我認(rèn)為就相當(dāng)于一般的帶著有效使能信號的大量數(shù)據(jù)傳輸,和AXI的理念相去甚遠(yuǎn)。除時鐘和復(fù)位外,信號的命名規(guī)則以T開頭,如下所示。

(1)TREADY信號:Slave告訴Master做好傳輸準(zhǔn)備。

(2)TDATA信號:傳輸數(shù)據(jù),可選寬度32、64、128、256bit。

(3)TSTRB信號:每一bit對應(yīng)TDATA的一個有效字節(jié),寬度為TDATA/8。

(4)TLAST信號:Master告訴Slave傳輸數(shù)據(jù)的結(jié)尾。

(5)TVALID信號:Master輸出的傳輸有效使能。

(6)TUSER信號 :用戶定義信號,寬度為128bit,一般用來給傳輸計數(shù)。

傳輸波形如下圖所示,我個人認(rèn)為就像使用FIFO存取數(shù)據(jù)的那種波形,AXI-Stream的傳輸波形比AXI和AXI-Lite都簡單,后面不再討論這個模式。

f5e9c5ae-a22a-11ec-952b-dac502259ad0.jpg

圖2 AXI-Stream傳輸波形

三、AXI總線的數(shù)據(jù)傳輸過程

一般情況下,AXI-Lite用于配置寄存器和低速數(shù)據(jù)傳輸,AXI用于大量數(shù)據(jù)高速傳輸,所以AXI-Lite一般不支持猝發(fā)傳輸(也叫突發(fā)式傳輸,burst傳輸,即一次命令傳輸大量數(shù)據(jù)),所以下面分為猝發(fā)和非猝發(fā)來討論。

1、非猝發(fā)傳輸

讀操作握手過程如下圖所示:

f5fce936-a22a-11ec-952b-dac502259ad0.jpg

圖3 AXI讀操作握手過程

圖3是一個比較好理解的圖,但是實際的FPGA仿真波形中不是按這個圖的上下順序給出的信號,下面給出實際仿真的波形。

f60f4e0a-a22a-11ec-952b-dac502259ad0.jpg

圖4 AXI讀操作實際波形

從上圖可以看出在FPGA內(nèi)部,過程是這樣子的:

1、主設(shè)備有效ARVALID,這個時候必須保證ARADDR已經(jīng)有效,表示主設(shè)備已經(jīng)準(zhǔn)備好地址,等待從設(shè)備響應(yīng)。

2、從設(shè)備有效ARREADY,表示從設(shè)備已將接收地址和相關(guān)的控制信號鎖存,告訴主設(shè)備不需要再維持這個讀地址了,之后主設(shè)備可以把ARVALID拉低。

3、從設(shè)備有效RVALID,表示讀數(shù)據(jù)可用,這個時候必須保證讀數(shù)據(jù)RDATA已經(jīng)有效,主設(shè)備監(jiān)控該信號有效就可以讀取數(shù)據(jù)了。

4、這時由于RRESP為0也表示讀取數(shù)據(jù)正確,主設(shè)備則有效RREADY,表示主設(shè)備讀操作完成,從設(shè)備這時可以拉低RVALID了。

為什么握手過程圖和實際仿真波形會有差異?這時需要查閱標(biāo)準(zhǔn)文檔,在標(biāo)準(zhǔn)文檔中第三章有一個信號依賴關(guān)系圖可以說明這個問題。

f625eee4-a22a-11ec-952b-dac502259ad0.png

圖5 AXI讀操作信號依賴關(guān)系

上圖中一個箭頭表示弱依賴關(guān)系,兩個箭頭表示強(qiáng)依賴關(guān)系。

從設(shè)備可以在ARVALID有效之后再給出ARREADY,也可以先給出ARREADY,再等待ARVALID有效。

從設(shè)備必須等待ARVALID和ARREADY都有效才能給出RVALID,并且同時開始給出數(shù)據(jù)傳輸。

主設(shè)備可以在RVALID有效之后再給出RREADY,也可以先給出RREADY,再等待RVALID有效。

寫操作握手過程如下圖所示:

f648f984-a22a-11ec-952b-dac502259ad0.jpg

圖6 AXI寫操作握手過程

同樣的,實際的寫操作的波形和這個過程圖是有差異的。

f6591350-a22a-11ec-952b-dac502259ad0.jpg

圖7 AXI寫操作實際波形

這個過程的描述如下:

1、主設(shè)備有效AWVALID和WVALID,這個時候主設(shè)備的AWADDR和WDATA必須確保也已經(jīng)有效,這兩個信號不一定同時有效,但我根據(jù)經(jīng)驗發(fā)現(xiàn)一般情況下都表現(xiàn)為同時有效。表示主設(shè)備已經(jīng)把地址和數(shù)據(jù)準(zhǔn)備好了,等待從設(shè)備的AWREADY和WREADY。

2、從設(shè)備有效AWREADY和WREADY,這兩個信號不一定同時有效。表示從設(shè)備已經(jīng)準(zhǔn)備好接收地址和數(shù)據(jù),同時告訴主設(shè)備可以拉低AWVALID和WVALID了。

3、從設(shè)備有效BVALID,表示從設(shè)備已經(jīng)完成了在指定地址接收數(shù)據(jù)的操作。這個信號雖然大多數(shù)情況下會先于BREADY拉高,但是允許其在BREADY之后拉高,也就是說BVALID和BREADY嚴(yán)格意義上講并沒有先后順序,誰先完成誰先有效,并且拉高時和拉高之后就監(jiān)控對方是否已經(jīng)也拉高了,如果對方拉高,則己方在下一個時鐘節(jié)拍拉低。

4、主設(shè)備有效BREADY,表示主設(shè)備已經(jīng)完成了其余工作,此時可以接收來自從設(shè)備的BVALID,由于大多數(shù)情況下BVALID已經(jīng)拉高,此時主設(shè)備拉高這個信號也是為了告訴從設(shè)備可以拉低BVALID了。

和讀操作類似,寫操作的信號依賴關(guān)系圖如下。

f67b2cb0-a22a-11ec-952b-dac502259ad0.jpg

圖8 AXI寫操作信號依賴關(guān)系

主設(shè)備不一定得等待AWREADY或WREADY有效后再給出AWVALID或WVLAID。

從設(shè)備可以等待AWVALID或WVALID有效或者兩個都有效之后再給出AWREADY,也可以不用等待這兩個信號有效就給出AWREADY。

從設(shè)備可以等待AWVALID或WVALID有效或者兩個都有效之后再給出WREADY,也可以不用等待這兩個信號有效就給出WREADY。

從設(shè)備必須等待WVALID和WREADY都有效之后,才能給出BVALID,這里需要注意的是對于猝發(fā)傳輸,從設(shè)備除了要等待前面兩個信號有效之外還要等待WLAST有效之后才能給出BVALID。

主設(shè)備可以等待BVALID有效之后再給出BREADY,也可以不用等待BVALID有效直接給出BREADY。

信號依賴關(guān)系是不是有點暈,其實不用記這么多,在使用過程中看實際波形就可以了。

2、猝發(fā)傳輸(Burst傳輸)

AXI總線的最大特點就是其猝發(fā)傳輸(一次命令多個數(shù)據(jù)的傳輸形式),猝發(fā)傳輸時比上面的情況多了幾根信號線,猝發(fā)傳輸?shù)钠鹗嫉刂纷詈靡?KB對齊。猝發(fā)傳輸?shù)倪^程以事務(wù)為單位,分為讀命令事務(wù)、寫命令事務(wù)、讀數(shù)據(jù)事務(wù)、寫數(shù)據(jù)事務(wù)、寫應(yīng)答事務(wù),分別對應(yīng)上面的5個通道。以下是我個人的理解:AXI總線的這種將總線操作分解為事務(wù)的特點和PCI、PCIE相類似,分解成事務(wù)之后,所謂的"總線"這個概念其實就是某種“協(xié)議”,所謂的總線的管理過程就是事務(wù)的轉(zhuǎn)發(fā)過程,其實沒有什么看得見摸得著的“總線”,本質(zhì)就是滿足特定協(xié)議的一堆接口以及中間的交換設(shè)備,這是所有高速總線的一大特點。下面兩圖大概說明了猝發(fā)傳輸?shù)倪^程。

f68f2d1e-a22a-11ec-952b-dac502259ad0.jpg

圖9 AXI讀猝發(fā)

f6a5c5ba-a22a-11ec-952b-dac502259ad0.jpg

圖10 AXI寫猝發(fā)

從上面兩圖,套用事務(wù)的概念,可以看出,對于讀操作的過程,事務(wù)的順序就是讀命令事務(wù)—>讀數(shù)據(jù)事務(wù),對于寫操作的過程,事務(wù)的順序就是寫命令事務(wù)—>寫數(shù)據(jù)事務(wù)—>寫應(yīng)答事務(wù)。

除了第二節(jié)中的6個通道包含的信號線以外的AXI信號線如下。

讀/寫地址通道:

猝發(fā)傳輸相關(guān)的信號線:

ARLEN/AWLEN:猝發(fā)傳輸?shù)拈L度。此長度決定本次猝發(fā)傳輸?shù)臄?shù)據(jù)的個數(shù),每個數(shù)據(jù)的大小以下面的SIZE決定,為0表示傳輸1個數(shù)據(jù),為1表示傳輸2個數(shù)據(jù),以此類推。

ARSIZE/AWSIZE:猝發(fā)傳輸?shù)拇笮?,?表示取低8位,即數(shù)據(jù)大小為1byte,為1表示取低16位,即數(shù)據(jù)大小為2byte,以此類推,這個數(shù)值不能超過總線位寬所決定的最大byte數(shù)。

ARBURST/AWBURST:猝發(fā)傳輸?shù)念愋停ㄗ?)。

其他不常用的信號線:

ARLOCK/AWLOCK:鎖類型。原子操作相關(guān)(注2),初學(xué)者不用考慮,一般為0。

ARCACHE/AWCACHE:用于描述存儲類型。AXI總線支持訪問多種類型的存儲設(shè)備,一般不用考慮,由IP核自動填寫,存儲器類型見圖11。

ARPROT/AWPROT:保護(hù)類型,指明訪問優(yōu)先級、是否采用安全訪問等信息,初學(xué)者不用考慮,一般為0。

讀/寫數(shù)據(jù)通道:

RLAST/WLAST:指示猝發(fā)傳輸?shù)淖詈笠粋€數(shù)據(jù),不一定是一個節(jié)拍,但是一定是在本次需要傳輸?shù)淖詈笠粋€數(shù)據(jù)有效時才有效,如果其從有效變到無效,說明本次傳輸已經(jīng)完成。

讀/寫/地址/數(shù)據(jù)/應(yīng)答通道的ID信號線:

ARID/AWID:地址ID,交換設(shè)備轉(zhuǎn)發(fā)事務(wù)的標(biāo)記。

WID/RID/BID:與前面的ARID/AWID保持一致。

f6c0a038-a22a-11ec-952b-dac502259ad0.jpg

圖11 AXI存儲類型指示信號的含義

注1:

AXI協(xié)議用ARBURST/AWBURST[1:0]信號線定義了三種猝發(fā)傳輸?shù)念愋停汗潭ㄊ剑‵IXED,00)、遞增式(INCR,01)、回卷式(WRAP,10)。

(1)固定式是指地址是固定的,每一次傳輸?shù)牡刂范疾蛔儭_@樣的猝發(fā)傳輸是重復(fù)地對一個固定的位置進(jìn)行存取,例如FIFO。

(2)遞增式是指每一次讀寫的地址都比上一次的地址增加一個固定的值,就是通常的順序存儲器,這是最常見的猝發(fā)傳輸形式。

(3)回卷式跟遞增式類似,當(dāng)?shù)刂愤f增到邊界時,自動返回到起始地址(起始地址必須按ARSIZE/AWSIZE對齊,猝發(fā)長度只能是2、4、8、16)。

注2:

原子操作是不可分割的,在執(zhí)行完畢之前不會被任何其它任務(wù)或事件中斷。一般在單處理系統(tǒng)中的單條指令中可完成的操作都認(rèn)為是原子操作。

AXI是一個比較復(fù)雜的協(xié)議,猝發(fā)傳輸時不一定是一次完成之后再進(jìn)行下一次,經(jīng)常會出現(xiàn)重疊式猝發(fā),即同時給出兩次以上的命令事務(wù),之后才進(jìn)行數(shù)據(jù)事務(wù),或者第一次數(shù)據(jù)事務(wù)還沒有完成就給出第二次的命令事務(wù)。此外還有窄帶傳輸和不對齊傳輸,我就不講了,新手只需掌握非猝發(fā)時的AXI握手規(guī)則,看懂仿真波形就可以了。在FPGA設(shè)計中,對于復(fù)雜程度比較高的協(xié)議我們通常是利用官方IP核,AXI的猝發(fā)傳輸只需大概看懂波形就可以了,有興趣可以深究,對于學(xué)習(xí)其他高速接口很有幫助。

下圖是我截取的一段AXI重疊式猝發(fā)寫的波形圖供大家參考,圖中Master連續(xù)給了兩次寫命令事務(wù)。

f6d5984e-a22a-11ec-952b-dac502259ad0.jpg

圖12 AXI的burst寫操作的波形

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2817

    瀏覽量

    87697
  • AXI
    AXI
    +關(guān)注

    關(guān)注

    1

    文章

    127

    瀏覽量

    16510

原文標(biāo)題:FPGA學(xué)習(xí)-AXI總線知識點快速學(xué)習(xí)

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    單片機(jī)學(xué)習(xí)知識點全攻略(完結(jié)篇)

    導(dǎo)語:本期是本次單片機(jī)學(xué)習(xí)知識點的最終回,我們會列出前三回一起方便讀者回顧學(xué)習(xí)。本次主要知識點為單片機(jī)串口通信、接口和實際案例實踐——單片機(jī)音樂程序設(shè)計的
    發(fā)表于 06-21 16:19 ?2.9w次閱讀
    單片機(jī)<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>知識點</b>全攻略(完結(jié)篇)

    學(xué)習(xí)STM32H7的必備知識點是什么

    學(xué)習(xí)STM32H7的必備知識點是什么
    發(fā)表于 11-23 06:44

    IIC總線知識點匯總,不看肯定后悔

    IIC總線知識點匯總,不看肯定后悔
    發(fā)表于 11-23 07:10

    IIC通信總線尋址的知識點分享,絕對實用

    IIC通信總線尋址的知識點分享,絕對實用
    發(fā)表于 02-07 07:47

    AMBA AXI總線學(xué)習(xí)筆記

    AMBA AXI 總線學(xué)習(xí)筆記,非常詳細(xì)的AXI總線操作說明
    發(fā)表于 11-11 16:49 ?11次下載

    高一數(shù)學(xué)知識點總結(jié)

    高一數(shù)學(xué)知識點總結(jié)高一數(shù)學(xué)知識點總結(jié)高一數(shù)學(xué)知識點總結(jié)
    發(fā)表于 02-23 15:27 ?0次下載

    高二數(shù)學(xué)知識點總結(jié)

    高二數(shù)學(xué)知識點總結(jié)高二數(shù)學(xué)知識點總結(jié)高二數(shù)學(xué)知識點總結(jié)
    發(fā)表于 02-23 15:27 ?0次下載

    PWM知識點詳解

    PWM知識點
    發(fā)表于 03-16 08:00 ?44次下載

    PHP基礎(chǔ)學(xué)習(xí)知識點匯總免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是PHP基礎(chǔ)學(xué)習(xí)知識點匯總免費(fèi)下載。
    發(fā)表于 04-24 16:45 ?6次下載
    PHP基礎(chǔ)<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>知識點</b>匯總免費(fèi)下載

    C語言學(xué)習(xí)入門知識點/干貨

    C語言知識點總結(jié)
    的頭像 發(fā)表于 07-18 17:54 ?5801次閱讀
    C語言<b class='flag-5'>學(xué)習(xí)</b>入門<b class='flag-5'>知識點</b>/干貨

    嵌入式知識點總結(jié)

    嵌入式知識點總結(jié)(arm嵌入式開發(fā)led過程)-嵌入式知識點總結(jié)? ? ? ? ? ? ? ? ? ??
    發(fā)表于 07-30 14:20 ?23次下載
    嵌入式<b class='flag-5'>知識點</b>總結(jié)

    17個PCB布局的知識點

    這17個PCB布局的知識點,共同學(xué)習(xí),共同進(jìn)步。
    發(fā)表于 07-10 10:08 ?0次下載

    AXI總線協(xié)議的簡單知識

    關(guān)于AXI總線協(xié)議的一些簡單知識,通過閱讀Xilinx的使用指導(dǎo)手冊(UG1037),結(jié)合正點原子的ZYNQ視頻進(jìn)行梳理總結(jié)。
    的頭像 發(fā)表于 07-15 09:16 ?2691次閱讀

    高速電路設(shè)計常見的知識點

    為了方便初次接觸高速信號的朋友們能快速入門,并應(yīng)用到實際的電路設(shè)計中。作者特地整理了高速電路設(shè)計中常見的一些知識點,具有較強(qiáng)的工程性、實用性,能直接應(yīng)用到嵌入式硬件、手機(jī)等設(shè)計中。(有關(guān)詳細(xì)的知識點,持續(xù)關(guān)注信號完整性基礎(chǔ)的更新
    的頭像 發(fā)表于 02-13 11:00 ?1279次閱讀

    數(shù)字電路知識點總結(jié)

    本文整理了數(shù)字電路課程中的相關(guān)基本的知識點和較為重要的知識點,用于求職的數(shù)電部分的知識準(zhǔn)備,差缺補(bǔ)漏。
    的頭像 發(fā)表于 05-30 15:07 ?4227次閱讀
    數(shù)字電路<b class='flag-5'>知識點</b>總結(jié)