当前位置: 首页 > news >正文

【自动驾驶汽车通讯协议】GMSL通信技术以及加串器(Serializer)解串器(Deserializer)介绍

文章目录

      • 0. 前言
      • 1. GMSL技术概述
      • 2. 为什么需要SerDes?
      • 3. GMSL技术特点
      • 4.自动驾驶汽车中的应用
      • 5. 结论

0. 前言

按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见解及成果,但是内容可能存在不准确的地方。如果发现文中错误,希望批评指正,共同进步。

随着自动驾驶技术和驾驶辅助系统(ADAS)的快速发展,车载摄像头成为了必不可少的传感器,这对车载数据传输提出了很高的要求。为了应对这一挑战,吉比特多媒体串行链路(GMSL, Gigabit Multimedia Serial Link)作为一种高速、长距离的串行通信技术应运而生。本文将详细介绍GMSL技术的工作原理及其在汽车领域的应用。

在这里插入图片描述

1. GMSL技术概述

GMSL技术是一种专为多媒体数据传输设计的串行链路技术,它能够在长距离上传输高清视频、音频和控制信号等大量数据,同时保持较低的功耗和电磁干扰(EMI)。GMSL技术的核心组件包括串行器(Ser)和解串器(Des),它们共同构成了SerDes(Serializer/Deserializer)系统,负责将并行数据转换为串行数据,并在接收端将串行数据恢复为并行数据。

GMSL SerDes解决方案示意图如下:
在这里插入图片描述

2. 为什么需要SerDes?

在GMSL多媒体数据传输中,SerDes(串行器/解串器)的核心任务是数据的串行化与解串行化

  • 串行化:在发送端,SerDes将来自源设备(例如摄像头)的并行数据流(例如视频)转换成高速串行数据流,以便通过单个或少量物理线路进行传输。
  • 解串行化:在接收端,SerDes将接收到的串行数据流重新转换回并行数据流(例如视频),供目标设备(例如屏幕)处理。
    **加粗样式**

具体来说,串行化有以下好处:

  1. 减少布线复杂性和成本
    • 在传统的并行总线系统中,每条数据线都需要单独的导线,随着数据通道数量的增加,线束变得非常复杂且昂贵。
    • SerDes通过将并行数据转换为高速串行数据流,大大减少了所需的物理线路数量,从而降低了线束的成本和重量。
  2. 提高传输速率
    • SerDes能够支持非常高的数据传输速率,这对于高清视频传输尤其重要。
  3. 改善信号质量
    • 高速并行总线容易受到信号完整性和电磁干扰的影响。
    • 通过使用SerDes技术,可以在更长的距离上传输高质量的信号,同时减少信号衰减和干扰。
  4. 节省空间
    • 使用SerDes技术可以减少所需的电缆数量和体积,从而节省空间并减轻重量。
  5. 提高灵活性
    • SerDes技术使得GMSL可以支持多种不同类型的连接介质,包括同轴电缆和屏蔽双绞线(STP)。
    • 这种灵活性允许制造商根据具体应用选择最合适的线缆类型,从而优化性能和成本。
  6. 功耗和散热
    • SerDes技术有助于降低功耗和减少发热,这对于汽车电子系统来说是非常重要的因素。
      在这里插入图片描述

简而言之,SerDes在GMSL多媒体数据传输中的主要任务是确保数据能够高效、准确且可靠地从发送端传输到接收端,同时最小化信号质量和传输距离带来的影响。这对于实现在汽车和其他应用环境中高速、长距离的多媒体数据传输至关重要。

3. GMSL技术特点

GMSL技术具有以下几个显著特点:

  • 高速率:GMSL1 支持的数据传输速率通常为 3Gbps 或更低。GMSL2 是第二代技术,它提升了数据传输带宽至 6Gbps,可以轻松传输 800 万像素(4K/30fps)的视频流数据;
  • 远距离:支持最长15米的屏蔽双绞线(STP)或同轴电缆传输,这对于车辆内部的布局来说是非常有利的;
  • 抗干扰性强:采用了串行传输方式,大大减少了线束的数量,满足严格的EMC要求,内置扩频功能以改善链路的电磁兼容性;
  • 支持多种数据类型:不仅可以传输视频和音频信号,还能传输控制信号,适合于多媒体系统的集成;
  • 功能安全:GMSL支持ASIL B级别的功能安全认证,适用于自动驾驶汽车相关的应用。

4.自动驾驶汽车中的应用

下面以美信公司的MAX967XX GMSL/SerDes产品为例,说明 GMSL/SerDes在ADAS中的应用。
在这里插入图片描述
上图是GMSL/SerDes应用在ADAS系统中Camera视频数据传输的示例,该产品系统具有以下特征:

  1. 控制通道错误检测和重传

    • 确保配置链接时的100%准确性
    • 可靠的通信,用于通过控制链路访问的外围设备
  2. 交叉开关

    • 并行输入到并行输出
    • 为一个主机板启用不同的摄像头模块
    • 为多个主机板启用一个摄像头模块
  3. 减少EMI/EMC

    • 可编程输出扩频谱
    • 将输入时钟传播到解串器的能力
    • 高免疫力模式,以承受控制通道的EMC容忍度
  4. 增强电缆驱动

    • 50Ω同轴或100Ω屏蔽双绞线
    • 可编程预加重和去加重允许全速15米电缆
    • 可用的线路故障监控
  5. 视窗宽度监视器和自适应均衡化

    • 内置长电缆均衡器
    • 视窗宽度监视器可以触发均衡器重新调整
  6. 最高可达1.74Gbps的灵活数据输入

    • 12.5MHz至87MHz的14位输入+ HSYNC和VSYNC
    • 36.66MHz至116MHz的12位输入+ HSYNC和VSYNC
  7. 符合AEC-Q100资格

  8. 专用帧同步GPO

5. 结论

GMSL/SerDes技术凭借其高速率、远距离传输能力和强大的抗干扰性,成为了汽车行业中多媒体数据传输的理想解决方案。随着自动驾驶技术的进步,GMSL/SerDes技术将继续发挥重要作用,推动汽车电子系统向着更高性能和更高效的方向发展。

相关文章:

【自动驾驶汽车通讯协议】GMSL通信技术以及加串器(Serializer)解串器(Deserializer)介绍

文章目录 0. 前言1. GMSL技术概述2. 为什么需要SerDes?3. GMSL技术特点4.自动驾驶汽车中的应用5. 结论 0. 前言 按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见解及成果,但是内容可能存在不准…...

Uiautomator2与weditor配置一直报错咋办

作者在配置这两个的时候绞尽脑汁了,u2的init总是报错并且无法自动在手机上安装atx,weditor可以打开但是只要对元素操作或者任意操作就会让你去重新init,搞得作者焦头烂额,而且网上各种各样的报错信息眼花缭乱,作者几乎…...

Java后端面试题:MySQL篇

目录 MySQL基础部分 1. SELECT语句完整的执行顺序是什么? 2. 说一说内连接和外连接。 3. 请说说数据库三大范式。 4. 请你说说视图的作用,视图可以更改么? 架构 5. 请你说一说MySQL架构。 6. 请你说说一条SQL语句的执行过程&#xff…...

# Excel 操作大全

Excel 操作大全 文章目录 Excel 操作大全单元格文本换行计算SUM 单元格 文本换行 设置自动换行,在文本前面使用 AltEnter键即可换行文本前面可以输入空格实现段前缩进的效果 计算SUM 求和函数...

javascript中快速获取最大值和最小值

在 ES6 中,你可以使用 Math.max 和 Math.min 函数来获取一组数字中的最大值和最小值。这两个函数都接受一个可变数量的参数,并返回这些参数中的最大值或最小值。 以下是一个示例: const numbers [1, 2, 3, 4, 5];const max Math.max(...n…...

git merge啥意思

git merge 是 Git 中的一个命令,用于将一个分支的更改合并到另一个分支中。当你在一个项目中有多个开发人员同时工作,或者你在不同的特性分支上开发新功能时,git merge 命令就非常有用。它可以帮助你将不同分支上的更改整合在一起。 git mer…...

Web编程---Servlet技术

文章目录 一、目的二、原理三、过程1. TestServlet02文件演示效果2. TestServlet03文件演示效果3. TestServlet04与TestServlet05文件演示效果4. 控制台展示生命周期过程 四、代码web.xml文件TestServlet02.java文件TestServlet03.java文件TestServlet04.java文件TestServlet05…...

【cocos creator】输入框滑动条联动小组建

滑动条滑动输入框内容会改变 输入框输入,滑动条位置改变 const { ccclass, property } cc._decorator;ccclass() export default class SliderEnter extends cc.Component {property({ type: cc.Float, displayName: "最大值", tooltip: "" }…...

Flink时间窗口程序骨架结构

前言 Flink 作业的基本骨架结构包含三部分:创建执行环境、定义数据处理逻辑、提交并执行Flink作业。 日常大部分 Flink 作业是基于时间窗口计算模型的,同样的,开发一个Flink时间窗口作业也有一套基本的骨架结构,了解这套结构有助…...

计算机视觉之可做什么

1、计算机视觉的应用 计算机视觉在我们生活中已经有了很广泛的应用,在我们可见、不可见;可感知、不可感知的地方,深深地影响了我们的生活、生产方式。 日常生活:美颜相机、火车站刷脸进站、线上办理业务的身份认证、自动驾驶等等…...

观察者模式的思考

观察者模式由来 观察者模式(Observer Pattern)是一种行为型设计模式,它的起源可以追溯到20世纪90年代初,由设计模式四人帮(Erich Gamma, Richard Helm, Ralph Johnson 和 John Vlissides)在其著作《设计模…...

ORACLE SELECT INTO 赋值为空,抛出 NO DATA FOUND 异常

例子: DECLARE ORDER_NUM VARCHAR2(20); BEGIN SELECT S.ORDER_NUM INTO ORDER_NUM FROM SALES_ORDER S WHERE S.ID122344; DBMS_OUTPUT.PUT_LINE(单号: || ORDER_NUM); END; 在查询结果为空的情况下,以上代码会报错:未找到任何数据 解决方…...

GPT提示词

参考 提示词大全: GPT提示词大全(中英文双语)持续更新 提示词.com...

Redis协议详解及其异步应用

目录 一、Redis Pipeline(管道)概述优点使用场景工作原理Pipeline 的基本操作步骤C 示例(使用 [hiredis](https://github.com/redis/hiredis) 库) 二、Redis 事务概述事务的前提事务特征(ACID 分析)WATCH 命…...

LeetCode213:打家劫舍II

题目链接&#xff1a;213. 打家劫舍 II - 力扣&#xff08;LeetCode&#xff09; 代码如下 class Solution { public:int rob(vector<int>& nums) {if(nums.size() 0) return 0;if(nums.size() 1) return nums[0];if(nums.size() 2) return max(nums[0…...

linux一二三章那些是重点呢

第一章 静态库动态库的区别 什么是库 库文件是计算机上的一类文件&#xff0c;可以简单的把库文件看成一种代码仓库&#xff0c;它提供给使用者一些可以直接 拿来用的变量、函数或类。 如何制作 静态动态库 静态库&#xff1a; GCC 进行链接时&#xff0c;会把静态库中代码打…...

C语言中的程序入口:超越main函数的探索

在C语言中&#xff0c;尽管main函数是标准程序的默认入口点&#xff0c;但借助编译器特性和链接器选项&#xff0c;我们可以指定其他函数作为程序的入口。GCC编译器通过-e选项&#xff0c;允许我们将任何符合签名的函数作为程序的入口。这一特性可以用于特定的实验需求、特定系…...

《面试之MQ篇》

《面试之MQ篇》 1. 为什么要使用MQ 首先,面试官问的第一个问题或者说是逼问的一个问题&#xff1a;“为什么要使用MQ”其实面试官问这个问题就是想考察你MQ的特性&#xff0c;这个时候呢&#xff0c;我们必须要答出三点&#xff1a;解耦、异步、削峰。 1. 解耦 1. 传统系统…...

Git 分支操作-开发规范

一、背景 在实际开发中&#xff0c;一般在主分支的基础上单独创建一个新的分支进行开发&#xff0c;最后合并到master分支&#xff0c;而不是直接在master分支进行开发。 二、新建分支 1、初始状态&#xff0c;local为本地分支&#xff0c;remote为远程分支 2、单击 “Remot…...

JSONArray根据指定字段去重

JSONArray dataList new JSONArray();这儿省略dataList 加数据的过程 dataList new JSONArray(dataList.stream().distinct().collect(Collectors.toList())); Set<String> timestamps new HashSet<>();根据时间字段去重 dataList dataList.stream().map(obj -…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...