Avalon總線規(guī)范中文版_第1頁(yè)
Avalon總線規(guī)范中文版_第2頁(yè)
Avalon總線規(guī)范中文版_第3頁(yè)
Avalon總線規(guī)范中文版_第4頁(yè)
Avalon總線規(guī)范中文版_第5頁(yè)
已閱讀5頁(yè),還剩17頁(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、Avalon總線規(guī)范 參考手冊(cè) (Avalon從端口傳輸與流模式從端口傳輸部分) Avalon 總線是一種將片上處理器和外設(shè)連接成片上可編程系統(tǒng)(SOPC)的一種簡(jiǎn)單總線結(jié)構(gòu)。Avalon總線是一種接口方式,它規(guī)定了主從設(shè)備之間的接口方式及其通信時(shí)序。Avalon 總線的設(shè)計(jì)目的在于: 簡(jiǎn)便:提供了簡(jiǎn)單易學(xué)的協(xié)議; 優(yōu)化總線邏輯的資源利用:節(jié)約了可編程器件(PLD)內(nèi)部的邏輯單元(LE); 同步操作:將PLD 上的其他用戶邏輯很好的集成在一起,從而避免了復(fù)雜的時(shí)序分析; 基本的Avalon 總線事務(wù)可以在主從設(shè)備之間傳送一個(gè)字節(jié),半字或字(8,16 或32 位)。當(dāng)一次事務(wù)處理完成,總線可以迅

2、速的在下一個(gè)時(shí)鐘到來(lái)的時(shí)候在相同的主從設(shè)備之間或其他的主從設(shè)備間開(kāi)始新的事務(wù)。Avalon 總線也支持一些高級(jí)功能,如“延遲型(latency-aware)外設(shè)”,“流(streaming)外設(shè)”及多總線主設(shè)備。這些高級(jí)的功能使其允許在一個(gè)總線事務(wù)中進(jìn)行外設(shè)間的多數(shù)據(jù)單元的傳輸。 Avalon 總線支持多個(gè)總線主設(shè)備。多主設(shè)備的結(jié)構(gòu)為SOPC 系統(tǒng)及高帶寬外設(shè)提供了很大程度上的穩(wěn)定性。例如,一個(gè)主外設(shè)可以進(jìn)行直接存儲(chǔ)器訪問(wèn)(DMA),而不需要處理器在數(shù)據(jù)傳輸路徑上從外設(shè)將數(shù)據(jù)讀入存儲(chǔ)器。Avalon 總線上,主設(shè)備和從設(shè)備之間的相互作用是基于一種被稱為“從設(shè)備(slave-side)仲裁”的技

3、術(shù)。從設(shè)備仲裁決定了當(dāng)多主設(shè)備在同一時(shí)刻嘗試連接同一個(gè)從設(shè)備的時(shí)候,哪個(gè)主設(shè)備獲得從設(shè)備控制權(quán)。從設(shè)備仲裁具有兩個(gè)優(yōu)勢(shì): 1仲裁細(xì)節(jié)內(nèi)嵌于Avalon 總線內(nèi)部。所以,主設(shè)備和從設(shè)備的接口具有一致性,不考慮總線上的主設(shè)備和從設(shè)備的數(shù)量。在每一個(gè)和Avalon 總線相連接的主設(shè)備看來(lái),它都是總線上唯一的主設(shè)備。 2 多個(gè)主設(shè)備可以同時(shí)完成總線事務(wù),就像他們并不是在同一個(gè)總線周期連接到同一個(gè)從設(shè)備一樣。Avalon總線的設(shè)計(jì)是為了配合片上可編程系統(tǒng)(SOPC)的。它是一種由PLD 內(nèi)部邏輯和布線資源的主動(dòng)片上總線結(jié)構(gòu)。Avalon 結(jié)構(gòu)的一些原則如下: 1 與外設(shè)的接口同步于Avalon時(shí)鐘。所以

4、,沒(méi)有復(fù)雜的,異步的握手/應(yīng)答模式。Avalon 總線(及整個(gè)系統(tǒng))的性能可以通過(guò)使用標(biāo)準(zhǔn)的同步時(shí)序分析技術(shù)來(lái)實(shí)現(xiàn)測(cè)量。 2 所有的信號(hào)都是有效“低”和“高”,這樣便于總線操作的立即轉(zhuǎn)換。位于Avalon 內(nèi) 部的多路復(fù)用器(不是三態(tài)緩沖器)來(lái)決定哪個(gè)信號(hào)驅(qū)動(dòng)哪個(gè)外設(shè)。 3 地址,數(shù)據(jù)和控制信號(hào)使用分離的,專用端口,這樣簡(jiǎn)化了外設(shè)的設(shè)計(jì)。外設(shè)不需要 對(duì)地址和數(shù)據(jù)的總線周期進(jìn)行解碼,也不需要在非使能的時(shí)候禁止輸出。 功能簡(jiǎn)介 Avalon 也包括很多的功能和約定來(lái)支持SOPC Builder 軟件自動(dòng)產(chǎn)生的系統(tǒng)總線和外設(shè):高于4G 的地址空間存儲(chǔ)器和外設(shè)可以被映射為32位地址空間中的任何地址。同

5、步接口所有的Avalon信號(hào)都被Avalon總線時(shí)鐘同步。這樣簡(jiǎn)化了Avalon總線的相關(guān)時(shí)序行為并便于高速外設(shè)的集成。分離的地址,數(shù)據(jù)和控制線路分離的,專用的地址和數(shù)據(jù)路徑更便于與用戶邏輯相連接。外設(shè)不需要對(duì)數(shù)據(jù)和地址周期進(jìn)行譯碼。內(nèi)置地址譯碼器Avalon總線自動(dòng)的為所有外設(shè)產(chǎn)生片選(Chip Select)信號(hào),大大的簡(jiǎn)化了Avalon 外設(shè)的設(shè)計(jì)。多主設(shè)備總線結(jié)構(gòu)在Avalon 總線上可以存在多個(gè)主外設(shè)。Avalon總線自動(dòng)產(chǎn)生仲裁邏輯?;谙?qū)降呐渲梅奖闶褂玫膱D形化向?qū)б龑?dǎo)用戶完成對(duì)Avalon總線的配置(增加外設(shè),確定主/從關(guān)系,定義存儲(chǔ)器映射)。Avalon總線結(jié)構(gòu)的自動(dòng)產(chǎn)生是

6、由用戶在向?qū)Ы缑娴妮斎雭?lái)決定的。 動(dòng)態(tài)總線容量Avalon總線自動(dòng)處理數(shù)據(jù)位寬不匹配的外設(shè)間傳送數(shù)據(jù)的細(xì)節(jié),便于在多種不同寬度的設(shè)備間接口。 名詞及概念 許多與SOPC相關(guān)的名詞和概念都完全是新的,他們和傳統(tǒng)的片外總線結(jié)構(gòu)有著本質(zhì)的不同。設(shè)計(jì)者需要懂得這點(diǎn),以便可以理解Avalon總線規(guī)范。下面的名次及概念構(gòu)成了一個(gè)理論化的框架,而Avalon總線規(guī)范就是建立在這一框架的基礎(chǔ)上的。它們貫穿于整個(gè)文檔。 總線周期 總線周期被定義為Avalon主時(shí)鐘的相鄰上升沿之間的時(shí)間間隔,它是總線時(shí)鐘周期的基本單元。總線信號(hào)時(shí)序參照于總線周期時(shí)鐘。 總線傳輸 Avalon總線的一次傳輸是對(duì)數(shù)據(jù)的一次讀/寫(xiě)操作

