一個(gè)總線周期由多個(gè)不可分的時(shí)鐘周期構(gòu)成,完成單次讀/寫操作、塊讀/寫操作或者讀改寫操作??偩€周期也分為單次讀/寫周期、塊讀/寫周期和讀改寫周期。一次塊讀/寫總線周期完成多次數(shù)據(jù)讀/寫操作。一般情況下,一次操作由主設(shè)備和從設(shè)備控制信號(hào)間的一次握手,以及同時(shí)進(jìn)行的地址和數(shù)據(jù)總線的一次傳輸構(gòu)成。塊操作表示整個(gè)操作需要完成多次數(shù)據(jù)傳送。在總線周期中主設(shè)備和從設(shè)備預(yù)先設(shè)定好的共同遵守控制信號(hào)握手規(guī)則,以及地址和數(shù)據(jù)總線的傳輸規(guī)則稱作總線協(xié)議。
在下文(包括以后的博文中)所給圖例中給出的信號(hào)均為主設(shè)備的輸入輸出信號(hào)。因此,對(duì)操作的描述也從主設(shè)備信號(hào)的角度展開,以便于讀者對(duì)照正文理解圖例。比如"在時(shí)鐘上升沿1到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的操作,將適當(dāng)?shù)臄?shù)據(jù)放到主設(shè)備的輸入信號(hào)DAT_I()和TGD_I(),將主設(shè)備的ACK_I置高作為對(duì)主設(shè)備STB_O的響應(yīng)。"的等價(jià)描述為:"在時(shí)鐘上升沿1到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的操作,將適當(dāng)?shù)臄?shù)據(jù)放到其輸出信號(hào)DAT_O()和TGD_O(),將輸出信號(hào)ACK_O置高作為對(duì)主設(shè)備STB_O的響應(yīng)。"
復(fù)位操作
復(fù)位是數(shù)字系統(tǒng)最基本的操作。復(fù)位后,系統(tǒng)進(jìn)入預(yù)定的狀態(tài)。在遵守Wishbone總線規(guī)范的系統(tǒng)中,當(dāng)RST_I信號(hào)有效,系統(tǒng)開始復(fù)位。由于Wishbone規(guī)范規(guī)定的復(fù)位是同步復(fù)位,因此在復(fù)位信號(hào)有效后接下來的時(shí)鐘上升沿,所有信號(hào)和寄存器進(jìn)入預(yù)定狀態(tài)。因此,Wishbone規(guī)范要求RST_I信號(hào)有效時(shí)間至少要一個(gè)時(shí)鐘周期。在數(shù)字系統(tǒng)中,實(shí)際上更多的采用的是異步復(fù)位,而且復(fù)位信號(hào)的長(zhǎng)度一般大于系統(tǒng)電平穩(wěn)定時(shí)間和系統(tǒng)時(shí)鐘頻率穩(wěn)定時(shí)間。如果在Wishbone接口中使用的是異步復(fù)位,設(shè)計(jì)者需要在文檔中說明,因?yàn)閃ishbone接口默認(rèn)的是同步復(fù)位。
圖6 Wishbone總線的復(fù)位操作
在圖6中,我們只給出了STB_O和CYC_O這兩個(gè)信號(hào),而沒有給出其它信號(hào)。當(dāng)這兩個(gè)信號(hào)無效時(shí),所有其他信號(hào)沒有意義。
規(guī)則3.00:所有的Wishbone接口必須在RST_I置位(變?yōu)?)后的第一個(gè)時(shí)鐘上升沿進(jìn)入初始化狀態(tài),直到RST_I被復(fù)位(變?yōu)?)后的第一個(gè)時(shí)鐘上升沿到來。
規(guī)則3.05:RST_I必須被置位至少一個(gè)完整的時(shí)鐘周期,才能有效地完成復(fù)位。
允許3.00:當(dāng)然,RST_I也可以被置位多個(gè)時(shí)鐘周期,但是數(shù)量必須是有限的。
規(guī)則3.10:所有的Wishbone接口必須能夠在任意時(shí)間響應(yīng)RST_I信號(hào)(優(yōu)先級(jí)足夠高)。
規(guī)則3.15:所有的Wishbone自啟動(dòng)狀態(tài)機(jī)核計(jì)數(shù)器必須在RST_I置位(變?yōu)?)后的第一個(gè)時(shí)鐘上升沿進(jìn)入初始化狀態(tài),直到RST_I被復(fù)位(變?yōu)?)后的第一個(gè)時(shí)鐘上升沿到來。
規(guī)則3.20:以下主機(jī)信號(hào)必須在RST_I置位(變?yōu)?)后的第一個(gè)時(shí)鐘上升沿復(fù)位(變?yōu)?),直到RST_I被復(fù)位(變?yōu)?)后的第一個(gè)時(shí)鐘上升沿到來:STB_O,CYC_O。所有的其他主機(jī)此時(shí)不能操作這些信號(hào),以響應(yīng)復(fù)位周期。RST_I被復(fù)位(變?yōu)?)后的第一個(gè)時(shí)鐘上升沿到來后,主機(jī)接口的STB_O和CYC_O信號(hào)可以被立即置位(變?yōu)?)。
注意3.10:在標(biāo)準(zhǔn)模式下(除了流水線之外的模式),當(dāng)STB_I被復(fù)位(變?yōu)?)時(shí),從機(jī)接口應(yīng)自動(dòng)將ACK_O,ERR_O和RTY_O置位。
推薦3.00:設(shè)計(jì)SYSCON模塊時(shí),應(yīng)保證上電復(fù)位時(shí)將RST_O信號(hào)置位。并且RST_O信號(hào)應(yīng)該保持置位狀態(tài),直到電壓和時(shí)鐘頻率進(jìn)入穩(wěn)定狀態(tài)。最好使用同步復(fù)位的方式,以保證設(shè)計(jì)的兼容性。
注意3.15:在使用門控時(shí)鐘的情況下,如果時(shí)鐘被禁止了。此時(shí),Wishbone總線將不能響應(yīng)RST_I信號(hào)。
建議3.00:如果一些IP核或者SoC模塊需要異步復(fù)位,應(yīng)當(dāng)將復(fù)位信號(hào)定義為非Wishbone標(biāo)準(zhǔn)信號(hào)。這樣可以保證Wishbone接口使用純同步時(shí)序,以避免造成疑惑。
注意3.20:所有的Wishbone接口信號(hào)都應(yīng)能響應(yīng)復(fù)位信號(hào),除了IP核接口。
傳輸周期初始化
主機(jī)接口通過置位CYC_O信號(hào)進(jìn)行初始化傳輸周期,當(dāng)CYC_O信號(hào)被復(fù)位,其他所有的主機(jī)信號(hào)都被視為無效。從機(jī)也只在其CYC_I信號(hào)被置位的情況下,才會(huì)響應(yīng)其他主機(jī)信號(hào)。應(yīng)當(dāng)注意,SYSCON信號(hào)不受影響。
規(guī)則3.25:在單獨(dú)寫周期、塊讀寫周期和讀改寫周期(RMW)持續(xù)期間。主機(jī)接口必須將CYC_O信號(hào)置位。CYC_O信號(hào)置位時(shí)間必須不晚于STB_O置位后的第一個(gè)時(shí)鐘上升沿,CYC_O信號(hào)置位時(shí)間必須不早于STB_O復(fù)位后的第一個(gè)時(shí)鐘上升沿。
允許3.05:主機(jī)接口可以在任意時(shí)間置位CYC_O。
推薦3.05:仲裁邏輯經(jīng)常使用CYC_I信號(hào)進(jìn)行主機(jī)選擇。保持CYC_O一直長(zhǎng)時(shí)間處于置位狀態(tài)可能會(huì)導(dǎo)致仲裁錯(cuò)誤。因此在多主機(jī)情況下,應(yīng)當(dāng)避免使用【允許3.05】。
規(guī)則3.30:當(dāng)CYC_I被復(fù)位時(shí),從機(jī)接口可以不響應(yīng)任何其他主機(jī)信號(hào)。但是其必須響應(yīng)SYSCON信號(hào)。
-
信號(hào)
+關(guān)注
關(guān)注
11文章
2741瀏覽量
76179 -
總線
+關(guān)注
關(guān)注
10文章
2817瀏覽量
87707 -
Wishbone
+關(guān)注
關(guān)注
0文章
16瀏覽量
10405
原文標(biāo)題:【博文連載】Wishbone總線周期之復(fù)位操作
文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論