漯河网站推广多少钱,自己怎么建h5商城网站,北京网站设计公司wyhseo,免费域名注册服务网站目录 1、前言免责声明 2、相关方案推荐FPGA图像处理方案FPGA视频拼接叠加融合方案推荐 3、设计思路详解Video Mixer介绍 4、工程代码1#xff1a;2路视频拼接 HDMI 输出PL 端 FPGA 逻辑设计PS 端 SDK 软件设计 5、工程代码2#xff1a;4路视频拼接 HDMI 输出PL 端 FPGA 逻辑设… 目录 1、前言免责声明 2、相关方案推荐FPGA图像处理方案FPGA视频拼接叠加融合方案推荐 3、设计思路详解Video Mixer介绍 4、工程代码12路视频拼接 HDMI 输出PL 端 FPGA 逻辑设计PS 端 SDK 软件设计 5、工程代码24路视频拼接 HDMI 输出PL 端 FPGA 逻辑设计PS 端 SDK 软件设计 6、工程移植说明vivado版本不一致处理FPGA型号不一致处理其他注意事项 7、上板调试验证并演示准备工作输出静态演示输出动态演示 8、福利工程源码获取 Xilinx Zynq-7000系列FPGA实现视频拼接显示提供两套工程源码和技术支持 1、前言
没玩过视频拼接都不好意思说自己玩儿过FPGA这是CSDN某大佬说过的一句话鄙人深信不疑。。。 目前市面上主流的FPGA视频拼接方案如下 1Xilinx的HLS方案该方案简单易于实现但只能用于Xilinx自家的FPGA 2非纯Verilog方案大部分代码使用Verilog实现但中间的fifo或ram等使用了IP导致移植性变差难以在Xilinx、Altera和国产FPGA之间自由移植 3纯Verilog方案
本文使用Xilinx Zynq7000系列FPGA Zynq7020实现HLS图像缩放输入视频源采用OV5640摄像头模组FPGA采集OV5640摄像头视频DVP转RGB888调用Zynq软核的片内i2c控制器将OV5640配置为960x54030Hz分辨率工程用一路摄像头数据复制一份来模拟两路摄像头输入然后调用2个Xilinx官方的Video In to AXI4-Stream IP核将RGB视频流转换为AXI4-Stream视频流然后调用2个Xilinx官方的VDMA IP将视频做PS侧DDR3的视频缓存操作VDMA需要Zynq软件配置为三帧缓存其本质为通过AXI_Lite 做寄存器配置然后调用Xilinx官方的Video Mixer IP核做两路视频拼接操作Video Mixer需要Zynq软件配置为三帧缓存其本质为通过AXI_Lite 做寄存器配置然后调用Xilinx官方的Video Timing Controller IP和AXI4-Stream to Video Out IP将AXI4-Stream视频流转换为RGB视频流然后添加自定义的HDMI发送IP将RGB视频转换为TMDS的差分视频送显示器显示
提供两套vivado2019.1版本的工程源码和技术支持两套工程的区别在于拼接的视频路数不同方式不同详情如下 第一套vivado工程源码输入OV5640摄像头2路拼接输出HDMI显示器 第二套vivado工程源码输入OV5640摄像头4路拼接输出HDMI显示器
Xilinx Zynq-7000系列FPGA实现视频拼接显示的设计方案工程代码可综合编译上板调试可直接项目移植适用于在校学生、研究生项目开发也适用于在职工程师做学习提升可应用于医疗、军工等行业的高速接口或图像处理领域整个工程调用Zynq软核做IP的配置Zynq的配置在SDK里以C语言软件代码的形式运行所以整个工程包括FPGA逻辑设计和SDK软件设计两部分需要具备FPGA和嵌入式C语言的综合能力不适合初学者或者小白
提供完整的、跑通的工程源码和技术支持 工程源码和技术支持的获取方式放在了文章末尾请耐心看到最后
免责声明
本工程及其源码即有自己写的一部分也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等)若大佬们觉得有所冒犯请私信批评教育基于此本工程及其源码仅限于读者或粉丝个人学习和研究禁止用于商业用途若由于读者或粉丝自身原因用于商业用途所导致的法律问题与本博客及博主无关请谨慎使用。。。
2、相关方案推荐
FPGA图像处理方案
我的主页目前有FPGA图像处理专栏改专栏收录了我目前手里已有的FPGA图像处理方案包括图像缩放、图像识别、图像拼接、图像融合、图像去雾、图像叠加、图像旋转、图像增强、图像字符叠加等等以下是专栏地址 点击直接前往
FPGA视频拼接叠加融合方案推荐
我的主页目前有FPGA视频拼接叠加融合专栏改专栏收录了我目前手里已有的FPGA视频拼接叠加融合方案从实现方式分类有基于HSL实现的视频拼接、基于纯verilog代码实现的视频拼接从应用上分为单路、2路、3路、4路、8路、16路视频拼接视频缩放拼接视频融合叠加从输入视频分类可分为OV5640摄像头视频拼接、SDI视频拼接、CameraLink视频拼接等等以下是专栏地址 点击直接前往
3、设计思路详解
本文使用Xilinx Zynq7000系列FPGA Zynq7020实现HLS图像缩放输入视频源采用OV5640摄像头模组FPGA采集OV5640摄像头视频DVP转RGB888调用Zynq软核的片内i2c控制器将OV5640配置为960x54030Hz分辨率工程用一路摄像头数据复制一份来模拟两路摄像头输入然后调用2个Xilinx官方的Video In to AXI4-Stream IP核将RGB视频流转换为AXI4-Stream视频流然后调用2个Xilinx官方的VDMA IP将视频做PS侧DDR3的视频缓存操作VDMA需要Zynq软件配置为三帧缓存其本质为通过AXI_Lite 做寄存器配置然后调用Xilinx官方的Video Mixer IP核做两路视频拼接操作Video Mixer需要Zynq软件配置为三帧缓存其本质为通过AXI_Lite 做寄存器配置然后调用Xilinx官方的Video Timing Controller IP和AXI4-Stream to Video Out IP将AXI4-Stream视频流转换为RGB视频流然后添加自定义的HDMI发送IP将RGB视频转换为TMDS的差分视频送显示器显示
提供两套vivado2019.1版本的工程源码和技术支持两套工程的区别在于拼接的视频路数不同方式不同详情如下 第一套vivado工程源码输入OV5640摄像头2路拼接输出HDMI显示器 第二套vivado工程源码输入OV5640摄像头4路拼接输出HDMI显示器
第一套vivado工程源码设计框图如下 第二套vivado工程源码设计框图如下 框图解释箭头表示数据流向箭头内文字表示数据格式箭头外数字表示数据流向的步骤
Video Mixer介绍
由于工程所用到的IP都是常用IP所以这里重点介绍一下Video Mixer IP 支持最大分辨率8K即可以处理高达8K的视频 支持最多16层视频拼接叠加即最多可拼接16路视频 输入视频格式AXI4-Stream 输出视频格式AXI4-Stream 需要SDK软件配置其本质为通过AXI_Lite 做寄存器配置 提供自定义的配置API通过调用该库函数即可轻松使用具体参考SDK代码 模块占用的FPGA逻辑资源更小相比于自己写的HLS视频拼接而言官方的Video Mixer资源占用大约减小30%左右且更高效 Video Mixer逻辑资源如下请谨慎评估你的FPGA资源情况
4、工程代码12路视频拼接 HDMI 输出
PL 端 FPGA 逻辑设计
开发板FPGA型号Xilinx–Zynq7020–xc7z020clg400-2 开发环境Vivado2019.1 输入OV5640摄像头分辨率960x540 输出HDMI1920x1080黑色背景下拼接2路视频输出 工程作用Xilinx Zynq-7000系列FPGA实现视频拼接显示 HDMI 输出 工程BD如下 工程代码架构如下 工程的资源消耗和功耗如下
PS 端 SDK 软件设计
PS 端 SDK 软件工程代码架构如下 PS工程主函数如下
#include I2C_16bit.h
#include xiicps.h
#include xil_io.h
#include xparameters.h
#include helai_vdma.h
#include helai_mixer.h
#include uart.hXIicPs Iic;
XScuGic Intc; //中断控制器驱动程序实例
XUartPs Uart_Ps; //串口驱动程序实例
void main()
{uart_init(Uart_Ps); //串口初始化uart_intr_init(Intc, Uart_Ps); //串口中断初始化I2C_config_init(); //ov5640 配置完成helai_vdma(); // VDMA 配置完成helai_mixer(); // video mixer 配置完成print(zynq7020 两路视频拼接:\n\r);print(输入视频分辨率:960x540\n\r);print(1920x1080黑色背景下拼接两路视频输出\n\r);while (1) ;
}5、工程代码24路视频拼接 HDMI 输出
PL 端 FPGA 逻辑设计
开发板FPGA型号Xilinx–Zynq7020–xc7z020clg400-2 开发环境Vivado2019.1 输入OV5640摄像头分辨率960x540 输出HDMI1920x1080黑色背景下拼接4路视频输出 工程作用Xilinx Zynq-7000系列FPGA实现视频拼接显示 HDMI 输出 工程BD如下 工程代码架构如下 工程的资源消耗和功耗如下
PS 端 SDK 软件设计
PS 端 SDK 软件工程代码架构如下
#include I2C_16bit.h
#include xiicps.h
#include xil_io.h
#include xparameters.h
#include helai_vdma.h
#include helai_mixer.h
#include uart.hXIicPs Iic;
XScuGic Intc; //中断控制器驱动程序实例
XUartPs Uart_Ps; //串口驱动程序实例
void main()
{uart_init(Uart_Ps); //串口初始化uart_intr_init(Intc, Uart_Ps); //串口中断初始化I2C_config_init(); //ov5640 配置完成helai_vdma(); // VDMA 配置完成helai_mixer(); // video mixer 配置完成print(zynq7020 四路视频拼接:\n\r);print(输入视频分辨率:960x540\n\r);print(1920x1080黑色背景下拼接四路视频输出\n\r);while (1) ;
}6、工程移植说明
vivado版本不一致处理
1如果你的vivado版本与本工程vivado版本一致则直接打开工程 2如果你的vivado版本低于本工程vivado版本则需要打开工程后点击文件–另存为但此方法并不保险最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本 3如果你的vivado版本高于本工程vivado版本解决如下 打开工程后会发现IP都被锁住了如下 此时需要升级IP操作如下
FPGA型号不一致处理
如果你的FPGA型号与我的不一致则需要更改FPGA型号操作如下 更改FPGA型号后还需要升级IP升级IP的方法前面已经讲述了
其他注意事项
1由于每个板子的DDR不一定完全一样所以MIG IP需要根据你自己的原理图进行配置甚至可以直接删掉我这里原工程的MIG并重新添加IP重新配置 2根据你自己的原理图修改引脚约束在xdc文件中修改即可 3纯FPGA移植到Zynq需要在工程中添加zynq软核
7、上板调试验证并演示
准备工作
Zynq7000系列开发板 OV5640摄像头 HDMI显示器支持1080P
输出静态演示
工程1ov5640输入分辨率960x5402路视频拼接输出如下 工程2ov5640输入分辨率960x5404路视频拼接输出如下
输出动态演示
录制了一个小视频输出动态演示如下 video-mixer-hdmi 8、福利工程源码获取
福利工程代码的获取 代码太大无法邮箱发送以某度网盘链接方式发送 资料获取方式私或者文章末尾的V名片。 网盘资料如下