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

采用單通道通訊協(xié)議設(shè)計(jì)高速異步流水線控制器STFB電路的設(shè)計(jì)

FPGA之為什么要進(jìn)行流水線的設(shè)計(jì)
滾筒輸流水線故障排除方法
如何選擇合適的LED生產(chǎn)流水線輸送方式
嵌入式_流水線

評論