Avalon總線規范中文_第1頁
Avalon總線規范中文_第2頁
Avalon總線規范中文_第3頁
Avalon總線規范中文_第4頁
Avalon總線規范中文_第5頁
已閱讀5頁,還剩17頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Avalon總線規范 參考手冊 (Avalon從端口傳輸與流模式從端口傳輸部分) Avalon 總線是一種將片上處理器和外設連接成片上可編程系統(SOPC)的一種簡單總線結構。Avalon總線是一種接口方式,它規定了主從設備之間的接口方式及其通信時序。Avalon 總線的設計目的在于: 簡便:提供了簡單易學的協議; 優化總線邏輯的資源利用:節約了可編程器件(PLD)內部的邏輯單元(LE); 同步操作:將PLD 上的其他用戶邏輯很好的集成在一起,從而避免了復雜的時序分析; 基本的Avalon 總線事務可以在主從設備之間傳送一個字節,半字或字(8,16 或32 位)。當一次事務處理完成,總線可以迅

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

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

4、,沒有復雜的,異步的握手/應答模式。Avalon 總線(及整個系統)的性能可以通過使用標準的同步時序分析技術來實現測量。 2 所有的信號都是有效“低”和“高”,這樣便于總線操作的立即轉換。位于Avalon 內 部的多路復用器(不是三態緩沖器)來決定哪個信號驅動哪個外設。 3 地址,數據和控制信號使用分離的,專用端口,這樣簡化了外設的設計。外設不需要 對地址和數據的總線周期進行解碼,也不需要在非使能的時候禁止輸出。 功能簡介 Avalon 也包括很多的功能和約定來支持SOPC Builder 軟件自動產生的系統總線和外設:高于4G 的地址空間存儲器和外設可以被映射為32位地址空間中的任何地址。同

5、步接口所有的Avalon信號都被Avalon總線時鐘同步。這樣簡化了Avalon總線的相關時序行為并便于高速外設的集成。分離的地址,數據和控制線路分離的,專用的地址和數據路徑更便于與用戶邏輯相連接。外設不需要對數據和地址周期進行譯碼。內置地址譯碼器Avalon總線自動的為所有外設產生片選(Chip Select)信號,大大的簡化了Avalon 外設的設計。多主設備總線結構在Avalon 總線上可以存在多個主外設。Avalon總線自動產生仲裁邏輯。基于向導式的配置方便使用的圖形化向導引導用戶完成對Avalon總線的配置(增加外設,確定主/從關系,定義存儲器映射)。Avalon總線結構的自動產生是

6、由用戶在向導界面的輸入來決定的。 動態總線容量Avalon總線自動處理數據位寬不匹配的外設間傳送數據的細節,便于在多種不同寬度的設備間接口。 名詞及概念 許多與SOPC相關的名詞和概念都完全是新的,他們和傳統的片外總線結構有著本質的不同。設計者需要懂得這點,以便可以理解Avalon總線規范。下面的名次及概念構成了一個理論化的框架,而Avalon總線規范就是建立在這一框架的基礎上的。它們貫穿于整個文檔。 總線周期 總線周期被定義為Avalon主時鐘的相鄰上升沿之間的時間間隔,它是總線時鐘周期的基本單元。總線信號時序參照于總線周期時鐘。 總線傳輸 Avalon總線的一次傳輸是對數據的一次讀/寫操作

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

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

9、模塊考慮在可編程芯片上實現用戶自定義系統的結構,其中一部分是由SOPC Builder自動產生的。在Altera PLD上實現的完整系統如圖1所示。出于本文的目的,系統模塊的一些部分是由SOPC Builder自動產生的。系統模塊應該包括最少一個Avalon主外設和一個Avalon從外設,例如UART,定時器或者PIO。系統模塊的外部邏輯可以包含用戶Avalon外設及其他的和系統模塊不相關的用戶邏輯。系統模塊必須與設計者的PLD設計連接起來。系統模塊的端口依賴于其所包括的外設及在SOPCBuilder中進行的設置,并隨其變化。這些端口包括直接到Avalon總線的接口及在系統模塊中的用戶自定義的

10、和外設相連的接口。 Avalon總線模塊 Altera PLD上集成用戶邏輯的系統模塊Avalon總線模塊是任何一個系統模塊的 “脊梁”。它是SOPC設計中外設通信的主要路徑。Avalon總線模塊是所有的控制、數據、地址信號及控制邏輯的總和,是其將外設連接起來并構成了系統模塊。Avalon總線模塊實現了可配置的總線結構,其可以為設計者外設之間的相互連接而改變。Avalon總線模塊是由SOPC Builder自動產生的,所以設計師并不用親自將總線和外設連接起來。Avalon總線模塊基本上不會作為分離的單元而單獨使用,因為系統設計者總是利用SOPC Builder將處理器和其他Avalon外設自動

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

