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

news/2024/7/21 3:57:18 标签: fpga开发, CameraLink, LVDS, 图像采集, 图像处理

目录

  • 1、前言
  • 2、CameraLink协议基础
  • 3、目前我已有的CameraLink收发工程
  • 4、设计方案
    • 输入CameraLink相机
    • LVDS视频解码
    • 视频缓存
    • 视频输出
    • 软件配置
  • 5、vivado工程详解
  • 6、上板调试验证
  • 7、福利:工程代码的获取

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图像处理常用的套路,可谓相当精巧的方案,呵呵。。。

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

CameraLink_11">2、CameraLink协议基础

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

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

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

4、设计方案

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

CameraLink_20">输入CameraLink相机

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

LVDS_22">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模式;12801024分辨率;
输出:HDMI,1920
1080分辨率;

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

6、上板调试验证

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

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

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式1:私,或者文章末尾的V名片。
网盘资料如下:
在这里插入图片描述
在这里插入图片描述


http://www.niftyadmin.cn/n/358196.html

相关文章

vue做一个一直自增加载且永远不会超过百分之九十九的数值 制造正在加载假象

我们在src跟目录下创建一个utils目录下面创建一个continuousLoading.js 参考代码如下 let value 0;export default function(callback) {const timer setInterval(() > {if (callback&&(value || value 0)&&value < 99) {value 1;callback(value);}…

报名仅剩十天!又一开发者公布高分方案源代码,助力软件杯选手高效解题

‍‍ 本文作者&#xff1a;艾宏峰 算法工程师 M6 Global赛道总排名4th KDD Cup 2022风电功率预测飞桨赛道5th “中国软件杯”大学生软件设计大赛——龙源风电赛道&#xff0c;5月31日预选赛截止&#xff0c;80%选手将晋级区域赛&#xff0c;欢迎大家抓紧报名&#xff01; 赛题背…

数据中台建设浪费,数据分析系统如何设计,听听 Gartner 怎么说

2023 年数据分析趋势&#xff1a;数据即业务、从平台到生态、以人为中心 作者 | 宋慧 出品 | CSDN 云计算 数据的价值被越来越多的行业用户看到。不过各种数据系统百花齐放&#xff0c;前几年关于数据中台的讨论仍然众说纷纭。国际研究机构 Gartner 持续对数据分析市场做了调研…

前端架构师-week7-B端项目需求分析和架构设计

标题 B端项目需求分析 和 架构设计 将收获什么 做怎样的项目完成瓶颈期的突破 怎样从需求中寻找关键难点 怎样写技术解决方案 怎样进行基础的技术选型 关键词 挖掘难点 - 找到项目中的痛点 技术解决方案 - 以文档的形式创造可追溯的思考模型 业务组件库 - 多项目复用的业务组…

一篇文章搞定《Android事件分发》

一篇文章搞定《Android事件分发》 什么是事件分发MotionEvent事件事件如何从屏幕到APPInputManagerServiceWindowManagerServiceWindow小结 事件如何从APP到达对应页面第一步&#xff1a;分类第二步&#xff1a;送去Activity后续的传递小结&#xff1a; 页面的事件分发整个流程…

Batch Normalization批量归一化

前言 Batch Normalization作为最近一年来DL的重要成果&#xff0c;已经广泛被证明其有效性和重要性。目前几乎已经成为DL的标配了&#xff0c;任何有志于学习DL的同学们朋友们雷迪斯俺的詹特曼们都应该好好学一学BN。BN倒过来看就是NB&#xff0c;因为这个技术确实很NB&#x…

1096 Consecutive Factors(22行代码+详细注释)

分数 20 全屏浏览题目 切换布局 作者 CHEN, Yue 单位 浙江大学 Among all the factors of a positive integer N, there may exist several consecutive numbers. For example, 630 can be factored as 3567, where 5, 6, and 7 are the three consecutive numbers. Now g…

详解token已过期含义及解决方 token过期是否需要重新登录

详解token已过期含义及解决方 token过期是否需要重新登录Web应用和用户的身份验证息息相关&#xff0c;从单一服务器架构到分布式服务架构再到微服务架构&#xff0c;用户安全认证和授权的机制也一直在演进&#xff0c;下文对各个架构下的认证机制做个总结。单一服务器架构该架…