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