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

国产高云FPGA实现MIPI视频解码转HDMI输出,基于OV5647摄像头,提供Gowin工程源码和技术支持

目录

  • 1、前言
    • 工程概述
    • 免责声明
  • 2、相关方案推荐
    • 我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目
    • 国产高云FPGA基础教程
    • 国产高云FPGA相关方案推荐
    • 我这里已有的 MIPI 编解码方案
  • 3、设计思路框架
    • 工程设计原理框图
    • OV5647摄像头及其配置
    • MIPI-DPHY
    • MIPI-CSI2-RX
    • 视频格式转换
    • Bayer转RGB
    • Video Frame Buffer 图像缓存
    • DDR3 控制器
    • HDMI输出架构
    • 工程源码架构
  • 4、Gowin工程源码1详解:OV5647 MIPI转HDMI
  • 5、上板调试验证并演示
    • 准备工作
    • 国产高云FPGA实现MIPI视频解码转HDMI输出演示
  • 6、工程源码

国产高云FPGA实现MIPI视频解码转HDMI输出,基于OV5647摄像头,提供Gowin工程源码和技术支持

1、前言

国产FPGA现状:

“苟利国家生死以,岂因祸福避趋之!”大洋彼岸的我优秀地下档员,敏锐地洞察到祖国的短板在于先进制程半导体的制造领域,于是本着为中华民族伟大复兴的中国梦贡献绵薄之力的初心,懂先生站在高略高度和长远角度谋划,宁愿背当代一世之骂名也要为祖国千秋万世谋,2018年7月,懂先生正式打响毛衣战,随后又使出恰勃纸战术,旨在为祖国先进制程半导体领域做出自主可控的战略推动;2019年初我刚出道时,还是Xilinx遥遥领先的时代(现在貌似也是),那时的国产FPGA还处于黑铁段位;然而才短短7年,如今的国产FPGA属于百家争鸣、百花齐放、八仙过海、神仙打架、方兴未艾、得陇望蜀、友商都是XX的喜极而泣之局面,此情此景,不得不吟唱老人家的诗句:魏武挥鞭,东临碣石有遗篇,萧瑟秋风今又是,换了人间。。。
目前对于国产FPGA优势有以下几点:
1:性价比高,与同级别国外大厂芯片相比,价格相差几倍甚至十几倍;
2:自主可控,国产FPGA拥有完整自主知识产权的产业链,从芯片到相关EDA工具;
3:响应迅速,FAE技术支持比较到位,及时解决开发过程中遇到的问题,毕竟中文数据手册;
4:采购方便,产业链自主可控,采购便捷;

FPGA实现MIPI视频解码现状:

MIPI视频解码分为D-PHY和CSI-2两大部分,其中D-PHY属于物理层,依托硬件,灵活性不高,方案不多;CSI-2属于协议层,依托代码,灵活性很高,方案很多;所以只要实现了D-PHY,MIPI-CSI解码其实就很灵活了;第一种D-PHY方案是使用FPGA内部资源,目前FPGA内部继承了硬核MIPI D-PHY的可选方案还是很丰富,国产的高云、安路、易灵思等都有,Xilinx则只有UltraScale+高端系列FPGA才有,该方案优点是设计简单,缺点是硬件成本较高;第二种是使用专用的D-PHY芯片,比如MC20901,该方案优点是设计简单,缺点是硬件成本较高;第三种是使用权电阻网络实现D-PHY功能,该方案是Xilinx官方推荐的一种简单、低速的D-PHY方案,通常用于测试,该方案优点是电路简单,硬件成本低,缺点是性能适中,无法用于高端场景;然后D-PHY信号进入FPGA内部的MIPI CSI-2 RX IP实现CSI功能,即实现MIPI视频解码,另外,也可以使用自己写的CSI模块实现CSI功能;本设计使用国产高云系列FPGA,所以无需考虑D-PHY部分;

工程概述

本设计使用国产高云GW5A-LV25UG324ES型号的FPGA做MIPI视频解码转HDMI输出系统;输入视频源为OV5647摄像头,FPGA首先使用纯verilog代码是实现的OV5647配置模块对OV5647摄像头做i2c配置,将其配置为MIPI 2 Lane的、RAW8颜色格式的、分辨率为1920x1080@30Hz的状态输出;然后MIPI视频送入高云官方提供的MIPI-DPHY硬核IP实现DPHY功能,分离出LP和HS电路以及控制信号;然后DPHY视频送入高云官方提供的MIPI-CSI2-RX硬核IP实现MIPI视频协议层解码功能,解出有效视频数据和控制数据;然后解码视频送入高云官方提供的MIPI-Byte-To-Pixel-Converter硬核IP实现视频格式转换功能,将解码视频数据包转换成标准像素格式数据,并从同步短包中恢复视频同步信号;然后视频送入纯verilog实现的Bayer转RGB模块实现颜色空间转换,将RAW8图像转换为RGB888图像;然后视频送入高云官方提供的Video-Frame-Buffer硬核IP实现视频缓存功能,本设计使用3帧缓存;然后使用纯verilog实现Native视频时序生成模块控制视频从DDR3中读出,并做输出视频同步;然后同步视频送入高云官方提供的DVI-TX硬核IP实现视频接口转换功能,将RGB888视频流编码为HDMI差分视频流输出;最后使用HDMI显示器显示即可;针对市场主流需求,本设计提供1套PDS工程源码,具体如下:
在这里插入图片描述
现对上述1套工程源码做如下解释,方便读者理解:

