Xilinx系列FPGA纯VHDL代码解码MIPI视频+图像缩放+视频拼接,基于OV5640摄像头实现,提供5套工程源码和技术支持


Xilinx系列FPGA纯VHDL代码解码MIPI视频+图像缩放+视频拼接,基于OV5640摄像头实现,提供5套工程源码和技术支持

1、前言

FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了,MIPI解码难度之高,令无数英雄竞折腰,以至于Xilinx官方不得不推出专用的IP核供开发者使用,不然太高端的操作直接吓退一大批FPGA开发者,就没人玩儿了。

工程概述

本设计基于Xilinx系列FPGA开发板采集OV5640摄像头的2Line MIPI视频,本方案最大的价值在于采用纯VHDL代码实现的MIPI解码架构,包括MIPI-DPHY模块、MIPI-CSI2-RX模块、RAW转RGB模块、伽马校正模块,这些模块均有VHDL代码实现;OV5640摄像头配置为MIPI模式,RAW10数据格式,MIPI引脚经过权电阻分离出LP电路后接入FPGA的HS BANK的LVDS差分IO;首先调用VHDL实现的自研的MIPI-DPHY IP核实现MIPI协议物理层解串和通道绑定融合功能;然后调用VHDL实现的自研的MIPI-CSI2-RX IP核实现MIPI协议层解析功能,并提取出有效的像素数据以及行场等同步信号,并封装为AXI4-Stream接口协议输出;然后调用VHDL实现的自研的RAW转RGB IP核实现WAR10数据到RGB数据的转换;然后将视频复制为多份,以模拟多路视频输入;然后调用VHDL实现的自研的伽马校正 IP核实现伽马校正功能,使输出图像更符合人眼识别特征;然后调用自研的、基于HLS实现的、任意尺寸缩放的图像缩放模块实现图像缩放操作;然后调用Xilinx的VDMA IP实现图像三帧缓存功能;然后调用Xilinx的Video Mixer IP实现多路视频拼接功能;然后调用Xilinx的Video Timing Controller和AXI4-Stream toVideo Out IP实现视频流从AXI4-Stream到VGA时序的转换;最后用自定义的RGB转HDMI模块将视频输出显示器显示;整个工程调用Zynq或MicroBlaze软核做IP的配置,在SDK里以C语言软件代码的形式运行,所以整个工程包括FPGA逻辑设计和SDK软件设计两部分,需要具备FPGA和嵌入式C语言的综合能力,不适合初学者或者小白。。。针对目前市面上主流的FPGA,本Xilinx系列FPGA解码OV5640-MIPI视频方案一共移植了5套工程源码,详情如下:
在这里插入图片描述
这里说明一下提供的5套工程源码的作用和价值,如下:

工程源码1

FPGA开发板型号为Xilinx–Artix7–xc7a100tfgg484-2,输入视频为OV5640摄像头,MIPI模式,2 Line,RAW10输出像素,分辨率配置为1280x720@60Hz;经过VHDL实现的自研的MIPI-DPHY IP核实现MIPI协议物理层解串和通道绑定融合功能,再经过VHDL实现的自研的MIPI-CSI2-RX IP核实现MIPI协议层解析功能,再经过VHDL实现的自研的RAW转RGB IP核实现WAR10数据到RGB数据的转换;再经过VHDL实现的自研的伽马校正 IP核实现伽马校正功能;然后将视频复制为2份,以模拟2路视频输入;再经过自研的、基于HLS实现的、任意尺寸缩放的图像缩放模块实现图像缩放操作(1280x720缩放为960x540),再经过VDMA实现视频三帧缓存,图像缓存介质为DDR3;再经过Xilinx的Video Mixer IP实现2路视频拼接操作;最后视频以HDMI接口输出,输出分辨率为1920x1080@60Hz黑色背景下叠加显示2路拼接视频(即2分屏显示);该方案适用于Xilinx 7系列FPGA的MIPI解码应用,需要运行MicroBlaze软核;

工程源码2

