基于FPGA的VGA显示控制器设计研究

时间:2022-07-15 01:03:20

基于FPGA的VGA显示控制器设计研究

【摘要】本设计采用了以FPGA为主控器件的设计方法,将VGA控制器分成几个子模块,采用Verilog HDL硬件描述语言对各个模块进行描述设计,并利用EDA软件,完成对局部模块和整体模块的代码编写及仿真验证。通过分析VGA显示的基本原理和信号要求,设计整个系统的软件、硬件结构,包括VGA时序和显存时序的发生,通过按键控制实现横彩条、竖彩条图案的选择,并进一步设计出实现文字和图像的显示。

【关键词】VGA显示;FPGA;时序控制;控制器

VGA(video graphic array)作为一种标准的显示接口得到了广泛的应用,基于VGA接口标准的显示器作为一种通用型显示设备,已经成为很多电子数码产品的常用输出设备。与嵌入式系统中常用的TFT液晶显示器件相比,它具有显示面积大、色彩丰富、承载信息量大、接口简单等优点,如果将其应用到嵌入式系统中,可以显著提升产品的视觉效果。驱动VGA接口显示器,需要很高的扫描频率,以及极短的处理时间,实现VGA显示功能,既可以使用专用的VGA接口芯片,也可以用FPGA来实现对VGA显示器的驱动控制。本设计采用Altera公司的FPGA芯片驱动VGA接口显示器显示彩条及简单的图形,FPGA的运行速度块,管脚资源丰富,容易实现大规模的系统设计,有大量的软核可用,便于进行二次开发。另外,由于FPGA具有可重构能力、抗干扰性强等特点,因此,FPGA在工业控制等领域越来越受到重视。利用FPGA完成VGA显示控制,可以使图像的显示脱离PC机的控制,形成体积小、功耗低的嵌入式便携式系统,应用于地面勘测、性能检测等方面,具有重要的现实意义。

1.VGA显示技术原理

VGA显示控制主要有五个信号线,分别为R、G、B、VSYNC(场同步)、HSYNC(行同步)信号。红(R)、绿(G)、蓝(B)是大家熟知的三原色,R、G、B这三个模拟信号的电平范围是由0.4V到0.7V,由R、G、B的电压差便可以产生出所有的颜色。如果R、G、B各只用一个位来控制,也就是只有0和1两种电位,所能够形成的颜色种类,就只有8种。若每一种颜色能用多个位来控制,颜色就能多样化。而VSYNC和HSYNC用作显示器的同步信号,依据垂直与水平更新率的不同,不断送出固定频率的信号输出,此时就可以在屏幕上正确地显示色彩。

在显示屏中,为了能显示出颜色,需要建立色彩模型,而使用的最多的色彩模型就是RGB色彩模型。例如:CRT显示器使用的就是RGB色彩模型,显示器的三个电子枪分别对应着红色、绿色和蓝色,一个像素的颜色就是用这三个电子束的强弱来表示的。显示适配器中同样使用RGB色彩模型来描述颜色,以保持与显示器的一致。在VGA控制器的设计中,也采用了该色彩模型来描述颜色。在RGB色彩模型中,以红色(R)、绿色(G)、蓝色(B)作为基色,其他的颜色都是由这三种基色混合而成的。

显示器电子枪的扫描过程在行同步、场同步等控制信号的控制下进行,包括水平扫描、水平回扫、垂直扫描、垂直回扫等过程,如图1-1所示。屏幕的显示方式,是从最左上角的第一像素开始,然后依次向右显示下一个像素,到显示完第一行的最后一个像素,就跳到第二行的第一个像素又继续开始显示。一直到整个屏幕都显示完毕时,又回到原点来显示,如此就能不断地刷新画面。

2.VGA时序控制信号

VGA显示器的时序控制要严格遵循“VGA工业标准”,即640×480×60Hz模式,否则会导致VGA显示器无法正常工作。图2-1所示为行扫描时序,图2-2所示为场扫描时序。

