LVDS 协议基础:传输模式、数据格式、时钟方式

当年我第一次调试 LVDS 显示链路,上来就被搞得一头雾水。明明是差分信号,怎么还分这么多模式?我当时拿着示波器看波形,好家伙——信号有,屏幕就是不亮。后来才发现,我把数据映射搞反了。所以这一章我想把我的教训和心得掰开揉碎了说给你听。

传输模式:三种主流玩法

LVDS 在显示链路里主要有三种传输模式。说白了,就是数据怎么打包、怎么扔到线上。你想想看,每个模式对应的是不同分辨率、不同色深的需求。

  • JEIDA 模式:这是日本电子工业协会的标准。把 RGB 数据按 18-bit 或 24-bit 映射到 4 对差分数据线上。我个人习惯叫它「日规」。
  • VESA 模式:视频电子标准协会出的。映射方式跟 JEIDA 略有不同,主要是低位和高位的分配差异。大家都叫它「美规」。
  • SPWG 模式:这是笔记本屏幕上的老标准。现在已经不太常见了,但老项目里还能遇到。
模式 典型应用 色深支持 数据通道数
JEIDA 消费电子、工业屏 18-bit / 24-bit 4 对
VESA 显示器、笔记本 18-bit / 24-bit 4 对
SPWG 老式笔记本 18-bit 为主 3 对

嗯,这里要注意:JEIDA 和 VESA 虽然在 24-bit 模式下把相同的数据放到相同的数据通道上,但每个字节内的位顺序是反的。搞错了,屏幕颜色就会「乱套」。我上次修一块板,客户说颜色偏紫,我查了半天,最后发现是发卡把 VESA 映射写成了 JEIDA —— 就差了那么几个 bit 的交换。

数据格式:一条线里塞了啥

每对 LVDS 数据线在时钟周期内串行传输 7 位数据。为什么是 7?因为 7 个串行位刚好凑够一个时钟周期的 7x 倍频。你看,时钟是 7 倍于数据率的——这个后面再说。

4 对数据线在 7 个 bit 时间内总共送出 28 位数据。其中 24 位是 RGB 像素数据,剩下 4 位是控制信号(HSYNC、VSYNC、DE、保留位)。具体分配方案,JEIDA 和 VESA 各自有张映射表。

数据通道位分配(以 24-bit VESA 为例)

通道 LVDS 线序 发送数据(7 bit)
CH0 LV0+ / LV0- R0, R1, R2, R3, R4, R5, G0
CH1 LV1+ / LV1- G1, G2, G3, G4, G5, B0, B1
CH2 LV2+ / LV2- B2, B3, B4, B5, HS, VS, DE
CH3 LV3+ / LV3- R6, R7, G6, G7, B6, B7, RSV

你可以看到,每个通道的最后一个 bit 往往是下一个颜色分量的最低位,这样串起来能减少线间串扰——这是铁了心为高速信号考虑的。

我曾经遇到过一块屏,手册上写的是「兼容 VESA 和 JEIDA」,实际上它只认 JEIDA。我用 spi 读屏的 EDID,EDID 里也没告诉你映射模式。最后只能拿示波器抓数据线,对照像素颜色推出来的。那会儿真想把屏扔了。

时钟方式:锁相环的节奏

LVDS 用的是差分时钟,一对 CLK+ / CLK-。时钟频率等于像素时钟频率。比如 1024×768@60Hz 的屏,像素时钟约 65 MHz,那么 LVDS 时钟就是 65 MHz,数据率就是 65 × 7 = 455 Mbps 每对线。

为什么用 7 倍?因为每个时钟周期要传输 7 个数据位。时钟上升沿和下降沿都采样的话,你算算——那就是双沿采样,数据速率又翻一倍?不对!LVDS 可没用 DDR,它只在时钟上升沿采样。那 7 个 bits 怎么在一个周期内发完?

这里有个关键:数据串行化发生在发送端。发送端有锁相环(PLL)把像素时钟倍频 7 倍,得到串行时钟。串行时钟以 7 倍速率把每个通道的 7 位并行数据逐一打出去。接收端再用 PLL 恢复出串行时钟,做串转并。