7、,它可能持續(xù)一個(gè)或多個(gè)總線周期。Avalon 總線所支持的傳輸位寬為:一個(gè)字節(jié)(8 位),半個(gè)字(16 位)或一個(gè)字(32 位)。 流傳輸 流傳輸為“流主設(shè)備”和“流從設(shè)備”之間的連續(xù)性數(shù)據(jù)傳輸建立一個(gè)開(kāi)放式的管道。 帶有延遲的讀傳輸 有些同步設(shè)備在剛剛開(kāi)始傳輸?shù)臅r(shí)候,需要延遲幾個(gè)時(shí)鐘周期才能夠完成其第一次讀數(shù)據(jù)的過(guò)程,而在之后的傳輸過(guò)程中就可以每一個(gè)周期返回一個(gè)數(shù)據(jù)。帶有延遲的讀傳輸可以增加這些同步設(shè)備的帶寬利用率。延遲性傳輸允許一個(gè)主設(shè)備發(fā)出讀請(qǐng)求后,轉(zhuǎn)而執(zhí)行另一個(gè)無(wú)關(guān)任務(wù),過(guò)一段時(shí)間再接收數(shù)據(jù)。盡管之前的數(shù)據(jù)還沒(méi)有接受到,這個(gè)無(wú)關(guān)的任務(wù)也可以發(fā)出另一次讀請(qǐng)求。這有利于進(jìn)行連續(xù)標(biāo)準(zhǔn)地址的存

8、取的指令存取操作和DMA 傳輸。這樣, CPU和DMA主設(shè)備可以預(yù)讀取其需要的數(shù)據(jù),所以這使得同步存儲(chǔ)器保持活躍狀態(tài),并減少了平均存儲(chǔ)延時(shí)。 SOPC Builder軟件及Avalon總線的產(chǎn)生 SOPC Builder是Altera開(kāi)發(fā)的一款系統(tǒng)生成和集成工具。SOPC Builder所產(chǎn)生的片上電路系統(tǒng)模塊包括Avalon總線、主外設(shè)和從外設(shè)。SOPC Builder 提供了圖形化的用戶接口,應(yīng)用這種接口可以實(shí)現(xiàn)向系統(tǒng)模塊中添加主、從外設(shè),配置外設(shè)及配置Avalon 總線將外設(shè)連接起來(lái)。這樣,SOPC Builder自動(dòng)的創(chuàng)建并連接HDL模塊,便可以實(shí)現(xiàn)用戶PLD 設(shè)計(jì)的每一個(gè)部分。 系統(tǒng)

9、模塊考慮在可編程芯片上實(shí)現(xiàn)用戶自定義系統(tǒng)的結(jié)構(gòu),其中一部分是由SOPC Builder自動(dòng)產(chǎn)生的。在Altera PLD上實(shí)現(xiàn)的完整系統(tǒng)如圖1所示。出于本文的目的,系統(tǒng)模塊的一些部分是由SOPC Builder自動(dòng)產(chǎn)生的。系統(tǒng)模塊應(yīng)該包括最少一個(gè)Avalon主外設(shè)和一個(gè)Avalon從外設(shè),例如UART,定時(shí)器或者PIO。系統(tǒng)模塊的外部邏輯可以包含用戶Avalon外設(shè)及其他的和系統(tǒng)模塊不相關(guān)的用戶邏輯。系統(tǒng)模塊必須與設(shè)計(jì)者的PLD設(shè)計(jì)連接起來(lái)。系統(tǒng)模塊的端口依賴于其所包括的外設(shè)及在SOPCBuilder中進(jìn)行的設(shè)置,并隨其變化。這些端口包括直接到Avalon總線的接口及在系統(tǒng)模塊中的用戶自定義的

10、和外設(shè)相連的接口。 Avalon總線模塊 Altera PLD上集成用戶邏輯的系統(tǒng)模塊Avalon總線模塊是任何一個(gè)系統(tǒng)模塊的 “脊梁”。它是SOPC設(shè)計(jì)中外設(shè)通信的主要路徑。Avalon總線模塊是所有的控制、數(shù)據(jù)、地址信號(hào)及控制邏輯的總和,是其將外設(shè)連接起來(lái)并構(gòu)成了系統(tǒng)模塊。Avalon總線模塊實(shí)現(xiàn)了可配置的總線結(jié)構(gòu),其可以為設(shè)計(jì)者外設(shè)之間的相互連接而改變。Avalon總線模塊是由SOPC Builder自動(dòng)產(chǎn)生的,所以設(shè)計(jì)師并不用親自將總線和外設(shè)連接起來(lái)。Avalon總線模塊基本上不會(huì)作為分離的單元而單獨(dú)使用,因?yàn)橄到y(tǒng)設(shè)計(jì)者總是利用SOPC Builder將處理器和其他Avalon外設(shè)自動(dòng)

11、地集成于一個(gè)系統(tǒng)模塊之中。設(shè)計(jì)者對(duì)Avalon總線的注意力通常限于與用戶Avalon外設(shè)相連接地具體的端口上。 Avalon總線模塊(一條Avalon總線)是一個(gè)主動(dòng)的邏輯單元,它取代了PCB板上的被動(dòng)的,金屬總線。(見(jiàn)圖2)這就是說(shuō),Avalon總線模塊的端口可以被看作是所有連接到被動(dòng)總線的引腳連接。本手冊(cè)只是定義了包含于Avalon總線模塊接口中的端口,邏輯行為和信號(hào)順序,而沒(méi)有提及物理總線的電氣或物理的性能。 圖2 .Avalon 總線模塊框圖范例系統(tǒng) Avalon總線模塊為連接到總線的Avalon外設(shè)提供了以下的服務(wù): 數(shù)據(jù)通道多路轉(zhuǎn)換Avalon總線模塊的多路復(fù)用器從被選擇的從外設(shè)向

12、相關(guān)主外設(shè)傳輸數(shù)據(jù)。 地址譯碼地址譯碼邏輯為每一個(gè)外設(shè)提供片選信號(hào)。這樣,單獨(dú)的外設(shè)不需要對(duì)地址線譯碼以產(chǎn)生片選信號(hào),從而簡(jiǎn)化了外設(shè)的設(shè)計(jì)。 產(chǎn)生等待狀態(tài)(Wait-State)等待狀態(tài)的產(chǎn)生拓展了一個(gè)或多個(gè)周期的總線傳輸,這有利于滿足某些特殊的同步外設(shè)的需要。當(dāng)從外設(shè)無(wú)法在一個(gè)時(shí)鐘周期內(nèi)應(yīng)答的時(shí)候,產(chǎn)生的等待狀態(tài)可以使主外設(shè)進(jìn)入等待狀態(tài)。在讀使能及寫(xiě)使能信號(hào)需要一定的建立時(shí)間/保持時(shí)間要求的時(shí)候也可以產(chǎn)生等待狀態(tài)。 動(dòng)態(tài)總線寬度動(dòng)態(tài)總線寬度隱藏了窄帶寬外設(shè)與較寬的Avalon總線(或者Avalon總線與更高帶寬的外設(shè))相接口的細(xì)節(jié)問(wèn)題。舉例來(lái)說(shuō),一個(gè)32位的主設(shè)備從一個(gè)16位的存儲(chǔ)器中讀數(shù)據(jù)

13、的時(shí)候,動(dòng)態(tài)總線寬度可以自動(dòng)的對(duì)16位的存儲(chǔ)器進(jìn)行兩次讀操作,從而傳輸32位的數(shù)據(jù)。這便減少了主設(shè)備的邏輯及軟件的復(fù)雜程度,因?yàn)橹髟O(shè)備不需要關(guān)心外設(shè)的物理特性。 中斷優(yōu)先級(jí)(Interrupt-Priority)分配當(dāng)一個(gè)或者多個(gè)從外設(shè)產(chǎn)生中斷的時(shí)候,Avalon 總線模塊根據(jù)相應(yīng)的中斷請(qǐng)求號(hào)(IRQ)來(lái)判定中斷請(qǐng)求。 延遲傳輸(Latent Transfer)能力在主、從設(shè)備之間進(jìn)行帶有延遲傳輸?shù)倪壿嫲贏valon總線模塊的內(nèi)部。 流式讀寫(xiě)(Streaming Read and Write)能力在主、從設(shè)備之間進(jìn)行流傳輸使能的邏輯包含于Avalon總線模塊的內(nèi)部。 Avalon外設(shè) 連接

