AMBA總線概述(二)

AXI是ARM在1996年提出的微控制器總線家族AMBA中的一部分。AXI是高級擴展接口,在AMBA3.0中提出,AMBA4.0將其修改升級爲AXI4.0。AMBA4.0 包括

AXI4:主要面向高性能地址映射通信的需求,允許最大256輪的數據突發傳輸;
AXI4-Lite:是一個簡單地吞吐量地址映射性通信總線,是一個輕量級的地址映射單次傳輸接口,佔用很少的邏輯單元;
AXI4-Stream:面向高速流數據傳輸,去掉了地址項,允許無限制的數據突發傳輸規模;

這裏寫圖片描述
這裏寫圖片描述
AXI4總線分爲主、從兩端,兩者間可以連續的進行通信。其優勢:

適合高帶寬低延時設計, 無需複雜的橋就能實現高頻操作,能滿足大部分器件的接口要求,適合高初始延時的存儲控制器,提供互聯架構的靈活性與獨立性,向下兼容已有的AHB和APB接口
AXI 能夠使SoC 以更小的面積、更低的功耗,獲得更加優異的性能。AXI 獲得如此優異性能的一個主要原因,就是它的單向通道體系結構。

  1. 單向通道體系結構使得片上的信息流只以單方向傳輸,簡化時鐘域間的橋接,減少門數量。當信號經過複雜的片上系統時,減少延時。
  2. 支持多項數據交換。通過並行執行猝發操作,極大地提高了數據吞吐能力,可在更短的時間內完成任務,在滿足高性能要求的同時,又減少了功耗。使用字節線來支持非對齊的數據傳輸,使用基於burst的傳輸,只需傳輸首地址,支持多種尋址方式,支持亂序傳輸。
  3. 獨立的地址和數據通道,分離的地址/控制、數據相位。地址和數據通道分開,能對每一個通道進行單獨優化,可以根據需要控制時序通道,將時鐘頻率提到最高,並將延時降到最低。分離的讀、寫數據通道,能提供低功耗DMA。
  4. 增強的靈活性。AXI技術擁有對稱的主從接口,無論在點對點或在多層系統中,都能十分方便地使用AXI技術, 允許容易的添加寄存器級來進行時序收斂。
  5. AXI總線還定義了在進出低功耗節電模式前後的握手協議。規定如何通知進入低功耗模式,何時關斷時鐘,何時開啓時鐘,如何退出低功耗模式。這使得所有IP在進行功耗控制的設計時,有據可依,容易集成在統一的系統中。

AXI4的工作模式

1、 總線的兩端可以分爲master和slave,他們直接一般通過interconnect連接,如果是一對一的話,interconnect可以沒有。
這裏寫圖片描述

2、 AXI協議是基於burst的傳輸,並且定義了以下5個獨立的傳輸通道:讀地址通道、讀數據通道、寫地址通道、寫數據通道、寫響應通道,極大的提高了AXI的傳輸性能。
讀地址通道,包含ARVALID, ARADDR, ARREADY信號;
寫地址通道,包含AWVALID,AWADDR, AWREADY信號;
讀數據通道,包含RVALID, RDATA, RREADY, RRESP信號;
寫數據通道,包含WVALID, WDATA,WSTRB, WREADY信號;
寫應答通道,包含BVALID, BRESP, BREADY信號;

其中ACLK爲axi總線時鐘,ARESETN是axi總線復位信號,低電平有效;讀寫數據與讀寫地址類信號寬度都爲32bit;READY與VALID是對應的通道握手信號;WSTRB信號爲1的bit對應WDATA有效數據字節,WSTRB寬度是32bit/8=4bit;BRESP與RRESP分別爲寫回應信號,讀迴應信號,寬度都爲2bit,‘h0代表成功,其他爲錯誤。

地址通道攜帶控制消息用於描述被傳輸的數據屬性,數據傳輸使用寫通道來實現“主”到“從”的傳輸,“從”使用寫響應通道來完成一次寫傳輸;讀通道用來實現數據從“從”到“主”的傳輸。

這裏寫圖片描述
這裏寫圖片描述

3、讀寫時序:
這裏寫圖片描述

