Avalon 總線是一種將片上處理器和外設(shè)連接成片上可編程系統(tǒng)(SOPC)的一種簡單總線結(jié)構(gòu)。Avalon總線是一種接口方式,它規(guī)定了主從設(shè)備之間的接口方式及其通信時序。
Avalon 總線的設(shè)計目的在于:
■ 簡便:提供了簡單易學(xué)的協(xié)議;
■ 優(yōu)化總線邏輯的資源利用:節(jié)約了可編程器件(PLD)內(nèi)部的邏輯單元(LE);
■ 同步操作:將PLD 上的其他用戶邏輯很好的集成在一起,從而避免了復(fù)雜的時序分析;
功 能 簡 介
Avalon 也包括很多的功能和約定來支持SOPC Builder 軟件自動產(chǎn)生的系統(tǒng)﹑總線和外設(shè):
高于4G 的地址空間-存儲器和外設(shè)可以被映射為32 位地址空間中的任何地址。同步接口-所有的Avalon信號都被Avalon 總線時鐘同步。這樣簡化了Avalon 總線的相關(guān)時序行為并便于高速外設(shè)的集成。分離的地址,數(shù)據(jù)和控制線路-分離的,專用的地址和數(shù)據(jù)路徑更便于與用戶邏輯相連接。外設(shè)不需要對數(shù)據(jù)和地址周期進(jìn)行譯碼。內(nèi)置地址譯碼器-Avalon 總線自動的為所有外設(shè)產(chǎn)生片選(Chip Select)信號,大大的簡化了Avalon 外設(shè)的設(shè)計。
多主設(shè)備總線結(jié)構(gòu)-在Avalon 總線上可以存在多個主外設(shè)。Avalon 總線自動產(chǎn)生仲裁邏輯?;谙?qū)降呐渲茫奖闶褂玫膱D形化向?qū)б龑?dǎo)用戶完成對Avalon 總線的配置(增加外設(shè),確定主/從關(guān)系,定義存儲器映射)。
Avalon 總線結(jié)構(gòu)的自動產(chǎn)生是由用戶在向?qū)Ы缑娴妮斎雭頉Q定的。動態(tài)總線容量-Avalon 總線自動處理數(shù)據(jù)位寬不匹配的外設(shè)間傳送數(shù)據(jù)的細(xì)節(jié),便于在多種不同寬度的設(shè)備間接口。
系統(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)模塊應(yīng)該包括最少一個Avalon 主外設(shè)和一個Avalon 從外設(shè),例如UART,定時器或者PIO。系統(tǒng)模塊的外部邏輯可以包含用戶Avalon 外設(shè)及其他的和系統(tǒng)模塊不相關(guān)的用戶邏輯。系統(tǒng)模塊必須與設(shè)計者的PLD 設(shè)計連接起來 。系統(tǒng)模塊的端口依賴于其所包括的外設(shè)及在SOPCBuilder 中進(jìn)行的設(shè)置,并隨其變化。這些端口包括直接到Avalon 總線的接口及在系統(tǒng)模塊中的用戶自定義的和外設(shè)相連的接口。
Avalon 總線模塊
圖1. Altera PLD 上集成用戶邏輯的系統(tǒng)模塊
Avalon 總線模塊是任何一個系統(tǒng)模塊的“脊梁”。它是SOPC 設(shè)計中外設(shè)通信的主要路徑。Avalon 總線模塊是所有的控制、數(shù)據(jù)、地址信號及控制邏輯的總和,是其將外設(shè)連接起來并構(gòu)成了系統(tǒng)模塊。Avalon總線模塊實現(xiàn)了可配置的總線結(jié)構(gòu),其可以為設(shè)計者外設(shè)之間的相互連接而改變。Avalon 總線模塊是由SOPC Builder 自動產(chǎn)生的,所以設(shè)計師并不用親自將總線和外設(shè)連接起來。Avalon總線模塊基本上不會作為分離的單元而單獨使用,因為系統(tǒng)設(shè)計者總是利用SOPC Builder 將處理器和其他Avalon 外設(shè)自動地集成于一個系統(tǒng)模塊之中。設(shè)計者對Avalon 總線的注意力通常限于與用戶Avalon外設(shè)相連接地具體的端口上。
Avalon 總線模塊(一條Avalon 總線)是一個主動的邏輯單元,它取代了PCB 板上的被動的,金屬總線。(見圖2)這就是說,Avalon 總線模塊的端口可以被看作是所有連接到被動總線的引腳連接。本手冊只是定義了包含于Avalon 總線模塊接口中的端口,邏輯行為和信號順序,而沒有提及物理總線的電氣或物理的性能。
圖2 .Avalon 總線模塊框圖-范例系統(tǒng)
Avalon 總線模塊為連接到總線的Avalon 外設(shè)提供了以下的服務(wù):
■ 數(shù)據(jù)通道多路轉(zhuǎn)換——Avalon 總線模塊的多路復(fù)用器從被選擇的從外設(shè)向相關(guān)主外設(shè)傳輸數(shù)據(jù)。
■ 地址譯碼——地址譯碼邏輯為每一個外設(shè)提供片選信號。這樣,單獨的外設(shè)不需要對地址線譯碼以產(chǎn)生片選信號,從而簡化了外設(shè)的設(shè)計。
■ 產(chǎn)生等待狀態(tài)(Wait-State)——等待狀態(tài)的產(chǎn)生拓展了一個或多個周期的總線傳輸,這有利于滿足某些特殊的同步外設(shè)的需要。當(dāng)從外設(shè)無法在一個時鐘周期內(nèi)應(yīng)答的時候,產(chǎn)生的等待狀態(tài)可以使主外設(shè)進(jìn)入等待狀態(tài)。在讀使能及寫使能信號需要一定的建立時間/保持時間要求的時候也可以產(chǎn)生等待狀態(tài)。
■ 動態(tài)總線寬度——動態(tài)總線寬度隱藏了窄帶寬外設(shè)與較寬的Avalon 總線(或者Avalon 總線與更高帶寬的外設(shè))相接口的細(xì)節(jié)問題。舉例來說,一個32 位的主設(shè)備從一個16 位的存儲器中讀數(shù)據(jù)的時候,動態(tài)總線寬度可以自動的對16 位的存儲器進(jìn)行兩次讀操作,從而傳輸32 位的數(shù)據(jù)。這便減少了主設(shè)備的邏輯及軟件的復(fù)雜程度,因為主設(shè)備不需要關(guān)心外設(shè)的物理特性。
■ 中斷優(yōu)先級(Interrupt-Priority)分配——當(dāng)一個或者多個從外設(shè)產(chǎn)生中斷的時候,Avalon 總線模塊根據(jù)相應(yīng)的中斷請求號(IRQ)來判定中斷請求。
■ 延遲傳輸(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)級的任務(wù),并通過Avalon 總線與其他的系統(tǒng)部件相通信。外設(shè)是模塊化的系統(tǒng)部件,依賴于系統(tǒng)的需要,可以在設(shè)計的時候增加或者移除。Avalon 外設(shè)可以是存儲器、處理器,也可以是傳統(tǒng)的外設(shè)器件,如UART,PIO,定時器或總線橋。任何的用戶邏輯都可以成為Avalon 外設(shè),只要它滿足本文所述的提供與Avalon 總線接口的地址、數(shù)據(jù)及控制信號接口。連接于Avalon 總線的外設(shè)將被分配專用的端口。除了連接于Avalon 總線的地址、數(shù)據(jù)及控制端口之外用戶也可以自行定制端口。這些于用戶邏輯相連接的信號擴展了系統(tǒng)模塊的應(yīng)用。Avalon 外設(shè)要么是主外設(shè),要么是從外設(shè)。主外設(shè)可以于Avalon 上開啟總線傳輸,其至少有一個連接于Avalon 總線模塊的主端口。主外設(shè)也可以有一個從端口其允許此設(shè)備接受其他連接于Avalon 總線的主設(shè)備開啟的總線傳輸。而從設(shè)備只能響應(yīng)Avalon 總線傳輸,而不能夠開啟總線傳輸。像存儲器,UART 這樣的從設(shè)備,通常只有與Avalon總線模塊相連接的一個從端口。在SOPC 環(huán)境中,,區(qū)分以下Avalon 總線主設(shè)備/從設(shè)備的外設(shè)類型是十分重要的。
系統(tǒng)模塊內(nèi)部外設(shè)
如果SOPC Builder 在外設(shè)庫中找到了一個外設(shè),或者設(shè)計者指定了一個用戶外設(shè)的設(shè)計文件,SOPC Builder 將自動的將此外設(shè)與Avalon 總線模塊相連接。這種外設(shè)是指系統(tǒng)模塊之內(nèi)的外設(shè),也就是被認(rèn)為是系統(tǒng)模塊的一個部分。與Avalon 總線相連接的地址、數(shù)據(jù)及控制端口是向用戶隱藏的。外設(shè)中任何附加的非Avalon 端口將作為系統(tǒng)模塊的端口顯示于外。這些端口可能與物理管腳直接相連或者可能與片上的其他模塊相連。
系統(tǒng)模塊外部外設(shè)
Avalon 總線外設(shè)也可以存在于系統(tǒng)模塊之外。設(shè)計者選擇將模塊置于系統(tǒng)模塊之外可
能有以下幾個原因:
■ 外設(shè)在物理上位于PLD 器件之外
■ 外設(shè)需要某些粘連邏輯(glue logic)使其與Avalon 總線信號連接
■ 在系統(tǒng)模塊產(chǎn)生的時候,外設(shè)的設(shè)計還沒有完成
在這些情況下,相應(yīng)的Avalon 總線模塊信號作為系統(tǒng)模塊的端口現(xiàn)于外部(及指定的外設(shè))。
主端口(Master Port)
主端口是主外設(shè)上用于開啟Avalon 總線傳輸?shù)囊幌盗卸丝诘募?。主端口于Avalon 總線模塊直接相連。實際上,一個主外設(shè)可能有一個或多個主端口及一個從端口。這些主端口及從端口的相互依賴關(guān)系是由對外設(shè)進(jìn)行設(shè)計時決定的。但是,這些主、從端口上的單獨的總線傳輸應(yīng)該總是遵循本文所述。
本文中所提及的所有主設(shè)備傳輸都是指單獨的主端口的Avalon 總線傳輸。
從端口(Slave Port)
從端口是指在位于某一外設(shè)上的,從另一外設(shè)主端口接受Avalon 總線傳輸?shù)囊幌盗卸丝诘募?。從端口也直接與Avalon 總線模塊相連接。主外設(shè)也可以有一個從端口,通過這個從端口可以使其接受Avalon 總線上其他主設(shè)備的傳輸。本文所提及的所有從設(shè)備傳輸都是指單獨的從端口的Avalon 總線傳輸。
主-從端口對(Master-Slave Pair)
“主-從端口對”是指通過Avalon 總線模塊相連接的一個主端口和一個從端口構(gòu)成的組合。從結(jié)構(gòu)上講,這些主、從端口與Avalon 總線模塊上的相應(yīng)端口相連接。主端口的控制及數(shù)據(jù)信號可以有效的通過Avalon 總線模塊與從端口相互作用。主、從端口之間的連接(這就構(gòu)成了主-從端口對)是在SOPC Builder 中所確定的。
PTF 文件、SOPC Builder 參數(shù)及開關(guān)
Avalon 總線及外設(shè)的配置可以利用基于向?qū)У腟OPC Builder 圖形用戶接口(GUI)來完成。通過這個GUI,用戶可以設(shè)定不同的參數(shù)和開關(guān),然后據(jù)此產(chǎn)生系統(tǒng)的PTF 文件。PTF 文件是一個文本化的文件,它定義了:
■ 定義Avalon 總線模塊結(jié)構(gòu)、功能的參數(shù)
■ 定義每個外設(shè)定義結(jié)構(gòu)、功能的參數(shù)
■ 每個外設(shè)的主、從角色
■ 外設(shè)端口(如讀使能、寫使能、寫數(shù)據(jù)等)
■ 通往多主端口的從端口的仲裁機制
然后,PTF 文件通過HDL 產(chǎn)生器創(chuàng)建了系統(tǒng)模塊的寄存器傳輸級(RTL)描述。
avalon總線理解整理如下:
1,一個基于Avalon接口的系統(tǒng)會包含很多功能模塊,這些功能模塊就是Avalon存儲器映射外設(shè),通常簡稱Avalon外設(shè)。所謂存儲器映射外設(shè)是指外設(shè)和存儲器使用相同的總線來尋址,并且CPU使用訪問存儲器的指令也用來訪問I/O設(shè)備。為了能夠使用I/O設(shè)備,CPU的地址空間必須為I/O設(shè)備保留地址。
2,Avalon外設(shè)分為主外設(shè)和從外設(shè),能夠在Avalon總線上發(fā)起總線傳輸?shù)耐庠O(shè)是主外設(shè),從外設(shè)只能響應(yīng)Avalon總線傳輸,而不能發(fā)起總線傳輸。主外設(shè)至少擁有一個連接在Avalon交換架構(gòu)上的主端口,主外設(shè)也可以擁有從端口,使得該外設(shè)也可以響應(yīng)總線上其它主外設(shè)發(fā)起的總線傳輸。
3,Avalon交換架構(gòu)是一種可自動調(diào)整的結(jié)構(gòu),隨著設(shè)計者不同設(shè)計而做出最優(yōu)的調(diào)整??梢钥吹酵庠O(shè)和存儲器可以擁有不同的數(shù)據(jù)寬度,并且這些外設(shè)可以工作在不同的時鐘頻率。Avalon交換架構(gòu)支持多個主外設(shè),允許多個主外設(shè)同時在不同的從外設(shè)進(jìn)行通信,增加了系統(tǒng)的帶寬。這些功能的實現(xiàn)都是靠Avalon交換架構(gòu)中的地址譯碼、信號復(fù)用、仲裁、地址對齊等邏輯實現(xiàn)的。
4,Avalon接口定義了一組信號類型(片選、讀使能、寫使能、地址、數(shù)據(jù)等),用于描述主/從外設(shè)上基于地址的讀寫接口。Avalon外設(shè)只使用和其內(nèi)核邏輯進(jìn)行接口的必需的信號,而省去其他會增加不必要的開銷的信號。
5,Avalon的信號類型為其它的總線接口提供了一個超集,例如大多數(shù)分離的SRAM、ROM和Flash芯片上的引腳都能映射成Avalon信號類型,樣就能使Avalon系統(tǒng)直接與這些芯片相連接。類似地,大多數(shù)Wishbone的接口信號也可以映射為Avalon信號類型,使得在Avalon系統(tǒng)中集成Wishbone的內(nèi)核非常簡單。
6,Avalon的主端口和從端口之間沒有直接的連接,主、從端口都連接到Avalon交換架構(gòu)上,由交換架構(gòu)來完成信號的傳遞。在傳輸過程中,主端口和交換架構(gòu)之間傳遞的信號與交換架構(gòu)和從端口之間傳遞的信號可能有很大的不同。所以,在討論Avalon傳輸?shù)臅r候,必須區(qū)分主從端口。
7,avalon主端口和從端口的信號類型說明
從端口信號1
從端口信號2
主端口信號1
主端口信號2
8,表中的信號類型都是高電平有效。Avalon接口也提供每個信號類型的低電平有效的版本,在信號類型名后添加 _n 來表示。例如irq_n、read_n等。這對和那些低電平有效的片外邏輯相接口時非常有用。
9,Avalon接口規(guī)范沒有對Avalon外設(shè)上的信號指定命名的規(guī)則,Avalon外設(shè)上的信號的名字可以與信號類型名相同,或者也遵循系統(tǒng)級的命名規(guī)則。
10,也能夠?qū)⑵獾漠惒酵庠O(shè),比如片外存儲設(shè)備,同系統(tǒng)交換架構(gòu)相接口,但需要一些設(shè)計上的考慮。由于Avalon交換架構(gòu)的同步操作,Avalon信號只在Avalon接口時鐘的時間間隔發(fā)生翻轉(zhuǎn)。而且,如果異步的信號直接同Avalon交換架構(gòu)的輸入相連,設(shè)計者要確保信號在時鐘的上升沿是穩(wěn)定的。
11,Avalon接口沒有固定的或者最高的性能。接口是同步的,并且可以被交換架構(gòu)提供的任意頻率的時鐘驅(qū)動。最高性能取決于外設(shè)的設(shè)計和系統(tǒng)的實現(xiàn)。 不同于傳統(tǒng)的共享總線實現(xiàn)的規(guī)范,Avalon接口沒有指定任何的物理和電氣特性。
12,一個主從端口對中的主端口和從端口可以有不同的傳輸屬性。Avalon交換架構(gòu)同主/從端口通信時,使用該端口指定的屬性,并且必要時要進(jìn)行從主端口到從端口的屬性轉(zhuǎn)換。這樣,Avalon外設(shè)可以獨立于系統(tǒng)中其它的外設(shè)屬性進(jìn)行設(shè)計。
13,動態(tài)地址對齊指的是具有不同數(shù)據(jù)的主從端口對之間進(jìn)行傳輸時,Avalon交換架構(gòu)動態(tài)管理傳輸?shù)臄?shù)據(jù)的服務(wù)。當(dāng)主端口使用動態(tài)地址對齊方式尋址從端口時,所有從端口的數(shù)據(jù)在主端口的地址空間連續(xù)地按字節(jié)對齊。 如果主端口數(shù)據(jù)寬度比從端口寬,主端口的高位字節(jié)對應(yīng)從端口地址空間的下一個地址。例如,32位的主端口使用動態(tài)地址對齊方式從16位的從端口讀取數(shù)據(jù),Avalon交換架構(gòu)在從端口這側(cè)執(zhí)行兩次讀傳輸,然后提供32位的從端口數(shù)據(jù)給主端口。 如果主端口的數(shù)據(jù)寬度比從端口窄,則Avalon交換架構(gòu)適當(dāng)?shù)靥幚韽亩丝诘淖止?jié)段。在主端口讀傳輸時,Avalon交換架構(gòu)只提供從端口適當(dāng)?shù)淖止?jié)段給主端口。在主端口寫傳輸時,Avalon交換架構(gòu)在從端口這側(cè),自動地置byteenable信號有效,將數(shù)據(jù)寫到適當(dāng)?shù)淖止?jié)段。
14,動態(tài)地址對齊的例子
15,當(dāng)主端口使用本地地址對齊方式尋址從端口,所有從端口數(shù)據(jù)和主端口地址邊界對齊。 當(dāng)主端口從一個較窄數(shù)據(jù)寬度的從端口讀取數(shù)據(jù),從端口的數(shù)據(jù)比特位映射到主端口數(shù)據(jù)的低比特位中去,而主端口的數(shù)據(jù)高比特位補零。在傳輸時,高比特位被忽略。 例如,16位的主端口讀8位的從端口,readdata信號是0x00XX的形式,這里XX代表有效的數(shù)據(jù)。主端口不能使用本地地址對齊來訪問數(shù)據(jù)寬度比自己寬的從端口。
評論