经验之谈:调试时,如果屏幕出现「水波纹」或「闪屏」,先检查 PLL 锁定状态。大多数 LVDS 发送器(如 DS90C387/DS90CF388)都有 PLL 锁定指示脚,拉低就是没锁定。

我建议,首次上电一定要量时钟差分对的峰峰值。LVDS 标准要求 100Ω 终端匹配时差分摆幅在 250~450 mV。低于 200 mV,接收端大概率收不到数据。我有一块板,layout 走线太长,到屏端的摆幅只有 180 mV,屏幕就是间歇性黑屏。后来加了一对电阻调匹配才搞定。

重要坑点:LVDS 时钟极性不能搞反。如果发送端输出的是正相时钟(CLK+),接收端却接成反相,数据采样就全错位了。结果就是——屏幕有显示但全是雪花点。我曾经调了一整天,最后发现是排线焊接时把 CLK+ 和 CLK- 焊反了。换个接头就好了。

知识结构总览

下面这张图把传输模式、数据格式、时钟方式的关系串起来了。你读完这一章,再回头看这张图,整个 LVDS 数据流动的脉络就清楚了。

LVDS协议基础知识结构图 LVDS协议基础知识结构 传输模式 JEIDA / VESA / SPWG 数据格式 28位每时钟 / RGB+控制 时钟方式 差分时钟 / 7x倍频 时钟7倍频驱动串行发送 JEIDA 日规 VESA 美规 SPWG 老式笔记本 24-bit RGB R0~R7 G0~G7 B0~B7 控制信号 HS / VS / DE / RSV 差分时钟对 CLK+ / CLK- PLL 倍频 7x 像素时钟 调试要点 先确认时钟摆幅 > 250mV → 再检查 PLL 锁定 → 最后核对数据映射

映射对照表(以 24-bit 为例)

很多屏手册会给你一张 JEIDA 和 VESA 的差异表。我自己干活时会把这张表贴在调试台旁。你看,差别就在 R0~R5、G0~G5、B0~B5 的分布。

数据通道 VESA (24-bit) JEIDA (24-bit)
CH0 (bit0~bit6) R0~R5, G0 R4, R5, R6, R7, G4, G5, B0
CH1 (bit0~bit6) G1~G5, B0~B1 B4, B5, B6, B7, R2, R3, R0
CH2 (bit0~bit6) B2~B5, HS, VS, DE G2, G3, G0, G1, HS, VS, DE
CH3 (bit0~bit6) R6, R7, G6, G7, B6, B7, RSV B1, B2, B3, B4, B5, B6, B7

你看,光 CH0 就不一样。VESA 里 CH0 的前 6 位是 R0~R5,而 JEIDA 里前 6 位是 R4、R5、R6、R7。如果你用错映射,红色分量全乱。我当时就是这个坑,屏幕显示正常但颜色不对,后来拿图卡对比才发现是映射错误。

避坑指南

  • 终端电阻匹配:LVDS 接收端必须在每对差分线上跨接 100Ω 电阻。我见过有人用 120Ω,偏了 20%,信号反射导致眼图闭合。
  • 共模电压范围:LVDS 接收器要求差分对共模电压在 1.125V ~ 1.375V。如果发送端输出共模不对,可以用电阻分压,但最好还是查器件数据手册。
  • 不要混用模式:发端用 JEIDA,收端用 VESA,图像会错乱。两端的映射模式必须一致,或者通过 FPGA/Scaler 做转换。
  • 时钟抖动的容忍:LVDS 时钟的峰峰值抖动建议控制在 < 0.3 UI(单位间隔)。如果抖动太大,收端 PLL 会失锁,屏幕闪。我曾经用示波器直接测时钟线,发现电源纹波耦合到时钟线上,加了 LC 滤波就好了。

我的调试顺序:上电后先测时钟差分摆幅 → 看 PLL 锁定信号 → 用示波器抓 CH0 波形,看看帧头 DE 信号是否正常 → 最后对照映射表验证颜色。按这个顺序走,95% 的问题半小时内能定位。

好了,这一块先讲到这。LVDS 基础搞懂,后面调 MIPI、eDP 也会顺手很多。核心就三件事:模式要对、映射要准、时钟要稳。你记牢这三个宗旨,翻车概率至少降一半。