当前位置: 首页 > news >正文

FPGA高端项目:IMX327 MIPI 视频解码 USB3.0 UVC 输出,提供FPGA开发板+2套工程源码+技术支持

目录

  • 1、前言
    • 免责声明
  • 2、相关方案推荐
    • 我这里已有的 MIPI 编解码方案
  • 3、本 MIPI CSI-RX IP 介绍
  • 4、个人 FPGA高端图像处理开发板简介
  • 5、详细设计方案
    • 设计原理框图
    • IMX327 及其配置
    • MIPI CSI RX
    • 图像 ISP 处理
    • 图像缓存
    • UVC 时序
    • USB3.0输出架构
  • 6、vivado工程详解
    • FPGA逻辑设计
  • 7、工程移植说明
    • vivado版本不一致处理
    • FPGA型号不一致处理
    • 其他注意事项
  • 8、上板调试验证
    • 准备工作
    • 图像输出演示
  • 9、福利:工程代码的获取

FPGA高端项目:IMX327 MIPI 视频解码 USB3.0 UVC 输出,提供FPGA开发板+工程源码+技术支持

1、前言

FPGA图像采集领域目前协议最复杂、技术难度最高之一的应该就是MIPI协议了,MIPI解码难度之高,令无数英雄竞折腰,以至于Xilinx官方不得不推出专用的IP核供开发者使用,不然太高端的操作直接吓退一大批FPGA开发者,就没人玩儿了。本设计基于Xilinx的Kintex7-325T中端FPGA开发板,采集IMX327 MIPI摄像头的4 Lane MIPI视频,IMX327 摄像头配置为 MIPI4 Lane RAW12模式,输出有效分辨率为1920x1080@60Hz;IMX327 MIPI摄像头引脚经过权电阻方案分出LP电路后接入FPGA的HS BANK的LVDS差分IO;采用自定义的MIPI CSI RX解码IP实现MIPI的D_PHY+CSI_RX功能,输出AXI4-Stream格式的RAW12颜色视频,该IP由本博免费提供;至此,MIPI视频解码工作完成,但此时的视频还是原始的RAW12格式,远远达不到输出显示要求,所以还需进行图像处理操作,也就是图像ISP操作;本博提供及其完整的图像ISP,具体流程包括Bayer转RGB888、自动白平衡、色彩校正、伽马校正、RGB888转YCrCb444、图像增强、YCrCb444转RGB888、YCrCb444转YCrCb422等一系列操作;经过ISP处理后的图像颜色饱满、画质清晰,输出YCrCb422格式的视频;然后再使用本博提供的图像缓存架构将视频缓存到板载的DDR3中;再使用本博提供的UVC视频时序将视频从DDR3中读出;再将UVC视频送入板载的CYUSB3014-BZXI芯片,通过板载的USB3.0接口发送出去;CYUSB3014-BZXI芯片在Win10下可以免驱使用,用USB3.0数据线连接FPGA开发板和笔记本电脑,打开电脑自带的摄像头软件,选择本开发板的摄像头,即可显示IMX327 MIPI摄像头解码采集的视频了;

免责声明

本工程源码只是本博提供的FPGA高端图像处理开发板的测试例程使用,本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括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 CSI-RX IP 介绍

本设计采用自定义的MIPI CSI RX解码IP实现MIPI的D_PHY+CSI_RX功能,输出AXI4-Stream格式的RAW12颜色视频,该IP由本博免费提供;该IP目前只适用于Xilinx A7及其以上系列器件,支持的 4 lane RAW12图像,输入分辨率最高支持4K @30帧;IP UI配置界面如下:
在这里插入图片描述
该自定义IP只提供网表不提供源码,但用户依然可以自由使用,和使用Xilixn官方的 MIPI CSI-2 RX Subsystem一样,没有本质区别,因为MIPI CSI-2 RX Subsystem也是看不到源码的;MIPI CSI-RX IP资源消耗如下:
在这里插入图片描述

4、个人 FPGA高端图像处理开发板简介

