FPGA实现4K MIPI视频解码转HDMI2.0输出,基于IMX317摄像头,支持4K@60Hz,提供2套工程源码和技术支持

server/2025/4/1 21:34:23/

目录

  • 1、前言
    • 工程概述
    • 免责声明
  • 2、相关方案推荐
    • 我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目
    • 我这里已有的 MIPI 编解码方案
    • 我已有的4K/8K视频处理解决方案
  • 3、详细设计方案
    • 设计框图
    • 硬件设计架构
    • FPGA开发板
    • IMX317摄像头
    • MIPI D-PHY
    • MIPI CSI-2 RX Subsystem
    • 图像预处理
    • Sensor Demosaic 图像格式转换
    • Gammer LUT 伽马校正
    • VDMA 图像缓存
    • HDMI 1.4/2.0 Transmitter Subsystem
    • Video PHY Controller
    • vivado逻辑工程源码架构
    • vitis软件工程源码架构
  • 4、工程源码1详解-->KU3P版本
  • 5、工程源码2详解-->ZU4EV版本
  • 6、工程移植说明
    • vivado版本不一致处理
    • FPGA型号不一致处理
    • 其他注意事项
  • 7、上板调试验证并演示
  • 8、福利:工程源码获取

FPGA实现4K MIPI视频解码转HDMI2.0输出,基于IMX317摄像头,支持4K@60Hz,提供2套工程源码和技术支持

1、前言

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

Xilinx系列FPGA实现4K视频收发现状:
目前Xilinx系列FPGA实现提供了多种4K视频收发方案;对于纯FPGA而言,需要用到GT高速接口资源实现编解码,但要求K7及其以上系列FPGA,以HDMI2.0为例,Xilinx官方提供了基于Video PHY Controller为核心的一整套HDMI2.0收发方案,此外,还可以直接使用GT高速接口IP核配置为GT-HDMI编解码模式,或者配置为DP编解码模式;对于Zynq系列FPGA而言,既可以使用PL端的GT高速接资源做4K视频收发,也可以使用PS端的DP外设做4K视频收发;本博主擅长Xilinx系列FPGA实现HDMI2.0视频收发方案设计,本设计采用基于Video PHY Controller为核心的一整套HDMI2.0收发方案,最高支持3840x2160@60Hz;

工程概述

本设计基于Xilinx系列FPGA实现4K MIPI视频解码转HDMI2.0输出工程解决方案,最高支持4K@60Hz分辨率;视频输入源为IMX317 MIPI摄像头,FPGA首先对摄像头进行i2c初始化配置,将IMX317 输出分辨率配置为3840x2160@30Hz,MIPI-4 Lane输出模式;然后MIPI视频送入Xilinx官方的MIPI CSI-2 RX Subsystem IP核实现D-PHY+CSI功能;然后调用图像预处理模块实现视频剪裁和RAW12转RAW8功能;然后视频送入Xilinx官方的Sensor Demosaic IP核实现RAW8转RGB888功能;然后视频送入Xilinx官方的Gamma LTU实现伽马校正功能;然后送入Xilinx官方的VDMA IP核实现视频三帧缓存;视频从VDMA读出后送入Xilinx官方的AXI4-Stream Data FIFO IP核实现视频缓冲;然后送入Xilinx官方的HDMI 1.4/2.0 Transmitter Subsystem IP核实现HDMI2.0视频编码;然后送入Xilinx官方的Video PHY Controller IP核实现并串转换,并输出高速差分的HDMI2.0视频;HDMI2.0视频再送入板载的DP159或其他同等功能的驱动芯片,以增强高速信号的输出驱动能力;最后使用HDMI2.0线缆连接至显示器即可输出显示采集的视频;

上述IP和IC需要SDK或者vitis配置,所以需要调用MicroBlaze或者Zynq软核;针对目前市面上主流的项目需求,本博客共设计了2套工程源码,详情如下:
在这里插入图片描述
现对上述2套工程源码做如下解释,方便读者理解:

