育贤网站建设,网站做简介,免费行情软件网站有哪些,公司用dw做网站吗目录 1、前言免责声明 2、相关方案推荐FPGA图像处理方案FPGA图像缩放方案FPGA视频拼接叠加融合方案推荐 3、设计思路详解HLS 图像缩放介绍Video Mixer介绍 4、vivado工程介绍PL 端 FPGA 逻辑设计PS 端 SDK 软件设计 5、工程移植说明vivado版本不一致处理FPGA型号不一致处理其他… 目录 1、前言免责声明 2、相关方案推荐FPGA图像处理方案FPGA图像缩放方案FPGA视频拼接叠加融合方案推荐 3、设计思路详解HLS 图像缩放介绍Video Mixer介绍 4、vivado工程介绍PL 端 FPGA 逻辑设计PS 端 SDK 软件设计 5、工程移植说明vivado版本不一致处理FPGA型号不一致处理其他注意事项 6、上板调试验证并演示准备工作输出静态演示输出动态演示 7、福利工程源码获取 Xilinx Zynq-7000系列FPGA多路视频处理图像缩放视频拼接显示提供工程源码和技术支持 1、前言
没玩过图像缩放和视频拼接都不好意思说自己玩儿过FPGA这是CSDN某大佬说过的一句话鄙人深信不疑。。。本文使用Xilinx Zynq7000系列FPGA Zynq7020实现HLS图像缩放视频拼接输入视频源采用OV5640摄像头模组调用Zynq软核的片内i2c控制器将OV5640配置为1280x72030Hz分辨率然后调用两路自定义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配置为1280x72030Hz分辨率然后调用两路自定义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工程源码设计框图如下
HLS 图像缩放介绍
由于工程所用到的IP都是常用IP所以这里重点介绍一下HLS图像缩放IP 支持最大分辨率1920x108060Hz但可以修改HLS源码增大分辨率前提是你的FPGA逻辑资源要够大 输入视频格式AXI4-Stream 输出视频格式AXI4-Stream 需要SDK软件配置其本质为通过AXI_Lite 做寄存器配置目前只适用于Xilinx Zynq7000系列FPGA使用但可以修改HLS工程的器件类型来适应其他器件比如Artix7、Kintex7等等 提供自定义的配置API通过调用该库函数即可轻松使用具体参考SDK代码 提供HLS工程源码可任意修改HLS版本为2019.1 模块占用的FPGA逻辑资源如下 请谨慎评估你的FPGA资源情况
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、vivado工程介绍
PL 端 FPGA 逻辑设计
开发板FPGA型号Xilinx–Zynq7020–xc7z020clg400-2 开发环境Vivado2019.1 输入OV5640摄像头分辨率1280x720p 输出HDMI1080P分辨率下的有效拼接视频区域显示 工程作用Xilinx Zynq-7000系列FPGA多路视频处理图像缩放视频拼接显示 工程BD如下 工程代码架构如下 工程的资源消耗和功耗如下
PS 端 SDK 软件设计
PS 端 SDK 软件工程代码架构如下 主函数通过如下的3个宏定义设计了3种不同的图像缩放拼接方案代码如下 3种不同的图像缩放拼接方案详情如下
方案1输入ov5640分辨率1280x720输出分辨率960x1080在输出屏幕左右两边拼接输出
方案2输入ov5640分辨率1280x720输出分辨率1920x540在输出屏幕上下两边拼接输出
方案3输入ov5640分辨率1280x720输出分辨率960x540在输出屏幕左上角和右下角两边拼接输出根据前面的宏定义主函数进行相应的图像缩放操作并打印相关信息代码如下
5、工程移植说明
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软核
6、上板调试验证并演示
准备工作
Zynq7000系列开发板 OV5640摄像头 HDMI显示器或者LCD显示屏我用到的LCD显示屏为4.3寸分辨率800x480
输出静态演示
ov5640输入分辨率1280x720HDMI输出分辨率960x1080 ov5640输入分辨率1280x720HDMI输出分辨率1920x540 ov5640输入分辨率1280x720HDMI输出分辨率960x540
输出动态演示
录制了一个小视频输出动态演示如下 缩放拼接 7、福利工程源码获取
福利工程代码的获取 代码太大无法邮箱发送以某度网盘链接方式发送 资料获取方式私或者文章末尾的V名片。 网盘资料如下