PYNQ-Z2 HDMI输出图形实验

在本文中作者使用Xilinx的IP搭建一个HDMI输出图形的平台。在这个平台上设计目标是输出800*600像素的图像,本实验没有使用DDR缓存图像数据。本次实验使用到的工具:

开发板:PYNQ-Z2;

开发软件:Vivado 2018.3;

IP:TPG,VTC,Video Out,rgb2dvi。

1.新建工程

如何新建工程这里不再详解,网上有很多关于Vivado建工程的文章。唯一需要注意的是新建工程的时候要选择对应型号的ZYNQ芯片。这里我选择的是xc7z7020clg400-1。

2.新建BD

操作如下:

3添加IP核

需要添加的IP如上图所示,这是已经connected的图。其中有两个System ILA核可以不需要,这两个核是用来调试用的。至于各个IP核的配置如下。

处理器的IP配置主要是DDR的型号及地址位宽,输入时钟的频率。需要注意的是本文输出了两个时钟信号给PL部分做参考,100MHz给AXI总线做参考,40MHz给HDMI输出做PixCLK,配置如下。

在本实验中作者使用TPG(Video Test Pattern Generator)作为图像数据源,我们可以通过AXI总线来动态配置其参数。默认的设置如下。

VTC(Video Time Controller)的作用是产生HDMI输出图像的时序。其设置如下:

 

接下来是Video Out的设置。

接下来的这个IP不是Xilinx自带的IP,rgb2dvi这个IP是Digilent开源的IP,可以在其官网上下载到,https://github.com/Digilent/vivado-library。下载好这个IP后,需要添加IP依赖才能使用。

在弹出来的对话框中找到该IP存放的文件路径,点击OK即可。

rgb2dvi的设置如下:

按照上面的操作就可连接各个IP的端口了,有些连接线可以自动连接。完成之后生成设计文件,添加约束,以及生成BIT文件。然后到处硬件,启动SDK。SDK的代码参考http://xilinx.eetrend.com/content/2019/100018845.html这篇文章。

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xv_tpg.h"

XV_tpg tpg_inst;

int Status;


int main()
{
    init_platform();

    print("Hello World\n\r");

    /* Insert the code for the TPG here */
    Status = XV_tpg_Initialize(&tpg_inst, XPAR_V_TPG_0_DEVICE_ID);
    if(Status!= XST_SUCCESS)
    {
    	xil_printf("TPG configuration failed\r\n");
        	return(XST_FAILURE);
    }

    // Set Resolution to 800x600
    XV_tpg_Set_height(&tpg_inst, 600);
    XV_tpg_Set_width(&tpg_inst, 800);

    // Set Color Space to RGB
    XV_tpg_Set_colorFormat(&tpg_inst, 0x0);

    //Set pattern to color bar
    XV_tpg_Set_bckgndId(&tpg_inst, XTPG_BKGND_COLOR_BARS);

    //Start the TPG
    XV_tpg_EnableAutoRestart(&tpg_inst);
    XV_tpg_Start(&tpg_inst);
    xil_printf("TPG started!\r\n");
    /* End of TPG code*/


    cleanup_platform();
    return 0;
}

下载到板子上显示器输出如下

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值