工程源码1

开发板FPGA型号为高云GW5A-LV25UG324ES;输入视频源为OV5647摄像头,FPGA首先使用纯verilog代码是实现的OV5647配置模块对OV5647摄像头做i2c配置,将其配置为MIPI 2 Lane的、RAW8颜色格式的、分辨率为1920x1080@30Hz的状态输出;然后MIPI视频送入高云官方提供的MIPI-DPHY硬核IP实现DPHY功能,分离出LP和HS电路以及控制信号;然后DPHY视频送入高云官方提供的MIPI-CSI2-RX硬核IP实现MIPI视频协议层解码功能,解出有效视频数据和控制数据;然后解码视频送入高云官方提供的MIPI-Byte-To-Pixel-Converter硬核IP实现视频格式转换功能,将解码视频数据包转换成标准像素格式数据,并从同步短包中恢复视频同步信号;然后视频送入纯verilog实现的Bayer转RGB模块实现颜色空间转换,将RAW8图像转换为RGB888图像;然后视频送入高云官方提供的Video-Frame-Buffer硬核IP实现视频缓存功能,本设计使用3帧缓存;然后使用纯verilog实现Native视频时序生成模块控制视频从DDR3中读出,并做输出视频同步;然后同步视频送入高云官方提供的DVI-TX硬核IP实现视频接口转换功能,将RGB888视频流编码为HDMI差分视频流输出,输出分辨率为1920x1080@60Hz;最后使用HDMI显示器显示即可;本工程适用于国产高云FPGA实现MIPI视频解码转HDMI应用;

本文详细描述了国产高云FPGA图像视频采集系统的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处理领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

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

2、相关方案推荐

我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目

其实一直有朋友反馈,说我的博客文章太多了,乱花渐欲迷人,自己看得一头雾水,不方便快速定位找到自己想要的项目,所以本博文置顶,列出我目前已有的所有项目,并给出总目录,每个项目的文章链接,当然,本博文实时更新。。。以下是博客地址:
点击直接前往

国产高云FPGA基础教程

高云FPGA开发软件Gowin的下载、安装、Licence共享,工程搭建、代码添加、综合、编译、下载、各种IP的调用、配置、使用等基础操作,是做高云FPGA开发的基本功,当然,如果你已是有经验的工程师,则可以省略这一步,为此,我专门开设了专栏,详细讲述国产高云FPGA基础教程,甚至可以说是保姆级的教程,专栏地址如下:
点击直接前往

国产高云FPGA相关方案推荐

鉴于国产高云FPGA的优异表现和市场需求,我专门开设了一个人国产高云FPGA专栏,里面收录了基于国产高云FPGA的图像处理、UDP网络通信、GT高速接口、PCIE等博客,感兴趣的可以去看看,博客地址:点击直接前往

我这里已有的 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、设计思路框架

工程设计原理框图

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

OV5647摄像头及其配置

视频输入源为OV5647 MIPI摄像头,FPGA首先使用纯verilog代码是实现的OV5647配置模块对OV5647摄像头做i2c配置,将其配置为MIPI 2 Lane的、RAW8颜色格式的、分辨率为1920x1080@30Hz的状态输出;OV5647摄像头如下:
在这里插入图片描述
OV5647配置模块代码如下:
在这里插入图片描述

MIPI-DPHY

使用高云官方提供的MIPI-DPHY硬核IP实现DPHY功能,分离出LP和HS电路以及控制信号;MIPI-DPHY硬核IP配置如下:
在这里插入图片描述
工程中IP核例化如下:
在这里插入图片描述

MIPI-CSI2-RX

DPHY视频送入高云官方提供的MIPI-CSI2-RX硬核IP实现MIPI视频协议层解码功能,解出有效视频数据和控制数据;MIPI-CSI2-RX硬核IP配置如下:
在这里插入图片描述
工程中IP核例化如下:
在这里插入图片描述

视频格式转换

