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