当前位置:首页 > 新闻资讯 > FPGA之家动态 >

FPGA解码CameraLink视频转HDMI输出,采集Full模式相机,提供2套工程源码和技术支持

时间:2025-04-15      来源:FPGA_UCY 关于我们 0

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

2、协议理论学习

关于这部分,网上有很多博主解释过,我找了几篇推荐学习理论知识:

博客链接如下:

点击直接前往

你也可以去网上通过其他途径免费学习协议,在学了协议基础上看本工程源码能更快理解吸收;

3、相关方案推荐 FPGA实现视频编解码方案

我的视频专栏有很多FPGA的视频编解码方案,既有接收,也有发送,既有普通输出显示,也有视频拼接输出等等,专栏链接如下:欢迎前往查看:

点击直接前往

4、工程详细设计方案 工程设计原理框图

工程设计原理框图如下:

FPGA开发_开发fpa是什么意思_开发fpga用什么语言

输入相机

相机型号为北京微视的RS-A5241-CM107-S00型 相机,分辨率全幅面下帧率可达;FPGA首先使用AXI-对相机进行初始化配置;相机配置为Full模式,输出Bayer格式图像,分辨率配置为@60Hz;Full模式下LVDS视频有12对差分数据线+3对随路差分时钟;AXI-通过驱动;串口配置相机非常简单,就是根据手册发送一串字符而已,有的相机单独流出来配置串口,可以直接用串口调试助手配置而无需FPGA;

LVDS视频解码模块

本设计参考了官方设计,基于原语实现的LVDS解码模块对输入的视频进行解码;LVDS视频解码模块设计框图如下:

开发fpga用什么语言_FPGA开发_开发fpa是什么意思

LVDS视频解码模块输入为随路差分时钟对和差分数据对;利用官方和原语实现串并转换;模块总体代码架构如下:

开发fpga用什么语言_FPGA开发_开发fpa是什么意思

原语用于接收延时,保证接收端视频的稳定性;原语用于串并转换,将输入串行差分数据转换为并行数据;此外,LVDS解串视频还需要做对齐处理,随路时钟也需要通过MMCM输出同步处理;整个LVDS视频解码模块严格按照设计框图实现,解码模块顶层接口如下:

FPGA开发_开发fpa是什么意思_开发fpga用什么语言

Block 设计中,直接将LVDS视频解码模块顶层拖入Block 中形成自定义IP,方便调用和使用,如下:

开发fpa是什么意思_FPGA开发_开发fpga用什么语言

双击LVDS视频解码模块的自定义IP,可以看到配置参数如下:

开发fpa是什么意思_开发fpga用什么语言_FPGA开发

这两个参数可自由配置,以适应相机的不同模式;具体配置如下:

FPGA开发_开发fpa是什么意思_开发fpga用什么语言

视频恢复模块

调用视频恢复模块,根据视频协议提取出行同步信号、场同步信号、数据有效信号和像素数据;模块总体代码架构如下:

模块顶层接口如下:

开发fpga用什么语言_FPGA开发_开发fpa是什么意思

Block 设计中,直接将视频恢复模块顶层拖入Block 中形成自定义IP,方便调用和使用,如下:

开发fpa是什么意思_FPGA开发_开发fpga用什么语言

Video In To AXI4-

调用官方的Video In To AXI4- IP核将Bayer视频转换为 AXI4-视频流;Block 中如下:

开发fpa是什么意思_FPGA开发_开发fpga用什么语言

需要注意的是,Base模式下,相机1个像素时钟输出2个像素;

需要注意的是,Full模式下,相机1个像素时钟输出8个像素;

在IP配置时需要针对性配置,具体请参考工程;

VDMA视频缓存

LVDS解码后的视频转为的AXI4-Sream的视频流,经VDMA送入DDR3做4帧缓存,VDMA在Block 中如下:

开发fpga用什么语言_开发fpa是什么意思_FPGA开发

需要注意的是,输入VDMA的视频数据位宽只有8位,是Bayer格式图像,在IP配置时需要针对性配置,具体请参考工程;此外,VDMA需要调用软核运行SDK来配置;

AXI4- 视频切换

VDMA输出的视频还是Bayer图像;然后调用官方的AXI4- IP核将输入的Bayer图像一分为二,并控制选择其中1路图像输出;若选择第1路输出,则Bayer图像则直接送视频输出流程,若选择第2路输出,则调用官方的 IP核将Bayer图像转换为视频;Block 中如下:

FPGA开发_开发fpa是什么意思_开发fpga用什么语言

需要注意的是,上图中的AXI4- IP核用于数据位宽转换,当选择第1路输出时,Bayer图像数据位宽为8位,需要转换为24位才能输出显示,其实也就是灰度图像拼在一起而已;

Video Mixer视频叠加

调用官方的Video Mixer IP核对Bayer视频或者RGB视频进行叠加操作,以的黑色为背景,其上叠加的视频;Block 中如下:

开发fpga用什么语言_开发fpa是什么意思_FPGA开发

需要注意的是,Video Mixer需要调用软核运行SDK来配置;

HDMI视频输出

调用官方的Video 和AXI4- To Video Out IP核将AXI4-视频流转换为视频;然后视频送入板载的芯片实现RGB转HDMI输出;最后HDMI视频送显示器显示即可;Video 配置为1080P时序,芯片用AXI-I2C配置,通过驱动;Block 中如下:

FPGA开发_开发fpga用什么语言_开发fpa是什么意思

需要注意的是,上图中的是专门用于芯片配置,需要调用软核运行SDK来驱动;

工程源码架构