然后解码视频送入高云官方提供的MIPI-Byte-To-Pixel-Converter硬核IP实现视频格式转换功能,将解码视频数据包转换成标准像素格式数据,并从同步短包中恢复视频同步信号;MIPI-Byte-To-Pixel-Converter硬核IP配置如下:
在这里插入图片描述
工程中IP核例化如下:
在这里插入图片描述

Bayer转RGB

然后视频送入纯verilog实现的Bayer转RGB模块实现颜色空间转换,将RAW8图像转换为RGB888图像;代码如下:
在这里插入图片描述

Video Frame Buffer 图像缓存

调用高云官方的Video Frame Buffer IP核将视频送到外接DDR3中做三帧缓存;该部分是图像采集显示系统的重点,如果是其他FPGA,则需要写一大堆代码才能实现,花费时间和精力很多,但高云FPGA通过集成硬核IP轻松实现了该功能,即Video Frame Buffer IP核;IP使用非常简单,配置如下:
在这里插入图片描述
工程中IP核例化如下:
在这里插入图片描述

DDR3 控制器

调用高云官方的DDR3 Memory Interface IP核实现图像数据到DDR3颗粒的搬运工作,类似于Xilinx的MIG;DDR3 Memory Interface IP配置如下:
在这里插入图片描述
工程中IP核例化如下:
在这里插入图片描述

HDMI输出架构

然后使用纯verilog实现Native视频时序生成模块控制视频从DDR3中读出,并做输出视频同步;然后同步视频送入高云官方提供的DVI-TX硬核IP实现视频接口转换功能,将RGB888视频流编码为HDMI差分视频流输出;最后使用HDMI显示器显示即可;DVI-TX硬核IP配置如下:
在这里插入图片描述
HDMI输出架构代码如下:
在这里插入图片描述

工程源码架构

工程源码架构如下:
在这里插入图片描述
我发布的工程源码均已编译通过,如下:
在这里插入图片描述

4、Gowin工程源码1详解:OV5647 MIPI转HDMI

开发板FPGA型号:国产高云–GW5A-LV25UG324ES;
开发环境:Gowin-V1.9;
输入:OV5647摄像头;MIPI-2 Lane;RAW8色域;分辨率1920x1080@30Hz;
输出:HDMI,逻辑编码;分辨率1920x1080@60Hz;
MIPI-DPHY方案:高云官方硬核IP方案;
MIPI-CSI2-RX方案:高云官方硬核IP方案;
图像缓存方案:高云官方硬核IP方案,3帧缓存;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握紫光同创FPGA实现MIPI视频解码转HDMI输出的设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

5、上板调试验证并演示

准备工作

你需要有以下装备才能移植并测试该工程代码:
1:FPGA开发板;
2:OV5647摄像头;
3:HDMI传输线;
4:HDMI显示,要求分辨率支持1920x1080;
开发板连接如下:
在这里插入图片描述

国产高云FPGA实现MIPI视频解码转HDMI输出演示

国产高云FPGA实现MIPI视频解码转HDMI输出演示如下:

OV5647-MIPI

6、工程源码

工程代码如下:
在这里插入图片描述

相关文章:

  • 在Vue3 + Vite 项目安装使用 Tailwind CSS 4.0报错
  • Ubuntu Linux系统的基本命令详情
  • vue 鼠标经过时显示/隐藏其他元素
  • PyTorchviz 和 Graphviz:可视化 PyTorch 模型的利器
  • 【MySQL】07.内置函数
  • 电路笔记(元器件):CAN 收发器 SN65HVD233 具有待机模式和环回功能的 3.3V CAN 收发器
  • 科技初创企业创新推动商业未来
  • 不使用SOAP,从PDF表单连接数据库
  • AbMole| MG132(133407-82-6,M1902,蛋白酶体抑制剂)
  • Redis 8.0 新增数据结构深度解析:从核心功能到生态重构
  • c++ constexpr关键字
  • 打破传统范式,线上 3D 画展彰显多元亮点
  • GPU训练和call方法
  • el-select中自定义 两组el-option,但是key不一样,并且点击需获取当前整个项的所有属性
  • LLM多轮对话效果优化之道
  • Vue3 对象转换
  • 谷歌浏览器调试python pygui程序
  • 《Cesium全生态解析:从入门到精通的3D地理空间开发指南》
  • 无人机桥梁检测如何通过数据存储、边缘AI、无线通讯等技术路线,提升检测效率
  • 算法备案:规范互联网信息服务,破除 “信息茧房”
  • WordPress怎么去掉底部/seo推广专员工作好做吗
  • 济南网站优化网站/网店推广有哪些方法
  • 汽车行业网站建设/百度搜索网
  • 网站可信/旅游推广赚佣金哪个平台好
  • 网站关键词标签/seo优化服务公司
  • 网站建设方案评标原则/优质外链