12、相關主外設傳輸數據。 地址譯碼地址譯碼邏輯為每一個外設提供片選信號。這樣,單獨的外設不需要對地址線譯碼以產生片選信號,從而簡化了外設的設計。 產生等待狀態(Wait-State)等待狀態的產生拓展了一個或多個周期的總線傳輸,這有利于滿足某些特殊的同步外設的需要。當從外設無法在一個時鐘周期內應答的時候,產生的等待狀態可以使主外設進入等待狀態。在讀使能及寫使能信號需要一定的建立時間/保持時間要求的時候也可以產生等待狀態。 動態總線寬度動態總線寬度隱藏了窄帶寬外設與較寬的Avalon總線(或者Avalon總線與更高帶寬的外設)相接口的細節問題。舉例來說,一個32位的主設備從一個16位的存儲器中讀數據

13、的時候,動態總線寬度可以自動的對16位的存儲器進行兩次讀操作,從而傳輸32位的數據。這便減少了主設備的邏輯及軟件的復雜程度,因為主設備不需要關心外設的物理特性。 中斷優先級(Interrupt-Priority)分配當一個或者多個從外設產生中斷的時候,Avalon 總線模塊根據相應的中斷請求號(IRQ)來判定中斷請求。 延遲傳輸(Latent Transfer)能力在主、從設備之間進行帶有延遲傳輸的邏輯包含于Avalon總線模塊的內部。 流式讀寫(Streaming Read and Write)能力在主、從設備之間進行流傳輸使能的邏輯包含于Avalon總線模塊的內部。 Avalon外設 連接

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

15、alon外設要么是主外設,要么是從外設。主外設可以于Avalon上開啟總線傳輸,其至少有一個連接于Avalon總線模塊的主端口。主外設也可以有一個從端口其允許此設備接受其他連接于Avalon 總線的主設備開啟的總線傳輸。而從設備只能響應Avalon 總線傳輸,而不能夠開啟總線傳輸。像存儲器,UART 這樣的從設備,通常只有與Avalon總線模塊相連接的一個從端口。在SOPC 環境中,區分以下Avalon 總線主設備/從設備的外設類型是十分重要的。 系統模塊內部外設 如果SOPC Builder在外設庫中找到了一個外設,或者設計者指定了一個用戶外設的設計文件,SOPC Builder將自動的將此

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

17、塊信號作為系統模塊的端口現于外部(及指定的外設)。 主端口(Master Port) 主端口是主外設上用于開啟Avalon總線傳輸的一系列端口的集合。主端口與Avalon總線模塊直接相連。實際上,一個主外設可能有一個或多個主端口及一個從端口。這些主端口及從端口的相互依賴關系是由對外設進行設計時決定的。但是,這些主、從端口上的單獨的總線傳輸應該總是遵循本文所述。本文中所提及的所有主設備傳輸都是指單獨的主端口的Avalon 總線傳輸。 從端口(Slave Port) 從端口是指在位于某一外設上的,從另一外設主端口接受Avalon 總線傳輸的一系列端口的集合。從端口也直接與Avalon總線模塊相連接

18、。主外設也可以有一個從端口,通過這個從端口可以使其接受Avalon 總線上其他主設備的傳輸。本文所提及的所有從設備傳輸都是指單獨的從端口的Avalon 總線傳輸。 主-從端口對(Master-Slave Pair) “主從端口對”是指通過Avalon總線模塊相連接的一個主端口和一個從端口構成的組合。從結構上講,這些主、從端口與Avalon 總線模塊上的相應端口相連接。主端口的控制及數據信號可以有效的通過Avalon總線模塊與從端口相互作用。主、從端口之間的連接(這就構成了主-從端口對)是在SOPC Builder 中所確定的。 PTF文件、SOPC Builder參數及開關 Avalon 總線

19、及外設的配置可以利用基于向導的SOPC Builder 圖形用戶接口(GUI)來完成。通過這個GUI,用戶可以設定不同的參數和開關,然后據此產生系統的PTF 文件。PTF 文件是一個文本化的文件,它定義了: 定義Avalon 總線模塊結構、功能的參數 定義每個外設定義結構、功能的參數 每個外設的主、從角色 外設端口(如讀使能、寫使能、寫數據等) 通往多主端口的從端口的仲裁機制 然后,PTF文件通過HDL產生器創建了系統模塊的寄存器傳輸級(RTL)描述。更多的關于系統PTF文件的信息請查看 “SOPC Builder數據文檔”(SOPC Builder DataSheet)和 “SOPC Bui

