WishboneB中文完整版_第1頁(yè)
WishboneB中文完整版_第2頁(yè)
WishboneB中文完整版_第3頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Wishboneb3 中文版本文詳細(xì)介紹了 Wishbone標(biāo)準(zhǔn),主要參考了 Wishbone標(biāo)準(zhǔn)B.3版本的核心內(nèi) 容,感興趣的讀者可去下載英文原文。一、片上總線技術(shù)綜述隨著超大規(guī)模集成電路的迅速發(fā)展,半導(dǎo)體工業(yè)進(jìn)入深亞微米時(shí)代,器件特征 尺寸越來(lái)越小,芯片規(guī)模越來(lái)越大,可以在單芯片上集成上百萬(wàn)到數(shù)億只晶體管。 如此密集的集成度使我們現(xiàn)在能夠在一小塊芯片上把以前由CPU和外設(shè)等數(shù)塊芯片實(shí)現(xiàn)的功能集成起來(lái),由單片集成電路構(gòu)成功能強(qiáng)大的、完整的系統(tǒng),這就是我們 通常所說(shuō)的片上系統(tǒng)。IP復(fù)用是片上系統(tǒng)時(shí)代的核心技術(shù)之一。由于IP核的設(shè)計(jì)千差萬(wàn)別,它們要能夠直接連接,就要遵守相同的接口標(biāo)準(zhǔn)。在片上系

2、統(tǒng)中,處理器核和所有外設(shè)通 過(guò)共享總線互通互聯(lián),因此這些IP核必須遵守相同的總線規(guī)范。總線規(guī)范定義的是IP核之間的通用接口,因此它定義了一套標(biāo)準(zhǔn)的信號(hào)和總線周期,以連接不同的模 塊,而不是試圖去規(guī)范IP核的功能和接口如何實(shí)現(xiàn)。一個(gè)片上總線規(guī)范一般需要定 義各個(gè)模塊之間初始化、仲裁、請(qǐng)求傳輸、響應(yīng)、發(fā)送接收等過(guò)程中驅(qū)動(dòng)、時(shí)序、 策出略等天糸。芯片與電路板的資源和環(huán)境的不同,導(dǎo)致片上總線與板上總線存在若干明顯差 異,包括:片上總線多采用單向信號(hào)線,而板上總線多采用三態(tài)信號(hào)。片上三態(tài)總線無(wú) 論在功耗、速度、可測(cè)性上都存在很大缺陷,而且一旦出現(xiàn)多驅(qū)動(dòng)情況便會(huì)損毀芯 片(比如若應(yīng)該輸出"Z&q

3、uot;的信號(hào)實(shí)際輸出為"1",而另有一個(gè)信號(hào)輸出為"0",就形成一個(gè)低電阻通路,導(dǎo)致局部電流過(guò)大,熱量難以及時(shí)釋放,從而增加芯片功耗和大 大降低芯片壽命)。由于片上布線資源較為豐富,因此片上總線多采用單向信號(hào)線。 由于電路板上布線資源較為昂貴,因此板上總線多采用三態(tài)總線,但是由于三態(tài)總 線的功耗問(wèn)題和速度限制,目前板上總線也在向串行和非三態(tài)方向發(fā)展,如USB和PCIExpress。片上總線比板上總線更加簡(jiǎn)單靈活。首先片上總線結(jié)構(gòu)要簡(jiǎn)單,這樣可以占 用較少的邏輯單元;其次時(shí)序要簡(jiǎn)單,以利于提高總線的速度;第三接口要簡(jiǎn)單, 如此可減少與IP核連接的復(fù)雜度。

4、片上系統(tǒng)應(yīng)用廣泛,不同的應(yīng)用對(duì)總線的要求各 異,因此片上總線具有較大的靈活性。其一,多數(shù)片上總線的數(shù)據(jù)和地址寬度都可 變,其二,部分片上總線的互連結(jié)構(gòu)可變,如Wishbone總線支持點(diǎn)到點(diǎn)、數(shù)據(jù)流、共享總線和交叉幵關(guān)四種互連方式;其三,部分片上總線的仲裁機(jī)制靈活可變,如 Wishbone總線的仲裁機(jī)制可以完全由用戶定制。而板上總線則較為死板,時(shí)序也更 加苛刻。目前比較常見(jiàn)的片上總線規(guī)范有ARM公司的AMBA Silicore 的 Wishbone、IBM公司的CoreConnect和Altera 公司的Avalon。三種總線各有特點(diǎn),其適用范圍也 不同。AMBA總線規(guī)范因ARM處理器的廣泛使用

5、而擁有眾多第三方支持,被ARM公司90%以上的合作伙伴采用,已成為廣泛支持的現(xiàn)有互連標(biāo)準(zhǔn)之一。IBM公司的CoreConnect因?yàn)镮BM的業(yè)界地位也有廣泛的應(yīng)用。 Avalon主要用于Altera公司系 列PLD中,最大的優(yōu)點(diǎn)在于其配置的簡(jiǎn)單性,可由EDA工具快速生成。這三種片上總線雖然都是公幵標(biāo)準(zhǔn), 但都不是免費(fèi)的。而Wishbone則是一個(gè)真正幵放和免費(fèi)的 規(guī)范。它最先是由Silicore 公司提出的,目前由Ope nCores組織維護(hù)。由于其幵放性,因此OpenCores上的免費(fèi)的IP核,大多數(shù)都采用 Wishbone標(biāo)準(zhǔn)。Wishbone的 優(yōu)勢(shì)除幵放、免費(fèi)、擁有眾多免費(fèi)IP核外,還

6、有簡(jiǎn)單、靈活、輕量的特點(diǎn),特別適合大型IP內(nèi)部的小型IP之間的互聯(lián)。在本書(shū)介紹的OpenRISC處理器設(shè)計(jì)中,各個(gè) 模塊間的互聯(lián)接口中大量的采用了Wishbone總線規(guī)范。需要指出,任何一個(gè)總線規(guī)范,首先至少支持點(diǎn)對(duì)點(diǎn)互聯(lián),所以嚴(yán)格意義上講,國(guó)內(nèi)學(xué)術(shù)界普遍講的"總線規(guī)范"實(shí)際上指的是片上系統(tǒng)互聯(lián)規(guī)范,只不過(guò)多個(gè)IP通過(guò)共享總線互聯(lián)是人們最關(guān)心的,也是最廣泛使用的,所以?;\統(tǒng)的將片上系統(tǒng)互 聯(lián)規(guī)范講為總線規(guī)范。二、Wishbone片上總線的基本特點(diǎn)一般總線規(guī)范的共同特點(diǎn)為同時(shí)適用于于軟核、固核和硬核設(shè)計(jì);對(duì)幵發(fā)工具和目標(biāo)硬件沒(méi)有特殊要求,并且?guī)缀跫嫒菀延械乃芯C合工具;可以用

7、多種硬件描 述語(yǔ)言來(lái)實(shí)現(xiàn);支持結(jié)構(gòu)化設(shè)計(jì)方法學(xué),以提高大團(tuán)隊(duì)的設(shè)計(jì)效率;靈活的數(shù)據(jù)和 地址總線寬度,支持大端和小端操作;支持主從設(shè)備接口,支持多主設(shè)備,這是片 上共享總線通信所必須的,多個(gè)主設(shè)備同時(shí)需要進(jìn)行總線操作時(shí),由仲裁器決定當(dāng) 前哪個(gè)主設(shè)備可以使用總線,仲裁邏輯用戶可以自行定義。此外,在作者看來(lái), Wishbone總線規(guī)范的特點(diǎn)還包括:1. 支持點(diǎn)到點(diǎn)、共享總線、十字交叉(Crossbar )和基于交換結(jié)構(gòu)(Switchfabric ) 的互聯(lián)。Wishbone總線規(guī)范是"輕量級(jí)(Lightweight)"規(guī)范,它實(shí)際上更加側(cè)重于點(diǎn)對(duì)點(diǎn)互聯(lián)以及復(fù)雜度不高的共享總線片上

