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

下載本文檔

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

文檔簡介

1、 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 時鐘。所以,沒有復雜的,異步的握手/應答模式。Avalo

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

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

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

7、序參照于總線周期時鐘。總線傳輸   Avalon 總線的一次傳輸是對數據的一次讀/寫操作,它可能持續一個或多個總線周期。Avalon 總線所支持的傳輸位寬為:一個字節(8 位),半個字(16 位)或一個字(32 位)。流傳輸流傳輸為“流主設備”和“流從設備”之間的連續性數據傳輸建立一個開放式的管道。具有延遲的讀傳輸:某些同步外設在開始第一次傳輸的時候需要延遲一些時鐘周期,但在之后的傳輸中便可以在每一個時鐘周期都返回數據。具有延遲的讀傳輸增加了對這種同步設備的總線利用率。 帶有延遲的讀傳輸有些同步設備在剛剛開始傳輸的時候,需要延遲幾個時鐘周期才能夠完成其第一次讀數據

8、的過程,而在之后的傳輸過程中就可以每一個周期返回一個數據。帶有延遲的讀傳輸可以增加這些同步設備的帶寬利用率。延遲性傳輸允許一個主設備發出讀請求后,轉而執行另一個無關任務,過一段時間再接收數據。盡管之前的數據還沒有接受到,這個無關的任務也可以發出另一次讀請求。這有利于進行連續標準地址的存取的指令存取操作和DMA 傳輸。這樣,CPU 和DMA 主設備可以預讀取其需要的數據,所以這使得同步存儲器保持活躍狀態,并減少了平均存儲延時。 SOPC Builder 軟件及Avalon 總線的產生SOPC Builder 是Altera 開發的一款系統生成和集成工具。SOPC Builder 所產生

9、的片上電路系統模塊包括Avalon 總線、主外設和從外設。SOPC Builder 提供了圖形化的用戶接口,應用這種接口可以實現向系統模塊中添加主、從外設,配置外設及配置Avalon 總線將外設連接起來。這樣,SOPC Builder 自動的創建并連接HDL 模塊,便可以實現用戶PLD 設計的每一個部分。 系統模塊 考慮在可編程芯片上實現用戶自定義系統的結構,其中一部分是由SOPC Builder 自動產生的。在Altera PLD 上實現的完整系統如圖1 所示。出于本文的目的,系統模塊的一些部分是由SOPC Builder 自動產生的。系統模塊應該包括最少一個Avalon

10、 主外設和一個Avalon 從外設,例如UART,定時器或者PIO。系統模塊的外部邏輯可以包含用戶Avalon 外設及其他的和系統模塊不相關的用戶邏輯。系統模塊必須與設計者的PLD 設計連接起來 。系統模塊的端口依賴于其所包括的外設及在SOPCBuilder 中進行的設置,并隨其變化。這些端口包括直接到Avalon 總線的接口及在系統模塊中的用戶自定義的和外設相連的接口。Avalon 總線模塊 圖1. Altera PLD 上集成用戶邏輯的系統模塊 Avalon 總線模塊是任何一個系統模塊的“脊梁”。它是SOPC 設計中外設通信的主要路徑。Avalon 總線模塊是所有的控制

11、、數據、地址信號及控制邏輯的總和,是其將外設連接起來并構成了系統模塊。Avalon總線模塊實現了可配置的總線結構,其可以為設計者外設之間的相互連接而改變。Avalon 總線模塊是由SOPC Builder 自動產生的,所以設計師并不用親自將總線和外設連接起來。Avalon總線模塊基本上不會作為分離的單元而單獨使用,因為系統設計者總是利用SOPC Builder 將處理器和其他Avalon 外設自動地集成于一個系統模塊之中。設計者對Avalon 總線的注意力通常限于與用戶Avalon外設相連接地具體的端口上。Avalon 總線模塊(一條Avalon 總線)是一個主動的邏輯單元,它取代了PCB 板

12、上的被動的,金屬總線。(見圖2)這就是說,Avalon 總線模塊的端口可以被看作是所有連接到被動總線的引腳連接。本手冊只是定義了包含于Avalon 總線模塊接口中的端口,邏輯行為和信號順序,而沒有提及物理總線的電氣或物理的性能。 圖2 .Avalon 總線模塊框圖范例系統   Avalon 總線模塊為連接到總線的Avalon 外設提供了以下的服務:  數據通道多路轉換Avalon 總線模塊的多路復用器從被選擇的從外設向相關主外設傳輸數據。 地址譯碼地址譯碼邏輯為每一個外設提供片選信號。這樣,單獨的外設不需要對地址線譯碼以產生片選信號,從而簡化了

