LCD显示技术完全指南:原理·制造·驱动·FPGA实现之驱动一

篇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 :硬件复位

时序过程

  1. CPU先通过RS=0 + 数据 = 命令(如设置列地址、页地址)
  2. 然后RS=1 + 数据 = 实际RGB值
  3. 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字节):用于传输实际的像素数据

典型的一帧传输过程:

  1. LP模式发送 帧开始(SoT) 短包
  2. 每一行:发送 行开始短包 → 一行像素长包 → 行结束短包
  3. 帧结束后发送 帧结束(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. 测量所有引脚对地电压。有1.2V左右的共模电压?可能是LVDS/MIPI。
  2. 有3.3V的脉冲且频率几十MHz?可能是并行RGB。
  3. 测量VSYNC频率(通常几十Hz)。如果有稳定的VSYNC且数据线有活动,说明主机在发送RGB信号。
  4. 如果数据线不活动但屏幕能亮(显示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格式)。

相关推荐
XMAIPC_Robot10 小时前
深度无人机自动驾驶仪,中小型无人机硬件在环仿真飞行
运维·arm开发·人工智能·fpga开发·无人机·边缘计算
小眼睛FPGA1 天前
【紫光HiYou开源入门轻量级PCIE开发板PG2L25G】实验例程1-基于紫光FPGA 的LED 流水灯
fpga开发
不会武功的火柴1 天前
SystemVerilog语法(8)-有限状态机(FSM)
嵌入式硬件·fpga开发·自动化·ic验证·rtl·uvm方法学
Kent Gu1 天前
Lattice FPGA选型
fpga开发
Terasic友晶科技1 天前
答疑解惑|为DE25-Nano开发板配置Linux kernel时.config文件没有起作用是什么原因?
linux·服务器·fpga开发·linux kernel·de25-nano
8K超高清1 天前
CCBN展会多图回顾
人工智能·算法·fpga开发·接口隔离原则·智能硬件
小眼睛FPGA1 天前
【紫光HiYou开源入门轻量级PCIE开发板PG2L25G】实验例程5-DDR3 读写实验例程
fpga开发
unicrom_深圳市由你创科技1 天前
如何做FPGA的功耗优化?动态功耗管理怎么实现?
fpga开发
不会武功的火柴1 天前
SystemVerilog语法(9)-验证基础与简单Testbench
嵌入式硬件·fpga开发·fpga·systemverilog·硬件描述语言·rtl·uvm验证