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