篇4:显示世界的"多国语言"------主流LCD接口全解析
你拿到一块新屏幕,规格书上写着"支持RGB接口"或"MIPI DSI"。你打开FPGA工程,却不知道该怎么把像素数据送过去。
接口就像显示世界的语言------屏幕只懂某一种方言,你说错了,它就"沉默"或"乱码"。这一篇,我们把主流的LCD接口挨个解剖,从最古老的MCU接口到高速串行MIPI,看完你就能根据项目需求快速选型,也能理解为什么高分辨率必须用LVDS或MIPI。
一、接口分层:从CPU到像素的"翻译官"
在深入具体接口之前,先建立分层认知。从应用处理器(AP)或FPGA到LCD屏幕,数据要经过三层"翻译":
| 层级 | 作用 | 典型实现 |
|---|---|---|
| 应用层 | 生成图像数据(RGB值) | 帧缓冲、GPU渲染 |
| 传输层 | 把数据从主机送到屏端 | 并行总线、串行差分对 |
| 物理层 | 电气信号定义 | TTL电平、LVDS、CML |
不同接口的差异主要在传输层和物理层。而屏幕内部的时序控制器(TCON)会把这些统一转换成屏内信号(miniLVDS或RSDS)去驱动源极IC。
一个核心概念 :无论接口多复杂,最终送到源极驱动的是 一行像素的模拟电压 。接口只负责把数字RGB数据"搬运"到屏上,并附上同步信息(什么时候开始一行、什么时候开始一帧)。
二、MCU接口:小尺寸的"慢生活"
2.1 起源与典型应用
MCU接口诞生于单片机时代,也叫 MPU接口 。最著名的是Intel 8080总线 和 Motorola 6800总线 (后者现已少见)。常见于低分辨率、小尺寸屏幕(如128×64、320×240),以及需要局部刷新的场景(电子纸、段式屏)。
2.2 信号与时序
以8080接口为例,典型信号线:
- D[7:0]或D[15:0] :8位或16位数据总线
- WR(写使能) :高电平有效(或上升沿),表示写入数据
- RD(读使能) :一般用于读取GRAM状态,写操作时固定为高
- RS(寄存器选择) :0表示命令,1表示数据
- CS(片选) :低电平有效
- RESET :硬件复位
时序过程 :
- CPU先通过RS=0 + 数据 = 命令(如设置列地址、页地址)
- 然后RS=1 + 数据 = 实际RGB值
- WR脉冲将数据锁存进屏幕内部的GRAM(显存)
关键特点 :屏幕自带GRAM(Graphic RAM) ,CPU只需把数据写入GRAM,TCON会自动从GRAM读取并刷新屏幕。因此刷新率由TCON内部定时器决定,与写入速度无关。
2.3 优缺点
| 优点 | 缺点 |
|---|---|
| 无需同步信号(HSYNC/VSYNC),时序简单 | 数据带宽低(8位/16位,时钟通常<10MHz) |
| 支持局部刷新,省电 | 分辨率受限(一般≤480×320) |
| 控制器集成度高,MCU可直接驱动 | 需要GRAM,增加了屏幕成本和延迟 |
工程提示 :MCU接口的"写GRAM"速度决定了最大帧率。假设一个320×240、16位色深的屏幕,每帧数据量 = 320×240×2 = 153600字节。如果用8位接口、10MHz写时钟(忽略命令开销),理论最大帧率 = 10MHz / (153600×8) ≈ 8.1帧/秒------实际更低。所以MCU接口不适合视频播放。
三、RGB接口:视频流的"同步舞者"
3.1 从"写显存"到"实时刷屏"
RGB接口(也叫 DPI接口 ,Display Pixel Interface)去掉了屏幕内部的GRAM。像素数据实时地从主机流向屏幕,主机必须保证数据速率与屏幕刷新率完全匹配。
典型应用 :中低分辨率(≤1024×600)、无本地帧缓冲的嵌入式系统,如很多4.3寸、7寸工业屏。
3.2 信号定义
RGB接口通常需要以下信号:
| 信号 | 方向 | 作用 |
|---|---|---|
| PCLK (像素时钟) | 主机→屏 | 每个时钟沿传输一个像素 |
| HSYNC (行同步) | 主机→屏 | 指示一行开始 |
| VSYNC (场同步) | 主机→屏 | 指示一帧开始 |
| DE (数据使能) | 主机→屏 | 高电平时数据有效 |
| R[7:0]、G[7:0]、B[7:0] | 主机→屏 | 并行RGB数据(共24位) |
工程区分 :有的规格书只提供HSYNC、VSYNC,没有DE;有的只提供DE,没有HSYNC/VSYNC。两种模式都符合RGB接口规范。
3.3 两种同步模式
模式一:DE模式(推荐)
DE信号高电平时,PCLK每个上升沿采样一个像素数据。HSYNC和VSYNC可以省略(或仅在消隐期产生脉冲)。
时序参数:
- 一行总像素数 = H_total = 有效像素 + HFP(前沿) + HBP(后沿) + HSYNC宽度
- 一帧总行数 = V_total = 有效行 + VFP + VBP + VSYNC宽度
模式二:HV模式(使用HSYNC/VSYNC)
HSYNC脉冲表示一行结束,其后的HBP期间无有效数据,然后DE变高开始传输有效像素。VSYNC类似。
3.4 时序计算实例
一块800×480的屏,规格书给出:
- H_total = 1056(有效800 + HFP 40 + HBP 216 + HSYNC ? 实际组合不同)
- V_total = 525(有效480 + VFP 10 + VBP 23 + VSYNC 12)
- 目标刷新率 = 60Hz
则 PCLK = 1056 × 525 × 60 ≈ 33.26 MHz。
踩坑预警 :很多国产屏规格书给出的H_total/V_total与实际有效值存在偏差,或者使用"总像素"直接给出。FPGA实现时,必须严格按照规格书的时序表来配置计数器,否则会出现显示偏移或花屏。
3.5 优缺点
| 优点 | 缺点 |
|---|---|
| 无需屏幕GRAM,降低成本 | 需要精确的时钟和同步,对主机要求高 |
| 适合视频流,无额外延迟 | 并行数据线多(24根),PCB布线困难 |
| 成熟稳定,广泛支持 | 高分辨率时PCLK过高(如1080p@60需要~150MHz),信号完整性差 |
四、LVDS接口:高速传输的"差分先锋"
4.1 为什么要用LVDS?
当分辨率提升到800×480以上,并行RGB接口的缺点暴露:
- PCLK频率高(>50MHz),多根数据线同时跳变产生强烈EMI
- 长距离传输时(如电视屏线长50cm),并行信号易串扰
- 功耗高(CMOS电平满摆幅)
LVDS(Low Voltage Differential Signaling) 把并行数据串行化成1~4对差分数据线 + 1对差分时钟线,每对线传输几百Mbps。低压摆幅(350mV)和差分特性使其抗干扰能力强、EMI低。
4.2 映射规则:如何把24位RGB变成4对差分对
典型的LVDS接口(4 data + 1 clock)将每7位并行数据串行化为1位串行数据,称为 7:1串行化 。常见的映射(以TI DS90CF384为例):
- 每个像素时钟周期内,4条数据线同时串行输出7位(共28位)
- 这28位包含:RGB 18/24位数据 + 3位同步信号(HSYNC, VSYNC, DE) + 可选的控制位
标准映射表(24位色,4通道) :
| 通道 | 位分配(每周期7位) |
|---|---|
| CH0 | R0, R1, R2, R3, R4, R5, G0 |
| CH1 | G1, G2, G3, G4, G5, B0, B1 |
| CH2 | B2, B3, B4, B5, DE, VSYNC, HSYNC |
| CH3 | R6, R7, G6, G7, B6, B7, 保留 |
工程解释 :为什么是7:1?因为LVDS的串行化因子可以配置(5:1/7:1/10:1),7:1是平衡了线数和PCLK频率的常用值。PCLK仍然存在,但频率降低为原来的1/7(对24位色,原来并行PCLK若为50MHz,LVDS串行时钟为350MHz,但差分线对数少)。
4.3 电气特性
- 差分摆幅 :250~450mV(典型350mV)
- 共模电压 :1.2V
- 终端电阻 :100Ω(接收端并接)
- 传输距离 :最长可达10米(但LCD屏内通常<30cm)
4.4 在FPGA中如何产生LVDS信号
Xilinx FPGA的OBUFDS原语可以直接输出差分对。例如:
verilog
OBUFDS #(.IOSTANDARD("LVDS_25")) obufds_inst (
.O(LVDS_P), // 正极输出
.OB(LVDS_N), // 负极输出
.I(serial_data) // 串行数据(来自OSERDES)
);
但完整的LVDS发送器需要 OSERDES (并行转串行) + PLL (生成高速时钟)。这部分将在系列第11篇详细展开。
五、MIPI DSI:移动设备的"绝对主流"
5.1 为什么手机屏几乎都用MIPI DSI?
MIPI DSI(Display Serial Interface)是专为移动设备设计的高速串行接口。相比LVDS,它支持:
- 更低功耗 (1.2V I/O,D-PHY的LP模式可低至0.1mW)
- 双向通信 (可读屏的状态、触控数据)
- 命令模式 (类似MCU接口,支持局部刷新)
- 更高带宽 (每通道最高2.5Gbps,4通道可达10Gbps,支持4K@120)
5.2 物理层:D-PHY的两套"语言"
D-PHY定义了两种工作模式:
| 模式 | 信号 | 电压摆幅 | 用途 |
|---|---|---|---|
| HS(高速) | 差分(LP-N, LP-P切换为HS) | 200mV | 传输图像数据(几百Mbps到数Gbps) |
| LP(低功耗) | 单端(每根线对地) | 0~1.2V | 传输命令、时序控制、进入/退出HS |
工程有趣点 :D-PHY的同一对物理线既可以工作为差分(HS模式),也可以工作为两个独立单端(LP模式)。进入HS前需要"线态转换"(LP-11→LP-01→LP-00→HS)。
5.3 协议层:包结构
MIPI DSI将所有数据封装为包(Packet) :
- 短包 (4字节):用于命令、同步信号(如帧开始、行开始)
- 长包 (6~65541字节):用于传输实际的像素数据
典型的一帧传输过程:
- LP模式发送 帧开始(SoT) 短包
- 每一行:发送 行开始短包 → 一行像素长包 → 行结束短包
- 帧结束后发送 帧结束(EoT) 包
5.4 命令模式 vs 视频模式
| 模式 | 特点 | 适用 |
|---|---|---|
| 命令模式 | 屏幕有GRAM,主机写入局部区域,屏幕自刷新 | 低功耗、静态画面(智能手表、电子书) |
| 视频模式 | 实时流式传输,屏幕无GRAM,必须连续刷新 | 视频播放、游戏(手机主屏) |
工程提示 :FPGA实现MIPI DSI发送器相当复杂(需要处理D-PHY的电气层、协议层、CRC校验、ECC等)。一般建议使用现成的MIPI DSI IP核或专用桥接芯片(如TI SN65DSI83)。如果你非要自己用FPGA实现,至少需要GT(Gigabit Transceiver)或HP I/O配合外部端接。
六、miniLVDS:屏幕内部的"秘密语言"
6.1 位置与作用
miniLVDS不是主机到屏幕的接口,而是屏幕内部TCON到源极驱动IC的接口。它负责把TCON解析好的RGB数据和时序控制信号,以极高速传输给分布在面板边缘的源极IC。
特点 :
- 电压摆幅更低(约200mV),功耗更小
- 串行化因子更高(如10:1),减少玻璃上的走线数量
- 频率可达1GHz以上
6.2 与标准LVDS的区别
| 特性 | 标准LVDS | miniLVDS |
|---|---|---|
| 应用位置 | 主板→屏 | 屏内TCON→源极IC |
| 电压摆幅 | 350mV | 200~300mV |
| 终端电阻 | 100Ω | 50~100Ω(通常集成在IC内) |
| 串行化因子 | 7:1(常见) | 10:1、14:1 |
| 通道数 | 4~8对 | 6~32对(取决于分辨率) |
工程深度 :miniLVDS的FPGA实现是本系列的 核心亮点 (篇12)。你需要用ISERDESE2接收解串,并处理bitslip对齐。这里先埋个伏笔。
七、接口选择决策树(工程师实用工具)
当你在项目中选择LCD接口时,按以下流程快速决策:
text
是否需要低功耗/局部刷新?
├─ 是 → 屏幕带GRAM吗?
│ ├─ 是 → MCU接口(小尺寸)或 MIPI DSI命令模式(大尺寸)
│ └─ 否 → 需要自行加帧缓冲,用RGB或LVDS
└─ 否 → 分辨率多高?
├─ ≤ 800×480 → RGB接口(最简单)
├─ 480×272 ~ 1366×768 → LVDS(抗干扰好)
├─ ≥ 720p且移动设备 → MIPI DSI
└─ ≥ 1080p且工业/车载 → LVDS或MIPI DSI(取决于主控)
额外考虑 :
- PCB空间 :RGB接口线多,占用面积大;LVDS/MIPI线少
- 信号完整性 :高频下差分优于并行
- 主控支持 :FPGA可以模拟任何接口,但成本不同(LVDS需要高速IO)
八、☕ 工程师私房话
规格书上的"兼容模式"陷阱
很多屏幕宣称"支持RGB和MCU接口",但实际上是 复用引脚 。比如通过一个引脚的高低电平选择模式。你按照RGB时序送数据,屏幕没反应------检查一下IM0/IM1配置电阻是否焊对了。
如何用逻辑分析仪快速判断接口类型?
拿到一块未知屏,点不亮:
- 测量所有引脚对地电压。有1.2V左右的共模电压?可能是LVDS/MIPI。
- 有3.3V的脉冲且频率几十MHz?可能是并行RGB。
- 测量VSYNC频率(通常几十Hz)。如果有稳定的VSYNC且数据线有活动,说明主机在发送RGB信号。
- 如果数据线不活动但屏幕能亮(显示logo),说明屏有GRAM,可能是MCU或MIPI命令模式。
冷知识:为什么LVDS叫LVDS,但很多屏写"LVDS接口"其实是"OpenLDI"?
OpenLDI是National Semiconductor(现TI)提出的标准,使用LVDS物理层传输RGB数据。而真正的LVDS标准(ANSI/TIA/EIA-644)只定义了电气层,不规定数据格式。市场上"LVDS接口"屏99%都是OpenLDI映射。知道这个细节,你就能理解为什么不同厂家的LVDS屏有时候不兼容------映射表可能不同(如VESA vs JEIDA格式)。