《電子技術應用》
您所在的位置:首頁 > 通信與網(wǎng)絡 > 業(yè)界動態(tài) > AHB總線接口的一種新實現(xiàn)方案

AHB總線接口的一種新實現(xiàn)方案

2007-12-10
作者:馬天翊,薛 萍,馬衛(wèi)國

摘 要:針對標準AHB總線對具有特定訪問時序的設備數(shù)據(jù)傳輸效率較低的情況,提出一種新的實現(xiàn)方案" title="實現(xiàn)方案">實現(xiàn)方案。利用AHB總線突發(fā)傳輸時的組合信息,根據(jù)某種算法生成地址和控制信號" title="控制信號">控制信號,以提高慢速設備的總線訪問效率。
關鍵詞:AHB總線? 突發(fā)傳輸

?

??? 在系統(tǒng)級芯片設計中,AMBA總線已經(jīng)得到廣泛的應用,有效地解決了復雜芯片的互連設計難題。目前AMBA總線的主要實現(xiàn)形式是先進高性能總線(AHB)。AHB總線的關鍵是對接口和互連均進行定義,目的是在任何工藝條件下實現(xiàn)接口和互連的最大帶寬。AHB總線互連的主要形式是帶有主模塊和從模塊的共享總線,將接口與互連分開,主要由總線的中央資源負責仲裁、重傳、拆分等操作,這對芯片上各模塊的接口設計具有重要意義。AMBA已不再僅僅是一種總線,而是一種帶有接口模塊的互連體系。
??? 但隨著AHB總線的廣泛應用,一些問題也暴露出來。例如,對于具有特定訪問時序的設備,AHB總線讀取數(shù)據(jù)的效率較低。本文提出一種新的、高效AHB-Slave接口方案,可以在完全兼容AMBA2.0規(guī)范的前提下,將突發(fā)傳輸模式下的總線效率提高近一倍(具體提高依應用而定,可參見表1數(shù)據(jù))。該方案主要通過判斷總線的控制信號,利用某種算法控制地址實現(xiàn),并可處理突發(fā)讀數(shù)據(jù)的忙狀態(tài)、寫數(shù)據(jù)后立即回讀、單周期突發(fā)操作等特殊情況。
1 標準AHB-Slave方案
??? AMBA2.0規(guī)范詳細定義了標準的AHB-Slave接口,涵蓋了絕大部分操作。但是對某些應用的實現(xiàn)不夠高效,例如對具有較長延時的Slave設備的突發(fā)讀操作。另外有些操作并沒有定義,例如寫之后立即讀的操作。標準AHB-Slave實現(xiàn)方案介紹如下(AHB總線描述及信號列表請參閱參考文獻[1]。
1.1 標準方案實現(xiàn)
??? 標準的AHB-Slave總線接口首先判斷讀操作或?qū)懖僮鳎绻袛酁閷?,則對單次寫和突發(fā)寫執(zhí)行同樣操作。如果判斷為讀,對于單次讀和突發(fā)讀也不加區(qū)分,但由于突發(fā)讀時地址段與數(shù)據(jù)段會自然相互重疊(overlap),所以突發(fā)讀相對于多筆單次讀的效率要高一些。標準AHB-Slave總線接口不支持寫操作后立即執(zhí)行讀操作,要求二者之間至少有一個時鐘周期" title="時鐘周期">時鐘周期的間隔,否則會產(chǎn)生錯誤??紤]接口需求,要求寫后立即讀的情況并不會很多。但是作為一個典型的存儲設備檢測方法應該被這種操作支持。
1.2 標準方案時序圖
??? 對于AHB總線,一次完整的傳輸可以分成兩個階段:地址段(Address Phase)和數(shù)據(jù)段(Data Phase)。地址段負責發(fā)送地址和控制信號,數(shù)據(jù)段則用來傳輸數(shù)據(jù)和反饋信號。如果從設備無法在數(shù)據(jù)段用一個時鐘周期完成讀寫,則可以通過HREADY信號來展寬數(shù)據(jù)段。
??? AHB總線為提高傳輸效率定義了突發(fā)傳輸方式(Burst Transfer)。在一次需要傳輸多個數(shù)據(jù)時,將前后數(shù)據(jù)的數(shù)據(jù)段和地址段重疊在一起以提高效率。限于篇幅,關于突發(fā)傳輸方式的詳細描述請參閱文獻[1]。
??? 還有一點需要指出:突發(fā)傳輸時,前次傳輸?shù)臄?shù)據(jù)段和后次傳輸?shù)牡刂范沃丿B在一起,如果前次的數(shù)據(jù)段由于某種原因被展寬,后次傳輸?shù)牡刂范我矔S之展寬。這是AHB2.0協(xié)議中降低總線效率的重要原因,也是可以采取方法來改進的地方。
??? 多周期讀寫時序如圖1所示,詳細說明如下。圖1未示出AHB總線的申請、仲裁、授權(quán)機制。

