当前位置: 首页 > news >正文

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

目录

  • 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名片。
网盘资料如下:
在这里插入图片描述

相关文章:

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

目录1、前言2、Video Mixer的不便之处3、FDMA取代Video Mixer实现视频叠加输出4、Vivado工程详解5、上板调试验证并演示6、福利:工程代码的获取1、前言 关于Zynq使用Video Mixer方案实现视频叠加输出方案请参考点击查看:Video Mixer方案 对于Zynq和Micr…...

从零实现Web服务器(二): 线程池以及线程池的作用,Get和Post的区别,项目中如何编写数据库连接池,定时器优化非活跃连接

文章目录一、线程池以及线程池的作用二、手写线程池三、Get和Post的区别四、如何编写数据库连接池五、定时器优化非活跃连接5.1. 基于排序链表实现。5.2. 基于小根堆实现。5.3. 基于红黑树实现。5.4. 基于时间轮实现。5.4.1 单时间轮实现5.4.2 多时间轮实现一、线程池以及线程池…...

为什么伟大的产品只专注做一件事

uber 不允许你预订出租车。亚马逊一开始只是卖书。谷歌只是一个搜索引擎。麦当劳没有餐具。不知为什么,我们仍然相信一个产品要想成功,它必须做很多事情。这通常发生在两种情况下:当新产品试图让市场相信它们是值得的,或者当公司提…...

pycharm远程连接服务器,并单步调试服务器上的代码

每天都有不同的朋友来Push我 那如果比较健忘的话,为啥不问一下chatGPT呢 问题的缘由在我想在本地单步调试代码。。。 我的代码完全在云端服务器的,还有数据集都是,但实际上本地代码可以通过pycharm给他传上去。 但是在后面配置的时候需要两…...

JVM05 方法区

