本文主要介紹關于AXI4-Stream Video 協議和AXI_VDMA的IP核相關內容。為后文完成使用帶有HDMI接口的顯示器構建圖像視頻顯示的測試工程做準備。
AXI4-Stream Video 協議
接口定義
對于使用AXI4-Stream Video 協議的IP,對于接口的功能會進行拓展或者裁剪。下表列出了作為從機時,輸入的接口信號名稱和相關信息。
下表列出了作為主機時,輸出的接口信號名稱和相關信息。
這里的SOF 是用于指示起始幀的傳輸信號,SOF實際上是在AXI4-Stream的USER信號上進行傳輸的;EOL用于指示一行數據傳輸完成。EOL實際上是在AXI4-Stream的TLAST信號上進行傳輸的,用于指示一行幀數據的傳輸完成。在這個協議中沒有行場同步的信號,所以使用SOF和EOL用于進行同步視頻數據信息。TKEEP and TSTRB 這兩個信號在使用AXI4-Stream視頻協議的IP時不使用。當連接到需要TKEEP或TSTRB分配的IP時,可以使用默認值TKEEP=1和TSTRB = 1。TID and TDEST 在使用AXI4-Stream視頻協議的IP中不使用TID和TDEST,使用默認值TID=0和TDEST=0。TUSER TUSER的第0位(TUSER[0])標記幀的開始。是唯一用于視頻的AXI4-Stream信號。
AXI4-Stream Video協議時序
READY、VALID、ACLKEN和ARESETn信號,在ACLK上升沿時發生有效傳輸。在有效傳輸過程中,DATA只攜帶有效的視頻數據。握手機制和AXI DMA的握手機制相同。都是通過在在ACLK上升沿時,拉高VALID、READY,進行有效的數據傳輸。下面給出使用握手機制信號進行一個起始幀的傳輸。在時序圖中,在時鐘上升沿,并且VALID、READY、SOF都為高電平時候表示有效數據傳輸。
下面給出利用握手機制信號使用EOL信號進行幀傳輸的例子。在時序圖中,在時鐘上升沿,并且VALID、READY、SOF都為高電平時候表示有效數據傳輸表示幀數據的起始。在Pn-1也就是一行數據的最后一個進行傳輸時,EOL信號拉高,和LAST信號相同。當完成一幀傳輸的最后一個數據傳輸后,在下次傳輸時,SOF信號將會再次拉高,指示下一幀的第一個信號的傳輸。
AXI_VDMA IP
簡介
AXI VDMA IP提供了高帶寬內存和內存之間的直接訪問數據流視頻類型的目標外設,包括支持AXI4-Stream video協議的外設。這里提到的AXI4-Stream video協議在視頻IP核直接提供了一個簡單、多功能、高性能、點對點的通信接口。也可以理解為AXI4-Stream 數據的一個子集。下圖展示了AXI VDMA IP的框圖:
AXI VDMA提供了系統內存和AXI4-Stream類型目標外設之間的高性能直接內存訪問。AXI VDMA還提供分散收集(SG)功能,允許CPU將傳輸控制和執行轉移到硬件自動化。
AXI_VDMA提供了以下的功能:
循環幀緩存區訪問最多32幀緩存,并提供工具來傳輸視頻幀的一部分或完整的視頻幀。
當前幀等待能力,允許相同的視頻幀數據重復傳輸。
獨立的幀同步和獨立的AXI時鐘,允許每個頻道在不同的幀速率和不同的像素速率上運行。為了維持兩個獨立功能的AXI VDMA通道之間的同步,有一個可選的Gen-Lock同步特性。Gen-Lock提供了一種將AXI VDMA從機自動同步到一個或多個AXI VDMA主機的方法,因此從機不像主機在相同的視頻幀緩沖空間中操作。在這種模式下,從通道自動跳過或重復幀。您可以將任一通道配置為Gen-Lock slave或Gen-Lock master。
對于視頻數據傳輸,AXI4-Stream端口可以配置從8位到1024位寬(8的倍數)。對于AXI4- stream端口比相關的AXI4內存映射端口窄的配置,AXI VDMA會在內存映射端升級或縮小提供全總線寬度突發的數據。它還支持異步操作模式,其中所有時鐘都是異步處理的。
VDMA 用于將 AXI Stream 格式的數據流轉換為 Memory Map 格式或將 Memory Map 格式的數據轉換為 AXI Stream 數據流, 也就是說 VDMA 內核旨在提供從 AXI4 域到 AXI4-Stream 域的視頻讀/寫傳輸功能,反之亦然,從而實現系統內存(主要指 DDR3) 和基于 AXI4-Stream 的目標視頻 IP 之間的高速數據移動。VDMA 的框圖如下圖所示:
AXI4-Lite 可以對寄存器進行編程(配置),從而實現軟件動態配置 VDMA 的功能。通過 AXI4-Lite 接口對寄存器進行編程后,控制/狀態邏輯塊會為 DataMover 生成適當的命令,以在 AXI4 主接口上啟動寫入和讀取命令。可配置的異步 line buffer 用于在將像素數據寫入 AXI4-Memory Map 接口或 AXI4-Stream 接口之前臨時保存像素數據。VDMA 數據接口可以分為讀、寫兩個通道,且寫入和讀取獨立運行。用戶可以通過寫通道將 AXI-Stream類型的數據流寫入系統存儲器(主要指 DDR3) 。在讀通道中, VDMA 使用 AXI4 主接口從系統存儲器讀取數據并在 AXI4-Stream 主接口上輸出。可以看到, VDMA 本質上是一個數據搬運的 IP, 可以看作是為視頻圖像處理做特殊優化的帶有幀緩沖功能的高性能 DMA, 為數據進出系統存儲器提供了一種便捷的方案。
幀緩存
許多視頻應用程序需要幀緩存來處理幀速率的變化或圖像尺寸的變化(縮放或裁剪)。幀緩存存儲器( Frame Buffer),簡稱幀緩存,也常被稱作顯存,是為顯示設備(如 HDMI 顯示器等)提供數據緩存的一片存儲區域。一般圖像輸入源和圖像顯示的傳輸速率不匹配(如圖像輸入源傳輸速度較快或者圖像顯示端傳輸速度較快),這個時候需要一片存儲區域來緩存輸入的數據,以便顯示設備讀取數據,同時也方便后續對視頻數據做圖像處理。幀緩存的每一個存儲單元對應屏幕上的一個像素,整個幀緩存對應一幀圖像。比如視頻輸入的設備是30幀的數據,而經過視頻處理后實現了60幀的視頻數據顯示,這時候VDMA的幀緩存功能,就可以進行動態處理幀速度的變化。
VDMA AXI4 接口
在這里插入圖片描述
讀寫時序
讀時序
下面給出VDMA在讀取數據時的時序圖,并進行簡單的分析,對于接口信號大致可以分為兩組,一組是存儲器映射接口,進行數據傳輸,另外一組是stream接口,將讀取到的數據在line buffer里進行緩存。下圖時序的大致傳輸過程為:
SOF拉高使能,進行幀同步。
握手信號進行握手并傳輸視頻數據。
EOL信號拉高表示一行數據傳輸完成,這里LAST信號被拉高5次,也就是傳輸了一幀圖像的五行。
傳輸完成的數據移動到line buffer緩存區,然后通過stream接口發送輸出。
寫時序
下面給出VDMA在寫入數據時的時序圖,并進行簡單的分析,這里的流程和讀取的過程剛好相反。下圖時序的大致傳輸過程為:
SOF拉高使能,進行幀同步。
握手信號進行握手并寫入視頻數據。
EOL信號拉高表示一行數據傳輸完成,這里LAST信號被拉高5次,也就是傳輸了一幀圖像的五行。
這里寫入的數據是寫完先緩存在line buffer中,然后再經過stream流數據傳輸到存儲器映射的存儲單元中。
Reference
正點原子ZYNQ開發視頻教程
UG585
UG1037
PG020
原文標題:Reference
文章出處:【微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
-
接口
+關注
關注
33文章
8598瀏覽量
151157 -
數據傳輸
+關注
關注
9文章
1891瀏覽量
64601 -
HDMI接口
+關注
關注
1文章
134瀏覽量
34050
原文標題:Reference
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論