Avalon 總線是一種將片上處理器和外設連接成片上可編程系統(tǒng)(SOPC)的一種簡單總線結(jié)構(gòu)。Avalon總線是一種接口方式,它規(guī)定了主從設備之間的接口方式及其通信時序。
Avalon 總線的設計目的在于:
■ 簡便:提供了簡單易學的協(xié)議;
■ 優(yōu)化總線邏輯的資源利用:節(jié)約了可編程器件(PLD)內(nèi)部的邏輯單元(LE);
■ 同步操作:將PLD 上的其他用戶邏輯很好的集成在一起,從而避免了復雜的時序分析;
功 能 簡 介
Avalon 也包括很多的功能和約定來支持SOPC Builder 軟件自動產(chǎn)生的系統(tǒng)﹑總線和外設:
高于4G 的地址空間-存儲器和外設可以被映射為32 位地址空間中的任何地址。同步接口-所有的Avalon信號都被Avalon 總線時鐘同步。這樣簡化了Avalon 總線的相關(guān)時序行為并便于高速外設的集成。分離的地址,數(shù)據(jù)和控制線路-分離的,專用的地址和數(shù)據(jù)路徑更便于與用戶邏輯相連接。外設不需要對數(shù)據(jù)和地址周期進行譯碼。內(nèi)置地址譯碼器-Avalon 總線自動的為所有外設產(chǎn)生片選(Chip Select)信號,大大的簡化了Avalon 外設的設計。
多主設備總線結(jié)構(gòu)-在Avalon 總線上可以存在多個主外設。Avalon 總線自動產(chǎn)生仲裁邏輯。基于向?qū)降呐渲茫奖闶褂玫膱D形化向?qū)б龑в脩敉瓿蓪valon 總線的配置(增加外設,確定主/從關(guān)系,定義存儲器映射)。
Avalon 總線結(jié)構(gòu)的自動產(chǎn)生是由用戶在向?qū)Ы缑娴妮斎雭頉Q定的。動態(tài)總線容量-Avalon 總線自動處理數(shù)據(jù)位寬不匹配的外設間傳送數(shù)據(jù)的細節(jié),便于在多種不同寬度的設備間接口。
系統(tǒng)模塊
考慮在可編程芯片上實現(xiàn)用戶自定義系統(tǒng)的結(jié)構(gòu),其中一部分是由SOPC Builder 自動產(chǎn)生的。在Altera PLD 上實現(xiàn)的完整系統(tǒng)如圖1 所示。出于本文的目的,系統(tǒng)模塊的一些部分是由SOPC Builder 自動產(chǎn)生的。系統(tǒng)模塊應該包括最少一個Avalon 主外設和一個Avalon 從外設,例如UART,定時器或者PIO。系統(tǒng)模塊的外部邏輯可以包含用戶Avalon 外設及其他的和系統(tǒng)模塊不相關(guān)的用戶邏輯。系統(tǒng)模塊必須與設計者的PLD 設計連接起來 。系統(tǒng)模塊的端口依賴于其所包括的外設及在SOPCBuilder 中進行的設置,并隨其變化。這些端口包括直接到Avalon 總線的接口及在系統(tǒng)模塊中的用戶自定義的和外設相連的接口。
Avalon 總線模塊
圖1. Altera PLD 上集成用戶邏輯的系統(tǒng)模塊
Avalon 總線模塊是任何一個系統(tǒng)模塊的“脊梁”。它是SOPC 設計中外設通信的主要路徑。Avalon 總線模塊是所有的控制、數(shù)據(jù)、地址信號及控制邏輯的總和,是其將外設連接起來并構(gòu)成了系統(tǒng)模塊。Avalon總線模塊實現(xiàn)了可配置的總線結(jié)構(gòu),其可以為設計者外設之間的相互連接而改變。Avalon 總線模塊是由SOPC Builder 自動產(chǎn)生的,所以設計師并不用親自將總線和外設連接起來。Avalon總線模塊基本上不會作為分離的單元而單獨使用,因為系統(tǒng)設計者總是利用SOPC Builder 將處理器和其他Avalon 外設自動地集成于一個系統(tǒng)模塊之中。設計者對Avalon 總線的注意力通常限于與用戶Avalon外設相連接地具體的端口上。
Avalon 總線模塊(一條Avalon 總線)是一個主動的邏輯單元,它取代了PCB 板上的被動的,金屬總線。(見圖2)這就是說,Avalon 總線模塊的端口可以被看作是所有連接到被動總線的引腳連接。本手冊只是定義了包含于Avalon 總線模塊接口中的端口,邏輯行為和信號順序,而沒有提及物理總線的電氣或物理的性能。
圖2 .Avalon 總線模塊框圖-范例系統(tǒng)
Avalon 總線模塊為連接到總線的Avalon 外設提供了以下的服務:
■ 數(shù)據(jù)通道多路轉(zhuǎn)換——Avalon 總線模塊的多路復用器從被選擇的從外設向相關(guān)主外設傳輸數(shù)據(jù)。
■ 地址譯碼——地址譯碼邏輯為每一個外設提供片選信號。這樣,單獨的外設不需要對地址線譯碼以產(chǎn)生片選信號,從而簡化了外設的設計。
■ 產(chǎn)生等待狀態(tài)(Wait-State)——等待狀態(tài)的產(chǎn)生拓展了一個或多個周期的總線傳輸,這有利于滿足某些特殊的同步外設的需要。當從外設無法在一個時鐘周期內(nèi)應答的時候,產(chǎn)生的等待狀態(tài)可以使主外設進入等待狀態(tài)。在讀使能及寫使能信號需要一定的建立時間/保持時間要求的時候也可以產(chǎn)生等待狀態(tài)。
■ 動態(tài)總線寬度——動態(tài)總線寬度隱藏了窄帶寬外設與較寬的Avalon 總線(或者Avalon 總線與更高帶寬的外設)相接口的細節(jié)問題。舉例來說,一個32 位的主設備從一個16 位的存儲器中讀數(shù)據(jù)的時候,動態(tài)總線寬度可以自動的對16 位的存儲器進行兩次讀操作,從而傳輸32 位的數(shù)據(jù)。這便減少了主設備的邏輯及軟件的復雜程度,因為主設備不需要關(guān)心外設的物理特性。
■ 中斷優(yōu)先級(Interrupt-Priority)分配——當一個或者多個從外設產(chǎn)生中斷的時候,Avalon 總線模塊根據(jù)相應的中斷請求號(IRQ)來判定中斷請求。
■ 延遲傳輸(Latent Transfer)能力——在主、從設備之間進行帶有延遲傳輸?shù)倪壿嫲贏valon總線模塊的內(nèi)部。
■ 流式讀寫(Streaming Read and Write)能力——在主、從設備之間進行流傳輸使能的邏輯包含于Avalon 總線模塊的內(nèi)部。
Avalon 外設
連接于Avalon 總線的Avalon 外設是邏輯器件——無論片上還是片外的——它們進行著某種系統(tǒng)級的任務,并通過Avalon 總線與其他的系統(tǒng)部件相通信。外設是模塊化的系統(tǒng)部件,依賴于系統(tǒng)的需要,可以在設計的時候增加或者移除。Avalon 外設可以是存儲器、處理器,也可以是傳統(tǒng)的外設器件,如UART,PIO,定時器或總線橋。任何的用戶邏輯都可以成為Avalon 外設,只要它滿足本文所述的提供與Avalon 總線接口的地址、數(shù)據(jù)及控制信號接口。連接于Avalon 總線的外設將被分配專用的端口。除了連接于Avalon 總線的地址、數(shù)據(jù)及控制端口之外用戶也可以自行定制端口。這些于用戶邏輯相連接的信號擴展了系統(tǒng)模塊的應用。Avalon 外設要么是主外設,要么是從外設。主外設可以于Avalon 上開啟總線傳輸,其至少有一個連接于Avalon 總線模塊的主端口。主外設也可以有一個從端口其允許此設備接受其他連接于Avalon 總線的主設備開啟的總線傳輸。而從設備只能響應Avalon 總線傳輸,而不能夠開啟總線傳輸。像存儲器,UART 這樣的從設備,通常只有與Avalon總線模塊相連接的一個從端口。在SOPC 環(huán)境中,,區(qū)分以下Avalon 總線主設備/從設備的外設類型是十分重要的。
系統(tǒng)模塊內(nèi)部外設
如果SOPC Builder 在外設庫中找到了一個外設,或者設計者指定了一個用戶外設的設計文件,SOPC Builder 將自動的將此外設與Avalon 總線模塊相連接。這種外設是指系統(tǒng)模塊之內(nèi)的外設,也就是被認為是系統(tǒng)模塊的一個部分。與Avalon 總線相連接的地址、數(shù)據(jù)及控制端口是向用戶隱藏的。外設中任何附加的非Avalon 端口將作為系統(tǒng)模塊的端口顯示于外。這些端口可能與物理管腳直接相連或者可能與片上的其他模塊相連。
系統(tǒng)模塊外部外設
Avalon 總線外設也可以存在于系統(tǒng)模塊之外。設計者選擇將模塊置于系統(tǒng)模塊之外可
能有以下幾個原因:
■ 外設在物理上位于PLD 器件之外
■ 外設需要某些粘連邏輯(glue logic)使其與Avalon 總線信號連接
■ 在系統(tǒng)模塊產(chǎn)生的時候,外設的設計還沒有完成
在這些情況下,相應的Avalon 總線模塊信號作為系統(tǒng)模塊的端口現(xiàn)于外部(及指定的外設)。
主端口(Master Port)
主端口是主外設上用于開啟Avalon 總線傳輸?shù)囊幌盗卸丝诘募稀V鞫丝谟贏valon 總線模塊直接相連。實際上,一個主外設可能有一個或多個主端口及一個從端口。這些主端口及從端口的相互依賴關(guān)系是由對外設進行設計時決定的。但是,這些主、從端口上的單獨的總線傳輸應該總是遵循本文所述。
本文中所提及的所有主設備傳輸都是指單獨的主端口的Avalon 總線傳輸。
從端口(Slave Port)
從端口是指在位于某一外設上的,從另一外設主端口接受Avalon 總線傳輸?shù)囊幌盗卸丝诘募稀亩丝谝仓苯优cAvalon 總線模塊相連接。主外設也可以有一個從端口,通過這個從端口可以使其接受Avalon 總線上其他主設備的傳輸。本文所提及的所有從設備傳輸都是指單獨的從端口的Avalon 總線傳輸。
主-從端口對(Master-Slave Pair)
“主-從端口對”是指通過Avalon 總線模塊相連接的一個主端口和一個從端口構(gòu)成的組合。從結(jié)構(gòu)上講,這些主、從端口與Avalon 總線模塊上的相應端口相連接。主端口的控制及數(shù)據(jù)信號可以有效的通過Avalon 總線模塊與從端口相互作用。主、從端口之間的連接(這就構(gòu)成了主-從端口對)是在SOPC Builder 中所確定的。
PTF 文件、SOPC Builder 參數(shù)及開關(guān)
Avalon 總線及外設的配置可以利用基于向?qū)У腟OPC Builder 圖形用戶接口(GUI)來完成。通過這個GUI,用戶可以設定不同的參數(shù)和開關(guān),然后據(jù)此產(chǎn)生系統(tǒng)的PTF 文件。PTF 文件是一個文本化的文件,它定義了:
■ 定義Avalon 總線模塊結(jié)構(gòu)、功能的參數(shù)
■ 定義每個外設定義結(jié)構(gòu)、功能的參數(shù)
■ 每個外設的主、從角色
■ 外設端口(如讀使能、寫使能、寫數(shù)據(jù)等)
■ 通往多主端口的從端口的仲裁機制
然后,PTF 文件通過HDL 產(chǎn)生器創(chuàng)建了系統(tǒng)模塊的寄存器傳輸級(RTL)描述。
評論