FPGA解码MIPI视频OV5647 2line CSI2 720P分辨率采集

1、前言fpga图像采集领域目前协议最复杂、技术难度最高的应该就是mipi协议了,mipi解码难度之高,令无数英雄竞折腰,以至于xilinx官方不得不推出专用的ip核供开发者使用,不然太高端的操作直接吓退一大批fpga开发者,就没人玩儿了。
本设计基于xilinx的kintex7开发板,采集ov5647 摄像头的720p 2line mipi视频,ov5647 摄像头引脚接kintex7的 bank16 lvds_25 差分引脚,经过纯vhdl实现的 csi2 rx模块输出axis视频流,再将bayer数据转rgb,再经过fdma将图像送入ddr3中做三帧缓存后读出,最后经hdmi发送模块输出显示器;
本文详细描述了设计方案,工程代码编译通过后上板调试验证,可直接项目移植,适用于在校学生做毕业设计、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的数字成像和图像传输领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;
关于mipi协议,请自行搜索,csdn就有很多大佬讲得很详细,我就不多写这块了;
2、xilinx官方主推的mipi解码方案xilinx官方主推的mipi解码方案是专用ip核,在vivado的ip仓库里输入mipi就会看到如下的一堆ip:
xilinx方案使用很简单,调用ip就行,用sdk配置即可使用,mipi解码后的数据格式为axis,方便与他家的vdma之类的ip对接,你无须关心复杂的mipi协议即可畅玩儿mipi,但问题就来了,如果你用的fpga不是xilinx家的怎么办?
3、本 mipi csi2 模块性能及其优越性本方案mipi解码后的视频时序为vga时序,即行同步,场同步,数据有效,数据信号;方便后端直接处理;解串部分使用xilinx源语,本工程用到的是7系列源语,更高级别的fpga应用,需要更改源语参数,但问题不大;
一个字:牛逼,表现如下:
1:纯vhdl代码实现,学习性和阅读性达到天花板;
2:移植性还可以,只要兼容xilinx解串源语的fpga均可移植;
3:算法达到天花板,标准的csi2接收协议实现解码;
4:实用性达到天花板,采用ov4689摄像头作为输入,不同于市面上验证性和实验性的工程,本设计直接面向实用工程,贴近真实项目,mipi输入,2路视频输出,做类似项目的兄弟可直接拿去用,一个月工资直接拿到手。。。
5:支持高达4k分辨率的mipi视频解码;
6:时序收敛很到位,考虑到mipi协议的复杂性和时序的高要求,所以没有采用时序收敛不强的verilog,而是vhdl,虽然阅读性可能会低一些,但用户只需要知道用户接口即可,并不需要去看内部的复杂代码;
7:自定义ip封装,方便xilinx系列fpga用户使用,csi-2自定义ip支持2line或4line输入,可在ip配置界面手动配置;
4、我这里已有的 mipi 编解码方案我这里目前已有丰富的基于fpga的mipi编解码方案,主要是mipi解码的,既有纯vhdl实现的mipi解码,也有调用xilinx官方ip实现的mipi解码,既有2line的mipi解码,也有4line的mipi解码,既有4k分辨率的mipi解码,也有小到720p分辨率的mipi解码,既有基于xilinx平台fpga的mipi解码也有基于altera平台fpga的mipi解码,还有基于lattice平台fpga的mipi解码,后续还将继续推出更过国产fpga的mipi解码方案,毕竟目前国产化方案才是未来主流,后续也将推出更多mipi编码的dsi方案,努力将fpga的mipi编解码方案做成白菜价。。。
5、详细设计方案详细设计方案如下:
视频输入:
ov5647摄像头输入,mipi 2line,720p分辨率;
mipi解码:
纯vhdl代码编写的csi-2解码器,可针对2line或4line输入的mipi视频解码,输出为axis数据流,经过axis转vga输出vga格式数据,经bayer转rgb输出vga格式的rgb888视频数据;
图像输出:
经fdma图像3帧缓存后,相当于mipi视频进ddr3逛了一圈又回来了,经过vga时序发生器vtc和hdmi发送驱动输出显示器,hdmi发送驱动采用纯verilog代码编写,不含任何ip,输出稳定可靠,我项目一直都在用
6、vivado工程介绍开发板:xilinx kintex7开发板;
开发环境:vivado2020.2;
输入:ov5647摄像头输入,mipi 2line,720p分辨率;
输出:hdmi,720p分辨率;
工程bd如下:
mipi解码部分的ip搭建如下:
csi-2 ip配置界面如下:
csi-2转axis
fdma配置如下:
综合后的工程代码架构如下:
fpga资源消耗和功耗预估如下:

辅助继电器有什么用?辅助继电器的定义和作用
诺基亚贝尔展示5G最新垂直应用,主导中国第四次工业革命
手机电话簿分组
土壤墒情在线监测设备帮助人们合理利用水资源
物联网数据采集系统如何搭建?有什么功能和应用场景?
FPGA解码MIPI视频OV5647 2line CSI2 720P分辨率采集
单相电机如何实现正反转
联想集团终止科创板上市 CDR回A的计划落空
四大网络造就亚运数字化神经系统
TCL科技业绩推动股价暴涨
拉起您的引脚:如何确定上拉电阻的大小
【虹科EMC测试系列】电场探头测量速度的相关定义及解析
1月份新发布手机流畅度排名公布
Linux文件系统组件的体系结构介绍
2019年第一季度中国平板电脑整体市场出货量报告分析
海外半导体巨头纷纷入局 Chiplet
如何在Windows上应用Docker开展动态代码测试
如何使用晶体管构建60w逆变器?
余承东:华为全屋智能解决方案将重构智能家居领域
我国紧固件产量逐年上升,2019年产量约达850万吨