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