工程源码1

开发板FPGA型号为Xilinx–>Kintex7-UltraScale+ xcku3p-ffva676-2-i;视频输入源为IMX317 MIPI摄像头,FPGA首先对摄像头进行i2c初始化配置,将IMX317 输出分辨率配置为3840x2160@30Hz,MIPI-4 Lane输出,一个时钟输出2个像素模式;然后MIPI视频送入Xilinx官方的MIPI CSI-2 RX Subsystem IP核实现D-PHY+CSI功能;然后调用图像预处理模块实现视频剪裁和RAW12转RAW8功能;然后视频送入Xilinx官方的Sensor Demosaic IP核实现RAW8转RGB888功能;然后视频送入Xilinx官方的Gamma LTU实现伽马校正功能;然后送入Xilinx官方的VDMA IP核实现视频三帧缓存;视频从VDMA读出后送入Xilinx官方的AXI4-Stream Data FIFO IP核实现视频缓冲;然后送入Xilinx官方的HDMI 1.4/2.0 Transmitter Subsystem IP核实现HDMI2.0视频编码;然后送入Xilinx官方的Video PHY Controller IP核实现并串转换,并输出高速差分的HDMI2.0视频,输出分辨率配置为3840x2160@60Hz;HDMI2.0视频再送入板载的DP159或其他同等功能的驱动芯片,以增强高速信号的输出驱动能力;最后使用HDMI2.0线缆连接至显示器即可输出显示采集的视频;本设计使用UltraScale-GTY高速接口,适用于Xilinx-Kintex7-UltraScale+系列FPGA实现HDMI2.0视频收发应用;

工程源码2

开发板FPGA型号为Xilinx-Zynq UltraScale+ xczu4ev-sfvc784-2-i;视频输入源为IMX317 MIPI摄像头,FPGA首先对摄像头进行i2c初始化配置,将IMX317 输出分辨率配置为3840x2160@30Hz,MIPI-4 Lane输出,一个时钟输出2个像素模式;然后MIPI视频送入Xilinx官方的MIPI CSI-2 RX Subsystem IP核实现D-PHY+CSI功能;然后调用图像预处理模块实现视频剪裁和RAW12转RAW8功能;然后视频送入Xilinx官方的Sensor Demosaic IP核实现RAW8转RGB888功能;然后视频送入Xilinx官方的Gamma LTU实现伽马校正功能;然后送入Xilinx官方的VDMA IP核实现视频三帧缓存;视频从VDMA读出后送入Xilinx官方的AXI4-Stream Data FIFO IP核实现视频缓冲;然后送入Xilinx官方的HDMI 1.4/2.0 Transmitter Subsystem IP核实现HDMI2.0视频编码;然后送入Xilinx官方的Video PHY Controller IP核实现并串转换,并输出高速差分的HDMI2.0视频,输出分辨率配置为3840x2160@60Hz;HDMI2.0视频再送入板载的DP159或其他同等功能的驱动芯片,以增强高速信号的输出驱动能力;最后使用HDMI2.0线缆连接至显示器即可输出显示采集的视频;本设计使用UltraScale-GTH高速接口,适用于Xilinx-Zynq UltraScale+ MPSoC系列FPGA实现HDMI2.0视频收发应用;

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

免责声明

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

2、相关方案推荐

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

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

MIPI__33">我这里已有的 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有项目需求或学习兴趣的兄弟可以去我的专栏看看,专栏地址如下:
点击直接前往专栏

我已有的4K/8K视频处理解决方案

我的主页有FPGA 4K/8K视频处专栏,该专栏有4K/8K视频处理,包括简单的4K/8K视频收发、4K/8K视频缩放、4K/8K视频拼接等等;以下是专栏地址:
点击直接前往

3、详细设计方案

设计框图

