摘要: 本文介绍一种利用可编程逻辑器件实现VGA图像显示控制的方法,设计中采用了Verilog HDL语言对赛灵思Basys开发板进行编程设计。首先通过Image2Lcd软件分别提取两幅图片的色彩信息数据,将得到的数据存储到开发板的FPGA内嵌块ROM中,然后读取块ROM中的图片信息送到LCD显示器显示。利用FPGA完成VGA显示控制,可以使图像的显示脱离PC机的控制。
如今随着液晶显示器的出现,越来越多的数字产品开始使用液晶作为显示终端。基于VGA标准的显示器仍是目前普遍使用的显示器。若驱动此类显示器,需要很高的扫面频率,以及极短的处理时间。正是由于这些特点,所以可以用FPGA来实现对VGA显示器的驱动。
虽然VGA专用芯片具有更稳定的VGA时序和更多的显示模式可供选择,但设计和使用VGA显示控制更具有以下优势:
① 使用芯片更少,节省板上资源,减小布线难度;
② 当进行高速数据传输时,具有更小的高频噪声干扰;
③ FPGA(现场可编程门阵列)设计VGA接口可以将要显示的数据直接送到显示器,节省了计算机的处理过程,加快了数据的处理速度,节约了硬件成本。
VGA显示控制整体设计方案框图如图1所示,将其划分为电源模块、时钟电路模块、VGA接口模块、字库/图库模块、显示器等。再利用Verilog语言对FPGA的各个子模块进行编程设计,同时对各个子模块的功能分别进行调试,最后将所有调试成功的子模块并在一个顶层模块下,最终实现VGA显示控制设计。
图1 VGA显示控制整体设计方案框图
2 VGA显示控制的FPGA实现
2.1 存储功能模块
存储功能模块的主要功能是存储图片色彩信息, 其存储媒介为FPGA内部的硬核块RAM, 块RAM 是以硬核的方式内嵌到FPGA 芯片中的, 不占用芯片的逻辑资源, 是FPGA 芯片内部的一种宝贵资源。FPGA 内嵌的块RAM 组件可配置为单口RAM、双口RAM、分布式ROM、块ROM和先进先出存储器FIFO等存储结构。
本文只进行图片的显示,所以使用单口的块ROM存储图片信息,如果想实现更复杂的设计,如文字的滚动显示、图片的动画显示等,可以使用双口RAM 进行设计。由于图片信息比较大,而BASYS板子上的资源又有限,这就要求图片不易过大。搜集的各种资料和不断的实验结果表明,大小在8 192字节内的图片是可以显示的。这里第一幅图选用自己的名字徐彬。图片信息大小为:63×32×8=16 128位。第二幅选用江西科技师范大学。图片信息大小为120×50×8=48 000位。寻找到图片后,利用Xilinx ISE中的IP核生成工具Core Generator生成单口ROM,如图2所示。
图2 单口ROM图
将要显示的图片信息存储到块ROM中。第一幅图片选择数据宽度为8,深度为2 016的ROM。第二幅图片选择的ROM数据宽度为8,深度为6 000。在工程里使用IP核生成工具生成单口ROM,在生成过程中处理好ROM的数据宽度和深度。块存储的时候,需要加载的是一个.coe文件来初始化存储器的内容,这时候需要用到Image2Lcd软件,取图片的色彩信息保存为.coe文件初始化到ROM中。
2.2 VGA控制模块
时序的驱动是设计VGA显示控制的一个重要问题,关系到设计是否成功。时序若不正确,则不能够正确地显示,有时候甚至还会损害显示设备。因此, 时序的设计必须严格遵循VGA的标准, 在此设计中使用的分辨率为800×600,要求像素时钟为50 MHz。
图3 VGA时序图
根据VGA 时序的标准行、场同步信号有4种状态,时序图如图3所示,具有同步脉冲信号(Sync)、显示后沿信号( Back porch)、I显示的时间间隔(Display interval) 、显示前沿( Front porch),这4种状态具有很清晰的时序规律。设置两个计数器,模为1056 的行计数器和模628的列计数器,系统时钟为50 MHz用来控制行计数器,通过计数器的值来控制行信号HSYNC,然后在通过行信号HSYNC来控制列计数器,通过计数器的值来控制列信号VSYNC。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)