3、M-PHY 协议层基础:数据包结构、8b/10b编码、符号映射、速率等级(Gear1-Gear4)
各位工程师朋友,大家好。今天我们聊聊M-PHY的协议层基础。
说实话,很多做硬件的兄弟一听到「协议层」就头大,觉得那是软件工程师的事。我以前也这么想,直到有一次调试MIPI接口,示波器抓出来的波形怎么看怎么对,但设备就是不通。折腾了两天,最后发现是数据包里的符号映射搞错了。嗯,从那以后,我再也不敢跳过协议层了。
3.1 数据包结构:M-PHY怎么「说话」
M-PHY的数据传输,说白了就是发「包」。每个包就像一封信,有信封、有正文、有落款。
一个典型的数据包长这样:
| 前导码 | 帧头 | 数据载荷 | CRC校验 | 帧尾 |
- 前导码:告诉接收端「我要发数据了,准备好」。我习惯把它理解成敲门声。
- 帧头:包含包的类型、长度、目标地址等信息。相当于信封上的收件人信息。
- 数据载荷:真正要传的数据,长度可变。
- CRC校验:循环冗余校验,用来检查数据在传输过程中有没有出错。
- 帧尾:表示包结束。
重要提醒:M-PHY的包结构是分层的。物理层只管发比特流,协议层才负责解析这些包。你画PCB时不用管包结构,但做信号完整性分析时,必须知道哪些是关键的跳变沿。
我在项目中遇到过一种情况:某款SoC的MIPI接口在高速模式下偶尔丢包。查了半天,发现是前导码的时序没满足要求。接收端还没准备好,数据就来了,自然就丢了。所以,前导码的长度和时序,一定要严格按照规格书来。
3.2 8b/10b编码:为什么多花25%的带宽?
8b/10b编码,就是把8位数据变成10位来传输。你可能会问:这不是浪费带宽吗?
没错,带宽利用率只有80%。但为什么还要用?
原因有三:
- 直流平衡:8b/10b编码保证发送的0和1数量大致相等。这样信号的平均电平是稳定的,不会出现直流偏移。我在做高速差分线设计时,最怕的就是直流偏移,它会直接导致眼图闭合。
- 时钟恢复:编码后的数据有足够的跳变沿,接收端可以从中恢复出时钟信号。你想想看,如果连续发一串0,接收端怎么知道什么时候该采样?
- 错误检测:某些非法码字可以用来检测传输错误。
个人经验:8b/10b编码后的数据,频谱能量更均匀。这对EMI设计有好处。我曾经在一个项目中,用了8b/10b编码后,辐射发射直接降了3dB。当然,代价是有效数据速率降低了20%。
3.3 符号映射:比特流里的「摩斯密码」
8b/10b编码后的数据,还要映射成物理层能识别的「符号」。M-PHY使用多种符号:
| 符号类型 | 用途 | 编码示例 |
|---|---|---|
| 数据符号 (D) | 传输普通数据 | D.x.y |
| 控制符号 (K) | 帧定界、同步 | K28.5, K28.1 |
| 空闲符号 | 无数据传输时保持链路活跃 | 连续D0.0 |
这里有个坑,我踩过:K28.5符号是同步用的,它的编码是特殊的。如果你在PCB走线时,让K28.5符号的跳变沿受到了严重衰减,接收端就找不到同步头了。整个链路就会失锁。
说白了,符号映射就是把数字世界的「0和1」翻译成物理世界的「高和低」。翻译规则错了,或者翻译过程中信号失真了,通信就会失败。
3.4 速率等级:Gear1到Gear4
M-PHY定义了多个速率等级,从低速到高速:
| 速率等级 | 数据速率 (Gbps/lane) | 典型应用 |
|---|---|---|
| Gear1 | 1.248 | 低速控制、初始化 |
| Gear2 | 2.496 | 摄像头、显示屏 |
| Gear3 | 4.992 | 高分辨率显示 |
| Gear4 | 9.984 | 超高清、多摄像头 |
每个Gear的速率是前一个的两倍。为什么?因为M-PHY使用倍频技术,通过调整PLL的倍频因子来实现。
注意:Gear越高,对PCB走线的要求越苛刻。Gear4的速率接近10Gbps,差分阻抗控制、串扰抑制、过孔优化,一个都不能少。我曾经见过一个项目,Gear1和Gear2都跑得好好的,一上Gear3就报错。最后发现是走线长度不匹配,差了5mil都不行。
我个人习惯,在设计初期就按最高Gear来约束走线。这样即使后期降速使用,也有足够的裕量。你想想看,如果按Gear1设计,后期想升级到Gear3,那PCB基本要重做。
3.5 知识体系总览
下面这张图,是我自己总结的M-PHY协议层知识体系。你可以把它当成一张地图,随时回来看看。
这张图把四个核心模块串起来了。数据包结构是「骨架」,8b/10b编码是「血液」,符号映射是「语言」,速率等级是「速度」。四者缺一不可。
我的建议:做M-PHY设计时,先把协议层搞清楚,再动手画PCB。否则,你画出来的差分线再漂亮,协议层不匹配,也是白搭。我曾经见过一个团队,花了两周优化走线,结果发现是协议层的符号映射配错了。嗯,这种冤枉路,咱们不走。