LVDS接口从原理到调试:时序换算、VESA/JEIDA映射与花屏实战

发布时间:2026/9/29 1:05:06
LVDS接口从原理到调试:时序换算、VESA/JEIDA映射与花屏实战
前几天调一块10.4寸的工业LVDS屏又走了一遍熟悉的花屏、偏色、无显示的全套流程。LVDS接口的时序问题确实容易绕晕明明上一块屏这么配能亮换个型号怎么就乱了这篇想把LVDS接口这套东西彻底讲透——从底层原理开始说明白LVDS是怎么把RGB并行数据串行丢到差分线上像素时钟、LVDS时钟、串行码率怎么换算VESA/JEIDA映射、极性、blanking参数分别影响什么。内容结合我在FPGA和SoC平台上点亮LVDS屏的实际案例适合刚接触LVDS屏的驱动开发、硬件工程师以及拿MIPI经验硬套LVDS结果越调越乱的同行。1. 先搞清楚LVDS在物理层做了什么事从并行RGB到串行差分1.1 为什么显示链路非要改成串行差分不可早期显示屏用的并行RGB接口一根根信号线多到吓人。RGB888就是24根数据线加上像素时钟、HSYNC、VSYNC、DE轻松超过30根线。在PCB上布局非常痛苦尤其是信号频率到了65MHz、85MHz之后并行走线之间的串扰很难压下去EMI测试也不容易过。还有个更现实的问题并行总线做不了长距离传输主控和屏只要相隔十几厘米信号质量就开始恶化这在工控设备、医疗设备里是硬伤。LVDS的解决思路很直接在发送端把并行的像素数据串行化再用差分对传出去。接收端解串还原成并行RGB。这样一来24位色深的屏幕只需要4对数据线和1对时钟线总共10根线按差分算PCB面积、连接器pin数、EMI都大幅度下降。而且差分信号天生抗共模干扰共模噪声在接收端通过减法被抵消所以线材长一点也问题不大。这里要理解一个关键点LVDS不是一种协议它本质上是一种物理层传输技术。它不负责定义数据内容怎么组织只负责把0和1可靠地搬过去。数据怎么摆到串行位里由显示接口的映射规则决定也就是后面要讲的VESA和JEIDA格式。1.2 7:1串行化一条差分通道里藏着7个bitLVDS最核心的时序概念是7:1串行化。以8bit面板、单通道Single Link为例每个像素时钟周期内要完成一个像素所有信息的传输RGB888是24bit数据加上DE、HSYNC、VSYNC这3个控制信号一共27bit。但LVDS单通道物理上有4对数据线每对数据线在每个时钟周期里串行发7个bit那么4对线一共能发28bit。27bit刚好塞进28bit的帧里还剩1个bit位有的屏厂留空有的用来传额外的状态信号我们一般不用管它。为什么是7而不是8这和LVDS早期的芯片设计有关。当时3.5mA的恒流源驱动、低摆幅差分信号在几十MHz到一百多MHz的时钟下每个bit的串行速率能做到像素时钟的7倍。比如像素时钟65MHz每对差分线上的实际比特率就是455Mbps这个速率在当时的CMOS工艺下容易实现EMI控制也比较好。7:1这个比例一直沿用至今成为LVDS接口的事实标准。对应到6bit面板RGB18bit加上DE、HSYNC、VSYNC正好21bit所以只需要3对数据线加1对时钟线。这一点在实际调试中特别容易踩坑6bit屏只接了3对数据线主控却按4对线配置输出结果必花屏。1.3 电流环、100Ω终端和共模电压LVDS的物理层是电流驱动。发送端是一个约3.5mA的恒流源接收端在差分对之间并联一个100Ω电阻。电流流经电阻后产生约350mV的差分电压这就是接收端能检测到的信号。差分线对地看共模电压约为1.2V因此单端测量时每根线是在1.2V左右上下摆动约175mV。这个设计有两个直接后果。第一终端电阻必须尽量靠近接收端否则反射会在数据眼图上砸出很大的振铃。第二LVDS对阻抗匹配的要求比TTL严格差分阻抗要控制在100Ω加减10%以内也就是90到110ΩPCB走线的时候要按差分阻抗计算宽度和间距。实际调试中如果终端电阻值不对或者干脆没接示波器上看到的信号幅度会变大甚至出现反射波形但屏幕不一定完全不亮而是会随机花屏、闪线这种问题查起来最麻烦。我的习惯是拿到一块屏就先把规格书里的终端电阻要求看明白再去排查其他时序参数。2. 时序心法像素时钟、LVDS时钟和串行码率的换算关系2.1 从分辨率和刷新率反推像素时钟LVDS的时序起点是像素时钟也就是PCLK。PCLK不是简单等于分辨率乘刷新率必须把blanking区域算进去。标准公式PCLK H_Total × V_Total × Frame_Rate其中H_Total是行总长度等于行有效像素加HFP行前肩、HBP行后肩、HSYNC脉冲宽度V_Total类似等于列有效像素加VFP、VBP、VSYNC脉冲宽度。以最常见的1024×76860Hz为例标准参数是H_Active1024HFP24HBP160HSYNC136H_Total1344V_Active768VFP3VBP29VSYNC6V_Total806。那么PCLK 1344 × 806 × 60 ≈ 65.0MHz。很多人在主控配时序时只填了hactive和vactive没有把blanking填对结果屏幕虽然能亮但画面偏移、闪烁或者刷新率实际不是60Hz。LVDS屏的时序参数其实和VGA时代一脉相承blanking的作用很大不要觉得它是可有可无的空白区域。不同分辨率下的典型参考值分辨率刷新率典型PCLK单通道每lane串行速率单通道是否够用1024×76860Hz65MHz455Mbps够用1280×80060Hz约71MHz约497Mbps够用1366×76860Hz约75MHz约525Mbps够用1280×102460Hz约108MHz约756Mbps够用但余量开始吃紧1920×108060Hz148.5MHz约1.04Gbps通常需要双通道或改用其他接口注意不同屏厂的blanking参数不完全相同以上是典型值最终必须以你手上那块屏规格书里的H_Total和V_Total为准。2.2 LVDS时钟和像素时钟是1:1关系LVDS链路里有一对独立的差分时钟这对时钟的频率在绝大多数情况下就等于像素时钟PCLK。也就是说PCLK148.5MHzLVDS时钟就是148.5MHzPCLK65MHzLVDS时钟就是65MHz。有些平台上的LVDS时钟可以配置为上升沿采样或下降沿采样但频率不会变。串行数据速率则等于PCLK乘以7。单通道4对数据线每对线的速率都是7×PCLK。例如PCLK65MHz时每对数据线跑455Mbps4对线加起来的总串行比特率是1.82Gbps。这个比特率里包含24bit有效RGB数据和4bit控制/保留位有效视频带宽是PCLK×241.56Gbps。理解这个关系对排查问题很重要。如果PCLK配错串行速率也会一起错接收端的CDR时钟数据恢复一旦无法锁定屏幕要么不出图要么出现灾难性的花屏。2.3 单通道、双通道和带宽余量LVDS面板分为单通道和双通道两类。单通道就是前面说的4对数据线加1对时钟适合PCLK不高的场合。当PCLK超过一定门限常见老款LVDS Transmitter规格上限在112MHz到135MHz之间单通道的每lane速率会逼近甚至超过芯片的I/O能力这时就要用双通道。双通道LVDS面板有8对数据线和2对时钟线每个通道各4条数据1条时钟。双通道的数据组织方式不同厂家有差异有的把奇数像素分给通道0、偶数像素分给通道1有的采取上半个屏/下半个屏的划分。实际使用中我们不需要在驱动层知道那么细面板接收芯片会自己处理驱动要做的就是把输出配成Dual Link模式并把通道极性、时钟极性都按规格书设置好。我的经验是即使PCLK不高如果主板到屏之间的距离比较远或者线材质量一般宁可选择支持双通道的屏或者用转接方案给时序余量留足。LVDS这东西一旦跑到接近极限速率走线长度稍有偏差就会眼睛图闭合出现各种间歇性花屏。3. VESA和JEIDA两种数据映射选错就是花屏偏色3.1 两套映射是怎么来的LVDS只解决了物理传输问题但没有规定RGB数据具体放在哪对差分线的哪个bit位。早期各家面板厂各自定义后来慢慢收敛成两大主流VESA格式和JEIDA格式。这两套格式在27bit有效信息里把RGB的bit位重新分配了一遍对面板厂来说只是Flash里配置不同对主控来说则是输出配置里一个非常关键的选项。VESA格式通常也被称为Format 1JEIDA格式被称为Format 2。很多LVDS Transmitter芯片比如THC63LVDM83R、DS90CF383同时支持两种格式通过引脚或寄存器切换。面板端也同样支持但出厂默认是哪一种必须看规格书。如果主控输出VESA格式面板接收配置成JEIDA那么每个像素的RGB位序全乱了表现出来的现象一般是花屏里带着严重偏色而不是简单的颜色不对。因为bit错位会导致色彩通道互相串看起来像打翻颜料盘。3.2 8bit VESA和JEIDA映射参考表下面给出一份典型的8bit单通道映射参考。注意不同规格书里Lane编号可能叫TX0/TX1/TX2/TX3也可能叫RX0/RX1/RX2/RX3本质是一样的。VESA格式8bit4 LaneLane编号Bit0Bit1Bit2Bit3Bit4Bit5Bit6Lane0R0R1R2R3R4R5G0Lane1B0B1B2B3B4B5G1Lane2G2G3G4G5B6B7DELane3VSYNCHSYNCG6G7R6R7保留JEIDA格式8bit4 LaneLane编号Bit0Bit1Bit2Bit3Bit4Bit5Bit6Lane0R2R3R4R5R6R7G2Lane1B2B3B4B5B6B7G3Lane2G4G5G6G7B0B1DELane3VSYNCHSYNCG0G1R0R1保留两套格式最大的差别在于RGB低位和高位的摆放。VESA格式把R0-R5放在Lane0R6-R7放在Lane3JEIDA则把R2-R7放在Lane0R0-R1放在Lane3。这也解释了为什么选错后画面不仅偏色还会出现类似彩色噪点的花屏效果。6bit面板的映射类似只是只有3对数据线总bit数为21bit恰好放下18bit RGB和DE、HS、VS三个控制信号。6bit也是VESA/JEIDA两套选型逻辑和8bit一致具体以面板规格书映射表为准。3.3 怎么确认面板和主控的格式配置拿到一块屏第一件事是去屏规格书里搜VESA或JEIDA关键字。很多屏会把Data Mapping图画得很清楚。如果没有明确标注可以查屏的型号后缀或者联系屏厂FAE这是最稳妥的方式。主控端设置VESA还是JEIDA在Linux平台通常是设备树里的一个属性比如rockchip,lvds-format或panel,lvds-format值为VESA或JEIDA。在FPGA平台则是配置寄存器或参数。实际测试中可以准备一张纯红色或纯绿色的测试图片快速切换VESA/JEIDA看颜色是否恢复正常。这个方法比看花屏位置猜效率高很多。4. 点亮之前屏规格书怎么读、主控参数怎么写4.1 规格书里的关键时序参数清单很多新手拿到一份LVDS屏规格书头都是大的。其实需要关注的参数就那么几个按优先级排列分辨率比如1024×768决定hactive和vactive。blanking参数HFP/HBP/HSYNC、VFP/VBP/VSYNC决定PCLK和画面位置。PCLK规格书会给出典型值、最小最大值配置时最好用典型值。通道数Single Link还是Dual Link决定主控开几对数据线。色深6bit还是8bit决定数据线对数是3对还是4对。LVDS格式VESA还是JEIDA。时钟极性上升沿采样还是下降沿采样对应规格书里Pixel Clock Polarity或LVDS Clock Polarity。DE极性DE是高有效还是低有效几乎所有LVDS屏都是高有效。上电时序VCC、逻辑信号、背光的先后关系和延时。这些参数里PCLK、通道数、色深、格式、极性任何一个错了都可能导致点不亮。建议做一个Excel清单每调一块屏就从头到尾核一遍不要跳着看。4.2 SoC平台设备树配置示例拿RK平台举例假设是一块1024×768、8bit、VESA格式、单通道LVDS屏设备树的核心配置大概是这样的lvds_ttl { status okay; panel: panel-lvds { compatible simple-panel; backlight backlight; power-supply vcc_lcd; enable-gpios gpio0 RK_PB0 GPIO_ACTIVE_HIGH; rockchip,lvds-format vesa-24; >