8、系統(tǒng)互聯(lián)。因此,與其他總線規(guī)范相比,Wishbone的接口更加簡(jiǎn)單緊湊,接口需要的互聯(lián)邏輯非常少(見(jiàn)本章后續(xù)的例子),這是 Wishbone的一個(gè)重要優(yōu)勢(shì)。熟悉AMBA總線的讀者在讀完本章后就能夠理Wishbone比AMBA總線簡(jiǎn)單的多,但是兩者各有個(gè)的優(yōu)勢(shì)。AMBA各所有的外設(shè)分為高速設(shè)備和低速設(shè)備,高速設(shè)備連接到系統(tǒng)總線,通常通信的數(shù)據(jù)量也較大,如SDRAM 控制器、NANDFIash控制器、LCD控制器,低速設(shè)備連接外設(shè)總線,通常通信數(shù)據(jù)量 小,如通用串口、計(jì)時(shí)器等。外設(shè)總線與系統(tǒng)總線通過(guò)總線橋接器相連。在實(shí)際系 統(tǒng)中,處理器、系統(tǒng)總線、外設(shè)總線間的時(shí)鐘頻率的典型比值之一是4:2:1,因

9、此整個(gè)系統(tǒng)的功耗被有效降低。另外一個(gè)好處是通過(guò)在總線橋接器中添加DMA引擎,系統(tǒng)總線和外設(shè)總線可以實(shí)現(xiàn)速率解耦。而依照Wishbone規(guī)范,Wishbone總線上所有設(shè)備都要連接到同一總線,無(wú)論是高速設(shè)備還是低速設(shè)備。與Wishbone總線相比,AMBA的缺點(diǎn)是設(shè)計(jì)較為復(fù)雜。但是實(shí)際上,Wishbone總線也設(shè)計(jì)為類似 AMBA總線的架構(gòu),但此時(shí)系統(tǒng)為雙 Wishbone總線架構(gòu)。2. 支持典型的數(shù)據(jù)操作,包括:?jiǎn)未巫x /寫(xiě)操作、塊讀/寫(xiě)操作,讀改寫(xiě)(RM,Read-Modify-Write ,細(xì)節(jié)見(jiàn)后文)操作。最快情況下一個(gè)時(shí)鐘周期可完成一次操作, 操作的結(jié)束方式包括:成功、錯(cuò)誤和重試(Re

10、try)。一個(gè)總線周期完成一次操作,一次操作可以是單次讀/寫(xiě)操作、塊讀/寫(xiě)操作或者讀改寫(xiě)操作。操作總是在某一總線 周期內(nèi)完成的,因此操作結(jié)束方式也稱為總線周期結(jié)束方式,兩者說(shuō)法在后文將視 情況使用。成功是操作的正常結(jié)束方式,錯(cuò)誤表示操作失敗,造成失敗的原因可能 是地址或者數(shù)據(jù)校驗(yàn)錯(cuò)誤,寫(xiě)操作或者讀操作不支持等。重試表示從設(shè)備當(dāng)前忙, 不能及時(shí)處理該操作,該操作可以稍后重新發(fā)起。接收到操作失敗或者重試后,主 設(shè)備如何響應(yīng)取決于主設(shè)備的設(shè)計(jì)者。3. 允許從設(shè)備進(jìn)行部分地址解碼,有利于減少了冗余地址譯碼邏輯,提高地址 譯碼速度。這一點(diǎn)本書(shū)將通過(guò)實(shí)例說(shuō)明4. 支持用戶定義的標(biāo)簽。這些標(biāo)簽可以用于為地址

11、、數(shù)據(jù)總線提供額外的信息如奇偶校驗(yàn),為總線周期提供額外的信息如中斷向量、緩存控制操作的類型等。Wishb one規(guī)范只定義標(biāo)簽的時(shí)序,而標(biāo)簽的具體含義用戶可自行定義。支持用戶定義的標(biāo)簽是Wishbone規(guī)范區(qū)別與其他片上總線規(guī)范的重要特征之一。5. 全同步化設(shè)計(jì),包括復(fù)位方式。但是實(shí)際上復(fù)位方式采用同步還是異步并不影響IP的互聯(lián)互通,因此兼容 Wishbone規(guī)范的IP完全可以采用異步方式,總結(jié)以上內(nèi)容,Wishbone總線規(guī)范區(qū)別于其他總線規(guī)范的兩個(gè)核心特點(diǎn)是:(1)是輕量級(jí)規(guī)范,因此接口更加簡(jiǎn)單緊湊;(2)支持支持用戶定義的標(biāo)簽。三、接口信號(hào)定義所有的Wishbone接口信號(hào)都是高電平有效

12、,設(shè)計(jì)成高電平有效的主要原因是由于低電平有效信號(hào)的書(shū)寫(xiě)問(wèn)題,不同的設(shè)計(jì)者表達(dá)低電平有效信號(hào)的方式不同,拿最常見(jiàn)的低電平有效的復(fù)位信號(hào)來(lái)說(shuō),其表示方法就有_RST_I、N_RST_、#RST_I和/RST_I,而高電平有效的信號(hào)其表達(dá)方式通常只有一種。所有的Wishbone接口信號(hào)都以或者_(dá)0結(jié)束。表示輸入,_0表示輸出。()表示該信號(hào)為總線信號(hào),總線的寬度可以為1,也可以為大于1的任何值。圖1Wishbone總線規(guī)范中使用的主要信號(hào)(一個(gè)點(diǎn)到點(diǎn)互聯(lián)的例子)在圖1中,主設(shè)備具有遵守 Wishbone規(guī)范的主設(shè)備接口,從設(shè)備具有遵守Wishb one規(guī)范的從設(shè)備接口, INTERCOM塊將主設(shè)備和

13、從設(shè)備的對(duì)應(yīng)數(shù)據(jù)、地址和控制線連接起來(lái),SY SCO模塊提供時(shí)鐘和復(fù)位信號(hào),這兩個(gè)信號(hào)被送入主設(shè)備和從設(shè)備。圖1給出了 Wishbone接口的常見(jiàn)信號(hào),這些信號(hào)有些是必須的,有些是可選 的。這些信號(hào)的基本功能描述如下:CLK_O/CLK_:時(shí)鐘信號(hào)。時(shí)鐘信號(hào)由SYSCOI模塊產(chǎn)生,并送入各個(gè)主設(shè)備和從設(shè)備。SY SCO通常內(nèi)部存在一個(gè)鎖相環(huán),將來(lái)源于芯片外的晶體振蕩器或者時(shí)鐘 輸入信號(hào)整形、分頻或者倍頻為芯片內(nèi)所需要的時(shí)鐘信號(hào)。所有Wishbone信號(hào)都同步到時(shí)鐘信號(hào)上,包括復(fù)位信號(hào)。RST_O/RST_I同步復(fù)位信號(hào),高電平有效。復(fù)位信號(hào)由SYSCOI模塊產(chǎn)生,并送入各主設(shè)備及從設(shè)備。DAT

14、_O()/DAT_I():主設(shè)備和從設(shè)備的之間的數(shù)據(jù)信號(hào),數(shù)據(jù)可以由主設(shè)備傳送給從設(shè)備,也可以由從設(shè)備傳送給主設(shè)備。一對(duì)主設(shè)備和從設(shè)備之間最多存在兩條 數(shù)據(jù)總線,一條用于主設(shè)備向從設(shè)備傳輸數(shù)據(jù),另外一條用于從設(shè)備向主設(shè)備傳輸 數(shù)據(jù)。Wishbone規(guī)定數(shù)據(jù)總線的最大寬度為64位,這一規(guī)定實(shí)際上是考慮到目前商用處理器的最大位數(shù)為 64,實(shí)際上數(shù)據(jù)總線的寬度可以是任意值。就筆者看來(lái), 在64位處理器以后,處理器將向多核方向發(fā)展,總線將向高速串行方向發(fā)展。ADR_O(nm)/ADR_l(nm):地址信號(hào),主設(shè)備輸出地址到從設(shè)備。n取決于IP核的地址寬度,m取決于數(shù)據(jù)總線DAT_O()/DAT_I()

