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输出架构
    • FPGA逻辑设计工程源码架构
    • SDK软件工程源码架构
  • 6、工程源码1-->P4口相机
  • 7、工程源码2-->P3口相机
  • 8、工程移植说明
    • vivado版本不一致处理
    • FPGA型号不一致处理
    • 其他注意事项
  • 9、上板调试验证
    • 准备工作
    • 图像输出演示
  • 10、福利:工程代码的获取

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

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摄像头解码采集的视频了;针对目前市面上主流的索尼IMX系列相机,本方案一共移植了2套工程源码,本博文介绍其中基于索尼IMX327相机的2套工程,详情如下:
在这里插入图片描述
这里说明一下提供的2套工程源码的作用和价值,如下:
工程源码1:Xilinx Kintex7-325T FPGA 解码索尼的 IMX327 MIPI相机,IMX327 被配置为 4 Lane RAW12 1080P分辨率;经FPGA解码、ISP图像处理、图像缓存、UVC时序同步等操作后,通过板载的USB3.0接口输出;本工程的相机接在配套FPGA开发板的P4接口,该接口的相机通过螺丝固定,相机不可独立移动;

工程源码2:Xilinx Kintex7-325T FPGA 解码索尼的 IMX327 MIPI相机,IMX327 被配置为 4 Lane RAW12 1080P分辨率;经FPGA解码、ISP图像处理、图像缓存、UVC时序同步等操作后,通过板载的USB3.0接口输出;本工程的相机接在配套FPGA开发板的P3接口,该接口的相机通过FPC软排线连接,相机可独立移动;

相机在FPGA开发板P3和P4口的连接方式如下图:
在这里插入图片描述

免责声明

本工程源码只是本博提供的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设备,如下:
在这里插入图片描述
打开电脑自带的摄像头软件后输出如下:
在这里插入图片描述

FPGA逻辑设计工程源码架构

提供的两套工程源码代码架构都一样,只是引脚约束不同;
工程Block Design如下:
在这里插入图片描述
由于调用IP较多,分散开来很不好看,也不利于阅读,本博将一些IP进行了再封装,如下图中红框标记部分,该封装只是形式上的好看而已,没有特殊功能,可以通过如下方法将其展开,查看里面的详细组成和结构,如下:
在这里插入图片描述
工程代码架构如下:
在这里插入图片描述

SDK软件工程源码架构

提供的两套工程源码代码架构都一样,只是引脚约束不同;
SDK软件工程源码架构如下:
在这里插入图片描述

6、工程源码1–>P4口相机

开发板FPGA型号:Xilinx–Kintex7–xc7k325tffg676-2;
开发环境:Vivado2019.1;
相机接口:开发板P4口,固定螺丝连接,相机不可自由移动;
输入:IMX327摄像头–MIPI–4 Lane–RAW12-1920x1080;
输出:USB3.0,分辨率1920x1080;
应用:FPGA高端项目:IMX327 MIPI 视频解码 USB3.0 UVC 输出;
工程源码架构请参考第五章节的“FPGA逻辑设计工程源码架构”和“SDK软件工程源码架构”
工程的资源消耗和功耗如下:
在这里插入图片描述

7、工程源码2–>P3口相机

开发板FPGA型号:Xilinx–Kintex7–xc7k325tffg676-2;
开发环境:Vivado2019.1;
相机接口:开发板P3口,FPC软排线连接,相机可自由移动;
输入:IMX327摄像头–MIPI–4 Lane–RAW12-1920x1080;
输出:USB3.0,分辨率1920x1080;
应用:FPGA高端项目:IMX327 MIPI 视频解码 USB3.0 UVC 输出;
工程源码架构请参考第五章节的“FPGA逻辑设计工程源码架构”和“SDK软件工程源码架构”
工程的资源消耗和功耗同工程源码1一致;

8、工程移植说明

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

9、上板调试验证

准备工作

需要准备的器材如下:
本博提供的专用FPGA开发板;
本博提供的专用IMX327摄像头;
USB3.0连接线;
笔记本电脑;

图像输出演示

仅演示连接在P4口相机的图像输出,如下:

图像输出演示


注意!
注意!
注意!
1、USB线一定要是3.0的,区别方法是USB口内部的塑料件是蓝色的,对应的,电脑的USB口也必须是3.0的;
2、USB线与电脑连接,一定要是直连,不能有转接的HUB,也就是开发板与电脑USB口直连;
3、电脑操作系统一定要是Windows10;
4、打开电脑自带的摄像头软件后,一定要选择“EZ-Camera!”;

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

2023年ABC123公众号年刊下载(PDF电子书)

Part1 前言 大家好,我是ABC_123。2023年公众号正式更名为"希潭实验室"。除了分享日常红队攻防、渗透测试技术文章之外,重点加强了APT案例分析方面的内容。公众号关注度得到进一步提升,关注人数已达到3万5千人。原计划在2023年编写…

统一身份认证系统架构设计与实践总结

随着互联网的快速发展和应用的普及,人们在各个网站和应用上需要不同的账号和密码进行身份认证。为了解决这个问题,统一身份认证系统应运而生。本文将总结统一身份认证系统的架构设计与实践经验,帮助读者了解如何设计和实现一个高效、安全的统…

2024幻兽帕鲁服务器多少钱一套?

2024年幻兽帕鲁服务器价格表更新,阿里云、腾讯云和华为云Palworld服务器报价大全,4核16G幻兽帕鲁专用服务器阿里云26元、腾讯云32元、华为云26元,阿腾云atengyun.com分享幻兽帕鲁服务器优惠价格表,多配置报价: 幻兽帕鲁…