14、于Avalon總線的Avalon外設(shè)是邏輯器件無(wú)論片上還是片外的它們進(jìn)行著某種系統(tǒng)級(jí)的任務(wù),并通過(guò)Avalon總線與其他的系統(tǒng)部件相通信。外設(shè)是模塊化的系統(tǒng)部件,依賴于系統(tǒng)的需要,可以在設(shè)計(jì)的時(shí)候增加或者移除。Avalon外設(shè)可以是存儲(chǔ)器、處理器,也可以是傳統(tǒng)的外設(shè)器件,如UART,PIO,定時(shí)器或總線橋。任何的用戶邏輯都可以成為Avalon外設(shè),只要它滿足本文所述的提供與Avalon總線接口的地址、數(shù)據(jù)及控制信號(hào)接口。連接于Avalon總線的外設(shè)將被分配專用的端口。除了連接于Avalon總線的地址、數(shù)據(jù)及控制端口之外用戶也可以自行定制端口。這些于用戶邏輯相連接的信號(hào)擴(kuò)展了系統(tǒng)模塊的應(yīng)用。Av

15、alon外設(shè)要么是主外設(shè),要么是從外設(shè)。主外設(shè)可以于Avalon上開(kāi)啟總線傳輸,其至少有一個(gè)連接于Avalon總線模塊的主端口。主外設(shè)也可以有一個(gè)從端口其允許此設(shè)備接受其他連接于Avalon 總線的主設(shè)備開(kāi)啟的總線傳輸。而從設(shè)備只能響應(yīng)Avalon 總線傳輸,而不能夠開(kāi)啟總線傳輸。像存儲(chǔ)器,UART 這樣的從設(shè)備,通常只有與Avalon總線模塊相連接的一個(gè)從端口。在SOPC 環(huán)境中,區(qū)分以下Avalon 總線主設(shè)備/從設(shè)備的外設(shè)類型是十分重要的。 系統(tǒng)模塊內(nèi)部外設(shè) 如果SOPC Builder在外設(shè)庫(kù)中找到了一個(gè)外設(shè),或者設(shè)計(jì)者指定了一個(gè)用戶外設(shè)的設(shè)計(jì)文件,SOPC Builder將自動(dòng)的將此

16、外設(shè)與Avalon總線模塊相連接。這種外設(shè)是指系統(tǒng)模塊之內(nèi)的外設(shè),也就是被認(rèn)為是系統(tǒng)模塊的一個(gè)部分。與Avalon總線相連接的地址、數(shù)據(jù)及控制端口是向用戶隱藏的。外設(shè)中任何附加的非Avalon端口將作為系統(tǒng)模塊的端口顯示于外。這些端口可能與物理管腳直接相連或者可能與片上的其他模塊相連。 系統(tǒng)模塊外部外設(shè) Avalon總線外設(shè)也可以存在于系統(tǒng)模塊之外。設(shè)計(jì)者選擇將模塊置于系統(tǒng)模塊之外可能有以下幾個(gè)原因: 外設(shè)在物理上位于PLD 器件之外 外設(shè)需要某些粘連邏輯(glue logic)使其與Avalon 總線信號(hào)連接 在系統(tǒng)模塊產(chǎn)生的時(shí)候,外設(shè)的設(shè)計(jì)還沒(méi)有完成 在這些情況下,相應(yīng)的Avalon總線模

17、塊信號(hào)作為系統(tǒng)模塊的端口現(xiàn)于外部(及指定的外設(shè))。 主端口(Master Port) 主端口是主外設(shè)上用于開(kāi)啟Avalon總線傳輸?shù)囊幌盗卸丝诘募?。主端口與Avalon總線模塊直接相連。實(shí)際上,一個(gè)主外設(shè)可能有一個(gè)或多個(gè)主端口及一個(gè)從端口。這些主端口及從端口的相互依賴關(guān)系是由對(duì)外設(shè)進(jìn)行設(shè)計(jì)時(shí)決定的。但是,這些主、從端口上的單獨(dú)的總線傳輸應(yīng)該總是遵循本文所述。本文中所提及的所有主設(shè)備傳輸都是指單獨(dú)的主端口的Avalon 總線傳輸。 從端口(Slave Port) 從端口是指在位于某一外設(shè)上的,從另一外設(shè)主端口接受Avalon 總線傳輸?shù)囊幌盗卸丝诘募?。從端口也直接與Avalon總線模塊相連接

18、。主外設(shè)也可以有一個(gè)從端口,通過(guò)這個(gè)從端口可以使其接受Avalon 總線上其他主設(shè)備的傳輸。本文所提及的所有從設(shè)備傳輸都是指單獨(dú)的從端口的Avalon 總線傳輸。 主-從端口對(duì)(Master-Slave Pair) “主從端口對(duì)”是指通過(guò)Avalon總線模塊相連接的一個(gè)主端口和一個(gè)從端口構(gòu)成的組合。從結(jié)構(gòu)上講,這些主、從端口與Avalon 總線模塊上的相應(yīng)端口相連接。主端口的控制及數(shù)據(jù)信號(hào)可以有效的通過(guò)Avalon總線模塊與從端口相互作用。主、從端口之間的連接(這就構(gòu)成了主-從端口對(duì))是在SOPC Builder 中所確定的。 PTF文件、SOPC Builder參數(shù)及開(kāi)關(guān) Avalon 總線

19、及外設(shè)的配置可以利用基于向?qū)У腟OPC Builder 圖形用戶接口(GUI)來(lái)完成。通過(guò)這個(gè)GUI,用戶可以設(shè)定不同的參數(shù)和開(kāi)關(guān),然后據(jù)此產(chǎn)生系統(tǒng)的PTF 文件。PTF 文件是一個(gè)文本化的文件,它定義了: 定義Avalon 總線模塊結(jié)構(gòu)、功能的參數(shù) 定義每個(gè)外設(shè)定義結(jié)構(gòu)、功能的參數(shù) 每個(gè)外設(shè)的主、從角色 外設(shè)端口(如讀使能、寫(xiě)使能、寫(xiě)數(shù)據(jù)等) 通往多主端口的從端口的仲裁機(jī)制 然后,PTF文件通過(guò)HDL產(chǎn)生器創(chuàng)建了系統(tǒng)模塊的寄存器傳輸級(jí)(RTL)描述。更多的關(guān)于系統(tǒng)PTF文件的信息請(qǐng)查看 “SOPC Builder數(shù)據(jù)文檔”(SOPC Builder DataSheet)和 “SOPC Bui

20、lder PTF 文件參考手冊(cè)”(SOPC Builder PTF File Reference Manual)_ 1.3 Avalon 總線傳輸 Avalon總線規(guī)范定義了主端口和從端口之間通過(guò)Avalon總線模塊傳輸數(shù)據(jù)所需要的信號(hào)和時(shí)序。構(gòu)成Avalon總線模塊和外設(shè)之間接口的信號(hào)隨著傳輸模式的不同而不同。首先,主傳輸與從傳輸?shù)慕涌诓煌褂弥鞫丝谂c從端口的信號(hào)定義不同。此外,通過(guò)系統(tǒng)PTF文件的設(shè)置,所需信號(hào)的確切類型與數(shù)量也是可變的。 Avalon總線規(guī)范提供了各種選項(xiàng)來(lái)剪裁總線信號(hào)和時(shí)序,以滿足不同類型外設(shè)的需要。Avalon總線基本傳輸模式在一個(gè)主從端口對(duì)之間每次只傳送一個(gè)單元的

