目录
- 1、前言
- 2、Xilinx官方主推的MIPI解码方案
- 3、我已有的MIPI解码方案
- 4、纯Vhdl代码解码MIPI
- 5、vivado工程介绍
- 6、上板调试验证
- 7、福利:工程代码的获取
1、前言
FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了,MIPI解码难度之高,令无数英雄竞折腰,以至于Xilinx官方不得不推出专用的IP核供开发者使用,不然太高端的操作直接吓退一大批FPGA开发者,就没人玩儿了。
本文详细描述了设计方案,工程代码编译通过后上板调试验证,可直接项目移植,适用于在校学生做毕业设计、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的数字成像和图像传输领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;
关于MIPI协议,请自行搜索,csdn就有很多大佬讲得很详细,我就不多写这块了;
2、Xilinx官方主推的MIPI解码方案
Xilinx官方主推的MIPI解码方案是专用IP核,在vivado的ip仓库里输入MIPI就会看到如下的一堆IP:
Xilinx方案使用很简单,调用IP就行,用SDK配置即可使用,MIPI解码后的数据格式为AXIS,方便与他家的VDMA之类的IP对接,你无须关心复杂的MIPI协议即可畅玩儿MIPI,但问题就来了,如果你用的FPGA不是Xilinx家的怎么办?
关于Xilinx自家的MIPI方案,请参考我之前写的文章;Xilinx的MIPI方案
3、我已有的MIPI解码方案
我这里目前有用以下几种MIPI解码方案,全都上板验证过,现实项目中都在用,很稳定;
1:基于Xilinx官方给的调用官方IP方案,OV5640摄像头采集,2 line 720P输入,DP输出,源码链接:点击获取
2:纯vhdl实现的MIPI解码方案,MIPI解码核纯源码实现,OV13850摄像头采集4 line 4K分辨率输入,HDMI和VGA 2路1080P输出,源码链接:点击获取
3:方案2的升级版,将vhdl的MIPI解码核封装成了自定义IP,方便直接配置使用,免去了看vhdl代码的麻烦,OV13850摄像头采集4 line 4K分辨率输入,HDMI 1080P输出,源码链接:点击获取
4:基于方案3的移植版本,OV4689摄像头采集4 line 2.7K分辨率输入,HDMI 1080P输出,源码链接:点击获取
5:纯vhdl的MIPI解码核,纯源码实现,已封装为自定义IP,OV5647摄像头采集2 line 720P分辨率输入,HDMI 720P输出,源码链接:点击获取
6:本文讲述的MIPI方案,,由方案3移植而来,IMX291摄像头采集4 line 1080P分辨率输入,HDMI 1080P输出,IMX290也通用。
4、纯Vhdl代码解码MIPI
本方案MIPI解码后的视频时序为VGA时序,即行同步,场同步,数据有效,数据信号;方便后端直接处理;
解串部分使用Xilinx源语,本工程用到的是7系列源语,更高级别的FPGA应用,需要更改源语参数,但问题不大;
一个字:牛逼,表现如下:
1:纯Vhdl代码实现,学习性和阅读性达到天花板;
2:移植性还可以,只要兼容Xilinx解串源语的FPGA均可移植;
3:算法达到天花板,标准的CSI2接收协议实现解码;
4:实用性达到天花板,采用OV4689摄像头作为输入,不同于市面上验证性和实验性的工程,本设计直接面向实用工程,贴近真实项目,MIPI输入,1路视频输出,做类似项目的兄弟可直接拿去用,一个月工资直接拿到手。。。
5:自定义IP封装,方便用户使用;
5、vivado工程介绍
工程架构如下:
开发板:Xilinx Kintex7开发板;
开发环境:vivado2020.2;
输入:IMX291/IMX290;4line;分辨率19320x1080;
输出:HDMI;分辨率1920x1080;
工程Block Design如下:
4line MIPI解码模块详解,点击这个+号可展开IP;
展开后的4line MIPI解码模块如下:
4line MIPI解码模块配置界面如下:
bayer转RGB不需要配置;
白平衡图像增强模块配置界面如下:
展开后的图像缓存与缩放解码模块如下:
写控制器模块配置界面如下:
读控制器模块配置界面如下:
工程代码架构如下:
逻辑资源消耗和功耗如下:
6、上板调试验证
IMX291/IMX290摄像头,这种某宝一百多的便宜货。。。
使用移植方法说明:
1、本工程vivado版本为2020.2,较低版本打开后即使另存为也可能出现问题,较高版本打开后升级IP,理论上不会出问题,这也是xilinx被AMD收购后出现的vivado软件越做越差的表现,所以建议使用vivado2020.2打开使用本工程;
2、本工程各个功能模块源码与IP一共放在顶层文件,请勿删除 其中任何一个文件,否则编译不通过;
工程运行如下:
7、福利:工程代码的获取
福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下: