数电实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字逻辑与数字电路实验报告

实验名称简易迷宫游戏

一、设计课题的任务要求

题目:简易迷宫游戏

设计并实现一个简易迷宫游戏机。

【基本要求】:

1、用8×8 点阵进行游戏显示。

2、迷宫游戏如图1 所示,采用双色点阵显示,其中红色LED 为迷宫墙壁,绿色LED表示人物。通过BTN0~BTN3 四个按键控制迷宫中的人物进行上下左右移动,使人物从起始点出发,走到迷宫的出口,游戏结束。

3、普通计时模式:通过按键BTN7 启动游戏,必须在30 秒内找到出口,否则游戏失败。用两个数码管进行倒计时显示。游戏胜利或者失败均要在8×8 点阵上有相应的画面出现。

4、迷宫中的人物在行走过程中,如果碰到墙壁,保持原地不动。

【提高要求】:

1、多种迷宫地图可以选择。

2、在计时的基础上增加计步的功能,每按一次控制按键步数加1,碰壁不计算步数,计步结果用数码管显示。

3、为游戏增加提示音乐,在不同时间段采用不同频率的信号控制蜂鸣器发声报警。

4、增加其他游戏模式。

5、自拟其它功能。

二、系统设计(包括设计思路、总体框图、分块设计)

设计思路:

依据题目要求,在实验中需要使用到8*8双色点阵输出迷宫图案,使用数码管输出计步步数和倒计时时间,使用蜂鸣器发出警报。由于实验要求需要使用到大量的按键输入。所以需要在输入输出模块中需要按键消抖模块。实验的输出模块共有点阵输出模块,数码管输出模块,蜂鸣器输出模块,在数码管和点阵输出中需要使用到扫描输出的概念。在游戏进行中需要实时判断并且记录人的位置,需要进行记时,计步,所以在整个系统中需要使用状态机进行当前状态转换,控制整个程序。所以在核心实现模块中包括行走模块,状态输出模块,计步模块,计时模块。

输入部分:消抖模块

时钟部分:多级分频器

控制部分:倒计时器,计步器,行走模块,状态机

输出模块:点阵输出模块,数码管输出模块,蜂鸣器输出模块总体框图:

总体框图

系统详细框图

实际电路连接图

状态转移图

系统流程图

分块设计:

1.分频器

实验使用的实验板能产生50MHz的时钟信号,利用分频器产生各种频率的时钟,作为各个模块的时钟输入。本实验需要的频率较多,为节约资源,分频器采用多级分频的原理,产生250MHz作为数码管扫描和点阵扫描信号,产生1000Hz作为按键消抖以及状态转移的时钟,产生1Hz作为计时器的时钟信号。

2.按键消抖

机械按键会产生机械抖动,这种抖动会造成按键信号的重复输入,所以我们要消除这种机械抖动。按键消抖将高电平持续时间少于8us的按键信号,作为抖动信号舍弃,只有按键信号的高电平持续时间长于8us的信号作为真正的按键输入,去除按键抖动。

3.计时器

本计时器需要实现两个功能,一是游戏开始前的5秒倒计时,以及游戏过程中的30秒倒计时。为了方便在数码管以及点阵显示,输出信号不再是一个整数,而是分为个位、十位分别输出,这就要求在计时器内部为两个级联的计数器,为别对个位、十位分别计数。第一级计数得到个位数,第二级计数得到十位数。

4.状态机

为了方便各个模块在不同的游戏阶段有不同的动作,我将整个游戏分为9个状态,由各种控制信号输入的控制下进行状态转移。总体支配整个游戏进程。状态机实现使用了三进程描述,结构更加清楚。

5.行走模块

行走模块是整个游戏的核心模块。上、下、左、右的控制信号由按键输入经过消抖和转换之后进入行走模块,行走模块按照当前的输入,判断即将走到的地方是否为终点,到达终点时则发出―win‖信号,若不是终点则判断是否为迷宫的墙,如果是墙,发出0.1s的撞墙信号,如果不是墙则发出修改坐标,并且发出行走信号。将下一状态的坐标输出到点阵使得点阵能正确输

出人的位置。

6.计步器

根据行走模块输出的行走信号进行计数,也需要在进行级联计数器,分别得到个位数与十位数。第一级计数得到个位数,第二级计数得到十位数。

7.数码管输出

数码管为共阴极扫描输出,并且分别各使用2位显示计步步数,以及倒计时时间。

8.点阵输出

根据不同的状态输出不同的点阵图案。点阵输出时为节省有限的管脚资源,使用了扫描输出,逐行扫描,依据扫描计数输出当前的行选信号,红色点阵,绿色点阵。

9.蜂鸣器

根据行走模块输出的撞墙信号输出频率为1000Hz的声音。

三、仿真波形及波形分析

1.多级分频器仿真波形:

从上面3张图可以看出clk-out1是clk的5分频,clk-out2是clk-out1的5分频,clk-out3是

clk-out2的5分频,实现了多级分频器的功能

2.按键消抖模块仿真:

从图中可以看出在按键按下时间持续不到5个周期时,则认为是按键抖动,在按下时间超过5个周期时,则认为是一次有效的按键输入,实现了消抖功能

3.模6计数器仿真

4.模8计数器仿真

5.方向转换电路仿真:

原地不动即up、down、lefting、righting没有输入对应dir―000‖,向上走对应―001‖,向下走对应―010‖,向左走对应―011‖,向右走对应―100‖

6.点阵输出模块仿真

当输入状态为―0000‖,点阵输出选择地图的画面。

当输入状态为―0001‖时,点阵输出地图1的画面。

当输入状态为‖0010―时,点阵输出地图2的画面。

当输入状态是‖0011‖时,根据时间输入,点阵分别输出1、2、3、4、5

当输入状态是‖0100‖时,根据时间输入,点阵分别输出1、2、3、4、5

当输入状态是‖0101―,点阵输出红色与绿色双色图案,显示地图1及当前小人位置。

相关文档
最新文档