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