20、lder PTF 文件參考手冊”(SOPC Builder PTF File Reference Manual)_ 1.3 Avalon 總線傳輸 Avalon總線規范定義了主端口和從端口之間通過Avalon總線模塊傳輸數據所需要的信號和時序。構成Avalon總線模塊和外設之間接口的信號隨著傳輸模式的不同而不同。首先,主傳輸與從傳輸的接口不同,使用主端口與從端口的信號定義不同。此外,通過系統PTF文件的設置,所需信號的確切類型與數量也是可變的。 Avalon總線規范提供了各種選項來剪裁總線信號和時序,以滿足不同類型外設的需要。Avalon總線基本傳輸模式在一個主從端口對之間每次只傳送一個單元的

21、數據。可以通過插入等待周期來延長一次總線傳輸的時間,以滿足低速外設的需要。流傳輸模式以及支持并發多主端口傳輸的能力滿足高帶寬外設的需要。所有Avalon從傳輸的信號時序都源自從端口的基本傳輸模式。同樣,主端口的基本傳輸模式是所有Avalon 主傳輸的基礎。 主端口接口與從端口接口 當討論Avalon總線傳輸時,必須注意討論的是總線的哪一邊,是主端口接口還是從端口接口。由主端口輸出的信號與輸入到目標外設的從端口的對應信號可能會有較大的差別。從端口的信號活動總是主外設發起總線傳輸的結果。但是,實際的從端口輸入信號并非直接來自主端口。Avalon總線模塊傳遞來自主端口的信號,并對信號進行裁剪,以滿足

22、從外設的需要。 由于以上原因,對Avalon總線傳輸的介紹將分為主傳輸類型和從傳輸類型兩個部分。大多數用戶只關心從傳輸,因為他們設計的用戶自定義外設一般都是從外設。邊時,用戶只需考慮Avalon 總線模塊和用戶自定義外設之間的信號。只有當用戶創建主外設時才涉及到主傳輸。 1.3.2 Avalon 總線時序 Avalon總線是一個同步總線接口,由一個Avalon 總線主時鐘定時,所有總線傳輸的信號都與Avalon總線時鐘同步。同步總線接口并不意味著所有的Avalon 總線信號都是鎖存的。比如,Avalon 的chipselect信號便是由組合邏輯產生的,其輸入是同步于Avalon 總線時鐘的寄存

23、器的輸出。因此,外設不能使用Avalon信號的邊沿,因為Avalon 信號在達到穩定前會變化多次。就像所有同步設計一樣,Avalon 總線外設只能在時鐘上升沿對穩定的信號作出響應,且必須在時鐘上升沿輸出穩定的信號。Avalon總線模塊也可以連接異步外設,例如片外異步存儲器。但設計時需要考慮一些額外因素:由于Avalon總線模塊的同步操作,Avalon 信號只以Avalon總線時鐘周期為間隔變化。此外,如果異步外設的輸出直接連接到Avalon 總線模塊,用戶必須保證輸出信號在時鐘上升之前達到穩定。Avalon 總線規范并不定義在時鐘上升沿之間信號是如何變化的。信號的變化由Avalon總線時鐘觸發

24、,信號只要在捕獲時鐘上升沿之前達到穩定就可以了,因此,總線規范中的Avalon 總線時序圖中不會描繪精確的時間信息。類似地,Avalon 總線沒有規定固有的最高性能。系統模塊在特定的器件上綜合布線之后,用戶必須對系統模塊進行標準的時序分析,以確定Avalon 總線傳輸達到的最高速度。 1.3.3 Avalon 總線信號 由于Avalon總線是一個由HDL文件綜合而來,所以在連接Avalon 總線模塊和Avalon外設時需要一些特別的考慮。對于傳統的片外總線結構,所有外設都共享一組固定的.預先設計的金屬線路,而Avalon 總線與此不同: SOPC Builder必須準確地了解每個外設提供了哪些

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

