Zynq7020 使用 Video Processing Subsystem 实现图像缩放

这篇具有很好参考价值的文章主要介绍了Zynq7020 使用 Video Processing Subsystem 实现图像缩放。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、前言

没玩过图像缩放都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。

目前市面上主流的FPGA图像缩放方案如下:1:Xilinx的HLS方案,该方案简单,易于实现,但只能用于Xilinx自家的FPGA;2:非纯Verilog方案,大部分代码使用Verilog实现,但中间的fifo或ram等使用了IP,导致移植性变差,难以在Xilinx、Altera和国产FPGA之间自由移植;3:纯Verilog方案;

本文使用Xilinx Zynq7000系列FPGA Zynq7020实现Video Processing Subsystem图像缩放,输入视频源采用OV5640摄像头模组;FPGA采集OV5640摄像头视频DVP转RGB888,调用Zynq软核的片内i2c控制器将OV5640配置为1280x720@30Hz分辨率;然后调用Xilinx官方的Video In to AXI4-Stream IP核将RGB视频流转换为AXI4-Stream视频流;然后调用Xilinx官方的Video Processing Subsystem IP核将输入视频进行任意尺寸图像缩放操作,该操作通过Zynq软核SDK软件配置,其本质为通过AXI_Lite 做寄存器配置;然后调用Xilinx官方的VDMA IP将视频做PS侧DDR3的视频缓存操作,调用Zynq将VDMA配置为三帧缓存,其本质为通过AXI_Lite 做寄存器配置;然后调用Xilinx官方的Video Timing Controller IP和AXI4-Stream to Video Out IP将AXI4-Stream视频流转换为RGB视频流;然后添加自定义的HDMI发送IP将RGB视频转换为TMDS的差分视频送显示器显示;提供一套vivado2019.1版本的工程源码和技术支持;

本博客详细描述了Zynq-7000系列FPGA使用 Video Processing Subsystem 实现图像缩放的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处理领域;整个工程调用Zynq软核做IP的配置,Zynq的配置在SDK里以C语言软件代码的形式运行,所以整个工程包括FPGA逻辑设计和SDK软件设计两部分,需要具备FPGA和嵌入式C语言的综合能力,不适合初学者或者小白;

2、相关方案推荐

FPGA图像处理方案

我的主页目前有FPGA图像处理专栏,改专栏收录了我目前手里已有的FPGA图像处理方案,包括图像缩放、图像识别、图像拼接、图像融合、图像去雾、图像叠加、图像旋转、图像增强、图像字符叠加等等;以下是专栏地址:点击直接前往

FPGA图像缩放方案

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

HLS图像缩放方案

之前写过一篇自己写的HLS图像缩放的博客,该方案与官方的Video Processing Subsystem区别在于手写的看得到;以下是博客地址:点击直接前往

3、设计思路详解

本文使用Xilinx Zynq7000系列FPGA Zynq7020实现Video Processing Subsystem图像缩放,输入视频源采用OV5640摄像头模组;FPGA采集OV5640摄像头视频DVP转RGB888,调用Zynq软核的片内i2c控制器将OV5640配置为1280x720@30Hz分辨率;然后调用Xilinx官方的Video In to AXI4-Stream IP核将RGB视频流转换为AXI4-Stream视频流;然后调用Xilinx官方的Video Processing Subsystem IP核将输入视频进行任意尺寸图像缩放操作,该操作通过Zynq软核SDK软件配置,其本质为通过AXI_Lite 做寄存器配置;然后调用Xilinx官方的VDMA IP将视频做PS侧DDR3的视频缓存操作,调用Zynq将VDMA配置为三帧缓存,其本质为通过AXI_Lite 做寄存器配置;然后调用Xilinx官方的Video Timing Controller IP和AXI4-Stream to Video Out IP将AXI4-Stream视频流转换为RGB视频流;然后添加自定义的HDMI发送IP将RGB视频转换为TMDS的差分视频送显示器显示;提供一套vivado2019.1版本的工程源码和技术支持;工程源码设计框图如下:

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

框图解释:箭头表示数据流向,箭头内文字表示数据格式,箭头外数字表示数据柳巷的步骤;

Video Processing Subsystem 介绍

