<strong>引言</strong>
在上一个视频系列中(<u><a href="https://forums.xilinx.com/t5/Video/Video-Series-21-TPG--on-ZC702/td-p/9…; target="_blank" rel="noopener">编号 21</a></u>)中,我们创建了一种设计,可将模式(使用的是 LogiCORE™ IP 视频测试模式生成器 (TPG) 的核)发送到 Zynq®-7000 SoC ZC702 评估套件的板载 HDMI 中。
但这个应用硬件设计中的分辨率固定为 800x600p(在应用中无法对其进行更改)。
在本视频系列中,我们来了解一下如何修改硬件设计和应用以支持多种视频分辨率。
<strong>教程 – 在 ZC702 评估板上支持多种 HDMI 分辨率 (TX)</strong>
注意:本教程仅适用于 Vivado Design Suite 2018.1,且仅适用于 ZC702 评估板。
<strong>构建 Vivado 工程</strong>
<body>
<ol>
<li><a href="https://forums.xilinx.com/xlnx/attachments/xlnx/support_blog/3/2/XVES_0…; target="_blank" rel="noopener">下载教程文件</a>并解压文件夹。</li>
<li>打开 Vivado Design Suite 2018.1。</li>
<li>在 Tcl 控制台中,使用 cd 导航到解压的目录:</li>
</ol>
</body>
cd <path>/XVES_0022
4. 在 Tcl 控制台中,用 source 来写脚本 tcl:
source ./create_proj.tcl
注意:构建设计需要有效的测试模式生成器许可证。
<strong>添加配置接口 (AXI4-Lite)</strong>
5. 双击视频定时控制器 (VTC) IP 打开其配置 GUI。
6. 启用“Include AXI4-Lite Interface”。此操作会允许我们从处理器设置 VTC IP,并允许我们从软件应用进行配置。
<center><img src="http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64961-1.jp…; alt=""></center>
7. 单击 Default/Constant 标签,然后展开 Video Mode 选项。您可以看到 VTC IP 中包含的所有预设分辨率。
<center><img src="http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64962-2.jp…; alt=""></center>
在这个视频系列中,我们只支持 800x600p、1024x768p 和 720p(1280x720p)。
我们在网上可以找到这些分辨率的像素时钟,1024x768p 适用于 65 MHz,而 1280x720p 适用于 72.2 MHz。
(请注意,800x600 所需的时钟为 40 MHz)。
8. 保持视频模式为 800x600p。
9. 单击“OK”关闭 VTC IP 的配置 GUI。
10. 在块设计上单击“Run Connection Automation”。
<center><img src="http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64963-3.jp…; alt=""></center>
11. 确保选中“All Automation”,然后单击“OK”。
<center><img src="http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64964-4.jp…; alt=""></center>
Vivado 会自动地将 VTC IP 连接到 Zynq 处理器。
<center><img src="http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64965-5.jp…; alt=""></center>
12. 双击时钟向导 (clk_wiz_0) 打开其配置 GUI。
13. 单击“Clocking Option”标签并启用“Dynamic Reconfig”。
<center><img src="http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64966-6.jp…; alt=""></center>
14. 在“Output Clocks"标签中,确保将 clk_out1 设置为“40MHz”,然后启用 clk_out2 和 clk_out3 并将其频率设置为“65MHz”和“72.2MHz”。
<center><img src="http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64967-7.jp…; alt=""></center>
15. 转到“MMCM Setting”标签,然后检查 3 个时钟的 MMCM 配置分频值。
<center><img src="http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64968-8.jp…; alt=""></center>
16. 单击“Allow Override Mode”以保留 MMCM 设置。
<center><img src="http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64969-9.jp…; alt=""></center>
17. 返回到“Output Clocks”标签并禁用 clk_out2 和 clk_out3。
我们将仅使用 clk_out1,更改其 Divide 设置以更改其频率。
18. 单击“OK”关闭“Clocking Wizard”的配置 GUI。
19. 在块设计上,单击“Run Connection Automation”,确保已启用“All Automation”选项,然后单击“OK”。
<center><img src="http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64970-10.j…; alt=""></center>
20. 验证块设计 (BD)。您应该不会收到重大警告或错误信息。保存 BD。
21. 在“Sources”窗口中,右键单击 BD 并选择“Generate Output Products”。
22. 输出产品生成结束后,在源窗口中右键单击 BD,然后单击“Create HDL wrapper”。
23. 运行 Vivado 综合和 Vivado 实现,然后生成比特流。
<strong>创建软件开发套件 (SDK) 应用</strong>
24. 将硬件导出到 SDK。单击“File > Export > Export Hardware”。
<center><img src="http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64971-11.j…; alt=""></center>
25. 确保已启用“Include Bitstream”并将导出位置更改为 <path>/XVES_0022/sdk_export。
<center><img src="http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64972-12.j…; alt=""></center>
26. 关闭 Vivado。
27. 启动赛灵思软件命令行工具 (XSCT) 2018.1。
<li>Windows:</li>
“Start > All Programs > Xilinx Design Tools > Xilinx Software Command Line Tool 2018.1”。
<li>命令行:</li>
使用命令 xsct(需要设置 SDK 2018.1 的环境变量)
28. 在 xsct中,cd 到解压文件夹的路径,然后输入下列命令:
source create_SW_proj.tcl
<center><img src="http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64973-13.j…; alt=""></center>
29. 打开 SDK 并选择 XVES_0024/sdk_workspace 作为工作空间。
此应用基于之前视频系列的应用。请注意,在此版本中,应用启动时会在代码中启用 VTC 生成器。
<strong>测试应用</strong>
30. 构建 tpg_hdmi_zc702_app 应用。
31. 确保将 ZC702 连接到 UART、JTAG 和 HDMI。
32. 单击“Xilinx > Program FPGA”,然后,选择程序。
33. 在 SDK 中,在项目资源管理器中,右键单击 tpg_hdmi_zc702_app 应用,然后选择“Run As >Launch on Hardware”(系统调试器)。
注意:此步骤假定您的电路板是在本地连接而不是通过服务器连接的。
<center><img src="http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64974-14.j…; alt=""></center>
您应该会看到显示器上显示的图案带有绿色移动框。
如果您进入显示器菜单,您会看到它准确无误地显示的 800x600@60Hz 图像。
<center><img src="http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64975-15.j…; alt=""></center>
<strong>更新应用以使用其他输出分辨率</strong>
您首先需要更改时钟向导的设置。您需要在时钟向导中更改的唯一参数是寄存器 0x208 中的 CLKOUT0 DIV。
请注意,寄存器的位 [17:8] 表示 DIV 值的小数部分,位 [7:8] 表示整数部分。
对于 65 MHz,要将 DIV 设置为 10,寄存器值将为 0x08。 对于 40 MHz,要将 DIV 设置为 16.250,寄存器值将为 0xFA10。
34. 将以下代码添加到应用 (tpg_hdmi_ZC702.c):
/* Clocking Wizard Configuration */
//Configure the CLKOUT0 DIV
Xil_Out32(ClkWiz_CfgPtr->BaseAddr + 0x208, 0x000A);
/* End of clocking wizard configuration */
然后,您需要通过设置时钟向导的寄存器 0x25C 中的值 0x1 来加载时钟配置。
35. 要设置应用,请添加以下代码:
/* Clocking Wizard Configuration */
//Configure the CLKOUT0 DIV
Xil_Out32(ClkWiz_CfgPtr->BaseAddr + 0x208, 0x000A);
Xil_Out32(ClkWiz_CfgPtr->BaseAddr + 0x25C, 0x3);
/* End of clocking wizard configuration */
36. 将应用中的 TPG 输出分辨率更改为 1024x768。
//Configure the TPG
app_hdmi_conf_tpg(&tpg_inst, 768, 1024, 0x2, XTPG_BKGND_COLOR_BARS);
最后,您需要更改 VTC 的配置。
37. 要设置应用,请添加以下代码:
请注意,VMODE_XGA 代表 1024x768 的视频分辨率(XVTC_VMODE_SVGA 适用于 800x600、XVTC_VMODE_720P 适用于 720P)
/* VTC Configuration */
XVtc_ConvVideoMode2Timing(&VtcInst,XVTC_VMODE_XGA,&XVtc_Timingconf);
XVtc_SetGeneratorTiming(&VtcInst, &XVtc_Timingconf);
XVtc_RegUpdate(&VtcInst);
/* End of VTC Configuration */
38. 重新构建应用、重新对 PL 进行编程(Xilinx>Program)并重新启动应用。
现在,检测器菜单应该会按预期指示输出分辨率为 1024x768 了。
<center><img src="http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64976-16.j…; alt=""></center>
39. 要显示 720p 输出,请尝试更改应用。
请注意,本教程中介绍的如何使用时钟向导的方法,只是更改视频时钟的一种方法。ZC702 套件内置有可编程时钟,因此也可用于此目的。
文章转载自:<a href="https://forums.xilinx.com/t5/Xilinx-%E4%BA%A7%E5%93%81%E8%AE%BE%E8%AE%A… </a>