26、。例如,設計一個只有輸出的PIO從外設只需要定義用于寫的信號,而不需要定義用于讀的信號。盡管中斷請求輸出是從端口允許的信號類型,但也不是必須使用。Avalon 總線規范不規定Avalon外設信號的命名規則。不同信號類型的作用是預先定義的,而信號的名稱則是由外設決定。信號可以按照它的信號類型來命名,也可以遵照系統級的命名規范采用不同的名稱。下面章節中討論的Avalon 總線傳輸時會涉及到一些Avalon信號,例如readdata信號和irq信號。在這里信號類型的名稱作為信號名稱,但外設信號的實際名稱可以與此不同。 作為一個例子,表1.1 列舉了部分Avalon 從端口可用的信號類型。信號的方向是

27、從外設的角度定義的。例如時鐘信號clk(方向為in)對于從外設來說是輸入信號,而對于Avalon總線模塊來說是輸入信號。 表1.1 中例舉的信號類型都是高電平有效。Avalon 總線還提供了各個信號類型的反向形式。在PTF 聲明中,在信號類型名稱加”_n”,便可將對應的端口聲明為低電平有效。這對許多使用低電平有效的片外外設非常有用。 并發多主端口的Avalon 總線需要考慮的事項Avalon 總線允許多個端口連接到Avalon 總線模塊。而且實現Avalon總線的并發多主端口功能時,Avalon總線模塊不需要額外的特殊信號。當多個主外設試圖同時訪問同一個外設時, Avalon總線模塊內部的從端

28、口仲裁邏輯會被用來解決沖突。仲裁機制對于Avalon總線外設完全是透明的。因而,不論是否使用了仲裁,應用于主端口和從端口的Avalon 總線傳輸協議是相同的。換句話說,從端口不會意識到有多個主外設同時請求總線傳輸。類似地,被仲裁邏輯強制等待的主外設也不會意識到另一個獲勝的主外設的存在。主端口只是簡單地發現它的等待請求信號被置為有效,并一直等待,直到目標外設準備好處理總線傳輸。將仲裁的細節隱藏在Avalon總線模塊內部極大簡化了外設的設計,任何Avalon 外設在單主端口和多主端口結構中都可以使用。 1.4 Avalon 從端口傳輸 從傳輸的Avalon 總線信號 表2 列舉了外設的從端口與Av

29、alon總線間接口的信號類型。信號的方向是以外設的角度定義的。外設提供的信號由外設的設計和PTF文件中的信號定義決定,不需要提供全部的信號類型。 上述信號如果不加說明都是高電平有效,此外, Avalon總線也提供上述信號的低電平有效版本,在信號名稱后加”_n”表示低電平有效,如:read 信號為高電平有效,而read_n為低電平有效。 1.4.2 Avalon 總線上的從端口讀傳輸 .1 基本從端口傳輸模式 基本從端口傳輸模式是所有Avalon 從端口傳輸的基礎。所有其它的從端口傳輸使用的信號都包含了基本從端口傳輸的信號,并擴展了基本從端口操作時序。基本從端口傳輸由Avalon 總線模塊發起,

30、然后從端口向Avalon 總線模塊傳輸一個單元的數據。基本從端口讀傳輸沒有延遲。例4.1 顯示了一個基本從端口讀傳輸的例子。在Avalon 基本讀傳輸中,總線傳輸開始于一個時鐘上升沿,并在下一個時鐘上升沿結束,不插入等待周期。由于傳輸在一個時鐘周期內完成,目標外設必須能夠立即.異步向Avalon 總線模塊輸出相應地址的內容。在clk 的第一個上升沿,Avalon 總線向目標外設傳遞address、byteenable_n 和read_n信號。Avalon 總線模塊內部對address 進行譯碼,產生片選并驅動從端口的chipselect 信號。一旦chipselect 信號有效,從端口在數據有

31、效時應立即驅動readdata 輸出。最后,Avalon總線模塊在下一個時鐘上升沿捕獲readdata。 例4.1 基本從端口讀傳輸 時序說明: (A) 第一個總線周期開始于clk 上升沿; (B) Address 和read_n 信號有效; (C) Avalon 總線對address 譯碼,輸出有效的chipselect; (D) 片選有效后,從端口在第一個總線周期內必須返回有效數據; (E) Avalon 總線在下一個clk 上升沿捕獲readdata,讀傳輸到此結束。另一個總線傳輸可以在下一個總線周期開始。無等待周期的基本讀傳輸只適用于完全異步的外設。目標外設必須在外設被選中或地址變化時

