Zynq非Video Mixer方案实现视频叠加输出,无需SDK配置,提供工程源码和技术支持

news2024/11/17 15:49:51

目录

  • 1、前言
  • 2、Video Mixer的不便之处
  • 3、FDMA取代Video Mixer实现视频叠加输出
  • 4、Vivado工程详解
  • 5、上板调试验证并演示
  • 6、福利:工程代码的获取

1、前言

关于Zynq使用Video Mixer方案实现视频叠加输出方案请参考点击查看:Video Mixer方案
对于Zynq和Microblaze的用户而言,要想实现视频叠加输出,多半要使用Xilinx推荐的Video Mixer方案,该方案目前来说稳定可靠,但并非完美,需要SDK配置,且配置C语言程序比较复杂,对于不熟悉嵌入式c开发的FPGA工程师而言比较困难,本文就是要去掉Video Mixer直接实现于Zynq和Microblaze的视频叠加输出;
本文详细描述了设计方案,工程代码编译通过后上板调试验证,文章末尾有演示视频;
可直接项目移植,适用于在校学生做毕业设计、研究生项目开发;
也适用于在职工程师做项目开发,可应用于医疗、军工等行业的数字成像和图像传输领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;
前面写过一篇Zynq中取代VDMA的文章点击查看:取代VDMA
前面写过一篇在纯FPGA上实现视频叠加输出的文章纯FPGA上实现视频叠加本文也是基于该设计修改的;

2、Video Mixer的不便之处

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

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

3、FDMA取代Video Mixer实现视频叠加输出

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

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

FDMA与Zynq的PS端DDR图像缓存后叠加输出大体架构如下:
在这里插入图片描述
就这么简单的实现了Zynq系列PL与PS交互的图像缓存方案;

4、Vivado工程详解

开发板:Xilinx Zynq7100开发板;
开发环境:Vivado2019.1;
输入:Ov5640摄像头,分辨率960x540;
输出:HDMI,分辨率1920x1080;

工程架构如下:
在这里插入图片描述
整个处理过程Zynq的PS端仅仅提供了一个时钟给到PL端而已,其他任何事儿没干,够简单了吗?正因为PS端除了时钟外啥事儿没干,所以在SDK里只需要跑一个Hello Word死循环就足矣;而且还是官方自己生成的Hello Word,根本不需要写任何c语言代码,玩儿zyqn就这么简单。。。
ov5640配置为960x540分辨率,并复制为4路模拟4路图像输入,调用4路FDMA实现图像缓存,然后分地址读出4路图像叠加在1080P的VGA时序上输出。
工程BD如下:
在这里插入图片描述
Ov5640摄像头分辨率设置如下:这里设置分辨率为960x540;
在这里插入图片描述
VGA时序输出图像起始坐标和显示总大小设置如下:这里设置为1920x1080;
在这里插入图片描述
图像起始坐标设置为0,也就是从屏幕左上角处开始显示;
显示总大小设置为1920x1080,刚好放得下4路960x540的视频叠加;
导出硬件后的代码架构如下:
在这里插入图片描述
SDK代码如下:真的就只有Hello Word;

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

5、上板调试验证并演示

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

Zynq非Video Mixer方案实现视频叠加输出

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/350112.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch:Security API 介绍

在我之前的文章 “Elasticsearch:运用 API 创建 roles 及 users” ,我展示了如何使用 Security API 来创建用户及角色来控制访问 Elasticsearch 中的索引。在今天的文章中,我将展示一个使用 Security API 来创建一个用户及角色来访问一个索引…

双指针【灵神基础精讲】

来源0x3f:https://space.bilibili.com/206214 文章目录同向双指针[209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/)[713. 乘积小于 K 的子数组](https://leetcode.cn/problems/subarray-product-less-than-k/)[3. 无重复字符的最…

计算机相关专业毕业论文选题推荐

计算机科学以下是我推荐的20个计算机科学专业的本科论文选题:基于机器学习的推荐算法研究与实现基于区块链技术的数字身份认证方案设计与实现基于深度学习的图像识别技术研究与应用基于虚拟现实技术的教育培训平台设计与实现基于物联网技术的智能家居系统研究与开发…

Dubbo与Spring Cloud优缺点分析(文档学习个人理解)

文章目录核心部件1、总体框架1.1 Dubbo 核心部件如下1.2 Spring Cloud 总体架构2、微服务架构核心要素3、通讯协议3.1 Dubbo3.2 Spring Cloud3.3 性能比较4、服务依赖方式4.1 Dubbo4.2 Spring Cloud5、组件运行流程5.1 Dubbo5.2 Dubbo 运行组件5.3 Spring Cloud5.4 Spring Clou…

[数据治理-02]一个例子搞懂元数据、参考数据、主数据、交易数据...的关系

