本文參考Altera文檔:1. Introduction to the Avalon Interface Specifications
Avalon總線是一種協(xié)議較為簡(jiǎn)單的片內(nèi)總線,主要用于連接片內(nèi)處理器與外設(shè),以構(gòu)成片上可編程系統(tǒng)(SOPC)。使用Avalon接口能夠輕松連接Intel FPGA中的各個(gè)組件,從而簡(jiǎn)化了系統(tǒng)設(shè)計(jì)。Avalon接口常用于高速數(shù)據(jù)流傳輸、讀寫(xiě)寄存器和存儲(chǔ)器、控制片外器件等。此外,也可以使用Avalone接口自定義組件,以增強(qiáng)設(shè)計(jì)的互操作性。
Avalon共有以下七種接口:
Avalon Clock Interface, Avalon時(shí)鐘接口 -- 驅(qū)動(dòng)或接收時(shí)鐘信號(hào)的接口。
Avalon Reset Interface, Avalon復(fù)位接口 -- 驅(qū)動(dòng)或接收復(fù)位信號(hào)的接口。
Avalon Memory Mapped Interface (Avalon-MM), Avalon存儲(chǔ)器映射接口 -- 基于地址的讀/寫(xiě)接口,是主-從連接的典型接口。
Avalon Streaming Interface (Avalon-ST), Avalon Streaming接口 --支持單向數(shù)據(jù)流的接口,包括多數(shù)據(jù)流、數(shù)據(jù)包和DSP數(shù)據(jù)的傳輸。
Avalon Conduit Interface, Avalon Conduit接口 -- 適用于不適合任何其他Avalon類(lèi)型的單個(gè)/多個(gè)信號(hào)。使用該接口可以將信號(hào)導(dǎo)出到頂層SOPC系統(tǒng),這樣就可以將它連接到設(shè)計(jì)的其他模塊。
Avalon Tri-State Conduit Interface (Avalon-TC), Avalon 三態(tài)Conduit接口 -- 與片外設(shè)備的接口。多個(gè)外設(shè)可以通過(guò)信號(hào)的多路復(fù)用共享引腳,從而減少FPGA引腳數(shù)和PCB走線數(shù)。
Avalon Interrupt Interface, Avalon 中斷接口 -- 允許組件向其他組件發(fā)送事件信號(hào)的接口。
一個(gè)組件可以包含多個(gè)不同類(lèi)型的接口,也可以包含多個(gè)相同類(lèi)型的接口。
Avalon接口通過(guò)屬性(property)描述它們的行為。每種接口類(lèi)型的規(guī)范定義了所有接口的屬性和默認(rèn)值。比如,Avalon-ST接口的maxChannel屬性指定接口支持的通道數(shù)量,Avalon Clock接口的clockRate屬性描述時(shí)鐘信號(hào)的頻率。
每個(gè)Avalon接口都定義了一系列的信號(hào)及其行為,并且多數(shù)信號(hào)都是可選的,這允許組件設(shè)計(jì)者能夠更加靈活地選擇需要的信號(hào)類(lèi)型。例如,Avalon-MM接口包含可選的beginbursttransfer和burstcount信號(hào),用于那些支持突發(fā)(bursting)傳輸?shù)慕M件。Avalon-ST接口包含可選的startofpacket和endofpacket信號(hào),用于那些支持?jǐn)?shù)據(jù)包的接口。
每種接口都有時(shí)序方面的信息,這些時(shí)序信息描述了針對(duì)單個(gè)類(lèi)型的傳輸。
注:本實(shí)驗(yàn)只用了到Avalon時(shí)鐘接口、Avalon復(fù)位接口、Avalon存儲(chǔ)器映射接口和Avalon Conduit接口,下面將著重介紹這四種接口,其余接口請(qǐng)參考請(qǐng)參考Intel FPGA的Avalon Interface Specification文檔。
Avalon時(shí)鐘接口
Avalon時(shí)鐘接口定義了組件使用的時(shí)鐘,一個(gè)組件可以有時(shí)鐘輸入、時(shí)鐘輸出或時(shí)鐘輸入輸出都含有。例如,鎖相環(huán)(PLL)是一個(gè)包含了時(shí)鐘輸入和時(shí)鐘輸出的組件,如圖所示。

