您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > FPGA+桌面弹球游戏+vga显示+ps2键盘
独垂心湖制作2011年4月11日弹球游戏实验报告由独垂心湖完成指导老师:孟宪元老师首先要说一下,这是我的EDA的答辩报告,里面有源程序和一些基础知识。希望对大家有帮助。共用到PS/2键盘和VGA显示和板子上的3个按键。桌面弹球游戏为两关,当第一关时间到后就进入第二关,如果没有接住弹球则会显示383(本人宿舍号码呵呵)第二关为无尽版,不限时间。其中还是有一部分bug,并且声明,部分程序来源与网络,经过自己的学习和整合后,做出来的。本人我FPGA的小菜鸟,只是刚接触。希望这个程序对大家学习有帮助。板子用的是xilinx的spaden3e250e的。独垂心湖制作2011年4月11日一、实验目的:1、进一步熟悉FPGA嵌入式系统设计;2、熟练运用VHDL语言进行系统设计;3、熟悉PS2键盘原理并应用;4、熟悉VGA显示原理并应用。二、实验要求:1、设计题目自定;2、设计中必须应用PS2键盘控制、VGA显示。三、实验原理:1、PS2键盘控制原理:PS/2设备接口用于许多现代的鼠标和键盘它是由IBM开发并且最初出现在IBM技术参考手册里,物理上的PS/2端口是两类连接器中的一种5脚的DIN或6脚的mini-DIN。这两种连接器在电气特性上是十分类似的实际上两者只有一点不同那就是管脚的排列这就意味着这两类连接器可以很容易用一种简单的硬件连线的适配器来转换。PC键盘可以有6脚的mini-DIN或5脚的DIN连接器如果你的键盘是6脚的mini-DIN而你的计算机是5脚的DIN或者相反这两类连接器可以用上面提到的适配器来兼容具有6脚mini-DIN的键盘通常被叫做PS/2键盘而那些有5脚DIN叫做AT设备XT键盘也使用5脚DIN但它们非常古老并且多年前就不生产了所有现代的为PC建造的键盘不是PS/2,AT就是USB的。每种连接器的引脚定义如下所示:独垂心湖制作2011年4月11日连接器上有四个有趣的管脚电源地5V数据和时钟host计算机提供5V并且键盘/鼠标的地连接到host的电源地上数据和时钟都是集电极开路的这就意味着它们通常保持高电平而且很容易下拉到地逻辑0任何你连接到PS/2鼠标键盘或host的设备在时钟和数据线上要有一个大的上拉电阻置0就把线拉低置1就让线上浮成高电平。独垂心湖制作2011年4月11日PS/2鼠标和键盘履行一种双向同步串行协议换句话说每次数据线上发送一位数据并且每在时钟线上发一个脉冲就被读入键盘/鼠标可以发送数据到主机而主机也可以发送数据到设备但主机总是在总线上有优先权它可以在任何时候抑制来自于键盘/鼠标的通讯只要把时钟拉低即可。从键盘/鼠标发送到主机的数据在时钟信号的下降沿当时钟从高变到低的时候被读取从主机发送到键盘/鼠标的数据在上升沿当时钟从低变到高的时候被读取不管通讯的方向怎样键盘/鼠标总是产生时钟信号如果主机要发送数据它必须首先告诉设备开始产生时钟信号这个过程在下一章节中被描述最大的时钟频率是33kHz而且大多数设备工作在1020kHz如果你要制作一个PS/2设备我推荐你把频率控制在15kHz左右这就意味着时钟应该是高40微秒低40微秒。所有数据安排在字节中每个字节为一帧包含11、12个位这些位的含义如下:如果数据位中包含偶数个1校验位就会置1如果数据位中包含奇数个1校验位就会置0数据位中1的个数加上校验位总为奇数这就是奇校验这是用来错误检测。当主机发送数据给键盘/鼠标时设备回送一个握手信号来应答数据包已经收到这个位不会出现在设备发送数据到主机的过程中。独垂心湖制作2011年4月11日设备到主机的通讯过程:数据和时钟线都是集电极开路结构正常保持高电平当键盘或鼠标等待发送数据时它首先检查时钟以确认它是否是高电平如果不是那么是主机抑制了通讯设备必须缓冲任何要发送的数据直到重新获得总线的控制权键盘有16字节的缓冲区而鼠标的缓冲区仅存储最后一个要发送的数据包如果时钟线是高电平设备就可以开始传送数据。如我在上一节提及的键盘和鼠标使用一种每帧包含11位的串行协议这些位含义是:每位在时钟的下降沿被主机读入如图2和3所示:主机到设备的通讯过程:被发送的包有点不同于主机到设备通讯过程,首先PS/2设备总是产生时钟信号如果主机要发送数据它必须首先把时钟和数据线设置为请求发送状态,如下示:(1)通过下拉时钟线至少100微秒来抑制通讯;(2)通过下拉数据线来应用请求发送然后释放时钟。设备应该在不超过10毫秒的间隔内就要检查这个状态当设备检测到这个状态它将开始产生时钟信号并且时钟脉冲标记下输入八个数据位和一个停止位主机仅当时钟线为低的时候改变数据线而数据在时钟脉冲的上升沿被锁存这在发生在设备到主机通讯的过程中正好相反。在停止位发送后设备要应答接收到的字节就把数据线拉低并产生最后一个时钟脉冲如果主机在第11个时钟脉冲后不释放数据线设备将继续产生时钟脉冲直到数据线被释放然后设备将产生一个错误,主机可以在第11个时钟脉冲应答位前中止一次传送只要下拉时钟线至少100微秒。主机到设备通讯图:独垂心湖制作2011年4月11日主机到设备通讯的详细过程:2、VGA显示原理:VGA(VideoGraphicsArray)是IBM在1987年随PS/2机一起推出的一种视频传输标准,具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的应用。目前VGA技术的应用还主要基于VGA显示卡的计算机、笔记本等设备,而在一些既要求显示彩色高分辨率图像又没有必要使用计算机的设备上,VGA技术的应用却很少见到。本文对嵌入式VGA显示的实现方法进行了研究。基于这种设计方法的嵌入式VGA显示系统,可以在不使用VGA显示卡和计算机的情况下,实现VGA图像的显示和控制。系统具有成本低、结构简单、应用灵活的优点,可广泛应用于超市、车站、飞机场等公共场所的广告宣传和提示信息显示,也可应用于工厂车间生产过程中的操作信息显示,还能以多媒体形式应用于口常生活。通用VGA显示卡系统主要由控制电路、显示缓存区和视频BIOS程序三个部分组成。控制电路如图1所示。控制电路主要完成时序发生、显示缓冲区数据操独垂心湖制作2011年4月11日作、主时钟选择和D/A转换等功能;显示缓冲区提供显示数据缓存空间;视频BIOS作为控制程序固化在显示卡的ROM中。1.1VGA时序分析通过对VGA显示卡基本工作原理的分析可知,要实现VGA显示就要解决数据来源、数据存储、时序实现等问题,其中关键还是如何实现VGA时序。VGA的标准参考显示时序如图2所示。行时序和帧时序都需要产生同步脉冲(Synca)、显示后沿(Backporchb)、显示时序段(Displayintervalc)和显示前沿(Frontporchd)四个部分。几种常用模式的时序参数如表1所示。1.2VGA时序实现首先,根据刷新频率确定主时钟频率,然后由主时钟频率和图像分辨率计算出行总周期数,再把表1中给出的a、b、c、d各时序段的时间按照主计数脉冲独垂心湖制作2011年4月11日源频率折算成时钟周期数。在CPLD中利用计数器和RS触发器,以计算出的各时序段时钟周期数为基准,产生不同宽度和周期的脉冲信号,再利用它们的逻辑组合构成图2中的a、b、c、d各时序段以及D/A转换器的空白信号BLANK和同步信号SYNC。1.3读SRAM地址的产生方法主时钟作为像素点计数脉冲信号,同时提供显存SRAM的读信号和D/A转换时钟,它所驱动的计数器的输出端作为读SRAM的低位地址。行同步信号作为行数计数脉冲信号,它所驱动的计数器的输出端作为读SRAM的高位地址。由于采用两片SRAM,所以最高位地址作为SRAM的片选使用。由于信号经过CPLD内部逻辑器件时存在一定的时间延迟,在CPLD产生地址和读信号读取数据时,读信号、地址信号和数据信号不能满足SRAM读数据的时序要求。可以利用硬件电路对读信号进行一定的时序调整,使各信号之间能够满足读SRAM和为DAC输入数据的时序要求。1.4数据宽度和格式如果VGA显示真彩色BMP图像,则需要R、G、B三个分量各8位,即24位表示一个像素值,很多情况下还采用32位表示一个像素值。为了节省显存的存储空间,可采用高彩色图像,即每个像素值由16位表示,R、G、B三个分量分别使用5位、6位、5位,比真彩色图像数据量减少一半,同时又能满足显示效果。2功能单元设计实现VGA显示,除了实现时序控制,还必须有其他功能单元的支持才能实现完整的图像显示。独垂心湖制作2011年4月11日(1)控制器:VGA显示有多种模式,需要通过控制器实现模式间切换,还需要对显示的内容进行接收、处理和显示。所以控制器的性能越高,数据更新和显示效果就越好。(2)显示数据缓存区:VGA显示要求显存速度快、容量大。读速度要达到65MHz以卜,存储容量至少要2MB。可采用高速SRAM或SDRAM作为显示数据缓存。(3)数模转换器DAC:VGA显示对数模转换DAC有如下要求:一是高速转换,转换的速度应该在80MHz或以上;二是刚步性好,能保证R、G、B三路信号的同步性;三是有相应的精度。可选择一种包括3路8位高速D/A的专用视频芯片。(4)数据源及其接口:要提高VGA显示的效率,就要不断更新数据,同时还要保证实时性,因此需要非常高的接口速度。VGA显示卡虽可达到100Mbps的数据更新速度,但是一般设备、特别是嵌入式设备达不到这么高的速度,而且大多数情况下也不需要这么高的数据更新率。目前常用接口为EPP接口、USB接口、TCP/IP、RS232C/485等。其中TCP/IP、EPP接口和USB接口是基于计算机的,速度较快;TCP/IP、RS232C/485是基于网络通信的接口,其中RS485速度虽慢,但应用广泛且容易实现远程控制。在数据源为低速接口时,可以考虑采用Flash或者SM存储卡等预先存储一些常用的图像显示数据和字库文件,在更新数据时直接应用这些数据,从而加快显示缓存的更新速度。这样既能满足高分辨率图像的显示,又能满足文字信息数据的快速更新。刚时为了存储更多的图像,可以先存储JPEG格式图像,再由控制器解码成BMP位图图像后送到显示缓存显示,这样就相对扩展了Flash的存储空间。同时,由于图像的解码速度要大大快于数据源接口的速度,也就相应提高了显示缓存的数据更新速度。由各功能单元组成的VGA显示硬件结构框图如图3所示。独垂心湖制作2011年4月11日3显存数据更新与显示的同步实现在VGA显示时,要考虑如何实现显存数据更新与显示的同步进行。解决的方案有以下几种:(1)采用具有缓存作用的双口RAM,这种方法使用的器件数量多、功耗大、成本高,基本不可取。(2)采用两组SRAM进行乒乓工作模式,一组SRAM用于显示的同时,另一组SRAM用于图像数据的更新,然后在两组SRAM之间切换。这样做会提高一些成本,而且需要更复杂的总线控制。(3)利用FPAG/CPLD和SDRAM构造双口SRAM。这种方法实时性好,成本较低,时序控制比较复杂,它是实现高性能低成本要求的最佳方案。(4)采用一组SRAM作为显存,可以简化系统设计、降低成本。这时可以考虑利用行时序和帧时序中SRAM总线空闲的时序段,在不关闭图像显示的情况下实现显存SRAM的数据更新。该方法的更新率与数据写速度密切相关,显存的写数据速度越快,该方法的更新率就越高。假设CPU的工作时钟最大为60MHz,并采用JPEG解码更新方式。这时如果将解码缓存区分配在CPU片内内存,则更新数据时直接由内存向SRAM写数据,一次需要0.17μs;如果将解码缓存区分配在片外空间,则更新数据时独垂心湖制作2011年4月11日CPU要先从片外读数据,再向SRAM写数据,这样写一次需要0.25μs。在相邻显示的两帧图像只存在局部差别或更新文本显示信息时,可使用局部数据更新方法,以提高更新率。表2给出了显示每帧图像包含的总线空闲时间,以及在不同解码缓存区分配方式下图像全部更新和10%局部更新的帧率。这里提到的帧率是指对显存数据的更新速度,而不是指图像的屏幕刷新率,它对刷新率没有影响。基于以上方案设计的嵌入式VGA显示系统在只有系
本文标题:FPGA+桌面弹球游戏+vga显示+ps2键盘
链接地址:https://www.777doc.com/doc-1886026 .html