FPGA纯VHDL代码实现多路IMX214 MIPI 视频缩放拼接,基于MC20901的D-PHY方案,提供5套工程源码和技术支持
[video(video-JHCuBJzK-1744591102602)(type-csdn)(url-https://live.csdn.net/v/embed...)(image-https://i-blog.csdnimg.cn/img...)(title-FPD-Link-2路拼接)]
1、前言
Xilinx系列FPGA实现MIPI视频解码现状:
MIPI视频解码分为D-PHY和CSI-2两大部分,其中D-PHY属于物理层,依托硬件,灵活性不高,方案不多;CSI-2属于协议层,依托代码,灵活性很高,方案很多;所以只要实现了D-PHY,MIPI-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功能;本设计使用基于MC20901的D-PHY方案,CSI2-RX使用纯VHDL代码方案;
工程概述
本设计基于Xilinx系列FPGA纯VHDL代码实现 IMX214 MIPI 视频解码的工程解决方案;视频输入源为IMX214 MIPI摄像头,FPGA首先对摄像头进行i2c初始化配置,将IMX214输出分辨率配置为1920x1080@60Hz,MIPI-4 Lane输出模式;然后MIPI视频送入MC20901芯片实现硬件D-PHY功能,分离出LP和HS电路;然后MIPI视频送入纯VHDL代码实现的CSI-2 RX模块实现MIPI视频解码功能;然后视频送入纯VHDL代码实现的Bayer To RGB 模块实现RAW10转RGB888功能;然后视频送入纯VHDL代码实现的Gamma Correction 模块实现伽马校正功能;然后送入Xilinx官方的Video Processing Subsystem IP核实现视频实时缩放,由1920x1080缩小到960x540,你也可以缩放为其他分辨率;然后送入Xilinx官方的VDMA IP核实现视频三帧缓存;视频从多路VDMA读出后送入Xilinx官方的Video Mixer IP核实现多路视频拼接;然后送Xilinx官方的AXI4-Stream To Video Out实现AXI4-Stream到Native视频转换;然后Native视频送入Silcom9134芯片实现RGB转HDMI,然后送HDMI显示器输出显示即可,这是HDMI的输出方式;或者直接调用Zynq的DP片内外设,直接从DDR中读取视频,然后送DP接口,然后送DP显示器输出显示即可,这是DP的输出方式;上述IP和IC需要SDK配置,所以需要调用MicroBlaze或者Zynq软核;针对目前市面上主流的项目需求,本博客共设计了5套工程源码,详情如下:
现对上述5套工程源码做如下解释,方便读者理解:
工程源码1
开发板FPGA型号为Xilinx-->Kintex7-xc7k325tffg900-2;视频输入源为IMX214 MIPI摄像头,FPGA首先对摄像头进行i2c初始化配置,将IMX214输出分辨率配置为1920x1080@60Hz,MIPI-4 Lane输出模式;然后MIPI视频送入MC20901芯片实现硬件D-PHY功能,分离出LP和HS电路;然后MIPI视频送入纯VHDL代码实现的CSI-2 RX模块实现MIPI视频解码功能;然后视频送入纯VHDL代码实现的Bayer To RGB 模块实现RAW10转RGB888功能;然后视频送入纯VHDL代码实现的Gamma Correction 模块实现伽马校正功能;然后送入Xilinx官方的Video Processing Subsystem IP核实现视频实时缩放,由1920x1080缩小到960x540,你也可以缩放为其他分辨率;然后送入Xilinx官方的VDMA IP核实现视频三帧缓存;视频从多路VDMA读出后送入Xilinx官方的Video Mixer IP核实现多路视频拼接;然后送Xilinx官方的AXI4-Stream To Video Out实现AXI4-Stream到Native视频转换;然后Native视频送入Silcom9134芯片实现RGB转HDMI输出,输出分辨率配置为1920x1080@60Hz;输出效果为在1920x1080背景下叠加2路960x540的拼接视频,即1920x1080的2分屏显示;本设计适用于Xilinx-Kintex7系列FPGA实现MIPI视频解码转HDMI应用;
工程源码2
开发板FPGA型号为Xilinx-->Zynq7035-xc7z035ffg676-2;视频输入源为IMX214 MIPI摄像头,FPGA首先对摄像头进行i2c初始化配置,将IMX214输出分辨率配置为1920x1080@60Hz,MIPI-4 Lane输出模式;然后MIPI视频送入MC20901芯片实现硬件D-PHY功能,分离出LP和HS电路;然后MIPI视频送入纯VHDL代码实现的CSI-2 RX模块实现MIPI视频解码功能;然后视频送入纯VHDL代码实现的Bayer To RGB 模块实现RAW10转RGB888功能;然后视频送入纯VHDL代码实现的Gamma Correction 模块实现伽马校正功能;然后送入Xilinx官方的Video Processing Subsystem IP核实现视频实时缩放,由1920x1080缩小到960x540,你也可以缩放为其他分辨率;然后送入Xilinx官方的VDMA IP核实现视频三帧缓存;视频从多路VDMA读出后送入Xilinx官方的Video Mixer IP核实现多路视频拼接;然后送Xilinx官方的AXI4-Stream To Video Out实现AXI4-Stream到Native视频转换;然后Native视频送入Silcom9134芯片实现RGB转HDMI输出,输出分辨率配置为1920x1080@60Hz;输出效果为在1920x1080背景下叠加2路960x540的拼接视频,即1920x1080的2分屏显示;本设计适用于Xilinx-Zynq7000系列FPGA实现MIPI视频解码转HDMI应用;
工程源码3
开发板FPGA型号为Xilinx-->Kintex UltraScale-xcku040-ffva1156-2-i;视频输入源为IMX214 MIPI摄像头,FPGA首先对摄像头进行i2c初始化配置,将IMX214输出分辨率配置为1920x1080@60Hz,MIPI-4 Lane输出模式;然后MIPI视频送入MC20901芯片实现硬件D-PHY功能,分离出LP和HS电路;然后MIPI视频送入纯VHDL代码实现的CSI-2 RX模块实现MIPI视频解码功能;然后视频送入纯VHDL代码实现的Bayer To RGB 模块实现RAW10转RGB888功能;然后视频送入纯VHDL代码实现的Gamma Correction 模块实现伽马校正功能;然后送入Xilinx官方的Video Processing Subsystem IP核实现视频实时缩放,由1920x1080缩小到960x540,你也可以缩放为其他分辨率;然后送入Xilinx官方的VDMA IP核实现视频三帧缓存;视频从多路VDMA读出后送入Xilinx官方的Video Mixer IP核实现多路视频拼接;然后送Xilinx官方的AXI4-Stream To Video Out实现AXI4-Stream到Native视频转换;然后Native视频送入Silcom9134芯片实现RGB转HDMI输出,输出分辨率配置为1920x1080@60Hz;输出效果为在1920x1080背景下叠加2路960x540的拼接视频,即1920x1080的2分屏显示;本设计适用于Xilinx-UltraScale系列FPGA实现MIPI视频解码转HDMI应用;
工程源码4
开发板FPGA型号为Xilinx-Zynq UltraScale+ xczu4ev-sfvc784-2-i;视频输入源为IMX214 MIPI摄像头,FPGA首先对摄像头进行i2c初始化配置,将IMX214输出分辨率配置为1920x1080@60Hz,MIPI-4 Lane输出模式;然后MIPI视频送入MC20901芯片实现硬件D-PHY功能,分离出LP和HS电路;然后MIPI视频送入纯VHDL代码实现的CSI-2 RX模块实现MIPI视频解码功能;然后视频送入纯VHDL代码实现的Bayer To RGB 模块实现RAW10转RGB888功能;然后视频送入纯VHDL代码实现的Gamma Correction 模块实现伽马校正功能;然后送入Xilinx官方的Video Processing Subsystem IP核实现视频实时缩放,由1920x1080缩小到960x540,你也可以缩放为其他分辨率;然后送入Xilinx官方的VDMA IP核实现视频三帧缓存;视频从多路VDMA读出后送入Xilinx官方的Video Mixer IP核实现多路视频拼接;然后送Xilinx官方的AXI4-Stream To Video Out实现AXI4-Stream到Native视频转换;然后Native视频送入Silcom9134芯片实现RGB转HDMI输出,输出分辨率配置为1920x1080@60Hz;输出效果为在1920x1080背景下叠加2路960x540的拼接视频,即1920x1080的2分屏显示;本设计适用于Xilinx-Zynq UltraScale+ MPSoC系列FPGA实现MIPI视频解码转HDMI应用;
工程源码5
开发板FPGA型号为Xilinx-Zynq UltraScale+ xczu4ev-sfvc784-2-i;视频输入源为IMX214 MIPI摄像头,FPGA首先对摄像头进行i2c初始化配置,将IMX214输出分辨率配置为1920x1080@60Hz,MIPI-4 Lane输出模式;然后MIPI视频送入MC20901芯片实现硬件D-PHY功能,分离出LP和HS电路;然后MIPI视频送入纯VHDL代码实现的CSI-2 RX模块实现MIPI视频解码功能;然后视频送入纯VHDL代码实现的Bayer To RGB 模块实现RAW10转RGB888功能;然后视频送入纯VHDL代码实现的Gamma Correction 模块实现伽马校正功能;然后送入Xilinx官方的Video Processing Subsystem IP核实现视频实时缩放,由1920x1080缩小到1920x960,你也可以缩放为其他分辨率;然后送入Xilinx官方的VDMA IP核实现视频三帧缓存;调用Zynq的DP片内外设,直接从DDR中读取视频,然后送DP接口,输出分辨率配置为1920x1080@60Hz;输出效果为在1920x1080背景下叠加2路1920x540的拼接视频,即1920x1080的2分屏显示;本设计适用于Xilinx-Zynq UltraScale+ MPSoC系列FPGA实现MIPI视频解码转DP应用;
本博客详细描述了Xilinx系列FPGA纯VHDL代码实现多路IMX214 MIPI 视频缩放拼接的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处理领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;
免责声明
本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括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有项目需求或学习兴趣的兄弟可以去我的专栏看看,专栏地址如下:
点击直接前往专栏
我这里已有的FPGA图像缩放方案
我的主页目前有FPGA图像缩放专栏,改专栏收录了我目前手里已有的FPGA图像缩放方案,从实现方式分类有基于HSL实现的图像缩放、基于纯verilog代码实现的图像缩放;从应用上分为单路视频图像缩放、多路视频图像缩放、多路视频图像缩放拼接;从输入视频分类可分为OV5640摄像头视频缩放、SDI视频缩放、MIPI视频缩放等等;以下是专栏地址:
点击直接前往
Video Mixer视频拼接方案
Video Mixer是Xilinx官方推出的视频拼接方案,我之前出过专门的博客,博客链接如下:
点击直接前往
FPGA视频拼接叠加融合方案推荐
我的主页目前有FPGA视频拼接叠加融合专栏,改专栏收录了我目前手里已有的FPGA视频拼接叠加融合方案,从实现方式分类有基于HSL实现的视频拼接、基于纯verilog代码实现的视频拼接;从应用上分为单路、2路、3路、4路、8路、16路视频拼接;视频缩放+拼接;视频融合叠加;从输入视频分类可分为OV5640摄像头视频拼接、SDI视频拼接、CameraLink视频拼接等等;以下是专栏地址:
点击直接前往
3、详细设计方案
设计框图
本设计的工程详细设计方案框图如下:
IMX214 摄像头
视频输入源为IMX214 MIPI摄像头,FPGA首先对摄像头进行i2c初始化配置,将IMX214 输出分辨率配置为1920x1080@60Hz,MIPI-4 Lane输出模式;IMX214 i2c配置在vitis软件代码中;IMX214摄像头如下:
MC20901硬件D-PHY方案
MC20901芯片实现硬件D-PHY功能,分离出LP和HS电路,硬件架构如下;
此外,为了方便大家设计,我们提供了PDF版本的MC20901参考原理图;MC20901不需要软件配置;
纯VHDL代码的MIPI CSI-2 RX模块
我们采用纯VHDL代码实现MIPI CSI-2-RX功能,为了照顾大家不习惯阅读VHDL代码的习惯,我们已经将改部分代码封装成为了自定义IP,用户无需关心代码实现的复杂逻辑,仅需调用IP,通过UI界面配置即可使用,当然,如果你想看里面的源码依然可以直接打开观看;本MIPI CSI-2-RX只能支持4 line的MIPI视频,数据格式支持RAW10;
本工程中的CSI-2-RX自定义IP调用如下:
MIPI CSI-2-RX纯VHDL源码如下:
纯VHDL代码的MIPI CSI-2 RX IP核在Block Design中如下:
纯VHDL代码的Bayer转RGB模块
我们采用纯VHDL代码实现MIPI Bayer转RGB功能,为了照顾大家不习惯阅读VHDL代码的习惯,我们已经将改部分代码封装成为了自定义IP,用户无需关心代码实现的复杂逻辑,仅需调用IP,通过UI界面配置即可使用,当然,如果你想看里面的源码依然可以直接打开观看;
本工程中的Bayer转RGB自定义IP调用如下:
MIPI Bayer转RGB纯VHDL源码如下:
纯VHDL代码的Bayer转RGB IP核在Block Design中如下:
纯VHDL代码伽马校正模块
我们采用纯VHDL代码实现MIPI 伽马矫正功能,为了照顾大家不习惯阅读VHDL代码的习惯,我们已经将改部分代码封装成为了自定义IP,用户无需关心代码实现的复杂逻辑,仅需调用IP,通过UI界面配置即可使用,当然,如果你想看里面的源码依然可以直接打开观看;
本工程中的伽马矫正自定义IP调用如下:
MIPI 伽马矫正纯VHDL源码如下:
纯VHDL代码的伽马校正 IP核在Block Design中如下:
Video Processing Subsystem 图像缩放
由于工程所用到的IP都是常用IP,所以这里重点介绍一下Video Processing Subsystem;
Video Processing Subsystem有缩放、去隔行、颜色空间转换等功能,这里仅使用图像缩放功能;其特点如下:
优点1:适用于Xilinx所有系列的FPGA器件和所有的Vivado版本;
优点2:支持8K最大分辨率:即可以处理高达8K的视频;
优点3:输入视频格式:AXI4-Stream,方便对接Xilinx图像处理套路的相关IP;
优点4:输出视频格式:AXI4-Stream,方便对接Xilinx图像处理套路的相关IP;
优点5:模块占用的FPGA逻辑资源更小,相比于自己写的HLS图像缩放而言,官方的Video Processing Subsystem资源占用大约减小30%左右,且更高效:
<font color="red" size="3">注意!!!!
<font color="red" size="3">注意!!!!
缺点1:需要SDK软件配置,其本质为通过AXI_Lite 做寄存器配置,设计难度现对复杂,对新手小白不太友好;
<font color="red" size="3">缺点2:Xilinx官方提供的Video Processing Subsystem IAP并不能实现任意尺寸的图像缩放,只能在IAP中视频分辨率查找表范围内进行缩放操作,如果想要实现自定义任意尺寸缩放,需要修改Xilinx官方提供的API源代码,对新手小白极其友好,有此类需求的朋友可以联系博主,提供私人定制服务,也就是我帮你修改Xilinx官方提供的API源代码,以实现自定义任意尺寸缩放操作;
Video Processing Subsystem逻辑资源如下,请谨慎评估你的FPGA资源情况;
Video Processing Subsystem 在Block Design设计中如下:
VDMA 图像缓存
解码后的MIPI视频送入Xilinx官方的VDMA IP核实现视频三帧缓存,功能十分简单,VDMA需要Vitis或者SDK软件配置,Block Design设计中如下:
Video Mixer 多路视频拼接详解
这里重点介绍一下Xilinx官方的Video Mixer IP;
支持最大分辨率:8K,即可以处理高达8K的视频;
支持最多16层视频拼接叠加,即最多可拼接16路视频;
输入视频格式:AXI4-Stream;
输出视频格式:AXI4-Stream;
需要SDK软件配置,其本质为通过AXI_Lite 做寄存器配置;
提供自定义的配置API,通过调用该库函数即可轻松使用,具体参考SDK代码;
模块占用的FPGA逻辑资源更小,相比于自己写的HLS视频拼接而言,官方的Video Mixer资源占用大约减小30%左右,且更高效:以工程源码1的2路视频拼接为例,Video Mixer逻辑资源如下,请谨慎评估你的FPGA资源情况;
关于这个Video Mixer视频拼接方案详情,请参考我之前的博客,博客链接如下:
点击直接前往
以工程源码2为例,其在Block Design中如下:
HDMI输出架构
HDMI输出采用silcom9134芯片实现RGB转HDMI完成,silcom9134需要i2c配置才能使用,Kintex7调用MicroBlaze通过SDK软件配置,HDMI输出架构如下:
DP输出架构
Zynq系列FPGA采用DP输出架构,需要在Zynq配置里打开DP外设,如下:
vivado逻辑工程源码架构
工程源码架构包括vivado Block Design逻辑设计和SDK软件设计;
以工程源码2为例,Block Design逻辑设计架构截图如下:
以工程源码2为例,综合后的源码架构如下:
SDK软件工程源码架构
以工程源码2为例,SDK软件代码如下:
!!!注意
!!!注意
在使用DP输出的SDK工程中,需要修改DP的驱动名称,如下:
4、工程源码1详解-->Kintex7-325T,2路IMX214拼接转HDMI版本
开发板FPGA型号:Xilinx-->Kintex7-xc7k325tffg900-2;
FPGA开发环境:Vivado2019.1;
输入:IMX214 摄像头,分辨率1920x1080@60Hz;
IMX214 模式配置:MIPI-4 Lane模式,RAW10颜色空间,一个时钟输出4个像素;
输出:HDMI,Silicom9134芯片编码,1920x1080分辨率下的2路690x540的视频拼接2分屏显示;
MIPI-D-PHY方案:MC20901芯片方案;
MIPI-CSI2-RX方案:纯VHDL代码实现的CSI-2 RX;
图像缩放方案:Xilinx官方Video Processing Subsystem方案;
图像缩放案例:1920x1080缩小到690x540;
视频拼接方案:Xilinx官方Video Mixer方案;
视频拼接案例:2路IMX214视频拼接;
图像缓存方案:Xilinx官方VDMA方案,3帧缓存;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握Xilinx系列FPGA纯VHDL代码实现多路IMX214 MIPI 视频缩放拼接的设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
5、工程源码2详解-->Zynq7035,2路IMX214拼接转HDMI版本
开发板FPGA型号:Xilinx-->Zynq7035-xc7z035ffg676-2;
FPGA开发环境:Vivado2019.1;
输入:IMX214 摄像头,分辨率1920x1080@60Hz;
IMX214 模式配置:MIPI-4 Lane模式,RAW10颜色空间,一个时钟输出4个像素;
输出:HDMI,ADV7511芯片编码,1920x1080分辨率下的2路690x540的视频拼接2分屏显示;
MIPI-D-PHY方案:MC20901芯片方案;
MIPI-CSI2-RX方案:纯VHDL代码实现的CSI-2 RX;
图像缩放方案:Xilinx官方Video Processing Subsystem方案;
图像缩放案例:1920x1080缩小到690x540;
视频拼接方案:Xilinx官方Video Mixer方案;
视频拼接案例:2路IMX214视频拼接;
图像缓存方案:Xilinx官方VDMA方案,3帧缓存;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握Xilinx系列FPGA纯VHDL代码实现多路IMX214 MIPI 视频缩放拼接的设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
6、工程源码3详解-->KU040,2路IMX214拼接转HDMI版本
开发板FPGA型号:Xilinx-->Kintex UltraScale-xcku040-ffva1156-2-i;
FPGA开发环境:Vivado2019.1;
输入:IMX214 摄像头,分辨率1920x1080@60Hz;
IMX214 模式配置:MIPI-4 Lane模式,RAW10颜色空间,一个时钟输出4个像素;
输出:HDMI,ADV7511芯片编码,1920x1080分辨率下的2路690x540的视频拼接2分屏显示;
MIPI-D-PHY方案:MC20901芯片方案;
MIPI-CSI2-RX方案:纯VHDL代码实现的CSI-2 RX;
图像缩放方案:Xilinx官方Video Processing Subsystem方案;
图像缩放案例:1920x1080缩小到690x540;
视频拼接方案:Xilinx官方Video Mixer方案;
视频拼接案例:2路IMX214视频拼接;
图像缓存方案:Xilinx官方VDMA方案,3帧缓存;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握Xilinx系列FPGA纯VHDL代码实现多路IMX214 MIPI 视频缩放拼接的设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
7、工程源码4详解-->ZU4EV,2路IMX214拼接转HDMI版本
开发板FPGA型号:Xilinx-Zynq UltraScale+ xczu4ev-sfvc784-1-i;
FPGA开发环境:Vivado2019.1;
输入:IMX214 摄像头,分辨率1920x1080@60Hz;
IMX214 模式配置:MIPI-4 Lane模式,RAW10颜色空间,一个时钟输出4个像素;
输出:HDMI,ADV7511芯片编码,1920x1080分辨率下的2路690x540的视频拼接2分屏显示;
MIPI-D-PHY方案:MC20901芯片方案;
MIPI-CSI2-RX方案:纯VHDL代码实现的CSI-2 RX;
图像缩放方案:Xilinx官方Video Processing Subsystem方案;
图像缩放案例:1920x1080缩小到690x540;
视频拼接方案:Xilinx官方Video Mixer方案;
视频拼接案例:2路IMX214视频拼接;
图像缓存方案:Xilinx官方VDMA方案,3帧缓存;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握Xilinx系列FPGA纯VHDL代码实现多路IMX214 MIPI 视频缩放拼接的设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
8、工程源码5详解-->ZU4EV,2路IMX214拼接转DP版本
开发板FPGA型号:Xilinx-Zynq UltraScale+ xczu4ev-sfvc784-1-i;
FPGA开发环境:Vivado2019.1;
输入:IMX214 摄像头,分辨率1920x1080@60Hz;
IMX214 模式配置:MIPI-4 Lane模式,RAW10颜色空间,一个时钟输出4个像素;
输出:DP,Zynq片内外设,1920x1080分辨率下的2路690x540的视频拼接2分屏显示;
MIPI-D-PHY方案:MC20901芯片方案;
MIPI-CSI2-RX方案:纯VHDL代码实现的CSI-2 RX;
图像缩放方案:Xilinx官方Video Processing Subsystem方案;
图像缩放案例:1920x1080缩小到690x540;
视频拼接方案:Xilinx官方Video Mixer方案;
视频拼接案例:2路IMX214视频拼接;
图像缓存方案:Xilinx官方VDMA方案,3帧缓存;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握Xilinx系列FPGA纯VHDL代码实现多路IMX214 MIPI 视频缩放拼接的设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
9、工程移植说明
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软核;
10、上板调试验证并演示
准备工作
FPGA开发板,推荐使用本博的开发板;
IMX214 摄像头;
HDMI显示器或者电视;
HDMI线;
以工程源码2为例,开发板连接如下:
2路IMX214 解码缩放拼接转HDMI输出演示
2路IMX214 解码缩放拼接转HDMI输出演示:
[video(video-JHCuBJzK-1744591102602)(type-csdn)(url-https://live.csdn.net/v/embed...)(image-https://i-blog.csdnimg.cn/img...)(title-FPD-Link-2路拼接)]
11、福利:工程源码获取
福利:工程代码的获取
代码太大,无法邮箱发送,以百度网盘链接方式发送,
通过微信获取资料:微信号 hllsq22
还可以关注我的微信公众号:FPGA教父
还可以关注我的CSDN:9527华安
还可以关注我的知乎:FPFA个人练习生
还可以关注我的B站:ikun-FPFA
还可以关注我的小红书:FPFA制作人
还可以关注我的微信视频号:FPGA教父
网盘资料如下:
此外,有很多朋友给本博主提了很多意见和建议,希望能丰富服务内容和选项,因为不同朋友的需求不一样,所以本博主还提供以下服务: