基于FPGA的VGA图像显示控制器设计 下载本文

内容发布更新时间 : 2024/5/27 8:02:37星期一 下面是文章的全部内容请认真阅读。

基于FPGA的VGA图像显示控制器设计

按地址读出八位数据(灰度值Y),然后得到R、G、B的值(若Y>中间值,则R=G=B=1;否则R=G=B=0),并把R、G、B 的值通过VGA接口传送给VRT显示器。地址发生器接收所要显示的数据读取控制信号,产生与图像数据ROM模块对应得地址,根据VGA显示的像素分布,确定读取对应数据的地址,由于所显示的图形每行需256个像素,而ROM中每个地址存储的数据时64位,故每4个地址取出的数据用于一行的显示。VGA显示控制模块:主要分为时序信号和数据颜色的控制,imgrom模块即图像数据ROM模块,在这一模块中需要解决的是图像数据BMP位图文件的来源及转换成HEX文件,利用Image2lcd对本次设计图片处理得到BMP文件,最终在Quartus II得到HEX文件,在已设置LPM_ROM进行加载图像数据。注意其数据线宽为3,恰好可以放置RGB三信号数据,因此此设计图像仅能显示8种颜色。此外注意各模块对图像显示的区域控制。

20 [9]

基于FPGA的VGA图像显示控制器设计

第4章 系统实现

此系统设计分主要由,二分频模块,地址译码器模块,VGA显示控制模块及图像数据ROM来实现对图像的显示。计数器模块设计简单,用计数器计数来控制,以实现某一个区域显示相应的颜色。具体以VGA显示模块和图像数据ROM为例进行详细分析与操作。

4.1 VGA显示控制模块

VGA显示控制模块主要通过VGA时序产生640*480显示范围,并控制和消隐范围以及产生水平同步时序信号hs和垂直同步时序信号vs的值。

一个独立的计数器产生垂直时序信号。垂直同步计数器在每个HS脉冲信号来临时自动加1,译码值产生VS信号。计数器产生当前显示行。这两个计数器从地址到显示缓冲器连续计数。

首先启动QUARTUS Ⅱ软件,新建vga640480显示扫描模块工程文件,如下图4.1-1所示:

图4.1-1 创建工程vga640480

单击完成按钮,创建好了设计工程,选择【FILE】>【NEW】菜单,出现如图4.1-2所示的新建设计文件类型窗口。

21 基于FPGA的VGA图像显示控制器设计

图4.1-2 选择编程VHDL文本文件

在上图4.1-2中选择【VHDL File】,单击【OK】建立一个新的文本设计文件,命名为vga640480.vhd。随即进行程序代码的输入。

图4.1-3 保存设计文件

在图4.1-3中的【File】菜单中点选【Save as】存盘并保证该文件添加到了工程中,文件名为默认的即可。至此,vga640480显示扫描模块文件建立完成。

22 基于FPGA的VGA图像显示控制器设计

图4.1-4 元件封装

在图4.1-4中的【File】菜单中点选【Gree Update】/【Greate Symbol File For Cunrent File】对vga640480文本文件进行封装得出原理图模块如图4.1-5所示:

图4.1-5 vga640480显示扫描模块

通过以上步骤,便完成了vga640480显示扫描模块的设计工作,即系统底成模块完成。

23 基于FPGA的VGA图像显示控制器设计

4.2 imgrom(图像数据ROM)

4.2.1 图像原理

当VGA显示器要显示一帧图像,需要较多的数据量,FPGA芯片内置的ROM存储器很难符合如此大的数据存储要求,所以必须借助于外部的存储器存入图像数据。

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

[10]

本设计采用型号为28C040的4M EEPROM外部存储器,可以在单片内存储整屏图像,但考虑到存储空间的大小,本设计仅采用每个像素的颜色位深为3位,共可显示8种颜色的图像。

要把一幅图像的数据写入ROM,如何写入文件的格式这一问题是首先必须解决的。通常我们把Intel Hex,或者二进制文件,bin逐字节通过编程器写入ROM。而图像都具有固定的格式,如BMP,JPEG,GIF等。其中,BMP格式图像作为一种很常见的图像格式,无压缩处理,且具备相对简单文件结构,易于处理,在本设计中采用了BMP图像作为研究对象。如果将BMP文件直接转化为Hex文件则相对比较困难,为此先将BMP格式文件转化成mif格式文件,再经过Quartus II直接将mif文件转化为Hex文件,最终将图像数据烧写入ROM中。但因为没有现成的转换程序,所以选择Visual C ++自行编写转换程序。

Memory Initialization File (.mif)格式作为Quartus II中ROM的初始化数据文件格式,其具备较简单的记录方式,其中地址和数据都可为十进制或十六进制,地址值位于冒号左边,对应的数据则处在右边,并以分号结尾。

BMP格式的位图文件相对于mif文件,mif格式的位图文件略为简单,BMP文件它包括位位图信息头结构、位图文件头结构、位图颜色表和位图像素数据四部分。以下是位图文件的保存顺序:文件头→信息头→颜色表→像素数据。位图文件的大小、宽、高、实现调色板、图像素值得到位等可以通过处理位图时依据文件的这些结构得到

[11]

。用当

下应用较广泛的24位真彩色图像举例分析,其特点是:24 位真彩色图像的存储文件中没有图像颜色表;图像中每一像素由RGB三个分量构成,每个分量分为8位,每个像素需要24位; f red,f green ,f blue颜色分量值的取值范围都是0~255。

对于要用到颜色表的位图来说,图像数即为该像素颜色存在于调色板中的索引值。对于真彩色的图像,图像数据则是实际的R,G,B值,即一个像素由3个字节24位组成,

24