15、的寬度和粒度。數(shù)據(jù)總線的粒度 指的是數(shù)據(jù)總線能夠一次傳送的最小比特?cái)?shù),很多處理器如ARM勺數(shù)據(jù)總線的粒度為1個(gè)字節(jié),但是也有一些處理器如 CEVATeakLiteDSP的數(shù)據(jù)總線粒度為2個(gè)字節(jié)。 一個(gè)位寬為32比特、粒度為1個(gè)字節(jié)的數(shù)據(jù)總線的地址信號(hào)應(yīng)定義為 ADR_O(n2)/ADR_l(n2)。在傳送數(shù)據(jù)時(shí),具體哪些字節(jié)有效通過(guò) SEL_O()/SEL_I() 信號(hào)(見(jiàn)下文)控制。TGD_O/TGD()TGA_O()/TGA_I() : TGD_O/TGD_I()為數(shù)據(jù)標(biāo)簽,具體講是附加于在數(shù)據(jù)總線 DAT_O()/DAT_I()的標(biāo)簽,該標(biāo)簽可以用于傳送關(guān)于數(shù)據(jù)總線的額外 信息如奇偶校驗(yàn)

16、信息、時(shí)間戳信息等。TGA_O/TGA_I()為地址標(biāo)簽,具體講是附加于在地址總線ADR_O()/ADR_I()的標(biāo)簽,該標(biāo)簽可以用于傳送關(guān)于地址總線的額外信 息如地址總線奇偶校驗(yàn)信息、存儲(chǔ)器保護(hù)信息等。Wishbone只規(guī)定了 TGD_O/TGD和TGA_O()/TGA_I()的接口時(shí)序,用戶可以定義 TGD_O/TGD_的具體含義。TGC_O/TGC_I(): TGC_O/TGC_I()為總線周期標(biāo)簽,該標(biāo)簽可以用于傳送關(guān)于當(dāng)前總線周期所進(jìn)行操作的描述如操作類型(包括單次操作、塊操作、RMW操作)、中斷應(yīng)答類型、緩存操作類型等。類似的,Wishbone只規(guī)定了 TGC_O/TGC_I()的

17、接口時(shí)序,用戶可以定義 TGD_O/TGD_的具體含義。ACK_O/ACK_I ERR_O/ERR_I RTY_O/RTY_I主從設(shè)備間的操作結(jié)束方式信號(hào)。ACK表示成功,ERR表示錯(cuò)誤,RTY表示重試(Retry)。操作總是在某一總線周期內(nèi) 完成的,因此操作結(jié)束方式也稱為總線周期結(jié)束方式。成功是操作的正常結(jié)束方式,錯(cuò)誤表示操作失敗,造成失敗的原因可能是地址或者數(shù)據(jù)校驗(yàn)錯(cuò)誤,寫(xiě)操作或者讀 操作不支持等。重試表示從設(shè)備當(dāng)前忙,不能及時(shí)處理該操作,該操作可以稍后重 新發(fā)起。接收到操作失敗或者重試后,主設(shè)備如何響應(yīng)取決于主設(shè)備的設(shè)計(jì)者。SEL_O()/SEL_I():有效數(shù)據(jù)總線選擇信號(hào),標(biāo)識(shí)當(dāng)前操

