Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持

这篇具有很好参考价值的文章主要介绍了Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持

1、前言

没玩过图像缩放和视频拼接都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。本文使用Xilinx Zynq7000系列FPGA Zynq7020实现HLS图像缩放+视频拼接,输入视频源采用OV5640摄像头模组;调用Zynq软核的片内i2c控制器将OV5640配置为1280x720@30Hz分辨率;然后调用两路自定义IP采集OV5640摄像头视频DVP转RGB888,这里的两路输入均来自同一个OV5640,即用一路来模拟两路输入;然后调用两路Xilinx官方的Video In to AXI4-Stream IP核将RGB视频流转换为AXI4-Stream视频流;添加两路自定义的HLS图像缩放IP核,将输入视频进行任意尺寸图像缩放操作,该操作通过Zynq软核SDK软件配置,其本质为通过AXI_Lite 做寄存器配置;然后调用两路Xilinx官方的VDMA IP将视频做PS侧DDR3的视频缓存操作,调用Zynq将VDMA配置为两帧帧缓存,其本质为通过AXI_Lite 做寄存器配置;然后调用两路Xilinx官方的Video Mixer IP将两路缓存的视频做视频拼接操作,调用Zynq配置两路视频的不同显示位置,其本质为通过AXI_Lite 做寄存器配置;然后调用两路Xilinx官方的Video Timing Controller IP和AXI4-Stream to Video Out IP将AXI4-Stream视频流转换为RGB视频流;然后添加自定义的HDMI发送IP将RGB视频转换为TMDS的差分视频送显示器显示;

提供一套vivado2019.1版本的工程源码和技术支持,通过SDK的配置可做成三套不同的缩放拼接方案,详情如下:

方案1:输入ov5640,分辨率1280x720;输出分辨率960x1080,在输出屏幕左右两边拼接输出;
方案2:输入ov5640,分辨率1280x720;输出分辨率1920x540,在输出屏幕上下两边拼接输出;
方案3:输入ov5640,分辨率1280x720;输出分辨率960x540,在输出屏幕左上角和右下角两边拼接输出;

方案的详细输出演示请看后面的“上板调试验证并演示”章节,三种方案的切换或改变只需修改SDK软件代码,无需修改FPGA逻辑工程;

本博客详细描述了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代码实现的图像缩放;从应用上分为单路视频图像缩放、多路视频图像缩放、多路视频图像缩放拼接;从输入视频分类可分为OV5640摄像头视频缩放、SDI视频缩放、MIPI视频缩放等等;以下是专栏地址:
点击直接前往

FPGA视频拼接叠加融合方案推荐

我的主页目前有FPGA视频拼接叠加融合专栏,改专栏收录了我目前手里已有的FPGA视频拼接叠加融合方案,从实现方式分类有基于HSL实现的视频拼接、基于纯verilog代码实现的视频拼接;从应用上分为单路、2路、3路、4路、8路、16路视频拼接;视频缩放+拼接;视频融合叠加;从输入视频分类可分为OV5640摄像头视频拼接、SDI视频拼接、CameraLink视频拼接等等;以下是专栏地址:
点击直接前往

3、设计思路详解

没玩过图像缩放和视频拼接都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。本文使用Xilinx Zynq7000系列FPGA Zynq7020实现HLS图像缩放+视频拼接,输入视频源采用OV5640摄像头模组;调用Zynq软核的片内i2c控制器将OV5640配置为1280x720@30Hz分辨率;然后调用两路自定义IP采集OV5640摄像头视频DVP转RGB888,这里的两路输入均来自同一个OV5640,即用一路来模拟两路输入;然后调用两路Xilinx官方的Video In to AXI4-Stream IP核将RGB视频流转换为AXI4-Stream视频流;添加两路自定义的HLS图像缩放IP核,将输入视频进行任意尺寸图像缩放操作,该操作通过Zynq软核SDK软件配置,其本质为通过AXI_Lite 做寄存器配置;然后调用两路Xilinx官方的VDMA IP将视频做PS侧DDR3的视频缓存操作,调用Zynq将VDMA配置为两帧帧缓存,其本质为通过AXI_Lite 做寄存器配置;然后调用两路Xilinx官方的Video Mixer IP将两路缓存的视频做视频拼接操作,调用Zynq配置两路视频的不同显示位置,其本质为通过AXI_Lite 做寄存器配置;然后调用两路Xilinx官方的Video Timing Controller IP和AXI4-Stream to Video Out IP将AXI4-Stream视频流转换为RGB视频流;然后添加自定义的HDMI发送IP将RGB视频转换为TMDS的差分视频送显示器显示;

提供一套vivado2019.1版本的工程源码和技术支持,通过SDK的配置可做成三套不同的缩放拼接方案,详情如下:

