握手發(fā)生在主設(shè)備和從設(shè)備之間。握手協(xié)議是主設(shè)備和從設(shè)備在握手時(shí)所遵守的共同規(guī)則。除了,B3版中的標(biāo)準(zhǔn)模式之外,B4版的Wishbone官方手冊(cè)中還新增了流水線模式。下面將依次進(jìn)行介紹。
標(biāo)準(zhǔn)Wishbone協(xié)議
如圖7所示,當(dāng)主機(jī)準(zhǔn)備傳輸數(shù)據(jù)時(shí),應(yīng)將STB_O置位,直到從機(jī)將以下任一信號(hào)(周期結(jié)束信號(hào))置位:ACK_I、ERR_I或者RTY_I。在每一個(gè)時(shí)鐘(CLK_I)上升沿,系統(tǒng)都會(huì)對(duì)周期結(jié)束信號(hào)進(jìn)行采樣。當(dāng)任一周期結(jié)束信號(hào)被置位時(shí),STB_O信號(hào)就會(huì)被復(fù)位。這就讓主機(jī)和從機(jī)接口都有機(jī)會(huì)來(lái)控制數(shù)據(jù)的傳輸速率。
圖7 標(biāo)準(zhǔn)總線握手協(xié)議,異步從機(jī)
圖8 標(biāo)準(zhǔn)總線握手協(xié)議,同步從機(jī)
允許3.10:在標(biāo)準(zhǔn)模式下,如果從設(shè)備保證能夠在主設(shè)備發(fā)起操作時(shí)及時(shí)做出操作成功的響應(yīng),此時(shí)ERR_I和RTY_I信號(hào)可以不使用,ACK_O信號(hào)可以設(shè)計(jì)為STB_I和CYC_I信號(hào)的邏輯與。因此ERR_O和RTY_O信號(hào)是可選的,而ACK_O信號(hào)是必須的。在點(diǎn)對(duì)點(diǎn)連接中,甚至可以將ACK_I信號(hào)直接置高。當(dāng)存在ERR_O和RTY_O信號(hào),主設(shè)備當(dāng)發(fā)現(xiàn)ERR_O和RTY_O信號(hào)之一有效時(shí)如何進(jìn)行響應(yīng)取決于主設(shè)備的設(shè)計(jì)。
注意3.25:在標(biāo)準(zhǔn)模式下,從機(jī)接口會(huì)置位一個(gè)周期結(jié)束信號(hào)來(lái)響應(yīng)STB_I。然而,STB_I信號(hào)只有在CYC_I信號(hào)有效地時(shí)候才有效。
注意3.30:在總線周期期間置位ERR_I信號(hào),會(huì)立即結(jié)束該周期,意味著從機(jī)通知主機(jī)在該周期期間發(fā)生了錯(cuò)誤。當(dāng)從機(jī)邏輯電路檢測(cè)到錯(cuò)誤,便會(huì)置位ERR_I信號(hào)。例如,如果從機(jī)使用了奇偶校檢,當(dāng)發(fā)生錯(cuò)誤時(shí),從機(jī)便會(huì)通過(guò)ERR_I做出反應(yīng)。
在總線周期期間置位RTY_I信號(hào),也會(huì)立即結(jié)束該周期,意味著從機(jī)通知主機(jī)在該周期期間發(fā)生了故障(Aborted)。該信號(hào)一般用于共享內(nèi)存或者總線橋接。當(dāng)本地資源處于忙狀態(tài)時(shí),從機(jī)電路便會(huì)置位RTY_I信號(hào)。應(yīng)當(dāng)注意,Wishbone規(guī)范并未強(qiáng)制要求主機(jī)何時(shí)對(duì)RTY_I信號(hào)做出相應(yīng)。
規(guī)則3.40:實(shí)際上,對(duì)于主設(shè)備,其最小配置為ACK_I、CLK_I、CYC_O、RST_I和STB_O。所有的其他信號(hào)都是可選的(optional)。
允許3.20:主機(jī)和從機(jī)接口之間可以被設(shè)計(jì)成支持ERR_I/ERR_O信號(hào)。但是Wishbone規(guī)范并未要求主機(jī)對(duì)ERR_I信號(hào)做出什么響應(yīng),用于可以根據(jù)自己的需求設(shè)計(jì)。
允許3.25:主機(jī)和從機(jī)接口之間可以被設(shè)計(jì)成支持TRY_I/TRY_O信號(hào)。但是Wishbone規(guī)范并未要求主機(jī)對(duì)TRY_I信號(hào)做出什么響應(yīng),用于可以根據(jù)自己的需求設(shè)計(jì)。
規(guī)則3.45:當(dāng)從機(jī)支持ERR_O和TRY_O信號(hào)時(shí),應(yīng)保證從機(jī)同一時(shí)刻只能將三個(gè)周期結(jié)束信號(hào)的其中之一置位。
注意3.35:如果從機(jī)支持了ERR_O和RTY_O信號(hào),而主機(jī)不支持這些信號(hào),可能會(huì)造成系統(tǒng)的死鎖。
推薦3.10:通過(guò)設(shè)計(jì)INTERCON模塊可以阻止死鎖的情況發(fā)生。其中一種解決方法就是,設(shè)計(jì)一個(gè)看門(mén)狗定時(shí)器用來(lái)監(jiān)控STB_O信號(hào)。當(dāng)ERR_I或者RTY_I信號(hào)周期技術(shù)超出了預(yù)定義的限制時(shí),INTERCON模塊可以被設(shè)計(jì)成將Wishbone總線連接斷開(kāi)。
推薦3.15:在圖7中,從STB_O到ACK_I存在一個(gè)長(zhǎng)組合邏輯路徑,在實(shí)際系統(tǒng)中很可能成為關(guān)鍵路徑。因此,在設(shè)計(jì)中應(yīng)盡量保證STB_O是觸發(fā)器的直接輸出。如果從STB_O到ACK_I存在一個(gè)長(zhǎng)組合邏輯路徑延遲不能滿足設(shè)計(jì)的時(shí)序要求,可將從設(shè)備的ACK_O經(jīng)過(guò)觸發(fā)器寄存后再輸出,從而將長(zhǎng)組合邏輯打破,但系統(tǒng)的吞吐量也將因此減小。
規(guī)則3.50:從機(jī)接口必須被設(shè)計(jì)成ACK_O、ERR_O和RTY_O信號(hào)的置位或復(fù)位與STB_I信號(hào)的置位或復(fù)位有關(guān)。
允許3.30:ACK_O、ERR_O和RTY_O信號(hào)的置位允許被設(shè)計(jì)成異步邏輯(例如,STB_I與ACK_O之間的組合邏輯路徑)。
注意3.40:ACK_O、ERR_O和RTY_O信號(hào)的異步置位可以保證每一個(gè)時(shí)鐘周期可以完成一次數(shù)據(jù)傳輸。進(jìn)一步來(lái)說(shuō),可以簡(jiǎn)化多主機(jī)情況下的仲裁器設(shè)計(jì)。
注意3.45:在某些場(chǎng)合,ACK_O、ERR_O和RTY_O信號(hào)的異步置位可能不能實(shí)現(xiàn)。例如,從機(jī)等待狀態(tài)早于用寄存器實(shí)現(xiàn)的ACK_O信號(hào)。
注意3.50:在部分高速設(shè)計(jì)場(chǎng)合,ACK_O、ERR_O和RTY_O信號(hào)的異步置位可能會(huì)導(dǎo)致不可接受的延時(shí)時(shí)間,一般是由于主機(jī)和從機(jī)之間的回路延時(shí)導(dǎo)致的。使用寄存器實(shí)現(xiàn)ACK_O、ERR_O和RTY_O信號(hào)可以顯著地減少這種回路延時(shí)。
允許3.35:在特定情況下,從機(jī)接口可能被設(shè)計(jì)成保持ACK_O信號(hào)一直處于置位狀態(tài)。例如,一個(gè)單從機(jī),單主機(jī),點(diǎn)對(duì)點(diǎn)的接口,從機(jī)操作根本不需要等待時(shí)間。
規(guī)則3.55:當(dāng)從機(jī)接口保持ACK_I信號(hào)為置位狀態(tài)時(shí),主機(jī)接口應(yīng)當(dāng)被設(shè)計(jì)為正常操作模式。
流水線Wishbone協(xié)議
在流水線模式下,握手協(xié)議主要有以下差異:
·主機(jī)在輸出下一個(gè)地址/數(shù)據(jù) 字到總線上之前,不能等待ACK_I信號(hào);
·主機(jī)接口上的STALL_I信號(hào)用于表示從機(jī)流水線此時(shí)可以接受另一個(gè)請(qǐng)求。總線仲裁器應(yīng)該選擇目標(biāo)從機(jī)STALL_O信號(hào),并將其告知主機(jī)。這種路徑應(yīng)當(dāng)被設(shè)計(jì)成非寄存式的(non-registered)。
·主機(jī)當(dāng)STALL_I信號(hào)為低電平時(shí),輸出請(qǐng)求。當(dāng)STALL_I信號(hào)被置位時(shí),則處于等待狀態(tài)。即,當(dāng)STALL_I信號(hào)被置位,流水線不能夠產(chǎn)生任何請(qǐng)求。
·如果總線周期由N個(gè)轉(zhuǎn)換構(gòu)成,則最后一個(gè)ACK_I表示轉(zhuǎn)換的終止。當(dāng)接收到最后的ACK_I脈沖后,主機(jī)結(jié)束總線周期。
·只有當(dāng)ACK_I信號(hào)為高電平時(shí),讀取數(shù)據(jù)操作才是有效的。
圖9 流水線模式 單次訪問(wèn)
規(guī)則3.57:在流水線模式下,當(dāng)CYC_I和STB_I信號(hào)被置位后,緊接著STALL_I和WE_I信號(hào)被復(fù)位時(shí),一個(gè)讀轉(zhuǎn)換操作開(kāi)始。
規(guī)則3.58:在流水線模式下,當(dāng)CYC_I、STB_I和WE_I信號(hào)被置位后,緊接著STALL_I信號(hào)被復(fù)位時(shí),一個(gè)寫(xiě)轉(zhuǎn)換操作開(kāi)始。
規(guī)則3.59:在流水線模式下,完成轉(zhuǎn)換初始化后,主機(jī)必須能在任意時(shí)間接受ACK_I信號(hào)。
-
信號(hào)
+關(guān)注
關(guān)注
11文章
2796瀏覽量
76918 -
總線
+關(guān)注
關(guān)注
10文章
2891瀏覽量
88193 -
Wishbone
+關(guān)注
關(guān)注
0文章
16瀏覽量
10439
原文標(biāo)題:【博文連載】Wishbone總線周期之握手協(xié)議
文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論