FPGA开发板型号为Xilinx–Kintex7–xc7k325tffg900-2,输入视频为OV5640摄像头,MIPI模式,2 Line,RAW10输出像素,分辨率配置为1280x720@60Hz;经过VHDL实现的自研的MIPI-DPHY IP核实现MIPI协议物理层解串和通道绑定融合功能,再经过VHDL实现的自研的MIPI-CSI2-RX IP核实现MIPI协议层解析功能,再经过VHDL实现的自研的RAW转RGB IP核实现WAR10数据到RGB数据的转换;再经过VHDL实现的自研的伽马校正 IP核实现伽马校正功能;然后将视频复制为2份,以模拟2路视频输入;再经过自研的、基于HLS实现的、任意尺寸缩放的图像缩放模块实现图像缩放操作(1280x720缩放为960x540),再经过VDMA实现视频三帧缓存,图像缓存介质为DDR3;再经过Xilinx的Video Mixer IP实现2路视频拼接操作;最后视频以HDMI接口输出,输出分辨率为1920x1080@60Hz黑色背景下叠加显示2路拼接视频(即2分屏显示);该方案适用于Xilinx 7系列FPGA的MIPI解码应用,需要运行MicroBlaze软核;

工程源码3

FPGA开发板型号为Xilinx–Kintex7–xc7k325tffg900-2,输入视频为OV5640摄像头,MIPI模式,2 Line,RAW10输出像素,分辨率配置为1280x720@60Hz;经过VHDL实现的自研的MIPI-DPHY IP核实现MIPI协议物理层解串和通道绑定融合功能,再经过VHDL实现的自研的MIPI-CSI2-RX IP核实现MIPI协议层解析功能,再经过VHDL实现的自研的RAW转RGB IP核实现WAR10数据到RGB数据的转换;再经过VHDL实现的自研的伽马校正 IP核实现伽马校正功能;然后将视频复制为4份,以模拟4路视频输入;再经过自研的、基于HLS实现的、任意尺寸缩放的图像缩放模块实现图像缩放操作(1280x720缩放为960x540),再经过VDMA实现视频三帧缓存,图像缓存介质为DDR3;再经过Xilinx的Video Mixer IP实现4路视频拼接操作;最后视频以HDMI接口输出,输出分辨率为1920x1080@60Hz黑色背景下叠加显示4路拼接视频(即4分屏显示);该方案适用于Xilinx 7系列FPGA的MIPI解码应用,需要运行MicroBlaze软核;

工程源码4

FPGA开发板型号为Xilinx–Zynq7020–xc7z020clg400-2,输入视频为OV5640摄像头,MIPI模式,2 Line,RAW10输出像素,分辨率配置为1280x720@60Hz;经过VHDL实现的自研的MIPI-DPHY IP核实现MIPI协议物理层解串和通道绑定融合功能,再经过VHDL实现的自研的MIPI-CSI2-RX IP核实现MIPI协议层解析功能,再经过VHDL实现的自研的RAW转RGB IP核实现WAR10数据到RGB数据的转换;再经过VHDL实现的自研的伽马校正 IP核实现伽马校正功能;然后将视频复制为2份,以模拟2路视频输入;再经过自研的、基于HLS实现的、任意尺寸缩放的图像缩放模块实现图像缩放操作(1280x720缩放为960x540),再经过VDMA实现视频三帧缓存,图像缓存介质为DDR3;再经过Xilinx的Video Mixer IP实现2路视频拼接操作;最后视频以HDMI接口输出,输出分辨率为1920x1080@60Hz黑色背景下叠加显示2路拼接视频(即2分屏显示);该方案适用于Xilinx Zynq7000系列FPGA的MIPI解码应用,需要运行Zynq软核;

工程源码5

FPGA开发板型号为Xilinx–Zynq7020–xc7z020clg400-2,输入视频为OV5640摄像头,MIPI模式,2 Line,RAW10输出像素,分辨率配置为1280x720@60Hz;经过VHDL实现的自研的MIPI-DPHY IP核实现MIPI协议物理层解串和通道绑定融合功能,再经过VHDL实现的自研的MIPI-CSI2-RX IP核实现MIPI协议层解析功能,再经过VHDL实现的自研的RAW转RGB IP核实现WAR10数据到RGB数据的转换;再经过VHDL实现的自研的伽马校正 IP核实现伽马校正功能;然后将视频复制为4份,以模拟4路视频输入;再经过自研的、基于HLS实现的、任意尺寸缩放的图像缩放模块实现图像缩放操作(1280x720缩放为960x540),再经过VDMA实现视频三帧缓存,图像缓存介质为DDR3;再经过Xilinx的Video Mixer IP实现4路视频拼接操作;最后视频以HDMI接口输出,输出分辨率为1920x1080@60Hz黑色背景下叠加显示4路拼接视频(即4分屏显示);该方案适用于Xilinx Zynq7000系列FPGA的MIPI解码应用,需要运行Zynq软核;

