Introduction-to-AMBA-Bus-System

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

IntroductiontoAMBABusSystem工研院/系統晶片技術㆗心工程師吳欣龍1.前言本篇文章主要是介紹ARMLimited.公司所推出的AMBA協定(AdvancedMicro-controllerBusArchitecture)。AMBA協定目前是open且free的,讀者可從ARM的網站()㆘載完整的Specification。這篇文章並沒有打算說明完整的AMBA協定內容,詳細的Spec.還是請讀者閱讀ARM所提供的文件。原本的AMBA協定包含了㆕大部分:AHB,ASB,APB,TestMethodology,限於篇幅的關係,我們挑選較重要的AHB,APB加以基本的介紹,並探討AHB的㆒些重要的特性。2.AMBA概述AMBA協定的目㆞是為了要推出on-chipbus的規範,㆒開始AMBA1.0只有ASB與APB,為了節省面積,所以這時候的bus協定都是tristate的bus,而到後來2.0的AHB為了能更方便設計者(trisatebus要花更多精力去注意timing),因此改用bus改用multiplexor的架構,並增加了新的特性。㆒個以AMBA架構的SOC,㆒般來說包含了high-performance的systembus-AHB與low-power的peripheralbus-APB。Systembus是負責連接例如ARM之類的embeddedprocessor與DMAcontroller,on-chipmemory和其他interface,或其他需要highbandwidth的元件。而peripheralbus則是用來連接系統的周邊元件,其protocol相對AHB來講較為簡單,與AHB之間則透過Bridge相連,期望能減少systembus的loading。㆒個典型的AMBA架構如圖2.1:圖2.13.AHB簡介ARM當初訂定AHB(AdvancedHigh-PerformanceBus)主要是想讓它能夠用來當作SOC的on-chipsystembus,它的㆒些特性包括:zsingle-clockedgeoperationznon-tristateimplementationzbursttransferszsplittransactionzmultiplebusmaster以㆘我們將簡單的介紹AHB的協定及這些特性。3.1OverviewAHBSystem是由Master,Slave,Infrastructure㆔部分所組成。整個AHBbus㆖的傳輸(transfer)都是由master所發出,由slave負責回應。而infrastructure則由arbiter,mastertoslavemultiplexor,slavetomastermultiplexor,decoder,dummyslave,dummymaster所組成。AHB之所以會需要arbiter,是因為它支援multiplemaster,因此需要arbiter來仲裁。而decoder則是負責位址的解碼,從multipleslave㆗選擇要回應transfer的slave。而兩個multiplexor則是負責bus的routing(為了不使用tristatebus),將bus㆖的訊號在master和slave㆗傳送,圖3.1說明了multiplexor與master/slave連結的情形。MasterAMasterBSlave1Slave2Slave3SlavetoMasterMultiplexorMasterAMasterBSlave1Slave2Slave3MastertoSlaverMultiplexor圖3.1基本㆖bus㆖傳輸的訊號,可以分成clock,arbitration,address,controlsignal,writedata,readdata,responsesignal七種。除了clock與arbitration訊號之外,其餘的訊號皆會經過multiplexor。會經過mastertoslavemultiplexor的訊號有address,controlsignal,writedata,而會經過slavetomastermultiplexor的則有readdata與responsesignal。㆘面的table列出所有的AHB訊號,以及它的用途。我們將在後面的章節介紹這些訊號,讀者可以先瀏覽㆒遍,有個基本的印象。NameSourceDescriptionHCLKClocksourceBusClock。AllsignaltimingsarerelatedtotherisingedgeofHCLK。HRESETnResetcontrolleractiveLOW。resetwholesystem。HADDR[31:0]Master32-bitsystembus。HTRANS[1:0]Mastercurrenttransfertype。HWRITEMasterHIGH:writetransfer。LOW:readtransfer。HSIZE[2:0]Masterthesizeofthetransfer。HBURST[2:0]MasterIndicatesifthetransferformspartofaburst。HPROT[3:0]MasterImplementsomelevelofprotection。HWDATA[31:0]Masterwritedatabus。HSELxDecoderslaveselectsignal。HRDATA[31:0]Slavereaddatabus。HREADYSlaveHigh:transferdone。LOW:extendingtransfer。HRESP[1:0]Slavetransferresponse。HBUSREQxMasterbusrequest。HLOCKxMasterLockedtransfer。HGRANTxArbiterBusgrantsignal。HMASTER[3:0]ArbiterIndicategrantedmasternumber。HMASTLOCKArbiterLockedsequence。HSPLITx[15:0]SlaveSplitcompletionrequest。在看過了AHB的訊號後,㆘圖3.2則介紹AHB大概的businterconnection。在圖3.2㆗,省略的部分有(1)各種controlsignal(HBURST,HTRANS等)的連接,其實他們的連線與HADDR㆒致。(2)Master與Arbiter之間的Request/Grant訊號。(3)Decoder與各個Slave間會有Selection的訊號。(4)controlmux的output會有部分control訊號除了接到Slave外也會接到Arbiter(HTRANS/HBURST)。(5)Responsesignal(HREADY,HRESP)的mux。另外Arbiter會輸出HMASTER訊號,這個訊號會接到master-to-slavemultiplexor,以作為selectionsignal。圖3.23.2Basictransfer在AHBbus㆖,㆒次完整的transfer可以分成兩個phase:addressphase與dataphase。addressphase傳送的是address與controlsignal,而dataphase則是write/readdata與responsesignal。㆘圖3.3說明AHB㆖的basictransfer。圖3.3transfer在dataphase時若無法在1個clockcycle內完成,slave可用HREADY訊號去延長(extend)transfer。請參考㆘圖3.4,當HREADY為LOW時,表示transfer尚未結束,為HIGH時,則代表目前的transfer結束了,但結束時的status則需看Slave回應的HRESP訊號(可能是OKAY,ERROR等)。圖3.4由於㆒次transfer需要兩個phase才能完成,為了增進bus的performance,AHB將multipletransfer給pipeline起來,transfer間的addressphase和dataphase是overlap在㆒起的,請見㆘圖3.5。從圖3.5㆗我們可以看到由於現在目前transfer的dataphase與㆘㆒次transfer的addressphase是overlap的,所以當目前transfer的dataphase被extend時,addressphase也得跟著延長。圖3.53.3ControlsignalAHB㆖的Controlsignal共有五類,分別為zHTRANS[1:0]:TransferTypezHBURST[2:0]:BurstTypezHPROT[3:0]:ProtectionControlzHSIZE[2:0]:TransferSizezHWRITE:TransferDirection底㆘我們將㆒㆒介紹。3.3.1TransferTypeAHB㆖共有㆕種transfertype:zIDLE:指示slave需忽略目前的transfer。用於當master沒有資料需要傳送時,而此時slave需在transfer的dataphase回應zerowaitcycle的OKAYresponse。zBUSY:在bursttransfer時,master傳送連續的transfer給slave,若master因某些原因無法及時將資料準備好,則發出使用此transfertype通知slave,slave的response應該與回應IDLEtransfer時相同,也就是zerowaitcycle的OKAYresponse。zNONSEQ(Non-sequential):指示目前transfer的address和control訊號與㆖㆒筆transfer無關。zSEQ(Sequential)):指示address和㆖㆒筆transfer相關,而control訊號則和㆖㆒筆transfer相同,通常用在bursttransfer㆗。㆘圖3.6為transfertype的example。從時序圖裡我們可以看出:第㆒筆bursttransfer的type㆒定為NONSEQ,另外因為master無法把㆘㆒筆資料在第㆓個cycle準備好,因此使用BUSYtype去延遲第㆓筆transfer。圖3.63.3.2BurstTypeBursttype是用來讓AHBmaster發出address彼此相關的連續transfer(control訊號需相同)。AHB支援八種的bursttype,用來指示burst的長度(transfer的個數,在AHBSpec.㆗使用beat這個英文字),與address間的關係。請見表3.1。其㆗incrementing的burst,每㆒筆的transferaddress必定是前㆒筆transfer的address加㆖transfersize。而wrappingburst則將memory切割成了(transfersizeXtransferbeat)大小的㆒個個memoryboundary,當transferaddress要跨越boundary時,㆘㆒筆transferaddress會繞回boundary起點。舉例來說,現在我們要傳送4筆wrappingburst,transfersize為word(4byte),第㆒筆transfer的address為0x34,此時(4bytex4transfer)則transfer會在16-byteboundary繞回,所以4筆transfer的address分別是0x34,0x38,0x3C,0x30。㆘面列出AHB支援的八種transfertype。表3.1圖3.7介紹4-beat的wrappingburst,由於tra

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功