2、时序基础概念:行同步(Hsync)、场同步(Vsync)、数据使能(DE)、像素时钟(PCLK)
各位同学,今天我们来聊聊显示驱动里最基础、也最绕不开的四个信号。说实话,我刚入行那会儿,觉得这四个信号不就是几个方波嘛,有啥好研究的?直到第一次调屏,画面撕裂、闪烁、偏移全来了,我才意识到——时序这东西,差一个时钟周期都不行。
行同步、场同步、数据使能、像素时钟,这四个信号构成了显示驱动的心脏。你想想看,显示器要显示一帧画面,本质上就是把这些信号按照严格的时序关系,一像素一像素、一行一行、一帧一帧地送出去。任何一个信号出了问题,画面就会出问题。
2.1 像素时钟(PCLK)—— 节奏的节拍器
像素时钟是所有时序信号的基准。说白了,它就是整个数据传输系统的节拍器。每个PCLK的上升沿或下降沿,对应传输一个像素的数据。
我在项目中遇到过一个问题:客户要求支持4K@60Hz,我算了一下,像素时钟需要大约594MHz。结果选了个便宜的FPGA,时序跑不到那么高,画面就开始出现随机噪点。后来换了更高等级的芯片才解决。
像素时钟的计算公式很简单:
PCLK = H_total × V_total × Refresh_Rate
其中:
- H_total:一行总像素数(包括消隐区)
- V_total:一帧总行数(包括消隐区)
- Refresh_Rate:刷新率(如60Hz、120Hz、240Hz)
关键点:这里用的是总像素数和总行数,不是有效分辨率。很多人算错就是因为用了1920×1080,忘了加消隐区。
举个例子,1080p@60Hz,典型时序参数:
| 参数 | 值 |
|---|---|
| 有效像素 | 1920 |
| 行消隐 | 280 |
| H_total | 2200 |
| 有效行数 | 1080 |
| 帧消隐 | 45 |
| V_total | 1125 |
| PCLK | 2200 × 1125 × 60 ≈ 148.5 MHz |
我的习惯:设计时我会给PCLK留10%-15%的余量。因为PCB走线、温度变化都会影响时钟质量。余量不够,量产时就会出问题。
2.2 行同步(Hsync)—— 每行的起点信号
行同步信号告诉显示器:新的一行要开始了。它是一个脉冲信号,通常低电平有效。每个Hsync脉冲之间,就是一行完整的数据传输时间。
Hsync的时序参数包括:
- HSYNC_WIDTH:同步脉冲宽度
- H_BACK_PORCH:后肩(同步脉冲结束到有效数据开始)
- H_ACTIVE:有效数据区域
- H_FRONT_PORCH:前肩(有效数据结束到下一个同步脉冲)
嗯,这里要注意:前肩和后肩的分配不是随便来的。我记得有一次调试一块OLED屏,画面左侧总有一条暗线。查了半天,发现是后肩设得太短,像素数据还没稳定就开始采样了。把后肩从10个时钟增加到20个,问题就解决了。
避坑指南:我曾经因为Hsync的极性搞反,画面整体偏移了半个屏幕。检查了三天才发现是寄存器配置错了。所以,拿到屏的规格书,第一件事就是确认Hsync和Vsync的极性——高有效还是低有效,千万别想当然。
2.3 场同步(Vsync)—— 帧的开关
场同步,也叫帧同步,它标志着一帧画面的开始和结束。Vsync的周期决定了刷新率。比如60Hz的刷新率,Vsync周期就是16.67ms。
Vsync的时序结构和Hsync类似:
- VSYNC_WIDTH:帧同步脉冲宽度
- V_BACK_PORCH:帧后肩
- V_ACTIVE:有效行数
- V_FRONT_PORCH:帧前肩
你想想看,如果Vsync不稳定,画面就会抖动。高刷新率显示器对Vsync的抖动要求特别严格。我做过一个240Hz的项目,Vsync的抖动必须控制在±1个像素时钟以内,否则画面就会出现肉眼可见的撕裂。
核心要点:Vsync和Hsync是层级关系——Vsync决定帧,Hsync决定行。一个Vsync周期内,包含多个Hsync周期。这个层级关系,是理解显示时序的基础。
2.4 数据使能(DE)—— 有效数据的闸门
数据使能信号,说白了就是告诉接收端:现在线上传输的是有效像素数据,不是消隐区的垃圾数据。DE高电平时,数据线上的RGB值才是有效的。
DE信号的好处是:接收端不需要去数Hsync和Vsync的脉冲个数,只要看DE就行。这大大简化了接收端的逻辑设计。
但DE信号也有坑。我遇到过一个问题:DE的上升沿和PCLK的边沿对齐不好,导致第一个像素的数据被采样到上一行的末尾。画面顶部就会出现一条错位的像素线。解决方案是调整DE的建立时间和保持时间,确保它和PCLK的时序关系正确。
DE、Hsync、Vsync三者的关系,可以用下面这张图来表示:
2.5 四个信号的协同工作
这四个信号不是各自为政的。它们必须协同工作,才能正确传输一帧画面。我总结了一个简单的理解方式:
- PCLK 是心跳,决定数据传输的节奏
- Hsync 是换行符,告诉接收端新行开始
- Vsync 是翻页键,告诉接收端新帧开始
- DE 是闸门,告诉接收端哪些数据是有效的
实际调试中,我一般会先确认PCLK的频率和稳定性,然后用示波器看Hsync和Vsync的波形,最后检查DE和数据的对齐关系。这个顺序能最快定位问题。
我的调试经验:如果画面出现条纹、偏移、闪烁,先别急着改代码。用示波器抓一下这四个信号的波形,对比规格书里的时序图,往往一眼就能看出问题。硬件问题用硬件手段解决,比瞎猜代码快得多。
好了,这四个基础信号就讲到这里。理解它们,是理解后续所有显示时序知识的前提。下一节我们会深入讨论消隐区的设计,以及如何利用消隐区做更多事情。
公众号:蓝海资料掘金营,微信deep3321