本文详细描述了Xilinx系列FPGA纯VHDL代码解码MIPI视频+图像缩放+视频拼接设计方案,工程代码编译通过后上板调试验证,可直接项目移植,适用于在校学生做毕业设计、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的数字成像和图像传输领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;
关于MIPI协议,请自行搜索,csdn就有很多大佬讲得很详细,我就不多写这块了;

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括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有项目需求或学习兴趣的兄弟可以去我的专栏看看,专栏地址如下:
点击直接前往专栏

本方案的基础MIPI解码应用

本方案有的基础MIPI解码应用,即解码MIPI视频并输出显示,可浏览我之前写的博客,博客地址如下:
点击直接前往

本方案的MIPI解码+图像缩放应用

本方案有的基础MIPI解码+图像缩放应用,即解码MIPI视频后经过图像缩放再输出显示,可浏览我之前写的博客,博客地址如下:
点击直接前往

3、本纯VHDL代码解码MIPI方案–性能及其优越性

一个字:牛逼,表现如下:
1:纯VHDL代码实现,学习性和阅读性达到天花板;
2:移植性还可以,只要兼容Xilinx解串源语的FPGA均可移植;
3:算法达到天花板,标准的CSI2接收协议实现解码;
4:实用性达到天花板,采用OV5640摄像头作为输入(主要是便宜),不同于市面上验证性和实验性的工程,本设计直接面向实用工程,贴近真实项目,做类似项目的兄弟可直接拿去用,一个月工资直接拿到手。。。
5:支持高达1920X1080分辨率的MIPI视频解码;
6:时序收敛很到位,考虑到MIPI协议的复杂性和时序的高要求,所以没有采用时序收敛不强的verilog,而是VHDL,虽然阅读性可能会低一些,但用户只需要知道用户接口即可,并不需要去看内部的复杂代码;
7:使用方便,虽然是VHDL代码实现,但均已封装为自定义IP,用户无需关心代码实现的复杂逻辑,仅需调用IP,通过UI界面配置即可使用,当然,如果你想看里面的源码依然可以直接打开观看;

4、详细设计方案

设计原理框图

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

OV5640及其配置

输入视频采用廉价的OV5640摄像头模组,配置为MIPI模式,2 Lane,数据格式为RAW10,线速率为1000Mbps,视频分辨率为1280X720,一个时钟一个像素,OV5640需要SCCB总线配置才能运行,该总线等价于I2C总线,纯FPGA的工程调用AXI-GPIO模拟I2C,利用SDK软件配置OV5640;Zynq的工程使用PS端自带的i2c片内外资源,利用SDK软件配置OV5640,配置部分代码有C语言实现,具体参考SDK程序;

MIPI-DPHY硬件权电阻方案

使用Xilinx官方推荐的权电阻硬件方案将输入的差分MIPI对恢复HS和PL,原理图部分截图如下:
在这里插入图片描述
注意:权电阻方案只在低速率的MIPI模式下可用,高速率的MIPI请用专用芯片实现,比如MC20001,MC系列这种方案可以支持到2Gbps/Lane速率以上,只要FPGA的IO速率够用;

MIPI-DPHY 模块

关于MIPI D-PHY,网上介绍原理和概念的文章一大堆,在此不再重复,这里重点介绍用FPGA实现;
MIPI-DPHY 模块实现MIPI协议物理层解串和通道绑定融合功能;采用纯VHDL代码实现,为了照顾大家不习惯阅读VHDL代码的习惯,我们已经将改部分代码封装成为了自定义IP,用户无需关心代码实现的复杂逻辑,仅需调用IP,通过UI界面配置即可使用,当然,如果你想看里面的源码依然可以直接打开观看;本MIPI D-PHY只能支持1 line或者2 line的MIPI视频;参考时钟为200M,本工程中的D-PHY自定义IP调用如下:
在这里插入图片描述
在这里插入图片描述
MIPI D-PHY纯VHDL源码如下:
在这里插入图片描述
在本工程的纯VHDL代码解码MIPI视频架构中,MIPI D-PHY模块调用如下:
在这里插入图片描述

MIPI-CSI-2-RX 模块