本博客提供的工程源码需配合本博提供的FPGA高端图像处理开发板才能使用,亦或者读者自己拿去移植,但本博推荐使用本博客提供的工程源码需配合本博提供的FPGA高端图像处理开发板,该开发板截图如下:
在这里插入图片描述
此开发板专为高端FPGA图像处理设计,适合公司项目研发、研究所项目预研、高校项目开发、个人学习进步等场景需求,本博之前专门写过一篇博文详细介绍了该开发板的情况,感兴趣的请移步那篇博文,博客地址如下:
点击直接前往

5、详细设计方案

设计原理框图

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

IMX327 及其配置

本设计使用本博提供的专用SONY公司的 IMX327 MIPI相机,该相机输出分辨率达到了1920x1080,采用焦距可调的镜头,清晰度极高,适用于高端项目开发,相机截图如下:
在这里插入图片描述
IMX327 MIPI相机需要 i2c配置才能正确使用,本设计调用本博自定义的i2c主机IP实现对IMX327的配置,该IP挂载与AXI-Lite总线上,通过MicroBlaze软核运行的C语言代码实现配置,此外,本博还设计了自动曝光程序,实时读取IMX327 RAW12像素,通过写IMX327对应寄存器的方式实现实时的自动曝光算法,使得IMX327在暗黑的环境下也能输出明亮的图像;

本博提供的FPGA开发板有两个MIPI CSI-RX接口,分别位于P3、P4接口,因此可以接两个MIPI相机,其中,P4接口的相机采用螺丝固定方式连接,适用于FPGA开发板需要移动的项目,如小车等;P3接口的相机采用FPC软排线方式连接,适用于FPGA开发板不需要移动的项目,如固定检测等,具体连接方式如下图:
在这里插入图片描述

MIPI CSI RX

本设计采用自定义的MIPI CSI RX解码IP实现MIPI的D_PHY+CSI_RX功能,输出AXI4-Stream格式的RAW12颜色视频,该IP由本博免费提供;该IP目前只适用于Xilinx A7及其以上系列器件,支持的 4 lane RAW12图像,输入分辨率最高支持4K @30帧;IP UI配置界面如下:
在这里插入图片描述
该自定义IP只提供网表不提供源码,但用户依然可以自由使用,和使用Xilixn官方的 MIPI CSI-2 RX Subsystem一样,没有本质区别,因为MIPI CSI-2 RX Subsystem也是看不到源码的;

图像 ISP 处理

本博提供及其完整的图像ISP,具体流程包括Bayer转RGB888、自动白平衡、色彩校正、伽马校正、RGB888转YCrCb444、图像增强、YCrCb444转RGB888、YCrCb444转YCrCb422等一系列操作;经过ISP处理后的图像颜色饱满、画质清晰,输出YCrCb422格式的视频;图像 ISP 处理在工程 Block Design中如图:
在这里插入图片描述
这些IP均为Xilinx的免费IP,有的需要配置才能使用,在MicroBlaze软核运行的C语言代码已经提供了配置程序;

图像缓存

本设计使用本博提供的图像缓存读写IP实现视频缓存,该IP由纯verilog代码实现,用户接口为AXI4-Stream,可替换Xilinx官方的VDMA,本博已将他封装为自定义IP;图像缓存模块IP在工程 Block Design中如图:
在这里插入图片描述
需要注意的是,图像缓存架构需调用Xilinx的 MIG IP才能实现与DDR3的物理层交互;

UVC 时序

UVC 时序用于控制视频读出DDR3的时序,然后将读出的视频送入 USB3.0输出架构,UVC 时序很简单,与常用的VGA时序差不多,由纯verilog代码实现,将模块顶层代码拖入 Block Design中,如图:
在这里插入图片描述

USB3.0输出架构

UVC视频送入板载的CYUSB3014-BZXI芯片,通过板载的USB3.0接口发送出去;CYUSB3014-BZXI芯片在Win10下可以免驱使用,用USB3.0数据线连接FPGA开发板和笔记本电脑,打开电脑自带的摄像头软件,选择本开发板的摄像头,即可显示IMX327 MIPI摄像头解码采集的视频了;打开笔记本电脑的设备管理器,即可看到本开发板的USB3.0设备,如下:
在这里插入图片描述
打开电脑自带的摄像头软件后输出如下:
在这里插入图片描述

