VGA的调试.doc_第1页
VGA的调试.doc_第2页
VGA的调试.doc_第3页
VGA的调试.doc_第4页
VGA的调试.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用FPGA控制VGA显示图形和响应PS/2键盘摘要: 本设计实现了FPGA对VGA和PS/2键盘的控制。可以响应键盘的按键控制VGA显示字符和图片,并具有简单的文本编辑功能,包括光标移动、删除、换行、背景颜色变换等,借助片内rom存储器存储图片像素信息。本设计的硬件平台为实验室已有的Cyclone II开发板, FPGA的器件全称为EP2C35F672C6。设计采用Verilog HDL语言进行基本模块的编写,采用原理图输入方式进行顶层模块和ROM存储器的设计,开发环境为Quartus II8.1。一 设计原理(1) 用FPGA进行VGA时序控制的基本原理 VGA显示器因为其输出信息量大,输出形式多样等特点已经成为现在大多数设计的常用输出设备,FPGA以其结构的优势可以使用很少的资源产生VGA的各种控制信号。 VGA显示器总共需要五根信号线,分别为RG三原色信号和行同步(HSYNC)、场同步(VSYNC)信号。在通用的标准中,VGA的像素输出频率为25.175 MHz,行频率是31.496 KHz,场频率是59.94 Hz。分辨率为640*480,即每行显示640个像素,每场显示480行。这640*480是显示器的有效显示区(Visible area),除此之外,还有行、场消隐区(Back Porch),以及行、场同步区(Sync Pulse)以实现行列的同步操作。1如果利用实验室的液晶屏,可以增加分辨率至800*600,在这个标准下屏幕的刷新频率设为72Hz,行频率是48.08KHz。FPGA需实现的扫描时序如下图:用FPGA实现VGA时序的原理:本设计的硬件平台为Altera公司的Cyclone II系列NIOS开发板(The Nios Development Board, Cyclone II Edition),所用的FPGA是Altera Cyclone II系列器件中的EP2C35F672C6,它具有483,840bit的嵌入式存储器;33216个逻辑单元(LE);105个M4K RAM Block。2 经过预测,它的寄存器规模足够设计要求,片内的存储单元的个数也可以支持少量图片的存储。对于VGA的行同步和场同步信号,可以由系统时钟sclk(50MHz)计数得到。本设计将VGA屏幕的刷新频率设为72Hz,即每秒钟同步信号需要扫描整个屏幕72次,以使得观察者能够看到连续清晰的图像。输出的像素是1040*666,实际图像大小为800*600,需要设置行列计数器,按照上述的时序图,对不同的计数值赋予相应的动作,在有效显示区使能R、G、三原色信号。对于R、G、三原色信号,其逻辑组合与对应的颜色关系如下图所示。在设计中为了实现多个图片的显示,分别设置的背景颜色寄存器,图片颜色存储器,均为三位,程序根据键盘的选择得出图片颜色存储器的对应地址,通过读ROM,将颜色信息输出到R、G、信号线上,ROM宽度为3,总深度为161280,初值由初始化文件(.mif)方式在下载程序时灌入。(2) 用FPGA进行PS/2键盘响应的基本原理 PS/2端口包括5脚的DIN或6脚的mini-DIN。具有6脚mini-DIN的键盘通常被叫做PS/2键盘。PS/2通讯协议是一种双向同步串行通讯协议,通讯的两端通过时钟脚同步,并通过数据脚交换数据。一般时钟频率是15kHz左右。在FPGA与PS/2连接的通信模式中,采用简单的单向串行协议,PS/2键盘发送的每一数据帧包含11个位,具体含义如表:3表1 PS/2键盘发送的数据帧格式说明1个起始位总是逻辑08个数据位低位在前,高位在后1个奇偶校验位奇校验1个停止位总是逻辑1PS/2键盘键盘码分为通码和断码。通码是按键按下时所发送的编码,断码是按键断开时所发送的编码。我们常用的键盘分为基本按键和扩展按键,一般采用第二套扫描码集编码。对于基本按键和扩展按键,键盘发送的键码如下:基本按键 = 键盘发送“F0”+“键码”扩展按键 = 键盘发送“E0”+“F0”+“键码”本设计用到的第二套键盘扫描码如下图:本设计将键盘扫描作为一个单独的模块,并对时钟线进行了滤波,使键码传输的错误率有明显降低;对基本按键和扩展按键均取出一字节的键码(两者键码并无重复),连同按键状态线一起输出。本设计目前未对机打情况(即持续按键出现的连续输入情况)作出响应。二 设计实现 本设计的顶层原理图如图所示:本设计将电路结构分为四部分,PS/2扫描模块负责响应键盘,PS/2键值解析模块负责将键盘接收到的信号转换为VGA的各种控制指令,VGA模块响应控制命令和读取ROM,得到像素点的颜色信息和位置信息,并通过VGA接口控制VGA的显示。下面具体介绍各功能模块。(1)PS/2键盘扫描模块的设计模块名称:ps2scan功能: 响应键盘的按键输入为: 系统时钟clk,reset按键,PS/2的时钟线,PS/2的数据线。输出为: 8位的键码ps2_byte,1位按键状态线ps2_state本设计的键盘扫描模块能够响应键盘上的大多数按键,包括基本按键和扩展按键。模块内部用Verilog语言编写,用系统时钟扫描键盘时钟线的变化,接收数据线的数据,然后按照PS/2的协议进行解析,暂存解析到的8位数据。另一方面是对8位数据的判断,判断它是通码还是断码,最后将断码转变格式输出。对于字母和数字,程序将断码顺便转换成的ASCII码。在进行键盘扫描模块时难点有两个:其一:PS/2的时钟线需要滤波。设计中发现,对PS/2的时钟线需要进行滤波处理,并且需要多次锁存,否则会出错。本设计在调试中将时钟进行两级锁存,发现按键时响应错误严重,时钟线在每次按键时都会随机的产生多余的干扰脉冲,使程序检测到的时钟数多出几个,造成连续的无法识别;当将时钟进行九级锁存时,错误率非常明显的降低,问题解决。其二:兼容基本按键和扩展按键。键盘上的基本按键和扩展按键发送的键码格式不同,但是键盘扫描的结果需要为统一的格式,这就需要对数量较少的扩展按键做特殊处理。设计时发现,扩展按键的最后一个断码和基本按键的断码并没有冲突,简单的做法可以是忽略它的第二个不同的通码“E0”,将键码格式看成和基本按键得相同,每当检测到通码“F0”,就使能标志位,将其后的键码取出来解析。(2)键值解析模块的设计模块名称:ps2explain功能: 解析按键信息,向VGA发送位置、颜色等命令输入为: 8位的键码ps2_byte,1位按键状态线ps2_state,输出为: 光标的坐标位置XPRES、YPRES,输入字符序号order,所选图片序号pic_num,背景颜色background。键值解析模块模块根据不同的键值判断要执行的命令,输入是键盘扫描的结果;输出信号中:XPRES和YPRES指示VGA当前光标的位置,order表示当前输入的字符的序号,pic_num表示当前键盘选择的按键所对应的图片序号,background指示VGA当前屏幕的背景颜色。在本设计中,将26个字母和十个数字各配了一幅图,本模块根据按键的键值将图片和按键对应起来,将图片的序号传给VGA模块。另外,本设计实现了一个简单的类似于行编辑器的演示模式:将键盘上的四个方向键解析成改变VGA显示的当前光标位置;将回车键解析成VGA当前光标位置换行;将PAGE UP/DOWN键解析成VGA当前光标位置移动到首行或尾行;将空格键解析成VGA当前光标位置和颜色等信息保留;将SHIFT键解析成VGA当前显示的背景颜色加1(共8种颜色,依次滚动显示);将ESC键解析成VGA清屏;将F1,F2,F3键解析成在VGA上显示特殊的信息,如较大的图片;将BKSP键解析成删除上一个在VGA显示屏上保留的信息;在这个模块中,满足各种边界条件是设计的难点。首先要考虑光标移动不能超出屏幕的边界;删除和空格键改变屏幕上显示的图片的个数要考虑达到最大值和最小值的情况等等。(3)VGA模块的设计 模块名称:ps2scan功能: 响应键盘的按键输入为: 系统时钟clk,reset按键,光标的坐标位置XPRES、YPRES,输入字符序号order,所选图片序号pic_num,背景颜色background。输出为: VGA的行同步,场同步,三个颜色信号线,rom的18位地址 VGA 模块是设计中复杂度最高的一部分。它完成VGA的控制时序,生成地址读rom,根据当前的位置、颜色、输入序号、所选图片序号实时的改变VGA的显示。 实验室的液晶屏或CRT都比较高级,可以支持很高的分辨率,很高的分辨率会显得字符很小,在本设计中将VGA的显示模式定为有效显示区(分辨率)大小800*600。屏幕刷新频率72Hz。 对于行同步,按照协议将消隐区考虑在内,共需要1040个时钟周期,时钟周期为20ns(50MHz晶振),即行同步周期为1040*20ns = 20800ns,其倒数即行频率:48.077KHz。程序中用xcount计数,在xcount为185至985之间时为有效区。对于场同步,将消隐区考虑在内,共需要666个行同步周期,行同步周期为20800ns,则场同步周期为666*20800ns = 13852800ns,其倒数即场频率,也即屏幕的刷新率:72.19Hz。程序中用ycount计数,在ycount为30至630之间时为有效区。行和场同时有效的区域即显示区,这时颜色信号的赋值被使能。在非显示区,程序将颜色信号线赋值为0。输入字符序号order是一个11位二进制数,理论上可以支持2048个输入图片在屏幕上同时显示,限于程序的规模,目前在演示程序中只定义了40个,即屏幕上最多可同时显示40个字符。所选图片序号pic_num是一个8位二进制数,它是程序中所存储的所有图片序号,目前共有39个,包括36个字符的图片和3张大图片。在程序中将pic_num乘以1024就是图片在rom中存放的首地址。VGA模块根据序号order、pic_num和坐标位置XPRES、YPRES等信息将图片从rom中读出,显示在指定的位置。生成读rom的地址是程序中的难点。例如为了显示一个32*32大小的需要取出rom中的1024个数据。设计中用如下语句生成地址:if(e_rdy1) rom3addr=pic_num1*1024+(xp-xtem1+10d17)+(yp-ytem1+10d15)*10d32);式中xp和yp是和行同步场同步同时变化的记录有效显示区坐标的变量,xtem1,ytem1是暂存键盘指定的坐标信息的变量,赋值号右侧第一项是该图片在rom中的首地址,第二项是所显示的矩形图片的相对横坐标,第三项是相对纵坐标。(4)ROM的设计模块名称:ps2scan功能: 响应键盘的按键输入为: 系统时钟clk,16位的地址。输出为: 3位的颜色数据。 上图为rom模块的顶层模块,其内部结构如下图:其中三个rom均为利用quartus参数化宏单元生成的,数据宽度均为3位,从高到低分别代表r、g、b的颜色信号线状态,3个rom的深度一次为65536,65536,8192。设计中将低16位地址线分别与rom31,rom32连接,低14位地址线分别与rom33连接,在将最高位地址线与次高位地址线输入到用程序编写的一个3选1数据选择器里。sel1:0的值决定了当前将哪个rom的输出作为rom模块的输出,从而实现一个总深度为139264的rom模块,地址连续。本设计中的rom模块占用资源为139264*3=417792bit,FPGA的Total memory bits为483840,占用比例为86%。与整个设计的compilation report中统计结果一致。在Rom模块的设计中遇到了两个难点:其一是将图片文件转换成.mif格式的文件为rom赋值。在利用Quartus的“MegaWizard Plug-In Manger”来定制ROM宏模块时需要事先建立好初始化文件,Quartus支持.mif和.hex两种文件格式,本设计选用.mif,它需要在文本文件的开头加上两句话,注明数据深度和数据格式,正式的数据需要在每个数据前加序号,逗号隔开,末尾用分号。根据这些规则,本设计用VB编写了一个小程序,可以将任意的BMP格式的图片转换成.mif文件。界面如下图所示:为了方便将多个图片的转换结果和成一个rom的初始化文件,在小程序中加入了设置首地址功能,使生成的文件中数据序号从首地址开始递增。这样比如在建立一个存储36个图片的rom的初始化数据文件时,可以先对36个图片分别取模,首地址交错开,在将他们拷贝成一个.mif文件,使数据序号连续,更改文件的第一行总大小即可。将生成的.mif文件放到本设计的工程目录下,在创建rom宏模块时选择这个文件作为memory initialization file即可。其二是rom模块可以选取的最大值问题。根据datasheet4所述, EP2C35F672的资源包括M4K Memory Blocks:105;Total RAM Bits:483,840,在这里很容易造成误解,M4K单元是一个有4096个bit可用的block,那么105个block共有4096*105=430,080个bit可用,之所以说total rambits为483,840bit是因为datasheet上说每个M4K单元的实际大小为4608个bit,其中包括了奇偶校验,在4608bit中有4608-4096=512bit的校验位,说明它的结构是每8位数据有一位奇偶校验,这样一来总大小为4608*105=483,840bit,正是它宣称的总比特数。在compilation report中将483,840bit做为rom的总大小给人造成了误解。其实RAM Bits的利用率最高为430,080/483,840=88.9%.在本设计中,共用了(65536+65536+8192)*3bit=417,792bit,已经接近了总存储量的上限。三 设计结果本设计的硬件平台是Cyclone II系列NIOS开发板,它内含了丰富的资源,并预留了大量的I/O引脚,给扩展电路提供了电源和插座。因为开发板上原本不带VGA和PS/2接口,所以本设计自制了一块小的接口扩展板,取用开发板上的+5V电源和7根I/O引脚,实物和插座上的引脚排列情况如下图:自制VGA、PS/2接口电路板插座的接线定义设计中用到的所有管脚配置如下:其中r/g/b为VGA的颜色信号线;vs/hs为VGA的行场同步;ps2data/ps2clk为PS/2键盘的数据和时钟线,led87:0为按键键码的指示灯,连接开发板的8个蓝色led,用以指示键码的变化,若按了程序中没有定义的键,指示灯不会切换状态。完整的设计compilation report如下图,占用了全部逻辑单元的23%.下图为完整的系统照片:利用本设计实现的功能:(1)VGA显示键盘的输入、光标移动、删除、换行等命令:(类似于行编辑器)当键盘上的26个字母和10个数字键按下时,VGA上会显示当前的字符图片;键盘上的四个方向可以改变VGA的当前光标位置;回车键可以实现换行;PAGE UP/DOWN键可以实现当前光标位置移动到首行或尾行;空格键表示输入了字符,信息将会保留;SHIFT键可以改变当前屏幕的背景颜色(共8种颜色依次切换);ESC键可以实现清屏;BKSP键可以实现删除上一个输入的字符。下图展示的是应用本系统进行简单的文本编辑。(2)用VGA显示图片:由于FPGA自带的存储单元有限,可以显示的图片大小有上界,最大为430,080/3 = 143360个像素,尺寸约为378*378像素。这相当于即使利用上FPGA全部的存储单元也不能存储一张铺满整屏幕的图片(800*600像素)。在本设计的演示程序中共可以显示3张图片,分别对应键盘上的F1F2F3。大小依次为240*240,160*160,90*90。图片的显示效果如下图:四 结论 本设计受UP开发板所带资源的启发,实现FP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论