摘 要:針對(duì)標(biāo)準(zhǔn)AHB總線對(duì)具有特定訪問(wèn)時(shí)序的設(shè)備數(shù)據(jù)傳輸效率較低的情況,提出一種新的實(shí)現(xiàn)方案" title="實(shí)現(xiàn)方案">實(shí)現(xiàn)方案。利用AHB總線突發(fā)傳輸時(shí)的組合信息,根據(jù)某種算法生成地址和控制信號(hào)" title="控制信號(hào)">控制信號(hào),以提高慢速設(shè)備的總線訪問(wèn)效率。
關(guān)鍵詞:AHB總線? 突發(fā)傳輸
?
??? 在系統(tǒng)級(jí)芯片設(shè)計(jì)中,AMBA總線已經(jīng)得到廣泛的應(yīng)用,有效地解決了復(fù)雜芯片的互連設(shè)計(jì)難題。目前AMBA總線的主要實(shí)現(xiàn)形式是先進(jìn)高性能總線(AHB)。AHB總線的關(guān)鍵是對(duì)接口和互連均進(jìn)行定義,目的是在任何工藝條件下實(shí)現(xiàn)接口和互連的最大帶寬。AHB總線互連的主要形式是帶有主模塊和從模塊的共享總線,將接口與互連分開,主要由總線的中央資源負(fù)責(zé)仲裁、重傳、拆分等操作,這對(duì)芯片上各模塊的接口設(shè)計(jì)具有重要意義。AMBA已不再僅僅是一種總線,而是一種帶有接口模塊的互連體系。
??? 但隨著AHB總線的廣泛應(yīng)用,一些問(wèn)題也暴露出來(lái)。例如,對(duì)于具有特定訪問(wèn)時(shí)序的設(shè)備,AHB總線讀取數(shù)據(jù)的效率較低。本文提出一種新的、高效AHB-Slave接口方案,可以在完全兼容AMBA2.0規(guī)范的前提下,將突發(fā)傳輸模式下的總線效率提高近一倍(具體提高依應(yīng)用而定,可參見表1數(shù)據(jù))。該方案主要通過(guò)判斷總線的控制信號(hào),利用某種算法控制地址實(shí)現(xiàn),并可處理突發(fā)讀數(shù)據(jù)的忙狀態(tài)、寫數(shù)據(jù)后立即回讀、單周期突發(fā)操作等特殊情況。
1 標(biāo)準(zhǔn)AHB-Slave方案
??? AMBA2.0規(guī)范詳細(xì)定義了標(biāo)準(zhǔn)的AHB-Slave接口,涵蓋了絕大部分操作。但是對(duì)某些應(yīng)用的實(shí)現(xiàn)不夠高效,例如對(duì)具有較長(zhǎng)延時(shí)的Slave設(shè)備的突發(fā)讀操作。另外有些操作并沒有定義,例如寫之后立即讀的操作。標(biāo)準(zhǔn)AHB-Slave實(shí)現(xiàn)方案介紹如下(AHB總線描述及信號(hào)列表請(qǐng)參閱參考文獻(xiàn)[1]。
1.1 標(biāo)準(zhǔn)方案實(shí)現(xiàn)
??? 標(biāo)準(zhǔn)的AHB-Slave總線接口首先判斷讀操作或?qū)懖僮?,如果判斷為寫,則對(duì)單次寫和突發(fā)寫執(zhí)行同樣操作。如果判斷為讀,對(duì)于單次讀和突發(fā)讀也不加區(qū)分,但由于突發(fā)讀時(shí)地址段與數(shù)據(jù)段會(huì)自然相互重疊(overlap),所以突發(fā)讀相對(duì)于多筆單次讀的效率要高一些。標(biāo)準(zhǔn)AHB-Slave總線接口不支持寫操作后立即執(zhí)行讀操作,要求二者之間至少有一個(gè)時(shí)鐘周期" title="時(shí)鐘周期">時(shí)鐘周期的間隔,否則會(huì)產(chǎn)生錯(cuò)誤??紤]接口需求,要求寫后立即讀的情況并不會(huì)很多。但是作為一個(gè)典型的存儲(chǔ)設(shè)備檢測(cè)方法應(yīng)該被這種操作支持。
1.2 標(biāo)準(zhǔn)方案時(shí)序圖
??? 對(duì)于AHB總線,一次完整的傳輸可以分成兩個(gè)階段:地址段(Address Phase)和數(shù)據(jù)段(Data Phase)。地址段負(fù)責(zé)發(fā)送地址和控制信號(hào),數(shù)據(jù)段則用來(lái)傳輸數(shù)據(jù)和反饋信號(hào)。如果從設(shè)備無(wú)法在數(shù)據(jù)段用一個(gè)時(shí)鐘周期完成讀寫,則可以通過(guò)HREADY信號(hào)來(lái)展寬數(shù)據(jù)段。
??? AHB總線為提高傳輸效率定義了突發(fā)傳輸方式(Burst Transfer)。在一次需要傳輸多個(gè)數(shù)據(jù)時(shí),將前后數(shù)據(jù)的數(shù)據(jù)段和地址段重疊在一起以提高效率。限于篇幅,關(guān)于突發(fā)傳輸方式的詳細(xì)描述請(qǐng)參閱文獻(xiàn)[1]。
??? 還有一點(diǎn)需要指出:突發(fā)傳輸時(shí),前次傳輸?shù)臄?shù)據(jù)段和后次傳輸?shù)牡刂范沃丿B在一起,如果前次的數(shù)據(jù)段由于某種原因被展寬,后次傳輸?shù)牡刂范我矔?huì)隨之展寬。這是AHB2.0協(xié)議中降低總線效率的重要原因,也是可以采取方法來(lái)改進(jìn)的地方。
??? 多周期讀寫時(shí)序如圖1所示,詳細(xì)說(shuō)明如下。圖1未示出AHB總線的申請(qǐng)、仲裁、授權(quán)機(jī)制。
?
??? Cycle4~9:AHB總線的突發(fā)寫時(shí)序,圖1所示從設(shè)備可正常接收,不再詳述。
??? Cycle14:Master獲得總線控制權(quán),發(fā)出地址A5和控制信號(hào),總線中央資源將其發(fā)往相關(guān)Slave。突發(fā)操作的第一個(gè)數(shù)據(jù)HTRANS信號(hào)值為NONSEQ。
Cycle15:Slave采樣地址A5和控制信號(hào),并作出判斷和響應(yīng),如果不能立即存取數(shù)據(jù),則將HREADY_OUT信號(hào)拉低相應(yīng)周期數(shù)(圖1中所示為一個(gè)周期),但HRESP信號(hào)為OKAY。同時(shí),Master發(fā)出第二個(gè)傳輸?shù)牡刂泛涂刂菩盘?hào)。此時(shí)HTRANS為SEQ。
????Cycle16:Slave可以完成數(shù)據(jù)存取,將HREADY_OUT信號(hào)拉高" title="拉高">拉高,將數(shù)據(jù)發(fā)送到HRDATA總線,HRESP信號(hào)仍為OKAY。因?yàn)橥话l(fā)傳輸時(shí)前后兩次數(shù)據(jù)段和地址段重疊,如果前次的數(shù)據(jù)段由于某種原因被展寬,后次傳輸?shù)牡刂范我矔?huì)隨之展寬。圖1中所示,Master重復(fù)發(fā)出上一個(gè)時(shí)鐘周期的地址A6和控制信號(hào)。
??? Cycle17:Master采樣反饋信號(hào)。因?yàn)镠READY_IN信號(hào)為高(此時(shí)HREADY_IN與HREADY_OUT信號(hào)等價(jià)),表示Slave已經(jīng)將數(shù)據(jù)發(fā)出,Master采樣數(shù)據(jù)" title="采樣數(shù)據(jù)">采樣數(shù)據(jù)D5,同時(shí)發(fā)出地址A7和相應(yīng)控制信號(hào)。Slave采樣地址A6和控制信號(hào),因?yàn)椴荒芰⒓创嫒?shù)據(jù),所以將HREADY_OUT信號(hào)再次拉低一個(gè)時(shí)鐘周期,但HRESP信號(hào)為OKAY。
??? Cycle18、19、20:分別與Cycle16、17、16類似。
??? Cycle21:Master判斷HREADY_IN為高,采樣數(shù)據(jù)D7,但不再發(fā)出新的地址和控制信號(hào)。Slave采樣地址A8和控制信號(hào),然后將HREADY_OUT信號(hào)拉低一個(gè)時(shí)鐘周期,HRESP信號(hào)為OKAY。
??? Cycle22:Slave將HREADY_OUT信號(hào)拉高(無(wú)效),將數(shù)據(jù)D8發(fā)送到HRDATA總線,HRESP信號(hào)仍為OKAY。
??? Cycle23:Master采樣反饋信號(hào)和數(shù)據(jù)D8,完成本次突發(fā)傳輸操作,之后可選擇釋放總線。
2 高效AHB-Slave方案
??? AMBA2.0規(guī)范中,對(duì)于具有較長(zhǎng)延時(shí)的Slave設(shè)備的突發(fā)讀操作處理得不夠理想。針對(duì)這一問(wèn)題,高效的AHB-Slave方案應(yīng)運(yùn)而生。突發(fā)傳輸時(shí),從第二個(gè)數(shù)據(jù)開始的HTRANS信號(hào)為SEQ(Sequential,連續(xù)),表示當(dāng)前地址與前一次地址相關(guān),而控制信號(hào)與前次相同。這就表明可以利用第一個(gè)數(shù)據(jù)的地址和控制信號(hào)根據(jù)突發(fā)傳輸?shù)念愋蛠?lái)生成其后數(shù)據(jù)的地址和控制信號(hào)。
?當(dāng)然,由于AHB總線的功能豐富,需要考慮的情況比較多,所以高效AHB-Slave接口的實(shí)現(xiàn)方案相對(duì)復(fù)雜。但已經(jīng)證實(shí),當(dāng)AHB總線時(shí)鐘為150MHz時(shí),可以在0.13um工藝條件下實(shí)現(xiàn),且效果顯著。
2.1 高效方案實(shí)現(xiàn)
??? 根據(jù)AHB總線的規(guī)則,突發(fā)傳輸過(guò)程中,控制信號(hào)不會(huì)變化,而地址會(huì)根據(jù)突發(fā)方式和傳輸數(shù)據(jù)的位寬增減,所以可以依據(jù)某種算法生成內(nèi)部信號(hào)HADDR_internal,用于生成超前地址,提高總線訪問(wèn)效率。在AHB-Slave接口設(shè)計(jì)中,用HADDR_internal代替HADDR。具體實(shí)現(xiàn)方案如圖2所示。
?
????首先判斷讀操作或?qū)懖僮?,如果判斷為寫,則對(duì)于單次寫和突發(fā)寫執(zhí)行同樣操作。如果判斷為讀,則區(qū)分三種情況:?jiǎn)未巫x、寫后立即讀與突發(fā)讀。如果為單次讀,則執(zhí)行基本讀操作。如果為寫后立即讀,由于AHB-Slave接口內(nèi)部處理延時(shí),讀操作會(huì)多延時(shí)一個(gè)時(shí)鐘周期,亦即HREADY_OUT會(huì)被多拉低一個(gè)時(shí)鐘周期以通知總線的Master。如果判斷為突發(fā)讀,則需作進(jìn)一步判斷。
??? 當(dāng)判斷為突發(fā)讀時(shí),需進(jìn)一步判斷四種情況:突發(fā)讀的首數(shù)據(jù)、突發(fā)讀期間的忙狀態(tài)、突發(fā)讀忙狀態(tài)后首數(shù)據(jù)、突發(fā)讀基本狀態(tài)。前三種情況的處理方法如圖2所示,如果判斷為突發(fā)讀的基本狀態(tài),則內(nèi)部讀地址HADDR_internal每個(gè)時(shí)鐘周期遞增一個(gè)單元,直到該次突發(fā)讀結(jié)束。對(duì)于具有較長(zhǎng)讀延時(shí)的AHB-Slave設(shè)備,執(zhí)行突發(fā)讀操作時(shí),由于第一個(gè)讀數(shù)據(jù)延后n拍送出,所以外部地址HADDR從第2個(gè)地址開始延長(zhǎng)n拍。假設(shè)n=1,從第2個(gè)地址起,外部地址HADDR比HADDR_internal延后1拍。內(nèi)部模塊根據(jù)HADDR_internal發(fā)出數(shù)據(jù),此數(shù)據(jù)可以連續(xù)送到外部數(shù)據(jù)總線上。
2.2 高效方案時(shí)序圖
??? 高效方案的多周期讀寫時(shí)序如圖3。圖中未示出AHB總線的申請(qǐng)、仲裁、授權(quán)機(jī)制。Cycle14以前各周期的功能不再詳述。
?
??? Cycle14:Master發(fā)出地址A5和控制信號(hào)。依據(jù)某種算法生成內(nèi)部超前地址HADDR_internal以代替HADDR,提高總線訪問(wèn)效率。因?yàn)镃ycle14為突發(fā)傳輸?shù)牡谝粋€(gè)周期,所以HADDR_internal與HADDR相同。
??? Cycle15:Slave采樣地址A5和控制信號(hào),由于不能立即存取數(shù)據(jù)將HREADY_OUT信號(hào)拉低一個(gè)周期。同時(shí)HADDR_internal從A5變?yōu)锳6,增加一個(gè)HSIZE信號(hào)所指示的單元地址。Master發(fā)出第二個(gè)傳輸?shù)牡刂泛涂刂菩盘?hào)。此時(shí)HTRANS為SEQ。
??? Cycle16:Slave可以完成數(shù)據(jù)存取,將HREADY_OUT信號(hào)拉高,將數(shù)據(jù)發(fā)送到HRDATA總線。此時(shí)HADDR_internal遞增為A7,超越了HADDR,因?yàn)樵O(shè)計(jì)中HADDR_internal代替HADDR輸出給內(nèi)部模塊,所以數(shù)據(jù)也會(huì)提前輸出。
??? Cycle17:Master采樣反饋信號(hào)和數(shù)據(jù)D5,同時(shí)發(fā)出地址A7和相應(yīng)控制信號(hào)。Slave不再采樣地址和控制信號(hào),而是用內(nèi)部生成的相應(yīng)信號(hào)代替,發(fā)出數(shù)據(jù)D6,并且不再拉低HREADY_OUT信號(hào)。
??? Cycle18:Master采樣反饋信號(hào)和數(shù)據(jù)D6,同時(shí)發(fā)出地址A8和相應(yīng)控制信號(hào)。Slave根據(jù)內(nèi)部信號(hào)發(fā)出數(shù)據(jù)D7。?
??? Cycle19、20:分別與Cycle17、18類似。
??? Cycle21~23:與標(biāo)準(zhǔn)方案的相應(yīng)時(shí)序類似,不再贅述。
??? 在突發(fā)傳輸操作中,Master與Slave之間的交互是連續(xù)的,但如果Master因?yàn)槟承┰驘o(wú)法及時(shí)發(fā)送或接收數(shù)據(jù),則可以將HTRANS信號(hào)置為BUSY,使當(dāng)前傳輸暫停幾個(gè)時(shí)鐘周期。此時(shí)Slave應(yīng)該發(fā)送OK的HRESP。在一次讀的過(guò)程中插入busy的時(shí)序如圖4。Cycle15以前各周期的功能不再詳述。
?
??? Cycle15:Master由于某種原因暫時(shí)無(wú)法接收數(shù)據(jù),可以將HTRANS信號(hào)置為BUSY,地址遞增為A11,控制信號(hào)可以保持上一時(shí)鐘周期的讀狀態(tài)不變。AHB-Slave接口采樣到BUSY狀態(tài)(此次采樣為異步采樣,不依賴時(shí)鐘上升沿),則HADDR_internal不再變化,保持上一周期值。數(shù)據(jù)總線依次送出數(shù)據(jù)D10,HRESP信號(hào)仍為OKAY。
??? Cycle16:Master恢復(fù)采樣數(shù)據(jù),將HTRANS信號(hào)置為Sequencial,但地址保持上一時(shí)鐘周期A11不變,控制信號(hào)也保持為讀狀態(tài)。AHB-Slave接口采樣到HTRANS信號(hào)恢復(fù)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,控制信號(hào)保持為讀狀態(tài)。因?yàn)樯弦恢芷贖ADDR_internal與HADDR重新同步,所以Slave無(wú)法立即送出數(shù)據(jù),將HREADY_OUT拉低一個(gè)時(shí)鐘周期,但HRESP信號(hào)為OKAY。同時(shí)HADDR_internal從A11變?yōu)锳12,增加一個(gè)HSIZE信號(hào)所指示的單元地址。
??? Cycle18:Slave可以完成數(shù)據(jù)存取,將HREADY_OUT信號(hào)拉高,將數(shù)據(jù)D11發(fā)送到HRDATA總線。Master采樣反饋信號(hào)并判斷后重復(fù)發(fā)出上一時(shí)鐘周期的地址A12和控制信號(hào)。但HADDR_internal遞增為A13。
??? Cycle19:Master采樣反饋信號(hào),判斷后采樣數(shù)據(jù)D11,同時(shí)發(fā)出地址A13和相應(yīng)控制信號(hào)。AHB-Slave接口內(nèi)部遞增地址為A14,并且不再采樣AHB總線的地址和控制信號(hào),而是用內(nèi)部生成的相應(yīng)信號(hào)代替,發(fā)出數(shù)據(jù)D12,并且不再拉低HREADY_OUT信號(hào),HRESP信號(hào)保持為OKAY。
??? Cycle20~23:與前文類似,不再贅述。
??? 對(duì)單一寄存器寫之后讀的時(shí)序如圖5所示。如前文所述,考慮AHB-Slave總線接口的需求,要求寫后立即讀的情況并不會(huì)很多。但是這種操作作為一個(gè)典型的存儲(chǔ)設(shè)備檢測(cè)方法應(yīng)該支持。此時(shí)HREADY會(huì)多拉低一個(gè)時(shí)鐘周期,詳細(xì)時(shí)序不再贅述。
?
??? 這一AHB-Slave接口的新方案已經(jīng)分別通過(guò)Cadence公司的Specman和Synopsys公司的Vera兩種驗(yàn)證平臺(tái)驗(yàn)證,并已實(shí)際應(yīng)用于一款芯片。
??? 表1中所示為該款芯片采用兩種AHB-Slave接口方案的對(duì)比。表中最左邊一欄為待傳輸?shù)臄?shù)據(jù)區(qū)塊,JD為聯(lián)合檢測(cè)(Joint Detection)。其中有些數(shù)據(jù)需要寫入含有AHB-Slave接口的模塊,而有些數(shù)據(jù)要讀出。通過(guò)AHB總線寫入時(shí)兩種方案完全相同,而讀出時(shí)高效接口方案所需工作周期只有標(biāo)準(zhǔn)接口方案工作周期的一半。
??? 從表1可以看出,此應(yīng)用中高效接口方案比標(biāo)準(zhǔn)接口方案節(jié)省了大約44%((11804-6630)/11804=44%)的工作周期。如果AHB總線時(shí)鐘按照150MHz計(jì)算,則表1中原始接口方案需要78.73us,而高效接口方案需要44.22us,節(jié)省了34.51us,這對(duì)于通信、圖像處理等實(shí)時(shí)性要求較高的應(yīng)用來(lái)說(shuō)是很關(guān)鍵的。
參考文獻(xiàn)
[1] ARM.AMBA Specification(Rev 2.0).1999.
[2] 吳欣龍.AMBA總線系統(tǒng)介紹.臺(tái)灣:工研院內(nèi)部刊物,2002.
[3] Bruce Mathewson.AMBA總線在復(fù)雜系統(tǒng)級(jí)芯片片上互連中的應(yīng)用.電子工程專輯,2004.
[4] 鐘文楓,耿彥莉.AMBA片上總線在SOC芯片設(shè)計(jì)中的應(yīng)用.電子設(shè)計(jì)應(yīng)用,2006.