本设计使用的是Xilinx官方推荐的方案,该方案大致如下:
在这里插入图片描述
具体到本设计的工程详细设计方案框图如下:
在这里插入图片描述

硬件设计架构

4K HDMI2.0 硬件设计架构如下:
在这里插入图片描述
本博主提供FPGA HDMI2.0视频收发的参考原理图,为PDF版本,里面包含了详细的电路设计,可节省你的硬件开发时间,如下:
在这里插入图片描述

FPGA开发板

本UP主有下列FPGA开发板均可实现4K@60Hz视频 HDMI2.0的收发,本博客仅仅是介绍了其中Zynq UltraScale+系列的开发板实现方案,需要其他方案的朋友可以在博客末尾联系到本UP,现有开发板方案如下:
1–>Xilinx Kintxe7 UltraScale+ FPGA开发板;
2–>Zynq UltraScale+ MPSoC FPGA开发板;
关于本博客使用的这款开发板详细信息,请参考我之前的博客,对这块开发板感兴趣的朋友可以咨询本UP获得;博客链接如下:
点击直接前往

IMX317_57">IMX317摄像头

视频输入源为IMX317 MIPI摄像头,FPGA首先对摄像头进行i2c初始化配置,将IMX317 输出分辨率配置为3840x2160@30Hz,MIPI-4 Lane输出模式;IMX317 i2c配置在vitis软件代码中;IMX317摄像头如下:
在这里插入图片描述

MIPI_DPHY_60">MIPI D-PHY

由于本设计使用UltraScale+系列FPGA,软核方案自带D-PHY,所以不再需要配套的D-PHY芯片或者权电阻D-PHY电路,也就是MIPI输入电路不再需要分理处LP低功耗电路,直接将HS差分时钟对和数据对直接连到FPGA的HP-BANK即可;
!!!注意
!!!注意
如果你的开发板FPGA型号不是UltraScale+系列,则需要D-PHY电路,否则无法解码MIPI视频;

MIPI_CSI2_RX_Subsystem_65">MIPI CSI-2 RX Subsystem

然后MIPI视频送入Xilinx官方的MIPI CSI-2 RX Subsystem IP核实现D-PHY+CSI功能,当然,这里主要是CSI功能,即MIPI协议层解码,IMX317摄像头配置后,MIPI-CLK是600MHz,又由于是双沿传输,那么线速率就是1200MHz,IMX317配置为4 Lane通道传输,双像素输出模式;MIPI CSI-2 RX Subsystem配置如下:
在这里插入图片描述
MIPI CSI-2 RX Subsystem在Block Design中如下:
在这里插入图片描述

图像预处理

MIPI视频解码后,调用图像预处理模块实现视频剪裁和RAW12转RAW8功能;将图像预处理模块顶层直接拖入Block Design中如下:
在这里插入图片描述

Sensor Demosaic 图像格式转换

调用Xilinx的Sensor Demosaic IP实现RAM转RGB功能,该IP通过Vitis的C代码软件配置,Sensor Demosaic配置如下:
在这里插入图片描述
Sensor Demosaic在Block Design中如下:
在这里插入图片描述

Gammer LUT 伽马校正

调用Xilinx的Gammer LUT IP实现伽马校正功能,该IP通过Vitis的C代码软件配置,Gammer LUT配置如下:
在这里插入图片描述
Gammer LUT在Block Design中如下:
在这里插入图片描述

VDMA 图像缓存

解码后的MIPI视频送入Xilinx官方的VDMA IP核实现视频三帧缓存,功能十分简单,VDMA需要Vitis或者SDK软件配置,Block Design设计中如下:
在这里插入图片描述

HDMI 1.4/2.0 Transmitter Subsystem

