FPGA纯verilog实现CameraLink视频接收和发送,附带工程源码和技术支持

news2025/1/16 9:01:59

目录

  • 1、前言
  • 2、CameraLink协议基础
  • 3、目前我已有的CameraLink收发工程
  • 4、设计方案
  • 5、CameraLink解码模块详解
  • 6、CameraLink编码模块详解
  • 7、vivado工程详解
  • 8、上板调试验证
  • 9、福利:工程代码的获取

1、前言

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

本文详细描述了FPGA纯verilog实现CameraLink视频接收和发送的实现设计方案,目的在于验证CameraLink解码模块和编码模块的正确性,思路是这样的,由于项目之处没有CameraLink相机,但又必须验证关键的CameraLink解码模块和编码模块,所以做了这样一个巧妙的设计:
先采集HDMI输入视频,经HDMI解码模块解为RGB数据后送入CameraLink编码模块,出来的就是CameraLink的LVDS差分视频信号了,再把这个信号通过CameraLink视频输出接口回环到CameraLink视频输入接口,这样FPGA又接受到了CameraLink的LVDS差分视频信号了,再把这个信号送入CameraLink解码模块,解为RGB视频,最后经过HDMI编码模块输出显示器显示;如此一来,输入和输出都是HDMI视频,却同时验证了CameraLink解码模块和编码模块,却输出效果可通过显示器直观查看,可谓相当精巧的方案,呵呵。。。

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

2、CameraLink协议基础

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

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

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

4、设计方案

详细设计方案如下:
在这里插入图片描述
这个方案不需要有CameraLink相机,但你的板子需要有CameraLink相机接口或者有单独的具有CameraLink相机接口的转接板,具体流程如下:
视频输入:
用笔记本电脑模拟视频输入,将笔记本电脑分辨率设置为1280x720@60Hz;
HDMI解码模块:
输入为TMDS的差分视频信号,也就是HDMI视频信号,输出并行的RGB数据,即标准的VGA视频时序;这个视频作为CameraLink编码模块的输入;
CameraLink编码模块:
输入为RGB视频数据,输出为CameraLink的LVDS差分视频信号,这个信号通过CameraLink视频接口输出;
CameraLink视频接口:标准的SDR26连接器,一共两个,一个作为输出,另一个作为输出入;
CameraLink编码模块:
输入为CameraLink的LVDS差分视频信号,输出为并行的RGB数据,即标准的VGA视频时序;这个视频作为HDMI编码模块的输入;
HDMI编码模块:
输入为RGB视频,输出为TMDS差分视频,输出HDMI显示器显示;

5、CameraLink解码模块详解

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

6、CameraLink编码模块详解

CameraLink编码模块设计框图如下:
在这里插入图片描述
CameraLink编码模块是解码的逆过程,输入信号如下:
1路单端时钟,并行的像素数据;利用Xilinx官方的OSERDES源语实现并串转换;
作为编码,不需要IDELAY源语的延时;
OSERDES源语的作用是实现CameraLink视频数据的并串转换;
整个CameraLink编码模块严格按照设计框图实现,主要是调用源语,所以没啥可讲的,具体看代码,代码量很少;
CameraLink编码模块参数配置如下:
在这里插入图片描述
这两个参数可自由配置,以适应CameraLink相机的不同模式;具体配置如下:
在这里插入图片描述
当前配置的模式适用于Base模式;

7、vivado工程详解

开发板FPGA型号:xc7k325tffg676-2;
开发环境:vivado2019.1;
输入:HDMI,作为CameraLink编码模块的输入;
输出:HDMI,实质上是CameraLink解码模块的输出;

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

8、上板调试验证

由于CamerLink转接板不方便出境,仅展示FPGA板子及对应的CamerLink转接板接口,如下:
在这里插入图片描述
输出效果如下:
在这里插入图片描述

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

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

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

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

相关文章

C++基本介绍

文章目录 🥭1.C基本介绍🧂1.1 C是什么🧂1.2 C发展史 🍒2. C的优势🥔2.1 语言的使用广泛度🥔2.2 C的应用领域 🫒3. C学习计划 🥭1.C基本介绍 🧂1.1 C是什么 C是一种通用…

用streamlit,几行代码就可以拥有漂亮图表!

大家注意:因为微信最近又改了推送机制,经常有小伙伴说错过了之前被删的文章,比如前阵子冒着风险写的爬虫,再比如一些限时福利,错过了就是错过了。 所以建议大家加个星标,就能第一时间收到推送。&#x1f44…

FastAPI 和 fastapi-amis-admin:强大而可扩展的后台管理解决方案!

大家好,我是安果! 我们都知道 Django 生态丰富,功能强大,适用于中、大型项目,并且自带了后台管理系统;而 FastAPI 更适用于构建高性能的 API,后台管理系统需要另外开发 本篇文章将介绍 FastAPI…

完犊子!原单位的离职证明丢了,下周要入职了,用AI做一个行不行?

弄丢了离职证明怎么办? 一位网友哀叹: 完犊子!原单位的离职证明丢了,下周要入职了,现在怎么办?用AI做一个行不行? 有相同经历的网友安慰他,离职证明没了没事,新公司会要求…