寫地址通道:當主機驅動有效的地址和控制信號時,主機可以斷言AWVALID,一旦斷言,需要保持AWVALID的斷言狀態,直到時鐘上升沿採樣到從機的AWREADY。AWREADY默認值可高可低,推薦爲高(如果爲低,一次傳輸至少需要兩個週期,一個用來斷言AWVALID,一個用來斷言AWREADY);當AWREADY爲高時,從機必須能夠接受提供給它的有效地址。

寫數據通道:在寫突發傳輸過程中,主機只能在它提供有效的寫數據時斷言WVALID,一旦斷言,需要保持斷言狀態,知道時鐘上升沿採樣到從機的WREADY。WREADY默認值可以爲高,這要求從機總能夠在單個週期內接受寫數據。主機在驅動最後一次寫突發傳輸是需要斷言WLAST信號。

寫響應通道:從機只能它在驅動有效的寫響應時斷言BVALID,一旦斷言需要保持,直到時鐘上升沿採樣到主機的BREADY信號。當主機總能在一個週期內接受寫響應信號時,可以將BREADY的默認值設爲高。

讀地址通道:當主機驅動有效的地址和控制信號時,主機可以斷言ARVALID,一旦斷言,需要保持ARVALID的斷言狀態,直到時鐘上升沿採樣到從機的ARREADY。ARREADY默認值可高可低,推薦爲高(如果爲低,一次傳輸至少需要兩個週期,一個用來斷言ARVALID,一個用來斷言ARREADY);當ARREADY爲高時,從機必須能夠接受提供給它的有效地址。

讀數據通道:只有當從機驅動有效的讀數據時從機纔可以斷言RVALID,一旦斷言需要保持直到時鐘上升沿採樣到主機的BREADY。BREADY默認值可以爲高,此時需要主機任何時候一旦開始讀傳輸就能立馬接受讀數據。當最後一次突發讀傳輸時,從機需要斷言RLAST。

讀寫時序傳輸內容:

AXI傳輸首先發出burst的長度(burst-len),最大是16,burst長度就代表有多少個transfer或者beat,一個transfer就代表一個數據位寬的數據,所以一個burst最大的傳輸數據長度爲burst_len*transfer_width;
在發出burst長度時會同時發出當前這個burst中第一個transfer的首地址,後面其它的transfer不會有地址,slave要根據地址遞增的方式自己去進行相應的處理,這個地址可以是非對齊的;在發出burst長度時會同時發出burst_size,這個size代表當前burst中所有transfer中最大的字節個數,在發出burst長度時會同時發出地址遞增方式burst-type,是不變地址(non-incr),是遞增(incr增量突發,傳輸過程中,地址遞增。增加量取決AxSIZE的值。)還是wrap(迴環突發,和增量突發類似,但會在特定高地址的邊界處回到低地址處。迴環突發的長度只能是2,4,8,16次傳輸,傳輸首地址和每次傳輸的大小對齊。最低的地址整個傳輸的數據大小對齊。迴環邊界等於(AxSIZE*AxLEN)),或者FIXED(突發傳輸過程中地址固定,用於FIFO訪問)

例如:當前要傳輸11個字節,地址是2,數據位寬是4B,所以傳輸方式是:2B-4B-4B-1B,burst_len=4,burst_size=4(所有transfer中size最大的),地址是2(因爲支持非對齊傳輸),burst-type=incr;對於寫會有strobe代表當前transfer中哪幾個字節是有效的,所以上面的strobe爲:1100-1111-1111-0001,對於讀則沒有,但是Master自己清楚哪些數據是有效的,所以可以將整個4B都讀出來,master自己去除無用的數據。
注意:不同人對burst_size(也就是英文手冊中AWsize和ARsize的理解)的理解可能不同,手冊中在table-4-2中有解釋,它表示一個burst中transfer中max-num,注意最大,所以不是表示當前burst中所有transfer的num,只是表示最大。如果表示所有transfer的num,那麼也就是所有transfer的大小是一樣的(AHB就是這樣的,每個burst中的transfersize是一樣的),那麼上面的例子就必須分成3個burst,第一個burst_len=1, size=2, addr=2, 第二個burst_len=2, size=4,addr=4, 第三個burst_len=1,size=1,addr=12,顯然這個效率要比上面的低。