关于MIPI CSI-2-RX,网上介绍原理和概念的文章一大堆,在此不再重复,这里重点介绍用FPGA实现;
MIPI-CSI-2-RX 模块实现MIPI协议层解析功能,并提取出有效的像素数据以及行场等同步信号,并封装为AXI4-Stream接口协议输出,采用纯VHDL代码实现,为了照顾大家不习惯阅读VHDL代码的习惯,我们已经将改部分代码封装成为了自定义IP,用户无需关心代码实现的复杂逻辑,仅需调用IP,通过UI界面配置即可使用,当然,如果你想看里面的源码依然可以直接打开观看;本MIPI CSI-2-RX只能支持1 line或者2 line的MIPI视频,数据格式支持RAW10;
本工程中的CSI-2-RX自定义IP调用如下:
在这里插入图片描述
MIPI CSI-2-RX纯VHDL源码如下:
在这里插入图片描述
在本工程的纯VHDL代码解码MIPI视频架构中,MIPI CSI-2-RX模块调用如下:
在这里插入图片描述

Bayer转RGB模块

关于MIPI Bayer转RGB,网上介绍原理和概念的文章一大堆,在此不再重复,这里重点介绍用FPGA实现;
Bayer转RGB模块实现WAR10数据到RGB888数据的转换,采用纯VHDL代码实现,为了照顾大家不习惯阅读VHDL代码的习惯,我们已经将改部分代码封装成为了自定义IP,用户无需关心代码实现的复杂逻辑,仅需调用IP,通过UI界面配置即可使用,当然,如果你想看里面的源码依然可以直接打开观看;
本工程中的Bayer转RGB自定义IP调用如下:
在这里插入图片描述
MIPI Bayer转RGB纯VHDL源码如下:
在这里插入图片描述
代码层面很简单,将输入视频存入RAM中,然后采用插值方式补齐RGB即可;输出数据位宽为32为,其中最高两位为填充数据,可丢弃不用,低30位数据为RGB顺序,每个颜色分量10 bit;
在本工程的纯VHDL代码解码MIPI视频架构中,Bayer转RGB模块调用如下:
在这里插入图片描述

伽马矫正模块

关于MIPI 伽马矫正,网上介绍原理和概念的文章一大堆,在此不再重复,这里重点介绍用FPGA实现;
伽马矫正模块实现伽马校正功能,使输出图像更符合人眼识别特征;
我们采用纯VHDL代码实现MIPI 伽马矫正功能,为了照顾大家不习惯阅读VHDL代码的习惯,我们已经将改部分代码封装成为了自定义IP,用户无需关心代码实现的复杂逻辑,仅需调用IP,通过UI界面配置即可使用,当然,如果你想看里面的源码依然可以直接打开观看;
本工程中的伽马矫正自定义IP调用如下:
在这里插入图片描述
MIPI 伽马矫正纯VHDL源码如下:
在这里插入图片描述
代码层面,将RGB的10 bit颜色分量减为8 bit,输出图像顺序为RBG,所以还需调用Xilinx官方的AXI4-Stream Subset Converter IP核将视频顺序调整为RGB;伽马矫正需要在SDK中配置;
在本工程的纯VHDL代码解码MIPI视频架构中,Bayer转RGB模块调用如下:
在这里插入图片描述

HLS 图像缩放介绍

这里重点介绍一下HLS图像缩放IP;
支持最大分辨率:1920x1080@60Hz;但可以修改HLS源码增大分辨率,前提是你的FPGA逻辑资源要够大;
输入视频格式:AXI4-Stream;
输出视频格式:AXI4-Stream;
需要SDK软件配置,其本质为通过AXI_Lite 做寄存器配置;目前只适用于工程中给定型号的FPGA使用,即Xilinx Artix7、Kintex7、Zynq7000系列;但可以修改HLS工程的器件类型来适应其他器件,也可私人定制适用的FPGA型号;
提供自定义的配置API,通过调用该库函数即可轻松使用,具体参考SDK代码;
提供HLS工程源码,可任意修改,HLS版本为2019.1;
目前该IP只在Vivado2019.1及其以下的版本可用,这点需要注意;
以工程源码4为例,模块占用的FPGA逻辑资源如下,请谨慎评估你的FPGA资源情况;
在这里插入图片描述
以工程源码4的2路视频缩放拼接为例,HLS 图像缩放IP调用如下:
在这里插入图片描述

VDMA图像缓存