21、數(shù)據(jù)??梢酝ㄟ^(guò)插入等待周期來(lái)延長(zhǎng)一次總線傳輸?shù)臅r(shí)間,以滿足低速外設(shè)的需要。流傳輸模式以及支持并發(fā)多主端口傳輸?shù)哪芰M足高帶寬外設(shè)的需要。所有Avalon從傳輸?shù)男盘?hào)時(shí)序都源自從端口的基本傳輸模式。同樣,主端口的基本傳輸模式是所有Avalon 主傳輸?shù)幕A(chǔ)。 1.3.1 主端口接口與從端口接口 當(dāng)討論Avalon總線傳輸時(shí),必須注意討論的是總線的哪一邊,是主端口接口還是從端口接口。由主端口輸出的信號(hào)與輸入到目標(biāo)外設(shè)的從端口的對(duì)應(yīng)信號(hào)可能會(huì)有較大的差別。從端口的信號(hào)活動(dòng)總是主外設(shè)發(fā)起總線傳輸?shù)慕Y(jié)果。但是,實(shí)際的從端口輸入信號(hào)并非直接來(lái)自主端口。Avalon總線模塊傳遞來(lái)自主端口的信號(hào),并對(duì)信號(hào)進(jìn)行

22、裁剪,以滿足從外設(shè)的需要。 由于以上原因,對(duì)Avalon總線傳輸?shù)慕榻B將分為主傳輸類型和從傳輸類型兩個(gè)部分。大多數(shù)用戶只關(guān)心從傳輸,因?yàn)樗麄冊(cè)O(shè)計(jì)的用戶自定義外設(shè)一般都是從外設(shè)。邊時(shí),用戶只需考慮Avalon 總線模塊和用戶自定義外設(shè)之間的信號(hào)。只有當(dāng)用戶創(chuàng)建主外設(shè)時(shí)才涉及到主傳輸。 1.3.2 Avalon 總線時(shí)序 Avalon總線是一個(gè)同步總線接口,由一個(gè)Avalon 總線主時(shí)鐘定時(shí),所有總線傳輸?shù)男盘?hào)都與Avalon總線時(shí)鐘同步。同步總線接口并不意味著所有的Avalon 總線信號(hào)都是鎖存的。比如,Avalon 的chipselect信號(hào)便是由組合邏輯產(chǎn)生的,其輸入是同步于Avalon 總

23、線時(shí)鐘的寄存器的輸出。因此,外設(shè)不能使用Avalon信號(hào)的邊沿,因?yàn)锳valon 信號(hào)在達(dá)到穩(wěn)定前會(huì)變化多次。就像所有同步設(shè)計(jì)一樣,Avalon 總線外設(shè)只能在時(shí)鐘上升沿對(duì)穩(wěn)定的信號(hào)作出響應(yīng),且必須在時(shí)鐘上升沿輸出穩(wěn)定的信號(hào)。Avalon總線模塊也可以連接異步外設(shè),例如片外異步存儲(chǔ)器。但設(shè)計(jì)時(shí)需要考慮一些額外因素:由于Avalon總線模塊的同步操作,Avalon 信號(hào)只以Avalon總線時(shí)鐘周期為間隔變化。此外,如果異步外設(shè)的輸出直接連接到Avalon 總線模塊,用戶必須保證輸出信號(hào)在時(shí)鐘上升之前達(dá)到穩(wěn)定。Avalon 總線規(guī)范并不定義在時(shí)鐘上升沿之間信號(hào)是如何變化的。信號(hào)的變化由Avalon

24、總線時(shí)鐘觸發(fā),信號(hào)只要在捕獲時(shí)鐘上升沿之前達(dá)到穩(wěn)定就可以了,因此,總線規(guī)范中的Avalon 總線時(shí)序圖中不會(huì)描繪精確的時(shí)間信息。類似地,Avalon 總線沒(méi)有規(guī)定固有的最高性能。系統(tǒng)模塊在特定的器件上綜合布線之后,用戶必須對(duì)系統(tǒng)模塊進(jìn)行標(biāo)準(zhǔn)的時(shí)序分析,以確定Avalon 總線傳輸達(dá)到的最高速度。 1.3.3 Avalon 總線信號(hào) 由于Avalon總線是一個(gè)由HDL文件綜合而來(lái),所以在連接Avalon 總線模塊和Avalon外設(shè)時(shí)需要一些特別的考慮。對(duì)于傳統(tǒng)的片外總線結(jié)構(gòu),所有外設(shè)都共享一組固定的.預(yù)先設(shè)計(jì)的金屬線路,而Avalon 總線與此不同: SOPC Builder必須準(zhǔn)確地了解每個(gè)外

25、設(shè)提供了哪些Avalon端口,以便連接外設(shè)與Avalon總線模塊。它還需要了解每個(gè)端口的名稱和類型,這些信息定義在系統(tǒng)PTF文件中。Avalon 總線規(guī)范不要求Avalon 外設(shè)必須包含哪些信號(hào)。它只定義了外設(shè)可以包含的各種信號(hào)類型 (例如地址.數(shù)據(jù).時(shí)鐘等)。 外設(shè)的每一個(gè)信號(hào)都要指定一個(gè)有效的Avalon信號(hào)類型,以確定該信號(hào)的作用,一個(gè)信號(hào)也可以是用戶自定義的。在這種情況下, SOPC Builder不將該端口與Avalon 總線模塊連接。 Avalon信號(hào)類型首先分為主端口信號(hào)和從端口信號(hào)兩類。因而,外設(shè)使用的信號(hào)類型首先由端口的主從角色決定。每個(gè)獨(dú)立的主端口或從端口使用的信號(hào)類型由外

26、設(shè)的設(shè)計(jì)決定。例如,設(shè)計(jì)一個(gè)只有輸出的PIO從外設(shè)只需要定義用于寫(xiě)的信號(hào),而不需要定義用于讀的信號(hào)。盡管中斷請(qǐng)求輸出是從端口允許的信號(hào)類型,但也不是必須使用。Avalon 總線規(guī)范不規(guī)定Avalon外設(shè)信號(hào)的命名規(guī)則。不同信號(hào)類型的作用是預(yù)先定義的,而信號(hào)的名稱則是由外設(shè)決定。信號(hào)可以按照它的信號(hào)類型來(lái)命名,也可以遵照系統(tǒng)級(jí)的命名規(guī)范采用不同的名稱。下面章節(jié)中討論的Avalon 總線傳輸時(shí)會(huì)涉及到一些Avalon信號(hào),例如readdata信號(hào)和irq信號(hào)。在這里信號(hào)類型的名稱作為信號(hào)名稱,但外設(shè)信號(hào)的實(shí)際名稱可以與此不同。 作為一個(gè)例子,表1.1 列舉了部分Avalon 從端口可用的信號(hào)類型。

27、信號(hào)的方向是從外設(shè)的角度定義的。例如時(shí)鐘信號(hào)clk(方向?yàn)閕n)對(duì)于從外設(shè)來(lái)說(shuō)是輸入信號(hào),而對(duì)于Avalon總線模塊來(lái)說(shuō)是輸入信號(hào)。 表1.1 中例舉的信號(hào)類型都是高電平有效。Avalon 總線還提供了各個(gè)信號(hào)類型的反向形式。在PTF 聲明中,在信號(hào)類型名稱加”_n”,便可將對(duì)應(yīng)的端口聲明為低電平有效。這對(duì)許多使用低電平有效的片外外設(shè)非常有用。1.3.4 并發(fā)多主端口的Avalon 總線需要考慮的事項(xiàng)Avalon 總線允許多個(gè)端口連接到Avalon 總線模塊。而且實(shí)現(xiàn)Avalon總線的并發(fā)多主端口功能時(shí),Avalon總線模塊不需要額外的特殊信號(hào)。當(dāng)多個(gè)主外設(shè)試圖同時(shí)訪問(wèn)同一個(gè)外設(shè)時(shí), Aval

