一、虚拟通道(VC, Virtual Channel)
1,什么是虚拟通道(VC)?
虚拟通道是 MIPI CSI-2 接口中的一个重要概念。
它允许多个独立的视频流源共享同一组物理的MIPI数据通道(Lane)进行传输。
每个虚拟通道都有单独的编号(通常从VC0到VC3或更多,最多支持16个VC通道),CSI-2数据包中包含VC编号字段:
数据包结构举例:
| VC编号 | 数据类型(DT) | 数据Payload |
VC编号可取值为0~3(基本模式)或0~15(扩展模式)
2,虚拟通道的作用:
• 同时传输多个摄像头视频:
单个MIPI接口接多个摄像头传感器时,每个摄像头占用一个独立的虚拟通道,数据互不干扰。
• 区分不同数据类型:
单个摄像头传输多种类型数据(如图像、嵌入式数据)时,也可利用虚拟通道进行数据流区分。
3,举个例子:
假设两个摄像头共享一个MIPI接口:
摄像头 |
虚拟通道 |
---|---|
前视摄像头 |
VC=0 |
后视摄像头 |
VC=1 |
芯片收到数据后,通过虚拟通道号来区分数据分别属于哪个摄像头。
二、视频通道(Video Pipes)
1, 什么是视频通道(Video Pipes)?
视频通道(Pipe)是芯片内部的一种逻辑数据路径,用于处理并转发CSI-2数据到后续的链路传输阶段(GMSL传输链路)。
芯片如MAX9295D,内部会定义多个视频Pipe(如X、Y、Z、U):
CSI-2数据输入 → [芯片内部MIPI控制器] → 视频Pipe → GMSL链路发送出去
每个视频Pipe可以独立开启或关闭、独立配置DT、VC过滤设置,以灵活管理从CSI-2到GMSL的数据传输。
2,视频通道的作用:
•允许芯片内部灵活地对不同数据流进行单独处理;
•支持不同数据通道(CSI端口A、端口B)映射到指定的视频Pipe上;
•可以通过Pipe过滤指定的数据类型或虚拟通道。
3,举个例子:
芯片默认的视频Pipe映射方式:
•CSI端口A的数据默认发送到 Pipe X;
•CSI端口B的数据默认发送到 Pipe Z。
比如你接入了两个摄像头:
CSI端口A → 摄像头1(RAW数据)
CSI端口B → 摄像头2(YUV数据)
则默认数据流动为:
摄像头1 (CSI端口A) → Pipe X
摄像头2 (CSI端口B) → Pipe Z
Pipe 可以单独启用或禁用,可以对输入的数据流进行过滤,例如只传送RAW格式的数据,YUV数据则屏蔽掉。
三、Stream ID
1,什么是Stream ID?
Stream ID(流标识符)是视频数据在从加串器(Serializer)传输到解串器(Deserializer)的链路上传输时所附带的标识。
Serializer 将数据发送给 Deserializer 时,每个 Pipe 的数据都需赋予一个独特的Stream ID,Deserializer 根据这个ID确定数据的去向,避免混乱。
视频数据在Serializer → GMSL链路 → Deserializer:
视频Pipe X的数据 → Stream ID=0
视频Pipe Z的数据 → Stream ID=2
Deserializer接收数据后:
Stream ID=0的数据 → 映射到解串器输出端口0
Stream ID=2的数据 → 映射到解串器输出端口2
2, Stream ID的作用:
•用于区分和路由多个视频流在链路传输中的数据;
•尤其适用于“多个加串器对应单个解串器”这种复杂的网络拓扑结构,防止数据混乱。
3, 举个例子:
当你有多个Serializer发送数据给单个Deserializer时:
Serializer序号 |
视频Pipe |
Stream ID |
---|---|---|
Serializer A |
Pipe X |
0 |
Serializer A |
Pipe Z |
1 |
Serializer B |
Pipe X |
2 |
Serializer B |
Pipe Z |
3 |
Deserializer收到数据后,根据Stream ID明确区分数据源:
•Stream ID=0 → Serializer A 的 Pipe X
•Stream ID=1 → Serializer A 的 Pipe Z
•Stream ID=2 → Serializer B 的 Pipe X
•Stream ID=3 → Serializer B 的 Pipe Z
这样数据即使在链路上传输合并,也能被正确识别和区分。
四、三者之间的关系总结:
[SENSOR] → CSI‑2 -----→ [MAX9295]
lane: 0 1 2 3
VC = N (相同)
pipe mapping:
lane0 -> pipe X
lane1 -> pipe Y
lane2 -> pipe Z
lane3 -> pipe U
加串器MAX9295配置:
- 每个pipe设置允许VC N(VC_SELZ)
- 为pipe X/Y/Z/U分别分配Stream ID 0/1/2/3(TX_STR_SEL)
GMSL2 发送:
- packets + Stream IDs ->对应pipe数据传输到MAX9296
MAX9296 解串:
- 根据 Stream ID 恢复 pipe 顺序
- 拆分为四条 CSI 输出或合并送往 CSI‑2 接口
- 包内 VC 字段同样保留,用于上层 demux
项目 | 定义 | 作用 |
---|---|---|
Virtual Channel | MIPI CSI‑2 报头标签,标识 pixel stream | 区分多路流,可用于 multiplexing |
Video Pipe | MAX9295 内部数据 lane 对应处理单元(X, Y, Z, U) | 并行处理每条 lane,承载 VC 数据 |
Stream ID | GMSL2 链路中的 pipe 标识,值 0–3 | 解串时路由回正确 pipe 避免冲突 、 |