基于FPGA的VGA字符显示
一、 有关VGA
VGA(Video Graphics Array)线,包括VGA接口与连接的电缆,但通常指VGA接口,也叫D-Sub接口。VGA接口是显卡上输出模拟信号的接口,虽然液晶显示器可以直接接收数字信号,但很多低端产品为了与VGA接口显卡相匹配,因而采用VGA接口。VGA接口是一种D型接口,上面共有15针空,分成三排,每排五个。
1、规格设计
VGA中的A指的是“阵列(array)”而非“转换器(adapter)”,因为它从一开始就被设计为一个单一的整合芯片,用来取代Motorola 6845和数十个离散的逻辑芯片组合而成的ISA母版,这种设计是之前的MDA、CGA和EGA所使用的。VGA的这个特性允许它轻易的殖入PC的主板之中,只需要额外的视讯内存、振荡器和一个RAMDAC,就具备显示功能。IBM的PS/2电脑系列就是采用将VGA放置于主板上的设计。如图《VGA3+6》所示。
VGA的规格表如下:
- 256 KiB 的 Video RAM
- 16 色和 256 色模式
- 总共 262144 种颜色的色版(红、绿、蓝三色各 6 bit,总共 (26)3 种)
- 选择性的 25.2 MHz 或 28.3 MHz 处理频率
- 最多 720 个水平像素
- 最多 480 条线
- 最高 70 Hz 的更新频率
- Vertical Blanking interrupt(不是所有卡都支持)
- 平面模式:最多 16 色(4 bit面板)
- Packed-pixel 模式:256 色(Mode 13h)
- 顺畅卷动画面的能力
- Some “Raster Ops” support
- Barrel shifter
- 支持分割画面
VGA支持可单独操控像素的APA(All Points Addressable)模式,也支持字母与数字的文字模式。标准的图形模式如下: - 640×480×16色
- 640×350×16色
- 320×200×16色
- 320×200×256色(Mode 13h)
它也支持用模拟的方式画出以往规格的分辨率:EGA、CGA和MDA。
2、针脚定义
1红基色 red
2 绿基色 green
3 蓝基色 blue
4地址码ID Bit
5 自测试 ( 各家定义不同 )
6 红地
7 绿地
8 蓝地
9 保留 ( 各家定义不同 )
10 数字地
11地址码
12地址码
13 行同步
14 场同步
15地址码( 各家定义不同 )
一般在VGA接头上,会1,5,6,10,11,15等标明每个接口编号。如果没有,如上图所示编号。
注意,公母头焊接时,须注意将方向平行反过来焊接。
3、 VGA通信时序
1、帧时序
2、行时序
二、基于FPGA的VGA字符显示
1、创建相应的工程文件
2、实现代码
module VGA_test(
OSC_50, //原CLK2_50时钟信号
VGA_CLK, //VGA自时钟
VGA_HS, //行同步信号
VGA_VS, //场同步信号
VGA_BLANK, //复合空白信号控制信号 当BLANK为低电平时模拟视频输出消隐电平,此时从R9~R0,G9~G0,B9~B0输入的所有数据被忽略
VGA_SYNC, //符合同步控制信号 行时序和场时序都要产生同步脉冲
VGA_R, //VGA绿色
VGA_B, //VGA蓝色
VGA_G); //VGA绿色
input OSC_50; //外部时钟信号CLK2_50
output VGA_CLK,VGA_HS,VGA_VS,VGA_BLANK,VGA_SYNC;
output [7:0] VGA_R,VGA_B,VGA_G;
parameter H_FRONT = 16; //行同步前沿信号周期长
parameter H_SYNC = 96; //行同步信号周期长
parameter H_BACK = 48; //行同步后沿信号周期长
parameter H_ACT = 640; //行显示周期长
parameter H_BLANK = H_FRONT+H_SYNC+H_BACK; //行空白信号总周期长
parameter H_TOTAL = H_FRONT+H_SYNC+H_BACK+H_ACT; //行总周期长耗时
parameter V_FRONT = 11; //场同步前沿信号周期长
parameter V_SYNC = 2; //场同步信号周期长
parameter V_BACK = 31; //场同步后沿信号周期长
parameter V_ACT = 480; //场显示周期长
parameter V_BLANK = V_FRONT+V_SYNC+V_BACK; //场空白信号总周期长
parameter V_TOTAL = V_FRONT+V_SYNC+V_BACK+V_ACT; //场总周期长耗时
reg [10:0] H_Cont; //行周期计数器
reg [10:0] V_Cont; //场周期计数器
wire [7:0] VGA_R; //VGA红色控制线
wire [7:0] VGA_G; //VGA绿色控制线
wire [7:0] VGA_B; //VGA蓝色