Xilinx vivado下通常的視頻流設(shè)計,都采用Vid In to axi4 stream --> VDMA write --> MM --> VDMA read --> axi4 stream to video out這樣的路徑。網(wǎng)上例子很多,官方參考也有xapp521,實現(xiàn)起來參考無壓力。
但這套方案明顯的問題是,緩存圖像帶來幀延遲,對于一些延遲要求高的任務(wù),反倒不希望有VDMA的參與。此外,對于一些簡單的應(yīng)用,不希望有Zynq PS核的參與配置,簡化系統(tǒng)復(fù)雜度。因此我就有了 "Video In to AXI4-stream" to "AXI4-stream to Video Out" directly with VTC without VDMA的需求。
看過好幾個Xilinx的product guide(pg043 vid_in_axi4s)和其他的第三方參考(AVNET的《building a video design from scratch tutorial》)都明確說可以實現(xiàn)如下圖的框架。不需要VDMA的參與。但是沒有官方的XAPP,按照這個框架搭建后,調(diào)試很久視頻都不能正常顯示。
網(wǎng)上有些帖子,給出了一些建議參考。
但是,或多或少都沒有說明白的地方,配置GUI沒有展開細說,我照著搭建依舊出現(xiàn)很多困難,沒有成功。但反復(fù)琢磨上面幾個例子的異同,反復(fù)讀了pg043,pg016,pg044幾份文檔細節(jié),終于找到了出路?,F(xiàn)在總結(jié)如下。
1.先上總設(shè)計框圖
我是SDI輸入輸出(1920x1080@30P),用的GS2971和GS2972的組合,其他在頂層verilog測試好了,數(shù)據(jù)data、同步de/hs/vs直通顯示是沒有問題的,在這個基礎(chǔ)上添加了上述的IP,把同步視頻流轉(zhuǎn)到axi4-stream總線上。
該框圖設(shè)計在top.v接口代碼如下:
design_1_wrapper sSDI_design( .sdi_clk_in1(wClkSDI), .sdi_data_in1({DOUT[9:2],{DOUT[19:12]}}), .sdi_de_in1(SDI_IN_DE), .sdi_hs_in1(SDI_IN_H), .sdi_vs_in1(SDI_IN_V), .sdi_data_out1({DIN[9:2],DIN[19:12]}), .sdi_de_out1(SDI_OUT_DE), .sdi_hs_out1(SDI_OUT_H), .sdi_vs_out1(SDI_OUT_V));
框圖沒什么難點,關(guān)鍵是一些細節(jié)的連線,和IP內(nèi)部的設(shè)置,下面展開講講要注意的地方。
2. Video in to AXI4-stream下的配置
關(guān)于axis_enable管腳。
(1)axis_enable可以直接接“1”拉高,實測沒有問題。
(2)這里我把axis_enable接了vtc的INTC中的第8位(Detect Locked信號),是參考文檔上的描述,這樣更準確。
(pg043 pp10)
(pg016 pp12)
(pg016 pp25)
(3)去INTC中第8位出來的IP使用slice來截取。IP配置如下
3. Video Timing Controller的配置
(1)注意synchronize generator to detector or fsync_in前的“勾"不能選! 選了就會顯示輸出不了。如果想讓輸入和輸出同步,怎么弄我還沒有搞明白,后續(xù)在研究。
(2) 不能選輸入和輸出同步,意味著enable detector可以不選,因此detect video in 的timing實際上沒有必要。也就意味著video in的timing_out可以不用接到vtc的timing_in上。實測也是工作的。
(3)第二頁,選1080p的時序模式
4. AXI4-stream to Video Out的配置
(1)這種沒有VDMA的框架下timing mode要選slave模式。
為什么,具體解釋參見pg044, pp21-22
換言之,如果包含VDMA的框架,這里要選master模式。
(2)vid_out輸出管腳vtg_ce必須要接到vtc的gen_clken上,它的作用是slave模式下保證vid_out和vtc的同步。
(pg044 pp10)
5. aclken,reset等等為安全穩(wěn)妥起見,連接按圖上拉或下拉即可。
6.實測運行,顯示正常。
補記:
1.我又精簡了一下,vtc沒有使能detector的模式,實測OK
2. 又測試了下vtc使能detector,并且使能了auto generation mode,測試也顯示正常。(注意,這次意外的忘了連det_clken,也沒什么異常)
3. 關(guān)于synchronize detector to generater選項何時可以用的思考。
前面測試了無VMDA的video_out工作在slave模式,時序同步是通過vtc_ce反向傳給gen_clken完成的。這種情形不允許,generator與detector同步。
那么在有VDMA參與的video out工作在master模式下呢?我返回了一個包含VDMA的工程,我們把vtc_ce反饋撤掉(之前也是把vtc_ce接到gen_clken的),gen_clken常拉高置1,此時再給vtc設(shè)置為synchronize detector to generater 打勾。這種情形下,輸出可以與輸入信號同步了,實測成功,顯示正常。這樣就實現(xiàn)了輸出與輸入的幀頻同步了。
原文標題:不使用VDMA情況下使用AXI4總線實現(xiàn)視頻輸入輸出(低延遲首選)
審核編輯:湯梓紅
-
視頻
+關(guān)注
關(guān)注
6文章
1946瀏覽量
72918 -
Xilinx
+關(guān)注
關(guān)注
71文章
2167瀏覽量
121440 -
AXI4
+關(guān)注
關(guān)注
0文章
20瀏覽量
8894 -
Vivado
+關(guān)注
關(guān)注
19文章
812瀏覽量
66547
原文標題:不使用VDMA情況下使用AXI4總線實現(xiàn)視頻輸入輸出(低延遲首選)
文章出處:【微信號:Hack電子,微信公眾號:Hack電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論