方案1:输入ov5640,分辨率1280x720;输出分辨率960x1080,在输出屏幕左右两边拼接输出;
方案2:输入ov5640,分辨率1280x720;输出分辨率1920x540,在输出屏幕上下两边拼接输出;
方案3:输入ov5640,分辨率1280x720;输出分辨率960x540,在输出屏幕左上角和右下角两边拼接输出;

方案的详细输出演示请看后面的“上板调试验证并演示”章节,三种方案的切换或改变只需修改SDK软件代码,无需修改FPGA逻辑工程;vivado工程源码设计框图如下:
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接
框图解释:箭头表示数据流向,箭头内文字表示数据格式,箭头外数字表示数据流向的步骤;

HLS 图像缩放介绍

由于工程所用到的IP都是常用IP,所以这里重点介绍一下HLS图像缩放IP;
支持最大分辨率:1920x1080@60Hz;但可以修改HLS源码增大分辨率,前提是你的FPGA逻辑资源要够大;
输入视频格式:AXI4-Stream;
输出视频格式:AXI4-Stream;
需要SDK软件配置,其本质为通过AXI_Lite 做寄存器配置;目前只适用于Xilinx Zynq7000系列FPGA使用,但可以修改HLS工程的器件类型来适应其他器件,比如Artix7、Kintex7等等;
提供自定义的配置API,通过调用该库函数即可轻松使用,具体参考SDK代码;
提供HLS工程源码,可任意修改,HLS版本为2019.1;
模块占用的FPGA逻辑资源如下:
请谨慎评估你的FPGA资源情况;
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接

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资源情况;
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接

4、vivado工程介绍

PL 端 FPGA 逻辑设计

开发板FPGA型号:Xilinx–Zynq7020–xc7z020clg400-2;
开发环境:Vivado2019.1;
输入:OV5640摄像头,分辨率1280x720p;
输出:HDMI,1080P分辨率下的有效拼接视频区域显示;
工程作用:Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示;
工程BD如下:
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接
工程代码架构如下:
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接
工程的资源消耗和功耗如下:
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接

PS 端 SDK 软件设计

PS 端 SDK 软件工程代码架构如下:
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接
主函数通过如下的3个宏定义设计了3种不同的图像缩放拼接方案,代码如下:
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接
3种不同的图像缩放拼接方案详情如下:

方案1:输入ov5640,分辨率1280x720;输出分辨率960x1080,在输出屏幕左右两边拼接输出;
方案2:输入ov5640,分辨率1280x720;输出分辨率1920x540,在输出屏幕上下两边拼接输出;
方案3:输入ov5640,分辨率1280x720;输出分辨率960x540,在输出屏幕左上角和右下角两边拼接输出;

根据前面的宏定义,主函数进行相应的图像缩放操作,并打印相关信息,代码如下:
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接

5、工程移植说明

vivado版本不一致处理

1:如果你的vivado版本与本工程vivado版本一致,则直接打开工程;
2:如果你的vivado版本低于本工程vivado版本,则需要打开工程后,点击文件–>另存为;但此方法并不保险,最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本;
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接
3:如果你的vivado版本高于本工程vivado版本,解决如下:
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接
打开工程后会发现IP都被锁住了,如下:
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接
此时需要升级IP,操作如下:
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接

FPGA型号不一致处理

如果你的FPGA型号与我的不一致,则需要更改FPGA型号,操作如下:
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接
更改FPGA型号后还需要升级IP,升级IP的方法前面已经讲述了;

其他注意事项

1:由于每个板子的DDR不一定完全一样,所以MIG IP需要根据你自己的原理图进行配置,甚至可以直接删掉我这里原工程的MIG并重新添加IP,重新配置;
2:根据你自己的原理图修改引脚约束,在xdc文件中修改即可;
3:纯FPGA移植到Zynq需要在工程中添加zynq软核;

6、上板调试验证并演示

准备工作

Zynq7000系列开发板;
OV5640摄像头;
HDMI显示器或者LCD显示屏,我用到的LCD显示屏为4.3寸分辨率800x480;

输出静态演示

ov5640输入分辨率1280x720,HDMI输出分辨率960x1080;
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接
ov5640输入分辨率1280x720,HDMI输出分辨率1920x540;
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接
ov5640输入分辨率1280x720,HDMI输出分辨率960x540;
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接

输出动态演示

录制了一个小视频,输出动态演示如下:

缩放拼接

7、福利:工程源码获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持,菜鸟FPGA图像处理专题,FPGA视频拼接叠加融合,FPGA图像缩放,fpga开发,音视频,Xilinx,Zynq,图像缩放,视频拼接文章来源地址https://www.toymoban.com/news/detail-756306.html