Clock Sink信號(hào)
Clock sink為其他接口和內(nèi)部邏輯提供時(shí)鐘和時(shí)序參考,clock sink的屬性有clockRate,用來(lái)表示clock sink接口的頻率(Hz),默認(rèn)值為0。
表1 Clock Sink信號(hào)

表2 Clock Sink屬性

所有同步接口都有一個(gè)associatedClock 屬性,該屬性指定組件上的哪個(gè)時(shí)鐘源(clock source)用作接口的同步參考,如圖所示。

Clock Source信號(hào)
Clock source接口從一個(gè)組件中輸出一個(gè)時(shí)鐘信號(hào)。clock source有三個(gè)屬性,associatedDirectClock表示直接驅(qū)動(dòng)該時(shí)鐘的時(shí)鐘名稱(chēng),clockRate表示時(shí)鐘輸出的頻率,clockRateKnown指示時(shí)鐘頻率是否已知。
表3 Clock Source信號(hào)

表4 Clock Source屬性

Avalon復(fù)位接口
與Avalon時(shí)鐘接口類(lèi)似,Avalon復(fù)位接口也分為Reset Sink和Reset Source。
Reset Sink
Reset sink包含兩個(gè)信號(hào),reset/reset_n和reset_req,reset_req是一個(gè)可選的信號(hào)。Reset sink有兩個(gè)屬性,associatedClock表示與該接口同步的時(shí)鐘,synchronous-Edges表示復(fù)位所需要的同步類(lèi)型,NONE表示不需要同步,DEASSERT表示復(fù)位是異步的,取消復(fù)位是同步的,BOTH表示復(fù)位和取消復(fù)位都是同步的。
所有同步接口都有一個(gè)associatedReset屬性,用于指定哪個(gè)復(fù)位信號(hào)對(duì)接口邏輯進(jìn)行復(fù)位。
表5 Reset Sink信號(hào)

表6 Reset Sink屬性

Reset Source
Reset source也是包含兩個(gè)信號(hào),reset/reset_n和reset_req,reset_req是一個(gè)可選的信號(hào)。Reset source有四個(gè)屬性,associatedClock表示與該接口同步的時(shí)鐘;associatedDirectReset表示復(fù)位輸入的名稱(chēng),此復(fù)位輸入通過(guò)one-to-one 鏈路直接驅(qū)動(dòng)此復(fù)位源;associatedResetSinks用來(lái)指定復(fù)位輸入,使復(fù)位源對(duì)復(fù)位進(jìn)行復(fù)位;synchronous-Edges表示復(fù)位所需要的同步類(lèi)型,NONE表示不需要同步,DEASSERT表示復(fù)位是異步的,取消復(fù)位是同步的,BOTH表示復(fù)位和取消復(fù)位都是同步的。
表7 Reset Source信號(hào)

表8 Reset Sink屬性

Avalon存儲(chǔ)器映射接口
Avalon存儲(chǔ)器映射接口主要用于實(shí)現(xiàn)主-從(Master-Slave)組件的讀寫(xiě)接口,微處理器、存儲(chǔ)器、UART、DMA、定時(shí)器(Timer)是常用的包含Avalon存儲(chǔ)器映射接口的組件。Avalon-MM接口有簡(jiǎn)單的也有復(fù)雜的。例如,SRAM接口有固定周期的讀寫(xiě)傳輸,具有簡(jiǎn)單的Avalon-MM 接口。能夠進(jìn)行突發(fā)傳輸?shù)牧魉€接口(pipelined interface)有更為復(fù)雜的Avalon-MM接口。這里我們只介紹簡(jiǎn)單的Avalon-MM接口,較為復(fù)雜的流水線接口請(qǐng)參考Intel FPGA的Avalon Interface Specification文檔。
下圖是一個(gè)典型的系統(tǒng),圖中加亮并畫(huà)圈的是Avalon-MM slave接口與互連(interconnect)架構(gòu)的連接。

下圖為16-bit通用I/O外設(shè)僅響應(yīng)寫(xiě)請(qǐng)求,該組件只包含寫(xiě)傳輸所需的從信號(hào)。

