前言
本文針對(duì)秋招面試高頻問(wèn)題: AXI總線進(jìn)行總結(jié)學(xué)習(xí);
1.簡(jiǎn)介
AXI是個(gè)什么東西呢,它其實(shí)不屬于Zynq,不屬于Xilinx,而是屬于ARM。它是ARM最新的總線接口,以前叫做AMBA,從3.0以后就稱為AXI了。
AXI(Advanced eXtensible Interface)是一種總線協(xié)議,該協(xié)議是ARM公司提出的AMBA3.0中最重要的部分,是一種面向高性能、高帶寬、低延遲的片內(nèi)總線。AMBA4.0將其修改升級(jí)為AXI4.0。AMBA4 包括AXI4、AXI4-lite、ACE4、AXI4-stream。
AXI4:(For high-performance memory-mapped requirements.)主要面向高性能地址映射通信的需求,是面向地址映射的接口,允許最大256輪的數(shù)據(jù)突發(fā)傳輸;
AXI4-Lite:(For simple, low-throughput memory-mapped communication )是一個(gè)輕量級(jí)的地址映射單次傳輸接口,占用很少的邏輯單元。
AXI4-Stream:(For high-speed streaming data.)面向高速流數(shù)據(jù)傳輸;去掉了地址項(xiàng),允許無(wú)限制的數(shù)據(jù)突發(fā)傳輸規(guī)模。
1.1 AXI協(xié)議特點(diǎn)
AMBA AXI協(xié)議支持支持高性能、高頻率系統(tǒng)設(shè)計(jì);
適合高帶寬低延時(shí)設(shè)計(jì)
無(wú)需復(fù)雜的橋就能實(shí)現(xiàn)高頻操作
能滿足大部分器件的接口要求
適合高初始延時(shí)的存儲(chǔ)控制器
提供互聯(lián)架構(gòu)的靈活性與獨(dú)立性
向下兼容已有的AHB和APB接口關(guān)鍵特點(diǎn)
分離的地址/控制、數(shù)據(jù)相位
使用字節(jié)選通,支持非對(duì)齊的數(shù)據(jù)傳輸
基于burst傳輸,只需傳輸首地址
讀、寫數(shù)據(jù)通道分離,能提供低功耗DMA
支持多種尋址方式
支持亂序傳輸
易于添加寄存器級(jí)來(lái)進(jìn)行時(shí)序收斂
支持outstanding AXI可以連續(xù)發(fā)送多個(gè)突發(fā)傳輸?shù)氖椎刂范鵁o(wú)需等待之前的突發(fā)傳輸完成,這有助于流水處理transaction
1.2 AXI讀寫架構(gòu)
AXI協(xié)議是基于burst的傳輸,并且定義了以下5個(gè)獨(dú)立的傳輸通道:讀地址通道、讀數(shù)據(jù)通道、寫地址通道、寫數(shù)據(jù)通道、寫響應(yīng)通道。 地址通道攜帶控制消息,用于描述被傳輸?shù)臄?shù)據(jù)屬性;數(shù)據(jù)傳輸使用寫通道來(lái)實(shí)現(xiàn)master到slave的傳輸,slave使用寫響應(yīng)通道來(lái)完成一次寫傳輸;讀通道用來(lái)實(shí)現(xiàn)數(shù)據(jù)從slave到master的傳輸。
讀架構(gòu)
寫架構(gòu)
AXI使用基于VALID/READY的握手機(jī)制數(shù)據(jù)傳輸協(xié)議;傳輸源端使用VALID表明地址/控制信號(hào)、數(shù)據(jù)是有效的;目的端使用READY表明自己能夠接受信息 ;讀/寫地址通道:讀、寫傳輸每個(gè)都有自己的地址通道,對(duì)應(yīng)的地址通道承載著對(duì)應(yīng)傳輸?shù)牡刂房刂菩畔ⅲ?/p>
讀數(shù)據(jù)通道:讀數(shù)據(jù)通道承載著讀數(shù)據(jù)和讀響應(yīng)信號(hào)包括數(shù)據(jù)總線(8/16/32/64/128/256/512/1024 bit)和指示讀傳輸完成的讀響應(yīng)信號(hào);
寫數(shù)據(jù)通道:寫數(shù)據(jù)通道的數(shù)據(jù)信息被認(rèn)為是緩沖了的,master無(wú)需等待slave對(duì)上次寫傳輸?shù)拇_認(rèn)即可發(fā)起一次新的寫傳輸。寫通道包括數(shù)據(jù)總線(8/16/32/64/128/256/512/1024 bit)和字節(jié)線(用于指示8 bit 數(shù)據(jù)信號(hào)的有效性);
寫響應(yīng)通道:slave使用寫響應(yīng)通道對(duì)寫傳輸進(jìn)行響應(yīng)。所有的寫傳輸需要寫響應(yīng)通道的完成信號(hào);
通道名稱通道功能數(shù)據(jù)流向
read address讀地址通道主機(jī)-》從機(jī)
read data讀數(shù)據(jù)通道(包括數(shù)據(jù)通道和讀響應(yīng)通道)從機(jī)-》主機(jī)
write address寫地址通道主機(jī)-》從機(jī)
write data寫數(shù)據(jù)通道(包括數(shù)據(jù)通道和每8bit一個(gè)byte的寫數(shù)據(jù)有效信號(hào))主機(jī)-》從機(jī)
write response寫響應(yīng)通道從機(jī)-》主機(jī)
1.3 接口和互聯(lián)
AXI協(xié)議提供單一的接口定義,用在下述三種接口之間:master/interconnect、slave/interconnect、master/slave??梢允褂靡韵聨追N典型的系統(tǒng)拓?fù)浼軜?gòu):
共享地址與數(shù)據(jù)總線
共享地址總線,多數(shù)據(jù)總線
multilayer多層,多地址總線,多數(shù)據(jù)總線
在大多數(shù)系統(tǒng)中,地址通道的帶寬要求沒(méi)有數(shù)據(jù)通道高,因此可以使用共享地址總線,多數(shù)據(jù)總線結(jié)構(gòu)來(lái)對(duì)系統(tǒng)性能和互聯(lián)復(fù)雜度進(jìn)行平衡;
寄存器片(Register Slices):每個(gè)AXI通道使用單一方向傳輸信息,并且各個(gè)通道直接沒(méi)有任何固定關(guān)系。因此可以可以在任何通道任何點(diǎn)插入寄存器片,當(dāng)然這會(huì)導(dǎo)致額外的周期延遲。
使用寄存器片可以實(shí)現(xiàn)周期延遲(cycles of latency)和最大操作頻率的折中;
使用寄存器片可以分割低速外設(shè)的長(zhǎng)路徑;
2.信號(hào)描述
信號(hào)名來(lái)源描述
ACLKsystem clock全局時(shí)鐘信號(hào)
ARESTnsystem reset全局復(fù)位信號(hào),低有效
全局信號(hào)
信號(hào)名來(lái)源描述
AWIDmaster寫地址ID(用于區(qū)分該地址屬于哪個(gè)寫地址組)
AWADDRmaster寫地址
AWLENmaster突發(fā)長(zhǎng)度
AWSIZEmaster突發(fā)尺寸(每次突發(fā)傳輸?shù)淖铋L(zhǎng)byte數(shù))
AWBURSTmaster突發(fā)方式(FIXED,INCR,WRAP)
AWCACHEmaster存儲(chǔ)類型(標(biāo)記系統(tǒng)需要的傳輸類型)
AWPROTmaster保護(hù)模式
AWQOSmasterQoS標(biāo)識(shí)符
AWREGIONmasterregion標(biāo)識(shí)符(當(dāng)slave有多種邏輯接口時(shí)標(biāo)識(shí)使用的邏輯接口)
AWUSERmaster用戶自定義信號(hào)
AWVALIDmaster寫地址有效信號(hào)(有效時(shí)表示AWADDR上地址有效)
AWREADYmaster寫從機(jī)就緒信號(hào)(有效時(shí)表示從機(jī)準(zhǔn)備好接收地址)
寫地址通道信號(hào)
信號(hào)名來(lái)源描述
WDATAmaster寫數(shù)據(jù)
WSTRBmaster數(shù)據(jù)段有效(標(biāo)記寫數(shù)據(jù)中哪幾個(gè)8位字段有效)
WLASTmasterlast信號(hào)(有效時(shí)表示當(dāng)前為突發(fā)傳輸最后一個(gè)數(shù)據(jù))
WUSERmaster用戶自定義信號(hào)
WVALIDmaster寫有效信號(hào)(有效時(shí)表示W(wǎng)DATA上數(shù)據(jù)有效)
WREADYslave寫ready信號(hào)(有效時(shí)表示從機(jī)準(zhǔn)備好接收數(shù)據(jù))
寫數(shù)據(jù)通道信號(hào)
信號(hào)名來(lái)源描述
BIDslave響應(yīng)ID
BRESPslave寫響應(yīng)
BUSERslave用戶自定義信號(hào)
BVALIDslave寫響應(yīng)信號(hào)有效
BREADYmaster寫響應(yīng)ready(主機(jī)準(zhǔn)備好接受寫響應(yīng)信號(hào))
寫響應(yīng)通道信號(hào)
信號(hào)名來(lái)源描述
ARIDmaster讀地址ID
ARADDRmaster讀地址
ARLENmaster突發(fā)長(zhǎng)度
ARSIZEmaster突發(fā)尺寸(每次突發(fā)傳輸?shù)腷yte數(shù))
ARBURSTmaster突發(fā)類型(FIXED,INCR,WRAP)
ARCACHEmaster存儲(chǔ)類型
ARPROTmaster保護(hù)類型
ARQOSmasterQoS標(biāo)識(shí)符
ARREGIONmaster區(qū)域標(biāo)識(shí)符
ARUSERmaster用戶自定義
ARVALIDmaster讀地址有效(有效時(shí)表示ARADDR上地址有效)
ARREADYslave寫有效信號(hào)(有效時(shí)表示從機(jī)準(zhǔn)備好接收讀地址)
讀地址通道信號(hào)
信號(hào)名來(lái)源描述
RIDslave讀ID標(biāo)簽
RDATAslave讀數(shù)據(jù)
RRESPslave讀響應(yīng)
RLASTslave有效時(shí)表示為突發(fā)傳輸?shù)淖詈笠粋€(gè)
RUSERslave用戶自定義
RVALIDslave讀數(shù)據(jù)有效信號(hào)
RREADYmaster主機(jī)就緒信號(hào)(有效時(shí)表示)
讀數(shù)據(jù)通道信號(hào)
信號(hào)名來(lái)源描述
CSYSREQClock controller該信號(hào)有效時(shí),系統(tǒng)退出低功耗模式
CSYSACKPeripheral device退出低功耗模式應(yīng)答信號(hào)
CACTIVEPeripheral device外設(shè)申請(qǐng)時(shí)鐘信號(hào)
低功耗接口信號(hào)
3.信號(hào)接口要求
3.1讀寫傳輸
3.1.1 握手過(guò)程
5個(gè)傳輸通道均使用VALID/READY信號(hào)對(duì)傳輸過(guò)程的地址、數(shù)據(jù)、控制信號(hào)進(jìn)行握手。使用雙向握手機(jī)制,傳輸僅僅發(fā)生在VALID、READY同時(shí)有效的時(shí)候。VALID信號(hào)表示地址/數(shù)據(jù)/應(yīng)答信號(hào)總線上的信號(hào)是有效的,由傳輸發(fā)起方控制
READY信號(hào)表示傳輸接收方已經(jīng)準(zhǔn)備好接收,由傳輸接收方控制下圖是幾種握手機(jī)制:
VALID和READY的先后關(guān)系具有三種情況:
VALID先有效,等待READY有效后完成傳輸(VALID一旦有效后在傳輸完成前不可取消)
READY先有效,等待VALID有效后完成傳輸(READY可以在VALID有效前撤銷)
VALID和READY同時(shí)有效,立刻完成傳輸此外,需要注意的是允許READY信號(hào)等待VALID信號(hào)再有效,即使從機(jī)準(zhǔn)備好,也可以不提供READY信號(hào),等到主機(jī)發(fā)送VALID信號(hào)再提供READY信號(hào)。對(duì)應(yīng)的VALID信號(hào)不允許等待READY信號(hào),即不允許VALID等待READY信號(hào)拉高后再拉高,否則容易產(chǎn)生死鎖現(xiàn)象。
命令通道握手(讀地址,寫地址,寫響應(yīng))
僅當(dāng)?shù)刂返刃畔⒂行r(shí),才拉高VALID,該VALID必須保持直到傳輸完成(READY置位)
READY默認(rèn)狀態(tài)不關(guān)心,僅當(dāng)準(zhǔn)備好接收時(shí)拉高READY數(shù)據(jù)通道握手(寫數(shù)據(jù)和讀數(shù)據(jù))
突發(fā)讀寫模式下,僅數(shù)據(jù)信息有效時(shí)才拉高VALID,該VALID必須保持直到傳輸完成。當(dāng)突發(fā)傳輸最后一個(gè)數(shù)據(jù)發(fā)送時(shí)拉高LAST信號(hào)
READY默認(rèn)狀態(tài)不關(guān)心,僅當(dāng)準(zhǔn)備好接收時(shí)拉高READY通道信號(hào)要求:
通道握手信號(hào):每個(gè)通道有自己的xVALID/xREADY握手信號(hào)對(duì)。
寫地址通道:當(dāng)主機(jī)驅(qū)動(dòng)有效的地址和控制信號(hào)時(shí),主機(jī)可以斷言AWVALID,一旦斷言,需要保持AWVALID的斷言狀態(tài),直到時(shí)鐘上升沿采樣到從機(jī)的AWREADY。AWREADY默認(rèn)值可高可低,推薦為高(如果為低,一次傳輸至少需要兩個(gè)周期,一個(gè)用來(lái)斷言AWVALID,一個(gè)用來(lái)斷言AWREADY);當(dāng)AWREADY為高時(shí),從機(jī)必須能夠接受提供給它的有效地址。
寫數(shù)據(jù)通道:在寫突發(fā)傳輸過(guò)程中,主機(jī)只能在它提供有效的寫數(shù)據(jù)時(shí)斷言WVALID,一旦斷言,需要保持?jǐn)嘌誀顟B(tài),知道時(shí)鐘上升沿采樣到從機(jī)的WREADY。WREADY默認(rèn)值可以為高,這要求從機(jī)總能夠在單個(gè)周期內(nèi)接受寫數(shù)據(jù)。主機(jī)在驅(qū)動(dòng)最后一次寫突發(fā)傳輸是需要斷言WLAST信號(hào)。
寫響應(yīng)通道:從機(jī)只能它在驅(qū)動(dòng)有效的寫響應(yīng)時(shí)斷言BVALID,一旦斷言需要保持,直到時(shí)鐘上升沿采樣到主機(jī)的BREADY信號(hào)。當(dāng)主機(jī)總能在一個(gè)周期內(nèi)接受寫響應(yīng)信號(hào)時(shí),可以將BREADY的默認(rèn)值設(shè)為高。
讀地址通道:當(dāng)主機(jī)驅(qū)動(dòng)有效的地址和控制信號(hào)時(shí),主機(jī)可以斷言ARVALID,一旦斷言,需要保持ARVALID的斷言狀態(tài),直到時(shí)鐘上升沿采樣到從機(jī)的ARREADY。ARREADY默認(rèn)值可高可低,推薦為高(如果為低,一次傳輸至少需要兩個(gè)周期,一個(gè)用來(lái)斷言ARVALID,一個(gè)用來(lái)斷言ARREADY);當(dāng)ARREADY為高時(shí),從機(jī)必須能夠接受提供給它的有效地址。
讀數(shù)據(jù)通道:只有當(dāng)從機(jī)驅(qū)動(dòng)有效的讀數(shù)據(jù)時(shí)從機(jī)才可以斷言RVALID,一旦斷言需要保持直到時(shí)鐘上升沿采樣到主機(jī)的BREADY。BREADY默認(rèn)值可以為高,此時(shí)需要主機(jī)任何時(shí)候一旦開(kāi)始讀傳輸就能立馬接受讀數(shù)據(jù)。當(dāng)最后一次突發(fā)讀傳輸時(shí),從機(jī)需要斷言RLAST。
3.1.2 通道順序
傳輸中,通道傳輸?shù)南群笥幸韵乱?guī)定
寫響應(yīng)通道傳輸必須在寫操作完成以后進(jìn)行
讀數(shù)據(jù)通道傳輸必須在讀地址通道傳輸后進(jìn)行
必須遵循一系列的狀態(tài)依賴關(guān)系
通道握手信號(hào)的依耐關(guān)系
為防止死鎖,通道握手信號(hào)需要遵循一定的依耐關(guān)系。VALID信號(hào)不能依耐READY信號(hào)。
AXI接口可以等到檢測(cè)到VALID才斷言對(duì)應(yīng)的READY,也可以檢測(cè)到VALID之前就斷言READY。下面有幾個(gè)圖表明依耐關(guān)系,單箭頭指向的信號(hào)能在箭頭起點(diǎn)信號(hào)之前或之后斷言;雙箭頭指向的信號(hào)必須在箭頭起點(diǎn)信號(hào)斷言之后斷言。
讀傳輸握手依耐關(guān)系
上圖為讀操作的依賴關(guān)系,ARREADY可以等待ARVALID信號(hào),RVALID必須等待ARVALID和ARREADY同時(shí)有效后(一次地址傳輸發(fā)生)才能能有效;
寫傳輸握手依耐關(guān)系
從機(jī)寫響應(yīng)握手依耐關(guān)系
在AXI3中,寫操作中唯一的強(qiáng)依賴關(guān)系是寫響應(yīng)通道BVALID,僅當(dāng)WVALID和WREADY信號(hào)同時(shí)有效(數(shù)據(jù)傳輸完成)且WLAST信號(hào)有效(突發(fā)傳輸?shù)淖詈笠粋€(gè)數(shù)據(jù)傳輸完成)后才會(huì)被置位;
在AXI4中,定義了額外的依賴關(guān)系,即BVALID必須依賴AWVALID、AWREADY、WVALID和WREADY信號(hào);
3.2時(shí)鐘復(fù)位
時(shí)鐘: 每個(gè)AXI組件使用一個(gè)時(shí)鐘信號(hào)ACLK,所有輸入信號(hào)在ACLK上升沿采樣,所有輸出信號(hào)必須在ACLK上升沿后發(fā)生。
復(fù)位: AXI使用一個(gè)低電平有效的復(fù)位信號(hào)ARESETn,復(fù)位信號(hào)可以異步斷言,但必須和時(shí)鐘上升沿同步去斷言。
復(fù)位期間對(duì)接口有如下要求:
主機(jī)接口必須驅(qū)動(dòng)ARVALID,AWVALID,WVALID為低電平;
從機(jī)接口必須驅(qū)動(dòng)RVALID,BVALID為低電平;
所有其他信號(hào)可以被驅(qū)動(dòng)到任意值。在復(fù)位后,主機(jī)可以在時(shí)鐘上升沿驅(qū)動(dòng)ARVALID,AWVALID,WVALID為高電平。
4.傳輸結(jié)構(gòu)
4.1.地址通道數(shù)據(jù)結(jié)構(gòu)
AXI總線是基于突發(fā)傳輸?shù)目偩€,若主機(jī)要開(kāi)始一次突發(fā)傳輸,需要傳輸一次地址和相關(guān)控制信號(hào),之后從機(jī)自動(dòng)計(jì)算地址(主機(jī)只給出突發(fā)傳輸?shù)牡谝粋€(gè)字節(jié)的地址,從機(jī)必須計(jì)算突發(fā)傳輸后續(xù)的地址),但一次突發(fā)傳輸?shù)牡刂贩秶荒芸缭?KB(防止突發(fā)跨越兩個(gè)從機(jī)的邊界,也限制了從機(jī)所需支持的地址自增數(shù))。
(1)。突發(fā)傳輸信息
突發(fā)長(zhǎng)度(AxLEN)
突發(fā)長(zhǎng)度為每次突發(fā)傳輸?shù)膫鬏敶螖?shù),范圍限制1~16(AXI4增量模式1~256)。每次傳輸?shù)耐话l(fā)長(zhǎng)度為AxLEN[3:0] + 1(AXI增量模式AxLEN[7:0] + 1)
AXI3只支持1~16次的突發(fā)傳輸(Burst_length=AxLEN[3:0]+1);
AXI4擴(kuò)展突發(fā)長(zhǎng)度支持INCR突發(fā)類型為1~256次傳輸,對(duì)于其他的傳輸類型依然保持1~16次突發(fā)傳輸(Burst_Length=AxLEN[7:0]+1)。
對(duì)于回卷模式突發(fā)傳輸,突發(fā)長(zhǎng)度僅能是2,4,8或16。
ARLEN[7:0]:讀地址通道的突發(fā)長(zhǎng)度接口
AWLEN[7:0]:寫地址通道的突發(fā)長(zhǎng)度接口burst傳輸具有如下規(guī)則:
wraping burst ,burst長(zhǎng)度必須是2,4,8,16
burst不能跨4KB邊界
不支持提前終止burst傳輸(可以通過(guò)關(guān)閉所有數(shù)據(jù)字段的方式使一段傳輸數(shù)據(jù)無(wú)效,但傳輸行為必須完成)
所有的組件都不能提前終止一次突發(fā)傳輸。然而,主機(jī)可以通過(guò)解斷言所有的寫的strobes來(lái)使非所有的寫字節(jié)來(lái)減少寫傳輸?shù)臄?shù)量。讀burst中,主機(jī)可以忽略后續(xù)的讀數(shù)據(jù)來(lái)減少讀個(gè)數(shù)。也就是說(shuō),不管怎樣,都必須完成所有的burst傳輸。
提醒:對(duì)于FIFO,忽略后續(xù)讀數(shù)據(jù)可能導(dǎo)致數(shù)據(jù)丟失,必須保證突發(fā)傳輸長(zhǎng)度和要求的數(shù)據(jù)傳輸大小匹配。
突發(fā)尺寸(AxSIZE)
突發(fā)尺寸為每次傳輸?shù)腷yte數(shù)量,與突發(fā)傳輸?shù)牡刂奉A(yù)測(cè)相關(guān)性很強(qiáng)。每次的突發(fā)尺寸不能超過(guò)數(shù)據(jù)通道的寬度;若突發(fā)尺寸小于數(shù)據(jù)通道寬度,需要指定哪些位數(shù)是有效的。突發(fā)尺寸為2^AxSIZE[2:0]
ARSIZE[2:0]:讀地址通道突發(fā)尺寸
AWSIZE[2:0]:寫地址通道突發(fā)尺寸突發(fā)類型(AxBURST)
AXI支持三種突發(fā)類型:
FIXED(AxBURST[1:0]=0b00):固定突發(fā)模式,每次突發(fā)傳輸?shù)牡刂废嗤糜贔IFO訪問(wèn);
INCR(AxBURST[1:0]=0b01):增量突發(fā)模式,突發(fā)傳輸?shù)刂愤f增,遞增量與突發(fā)尺寸相關(guān)(傳輸過(guò)程中,地址遞增。增加量取決AxSIZE的值。)
WRAP(AxBURST[1:0]=0b10):回卷突發(fā)模式,和增量突發(fā)類似,但會(huì)在特定高地址的邊界處回到低地址處(傳輸?shù)刂凡粫?huì)超出起始地址所在的塊,一旦遞增超出,則回到該塊的起始地址),突發(fā)傳輸?shù)刂房梢绯鲂赃f增,突發(fā)長(zhǎng)度僅支持2,4,8,16。傳輸首地址和每次傳輸?shù)拇笮?duì)齊。最低的地址整個(gè)傳輸?shù)臄?shù)據(jù)大小對(duì)齊。地址空間被劃分為長(zhǎng)度[突發(fā)尺寸*突發(fā)長(zhǎng)度]的塊,即回環(huán)邊界等于(AxSIZE*AxLEN)。
(2)。存儲(chǔ)類型(AxCACHE)
AXI4可支持不同的存儲(chǔ)類型,AxCACHE[3:0]用于描述不同的存儲(chǔ)類型,如下圖所示
ARCACHE[3:0]AWCACHE[3:0]Memory type
00000000Device Non-bufferable
00010001Device Bufferable
00100010Normal Non-cacheable Non-bufferable
00110011Normal Non-cacheable Bufferable
10100110Write-through No-allocate
1110 (0110)0110Write-through Read-allocate
10101110 (1010)Write-through Write-allocate
11101110Write-through Read and Write-allocate
10110111Write-back No-allocate
1111(0111) 0111Write-back Read-allocate
10111111 (1011)Write-back Write-allocate
11111111Write-back Read and Write-allocate
4.2.數(shù)據(jù)通道數(shù)據(jù)結(jié)構(gòu)
(1)。數(shù)據(jù)選通(WSTRB)
WSTRB的每一位對(duì)應(yīng)數(shù)據(jù)中的8位(1字節(jié)),用于標(biāo)志數(shù)據(jù)中的對(duì)應(yīng)字節(jié)是否有效。即當(dāng)WSTRB[n] = 1時(shí),標(biāo)志數(shù)據(jù)中WDATA[(8n)+7: (8n)]部分有效。
WSTRB[n:0]對(duì)應(yīng)于對(duì)應(yīng)的寫字節(jié),WSTRB[n]對(duì)應(yīng)WDATA[8n+7:8n]。WVALID為低時(shí),WSTRB可以為任意值, WVALID為高時(shí),WSTRB為高的字節(jié)線必須指示有效的數(shù)據(jù)。
(2)。數(shù)據(jù)(xDATA)
窄帶傳輸(Narrow transfers)
當(dāng)主機(jī)產(chǎn)生比它數(shù)據(jù)總線xDATA要窄的傳輸時(shí),為窄帶傳輸,每次使用的數(shù)據(jù)位數(shù)不同,由地址和控制信號(hào)決定哪個(gè)字節(jié)被傳輸:
固定地址的突發(fā)下,使用同一段數(shù)據(jù)信號(hào)線
在遞增地址和包裝地址的突發(fā)下,使用不同段信號(hào)線INCR和WRAP,不同的字節(jié)線決定每次burst傳輸?shù)臄?shù)據(jù),F(xiàn)IXED,每次傳輸使用相同的字節(jié)線。
下圖給出了5次突發(fā)傳輸,起始地址為0,每次傳輸為8bit,數(shù)據(jù)總線為32bit,突發(fā)類型為INCR。
窄傳輸示例
上圖為地址遞增突發(fā)下,在32位數(shù)據(jù)信號(hào)下使用8bit傳輸?shù)恼瓗鬏斒褂玫奈粩?shù)圖。第一次傳輸使用0~7位,第二次使用8~15位,依次遞增;在第五次傳輸時(shí)回到開(kāi)頭使用0~7位。
下圖給出3次突發(fā),起始地址為4,每次傳輸32bit,數(shù)據(jù)總線為64bit。
窄傳輸示例
不對(duì)齊傳輸(Unaligned transfers)
AXI支持非對(duì)齊傳輸。在大于一個(gè)字節(jié)的傳輸中,第一個(gè)自己的傳輸可能是非對(duì)齊的。如32-bit數(shù)據(jù)包起始地址在0x1002,非32bit對(duì)齊。主機(jī)可以:使用低位地址線來(lái)表示非對(duì)齊的起始地址;
提供對(duì)齊的起始地址,使用字節(jié)線來(lái)表示非對(duì)齊的起始地址。當(dāng)傳輸位寬超過(guò)1byte,起始地址不為數(shù)據(jù)總線硬件帶寬(byte單位)整數(shù)倍時(shí),為不對(duì)齊傳輸。不對(duì)齊傳輸?shù)臅r(shí)候需要配合數(shù)據(jù)選通在第一次傳輸時(shí)將某幾個(gè)byte置為無(wú)效,使第二次突發(fā)傳輸?shù)钠鹗嫉刂罚◤臋C(jī)自動(dòng)計(jì)算)為突發(fā)尺寸的整數(shù)倍。
對(duì)齊非對(duì)齊傳輸示例1-32bit總線
對(duì)齊非對(duì)齊傳輸示例2-64bit總線
對(duì)齊的回環(huán)傳輸示例
讀寫響應(yīng)結(jié)構(gòu)
讀傳輸?shù)捻憫?yīng)信息是附加在讀數(shù)據(jù)通道上的,寫傳輸?shù)捻憫?yīng)在寫響應(yīng)通道。
RRESP[1:0],讀傳輸
BRESP[1:0],寫傳輸
OKAY(‘b00):正常訪問(wèn)成功
EXOKAY(’b01):Exclusive 訪問(wèn)成功
SLVERR(‘b10):從機(jī)錯(cuò)誤。表明訪問(wèn)已經(jīng)成功到了從機(jī),但從機(jī)希望返回一個(gè)錯(cuò)誤的情況給主機(jī)。
DECERR(’b11):譯碼錯(cuò)誤。一般由互聯(lián)組件給出,表明沒(méi)有對(duì)應(yīng)的從機(jī)地址。
5. AXI-Stream
AXI-Stream,是一種連續(xù)流接口,不需要地址線(類似FIFO,一直讀或一直寫就行)。對(duì)于這類IP,ARM必須有一個(gè)轉(zhuǎn)換裝置才能對(duì)內(nèi)存映射方式控制,例如AXI-DMA模塊來(lái)實(shí)現(xiàn)內(nèi)存映射到流式接口的轉(zhuǎn)換。
AXI-Stream適用的場(chǎng)合有很多:視頻流處理;通信協(xié)議轉(zhuǎn)換;數(shù)字信號(hào)處理;無(wú)線通信等。其本質(zhì)都是針對(duì)數(shù)值流構(gòu)建的數(shù)據(jù)通路,從信源(例如ARM內(nèi)存、DMA、無(wú)線接收前端等)到信宿(例如HDMI顯示器、音頻輸出等)構(gòu)建起連續(xù)的數(shù)據(jù)流。這種接口適合做實(shí)時(shí)信號(hào)處理。
用戶其實(shí)不需要對(duì)AXI時(shí)序了解太多,因?yàn)閄ilinx已經(jīng)將和AXI時(shí)序有關(guān)的細(xì)節(jié)都封裝起來(lái),官方IP和向?qū)傻淖远xIP,用戶只需要關(guān)注自己的邏輯實(shí)現(xiàn)即可
AXI4-Stream協(xié)議是一種用來(lái)連接需要交換數(shù)據(jù)的兩個(gè)部件的標(biāo)準(zhǔn)接口,它可以用于連接一個(gè)產(chǎn)生數(shù)據(jù)的主機(jī)和一個(gè)接受數(shù)據(jù)的從機(jī)。當(dāng)然它也可以用于連接多個(gè)主機(jī)和從機(jī)。該協(xié)議支持多種數(shù)據(jù)流使用相同共享總線集合,允許構(gòu)建類似于路由、寬窄總線、窄寬總線等更為普遍的互聯(lián)。
AXI4-Stream接口比較重要的信號(hào)線:
ACLK:時(shí)鐘線,所有信號(hào)都在ACLK上升沿被采樣;
ARESETn:復(fù)位線,低電平有效;
TVALID:主機(jī)數(shù)據(jù)同步線,為高表示主機(jī)準(zhǔn)備好發(fā)送數(shù)據(jù);
TREADY:從機(jī)數(shù)據(jù)同步線,為高表示從機(jī)準(zhǔn)備好接收數(shù)據(jù);這兩根線完成了主機(jī)與從機(jī)的握手信號(hào),一旦二者都變高有效,數(shù)據(jù)傳輸開(kāi)始。
TDATA:數(shù)據(jù)線,主機(jī)發(fā)送,從機(jī)接收。
TKEEP:主機(jī)數(shù)據(jù)有效指示,為高代表對(duì)應(yīng)的字節(jié)為有效字節(jié),否則表示發(fā)送的為空字節(jié)。
TLAST:主機(jī)最后一個(gè)字指示,下一clk數(shù)據(jù)將無(wú)效,TVALID將變低。
TID,TDEST,TUSER均為多機(jī)通信時(shí)的信號(hào),不予考慮。
利用AXI總線做轉(zhuǎn)換,可以把PS里DDR4的內(nèi)容以Stream形式發(fā)出去,例如以固定速度送往DA,完成信號(hào)發(fā)生器的設(shè)計(jì);
ZYNQ的PS部分是ARM CortexA9系列,支持AXI4,AXI-Lite總線。PL部分也有相應(yīng)AXI總線接口,這樣就能完成PS到PL的互聯(lián)。僅僅這樣還不夠,需要PL部分實(shí)現(xiàn)流式轉(zhuǎn)換,即AXI-Stream接口實(shí)現(xiàn)。
Xilinx提供的從AXI到AXI-Stream轉(zhuǎn)換的IP核有:AXI-DMA,AXI-Datamover,AXI-FIFO-MM2S以及AXI-VDMA等。
AXI-DMA:實(shí)現(xiàn)從PS內(nèi)存到PL高速傳輸高速通道AXI-HP到AXI-Stream的轉(zhuǎn)換;
AXI-FIFO-MM2S:實(shí)現(xiàn)從PS內(nèi)存到PL通用傳輸通道AXI-GP到AXI-Stream的轉(zhuǎn)換;
AXI-Datamover:實(shí)現(xiàn)從PS內(nèi)存到PL高速傳輸高速通道AXI-HP到AXI-Stream的轉(zhuǎn)換,只不過(guò)這次是完全由PL控制的,PS是完全被動(dòng)的;
AXI-VDMA:實(shí)現(xiàn)從PS內(nèi)存到PL高速傳輸高速通道AXI-HP到AXI-Stream的轉(zhuǎn)換,只不過(guò)是專門針對(duì)視頻、圖像等二維數(shù)據(jù)的。
AXI總線和接口的區(qū)別:
總線是一種標(biāo)準(zhǔn)化接口,由數(shù)據(jù)線、地址線、控制線等構(gòu)成,具有一定的強(qiáng)制性。接口是其物理實(shí)現(xiàn),即在硬件上的分配。在ZYNQ中,支持AXI-Lite,AXI4和AXI-Stream三種總線,但PS與PL之間的接口卻只支持前兩種,AXI-Stream只能在PL中實(shí)現(xiàn),不能直接和PS相連,必須通過(guò)AXI-Lite或AXI4轉(zhuǎn)接。PS與PL之間的物理接口有9個(gè),包括4個(gè)AXI-GP接口和4個(gè)AXI-HP接口、1個(gè)AXI-ACP接口,均為內(nèi)存映射型AXI接口。
編輯:lyn
-
總線接口
+關(guān)注
關(guān)注
0文章
82瀏覽量
30732 -
AXI
+關(guān)注
關(guān)注
1文章
127瀏覽量
16631
原文標(biāo)題:AXI總線知多少?
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論