基于FPGA的VGA显示控制器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计
开课学期:第六学期
课程名称:FPGA课程设计学院:
专业:
班级:
学号:
姓名:
任课教师:
2015 年7 月20 日
基于FPGA的VGA显示控制器设计
一、设计方案
1. 设计的主要内容
此设计要求实现某一分辨率下(如640*480@60Hz)的VGA显示驱动,能简单显示彩条和图像等。能够熟悉VGA接口协议、工作时序及VGA工作原理,并计算出合适的时序,对原始时钟进行分频处理以获取符合时序要求的各率,此外须要显示的图像等可存储于外部存储器,运行时,从外部存储器读取显示数据。将图像控制模块分为这样几部分;二分频电路、地址发生器、VGA时序控制模块、图像数据存储器读出模块.如图1-1所示:
图1-1 VGA显示控制系统框图
2. 设计原理
显示控制器是一个较大的数字系统,采用模块化设计原则、借鉴自顶向下的程序设计思想,进行功能分离并按层次设计。利用VHDL硬件描述语言对每个功能模块进行描述,并逐一对每个功能模块进行编译仿真,使顶层VGA显示控制器的模块实体仿真综合得以顺利通过。其中二分频把50MHZ实在频率分成25Mhz并提供给其它模块作为时钟;VGA时序控制模块用于产生640X480显示范围,并控制显示范围和消隐范围以及产生水平同步时序信号HS和垂直同步时序信号VS的值;存储器读出模块提供给SRAM地址并按地址读出八位数据(灰度值Y),然后得到R、G、B的值(若Y>中间值,则R=G=B=1;
否则R=G=B=0),并把R、G、B 的值通过VGA接口传送给VRT显示器[9]。地址发生器接收所要显示的数据读取控制信号,产生与图像数据ROM模块对应得地址,根据VGA显示的像素分布,确定读取对应数据的地址,由于所显示的图形每行需256个像素,而ROM中每个地址存储的数据时64位,故每4个地址取出的数据用于一行的显示。VGA显示控制模块:主要分为时序信号和数据颜色的控制,imgrom模块即图像数据ROM模块,在这一模块中需要解决的是图像数据BMP位图文件的来源及转换成HEX文件,利用Image2lcd 对本次设计图片处理得到BMP文件,最终在Quartus II得到HEX文件,在已设置LPM_ROM 进行加载图像数据。注意其数据线宽为3,恰好可以放置RGB三信号数据,因此此设计图像仅能显示8种颜色。此外注意各模块对图像显示的区域控制。
二、系统实现
此系统设计分主要由,二分频模块,地址译码器模块,VGA显示控制模块及图像数据ROM来实现对图像的显示。计数器模块设计简单,用计数器计数来控制,以实现某一个区域显示相应的颜色。具体以VGA显示模块和图像数据ROM为例进行详细分析与操作。
1. VGA显示控制模块
VGA显示控制模块主要通过VGA时序产生640*480显示范围,并控制和消隐范围以及产生水平同步时序信号hs和垂直同步时序信号vs的值。
一个独立的计数器产生垂直时序信号。垂直同步计数器在每个HS脉冲信号来临时自动加1,译码值产生VS信号。计数器产生当前显示行。这两个计数器从地址到显示缓冲器连续计数。
首先启动QUARTUS Ⅱ软件,新建vga640480显示扫描模块工程文件,如下图2-1所示:
图2-1 创建工程vga640480
单击完成按钮,创建好了设计工程,选择【FILE】>【NEW】菜单,出现如图2-2所示的新建设计文件类型窗口。
图2-2 选择编程VHDL文本文件
在上图2-2中选择【VHDL File】,单击【OK】建立一个新的文本设计文件,命名为。随即进行程序代码的输入。
图2-3 保存设计文件
在图2-3中的【File】菜单中点选【Save as】存盘并保证该文件添加到了工程中,文件名为默认的即可。至此,vga640480显示扫描模块文件建立完成。
2. rom载入
当VGA显示器要显示一帧图像,需要较多的数据量,FPGA芯片内置的ROM存储器很难符合如此大的数据存储要求,所以必须借助于外部的存储器存入图像数据。
读取控制模块的数据读取方式决定于采用何种存储器。然而外部存储器有多种选择,如ROM,、双口RAM、甚至SDRAM等,例如ROM可用直接产生地址信号的方式对芯片进行访问,而SDRAM则是利用DMA控制方式配合CPU进行读写操作[6]。
图2-4 载入rom
接下来将详细介绍如何将已有的rom_r、rom_g和rom_b文件载入开发板的rom中。
首先,以“rom”作为关键词在IP目录中进行搜索,选择并双击“ROM:1-PORT”:在对话框中选择“Verilog”,在默认目录下选择合适的“*.v”文件。
图2-5 选择文件
选择ROM控制线,地址线和数据线。在图2-6所示的对话框中选择地址线位宽和ROM数据线分别为8和65536,选择的地址锁存控制信号Single clock。
图2-6 选择rom模块数据线和地址线宽度
选择已有的“*.mif”文件,载入rom。
图2-7 载入rom
3. 二分频模块
在系统进行设计中二分频把50MHz时钟频率分成25MHz并提供给其它模块作为时钟。显示器的像素分辨率是640×480,像素时钟25Mhz,刷新频率60Hz±1。开发板提供的系统时钟50MHz,所以要对板载时钟进行分频后才能使用。由于50M分频难以仿真,故将输入时钟clk50m设置为50kHz,分频得到clk25m实际为25kHz。它的模块设计相比VGA显示模块更为简单,在项目中创建新的文件,编写二分频模块代码,保存编译。
4. 顶层设计
在以上模块设计完成后,整体编译并无错误后,建原理图文件,调用VGA显示模块、图像数据rom、二分频模块,用软件自带的RTL Viewer自动生成他们连线组成系统的原理图,如图2-8所示: