我正在开发一个数字电路,它使用分立元件在 80x30 文本模式下驱动 640x480 VGA 显示器。
对于 640x480 显示器,像素时钟为 25.175MHz,周期约为 40ns。我不明白我应该如何经常为显示器提供新像素。
我的电路的基本架构如下:
水平像素的二进制计数器在 25.175MHz 处向上计数至 800(640 可见像素 + 160 用于前廊、同步、后廊)。在 800 处,递增垂直行计数器(并在 525 行处重置)
使用水平和垂直位置,推导出当前字符的 x,y 坐标。
使用字符的 x,y 坐标,索引到显存以检索 ASCII 字符。
使用 ASCII 字符在字符 ROM 中进行索引以获取字符的位模式
使用并行到串行移位寄存器以像素时钟频率将 8 像素行字符转换为单个位
如果你遵循这个链,它会:计数器 -> RAM -> ROM -> 并行到串行移位寄存器
使用我能找到的最快的组件,传播延迟和访问时间加起来约为 15ns + 20ns + 70ns + 15ns = 120ns,远大于 25MHz 的 40ns 周期。
在更高的分辨率和刷新率下,您可以拥有远高于 100MHz 的像素时钟,这将是一个 10ns 的周期。
如果 RAM/ROM 的访问时间已经远远超过它,甚至不考虑系统中的所有其他信号,怎么可能每 10ns 向显示器提供新像素?