第三百一十三回

文章目录 1. 概念介绍2. 实现方法2.1 obscureText属性2.2 decoration属性 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何实现倒计时功能"相关的内容,本章回中将介绍如何实现密码输入框.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍…

计划任务功能优化,应用商店上架软件超过100款,1Panel开源面板v1.9.6发布

2024年2月7日,现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.9.6版本。 在v1.9.5和v1.9.6这两个小版本中,1Panel针对计划任务等功能进行了多项优化和Bug修复。此外,1Panel应用商店新增了3款应用,上架精选软件应用超过1…

算法随想录第五十二天打卡|300.最长递增子序列 , 674. 最长连续递增序列 , 718. 最长重复子数组

300.最长递增子序列 今天开始正式子序列系列,本题是比较简单的,感受感受一下子序列题目的思路。 视频讲解:动态规划之子序列问题,元素不连续!| LeetCode:300.最长递增子序列_哔哩哔哩_bilibili 代码随想录…

【python】绘制春节烟花

一、Pygame库春节烟花示例 下面是一个使用Pygame实现的简单春节烟花效果的示例代码。请注意,运行下面的代码之前,请确保计算机上已经安装了Pygame库。 import pygame import random import math from pygame.locals import *# 初始化pygame pygame.ini…

基于麻雀优化算法优化XGBoost参数的优化控制策略

目录 一、背景 二、算法流程图 三、附录 一、背景 为提高极端梯度提升(Extreme Gradient Boosting, XGBoost)集成算法在时间预测、信贷风险预测、工件参数预测、故障诊断预测等方面中的准确性,研究者提出了一种改进的麻雀算法(…

【我与Java的成长记】之String类详解

系列文章目录 能看懂文字就能明白系列 C语言笔记传送门 Java笔记传送门 🌟 个人主页:古德猫宁- 🌈 信念如阳光,照亮前行的每一步 文章目录 系列文章目录🌈 *信念如阳光,照亮前行的每一步* 前言一、字符串构…

深入浅出:Golang的Crypto/SHA256库实战指南

深入浅出:Golang的Crypto/SHA256库实战指南 介绍crypto/sha256库概览主要功能应用场景库结构和接口实例 基础使用教程字符串哈希化文件哈希化处理大型数据 进阶使用方法增量哈希计算使用Salt增强安全性多线程哈希计算 实际案例分析案例一:安全用户认证系…

【芯片设计- RTL 数字逻辑设计入门 13 -- generate_for 和 for】

文章目录 generate_forverilog codetestbench code仿真波形 for 循环verilog code仿真波形错误小结 generate_for 在某个module中包含了很多相似的连续赋值语句,请使用generata…for语句编写代码,替代该语句,要求不能改变原module的功能。 …

假设检验的过程

假设检验的核心思想是小概率事件在一次实验中不可能发生,假设检验就是利用小概率事件的发生进行反正。学习假设检验,有几个概念不能跳过,原假设、p值 1.原假设 假设检验的基本过程如下: 1)做出一个假设H0&#xff0c…

IEC 104电力规约详细解读(三) - 遥信

1.功能简述 遥信,、即状态量,是为了将断路器、隔离开关、中央信号等位置信号上送到监控后台的信息。遥信信息包括:反应电网运行拓扑方式的位置信息。如断路器状态、隔离开关状态;反应一次二次设备工作状况的运行信息,如…

豪掷770亿!华为员工集体“分红大狂欢”:至少14万人受益

豪掷770亿!华为员工集体“分红大狂欢”:至少14万人受益 近日,华为宣布了其2023年度分红计划,总金额高达770.85亿元,预计至少将惠及14万员工。这一消息引发了广泛关注和热议,成为业界的一大亮点。作为中国领…

如何构建一个高效的微服务治理闭环管理体系

随着企业业务的快速发展和数字化转型的推进,微服务架构因其高度的灵活性、可扩展性和可维护性而逐渐成为主流。然而,微服务架构的复杂性也带来了诸多治理挑战。为了有效应对这些挑战,构建一个微服务治理闭环至关重要。 1、微服务治理概述 微…

vue的8大生命周期

第072个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 提供vue2的一些基本操作:安装、引用,模板使用,computed&a…

L3HCTF 2024

Check in 输入一个1就获得flag

幻兽帕鲁服务器搭建最简单新手教程,10秒钟自动部署,一键开服(腾讯云)

以下教程是基于腾讯云轻量应用服务器搭建的,非常简单,无论搭建幻兽帕鲁还是其他的游戏或者应用,都能以非常快的速度部署好。而且稳定流畅,功能丰富。 下面就来一起看看如何搭建吧。 幻兽帕鲁腾讯云服务器购买与一键部署教程&…

【Git版本控制 03】远程操作

目录 一、克隆远程仓库 二、推送远程仓库 三、拉取远程仓库 四、忽略特殊文件 五、命令配置别名 一、克隆远程仓库 Git是分布式版本控制系统,同⼀个Git仓库,可以分布到不同的机器上。怎么分布呢? 找⼀台电脑充当服务器的⻆⾊&#xff…

Java ieda 抽风报错导致无法正常启动项目

Java ieda 抽风报错导致无法正常启动项目 问题描述:新建模块运行时出现下面报错,不能正常启动程序。 Error:Module 你的项目名 production: java.lang.ClassCastException: class org.jetbrains.jps.builders.java.dependencyView.TypeRepr$PrimitiveT…