数字系统课程设计挑战迷宫小游戏.doc

上传人:土8路 文档编号:10271574 上传时间:2021-05-04 格式:DOC 页数:11 大小:2.03MB
返回 下载 相关 举报
数字系统课程设计挑战迷宫小游戏.doc_第1页
第1页 / 共11页
数字系统课程设计挑战迷宫小游戏.doc_第2页
第2页 / 共11页
数字系统课程设计挑战迷宫小游戏.doc_第3页
第3页 / 共11页
数字系统课程设计挑战迷宫小游戏.doc_第4页
第4页 / 共11页
数字系统课程设计挑战迷宫小游戏.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《数字系统课程设计挑战迷宫小游戏.doc》由会员分享,可在线阅读,更多相关《数字系统课程设计挑战迷宫小游戏.doc(11页珍藏版)》请在三一文库上搜索。

1、挑战迷宫学号:61010XXX姓名:XX1、申请题目:挑战迷宫n 题目,命题描述(5号宋体)这是一个基于FPGA控制点阵板显示的益智趣味类小游戏,游戏中玩家通过键盘键控制控制人物上下左右移动,从起始点出发,目的是走到迷宫的出口。游戏有着友好的用户界面,而且有多种模式,多种地图供玩家选择。1.普通不计时模式:玩家可以看到整个迷宫地图,游戏没有时间限制;2.普通计时模式:玩家可以看到整个迷宫地图,必须在20秒内找到出口,否则游戏失败;3.高级不计时模式:玩家并不能看到整个迷宫的地图,只能看到其周围的2步以内部分路径,其他路径需要靠自己移动来探索,这样就仿佛置身迷宫之中,更有可玩性,游戏没有时间限制

2、;4.高级计时模式:同样玩家:玩家并不能看到整个迷宫的地图,只能看到其周围的2步以内部分路径;必须在20秒内找到出口,否则游戏失败。2、课题背景:n 存在问题、应用背景走迷宫是大家所非常熟悉的一款小游戏,规则简单,老少皆宜,可以段炼玩家的判断力和观察力;而且其不同于普通的走迷宫游戏,增加了一些趣味性玩法及创新点,可供人们平时娱乐所用。该游戏主要在LED点阵板上实现,做成电脑软件效果将更佳。3、项目规划: n 功能、指标、规模功能:1. 游戏开始之前,玩家通过键盘选择游戏模式和游戏地图,然后启动游戏,其中有相应的指示灯提示;2.点阵板显示中,以黄色表示玩家,绿色表示迷宫出口,红色表示迷宫墙壁;玩

3、家通过键盘上相应的键控制人物的上下左右移动。胜利或失败后有相应的画面出现,能够通过按键重新启动游戏。3.计时模式中,数码管显示倒计时;指标: 游戏中主要采用16X16点阵板显示地图,计时模块中,时间限制为20秒比较合理。规模:由于涉及数据结构在硬件语言中的实现与优化,具有多种模式下点阵板的操作,本项目难度为中上。由于硬件语言中使用了大量矩阵,所有功能都实现后,占用的逻辑单元的总数在5000多左右。n 面板(显示)、操作、规则显示面板:数码管:第一位表示关卡,后两位表示倒计时时间。 LED显示灯:操作:游戏规则:本游戏的规则相对简单。玩家使用键盘操纵一个人,在规定的时间内走到迷宫出口即可胜利。n

4、 输入、输出接口键盘输入输出接口;点阵板扫描、显示接口。4、实现方案: n 核心问题1. 多种模式下的选择和表示;2.对LED点阵板中迷宫地图的显示和人物移动的显示控制;3. 点阵中只显示人物周围的2步以内部分路径。n 解决方案1. 对于多种模式,使用状态机的不同状态来表示,这样就可以通过状态来作为后面点阵显示模块的使能信号;2. 点阵板的显示:点阵板的行采用扫描信号的形式扫描,16位行输出信号依次为:”1111111111111110”,”1111111111111101”,”1111111111111011,1111111111110111,1111111111101111等(低电平使能)

5、;当相应的行选中时,输入相应的红灯16位列信号,绿灯16位列信号,这样红灯和绿灯的信号就有16X16个需要存储; 分别用两个16X16的矩阵存储红灯和绿灯的信号,当点阵板第一行选中时,输出矩阵第一行的16位信号;当点阵板第二行选中时,输出矩阵第二行的16位信号;以此类推。 采用一个16X16的矩阵显示人物的位置,事先知道人物点的位置坐标,当上下左右键按下后,就修改该矩阵中的值,最后把该矩阵和红灯信号的矩阵和绿灯信号的矩阵相与作为红灯和绿灯的输出。3. 定义一个初始化为全0的16X16的矩阵,当每次人物点移动时,把人物坐标周围2步以内的点对应的矩阵中的值修改为1;输出的红灯信号的矩阵和绿灯信号的

