在基于IP復(fù)用的SoC設(shè)計中,片上總線設(shè)計是最關(guān)鍵的問題。為此,業(yè)界出現(xiàn)了很多片上總線標(biāo)準(zhǔn)。其中,由ARM公司推出的AMBA片上總線受到了廣大IP開發(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 2.0規(guī)范包括四個部分:AHB、ASB、APB、AXI和Test Methodology。AHB的相互連接采用了傳統(tǒng)的帶有主模塊和從模塊的共享總線,接口與互連功能分離,這對芯片上模塊之間的互連具有重要意義。AMBA已不僅是一種總線,更是一種帶有接口模塊的互連體系。
1.1.1AMBA協(xié)議的演進
圖4?4 AMBA協(xié)議的演進·AMBA 1只有ASB和APB協(xié)議;·AMBA 2引入AHB協(xié)議用于高速數(shù)據(jù)傳輸;·AMBA 3,為適應(yīng)高吞吐量傳輸和調(diào)試引入AXI和ATB,增加高級可擴展接口,而AHB協(xié)議縮減為AHB-lite,APB協(xié)議增加了PREADY和PSLVERR,ASB由于設(shè)計復(fù)雜而不再使用;·AMBA 4,AXI得到了增強,引入QOS和long burst的支持,根據(jù)應(yīng)用不同可選AXI4,AXI4-lite,AXI4-stream,同時為滿足復(fù)雜SOC的操作一致性引入ACE和ACE-lite協(xié)議,APB和ATB也同時得到增強,比如APB加入了PPROT和PSTRB,另外為改善總線數(shù)據(jù)傳輸引入QVN協(xié)議;·適應(yīng)更加復(fù)雜的高速NOC設(shè)計,引入環(huán)形總線協(xié)議,推出的AMBA CHI協(xié)議。V1.0 ASB、APB是第一代AMBA協(xié)議的一部分。主要應(yīng)用在低帶寬的外設(shè)上,如UART、 I2C,它的架構(gòu)不像AHB總線是多主設(shè)備的架構(gòu),APB總線的唯一主設(shè)備是APB橋(與AXI或APB相連),因此不需要仲裁一些Request/grant信號。APB的協(xié)議也十分簡單,甚至不是流水的操作,固定兩個時鐘周期完成一次讀或?qū)懙牟僮?/span>。其特性包括:兩個時鐘周期傳輸,無需等待周期和回應(yīng)信號,控制邏輯簡單,只有四個控制信號。傳輸可用如下狀態(tài)圖表示,
圖4?5 傳輸狀態(tài)圖·系統(tǒng)初始化為IDLE狀態(tài),此時沒有傳輸操作,也沒有選中任何從模塊。·當(dāng)有傳輸要進行時,PSELx=1,PENABLE=0,系統(tǒng)進入SETUP狀態(tài),并只會在SETUP 狀態(tài)停留一個周期。當(dāng)PCLK的下一個上升沿時到來時,系統(tǒng)進入ENABLE 狀態(tài)。·系統(tǒng)進入ENABLE狀態(tài)時,維持之前在SETUP 狀態(tài)的PADDR、PSEL、PWRITE不變,并將PENABLE置為1。傳輸也只會在ENABLE狀態(tài)維持一個周期,在經(jīng)過SETUP與ENABLE狀態(tài)之后就已完成。之后如果沒有傳輸要進行,就進入IDLE狀態(tài)等待;如果有連續(xù)的傳輸,則進入SETUP狀態(tài)。V2.0 AHB是第二代AMBA協(xié)議最重要的一部分。AHB總線規(guī)范是AMBA總線規(guī)范的一部分,AMBA總線規(guī)范是ARM公司提出的總線規(guī)范,被大多數(shù)SoC設(shè)計采用,它規(guī)定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced Peripheral Bus)。AHB用于高性能、高時鐘頻率的系統(tǒng)結(jié)構(gòu),典型的應(yīng)用如ARM核與系統(tǒng)內(nèi)部的高速RAM、NAND FLASH、DMA、Bridge的連接。APB用于連接外部設(shè)備,對性能要求不高,而考慮低功耗問題。ASB是AHB的一種替代方案。
圖4?6 相比于APB,區(qū)分了地址周期和數(shù)據(jù)周期AHB總線強大之處在于它可以將微控制器(CPU)、高帶寬的片上RAM、高帶寬的外部存儲器接口、DMA總線控制器,以及各種AHB接口的控制器等連接起來構(gòu)成一個獨立的完整SOC系統(tǒng),還可以通過AHB-APB橋來連接APB總線系統(tǒng)。
圖4?7 通過AHB-APB橋來連接APB總線系統(tǒng)AHB總線由主設(shè)備Master、從設(shè)備Slave,內(nèi)部包括仲裁器,譯碼器,數(shù)據(jù)多路和地址控制多路組成。 ·主設(shè)備發(fā)起一次讀/寫操作,某一時刻只允許一個主設(shè)備使用總線。·從設(shè)備響應(yīng)一次讀/寫操作,通過地址映射選擇使用哪一個從設(shè)備。·仲裁器允許某一個主設(shè)備控制總線·譯碼器通過地址譯碼決定選擇哪一個從設(shè)備仲裁機制 仲裁機制保證了任意時刻只有一個master可以接入總線。arbiter決定哪個發(fā)出接入請求的master可以接入總線,這通過優(yōu)先級算法實現(xiàn)。AHB規(guī)范并沒有給出優(yōu)先級算法,設(shè)計者需要根據(jù)具體的系統(tǒng)要求定義。一般情況下arbiter不會中斷一個burst傳輸,將總線接入權(quán)讓給其他master。當(dāng)然未定義長度的burst傳輸是可以打斷的,這要看優(yōu)先級算法是如何規(guī)定的。如果一筆burst被打斷,master再度獲得接入權(quán)限時,會傳遞剩余的部分。如一筆長度為INCR8的傳輸在傳遞3 beat后被打斷,master再次獲得接入授權(quán)后,會繼續(xù)傳輸剩余的5 beat,剩余部分可以由一個SINGLE和一個INCR4組成,或者一個INCR。地址譯碼器 地址譯碼器用于為總線上每個slave提供選擇信號HSELx,選擇信號是通過組合邏輯對地址碼譯碼產(chǎn)生的。只有當(dāng)前的數(shù)據(jù)傳輸完成后(HREADY為高),slave才會采樣地址和控制信號以及HSELx。在一定條件下可能會出現(xiàn)這樣的情況:產(chǎn)生HSELx信號而HREADY為低,在當(dāng)前傳輸后slave會改變。每個slave最小的地址空間為1KB,所有的master的burst傳輸上限也是1KB,如此設(shè)計保證了不會出現(xiàn)地址越界問題。當(dāng)一個設(shè)計不會用到所有的地址空間時,可能出現(xiàn)訪問到一個不存在的地址的情況,這就需要增加一個附加的默認(rèn)slave來為上面的情況提供一個響應(yīng)。當(dāng)SEQ或NONSEQ傳輸訪問到一個不存在的地址,默認(rèn)slave應(yīng)該提供ERROR響應(yīng);當(dāng)IDLE或BUSY傳輸訪問到一個不存在的地址,默認(rèn)slave會響應(yīng)OKAY。地址譯碼器會帶有實現(xiàn)默認(rèn)slave的功能。表4?1 各個信號描述
|
Name
|
Source
|
To
|
Description
|
|
HCLK
|
clock source
|
各module
|
總線時鐘,上升沿采樣
|
|
HRESETn
|
reset controller
|
各module
|
總線復(fù)位,低電平有效
|
|
HADDR[31:0]
|
Master
|
Decoder mux to slave arbiter
|
32位系統(tǒng)地址總線
|
|
HTRANS[1:0]
|
Master
|
mux to slave
|
當(dāng)前傳輸類型NONSEQ, SEQ, IDLE, BUSY
|
|
HWRITE
|
Master
|
mux to slave
|
1為寫,0為讀
|
|
HSIZE[2:0]
|
Master
|
mux to slave
|
每一個transfer傳輸?shù)臄?shù)據(jù)大小,以字節(jié)為單位,最高支持1024位
|
|
HBURST[2:0]
|
Master
|
mux to slave
|
burst類型,支持4、8、16 burst,incrementing/wrapping
|
|
HPROT[3:0]
|
Master
|
mux to slave
|
保護控制信號,需要slave帶保護功能,一般不用
|
|
HWDATA[31:0]
|
Master
|
mux to slave
|
寫數(shù)據(jù)總線,Master到Slave
|
|
HRDATA[31:0]
|
Slave
|
mux to master
|
讀數(shù)據(jù)總線,Slave到Master
|
|
HREADY
|
Slave
|
mux to master
arbiter
|
高:Slave指出傳輸結(jié)束
低:Slave需延長傳輸周期
|
|
HRESP[1:0]
|
Slave
|
mux to master
arbiter
|
Slave發(fā)給Master的總線傳輸狀態(tài)OKAY, ERROR, RETRY, SPLIT
|
|
HSELx
|
Decoder
|
slave
|
slave選擇信號
|
HRESP[1:0] 響應(yīng)信號 傳輸響應(yīng)HRESP[1:0]00: OKAY01: ERROR10: RETRY傳輸未完成,請求主設(shè)備重新開始一個傳輸,arbiter會繼續(xù)使用通常的優(yōu)先級11: SPLIT傳輸未完成,請求主設(shè)備分離一次傳輸,arbiter會調(diào)整優(yōu)先級方案以便其他請求總線的主設(shè)備可以訪問總線表4?2 AHB仲裁信號
|
Name
|
Source
|
To
|
Description
|
|
HBUSREQx
|
Master
|
arbiter
|
master給仲裁器的請求獲得總線使用權(quán)的請求信號,最多支持16個master
|
|
HLOCKx
|
Master
|
arbiter
|
如果一個master希望自己在傳輸期間不希望丟掉總線,則需要向仲裁器發(fā)送這個鎖定信號
|
|
HGRANTx
|
arbiter
|
master
|
授權(quán)信號,當(dāng)前bus master x的優(yōu)先級最高。當(dāng)HREADY和HGRANTx同時為高時,master獲取系統(tǒng)總線的權(quán)利
|
|
HMASTER [3:0]
|
arbiter
|
具有split功能的slave
|
仲裁器為每一個master分配的ID,指出哪個主設(shè)備正在進行傳輸,提供進行split的信息,用于地址控制多路選擇哪個主設(shè)備接入總線。
|
|
HMASTLOCK
|
arbiter
|
具有split功能的slave
|
表示當(dāng)前的master正在執(zhí)行Locked操作。這個信號和HMASTER有這相同的時序
|
|
HSPLITx[15:0]
|
slave
|
arbiter
|
從設(shè)備用這個信號告訴仲裁器哪個主設(shè)備運行重新嘗試一次split傳輸,每一位對應(yīng)一個主設(shè)備
|
V3.0 AXI(Advanced eXtensible Interface)是一種總協(xié)議,該協(xié)議是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0協(xié)議中最重要的部分。·高性能、高帶寬、低延遲的片內(nèi)總線·地址/控制和數(shù)據(jù)相位是分離的,分離的讀寫數(shù)據(jù)通道??刂坪蛿?shù)據(jù)通道分離,就可以不等需要的操作完成,就發(fā)出下一個操作,流水線操作,數(shù)據(jù)吞吐量增加達到提速的作用。·單向通道體系結(jié)構(gòu),使得片上信息流只是以單方向傳輸,減少了延時,更小的面積,更低的功耗,獲得優(yōu)異的性能。AXI4 是第四代AMBA協(xié)議重要的一部分,AMBA4.0 包括AXI4.0、AXI4.0-lite、ACE4.0、AXI4.0-streamAXI4.0-lite是AXI的簡化版本,ACE4.0 是AXI緩存一致性擴展接口,AXI4.0-stream是ARM公司和Xilinx公司一起提出,主要用在FPGA進行以數(shù)據(jù)為主導(dǎo)的大量數(shù)據(jù)的傳輸應(yīng)用。· 適合高帶寬低延時設(shè)計,無需復(fù)雜的橋就實現(xiàn)高頻操作,向下兼容已有的AHB和APB接口。·分離地址/控制、數(shù)據(jù)相位·分離的讀寫數(shù)據(jù)通道,提供低功耗DMA·使用字節(jié)線支持非對齊的數(shù)據(jù)傳輸·使用基于burst的傳輸,只需傳輸首地址·支持多種傳輸方式,支持亂序傳輸·允許容易的添加寄存器來進行時序收斂AXI架構(gòu)分為5個獨立的傳輸通道,讀地址通道、讀數(shù)據(jù)通道、寫地址通道、寫數(shù)據(jù)通道、寫響應(yīng)通道。基于VALID/READY的握手機制數(shù)據(jù)傳輸協(xié)議,傳輸源端使用VALID表明地址/控制信號、數(shù)據(jù)是有效的,目的端使用READY表明自己能夠接受信息。數(shù)據(jù)總線可為(8/16/32/64/128/256/512/1024bit),最大為單次傳輸一個字節(jié)的數(shù)據(jù)。信號描述表4?3 全局信號
|
信號名
|
源
|
描述
|
|
ACLK
|
時鐘源
|
全局時鐘信號
|
|
ARESETn
|
復(fù)位源
|
全局復(fù)位信號,低有效
|
表4?4 寫地址通道信號
|
信號名
|
源
|
描述
|
|
AWID
|
主機
|
寫地址ID,用來標(biāo)志一組寫信號
|
|
AWADDR
|
主機
|
寫地址,給出一次寫突發(fā)傳輸?shù)膶懙刂?/span>
|
|
AWLEN
|
主機
|
突發(fā)長度,給出突發(fā)傳輸?shù)拇螖?shù)
|
|
AWSIZE
|
主機
|
突發(fā)大小,給出每次突發(fā)傳輸?shù)淖止?jié)數(shù)
|
|
AWBURST
|
主機
|
突發(fā)類型
|
|
AWLOCK
|
主機
|
總線鎖信號,可提供操作的原子性
|
|
AWCACHE
|
主機
|
內(nèi)存類型,表明一次傳輸是怎樣通過系統(tǒng)的
|
|
AWPROT
|
主機
|
保護類型,表明一次傳輸?shù)奶貦?quán)級及安全等級
|
|
AWQOS
|
主機
|
質(zhì)量服務(wù)QoS
|
|
AWREGION
|
主機
|
區(qū)域標(biāo)志,能實現(xiàn)單一物理接口對應(yīng)的多個邏輯接口
|
|
AWUSER
|
主機
|
用戶自定義信號
|
|
AWVALID
|
主機
|
有效信號,表明此通道的地址控制信號有效
|
|
AWREADY
|
從機
|
表明“從”可以接收地址和對應(yīng)的控制信號
|
表4?5 寫數(shù)據(jù)通道信號
|
信號名
|
源
|
描述
|
|
WID
|
主機
|
一次寫傳輸?shù)腎D tag
|
|
WDATA
|
主機
|
寫數(shù)據(jù)
|
|
WSTRB
|
主機
|
寫數(shù)據(jù)有效的字節(jié)線,用來表明哪8bits數(shù)據(jù)是有效的
|
|
WLAST
|
主機
|
表明此次傳輸是最后一個突發(fā)傳輸
|
|
WUSER
|
主機
|
用戶自定義信號
|
|
WVALID
|
主機
|
寫有效,表明此次寫有效
|
|
WREADY
|
從機
|
表明從機可以接收寫數(shù)據(jù)
|
表4?6 寫響應(yīng)通道信號
|
信號名
|
源
|
描述
|
|
BID
|
從機
|
寫響應(yīng)ID tag
|
|
BRESP
|
從機
|
寫響應(yīng),表明寫傳輸?shù)臓顟B(tài)
|
|
BUSER
|
從機
|
用戶自定義
|
|
BVALID
|
從機
|
寫響應(yīng)有效
|
|
BREADY
|
主機
|
表明主機能夠接收寫響應(yīng)
|
表4?7讀地址通道信號
|
信號名
|
源
|
描述
|
|
ARID
|
主機
|
讀地址ID,用來標(biāo)志一組寫信號
|
|
ARADDR
|
主機
|
讀地址,給出一次寫突發(fā)傳輸?shù)淖x地址
|
|
ARLEN
|
主機
|
突發(fā)長度,給出突發(fā)傳輸?shù)拇螖?shù)
|
|
ARSIZE
|
主機
|
突發(fā)大小,給出每次突發(fā)傳輸?shù)淖止?jié)數(shù)
|
|
ARBURST
|
主機
|
突發(fā)類型
|
|
ARLOCK
|
主機
|
總線鎖信號,可提供操作的原子性
|
|
ARCACHE
|
主機
|
內(nèi)存類型,表明一次傳輸是怎樣通過系統(tǒng)的
|
|
ARPROT
|
主機
|
保護類型,表明一次傳輸?shù)奶貦?quán)級及安全等級
|
|
ARQOS
|
主機
|
質(zhì)量服務(wù)QoS
|
|
ARREGION
|
主機
|
區(qū)域標(biāo)志,能實現(xiàn)單一物理接口對應(yīng)的多個邏輯接口
|
|
ARUSER
|
主機
|
用戶自定義信號
|
|
ARVALID
|
主機
|
有效信號,表明此通道的地址控制信號有效
|
|
ARREADY
|
從機
|
表明“從”可以接收地址和對應(yīng)的控制信號
|
表 4?8 讀數(shù)據(jù)通道信號
|
信號名
|
源
|
描述
|
|
RID
|
從機
|
讀ID tag
|
|
RDATA
|
從機
|
讀數(shù)據(jù)
|
|
RRESP
|
從機
|
讀響應(yīng),表明讀傳輸?shù)臓顟B(tài)
|
|
RLAST
|
從機
|
表明讀突發(fā)的最后一次傳輸
|
|
RUSER
|
從機
|
用戶自定義
|
|
RVALID
|
從機
|
表明此通道信號有效
|
|
RREADY
|
主機
|
表明主機能夠接收讀數(shù)據(jù)和響應(yīng)信息
|
表4?9 低功耗接口信號
|
信號名
|
源
|
描述
|
|
CSYSREQ
|
時鐘控制器
|
系統(tǒng)退出低功耗請求,此信號從“時鐘控制器”到“外設(shè)”
|
|
CSYSACK
|
外設(shè)
|
退出低功耗狀態(tài)確認(rèn)
|
|
CACTIVE
|
外設(shè)
|
外設(shè)請求時鐘有效
|
每個數(shù)據(jù)通道有獨立的xVALID/xREADY握手信號對。VALID與READY信號作為一對握手信號,為防止死鎖,進行讀操作時,必須等讀地址通道握手完成,讀數(shù)據(jù)通道才可進行下一步操作。進行寫操作時,寫地址通道與寫數(shù)據(jù)通道互相獨立,但同樣必須等最后一組數(shù)據(jù)寫完成寫響應(yīng)通道握手完成。AXI協(xié)議是基于burst的,主機只給出突發(fā)傳輸?shù)牡谝粋€字節(jié)的地址,從機必須計算突發(fā)傳輸后續(xù)的地址。突發(fā)傳輸不能跨4KB邊界(防止突發(fā)跨越兩個從機的邊界,也限制了從機所需支持的地址自增數(shù))。· 突發(fā)長度 ARLEN[7:0]決定讀傳輸?shù)耐话l(fā)長度,AWLEN[7:0]決定寫傳輸?shù)耐话l(fā)長度。AXI3只支持1~16次的突發(fā)傳輸(Burst_length=AxLEN[3:0]+1),AXI4擴展突發(fā)長度支持INCR突發(fā)類型為1~256次傳輸,對于其他的傳輸類型依然保持1~16次突發(fā)傳輸(Burst_Length=AxLEN[7:0]+1)。·傳輸規(guī)則 wraping burst ,burst長度必須是2,4,8,16, burst不能跨4KB邊界,不支持提前終止burst傳輸。·突發(fā)大小 ARSIZE[2:0],讀突發(fā)傳輸;AWSIZE[2:0],寫突發(fā)傳輸。AxSIZE[2:0] bytes in transfer‘b000 1‘b001 2‘b010 4‘b011 8‘b100 16‘b101 32‘b110 64‘b111 128·突發(fā)類型 FIXED:突發(fā)傳輸過程中地址固定,用于FIFO訪問INCR:增量突發(fā),傳輸過程中,地址遞增。增加量取決AxSIZE的值。WRAP:回環(huán)突發(fā),和增量突發(fā)類似,但會在特定高地址的邊界處回到低地址處。回環(huán)突發(fā)的長度只能是2,4,8,16次傳輸,傳輸首地址和每次傳輸?shù)拇笮R。最低的地址整個傳輸?shù)臄?shù)據(jù)大小對齊?;丨h(huán)邊界等于(AxSIZE*AxLEN)。AxBURST[1:0] burst type‘b00 FIXED‘b01 INCR‘b10 WRAP‘b11 ReservedStart_Address=AxADDRNumber_Bytes=2^AxSIZEBurst_Length=AxLEN+1Aligned_Addr=(INT(Start_Address/Number_Bytes))xNumber_Bytes。//INT表示向下取整。對于INCR突發(fā)和WRAP突發(fā)但沒有到達回環(huán)邊界,地址由下述方程決定:Address_N=Aligned_Address+(N-1)xNumber_BytesWRAP突發(fā),突發(fā)邊界:Wrap_Boundary=(INT(Start_Address/(Number_Bytes x Burst_Length)))x(Number_Bytes x Burst_Length)讀寫響應(yīng)結(jié)構(gòu)讀傳輸?shù)捻憫?yīng)信息是附加在讀數(shù)據(jù)通道上的,寫傳輸?shù)捻憫?yīng)在寫響應(yīng)通道。RRESP[1:0],讀傳輸BRESP[1:0],寫傳輸OKAY(‘b00):正常訪問成功EXOKAY(‘b01):Exclusive 訪問成功SLVERR(‘b10):從機錯誤。表明訪問已經(jīng)成功到了從機,但從機希望返回一個錯誤的情況給主機。DECERR(‘b11):譯碼錯誤。一般由互聯(lián)組件給出,表明沒有對應(yīng)的從機地址。
1.1.2AMBA概述
AMBA (Advanced Microcontroller Bus Architecture) 高級處理器總線架構(gòu)AHB (Advanced High-performance Bus) 高級高性能總線ASB (Advanced System Bus) 高級系統(tǒng)總線APB (Advanced Peripheral Bus) 高級外圍總線AXI (Advanced eXtensible Interface) 高級可拓展接口這些內(nèi)容加起來就定義出一套為了高性能SoC而設(shè)計的片上通信的標(biāo)準(zhǔn)。AHB主要是針對高效率、高頻寬及快速系統(tǒng)模塊所設(shè)計的總線,它可以連接如微處理器、芯片上或芯片外的內(nèi)存模塊和DMA等高效率模塊。APB主要用在低速且低功率的外圍,可針對外圍設(shè)備作功率消耗及復(fù)雜接口的最佳化。APB在AHB和低帶寬的外圍設(shè)備之間提供了通信的橋梁,所以APB是AHB或ASB的二級拓展總線。AXI:高速度、高帶寬,管道化互聯(lián),單向通道,只需要首地址,讀寫并行,支持亂序,支持非對齊操作,有效支持初始延遲較高的外設(shè),連線非常多。表 4?10 幾種AMBA總線的性能對比分析
|
總線
|
AXI
|
AHB
|
APB
|
|
總線寬度
|
8, 16, 32, 64, 128, 256, 512, 1024
|
32, 64, 128, 256
|
8, 16, 32
|
|
地址寬度
|
32
|
32
|
32
|
|
通道特性
|
讀寫地址通道、讀寫數(shù)據(jù)通道均獨立
|
讀寫地址通道共用讀寫數(shù)據(jù)通道
|
讀寫地址通道共用讀寫數(shù)據(jù)通道不支持讀寫并行操作
|
|
體系結(jié)構(gòu)
|
多主/從設(shè)備仲裁機制
|
多主/從設(shè)備仲裁機制
|
單主設(shè)備(橋)/多從設(shè)備無仲裁
|
|
數(shù)據(jù)協(xié)議
|
支持流水/分裂傳輸支持猝發(fā)傳輸支持亂序訪問字節(jié)/半字/字大小端對齊非對齊操作
|
支持流水/分裂傳輸支持猝發(fā)傳輸支持亂序訪問字節(jié)/半字/字大小端對齊不支持非對齊操作
|
一次讀/寫傳輸占兩個時鐘周期不支持突發(fā)傳輸
|
|
傳輸方式
|
支持讀寫并行操作
|
不支持讀寫并行操作
|
不支持讀寫并行操作
|
|
時序
|
同步
|
同步
|
同步
|
|
互聯(lián)
|
多路
|
多路
|
無定義
|
1.1.3AHB總線
AHB的組成Master:能夠發(fā)起讀寫操作,提供地址和控制信號,同一時間只有1個Master會被激活。Slave:在給定的地址范圍內(nèi)對讀寫操作作響應(yīng),并對Master返回成功、失敗或者等待等狀態(tài)。Arbiter:負(fù)責(zé)保證總線上一次只有1個Master在工作。仲裁協(xié)議是規(guī)定的,但是仲裁算法可以根據(jù)應(yīng)用決定。Decoder:負(fù)責(zé)對地址進行解碼,并提供片選信號到各Slave。每個AHB都需要1個仲裁器和1個中央解碼器。
圖4?8 AHB的組成AHB基本信號HADDR:32位系統(tǒng)地址總線HTRANS:M指示傳輸狀態(tài),NONSEQ、SEQ、IDLE、BUSYHWRITE:傳輸方向1-寫,0-讀HSIZE:傳輸單位HBURST:傳輸?shù)腷urst類型HWDATA:寫數(shù)據(jù)總線,從M寫到SHREADY:S應(yīng)答M是否讀寫操作傳輸完成,1-傳輸完成,0-需延長傳輸周期。需要注意的是HREADY作為總線上的信號,它是M和S的輸入;同時每個S需要輸出自HREADY。所以對于S會有兩個HREADY信號,一個來自總線的輸入,一個自己給到多路器的輸出。HRESP:S應(yīng)答當(dāng)前傳輸狀態(tài),OKAY、ERROR、RETRY、SPLIT。HRDATA:讀數(shù)據(jù)總線,從S讀到M。AHB基本傳輸兩個階段地址周期(AP),只有一個cycle數(shù)據(jù)周期(DP),由HREADY信號決定需要幾個cycle流水線傳送先是地址周期,然后是數(shù)據(jù)周期AHB突發(fā)傳輸與AXI突發(fā)傳輸?shù)奶攸cAHB協(xié)議需要一次突發(fā)傳輸?shù)乃械刂?,地址與數(shù)據(jù)鎖定對應(yīng)關(guān)系,后一次突發(fā)傳輸必須在前次傳輸完成才能進行。AXI只需要一次突發(fā)的首地址,可以連續(xù)發(fā)送多個突發(fā)傳輸首地址而無需等待前次突發(fā)傳輸完成,并且多個數(shù)據(jù)可以交錯傳遞,此特征大大提高了總線的利用率。AHB總線與AXI總線均適用于高性能、高帶寬的SoC系統(tǒng),但AXI具有更好的靈活性,而且能夠讀寫通道并行發(fā)送,互不影響;更重要的是,AXI總線支持亂序傳輸,能夠有效地利用總線的帶寬,平衡內(nèi)部系統(tǒng)。因此SoC系統(tǒng)中,均以AXI總線為主總線,通過橋連接AHB總線與APB總線,這樣能夠增加SoC系統(tǒng)的靈活性,更加合理地把不同特征IP分配到總線上。
1.1.4APB總線
主要應(yīng)用在低帶寬的外設(shè)上,如UART、 I2C,它的架構(gòu)不像AHB總線是多主設(shè)備的架構(gòu),APB總線的唯一主設(shè)備是APB橋(與AXI或APB相連),因此不需要仲裁一些Request/grant信號。APB的協(xié)議也十分簡單,甚至不是流水的操作,固定兩個時鐘周期完成一次讀或?qū)懙牟僮鳌F涮匦园ǎ簝蓚€時鐘周期傳輸,無需等待周期和回應(yīng)信號,控制邏輯簡單,只有四個控制信號。APB上的傳輸可用如圖所示的狀態(tài)圖來說明。1、系統(tǒng)初始化為IDLE狀態(tài),此時沒有傳輸操作,也沒有選中任何從模塊。2、當(dāng)有傳輸要進行時,PSELx=1,,PENABLE=0,系統(tǒng)進入SETUP狀態(tài),并只會在SETUP狀態(tài)停留一個周期。當(dāng)PCLK的下一個上升沿到來時,系統(tǒng)進入ENABLE狀態(tài)。3、系統(tǒng)進入ENABLE狀態(tài)時,維持之前在SETUP狀態(tài)的PADDR、PSEL、PWRITE不變,并將PENABLE置為1。傳輸也只會在ENABLE狀態(tài)維持一個周期,在經(jīng)過SETUP與ENABLE狀態(tài)之后就已完成。之后如果沒有傳輸要進行,就進入IDLE狀態(tài)等待;如果有連續(xù)的傳輸,則進入SETUP狀態(tài)。
圖4?9 APB總線
本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。