13、外設的設計。 產生等待狀態(Wait-State)等待狀態的產生拓展了一個或多個周期的總線傳輸,這有利于滿足某些特殊的同步外設的需要。當從外設無法在一個時鐘周期內應答的時候,產生的等待狀態可以使主外設進入等待狀態。在讀使能及寫使能信號需要一定的建立時間/保持時間要求的時候也可以產生等待狀態。圖2 .Avalon 總線模塊框圖范例系統 動態總線寬度動態總線寬度隱藏了窄帶寬外設與較寬的Avalon 總線(或者Avalon 總線與更高帶寬的外設)相接口的細節問題。舉例來說,一個32 位的主設備從一個16 位的存儲器中讀數據的時候,動態總線寬度可以自動的對16 位的存儲器進行兩次讀操作,從而傳輸32

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

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

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

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

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

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

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

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

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

23、n總線傳輸的介紹將分為主傳輸類型和從傳輸類型兩個部分。大多數用戶只關心從傳輸,因為他們設計的用戶自定義外設一般都是從外設。邊時,用戶只需考慮Avalon總線模塊和用戶自定義外設之間的信號。只有當用戶創建主外設時才涉及到主傳輸。             Avalon總線時序Avalon總線是一個同步總線接口,由一個Avalon總線主時鐘定時,所有總線傳輸的信號都與Avalon總線時鐘同步。同步總線接口并不意味著所有的Avalon總線信號都是鎖存的。比如,Avalon的chips

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

25、時鐘上升沿之間信號是如何變化的。信號的變化由Avalon總線時鐘觸發,信號只要在捕獲時鐘上升沿之前達到穩定就可以了,因此,總線規范中的Avalon總線時序圖中不會描繪精確的時間信息。類似地,Avalon總線沒有規定固有的最高性能。系統模塊在特定的器件上綜合布線之后,用戶必須對系統模塊進行標準的時序分析,以確定Avalon總線傳輸達到的最高速度。            Avalon總線信號由于Avalon總線是一個由HDL文件綜合而來,所以在連接Avalon總線模塊和Avalon外設時需

26、要一些特別的考慮。對于傳統的片外總線結構,所有外設都共享一組固定的.預先設計的金屬線路,而Avalon總線與此不同:SOPCBuilder必須準確地了解每個外設提供了哪些Avalon端口,以便連接外設與Avalon總線模塊。它還需要了解每個端口的名稱和類型,這些信息定義在系統PTF文件中。Avalon總線規范不要求Avalon外設必須包含哪些信號。它只定義了外設可以包含的各種信號類型(例如地址.數據.時鐘等)。外設的每一個信號都要指定一個有效的Avalon信號類型,以確定該信號的作用,一個信號也可以是用戶自定義的。在這種情況下,SOPC Builder不將該端口與Avalon總線模塊連接。Av

27、alon信號類型首先分為主端口信號和從端口信號兩類。因而,外設使用的信號類型生產生產首先由端口的主從角色決定。每個狡立的主端口或從端口使用的信號類型由外設的設計決定。例如,設計一個只有輸出的PIO從外設只需要定義用于寫的信號,而不需要定義用于讀的信號。盡管中斷請求輸出是從端口允許的信號類型,但也不是必須使用。Avalon總線規范不規定Avalon外設信號的命名規則。不同信號類型的作用是預先定義的,而信號的名稱則是由外設決定。信號可以按照它的信號類型來命名,也可以遵照系統級的命名規范采用不同的名稱。下面章節中討論的Avalon總線傳輸時會涉及到一些Avalon信號,例如readdata信號和ir

28、q信號。在這里信號類型的名稱作為信號名稱,但外設信號的實際名稱可以與此不同。作為一個例子,表1.1列舉了部分Avalon從端口可用的信號類型。信號的方向是從外設的角度定義的。例如時鐘信號clk(方向為in)對于從外設來說是輸入信號,而對于Avalon總線模塊來說是輸入信號。表1.1.部分Avalon從端口信號信號類型寬度方向必需Description Clk   1 in no系統模塊和Avalon總線模塊的全局時鐘信號。所有總線傳輸傳輸都同步于clk。只有異步從端口才能省略clk.address1 - 32inno來自Avalon總