?


??? Cycle4~9:AHB總線的突發(fā)寫時序,圖1所示從設備可正常接收,不再詳述。
??? Cycle14:Master獲得總線控制權(quán),發(fā)出地址A5和控制信號,總線中央資源將其發(fā)往相關Slave。突發(fā)操作的第一個數(shù)據(jù)HTRANS信號值為NONSEQ。
Cycle15:Slave采樣地址A5和控制信號,并作出判斷和響應,如果不能立即存取數(shù)據(jù),則將HREADY_OUT信號拉低相應周期數(shù)(圖1中所示為一個周期),但HRESP信號為OKAY。同時,Master發(fā)出第二個傳輸?shù)牡刂泛涂刂菩盘?。此時HTRANS為SEQ。
????Cycle16:Slave可以完成數(shù)據(jù)存取,將HREADY_OUT信號拉高" title="拉高">拉高,將數(shù)據(jù)發(fā)送到HRDATA總線,HRESP信號仍為OKAY。因為突發(fā)傳輸時前后兩次數(shù)據(jù)段和地址段重疊,如果前次的數(shù)據(jù)段由于某種原因被展寬,后次傳輸?shù)牡刂范我矔S之展寬。圖1中所示,Master重復發(fā)出上一個時鐘周期的地址A6和控制信號。
??? Cycle17:Master采樣反饋信號。因為HREADY_IN信號為高(此時HREADY_IN與HREADY_OUT信號等價),表示Slave已經(jīng)將數(shù)據(jù)發(fā)出,Master采樣數(shù)據(jù)" title="采樣數(shù)據(jù)">采樣數(shù)據(jù)D5,同時發(fā)出地址A7和相應控制信號。Slave采樣地址A6和控制信號,因為不能立即存取數(shù)據(jù),所以將HREADY_OUT信號再次拉低一個時鐘周期,但HRESP信號為OKAY。
??? Cycle18、19、20:分別與Cycle16、17、16類似。
??? Cycle21:Master判斷HREADY_IN為高,采樣數(shù)據(jù)D7,但不再發(fā)出新的地址和控制信號。Slave采樣地址A8和控制信號,然后將HREADY_OUT信號拉低一個時鐘周期,HRESP信號為OKAY。
??? Cycle22:Slave將HREADY_OUT信號拉高(無效),將數(shù)據(jù)D8發(fā)送到HRDATA總線,HRESP信號仍為OKAY。
??? Cycle23:Master采樣反饋信號和數(shù)據(jù)D8,完成本次突發(fā)傳輸操作,之后可選擇釋放總線。
2 高效AHB-Slave方案
??? AMBA2.0規(guī)范中,對于具有較長延時的Slave設備的突發(fā)讀操作處理得不夠理想。針對這一問題,高效的AHB-Slave方案應運而生。突發(fā)傳輸時,從第二個數(shù)據(jù)開始的HTRANS信號為SEQ(Sequential,連續(xù)),表示當前地址與前一次地址相關,而控制信號與前次相同。這就表明可以利用第一個數(shù)據(jù)的地址和控制信號根據(jù)突發(fā)傳輸?shù)念愋蛠砩善浜髷?shù)據(jù)的地址和控制信號。
?當然,由于AHB總線的功能豐富,需要考慮的情況比較多,所以高效AHB-Slave接口的實現(xiàn)方案相對復雜。但已經(jīng)證實,當AHB總線時鐘為150MHz時,可以在0.13um工藝條件下實現(xiàn),且效果顯著。
2.1 高效方案實現(xiàn)
??? 根據(jù)AHB總線的規(guī)則,突發(fā)傳輸過程中,控制信號不會變化,而地址會根據(jù)突發(fā)方式和傳輸數(shù)據(jù)的位寬增減,所以可以依據(jù)某種算法生成內(nèi)部信號HADDR_internal,用于生成超前地址,提高總線訪問效率。在AHB-Slave接口設計中,用HADDR_internal代替HADDR。具體實現(xiàn)方案如圖2所示。