32、立即向Avalon 總線提供數據。為使傳輸正常工作,readdata 的輸出必須在一下個時鐘上升沿有效且穩定。鎖存輸入或輸出端口的同步外設不能使用無等待周期的基本從端口讀傳輸。大部分片上外設都采用同步接口,因此至少需要一個時鐘周期來捕獲數據。在讀傳輸中,需要至少一個等待周期,除非該外設是具有延遲的。外設的從端口還可以使用字節使能信號byteenable_n, 對byteenable_n 的解釋是由外設決定的。在最簡單的情況下,從端口可以忽略byteenable_n,每當read_n 有效時總是驅動所有的字節段。Avalon總線模塊在每次讀傳輸中捕獲readdata 的全部位寬度。如果在讀傳輸中

33、某個字節未使能,其返回到Avalon 總線模塊的值是不確定的。當chipselect 無效時,從端口必須忽略所有其它輸入信號,其輸出信號沒有必要置為高阻。此外,chipselect的上升沿或read_n 的下降沿不能用作讀傳輸開始的標志,因為這些邊沿的穩定性是沒有保證的。 .2 具有固定等待周期的從端口讀傳輸 具有固定等待周期從端口傳輸使用的信號與基本讀傳輸使用的相同,不同點只是信號的時序。具有等待周期的從端口讀傳輸適用于不能在一個時鐘周期內提供數據的外設。例如,若指定了一個等待周期,Avalon 總線模塊在提供了有效的地址和控制信號后,會等待一個時鐘周期再捕獲外設的數據。Avalon 總線模

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

35、eaddata。在第三個也是最后一個時鐘上升沿,Avalon 總線模塊由從端口模塊readdata并結束總線傳輸。 時序說明: (A) 第一個總線周期開始于clk 上升沿; (B) Address 和read_n 信號有效; (C) Avalon 總線對address 譯碼,輸出有效的chipselect; (D) clk上升沿標志著第一個且是唯一的一個等待周期結束。如果從端口是同步的,它可以在clk上升沿捕獲address、read_n、和chipselect; (E) 從端口在第二個總線周期內返回有效數據; (F) Avalon總線在下一個clk上升沿捕獲readdata,讀傳輸到此結束。

36、另一個總線傳輸可以在下一個總線周期開始。 例4.2 具有一個固定等待周期的從端口讀傳輸 具有單個等待周期的讀傳輸經常用于同步的片上外設。在合理的PLD 設計中,模塊間的接口應當通過寄存器同步。加入了一個等待周期后,外設可以在chipselect 有效后的下一個clk 上升沿捕獲address、byteenable、read_n 和chipselect,這使得目標外設具有至少一個完整的總線周期來向Avalon 總線模塊提供返回數據。例4.3顯示了具有多個等待周期的從端口讀傳輸。它和例4.2 幾乎是一樣的,只是Avalon總線在由外設獲取readdata 之前等待多于一個總線周期。 .3 具有外設

37、控制等待周期的從端口讀傳輸 外設控制的等待周期使得目標外設能夠根據提供數據的需要將Avalon 總線模塊的讀操作暫停任意多個總線周期。在這種傳輸模塊下,外設向Avalon總線模塊提供數據所需的時間是不固定的。 例4.4 顯示了這種情況,外設控制等待周期的讀傳輸模式使用了waitrequest 信號。它是一個從端口的輸出信號。當從端口的read_n 信號有效后,從端口若要延長讀傳輸,它必須在第一個總線周期內返回waitrequest。當waitrquest 有效后,Avalon總線模塊便暫停工作,不再捕獲readdata。Avalon總線模塊在waitrequest 失效后的下一個clk 上升沿

38、捕獲readdata。Avalon總線模塊沒有超時機制來限制從端口暫停總線的時間。當Avalon 總線模塊暫停后,系統模塊內的某個主外設也被暫停,并等待著由目標從外設返回需要的數據。一個從端口能夠將主端口永久地“掛起”。因此,外設必須保證不會使waitrequest 無限期地保持有效。時序說明: (A) 第一個總線周期開始于clk 上升沿; (B) Address 和read_n 信號有效; (C) Avalon 總線對address 譯碼,輸出有效的chipselect; (D) 從端口在下一個clk 上升沿之前置waitrequest 有效 (E) Avalon 總線模塊在clk 上升沿讀

39、取waitrequest。這時waitrequest 有效,因而在該時鐘上升沿不捕獲readdata; (F-G)waitrequest 一直保持有效,可以占用任意多個總線周期; (H) 從端口提供了有效的readdata; (I) 從端口置waitrequest 無效; (J) Avalon 總線在下一個clk 上升沿捕獲readdata,讀傳輸到此結束。另一次總線傳輸可以開始于下一個總線周期。若一個從端口采用了外設控制等待周期的讀傳輸模式,對該端口的其它傳輸模式會有一些限制,比如不能再使用建立時間和保持時間。這些限制只影響從端口,不影響連接到Avalon 總線模塊上的其它外設。在大多數情況