29、線模塊的地址線 Reset   1 in no從端口的讀請求信號。當從端口不輸出數據時不需要該信號。若使用了該信號,readdata信號也必須使用 readdata 1 32 out no讀傳輸中輸出到Avalon總線的數據線。當從端口不輸出數據時不需要該信號。若使用了該信號,read信號也必須使用  write 1 in no從端口的寫請求信號。當從端口不接收數據時不需要該信號。若使用了該信號,writedata信號也必須使用 wri

30、tedata 1 32 in no寫傳輸中來自Avalon總線的數據線。當從端口不接收數據時不需要該信號。若使用了該信號,write信號也必須使用irq1outno中斷請求。當從外設需要外設服務時可觸發irq 表1.1中例舉的信號類型都是高電平有效。Avalon總線還提供了各個信號類型的反向形式。在PTF聲明中,在信號類型名稱加”_n”,便可將對應的端口聲明為低電平有效。這對許多使用低電平有效的片外外設非常有用。 并發多主端口的Avalon總線需要考慮的事項Avalon總線允許多個端口連接到Avalon總線模塊。而且實現Avalon總線的并發多主端口功能

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

32、都可以使用。 1.4Avalon從端口傳輸 從傳輸的Avalon總線信號表2列舉了外設的從端口與Avalon總線間接口的信號類型。信號的方向是以外設的角度定義的。外設提供的信號由外設的設計和PTF文件中的信號定義決定,不需要提供全部的信號類型。 表2 Avalon從端口信號 Signal TypeWidthDirectionRequiredDescriptionclk1inno系統模塊和Avalon總線模塊的全局時鐘信號。所有總線傳輸都同步于clk。只有異步從端口才能省略clkreset1inno全局復位信號。如何使用取決于外設chipselect1inyes從端

33、口的片選信號。當chipselect信號無效時,從端口必須忽略所有的Avalon信號輸入address1 - 32inno來自Avalon總線模塊的地址線begintransfer1inno在每個新的Avalon總線傳輸的第一個總線周期期間有效。如何使用該信號取決于外設byteenable0, 2, 4inno字節使能信號,在訪問寬度超過8位的存儲器時選擇特定的字節段,如何使用該信號取決于外設read1inno從端口讀請求信號。當從端口不輸出數據時不需要該信號。若使用了該信號,readdata信號也必須使用readdata1 32outno讀傳輸中輸出到Avalon總線的數據線。當從端口不輸出

34、數據時不需要該信號。若使用了該信號,read信號也必須使用 write1inno從端口的寫請求信號。當從端口不接收數據時不需要該信號。若使用了該信號,writedata信號也必須使用writedata1 32inno寫傳輸中來自Avalon總線的數據線。當從端口不接收數據時不需要該信號。若使用了該信號,write信號也必須使用readdatavalid1outno讀取數據有效信號,僅用于具有可變讀延遲的從端口。用于標記從端口發出有效數據時的時鐘上升沿waitrequest1outno等待請求信號,當從端口不能立即響應時暫停Avalon總線模塊readyfordata1outno流傳輸

35、模式信號。表示流模式從端口可以接收數據dataavailable1outno流傳輸模式信號。表示流模式從端口擁有有效數據endofpacket1outno流傳輸模式信號。用于向主端口報告” 包結束”狀態。如何使用取決于外設irq1outno中斷請求。當從外設需要外設服務時可觸發irqresetrequest1outno復位請求信號,該信號使得一個外設可以復位整個系統模塊 上述信號如果不加說明都是高電平有效,此外,Avalon總線也提供上述信號的低電平有效版本,在信號名稱后加”_n”表示低電平有效,如:read信號為高電平有效,而read_n為低電平有效。 Avalon總線上

36、的從端口讀傳輸 .1基本從端口傳輸模式基本從端口傳輸模式是所有Avalon從端口傳輸的基礎。所有其它的從端口傳輸使用的信號都包含了基本從端口傳輸的信號,并擴展了基本從端口操作時序。基本從端口傳輸由Avalon總線模塊發起,然后從端口向Avalon總線模塊傳輸一個單元的數據。基本從端口讀傳輸沒有延遲。例4.1顯示了一個基本從端口讀傳輸的例子。在Avalon基本讀傳輸中,總線傳輸開始于一個時鐘上升沿,并在下一個時鐘上升沿結束,不插入等待周期。由于傳輸在一個時鐘周期內完成,目標外設必須能夠立即.異步向Avalon總線模塊輸出相應地址的內容。在clk的第一個上升沿,Avalon總線向目標外設