28、on總線模塊內(nèi)部的從端口仲裁邏輯會(huì)被用來(lái)解決沖突。仲裁機(jī)制對(duì)于Avalon總線外設(shè)完全是透明的。因而,不論是否使用了仲裁,應(yīng)用于主端口和從端口的Avalon 總線傳輸協(xié)議是相同的。換句話說(shuō),從端口不會(huì)意識(shí)到有多個(gè)主外設(shè)同時(shí)請(qǐng)求總線傳輸。類似地,被仲裁邏輯強(qiáng)制等待的主外設(shè)也不會(huì)意識(shí)到另一個(gè)獲勝的主外設(shè)的存在。主端口只是簡(jiǎn)單地發(fā)現(xiàn)它的等待請(qǐng)求信號(hào)被置為有效,并一直等待,直到目標(biāo)外設(shè)準(zhǔn)備好處理總線傳輸。將仲裁的細(xì)節(jié)隱藏在Avalon總線模塊內(nèi)部極大簡(jiǎn)化了外設(shè)的設(shè)計(jì),任何Avalon 外設(shè)在單主端口和多主端口結(jié)構(gòu)中都可以使用。 1.4 Avalon 從端口傳輸 1.4.1 從傳輸?shù)腁valon 總線信

29、號(hào) 表2 列舉了外設(shè)的從端口與Avalon總線間接口的信號(hào)類型。信號(hào)的方向是以外設(shè)的角度定義的。外設(shè)提供的信號(hào)由外設(shè)的設(shè)計(jì)和PTF文件中的信號(hào)定義決定,不需要提供全部的信號(hào)類型。 上述信號(hào)如果不加說(shuō)明都是高電平有效,此外, Avalon總線也提供上述信號(hào)的低電平有效版本,在信號(hào)名稱后加”_n”表示低電平有效,如:read 信號(hào)為高電平有效,而read_n為低電平有效。 1.4.2 Avalon 總線上的從端口讀傳輸 1.4.2.1 基本從端口傳輸模式 基本從端口傳輸模式是所有Avalon 從端口傳輸?shù)幕A(chǔ)。所有其它的從端口傳輸使用的信號(hào)都包含了基本從端口傳輸?shù)男盘?hào),并擴(kuò)展了基本從端口操作時(shí)序。

30、基本從端口傳輸由Avalon 總線模塊發(fā)起,然后從端口向Avalon 總線模塊傳輸一個(gè)單元的數(shù)據(jù)?;緩亩丝谧x傳輸沒(méi)有延遲。例4.1 顯示了一個(gè)基本從端口讀傳輸?shù)睦?。在Avalon 基本讀傳輸中,總線傳輸開(kāi)始于一個(gè)時(shí)鐘上升沿,并在下一個(gè)時(shí)鐘上升沿結(jié)束,不插入等待周期。由于傳輸在一個(gè)時(shí)鐘周期內(nèi)完成,目標(biāo)外設(shè)必須能夠立即.異步向Avalon 總線模塊輸出相應(yīng)地址的內(nèi)容。在clk 的第一個(gè)上升沿,Avalon 總線向目標(biāo)外設(shè)傳遞address、byteenable_n 和read_n信號(hào)。Avalon 總線模塊內(nèi)部對(duì)address 進(jìn)行譯碼,產(chǎn)生片選并驅(qū)動(dòng)從端口的chipselect 信號(hào)。一旦c

31、hipselect 信號(hào)有效,從端口在數(shù)據(jù)有效時(shí)應(yīng)立即驅(qū)動(dòng)readdata 輸出。最后,Avalon總線模塊在下一個(gè)時(shí)鐘上升沿捕獲readdata。 例4.1 基本從端口讀傳輸 時(shí)序說(shuō)明: (A) 第一個(gè)總線周期開(kāi)始于clk 上升沿; (B) Address 和read_n 信號(hào)有效; (C) Avalon 總線對(duì)address 譯碼,輸出有效的chipselect; (D) 片選有效后,從端口在第一個(gè)總線周期內(nèi)必須返回有效數(shù)據(jù); (E) Avalon 總線在下一個(gè)clk 上升沿捕獲readdata,讀傳輸?shù)酱私Y(jié)束。另一個(gè)總線傳輸可以在下一個(gè)總線周期開(kāi)始。無(wú)等待周期的基本讀傳輸只適用于完全異步

32、的外設(shè)。目標(biāo)外設(shè)必須在外設(shè)被選中或地址變化時(shí)立即向Avalon 總線提供數(shù)據(jù)。為使傳輸正常工作,readdata 的輸出必須在一下個(gè)時(shí)鐘上升沿有效且穩(wěn)定。鎖存輸入或輸出端口的同步外設(shè)不能使用無(wú)等待周期的基本從端口讀傳輸。大部分片上外設(shè)都采用同步接口,因此至少需要一個(gè)時(shí)鐘周期來(lái)捕獲數(shù)據(jù)。在讀傳輸中,需要至少一個(gè)等待周期,除非該外設(shè)是具有延遲的。外設(shè)的從端口還可以使用字節(jié)使能信號(hào)byteenable_n, 對(duì)byteenable_n 的解釋是由外設(shè)決定的。在最簡(jiǎn)單的情況下,從端口可以忽略byteenable_n,每當(dāng)read_n 有效時(shí)總是驅(qū)動(dòng)所有的字節(jié)段。Avalon總線模塊在每次讀傳輸中捕獲r

33、eaddata 的全部位寬度。如果在讀傳輸中某個(gè)字節(jié)未使能,其返回到Avalon 總線模塊的值是不確定的。當(dāng)chipselect 無(wú)效時(shí),從端口必須忽略所有其它輸入信號(hào),其輸出信號(hào)沒(méi)有必要置為高阻。此外,chipselect的上升沿或read_n 的下降沿不能用作讀傳輸開(kāi)始的標(biāo)志,因?yàn)檫@些邊沿的穩(wěn)定性是沒(méi)有保證的。 1.4.2.2 具有固定等待周期的從端口讀傳輸 具有固定等待周期從端口傳輸使用的信號(hào)與基本讀傳輸使用的相同,不同點(diǎn)只是信號(hào)的時(shí)序。具有等待周期的從端口讀傳輸適用于不能在一個(gè)時(shí)鐘周期內(nèi)提供數(shù)據(jù)的外設(shè)。例如,若指定了一個(gè)等待周期,Avalon 總線模塊在提供了有效的地址和控制信號(hào)后,會(huì)

34、等待一個(gè)時(shí)鐘周期再捕獲外設(shè)的數(shù)據(jù)。Avalon 總線模塊在每次讀傳輸時(shí)都會(huì)等待固定數(shù)量的總線周期。 例4.2 顯示了具有單個(gè)等待周期的從端口讀傳輸?shù)臅r(shí)序。 Avalon總線模塊在第一個(gè)總線周期提供address、byteenable、read_n 和chipselect 信號(hào)。由于具有等待周期,外設(shè)不必在第一個(gè)總線內(nèi)提供readdata。第一個(gè)總線周期是第一個(gè)(也是唯一一個(gè))等待周期。從端口可以隨時(shí)捕獲地址和控制信號(hào),片上的同步外設(shè)通常在第二個(gè)總線周期開(kāi)始(等待周期結(jié)束)時(shí)的clk 上升沿捕獲地址和控制信號(hào)。在第二個(gè)總線周期間,目標(biāo)外設(shè)向Avalon總線模塊提供readdata。在第三個(gè)也是最

