健康奶 · 2023年09月23日 · 重庆市

Zynq UltraScale+ XCZU3EG 解码 MIPI 视频 DP 输出工程源码

Zynq UltraScale+ XCZU3EG 解码 MIPI 视频 DP 输出,MIPI CSI-2 RX Subsystem,提供vivado工程源码和技术支持

1、前言

FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了,MIPI解码难度之高,令无数英雄竞折腰,以至于Xilinx官方不得不推出专用的IP核供开发者使用,不然太高端的操作直接吓退一大批FPGA开发者,就没人玩儿了。

本设计基于Xilinx的Zynq UltraScale+ XCZU3EG开发板,采集OV5640摄像头的2Line MIPI视频,OV5640摄像头引脚接Zynq UltraScale+ XCZU3EG 的GT资源专用BANK,调用Xilinx官方的MIPI CSI-2 RX Subsystem IP核做MIPI解码后输出输出Bayer视频,调用Xilinx官方的Sensor Demosaic IP核做Bayer转RGB后输出RGB视频,调用Xilinx官方的Gamma LUT IP核做伽马矫正模块增强图像质量,然后调用Xilinx官方VDMA将图像送入PS端的DDR3中做三帧缓存后读出;调用Xilinx官方VTC模块产生输出视频时序,zynq通过SDK软件动态配置VTC的输出时序,支持1080P、720P和640P三种时序输出,调用Xilinx官方AXI4-Stream to Video Out做数据流转换,输出VGA时序的RGB数据,最后通过板载的DP接口将视频输出显示器;

Zynq UltraScale+ XCZU3EG 解码 MIPI 视频 DP 输出的设计方案,工程代码编译通过后上板调试验证,可直接项目移植,适用于在校学生做毕业设计、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的数字成像和图像传输领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;
关于MIPI协议,请自行搜索,csdn就有很多大佬讲得很详细,我就不多写这块了;

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。。。

2、我这里已有的 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编解码方案做成白菜价。。。
基于此,我专门建了一个MIPI编解码的专栏,并将MIPI编解码的博客都放到了专栏里整理,对FPGA编解码MIPI有项目需求或学习兴趣的兄弟可以去我的专栏看看,专栏地址如下:
点击直接前往专栏

3、本 MIPI CSI2 模块性能及其优越性

一个字:牛逼,表现如下:
1:使用Xilinx官方的MIPI CSI-2 RX Subsystem解码方案,稳定可靠;
2:移植性还可以,可在Xilinx Zynq UltraScale+系列FPGA上自由移植;
3:算法达到天花板,标准的CSI2接收协议实现解码;
4:实用性达到天花板,采用OV5640摄像头作为输入(主要是便宜),不同于市面上验证性和实验性的工程,本设计直接面向实用工程,贴近真实项目,做类似项目的兄弟可直接拿去用,一个月工资直接拿到手。。。
5:支持高达4K分辨率的MIPI视频解码;

4、详细设计方案

设计原理框图

设计原理框图如下:
在这里插入图片描述

OV5640摄像头及其配置

我使用到的OV5640摄像头输出为2 Line MIPI格式,输出分辨率有720p@60Hz和1080p@30Hz两种,可通过SDK软件选择配置为哪一种;OV5640输出 RAW10数据;zynq通过i2c片内外设配置OV5640,这个操作在SDK软件里完成,PL端硬件无需参与;

MIPI CSI-2 RX Subsystem

调用Xilinx官方的MIPI CSI-2 RX Subsystem IP核做MIPI解码后输出输出Bayer视频,MIPI CSI-2 RX Subsystem配置如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Sensor Demosaic

调用Xilinx官方的Sensor Demosaic IP核做Bayer转RGB后输出RGB视频,Sensor Demosaic配置如下:
在这里插入图片描述

Gamma LUT

调用Xilinx官方的Gamma LUT IP核做伽马矫正模块增强图像质量,Gamma LUT配置如下:
在这里插入图片描述

MIPI D-PHY 硬件方案

本设计使用xilinx官方推荐的电阻网络方案,要求800M Hz以下,走线30mm以内;OV5640摄像头引脚接Zynq UltraScale+ XCZU3EG 的GT资源专用BANK;

5、vivado工程详解

PL端FPGA硬件设计

开发板FPGA型号:Xilinx--Zynq UltraScale+--xczu3eg-sfvc784-1-e;
开发环境:Vivado2019.1;
输入:OV5640 MIPI 2 Line RAW10;
输出:DP显示器,720P;
应用:Zynq UltraScale+ XCZU3EG 解码 MIPI 视频 DP 输出;
工程Block Design如下:
在这里插入图片描述
工程代码架构如下:
在这里插入图片描述
综合编译完成后的FPGA资源消耗和功耗预估如下:
在这里插入图片描述

PS端SDK软件设计

SDK C语言软件代码架构如下:
在这里插入图片描述

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、上板调试验证

输出如下:
在这里插入图片描述

8、福利:工程代码的获取

福利:工程代码的获取
代码太大,无法邮箱发送,以百度网盘链接方式发送,
通过微信获取资料:
微信图片_20230604203730.jpg
网盘资料如下:
在这里插入图片描述

推荐阅读
关注数
12
内容数
112
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息