微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > VGA图形控制器的FPGA实现

VGA图形控制器的FPGA实现

时间:06-12 来源:互联网 点击:

VGA(视频图形阵列)作为一种标准的显示接口得到广泛的应用。利用FPGA 芯片和EDA 设计方法,可以因地制宜,根据用户的特定需要,设计出针对性强的VGA 显示控制器,不仅能够大大降低成本,还可以满足生产实践中不断变化的用户需要,产品的升级换代方便迅速。

在本设计中采用了Altera 公司的EDA 软件工具Quartus II ,并以ACEX系列FPGA 的器件为主实现硬件平台的设计。

1 基于FPGA 的VGA 图形控制器系统框图

根据自顶向下的程序设计思想,采用模块化设计,我们对VGA 图形控制器进行功能分离并按层次设计。利用VHDL 硬件描述语言逐一对每个功能模块进行描述,并逐个通过编译仿真,最后下载到硬件平台调试。本设计的VGA 控制器主要由以下模块组成:VGA 时序控制模块、分频模块、汉字显示模块、图像控制模块、ROM读取模块等,如图1 所示。

图1  基于FPGA 的VGA 图形控制系统框图

2  主要功能模块设计

2. 1 VGA 时序控制模块

VGA 时序控制模块是整个显示控制器的关键部分,最终的输出信号行、场同步信号必须严格按照VGA 时序标准产生相应的脉冲信号。对于普通的VGA 显示器, 其引出线共含5 个信号: G,R ,B (3 基色信号) ,HS(行同步信号) ,VS(场同步信号) 。在5个信号时序驱动时,VGA 显示器要严格遵循“VGA工业标准”, 即640 Hz ×480 Hz ×60Hz 模式。

对于VGA 显示器,每个像素点的输出频率为25. 175MHz ,因此采用50MHz 的时钟信号,经过二分频模块,得到25MHz 的输入时钟脉冲。依据VGA 时序标准,行同步信号HS ,行周期为31. 78μs ,每显示行包括800 点,其中640 点为有效显示区,160 点为行消隐区,每行有一个脉冲,该脉冲的低电平宽度为3. 81μs (即96 个脉冲) ; 场同步信号VS ,场周期为16.683ms ,每场有525 行,其中480 行为有效显示行,45 行为场消隐区,每场有一个脉冲,该脉冲的低电平宽度为63μs (2 行)。

图2 VGA 行扫描、场扫描的时序图

依据这个标准,把输入的25MHz 时钟脉冲按照对应的像素点数和扫描行数进行分频处理,可以得到最后符合时序要求的行频率和刷新频率。

利用Altera 公司的QuartusII 软件对VHDL 语言描述的VGA 时序控制模块进行编译、仿真,可得到行同步信号HS , 场同步信号VS 的时序仿真波形,如图3 所示。

图3 时钟信号仿真图

由仿真结果波形可以看到,行同步信号的时钟周期约为31. 9μs ,场同步信号的时钟周期约为16。

6ms ,达到了VGA 标准时序的要求,可以为CRT 显示器提供准确的行场同步信号。

在硬件系统上,通过彩条图案的生成验证了时序生成的正确性,可产生竖彩条、横彩条、棋盘格等多种彩条模式。

2. 2 汉字显示模块

汉字生成模块可实现在显示器上显示汉字、字符等。字模信息可以利用字模提取软件来获得,得到了汉字的字模信息后,可以通过屏幕上的横坐标和纵坐标按照字模信息定义像素的颜色,这样就可以显示任何字体、任何点阵的汉字,并根据需要决定汉字在屏幕上的位置。至于英文以及其他任何符号的显示原理与汉字显示的原理一样。

显示器上显示的汉字精细度取决于显示屏所分网格的数目多少。设计者可以根据不同要求设定不同的网格数目。Altera 公司的FPGA 器件内均内置— 26 —了嵌入式阵列块EAB ,通过调用其中的LPM ROM模块,可任意设置参数,构成内置的ROM存储器,存放所必要的字模信息,能与汉字显示模块配合,显示出任意汉字。2. 3 图形显示模块

2. 3. 1 ROM读取控制模块

当VGA 显示器要显示一帧图像,需要比较大的数据量,FPGA 芯片内置的ROM 存储器难以满足这么大的数据存储要求,必须把图像数据存入外部的存储器中。

外部存储器可以有多种选择, 如ROM,、双口RAM、甚至SDRAM 等,采用何种存储器将最终决定读取控制模块的数据读取方式。如ROM 可用直接产生地址信号的方式对芯片进行访问,而SDRAM常常利用DMA 控制方式配合CPU 进行读写操作。

这里采用型号为28C040 的4M EEPROM 外部存储器,可以在单片内存储整屏图像,同时考虑到存储空间的大小,本设计采用每个像素的颜色位深为3 位,共可显示8 种颜色。此模块最终仿真结果如图4所示。

图4 地址信号仿真图

由图中的仿真结果可以看到,地址信号每两个时钟脉冲加1 ,而每两个时钟脉冲代表扫描过一个像素点,由此可验证以上设计的正确性。

2. 3. 2 BMP 图像数据存入ROM

要把一幅图像的数据写入ROM,首先必须解决的就是写入文件的格式问题。一般的方法是通过编程器把Intel Hex ,或者二进制文件。 bin 逐字节写入ROM。而图像都具有固定的格式,如BMP , JPEG,G

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top