35、后一個(gè)時(shí)鐘上升沿,Avalon 總線模塊由從端口捕獲readdata。在第三個(gè)也是最后一個(gè)時(shí)鐘上升沿,Avalon 總線模塊由從端口模塊readdata并結(jié)束總線傳輸。 時(shí)序說(shuō)明: (A) 第一個(gè)總線周期開(kāi)始于clk 上升沿; (B) Address 和read_n 信號(hào)有效; (C) Avalon 總線對(duì)address 譯碼,輸出有效的chipselect; (D) clk上升沿標(biāo)志著第一個(gè)且是唯一的一個(gè)等待周期結(jié)束。如果從端口是同步的,它可以在clk上升沿捕獲address、read_n、和chipselect; (E) 從端口在第二個(gè)總線周期內(nèi)返回有效數(shù)據(jù); (F) Avalon總線在下

36、一個(gè)clk上升沿捕獲readdata,讀傳輸?shù)酱私Y(jié)束。另一個(gè)總線傳輸可以在下一個(gè)總線周期開(kāi)始。 例4.2 具有一個(gè)固定等待周期的從端口讀傳輸 具有單個(gè)等待周期的讀傳輸經(jīng)常用于同步的片上外設(shè)。在合理的PLD 設(shè)計(jì)中,模塊間的接口應(yīng)當(dāng)通過(guò)寄存器同步。加入了一個(gè)等待周期后,外設(shè)可以在chipselect 有效后的下一個(gè)clk 上升沿捕獲address、byteenable、read_n 和chipselect,這使得目標(biāo)外設(shè)具有至少一個(gè)完整的總線周期來(lái)向Avalon 總線模塊提供返回?cái)?shù)據(jù)。例4.3顯示了具有多個(gè)等待周期的從端口讀傳輸。它和例4.2 幾乎是一樣的,只是Avalon總線在由外設(shè)獲取rea

37、ddata 之前等待多于一個(gè)總線周期。 1.4.2.3 具有外設(shè)控制等待周期的從端口讀傳輸 外設(shè)控制的等待周期使得目標(biāo)外設(shè)能夠根據(jù)提供數(shù)據(jù)的需要將Avalon 總線模塊的讀操作暫停任意多個(gè)總線周期。在這種傳輸模塊下,外設(shè)向Avalon總線模塊提供數(shù)據(jù)所需的時(shí)間是不固定的。 例4.4 顯示了這種情況,外設(shè)控制等待周期的讀傳輸模式使用了waitrequest 信號(hào)。它是一個(gè)從端口的輸出信號(hào)。當(dāng)從端口的read_n 信號(hào)有效后,從端口若要延長(zhǎng)讀傳輸,它必須在第一個(gè)總線周期內(nèi)返回waitrequest。當(dāng)waitrquest 有效后,Avalon總線模塊便暫停工作,不再捕獲readdata。Avalo

38、n總線模塊在waitrequest 失效后的下一個(gè)clk 上升沿捕獲readdata。Avalon總線模塊沒(méi)有超時(shí)機(jī)制來(lái)限制從端口暫??偩€的時(shí)間。當(dāng)Avalon 總線模塊暫停后,系統(tǒng)模塊內(nèi)的某個(gè)主外設(shè)也被暫停,并等待著由目標(biāo)從外設(shè)返回需要的數(shù)據(jù)。一個(gè)從端口能夠?qū)⒅鞫丝谟谰玫亍皰炱稹?。因此,外設(shè)必須保證不會(huì)使waitrequest 無(wú)限期地保持有效。時(shí)序說(shuō)明: (A) 第一個(gè)總線周期開(kāi)始于clk 上升沿; (B) Address 和read_n 信號(hào)有效; (C) Avalon 總線對(duì)address 譯碼,輸出有效的chipselect; (D) 從端口在下一個(gè)clk 上升沿之前置waitreq

39、uest 有效 (E) Avalon 總線模塊在clk 上升沿讀取waitrequest。這時(shí)waitrequest 有效,因而在該時(shí)鐘上升沿不捕獲readdata; (F-G)waitrequest 一直保持有效,可以占用任意多個(gè)總線周期; (H) 從端口提供了有效的readdata; (I) 從端口置waitrequest 無(wú)效; (J) Avalon 總線在下一個(gè)clk 上升沿捕獲readdata,讀傳輸?shù)酱私Y(jié)束。另一次總線傳輸可以開(kāi)始于下一個(gè)總線周期。若一個(gè)從端口采用了外設(shè)控制等待周期的讀傳輸模式,對(duì)該端口的其它傳輸模式會(huì)有一些限制,比如不能再使用建立時(shí)間和保持時(shí)間。這些限制只影響從端

40、口,不影響連接到Avalon 總線模塊上的其它外設(shè)。在大多數(shù)情況下,產(chǎn)生waitrequest 信號(hào)的外設(shè)是片上同步外設(shè),不需要考慮建立時(shí)間和等待時(shí)間。 1.4.2.4 具有建立時(shí)間的從端口讀傳輸 Avalon 總線模塊按照用戶設(shè)計(jì)或者外設(shè)默認(rèn),能夠自動(dòng)滿足各個(gè)從端口信號(hào)的建立時(shí)間要求,發(fā)起讀傳輸?shù)闹魍庠O(shè)不必考慮各個(gè)信號(hào)對(duì)建立時(shí)間與保持時(shí)間的要求。具有建立時(shí)間的從端口讀傳輸使用的信號(hào)與基本讀傳輸使用的相同,不同點(diǎn)只是信號(hào)的時(shí)序。這種傳輸方式通常用于一些片外外設(shè),它們要求在讀使能信號(hào)有效前address 和Chipselect 信號(hào)需要穩(wěn)定一段時(shí)間。一個(gè)非零的建立時(shí)間N意味著address、by

41、teenable_n和chipselect 信號(hào)提供給從端口之后,在read_n有效之前有N個(gè)總線周期的延遲。要注意chipselect 不受建立時(shí)間的影響,若外設(shè)對(duì)于read_n 和chipselect 都要求有建立時(shí)間,用戶必須在接口中手工添加適當(dāng)?shù)倪壿嫞ㄒ粋€(gè)與門(mén))。完成總線傳輸所需的總線周期的總數(shù)取決于建立時(shí)間和等待周期的總線周期。例如,若一個(gè)外設(shè)具有參數(shù)setup_Time=”2”和Read_Wait_States=”3”,它將花費(fèi)6 個(gè)總線周期來(lái)完成傳輸:2個(gè)總線周期的建立時(shí)間,3個(gè)總線周期的等待周期,1 個(gè)總線周期用來(lái)捕獲數(shù)據(jù)。例4.5顯示了具有一個(gè)總線周期的建立時(shí)間和一個(gè)固定等待

42、周期的從端口讀傳輸。 時(shí)序說(shuō)明: (A) 第一個(gè)總線周期開(kāi)始于clk 上升沿; (B) Address 和byteenable_n 有效,read_n 信號(hào)仍保持無(wú)效; (C) Avalon 總線對(duì)address 譯碼,輸出有效的chipselect; (D) clk 上升沿標(biāo)志著建立時(shí)間總線周期結(jié)束,并開(kāi)始總線等待周期; (E) Avalon 總線模塊置read_n 有效; (F) clk上升沿標(biāo)志著總線等待周期結(jié)束; (H) Avalon總線在下一個(gè)clk上升沿捕獲readdata,讀傳輸?shù)酱私Y(jié)束。另一次總線傳輸可以開(kāi)始于下一個(gè)總線周期。 如果一個(gè)外設(shè)能夠同時(shí)支持讀和寫(xiě)總線傳輸,并且指定了

