wordpress媒体播放器,广州网站优化外包,合肥哪里做网站,网站布局教程目录 1、前言免责声明 2、相关方案推荐FPGA图像处理方案FPGA图像缩放方案 3、设计思路详解HLS 图像缩放介绍 4、工程代码1#xff1a;图像缩放 HDMI 输出PL 端 FPGA 逻辑设计PS 端 SDK 软件设计 5、工程代码2#xff1a;图像缩放 LCD 输出PL 端 FPGA 逻辑设计PS 端 SDK 软件设… 目录 1、前言免责声明 2、相关方案推荐FPGA图像处理方案FPGA图像缩放方案 3、设计思路详解HLS 图像缩放介绍 4、工程代码1图像缩放 HDMI 输出PL 端 FPGA 逻辑设计PS 端 SDK 软件设计 5、工程代码2图像缩放 LCD 输出PL 端 FPGA 逻辑设计PS 端 SDK 软件设计 6、工程移植说明vivado版本不一致处理FPGA型号不一致处理其他注意事项 7、上板调试验证并演示准备工作工程1输出静态演示工程2输出静态演示 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配置为1280x72030Hz分辨率然后调用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 Timing Controller IP和AXI4-Stream to Video Out IP将AXI4-Stream视频流转换为RGB视频流然后添加自定义的HDMI发送IP将RGB视频转换为TMDS的差分视频送显示器显示或然后添加自定义的LCD发送IP将RGB视频转换为LCD的RGB视频送LCD显示
提供两套vivado2019.1版本的工程源码和技术支持两套工程的区别在于输出方式不同详情如下 第一套vivado工程源码输入OV5640摄像头输出HDMI显示器 第二套vivado工程源码输入OV5640摄像头输出LCD显示器
本博客详细描述了Xilinx Zynq7000系列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视频缩放等等以下是专栏地址 点击直接前往
3、设计思路详解
本文使用Xilinx Zynq7000系列FPGA Zynq7020实现HLS图像缩放输入视频源采用OV5640摄像头模组FPGA采集OV5640摄像头视频DVP转RGB888调用Zynq软核的片内i2c控制器将OV5640配置为1280x72030Hz分辨率然后调用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 Timing Controller IP和AXI4-Stream to Video Out IP将AXI4-Stream视频流转换为RGB视频流然后添加自定义的HDMI发送IP将RGB视频转换为TMDS的差分视频送显示器显示或然后添加自定义的LCD发送IP将RGB视频转换为LCD的RGB视频送LCD显示
提供两套vivado2019.1版本的工程源码和技术支持两套工程的区别在于输出方式不同详情如下 第一套vivado工程源码输入OV5640摄像头输出HDMI显示器 第二套vivado工程源码输入OV5640摄像头输出LCD显示器 第一套vivado工程源码设计框图如下 第二套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资源情况
4、工程代码1图像缩放 HDMI 输出
PL 端 FPGA 逻辑设计
开发板FPGA型号Xilinx–Zynq7020–xc7z020clg400-2 开发环境Vivado2019.1 输入OV5640摄像头分辨率1280x720p 输出HDMI1080P分辨率下的有效区域显示 工程作用Xilinx Zynq7000系列FPGA任意尺寸图像缩放 HDMI 输出 工程BD如下 工程代码架构如下 工程的资源消耗和功耗如下
PS 端 SDK 软件设计
PS 端 SDK 软件工程代码架构如下 主函数通过如下的五个宏定义设计了五种不同的图像缩放方案 ov5640输入分辨率1280x720HDMI输出分辨率1280x720 ov5640输入分辨率1280x720HDMI输出分辨率640x480 ov5640输入分辨率1280x720HDMI输出分辨率300x300 ov5640输入分辨率1280x720HDMI输出分辨率1600x800 ov5640输入分辨率1280x720HDMI输出分辨率1920x1080 主函数进行相应的图像缩放操作并打印相关信息代码如下
5、工程代码2图像缩放 LCD 输出
PL 端 FPGA 逻辑设计
开发板FPGA型号Xilinx–Zynq7020–xc7z020clg400-2 开发环境Vivado2019.1 输入OV5640摄像头分辨率1280x720p 输出LCD 4.3寸显示屏分辨率800x480800x480分辨率下的有效区域显示 工程作用Xilinx Zynq7000系列FPGA任意尺寸图像缩放 LCD 输出 工程BD如下 工程代码架构如下 工程的资源消耗和功耗如下
PS 端 SDK 软件设计
PS 端 SDK 软件工程代码架构如下 主函数通过如下的五个宏定义设计了四种不同的图像缩放方案 ov5640输入分辨率1280x720LCD输出分辨率800x480 ov5640输入分辨率1280x720LCD输出分辨率600x400 ov5640输入分辨率1280x720LCD输出分辨率300x300 ov5640输入分辨率1280x720LCD输出分辨率100x100 主函数进行相应的图像缩放操作并打印相关信息代码如下
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显示器或者LCD显示屏我用到的LCD显示屏为4.3寸分辨率800x480
工程1输出静态演示
工程1ov5640输入分辨率1280x720HDMI输出分辨率1280x720 HDMI显示输出和串口打印分别如下 工程1ov5640输入分辨率1280x720HDMI输出分辨率640x480 HDMI显示输出和串口打印分别如下 工程1ov5640输入分辨率1280x720HDMI输出分辨率300x300 HDMI显示输出和串口打印分别如下 工程1ov5640输入分辨率1280x720HDMI输出分辨率1600x800 HDMI显示输出和串口打印分别如下 工程1ov5640输入分辨率1280x720HDMI输出分辨率1920x1080 HDMI显示输出和串口打印分别如下
工程2输出静态演示
工程2ov5640输入分辨率1280x720LCD输出分辨率800x480 LCD显示输出和串口打印分别如下 工程2ov5640输入分辨率1280x720LCD输出分辨率600x400 LCD显示输出和串口打印分别如下 工程2ov5640输入分辨率1280x720LCD输出分辨率300x300 LCD显示输出和串口打印分别如下 工程2ov5640输入分辨率1280x720LCD输出分辨率100x100 LCD显示输出和串口打印分别如下
8、福利工程源码获取
福利工程代码的获取 代码太大无法邮箱发送以某度网盘链接方式发送 资料获取方式私或者文章末尾的V名片。 网盘资料如下