使用PYNQ-Z2的HDMI RX/TX實現(xiàn)HDMI直通
介紹
上一篇文章討論了使用PYNQ-Z2 TX輸出TPG的colorbar函數(shù)。在本文中,我們將使用PYNQ-Z2的HDMI RX/TX實現(xiàn)HDMI直通,并在內(nèi)部將信號轉(zhuǎn)換為axi4流格式,以便將來更容易進行圖像處理。
關(guān)于先決條件—下載PYNQ-Z2開發(fā)板信息、設(shè)置XDC和配置ip—請參考上一篇文章。在本文中,我們直接從Vivado塊設(shè)計開始。
注意:本文中使用的IP版本與前一個略有不同。
Vivado街區(qū)設(shè)計
?ZYNQ7處理系統(tǒng)
首先,設(shè)置ZYNQ7處理系統(tǒng)并運行“運行塊自動化”-默認設(shè)置是足夠的。
接下來,添加RGB到DVI視頻編碼器和DVI到RGB視頻解碼器,并分別配置它們。
?RGB到DVI視頻編碼器
對于HDMI TX功能,串行時鐘由內(nèi)部像素時鐘生成,并配置為1080p。
?DVI到RGB視頻解碼器
DDC ROM提供預(yù)設(shè)分辨率選項,特別是下面列出的四種分辨率,我們也選擇1080p。
?時鐘向?qū)?
由于DVI到RGB視頻解碼器的反射需要200MHz,我們使用時鐘向?qū)渲昧?00MHz輸出。
IP連接
接下來,我們可以進行各種IP核的初步連接和輸入/輸出端口的配置。
約束是根據(jù)設(shè)計中的端口名稱設(shè)置的,由于我們配置的是1080p,所以TMDS_clk_p必須另外設(shè)置為1/148.5MHz = 6.734ns。
接下來,創(chuàng)建HDL包裝器和生成比特流,然后對設(shè)備進行編程。
注意:PYNQ Z2有兩個JTAG模式。上面的JTAG模式用于通過Vitis編程flash,下面的JTAG模式用于通過Vivado編程。
結(jié)果
如果你沒有在XDC中包含以下內(nèi)容:
輸出將顯示以下問題。
Vivado塊設(shè)計-添加AXI4-Stream相關(guān)IP
接下來,我們將添加相關(guān)的AXI4-Stream IP,將RGB-to-DVI轉(zhuǎn)換為AXI4-Stream,然后再轉(zhuǎn)換回DVI輸出。在此過程中,TPG和VDMA將被合并來驗證圖像傳遞過程。
?視頻進入到axi4流
?axi4 -流到視頻輸出
?視頻定時控制器
我們可以先把所有東西連接起來,看看圖像是否通過。
IP連接
在連接相關(guān)時鐘和視頻流之后,其余的可以通過運行連接自動化來處理。
上述設(shè)計通過Vivado編程到設(shè)備上也可以實現(xiàn)直通功能。
增加視頻測試模式發(fā)生器(TPG)和視頻直接存儲器訪問(VDMA)
?視頻測試模式發(fā)生器
?視頻直接存儲器訪問
流數(shù)據(jù)寬度(自動)自動檢測輸入數(shù)據(jù)的寬度,因此不需要手動配置。
?AXI智能互聯(lián)
?ZYNQ7處理系統(tǒng)
IP連接
在連接相關(guān)時鐘和視頻流之后,其余的可以通過運行連接自動化來處理。
點擊“Validate Design”自動分配IP地址。
在運行合成、實現(xiàn)和比特流過程之后,您可以將XSA導(dǎo)出到Vitis以進行進一步開發(fā)。
Vitis開發(fā)流程
如果需要構(gòu)建說明,請參閱關(guān)于Vitis的上一篇文章。
初始化TPG
配置TPG
重置VDMA
配置VDMA
完整代碼
構(gòu)建應(yīng)用程序并將其編程到PYNQ-Z2板上。一旦閃過,您將看到操作的結(jié)果。
注意:如果您將PYNQ Z2與其他顯示器一起連接到計算機主板,建議首先將計算機的多顯示器顯示模式設(shè)置為同步(鏡像)顯示。
本文編譯自hackster.io