在基于IP復用的SoC設(shè)計中,片上總線設(shè)計是最關(guān)鍵的問題。為此,業(yè)界出現(xiàn)了很多片上總線標準。其中,由ARM公司推出的AMBA片上總線受到了廣大IP開發(fā)商和SoC系統(tǒng)集成者的青睞,已成為一種流行的工業(yè)標準片上結(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,為適應高吞吐量傳輸和調(diào)試引入AXI和ATB,增加高級可擴展接口,而AHB協(xié)議縮減為AHB-lite,APB協(xié)議增加了PREADY和PSLVERR,ASB由于設(shè)計復雜而不再使用; ·AMBA 4,AXI得到了增強,引入QOS和long burst的支持,根據(jù)應用不同可選AXI4,AXI4-lite,AXI4-stream,同時為滿足復雜SOC的操作一致性引入ACE和ACE-lite協(xié)議,APB和ATB也同時得到增強,比如APB加入了PPROT和PSTRB,另外為改善總線數(shù)據(jù)傳輸引入QVN協(xié)議; ·適應更加復雜的高速NOC設(shè)計,引入環(huán)形總線協(xié)議,推出的AMBA CHI協(xié)議。 V1.0 ASB、APB是第一代AMBA協(xié)議的一部分。主要應用在低帶寬的外設(shè)上,如UART、 I2C,它的架構(gòu)不像AHB總線是多主設(shè)備的架構(gòu),APB總線的唯一主設(shè)備是APB橋(與AXI或APB相連),因此不需要仲裁一些Request/grant信號。APB的協(xié)議也十分簡單,甚至不是流水的操作,固定兩個時鐘周期完成一次讀或?qū)懙牟僮?。其特性包括:兩個時鐘周期傳輸,無需等待周期和回應信號,控制邏輯簡單,只有四個控制信號。傳輸可用如下狀態(tài)圖表示,
圖4?5?傳輸狀態(tài)圖 ·系統(tǒng)初始化為IDLE狀態(tài),此時沒有傳輸操作,也沒有選中任何從模塊。 ·當有傳輸要進行時,PSELx=1,PENABLE=0,系統(tǒng)進入SETUP狀態(tài),并只會在SETUP 狀態(tài)停留一個周期。當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),典型的應用如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è)備響應一次讀/寫操作,通過地址映射選擇使用哪一個從設(shè)備。 ·仲裁器允許某一個主設(shè)備控制總線 ·譯碼器通過地址譯碼決定選擇哪一個從設(shè)備 仲裁機制? ?仲裁機制保證了任意時刻只有一個master可以接入總線。arbiter決定哪個發(fā)出接入請求的master可以接入總線,這通過優(yōu)先級算法實現(xiàn)。AHB規(guī)范并沒有給出優(yōu)先級算法,設(shè)計者需要根據(jù)具體的系統(tǒng)要求定義。一般情況下arbiter不會中斷一個burst傳輸,將總線接入權(quán)讓給其他master。當然未定義長度的burst傳輸是可以打斷的,這要看優(yōu)先級算法是如何規(guī)定的。如果一筆burst被打斷,master再度獲得接入權(quán)限時,會傳遞剩余的部分。如一筆長度為INCR8的傳輸在傳遞3 beat后被打斷,master再次獲得接入授權(quán)后,會繼續(xù)傳輸剩余的5 beat,剩余部分可以由一個SINGLE和一個INCR4組成,或者一個INCR。 地址譯碼器? ?地址譯碼器用于為總線上每個slave提供選擇信號HSELx,選擇信號是通過組合邏輯對地址碼譯碼產(chǎn)生的。只有當前的數(shù)據(jù)傳輸完成后(HREADY為高),slave才會采樣地址和控制信號以及HSELx。在一定條件下可能會出現(xiàn)這樣的情況:產(chǎn)生HSELx信號而HREADY為低,在當前傳輸后slave會改變。每個slave最小的地址空間為1KB,所有的master的burst傳輸上限也是1KB,如此設(shè)計保證了不會出現(xiàn)地址越界問題。當一個設(shè)計不會用到所有的地址空間時,可能出現(xiàn)訪問到一個不存在的地址的情況,這就需要增加一個附加的默認slave來為上面的情況提供一個響應。當SEQ或NONSEQ傳輸訪問到一個不存在的地址,默認slave應該提供ERROR響應;當IDLE或BUSY傳輸訪問到一個不存在的地址,默認slave會響應OKAY。地址譯碼器會帶有實現(xiàn)默認slave的功能。 表4?1?各個信號描述
?
Name | Source | To | Description |
HCLK | clock source | 各module | 總線時鐘,上升沿采樣 |
HRESETn | reset controller | 各module | 總線復位,低電平有效 |
HADDR[31:0] | Master | Decoder mux to slave arbiter | 32位系統(tǒng)地址總線 |
HTRANS[1:0] | Master | mux to slave | 當前傳輸類型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]? 響應信號 ? ? ? ?傳輸響應HRESP[1:0] 00: OKAY 01: ERROR 10: 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)信號,當前bus master x的優(yōu)先級最高。當HREADY和HGRANTx同時為高時,master獲取系統(tǒng)總線的權(quán)利 |
HMASTER [3:0] | arbiter | 具有split功能的slave | 仲裁器為每一個master分配的ID,指出哪個主設(shè)備正在進行傳輸,提供進行split的信息,用于地址控制多路選擇哪個主設(shè)備接入總線。 |
HMASTLOCK | arbiter | 具有split功能的slave | 表示當前的master正在執(zhí)行Locked操作。這個信號和HMASTER有這相同的時序 |
HSPLITx[15:0] | slave | arbiter | 從設(shè)備用這個信號告訴仲裁器哪個主設(shè)備運行重新嘗試一次split傳輸,每一位對應一個主設(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ù)為主導的大量數(shù)據(jù)的傳輸應用。 ·? ? ?適合高帶寬低延時設(shè)計,無需復雜的橋就實現(xiàn)高頻操作,向下兼容已有的AHB和APB接口。 ·分離地址/控制、數(shù)據(jù)相位 ·分離的讀寫數(shù)據(jù)通道,提供低功耗DMA ·使用字節(jié)線支持非對齊的數(shù)據(jù)傳輸 ·使用基于burst的傳輸,只需傳輸首地址 ·支持多種傳輸方式,支持亂序傳輸 ·允許容易的添加寄存器來進行時序收斂 AXI架構(gòu)分為5個獨立的傳輸通道,讀地址通道、讀數(shù)據(jù)通道、寫地址通道、寫數(shù)據(jù)通道、寫響應通道。基于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 | 復位源 | 全局復位信號,低有效 |
?
表4?4?寫地址通道信號
?
信號名 | 源 | 描述 |
AWID | 主機 | 寫地址ID,用來標志一組寫信號 |
AWADDR | 主機 | 寫地址,給出一次寫突發(fā)傳輸?shù)膶懙刂?/td> |
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ì)量服務QoS |
AWREGION | 主機 | 區(qū)域標志,能實現(xiàn)單一物理接口對應的多個邏輯接口 |
AWUSER | 主機 | 用戶自定義信號 |
AWVALID | 主機 | 有效信號,表明此通道的地址控制信號有效 |
AWREADY | 從機 | 表明“從”可以接收地址和對應的控制信號 |
?
表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?寫響應通道信號
信號名 | 源 | 描述 |
BID | 從機 | 寫響應ID tag |
BRESP | 從機 | 寫響應,表明寫傳輸?shù)臓顟B(tài) |
BUSER | 從機 | 用戶自定義 |
BVALID | 從機 | 寫響應有效 |
BREADY | 主機 | 表明主機能夠接收寫響應 |
表4?7讀地址通道信號
信號名 | 源 | 描述 |
ARID | 主機 | 讀地址ID,用來標志一組寫信號 |
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ì)量服務QoS |
ARREGION | 主機 | 區(qū)域標志,能實現(xiàn)單一物理接口對應的多個邏輯接口 |
ARUSER | 主機 | 用戶自定義信號 |
ARVALID | 主機 | 有效信號,表明此通道的地址控制信號有效 |
ARREADY | 從機 | 表明“從”可以接收地址和對應的控制信號 |
表?4?8?讀數(shù)據(jù)通道信號
信號名 | 源 | 描述 |
RID | 從機 | 讀ID tag |
RDATA | 從機 | 讀數(shù)據(jù) |
RRESP | 從機 | 讀響應,表明讀傳輸?shù)臓顟B(tài) |
RLAST | 從機 | 表明讀突發(fā)的最后一次傳輸 |
RUSER | 從機 | 用戶自定義 |
RVALID | 從機 | 表明此通道信號有效 |
RREADY | 主機 | 表明主機能夠接收讀數(shù)據(jù)和響應信息 |
表4?9?低功耗接口信號
信號名 | 源 | 描述 |
CSYSREQ | 時鐘控制器 | 系統(tǒng)退出低功耗請求,此信號從“時鐘控制器”到“外設(shè)” |
CSYSACK | 外設(shè) | 退出低功耗狀態(tài)確認 |
CACTIVE | 外設(shè) | 外設(shè)請求時鐘有效 |
?
每個數(shù)據(jù)通道有獨立的xVALID/xREADY握手信號對。 VALID與READY信號作為一對握手信號,為防止死鎖,進行讀操作時,必須等讀地址通道握手完成,讀數(shù)據(jù)通道才可進行下一步操作。進行寫操作時,寫地址通道與寫數(shù)據(jù)通道互相獨立,但同樣必須等最后一組數(shù)據(jù)寫完成寫響應通道握手完成。 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ù)大小對齊。回環(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表示向下取整。
對于INCR突發(fā)和WRAP突發(fā)但沒有到達回環(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) 讀寫響應結(jié)構(gòu) 讀傳輸?shù)捻憫畔⑹歉郊釉谧x數(shù)據(jù)通道上的,寫傳輸?shù)捻憫趯戫憫ǖ馈?RRESP[1:0],讀傳輸 BRESP[1:0],寫傳輸 OKAY(‘b00):正常訪問成功 EXOKAY(‘b01):Exclusive 訪問成功 SLVERR(‘b10):從機錯誤。表明訪問已經(jīng)成功到了從機,但從機希望返回一個錯誤的情況給主機。 DECERR(‘b11):譯碼錯誤。一般由互聯(lián)組件給出,表明沒有對應的從機地址。
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è)計的片上通信的標準。 AHB主要是針對高效率、高頻寬及快速系統(tǒng)模塊所設(shè)計的總線,它可以連接如微處理器、芯片上或芯片外的內(nèi)存模塊和DMA等高效率模塊。 APB主要用在低速且低功率的外圍,可針對外圍設(shè)備作功率消耗及復雜接口的最佳化。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)對讀寫操作作響應,并對Master返回成功、失敗或者等待等狀態(tài)。 Arbiter:負責保證總線上一次只有1個Master在工作。仲裁協(xié)議是規(guī)定的,但是仲裁算法可以根據(jù)應用決定。 Decoder:負責對地址進行解碼,并提供片選信號到各Slave。 每個AHB都需要1個仲裁器和1個中央解碼器。
圖4?8?AHB的組成 AHB基本信號 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應答M是否讀寫操作傳輸完成,1-傳輸完成,0-需延長傳輸周期。需要注意的是HREADY作為總線上的信號,它是M和S的輸入;同時每個S需要輸出自HREADY。所以對于S會有兩個HREADY信號,一個來自總線的輸入,一個自己給到多路器的輸出。 HRESP:S應答當前傳輸狀態(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ù)奶攸c AHB協(xié)議需要一次突發(fā)傳輸?shù)乃械刂?,地址與數(shù)據(jù)鎖定對應關(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總線
主要應用在低帶寬的外設(shè)上,如UART、 I2C,它的架構(gòu)不像AHB總線是多主設(shè)備的架構(gòu),APB總線的唯一主設(shè)備是APB橋(與AXI或APB相連),因此不需要仲裁一些Request/grant信號。APB的協(xié)議也十分簡單,甚至不是流水的操作,固定兩個時鐘周期完成一次讀或?qū)懙牟僮?。其特性包括:兩個時鐘周期傳輸,無需等待周期和回應信號,控制邏輯簡單,只有四個控制信號。APB上的傳輸可用如圖所示的狀態(tài)圖來說明。 1、系統(tǒng)初始化為IDLE狀態(tài),此時沒有傳輸操作,也沒有選中任何從模塊。 2、當有傳輸要進行時,PSELx=1,,PENABLE=0,系統(tǒng)進入SETUP狀態(tài),并只會在SETUP狀態(tài)停留一個周期。當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總線
編輯:黃飛
?
評論