40、下,產生waitrequest 信號的外設是片上同步外設,不需要考慮建立時間和等待時間。 .4 具有建立時間的從端口讀傳輸 Avalon 總線模塊按照用戶設計或者外設默認,能夠自動滿足各個從端口信號的建立時間要求,發起讀傳輸的主外設不必考慮各個信號對建立時間與保持時間的要求。具有建立時間的從端口讀傳輸使用的信號與基本讀傳輸使用的相同,不同點只是信號的時序。這種傳輸方式通常用于一些片外外設,它們要求在讀使能信號有效前address 和Chipselect 信號需要穩定一段時間。一個非零的建立時間N意味著address、byteenable_n和chipselect 信號提供給從端口之后,在rea

41、d_n有效之前有N個總線周期的延遲。要注意chipselect 不受建立時間的影響,若外設對于read_n 和chipselect 都要求有建立時間,用戶必須在接口中手工添加適當的邏輯(一個與門)。完成總線傳輸所需的總線周期的總數取決于建立時間和等待周期的總線周期。例如,若一個外設具有參數setup_Time=”2”和Read_Wait_States=”3”,它將花費6 個總線周期來完成傳輸:2個總線周期的建立時間,3個總線周期的等待周期,1 個總線周期用來捕獲數據。例4.5顯示了具有一個總線周期的建立時間和一個固定等待周期的從端口讀傳輸。 時序說明: (A) 第一個總線周期開始于clk 上升

42、沿; (B) Address 和byteenable_n 有效,read_n 信號仍保持無效; (C) Avalon 總線對address 譯碼,輸出有效的chipselect; (D) clk 上升沿標志著建立時間總線周期結束,并開始總線等待周期; (E) Avalon 總線模塊置read_n 有效; (F) clk上升沿標志著總線等待周期結束; (H) Avalon總線在下一個clk上升沿捕獲readdata,讀傳輸到此結束。另一次總線傳輸可以開始于下一個總線周期。 如果一個外設能夠同時支持讀和寫總線傳輸,并且指定了建立時間,那么讀傳輸和寫傳輸具有同樣的建立時間。 在Avalon 總線上的

43、從端口寫傳輸 .1 基本從端口寫傳輸 和從端口讀傳輸類似,基本從端口寫傳輸是所有Avalon 從端口寫傳輸的基礎。所有其它的從端口寫傳輸模式使用的信號都包含了基本從端口寫傳輸的信號,并擴展了基本從端口寫時序。基本從端口寫傳輸由Avalon 總線模塊發起,由Avalon總線模塊向從端口傳輸一個單元的數據。基本從端口寫傳輸沒有延遲。例4.6 顯示了基本從端口寫傳輸,沒有等待周期、建立時間和保持時間。Avalon 總線模塊提供address、writedata、byteenable_n 和write_n 信號,然后設置chipselect有效。從端口在下一個時鐘上升沿捕獲地址、數據和控制信號,寫傳輸

44、立即結束。整個傳輸過程僅花費一個總線周期。從外設可以在傳輸結束后再花費一些總線周期來實際處理寫入的數據。如果外設不能在每個總線周期都接受數據,則需要加入等待周期。 例4.6 基本從端口寫傳輸 時序說明: (A) 寫傳輸開始于clk 上升沿; (B) Writedata、address、byteenable_n、write_n 信號有效; (C) Avalon 總線模塊對address 譯碼,并向從端口設置有效的chipselect; (D) 從端口在下一個clk 上升沿捕獲writedata、 address、 byteenable_n、 write_n和chipselect,寫傳輸到此結束。

45、另一次讀或寫傳輸可以開始于下一個總線周期。基本寫傳輸只適合于同步外設,包括許多片上外設,例如PIO 和定時器等。基本寫傳輸的時序不適合于異步外設,因為包括write_n 和chipselect 在內的所有輸出信號同時失效,這會在片外存儲器等異步外設中造成競爭冒險現象。對于這樣的外設,用戶可以設定信號的保持時間,這將在后面的章節中討論。當writedata比一個字節寬時,字節使能信號byteenable_n可以寫入特定的字節段。Byteenable_n是一組信號線,其中每一次對應于writedata 的一個字節段。Byteenable_n通常用于片外的16 位或32 位字尋址的存儲器設備。當寫入

