VGA控制器(VHDL)

逻辑主页

代码下载

VGA 控制器

VGA控制器VHDL: vga_controller.vhd (5.3 KB)

配套示例材料

硬件测试图像生成器示例: hw_image_generator.vhd (2.5 KB)

使用DE2-115开发板的完整Quartus II项目归档: vga_with_hw_test_image_v1_1.qar (27.1 KB)

注意:如果您不熟悉Quartus II归档文件:可以像打开Quartus II项目文件一样直接打开该归档文件。当询问是否要恢复时,选择是,它会将原始Quartus II项目的所有内容放置到您指定的文件夹中。

特性

  • VGA接口控制器的VHDL源代码
  • 生成VGA接口的信号时序
  • 可配置的VGA模式(即分辨率和刷新率)
  • 使用DE2-115开发板的示例实现

引言

本文详述了一个处理VGA信号时序的VGA控制器组件,采用VHDL编写,适用于CPLD和FPGA。图1展示了VGA控制器集成到系统中的典型示例。如图所示,VGA控制器需要与所实现VGA模式频率相匹配的像素时钟。随后它会生成控制接口所需的所有信号时序。它输出当前像素坐标,使图像源能够向视频DAC提供相应的像素值,进而驱动VGA显示器的模拟输入。同时还为VGA显示器提供同步信号。该组件使用Quartus II 12.1版本设计。

1. 示例实现

背景知识

VGA是控制模拟显示器的标准接口。接口的计算端向显示器提供水平和垂直同步信号、色彩强度信号以及接地参考。

水平和垂直同步信号是0V/5V数字波形,用于使信号时序与显示器同步。由于是数字信号,它们直接由FPGA提供(3.3V满足逻辑高电平的最小阈值,因此可用3.3V替代5V)。

色彩强度信号是通过R、G、B三线传输的0V-0.7V模拟信号。(或者,绿色线可采用0.3V-1V信号,该信号同时包含水平和垂直同步信号,从而省去专用同步线。这种方式称为绿同步,本文不作讨论。)三根色彩强度线末端接有75Ω电阻。这些线路在显示器内部也以75Ω终端匹配。为生成这些模拟信号,FPGA向视频DAC(本例采用Analog Devices公司的ADV7123)输出每个颜色的8位总线信号。该视频DAC还需要像素时钟来锁存这些数值。

VGA接口还指定了四条可用于与显示器ROM通信的线路。该ROM存储EDID(扩展显示标识数据),其中包含标准格式的显示器参数。访问这些数据存在多种通信标准,但在最简单的情况下,这些线路可保持悬空。

连接方式

VGA连接采用15针DB15接口。图2展示了DB15母座接口。表1列出了连接器的引脚定义。

2. VGA母座连接器(DB15插座)

1. VGA连接器引脚定义与信号

信号时序

标准VGA模式种类繁多,每种模式都具有特定的分辨率和刷新率。每种模式都定义了时序参数。附录列出了多种VGA模式的信号时序规范。VGA控制器使用ENTITY中声明的GENERIC参数来设置除像素时钟外的所有时序规范,像素时钟需由外部提供。

提供的VGA控制器示例实现采用1920x1200分辨率与60Hz刷新率,这是所用显示器的最大分辨率。

像素时钟

该VGA控制器需要用户提供像素时钟。可通过专用时钟引脚输入FPGA,或在FPGA内部使用PLL生成。在DE2-115开发板的示例项目中,将可用的50MHz时钟输入Cyclone IV FPGA的PLL,生成1920x1200@60Hz VGA模式所需的193.16MHz像素时钟。

工作原理

图3展示了VGA控制器产生的时序信号。控制器包含两个计数器。一个计数器在像素时钟上升沿递增,控制h_sync (水平同步)信号的时序。通过将显示起始时刻设为计数器值0,显示期间计数器值即对应像素列坐标。水平显示时间后是消隐期,包含水平前沿、水平同步脉冲和水平后沿,各阶段均有指定时长。每行结束时计数器复位,开始下一行扫描。

另一个计数器在每行扫描完成时递增,控制v_sync (垂直同步)信号时序。同样设置显示起始时刻为计数器值0,显示期间计数器值即对应像素行坐标。垂直显示时间后跟随消隐期,包含对应的垂直前沿、同步脉冲和后沿。垂直消隐期结束后计数器复位,开始下一帧刷新。

显示使能信号由水平与垂直显示时间的逻辑与运算定义。

VGA控制器通过这些计数器输出水平同步、垂直同步、显示使能及像素坐标信号。每种VGA模式都规定了同步脉冲的正/负极性。GENERIC参数h_pol (水平极性)和v_pol (垂直极性)分别设置VGA控制器h_syncv_sync 输出的极性。

3. 信号时序图

端口描述

表2描述了VGA控制器的端口。

2. 端口描述

使用 VGA 控制器

要使用VGA控制器,只需将ENTITY中的GENERIC参数设置为所需VGA模式指定的值。附录列出了多种VGA模式的信号时序规范。如上所述,还必须提供所需的像素时钟。

除了VGA控制器外,用户还需提供图像源。图像通常通过片外存储器中的文件提供,但也可由片内存储器中的文件或FPGA硬件生成。本示例项目通过hw_image_generator.vhd文件生成硬件测试图像。该VHDL代码从VGA控制器获取像素坐标和显示使能信号,以便在正确时间向视频DAC输出颜色值。生成的测试图像是屏幕左上角600x478像素的蓝色矩形,其余部分为黄色。图4显示了生成的测试图像。

4 硬件生成的测试图像

复位

reset_n 输入端口必须保持逻辑高电平才能使VGA控制器组件工作。该端口上的低电平会异步复位该组件。复位期间,该组件会取消水平和垂直计数器,清除像素坐标,并禁用显示。复位释放后,VGA控制器恢复运行。

结论

该VGA控制器是可编程逻辑组件,能实现与VGA显示器接口所需的信号时序。它仅要求用户提供像素时钟,当然还有图像源。VGA控制器提供水平和垂直同步信号,以及像素坐标和显示使能信号,确保图像在正确的时间生成。

附录: VGA 时序规范

A1 不同VGA模式的时序规范

vga_timing_specs.xls(33 KB)