天天看點

CPU總線淺學之AMBAAMBA總線淺學

AMBA總線淺學

随着深亞微米工藝技術日益成熟,內建電路晶片的規模越來越大。數字IC從基于時序驅動的設計方法,發展到基于IP複用的設計方法,并在SOC設計中得到了廣泛應用。在基于IP複用的SoC設計中,片上總線設計是最關鍵的問題。為此,業界出現了很多片上總線标準。其中,由ARM公司推出的AMBA片上總線受到了廣大IP開發商和SoC系統內建者的青睐,已成為一種流行的工業标準片上結構。

1 AMBA協定的演進

CPU總線淺學之AMBAAMBA總線淺學

● AMBA 1隻有ASB和APB協定;

● AMBA 2引入AHB協定用于高速資料傳輸;

● AMBA 3,為适應高吞吐量傳輸和調試引入AXI和ATB,增加進階可擴充接口,而AHB協定縮減為AHB-lite,APB協定增加了PREADY和PSLVERR,ASB由于設計複雜而不再使用;

● AMBA 4,AXI得到了增強,引入QOS和long burst的支援,根據應用不同可選AXI4,AXI4-lite,AXI4-stream,同時為滿足複雜SOC的操作一緻性引入ACE和ACE-lite協定,APB和ATB也同時得到增強,比如APB加入了PPROT和PSTRB,另外為改善總線資料傳輸引入QVN協定;

● 适應更加複雜的高速NOC設計,引入環形總線協定,推出的AMBA CHI協定。

2 AMBA 1

V1.0 ASB、APB是第一代AMBA協定的一部分。主要應用在低帶寬的外設上,如UART、 I2C,它的架構不像AHB總線是多主裝置的架構,APB總線的唯一主裝置是APB橋(與AXI或APB相連),是以不需要仲裁一些Request/grant信号。APB的協定也十分簡單,甚至不是流水的操作,固定兩個時鐘周期完成一次讀或寫的操作。其特性包括:兩個時鐘周期傳輸,無需等待周期和回應信号,控制邏輯簡單,隻有四個控制信号。傳輸可用如下狀态圖表示,

CPU總線淺學之AMBAAMBA總線淺學
CPU總線淺學之AMBAAMBA總線淺學

● 系統初始化為IDLE狀态,此時沒有傳輸操作,也沒有選中任何從子產品。

● 當有傳輸要進行時,PSELx=1,PENABLE=0,系統進入SETUP狀态,并隻會在SETUP 狀态停留一個周期。當PCLK的下一個上升沿時到來時,系統進入ENABLE 狀态。

● 系統進入ENABLE狀态時,維持之前在SETUP 狀态的PADDR、PSEL、PWRITE不變,并将PENABLE置為1。傳輸也隻會在ENABLE狀态維持一個周期,在經過SETUP與ENABLE狀态之後就已完成。之後如果沒有傳輸要進行,就進入IDLE狀态等待;如果有連續的傳輸,則進入SETUP狀态。

3 AMBA 2

**V2.0 AHB是第二代AMBA協定最重要的一部分。**AHB總線規範是AMBA總線規範的一部分,AMBA總線規範是ARM公司提出的總線規範,被大多數SoC設計采用,它規定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced Peripheral Bus)。AHB用于高性能、高時鐘頻率的系統結構,典型的應用如ARM核與系統内部的高速RAM、NAND FLASH、DMA、Bridge的連接配接。APB用于連接配接外部裝置,對性能要求不高,而考慮低功耗問題。ASB是AHB的一種替代方案。

相比于APB,區分了位址周期和資料周期。

CPU總線淺學之AMBAAMBA總線淺學
CPU總線淺學之AMBAAMBA總線淺學

AHB總線強大之處在于它可以将微控制器(CPU)、高帶寬的片上RAM、高帶寬的外部存儲器接口、DMA總線控制器,以及各種AHB接口的控制器等連接配接起來構成一個獨立的完整SOC系統,還可以通過AHB-APB橋來連接配接APB總線系統。

AHB總線由主裝置Master、從裝置Slave,内部包括仲裁器,譯碼器,資料多路和位址控制多路組成。

● 主裝置發起一次讀/寫操作,某一時刻隻允許一個主裝置使用總線;

● 從裝置響應一次讀/寫操作,通過位址映射選擇使用哪一個從裝置;

● 仲裁器允許某一個主裝置控制總線;

● 譯碼器通過位址譯碼決定選擇哪一個從裝置。

3.1 仲裁機制

仲裁機制保證了任意時刻隻有一個master可以接入總線。arbiter決定哪個發出接入請求的master可以接入總線,這通過優先級算法實作。AHB規範并沒有給出優先級算法,設計者需要根據具體的系統要求定義。一般情況下arbiter不會中斷一個burst傳輸,将總線接入權讓給其他master。當然未定義長度的burst傳輸是可以打斷的,這要看優先級算法是如何規定的。如果一筆burst被打斷,master再度獲得接入權限時,會傳遞剩餘的部分。如一筆長度為INCR8的傳輸在傳遞3 beat後被打斷,master再次獲得接入授權後,會繼續傳輸剩餘的5 beat,剩餘部分可以由一個SINGLE和一個INCR4組成,或者一個INCR。

3.2 位址譯碼器

