基于FPGA实现VGA的彩色图片显示

0 引言
视频图形阵列显示接口是微机系统使用的一种通用显示接口,广泛应用于智能控制系统中,作为系统的显示终端。对于由嵌入式微处理器构成的图像处理系统来说,采用vga显示输出具有兼容性强、显示内容丰富的优势。同时,vga显示接口具有结构简单、性能可靠、兼容性强、时序容易控制的特点。因此,结合fpga的 vga图像控制器在嵌入式的图像处理系统中有广泛的应用前景。
目前大多数计算机与外部显示设备之间都是通过模拟vga接口连接,计算机内部以数字方式生成的显示图像信息,被显卡中的数字/模拟转换器转变为r、g、b三原色信号和行场同步信号,信号通过电缆传输到显示设备中。
1 vga显示
常见的vga接口的彩色显示器,一般由crt(阴极射线管)构成,色彩由r、g、b(红:red,绿:green,蓝:blue三基色组成。显示采用逐行扫描的方式进行,即当扫描完一行时,再进行下一行的扫描,直到最后一行扫描完为止。vga接口为显示器提供两类信号,一类是数据信号,一类是控制信号。
数据信号包括红、绿、蓝信号,简称rgb信号。控制信号包括水平同步信号(hsync)和垂直同步信号(vsync)。向显示器输出不同的分辨率时,水平同步信号和垂直同步信号的频率也不同。但是水平同步信号和垂直同步信号时序分析相同,在扫描时均需要经过同步信号、同步后信号、行同步信号、同步后信号四个时段。仅以水平同步信号为例,其结构如图1所示。
vga接口的显示器原理其实就相当于点阵,通过控制器的控制,点亮所在的行和列。所以水平同步信号是针对列像素而言的,而垂直同步信号是针对行像素而言的。
以显示800×600的图片大小为例,根据vga的时序标准,选择6hz的刷新频率。水平同步信号的同步信号包含128个列像素,同步后沿信号为 88个列像素,同步前沿信号为40个列像素,而屏幕显示部分为800个列像素,所以一共需要1 28+88+40+800=1 056个列像素。场同步信号的同步信号包含4个行像素,同步后沿信号包含23个行像素,同步前沿信号包含1个行像素,而屏幕显示部分为600个行像素,所以一共需要4+23+l+600=628个行像素,由此,液晶显示器显示一幅800×600的图像,需要的行列像素分别为1056和628。
2 系统总体框架设计
本系统以fpga ep2c8q208c8为核心芯片,通过对vga接口的控制,实现彩色图像的显示,系统结构框图如图2所示。
2.1锁相环pll
锁相环路是一种反馈控制电路,简称锁相环(pll),一种输出一定频率信号的振荡电路,也称为相位同步环(回路)。该回路利用使外部施加的基准信号与pll 回路内的振荡器输出的相位差恒定的反馈控制来产生振荡信号。在网络领域中,pll用于从接收的信号中分离出时钟信号,可以通过实际电路或软件的方式实现。
由于fpga的系统时钟为50mhz,而控制vga的时钟为40mhz,所以在对vga接口的控制时需要进行时钟转换,通常可以通过分频或者是调用 ip核的方式实现转换,但是由于通过自己写的分频程序假如在数据上处理不得当,容易产生毛刺,而调用quanersii软件自带的pll内核,不仅可以做到与系统时钟同相,而且时钟稳定,能够实现对vga时序的严格控制,与硬件电路来实现锁相环相比,调用plj。内核不仅可以做到操作简单,而且也节约了设计成本。
2.2存储模块rom
只读存储(read一0nly memory,rom)是一种只能读出事先所存数据的固态半导体存储器圈。在系统框图中的三个rom均用来存储颜色信息,由于本设计中使用图片的大小为 128×128,即一共有128×128=16384个像素点,所以rom的大小设置为16384。这里通过quanerii软件调用fpga的rom内核,将matlab提取的红、绿、蓝三基色数据经quanusii软件的处理,分别存入fpga的roml、rom2、rom3中。在控制模块中写入 rom的地址,在分频后的时钟控制下,将数据读到vga的rgb三个引脚,实现液晶显示器的图片显示。
2.3 matlab的数据提取
matlab 作为强大的数据处理工具,其基本数据单位是矩阵,它的指令表达式与数学工程中常用的表达形式十分相似,故用matlab来解算问题要比用 c,fortran等语言简捷得多。在新的版本中也加入了对c,fortran,c++,java的支持,可以直接调用,用户也可以将自己编写的实用程序导人matiab函数库中方便自己以后调用,此外许多的matlab爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用,非常的方便。
由于matlab软件中默认的图片格式为.jpc和.bnp,因此在使用matlab前需将原始图片通过photo sh叩软件进行格式转换,转换后保存图片为.bmp格式,在弹出的位宽选择对话框选择24位,,然后再通过matlab提取红基色数据,程序如下所示,结果被保存在red.mif文件里:
由于本设计所使用的vga是三位的数据接口,因此蓝基色和绿基色数据也按照此方法提取。red.mif中的数据是24位的,所以还需要对提取到的红基色数据进行转换。在matlab中做如下判断将24位数据转换为3位数据。
3 结果分析
图像的显示如图3所示,显示结果表明,由于原图像是24位,即224种颜色,而fpga控制的vga只有3位即23种颜色,相比之下,以24位的图像作为标准,vga显示的3位图像有明显失真的现象。
如果希望显示的图像更加清晰,那么需要将vga的显示接口重新作出电路修改,这样才能达到清晰显示的效果。
4 结束语
在许多图像处理系统中,需要将经过处理的图像显示出来,如果采用传统的办法将图像数据传回电脑并通过显示器显示出来,那么在传输的过程中就需要嵌入式系统的 cpu不断的对所传输的图像数据信号进行控制,这样就造成了cpu资源的浪费,同样系统还需要依赖电脑,降低了系统的灵活性。如果采用fpga对显示器的 vga接口进行设计,数据流只需要在整个系统的内部流动,而不需要依靠计算机,实现了系统的最小化,大大减少了电路板的尺寸,增强了系统的可靠性和设计的灵活性。
vga接口同样也是lcd液晶显示设备的标准接口,通过vga控制lcd可以使整个系统变得小巧,携带方便,使得应用的范围大大扩展。作者所在的全景视觉图象处理项目中,正是需要把经过处理的图像实时地直接地显示出来,撇开对计算机的需求,以满足各种不同应用环境的需要。
通过fpga对vga接口的控制,不仅实现了fpga对任一图像的显示,而且其内部时钟可调性为设计带来了很大的方便,节约了硬件成本。此方案可以广泛应用于数字视频系统、高分辨率的彩色图片图像处理、视频信号再现等各种领域。
作者黄文杰,李灿平,丁然

安世半导体热插拔专用ASFET斩获年度功率半导体产品奖
车机“混沌”,鸿蒙“开天辟地”?
苹果13pormax屏幕尺寸多大
汽车制动拖滞的原因有哪些
射频同轴电缆失效的原因是什么
基于FPGA实现VGA的彩色图片显示
全球智能家居市场规模预计2025年将达到1765.9亿美元
业界首款900V SiC MOSFET,导通电阻65 mΩ
5G将对我国实现经济高质量发展具有重要战略意义
如何在Windows系统上设置Docker镜像源
禁掉华为5G,澳大利亚将为自己买单!
WMS软件赋能第三方物流行业
单片机下载程序时老是显示比特率超时是什么原因?怎么办?
国产手机厂商迎来发展拐点
用电子邮件发送数码相片,什么设置最好?如果是打印照片呢?
恒大汽车实现没有交付一辆车,市值就近4000亿港元的“奇迹”
IEC61850标准的数字化变电站IED通用平台的GOOSE测试介绍(1)
这可真是个古董!苹果第一代Mac深度拆解
车载共模扼流器AMCW-S的应用领域
iphone7发布后6s、6s plus、SE分别降价多少?