ZU+MPSOC器件在汽車電子、工業(yè)控制、機(jī)器視覺、智能安防、智慧城市等行業(yè)中已經(jīng)有著廣泛的應(yīng)用,三年前在做一個ZCU106開發(fā)板的TRD(Target Reference Design)向用戶自研板卡移植HDMI設(shè)計(jì)時,遇到了一些問題,我翻出之前的筆記整理成文,與大家分享。
當(dāng)時使用的Vivado版本為2018.3,因此通篇描述都是基于Vivado 2018.3的操作。
首先,ZCU106開發(fā)板的TRD參考設(shè)計(jì)在Wiki上都是以tcl腳本形式提供的,需要我們執(zhí)行腳本創(chuàng)建工程,我選用的參考設(shè)計(jì)源文件為rdf0428-zcu106-vcu-trd-2018-3\pl\scripts\vcu_audio_proj.tcl,選用這個設(shè)計(jì)的原因是這個設(shè)計(jì)包含HDMI TX、HDMI RX、Audio,可以完整地檢驗(yàn)客戶的HDMI硬件設(shè)計(jì)是否正確。創(chuàng)建工程的步驟如下:
1. 打開Vivado 2018.3 GUI或者打開Vivado 2018.3 tcl command prompt,在tcl命令行的部分輸入命令打開vcu_audio_proj.tcl文件的存放目錄文件夾;
ZCU106 TRD文件目錄
2. source vcu_audio_proj.tcl,創(chuàng)建工程,此時vcu_audio_proj.tcl會調(diào)用vcu_audio_bd.tcl;
3. 然后我們在打印信息中可以看到如下錯誤,原因是vcu_audio_proj.tcl中的路徑定義問題;
TRD tcl腳本執(zhí)行錯誤信息
路徑定義命令
4. 解決辦法為把vcu_audio_proj.tcl和vcu_audio_bd.tcl拷貝到向上一級目錄,讓vcu_audio_proj.tcl中的路徑定義生效即可;拷貝后的路徑如下:
拷貝腳本后目錄
5. 使用Vivado 2018.3 GUI或者Vivado 2018.3 tcl command prompt打開新的vcu_audio_proj.tcl路徑位置,source vcu_audio_proj.tcl創(chuàng)建工程;
6. 此時建議備份ZCU106的TRD工程,下一步有用;
接下來我們把設(shè)計(jì)移植到用戶自己設(shè)計(jì)的硬件板卡,我的操作步驟如下:
1. 在工程設(shè)置中把Project Device從ZCU106修改為客戶的PN,我的設(shè)計(jì)中使用的是XCZU4EV-1FBVB900I;然后Vivado會提示需要Upgrade IP;
upgrade IP
2. 點(diǎn)擊Report IP Status,upgrade所有IP;
3. Upgrade IP之后會出現(xiàn)連線報錯,是因?yàn)閂ivado upgrade IP的時候VCU block里面的時鐘沒有upgrade正確,請參考ZCU106 TRD工程把VCU里面的clk_wiz_0配置為差分輸入、不要reset端口、兩路輸出時鐘、clk_out2連接好,并且連接在block design中丟失的信號連接;
信號連接丟失
需要修改的block design信號連接
需要修改的clk_wiz輸入時鐘配置
需要修改的clk_wiz輸出時鐘配置
需要修改的reset端口
4. 然后我們?nèi)?zhí)行Block Design的Validate,可以通過,但是在綜合之前產(chǎn)生block design的輸出文件時會遇到frame_buffer的錯誤如下,這個錯誤是因?yàn)楣こ搪窂匠^了260個字符,需要把工程拷貝到某個盤符的根目錄下;
frame buffer錯誤信息
5. 這時候整個設(shè)計(jì)可以綜合完,我們需要根據(jù)用戶的硬件原理圖設(shè)計(jì)修改管腳位置約束、電平標(biāo)準(zhǔn)約束等信息;如果所有約束都修改完后編譯遇到GTH的參考時鐘無法布線成功,是因?yàn)閎lock design中vid_phy_controller中參考時鐘的位置和用戶在硬件上的管腳、器件自身的位置關(guān)系等不一致;
[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封裝為例,結(jié)合用戶的原理圖設(shè)計(jì)、ZU+ MPSOC EV系列的GTH位置關(guān)系,決定了block design中的連線和vid_phy_controller中的配置:
在用戶的原理圖中,TX_REFCLK_P/N和HDMI_RX_CLK_P/N和HDMI的數(shù)據(jù)線都是放在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進(jìn)入,根據(jù)ZU4EV-FBVB900封裝的GTH位置關(guān)系,BANK224處于BANK225的North位置,所以在vid_phy_controller的配置中NI-DRU Ref Clock Selection選擇GTNORTHREFCLK1;
block design中的信號連接關(guān)系
video_phy_controller中的配置信息
ZU+MPSOC EV GTH Location
用戶原理圖設(shè)計(jì)
6. 但是在MAP階段會遇到如下錯誤,原因是這個設(shè)計(jì)使用的LUT超出了ZU4EV芯片的總量;可以使用 set_param drc.disableLUTOverUtilError 1命令讓設(shè)計(jì)向下編譯,如果不用audio部分,也可以刪除掉block design里面的audio部分;刪除audio部分之后這個設(shè)計(jì)在ZU4EV是可以放下的;
MAP錯誤信息
7. 若上一步使用刪除block design中的audio部分,block design中還有有一些信號線連接丟失,需要自己手動連接;
刪除audio模塊后手動連線
刪除audio模塊后手動連線
8. 此時編譯又遇到了URAM占用量超過ZU4EV器件總量的報錯,原因是TRD設(shè)計(jì)中VCU的默認(rèn)配置為encoder和decoder都是4Kx60fps分辨率,且encoder buffer全部使用URAM實(shí)現(xiàn),ZU4EV沒有這么多的URAM,可以修改URAM的資源實(shí)現(xiàn)方式來編譯通過;也可以減小分辨率以減少URAM占用;
VCU配置信息
最后,強(qiáng)調(diào)一下HDMI的時鐘結(jié)構(gòu),請參考Xilinx官方文檔PG235、PG236。
HDMI時鐘結(jié)構(gòu)圖
審核編輯:湯梓紅
-
HDMI
+關(guān)注
關(guān)注
32文章
1694瀏覽量
151864 -
移植
+關(guān)注
關(guān)注
1文章
379瀏覽量
28124 -
Vivado
+關(guān)注
關(guān)注
19文章
812瀏覽量
66472
發(fā)布評論請先 登錄
相關(guān)推薦
評論