位址譯碼器用于為總線上每個slave提供選擇信号HSELx,選擇信号是通過組合邏輯對位址碼譯碼産生的。隻有目前的資料傳輸完成後(HREADY為高),slave才會采樣位址和控制信号以及HSELx。在一定條件下可能會出現這樣的情況:産生HSELx信号而HREADY為低,在目前傳輸後slave會改變。每個slave最小的位址空間為1KB,所有的master的burst傳輸上限也是1KB,如此設計保證了不會出現位址越界問題。當一個設計不會用到所有的位址空間時,可能出現通路到一個不存在的位址的情況,這就需要增加一個附加的預設slave來為上面的情況提供一個響應。當SEQ或NONSEQ傳輸通路到一個不存在的位址,預設slave應該提供ERROR響應;當IDLE或BUSY傳輸通路到一個不存在的位址,預設slave會響應OKAY。位址譯碼器會帶有實作預設slave的功能。

3.3 信号描述

CPU總線淺學之AMBAAMBA總線淺學

HRESP[1:0] 響應信号

傳輸響應HRESP[1:0]

● 00: OKAY

● 01: ERROR

● 10: RETRY

傳輸未完成,請求主裝置重新開始一個傳輸,arbiter會繼續使用通常的優先級

● 11: SPLIT

傳輸未完成,請求主裝置分離一次傳輸,arbiter會調整優先級方案以便其他請求總線的主裝置可以通路總線

3.4 AHB仲裁信号

CPU總線淺學之AMBAAMBA總線淺學

4 AMBA 3

V3.0 AXI(Advanced eXtensible Interface)是一種總協定,該協定是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0協定中最重要的部分。

● 高性能、高帶寬、低延遲的片内總線。

● 位址/控制和資料相位是分離的,分離的讀寫資料通道。控制和資料通道分離,就可以不等需要的操作完成,就發出下一個操作,流水線操作,資料吞吐量增加達到提速的作用。

● 單向通道體系結構,使得片上資訊流隻是以單方向傳輸,減少了延時,更小的面積,更低的功耗,獲得優異的性能。

4.1 AXI的五個通道

● 讀位址通道,包含ARVALID, ARADDR, ARREADY信号;

● 寫位址通道,包含AWVALID,AWADDR, AWREADY信号;

● 讀資料通道,包含RVALID, RDATA, RREADY, RRESP信号;

● 寫資料通道,包含WVALID, WDATA,WSTRB, WREADY信号;

● 寫應答通道,包含BVALID, BRESP, BREADY信号;

● 系統通道,包含:ACLK,ARESETN信号;

ACLK為axi總線時鐘,ARESETN是axi總線複位信号,低電平有效;讀寫資料與讀寫位址類信号寬度都為32bit;READY與VALID是對應的通道握手信号;WSTRB信号為1的bit對應WDATA有效資料位元組,WSTRB寬度是32bit/8=4bit;BRESP與RRESP分别為寫回應信号,讀回應信号,寬度都為2bit,‘h0代表成功,其他為錯誤。

4.2 握手機制

CPU總線淺學之AMBAAMBA總線淺學
CPU總線淺學之AMBAAMBA總線淺學

每個channel内的valid和ready之間沒有嚴格的先後順序,但是channel間的valid和ready信号有依賴關系。對于讀操作,spec要求讀data必須出現在讀addr之後,是以讀操作的兩個channel之間存在如下的依賴關系,即必須等到ARVALID的ARREADY同時為High後,RVALID才能拉高。

CPU總線淺學之AMBAAMBA總線淺學
CPU總線淺學之AMBAAMBA總線淺學

對于寫操作,addr和data兩個channel之間不存在依賴關系,但是隻能等最後一次transfer結束後,才能拉高BVALID。從下圖中看不出AWVLAID, AWREAY與BVALID之間的關系,但是,隐含條件是slave隻有接收到addr和data後,才能做出響應,是以AWAVLID, AWREADY為High,且最後一次transfer結束後才能拉高BVALID。

5 AMBA 4

AXI4 是第四代AMBA協定重要的一部分,AMBA4.0 包括AXI4.0、AXI4.0-lite、ACE4.0、AXI4.0-streamAXI4.0-lite是AXI的簡化版本,ACE4.0 是AXI緩存一緻性擴充接口,AXI4.0-stream是ARM公司和Xilinx公司一起提出,主要用在FPGA進行以資料為主導的大量資料的傳輸應用。

适合高帶寬低延時設計,無需複雜的橋就實作高頻操作,向下相容已有的AHB和APB接口。

● 分離位址/控制、資料相位

● 分離的讀寫資料通道,提供低功耗DMA

● 使用位元組線支援非對齊的資料傳輸

● 使用基于burst的傳輸,隻需傳輸首位址

● 支援多種傳輸方式,支援亂序傳輸

● 允許容易的添加寄存器來進行時序收斂

AXI架構分為5個獨立的傳輸通道,讀位址通道、讀資料通道、寫位址通道、寫資料通道、寫響應通道。基于VALID/READY的握手機制資料傳輸協定,傳輸源端使用VALID表明位址/控制信号、資料是有效的,目的端使用READY表明自己能夠接受資訊。資料總線可為(8/16/32/64/128/256/512/1024bit),最大為單次傳輸一個位元組的資料。

6 AMBA總線的性能對比分析

CPU總線淺學之AMBAAMBA總線淺學

繼續閱讀