(1)行扫描信号时序:图2-1给出了行视频时序示意图。

在行扫描时序中,包括以下几个时序参数:HSYNC Signal是用来控制“列填充”,而一个HSYNC Signal可以分为4个段,也就是a(同步段),b(后沿段),c(激活段),d(前沿段)。HSYNC Signal的a是拉低的128个列像素,b是拉高的61个列像素,c是拉高的806个列像素,最后的d是拉高的53个列像素。一列总共有1040个列像素。

(2)场扫描信号时序:图2-2给了场视频时序示意图。

在场扫描时序中,包括以下几个时序参数:VSYNC Signal是用来控制“行扫描”。而一个VSYNC Signal同样可以分为4个段,也是o(同步段),p(后沿段),q(激活段),r(前沿段)。VSYNC Signal的o是拉低的6个行像素,p是拉高的21个行像素,q是拉高的604个行像素,最后的r是拉高的35个行像素。一行总共有666个行像素。

3.VGA控制器的设计与实现

本设计选用了Altera公司的Cyclone II EP2C8Q208C8型的FPGA作为系统的核心芯片。FPGA器件的现场可编程技术和CPLD器件的在系统可编程技术使可编程器件在使用上更为方便,大大缩短了设计周期,减少了设计费用,降低了设计风险。

下面将详细介绍VGA控制器的整体架构以及工作机制,并对各个模块的设计思路进行相应的分析,同时给出各个模块的仿真结果。

3.1 总体设计思想

根据VGA时序的控制要求,系统必须包括4个主要部分的设计:

(1)数据接口:用来提供显示数据;

(2)数据缓存:临时存储显示数据;

(3)VGA时序和信号发生器:产生VGA时序,完成数模信号的转换和输出;

(4)控制处理器:对整个系统进行控制和数据处理,系统原理框图如图3-1所示。

VGA显示控制器的输入是用户控制信息,如显示模式的切换命令、图形移动的控制命令等。控制器根据用户的输入信息,决定工作模式,这里定义为横彩模式、纵彩模式、文字模式。颜色信息的产生、显示器扫描同步信号等由VGA驱动控制器产生,其输出经数模转换传输到CRT显示器。

3.2 系统硬件设计

电源模块:电源模块的设计是依照系统其它部分的电源要求决定的,因此在系统其它部分芯片的选型上应该考虑电源的要求,芯片的电压要求应该尽量一致,以简化电源的设计。本系统主要需求的电源为5V与3.3V。

时钟模块:如果要驱动VGA为800×600

×72Hz的显示标准,这个显示标准需要的最小单位(列像素)所占用的时间周期为20ns,换句话说,至少需要50MHz的时钟频率,使用外部晶振20MHz产生系统时钟满足要求。

VGA接口模块:通过对硬件进行编程,输出标准的VGA信号(红、绿、蓝三色信号和行、帧同步信号),通过15针VGA接口输出至显示器,可具有显示驱动程序的能力,驱动显示器显示图像信号。板上的VGA接口只需使用其中的5个引脚,其中行、帧同步信号直接由FPGA输出控制;红、绿、蓝三色信号使用FPGA上12个引脚,各控制输出4位数据。由于输入到VGA显示器的R、G、B信号需要是模拟信号,然而FPGA的输出信号是数字信号,所以需要D/A转换器把它变成模拟信号。本设计中采用电阻网络D/A变换后输出电压值到显示器,支持12位的VGA彩色显示,红色、绿色和蓝色各4位,具有4096种不同的颜色。VGA接口与FPGA引脚连接见图3-2。

3.3 系统软件结构设计