37、傳遞address、byteenable_n和read_n信號。Avalon總線模塊內部對address進行譯碼,產生片選并驅動從端口的chipselect信號。一旦chipselect信號有效,從端口在數據有效時應立即驅動readdata輸出。最后,Avalon總線模塊在下一個時鐘上升沿捕獲readdata。 例4.1基本從端口讀傳輸      時序說明:(A)      第一個總線周期開始于clk上升沿;(B)     

38、Address和read_n信號有效;(C)     Avalon總線對address譯碼,輸出有效的chipselect;(D)     片選有效后,從端口在第一個總線周期內必須返回有效數據;(E)      Avalon總線在下一個clk上升沿捕獲readdata,讀傳輸到此結束。另一個總線傳輸可以在下一個總線周期開始。無等待周期的基本讀傳輸只適用于完全異步的外設。目標外設必須在外設被選中或地址變化時立即向Avalon總線提供數據。為使傳輸正常工作,readda

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

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

41、時序。Avalon總線模塊在第一個總線周期提供address、byteenable、read_n和chipselect信號。由于具有等待周期,外設不必在第一個總線內提供readdata。第一個總線周期是第一個(也是唯一一個)等待周期。從端口可以隨時捕獲地址和控制信號,片上的同步外設通常在第二個總線周期開始(等待周期結束)時的clk上升沿捕獲地址和控制信號。在第二個總線周期間,目標外設向Avalon總線模塊提供readdata。在第三個也是最后一個時鐘上升沿,Avalon總線模塊由從端口捕獲readdata。在第三個也是最后一個時鐘上升沿,Avalon總線模塊由從端口模塊readdata并結束總

42、線傳輸。時序說明:(A)第一個總線周期開始于clk上升沿;(B)Address和read_n信號有效;(C)Avalon總線對address譯碼,輸出有效的chipselect;(D)clk上升沿標志著第一個且是唯一的一個等待周期結束。如果從端口是同步的,它可以在clk上升沿捕獲address、read_n、和chipselect;(E) 從端口在第二個總線周期內返回有效數據;(F)Avalon總線在下一個clk上升沿捕獲readdata,讀傳輸到此結束。另一個總線傳輸可以在下一個總線周期開始。 例4.2具有一個固定等待周期的從端口讀傳輸 具有單個等待周期的讀傳輸經常用于同

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

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

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

46、aitrequest一直保持有效,可以占用任意多個總線周期;(H)從端口提供了有效的readdata;(I) 從端口置waitrequest無效;(J) Avalon總線在下一個clk上升沿捕獲readdata,讀傳輸到此結束。另一次總線傳輸可以開始于下一個總線周期。 若一個從端口采用了外設控制等待周期的讀傳輸模式,對該端口的其它傳輸模式會有一些限制,比如不能再使用建立時間和保持時間。這些限制只影響從端口,不影響連接到Avalon總線模塊上的其它外設。在大多數情況下,產生waitrequest信號的外設是片上同步外設,不需要考慮建立時間和等待時間。 .4具有建立時間的從端口讀傳輸Av

47、alon總線模塊按照用戶設計或者外設默認,能夠自動滿足各個從端口信號的建立時間要求,發起讀傳輸的主外設不必考慮各個信號對建立時間與保持時間的要求。具有建立時間的從端口讀傳輸使用的信號與基本讀傳輸使用的相同,不同點只是信號的時序。這種傳輸方式通常用于一些片外外設,它們要求在讀使能信號有效前address和 Chipselect信號需要穩定一段時間。一個非零的建立時間N意味著address、byteenable_n和chipselect信號提供給從端口之后,在read_n有效之前有N個總線周期的延遲。要注意chipselect不受建立時間的影響,若外設對于read_n和chipselect都要求有

