版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子课程设计报告基于fpga及vga的游戏flappy ball设计姓名:学号: 班级: 联系方式: 同组人: 指导老师: 签名:2014/3/17摘要伴随着嵌入式系统的迅速发展,vga(视频图形阵列)作为一种标准的显示接口得到广泛的应用,ps/2接口也广泛的应用于鼠标和键盘。flappy bird 是近期在各大智能手机平台上非常流行的一款像素游戏,界面简单,游戏过程十分有趣,算法也容易实现。 本次课程设计即是介绍如何基于fpga和vga显示设计一款类似于flappy bird的游戏。本游戏采用verilog hdl语言编写,在quartusii 软件环境下仿真及运行,通过软件及fpga结合将
2、vga显示的结果送到显示器显示,同时运用ps/2接口实现鼠标控制游戏。关键字:fpgavga显示verilog hdlps/2鼠标接口flappy bird 目录一、课题描述4二、整体模块设计4三、vga显示模块设计5.1vga显示原理5.vga时序6.vga显示模块电路实现7.vga显示驱动代码7四、ps/2鼠标接口模块的设计9.ps/2鼠标通信协议9.引脚定义9.ps/2协议概述9. ps/2设备到主机的通信10.主机到ps/2设备的通信10.ps/2鼠标的工作模式11. ps/2鼠标的数据包结构11.ps/2鼠标接口模块电路实现12.ps/2鼠标接口模块数据定义代码14五、最终结果演示1
3、7六、总结及感谢18一、课题描述这是一个基于fpga的vga游戏,利用fpga开发板及外接vga显示器,ps2键盘,实现基本的游戏动作逻辑,并实现与游戏动作逻辑相关的分数判断、声音输出与视频显示效果的修正。与游戏flappy bird类似,小球一直处于自由落体状态并且同时向前移,每点击一次小球就向上运动一段距离,玩家通过点击鼠标使小球不掉落并且不碰到各个障碍,通过一个障碍记一分。本游戏基于fpga芯片为硬件,采用verilog hdl语言编写程序。同时外接显示器显示数据,还运用了鼠标左键单击功能,并且具备扬声器发声功能。二、整体模块设计game:顶层模块,控制调用各个底层模块;game_mai
4、n:游戏主界面的产生及主要动作逻辑的算法实现;vga_ctrl:vga显示驱动模块;ps2_mouse_interface:ps2鼠标接口及动作实现;music:游戏运用蜂鸣器发声;其余模块:游戏开始结束以及分数等的显示。本次课设我主要负责显示模块及ps2鼠标接口模块,故下面重点说明这两个模块。三、vga显示模块设计.1vga显示原理vga(video graphics array),信号类型为模拟类型,显示卡端的接口为15针母插座.vga( video graphics array)作为一种标准的显示接口得到了广泛的应用。vga在任何时刻都必须工作在某一显示模式之下,其显示模式分为字符显示模
5、式和图形显示模式。而在应用中,讨论的都是图形显示模式。vga的图形模式分为二类:cga ,ega兼容的图形模式;标准的vga图形模式;vga扩展图形模式。后两种图形模式统称为vga图形模式。文中基于标准vga模式来实现。工业标准的vga显示模式为:640* 480* 16色*60hz。常见的彩色显示器一般都是 crt(阴极射线管)构成,其引出线共含5个信号:r,g,b(3基色信号),hs(行同步信号),vs(场同步信号).由r,g,b3种基色可以组合出任意所要的颜色.在实验的验证阶段可以仅利用r,g,b3种基色的一元化值(0和1)的不同组合来验证设计的正确性。每一个像素的色彩由r(红,red)
6、 .g(绿,green). b(蓝,blue)三基色构成。显示时采用的是逐行扫描的方式。由vga显示模块产生的水平同步信号和垂直同步信号控制阴极射线管中的电子枪产生电子束,轰击涂有荧光粉的屏幕,产生rgb三基色,于显示屏上合成一个彩色像素点。lcd显示器虽然显示原理与crt不同,但是控制方式和控制信号却是相同的,所以针对crt设计的控制器也可以应用到lcd显小器中。电子束扫描一幅屏幕图像上的各个点的过程称为屏幕扫描。现在显示器都是通过光栅扫描方式来进行屏幕扫描。在光栅扫描方式下,电子束按照固定的路径扫过整个屏幕,在扫描过程中通过电子束的通断强弱来控制电子束所经过的每个点是否显示或显示的颜色,电
7、子枪在vga显示模块产生的行同步、场同步等控制信号的作用下进行包括水平扫描、水平回扫、垂直扫描、垂直回扫等过程。光栅扫描的路径通常为:从上到下扫过每一行,在每一行中从左到右地进行扫描。其过程如下:电子束从屏幕左上角开始向右扫,当到达屏幕的右边缘时,电子束关闭(水平消隐),并快速返回屏幕左边缘(水平回扫),然后在下一条扫描线上开始新的一次水平扫描。一旦所有的水平扫描均告完成,电子束在屏幕的右下角结束并关闭(垂直消隐),然后迅速返回到屏幕的左上角(垂直回扫),开始下一次光栅扫描。.vga显示时序vga时序控制模块是本设计的重要部分,最终的输出信号行、场同步信号必须严格按照vga时序标准产生相应的脉
8、冲信号。对于普通的vga显示器,其引出线共含5个信号:g,r,b(3基色信号),hs(行同步信号),vs(场同步信号)。在5个信号时序驱动时,时序信号包括前两个,它们都有图像显示区和图像消隐区,图像消隐区又分为消隐前肩、同步脉冲区和消隐后肩 。下图为vga行扫描、场扫描的时序图。行同步行消隐rgb图像行消隐下行图hsta tbtdtgtf场同步场消隐rgb图像场消隐下副图vsta tbtdtgtfvga行扫描、场扫描的时序图.vga显示模块电路实现本模块实现了vga图像控制器,原理图如图所示。从设计流程上,严格按照vga行场的时序进行计数。 vga模块原理图.vga显示驱动代码always(p
9、osedge iclk or negedge irst_n)beginif(!irst_n)beginh_cont=0;ovga_hs=1;endelsebegin/if(h_conth_total)if(h_conth_total-1)h_cont=h_cont+1b1;elseh_cont=0;/horizontal syncif(h_cont=h_front-1)/front porch endovga_hs=1b0;if(h_cont=h_front+h_sync-1)/sync pulse endovga_hs=1b1;endend/vertical generator: refer
10、 to the horizontal syncalways(posedge ovga_hs or negedge irst_n)beginif(!irst_n)beginv_cont=0;ovga_vs=1;endelsebegin/if(v_contv_total)if(v_contv_total-1)v_cont=v_cont+1b1;elsev_cont=0;/vertical syncif(v_cont=v_front-1)/front porch endovga_vs=1b0;if(v_cont=v_front+v_sync-1)/sync pulse endovga_vs=1b1;
11、endend四、ps/2鼠标接口模块的设计.ps/2鼠标通信协议.引脚定义如图即为ps/2鼠标接口引脚定义:ps/2接口连接器引脚定义.ps/2协议概述ps/2通信协议是一种双向同步串行通信协议。通信的两端通过clock(时钟脚)同步,并通过国data(数据脚)交换数据。任何一方如果想抑制另外一方通信,只需要把clock拉到低电平。如果是pc机和ps/2设备间的通信,则pcji机必须做主机,也就是说,pc机可以抑制ps/2设备发送数据,而ps/2设备则不会抑制pc机发送数据,也即主机总是在总线上有优先权。一般两设备间传输数据的最大时钟频率是33khz,大多数ps/2设备工作在10-20khz。
12、推荐值在15khz左右,也就是说,clock高、低电平的持续时间都为40us。每一数据帧包含1112位,具体含义如表5所示。ps/2通信数据帧格式数据含义1个起始位总是逻辑08个数据位(lsb)地位在前1个奇偶校验位奇校验1个停止位总是逻辑11个应答位仅用在主机对设备的通信中. ps/2设备到主机的通信ps/2到主机的通信时序如图11所示。数据在ps/2时钟的下降沿读取,ps/2的时钟频率为1016.7khz。对于ps/2设备,一般来说从时钟脉冲的上升沿到一个数据转变的时间至少要有5us;数据变化到下降沿的时间至少要有5us,并且不大于25us,这个时序非常重要应该严格遵循。主机可以再第11个
13、时钟脉冲停止位之前把时钟线拉低,使设备放弃发送当前字节,当然这种情况比较少见。在停止位发送后设备在发送下个包前应该至少等待50us,给主机时间做相应的处理。不过主机处理接收到的字节时一般会抑制发送(主机在收到每个包时通常自动做这个)。在主机释放抑制后,设备至少应该在发送任何数据前等50us。 设备到主机的通信.主机到ps/2设备的通信首先ps/2 设备总是产生,时钟信号如果主机要发送数据它必须首先把时钟和数据线设置为请求。发送状态如下示:(1)通过下拉时钟线至少100 微秒来抑制通讯;(2)通过下拉数据线来应用请求发送然后释放时钟。设备应该在不超过10 毫秒的间隔内就要检查这个状态。当设备检测
14、到这个状态,它将开始产生时钟信号,并且时钟脉冲标记下输入八个数据位和一个停止位。主机仅当时钟线为低的时候改变数据线,而数据在时钟脉冲的上升沿被锁存,这在发生在设备到主机通讯的过程中正好相反。在停止位发送后,设备要应答接收到的字节,就把数据线拉低并产生最后一个时钟脉冲,如果主机在第11 个时钟脉冲后不释放数据线,设备将继续产生时钟脉冲直到数据线被释放,然后设备将产生一个错误。通信时序图如图12,图13所示。主机也可以再第11个时钟脉冲应答位前中止一次传送,只要下拉时钟线至少100us8。主机到设备的通信.ps/2鼠标的工作模式ps/2鼠标的四种工作模式是:reset模式,当鼠标上电或主机发复位命
15、令(0xff)给它时进入这种模式;stream模式鼠标的默认模式,当鼠标上电或复位完成后,自动进入此模式,鼠标基本上以此模式工作;remote模式,只有在主机发送了模式设置命令(0xf0)后,鼠标才进入这种模式;wrap模式,这种模式只用于测试鼠标与主机连接是否正确。. ps/2鼠标的数据包结构标准的ps/2鼠标采用如表6所列的3字节数据包格式发送位移和按键信息给主机。 三字节数据包格式字节d7d6d5d4d3d2d1d0byte1y溢出位x溢出位y符号位x符号位always1中间键右按键左按键byte2x位移增量byte3y位移增量byte4always0always0第4键第5键z位移增量
16、byte1中的bit0、bit1、bit2分别表示左、右、中键的状态,状态值0表示释放,1表示按下。byte2和byte3分别表示x轴和y轴方向的位移计数器,是一个9位二进制的补码整数。其中,最高位作为符号位出现,当鼠标读取输入发现有位移时被计数器更新。这些值是自从上一次发送位移数据包给主机后位移的累计值(即最后一次数据包发给主机后位移计数器被复位)。位移计数器可表示的值的范围是-256+255。如果超过了范围,响应的溢出位就被设置,并且在复位前计数器不会增减。byte4的低四位表示滚轮的位移计数器,也是二进制的补码证书,可表示的值的范围是-8+7;而byte4中的d5、d4表示第5、4键是否
17、按下。一旦位移数据包成功地发送给主机,位移计数器就会复位。同样鼠标在收到主机不是resend(0xfe)命令外的其他命令计数器也会复位。因此,这种数据包由带滚轮的三键三维鼠标产生。若是不带滚轮的三键鼠标,产生的数据包没有byte4其余的相同。.ps/2鼠标接口模块电路实现本模块是ps/2鼠标接口模块,通过ps/2协议与ps/2鼠标通信。可以接收ps/2鼠标发送过来的按键及位移信息,并转换成并行信号输出。原理图如图所示。鼠标接口模块原理图鼠标坐标位置计算模块原理图其中,此模块采用两个有限状态机。m1状态机的功能为同步ps2时钟,在ps2的时钟边沿产生边沿标志。如图21所示。图21 m1状态机图2
18、2 m2状态机m2状态机的功能为初始化ps2鼠标,接收ps2鼠标数据包。如图22所示。完成后进入m2_data_high_1状态,发送d2(d2=1)并进入m2_data_low_2状态,此时向鼠标发送d3位(d3=0),完成发送进入m2_data_high_2状态,向鼠标发送d4,d5,d6,d7(d4=d5=d6=d7=1),完成发送进入m2_data_low_3状态,向鼠标发送奇偶校验位,然后进入m2_data_high_3状态,将数据线拉高,等待鼠标返回应答信号。若ps/2时钟信号下降沿来临时,数据线仍未高电平,则进入m2_error_no_ack状态,此时握手失败,系统将保持m2_e
19、rror_no_ack状态直道下一次复位。否则进入m2_await_response状态接收应答字,接收完成进入m2_verify数据校验,然后进入m2_use状态,锁存输出数据,并进入m2_wait状态,等待接收数据,当检测到时钟下降沿后进入m2_gather状态,进行接收鼠标数据包,接收完成进入m2_verify状态,这便形成了数据接收循环。.ps/2鼠标接口模块数据定义代码module ps2_mouse_interface (clock, reset, /复位,高电平有效 ps2_clk, ps2_data,ps2_clk_dir,ps2_data_dir, left_button,
20、right_button, middle_button, x, y, data_ready); /数据已经正确收到 /i/o 口定义input clock;input reset;inout ps2_clk; /ps/2时钟线,inout ps2_data; /ps/2数据线output ps2_clk_dir; /ps/2时钟方向控制,高电平为输出,低电平为输入output ps2_data_dir; /ps/2数据方向控制,高电平为输出,低电平为输入output left_button;output right_button;output middle_button;output 9:0
21、x;output 9:0 y;output data_ready;/输出寄存器reg left_button_r;reg right_button_r;reg middle_button_r;reg 8:0 x_increment_r;reg 8:0 y_increment_r;reg data_ready_r;reg ps2_clk_out_r;reg ps2_data_out_r;reg ps2_clk_dir_r;reg ps2_data_dir_r;reg 9:0 x;reg 9:0 y;/内部节点wire watchdog_timer_done; /看门狗状态指示,sp2无时钟脉冲超
22、过400us置位wire timer_5us_done; /用于延时缓冲,防止毛刺干扰wire packet_good; /数据包正确收到-状态指示wire ps2_clk_in; /ps/2时钟线,输入口wire ps2_data_in; /ps/2数据线,输入口wire ps2_clk_out; /ps/2时钟线,输出口wire ps2_data_out; /ps/2数据线,输出口wire 8:0 x_increment;wire 8:0 y_increment;/内部寄存器reg total_bits-1:0 q; /移位寄存器reg 2:0 m1_state;reg 2:0 m1_ne
23、xt_state;reg 3:0 m2_state;reg 3:0 m2_next_state;reg 5:0 bit_count; /发送接收数据是的位计数器reg watchdog_timer_bits-1:0 watchdog_timer_count; /看门狗计时器,400usreg timer_5us_bits-1:0 timer_5us_count; /5us计时器reg ps2_clk_in_r; /同步后的ps2时钟reg ps2_data_in_r; /同步后的ps2数据reg sync_clk; /滤波后的ps2时钟-由状态机m1产生输出reg rising_edge; /
24、ps2时钟上升沿标志-由状态机m1产生输出reg falling_edge; /ps2时钟下降沿标志-由状态机m1产生输出/计时器参数/当系统时钟改变时要得新计算参数值/参数值要求:/watchdog_timer_value: 大于100us 小于15ms/timer_5us_value: 1us到20us都行parameter watchdog_timer_value = 20000; /看门狗计时器,400usparameter watchdog_timer_bits = 15; /400us计时器所需计数器位数parameter timer_5us_value = 250; / 5us计数值parameter timer_5us_bits = 8; / 5us计时器所需计数器位数/状态机m1参数表parameter m1_clk_h = 3b000, m1_falling_edge = 3b001, m1_falling_wait = 3b011, m1_clk_l = 3b010, m1_rising_edge = 3b110, m1_rising_wait = 3b100;/状态机m2参数表parameter m2_reset
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学自然课程学习设计:理论、方法与实践的深度探索
- 2026年元宇宙基础设施项目商业计划书
- 2025年河北政法职业学院马克思主义基本原理概论期末考试笔试真题汇编
- 2026年智能零售AI系统项目公司成立分析报告
- 2026年教育行业绿色发展专员面试题集及答案参考
- 湖南体育职业学院《形势与政策》2023-2024学年第一学期期末试卷
- 2026届四川成都列五中学高三上学期一诊历史试题含答案
- 2026年投资分析师面试题集专业问题一网打尽
- 护理查房案例分析
- 工程建设领域专项治理工作汇报
- JT∕T 900-2023 汽车售后维修服务客户满意度评价方法
- QBT 2959-2008 钢板网行业标准
- 特种设备管理机构
- 医疗耗材配送服务方案
- 2024年初级会计《初级会计实务》考试训练题(含答案)
- (完整word版)英语四级单词大全
- 井下作业技术油水井措施酸化课件解析
- 劳动教育融入思政课一体化建设路径探索 论文
- 旅游接待业 习题及答案汇总 重大 第1-10章 题库
- 热电有限公司突发事件安全保卫应急预案
- 财务管理形考任务4
评论
0/150
提交评论