FPGA解码 4K MIPI 视频 纯vhdl实现 CSI2 RX 采集OV13850,提供工程源码和技术支持

news/2024/11/25 8:46:17/

目录

  • 1、前言
  • 2、Xilinx官方主推的MIPI解码方案
  • 3、本方案的性能及其优越性
  • 4、我这里已有的 MIPI 编解码方案
  • 5、vivado工程介绍
  • 6、上板调试验证
  • 7、福利:工程代码的获取

1、前言

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

本设计基于Xilinx的Kintex7开发板,采集OV13850摄像头的4K 4Line MIPI视频,OV13850摄像头引脚接Kintex7的 BANK16 LVDS_25 差分引脚,经过纯vhdl实现的 CSI2 RX模块输出Bayer视频,再经过Bayer转RGB模块输出RGB视频,再经过图像增强模块增强图像质量,这里主要用到了白平衡,然后将图像送入DDR3中做三帧缓存后读出,由于我这里没有支持4K现实的屏幕,所以还需将读出的图像缩小至1080P分辨率,如果你的项目是4K输出,则可以直接将此模块删除,再生成标准的VGA时序,由于我的开发板板载了HDMI和VGA两路视频输出接口,所以代码做了HDMI和VGA两路视频输出,如果你的项目只需输出1路则只选择一路即可,如果你的项目需要输出多于2路,则可以继续添加更多的输出模块;

本文详细描述了设计方案,工程代码编译通过后上板调试验证,可直接项目移植,适用于在校学生做毕业设计、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的数字成像和图像传输领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;
关于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解码后的视频时序为VGA时序,即行同步,场同步,数据有效,数据信号;方便后端直接处理;解串部分使用Xilinx源语,本工程用到的是7系列源语,更高级别的FPGA应用,需要更改源语参数,但问题不大;
一个字:牛逼,表现如下:
1:纯Vhdl代码实现,学习性和阅读性达到天花板;
2:移植性还可以,只要兼容Xilinx解串源语的FPGA均可移植;
3:算法达到天花板,标准的CSI2接收协议实现解码;
4:实用性达到天花板,采用OV13850摄像头作为输入,不同于市面上验证性和实验性的工程,本设计直接面向实用工程,贴近真实项目,MIPI输入,2路视频输出,做类似项目的兄弟可直接拿去用,一个月工资直接拿到手。。。
5:支持高达4K分辨率的MIPI视频解码;
6:时序收敛很到位,考虑到MIPI协议的复杂性和时序的高要求,所以没有采用时序收敛不强的verilog,而是VHDL,虽然阅读性可能会低一些,但用户只需要知道用户接口即可,并不需要去看内部的复杂代码;

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

5、vivado工程介绍

工程设计架构如下:
在这里插入图片描述
开发板FPGA型号:Xilinx Kintex7 xc7k325tffg900-2;
开发环境:vivado2019.1;
输入:OV13850;4line;分辨率3840x2160;
输出1:VGA;分辨率1920x1080;
输出2:HDMI;分辨率1920x1080;
工程代码架构如下:
在这里插入图片描述
逻辑资源消耗和功耗如下:
在这里插入图片描述

6、上板调试验证

由于某些不可抗力和高层次复杂因素,不便展示调试结果,请见谅;
在这里插入图片描述

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

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式1:私,或者文章末尾的V名片;
资料获取方式2:文章末尾的XX号,回复 002000
网盘资料如下:
在这里插入图片描述


http://www.ppmy.cn/news/581327.html

相关文章

基于Python-turtle库绘制哆啦A梦

源码: # -*- coding: utf-8 -*- from turtle import * import turtlespeed(0) penup() seth(180) fd(200) seth(0) penup() #外圈头 circle(150, 40) pendown() fillcolor(dodgerblue) begin_fill() circle(150, 280) end_fill() #外圈头 fillcolor("red&qu…

用python画哆啦a梦的代码解释_教你利用Python把图片转字符画!代码哆啦A梦你见过嘛?...

图片转字符画的关键是把图片的灰度值与自定义的字符集之间建立映射关系,不同区间的灰度值对应不同的字符,之后将图片每一个像素对应的字符打印出来,就是我们要的字符画。 我们可以使用灰度值公式将像素的 RGB 值映射到灰度值: gr…

BMZ-MISC-哆啦A梦

BMZ-MISC-哆啦A梦 问题的描述是图片少了点什么。 第一反应是这张哆啦A梦的图片的crc是否正确,但图片是jpg格式的,不得不通过画图工具转化一下,结果他自己的crc是正确的。由于是jpg格式,于是又想到文件包含,binwalk一下…

c语言+easyX 使用easyx 绘制一个哆啦A梦的头像

C语言easyx库绘图 使用easyx 绘制一个哆啦A梦的头像第一步:分析第二步骤: 创建画布第三步骤:绘制头部第四步:绘制眼睛第五步:绘制眼珠子第六步:绘制 高光第七步:鼻子第八步:绘制嘴巴第九步:绘制胡须第十步:源码分享效果图 使用easyx 绘制一个哆啦A梦的头像 绘制一个哆啦A梦的案…

使用Turtle库绘制图像----哆啦A梦

使用Turtle库绘制图像----哆啦A梦 前言 Turtle库是Python中的一个绘图的函数库。 老师布置的作业,让我们设计图像 呜呜呜~好难过,毕竟太死了这个工具。。 方法都很简单,基本都是一样的步骤,但细节处理起来很浪费时间。 下面是我算是花了点时…

SCS【29】单细胞基因富集分析 (singleseqgset)

桓峰基因公众号推出单细胞生信分析教程并配有视频在线教程,目前整理出来的相关教程目录如下: Topic 6. 克隆进化之 Canopy Topic 7. 克隆进化之 Cardelino Topic 8. 克隆进化之 RobustClone SCS【1】今天开启单细胞之旅,述说单细胞测序的前世…

未来几年,软件测试九大新兴趋势

技术在不断发展,几年前的技术到现在可能已经落伍了。特别是在软件开发和测试领域在不断创新,并可能将人工智能、机器学习、大数据等新兴技术结合起来的当下。 无论是selenium测试自动化、浏览器兼容性测试,还是任何其他形式的测试方法&#…

常见的未授权漏洞批量检测工具

常见的未授权漏洞检测 命令行版已放出支持多线程,批量扫描,指定服务扫描,命令行版地址https://github.com/xk11z/unauthorized_com GUI版unauthorizedV2已更新,可批量ip检测导出结果 项目包含 1 、FTP 未授权访问&#xff08…