调用Xilinx的VDMA IP实现图像单帧缓存功能(为了降低延时),该IP通过SDK的C代码软件配置;以工程源码4的2路视频缩放拼接为例,VDMA调用截图如下:
在这里插入图片描述

Video Mixer介绍

这里重点介绍一下Video Mixer IP;
支持最大分辨率:8K,即可以处理高达8K的视频;
支持最多16层视频拼接叠加,即最多可拼接16路视频;
输入视频格式:AXI4-Stream;
输出视频格式:AXI4-Stream;
需要SDK软件配置,其本质为通过AXI_Lite 做寄存器配置;
提供自定义的配置API,通过调用该库函数即可轻松使用,具体参考SDK代码;
模块占用的FPGA逻辑资源更小,相比于自己写的HLS视频拼接而言,官方的Video Mixer资源占用大约减小30%左右,且更高效:
以工程源码4的2路视频拼接为例,Video Mixer逻辑资源如下,请谨慎评估你的FPGA资源情况;
在这里插入图片描述
以工程源码4的2路视频缩放拼接为例,Video Mixer调用截图如下:
在这里插入图片描述

AXI4-Stream toVideo Out

再调用Xilinx的Video Timing Controller和AXI4-Stream toVideo Out IP实现视频流从AXI4-Stream到VGA时序的转换;Video Timing Controller配置为1280x720@60Hz,输出分辨率为1280x720@60Hz;这两个IP不需要软件配置;Video Timing Controller和AXI4-Stream toVideo Out调用截图如下:
在这里插入图片描述

HDMI输出

最后用纯verilog实现的HDMI发送模块将视频输出显示器显示,该IP最大输出分辨率只支持1920*1080@60Hz;IP调用截图如下:
在这里插入图片描述

工程源码架构

该工程由vivado Block Design设计和SDK软件设计构成;
vivado Block Design设计主要是MIPI解码、ISP处理、图像缓存、图像输出等逻辑部分设计;
SDK软件设计主要是对Block Design设计中使用到的各种IP进行初始化和配置;
以工程4为例,vivado Block Design设计架构如下:
在这里插入图片描述
以工程4为例,综合后的工程代码架构如下:
在这里插入图片描述
以工程4为例,SDK C语言软件是为了配置FPGA调用的IP,用SDK 打开即可查看,代码内容如下:
在这里插入图片描述

5、vivado工程1详解:Artix7-100T版本–>2路视频缩放拼接

开发板FPGA型号:Xilinx–Artix7–xc7a100tfgg484-2;
开发环境:Vivado2019.1;
输入:OV5640摄像头–MIPI–2 Line–RAW10-1280x720@60Hz;
输出:HDMI–分辨率为1920x1080@60Hz黑色背景下叠加显示2路拼接视频(即2分屏显示);
MIPI解码方案:自研–纯VHDL代码方案;
图像缩放方案:自研–HLS图像缩放方案;
图像缩放实例:SDK代码中默认配置为1280x720缩放为960x540;
视频拼接方案:Xilinx–Video Mixer方案;
视频拼接实例:2路视频拼接;
方案应用:Xilinx系列FPGA解码MIPI视频;
工程代码架构请参考第4章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

6、vivado工程2详解:Kintex7-35T版本–>2路视频缩放拼接

开发板FPGA型号:Xilinx–Kintex7–xc7k325tffg900-2;
开发环境:Vivado2019.1;
输入:OV5640摄像头–MIPI–2 Line–RAW10-1280x720@60Hz;
输出:HDMI–分辨率为1920x1080@60Hz黑色背景下叠加显示2路拼接视频(即2分屏显示);
MIPI解码方案:自研–纯VHDL代码方案;
图像缩放方案:自研–HLS图像缩放方案;
图像缩放实例:SDK代码中默认配置为1280x720缩放为960x540;
视频拼接方案:Xilinx–Video Mixer方案;
视频拼接实例:2路视频拼接;
方案应用:Xilinx系列FPGA解码MIPI视频;
工程代码架构请参考第4章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

7、vivado工程3详解:Kintex7-35T版本–>4路视频缩放拼接