18、作中數(shù)據(jù)總線上哪些比 特是有效的,以總線粒度為單位。SEL_O()/SEL_I()的寬度為數(shù)據(jù)總線寬度除以數(shù)據(jù) 總線粒度。比如一個(gè)具有32位寬、粒度為1個(gè)字節(jié)的數(shù)據(jù)總線的選擇信號(hào)應(yīng)定義為 SEL_O(3:O)/SEL_I(3:O),SEL(4' b1001)代表當(dāng)前操作中數(shù)據(jù)總線的最高和最低字節(jié)有效。CYC O/CYC、I LOCK O/LOCK、IGNT O()/GNT I:總線周期信號(hào) CYC O/CYC 有效代表一個(gè)主設(shè)備請(qǐng)求總線使用權(quán)或者正在占有總線,但是不一定正在進(jìn)行總線操作(是否正在進(jìn)行總線操作取決于選通信號(hào)STB_O/STB_I是否有效)。只有該信號(hào)有效,Wishbone

19、主設(shè)備和從設(shè)備接口的其它信號(hào)才有意義。CYC_O/CYCJ信號(hào)在一次總線操作過(guò)程中必須持續(xù)有效,比如一次塊讀操作可能需要多個(gè)時(shí)鐘周期, CY C_O/C YC_I信號(hào)必須保持持續(xù)有效。實(shí)際上,該信號(hào)的實(shí)際作用等同于其他總線 標(biāo)準(zhǔn)中的仲裁申請(qǐng)信號(hào)。當(dāng)存在多個(gè)主設(shè)備時(shí),它們可能希望同時(shí)進(jìn)行總線操作, 主設(shè)備通過(guò)仲裁申請(qǐng)信號(hào)向仲裁器申請(qǐng)總線占有權(quán),仲裁器通過(guò)一定的仲裁優(yōu)先級(jí) 邏輯向其中一個(gè)選定的主設(shè)備發(fā)送總線允許信號(hào)GNT_O()/GNT_I,表示該主設(shè)備可以占用總線。GNT_O (是仲裁器輸出的允許信號(hào),一般有多個(gè);而對(duì)于一個(gè)主設(shè)備, 其允許信號(hào)輸入GNT_I卻只有一個(gè)。一次總線操作可能需要多個(gè)時(shí)

20、鐘周期,比如一 次塊操作。在操作過(guò)程中,仲裁器可能會(huì)提前將總線占用權(quán)收回并分配給其他主設(shè) 備從而打斷當(dāng)前主設(shè)備的操作,LOCK_O/LOCK_I有效代表本次總線操作是不可打斷的。仲裁器收到LOCK_I信號(hào),就不會(huì)提前收回總線使用權(quán)。圖1中只有一個(gè)主設(shè)備和一個(gè)從設(shè)備,因此沒(méi)畫(huà)出仲裁器模塊,該模塊可以視為是INTERCO的 一部分,見(jiàn)本章最后給出的例子。STB_O/STB_:選通信號(hào)。選通有效代表主設(shè)備發(fā)起一次總線操作。只有選通信 號(hào)有效(此時(shí) CYC_O/CYC也必須為高), ADR_O/ADR_I() DAT_O()/DAT_I()、 SEL_O()/SEL_I()才有意義。在 Wishbon

21、e總線規(guī)范中,CYC_O/CYC_(是最高層的控 制信號(hào),只有該信號(hào)有效,STB_O/STB_I信號(hào)才有意義。一個(gè)信號(hào)有意義是指該信號(hào)的當(dāng)前值是需要主設(shè)備或者從設(shè)備解釋的,0為無(wú)效,1為有效,而一個(gè)信號(hào)沒(méi)有意義是指該信號(hào)的當(dāng)前值主設(shè)備和從設(shè)備不必關(guān)心,是0還是1都無(wú)效。WE_O/WE_I寫(xiě)使能信號(hào),代表當(dāng)前周期中進(jìn)行的操作是寫(xiě)操作還是讀操作代表寫(xiě),0代表讀 四、Wishbone支持的互聯(lián)類型Wishbone規(guī)范支持的互聯(lián)類型有四種: 點(diǎn)到點(diǎn)、共享總線、十字交叉(Crossbar ) 和基于交換結(jié)構(gòu)(Switchfabric) 的互聯(lián)。這四種互聯(lián)方式在Wishbone規(guī)范中有明確 的定義。如圖1

22、 (第4頁(yè)),點(diǎn)到點(diǎn)互聯(lián)是最簡(jiǎn)單的互聯(lián)方式,它允許一個(gè)主設(shè)備 和一個(gè)從設(shè)備相互通信。比如,主設(shè)備可能是一個(gè)處理器IP核,從設(shè)備可能是一個(gè)串行I/O端口或者存儲(chǔ)器。點(diǎn)對(duì)點(diǎn)互聯(lián)的一個(gè)特殊應(yīng)用就是當(dāng)數(shù)據(jù)需要多個(gè)步驟順序進(jìn)行處理時(shí),多個(gè)同時(shí)具有主設(shè)備接口和從設(shè)備接口的模塊串接在一起,如圖2所示。這種連接方式也稱作數(shù)據(jù)流連接。模塊A處理完數(shù)據(jù)后將處理結(jié)果送給模塊B,模塊B處理完模塊A送來(lái)的數(shù)據(jù)后再將處理結(jié)果送給模塊C處理。數(shù)據(jù)從一個(gè)模塊送往另一個(gè)模塊,常常將這種處理方式稱作流水線。流水線在處理器設(shè)計(jì)中非常重要,其好處是多個(gè)數(shù) 據(jù)可以并行處理,從而提高系統(tǒng)的整體數(shù)據(jù)處理能力。圖2數(shù)據(jù)流方式互聯(lián)共享總線互聯(lián)

23、方式如圖 3所示。共享總線互聯(lián)方式適合于系統(tǒng)中有兩個(gè)或者多 個(gè)主設(shè)備需要與一個(gè)或者多個(gè)從設(shè)備通信的場(chǎng)合,它們通過(guò)共享的總線進(jìn)行通信, 其好處是結(jié)構(gòu)緊湊,節(jié)省布線資源,缺點(diǎn)是主設(shè)備希望與特定從設(shè)備通信時(shí)可能需 要等待。主設(shè)備在需要與一個(gè)從設(shè)備通信時(shí),需要先向仲裁器(圖中沒(méi)有給出)申 請(qǐng)總線占有權(quán),獲得允許后幵始占用總線并與目標(biāo)從設(shè)備幵始通信,通信結(jié)束后釋 放總線。當(dāng)多個(gè)主設(shè)備同時(shí)希望占有總線時(shí),仲裁器通過(guò)一定的優(yōu)先級(jí)邏輯分配總 線使用機(jī)會(huì)共享總線互聯(lián)方式在片上系統(tǒng)中得到了廣泛的使用,幾乎成了片上系統(tǒng)的標(biāo)志技術(shù)之一。共享總線技術(shù)在板級(jí)系統(tǒng)如PCI總線中也得到了應(yīng)用。圖3共享總線互聯(lián)方式十字交叉互聯(lián)

24、方式較共享總線互聯(lián)方式略復(fù)雜。共享總線互聯(lián)方式在任一時(shí)刻 只允許最多有一對(duì)主設(shè)備和從設(shè)備通過(guò)共享總線進(jìn)行通信,而十字交叉互聯(lián)方式最 多同時(shí)允許超過(guò)一對(duì)的主設(shè)備和從設(shè)備對(duì)同時(shí)進(jìn)行通信,如圖4所示。當(dāng)然,在十字交叉互聯(lián)方式中,一個(gè)從設(shè)備在任一時(shí)刻只能與一個(gè)主設(shè)備進(jìn)行通信,兩個(gè)主設(shè) 備不能同時(shí)訪問(wèn)同一從設(shè)備。圖4十字交叉互聯(lián)方式(圖中虛線代表了一種可能的通信方式)類似的,基于交換結(jié)構(gòu)的互聯(lián)比十字交叉互聯(lián)方式的INTERCO模塊更復(fù)雜,一般的,基于交換結(jié)構(gòu)的互聯(lián)比十字交叉互聯(lián)允許同時(shí)通信的主從設(shè)備對(duì)更多。隨著技術(shù)的發(fā)展,已經(jīng)出現(xiàn)了比片上總線更復(fù)雜的片上網(wǎng)絡(luò)技術(shù) (Network。nchip )?;谄?/p>

25、上網(wǎng)絡(luò)技術(shù),已經(jīng)出現(xiàn)了內(nèi)含幾十個(gè) 32位處理器的芯 片,已應(yīng)用于CISCO的高端路由器中。五、Wishbone總線周期一個(gè)總線周期由多個(gè)不可分的時(shí)鐘周期構(gòu)成,完成單次讀/寫(xiě)操作、塊讀/寫(xiě)操作或者讀改寫(xiě)操作。總線周期也分為單次讀/寫(xiě)周期、塊讀/寫(xiě)周期和讀改寫(xiě)周期。一次塊讀/寫(xiě)總線周期完成多次數(shù)據(jù)讀/寫(xiě)操作。一般情況下,一次操作由主設(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è)備的輸入輸出

26、信號(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(),將主設(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_置高作為對(duì)主設(shè)備STB_O 的響應(yīng)。"5.1 一般操作5.1 . 1復(fù)位操作復(fù)位是數(shù)字系統(tǒng)最基本的操作。復(fù)位后,系統(tǒng)進(jìn)入預(yù)定的狀態(tài)。在遵守Wish

27、bone 總線規(guī)范的系統(tǒng)中,當(dāng) RST_I信號(hào)有效,系統(tǒng)幵始復(fù)位。由于 Wishbone規(guī)范規(guī)定的 復(fù)位是同步復(fù)位,因此在復(fù)位信號(hào)有效后接下來(lái)的時(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ù)位,需要在文檔中說(shuō)明,因?yàn)閃ishbo ne接口默認(rèn)的是同步復(fù)位。圖5Wishbone總線的復(fù)位操作在圖5中,我們只給出了 STB_C和CYC_O這兩個(gè)信號(hào),而沒(méi)有給出其它信號(hào)當(dāng)這兩個(gè)

28、信號(hào)無(wú)效時(shí),所有其他信號(hào)沒(méi)有意義操作發(fā)起一個(gè)總線周期由至少一次總線操作構(gòu)成。操作總是由主設(shè)備發(fā)起,主設(shè)備發(fā)起的操作可以是單次讀/寫(xiě)、塊讀/寫(xiě)或者RMW操作。當(dāng)主設(shè)備將 CYC_(置為高時(shí),一 個(gè)總線周期幵始??偩€周期幵始后,當(dāng)主設(shè)備將STB_C#為高時(shí),一次總線操作幵始。當(dāng)主設(shè)備將CYC_OB為低時(shí),主設(shè)備的所有其他信號(hào)沒(méi)有意義。從設(shè)備只在CYC_I 為高時(shí)才會(huì)對(duì)主設(shè)備發(fā)起的操作進(jìn)行響應(yīng)。CYC_O STB_C可以同時(shí)從無(wú)效變?yōu)橛行П硎静僮鲙允?,CYC_O寺續(xù)有效直到操作結(jié)束,CYC_丙STB_C可以同時(shí)從無(wú)效變有效表示同時(shí)發(fā)起一次總線周期的同時(shí), 也發(fā)起總線操作,也可以同時(shí)從有效變?yōu)闊o(wú)效表示

29、操作結(jié)束。因此,在只有一個(gè)主 設(shè)備時(shí),可以將CYC_竊口 STB_O合并為一個(gè)信號(hào),比如在OpenRISC1200的源碼中就 廣泛的使用了這種方式,信號(hào)的名字稱作CY CSTB_Q當(dāng)存在多個(gè)主設(shè)備時(shí),一個(gè)主設(shè)備完成操作后必須及時(shí)將CYC_Ot號(hào)置為低,以讓出總線給其他主設(shè)備。此時(shí),CYC_Ot號(hào)等價(jià)于為總線占用請(qǐng)求信號(hào)?;疚帐謪f(xié)議由于在整個(gè)總線周期,CYC_O必須始終保持有效,因此,此后我們將在給出的 圖中忽略該信號(hào),只在必要的時(shí)候給出。握手發(fā)生在主設(shè)備和從設(shè)備之間。握手協(xié)議是主設(shè)備和從設(shè)備在握手時(shí)所遵守 的共同規(guī)則。如圖6,當(dāng)主設(shè)備準(zhǔn)備好,它將STB_O言號(hào)置高。STB_O言號(hào)一直為高,

30、直到從設(shè)備通過(guò)置高 ACK_O ERR_O RTY_C對(duì)本次操作發(fā)起響應(yīng)。在圖 7中我們以主設(shè)備的ACK_I信號(hào)作為示例,后文也如此。通過(guò)握手,主設(shè)備和從設(shè)備不僅可以 完成通信,而且可以控制它們之間的通信速率。圖6Wishbone總線的基本握手協(xié)議如果從設(shè)備保證能夠在主設(shè)備發(fā)起操作時(shí)及時(shí)作出操作成功的響應(yīng),其ACK_O信號(hào)可以設(shè)計(jì)為 STB和CYC信號(hào)的邏輯與,而 ERR_陽(yáng)RTY_O言號(hào)也可以不使 用。因此ERR_竊口 RTY_O言號(hào)是可選的,而ACK_O言號(hào)是必須的。在點(diǎn)對(duì)點(diǎn)連接中, 甚至可以將ACK_I信號(hào)直接置高。當(dāng)存在ERR_O5 RTY_O言號(hào),主設(shè)備當(dāng)發(fā)現(xiàn)ERR_O 和RTY_O

31、言號(hào)之一有效時(shí)如何進(jìn)行響應(yīng)取決于主設(shè)備的設(shè)計(jì)。對(duì)于從設(shè)備,只有 STB_I和CYC同時(shí)為高時(shí),才能發(fā)起對(duì)主設(shè)備的響應(yīng)實(shí)際上,對(duì)于主設(shè)備,其最小配置為只有 ACK、CLK_I、CYC_ORST_I和STB_O而對(duì)于從設(shè)備,其最小配置為只有 ACK_OCLK_I、CYC_k RST_I和STB_I,這里CYC和STB信號(hào)可以合并到一起成為一個(gè)信號(hào),通常命名為CYCSTB_O/在圖6中,從STB_C到ACK_I存在一個(gè)長(zhǎng)組合邏輯路徑,在實(shí)際系統(tǒng)中很可能成為關(guān)鍵路徑。因此,在設(shè)計(jì)中應(yīng)盡量保證 STB_C是觸發(fā)器的直接輸出。如果從STB_O 到ACK_I存在一個(gè)長(zhǎng)組合邏輯路徑延遲不能滿足設(shè)計(jì)的時(shí)序要求,

32、可將從設(shè)備的ACK_O經(jīng)過(guò)觸發(fā)器寄存后再輸出,從而將長(zhǎng)組合邏輯打破,但系統(tǒng)的吞吐量也將因此減小。關(guān)于如何即打破長(zhǎng)組合邏輯又不影響系統(tǒng)的吞吐量,后文將進(jìn)行詳細(xì)討論。5.2單次讀/寫(xiě)周期單次讀/寫(xiě)操作每次操作只完成一次讀或者寫(xiě),是最基本的總線操作方式。但是,Wishbone主設(shè)備或者從設(shè)備也可以不支持單次讀/寫(xiě)操作,甚至沒(méi)有地址和數(shù)據(jù)總單次讀操作如圖7。在時(shí)鐘上升沿 0,主設(shè)備將地址信號(hào) ADR_O() TGA_O(放 到總線上,將 WE_Of為低表示讀操作,將適當(dāng)?shù)?SEL_O()信號(hào)置高通知從設(shè)備將數(shù) 據(jù)放在數(shù)據(jù)總線的適當(dāng)位置,將CYCOffi TGC_C置高表示操作正在進(jìn)行,將 STB_O置

33、高表示操作幵始。在時(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)。在時(shí)鐘上升沿1,主設(shè)備發(fā)現(xiàn)ACK_I信號(hào)為高,將DAT_I()和TGD_I()采樣,并 將STB_C和CYC_OB為低表示操作完成。從設(shè)備發(fā)現(xiàn)STB_C置低后,也將主設(shè)備的輸入信號(hào)ACK_I置低。在圖7中,從設(shè)備可以上升沿 0和上升沿1之間插入任意多個(gè)等待周期。圖7Wishbone總線的單次讀操作單次寫(xiě)操作如圖8所示。在時(shí)鐘上升沿0,主設(shè)備將地址信號(hào) ADR_O() TGA_O() 放到總線上,將數(shù)據(jù)信號(hào)

34、 DAT_O()、TGD_O(放到總線上,將 WE_O1高表示寫(xiě)操作, 將適當(dāng)?shù)腟EL_O ()信號(hào)置高通知從設(shè)備數(shù)據(jù)總線DAT_O()的哪些信號(hào)是有效的,將CYC_卯TGC_O置高表示操作正在進(jìn)行,將 STB_C置高表示操作幵始。在時(shí)鐘上升沿1到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的操作,將主設(shè)備的ACK_I置高作為對(duì)主設(shè)備 STB_O的響應(yīng)。在時(shí)鐘上升沿1,從設(shè)備將DAT_I()和TGD_I()采樣;主設(shè)備發(fā)現(xiàn) ACK_I信號(hào)為 高,將STB_C和CYC_OB為低表示操作完成;從設(shè)備發(fā)現(xiàn)STB_C置低后,也將主設(shè)備的ACK_I置低在圖8中,從設(shè)備可以在上升沿 0和上升沿1之間插入任意多個(gè)等待周期

35、圖8Wishbone總線的單次寫(xiě)操作5.3塊讀周期塊讀/寫(xiě)操作每次讀/寫(xiě)數(shù)據(jù)多次。塊讀/寫(xiě)操作實(shí)際上是由順序進(jìn)行的多個(gè)單次讀/寫(xiě)操作組合而成的。在同時(shí)存在多個(gè)主設(shè)備時(shí),塊讀/寫(xiě)操作非常有用,一個(gè)塊讀寫(xiě)一般是不能打斷的,比如一次DMA如圖9所示,在一次塊操作中,CRC_(信號(hào)必須保持為咼。同時(shí)為了保證整個(gè)塊操作不被打斷,LOCK_O也可以置為咼,但是LOCK_(不必須為高。典型地,主設(shè)備進(jìn)行一次DMA連續(xù)傳輸4個(gè)或者8個(gè)總線寬度單位的數(shù)據(jù),然后主動(dòng)釋放總線,其后又試圖占用總線重新進(jìn)行DMA直到所有的數(shù)據(jù)都傳輸完畢。這樣做的好處是允許其他優(yōu)先級(jí)更高的主設(shè)備在兩次DMA之間插入操作以完成更加緊急的任

36、務(wù)。圖9Wishbone總線塊操作中CYC_Ot號(hào)的用法塊讀操作如圖10所示。塊操作最多能夠在每個(gè)時(shí)鐘周期進(jìn)行一次數(shù)據(jù)讀或者寫(xiě),但是主設(shè)備和從設(shè)備都可以通過(guò)插入等待周期控制塊操作的速度。一次塊操作 包括多次子操作。每一次子操作都是塊操作的一個(gè)階段,完成一次數(shù)據(jù)讀或者寫(xiě)。圖10的塊操作由五次讀操作完成,其過(guò)程如下:在時(shí)鐘上升沿0,主設(shè)備將地址信號(hào) ADR_O(、TGA_O(放到總線上,將 WE_Of 為低表示讀操作,將適當(dāng)?shù)腟EL_O ()信號(hào)置高通知從設(shè)備將數(shù)據(jù)放在數(shù)據(jù)總線的適當(dāng)位置,將CYC_O和TGC_O(置高表示操作正在進(jìn)行,將 STB_C置高表示一次子操作幵始。CYC_仿口 TGC_O

37、(從無(wú)效變?yōu)橛行Э梢园l(fā)生在上升沿0以前的任何時(shí)刻。在時(shí)鐘上升沿1到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的操作,將適當(dāng)?shù)臄?shù)據(jù)放到主設(shè)備的DAT_I()和TGD_I(),將主設(shè)備的ACK_I置高作為對(duì)主設(shè)備 STB_C的響應(yīng)。在時(shí)鐘上升沿1,主設(shè)備發(fā)現(xiàn)ACK_I信號(hào)為高,將DAT_I()和TGD_I()采樣,完 成第一次子操作。主設(shè)備將新地址信號(hào) ADR_O(、新TGA_O()放到總線上,將新的 SEL_O ()信號(hào)置高通知從設(shè)備將數(shù)據(jù)放在數(shù)據(jù)總線的適當(dāng)位置。在時(shí)鐘上升沿2到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的第二次操作,將適當(dāng)?shù)臄?shù)據(jù)放到主設(shè)備的 DAT_I()和TGD_I(),繼續(xù)將主設(shè)備的 ACK_I置

38、高。在時(shí)鐘上升沿2,主設(shè)備發(fā)現(xiàn)ACK_I信號(hào)為高,將DAT_I()和TGD_I()采樣,完 成第二次子操作。主設(shè)備將 STB_O言號(hào)置低表示插入等待周期。在時(shí)鐘上升沿3到達(dá)之前,從設(shè)備檢測(cè)到 STB_O言號(hào)為低,將ACK_I置低。在時(shí)鐘上升沿3,主設(shè)備發(fā)起第三次操作,將新的地址信號(hào) ADR_O()新的TGA_O() 放到總線上,將 WE_O1為低表示讀操作,將適當(dāng)?shù)?SEL_O ()信號(hào)置高通知從設(shè)備將 數(shù)據(jù)放在數(shù)據(jù)總線的適當(dāng)位置,將STB_C置高表示第三次子操作幵始。在時(shí)鐘上升沿4到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的第三次子操作,將適當(dāng)?shù)臄?shù)據(jù)放到主設(shè)備的 DAT_I()和TGD_I(),將主設(shè)

39、備的ACK_I置高作為對(duì)主設(shè)備STB_O 的響應(yīng)。圖10Wishbone總線的塊讀操作在時(shí)鐘上升沿4,主設(shè)備發(fā)現(xiàn)ACK_I信號(hào)為高,將DAT_I()和TGD_I()采樣,完 成第三次子操作。主設(shè)備同時(shí)發(fā)起第五次子操作, 將新地址信號(hào)ADR_O(、新TGA_O() 放到總線上,將新的SEL_O ()信號(hào)置高通知從設(shè)備將數(shù)據(jù)放在數(shù)據(jù)總線的適當(dāng)位置。在時(shí)鐘上升沿5到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的第五次子操作,將適當(dāng)?shù)臄?shù)據(jù)放到主設(shè)備的 DAT_I()和TGD_I(),將主設(shè)備的ACK_I置高作為對(duì)主設(shè)備STB_O 的響應(yīng)。在時(shí)鐘上升沿5,主設(shè)備發(fā)現(xiàn)ACK_I信號(hào)為高,將DAT_I()和TGD_I()

40、采樣,完 成第五次子操作。主設(shè)備同時(shí)發(fā)起第六次子操作, 將新地址信號(hào)ADR_O(、新TGA_O() 放到總線上,將新的SEL_O ()信號(hào)置高通知從設(shè)備將數(shù)據(jù)放在數(shù)據(jù)總線的適當(dāng)位置。在時(shí)鐘上升沿5過(guò)后,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的第六次子操作,但是由于數(shù)據(jù)沒(méi)有準(zhǔn)備好,它在新上升沿到達(dá)之前將ACK_I信號(hào)置低表示插入等待周期。上升沿5和6之間被插入了多個(gè)等待周期。當(dāng)從設(shè)備準(zhǔn)備好數(shù)據(jù),在時(shí)鐘上升沿6到達(dá)之前,將適當(dāng)?shù)臄?shù)據(jù)放到主設(shè)備的DAT_I()和TGD_I(),將主設(shè)備的ACK_I置高作為對(duì)主設(shè)備 STB_O的響應(yīng)。在時(shí)鐘上升沿6,主設(shè)備發(fā)現(xiàn)ACK_I信號(hào)為高,將DAT_I()和TGD_I()采樣,

41、并 將STB_C和CYC_OB為低表示整個(gè)塊讀操作完成。從設(shè)備發(fā)現(xiàn) STB_C置低后,也將 主設(shè)備的ACK_I置低。5.4塊寫(xiě)周期塊寫(xiě)操作的例子如圖11所示。圖11的一次塊寫(xiě)操作由五個(gè)相互關(guān)聯(lián)的單次寫(xiě) 操作完成。在時(shí)鐘上升沿0,主設(shè)備將地址信號(hào) ADR_O(、TGA_O(放到總線上,將數(shù)據(jù)信 號(hào)DAT_O()、TGD_O()放到總線上,將 WE_C置為高表示寫(xiě)操作,將適當(dāng)?shù)腟EL_O()信號(hào)置高通知從設(shè)備將數(shù)據(jù)總線上哪些信號(hào)是有效的,將CYC_邙口 TGC_O置高表示操作正在進(jìn)行,將STB_C置高表示第一次寫(xiě)操作幵始。在時(shí)鐘上升沿1到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的操作, 將主設(shè)備的ACK_I

42、 置高作為對(duì)主設(shè)備STB_O勺響應(yīng)在時(shí)鐘上升沿1,從設(shè)備將DAT_I()和TGD_I()采樣;主設(shè)備發(fā)現(xiàn) ACK_I信號(hào)為 高,得知第一次寫(xiě)操作完成,于是將新地址信號(hào)ADR_O()新TGA_O()放到總線上,將新數(shù)據(jù)信號(hào)DAT_O()、新TGD_O()放到總線上,將 WE_Ot為高表示寫(xiě)操作,將適 當(dāng)?shù)腟EL_O()信號(hào)置高通知從設(shè)備將數(shù)據(jù)總線上哪些信號(hào)是有效的,將CYC_O和TGC_C置高表示操作繼續(xù)在進(jìn)行,將 STB_C置高表示第二次寫(xiě)操作幵始。在時(shí)鐘上升沿2到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的第二次寫(xiě)操作,將主設(shè) 備的ACK_I置高作為對(duì)主設(shè)備 STB_O的響應(yīng)。在時(shí)鐘上升沿2,從設(shè)備將D

43、AT_I()和TGD_I()采樣;主設(shè)備發(fā)現(xiàn) ACK_I信號(hào)為 高,得知第二次寫(xiě)操作完成,發(fā)現(xiàn)自己的數(shù)據(jù)還沒(méi)有準(zhǔn)備好,于是將STB_O置低表示插入等待周期。在時(shí)鐘上升沿3到達(dá)之前,從設(shè)備檢測(cè)到 STB_C為低,也將ACK_I置低在時(shí)鐘上升沿3,主設(shè)備發(fā)起第三次操作,將新地址信號(hào) ADR_O(、新TGA_O() 放到總線上,將新數(shù)據(jù)信號(hào) DAT_O()、新TGD_O()放到總線上,將 WE_OS為高表示 寫(xiě)操作,將適當(dāng)?shù)?SEL_O ()信號(hào)置高通知從設(shè)備將數(shù)據(jù)總線上哪些信號(hào)是有效的, 將CYC_卯TGC_O置高表示操作繼續(xù)進(jìn)行,將 STB_C置高表示第三次寫(xiě)操作幵始。在時(shí)鐘上升沿4到達(dá)之前,從

44、設(shè)備檢測(cè)到主設(shè)備發(fā)起的第三次寫(xiě)操作,將主設(shè)備的ACK_I置高作為對(duì)主設(shè)備 STB_O的響應(yīng)在時(shí)鐘上升沿4,從設(shè)備將DAT_I()和TGD_I()采樣;主設(shè)備發(fā)現(xiàn) ACK_I信號(hào)為 高,得知第三次寫(xiě)操作完成,于是將新地址信號(hào)ADR_O()新TGA_O()放到總線上,將新數(shù)據(jù)信號(hào)DAT_O()新TGD_O()放到總線上,將適當(dāng)?shù)?SEL_O()信號(hào)置高通知從 設(shè)備將數(shù)據(jù)總線上哪些信號(hào)是有效的,將STB_O繼續(xù)置高表示第四次寫(xiě)操作幵始。在時(shí)鐘上升沿5到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的第四次寫(xiě)操作,將主設(shè)備的ACK_I置高作為對(duì)主設(shè)備 STB_O的響應(yīng)。在時(shí)鐘上升沿5,從設(shè)備將DAT_I()和TGD_

