相关代码:附件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
最终图像显示效果如下