43、建立時(shí)間,那么讀傳輸和寫(xiě)傳輸具有同樣的建立時(shí)間。 1.4.3 在Avalon 總線上的從端口寫(xiě)傳輸 1.4.3.1 基本從端口寫(xiě)傳輸 和從端口讀傳輸類似,基本從端口寫(xiě)傳輸是所有Avalon 從端口寫(xiě)傳輸?shù)幕A(chǔ)。所有其它的從端口寫(xiě)傳輸模式使用的信號(hào)都包含了基本從端口寫(xiě)傳輸?shù)男盘?hào),并擴(kuò)展了基本從端口寫(xiě)時(shí)序。基本從端口寫(xiě)傳輸由Avalon 總線模塊發(fā)起,由Avalon總線模塊向從端口傳輸一個(gè)單元的數(shù)據(jù)。基本從端口寫(xiě)傳輸沒(méi)有延遲。例4.6 顯示了基本從端口寫(xiě)傳輸,沒(méi)有等待周期、建立時(shí)間和保持時(shí)間。Avalon 總線模塊提供address、writedata、byteenable_n 和write_n

44、信號(hào),然后設(shè)置chipselect有效。從端口在下一個(gè)時(shí)鐘上升沿捕獲地址、數(shù)據(jù)和控制信號(hào),寫(xiě)傳輸立即結(jié)束。整個(gè)傳輸過(guò)程僅花費(fèi)一個(gè)總線周期。從外設(shè)可以在傳輸結(jié)束后再花費(fèi)一些總線周期來(lái)實(shí)際處理寫(xiě)入的數(shù)據(jù)。如果外設(shè)不能在每個(gè)總線周期都接受數(shù)據(jù),則需要加入等待周期。 例4.6 基本從端口寫(xiě)傳輸 時(shí)序說(shuō)明: (A) 寫(xiě)傳輸開(kāi)始于clk 上升沿; (B) Writedata、address、byteenable_n、write_n 信號(hào)有效; (C) Avalon 總線模塊對(duì)address 譯碼,并向從端口設(shè)置有效的chipselect; (D) 從端口在下一個(gè)clk 上升沿捕獲writedata、 ad

45、dress、 byteenable_n、 write_n和chipselect,寫(xiě)傳輸?shù)酱私Y(jié)束。另一次讀或?qū)憘鬏斂梢蚤_(kāi)始于下一個(gè)總線周期。基本寫(xiě)傳輸只適合于同步外設(shè),包括許多片上外設(shè),例如PIO 和定時(shí)器等?;緦?xiě)傳輸?shù)臅r(shí)序不適合于異步外設(shè),因?yàn)榘╳rite_n 和chipselect 在內(nèi)的所有輸出信號(hào)同時(shí)失效,這會(huì)在片外存儲(chǔ)器等異步外設(shè)中造成競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象。對(duì)于這樣的外設(shè),用戶可以設(shè)定信號(hào)的保持時(shí)間,這將在后面的章節(jié)中討論。當(dāng)writedata比一個(gè)字節(jié)寬時(shí),字節(jié)使能信號(hào)byteenable_n可以寫(xiě)入特定的字節(jié)段。Byteenable_n是一組信號(hào)線,其中每一次對(duì)應(yīng)于writedata

46、的一個(gè)字節(jié)段。Byteenable_n通常用于片外的16 位或32 位字尋址的存儲(chǔ)器設(shè)備。當(dāng)寫(xiě)入單個(gè)字節(jié)數(shù)據(jù)時(shí),address 僅指定相應(yīng)的字或半字地址,而byteenable_n 精確地指定要寫(xiě)入哪個(gè)字節(jié)。表4.3 是使用byteenable_n 的一些例子,其中假定從端口是一個(gè)32 位的外部存儲(chǔ)器。 1.4.3.2 具有固定等待周期的從端口寫(xiě)傳輸 具有固定等待周期的從端口寫(xiě)傳輸使用的信號(hào)與基本寫(xiě)傳輸使用的相同,不同點(diǎn)只是信號(hào)的時(shí)序:Avalon 總線模塊在每次總線傳輸時(shí)都會(huì)插入固定數(shù)量的等待周期。具有等待周期的從端口寫(xiě)傳輸通常用于不能在一個(gè)總線周期內(nèi)從Avalon 總線模塊捕獲數(shù)據(jù)的外設(shè)。

47、在這種情況下Avalon總線模塊在第一個(gè)總線周期中提供address、writedata、byteenable、write_n 和chipselect 信號(hào)。這和基本寫(xiě)傳輸開(kāi)始時(shí)一樣。在等待期間,這些信號(hào)保持穩(wěn)定。在固定數(shù)量的等待周期后從端口捕獲來(lái)自Avalon 總線模塊的數(shù)據(jù)。此后傳輸結(jié)束,Avalon 總線模塊同時(shí)使所有信號(hào)失效。 例4.7 顯示了具有一個(gè)等待周期的從端口寫(xiě)傳輸實(shí)例。 時(shí)序說(shuō)明: (A) 寫(xiě)傳輸開(kāi)始于clk 上升沿; (B) Writedata、address、byteenable_n、write_n 信號(hào)有效; (C) Avalon 總線模塊對(duì)address 譯碼,并向從

48、端口設(shè)置有效的chipselect; (D) 在第一個(gè)(也是唯一一個(gè))總線等待周期在該clk 上升沿結(jié)束。所有來(lái)自Avalon 總線模塊的信號(hào)保持不變; (E)從端口在該clk 上升沿或之前捕獲writedata、address、byteenable_n、write_n和chipselect,寫(xiě)傳輸?shù)酱私Y(jié)束。另一次讀或?qū)憘鬏斂梢蚤_(kāi)始于下一個(gè)總線周期。 1.4.3.2 具有外設(shè)控制等待周期的從端口寫(xiě)傳輸 外設(shè)控制等待周期使用目標(biāo)外設(shè)能夠根據(jù)需要將Avalon 總線模塊暫停任意多個(gè)總線周期。某些外設(shè)讀取數(shù)據(jù)時(shí)所需的總線周期是不固定的。因?yàn)槊看蝹鬏敹伎赡苡龅讲煌臈l件。這種傳輸模式對(duì)于這些外設(shè)非常適

49、用。外設(shè)控制等待周期的傳輸模式使用了waitrequest 信號(hào),它是一個(gè)從端口的輸出信號(hào)。Avalon總線模塊在第一個(gè)總線周期中提供address、writedata、byteenable_n、write_n、和chipselect信號(hào),這和基本寫(xiě)傳輸開(kāi)始時(shí)一樣。從端口若需要額外的時(shí)間來(lái)捕獲數(shù)據(jù),它必須在下一個(gè)時(shí)鐘上升沿之前設(shè)置waitrequest 有效。當(dāng)waitequest 有效后,Avalon 總線模塊便暫停工作,使得address、writedata、byteenable_n、write_n 和chipselect 信號(hào)保持穩(wěn)定。在從端口設(shè)置waitrequest 無(wú)效后,總線傳輸

50、在下一個(gè)時(shí)鐘上升沿結(jié)束。Avalon 總線模塊沒(méi)有超時(shí)機(jī)制來(lái)限制從端口強(qiáng)制總線暫停的時(shí)間。當(dāng)Avalon 總線模塊被暫停后,系統(tǒng)模塊內(nèi)的某個(gè)主外設(shè)也被暫停,并等待著從端口讀取寫(xiě)入的數(shù)據(jù)。這樣就使得一個(gè)從外設(shè)能夠?qū)⒅魍庠O(shè)永久地“掛起”。因此,外設(shè)必須保證不會(huì)使waitrequest 無(wú)限期地保持有效。例4.8 顯示了一個(gè)具有外設(shè)控制等待周期的從端口寫(xiě)傳輸?shù)膶?shí)例。 時(shí)序說(shuō)明: (A) 寫(xiě)傳輸開(kāi)始于clk 上升沿; (B) Address、writedata、byteenable_n、和write_n 信號(hào)有效; (C) Avalon 總線模塊對(duì)address 譯碼,然后置chipselect 有效