Avalon存儲(chǔ)器映射接口信號(hào)及屬性
Avalon Interface Specifications文檔的 Table 9列出了Avalon-MM接口的信號(hào)。。注意:Avalon規(guī)范不要求所有信號(hào)都存在于一個(gè)Avalon-MM接口中,即當(dāng)一個(gè)接口為Avalon-MM接口時(shí),只包含所需要的某些信號(hào)即可。例如,對(duì)于只支持讀操作(read-only)的接口,最少可只包含readdata信號(hào);對(duì)于只支持寫(xiě)操作(write-only)的接口,最少可只有writedata和wrtie信號(hào)。
表9 Avalon-MM接口信號(hào)



表10列出了Avalon-MM接口信號(hào)的屬性。
表10 Avalon-MM接口信號(hào)屬性


Avalon-MM典型的讀傳輸和寫(xiě)傳輸
在介紹Avalon-MM典型的讀寫(xiě)傳輸之前,先來(lái)介紹兩個(gè)基本概念:
傳輸(Transfer) -- 傳輸是一個(gè)字或者一個(gè)或多個(gè)符號(hào)的數(shù)據(jù)的讀或?qū)懖僮?。傳輸發(fā)生在Avalon-MM 接口與互連之間。傳輸需要一個(gè)或多個(gè)時(shí)鐘周期才能完成。master和slave都是傳輸?shù)囊徊糠?。Avalon -MM master啟動(dòng)傳輸, Avalon -MM slave作出響應(yīng)。
Master-slave pair -- 指在一個(gè)傳輸中涉及到master接口和slave接口。在一個(gè)傳輸過(guò)程中,master接口控制和數(shù)據(jù)信號(hào)遍歷互連架構(gòu),并與slave接口進(jìn)行交互。
下面介紹一個(gè)典型的Avalon-MM接口進(jìn)行讀寫(xiě)傳輸?shù)姆独?,該接口包含waitrequest信號(hào),通過(guò)將waitrequest(高電平有效)信號(hào)置為高電平,slave可將互連暫停。
通常,slave在時(shí)鐘上升沿之后接收address、byteenable、read 或者write和writedata信號(hào),在時(shí)鐘上升沿之前將waitrequest置為高電平來(lái)暫停傳輸。當(dāng)slave拉高waitrequest信號(hào)時(shí),數(shù)據(jù)傳輸被延遲,此時(shí)地址線和其他控制信號(hào)保持不變。在slave將waitrequest拉低后的第一個(gè)時(shí)鐘上升沿,讀寫(xiě)傳輸完成。
Slave可以無(wú)期限的拉高waitrequest信號(hào),但是在設(shè)計(jì)中必須確保slave接口不要無(wú)期限的拉高waitrequest信號(hào),以免出現(xiàn)slave一直不響應(yīng)、master一直等待的現(xiàn)象。下圖為使用了waitrequest的讀傳輸和寫(xiě)傳輸。

我們來(lái)分析上圖中每個(gè)數(shù)字標(biāo)注的時(shí)刻,Avalon-MM總線上的操作:
clk上升沿后,address、byteenable、read信號(hào)被置為有效;slave將waitrequest拉高,暫停數(shù)據(jù)傳輸。
clk上升沿,waitrequest被master采樣;由于waitrequest有效,此時(shí)處于等待狀態(tài)(wait-state),address、read和byteenable保持不變。
slave 在clk上升沿之后將waitrequest置為低電平,之后將readdata、responese置為有效。
clk上升沿,master檢測(cè)到waitrequest拉低,捕獲readdata、response,讀數(shù)據(jù)傳輸完成。
clk上升沿后,address、writedata、byteenable和write信號(hào)被置為有效;slave將waitrequest拉高,暫停數(shù)據(jù)傳輸。
slave 在clk上升沿之后將waitrequest置為低電平。
clk上升沿,slave捕獲到writedata,寫(xiě)數(shù)據(jù)傳輸完成。
地址對(duì)齊
互連僅支持地址對(duì)齊的訪問(wèn)方式。Master只能發(fā)送其數(shù)據(jù)位寬倍數(shù)的地址。Master可通過(guò)拉低byteenable_n的某幾位來(lái)寫(xiě)入部分?jǐn)?shù)據(jù)。例如,向地址2寫(xiě)入2字節(jié)的數(shù)據(jù)時(shí),byteenable_n = 4’b1100。
Avalon-MM尋址
動(dòng)態(tài)地址對(duì)齊(Dynamic bus sizing)在不同數(shù)據(jù)寬度的master-slave對(duì)傳輸期間管理數(shù)據(jù)。從機(jī)數(shù)據(jù)在主機(jī)地址空間中以連續(xù)字節(jié)的方式對(duì)齊。
如果master的數(shù)據(jù)寬度大于slave的數(shù)據(jù)寬度,mster地址空間中的字會(huì)映射到slave地址空間中的多個(gè)位置。例如,32位的master讀取16位的slave時(shí),會(huì)在slave端進(jìn)行兩次讀傳輸,這兩次讀傳輸?shù)牡刂肥沁B續(xù)的。
如果master的數(shù)據(jù)寬度小于slave的數(shù)據(jù)寬度時(shí),互連會(huì)管理slave的各個(gè)字節(jié)通道。當(dāng)master從slave讀取數(shù)據(jù)時(shí),互連只會(huì)把相應(yīng)的字節(jié)通道的數(shù)據(jù)傳輸給master。當(dāng)master向slave寫(xiě)數(shù)據(jù)時(shí),互連會(huì)自動(dòng)將相應(yīng)字節(jié)通道的byteenables信號(hào)置為有效。
Slave的數(shù)據(jù)寬度必須是8、16、32、64、128、256、512 或者1024位。下表列出了32位的master按字訪問(wèn)不同位寬的slave數(shù)據(jù)時(shí)是如何與master對(duì)齊的,OFFSET[N]表示slave地址空間字的偏移量。
表11 動(dòng)態(tài)地址對(duì)齊的Master-Slave之間的地址映射