6、vivado工程详解

FPGA逻辑设计

开发板FPGA型号:Xilinx–Kintex7–xc7k325tffg676-2;
开发环境:Vivado2019.1;
输入:IMX327摄像头–MIPI–4 Lane–RAW12-1920x1080;
输出:USB3.0,分辨率1920x1080;
应用:FPGA高端项目:IMX327 MIPI 视频解码 USB3.0 UVC 输出;
工程Block Design如下:
在这里插入图片描述
由于调用IP较多,分散开来很不好看,也不利于阅读,本博将一些IP进行了再封装,如下图中红框标记部分,该封装只是形式上的好看而已,没有特殊功能,可以通过如下方法将其展开,查看里面的详细组成和结构,如下:
在这里插入图片描述
工程代码架构如下:
在这里插入图片描述
工程的资源消耗和功耗如下:
在这里插入图片描述

7、工程移植说明

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软核;

8、上板调试验证

准备工作

需要准备的器材如下:
FPHA开发板;
IMX327 摄像头;
笔记本电脑;

图像输出演示

图像输出演示如下:

图像输出演示

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

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

相关文章:

FPGA高端项目:IMX327 MIPI 视频解码 USB3.0 UVC 输出,提供FPGA开发板+2套工程源码+技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的 MIPI 编解码方案 3、本 MIPI CSI-RX IP 介绍4、个人 FPGA高端图像处理开发板简介5、详细设计方案设计原理框图IMX327 及其配置MIPI CSI RX图像 ISP 处理图像缓存UVC 时序USB3.0输出架构 6、vivado工程详解FPGA逻辑设计 7、工…...

深入探索 MySQL 8 中的 JSON 类型:功能与应用

随着 NoSQL 数据库的兴起,JSON 作为一种轻量级的数据交换格式受到了广泛的关注。为了满足现代应用程序的需求,MySQL 8引入了原生的 JSON 数据类型,提供了一系列强大的 JSON 函数来处理和查询 JSON 数据。本文将深入探讨 MySQL 8 中JSON 类型的…...

学习Spring的第十三天

非自定义bean注解开发 设置非自定义bean : 用bean去修饰一个方法 , 最后去返回 , spring就把返回的这个对象,放到Spring容器 一 :名字 : 如果bean配置了参数 , 名字就是参数名 , 如果没有 , 就是方法名字 二 : 如果方法产生对象时 , 需要注入数据 , 在方法参数设置即可 , …...

jss/css/html 相关的技术栈有哪些?

js 的技术组件有哪些?比如 jQuery vue 等 常见的JavaScript技术组件: jQuery: jQuery是一个快速、小巧且功能丰富的JavaScript库,用于简化DOM操作、事件处理、动画效果等任务。 React: React是由Facebook开发的用于构…...

机器学习超参数优化算法(贝叶斯优化)

文章目录 贝叶斯优化算法原理贝叶斯优化的实现(三种方法均有代码实现)基于Bayes_opt实现GP优化基于HyperOpt实现TPE优化基于Optuna实现多种贝叶斯优化 贝叶斯优化算法原理 在贝叶斯优化的数学过程当中,我们主要执行以下几个步骤: …...

Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(六)

原文:Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow 译者:飞龙 协议:CC BY-NC-SA 4.0 第十四章:使用卷积神经网络进行深度计算机视觉 尽管 IBM 的 Deep Blue 超级计算机在 1996 年击败了国际象棋世界冠军…...

XGB-3: 模型IO

在XGBoost 1.0.0中,引入了对使用JSON保存/加载XGBoost模型和相关超参数的支持,旨在用一个可以轻松重用的开放格式取代旧的二进制内部格式。后来在XGBoost 1.6.0中,还添加了对通用二进制JSON的额外支持,作为更高效的模型IO的优化。…...

