AMBA、AHB、APB、AXI总线
?
AMBA、AHB、APB總線
* AMBA (Advanced Microcontroller Bus Architecture) 高級(jí)微處理器總線架構(gòu)
* AHB (Advanced High-performance Bus) 高級(jí)高性能總線
* ASB (Advanced System Bus) 高級(jí)系統(tǒng)總線
* APB (Advanced Peripheral Bus) 高級(jí)外圍總線
* AXI (Advanced eXtensible Interface) 高級(jí)可拓展接口
AMBA簡(jiǎn)介
隨著深亞微米工藝技術(shù)日益成熟,集成電路芯片的規(guī)模越來(lái)越大。數(shù)字IC從基于時(shí)序驅(qū)動(dòng)的設(shè)計(jì)方法,發(fā)展到基于IP復(fù)用的設(shè)計(jì)方法,并在SOC設(shè)計(jì)中得到了廣泛應(yīng)用。在基于IP復(fù)用的SoC設(shè)計(jì)中,片上總線設(shè)計(jì)是最關(guān)鍵的問(wèn)題。為此,業(yè)界出現(xiàn)了很多片上總線標(biāo)準(zhǔn)。其中,由ARM公司推出的AMBA片上總線受到了廣大IP開(kāi)發(fā)商和SoC系統(tǒng)集成者的青睞,已成為一種流行的工業(yè)標(biāo)準(zhǔn)片上結(jié)構(gòu)。AMBA規(guī)范主要包括了AHB(Advanced High performance Bus)系統(tǒng)總線和APB(Advanced Peripheral Bus)外圍總線。
AMBA片上總線
AMBA 2.0規(guī)范包括四個(gè)部分:AHB、ASB、APB、AXI。AHB的相互連接采用了傳統(tǒng)的帶有主模塊和從模塊的共享總線,接口與互連功能分離,這對(duì)芯片上模塊之間的互連具有重要意義。AMBA已不僅是一種總線,更是一種帶有接口模塊的互連體系。一個(gè)典型的基于AMBA總線的系統(tǒng)框圖如圖3所示:
大多數(shù)掛在總線上的模塊(包括處理器)只是單一屬性的功能模塊:主模塊或者從模塊。主模塊是向從模塊發(fā)出讀寫操作的模塊,如CPU,DSP等;從模塊是接受命令并做出反應(yīng)的模塊,如片上的RAM,AHB/APB 橋等。另外,還有一些模塊同時(shí)具有兩種屬性,例如直接存儲(chǔ)器存取(DMA)在被編程時(shí)是從模塊,但在系統(tǒng)讀傳輸數(shù)據(jù)時(shí)必須是主模塊。如果總線上存在多個(gè)主模塊,就需要仲裁器來(lái)決定如何控制各種主模塊對(duì)總線的訪問(wèn)。雖然仲裁規(guī)范是AMBA總線規(guī)范中的一部分,但具體使用的算法由RTL 設(shè)計(jì)工程師決定,其中兩個(gè)最常用的算法是固定優(yōu)先級(jí)算法和循環(huán)制算法。AHB總線上最多可以有16個(gè)主模塊和任意多個(gè)從模塊,如果主模塊數(shù)目大于16,則需再加一層結(jié)構(gòu)(具體參閱ARM公司推出的Multi-layer AHB規(guī)范)。APB 橋既是APB總線上唯一的主模塊,也是AHB系統(tǒng)總線上的從模塊。其主要功能是鎖存來(lái)自AHB系統(tǒng)總線的地址、數(shù)據(jù)和控制信號(hào),并提供二級(jí)譯碼以產(chǎn)生 APB外圍設(shè)備的選擇信號(hào),從而實(shí)現(xiàn)AHB協(xié)議到APB協(xié)議的轉(zhuǎn)換。
AHB簡(jiǎn)介
AHB主要用于高性能、高時(shí)鐘跑頻率模塊(如CPU、DMA和DSP等)之間的連接,作為SoC的片上系統(tǒng)總線,它包括以下一些特性:單個(gè)時(shí)鐘邊沿操作;非三態(tài)的實(shí)現(xiàn)方式;支持突發(fā)傳輸;支持分段傳輸;支持多個(gè)主控制器;可配置32位~128位總線寬度;支持字節(jié)、半字節(jié)和字的傳輸。AHB 系統(tǒng)由主模塊、從模塊和基礎(chǔ)結(jié)構(gòu)(Infrastructure)三部分組成,整個(gè)AHB總線上的傳輸都由主模塊發(fā)出,由從模塊負(fù)責(zé)回應(yīng)。基礎(chǔ)結(jié)構(gòu)則由仲裁器(arbiter)、主模塊到從模塊的多路器、從模塊到主模塊的多路器、譯碼器(decoder)、虛擬從模塊(dummy Slave)、虛擬主模塊(dummyMaster)所組成。Master:能夠發(fā)起讀寫操作,提供地址和控制信號(hào),同一時(shí)間只有1個(gè)Master會(huì)被激活。
【Master】:能夠發(fā)起讀寫操作,提供地址和控制信號(hào),同一時(shí)間只有1個(gè)Master會(huì)被激活。Slave:在給定的地址范圍內(nèi)對(duì)讀寫操作作響應(yīng),并對(duì)Master返回成功、失敗或等待等狀態(tài)。
【Arbiter】:負(fù)責(zé)保證總線上一次只有1個(gè)Master在工作。仲裁協(xié)議是規(guī)定的,但是仲裁算法可以根據(jù)應(yīng)用決定。
【Decoder】:負(fù)責(zé)對(duì)地址進(jìn)行解碼,并提供片選信號(hào)到各Slave。
其互連結(jié)構(gòu)如圖1所示:
它主要支持的特性是:
* 數(shù)據(jù)突發(fā)傳輸(burst transfer )
* 數(shù)據(jù)分割傳輸(split transaction )
* 流水線方式
* 一個(gè)周期內(nèi)完成總線主設(shè)備(master )對(duì)總線控制權(quán)的交接
* 單時(shí)鐘沿操作
* 內(nèi)部無(wú)三態(tài)實(shí)現(xiàn)
* 更寬的數(shù)據(jù)總線寬度(最低32位,最高可達(dá)1024位,但推薦不要超過(guò)256位)
APB簡(jiǎn)介
APB主要用于低帶寬的周邊外設(shè)之間的連接,例如UART、1284等,它的總線架構(gòu)不像AHB支持多個(gè)主模塊,在APB里面唯一的主模塊就是APB 橋。其特性包括:兩個(gè)時(shí)鐘周期傳輸;無(wú)需等待周期和回應(yīng)信號(hào);控制邏輯簡(jiǎn)單,只有四個(gè)控制信號(hào)。APB上的傳輸可以用如圖2所示的狀態(tài)圖來(lái)說(shuō)明。
1) 系統(tǒng)初始化為IDLE狀態(tài),此時(shí)沒(méi)有傳輸操作,也沒(méi)有選中任何從模塊。
2) 當(dāng)有傳輸要進(jìn)行時(shí),PSELx=1,PENABLE=0,系統(tǒng)進(jìn)入SETUP狀態(tài),并只會(huì)在SETUP狀態(tài)停留一個(gè)周期。當(dāng)PCLK的下一個(gè)上升沿時(shí)到來(lái)時(shí),系統(tǒng)進(jìn)入ENABLE 狀態(tài)。
3) 系統(tǒng)進(jìn)入ENABLE狀態(tài)時(shí),維持之前在SETUP 狀態(tài)的PADDR、PSEL、PWRITE不變,并將PENABLE置為1。傳輸也只會(huì)在ENABLE狀態(tài)維持一個(gè)周期,在經(jīng)過(guò)SETUP與ENABLE 狀態(tài)之后就已完成。之后如果沒(méi)有傳輸要進(jìn)行,就進(jìn)入IDLE狀態(tài)等待;如果有連續(xù)的傳輸,則進(jìn)入SETUP狀態(tài)。
ASB簡(jiǎn)介
ASB 總線適用于連接高性能的系統(tǒng)模塊。它的讀/寫數(shù)據(jù)總線采用的是同一條雙向數(shù)據(jù)總線,可以在某些高速且不必要使用AHB 總線的場(chǎng)合作為系統(tǒng)總線,可以支持處理器、片上存儲(chǔ)器和片外處理器接口及與低功耗外部宏單元之間的連接。同AHB相比,它數(shù)據(jù)寬度要小一些,它支持的典型數(shù)據(jù)寬度為8位、16位、32位。它的主要特征如下:
* 流水線方式
* 數(shù)據(jù)突發(fā)傳送
* 多總線主設(shè)備
* 內(nèi)部有三態(tài)實(shí)現(xiàn)
AXI簡(jiǎn)介
AXI是高級(jí)擴(kuò)展接口,在AMBA 3.0中提出,AMBA 4.0將其修改升級(jí)為AXI 4.0。AMBA 4.0包括AXI 4.0、AXI 4.0-lite、ACE 4.0、AXI 4.0-stream。AXI 4.0-lite是AXI的簡(jiǎn)化版本,ACE 4.0是AXI緩存一致性擴(kuò)展接口,AXI 4.0-stream是ARM公司和Xilinx公司一起提出,主要用在FPGA進(jìn)行以數(shù)據(jù)為主導(dǎo)的大量數(shù)據(jù)的傳輸應(yīng)用。
1?關(guān)于AXI協(xié)議
* 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é)線來(lái)支持非對(duì)齊的數(shù)據(jù)傳輸
? ? ? ?* 使用基于burst的傳輸,只需傳輸首地址
? ? ? ?* 分離的讀、寫數(shù)據(jù)通道,能提供低功耗DMA
? ? ? ?* 支持多種尋址方式
? ? ? ?* 支持亂序傳輸
? ? ? ?* 允許容易的添加寄存器級(jí)來(lái)進(jìn)行時(shí)序收斂
2 AXI架構(gòu)
AXI協(xié)議是基于突發(fā)burst的傳輸,并且定義了以下5個(gè)獨(dú)立的傳輸通道:讀地址通道、讀數(shù)據(jù)通道、寫地址通道、寫數(shù)據(jù)通道、寫響應(yīng)通道。地址通道攜帶控制消息用于描述被傳輸?shù)臄?shù)據(jù)屬性,數(shù)據(jù)傳輸使用寫通道來(lái)實(shí)現(xiàn)“主”到“從”的傳輸,“從”使用寫響應(yīng)通道來(lái)完成一次寫傳輸;讀通道用來(lái)實(shí)現(xiàn)數(shù)據(jù)從“從”到“主”的傳輸。
圖 1-1 讀架構(gòu)
圖 1-2 寫架構(gòu)
AXI是基于VALID/READY的握手機(jī)制數(shù)據(jù)傳輸協(xié)議,傳輸源端使用VALID表明地址/控制信號(hào)、數(shù)據(jù)是有效的,目的端使用READY表明自己能夠接受信息。
? ? ? ?* 讀/寫地址通道:讀、寫傳輸每個(gè)都有自己的地址通道,對(duì)應(yīng)的地址通道承載著對(duì)應(yīng)傳輸?shù)牡刂房刂菩畔ⅰ?br /> ? ? ? ?* 讀數(shù)據(jù)通道:讀數(shù)據(jù)通道承載著讀數(shù)據(jù)和讀響應(yīng)信號(hào)包括數(shù)據(jù)總線和指示讀傳輸完成的讀響應(yīng)信號(hào)。
? ? ? ?* 寫數(shù)據(jù)通道:寫數(shù)據(jù)通道的數(shù)據(jù)信息被認(rèn)為是緩沖(buffered)了的,“主”無(wú)需等待“從”對(duì)上次寫傳輸?shù)拇_認(rèn)即可發(fā)起一次新的寫傳輸。寫通道包括數(shù)據(jù)總線(8/16...1024bit)和字節(jié)線(用于指示8bit 數(shù)據(jù)信號(hào)的有效性)。
? ? ? ?* 寫響應(yīng)通道:“從”使用寫響應(yīng)通道對(duì)寫傳輸進(jìn)行響應(yīng)。所有的寫傳輸需要寫響應(yīng)通道的完成信號(hào)。
圖 1-3 接口與互聯(lián)
AXI協(xié)議提供單一的接口定義,能用在下述三種接口之間:master/interconnect、slave/interconnect、master/slave。可以使用以下幾種典型的系統(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)路徑
總結(jié):
參見(jiàn):
“https://blog.csdn.net/ivy_reny/article/details/56274412”
“http://www.cnblogs.com/lkiller/p/4773235.html”
總結(jié)
以上是生活随笔為你收集整理的AMBA、AHB、APB、AXI总线的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。