48、建立時間,用戶必須在接口中手工添加適當的邏輯(一個與門)。完成總線傳輸所需的總線周期的總數取決于建立時間和等待周期的總線周期。例如,若一個外設具有參數setup_Time=”2”和Read_Wait_States=”3”,安將花費6個總線周期來完成傳輸:2個總線周期的建立時間,3個總線周期的等待周期,1個總線周期用來捕獲數據。例4.5顯示了具有一個總線周期的建立時間和一個固定等待周期的從端口讀傳輸。時序說明:(A)第一個總線周期開始于clk上升沿;(B)Address和byteenable_n有效,read_n信號仍保持無效;(C)Avalon總線對address譯碼,輸出有效的chipsel

49、ect;(D)clk上升沿標志著建立時間總線周期結束,并開始總線等待周期;(E) Avalon總線模塊置read_n有效;(F)clk上升沿標志著總線等待周期結束;(H) Avalon總線在下一個clk上升沿捕獲readdata,讀傳輸到此結束。另一次總線傳輸可以開始于下一個總線周期。如果一個外設能夠同時支持讀和寫總線傳輸,并且指定了建立時間,那么讀傳輸和寫傳輸具有同樣的建立時間。例4.5具有建立時間的從端口讀傳輸               在Avalo

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

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

52、    Avalon總線模塊對address譯碼,并向從端口設置有效的chipselect;(D)       從端口在下一個clk上升沿捕獲writedata、address、byteenable_n、write_n和chipselect,寫傳輸到此結束。另一次讀或寫傳輸可以開始于下一個總線周期。基本寫傳輸只適合于同步外設,包括許多片上外設,例如PIO和定時器等。基本寫傳輸的時序不適合于異步外設,因為包括write_n和chipselect在內的所有輸出信號同時失效,這會在片外存儲器等異步外設中造成競爭

53、冒險現象。對于這樣的外設,用戶可以設定信號的保持時間,這將在后面的章節中討論。當writedata比一個字節寬時,字節使能信號byteenable_n可以寫入特定的字節段。Byteenable_n是一組信號線,其中每一次對應于writedata的一個字節段。Byteenable_n通常用于片外的16位或32位字尋址的存儲器設備。當寫入單個字節數據時,address僅指定相應的字或半字地址,而byteenable_n精確地指定要寫入哪個字節。表4.3是使用byteenable_n的一些例子,其中假定從端口是一個32位的外部存儲器。 表4.332位從端口字節使能的使用byteenable

54、_n3:0寫行為0000Write full 32-bits1100Write lower 2 bytes0011Write upper 2 bytes1110Write byte 0 only1011Write byte 2 only .2具有固定等待周期的從端口寫傳輸具有固定等待周期的從端口寫傳輸使用的信號與基本寫傳輸使用的相同,不同點只是信號的時序:Avalon總線模塊在每次總線傳輸時都會插入固定數量的等待周期。具有等待周期的從端口寫傳輸通常用于不能在一個總線周期內從Avalon總線模塊捕獲數據的外設。在邊種情況下Avalon總線模塊在第一個總線周期中提供address、wri

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

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

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

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

59、;(C)       Avalon總線模塊對address譯碼,然后置chipselect有效;(D)       從端口在下一個clk上升沿之前置waitrequest有效;(E)       Avalon總線模塊在該clk上升沿讀取waitrequest。如果waitrequest有效,這個總線周期就成為一個等待周期,address、writedata、byteenable_n和write_n信號保持不變;(F-

60、G)waitrequest一直保持有效,這可以占用任意多個總線周期;(H)從端口最終捕獲了writedata;(I) 從端口置waitrequest無效;(J)寫傳輸在下一個clk上升沿結束。另一次總線傳輸可以開始于下一個總線周期。若一個從端口采用了外設控制等待周期的寫傳輸模式,對該端口的其它傳輸模式會有一些限制,比如不能再使用建立時間和保持時間。這些限制只影響該從端口,不影響連接到Avalon總線模塊上的其它外設。在大多數情況下,產生waitrequest信號的外設是片上的同步外設,不需要考慮建立時間和等待時間。例4.8具有外設控制等待周期的從端口寫傳輸.4具有建立時間和保持時間的從端口寫傳輸Avalon總線模塊按照用戶設定或者外設默認,能夠自動滿足各個從端口信號的建立時間要求,發起讀傳輸的主外設不必考慮各個信號對建立時間與保持時間的要求。具有建立時間的從端口寫傳輸使用的信號與基本使用的

溫馨提示

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

評論

0/150

提交評論