提供2套工程源码,以工程源码1为例,工程Block 设计如下:

FPGA开发_开发fpa是什么意思_开发fpga用什么语言

提供2套工程源码,以工程源码1为例,综合后的工程源码架构如下:

开发fpa是什么意思_FPGA开发_开发fpga用什么语言

工程源码需要运行软核,用于相关IP配置和相关IC配置;SDK工程架构如下:

开发fpga用什么语言_FPGA开发_开发fpa是什么意思

需要注意的是,在SDK工程中,我们将所有子函数都放在了主函数里,并提供了详细的中文注释和使用方法注释,用户可根据注释快速理解和使用;不懂的可以问我;如果你打开后注释显示乱码,请将SDK字符设置为国标;

工程注意事项

由于工程中用到了HLS生成的IP, 可能会出现综合编译失败,或者警告后在Vitis SDK里找不到设备ID等情况,此时需要更改电脑系统时间或者打上官方补丁解决这件事情,具体方法参考这位大佬博文:

直接点击前往

此外,还可以通过缩短工程存放路径解决该问题;

此外,在Block 生成输出文件时,请选择如下模式:

FPGA开发_开发fpga用什么语言_开发fpa是什么意思

开发fpga用什么语言_FPGA开发_开发fpa是什么意思

选择上图的模式,有利于HLS IP核的生成,若不选该模式,综合可能报错;

5、工程详解1详解:-100T版本

开发板FPGA型号:––-2;

FPGA开发环境:.1;

输入:相机,Full模式,分辨率@60Hz;

输出:HDMI,芯片编码,分辨率黑色背景下叠加有效区域图像;

视频解码方案:官方原语LVDS解码方案;

LVDS差分对:12对差分数据+3对随路差分时钟;

图像缓存方案:官方VDMA+DDR3颗粒,4帧缓存;

实现功能:FPGA解码视频转HDMI输出;

工程作用:此工程目的是让读者掌握FPGA解码视频转HDMI输出的设计能力,以便能够移植和设计自己的项目;

工程Block 和工程代码架构请参考第4章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

FPGA开发_开发fpga用什么语言_开发fpa是什么意思

6、工程详解2详解:-325T版本

开发板FPGA型号:–>–325T–-2

FPGA开发环境:.1;

输入:相机,Full模式,分辨率@60Hz;

输出:HDMI,芯片编码,分辨率黑色背景下叠加有效区域图像;

视频解码方案:官方原语LVDS解码方案;

LVDS差分对:12对差分数据+3对随路差分时钟;

图像缓存方案:官方VDMA+DDR3颗粒,4帧缓存;

实现功能:FPGA解码视频转HDMI输出;

工程作用:此工程目的是让读者掌握FPGA解码视频转HDMI输出的设计能力,以便能够移植和设计自己的项目;

工程Block 和工程代码架构请参考第4章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

FPGA开发_开发fpga用什么语言_开发fpa是什么意思

7、工程移植说明 版本不一致处理

1:如果你的版本与本工程版本一致,则直接打开工程;

2:如果你的版本低于本工程版本,则需要打开工程后,点击文件–>另存为;但此方法并不保险,最保险的方法是将你的版本升级到本工程的版本或者更高版本;

开发fpga用什么语言_FPGA开发_开发fpa是什么意思

3:如果你的版本高于本工程版本,解决如下:

开发fpa是什么意思_FPGA开发_开发fpga用什么语言

打开工程后会发现IP都被锁住了,如下:

开发fpa是什么意思_开发fpga用什么语言_FPGA开发

此时需要升级IP,操作如下:

FPGA开发_开发fpga用什么语言_开发fpa是什么意思

FPGA开发_开发fpga用什么语言_开发fpa是什么意思

FPGA型号不一致处理

如果你的FPGA型号与我的不一致,则需要更改FPGA型号,操作如下:

开发fpa是什么意思_FPGA开发_开发fpga用什么语言

FPGA开发_开发fpga用什么语言_开发fpa是什么意思

FPGA开发_开发fpga用什么语言_开发fpa是什么意思

更改FPGA型号后还需要升级IP,升级IP的方法前面已经讲述了;

其他注意事项

1:由于每个板子的DDR不一定完全一样,所以MIG IP需要根据你自己的原理图进行配置,甚至可以直接删掉我这里原工程的MIG并重新添加IP,重新配置;

2:根据你自己的原理图修改引脚约束,在xdc文件中修改即可;

3:纯FPGA移植到Zynq需要在工程中添加zynq软核;

8、上板调试验证 准备工作

需要准备的器材如下:

相机,这个普遍很贵,也可以找本博主提供;

FPGA开发板,没有开发板可以找本博主提供;

HDMI显示器和HDMI线缆,这个很常见,自备即可;

FPGA解码视频转HDMI输出效果演示

FPGA解码视频转HDMI输出效果演示如下:

-RX

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

福利:工程代码的获取

代码太大,无法邮箱发送,以某度网盘链接方式发送,

资料获取方式:私,或者文章末尾的V名片。

网盘资料如下:

FPGA开发_开发fpa是什么意思_开发fpga用什么语言

此外,有很多朋友给本博主提了很多意见和建议,希望能丰富服务内容和选项,因为不同朋友的需求不一样,所以本博主还提供以下服务:

开发fpga用什么语言_开发fpa是什么意思_FPGA开发


注明:本内容来源网络,不用于商业使用,禁止转载,如有侵权,请来信到邮箱:429562386ⓐqq.com 或联系本站客服处理,感谢配合!

用户登陆

    未注册用户登录后会自动为您创建账号

提交留言