51、; (D) 從端口在下一個(gè)clk 上升沿之前置waitrequest 有效; (E) Avalon 總線模塊在該clk 上升沿讀取waitrequest。如果waitrequest 有效,這個(gè)總線周期就成為一個(gè)等待周期,address、writedata、byteenable_n 和write_n 信號(hào)保持不變; (F-G)waitrequest 一直保持有效,這可以占用任意多個(gè)總線周期; (H) 從端口最終捕獲了writedata; (I) 從端口置waitrequest 無(wú)效; (J) 寫(xiě)傳輸在下一個(gè)clk 上升沿結(jié)束。另一次總線傳輸可以開(kāi)始于下一個(gè)總線周期。若一個(gè)從端口采用了外設(shè)控制等待

52、周期的寫(xiě)傳輸模式,對(duì)該端口的其它傳輸模式會(huì)有一些限制,比如不能再使用建立時(shí)間和保持時(shí)間。這些限制只影響該從端口,不影響連接到Avalon 總線模塊上的其它外設(shè)。在大多數(shù)情況下,產(chǎn)生waitrequest 信號(hào)的外設(shè)是片上的同步外設(shè),不需要考慮建立時(shí)間和等待時(shí)間。 1.4.3.4 具有建立時(shí)間和保持時(shí)間的從端口寫(xiě)傳輸 Avalon 總線模塊按照用戶設(shè)定或者外設(shè)默認(rèn),能夠自動(dòng)滿足各個(gè)從端口信號(hào)的建立時(shí)間要求,發(fā)起讀傳輸?shù)闹魍庠O(shè)不必考慮各個(gè)信號(hào)對(duì)建立時(shí)間與保持時(shí)間的要求。具有建立時(shí)間的從端口寫(xiě)傳輸使用的信號(hào)與基本使用的相同,不同點(diǎn)只是信號(hào)的時(shí)序。這種傳輸方式通常用于一些片外外設(shè),它們要求在write

53、_n 脈沖的前后address、byteenable_n、wretedata 和chipselect 信號(hào)需要穩(wěn)定一段時(shí)間。一個(gè)非零的建立時(shí)間M 意味著在address、byteenable_n、wretedata 和chipselect 信號(hào)提供給從端口之后,在write_n有效之前有M 個(gè)總線周期的延遲。同樣地,一個(gè)非零的保持的保持時(shí)間N 意味著在write_n失效后,address、byteenable_n、wretedata 和chipselect 保持N 個(gè)總線周期的穩(wěn)定。要注意chipselect 不受建立時(shí)間與保持時(shí)間的影響,若外設(shè)對(duì)于write_n 和chipselect 都要

54、求有建立時(shí)間和保持時(shí)間,用戶必須手工向從端口接口添加適當(dāng)?shù)倪壿嫞ㄒ粋€(gè)與門(mén))。完成總線傳輸所需要的總線周期的總數(shù)取決于建立時(shí)間、等待周期和保持時(shí)間的總線周期數(shù)。例如, 若一個(gè)外設(shè)具有參數(shù)Setup_Time=”2” 、Read_Wait_States=”3” 和Hold_Time=”2”,它將花費(fèi)8 個(gè)總線周期來(lái)完成傳輸:2 個(gè)總線周期的建立時(shí)間,3 個(gè)總線周期的等待周期,2 個(gè)總線周期的保持時(shí)間,1 個(gè)總線周期用來(lái)捕獲數(shù)據(jù)。 從端口不必同時(shí)使用建立時(shí)間與保持時(shí)間,只有建立時(shí)間或只有保持時(shí)間的傳輸也是可以的。例4.9 顯示了同時(shí)具有建立時(shí)間和保持時(shí)間的從端口寫(xiě)傳輸。 時(shí)序說(shuō)明: (A) 第一個(gè)總

55、線周期開(kāi)始于clk 上升沿; (B) Address、byteenable_n、和writedata 信號(hào)有效,write_n 仍保持無(wú)效; (C) Avalon 總線模塊對(duì)address 譯碼,然后置chipselect 有效; (D) 該clk 上升沿標(biāo)志著建立時(shí)間總線周期結(jié)束; (E) Avalon 總線模塊置write_n 有效; (F) Avalon 總線模塊下一個(gè)clk 上升置write_n 無(wú)效;保持時(shí)間總線周期開(kāi)始, Address、byteenable_n、writedata 和chipselect 信號(hào)失效,寫(xiě)傳輸?shù)酱私Y(jié)束。如果一個(gè)外設(shè)能夠同時(shí)支持讀和與傳輸,并且指定了建立

56、時(shí)間,那么讀傳輸和寫(xiě)傳輸具有同樣的建立時(shí)間。 1.5 Avalon 主端口傳輸(略) 1.6 高級(jí)Avalon 總線傳輸之流傳輸模式 流傳輸模式在流模式主外設(shè)和流模式從外設(shè)之間建立一個(gè)開(kāi)放的專為信道以提供連續(xù)的數(shù)據(jù)傳輸。這個(gè)信道使得只要存在有效數(shù)據(jù)便能在主從端口對(duì)之間流動(dòng),主外設(shè)不必為了確定從端口是否能夠發(fā)送或接收數(shù)據(jù)而不斷地訪問(wèn)從外設(shè)的狀態(tài)寄存器。流傳輸模式使得主從端口兩者之間的數(shù)據(jù)吞吐量達(dá)到最大,同時(shí)避免了外設(shè)的數(shù)據(jù)上溢或下溢。它對(duì)于DMA傳輸特別重要。例如一個(gè)DMA 控制器可能只包含簡(jiǎn)單的流控制信號(hào)和一個(gè)計(jì)數(shù)器,它用來(lái)在一個(gè)從外設(shè)和一個(gè)存儲(chǔ)器之間連續(xù)地傳輸數(shù)據(jù)。 1.6.1 流模式從端口

57、傳輸 除了在基本從端口中使用的信號(hào)之外,流模式外設(shè)的接口中又引入了三個(gè)信號(hào):readfordata、dataavailable 和endofpacket。流模式從端口就是指使用了一個(gè)或多個(gè)上上述信號(hào)的從端口。從端口通過(guò)設(shè)置readyfordata有效來(lái)表示它已準(zhǔn)備好接受來(lái)自Avalon總線模塊的寫(xiě)傳輸。從端口通過(guò)設(shè)置dataavailable有效來(lái)表示它已能夠?yàn)閬?lái)自Avalon 總線模塊的讀傳輸提供數(shù)據(jù)。當(dāng)這些信號(hào)無(wú)效時(shí),會(huì)迫使Avalon 總線模塊(以及發(fā)起傳輸?shù)牧髂J街鞫丝冢┑却?,直到從端口?zhǔn)備好繼續(xù)為止。Avalon總線模塊只在readyfordata 或dataavailable 有效

58、時(shí)才會(huì)發(fā)起傳輸?shù)男袨椋▋H適用于在流模式主從端口對(duì)之間傳輸?shù)那闆r)。非流模式的主端口可能隨時(shí)向從端口發(fā)起傳輸,不管從端口是否為流模式端口。例如,Avalon 總線模塊可以向一個(gè)流模式從端口發(fā)起一個(gè)來(lái)自于非流模式主端口(CPU)的從傳輸,即使此時(shí)另一個(gè)來(lái)自流模式主端口(DMA 控制器)的傳輸正因?yàn)閐ataavailable無(wú)效而在等待。在任何傳輸期間,流模式從端口可以設(shè)置endofpacket 信號(hào)有效。此信號(hào)通過(guò)Avalon總線模塊傳遞到主外設(shè)以便它能響應(yīng)。對(duì)于endofpacket 信號(hào)的解釋取決于用戶設(shè)計(jì)。Endofpacket 信號(hào)不保證Avalon 總線模塊會(huì)停止到從端口的傳輸流。例如,endofpacket可以用作包描述器,使得主外設(shè)能在一個(gè)長(zhǎng)的數(shù)據(jù)

溫馨提示

  • 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)論