Lobsters | 📄 原文链接 | 2026-10-21 收录

用 SystemVerilog 手写一个 VGA 驱动:从电子束扫描到屏幕点亮

来源:lukaswerner.com — 2026-10-20

📋 概述

作者回忆大学数字逻辑设计实验课最后的几个 lab:用 FPGA 做一个 VGA 驱动,听起来吓人,实际上相当可达(尽管调试时间离谱地长)。文章从原理讲起:VGA 是 1987 年随 IBM PS/2 推出的显示标准,当年用 CRT,单束电子束打到荧光层上发光,只能逐像素绘制,靠 HSync 与 VSync 控制水平与垂直的摆动,人眼视觉暂留把画面「填满」。实现上,60Hz 刷新需要约 25.175MHz 的像素时钟,而课程用的 terasIC DE10-lite 只有 50MHz,于是用「每隔一个时钟翻转一次」的粗糙分频拿到 25MHz;因为 HSync/VSync 由自己控制,屏幕可以重新同步到非标准时钟。时序计数按 TinyVGA 的表:水平 640 可见 + 前后沿与同步脉冲共 160,合计 800,10 位够用;垂直 480 + 45 = 525。计数到位后只在显示区间(水平 35 到 784、垂直 33 到 520)驱动颜色线,板子只有 10 个开关却要映射 4096 色,于是用多路选择器把 2 位输入映射成 4 位输出。作者估计光调时序就花了十小时以上。

🔑 核心要点

💡 金句

Simulating the driver only gets you so far, it is another thing to see the screen light up.
← 返回 Lobsters 首页