4. Packet Loss 定义与关键性能指标归纳总结
说到 Packet Loss,很多工程师第一反应是“就是丢包嘛”。但你在 D-PHY 链路里真的碰到过吗?我早期有个项目,MIPI CSI-2 摄像头图像偶尔出现条纹,查了两天才发现是 LP→HS 切换时的 Packet Loss 在作怪。所以,先把这个定义搞清楚。
在 D-PHY 协议里,Packet Loss 指发送端发出的数据包没有被接收端正确、完整地还原。丢失的不是整个包,可能是单个字节、多个比特,甚至整个包体从物理层消失。为什么?因为 D-PHY 是同步源同步链路,时钟通道和数据通道存在偏移,一旦采样窗口偏移,某些 bit 就掉进“黑洞”。
4.1 Packet Loss 的两种常见类型
我习惯把 D-PHY 的丢包分成两类,方便定位。
- 高速数据包(HS Data Packet)丢失:主要发生在高速收发器切换、时钟数据恢复锁定失败、或者数据眼图余量不足时。我曾见过一块 FPC 排线过长,导致 HS 传输的 1.5Gbps 数据在接收端只能正确恢复 70%。
- 低功耗命令(LP Command)丢失:Escape Mode 下的 Turnaround 或 Ultra-Low-Power 状态切换如果时序违规,接收端根本检测不到 START,整个命令包就没了。这种丢失隐蔽,因为 CRC 可能都没机会校验。
你想想看,两种丢失的根源不同:HS 丢包往往是信号完整性问题,LP 丢包基本是协议时序违规。所以诊断前先分清楚类型。
4.2 关键性能指标(KPI)归纳
干活不能凭感觉,得量化。我总结了 6 个最关键的 D-PHY 丢包相关指标,每次测完这些基本能定位 90% 的问题。
| 指标 | 全称 | 定义 | 典型门限(MIPI 推荐) | 我的经验值 |
|---|---|---|---|---|
| BER | Bit Error Rate | 错误比特数 / 总传输比特数 | < 10⁻¹² | 10⁻¹¹ 以上图像就有噪点 |
| PLR | Packet Loss Rate | 丢失包数 / 总发送包数 | < 10⁻⁶ | 显示器上 10⁻⁵ 开始闪烁 |
| CRC_ERR | CRC Error Count | CRC 校验失败的包数(连续统计) | 0 / 每 10⁶ 包 | 一次 CRC 错误往往代表丢了一个数据包 |
| EEM | Escape Error Monitor | Escape 模式中 START 或 SYNC 序列错误次数 | 0 | 出现 3 次以上立即检查 LP 时序 |
| HS_SKEW | HS Skew Margin | 数据通道相对于时钟通道的时延差 | < 0.15 UI | 我通常要求 < 0.1 UI 才放心 |
| HS_AMPL | HS Swing Amplitude | 高速差分信号摆幅 | 200~300 mV pp | 低于 150 mV 必定丢包 |
4.3 指标之间的关联与优先级
这些指标不是孤立的。我把它们画成一张关系图,方便你快速定位突破口。
4.4 如何快速设定指标阈值?
MIPI 规范给出了一堆推荐值,但实际项目里你得根据自身链路余量微调。我记得有一次项目,FPGA 端接收 BER 一直维持在 10⁻¹⁰ 左右,MIPI 规范说没问题,但图像就是有零星坏点。后来我把 PLR 要求收紧到 10⁻⁷,同时增加了 CRC 重传机制,问题就解决了。说白了,规范是下限,工程上要留余量。
4.5 小结与我的推荐清单
做 D-PHY 丢包分析,没那么多花哨的技巧。你先把下面这 5 个指标吃透,就能覆盖 90% 的场景:
- PLR(Packet Loss Rate) – 第一眼看的指标
- CRC_ERR(CRC Error Count) – 确认丢失的“铁证”
- BER(Bit Error Rate) – 评估物理层质量
- HS_SKEW(HS Skew Margin) – 定位时序瓶颈
- EEM(Escape Error Monitor) – 守好 LP 命令的底线
另外,加一条个人习惯:每次改板或换料后,别急着做全功能测试,先跑一遍 D-PHY 电气参数扫描(像摆幅、共模电压、上升下降时间),把这些指标和丢包指标关联起来记录在案。这样出问题时你才有历史数据可对比。