45、I()采樣;主設(shè)備發(fā)現(xiàn) ACK_I信號(hào)為 高,得知第四次寫(xiě)操作完成,于是發(fā)起第五次操作,將新地址信號(hào)ADR_O(、新TGA_O() 放到總線上。在時(shí)鐘上升沿5之后新的時(shí)鐘上升沿到達(dá)之前,從設(shè)備發(fā)現(xiàn)因?yàn)槟承┰驎簳r(shí)無(wú)法繼續(xù)接收數(shù)據(jù),因此將 ACK_I信號(hào)置低,插入等待。當(dāng)從設(shè)備發(fā)現(xiàn)可以繼續(xù)接收數(shù)據(jù),于是在在最后一個(gè)等待周期結(jié)束且上升沿5到達(dá)之前,將DAT_I()和TGD_I()采樣;主設(shè)備發(fā)現(xiàn)ACK_I信號(hào)為高,得知第五次寫(xiě) 操作完成。并將STB_O和CYCO置低表示整個(gè)塊寫(xiě)操作完成。圖IlWishbone總線的塊寫(xiě)操作5.5RMW操作在操作系統(tǒng)中,有一種重要的進(jìn)程間的同步機(jī)制稱作信號(hào)量機(jī)制。信

46、號(hào)量即當(dāng)前可用資源的計(jì)數(shù)。信號(hào)量是一個(gè)用來(lái)實(shí)現(xiàn)同步的整型或記錄型(Record)變量,除了初始化外,對(duì)它只能執(zhí)行等待和釋放這兩種原子操作。一次對(duì)信號(hào)量的等待操作 是獲得信號(hào)量的過(guò)程,讀取當(dāng)前信號(hào)量的值,如果發(fā)現(xiàn)有可利用資源,則將信號(hào)量減1,否則進(jìn)入等待狀態(tài)。一次對(duì)信號(hào)量的釋放過(guò)程即將信號(hào)量加1。一個(gè)進(jìn)程對(duì)信號(hào)的讀取、計(jì)算新的信號(hào)量值、更新信號(hào)量的值這三個(gè)步驟是不允許被其他進(jìn)程打 破的,如果被打破,則信號(hào)量的值將會(huì)發(fā)生錯(cuò)誤,RMW操作的最大用途在于信號(hào)量操作。一次RMW操作對(duì)于總線來(lái)說(shuō),本質(zhì)上是兩次子操作,一次讀,一次寫(xiě),只不過(guò) 這兩次子操作必須由同一個(gè)主設(shè)備的完成,且讀數(shù)據(jù)和寫(xiě)數(shù)據(jù)的地址相同。