杜威说过“所有知识都是分类”!很好理解,分类是认知经济,任何有效分类,都可以极大地节省我们的认知精力。谈到数据就必须做个分类,谈到数据分类可以从多个维度出发,比如按业务维度、这是财务数据、那是人力…

C++ ——多态 下 (图解多态原理、虚函数的再认知)

目录 一、抽象类 1)抽象类定义 2)抽象类的继承 3)抽象类实现多态 4)抽象类的好处 二、多态的实现原理 1)虚函数的存储方式 2)子类中虚函数的存储方式 ① 子类将基类中的虚表原封不动的拷贝到自己的…

【原创】java+swing+mysql教师管理系统设计与实现

教师管理系统主要是方便学校对教师进行管理,本文主要介绍如何使用java的swing窗体控件和mysql数据库去设计一个简单的教师管理系统。 功能分析: 本系统为javaswingmysql的教师管理系统,管理员、教师 功能如下: 管理员&#xff…

Quartz入门教程

本文参考文章编写 Quartz 官网 Quartz 是 OpenSymphony 开源组织在 Job Scheduling 领域又一个开源项目,是完全由 Java 开发的一个开源任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时&#xff…

2022——寒假总结

文章目录背景报名摸索结果总结背景 大一上学期,刚上大学没有尽快适应,什么都没有学到。 因为疫情,所以平时的测试以及期末都是线上进行的,就没怎么认真学,网课直接划水。 我的生活与学习很不平衡,还热衷于参…

搭建hadoop高可用集群(二)

搭建hadoop高可用集群(一)配置hadoophadoop-env.shworkerscore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml/etc/profile拷贝集群首次启动1、先启动zk集群(自动化脚本)2、在hadoop151,hadoop152,hadoop153启动JournalNode…

【Kubernetes】【八】Namespace和Pod

第四章 实战入门 本章节将介绍如何在kubernetes集群中部署一个nginx服务,并且能够对其进行访问。 Namespace ​ Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。 ​ 默认情况下&…

java ssm自习室选座预约系统开发springmvc

人工管理显然已无法应对时代的变化,而自习室选座预约系统开发能很好地解决这一问题,既能提高人力物力,又能提高预约选座的知名度,取代人工管理是必然趋势。 本自习室选座预约系统开发以SSM作为框架,JSP技术&#xff0c…

昇腾CANN算子开发揭秘

开发者在利用昇腾硬件进行神经网络模型训练或者推理的过程中,可能会遇到以下场景:1、训练场景下,将第三方框架(例如TensorFlow、PyTorch等)的网络训练脚本迁移到昇腾AI处理器时遇到了不支持的算子。2、推理场景下&…

buu [WUSTCTF2020]大数计算 1

题目描述: 题目分析: part1:直接用 阶乘计算器,得出答案38609695part2:python代码,得出答案:67358675 print(520**13142333**666)part3:直接搜索宇宙终极问题,得到以下知识: 题目就是要我们给…

德赛西威NAV75*-SV731*导航升级(凯立德J30)实战

一、前言:升级导航德赛西威(2015年买的)地图几年没升级过了(之前自己折腾了一个)之前的启动是DSA2013(电子G已经无法升级数据文件了,本次只升级地图J30图资-凯立德)主程序版本&#…

超实用的小红书内容营销策略分享!纯干货

抓住小红书内容流量密码就是掌握了财富,越来越多的品牌方和商家都在小红书上收获了相当可观的用户流量,如果你的小红书营销没有什么起色,那绝对是没有走对方向。 小红书是一个内容为王的平台,如果你还不懂下面这些小红书内容营销…

VSCode设置eslint自动缩进和自动格式化代码

文章目录VSCode设置eslint自动缩进和自动格式化代码1、找到VS Code的settings.json文件2、修改settings.json文件内容为如下内容3、打开项目根文件夹下的 .eslintrc.js文件4、在rules 下配置“缩进几个空格”5、配置完保存,结束配置。VSCode设置eslint自动缩进和自动…

Linux——操作系统安装

个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。个人爱好: 编程,打篮球,计算机知识个人名言:海不辞水,故能成其大;山不辞石…

初识自动化测试工具——katalon

一、什么是Katalon Katalon Studio 是一款免费的自动化测试工具,可以安装在windows、macOS、linux操作系统上,基于selenium 和 Appium 测试框架,并集成了这些框架的优点。工具使用简单方便,对于编码经验少,能力弱的测…

mysql调优-内存缓冲池

因本地查询和服务器查询相比服务器慢了很多,同样的数据,同样的sql查询,考虑了是不是链接太多了,自行查询了下,我使用的c3p0的链接池,配置一个小时超时,正常情况下是20多个链接,而mys…