Zynq非VDMA方案实现视频3帧缓存输出,无需SDK配置,提供工程源码和技术支持

文章介绍了VDMA在视频缓存输出中的不便之处,如资源消耗、SDK配置复杂等,并提出使用FDMA作为替代方案,简化了流程,降低了开发难度。作者提供了使用FDMA直接将图像缓存到ZynqPS端DDR的实现方法,详细阐述了工程结构和Vivado设置,并展示了上板调试结果。文章还附带了工程代码的获取方式。
摘要由CSDN通过智能技术生成

1、前言

对于Zynq和Microblaze的用户而言,要想实现图像缓存输出,多半要使用Xilinx推荐的VDMA方案,该方案目前来说稳定可靠,但并非完美,本文就是要去掉VDMA直接实现于Zynq和Microblaze的图像缓存输出;

2、VDMA的不便之处

就目前而言,VDMA有如下不便之处:

1:需要将视频转为AXI4-Stream流,无论是自己用fifo转还是使用官方的Video In to AXI4-Stream IP转,无疑都增加了资源消耗,对资源紧张的FPGA不宜,再者也加大了FPGA开发难度,对于刚入门的兄弟而言望而却步,最后,Video In to AXI4-Stream这个 IP也是个黑箱,出了问题排查问题太繁琐;
2:需要SDK配置,跑个VDMA还要打开SDK去调用官方库函数进行一大堆配置,无疑是烦,加之有些做硬件的兄弟c语言水平跟我一样菜,根本就搞不定嵌入式C,只想安安心心地干点儿FPGA的活儿就这么难吗?哈哈。。。
3:VDMA输出还要调用Video Time Controller和AXI4-Stream to Video
Out这两个IP才能实现AXI4-Stream视频流到VGA时序的转换,实属费力又不讨好,还是同样的问题,增加资源消耗,黑箱操作,出了问题排查太繁琐;

3、FDMA取代VDMA实现视频缓存输出

前面的文章大量使用过FDMA,但都是讲图像缓存至FPGA的DDR,这次用FDMA将图像缓存至Zynq器件PS端的DDR,FDMA具有以下优势:

1:不需要将输入视频转为AXI4-Stream流;节约资源,开发难度低;
2:不需要SDK配置,不要要会嵌入式C,纯FPGA开发者的福音;
3:看得到的源码,不存在黑箱操作问题;

关于FDMA三帧缓存,请参考我之前写的文章点击查看:FDMA三帧缓存方案
这里,我们将FDMA做了修改,使得输入分辨率由原来的参数类型变为输入类型,这样的好处是方便配置;
FDMA与Zynq的PS端DDR图像缓存大体架构如下:
在这里插入图片描述
就这么简单的实现了Zynq系列PL与PS交互的图像缓存方案;

4、Vivado工程详解

开发板:Xilinx Zynq7100开发板;
开发环境:Vivado2019.1;
输入:Ov5640摄像头,分辨率1280x720;
输出:HDMI,分辨率1920x1080;
工程架构如下:
在这里插入图片描述
整个处理过程Zynq的PS端仅仅提供了一个时钟给到PL端而已,其他任何事儿没干,够简单了吗?正因为PS端除了时钟外啥事儿没干,所以在SDK里只需要跑一个Hello Word死循环就足矣;而且还是官方自己生成的Hello Word,根本不需要写任何c语言代码,玩儿zyqn就这么简单。。。
工程BD如下:
在这里插入图片描述
导出硬件后的代码架构如下:
在这里插入图片描述
SDK代码如下:真的就只有Hello Word;

int main()
{
    init_platform();
    print("Hello World\n\r");
    cleanup_platform();
    return 0;
}

5、上板调试验证并演示

静态演示如下:
在这里插入图片描述

6、福利:工程代码的获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

9527华安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值