47、"改"是不發(fā)生在總線上的,它發(fā)生在主設(shè)備內(nèi)部。一個(gè)RMV操作的例子如圖13所示,其過(guò)程如下:在時(shí)鐘上升沿0,主設(shè)備將地址信號(hào) ADR_O(、TGA_O(放到總線上,將 WE_(置 為低表示讀操作,將適當(dāng)?shù)腟EL_O ()信號(hào)置高通知從設(shè)備將數(shù)據(jù)放在數(shù)據(jù)總線的適當(dāng)位置,將CYC_O和TGC_O(置高表示操作正在進(jìn)行,將 STB_C置高表示第一次子 操作幵始。CYC_O® TGC_O(可以發(fā)生在上升沿0以前的任何時(shí)刻。在時(shí)鐘上升沿1到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的操作,將適當(dāng)?shù)臄?shù)據(jù)放到主設(shè)備的DAT_I()和TGD_I(),將主設(shè)備的ACK_I置高作為對(duì)主設(shè)備 ST

48、B_C的響應(yīng)。在時(shí)鐘上升沿1,主設(shè)備發(fā)現(xiàn)ACK_I信號(hào)為高,將DAT_I()和TGD_I()采樣,完 成第一次子操作。主設(shè)備將 STB_C置低表示插入等待。在時(shí)鐘上升沿1之后新的上升沿到達(dá)之前, 從設(shè)備檢測(cè)到主設(shè)備將 STB_C置低, 于是將ACK_I置低。經(jīng)過(guò)若干等待周期,在上升沿2,主設(shè)備將地址信號(hào) ADR_O(、TGA_O()放到總線上,將數(shù)據(jù)信號(hào) DAT_O()、TGD_O()放到總線上,將 WE_C置為高表示寫(xiě)操作,將適當(dāng)?shù)腟EL_O()信號(hào)置高通知從設(shè)備將數(shù)據(jù)總線上哪些信號(hào)是有效的,將STB_O置高表示第二次子操作幵始。在時(shí)鐘上升沿3到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的操作,將主設(shè)備

49、的ACK_I置高作為對(duì)主設(shè)備 STB_O的響應(yīng)。在時(shí)鐘上升沿3,從設(shè)備將DAT_I()和TGD_I()采樣;主設(shè)備發(fā)現(xiàn) ACK_I信號(hào)為 高,得知第二次子操作完成,于是將STB_C和CYC_OB低表示整個(gè)RMW操作完成。在時(shí)鐘上升沿之后,從設(shè)備發(fā)現(xiàn) STB_C為低,于是將ACK_I置低。圖13Wishbone總線的RMW操作5.6數(shù)據(jù)組織數(shù)據(jù)組織是指數(shù)據(jù)的傳送順序。目前常見(jiàn)的32為處理器的數(shù)據(jù)總線粒度為 1字節(jié),在傳送時(shí),一個(gè)32位數(shù)據(jù)的最高字節(jié)可以放在數(shù)據(jù)總線的最低8位傳送,也可以放在數(shù)據(jù)總線的最高 8位傳送,因此出現(xiàn)了大端和小端兩種數(shù)據(jù)組織方法。大端 是指一個(gè)數(shù)據(jù)的最高位放在數(shù)據(jù)總線的最低

50、位傳送或者放在地址較小的存儲(chǔ)器位置 存儲(chǔ);小端是指一個(gè)數(shù)據(jù)的最高位放在數(shù)據(jù)總線的最高位傳送或者放在地址較高的 存儲(chǔ)器位置存儲(chǔ)。 Wishbone同時(shí)支持大端和小端兩者數(shù)據(jù)組織方式。當(dāng)數(shù)據(jù)總線的 粒度和寬度相同時(shí),大端和小端是一樣的。這兩者數(shù)據(jù)組織方式在一般文獻(xiàn)中都可以找到??偩€標(biāo)準(zhǔn)只定義接口的通信協(xié) 議,而數(shù)據(jù)的組織本質(zhì)上取決于主設(shè)備和從設(shè)備的設(shè)計(jì)。有時(shí)需要將大端和小端的 接口互聯(lián)起來(lái),下圖給出了將數(shù)據(jù)組織為大端的IPA和數(shù)據(jù)組織為大端的IPB相連的情形。IPA和IPB的數(shù)據(jù)總線寬度都是32為,粒度為8位。圖14大端和小端的接口互聯(lián)六、Wishbone寄存反饋總線周期6.1周期的同步與異步結(jié)束

51、方式之對(duì)比為了實(shí)現(xiàn)在給定時(shí)鐘頻率下的最大可能吞吐量,Wishbo ne采用了周期異步結(jié)束方式。這樣做的結(jié)果是從主設(shè)備的STB_O到從設(shè)備的ACK_0/ERR_0/RTY_O到主設(shè)備的ACK_I/ERR_I/RTY_I輸入形成了一個(gè)異步回路,如圖15。在大型SoC設(shè)計(jì)中,該回路往往成為整個(gè)設(shè)計(jì)的關(guān)鍵路徑,限制系統(tǒng)時(shí)鐘頻率的進(jìn)一步提高。在深亞微 米時(shí)代,由于線延遲往往比門延遲更大,這一異步回路更加可能成為系統(tǒng)性能的瓶 頸。圖15Wishbone總線的異步周期結(jié)束路徑這一問(wèn)題的最簡(jiǎn)單解決方法是插入寄存器將回路斷幵,但這樣做的缺點(diǎn)是在每 一次總線操作中都需要插入一個(gè)等待周期,從而制約了總線吞吐量。如圖

52、16所示,在上升沿1主設(shè)備發(fā)起了一次操作,在上升沿2從設(shè)備發(fā)起響應(yīng)將 ACK_O置高,在上升沿3主設(shè)備檢測(cè)到ACK_I為高完成第一次操作并發(fā)起第二次操作,但是在上升 沿3從設(shè)備并不知道主設(shè)備會(huì)發(fā)起第二次操作,因此只能將ACK_O言號(hào)置低。在上升沿4從設(shè)備才能對(duì)第二次操作發(fā)起響應(yīng)將ACK_C置高,在上升沿4主設(shè)備檢測(cè)到ACK_I為高完成第二次操作。圖16Wishbone總線的傳統(tǒng)同步周期結(jié)束方式在圖16中,每一次傳輸都需要兩個(gè)時(shí)鐘周期,一半的帶寬被浪費(fèi)。如果從設(shè)備 在上升沿3知道主設(shè)備將發(fā)起新的操作,它將能夠在上升沿3就對(duì)主設(shè)備的操作發(fā) 起響應(yīng),從而節(jié)省時(shí)鐘周期提高了系統(tǒng)的吞吐量,利用該思想改進(jìn)

53、后的同步時(shí)序如 圖17所示。圖17Wishbone總線改進(jìn)的同步周期結(jié)束方式在圖17的上升沿1,主設(shè)備發(fā)起操作,在上升沿2,從設(shè)備將ACK_C置高,在上升沿3,從設(shè)備知道主設(shè)備將發(fā)起新的操作,于是將ACK_O繼續(xù)置高。因此,3個(gè)時(shí)鐘周期就完成了 2次操作,而不是原來(lái)大的4個(gè)時(shí)鐘周期,于是吞吐量提高了 25% 一般的,改進(jìn)后,N次操作需要N+1個(gè)時(shí)鐘周期,而不是2N個(gè)時(shí)鐘周期,吞吐量改 善為(N-1)/N%。改進(jìn)后的同步周期結(jié)束方式具備異步周期結(jié)束方式的吞吐量?jī)?yōu)勢(shì),同時(shí)具備傳 統(tǒng)同步結(jié)束方式的延遲優(yōu)勢(shì)。改進(jìn)后的同步周期結(jié)束方式稱作Wishb one寄存反饋周期結(jié)束方式。6.2Wishbone寄存