6、矩阵与这个矩阵相与输出。5、系统结构:n 系统框图n 模块功能描述分频器模块fenping:对输入的2MHz信号进行不同的分频,分别产生1KHz、100Hz、2Hz、1Hz的时钟信号。键盘模块keyboard: 外接键盘,当键盘按下键时,输出按下的键值(用4位二进制数表示)和相应的按键脉冲。状态机模块statemachine: 输入键盘按键信号,输出4位二进制数来表示不同的状态。 游戏关卡选择模块hard_setting: 当状态为关卡选择状态时,初始输出值为1,按下A键关卡加一,按下D键关卡减一。 倒计时模块daojishi: 当选中计时模式并游戏开始后,倒计时开始,共20秒,倒计时最后3秒

7、时输出2Hz蜂鸣器信号,倒计时结束时输出timeover信号为1. 点阵控制模块maze: 存储着不同关卡的地图矩阵,游戏未开始时,用相应关卡的地图矩阵初始化输出矩阵;游戏开始后,检测上下左右键,若有键按下,修改人物矩阵中相应的值,输出红色和绿色点阵的矩阵值,供扫描显示模块使用。 点阵扫描显示模块display: 把输入的相应红色和绿色矩阵值与点阵扫描信号关联,产生16位红色输出信号和生16位绿色输出信号,连接至点阵板。n 模块接口标注(参数、协议)键盘行列输入输出信号:游戏关卡显示数码管:倒计时显示数码管: 点阵板行扫描信号:点阵板红灯信号:点阵板绿灯信号:LED显示灯信号:时钟输入信号:6

8、、状态流程图:n 系统工作状态流程7、各主要模块仿真结果波形n 各模块的仿真波形,详细注释输入输出功能端口1.键盘模块波形图:输入输出功能端口:CLK:输入2MHz时钟信号KEY_down_:输出按下键的脉冲col3.0:列扫描信号row3.0:行输入信号q3.0:4位键盘码信号波形意义:从波形可以看出,可以成功产生列扫描信号,而且按下F键,和4键后可以输出相应的键值,且能产生按键脉冲。2. 状态机模块波形图: 输入输出功能端口:CLK:时钟信号1、2、A、B、C、D、E、F:键盘按键信号X1:暂停信号STATE:输出状态信号波形意义:波形表示在初始状态0000下,按下“F”键启动控制器进入0

9、001状态,通过按“1” 选择,普通不计时模式0100,按下E键确认地图,开始游戏进入1000状态;在初始状态0000下,按下“F”键启动控制器进入0001状态,通过按“2” 选择普通计时模式0101,按下E键确认地图,开始游戏进入1001状态,按F键结束游戏回到初始状态。可见状态机功能可以实现。3.倒计时显示模块波形图: 输入输出功能端口:A3.0: 4位键盘按键码State:当前状态CLK1Hz:1Hz时钟信号MinH:分钟高位MinL:分钟低位SecH:秒高位SceL:秒低位波形意义:可以看出在计时模式状态中可以实现倒计时的功能。4.本系统仿真涉及两个16*16自定义矩阵向量,超出Qua

10、tus 提供的pin脚上限,故游戏控制模块仿真无法实现,实际中采用直接烧进FPGA中调试,此处模块仿真略。8、课程设计总结n 预期的目标与当前实现功能的差异详细注释游戏结果基本实现了预期的全部主要功能,完全编译已经需要5200多个门,考虑到FPGA门数的限制(只有约6000个门),我省略了游戏中的双人模式;而且由于时间和资源的有限,程序内部只预置了两幅地图。n 可以进一步发挥提高的部分1. 可以增加双人模式,两个玩家同时走迷宫,比较谁最先走出迷宫,增加游戏的趣味性和竞争性;2. 可以为游戏增加提示音乐,让其更完美、更人性化。n 课程设计体会首先,这次的课程设计让我学会了VHDL语言,让我深深体

11、会到语言设计的强大性和简洁性,然而,虽然用语言编写有很大的优势,但这毕竟是一个相当大的系统,再加上VHDL语言的严谨性,要想让整个系统的逻辑结构清晰明了,完全不出错误,也是一件煞费苦心的事情,由于用了许多矩阵,程序关编译就需要好几分钟的时间,所以这毫无疑问花费了我大把的时间去调试。由于之前有用语言编写健身自行车的基础,前面模式选择以及状态机什么的都很快调试成功了;但点阵板却完全不是轻而易举就能成功的。首先,光其原理我就研究了好一阵子,理解了编写出来也是错误百出,起初烧进去点阵板也是一点反应也没有。但是经过锲而不舍的调试运行,最终还是完美的成功了。整个一个数字系统的设计让我初次体会了从申请一个项目到实施、中途经历的学习、解决问题等等诸多以前从未有过的体验,也是对自身的一次锻炼。9、参考文献1. VHDL数字电路设计教程, Volnei A. Pedroni, 乔庐峰/王志功 电子工业出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1