由于工程所用到的IP都是常用IP,所以这里重点介绍一下Video Processing Subsystem;Video Processing Subsystem有缩放、去隔行、颜色空间转换等功能,这里仅使用图像缩放功能;其特点如下:适用于Xilinx所有系列的FPGA器件;支持最大分辨率:8K,即可以处理高达8K的视频;输入视频格式:AXI4-Stream;输出视频格式:AXI4-Stream;需要SDK软件配置,其本质为通过AXI_Lite 做寄存器配置;提供自定义的配置API,通过调用该库函数即可轻松使用,具体参考SDK代码;模块占用的FPGA逻辑资源更小,相比于自己写的HLS图像缩放而言,官方的Video Processing Subsystem资源占用大约减小30%左右,且更高效:Video Processing Subsystem逻辑资源如下,请谨慎评估你的FPGA资源情况;

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

Video Processing Subsystem IP配置如下:这里配置为双线性插值图像缩放算法;

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

4、工程代码详解

PL 端 FPGA 逻辑设计

开发板FPGA型号:Xilinx--Zynq7020--xc7z020clg400-2;开发环境:Vivado2019.1;输入:OV5640摄像头,分辨率1280x720p;输出:HDMI,1080P分辨率下的有效区域显示;工程作用:Zynq-7000系列FPGA使用Video Processing Subsystem实现图像缩放, HDMI 输出;工程BD如下:

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

工程代码架构如下:

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

工程的资源消耗和功耗如下:

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

PS 端 SDK 软件设计

PS 端 SDK 软件工程代码架构如下:

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

主函数通过如下的五个宏定义设计了五种不同的图像缩放方案:ov5640输入分辨率1280x720,HDMI输出分辨率1280x720;ov5640输入分辨率1280x720,HDMI输出分辨率640x480;ov5640输入分辨率1280x720,HDMI输出分辨率300x300;ov5640输入分辨率1280x720,HDMI输出分辨率1600x800;ov5640输入分辨率1280x720,HDMI输出分辨率1920x1080;

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

主函数进行相应的图像缩放操作,并打印相关信息,代码如下:

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

5、工程移植说明

vivado版本不一致处理

1:如果你的vivado版本与本工程vivado版本一致,则直接打开工程;

2:如果你的vivado版本低于本工程vivado版本,则需要打开工程后,点击文件-->另存为;但此方法并不保险,最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本;

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

3:如果你的vivado版本高于本工程vivado版本,解决如下:

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

打开工程后会发现IP都被锁住了,如下:

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

此时需要升级IP,操作如下:

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

FPGA型号不一致处理

如果你的FPGA型号与我的不一致,则需要更改FPGA型号,操作如下:

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,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输入分辨率1280x720,HDMI输出分辨率1280x720;HDMI显示输出和串口打印分别如下:

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

ov5640输入分辨率1280x720,HDMI输出分辨率640x480;HDMI显示输出和串口打印分别如下:

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

ov5640输入分辨率1280x720,HDMI输出分辨率300x300;HDMI显示输出和串口打印分别如下:

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

ov5640输入分辨率1280x720,HDMI输出分辨率1600x800;HDMI显示输出和串口打印分别如下:

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发

ov5640输入分辨率1280x720,HDMI输出分辨率1920x1080;HDMI显示输出和串口打印分别如下:

Zynq7020 使用 Video Processing Subsystem 实现图像缩放,fpga开发文章来源地址https://www.toymoban.com/news/detail-793346.html