开发板FPGA型号:Xilinx–Kintex7–xc7k325tffg900-2;
开发环境:Vivado2019.1;
输入:OV5640摄像头–MIPI–2 Line–RAW10-1280x720@60Hz;
输出:HDMI–分辨率为1920x1080@60Hz黑色背景下叠加显示4路拼接视频(即4分屏显示);
MIPI解码方案:自研–纯VHDL代码方案;
图像缩放方案:自研–HLS图像缩放方案;
图像缩放实例:SDK代码中默认配置为1280x720缩放为960x540;
视频拼接方案:Xilinx–Video Mixer方案;
视频拼接实例:4路视频拼接;
方案应用:Xilinx系列FPGA解码MIPI视频;
工程代码架构请参考第4章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

8、vivado工程4详解:Zynq7020版本–>2路视频缩放拼接

开发板FPGA型号:Xilinx–Zynq7020–xc7z020clg400-2;
开发环境:Vivado2019.1;
输入:OV5640摄像头–MIPI–2 Line–RAW10-1280x720@60Hz;
输出:HDMI–分辨率为1920x1080@60Hz黑色背景下叠加显示2路拼接视频(即2分屏显示);
MIPI解码方案:自研–纯VHDL代码方案;
图像缩放方案:自研–HLS图像缩放方案;
图像缩放实例:SDK代码中默认配置为1280x720缩放为960x540;
视频拼接方案:Xilinx–Video Mixer方案;
视频拼接实例:2路视频拼接;
方案应用:Xilinx系列FPGA解码MIPI视频;
工程代码架构请参考第4章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

9、vivado工程5详解:Zynq7020版本–>4路视频缩放拼接

开发板FPGA型号:Xilinx–Zynq7020–xc7z020clg400-2;
开发环境:Vivado2019.1;
输入:OV5640摄像头–MIPI–2 Line–RAW10-1280x720@60Hz;
输出:HDMI–分辨率为1920x1080@60Hz黑色背景下叠加显示4路拼接视频(即4分屏显示);
MIPI解码方案:自研–纯VHDL代码方案;
图像缩放方案:自研–HLS图像缩放方案;
图像缩放实例:SDK代码中默认配置为1280x720缩放为960x540;
视频拼接方案:Xilinx–Video Mixer方案;
视频拼接实例:4路视频拼接;
方案应用:Xilinx系列FPGA解码MIPI视频;
工程代码架构请参考第4章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

10、工程移植说明

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

11、上板调试验证

准备工作

需要准备的器材如下:
FPGA开发板,可以自己准备,也可以购买本博主使用的同款开发板,省事儿;
MIPI-OV5640摄像头,可以自己准备,也可以购买本博主使用的同款开发板,省事儿;
HDMI显示器;
MIPI-OV5640摄像头与开发板连接如下:
在这里插入图片描述
然后上电并下载bit测试;

输出视频演示

以工程源码4为例,2路视频缩放拼接输出如下:

FPGA解码MIPI视频+缩放+2路拼接-ov5640

以工程源码5为例,4路视频缩放拼接输出如下:

FPGA解码MIPI视频+缩放+4路拼接-ov5640

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

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

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
FPGA MIPI DSI RX(Display Serial Interface Receiver)是一种针对FPGA(现场可编程门阵列)的接收器IP核,用于在FPGA实现MIPI DSI接口的解析和处理功能。 MIPI DSI是一种用于移动设备显示屏的串行接口协议,它使用低电压差分信号传输数据,并可以同时传输图像和命令。FPGA MIPI DSI RX的作用就是将通过MIPI DSI接口传输的数据解析成FPGA内部可以理解的格式,并经过处理后提供给后续电路进行显示操作。 FPGA MIPI DSI RX通常包括多个功能块,包括数据解码器、显示命令处理单元和物理层控制单元等。数据解码器用于解析MIPI DSI接口传输的数据帧,并将其转换为供后续逻辑模块使用的像素数据。显示命令处理单元用于处理MIPI DSI传输的显示命令,例如刷新、清屏等。物理层控制单元则负责处理传输过程中的时序控制和电平转换等。 通过使用FPGA MIPI DSI RX,我们可以在FPGA实现MIPI DSI接口的完整支持,从而将FPGA用作移动设备显示屏的控制芯片。它提供了灵活的配置选项和高度可定制的功能,可以适应不同的显示需求。同时,FPGA具有现场可编程性的特点,可以在设计中方便地进行修改和调试,提高了开发效率和设计灵活性。 总而言之,FPGA MIPI DSI RX是一种可以实现MIPI DSI接口解析和处理功能的IP核,通过它,我们可以在FPGA实现对移动设备显示屏的控制和驱动,从而满足不同应用场景下的显示需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

9527华安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值