Board logo

标题: 基于FPGA实现VGA的彩色图片显示(2) [打印本页]

作者: yuyang911220    时间: 2015-1-28 08:50     标题: 基于FPGA实现VGA的彩色图片显示(2)

 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对任一图像的显示,而且其内部时钟可调性为设计带来了很大的方便,节约了硬件成本.此方案可以广泛应用于数字视频系统.高分辨率的彩色图片图像处理.视频信号再现等各种领域.




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0