到了这里,关于Zynq7020 使用 Video Processing Subsystem 实现图像缩放的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Xilinx Zynq-7000系列FPGA任意尺寸图像缩放,提供两套工程源码和技术支持

    Xilinx Zynq-7000系列FPGA任意尺寸图像缩放,提供两套工程源码和技术支持 没玩过图像缩放都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。 目前市面上主流的FPGA图像缩放方案如下: 1:Xilinx的HLS方案,该方案简单,易于实现,但只能用于Xilinx自家

    2024年02月03日
    浏览(49)
  • Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持

    Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持 没玩过图像缩放和视频拼接都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。本文使用Xilinx Zynq7000系列FPGA Zynq7020实现HLS图像缩放+视频拼接,输入视频源采用

    2024年02月04日
    浏览(76)
  • ZYNQ AC7020C的“点LED”实验

    一、创建 Vivado 工程 1、启动 Vivado 2、在 Vivado 开发环境里点击“Create New Project”,创建一个新的工程 3、弹出一个建立新工程的向导,点击“Next” 4、在弹出的对话框中输入工程名和工程存放的目录。需要注意工程路径“Project location”不能有中文、空格,路径名称也不能太长

    2024年02月20日
    浏览(39)
  • Alinx ZYNQ 7020 LED调试--in RAM

    设置拨码开关为JTAG方式 烧写LED bit stream a. 点击“Program device”烧录程序到FPGA中(重新上电程序就丢失了) b. /01_led/led.runs/impl_1/led.bit 程序烧录到Flash中 ZYNQ与以往的直接烧录Flash不同,首先必须PS,然后烧录PL,参考这个实例。

    2024年01月18日
    浏览(44)
  • AD9361+zedboard(ZYNQ7020)的SDK工程(上)

    1.准备工具 vivado2018.3 HDL源码:https://wiki.analog.com/resources/fpga/docs/releases no_os:https://github.com/analogdevicesinc/no-OS 注意:HDL源码下载的版本要与vivado一致,我这里是2018.3 HDL版本选择 2.构建vivado工程 2.1编译源文件 解压下载的HDL文件的压缩包 进入该文件夹C:AD9361hdl-hdl_2019_r1project

    2024年02月13日
    浏览(46)
  • FPGA解码MIPI视频:Xilinx Zynq7000中端FPGA,基于MIPI CSI-2 RX Subsystem架构实现,提供工程源码和技术支持

    FPGA解码MIPI视频:Xilinx Zynq7000高端FPGA,基于MIPI CSI-2 RX Subsystem架构实现,提供工程源码和技术支持 FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了,MIPI解码难度之高,令无数英雄竞折腰,以至于Xilinx官方不得不推出专用的IP核供开发者使用,不然太高端

    2024年02月22日
    浏览(42)
  • ZYNQ 7020 之 FPGA知识点重塑笔记一——串口通信

    目录 一:串口通信简介 二:三种常见的数据通信方式—RS232串口通信 2.1 实验任务 2.2 串口接收模块的设计 2.2.1 代码设计 2.3 串口发送模块的设计 2.3.1 代码设计 2.4 顶层模块编写 2.4.1 代码设计 2.4.2 仿真验证代码 2.4.3 仿真结果 2.4.4 板上验证        通信方式一般分为 串行

    2024年02月03日
    浏览(49)
  • petalinux-2021.1在zynq7020的flash上启动linux

    一、 前言 在电脑上安装虚拟机或者找一个电脑安装linux,用于编译petalinux工程; 安装与vivado对应的petalinux-tool; 版本信息: 1)linux:ubuntu16.04.06; 2)vivado:v2021.1; 3)petalinux:v2021.1; 4)petalinux工程参考bsp:xilinx-zc702-v2021.1-final.bsp; vivado可以在linux中,也可在windows中; 离

    2024年02月07日
    浏览(43)
  • 【进口控制器替代】基于Zynq-7020 FPGA的NI 8槽CompactRIO控制器

    667 MHz双核CPU,512 MB DRAM,1 GB存储容量,Zynq-7020 FPGA,更宽工作温度范围,8槽CompactRIO控制器 cRIO-9068是一款坚固耐用的无风扇嵌入式控制器,可用于高级控制和监测应用。这款软件设计控制器搭载FPGA、运行NI Linux Real-Time操作系统的实时处理器以及嵌入式用户界面功能。cRIO-906

    2024年01月25日
    浏览(62)
  • 【ALINX】FPGA ZYNQ视频教程AX7020教程—02_Vivoda初体验LED灯工程

    【ALINX】FPGA ZYNQ视频教程——AX7010/AX7020教程——FPGA实验篇 File=New Project 工程文件命名:不能出现中文、空格等非法字符 选择芯片型号: 视频定位链接 03:45 AX7020开发板速度选择“ -2 ”;型号选择“ xc7Z020clg400-2 ” ** Vivado窗口介绍 视频定位链接05:44 视频定位链接 08:43 1.选择点

    2024年02月06日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包