打卡智能中国(五):博士都去哪儿了?

《打卡智能中国》系列更新了几期,有读者表示,很爱看这类接地气的真实故事,也有读者反映,不是电工,就是文员、农民、治沙人,人工智能不是高精尖学科吗?那些学历很高的博士都去哪儿了?…

用数据讲故事:十大统计学/机器学习魔法指数

统计学和机器学习为数据分析提供理论基础,入门时我看过很多统计学相关书籍,复杂的公式和推导过程让我一度陷入迷茫。对于数据科学/分析师来说,如何使用统计学知识并应用到我们的分析场景中更为重要。本文主要基于数据分析工作中的实际应用场景…

1000本!计算机经典书籍分享

闲话少说,列表如下。 编程语言类书籍 包含:Java、C、C、Python、Go等语言 Java电子书大全https://www.yingyanshe.cn/5275.htmlC电子书大全https://www.yingyanshe.cn/5284.htmlC语言类电子书https://www.yingyanshe.cn/5293.htmlC#电子书https://www…

chatgpt赋能Python-python_fg

Python FG: 优秀的Python工程师一定要知道的资源 如果你是一名Python工程师,那么你一定会喜欢Python FG资源。Python FG是一个在线平台,提供海量的Python API文档、教程、实例、以及与Python有关的各种工具和资源,让Python工程师轻松学习和使…

盘点!Instruction Tuning 时代的大模型

作者 | Kevin吴嘉文 整理 | NewBeeNLP 公众号 https://zhuanlan.zhihu.com/p/616830127 Alpaca,ChatGLM 等模型的效果可以接受,下文总结部分笔记,为训练自定义小型化(7B)模型提供点知识储备。包括模型论文 LaMDA, Mup…

纯净版Win10系统重装教程(超详细)

本博客详细讲解纯净版Win10系统重装,步骤齐全,小白可实操。 纯净版Win10系统重装教程 系统安装前准备下载安装工具更新重装 制作U盘为启动盘 重装Win10进入Boot模式选择系统版本分区系统安装中新系统配置 系统安装前准备 ➢ 准备8G或8G以上的空U盘。&a…

POSTGRESQL 10个使用POSTGRESQL 需要避免的错误 (译)

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

EOS网络基金会大战Block.One

微信公众号修改了推送规则,请各位亲爱的读者给刘教链公众号添加星标🌟,以便及时收到每日最新文章推送! 星标🌟添加方法:【1】点击标题下方“刘教链 刘教链”的第二个“刘教链”,打开公众号主页&…

chatgpt赋能Python-python_field

Python在Field上的应用 Python作为一门高级编程语言,在众多领域中扮演着应用广泛、易于学习、使用简便、速度出色的角色。在本文中,我们将重点关注Python在Field上的应用。 Field是什么? Field指的是“领域”,包括科学、工程、…

活动报名|分布式人工智能:可扩展性、效率和泛化性

2023年05月25日(星期四)14:00-15:30,智源社区「智源Live 第42期」线上活动将在线举办,「阅读原文」报名即可参加。 活动主题:分布式人工智能:可扩展性、效率和泛化性 安波 安波是新加坡南洋理工大学校长委员…

chatgpt赋能Python-python_for_end

Python for End: 介绍 Python是一种高级编程语言,由Guido van Rossum创建于1989年,并在1991年正式发布。Python是一种多范式编程语言,可以用于面向对象、函数式和过程式编程。它拥有简单易懂的语法以及扩展性强的库,从而使得开发…

见证ES6革命:深入学习let、const、var的区别、解构赋值、箭头函数等常用知识点,开创全新开发模式。

let、const、var的区别 使用var声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象。使用let声明的变量,其作用域为该语句所在的代码块内,不存在变量提升。使用const声明的是常量,在后面出现的代码块中,不能在修改改常量的值。 var let const 函数级作用域 块级…

ThingsBoard教程(五十):规则节点解析 创建关系节点Create Relation Node,删除关系节点 Delete Relation Node

创建关系节点 Create Relation Node Since TB Version 2.2.1 根据类型和方向,从所选实体创建到消息发起方的关系。 以下消息发起方类型被允许:资产、设备、实体视图、客户、租、仪表板。 通过元数据键模式查找目标实体,然后在源实体和目标实体之间创建关系。 如果选择的…

AbstractStringBuilder源码

介绍 AbstractStringBuilder这个抽象类是StringBuilder和StringBuffer的直接父类,而且定义了很多方法,因此在学习这两个类之前建议先学习 AbstractStringBuilder抽象类 该类在源码中注释是以JDK1.5开始作为前两个类的父类存在的 abstract class Abstr…

【已解决】使用selenium启动谷歌Chrome浏览器打开指定网站,页面空白,而使用其它浏览器手动打开该网站则正常

问题描述 1、在使用python实现自动化网络爬虫时,我使用到selenium来驱动谷歌Chrome浏览器来打开某一个网页,然后爬取数据,代码如下: from selenium import webdriver import timedriver webdriver.Chrome() driver.get(https://…

基于JavaSpringBoot+Vue+uniapp实现微信小程序新闻资讯平台

博主介绍:✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…