Avalon 總線普遍應用於外設和軟核或者硬核交互,其時序簡單明瞭,也很是適合用來做爲劃分模塊的接口信號。本文結合quartus 關於 avalon 總線英文原版作簡單介紹,重點理解時序便可。歡迎你們一塊兒交流,Q羣:912014800。app
1.Avalon的時鐘和復位異步
這裏沒什麼好講的,時鐘信號略,而對於復位信號,可能有三個選擇:ui
NONE: 復位是異步信號spa
DEASERT : 復位發生異步,復位釋放同步3d
BOTH: 復位釋放和發生都是同步信號blog
2.avalon M-M接口接口
這個接口比較重要,這個接口通常用於讀寫,可用在主從之間的元件上。全名,Avalon Memory-Mapped,阿瓦隆內存映射接口。事件
先看一個圖:內存
如上圖所示,Avalon MM mastet 經過內部橋鏈接Avalon MM slave,就是主鏈接從,其次下方有不少設備,好比uart來說,對於Avalon mm slave來說,一端鏈接到橋上,另外一端鏈接到真實的串口。其餘外設均相似。文檔
那麼這個接口的時序是什麼樣子的呢?其實不一樣的外設,其時序也少量差異,不過大同小異,如下舉幾個例子說明該接口的時序:
E1:
如上所示:發出讀請求read和地址address的同時須要看等待信號waitquest是否是高,如果高,則表示須要等待,如果低,則表示能夠進行讀操做。
以後過必定的時鐘節拍,會返回讀數據readdata和readdatavalid讀數據信號。(比較簡單,寫也是如此,固然這只是咱們比較熟悉的狀況。)
E2:基於以上基礎,請看下圖,改圖表示讀請求有效以後,固定兩個clk的延遲出讀數據,可自行理解。
E3: 寫突發操做
如上所示,在發出第一個寫請求有效的同時(waitquest=0),會有burstcount=4和beginbursttransfer=1,這裏burstcount表示這次寫突發操做寫幾個
數,而beginbursttransfer表示第一個數,其餘信號定義和以前相似,此處再也不贅述,上圖表示寫突發操做爲4個長度,這裏須要注意的是,第一個數據在第一次waitquest=0,寫第一個數據。
E4:讀突發操做:和寫相似。
E5:寫容忍兩個:
如上所示:即便waitquest信號等於1,因爲設置能夠容忍兩個寫數據,所以A1 和A2仍然能夠寫道slave裏面。
就介紹這麼多吧,還有一些信號沒有介紹,筆者也沒有遇到過,到時候在補充吧。
3.Avalon 中斷接口
中斷接口相對簡單一些,當發生什麼事件時,拉高該信號便可,可是有時候可能會有幾個中斷同時來,那麼就須要一個優先級。
4.AvalonStreaming Interfaces ,簡稱Avalon ST接口
E1:當ready信號準備好後,即可以傳輸數據,其中經過valid信號來指示信號的正確性,經過error和channel來選擇那個通道以及是否錯誤。
E2:讀準備好延遲=1,讀準備容許=2
如上所示:單ready=1時,因爲有一個clk的延遲,所以須要等待一個clk後在傳輸數據,因爲其ready的容忍是2,所以即便ready已經爲0了,
user仍然能夠傳輸兩個數據D2 和 D3.
E3:包傳輸,包傳輸就是在數據傳輸的過程當中,加入起始(start of packet)和結束指示信號(end of packet),其中也能夠加入ready信號,
empty信號(有幾個空,也就是無效),channel和錯誤信號,以下所示。
5.Avalon conduit 接口
用來導出做爲和外部鏈接的接口或者給其餘模塊用。好比和外部sdram鏈接,或者和外部串口相鏈接。主要分爲兩類,好比給其餘模塊用的內部信號
和與外部真實物理器件相鏈接的信號。
6. Avalon 三態 conduit 接口,這裏筆者也沒怎麼用過。。
總結:熟悉avalon MM和avalon ST總線的一些時序,不少IP覈對user的接口都是基於avalon總線的,好比sdram ,ddr2,ddr3,uart,mac,方便user從另外一個角度理解和使用IP核,實際使用IP時,能夠參考仿真,快速熟悉接口時序,從而將該IP核使用起來。本文並無將上述圖中的信號的定義列出,如須要熟悉,請參考官方文檔。