Avalon Conduit接口
Avalon Conduit接口是那些不適合任何其他Avalon類(lèi)型的單個(gè)/多個(gè)信號(hào)的集合,使用該接口可以將信號(hào)導(dǎo)出到頂層SOPC系統(tǒng),這樣就可以將它連接到設(shè)計(jì)的其他模塊。一個(gè)Avalon Conduit接口可以包括輸入、輸出和雙向信號(hào),并且一個(gè)模塊/組件可以有多個(gè)Avalon Conduit接口。
管道(Conduit)接口通常用于驅(qū)動(dòng)片外器件信號(hào),比如SDRAM的地址、數(shù)據(jù)和控制信號(hào)線,如下圖所示。

Avalon conduit接口的信號(hào)可以是任意的,并且該接口的信號(hào)沒(méi)有任何屬性。
表12 Conduit接口信號(hào)

-
處理器
+關(guān)注
關(guān)注
68文章
20323瀏覽量
254660 -
FPGA
+關(guān)注
關(guān)注
1663文章
22491瀏覽量
638908 -
Altera
+關(guān)注
關(guān)注
37文章
827瀏覽量
159092 -
總線接口
+關(guān)注
關(guān)注
0文章
94瀏覽量
31492
原文標(biāo)題:Altera FPGA 的 Avalon MM總線接口規(guī)范介紹(精簡(jiǎn)版)
文章出處:【微信號(hào):友晶FPGA,微信公眾號(hào):友晶FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
轉(zhuǎn)載 --- altera_avalon_pio_regs.h中的函數(shù)意義
例說(shuō)FPGA連載52:NAND Flash實(shí)例之總線的概念
例說(shuō)FPGA連載53:NAND Flash實(shí)例之Avalon-MM總線
例說(shuō)FPGA連載54:NAND Flash實(shí)例之Avalon-ST總線
如何設(shè)計(jì)一個(gè)基于Avalon總線接口的UPFC控制器IP核?
基于FPGA的PCI總線接口設(shè)計(jì)
Avalon總線規(guī)范(中文版)
基于FPGA的SDX總線與Wishbone總線接口設(shè)計(jì)
avalon總線框架
通過(guò)Altera FPGA系統(tǒng)實(shí)現(xiàn)FPGA接口的簡(jiǎn)化設(shè)計(jì)
Nios II處理器的體系結(jié)構(gòu)及Avalon總線接口規(guī)范
鋯石FPGA A4_Nano開(kāi)發(fā)板視頻:Avalon總線規(guī)范的講解
設(shè)計(jì)一種跳轉(zhuǎn)到Avalon總線的簡(jiǎn)單方法
Avalon總線規(guī)范介紹
Altera FPGA的Avalon MM總線接口規(guī)范介紹
評(píng)論