VGA显示控制器实现的主要功能是向显示器发出图形控制信号,产生相应的图形显示,由系统功能可以将系统从逻辑上划分为输入子系统、模式检测子系统和VGA控制子系统。从系统逻辑结构出发,将系统设计为3层,顶层用于描述整个系统的功能和运行,控制子模块的连接和耦合信号;第二层承接顶层,负责实现系统中各个独立而完整的功能部分,包括的功能主要是产生时钟信号,状态机的定义和状态的转移,产生像素位置信号,并根据不同的状态和像素位置产生RGB颜色信号;第三层为第二层的子模块,用于扩展第二层的功能,具体负责用户模式的实现。每个层次可用一个或多个具体模块加以实现。

控制器部分是系统的核心部分,负责协调和控制各子模块的工作。控制器设计采用有限状态机的方法,用Verilog HDL语言对VGA显示控制器的三个层次依次进行描述,具体描述出每个模块,生成具体电路视图。VGA接口控制器由3个模块组成,即产生行场同步信号和消隐信号的vga_drive模块、产生内容存储的char_rom模块和文字和图像位置信息的disp_char模块以及顶层模块vga_top模块。模块之间的信号连接示意图如图3-3所示。

3.4 功能仿真

系统设计完成后,需要对系统主要功能进行仿真验证,进一步分析状态机、电路逻辑和时序配合等是否正确。系统仿真分为两个步骤进行,首先是关键模块的仿真,验证子系统功能的正确性,然后是综合仿真,验证整个系统的功能。

在QuartusII中建立工程,编辑波形文件作为仿真激励对所设计的VGA接口控制器进行仿真验证,对关键模块的仿真结果和分析如图3-4所示。在仿真时,为了便于观察结果,将主时钟信号iCLK的周期设置为10ns。从图中可以看到,当HSYNC=1且VSYNC=1是为正向扫描过程。

VGA时序生成模块的功能是:产生VGA的行同步、行有效、场同步信号。VGA时序生成模块内部设计了一个11位的行计数器与一个11位的场计数器。行计数器值在0到52之间时行前沿信号为高电平,在53到120之问时行同步信号为低电平,同时场计数值开始计数,当行计数值等于181时,开始显示图像所以o_x_pos横坐标开始计数,当行计数值等于1039时,行计数值清零重新开始计数。场计数器值在0到35之间时场前沿信号为高电平,在36到96之间时场同步信号为低电平,计数值等于665时清零重新计数。行信号与场信号相与生成行有效信号。行计数器对像素时钟上升沿计数,场计数器对行同步佶号上升沿计数。仿真时序满足VGA接口标准时序的要求。

4.结论

由于本系统设计采用了有限状态机和子系统分模块描述的方法,使得控制器具有很好的扩展性。可以在不改变系统框架和模块间电路连接关系、不增加模块的情况下对存储模块char_rom或者颜色图形产生模块disp_char进行任意的有效修改,实现其他功能。例如增加游戏模式,再增加图形和显示控制的复杂性,都是很容易实现的。另外,增加读取RAM存储的图像的模块,即可实现如汉字和图像动态显示的功能,还可以支持显示更为复杂的图形。

参考文献

[1]江国强编著.EDA技术与应用(第3版)[M].北京:电子工业出版社,2010.

[2]潘松等编著.EDA技术实用教程(第4版)[M].北京:科学出版社,2010.

[3]夏宇闻编著.Verilog数字系统设计教程(第2版)[M].北京:北京航空航天大学出版社,2008.

[4]张压平,贺占庄.基于FPGA的VGA显示模块设计[J].计算机技术与发展,2007,17(6).

[5]董兵,朱齐丹,文睿.基于PFGA的VGA图像控制器的设计与实现[J].应用科技,2006,33.

作者简介:李德明(1983—),男,广西桂林人,桂林电子科技大学信息科技学院讲师,主要研究方向:精密测量与自动控制、电路系统的EDA技术。

上一篇:80X86寻址方式新视角 下一篇:从“萨扬事故”探究水电机组实施状态在线监测...