springboot(ssm船舶维保管理系统 船只报修管理系统Java系统

springboot(ssm船舶维保管理系统 船只报修管理系统Java系统 开发语言:Java 框架:springboot(可改ssm) vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7&a…...

机器学习本科课程 大作业 多元时间序列预测

1. 问题描述 1.1 阐述问题 对某电力部门的二氧化碳排放量进行回归预测,有如下要求 数据时间跨度从1973年1月到2021年12月,按月份记录。数据集包括“煤电”,“天然气”,“馏分燃料”等共9个指标的数据(其中早期的部分…...

[office] excel中weekday函数的使用方法 #学习方法#微信#媒体

excel中weekday函数的使用方法 在EXCEL中Weekday是一个日期函数,可以计算出特定日期所对应的星期数。下面给大家介绍下Weekday函数作用方法。 01、比如,我在A84单元格输入一个日期,2018/5/9;那么,我们利用weekday计算…...

PAT-Apat甲级题1007(python和c++实现)

PTA | 1007 Maximum Subsequence Sum 1007 Maximum Subsequence Sum 作者 CHEN, Yue 单位 浙江大学 Given a sequence of K integers { N1​, N2​, ..., NK​ }. A continuous subsequence is defined to be { Ni​, Ni1​, ..., Nj​ } where 1≤i≤j≤K. The Maximum Su…...

洛谷:P2957 [USACO09OCT] Barn Echoes G

题目描述 The cows enjoy mooing at the barn because their moos echo back, although sometimes not completely. Bessie, ever the excellent secretary, has been recording the exact wording of the moo as it goes out and returns. She is curious as to just how mu…...

flinksqlbug : AggregateFunction udf Could not extract a data type from

org.apache.flink.table.api.ValidationException: SQL validation failed. An error occurred in the type inference logic of function ‘default_catalog.default_database.CollectSetSort’. org.apache.flink.table.api.ValidationException: An error occurred in the t…...

Aigtek高压放大器用途是什么呢

高压放大器在电子领域中扮演着至关重要的角色,其主要作用是将低电压信号放大到更高的电压水平。这种类型的放大器广泛用于各种应用中,以下是高压放大器的用途以及其关键作用的详细介绍。 1、科学研究和实验室应用: 高压放大器在科学研究和实验…...

c++ STL less 的视角

c less 函数在不同的地方感觉所起的作用是不一样的, 这中间原因是 less 的视角不一样, 下面尝试给出解释下, 方便记忆 1、 左右视角 符合 排序sort less(value, element) less 表示一种 “符合关系“, 表示sort 后…...

MQ面试题整理(持续更新)

1. MQ的优缺点 优点:解耦,异步,削峰 缺点: 系统可用性降低 系统引入的外部依赖越多,越容易挂掉。万一 MQ 挂了,MQ 一挂,整套系统崩 溃,你不就完了?系统复杂度提高 硬生…...

2401cmake,学习cmake2

步4:安装与测试 现在开始给项目添加安装规则和支持测试. 安装规则 安装规则非常简单:对MathFunctions,想安装库和头文件,对应用,想安装可执行文件和配置头. 所以在MathFunctions/CMakeLists.txt尾添加: install(TARGETS MathFunctions DESTINATION lib) install(FILES Mat…...

理解Jetpack Compose中的`remember`和`mutableStateOf`

理解Jetpack Compose中的remember和mutableStateOf 在现代Android开发中,Jetpack Compose已经成为构建原生UI的首选工具。它引入了一种声明式的编程模式,极大地简化了UI开发。在Compose的世界里,remember和mutableStateOf是两个非常关键的函…...

3D力导向树插件-3d-force-graph学习002

一、实现效果:节点文字同时展示 节点显示不同颜色节点盒label文字并存节点上添加点击事件 二、利用插件:CSS2DRenderer 提示:以下引入文件均可在安装完3d-force-graph的安装包里找到 三、关键代码 提示:模拟数据可按如下格式填…...

QXlsx Qt操作excel

QXlsx 是一个用于处理Excel文件的开源C库。它允许你在你的C应用程序中读取和写入Microsoft Excel文件(.xlsx格式)。该库支持多种操作,包括创建新的工作簿、读取和写入单元格数据、格式化单元格、以及其他与Excel文件相关的功能。 支持跨平台…...

线程同步:确保多线程程序的安全与高效!

全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...