在基于IP復(fù)用的SoC設(shè)計(jì)中,片上總線設(shè)計(jì)是最關(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ī)范包括四個(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ū)懙牟僮?。其特性包括:兩個(gè)時(shí)鐘周期傳輸,無需等待周期和回應(yīng)信號(hào),控制邏輯簡(jiǎn)單,只有四個(gè)控制信號(hào)。傳輸可用如下狀態(tài)圖表示,
圖4?5?傳輸狀態(tài)圖 ·系統(tǒng)初始化為IDLE狀態(tài),此時(shí)沒有傳輸操作,也沒有選中任何從模塊。 ·當(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í)到來時(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)過SETUP與ENABLE狀態(tà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ì)性能要求不高,而考慮低功耗問題。ASB是AHB的一種替代方案。
圖4?6?相比于APB,區(qū)分了地址周期和數(shù)據(jù)周期 AHB總線強(qiáng)大之處在于它可以將微控制器(CPU)、高帶寬的片上RAM、高帶寬的外部存儲(chǔ)器接口、DMA總線控制器,以及各種AHB接口的控制器等連接起來構(gòu)成一個(gè)獨(dú)立的完整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í)刻只允許一個(gè)主設(shè)備使用總線。 ·從設(shè)備響應(yīng)一次讀/寫操作,通過地址映射選擇使用哪一個(gè)從設(shè)備。 ·仲裁器允許某一個(gè)主設(shè)備控制總線 ·譯碼器通過地址譯碼決定選擇哪一個(gè)從設(shè)備 仲裁機(jī)制? ?仲裁機(jī)制保證了任意時(shí)刻只有一個(gè)master可以接入總線。arbiter決定哪個(gè)發(fā)出接入請(qǐng)求的master可以接入總線,這通過優(yōu)先級(jí)算法實(shí)現(xiàn)。AHB規(guī)范并沒有給出優(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)是通過組合邏輯對(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)地址越界問題。當(dāng)一個(gè)設(shè)計(jì)不會(huì)用到所有的地址空間時(shí),可能出現(xiàn)訪問到一個(gè)不存在的地址的情況,這就需要增加一個(gè)附加的默認(rèn)slave來為上面的情況提供一個(gè)響應(yīng)。當(dāng)SEQ或NONSEQ傳輸訪問到一個(gè)不存在的地址,默認(rèn)slave應(yīng)該提供ERROR響應(yīng);當(dāng)IDLE或BUSY傳輸訪問到一個(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)前傳輸類型NONSEQ, SEQ, IDLE, BUSY |
HWRITE | Master | mux to slave | 1為寫,0為讀 |
HSIZE[2:0] | Master | mux to slave | 每一個(gè)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 | 保護(hù)控制信號(hào),需要slave帶保護(hù)功能,一般不用 |
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需延長(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: OKAY 01: ERROR 10: RETRY 傳輸未完成,請(qǐng)求主設(shè)備重新開始一個(gè)傳輸,arbiter會(huì)繼續(xù)使用通常的優(yōu)先級(jí) 11: SPLIT 傳輸未完成,請(qǐng)求主設(shè)備分離一次傳輸,arbiter會(huì)調(diào)整優(yōu)先級(jí)方案以便其他請(qǐng)求總線的主設(shè)備可以訪問總線 表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ù)相位是分離的,分離的讀寫數(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ì),無需復(fù)雜的橋就實(shí)現(xiàn)高頻操作,向下兼容已有的AHB和APB接口。 ·分離地址/控制、數(shù)據(jù)相位 ·分離的讀寫數(shù)據(jù)通道,提供低功耗DMA ·使用字節(jié)線支持非對(duì)齊的數(shù)據(jù)傳輸 ·使用基于burst的傳輸,只需傳輸首地址 ·支持多種傳輸方式,支持亂序傳輸 ·允許容易的添加寄存器來進(jìn)行時(shí)序收斂 AXI架構(gòu)分為5個(gè)獨(dú)立的傳輸通道,讀地址通道、讀數(shù)據(jù)通道、寫地址通道、寫數(shù)據(jù)通道、寫響應(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?寫地址通道信號(hào)
?
信號(hào)名 | 源 | 描述 |
AWID | 主機(jī) | 寫地址ID,用來標(biāo)志一組寫信號(hào) |
AWADDR | 主機(jī) | 寫地址,給出一次寫突發(fā)傳輸?shù)膶懙刂?/td> |
AWLEN | 主機(jī) | 突發(fā)長(zhǎng)度,給出突發(fā)傳輸?shù)拇螖?shù) |
AWSIZE | 主機(jī) | 突發(fā)大小,給出每次突發(fā)傳輸?shù)淖止?jié)數(shù) |
AWBURST | 主機(jī) | 突發(fā)類型 |
AWLOCK | 主機(jī) | 總線鎖信號(hào),可提供操作的原子性 |
AWCACHE | 主機(jī) | 內(nèi)存類型,表明一次傳輸是怎樣通過系統(tǒng)的 |
AWPROT | 主機(jī) | 保護(hù)類型,表明一次傳輸?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?寫數(shù)據(jù)通道信號(hào)
?
信號(hào)名 | 源 | 描述 |
WID | 主機(jī) | 一次寫傳輸?shù)腎D tag |
WDATA | 主機(jī) | 寫數(shù)據(jù) |
WSTRB | 主機(jī) | 寫數(shù)據(jù)有效的字節(jié)線,用來表明哪8bits數(shù)據(jù)是有效的 |
WLAST | 主機(jī) | 表明此次傳輸是最后一個(gè)突發(fā)傳輸 |
WUSER | 主機(jī) | 用戶自定義信號(hào) |
WVALID | 主機(jī) | 寫有效,表明此次寫有效 |
WREADY | 從機(jī) | 表明從機(jī)可以接收寫數(shù)據(jù) |
表4?6?寫響應(yīng)通道信號(hào)
信號(hào)名 | 源 | 描述 |
BID | 從機(jī) | 寫響應(yīng)ID tag |
BRESP | 從機(jī) | 寫響應(yīng),表明寫傳輸?shù)臓顟B(tài) |
BUSER | 從機(jī) | 用戶自定義 |
BVALID | 從機(jī) | 寫響應(yīng)有效 |
BREADY | 主機(jī) | 表明主機(jī)能夠接收寫響應(yīng) |
表4?7讀地址通道信號(hào)
信號(hào)名 | 源 | 描述 |
ARID | 主機(jī) | 讀地址ID,用來標(biāo)志一組寫信號(hào) |
ARADDR | 主機(jī) | 讀地址,給出一次寫突發(fā)傳輸?shù)淖x地址 |
ARLEN | 主機(jī) | 突發(fā)長(zhǎng)度,給出突發(fā)傳輸?shù)拇螖?shù) |
ARSIZE | 主機(jī) | 突發(fā)大小,給出每次突發(fā)傳輸?shù)淖止?jié)數(shù) |
ARBURST | 主機(jī) | 突發(fā)類型 |
ARLOCK | 主機(jī) | 總線鎖信號(hào),可提供操作的原子性 |
ARCACHE | 主機(jī) | 內(nèi)存類型,表明一次傳輸是怎樣通過系統(tǒng)的 |
ARPROT | 主機(jī) | 保護(hù)類型,表明一次傳輸?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)行寫操作時(shí),寫地址通道與寫數(shù)據(jù)通道互相獨(dú)立,但同樣必須等最后一組數(shù)據(jù)寫完成寫響應(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]決定寫傳輸?shù)耐话l(fā)長(zhǎng)度。AXI3只支持1~16次的突發(fā)傳輸(Burst_length=AxLEN[3:0]+1),AXI4擴(kuò)展突發(fā)長(zhǎng)度支持INCR突發(fā)類型為1~256次傳輸,對(duì)于其他的傳輸類型依然保持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],寫突發(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ì)在特定高地址的邊界處回到低地址處。回環(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
Reserved Start_Address=AxADDR Number_Bytes=2^AxSIZE Burst_Length=AxLEN+1 Aligned_Addr=(INT(Start_Address/Number_Bytes))xNumber_Bytes。//INT表示向下取整。
對(duì)于INCR突發(fā)和WRAP突發(fā)但沒有到達(dá)回環(huán)邊界,地址由下述方程決定: Address_N=Aligned_Address+(N-1)xNumber_Bytes WRAP突發(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ī)錯(cuò)誤。表明訪問已經(jīng)成功到了從機(jī),但從機(jī)希望返回一個(gè)錯(cuò)誤的情況給主機(jī)。 DECERR(‘b11):譯碼錯(cuò)誤。一般由互聯(lián)組件給出,表明沒有對(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)容加起來就定義出一套為了高性能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),單向通道,只需要首地址,讀寫并行,支持亂序,支持非對(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 |
通道特性 | 讀寫地址通道、讀寫數(shù)據(jù)通道均獨(dú)立 | 讀寫地址通道共用讀寫數(shù)據(jù)通道 | 讀寫地址通道共用讀寫數(shù)據(jù)通道不支持讀寫并行操作 |
體系結(jié)構(gòu) | 多主/從設(shè)備仲裁機(jī)制 | 多主/從設(shè)備仲裁機(jī)制 | 單主設(shè)備(橋)/多從設(shè)備無仲裁 |
數(shù)據(jù)協(xié)議 | 支持流水/分裂傳輸支持猝發(fā)傳輸支持亂序訪問字節(jié)/半字/字大小端對(duì)齊非對(duì)齊操作 | 支持流水/分裂傳輸支持猝發(fā)傳輸支持亂序訪問字節(jié)/半字/字大小端對(duì)齊不支持非對(duì)齊操作 | 一次讀/寫傳輸占兩個(gè)時(shí)鐘周期不支持突發(fā)傳輸 |
傳輸方式 | 支持讀寫并行操作 | 不支持讀寫并行操作 | 不支持讀寫并行操作 |
時(shí)序 | 同步 | 同步 | 同步 |
互聯(lián) | 多路 | 多路 | 無定義 |
1.1.3AHB總線
AHB的組成 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。 每個(gè)AHB都需要1個(gè)仲裁器和1個(gè)中央解碼器。
圖4?8?AHB的組成 AHB基本信號(hào) HADDR:32位系統(tǒng)地址總線 HTRANS:M指示傳輸狀態(tài),NONSEQ、SEQ、IDLE、BUSY HWRITE:傳輸方向1-寫,0-讀 HSIZE:傳輸單位 HBURST:傳輸?shù)腷urst類型 HWDATA:寫數(shù)據(jù)總線,從M寫到S HREADY:S應(yīng)答M是否讀寫操作傳輸完成,1-傳輸完成,0-需延長(zhǎng)傳輸周期。需要注意的是HREADY作為總線上的信號(hào),它是M和S的輸入;同時(shí)每個(gè)S需要輸出自HREADY。所以對(duì)于S會(huì)有兩個(gè)HREADY信號(hào),一個(gè)來自總線的輸入,一個(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ā)傳輸首地址而無需等待前次突發(fā)傳輸完成,并且多個(gè)數(shù)據(jù)可以交錯(cuò)傳遞,此特征大大提高了總線的利用率。 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信號(hào)。APB的協(xié)議也十分簡(jiǎn)單,甚至不是流水的操作,固定兩個(gè)時(shí)鐘周期完成一次讀或?qū)懙牟僮鳌F涮匦园ǎ簝蓚€(gè)時(shí)鐘周期傳輸,無需等待周期和回應(yīng)信號(hào),控制邏輯簡(jiǎn)單,只有四個(gè)控制信號(hào)。APB上的傳輸可用如圖所示的狀態(tài)圖來說明。 1、系統(tǒng)初始化為IDLE狀態(tài),此時(shí)沒有傳輸操作,也沒有選中任何從模塊。 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í),系統(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)過SETUP與ENABLE狀態(tài)之后就已完成。之后如果沒有傳輸要進(jìn)行,就進(jìn)入IDLE狀態(tài)等待;如果有連續(xù)的傳輸,則進(jìn)入SETUP狀態(tài)。
圖4?9?APB總線
編輯:黃飛
?
評(píng)論
查看更多