46、單個字節數據時,address 僅指定相應的字或半字地址,而byteenable_n 精確地指定要寫入哪個字節。表4.3 是使用byteenable_n 的一些例子,其中假定從端口是一個32 位的外部存儲器。 .2 具有固定等待周期的從端口寫傳輸 具有固定等待周期的從端口寫傳輸使用的信號與基本寫傳輸使用的相同,不同點只是信號的時序:Avalon 總線模塊在每次總線傳輸時都會插入固定數量的等待周期。具有等待周期的從端口寫傳輸通常用于不能在一個總線周期內從Avalon 總線模塊捕獲數據的外設。在這種情況下Avalon總線模塊在第一個總線周期中提供address、writedata、byteenab

47、le、write_n 和chipselect 信號。這和基本寫傳輸開始時一樣。在等待期間,這些信號保持穩定。在固定數量的等待周期后從端口捕獲來自Avalon 總線模塊的數據。此后傳輸結束,Avalon 總線模塊同時使所有信號失效。 例4.7 顯示了具有一個等待周期的從端口寫傳輸實例。 時序說明: (A) 寫傳輸開始于clk 上升沿; (B) Writedata、address、byteenable_n、write_n 信號有效; (C) Avalon 總線模塊對address 譯碼,并向從端口設置有效的chipselect; (D) 在第一個(也是唯一一個)總線等待周期在該clk 上升沿結束。

48、所有來自Avalon 總線模塊的信號保持不變; (E)從端口在該clk 上升沿或之前捕獲writedata、address、byteenable_n、write_n和chipselect,寫傳輸到此結束。另一次讀或寫傳輸可以開始于下一個總線周期。 .2 具有外設控制等待周期的從端口寫傳輸 外設控制等待周期使用目標外設能夠根據需要將Avalon 總線模塊暫停任意多個總線周期。某些外設讀取數據時所需的總線周期是不固定的。因為每次傳輸都可能遇到不同的條件。這種傳輸模式對于這些外設非常適用。外設控制等待周期的傳輸模式使用了waitrequest 信號,它是一個從端口的輸出信號。Avalon總線模塊在第

49、一個總線周期中提供address、writedata、byteenable_n、write_n、和chipselect信號,這和基本寫傳輸開始時一樣。從端口若需要額外的時間來捕獲數據,它必須在下一個時鐘上升沿之前設置waitrequest 有效。當waitequest 有效后,Avalon 總線模塊便暫停工作,使得address、writedata、byteenable_n、write_n 和chipselect 信號保持穩定。在從端口設置waitrequest 無效后,總線傳輸在下一個時鐘上升沿結束。Avalon 總線模塊沒有超時機制來限制從端口強制總線暫停的時間。當Avalon 總線模塊被

50、暫停后,系統模塊內的某個主外設也被暫停,并等待著從端口讀取寫入的數據。這樣就使得一個從外設能夠將主外設永久地“掛起”。因此,外設必須保證不會使waitrequest 無限期地保持有效。例4.8 顯示了一個具有外設控制等待周期的從端口寫傳輸的實例。 時序說明: (A) 寫傳輸開始于clk 上升沿; (B) Address、writedata、byteenable_n、和write_n 信號有效; (C) Avalon 總線模塊對address 譯碼,然后置chipselect 有效; (D) 從端口在下一個clk 上升沿之前置waitrequest 有效; (E) Avalon 總線模塊在該cl

51、k 上升沿讀取waitrequest。如果waitrequest 有效,這個總線周期就成為一個等待周期,address、writedata、byteenable_n 和write_n 信號保持不變; (F-G)waitrequest 一直保持有效,這可以占用任意多個總線周期; (H) 從端口最終捕獲了writedata; (I) 從端口置waitrequest 無效; (J) 寫傳輸在下一個clk 上升沿結束。另一次總線傳輸可以開始于下一個總線周期。若一個從端口采用了外設控制等待周期的寫傳輸模式,對該端口的其它傳輸模式會有一些限制,比如不能再使用建立時間和保持時間。這些限制只影響該從端口,不影

52、響連接到Avalon 總線模塊上的其它外設。在大多數情況下,產生waitrequest 信號的外設是片上的同步外設,不需要考慮建立時間和等待時間。 .4 具有建立時間和保持時間的從端口寫傳輸 Avalon 總線模塊按照用戶設定或者外設默認,能夠自動滿足各個從端口信號的建立時間要求,發起讀傳輸的主外設不必考慮各個信號對建立時間與保持時間的要求。具有建立時間的從端口寫傳輸使用的信號與基本使用的相同,不同點只是信號的時序。這種傳輸方式通常用于一些片外外設,它們要求在write_n 脈沖的前后address、byteenable_n、wretedata 和chipselect 信號需要穩定一段時間。一

