zynq 7000 的HDMI 显示实验 | 您所在的位置:网站首页 › zynq7000开发实例代码 › zynq 7000 的HDMI 显示实验 |
用了很多年的zynq 7000,一直就没做hdmi 显示实验。前几天终于做了这个实验,也就做一个总结。 我的实验是在微相的z7-lite下根据他们的教程完成的。平台是windows 10 , Vivado 2018.3。如果硬件设计不一样,主要是替换rgb2dvi 模块和gpio 中断部分。 工程资料下载, 链接:https://pan.baidu.com/s/11-RLOYtl1AyxcQ_XGbw2YQ 提取码:zvnc 这个下载里里三个文件,一个hdmi_out 全工程67M,下了这个就包含其他2个了,如果只是ip ,可以下hmdiip(375k),如果只是源代码 hdmisrc( 15M),主要是图形数据占空间。 如果你有微相的资料,那就是 z7_Lite\03_SDK_Demo\17_hdmi_out IP准备这个实验用了2个IP,可以从 https://github.com/Digilent/vivado-library 下载。但我实验中用的是微相提供的是rgb2dvi_v1_2,这个ip 在工程的ip_repo目录里。 该链接内有 Digilent 提供的很多个自定义 IP,但这个实验只用2个。其中 axi_dynclk 是时钟发生模块,会根据不同的屏幕分辨率,自动生成相应的像素时钟和串行时钟,而rgb2dvi 模块会将图像的红绿蓝信号转换成MDS 信号, 送往 HDMI 端口发出。网上版本比较新,我本想用新版本做测试的,结果sdk的时候报错,只好用微相提供的版本。IP文件目录如下图所示: 在这里特别注意: if 文件目录也要复制,就是if 目录,其中包含了tmds 目录。ip目录下的 axi_dynclk, rgb2dvi 。图中内容复制到你的你的ip_repo,就是集中放IP的目录,我这目录下就放了其他IP。 开始的时候,我习惯只把ip 下的目录复制过来,结果通过不了。 硬件设计在 Vivado 下新建一个工程,名字为 hdmi_out。整个硬件设计是比较复杂的,我把它分为几个部分: 添加ip目录,添加并配置zynq,添加 VDMA IP,AXI-Stream Subset Converter 模块,AXI4-Stream to Video Out 模块,Video Timing Controller 模块,rgb2dvi 模块,中断合并。 图像数据的流向是:zynq的DDR中, VDMA 读取,AXI-Stream Subset Converter转换,AXI4-Stream to Video Out 模块,rgb2dvi 模块输出。 Run Automation Connect的时候,一般只勾选当时介绍的IP, 如果多勾了,与后面指定操作冲突时,可以选择脚,右键,Disconnect Pin,使它脱离连接。 添加ip 目录在主窗口左侧边栏 Project Manager 下点击 Project Settings 选项, 向工程中添加这两个自定义 IP,其实是把 IP 存放目录加上去如下图所示: 可以Project Manager -> IP Catalog 看到我们添加的IP。 新建一个原理图, 加入zynq ,原理图是这样的: 双击zynq进行设置: 点击 PS-PL Configuration 选项, 在 HP Slave AXI interface 下勾选 S AXI HP0 interface, 本节实验要用这个端口获取 DDR 中存储的图像数据。 使能 UART0,这与开发板有关,z7_lite对应的是14,15。 点击 Clock Configuration 选项,在 PL Fabric Clocks 窗口,勾选 FCLK_CLK0和 FCLK_CLK1,并将其分别设为 100, 140MHz。 其中 FCLK_CLK0 将作为 Zynq配置各个模块的时钟, 而 FCLK_CLK1 将作为图像数据流的时钟, 再点击 DDR Configuration, 选择跟开发板一致的 DDR 型号.z7_lite 是 MT41K256M16 RE-125,16 Bit 再点击 Interrupt 选项,激活 IRQ_F2P[15:0]选项,点击 OK,配置完成。 手动连接 FCLK_CLK0 到 MAXI_GPO_ACLK, 连接 FCLK_CLK1 到 S_AXI_HP0_ACLK, 检查并对比,原理图是否一致。 添加 VDMA IP如下图所示: VDMA 添加完成如下图所示:
双击上图 axi_vdma_0, 进行参数配置。 首先 Basic 选项, Address Width设为 32 bits, 寻址空间可以达到 4GB。 Frame Buffers 设为 1,取消 Enable WriteChannel 选项,因为本实验 VDMA 只从 DDR 中读取图像数据。 在 Enable Read Channel 下, 将 Line Buffer Depth 改为 4096, 其它默认, 如下图所示: |
CopyRight 2018-2019 实验室设备网 版权所有 |