http://www.elecfans.com/d/1284779.html
在基于IP復用的SoC設計中,片上總線設計是最關鍵的問題。為此,業界出現了很多片上總線標準。其中,由ARM公司推出的AMBA片上總線受到了廣大IP開發商和SoC系統集成者的青睞,已成為一種流行的工業標準片上結構。AMBA規范主要包括了**AHB(Advanced High performance Bus)系統總線和APB(Advanced Peripheral Bus)外圍總線。**
AMBA 2.0規范包括四個部分:AHB、ASB、APB、AXI和[Te](http://www.elecfans.com/tags/te/)st Methodology。
**AHB的相互連接采用了傳統的帶有主模塊和從模塊的共享總線**
[接口](http://www.hqchip.com/app/1039)與互連功能分離,這對芯片上模塊之間的互連具有重要意義。**AMBA已不僅是一種總線,更是一種帶有接口模塊的互連體系。**


AMBA協議的演進
* ·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協議。
*
V1.0 ASB、APB是第一代AMBA協議的一部分。主要應用在低帶寬的外設上,如UART,它的架構不像AHB總線是多主設備的架構,APB總線的唯一主設備是APB橋(與AXI或APB相連),因此不需要仲裁一些Request/grant信號。APB的協議也十分簡單,甚至不是流水的操作,固定兩個[時鐘](http://www.hqchip.com/app/1045)周期完成一次讀或寫的操作。其特性包括:兩個時鐘周期傳輸,無需等待周期和回應信號,控制邏輯簡單,只有四個控制信號


系統初始化為IDLE狀態,此時沒有傳輸操作,也沒有選中任何從模塊。 ·當有傳輸要進行時,PSELx=1,PENABLE=0,系統進入SETUP狀態,并只會在SETUP 狀態停留一個周期。當PCLK的下一個上升沿時到來時,系統進入ENABLE 狀態。 ·系統進入ENABLE狀態時,維持之前在SETUP 狀態的[PAD](http://www.hqpcb.com/zhuoluye11/?tid=26&plan=fashaoyou)DR、PSEL、PWRITE不變,并將PENABLE置為1。傳輸也只會在ENABLE狀態維持一個周期,在經過SETUP與ENABLE狀態之后就已完成。之后如果沒有傳輸要進行,就進入IDLE狀態等待;如果有連續的傳輸,則進入SETUP狀態。
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](http://www.elecfans.com/tags/ram/)、NAND FLASH、[DMA](http://www.elecfans.com/tags/dma/)、Bridge的連接。APB用于連接外部設備,對性能要求不高,而考慮低功耗問題。ASB是AHB的一種替代方案。

相比于APB,區分了地址周期和數據周期。 AHB總線強大之處在于它可以將微控制器([CPU](http://www.elecfans.com/tags/cpu/))、高帶寬的片上RAM、高帶寬的外部[存儲器](http://www.hqchip.com/app/724)接口、DMA總線控制器,以及各種AHB接口的控制器等連接起來構成一個獨立的完整SOC系統,還可以通過AHB-APB橋來連接APB總線系統。

## **arbiter** 仲裁人
通過AHB-APB橋來連接APB總線系統 AHB總線由主設備Master、從設備Slave,內部包括仲裁器,譯碼器,數據多路和地址控制多路組成。 ·主設備發起一次讀/寫操作,某一時刻只允許一個主設備使用總線。 ·從設備響應一次讀/寫操作,通過地址映射選擇使用哪一個從設備。 ·仲裁器允許某一個主設備控制總線 ·譯碼器通過地址譯碼決定選擇哪一個從設備 仲裁機制 仲裁機制保證了任意時刻只有一個master可以接入總線。arbiter決定哪個發出接入請求的master可以接入總線,這通過優先級算法實現。AHB規范并沒有給出優先級算法,設計者需要根據具體的系統要求定義。一般情況下arbiter不會中斷一個burst傳輸,將總線接入權讓給其他master。當然未定義長度的burst傳輸是可以打斷的,這要看優先級算法是如何規定的。如果一筆burst被打斷,master再度獲得接入權限時,會傳遞剩余的部分。如一筆長度為INCR8的傳輸在傳遞3 beat后被打斷,master再次獲得接入授權后,會繼續傳輸剩余的5 beat,剩余部分可以由一個SINGLE和一個INCR4組成,或者一個INCR。 地址譯碼器 地址譯碼器用于為總線上每個slave提供選擇信號HSELx,選擇信號是通過組合邏輯對地址碼譯碼產生的。只有當前的數據傳輸完成后(HREADY為高),slave才會采樣地址和控制信號以及HSELx。在一定條件下可能會出現這樣的情況:產生HSELx信號而HREADY為低,在當前傳輸后slave會改變。每個slave最小的地址空間為1KB,所有的master的burst傳輸上限也是1KB,如此設計保證了不會出現地址越界問題。當一個設計不會用到所有的地址空間時,可能出現訪問到一個不存在的地址的情況,這就需要增加一個附加的默認slave來為上面的情況提供一個響應。當SEQ或NONSEQ傳輸訪問到一個不存在的地址,默認slave應該提供ERROR響應;當IDLE或BUSY傳輸訪問到一個不存在的地址,默認slave會響應OKAY。地址譯碼器會帶有實現默認slave的功能。
AXI(Advanced eXtensible Interface)是一種總協議,該協議是ARM公司提出的AMBA(Advanced[Mi](http://www.hqpcb.com/zhuoluye11/?tid=26&plan=fashaoyou)crocontroller Bus Architecture)3.0協議中最重要的部分。 ·高性能、高帶寬、低延遲的片內總線 ·地址/控制和數據相位是分離的,分離的讀寫數據通道。控制和數據通道分離,就可以不等需要的操作完成,就發出下一個操作,流水線操作,數據吞吐量增加達到提速的作用。 ·單向通道體系結構,使得片上信息流只是以單方向傳輸,減少了延時,更小的面積,更低的功耗,獲得優異的性能。 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](http://www.elecfans.com/tags/fpga/)進行以數據為主導的大量數據的傳輸應用。 · 適合高帶寬低延時設計,無需復雜的橋就實現高頻操作,向下兼容已有的AHB和APB接口。 ·分離地址/控制、數據相位 ·分離的讀寫數據通道,提供低功耗DMA ·使用字節線支持非對齊的數據傳輸 ·使用基于burst的傳輸,只需傳輸首地址 ·支持多種傳輸方式,支持亂序傳輸 ·允許容易的添加寄存器來進行時序收斂 AXI架構分為5個獨立的傳輸通道,讀地址通道、讀數據通道、寫地址通道、寫數據通道、寫響應通道。基于VALID/READY的握手機制數據傳輸協議,傳輸源端使用VALID表明地址/控制信號、數據是有效的,目的端使用READY表明自己能夠接受信息。數據總線可為(8/16/32/64/128/256/512/1024bit),最大為單次傳輸一個字節的數據。