FPGA解码4line MIPI视频 IMX291/IMX290摄像头采集 提供工程源码和技术支持

目录

  • 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名片。
网盘资料如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/7954.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关键词采集软件在SEO优化中的应用与效果

搜索引擎的优化被广泛认为是提高网站排名和在线可见性的重要方法之一。SEO人员需要进行大量的工作以确保网站的内容和标签可以被搜索引擎正确地解析和索引。在这项任务中,使用搜索引擎关键词采集软件可以帮助SEO人员完成许多繁琐的任务并简化他们的工作流程。在本文…

Linux 基础IO(Input与output)学习

进程间通信:讲的是操作系统为用户提供的几种进程间的通信方式概念:进程间通信其实就是多个进程之间进行数据交互问题:进程间通信为什么不能直接进行数据交互,需要使用系统提供的方式?原因:进程之间是具有独…

电动力学问题中的Matlab可视化

电磁场的经典描述 小说一则 电磁场的经典描述就是没有啥玩意量子力学的经典电动力学下对电磁场的描述,以后有空写个科幻小说,写啥呢,就写有天张三遇见了一个外星人,外星人来自这样一个星球,星球上的物质密度特别低,导致外星人的测量会明显的影响物质的运动,外星人不能同时得到…

JNI 调用

简介 JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。 本地代码与 Java 虚拟机…

【ChatGPT】ChatGPT-5 强到什么地步?

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 ChatGPT-5 强到什么地步? 技术 深度学习模型的升级 更好的预测能力 自适应学习能力 特点 语言理解能力更强 自我修正和优化 更广泛的应用领域 应用 对话系统 智能写作…

【机器学习】吴恩达机器学习Deeplearning.ai

机器学习已经强大到可以独立成为人工智能的一个子领域。 可以通过对机器编程实现比如执行网络搜索、理解人类语言、通过x光诊断疾病,或制造自动驾驶汽车。 机器学习定义 一般来说,给一个算法学习的机会越多,它的表现就越好。 机器学习的两种…

阿里云5、6代云服务器实例免费升级至第7代(不限次数)

简介: 阿里云推出云服务器实例免费升级至第7代优惠活动,第5、6代云服务器,可享受实例部分免费升级至第7代实例,让你的云服务器拥有更高的安全、存储、网络等性能。 阿里云服务器升级有优惠吗?当然是有的&am…

长安信托:拥抱数字信托,探索多项目管理新路径

长安信托:公司使用 ONES 已经 2 年了。ONES 最大的优势是能够有效串联我司信息科技研发过程中的各个环节,从需求管理到研发任务跟踪,再到测试管理,ONES 能明确地展示出业务部门从需求提出到研发上线的全链路,体现信息科…

免费ChatGPT接入-国内怎么玩chatGPT

免费ChatGPT中文版 OpenAI 的 GPT 模型目前并不提供中文版的免费使用,但是有许多机器学习平台和第三方服务提供商也提供了基于 GPT 技术的中文版模型和 API。下面是一些常见的免费中文版 ChatGPT: Hugging Face:Hugging Face 是一个开源社区…

后缀为whl的文件是什么?如何安装whl文件?学习一下(22)

小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 欢迎和猫妹一起,趣味学Python。 今日主题 了解并使用Pyhton的库安装包文件whl。 什么是whl文件 whl格式本质上是一个压缩包,里面包含了py文件&am…

chatGPA的主要功能-chatGPT深度分析

ChatGPT功能介绍 ChatGPT是基于深度学习技术的自然语言处理算法,其主要用途是生成自然语言文本,能够应用于多个自然语言处理任务。以下是其主要功能介绍: 文本生成:ChatGPT能够生成高质量的自然语言文本,可以应用于大…

linux常用系统管理经验谈

Lab1 硬件和安装 步骤一:准备计算机 任务: 使用Red Hat Linux光盘启动系统 在启动时进入BIOS界面 设置系统启动顺序为A,CDROM,C 修改其他任何推荐的设置 保存并退出BIOS设置 步骤二:使用Anaconda(图形模式…

二十分钟带你了解JVM性能调优与实战进阶

ZGC 诞生原因 Java生态非常强大,但还不够,有些场景仍处于劣势,而ZGC的出现可以让Java语言抢占其他语言的某些特定领域市场。比如 谷歌主导的Android手机系统显示卡顿。证券交易市场,实时性要求非常高,目前主要是C主…

阿里云版GPT官宣,我们问了它10个问题

4月7日,阿里云宣布自研大模型“通义千问”,目前已开始邀请用户测试体验。 阿里达摩院在NLP自然语言处理等前沿科研领域早已布局多年,并于2019年启动大模型研发,通义千问便是其最新成果,相当于阿里云版的“ChatGPT”。 …

EPICS synApps SSCAN模块

1、在这个模块中有什么? 1)代码 sscan记录busy记录recDynLink库saveData数据存储客户端scanparm记录 2)EPICS数据库 scan数据库scanParms和alignParms数据库 3)MEDM显示窗口 scan*.adlscan*_help.adl2、简单扫描 1&#xff0…

Linux系统【Centos7】设置防火墙教程

1. 查看防火墙状态 在终端输入以下命令: systemctl status firewalld 如果状态显示为“active”说明防火墙已经启动;如果状态显示为“inactive”说明防火墙没有启动。 2. 启动防火墙 在终端输入以下命令: systemctl start firewalld 3…

vue3自定义实现可过滤关键字的树形下拉选择框

背景 最近项目中有一个部门选择需求,一开始是用element-plus的级联下拉写的,但是由于层级过深,会出现级联下拉超出屏幕的情况,所以改用树形下拉,但是element没有相关组件,现记录下vue3js自定义实现可以根据…

Vector - CAPL - CRC算法介绍(续)

不常用CRC算法 目录 Crc_CalculateCRC8H2F 代码示例 Crc_CalculateCRC32P4 代码示例 Crc_CalculateCRC64 代码示例 Crc_CalculateCRC8H2F 功能:根据数据计算CRC8H2F的相应校验和。 data:待计算CRC8H2F校验和的数据 dataSize:待计算CRC…

JVM垃圾收集器与HotSpot的算法细节

目录 HotSpot的算法细节实现 根节点枚举 安全点 安全区域 记忆集与卡表 记忆集 作用 卡表(Card Table) 卡页(Card Page) 元素变脏(Dirty) 写屏障 写屏障 写前屏障(Pre-Write Barrie…

【数据结构】顺序表

作者:日出等日落 专栏:数据结构 只有毅力才会使我们成功,而毅力的来源又在于毫不动摇,坚决采取为达到成功所需要的手段。 …