通道間關係
AXI協議要求通道間滿足如下關係:
寫響應必須跟隨最後一次burst的的寫傳輸
讀數據必須跟隨數據對應的地址
通道握手信號需要確認一些依賴關係

4、 握手機制
AXI4所採用的是一種READY,VALID握手通信機制,即主從模塊進行數據通信前,新根據操作對各所用到的數據、地址通道進行握手。主要操作包括傳輸發送者A等到傳輸接受者B的READY信號後,A將數據與VALID信號同時發送給B。
這裏寫圖片描述

AXI中關於valid和ready的關係在3.3節中有很好的解釋,在設計時一定不能設計一方依賴另一方,否則會出現死鎖的現象,valid可以優先於ready拉高,也可以在ready之後拉高,它們並無先後關係,其實只要是master準備好就可以valid,slave準備好就可以ready,並無絕對的先後順序,但是當兩者同時爲高則表示當前的data或者cmd結束或者開始下一個data或者cmd。

這裏寫圖片描述

由於上面的不確定性會出現一種奇葩的現象,以寫爲例,會出現寫數據比寫地址先到達slave的現象,原因如下:假如AWREADY和WREADY被slave提前拉高了,雖然master那邊肯定是先發地址再發數據,但是master會誤以爲slave能夠立即接收地址,所以地址發送完立即發送數據,但是地址通道和數據通道是分開的,axi允許單獨對各個通道進行優化,所以,如果地址通道被插入了多個reg,那麼就會造成延時,可能出現數據先被slave收到。
爲了避免上面的現象該怎麼辦呢,首先slave最好不要在接收到地址之前就將WREADY拉高(但是AWREADY建議提前拉高,這樣address握手可能就會在一個週期內完成,否則至少需要兩個週期,就像上圖),要在收到地址後才進行WREADY的處理,或者slave先buffer住收到的數據,然後等到收到地址後再做處理。不過我覺得AXI interconnect應該會處理這種情況,不會讓數據先於地址到達slave的,所以ARM公司的AXI產品肯定是不會有問題的,但是如果不購買相應的AXI interconnect而自己開發時就要注意上面的問題。

5、AXI最多支持16個master,16個slave,它們可以通過AXI interconnect連接,不同的master發出的id可能相同,但是經過AXI interconnect處理後會變得唯一,所以自己開發AXI interconnect也要注意這個問題。同一個master發出的id可以相同也可以不同,相同的id數據傳輸必須按照先後順序否則會出現錯誤,不能亂序和交叉。AXI 支持ID方式,這也是該總線效率較高的一個原因。
6、AXI支持out-standing或者multi-issue(即當前傳輸沒結束就發起下一個傳輸)亂序和交叉傳輸,依靠ID進行區分。這也是AXI總線協議效率較高的一個原因。
這裏寫圖片描述
這裏寫圖片描述

7、這塊的理解是參考別的網站的,並不確定正確性,cachalbe和 bufferable的概念比較複雜,具體可以看看ARM cache相關文檔。簡單說,這兩個概念都是圍繞master訪問的slave的請求來說的。例如該請求時cacheable的寫話,那麼實際的寫數據不一定更新了主存內容,可以只更新了cache,以後再通過write back方式更新;bufferable也類似,如果是寫,那麼寫數據響應返回給master時,實際寫數據不一定到達了slave設備。這個寫數據可能被buffer了,而時間未知。如果不是bufferable則寫響應反映了slave實際接收到數據的時刻。說的比較籠統,具體可以參考相應文檔。
8、低功耗的理解(參考):AXI的低功耗接口本身也是數據傳輸協議的擴展。它針對自身具有低功耗處理的設備和自身不具有低功耗處理的設備都是通用的。
AXI低功耗控制接口包括兩類信號:
設備給出表示當前時鐘是否可以被gated的信號。外設使用CACTIVE信號表明它希望時鐘,時鐘控制模塊必須馬上給設置時鐘。
對於系統時鐘控制模塊,提供可以進入或退出低功耗狀態的握手信號。CSYSREQ表明了系統請求設備進入低功耗狀態,而設備使用CSYSACK信號來握手低功耗狀態請求和退出。
這裏寫圖片描述