调用Xilinx官方的HDMI 1.4/2.0 Transmitter Subsystem IP核做4K音视频的编码工作,同时编码4K视频流和音频流并输出3路AXI4-Stream流和DDC控制信号;HDMI 1.4/2.0 Transmitter Subsystem配置如下:
在这里插入图片描述
该IP需要在Vitis SDK中做进一步详细配置,详情参考Vitis SDK C语言软件代码;
值得注意的是,该IP使用的GT高速接口PLL类型要根据TX端输入的参考时钟而定,具体要结合你的原理图设计考虑,并非固定配置,详情可咨询博主;

Video PHY Controller

Video PHY Controller可做HDMI2.0视频的接收和发送的解串与串化;对于HDMI2.0视频接收而言,可将原来高速串行信号解串为3路20bit的AXI4-Stream并行数据;然后调用Xilinx官方的HDMI 1.4/2.0 Receiver Subsystem IP核做4K超清视频的解码工作,同时解码出AXI4-Stream流的音频流和视频流;对于HDMI2.0视频发送而言,可将原3路20bit的AXI4-Stream并行数据串化为高速串行信号,输出的差分视频数据信号直接从FPGA的GT高速BANK输出,差分时钟信号直接从FPGA的LVDS高速BANK输出;以HDMI2.0收发模式为例,Video PHY Controller配置如下:
在这里插入图片描述
该IP需要在Vitis SDK中做进一步详细配置,详情参考Vitis SDK C语言软件代码;

vivado逻辑工程源码架构

工程源码架构包括vivado Block Design逻辑设计和vitis SDK软件设计;
以工程源码2为例,Block Design逻辑设计架构截图如下:
在这里插入图片描述
以工程源码2为例,综合后的源码架构如下:
在这里插入图片描述

vitis软件工程源码架构

Vitis软件代码如下:
在这里插入图片描述
!!!注意
!!!注意
代码为了兼容不同板卡的外围IC,所以代码显得冗余复杂,图中标记的为必须使用到的代码,大多数保持默认即可;
工程源码1使用的是vivado2019.1的SDK;

4、工程源码1详解–>KU3P版本

开发板FPGA型号:Xilinx–>Kintex7-UltraScale+ xcku3p-ffva676-2-i;
FPGA开发环境:Vivado2022.2;
输入:IMX317摄像头,分辨率3840x2160@30Hz;
IMX317模式配置:MIPI-4 Lane模式,RAW12颜色空间,一个时钟输出2个像素,线速率1200MHz;
输出:HDMI2.0,分辨率3840x2160@60Hz;
MIPI-D-PHY方案:UltraScale+系列FPGA自带D-PHY
MIPI-CSI2-RX方案:Xilinx官方MIPI CSI-2 RX Subsystem IP核;
图像缓存方案:Xilinx官方VDMA方案,3帧缓存;
HDMI2.0发送方案:Xilinx系列FPGA GT高速接口方案;
使用GT高速接口类型:UltraScale-GTY高速接口;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握Xilinx系列FPGA实现4K MIPI视频解码转HDMI2.0输出的设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

5、工程源码2详解–>ZU4EV版本

开发板FPGA型号:Xilinx-Zynq UltraScale+ xczu4ev-sfvc784-2-i;
FPGA开发环境:Vivado2022.2;
输入:IMX317摄像头,分辨率3840x2160@30Hz;
IMX317模式配置:MIPI-4 Lane模式,RAW12颜色空间,一个时钟输出2个像素,线速率1200MHz;
输出:HDMI2.0,分辨率3840x2160@60Hz;
MIPI-D-PHY方案:UltraScale+系列FPGA自带D-PHY
MIPI-CSI2-RX方案:Xilinx官方MIPI CSI-2 RX Subsystem IP核;
图像缓存方案:Xilinx官方VDMA方案,3帧缓存;
HDMI2.0发送方案:Xilinx系列FPGA GT高速接口方案;
使用GT高速接口类型:UltraScale-GTH高速接口;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握Xilinx系列FPGA实现4K MIPI视频解码转HDMI2.0输出的设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