到了这里,关于Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Xilinx Zynq-7000系列XC7Z035/XC7Z045高性能SoC处理器评估板PS端ETH RJ45接口

    (数据手册见Datasheet目录) ZYNQ7035 PS端ETH RJ45接口 评估板XQ6657Z35-EVM ,ZYNQ XC7Z035/45的PS端 引出了1路千兆网口,其引脚定义如下图:

    2024年02月12日
    浏览(32)
  • XILINX Zynq UltraScale+ MPSoC 在 4K 视频图像处理和会议系统的应用

        赛灵思 Zynq UltraScale+™ MPSoC EV 器件的 4K 视频处理功能。EV 器件具有继承的多标准视频编解码器,能够以 60帧/秒 的速度同步编码和解码。       Arm 四核 Cortex-A53 核以及集成的定制化的视频处理引擎,ZU7EV 器件可以作为多媒体应用方案的主控。        ZCU106 评估套件可作

    2024年02月01日
    浏览(35)
  • FPGA高端项目:Xilinx Zynq7020 系列FPGA纯verilog图像缩放工程解决方案 提供3套工程源码和技术支持

    FPGA高端项目:Xilinx Zynq7020 系列FPGA纯verilog图像缩放工程解决方案 提供3套工程源码和技术支持 没玩过图像缩放都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。目前市面上主流的FPGA图像缩放方案如下: 1:Xilinx的HLS方案,该方案简单,易于实现

    2024年01月23日
    浏览(40)
  • XILINX ZYNQ 7000 AXI总线 (二)

    了解了AXI 的大部分内容后,开始做一个实战,就是完成AXI 结构的输入输出搭建。 一.创建一个IP 3. 4. 5. 6.选择AXI FULL,创界主接口和从接口 7. 8.可以看到XILINX AXI FULL 的源代码 二.创建一个新的工程,把IP导入到这个工程 2.创建 block design 放入两个AXI IP 三 设计 创建两个 接口进行

    2024年02月16日
    浏览(44)
  • Xilinx ZYNQ 7000学习笔记三(小结)

    ZYNQ 7000的启动模式由外部引脚决定的,5个模式引脚MIO[6:2]用于配置NAND flash、并行NOR flash、Serial NOR (Quad-SPI)、SD flash以及JTAG 一共5种启动模式。具体而言就是复位时,zynq-7000 SOC对下述引脚进行连续3个时钟周期采样。复位采样MIO[6:2]并将采样的模式值保存到系统级控制寄存器SL

    2024年02月09日
    浏览(35)
  • FPGA 多路视频处理:图像缩放+视频拼接显示,HDMI采集,提供2套工程源码和技术支持

    FPGA高端项目:Xilinx Kintex7系列FPGA 多路视频缩放拼接 工程解决方案 HDMI版本 提供4套工程源码+技术支持 没玩过图像缩放和视频拼接都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。本文使用Xilinx的Kintex7系列FPGA实现多路视频缩放拼接方案,视频源

    2024年02月08日
    浏览(48)
  • Xilinx ZYNQ 7000学习笔记一(复位和启动)

    参考文献:Zynq-7000 SoC Technical Reference Manual (UG585)-ch26 Reset System zynq7000复位信号源包括硬件复位、看门狗定时器、JTAG控制器复位信号和软件复位信号。其中,硬件复位引脚由上电复位信号PS_POR_B和系统复位信号PS_SRST_B驱动。在PS中,有3个看门狗定时器可用来产生复位信号;JTA

    2024年02月06日
    浏览(50)
  • FPGA 多路视频处理:图像缩放+视频拼接显示,OV5640采集,提供2套工程源码和技术支持

    FPGA高端项目:Xilinx Kintex7系列FPGA 多路视频缩放拼接 工程解决方案 ov5640版本 提供4套工程源码+技术支持 没玩过图像缩放和视频拼接都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。本文使用Xilinx的Kintex7系列FPGA实现多路视频缩放拼接方案,视频

    2024年02月08日
    浏览(36)
  • 紫光同创FPGA 多路视频处理:图像缩放+视频拼接显示,OV7725采集,提供PDS工程源码和技术支持

    紫光同创FPGA 多路视频处理:图像缩放+视频拼接显示,OV7725采集,提供PDS工程源码和技术支持 “苟利国家生死以,岂因祸福避趋之!”大洋彼岸的我优秀地下档员,敏锐地洞察到祖国的短板在于高精尖半导体的制造领域,于是本着为中华民族伟大复兴的中国梦贡献绵薄之力的

    2024年02月08日
    浏览(56)
  • zynq7000系列芯片介绍

    ZYNQ从架构上可以划分为两大模块,一个是PS(处理器系统),另一个是PL(可编程逻辑) PS由APU、内存接口、IO外设、互连线4大模块组成。 1、APU(Application Processor Unit)应用处理单元 即PS【可编程逻辑里面最最核心的东西】,它由两个双核心的Cortex-ARM A9、一些缓存和存储组成

    2024年02月06日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包