54、反饋周期結(jié)束方式在Wishbone寄存反饋周期結(jié)束方式中, 主設(shè)備需要事先通知從設(shè)備操作下一時(shí) 鐘周期是否將發(fā)起新的總線操作,這是通過(guò)周期類型識(shí)別地址標(biāo)簽CTI_O()/CTI()和突發(fā)類型擴(kuò)展地址標(biāo)簽BTE_O()/BTE_I()完成的。主設(shè)備和從設(shè)備必須同時(shí)支持CTI_O()/CTI(),Wishbone接口才能以寄存反饋周期結(jié)束方式工作,主設(shè)備和從 設(shè)備如果支持地址增加突發(fā)模式,它們必須同時(shí)支持BTE_O()/BTE_I() o如果主設(shè)備或者從設(shè)備之一不支持這種周期結(jié)束方式,它們只能以傳統(tǒng)周期結(jié)束方式工作。周期類型識(shí)別地址標(biāo)簽CTI_O()/CTI()提供描述當(dāng)前操作突發(fā)模式的信息,CT

55、I_O()/CTI_I()的具體從設(shè)備可以根據(jù)該信息確定在下一時(shí)鐘周期如何進(jìn)行響應(yīng)定義如表2表2周期類型標(biāo)識(shí)符CTI_O(2:O)描述3' bOOO傳統(tǒng)總線周期3' bOO1恒定地址突發(fā)總線周期3' bO1O遞增突發(fā)總線周期3' bO11預(yù)留3' blOO預(yù)留3' b1O1預(yù)留3' b11O預(yù)留3' bill突發(fā)結(jié)束不支持CTI_O()的主設(shè)備必須將該信號(hào)置為 3' bOOO或者3' bill,這兩個(gè)是等 價(jià)的。主設(shè)備和從設(shè)備可以支持這些突發(fā)模式中的一部分,對(duì)于不支持的突發(fā)模式,主設(shè)備必須將CTI_O()置為3&#

