|
例說FPGA連載54:NAND Flash實例之Avalon-ST總線 特權同學,版權所有 配套例程和更多資料下載鏈接: http://pan.baidu.com/s/1c0nf6Qc
相對于Avalon-MM總線基于地址映射的訪問方式,Avalon-ST總線更適合于高帶寬、低時延的單向數據流傳輸。舉個實例來說,如圖6.12所示,對于一個簡單的圖像采集顯示系統,在銜接一些高數據吞吐量的接口上就可以讓Avalon-ST總線派上用場。假設這個實例系統中NIOS II處理器負責將前端采集的圖像進行解碼或是其他處理,然后再送給顯示終端。那么在圖像采集的前端就會產生大量的數據吞吐量,而在圖像顯示刷新的后端也會有大量的數據搬運工作,那么這些任務交給Avalon-ST并且配合DMA來搞定最合適不過了。
圖6.12 圖像采集顯示系統 我們同樣可以用一個最簡單的Avalon-ST接口來領會其工作原理,如圖6.13所示。在這個Avalon-ST的源端(source)和宿端(sink)之間只用了2個控制信號valid和ready就可以輕松完成單向數據流data的傳輸。其實這樣簡單的傳輸控制方式我們在邏輯設計中也是非常頻繁的用到,但是若深入研究Avalon-ST總線的一整套傳輸機制,那可還真是有學問。
圖6.13 Avalon-ST接口 通信的機理也蠻簡單的,ready信號用于指示數據宿(DATA Sink)端是否準備就緒,是否可以接受數據源(DATA Source)端傳輸過來的數據信號data。而數據源端在需要發送數據的時候也會先檢查ready信號是否處于有效狀態,若是有效,則拉高valid使之有效,同時將需要傳輸的數據賦給數據信號data。數據宿端根據valid信號的有效與否決定是否接收當前的數據。當然,這里省略了時鐘信號,每次數據傳送通常都是按照時鐘信號一個節拍一個節拍的工作。 如圖6.14所示,對于這個簡單的Avalon-ST總線傳輸而言,在宿端拉高ready信號以后源端發送過來的數據(valid有效時)才會被接收。圖中的clk0時刻valid信號有效,但是ready信號無效,所以此時傳輸的數據無效(Invalid);clk1時刻valid信號和ready同時有效,那么數據DATA1就能被宿端接收;clk2時刻valid無效則不鎖存任何數據;clk3時刻DATA2被鎖存;clk4時刻由于ready信號無效則傳輸數據無效;后續依次類推。
圖6.14 Avalon-ST總線傳輸時序波形 簡單的接口模型和示意圖讓我們看清了Avalon-ST總線的本來面目,在實踐中應用Avalon-ST總線也就不再困難。 |