引言
在上一个视频系列中(编号 21)中,我们创建了一种设计,可将模式(使用的是 LogiCORE™ IP 视频测试模式生成器 (TPG) 的核)发送到 Zynq®-7000 SoC ZC702 评估套件的板载 HDMI 中。
但这个应用硬件设计中的分辨率固定为 800x600p(在应用中无法对其进行更改)。
在本视频系列中,我们来了解一下如何修改硬件设计和应用以支持多种视频分辨率。
教程 – 在 ZC702 评估板上支持多种 HDMI 分辨率 (TX)
注意:本教程仅适用于 Vivado Design Suite 2018.1,且仅适用于 ZC702 评估板。
构建 Vivado 工程
- 下载教程文件并解压文件夹。
- 打开 Vivado Design Suite 2018.1。
- 在 Tcl 控制台中,使用 cd 导航到解压的目录:
cd
4. 在 Tcl 控制台中,用 source 来写脚本 tcl:
source ./create_proj.tcl
注意:构建设计需要有效的测试模式生成器许可证。
添加配置接口 (AXI4-Lite)
5. 双击视频定时控制器 (VTC) IP 打开其配置 GUI。
6. 启用“Include AXI4-Lite Interface”。此操作会允许我们从处理器设置 VTC IP,并允许我们从软件应用进行配置。
![](http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64961-1.jpg)
7. 单击 Default/Constant 标签,然后展开 Video Mode 选项。您可以看到 VTC IP 中包含的所有预设分辨率。
![](http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64962-2.jpg)
在这个视频系列中,我们只支持 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”。
![](http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64963-3.jpg)
11. 确保选中“All Automation”,然后单击“OK”。
![](http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64964-4.jpg)
Vivado 会自动地将 VTC IP 连接到 Zynq 处理器。
![](http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64965-5.jpg)
12. 双击时钟向导 (clk_wiz_0) 打开其配置 GUI。
13. 单击“Clocking Option”标签并启用“Dynamic Reconfig”。
![](http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64966-6.jpg)
14. 在“Output Clocks"标签中,确保将 clk_out1 设置为“40MHz”,然后启用 clk_out2 和 clk_out3 并将其频率设置为“65MHz”和“72.2MHz”。
![](http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64967-7.jpg)
15. 转到“MMCM Setting”标签,然后检查 3 个时钟的 MMCM 配置分频值。
![](http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64968-8.jpg)
16. 单击“Allow Override Mode”以保留 MMCM 设置。
![](http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64969-9.jpg)
17. 返回到“Output Clocks”标签并禁用 clk_out2 和 clk_out3。
我们将仅使用 clk_out1,更改其 Divide 设置以更改其频率。
18. 单击“OK”关闭“Clocking Wizard”的配置 GUI。
19. 在块设计上,单击“Run Connection Automation”,确保已启用“All Automation”选项,然后单击“OK”。
![](http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64970-10.jpg)
20. 验证块设计 (BD)。您应该不会收到重大警告或错误信息。保存 BD。
21. 在“Sources”窗口中,右键单击 BD 并选择“Generate Output Products”。
22. 输出产品生成结束后,在源窗口中右键单击 BD,然后单击“Create HDL wrapper”。
23. 运行 Vivado 综合和 Vivado 实现,然后生成比特流。
创建软件开发套件 (SDK) 应用
24. 将硬件导出到 SDK。单击“File > Export > Export Hardware”。
![](http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64971-11.jpg)
25. 确保已启用“Include Bitstream”并将导出位置更改为
26. 关闭 Vivado。
27. 启动赛灵思软件命令行工具 (XSCT) 2018.1。
“Start > All Programs > Xilinx Design Tools > Xilinx Software Command Line Tool 2018.1”。
使用命令 xsct(需要设置 SDK 2018.1 的环境变量)
28. 在 xsct中,cd 到解压文件夹的路径,然后输入下列命令:
source create_SW_proj.tcl
![](http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64973-13.jpg)
29. 打开 SDK 并选择 XVES_0024/sdk_workspace 作为工作空间。
此应用基于之前视频系列的应用。请注意,在此版本中,应用启动时会在代码中启用 VTC 生成器。
测试应用
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”(系统调试器)。
注意:此步骤假定您的电路板是在本地连接而不是通过服务器连接的。
![](http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64974-14.jpg)
您应该会看到显示器上显示的图案带有绿色移动框。
如果您进入显示器菜单,您会看到它准确无误地显示的 800x600@60Hz 图像。
![](http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64975-15.jpg)
更新应用以使用其他输出分辨率
您首先需要更改时钟向导的设置。您需要在时钟向导中更改的唯一参数是寄存器 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 了。
![](http://xilinx.eetrend.com/files/2019-04/wen_zhang_/100018812-64976-16.jpg)
39. 要显示 720p 输出,请尝试更改应用。
请注意,本教程中介绍的如何使用时钟向导的方法,只是更改视频时钟的一种方法。ZC702 套件内置有可编程时钟,因此也可用于此目的。
文章转载自:赛灵思中文社区论坛