FPGA--VGA原理详解
VGA作为经典的视频显示标准,是FPGA入门的必学知识点,掌握它就能轻松实现简单图像、文字的显示,为后续做游戏、可视化项目打基础。本文全程避开复杂术语堆砌,用“生活化类比”讲透原理!
很多初学者觉得VGA难,其实核心就两件事:“按固定规则扫描”和“按时序同步信号”。我们先从最直观的逻辑入手,理解VGA的显示本质。
1. 3个核心概念
-
显示逻辑:VGA采用“逐行扫描、从上到下、从左到右”的方式显示,就像我们用笔画画——先从第一行左边画到右边,画完一行移到下一行开头继续画,直到画满整个屏幕,这个过程每秒重复60次(60Hz刷新率),人眼就看不到闪烁了。
-
核心信号:FPGA要给VGA显示器输出5个关键信号,少一个都不行:
-
HS(行同步信号):告诉显示器“这一行画完了,准备画下一行”;
-
VS(场同步信号):告诉显示器“一整屏画完了,准备画下一屏”;
-
R(红)、G(绿)、B(蓝):控制每个像素的颜色,数字信号经简单转换后传给显示器。
-
-
像素时钟:640*480分辨率搭配60Hz刷新率,需要25.175MHz的像素时钟(工程上常用25MHz近似,显示器可兼容),每个时钟周期对应一个像素点的显示——时钟越快,显示的像素越多,画面越清晰。
2. VGA时序规则(640*480@60Hz)
这是VGA的核心难点,也是显示稳定的关键!很多初学者误以为“640*480”就是只画640个像素、480行,其实不然——为了让显示器有时间“换行、换屏”,VGA标准规定了“有效显示区”和“空白消隐区”,空白区就是给显示器缓冲的时间。
我们分“行时序”(单一行的扫描过程)和“场时序”(一整屏的扫描过程)来拆解,用“手写作文”类比更易理解:
(1)行时序:写一行字的完整过程
就像你写一行字,不是写完最后一个字就立刻写下一行,而是要“抬笔→移到下一行开头→落笔”,这个“抬笔移动”的空白时间就是“行消隐区”。
| 时序阶段 | 像素时钟数 | 通俗说明 |
|---|---|---|
| 行有效显示区 | 640 | 真正显示图像的区域,对应x坐标0~639(这部分才是我们能看到的像素) |
| 行前沿(空白) | 16 | 写完一行后的“抬笔缓冲”时间,显示器准备换行 |
| 行同步脉冲 | 96 | 输出HS低电平(“换行指令”),通知显示器必须换行 |
| 行后沿(空白) | 48 | 换行后的“落笔准备”时间,等待下一行扫描 |
| 行总像素数 | 800(640+16+96+48) | 每一行需要800个时钟周期才能完成完整扫描 |
行扫描时序图:

(2)场时序:写一整篇作文的完整过程
就像你写满一页纸后,要“抬笔→翻页→移到新页开头→落笔”,这个“翻页移动”的空白时间就是“场消隐区”。
| 时序阶段 | 行数 | 通俗说明 |
|---|---|---|
| 场有效显示区 | 480 | 真正显示图像的区域,对应y坐标0~479(这部分是我们能看到的画面) |
| 场前沿(空白) | 10 | 写满一屏后的“抬笔缓冲”时间,显示器准备换屏 |
| 场同步脉冲 | 2 | 输出VS低电平(“换屏指令”),通知显示器必须换屏 |
| 场后沿(空白) | 33 | 换屏后的“落笔准备”时间,等待下一屏扫描 |
| 场总行数 | 525(480+10+2+33) | 每一屏需要525行才能完成完整扫描 |
场扫描时序图:


(3)核心结论
-
只有当x在0~639 且 y在0~479时,才是有效显示区,此时需要输出RGB颜色数据;
-
非有效区(x≥640或y≥480),输出RGB=0(黑色)即可,避免出现乱码;
-
HS和VS是“低电平有效”——同步脉冲期间(行同步96个时钟、场同步2行),HS=0、VS=0,其余时间为1。
3. 总结
VGA显示的核心其实就两点:按标准时序生成HS、VS同步信号 + 在有效区输出正确的RGB颜色。初学者不用一开始就追求复杂功能,先把640*480的基础时序搞懂,跑通“蓝底白框”的示例,再逐步扩展文字、动态图形等功能。

浙公网安备 33010602011771号