6、工程移植说明

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

7、上板调试验证并演示

准备工作

FPGA开发板,推荐使用本博的开发板;
IMX317摄像头;
HDMI显示器或者电视;
HDMI线;
以工程源码2为例,开发板连接如下:
在这里插入图片描述

IMX317HDMI20_168">IMX317解码转HDMI2.0输出演示

IMX317解码转HDMI2.0输出演示如下:

IMX317-4K

8、福利:工程源码获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:
在这里插入图片描述
此外,有很多朋友给本博主提了很多意见和建议,希望能丰富服务内容和选项,因为不同朋友的需求不一样,所以本博主还提供以下服务:
在这里插入图片描述


http://www.ppmy.cn/server/180451.html

相关文章

Postman 7.3.5 旧版下载指南(Win64)及注意事项

Postman-win64-7.3.5-Setup 是 Postman 的一个旧版本(2019年发布,适用于 Windows 64位系统)。以下是相关信息和建议: 1. Postman 7.3.5 版本说明 功能:用于 API 开发、测试和协作。 系统要求:Windows 64位…

蓝桥杯真题------R格式(高精度乘法,高精度加法)

对于高精度乘法和加法的同学可以学学这几个题 高精度乘法 高精度加法 文章目录 题意分析部分解全解 后言 题意 给出一个整数和一个浮点数,求2的整数次幂和这个浮点数相乘的结果最后四舍五入。、 分析 我们可以发现,n的范围是1000,2的1000次方非常大&am…

《Keras 3 :AI 使用图神经网络和 LSTM 进行交通流量预测》

《Keras 3 :AI 使用图神经网络和 LSTM 进行交通流量预测》 作者: Arash Khodadadi 创建日期: 2021/12/28 最后修改时间: 2023/11/22 描述: 此示例演示如何对图形进行时间序列预测。 (i) 此示例…

WPF 自定义行为AssociatedObject详解

AssociatedObject 是在使用 WPF 行为&#xff08;Behaviors&#xff09;时非常重要的一个属性。当你创建一个自定义行为并继承 Behavior<T> 类时&#xff0c;AssociatedObject 属性提供了对行为所附加到的控件&#xff08;即目标控件&#xff09;的引用。 AssociatedObj…

VMware Ubuntu 网络配置全攻略:从断网到畅通无阻

一、网络连接模式选择&#xff08;先搞懂原理&#xff09; VMware提供三种网络模式&#xff0c;就像手机的不同网络套餐&#xff1a; 模式适用场景特点类比NAT个人上网/新手首选虚拟机共享主机IP&#xff0c;能上网但隐身家用WiFi桥接服务器/需要被局域网访问虚拟机会获得独立…

web权限划分提权和移权

前言&#xff1a;权限的基本认知 渗透权限划分&#xff1a;假如我们通过弱口令进入到web的后台 这样我们就拿到了web的管理员权限 管理员权限是web中最高的权限&#xff08;一般我们进入web的时候数据库会进行用户权限的划分&#xff1a;假设 0-10为最高的权限 11-10000为普通…

飞书电子表格自建应用

背景 coze官方的插件不支持更多的飞书电子表格操作&#xff0c;因为需要自建应用 飞书创建文件夹 创建应用 开发者后台 - 飞书开放平台 添加机器人 添加权限 创建群 添加刚刚创建的机器人到群里 文件夹邀请群 创建好后&#xff0c;就可以拿到id和key 参考教程&#xff1a; 创…

循相似之迹:解锁协同过滤的核心推荐逻辑

目录 一、引言二、协同过滤的基本原理三、协同过滤的算法类型&#xff08;一&#xff09;基于用户的协同过滤&#xff08;二&#xff09;基于物品的协同过滤 四、协同过滤的应用案例&#xff08;一&#xff09;电商平台的商品推荐&#xff08;二&#xff09;音乐平台的歌曲推荐…