ZU+MPSOC器件在汽車電子、工業控制、機器視覺、智能安防、智慧城市等行業中已經有著廣泛的應用,三年前在做一個ZCU106開發板的TRD(Target Reference Design)向用戶自研板卡移植HDMI設計時,遇到了一些問題,我翻出之前的筆記整理成文,與大家分享。
當時使用的Vivado版本為2018.3,因此通篇描述都是基于Vivado 2018.3的操作。
首先,ZCU106開發板的TRD參考設計在Wiki上都是以tcl腳本形式提供的,需要我們執行腳本創建工程,我選用的參考設計源文件為rdf0428-zcu106-vcu-trd-2018-3\pl\scripts\vcu_audio_proj.tcl,選用這個設計的原因是這個設計包含HDMI TX、HDMI RX、Audio,可以完整地檢驗客戶的HDMI硬件設計是否正確。創建工程的步驟如下:
1. 打開Vivado 2018.3 GUI或者打開Vivado 2018.3 tcl command prompt,在tcl命令行的部分輸入命令打開vcu_audio_proj.tcl文件的存放目錄文件夾;
![pYYBAGGYH9qAEU6pAAHI13tr948827.png](https://file.elecfans.com/web2/M00/1F/6A/pYYBAGGYH9qAEU6pAAHI13tr948827.png)
ZCU106 TRD文件目錄
2. source vcu_audio_proj.tcl,創建工程,此時vcu_audio_proj.tcl會調用vcu_audio_bd.tcl;
3. 然后我們在打印信息中可以看到如下錯誤,原因是vcu_audio_proj.tcl中的路徑定義問題;
![poYBAGGYH9uATUQtAABJI_r4MZM439.png](https://file.elecfans.com/web2/M00/1F/63/poYBAGGYH9uATUQtAABJI_r4MZM439.png)
TRD tcl腳本執行錯誤信息
![pYYBAGGYH9yAZhyNAABEvOxqdkg623.png](https://file.elecfans.com/web2/M00/1F/6B/pYYBAGGYH9yAZhyNAABEvOxqdkg623.png)
路徑定義命令
4. 解決辦法為把vcu_audio_proj.tcl和vcu_audio_bd.tcl拷貝到向上一級目錄,讓vcu_audio_proj.tcl中的路徑定義生效即可;拷貝后的路徑如下:
![poYBAGGYH96AcaIiAADPBDOq8fo297.png](https://file.elecfans.com/web2/M00/1F/63/poYBAGGYH96AcaIiAADPBDOq8fo297.png)
拷貝腳本后目錄
5. 使用Vivado 2018.3 GUI或者Vivado 2018.3 tcl command prompt打開新的vcu_audio_proj.tcl路徑位置,source vcu_audio_proj.tcl創建工程;
6. 此時建議備份ZCU106的TRD工程,下一步有用;
接下來我們把設計移植到用戶自己設計的硬件板卡,我的操作步驟如下:
1. 在工程設置中把Project Device從ZCU106修改為客戶的PN,我的設計中使用的是XCZU4EV-1FBVB900I;然后Vivado會提示需要Upgrade IP;
![poYBAGGYH9-ASWOdAAC5zslcRFw476.png](https://file.elecfans.com/web2/M00/1F/63/poYBAGGYH9-ASWOdAAC5zslcRFw476.png)
upgrade IP
2. 點擊Report IP Status,upgrade所有IP;
3. Upgrade IP之后會出現連線報錯,是因為Vivado upgrade IP的時候VCU block里面的時鐘沒有upgrade正確,請參考ZCU106 TRD工程把VCU里面的clk_wiz_0配置為差分輸入、不要reset端口、兩路輸出時鐘、clk_out2連接好,并且連接在block design中丟失的信號連接;
![pYYBAGGYH-GAAjySAACy-tFiUcw120.png](https://file.elecfans.com/web2/M00/1F/6B/pYYBAGGYH-GAAjySAACy-tFiUcw120.png)
信號連接丟失
![poYBAGGYH-KAXRHTAACe5hoZseU204.png](https://file.elecfans.com/web2/M00/1F/63/poYBAGGYH-KAXRHTAACe5hoZseU204.png)
需要修改的block design信號連接
![pYYBAGGYH-SAaNGzAACEnsjRCNY964.png](https://file.elecfans.com/web2/M00/1F/6B/pYYBAGGYH-SAaNGzAACEnsjRCNY964.png)
需要修改的clk_wiz輸入時鐘配置
![pYYBAGGYH-WAY4TFAAB-rv6l3gw346.png](https://file.elecfans.com/web2/M00/1F/6B/pYYBAGGYH-WAY4TFAAB-rv6l3gw346.png)
需要修改的clk_wiz輸出時鐘配置
![poYBAGGYH-aAMJSmAABLcAe-AuA566.png](https://file.elecfans.com/web2/M00/1F/63/poYBAGGYH-aAMJSmAABLcAe-AuA566.png)
需要修改的reset端口
4. 然后我們去執行Block Design的Validate,可以通過,但是在綜合之前產生block design的輸出文件時會遇到frame_buffer的錯誤如下,這個錯誤是因為工程路徑超過了260個字符,需要把工程拷貝到某個盤符的根目錄下;
![pYYBAGGYH-eAIRy9AAEO0LSJQAM416.png](https://file.elecfans.com/web2/M00/1F/6B/pYYBAGGYH-eAIRy9AAEO0LSJQAM416.png)
frame buffer錯誤信息
5. 這時候整個設計可以綜合完,我們需要根據用戶的硬件原理圖設計修改管腳位置約束、電平標準約束等信息;如果所有約束都修改完后編譯遇到GTH的參考時鐘無法布線成功,是因為block design中vid_phy_controller中參考時鐘的位置和用戶在硬件上的管腳、器件自身的位置關系等不一致;
[DRC RTSTAT-1] Unrouted nets: 3 net(s) are unrouted. The problembus(es) and/or net(s) are vcu_audio_i/gt_refclk_buf/ibufds_gt/U0/IBUF_OUT[0],vcu_audio_i/vid_phy_controller/inst/gt_usrclk_source_inst/gtrefclk0_in[0], and vcu_audio_i/vid_phy_controller/inst/gt_usrclk_source_inst/gtrefclk1_in[0].
以ZU4EV-FBVB900封裝為例,結合用戶的原理圖設計、ZU+ MPSOC EV系列的GTH位置關系,決定了block design中的連線和vid_phy_controller中的配置:
在用戶的原理圖中,TX_REFCLK_P/N和HDMI_RX_CLK_P/N和HDMI的數據線都是放在GTH BANK225,TX_REFCLK_P/N接BANK225的REFCLK1,HDMI_RX_CLK_P/N接BANK225的REFCLK0,因此在vid_phy_controller的配置中我們要選擇GT Starting Channel Location中要選擇X0Y8,TX Ref Clock Selection選擇GTREFCLK1,RX Ref Clock Selection選擇GTREFCLK0;
在用戶的原理圖中,DRU_CLK_P/N從GTH BANK224的MGTREFCLK1進入,根據ZU4EV-FBVB900封裝的GTH位置關系,BANK224處于BANK225的North位置,所以在vid_phy_controller的配置中NI-DRU Ref Clock Selection選擇GTNORTHREFCLK1;
![poYBAGGYH-iAA31pAADgJAZ51tk534.png](https://file.elecfans.com/web2/M00/1F/63/poYBAGGYH-iAA31pAADgJAZ51tk534.png)
block design中的信號連接關系
![pYYBAGGYH-qAOCTYAAB3NeQusyY242.png](https://file.elecfans.com/web2/M00/1F/6B/pYYBAGGYH-qAOCTYAAB3NeQusyY242.png)
video_phy_controller中的配置信息
![poYBAGGYH-uASb51AAC9x_Oy1PI992.png](https://file.elecfans.com/web2/M00/1F/63/poYBAGGYH-uASb51AAC9x_Oy1PI992.png)
ZU+MPSOC EV GTH Location
![poYBAGGYH-yATJFNAALhbTzNx40928.png](https://file.elecfans.com/web2/M00/1F/63/poYBAGGYH-yATJFNAALhbTzNx40928.png)
用戶原理圖設計
6. 但是在MAP階段會遇到如下錯誤,原因是這個設計使用的LUT超出了ZU4EV芯片的總量;可以使用 set_param drc.disableLUTOverUtilError 1命令讓設計向下編譯,如果不用audio部分,也可以刪除掉block design里面的audio部分;刪除audio部分之后這個設計在ZU4EV是可以放下的;
![poYBAGGYH-6AP4OyAACJixsnGB4583.png](https://file.elecfans.com/web2/M00/1F/63/poYBAGGYH-6AP4OyAACJixsnGB4583.png)
MAP錯誤信息
7. 若上一步使用刪除block design中的audio部分,block design中還有有一些信號線連接丟失,需要自己手動連接;
![pYYBAGGYH--AbaQjAABSbXKLZd0327.png](https://file.elecfans.com/web2/M00/1F/6B/pYYBAGGYH--AbaQjAABSbXKLZd0327.png)
刪除audio模塊后手動連線
![pYYBAGGYH_CABtATAADXbIn0e9Q216.png](https://file.elecfans.com/web2/M00/1F/6B/pYYBAGGYH_CABtATAADXbIn0e9Q216.png)
刪除audio模塊后手動連線
8. 此時編譯又遇到了URAM占用量超過ZU4EV器件總量的報錯,原因是TRD設計中VCU的默認配置為encoder和decoder都是4Kx60fps分辨率,且encoder buffer全部使用URAM實現,ZU4EV沒有這么多的URAM,可以修改URAM的資源實現方式來編譯通過;也可以減小分辨率以減少URAM占用;
![poYBAGGYH_GAeS_pAADE7pliups916.png](https://file.elecfans.com/web2/M00/1F/63/poYBAGGYH_GAeS_pAADE7pliups916.png)
VCU配置信息
最后,強調一下HDMI的時鐘結構,請參考Xilinx官方文檔PG235、PG236。
![poYBAGGYH_OASPhkAAEnVAD-AmE670.png](https://file.elecfans.com/web2/M00/1F/63/poYBAGGYH_OASPhkAAEnVAD-AmE670.png)
HDMI時鐘結構圖
審核編輯:湯梓紅
-
HDMI
+關注
關注
32文章
1736瀏覽量
152395 -
移植
+關注
關注
1文章
383瀏覽量
28194 -
Vivado
+關注
關注
19文章
815瀏覽量
66890
發布評論請先 登錄
相關推薦
ZU+系列MPSoC的外圍接口詳細分析
![<b class='flag-5'>ZU</b>+系列<b class='flag-5'>MPSoC</b>的外圍接口詳細分析](https://file.elecfans.com/web1/M00/C8/69/pIYBAF9uIGWAXVGXAACf93SCqMQ852.png)
MPSoC可擴展集成電源參考設計包括BOM及框圖
請問Zynq Ultrascale + MPSOC本身是否存在問題?
Altera FPGA_CPLD設計 (基礎篇 + 高級篇)掃描版
ZU7EV板卡設計資料第526篇:基于ZU7EV的FMC 通用PCIe卡
基于ZU+系列MPSoC芯片的USB3.0/2.0接口硬件設計
![基于<b class='flag-5'>ZU</b>+系列<b class='flag-5'>MPSoC</b>芯片的USB3.0/2.0接口硬件設計](https://file.elecfans.com/web1/M00/8A/74/pIYBAFyMUGiADJ0yAACIebgvdFA614.jpg)
開源硬件-TIDA-01480.12-適用于 Xilinx Zynq? UltraScale+? ZU2CG?ZU5EV MPSoC 的集成電源 PCB layout 設計
![開源硬件-TIDA-01480.12-適用于 Xilinx Zynq? UltraScale+? <b class='flag-5'>ZU</b>2CG?<b class='flag-5'>ZU</b>5EV <b class='flag-5'>MPSoC</b> 的集成電源 PCB layout 設計](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
開源硬件-TIDA-01480.16-適用于 Xilinx Zynq? UltraScale+? ZU2CG?ZU5EV MPSoC 的集成電源 PCB layout 設計
![開源硬件-TIDA-01480.16-適用于 Xilinx Zynq? UltraScale+? <b class='flag-5'>ZU</b>2CG?<b class='flag-5'>ZU</b>5EV <b class='flag-5'>MPSoC</b> 的集成電源 PCB layout 設計](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
開源硬件-TIDA-01480.05-適用于 Xilinx Zynq? UltraScale+? ZU2CG?ZU5EV MPSoC 的集成電源 PCB layout 設計
![開源硬件-TIDA-01480.05-適用于 Xilinx Zynq? UltraScale+? <b class='flag-5'>ZU</b>2CG?<b class='flag-5'>ZU</b>5EV <b class='flag-5'>MPSoC</b> 的集成電源 PCB layout 設計](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
開源硬件-TIDA-01480.08-適用于 Xilinx Zynq? UltraScale+? ZU2CG?ZU5EV MPSoC 的集成電源 PCB layout 設計
![開源硬件-TIDA-01480.08-適用于 Xilinx Zynq? UltraScale+? <b class='flag-5'>ZU</b>2CG?<b class='flag-5'>ZU</b>5EV <b class='flag-5'>MPSoC</b> 的集成電源 PCB layout 設計](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
開源硬件-TIDA-01480.09-適用于 Xilinx Zynq? UltraScale+? ZU2CG?ZU5EV MPSoC 的集成電源 PCB layout 設計
![開源硬件-TIDA-01480.09-適用于 Xilinx Zynq? UltraScale+? <b class='flag-5'>ZU</b>2CG?<b class='flag-5'>ZU</b>5EV <b class='flag-5'>MPSoC</b> 的集成電源 PCB layout 設計](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
開源硬件-TIDA-01480.02-適用于 Xilinx Zynq? UltraScale+? ZU2CG?ZU5EV MPSoC 的集成電源 PCB layout 設計
![開源硬件-TIDA-01480.02-適用于 Xilinx Zynq? UltraScale+? <b class='flag-5'>ZU</b>2CG?<b class='flag-5'>ZU</b>5EV <b class='flag-5'>MPSoC</b> 的集成電源 PCB layout 設計](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論