在CSYSREQ和CSYSACK信號爲高的時候,也就是T1時刻之前,設備處於正常狀態。在T1時刻,系統拉低了CSYSREQ信號,在T2時刻,外設 拉低CSYSACK信號。在T3時刻系統拉高CSYSREQ表示系統要求設備從低功耗狀態退出。T4時刻設備握手拉高CSYSACK表明已經退出。在握手 中,CACTIVE可以作爲拒絕或者同意的標誌。下圖中CATIVE一直拉高,來表示當前不接受這種低功耗的請求,而不是依靠ACK信號。可以看出,ACK 信號只是表示狀態遷移的完整性,而對於是否進入低功耗狀態,需要CACTIVE信號表示。同時該信號也表示了設備在低功耗狀態需要退出。
這裏寫圖片描述

在系統層面的操作:
有兩種方法進行設備的低功耗控制。

第一種是系統不斷的輪詢設備,一旦某個設備可以進入低功耗狀態,就把相應的CATIVE 拉低,然後把CSYSACK信號拉低。這樣做的效率不是很高,系統並不知道哪個設備已經可以提前進入低功耗狀態,而是簡單的按照時間進行查詢,並不能精確 的控制。這一種方案主要強調系統與設備的強耦合性。只有系統需要的時候纔開始輪詢,系統不需要,就不能進入低功耗模式。
第二種方法是系統被動接受設備發出來的CATIVE,然後開始低功耗處理流程。這樣可以提高效率。但是可能系統由於預測到馬上需要使用該device,不發起低功耗請求。值得注意的是,兩種低功耗管理是可以混合使用的。

axis工作模式
    axis分爲:
tready信號:從告訴主做好傳輸準備;
tvalid信號:主告訴從數據傳輸有效;
tlast信號:主告訴從該次傳輸爲突發傳輸結尾;
tdata信號:數據,可選寬度32,64,128,256bit
tstrb信號:爲1bit爲對應tdata有效字節,寬度爲tdata/8
tuser信號  :用戶定義信號,寬度爲128bit
aclk信號:總線時鐘,上升沿有效;
aresetn信號:總線復位,低電平有效;

AXI Stream接口方式,該接口對於用戶來說,不需要關心地址。僅需要:幀開始(tuser),行結束(tlast),輸出數據(tdata),輸出有效(tvalid),輸出準備好(tready)這五個信號。
這裏寫圖片描述
但是AXI Interconnect IP只能連接memory map傳輸,並不能直接連接AXI Stream接口數據,所以只能繼續加一個AXI Stream轉接到memory map的DMA,這就是官方的也有的Video DMA IP。
VDMA的結構如下圖:
這裏寫圖片描述
這裏寫圖片描述
其實大概可以看出這麼幾個接口,AXI-lite,AXI Memory Map write,AXI Memory Map read,AXI Stream Write(S2MM),AXI Stream Read(MM2S)。
AXI-lite:作用是通過PS來配置VDMA ip。
AXI Memory Map write: 映射到存儲器寫
AXI Memory Map read:映射到存儲器讀
AXI Stream Write(S2MM):AXI Stream視頻流寫入圖像
AXI Stream Read(MM2S):AXI Stream視頻流讀出圖像
這裏寫圖片描述
這樣我們基本上大概知道視頻流怎麼進入到內存中了,先採集圖像,然後圖像數據轉換成AXI Stream接口,然後通過VDMA轉換成memory map,通過AXI Interconnect進入到HP口,通過HP口進入到Programmable Logic to Memory Interconnect,然後通過內存控制器進入到內存。

axi與axis是AXI4總線中通信複雜度較低的兩條總線,最大開發難度存在於axi的控制平面向axis的數據平面下發參數時,由於axi與axis時鐘頻率不同而產生的跨時鐘域數據傳輸問題。

更詳細的內容參見http://www.bubuko.com/infodetail-1072453.html
AXI總線信號描述文件見http://download.csdn.net/detail/chuhang_zhqr/9456746

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章