Person:存放在元空间,也可以说方法区 person:存放在Java栈的局部变量表中 new Person():存放在Java堆中 1.方法区的理解 方法区主要存放的是 Class,而堆中主要存放的是 实例化的对象 方法区(Method Area…...

盘点3个.Net开发的WMS仓库管理系统

更多开源项目请查看:一个专注推荐.Net开源项目的榜单 仓库管理系统在企业中,重要性越来越高,不仅可以提高效率,还能降低企业的压力,企业通过协调和优化资源使用和物料流动,能极大程度地提升了管理效率&…...

Linux下Java项目开机自动启动

Linux下Java项目开机自动启动1、在Linux上设置开机启动Java程序,例如:test.jar在Linux上启动Java程序的命令:2、可以将程序启动的指令做成一个shell脚本,简单的做法创建一个test.sh文件,内容如下:3、最重要的一步就是修…...

基于SpringBoot的智慧社区网站

文末获取源码 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏…...

数据分析与SAS学习笔记3

SAS在最新的展示图,表现力比较丰富。 SAS的处理流程: 数据步 过程步: ETL是数据分析非常重要的步骤。70%-90%花在收集数据以及整理数据,数据分析数据的时间不是很多的。 一个完整的数据步和过程步: 数据步基本语句总…...

天干地支蓝桥杯国赛

题目 分析 蓝桥杯国赛2020简单模拟题&#xff0c;你敢信&#xff0c;就是弄两个字符串数组。重点在于知道0000年是从哪个天干和地支开始的。 代码 #include <iostream> using namespace std;int year;int main() {cin >> year;string tiangan[10] {"geng&…...

Source lnsight工具的简单使用

多文件编程推荐用Source lnsight工具来进行编写 一、Source lnsight工具的简单使用 1、在桌面上新建一个文件夹factory&#xff0c;在文件夹里新建一个cat.c文件和si文件夹 2、打开Source lnsight工具&#xff0c;点击上方Project--->New Project 3、把文件夹factory中si文…...

100个变态的软件测试面试题及答案!——看完变态面试官对你竖起大拇指!

【纯干货&#xff01;&#xff01;&#xff01;】花费了整整3天&#xff0c;整理出来的全网最实用软件测试面试大全&#xff0c;一共30道题目答案的纯干货&#xff0c;希望大家多多支持&#xff0c;建议 点赞&#xff01;&#xff01;收藏&#xff01;&#xff01;长文警告&…...

Windows保护机制GS:原理及SEH异常处理突破

前言 本次文章只用于技术讨论&#xff0c;学习&#xff0c;切勿用于非法用途&#xff0c;用于非法用途与本人无关&#xff01; 所有环境均为本地环境分析&#xff0c;且在本机进行学习。 GS机制并没有对SEH提供保护&#xff0c;换句话说我们可以通过攻击程序的异常处理达到绕…...

大彩 串口屏

资料下载 视频 屏幕程序创建 创建 主界面设置 实现按钮和文本的添加&#xff0c;实现画面的切换 下面注释4有点问题&#xff0c;切换画面还是会下传指令集&#xff0c;只是无法在软件中进行指令集的设置了 按钮界面 首先第一步同上添加背景图片&#xff0c;然后添加…...

安装 cplex 求解器

安装 cplex 求解器 安装 cplex 求解器和python-docplexcplex 安装matlab 用户安装 cplexpython 版本安装 cplex 求解器和python-docplex cplex 安装 cplex 是解决优化问题的一个工具箱&#xff0c;用来线性规划、混合整数规划和二次规划的高性能数学规划求解器。可以理解成&a…...

DPR-34 AC22V【双位置继电器】

系列型号&#xff1a; DPR-20双位置继电器&#xff1b;DPR-31双位置继电器&#xff1b; DPR-32双位置继电器&#xff1b;DPR-33双位置继电器&#xff1b; DPR-34双位置继电器&#xff1b;DPR-35双位置继电器&#xff1b; DPR-11双位置继电器&#xff1b;DPR-12双位置继电器&…...

Ubuntu16.04搭建Fabric1.4环境

一、换源 为了提高下载速度&#xff0c;将ubuntu的源改成国内的源&#xff08;推荐阿里云源和清华源&#xff09; apt源保存在 /etc/apt/sources.list / 代表根目录 /etc 这个文件夹几乎放置了系统的所有配置文件 1.备份 sudo cp /etc/apt/sources.list sources_backup.l…...

【JavaScript】深度剖析prototype与__proto__到底是什么以及他们的关系

一个对象的 __proto__ 指向的是这个对象的构造函数的 prototype。 prototype 是什么 prototype 是函数的属性&#xff0c;是一个继承自 Object 的对象&#xff0c;默认的 prototype 只有一个属性&#xff0c;其中包含 constructor&#xff0c;指向当前函数自身。 Ctor.proto…...

css选择器

目录1、基本选择器&#xff08;1&#xff09;id选择器&#xff08;2&#xff09;类选择器&#xff08;3&#xff09;标签选择器&#xff08;4&#xff09;逗号选择器&#xff08;5&#xff09;*选择器&#xff08;通配符选择器&#xff09;2、包含选择器&#xff08;1&#xff…...

MyBatis详解2——增删改查操作

一、SpringBoot单元测试 1.1什么是单元测试 单元测试是指对软件中的最小测试单元进行检查和验证的过程。 执行单元测试就是为了证明某段代码的执行结果是否符合我们的预期。如果测试通过则是符合预期&#xff0c;否则测试失败。 1.2单元测试的好处 1.单元测试不用启动Tomca…...

通过Taotoken CLI工具一键配置团队所有成员的开发环境

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过Taotoken CLI工具一键配置团队所有成员的开发环境 当团队开始使用多个大模型进行开发时&#xff0c;为每位成员逐一配置API密钥…...

ARM9EJ-S核心调试技术与系统速度访问机制解析

1. ARM9EJ-S核心调试技术概述 在嵌入式系统开发领域&#xff0c;调试技术的重要性不亚于代码编写本身。ARM9EJ-S作为经典的嵌入式处理器核心&#xff0c;其调试子系统设计体现了ARM架构对开发效率的深度考量。这套调试系统不仅仅是简单的"暂停-查看"工具&#xff0c;…...

AI智能体技能管理:MCP服务器安装配置与实战指南

1. 项目概述&#xff1a;一个为AI智能体管理“技能”的MCP服务器 最近在折腾AI智能体&#xff08;Agent&#xff09;开发的朋友&#xff0c;应该都遇到过同一个痛点&#xff1a;想让你的Claude、GPT或者Gemini去执行一些特定的、复杂的任务&#xff0c;比如调用某个API、处理特…...

智能体工程:从氛围编程到结构化AI辅助开发方法论

1. 项目概述&#xff1a;从“氛围编程”到“智能体工程”如果你和我一样&#xff0c;在过去一年里深度使用过 Claude Code、Cursor 或者 GitHub Copilot 来写代码&#xff0c;大概率经历过两种极端状态&#xff1a;一种是“哇&#xff0c;这 AI 太神了&#xff0c;我动动嘴皮子…...

Flutter 状态管理架构设计完全指南

Flutter 状态管理架构设计完全指南 引言 状态管理是 Flutter 应用开发的核心问题之一。一个好的状态管理架构能够使代码更加清晰、可维护和可测试。本文将深入探讨 Flutter 状态管理的各种架构模式和最佳实践。 状态管理概述 Flutter 中的状态可以分为以下几类&#xff1a; 局部…...

为什么顶尖AI产品团队正秘密重构设计系统?——AI原生用户体验的4层认知断层与SITS 2026破局公式

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI原生用户体验设计&#xff1a;SITS 2026交互设计新趋势 AI原生体验不再将模型能力“封装后隐藏”&#xff0c;而是让智能成为界面的第一公民——用户在输入框中键入自然语言时&#xff0c;系统实时推…...

从‘沙滩球’反推断层运动:手把手用Python绘制震源机制解

从‘沙滩球’反推断层运动&#xff1a;手把手用Python绘制震源机制解 地震学研究中最直观的工具莫过于震源机制解图示——那个黑白相间、形似沙滩球的图案。这种专业图表不仅能展示断层的三维运动特征&#xff0c;还能帮助研究者快速判断地震类型。本文将带您用Python从零实现沙…...

Windows Cleaner:专业级Windows系统优化终极指南

Windows Cleaner&#xff1a;专业级Windows系统优化终极指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款专为Windows系统设计的开源系统…...

FPGA宽带信号监测与FFT频域分析系统【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导&#xff0c;毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;多相非均匀滤波器组与奇型子带交叠信道化&#xff…...

AI原生对话系统设计终极指南(SITS 2026官方参考架构深度解构)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI原生对话系统设计&#xff1a;SITS 2026聊天机器人架构解析 SITS 2026&#xff08;Semantic-Intelligent Turn-Synchronized&#xff09;是面向多模态实时交互场景构建的AI原生对话系统框架&#xf…...