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

news2024/12/23 3:26:52

目录

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

1、前言

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

本文详细描述了FPGA采集CameraLink相机Full模式解码输出的实现设计方案,思路是这样的,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模式,本工程使用的是Full模式;分辨率为全幅面 25602048 下,帧率可达 107fps;本工程配置为12801024;
在这里插入图片描述
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分辨率,Full模式;
调用一个AXI-IIC完成sil9022芯片的配置;

5、vivado工程详解

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

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

6、上板调试验证

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/570709.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

美团面试:接口被恶意狂刷,怎么办?

如果Java接口被恶意狂刷,我们一般可以采取以下措施: 用TimeStamp (兵不厌诈) 比如给客户端提供一个timestamp参数,值是13位的毫秒级时间戳,可以在第12位或者13位做一个校验位,通过一定的算法给…

Docker实战2-发布后端Java项目

有了上篇Docker实战1-发布前端Vue项目的经验,发布后端就轻车熟路了。 1 准备文件 java打包 运行maven的package,生成jar文件,target/dsm-service-1.0-SNAPSHOT.jar DockerFile # Docker image for springboot file run FROM openjdk:11.0.11-jdk-sli…

【JavaSE】Java基础语法(十二):ArrayList

文章目录 1. ArrayList的构造方法和添加方法2. ArrayList类常用方法3. ArrayList存储学生对象并遍历 集合和数组的区别 : 共同点:都是存储数据的容器不同点:数组的容量是固定的,集合的容量是可变的 1. ArrayList的构造方法和添加方法 ArrayL…

2023亚马逊云科技游戏开发者大会从技术角度探索游戏的广阔边界

自上世纪五十年代诞生以来,电子游戏产业蓬勃发展,这与人类想象力的解放有着无比紧密地联系。伴随着全球游戏市场竞争的加剧,“游戏人”面临着很多全新的挑战。因此,2023亚马逊云科技游戏开发者大会不仅带来了最新的游戏行业举措&a…

基于多智能体深度强化学习的体系任务分配方法

源自:指挥与控制学报 作者:林萌龙, 陈涛, 任棒棒, 张萌萌, 陈洪辉 摘 要 1 背景 1.1 集中式决策VS分布式决策 图1集中式决策示意图 1.2 多智能体强化学习 2 问题描述 2.1 场景描述 图2分布式决策场景下的体系任务分配 2.2 状态空间、动作…

PyTorch-DataLoader

DataLoader:从Dataset中取数据,怎么取,每次取多少可以由DataLoader中的参数进行设定,并将数据加载到神经网络中。 dataloader.py import torchvision from torch.utils.data import DataLoader from torch.utils.tensorboard im…

Python框架比较:Django、Flask和Pyramid三者的优缺点和应用场景

第一章:引言 在当今快节奏的软件开发行业中,选择合适的开发框架对于开发人员来说至关重要。Python作为一种流行的编程语言,拥有众多强大的框架,其中包括Django、Flask和Pyramid。本文将比较这三个Python框架的优缺点和应用场景&a…

企业级低代码开发,迈向企业数字化时代

当下,随着科技的快速发展,软件开发的成本不断降低,越来越多的人可以参与到软件开发的过程中。但是在这个过程中,我们也发现了一个问题,就是软件开发的成本越来越高。传统的开发模式需要投入大量人力物力,而…

旅游信息推荐系统

文章目录 旅游信息推荐系统一、系统演示二、项目介绍三、系统运行界面图四、系统部分功能截图五、部分代码展示六、底部获取源码 旅游信息推荐系统 一、系统演示 旅游信息推荐系统 二、项目介绍 数据库版本: mysql8.0 数据库可视化工具: navicat 服务器…

新技术越来越多,作为程序员,我们应该怎么规划职业生涯? | 社区征文

随着科技的不断进步,新技术不断涌现,对程序员的要求也在不断提高。作为一名程序员,要想在这个竞争激烈的行业中立足,就需要制定一份明确的职业规划,不断学习和掌握新技术,提升自己的职业能力和竞争力。 确定…

自古以来,反射也是兵家必争之地

成文耗时1小时,阅读5min,有用指数5颗星。 这几天收到一个战术性需求,将一大坨字段序列化为特定格式的字符串。 大概是下表: 序号字段名描述是否必填0logVersion日志版本是1productName产品是2serviceName服务是.........25extend3…

手写Spring源码(简化版)

导航: 【Java笔记踩坑汇总】Java基础进阶JavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线MySQL高级篇设计模式牛客面试题 参考视频: 周瑜大都督手写模拟Spring_哔哩哔哩 源码: https://gitee.com/vincewm/spring-master 目…

windows自动保存git密码

Windows平台在使用Git的时候经常会出现反复输入密码,生成密钥对的时候如果设置了密码,那么每次使用时都会要求输入密码,那可以通过下面的方式解决。 1. 配置ssh自动启动 管理员启动终端 Set-Service ssh-agent -StartupType Auto # 设置为…

C语言实现分数求和

代码&#xff1a; // 计算1/1 - 1/2 1/3 - 1/4 ...1/99 - 1/100的值 // 计算1/1 - 1/2 1/3 - 1/4 ...1/99 - 1/100的值 int main() {int i 0;double sum 0.0;int flag 1;for (i 1; i < 100; i) {sum sum flag*(1.0 / i);flag -flag;}printf("%lf\n", su…

Caffeine 本地高速缓存工具类

目录 Caffeine工具类方式 SpringBoot 整合 Caffeine 缓存 &#xff08;SpringCache模式&#xff09; 驱逐策略 开发使用 Caffeine是一种高性能的缓存库&#xff0c;是基于Java 8的最佳&#xff08;最优&#xff09;缓存框架&#xff0c;性能各方面优于guava。 Caffeine工具…

脉蜂:Django + Flutter 开发的进销存管理系统【已开源】

项目说明 小规模零售&#xff08;包括电商&#xff09;跟大规模零售企业的差别在哪里呢&#xff1f; 以我当前的认知来看&#xff0c;小规模零售跟大规模零售企业的差别更多的是在供应链管理、进销存管控上面产生的。如果有一个工具&#xff0c;能够帮他们减少这方面的差异&…

我们拆了一款Tof+AI避障的扫地机,小米铁蛋铁大机器人同款

追觅W10 Pro是2022年初推出的新品&#xff0c;相较前一代W10&#xff0c;两者间最大的区别是将LDS避障升级为了TofAI避障&#xff0c;扫地机本体前脸像给W10开了“大眼特效”的传感器和摄像头就是机械避障升级的最佳佐证。 在外观上扫地机还是延续了以往的设计&#xff0c;顶部…

ReactRouterDom-v5v6用法与异同

本文作者系360奇舞团前端开发工程师 简介&#xff1a; React Router Dom是React.js中用于实现路由功能的常用库。在React应用中&#xff0c;路由可以帮助我们管理页面之间的导航和状态&#xff0c;并实现动态加载组件。本文将深入探讨React Router Dom的两个主要版本&#xff1…

​一文学会iOS画中画浮窗

本文字数&#xff1a;11934字 预计阅读时间&#xff1a;40分钟 背景 之前有看到有人用画中画实现时分秒的计时&#xff0c;顺手收藏了&#xff0c;一直没来及看。最近使用《每日英语听力》&#xff0c;突然发现它用画中画实现了听力语句的显示&#xff0c;顿时来了兴趣&#xf…