?


????首先判斷讀操作或?qū)懖僮?,如果判斷為寫,則對于單次寫和突發(fā)寫執(zhí)行同樣操作。如果判斷為讀,則區(qū)分三種情況:單次讀、寫后立即讀與突發(fā)讀。如果為單次讀,則執(zhí)行基本讀操作。如果為寫后立即讀,由于AHB-Slave接口內(nèi)部處理延時,讀操作會多延時一個時鐘周期,亦即HREADY_OUT會被多拉低一個時鐘周期以通知總線的Master。如果判斷為突發(fā)讀,則需作進一步判斷。
??? 當判斷為突發(fā)讀時,需進一步判斷四種情況:突發(fā)讀的首數(shù)據(jù)、突發(fā)讀期間的忙狀態(tài)、突發(fā)讀忙狀態(tài)后首數(shù)據(jù)、突發(fā)讀基本狀態(tài)。前三種情況的處理方法如圖2所示,如果判斷為突發(fā)讀的基本狀態(tài),則內(nèi)部讀地址HADDR_internal每個時鐘周期遞增一個單元,直到該次突發(fā)讀結(jié)束。對于具有較長讀延時的AHB-Slave設備,執(zhí)行突發(fā)讀操作時,由于第一個讀數(shù)據(jù)延后n拍送出,所以外部地址HADDR從第2個地址開始延長n拍。假設n=1,從第2個地址起,外部地址HADDR比HADDR_internal延后1拍。內(nèi)部模塊根據(jù)HADDR_internal發(fā)出數(shù)據(jù),此數(shù)據(jù)可以連續(xù)送到外部數(shù)據(jù)總線上。
2.2 高效方案時序圖
??? 高效方案的多周期讀寫時序如圖3。圖中未示出AHB總線的申請、仲裁、授權(quán)機制。Cycle14以前各周期的功能不再詳述。

?


??? Cycle14:Master發(fā)出地址A5和控制信號。依據(jù)某種算法生成內(nèi)部超前地址HADDR_internal以代替HADDR,提高總線訪問效率。因為Cycle14為突發(fā)傳輸?shù)牡谝粋€周期,所以HADDR_internal與HADDR相同。
??? Cycle15:Slave采樣地址A5和控制信號,由于不能立即存取數(shù)據(jù)將HREADY_OUT信號拉低一個周期。同時HADDR_internal從A5變?yōu)锳6,增加一個HSIZE信號所指示的單元地址。Master發(fā)出第二個傳輸?shù)牡刂泛涂刂菩盘枴4藭rHTRANS為SEQ。
??? Cycle16:Slave可以完成數(shù)據(jù)存取,將HREADY_OUT信號拉高,將數(shù)據(jù)發(fā)送到HRDATA總線。此時HADDR_internal遞增為A7,超越了HADDR,因為設計中HADDR_internal代替HADDR輸出給內(nèi)部模塊,所以數(shù)據(jù)也會提前輸出。
??? Cycle17:Master采樣反饋信號和數(shù)據(jù)D5,同時發(fā)出地址A7和相應控制信號。Slave不再采樣地址和控制信號,而是用內(nèi)部生成的相應信號代替,發(fā)出數(shù)據(jù)D6,并且不再拉低HREADY_OUT信號。
??? Cycle18:Master采樣反饋信號和數(shù)據(jù)D6,同時發(fā)出地址A8和相應控制信號。Slave根據(jù)內(nèi)部信號發(fā)出數(shù)據(jù)D7。?

??? Cycle19、20:分別與Cycle17、18類似。
??? Cycle21~23:與標準方案的相應時序類似,不再贅述。
??? 在突發(fā)傳輸操作中,Master與Slave之間的交互是連續(xù)的,但如果Master因為某些原因無法及時發(fā)送或接收數(shù)據(jù),則可以將HTRANS信號置為BUSY,使當前傳輸暫停幾個時鐘周期。此時Slave應該發(fā)送OK的HRESP。在一次讀的過程中插入busy的時序如圖4。Cycle15以前各周期的功能不再詳述。

