Pynq_Z2-hdmi输出图像、文字流程(VDMA)

相关代码:附件2

1. 软件平台

vivado2019.1web

2. 硬件平台

PYNQ_Z2

3. 具体操作流程

3.1 新建一个工程

新建立一个工程hdmi_vdma

create BD
在这里插入图片描述
如果不想手动连线请转到此处:利用tcl命令设计(建议使用Tcl方式
add zynq - IP
在这里插入图片描述
run block automation
在这里插入图片描述
配置PYNQ参数,使能HP0口,用于VDMA快速读取DDR3

配置时钟,FCLK_CLK0配置为100Mhz,FCLK_CLK1配置为142MHz,这个时钟用于VDMA
在这里插入图片描述
配置中断,使能IRQ_F2P,用于接收PL的中断响应信号

在这里插入图片描述
因为使用了boardfile,bu不需要做其他配置,点击OK

在这里插入图片描述
添加VDMA IP
在这里插入图片描述
配置DMA参数

在这里插入图片描述
配置advanced参数,然后点击OK
在这里插入图片描述
添加视频时序控制器
在这里插入图片描述
配置视频时序控制器参数,取消Enable Detection
在这里插入图片描述
add AXI4-stream to video out
在这里插入图片描述
配置AXI-stream to video out参数(clock,timing mode)
在这里插入图片描述
添加自定义的IP(附件)
点击 IP Catalog然后在空白处右击,点击add respository
在这里插入图片描述
在这里插入图片描述
选择select->ok

然后添加时钟控制器
在这里插入图片描述
添加 HDMI编码器
在这里插入图片描述

设置编码器参数,如下(可能不需要修改)
在这里插入图片描述
点击regenerate layout (重新布局)

在这里插入图片描述
手动连接时钟信号
FCLK_CLK1
在这里插入图片描述
连接clk。。。
在这里插入图片描述

连接serialclk
在这里插入图片描述

连接aRst_n
在这里插入图片描述
连接一些数据传输通道信号
在这里插入图片描述
add concat IP用于连接中断信号
在这里插入图片描述
连接中断信号
在这里插入图片描述
点击Run connection Automation,选择所有模块自动连接
完成所有连线

在这里插入图片描述
再一次
#regenerate layout
regenerate_bd_layout
在这里插入图片描述
导出端口
在这里插入图片描述

在这里插入图片描述
按F6检查设计,无误后,create HDL wrapper

在这里插入图片描述
添加HDMI输出的xdc文件,约束管脚
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#hdmi_out
set_property -dict { PACKAGE_PIN L17 IOSTANDARD TMDS_33 } [get_ports { TMDS_Clk_n_0 }]; #IO_L11N_T1_SRCC_35 Sch=hdmi_tx_clk_n
set_property -dict { PACKAGE_PIN L16 IOSTANDARD TMDS_33 } [get_ports { TMDS_Clk_p_0 }]; #IO_L11P_T1_SRCC_35 Sch=hdmi_tx_clk_p

set_property -dict { PACKAGE_PIN K18 IOSTANDARD TMDS_33 } [get_ports { TMDS_Data_n_0[0] }]; #IO_L12N_T1_MRCC_35 Sch=hdmi_tx_d_n[0]
set_property -dict { PACKAGE_PIN K17 IOSTANDARD TMDS_33 } [get_ports { TMDS_Data_p_0[0] }]; #IO_L12P_T1_MRCC_35 Sch=hdmi_tx_d_p[0]
set_property -dict { PACKAGE_PIN J19 IOSTANDARD TMDS_33 } [get_ports { TMDS_Data_n_0[1] }]; #IO_L10N_T1_AD11N_35 Sch=hdmi_tx_d_n[1]
set_property -dict { PACKAGE_PIN K19 IOSTANDARD TMDS_33 } [get_ports { TMDS_Data_p_0[1] }]; #IO_L10P_T1_AD11P_35 Sch=hdmi_tx_d_p[1]
set_property -dict { PACKAGE_PIN H18 IOSTANDARD TMDS_33 } [get_ports { TMDS_Data_n_0[2] }]; #IO_L14N_T2_AD4N_SRCC_35 Sch=hdmi_tx_d_n[2]
set_property -dict { PACKAGE_PIN J18 IOSTANDARD TMDS_33 } [get_ports { TMDS_Data_p_0[2] }]; #IO_L14P_T2_AD4P_SRCC_35 Sch=hdmi_tx_d_p[2]

set_property -dict { PACKAGE_PIN R19   IOSTANDARD LVCMOS33 } [get_ports { oen_0 }]; #IO_0_34 Sch=hdmi_tx_hpdn


生成bitstream

在这里插入图片描述
在这里插入图片描述
number of jobs与电脑CPU有关,数量越多跑的越快
编译时间与电脑性能有关,现在你可以去歇会了,等待编译完成吧
…(等待着。。。半个小时了还没编译完成)
在这里插入图片描述
编译完成后,
file->export hardware->include bitstream->ok
file->luanch SDK
下面的操作参考
https://blog.csdn.net/qq_42263796/article/details/101828046
SDK部分的src部分代码将放在附件2
显示字母、符号、以及数字的库文件可以参考LCD屏幕的写法
或者下载附件2
附件2
最终图像显示效果如下
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42263796/article/details/102582242