健康奶 · 2023年06月26日 · 北京市

FPGA采集CameraLink相机Base模式解码输出,附带工程源码和技术支持

FPGA采集CameraLink相机Base模式解码输出,附带工程源码和技术支持

1、前言

FPGA实现CameraLink视频编解码目前有两种方案:
一是使用专用编解码芯片,比如典型的DS90CR287;另一种方案是使用FPGA实现编解码,利用FPGA的serdes资源实现解串,优点是合理利用了FPGA资源,serdes资源不用白不用,缺点是操作难度大一些,对FPGA水平要求较高。

本文详细描述了FPGA采集CameraLink相机Base模式解码输出的实现设计方案,思路是这样的,CameraLink相机输入到FPGA板子,FPGA使用内部逻辑资源实现LVDS视频解码,解析出像素时钟、行同步信号、场同步信号、数据有效信号、以及像素数据,然后将视频转为Xilinx的AXI4-Sream的视频流,经VDMA送入DDR3缓存,然后读取出视频再经过AXI4-Sream to Video Out
通过HDMI接口输出视频,这是Xilinx图像处理常用的套路,可谓相当精巧的方案,呵呵。。。

工程代码编译通过后上板调试验证,可直接项目移植,适用于在校学生做毕业设计、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的数字成像和图像传输领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

2、CameraLink协议基础

关于这部分,网上有很多博主解释过,我找了几篇推荐兄弟们去学习理论知识:
第一篇链接:点击直接前往
第二篇链接,这是我之前写的:点击直接前往

3、目前我已有的CameraLink收发工程

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

4、设计方案

详细设计方案如下:
在这里插入图片描述

输入CameraLink相机

CameraLink相机型号为北京微视的RS-A5241-CC107-S00型彩色 CameraLink 相机,该相机可通过串口配置为Base模式或者Full模式,本工程使用的是Base模式;分辨率为全幅面 25602048 下,帧率可达 107fps;本工程配置为12801024;

LVDS视频解码

LVDS视频解码模块设计框图如下:
在这里插入图片描述
CameraLink解码模块在Base模式时输入信号如下:
1路差分时钟,4路差分数据;利用Xilinx官方的IDELAY和ISERDES源语实现串并转换;
IDELAY源语的作用是延时,以便于FPGA采样时的CameraLink视频数据是稳定的;
ISERDES源语的作用是实现CameraLink视频数据的串并转换;
整个CameraLink解码模块严格按照设计框图实现,主要是调用源语,所以没啥可讲的,具体看代码,代码量很少;
CameraLink解码模块参数配置如下:
在这里插入图片描述
这两个参数可自由配置,以适应CameraLink相机的不同模式;具体配置如下:
在这里插入图片描述

视频缓存

解码后的视频转为Xilinx的AXI4-Sream的视频流,经VDMA送入DDR3缓存,然后读取出视频再经过AXI4-Sream to Video Out通过HDMI接口输出视频,这是Xilinx图像处理常用的套路;整个视频缓存架构以VDMA为核心,全部调用Xilixn的IP实现,只需配置IP即可使用,这里的配置既包括UI界面的配置,也包括软件的配置,由于本工程采用Kintex7位平台,所以调用MicroBlaze软核运行SDK来配置这些IP;

视频输出

这里调用了Video Mixer这个IP,因为CameraLink相机配置为12801024,输出分辨率为19201080,所以用Video Mixer来做19201080的黑色背景,再其上叠加12801024的相机视频;
调用AXI4-Sream to Video Out输出VGA时序,板载一颗sil9022芯片完成VGA转TMDS最终由HDMI接口输出显示器显示;

软件配置

所以调用MicroBlaze软核运行SDK来配置这些IP、配置CameraLink相机、配置sil9022芯片、以及完成和上位机的人机交互;
调用一个AXI-UART完成和上位机的人机交互,也就是上位机通过串口调试助手给程序发指令;
调用一个AXI-UART完成CameraLink相机的配置,本工程配置为1280*1024分辨率,Base模式;
调用一个AXI-IIC完成sil9022芯片的配置;

5、vivado工程详解

开发板FPGA型号:xc7k325tffg676-2;
开发环境:vivado2019.1;
输入:CameraLink相机;Base模式;1280*1024分辨率;
输出:HDMI,1920*1080分辨率;

Bolck Design设计如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
综合后的工程代码架构如下:
在这里插入图片描述
综合编译完成后的FPGA资源消耗和功耗预估如下:
在这里插入图片描述
SDK软件程序架构如下:
在这里插入图片描述

6、上板调试验证

由于CamerLink转接板不方便出境,仅展示FPGA板子及对应的CamerLink转接板接口,如下:
在这里插入图片描述
工程的使用和配置过程较为复杂,这里感觉步骤太多了写不下,所以我专门写了一篇使用调试手册的文档,放在了资料包里,路径如下:
在这里插入图片描述
注意!!!
注意!!!
注意!!!
下载本工程后,请将文件放到一个最短路径的文件夹里去,因为路径太长可能导致工程编译失败;还有,本工程试用了HLS的IP核,在编译前请更新官方的补丁文件,不然综合时会报错,更新官方的补丁文件的文件下载和更新方法都写在了上图的文档里,记得仔细阅读;
输出效果如下:
在这里插入图片描述

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

福利:工程代码的获取
代码太大,无法邮箱发送,以百度网盘链接方式发送,
通过微信获取资料:
微信图片_20230604203730.jpg
网盘资料如下:
在这里插入图片描述
在这里插入图片描述

推荐阅读
关注数
12
内容数
112
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息