?


??? Cycle15:Master由于某種原因暫時無法接收數(shù)據(jù),可以將HTRANS信號置為BUSY,地址遞增為A11,控制信號可以保持上一時鐘周期的讀狀態(tài)不變。AHB-Slave接口采樣到BUSY狀態(tài)(此次采樣為異步采樣,不依賴時鐘上升沿),則HADDR_internal不再變化,保持上一周期值。數(shù)據(jù)總線依次送出數(shù)據(jù)D10,HRESP信號仍為OKAY。
??? Cycle16:Master恢復采樣數(shù)據(jù),將HTRANS信號置為Sequencial,但地址保持上一時鐘周期A11不變,控制信號也保持為讀狀態(tài)。AHB-Slave接口采樣到HTRANS信號恢復Sequencial狀態(tài),重新將HADDR_internal與HADDR同步,變?yōu)锳11。將數(shù)據(jù)D11送到HRDATA總線,但此數(shù)據(jù)不被采樣。
??? Cycle17:Master本周期不采樣數(shù)據(jù)。附帶指出:Master在Cycle15將HTRANS置為BUSY,即指Cycle17不采樣數(shù)據(jù),而不是Cycle15不采樣。Master發(fā)出遞增地址A12,控制信號保持為讀狀態(tài)。因為上一周期HADDR_internal與HADDR重新同步,所以Slave無法立即送出數(shù)據(jù),將HREADY_OUT拉低一個時鐘周期,但HRESP信號為OKAY。同時HADDR_internal從A11變?yōu)锳12,增加一個HSIZE信號所指示的單元地址。
??? Cycle18:Slave可以完成數(shù)據(jù)存取,將HREADY_OUT信號拉高,將數(shù)據(jù)D11發(fā)送到HRDATA總線。Master采樣反饋信號并判斷后重復發(fā)出上一時鐘周期的地址A12和控制信號。但HADDR_internal遞增為A13。
??? Cycle19:Master采樣反饋信號,判斷后采樣數(shù)據(jù)D11,同時發(fā)出地址A13和相應控制信號。AHB-Slave接口內(nèi)部遞增地址為A14,并且不再采樣AHB總線的地址和控制信號,而是用內(nèi)部生成的相應信號代替,發(fā)出數(shù)據(jù)D12,并且不再拉低HREADY_OUT信號,HRESP信號保持為OKAY。
??? Cycle20~23:與前文類似,不再贅述。
??? 對單一寄存器寫之后讀的時序如圖5所示。如前文所述,考慮AHB-Slave總線接口的需求,要求寫后立即讀的情況并不會很多。但是這種操作作為一個典型的存儲設備檢測方法應該支持。此時HREADY會多拉低一個時鐘周期,詳細時序不再贅述。

?


??? 這一AHB-Slave接口的新方案已經(jīng)分別通過Cadence公司的Specman和Synopsys公司的Vera兩種驗證平臺驗證,并已實際應用于一款芯片。
??? 表1中所示為該款芯片采用兩種AHB-Slave接口方案的對比。表中最左邊一欄為待傳輸?shù)臄?shù)據(jù)區(qū)塊,JD為聯(lián)合檢測(Joint Detection)。其中有些數(shù)據(jù)需要寫入含有AHB-Slave接口的模塊,而有些數(shù)據(jù)要讀出。通過AHB總線寫入時兩種方案完全相同,而讀出時高效接口方案所需工作周期只有標準接口方案工作周期的一半。


??? 從表1可以看出,此應用中高效接口方案比標準接口方案節(jié)省了大約44%((11804-6630)/11804=44%)的工作周期。如果AHB總線時鐘按照150MHz計算,則表1中原始接口方案需要78.73us,而高效接口方案需要44.22us,節(jié)省了34.51us,這對于通信、圖像處理等實時性要求較高的應用來說是很關鍵的。
參考文獻
[1] ARM.AMBA Specification(Rev 2.0).1999.
[2] 吳欣龍.AMBA總線系統(tǒng)介紹.臺灣:工研院內(nèi)部刊物,2002.
[3] Bruce Mathewson.AMBA總線在復雜系統(tǒng)級芯片片上互連中的應用.電子工程專輯,2004.
[4] 鐘文楓,耿彥莉.AMBA片上總線在SOC芯片設計中的應用.電子設計應用,2006.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。