53、個非零的建立時間M 意味著在address、byteenable_n、wretedata 和chipselect 信號提供給從端口之后,在write_n有效之前有M 個總線周期的延遲。同樣地,一個非零的保持的保持時間N 意味著在write_n失效后,address、byteenable_n、wretedata 和chipselect 保持N 個總線周期的穩定。要注意chipselect 不受建立時間與保持時間的影響,若外設對于write_n 和chipselect 都要求有建立時間和保持時間,用戶必須手工向從端口接口添加適當的邏輯(一個與門)。完成總線傳輸所需要的總線周期的總數取決于建立時間、

54、等待周期和保持時間的總線周期數。例如, 若一個外設具有參數Setup_Time=”2” 、Read_Wait_States=”3” 和Hold_Time=”2”,它將花費8 個總線周期來完成傳輸:2 個總線周期的建立時間,3 個總線周期的等待周期,2 個總線周期的保持時間,1 個總線周期用來捕獲數據。 從端口不必同時使用建立時間與保持時間,只有建立時間或只有保持時間的傳輸也是可以的。例4.9 顯示了同時具有建立時間和保持時間的從端口寫傳輸。 時序說明: (A) 第一個總線周期開始于clk 上升沿; (B) Address、byteenable_n、和writedata 信號有效,write_n

55、 仍保持無效; (C) Avalon 總線模塊對address 譯碼,然后置chipselect 有效; (D) 該clk 上升沿標志著建立時間總線周期結束; (E) Avalon 總線模塊置write_n 有效; (F) Avalon 總線模塊下一個clk 上升置write_n 無效;保持時間總線周期開始, Address、byteenable_n、writedata 和chipselect 信號失效,寫傳輸到此結束。如果一個外設能夠同時支持讀和與傳輸,并且指定了建立時間,那么讀傳輸和寫傳輸具有同樣的建立時間。 1.5 Avalon 主端口傳輸(略) 1.6 高級Avalon 總線傳輸之流傳

56、輸模式 流傳輸模式在流模式主外設和流模式從外設之間建立一個開放的專為信道以提供連續的數據傳輸。這個信道使得只要存在有效數據便能在主從端口對之間流動,主外設不必為了確定從端口是否能夠發送或接收數據而不斷地訪問從外設的狀態寄存器。流傳輸模式使得主從端口兩者之間的數據吞吐量達到最大,同時避免了外設的數據上溢或下溢。它對于DMA傳輸特別重要。例如一個DMA 控制器可能只包含簡單的流控制信號和一個計數器,它用來在一個從外設和一個存儲器之間連續地傳輸數據。 流模式從端口傳輸 除了在基本從端口中使用的信號之外,流模式外設的接口中又引入了三個信號:readfordata、dataavailable 和endo

57、fpacket。流模式從端口就是指使用了一個或多個上上述信號的從端口。從端口通過設置readyfordata有效來表示它已準備好接受來自Avalon總線模塊的寫傳輸。從端口通過設置dataavailable有效來表示它已能夠為來自Avalon 總線模塊的讀傳輸提供數據。當這些信號無效時,會迫使Avalon 總線模塊(以及發起傳輸的流模式主端口)等待,直到從端口準備好繼續為止。Avalon總線模塊只在readyfordata 或dataavailable 有效時才會發起傳輸的行為(僅適用于在流模式主從端口對之間傳輸的情況)。非流模式的主端口可能隨時向從端口發起傳輸,不管從端口是否為流模式端口。例

58、如,Avalon 總線模塊可以向一個流模式從端口發起一個來自于非流模式主端口(CPU)的從傳輸,即使此時另一個來自流模式主端口(DMA 控制器)的傳輸正因為dataavailable無效而在等待。在任何傳輸期間,流模式從端口可以設置endofpacket 信號有效。此信號通過Avalon總線模塊傳遞到主外設以便它能響應。對于endofpacket 信號的解釋取決于用戶設計。Endofpacket 信號不保證Avalon 總線模塊會停止到從端口的傳輸流。例如,endofpacket可以用作包描述器,使得主外設能在一個長的數據流中知道包的開始與結束位置。此外,endofpacket 也可設計為用來中斷傳輸流,迫使主端口稍后繼續進行讀或寫傳輸。流模式從端口讀

溫馨提示

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

評論

0/150

提交評論