56、39; bOOO,從設(shè)備必須將 CTI()理解為3' bOOO。為了減少在同步模式下的等待時(shí)間,從設(shè)備必須對(duì)主設(shè)備的操作盡快的做出響應(yīng)。從設(shè)備可利用 CTI()信號(hào)確定在下一周期對(duì)主設(shè)備的響應(yīng),但是由于此時(shí)還 不知道STB信號(hào)的狀態(tài),因此從設(shè)備在確定在下一周期對(duì)主設(shè)備的響應(yīng)時(shí)只能忽 略STB_I信號(hào),因此即使在 STB_I信號(hào)為低的情況下,從設(shè)備仍然可能將ACK_0/ERR_0/RTYJO高。因此,主設(shè)備應(yīng)保證 CTI_O()信息的有效性。突發(fā)類型擴(kuò)展地址標(biāo)簽 BTE_O()/BTE_I()是對(duì)CTI_0()/CTI_I()=3 ' bO1O情況下的突發(fā)類型信息的擴(kuò)展,描述的是

57、地址值是如何變化的。其含義如表3所示。表3遞增和遞減突發(fā)類型擴(kuò)展BTE0 (1:0)描述2' b00線性突發(fā)2' b01疊4突發(fā)2' b10疊8突發(fā)2' b11疊16突發(fā)6.3突發(fā)結(jié)束突發(fā)結(jié)束(CTI_0=3' bill)表示當(dāng)前操作是當(dāng)前突發(fā)的最后一次操作,主設(shè)備在當(dāng)前操作結(jié)束后緊接著的時(shí)鐘周期不再發(fā)起操作。圖18給出了 CTI_0=3 bill的用法。圖中共有3次操作。第一次操作和第二次 操作是一個(gè)突發(fā)操作的一部分。第一次操作發(fā)生在上升沿0,這是一次寄存反饋?zhàn)x操作,第二次操作是該突發(fā)操作的最后一個(gè)操作,主設(shè)備將CTI_O置為3' bill表示整個(gè)突發(fā)操作結(jié)束。第三次操作為單次寫(xiě)操作。圖18Wishbone總線的突發(fā)結(jié)束圖18的操作過(guò)程如下:在時(shí)鐘上升沿0到達(dá)之前,一個(gè)突發(fā)寄存反饋?zhàn)x操作正在進(jìn)行。從設(shè)備將數(shù)據(jù)放到數(shù)據(jù)總線DAT_I()。在時(shí)鐘上升沿 0,主設(shè)備將 DAT_I()采樣,并更新地址總線 ADR_O(),同時(shí)將 CTI_O()置為3' b

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論