




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Wishbone b3 中文版本文詳細介紹了 Wishbone標準,主要參考了 Wishbone標準B.3版本的核 心內容,感興趣的讀者可去下載英文原文。一、片上總線技術綜述隨著超大規模集成電路的迅速發展,半導體工業進入深亞微米時代,器件 特征尺寸越來越小,芯片規模越來越大,可以在單芯片上集成上百萬到數億只 晶體管。如此密集的集成度使我們現在能夠在一小塊芯片上把以前山CPU和外 設等數塊芯片實現的功能集成起來,山單片集成電路構成功能強大的、完整的 系統,這就是我們通常所說的片上系統。IP復用是片上系統時代的核心技術之一。由于IP核的設計干差萬別,它們 要能夠直接連接,就要遵守相同的接口標準。在
2、片上系統中,處理器核和所有 外設通過共享總線互通互聯,因此這些IP核必須遵守相同的總線規范。總線規 范定義的是IP核之間的通用接口,因此它定義了一套標準的信號和總線周期, 以連接不同的模塊,而不是試圖去規范IP核的功能和接口如何實現。一個片上 總線規范一般需要定義各個模塊之間初始化、仲裁、請求傳輸、響應、發送接 收等過程中驅動、時序、策略等關系。芯片與電路板的資源和環境的不同,導致片上總線與板上總線存在若干明 顯差異,包括: 片上總線多采用單向信號線,而板上總線多采用三態信號。片上三態總 線無論在功耗、速度.可測性上都存在很大缺陷,而且一旦岀現多驅動情況便 會損毀芯片(比如若應該輸出吃“的信號
3、實際輸出為叫而另有一個信號輸出為就形成一個低電阻通路,導致局部電流過大,熱量難以及時釋放,從而增 加芯片功耗和大大降低芯片壽命)。由于片上布線資源較為豐富,因此片上總 線多采用單向信號線。山于電路板上布線資源較為昂貴,因此板上總線多采用 三態總線,但是山于三態總線的功耗問題和速度限制,口前板上總線也在向串 行和非三態方向發展,如USB和PCI Expresso 片上總線比板上總線更加簡單靈活。首先片上總線結構要簡單,這樣可 以占用較少的邏輯單元;其次時序要簡單,以利于提高總線的速度;第三接口 要簡單,如此可減少與IP核連接的復雜度。片上系統應用廣泛,不同的應用對 總線的要求各異,因此片上總線具
4、有較大的靈活性。其一,多數片上總線的數 據和地址寬度都可變,其二,部分片上總線的互連結構可變,如Wishbone總 線支持點到點、數據流、共享總線和交叉開關四種互連方式;其三,部分片上 總線的仲裁機制靈活可變,如Wishbone總線的仲裁機制可以完全山用戶定 制。而板上總線則較為死板,時序也更加苛刻。目前比較常見的片上總線規范有ARM公司的AMBA、Silicore的Wishbone IBM公司的CoreConnect和Altera公司的Avalono三種總線各有特 點,其適用范圍也不同。AMBA總線規范因ARM處理器的廣泛使用而擁有眾多 第三方支持,被ARM公司90%以上的合作伙伴采用,已成
5、為廣泛支持的現有互 連標準之一。IBM公司的CoreConnect因為IBM的業界地位也有廣泛的應用。 Avalon主要用于Altera公司系列PLD中,最大的優點在于其配置的簡單性,可 由EDA工具快速生成。這三種片上總線雖然都是公開標準,但都不是免費的。 而Wishbone則是一個真正開放和免費的規范。它最先是山Silicore公司提出 的,目前111 OpenCores組織維護。由于其開放性,因此0penCores上的免費的 IP核,大多數都采用Wishbone標準。Wishbone的優勢除開放、免費、擁有眾 多免費IP核外,還有簡單、靈活、輕量的特點,特別適合大型IP內部的小型IP 之
6、間的互聯。在本書介紹的0penRISC處理器設計中,各個模塊間的互聯接口中 大量的采用了 Wishbone總線規范。需要指出,任何一個總線規范,首先至少支持點對點互聯,所以嚴格意義 上講,國內學術界普遍講的“總線規范“實際上指的是片上系統互聯規范,只不 過多個IP通過共享總線互聯是人們最關心的,也是最廣泛使用的,所以常籠統 的將片上系統互聯規范講為總線規范。二、Wishbone片上總線的基本特點一般總線規范的共同特點為同時適用于于軟核、固核和硬核設計;對開發 工具和目標硬件沒有特殊要求,并且兒乎兼容已有的所有綜合工具;可以用多 種硬件描述語言來實現;支持結構化設計方法學,以提高大團隊的設計效率
7、; 靈活的數據和地址總線寬度,支持大端和小端操作;支持主從設備接口,支持 多主設備,這是片上共享總線通信所必須的,多個主設備同時需要進行總線操 作時,山仲裁器決定當前哪個主設備可以使用總線,仲裁邏輯用戶可以自行定 義。此外,在作者看來,Wishbone總線規范的特點還包括:1.支持點到點、共享總線、十字交叉(Crossbar)和基于交換結構(Switch fabric)的互聯。Wishbone總線規范是,輕量級(Lightweight)11規范,它實際上更 加側重于點對點互聯以及復雜度不高的共享總線片上系統互聯。因此,與其他 總線規范相比,Wishbone的接口更加簡單緊湊,接口需要的互聯邏輯
8、非常少 (見本章后續的例子),這是Wishbone的一個重要優勢。熟悉AMBA總線的 讀者在讀完本章后就能夠理Wishbone比AMBA總線簡單的多,但是兩者各有 個的優勢。AMBA將所有的外設分為高速設備和低速設備,高速設備連接到系 統總線,通常通信的數據量也較大,如SDRAM控制器、NAND Flash控制器、 LCD控制器,低速設備連接外設總線,通常通信數據量小,如通用串口、訃時 器等。外設總線與系統總線通過總線橋接器相連。在實際系統中,處理器、系 統總線、外設總線間的時鐘頻率的典型比值之一是4:2:1,因此整個系統的功耗 被有效降低。另外一個好處是通過在總線橋接器中添加DMA引擎,系統
9、總線和 外設總線可以實現速率解耦。而依照Wishbone規范,Wishbone總線上所有設 備都要連接到同一總線,無論是高速設備還是低速設備。與Wishbone總線相 比,AMBA的缺點是設計較為復雜。但是實際上,Wishbone總線也設計為類似 AMBA總線的架構,但此時系統為雙Wishbone總線架構。2. 支持典型的數據操作,包括:單次讀/寫操作、塊讀/寫操作,讀改寫 (RMW, Read-Modify- Write,細節見后文)操作。最快情況下一個時鐘周期可完成一次操作,操作的結束方式包括:成功、錯誤和重試(Retry)o 一個總線周 期完成一次操作,一次操作可以是單次讀/寫操作、塊讀
10、/寫操作或者讀改寫操 作。操作總是在某一總線周期內完成的,因此操作結束方式也稱為總線周期結 束方式,兩者說法在后文將視情況使用。成功是操作的正常結束方式,錯誤表 示操作失敗,造成失敗的原因可能是地址或者數據校驗錯誤,寫操作或者讀操 作不支持等。重試表示從設備當前忙,不能及時處理該操作,該操作可以稍后 重新發起。接收到操作失敗或者重試后,主設備如何響應取決于主設備的設訃 者。3. 允許從設備進行部分地址解碼,有利于減少了冗余地址譯碼邏輯,提高 地址譯碼速度。這一點本書將通過實例說明。4. 支持用戶定義的標簽。這些標簽可以用于為地址、數據總線提供額外的 信息如奇偶校驗,為總線周期提供額外的信息如中
11、斷向量、緩存控制操作的類 型等。Wishbone規范只定義標簽的時序,而標簽的具體含義用戶可自行定義。 支持用戶定義的標簽是Wishbone規范區別與其他片上總線規范的重要特征之5. 全同步化設計,包括復位方式。但是實際上復位方式采用同步還是異步 并不影響IP的互聯互通,因此兼容Wishbone規范的IP完全可以釆用異步方 式,上面的很多兼容Wishbone規范的開源IP采用的就是異步復位。總結以上內容,Wishbone總線規范區別于其他總線規范的兩個核心特點 是:(1)是輕量級規范,因此接口更加簡單緊湊;(2)支持支持用戶定義的 標簽。三、接口信號定義所有的Wishbone接口信號都是高電平
12、有效,設計成高電平有效的主要原 因是山于低電平有效信號的書寫問題,不同的設計者表達低電平有效信號的方 式不同,拿最常見的低電平有效的復位信號來說,其表示方法就有_RST_I、 N_RST_K #RST_I和/RSTJ,而高電平有效的信號其表達方式通常只有一種。所有的Wishbone接口信號都以或者_0結束。表示輸入,_0表示輸 出。()表示該信號為總線信號,總義的寬應可以為1,也可以為大扌1的任 何值。圖1 Wishbone總線規范中使用的主要信號(一個點到點互聯的例子)在圖1中,主設備具有遵守Wishbone規范的主設備接口,從設備具有遵 守Wishbone規范的從設備接口 , INTERC
13、ON模塊將主設備和從設備的對應數 據、地址和控制線連接起來,SYSCON模塊提供時鐘和復位信號,這兩個信號被 送入主設備和從設備。圖1給出了 Wishbone接口的常見信號,這些信號有些 是必須的,有些是可選的。這些信號的基本功能描述如下:CLK_O/CLK_I:時鐘信號。時鐘信號曲SYSCON模塊產生,并送入各個主設 備和從夜備。SYSCON通常內部存在一個鎖相環,將來源于芯片外的晶體振蕩器 或者時鐘輸入信號整形、分頻或者倍頻為芯片內所需要的時鐘信號。所有 Wishbone信號都同步到時鐘信號上,包括復位信號。RST_O/RST_I:同步復位信號,高電平有效。復位信號山SYSCON模塊產 生
14、,并蓬入各圭設備及從設備。DAT_O()/DAT_I():主設備和從設備的之間的數據信號,數據可以由主設備 傳送給從設備,免可以山從i殳備傳送給主設備。一對主設備和從設備之間最多 存在兩條數據總線,一條用于主設備向從設備傳輸數據,另外一條用于從設備 向主設備傳輸數據。Wishbone規定數據總線的最大寬度為64位,這一規定實 際上是考慮到LI前商用處理器的最大位數為64,實際上數據總線的寬度可以是 任意值。就筆者看來,在64位處理器以后,處理器將向多核方向發展,總線將 向高速串行方向發展。ADR_O(n.m)/ADR_l(n.m):地址信號,主設備輸出地址到從設備。n取決 于IP核俯地址寬度,
15、m取決于數據總線DAT_O()/DAT_I()的寬度和粒度。數據總 線的粒度指的是數據總線能夠一次傳送的最小比特數,很多處理器如ARM的數 據總線的粒度為1個字節,但是也有一些處理器如CEVA TeakLite DSP的數據總 線粒度為2個字節。一個位寬為32比特、粒度為1個字節的數據總線的地址信 號應定義為ADR_0(n.2)/ADR_l(n.2)o在傳送數據時,具體哪些字節有效通過 SEL_O()/SEL_I()信吾(見下文)控制。TGD_O/TGD_I()、TGA_O()/TGA_I(): TGD_O/TGD_I()為數據標簽,具體講是 附加于在數據總線DAT_O()/DAT_I()的標
16、簽,該標簽奇以用于傳送關于數據總線 的額外信息如奇偶校驗信息、時間戳信息等。TGA_O/TGA_I()為地址標簽,具體 講是附加于在地址總線ADR_O()/ADR()的標簽,應標簽可7以用于傳送關于地址 總線的額外信息如地址總線諒偶校驗信息、存儲器保護信息等。Wishbone只規 定了 TGD_O/TGD和TGA_O()/TGA_I()的接口時序,用戶可以定義TGD_O/TGD_I 的具體含爻。TGC_O/TGC_I(): TGC_O/TGC_I()為總線周期標簽,該標簽可以用于傳送關于 當前總發周期所建行操作3勺描述帀操作類型(包括單次操作、塊操作、RMW操 作)、中斷應答類型、緩存操作類型
17、等。類似的,Wishbone只規定了 TGC_O/TGC_I()的接口時序,用戶可以定義TGD_O/TGD_I的具體含義。ACK_O/ACK_I、ERR_O/ERR_I、RTY_O/RTY_I:主從設備間的操作結束方式信 號。ACK表示成功,ERR表示錯誤,RTY表示重試(Retry)。操作總是在某一總線 周期內完成的,因此操作結束方式也稱為總線周期結束方式。成功是操作的正 常結束方式,錯誤表示操作失敗,造成失敗的原因可能是地址或者數據校驗錯 誤,寫操作或者讀操作不支持等。重試表示從設備當前忙,不能及時處理該操 作,該操作可以稍后重新發起。接收到操作失敗或者重試后,主設備如何響應 取決于主設備
18、的設計者。SEL_O()/SEL_I():有效數據總線選擇信號,標識當前操作中數據總線上哪些 比特是看效的,以總線粒度為單位。SEL_O()/SEL_I()的寬度為數據總線寬度除以 數據總線粒度。比如一個具有32位寬、贏度為1個字節的數據總線的選擇信號 應定義為SEL_0(3:0)/ SELJ(3:0), SEL(HblOOl)代表當前操作中數據總線的最高和 最低字節有坂。CYC_O/CYC_I、LOCKJD/LOCK、GNT_O()/GNT_I : 總線周 期信號 CYC_O/CYC_I有該攵代表一個主設備請求總線任用權或希正在占有總線,但是不 一定正在址行總線操作(是否正在進行總線操作取決
19、于選通信號STB_O/STB_I 是否有效)。只有該信號有效,Wishbone主設備和從設備接口的其它信號才看 意義。CYC_O/CYC_I信號在一次總線操作過程中必須持續有效,比如一次塊讀 操作可能需要多個時鐘周期,CYC_O/CYC_I信號必須保持持續有效。實際上, 該信號的實際作用等同于其他總疵標準審的仲裁申請信號。當存在多個主設備 時,它們可能希望同時進行總線操作,主設備通過仲裁申請信號向仲裁器申請 總線占有權,仲裁器通過一定的仲裁優先級邏輯向其中一個選定的主設備發送 總線允許信號GNT_O()/GNT表示該主設備可以占用總線。GNT_O()是仲裁器 輸岀的允許信號,一般有多個;而對于
20、一個主設備,其允許信號輸入GNT卻 只有一個。一次總線操作可能需要多個時鐘周期,比如一次塊操作。在操作過 程中,仲裁器可能會提前將總線占用權收回并分配給其他主設備從而打斷當前 主設備的操作,LOCK_O/LOCK_I有效代表本次總線操作是不可打斷的。仲裁器 收到LOCK信號,就不會提前收回總線使用權。圖1中只有一個主設備和一個 從設備,因此沒畫出仲裁器模塊,該模塊可以視為是INTERCOM的一部分,見 本章最后給出的例子。STB_O/STB_I:選通信號。選通有效代表主設備發起一次總線操作。只有選 通信號有效(此時CYC_O/CYC_I也必須為高),ADR_O/ADR_I()、 DAT_O()
21、/DAT_I()、SEL_O()/SELJ()才肴意義。在 Wishbone 總義規范中, CYC_O/CYC_I是最高層的控制宿號,只有該信號有效,STB_O/STB_I信號才有意 義。一個信號有意義是指該信號的當前值是需要主設備應者從夜備解釋的,0 為無效,1為有效,而一個信號沒有意義是指該信號的當前值主設備和從設備 不必關心,是0還是1都無效。WE_O/WE_I:寫使能信號,代表當前周期中進行的操作是寫操作還是讀操 作。1 寫,0代表讀。四、Wishbone支持的互聯類型Wishbone規范支持的互聯類型有四種:點到點、共享總線、十字交叉 (Crossbar )和基于交換結構(Switc
22、h fabric)的互聯。這四種互聯方式在 Wishbone規范中有明確的定義。如圖1 (第4頁),點到點互聯是最簡單的互 聯方式,它允許一個主設備和一個從設備相互通信。比如,主設備可能是一個 處理器IP核,從設備可能是一個串行I/O端口或者存儲器。點對點互聯的一個特殊應用就是當數據需要多個步驟順序進行處理時,多 個同時具有主設備接口和從設備接口的模塊串接在一起,如圖2所示。這種連 接方式也稱作數據流連接。模塊A處理完數據后將處理結果送給模塊B,模塊 B處理完模塊A送來的數據后再將處理結果送給模塊C處理。數據從一個模塊 送往另一個模塊,常常將這種處理方式稱作流水線。流水線在處理器設計中非 常重
23、要,其好處是多個數據可以并行處理,從而提高系統的整體數據處理能 力。數據流動的方向圖2數據流方式互聯共享總線互聯方式如圖3所示。共享總線互聯方式適合于系統中有兩個或 者多個主設備需要與一個或者多個從設備通信的場合,它們通過共享的總線進 行通信,其好處是結構緊湊,節省布線資源,缺點是主設備希望與特定從設備 通信時可能需要等待。主設備在需要與一個從設備通信時,需要先向仲裁器(圖中沒有給出)申請總線占有權,獲得允許后開始占用總線并與L1標從設備 開始通信,通信結束后釋放總線。當多個主設備同時希望占有總線時,仲裁器 通過一定的優先級邏輯分配總線使用機會。共享總線互聯方式在片上系統中得到了廣泛的使用,兒
24、乎成了片上系統的 標志技術之一。共享總線技術在板級系統如PCI總線中也得到了應用。圖3共享總線互聯方式十字交義互聯方式較共享總線互聯方式略復雜。共享總線互聯方式在任一 時刻只允許最多有一對主設備和從設備通過共事總線進行通信,而十字交義互 聯方式最多同時允許超過一對的主設備和從設備對同時進行通信,如圖4所 示。當然,在十字交義互聯方式中,一個從設備在任一時刻只能與一個主設備 進行通信,兩個主設備不能同時訪問同一從設備。圖4十字交叉互聯方式(圖中虛線代表了一種可能的通信方式)類似的,基于交換結構的互聯比十字交義互聯方式的INTERCOM模塊更復 雜,一般的,基于交換結構的互聯比十字交叉互聯允許同時
25、通信的主從設備對 更多。隨著技術的發展,已經出現了比片上總線更復雜的片上網絡技術(Network on chip) o基于片上網絡技術,已經出現了內含兒十個32位處理器的芯片,已應用于CISCO的高端路山器中。五、Wishbone總線周期一個總線周期由多個不可分的時鐘周期構成,完成單次讀/寫操作、塊讀/ 寫操作或者讀改寫操作。總線周期也分為單次讀/寫周期、塊讀/寫周期和讀改 寫周期。一次塊讀/寫總線周期完成多次數據讀/寫操作。一般情況下,一次操 作由主設備和從設備控制信號間的一次握手,以及同時進行的地址和數據總線 的一次傳輸構成。塊操作表示整個操作需要完成多次數據傳送。在總線周期中 主設備和從
26、設備預先設定好的共同遵守控制信號握手規則,以及地址和數據總 線的傳輸規則稱作總線協議。在下文所給圖例中給出的信號均為主設備的輸入輸出信號。因此,對操作 的描述也從主設備信號的角度展開,以便于讀者對照正文理解圖例。比如在時 鐘上升沿1到達之前,從設備檢測到主設備發起的操作,將適當的數據放到主 設備的輸入信號DAT_I()和TGDJ(),將主設備的ACK_I置高作為對主設備STB_O 的響應。啲等價描壓為:“在嶺鐘上升沿1到達之前,從設備檢測到主設備玻 起的操作,將適當的數據放到其輸出信號DAT_O()和TGD_O(),將輸出信號 ACK_O置高作為對主設備STB_O的響應。5.1 一般操作5.1
27、- 1復位操作復位是數字系統最基本的操作。復位后,系統進入預定的狀態。在遵守 Wishbone總線規范的系統中,當RST_I信號有效,系統開始復位。山于 Wishbone規范規定的復位是同步復位,因此在復位信號有效后接下來的時鐘上 升沿,所有信號和寄存器進入預定狀態。因此Wishbone規范要求RST_I信號 有效時間至少要一個時鐘周期。在數字系統中,實際上更多的采用的是異步復 位,而且復位信號的長度一般大于系統電平穩定時間和系統時鐘頻率穩定時 間。如果在Wishbone接口中使用的是異步復位,需要在文檔中說明,因為 Wishbone接口默認的是同步復位。圖5 Wishbone總線的復位操作在
28、圖5中,我們只給出了 STB_0和CYC_0這兩個信號,而沒有給出其它信 號。當這兩個信號無效時,所有其他信號沒有意義。5.1.2操作發起一個總線周期山至少一次總線操作構成。操作總是山主設備發起,主設備 發起的操作可以是單次讀/寫、塊讀/寫或者RMW操作。當主設備將CYC_O置為 高時,一個總線周期開始。總線周期開始后,當主設備將STB_O置為髙時,一 次總線操作開始。當主設備將CYC_O置為低時,主設備的所有其他信號沒有意 義。從設備只在CYC_I為高時才會對主設備發起的操作進行響應。CYC-0和STB_O可以同時從無效變為有效表示操作開始,CYC-0持續有效直 到操作結束,CYC.0和ST
29、B.0可以同時從無效變有效表示同時發起一次總線周 期的同時,也發起總線操作,也可以同時從有效變為無效表示操作結束。因 此,在只有一個主設備時,可以將CYC_O和STB_O合并為一個信號,比如在 0penRISC1200的源碼中就廣泛的使用了這種方式,信號的名字稱作CYCSTB_O。當存在多個主設備時,一個主設備完成操作后必須及時將CYC-0信號置為 低,以讓岀總線給其他主設備。此時,CYC_O信號等價于為總線占用請求信 號。5-1.3基本握手協議由于在整個總線周期,CYC_O必須始終保持有效,因此,此后我們將在給 出的圖中忽略該信號,只在必或的時候給出。握手發生在主設備和從設備之間。握手協議是
30、主設備和從設備在握手時所 遵守的共同規則。如圖6,當主設備準備好,它將STB_O信號置高。STB_O信 號一直為高,直到從設備通過置高ACK_O、ERR_O、RTY_O對本次操作疵起響 應。在圖7中我們以主設備的ACK信號作為示例,后文也如此。通過握手, 主i殳備和從設備不僅可以完成通信,而且可以控制它們之間的通信速率。CLQSTBJDACLkJ圖6 Wishbone總線的基本握手協議如果從設備保證能夠在主設備發起操作時及時作出操作成功的響應,其 ACK_O信號可以設計為STB_I和CYC信號的邏輯與,而ERR_O和RTY_O信號 也才以不使用。因此ERR_O和RTY_O信號是可選的,而ACK
31、_O信號是必須 的。在點對點連接中,套至可以將ACK_I信號直接置高。當吞在ERR_O和 RTY_O信號,主設備當發現ERR_O和RTY_O信號之一有效時如何進行響血取決 于壬設備的設計。對于從設備,只有STB和CYC_I同時為高時,才能發起對主設備的響應。實際上,對于主設備,其最小配置為只有ACK、CLK、CYC_O、RST_I和 STB_O:而對于從設備,其最小配置為只有ACK_O、CLK、CYC_I. RST_I和 STB_I,這里CYC和STB信號可以合并到一起晟為一個信號,通常命名為 CYCSTB_O/。在圖6中,從STB_O到ACK_I存在一個長組合邏輯路徑,在實際系統中很 可能成
32、為關鍵路徑。因了匕 在設計中應盡量保證STB.0是觸發器的直接輸岀。 如果從STB_O到ACK存在一個長組合邏輯路徑込遲不能滿足設計的時序要 求,可將從設備的ACK_O經過觸發器寄存后再輸出,從而將長組合邏輯打破, 但系統的吞吐量也將因i匕減小。關于如何即打破長組合邏輯乂不影響系統的呑 吐量,后文將進行詳細討論。5. 2單次讀/寫周期單次讀/寫操作每次操作只完成一次讀或者寫,是最基本的總線操作方式。 但是,Wishbone主設備或者從設備也可以不支持單次讀/寫操作,甚至沒有地 址和數據總線。單次讀操作如圖7。在時鐘上升沿0,主設備將地址信號ADR_O()、TGA_O() 放到總線上,將WE_O
33、置為低表示讀操作,將適當的SEL_O()信號疊高通知慶設 備將數據放在數據總線的適當位置,將CYC_O和TGC.0置高表示操作正在進 行,將STB_O置高表示操作開始。在時鐘上升沿1到達之前,從設備檢測到主設備發起的操作,將適當的數 據放到主設備的輸入信號DAT_I()和TGD_I(),將主設備的ACK_I置高作為對主設 備STB_O的響應。在時鐘上升沿1,主設備發現ACK_I信號為高,將DAT_I()和TGDJ0采樣, 并將STB_O和CYC_O置為低表示操作完成。從設備發現STB_O置低直 也將主 設備的輸入信號ACK置低。在圖7中,從設備可以上升沿0和上升沿1之間插入任意多個等待周期。C
34、LKJiADR 00“AT ICAVALIDa| inJDAT 0()J.IL 11/WE 0廠SEL.OOVALIDrSTB OACKJiCYC.O -TGA. COj.rVALIDTGD 1()A74D二 1TGD 00TGC:.。):VALID7C圖7 Wishbone總線的單次讀操作單次寫操作如圖8所示。在時鐘上升沿0,主設備將地址信號ADR_O()、TGA_O()放到總線上,將數據信號DAT_O()、TGD_O()放到總線上,將WE_O置 高逐寫操作,將適當的SEL_O()信號疊高通知從設備數據總線DAT_O()甬哪些 信號是有效的,將CYC_O和TGC.0置高表示操作正在進行,將S
35、TB_O置高表 示操作開始。在時鐘上升沿1到達之前,從設備檢測到主設備發起的操作,將主設備的 ACK_I置高作為對主設備STB_O的響應。在時鐘上升沿1,從設備將DAT_I()和TGD_I()采樣;主設備發現ACK信號 為高,將STB_O和CYC_O置為低表示操作完成;從設備發現STB_O置低啟,也 將主設備的ACK_I置低。在圖8中,從設備可以在上升沿0和上升沿1之間插入任意多個等待周 期。圖8 Wishbone總線的單次寫操作5. 3塊讀周期塊讀/寫操作每次讀/寫數據多次。塊讀/寫操作實際上是山順序進行的多個 單次讀/寫操作組合而成的。在同時存在多個主設備時,塊讀/寫操作非常有 用,一個塊
36、讀寫一般是不能打斷的,比如一次DMA,如圖9所示,在一次塊操 作中,CRC_O信號必須保持為高。同時為了保證整個塊操作不被打斷,L0CK.0 也可以置為高,但是LOCK_O不必須為高。典型地,主設備進行一次DMA屆 傳輸4個或者8個總線寬應單位的數據,然后主動釋放總線,其后乂試圖占用 總線重新進行DMA,直到所有的數據都傳輸完畢。這樣做的好處是允許其他優 先級更高的主設備在兩次DMA之間插入操作以完成更加緊急的任務。CLKJ11n.A 1L0CK OA CYC O&A STBOiAACKJn圖9 Wishbone總線塊操作中CYC_0信號的用法塊讀操作如圖10所示。塊操作最多能夠在每個時鐘周期
37、進行一次數據讀或 者寫,但是主設備和從設備都可以通過插入等待周期控制塊操作的速度。一次 塊操作包括多次子操作。每一次子操作都是塊操作的一個階段,完成一次數據 讀或者寫。圖10的塊操作由五次讀操作完成,其過程如下:在時鐘上升沿0,主設備將地址信號ADR_O()、TGA_O()放到總線上,將 WE_O置為低表示讀操作,將適當的SEL_O()信再置高通知幾設備將數據放在數 據直線的適當位置,將CYC_O和TGC_O()置高表示操作正在進行,將STB_O置 高表示一次子操作開始。CYC_O和TGC_O()從無效變為有效可以發生在上棄沿0 以前的任何時刻。在時鐘上升沿1到達之前,從設備檢測到主設備發起的
38、操作,將適當的數 據放到主設備的DAT_I()和TGD_I(),將主設備的ACK_I置高作為對主設備STB_O 的響應。在時鐘上升沿1,主設備發現ACK_I信號為高,將DAT_I()和TGD_I()采樣, 完成第一次子操作。主設備將新地址信號ADR_O()、新TGA_O()放到總線上,將 新的SEL_O()信號置高通知從設備將數據放在蛟據總線的適當位置。在時鐘上升沿2到達之前,從設備檢測到主設備發起的第二次操作,將適 當的數據放到主設備的DAT_I()和TGD_I(),繼續將主設備的ACK_I置高。在時鐘上升沿2,主設備發現ACK_I信號為高,將DAT_I()和TGD_I()采樣, 完成第二次
39、子操作。主設備將STB_O信號置低表示插入等莓周期。在時鐘上升沿3到達之前,從設備檢測到STB_O信號為低,將ACK_I置 低。在時鐘上升沿3,主設備發起第三次操作,將新的地址信號ADR_O()、新的 TGA_O()放到總線上,將WE_O置為低表示讀操作,將適當的SEL_O()信號置高 通知從設備將數據放在數據直線的適當位置,將STB_O置高表示示三次子操作 開始。在時鐘上升沿4到達之前,從設備檢測到主設備發起的第三次子操作,將 適當的數據放到主設備的DAT_I()和TGD_I(),將主設備的ACK_I置高作為對主設 備STB_O的響應。圖10 Wishbone總線的塊讀操作在時鐘上升沿4,主
40、設備發現ACK_I信號為高,將DAT_I()和TGD_I()采樣, 完成第三次子操作。主設備同時發起示五次子操作,將新龜址信號ADR_O()、 新TGA_O()放到總線上,將新的SEL_O()信號置高通知從設備將數據放在竅據總 線的適當位置。在時鐘上升沿5到達之前,從設備檢測到主設備發起的第五次子操作,將 適當的數據放到主設備的DAT_I()和TGD_I(),將主設備的ACK_I置高作為對主設 備STB_O的響應。在時鐘上升沿5,主設備發現ACK信號為高,將DAT_I()和TGD_I()采樣, 完成第五次子操作。主設備同時發起京六次子操作,將新龜址信號ADR_O()、 新TGA_O()放到總線
41、上,將新的SEL_O()信號置高通知從設備將數據放在竅據總 線的適昌位置。在時鐘上升沿5過后,從設備檢測到主設備發起的第六次子操作,但是由 于數據沒有準備好,它在新上升沿到達之前將ACK信號置低表示插入等待周 期。上升沿5和6之間被插入了多個等待周期。當從設備準備好數據,在時鐘上升 沿6到達之前,將適當的數據放到主設備的DAT_I()和TGD_I(),將主設備的 ACK_I置高作為對主設備STB_O的響應。在時鐘上升沿6,主設備發現ACK_I信號為高,將DAT_I()和TGD_I()采樣, 并將STB_O和CYC_O置為低表示整個灰讀操作完成。從夜備發現STB_O置低 后,也如王設備的ACK_
42、I置低。5. 4塊寫周期塊寫操作的例子如圖11所示。圖11的一次塊寫操作山五個相互關聯的單 次寫操作完成。在時鐘上升沿0,主設備將地址信號ADR_O()、TGA_O()放到總線上,將數 據信號DAT_O()、TGD_O()放到總線上,將WE_O置為高襄示寫操作,將適當的 SEL_O()信號置高通知從設備將數據總線上哪些信號是有效的,將CYC_O和 TGC_O置高表示操作正在進行,將STB_O置高表示第一次寫操作開始。在時鐘上升沿1到達之前,從設備檢測到主設備發起的操作,將主設備的 ACK_I置高作為對主設備STB_O的響應。在時鐘上升沿1,從設備將DAT_I()和TGD_I()采樣;主設備發現
43、ACK信號 為高,得知第一次寫操作完成,于是新地址信號ADR_O()、新TGA_O()放到總 線上,將新數據信號DAT_O()、新TGD_O()放到總線上,將WE_O置為高表示寫 操作,將適當的SEL_O()信號置高通知從設備將數據總線上哪些信號是有效的, 將CYC_O和TGC_O置高表示操作繼續在進行,將STB_O置高表示第二次寫操 作開始。在時鐘上升沿2到達之前,從設備檢測到主設備發起的第二次寫操作,將 主設備的ACK_I置高作為對主設備STB_O的響應。在時鐘上升沿2,從設備將DAT_I()和TGD_I()采樣;主設備發現ACK信號 為高,得知第二次寫操作完成,發現自己的數確還沒有準備好
44、,于是將STB_O 置低表示插入等待周期。在時鐘上升沿3到達之前,從設備檢測到STB_O為低,也將ACK置低。在時鐘上升沿3,主設備發起第三次操作,將新地址信號ADR_O()、新 TGA_O()放到總線上,將新數據信號DAT_O()、新TGD_O()放到總褒上,將 WE_O置為高表示寫操作,將適當的SEL_O()信號置髙通疝從設備將數據總線上 哪些信號是有效的,將CYC_O和TGC_O置高表示操作繼續進行,將STB_O置 高表示第三次寫操作開始。在時鐘上升沿4到達之前,從設備檢測到主設備發起的第三次寫操作,將 主設備的ACK_I置高作為對主設備STB_O的響應。在時鐘上升沿4,從設備將DAT_
45、I()和TGD()采樣;主設備發現ACK信號 為高,得知第三次寫操作完成,于是蔣新地址信號ADR_O()、新TGA_O()放到總 線上,將新數據信號DAT_O()、新TGD_O()放到總線上,將適當的SEL_O()信號 置高通知從設備將數據總班上哪些信號舄有效的,將STB_O繼續置高襄示第四 次寫操作開始。在時鐘上升沿5到達之前,從設備檢測到主設備發起的第四次寫操作,將 主設備的ACK_I置高作為對主設備STB_O的響應。在時鐘上升沿5,從設備將DAT_I()和TGD_I()采樣;主設備發現ACK信號 為高,得知第四次寫操作完成,于是發也第五次操作,將新地tin言號 ADR_O()、新TGA_
46、O()放到總線上。在時鐘上升沿5之后新的時鐘上升沿到達之前,從設備發現因為某些原因 暫時無法繼續接收數據,因此將ACK信號置低,插入等待。當從設備發現可以繼續接收數據,于是在在最后一個等待周期結束且上升 沿5到達之前,將DAT_I()和TGD()采樣;主設備發現ACK信號為高,得知第 五次寫操作完成。并將STB_O和CYC_O置低表示整個塊寫義作完成。圖11 Wishbone總線的塊寫操作5. 5 RMW操作在操作系統中,有一種重要的進程間的同步機制稱作信號量機制。信號量 即當前可用資源的計數。信號量是一個用來實現同步的整型或記錄型(Record)變 量,除了初始化外,對它只能執行等待和釋放這
47、兩種原子操作。一次對信號量 的等待操作是獲得信號量的過程,讀取當前信號量的值,如果發現有可利用資 源,則將信號量減1,否則進入等待狀態。一次對信號量的釋放過程即將信號 量加lo 一個進程對信號的讀取、計算新的信號量值、更新信號量的值這三個 步驟是不允許被其他進程打破的,如果被打破,則信號量的值將會發生錯誤, RMW操作的最大用途在于信號量操作。一次RMW操作對于總線來說,本質上是兩次子操作,一次讀,一次寫, 只不過這兩次子操作必須山同一個主設備的完成,且讀數據和寫數據的地址相 同。“改”是不發生在總線上的,它發生在主設備內部。一個RMW操作的例子如 圖13所示,其過程如下:在時鐘上升沿0,主設
48、備將地址信號ADR_O()、TGA_O()放到總線上,將 WE_O置為低表示讀操作,將適當的SEL_O()信喜置高通知瓜設備將數據放在數 據&線的適當位置,將CYC.0和TGC_O()置高表示操作正在進行,將STB.0置 高表示第一次子操作開始。CYC_O和TGC_O()可以發生在上升沿0以前叨任何 時刻。在時鐘上升沿1到達之前,從設備檢測到主設備發起的操作,將適當的數 據放到主設備的DAT_I()和TGD_I(),將主設備的ACK_I置高作為對主設備STB_O 的響應。在時鐘上升沿1,主設備發現ACK_I信號為高,將DAT_I()和TGDJ0采樣, 完成第一次子操作。主設備將STB_O表示插
49、入等待。在時鐘上升沿1之后新的上升沿到達之前,從設備檢測到主設備將STB_O 置低,于是將ACK_I置低。經過若干等待周期,在上升沿2,主設備將地址信號ADR_O()、TGA_O()放 到總線上,將數據信號DAT_O()、TGD_O()放到總線上,將WE_O置為高襄示寫 操作,將適當的SEL_O()信再置高通知幾設備將數據總線上哪些信號是有效的, 將STB_O置高表示第二次子操作開始。在時鐘上升沿3到達之前,從設備檢測到主設備發起的操作,將主設備的 ACK_I置高作為對主設備STB_O的響應。在時鐘上升沿3,從設備將DAT_I()和TGD_I()采樣;主設備發現ACK_I信號 為高,得知第二次
50、子操作完成,于是蔣STB_O和CYC_0置低表示整個RMW操 作完成。在時鐘上升沿之后,從設備發現STB_O為低,于是將ACK置低。圖13 Wishbone總線的RMW操作5.6數據組織數據組織是指數據的傳送順序。U前常見的32為處理器的數據總線粒度為 1字節,在傳送時,一個32位數據的最高字節可以放在數據總線的最低8位傳 送,也可以放在數據總線的最高8位傳送,因此出現了大端和小端兩種數據組 織方法。大端是指一個數據的最高位放在數據總線的最低位傳送或者放在地址 較小的存儲器位置存儲;小端是指一個數據的最高位放在數據總線的最高位傳 送或者放在地址較高的存儲器位置存儲。Wishbone同時支持大端
51、和小端兩者數 據組織方式。當數據總線的粒度和寬度相同時,大端和小端是一樣的。這兩者數據組織方式在一般文獻中都可以找到。總線標準只定義接口的通 信協議,而數據的組織本質上取決于主設備和從設備的設訃。有時需要將大端 和小端的接口互聯起來,下圖給出了將數據組織為大端的IP A和數據組織為大 端的IP B相連的情形。IP A和IP B的數據總線寬度都是32為,粒度為8位。35 /40SELJ(3)SEL_I(2)SEL_I(1)SEL_I(O)DAT(31.24)DAT(23.16)DAT(15.08)DAT(07.00)IPB從設備輸入小端圖14大端和小端的接口互聯六、Wishbone寄存反饋總線丿
52、6.1周期的同步與異步結束方式之對比為了實現在給定時鐘頻率下的最大可能祚吐量,Wishbone采用了周期異步 結束方式。這樣做的結果是從主設備的STB_O到從設備的ACK_O/ERR_O/RTY_O 再到主設備的ACK_I/ERR_I/RTY_I輸入形成了一個異步回路,如圖15。在大型 SoC設計中,該回臨往往成為蜒個設計的關鍵路徑,限制系統時鐘頻率的進一 步提高。在深亞微米時代,由于線延遲往往比門延遲更大,這一異步回路更加 可能成為系統性能的瓶頸。圖15 Wishbone總線的異步周期結束路徑這一問題的最簡單解決方法是插入寄存器將回路斷開,但這樣做的缺點是 在每一次總線操作中都需要插入一個等
53、待周期,從而制約了總線祚吐量。如圖 16所示,在上升沿1主設備發起了一次操作,在上升沿2從設備發起響應將 ACK.0置高,在上升沿3主設備檢測到ACK為高完成第一次操作并發起第二 次赫作,但是在上升沿3從設備并不知道主設備會發起第二次操作,因此只能 將ACK.0信號置低。在上升沿4從設備才能對第二次操作發起響應將ACK.0 置高,擊上升沿4主設備檢測到ACK為高完成第二次操作。圖16 Wishbone總線的傳統同步周期結束方式在圖16中,每一次傳輸都需要兩個時鐘周期,一半的帶寬被浪費。如果從 設備在上升沿3知道主設備將發起新的操作,它將能夠在上升沿3就對主設備 的操作發起響應,從而節省時鐘周期
54、提高了系統的吞吐量,利用該思想改進后 的同步時序如圖17所示。CLKJ(0) (1) (2) (5)I 1NIN+1STBJJnACk o|1J圖17 Wishbone總線改進的同步周期結束方式在圖17的上升沿1,主設備發起操作,在上升沿2,從設備將ACK_O置 高,在上升沿3,從設備知道主設備將發起新的操作,于是將ACK.0靈續置 高。因此,3個時鐘周期就完成了 2次操作,而不是原來大的4個砧鐘周期, 于是呑吐量提高了 25%。一般的,改進后,N次操作需要N+1個時鐘周期,而 不是2N個時鐘周期,吞吐量改善為(N-1)/N%o改進后的同步周期結束方式具備異步周期結束方式的喬吐量優勢,同時具
55、備傳統同步結束方式的延遲優勢。改進后的同步周期結束方式稱作Wishbone 寄存反饋周期結束方式。6. 2 Wishbone寄存反饋周期結束方式在Wishbone寄存反饋周期結束方式中,主設備需要事先通知從設備操作 下一時鐘周期是否將發起新的總線操作,這是通過周期類型識別地址標簽 CTI_O()/CTI_I()和突發類型擴展地址標簽BTE_O()/BTE_I()完成的。主設備和從設 備必須同時支持CTLO0/CTIJ0,Wishbone義口才能以寄存反饋周期結束方式 工作,主設備和從設備如集支持地址增加突發模式,它們必須同時支持 BTE_O()/BTE_I()。如果主設備或者從設備之一不支持這
56、種周期結束方式,它們只 能反傳統周勸結束方式工作。周期類型識別地址標簽CTI_O()/CTI()提供描述當前操作突發模式的信息, 從設備可以根據該信息確定在卡一時鐘鬲期如何進行響應。CTI_O()/CTI_I()的具 體定義如表2。表2周期類型標識符CTI_0(2:0)描述3 bOOO傳統總線周期3 bOOl恒定地址突發總線周期3 b010遞增突發總線周期3 bOll預留3 blOO預留3 blOl預留3 bllO預留3 bill突發結束不支持CTI_O()的主設備必須將該信號置為3000或者yblll,這兩個是 等價的。主設備和從設備可以支持這些突發模式中的一部分,對于不支持的突 發模式,主設備必須將CTI_O()置為MbOOO,從設備必須將CTI_I()理解為 3zb000o為了減少在同步模式下的等待時間,從設備必須對主設備的操作盡快的做 出響應。從設備可利用CTI_I()信號確定在下一周期對主設備的響應,但是山于 此時還不知道STB信號石狀態,因此從設備在確定在下一周期對主設備的響 應時只能忽略STB
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海海事職業技術學院《能源生產解決方案》2023-2024學年第二學期期末試卷
- 彭水雙拼別墅施工方案
- 威海鋼質潔凈門施工方案
- 2025簡化版企業抵押借款合同范本
- 2025至2030年中國錦一氫絕緣紙數據監測研究報告
- 2025我愛我家房屋買賣合同范本
- 2025至2030年中國離子選擇電極數據監測研究報告
- 2025至2030年中國電離子魔術球數據監測研究報告
- 2025至2030年中國靈是雕塑數據監測研究報告
- 2025至2030年中國植絨吸塑盤數據監測研究報告
- 部編版語文一年級下冊第八單元大單元教學任務群設計-
- JGT 486-2015 混凝土用復合摻合料
- 2023年全省家畜豬繁殖員職業技能競賽決賽評分細則
- 2024年初級養老護理員職業鑒定考試題庫(含答案)
- 模塊21.CR400AF型動車組轉向架 《高速鐵路動車組機械設備維護與檢修》教學課件
- GGD交流低壓配電柜運行、維護說明書、安裝、操作手冊
- 2024年洛陽職業技術學院單招職業適應性測試題庫及參考答案
- 合作協議(國外開礦甲乙雙方合同范本)
- 【語文】古詩詞誦讀《登快閣》教學課件 2023-2024學年統編版高中語文選擇性必修下冊
- 冀教版四年級數學下冊期中考試卷(附答案)
- 20以內數的順數和倒數
評論
0/150
提交評論