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

  1. 软件平台
    vivado2019.1web
  2. 硬件平台
    PYNQ_Z2
  3. 具体操作流程
    3.1 新建一个工程
    Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第1张图片
    Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第2张图片
    create BD
    Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第3张图片
    如果不想手动连线请转到此处:利用tcl命令设计(建议使用Tcl方式)
    add zynq - IP
    Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第4张图片
    run block automation
    Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第5张图片
    配置PYNQ参数,使能HP0口,用于VDMA快速读取DDR3
    Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第6张图片
    配置时钟,FCLK_CLK0配置为100Mhz,FCLK_CLK1配置为142MHz,这个时钟用于VDMA
    Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第7张图片
    配置中断,使能IRQ_F2P,用于接收PL的中断响应信号

Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第8张图片
因为使用了boardfile,bu不需要做其他配置,点击OK

Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第9张图片
添加VDMA IP
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第10张图片
配置DMA参数

Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第11张图片
配置advanced参数,然后点击OK
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第12张图片
添加视频时序控制器
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第13张图片
配置视频时序控制器参数,取消Enable Detection
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第14张图片
add AXI4-stream to video out
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第15张图片
配置AXI-stream to video out参数(clock,timing mode)
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第16张图片
添加自定义的IP(附件)
点击 IP Catalog然后在空白处右击,点击add respository
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第17张图片
在这里插入图片描述
选择select->ok

然后添加时钟控制器
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第18张图片
添加 HDMI编码器
在这里插入图片描述

设置编码器参数,如下(可能不需要修改)
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第19张图片
点击regenerate layout (重新布局)

Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第20张图片
手动连接时钟信号
FCLK_CLK1
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第21张图片
连接clk。。。
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第22张图片

连接serialclk
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第23张图片

连接aRst_n
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第24张图片
连接一些数据传输通道信号
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第25张图片
add concat IP用于连接中断信号
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第26张图片
连接中断信号
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第27张图片
点击Run connection Automation,选择所有模块自动连接
完成所有连线

Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第28张图片
再一次
#regenerate layout
regenerate_bd_layout
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第29张图片
导出端口
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第30张图片

Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第31张图片
按F6检查设计,无误后,create HDL wrapper

Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第32张图片
添加HDMI输出的xdc文件,约束管脚
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第33张图片
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第34张图片
Pynq_Z2-hdmi输出图像、文字流程(VDMA)_第35张图片

#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

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

你可能感兴趣的:(PYNQ,vivado,入门教程)