北京邮电大学数字电路实验迷宫游戏

玛丽莲梦兔
644次浏览
2021年01月01日 04:18
最佳经验
本文由作者推荐

低值易耗品的管理-最开心

2021年1月1日发(作者:严恽)


数字电路综合实验报告

数字电路综合实验报告



学 院:信息与通信工程学院
班 级:
班内序号:
姓 名:
学 号:
选作题目:简易迷宫游戏


数字电路综合实验报告

一、 课题的任务要求
1、基本要求:
1) 用8×8点阵进行游戏显示。
2) 迷宫游戏如下图所示,采用双色点阵显示,其中红色LED为迷宫 墙壁,
绿色LED表示人物。通过BTN0~BTN3四个按键控制迷宫中的人物进
行上下左右 移动,使人物从起始点出发,走到迷宫的出口,游戏结束。
3) 普通计时模式:通过按键BTN7启 动游戏,必须在30秒内找到出口,否
则游戏失败,用两个数码管进行倒计时显示。游戏胜利或者失败均 要在
8×8点阵上有相应的画面出现。
4) 迷宫中的人物在行走过程中,如果碰到墙壁,保持原地不动。
2、提高要求:
1) 多种迷宫地图可以选择。
2) 在计时的基础上增加计步的功能,每按一次控制按键步数加1,碰壁不 计
算步数,计步结果用数码管显示。
3) 为游戏增加提示音乐,在不同时间段采用不同频率的信号控制蜂鸣器发
声报警。
4) 增加其他游戏模式。
5) 自拟其它功能。
二、 系统设计(包括设计思路、总体框图、分块设计)
1、整体设计思路:

通 过分析迷宫游戏的特点,将迷宫游戏的实现分为三大核心功能模块,一
是控制模块controller ,是整个游戏的“枢纽”,负责处理玩家的输入信号,控制
整个游戏阶段的跳转,游戏胜负的判断,以及 输出相应显示模块的控制信号。二
是计时兼数码管显示模块timer,负责倒计时以及倒计时的显示, 游戏已走步数
的显示,并产生蜂鸣器的控制信号。三是点阵显示模块lattice,通过接收控制模< br>块的控制信号,控制不同游戏模式或状态下的点阵输出。其他次要模块主要为:
分频模块,防抖模 块,蜂鸣器驱动模块。
迷宫游戏的划分方框图如下:

图2.1 迷宫游戏的逻辑划分方框图
1 22


数字电路综合实验报告

2、
总体框图:

顶层连接图如下:

图2.2 系统顶层设计图

3、分块设计:
1) 控制模块(controller)
通过分析控制模块的随着游戏进程的状态变化,可将控制器分为七
个状态,分别是
① WaitMsg:待机状态,等待玩家BTN0(进入游戏)的输入,跳转至
ChoModes。
② ChoModes:选择游戏模式状态,等待玩家BTN0(模式1)或BTN1
(模式2 )的输入,跳转至ChoLevel。
③ ChoLevle:选择游戏难度状态,等待玩家BTN0 (难度1)或BTN1
(难度2)的输入,跳转至ChoMaps。
④ ChoMaps:选 择游戏地图状态,等待玩家BTN0(地图1)、BTN1
(地图2)、BTN2(地图3)、BTN3 (随机选择)其中之一的输入,
跳转至Moving。
⑤ Moving:游戏状态,等待玩 家BTN0(上)、BTN1(下)、BTN2(右)、
BTN3(左)其中之一的输入,通过判断游戏 终止条件,如是否时间
到,步数用尽,或到达终点,来转移状态至Win,或Lose。
⑥ Win:游戏胜利状态,玩家在规定时间与步数内到达终点,等待玩
家BTN7(复位键)的输入,跳转 至WaitMsg。
⑦ Lose:游戏失败状态,时间用尽或步数到达上线,等待玩家BTN7(复位键)的输入,跳转至WaitMsg。
在任何状态下,只要收到BTN7(复位)的信号,状态都会转移到WaitMsg。
对应的逻辑流程图如下:

2 22


数字电路综合实验报告

图2.3 迷宫游戏控制器逻辑流程图

图2.4 controller模块元件图
2) 计时兼数码管显示模块(timer)
timer模块受到controller模块的控制,co ntroller模块将传递游戏状
态信号、计时控制信号、游戏难度信号以及已走步数信号给time r。timer
模块利用case选 择语句对相应的控制信号做出相应。并利用视觉暂留效
应,将时间与已走步数显示在数码管上。
3 22


数字电路综合实验报告

图2.5 timer元件图

以下是控制数码管显示的代码,负责同时显示时间和已走步数:
IF cont_display =4 THEN –模为5的计数器,轮流显示5个数字




cont_display<=0;
cont_display<= cont_display+1;
ELSE
END IF;
CASE cont_display IS –通过选择计数器的状态,来显示相应的数字
WHEN 0 =>


con_nixietube<= 时间的个位
con_nixietube<= 时间的十位
WHEN 1 =>
WHEN 2 =>
con_nixietube<= 已走步数的个位
WHEN 3 =>
con_nixietube<= 已走步数的十位
WHEN 4 =>
con_nixietube<= 已走步数的百位
END CASE;
3) 点阵显示模块(lattice)
Lattice模块 同样也受到controller模块的控制,controller模块将
传递游戏状态信号,游戏模 式信号,游戏地图信号,根据不同的游戏
阶段显示出不同的图案。其中迷雾模式的显示是一个小难点,首 先通
过判断y的值,给相邻两行赋上地图,其他置零,然后判断x的值给
相邻两行中的部分元素 置零,最后达到只显示坐标点周围一格内有地
图的显示的效果。

图2.6 lattice模块元件图
4 22


数字电路综合实验报告

迷雾显示部分代码如下:
CASE y IS - --根据y的取值给临时列向量赋值,只给y临近三列赋值,其他为零,临时列向量最
终给输出向量赋值
WHEN 0 =>
colg_tmp0<=colg0;
colg_tmp1<=colg1;
WHEN 1 =>
colg_tmp0<=colg0;
colg_tmp1<=colg1;
colg_tmp2<=colg2;
WHEN 2 =>
colg_tmp1<=colg1;
colg_tmp2<=colg2;
colg_tmp3<=colg3;
WHEN 3=>
colg_tmp2<=colg2;
colg_tmp3<=colg3;
colg_tmp4<=colg4;
WHEN 4=>
colg_tmp3<=colg3;
colg_tmp4<=colg4;
colg_tmp5<=colg5;
WHEN 5=>
colg_tmp4<=colg5;
colg_tmp5<=colg5;
colg_tmp6<=colg6;
WHEN 6=>
colg_tmp5<=colg5;
colg_tmp6<=colg6;
colg_tmp7<=colg7;
WHEN 7=>
colg_tmp6<=colg6;
colg_tmp7<=colg7;
END CASE;
CASE x IS --根据x的值,对横向部分进行处理,只留下x临近三个的值,其他置零。
WHEN 0=>colg_tmp0(7 DOWNTO 2)<=







colg_tmp1(7 DOWNTO 2)<=
colg_tmp2(7 DOWNTO 2)<=
colg_tmp3(7 DOWNTO 2)<=
colg_tmp4(7 DOWNTO 2)<=
colg_tmp5(7 DOWNTO 2)<=
colg_tmp6(7 DOWNTO 2)<=
colg_tmp7(7 DOWNTO 2)<=
WHEN 1=>
5 22


数字电路综合实验报告







































colg_tmp0(7 DOWNTO 3)<=
colg_tmp1(7 DOWNTO 3)<=
colg_tmp2(7 DOWNTO 3)<=
colg_tmp3(7 DOWNTO 3)<=
colg_tmp4(7 DOWNTO 3)<=
colg_tmp5(7 DOWNTO 3)<=
colg_tmp6(7 DOWNTO 3)<=
colg_tmp7(7 DOWNTO 3)<=
colg_tmp1(7 DOWNTO 4)<=
colg_tmp2(7 DOWNTO 4)<=
colg_tmp3(7 DOWNTO 4)<=
colg_tmp4(7 DOWNTO 4)<=
colg_tmp5(7 DOWNTO 4)<=
colg_tmp6(7 DOWNTO 4)<=
colg_tmp7(7 DOWNTO 4)<=
colg_tmp0(7 DOWNTO 5)<=
colg_tmp1(7 DOWNTO 5)<=
colg_tmp2(7 DOWNTO 5)<=
colg_tmp3(7 DOWNTO 5)<=
colg_tmp4(7 DOWNTO 5)<=
colg_tmp5(7 DOWNTO 5)<=
colg_tmp6(7 DOWNTO 5)<=
colg_tmp7(7 DOWNTO 5)<=
colg_tmp0(7 DOWNTO 6)<=
colg_tmp1(7 DOWNTO 6)<=
colg_tmp2(7 DOWNTO 6)<=
colg_tmp3(7 DOWNTO 6)<=
colg_tmp4(7 DOWNTO 6)<=
colg_tmp5(7 DOWNTO 6)<=
colg_tmp6(7 DOWNTO 6)<=
colg_tmp7(7 DOWNTO 6)<=
colg_tmp0(7)<='0';colg_tmp0(3 DOWNTO 0)<=
colg_tmp1(7)<='0';colg_tmp1(3 DOWNTO 0)<=
colg_tmp2(7)<='0';colg_tmp2(3 DOWNTO 0)<=
colg_tmp3(7)<='0';colg_tmp3(3 DOWNTO 0)<=
colg_tmp4(7)<='0';colg_tmp4(3 DOWNTO 0)<=
colg_tmp5(7)<='0';colg_tmp5(3 DOWNTO 0)<=
colg_tmp6(7)<='0';colg_tmp6(3 DOWNTO 0)<=
colg_tmp7(7)<='0';colg_tmp7(3 DOWNTO 0)<=
WHEN 2=>colg_tmp0(7 DOWNTO 4)<=
WHEN 3=>
WHEN 4=>
WHEN 5=>
WHEN 6=>
6 22


数字电路综合实验报告
















colg_tmp0(4 DOWNTO 0)<=
colg_tmp1(4 DOWNTO 0)<=
colg_tmp2(4 DOWNTO 0)<=
colg_tmp3(4 DOWNTO 0)<=
colg_tmp4(4 DOWNTO 0)<=
colg_tmp5(4 DOWNTO 0)<=
colg_tmp6(4 DOWNTO 0)<=
colg_tmp7(4 DOWNTO 0)<=
colg_tmp0(5 DOWNTO 0)<=
colg_tmp1(5 DOWNTO 0)<=
colg_tmp2(5 DOWNTO 0)<=
colg_tmp3(5 DOWNTO 0)<=
colg_tmp4(5 DOWNTO 0)<=
colg_tmp5(5 DOWNTO 0)<=
colg_tmp6(5 DOWNTO 0)<=
colg_tmp7(5 DOWNTO 0)<=
WHEN 7=>

4) 分频模块(div_cl)
系统中的各个模块的输入时钟频率不全部相同,且得满足一定的
要 求,如点阵显示与数码管显示输入频率不能太高,实验板提供的
50Mhz频率太高,需要分频。为了保 证控制模块的控制信号能及时被
被控制模块接收,控制模块的时钟频率需要小于被控制模块。综合以上考虑,从50MHz的晶振频率分出1Hz供计时器用,500Hz供点阵显
示和数码管显示用, 50Hz供控制器模块用。
5) 防抖模块(anti_shake)
为了稳定玩家的输入信号,需要加入防抖模块。所用到的按键都需
要做防抖处理。
END CASE;

图2.7 防抖模块元件图






7 22


数字电路综合实验报告
三、 仿真波形及波形分析
每个模块的分频系数不尽相同,不方便对整个系统进行仿真,因此 仅对
较为重要的控制器模块,计数器及数码管控制模块,点阵控制模块三个模块
进行仿真。
a) 控制器模块(lattice)的仿真:
输入信号设置:复位键置零,时间终止信号置零, 选择地图1
(turn_up=‘1’), 模式1(turn_up=‘1’),难度1(turn_up=‘1’),进入游戏后,
先向左(tu rn_left=‘1’),后一直向下(turn_down=‘1’)


图3.1 控制器仿真输入信号设置

仿真结果:由下图可看出,输出游戏状 态(game_state_out)正常地跳
转,从待机状态(000)到选择模式(001),到选 择游戏难度(110),到选
择地图(010),最后到游戏进行状态(011)。


图3.2 游戏状态输出信号

控制器的状态也正常的跳转,从选择模式状态(ChoModes),到选择难

度状 态(ChoLevel),再到选择地图状态(ChoMaps),最后到游戏进行状态
(Moving )

图3.3 控制器状态跳转



玩家坐标点的变化如下,与控制信号及相应地图保持一致:

图3.4 坐标值变化

在地图1上的运动轨迹如下(坐标原点在右上角):
8 22


数字电路综合实验报告

图3.5 运动轨迹
b) 点阵显示模块(lattice)的仿真:
1、进入待机状态,即game_state_in=”000”,如下图

图3.6 输入控制信号game_state_in=”000”
此时应输出设定的待机画面


图3.7 点阵绿色列控制向量

图3.8 点阵行控制向量
2、当进入游戏状态
输入设定为游戏模式为“01” (普通模式),地图为“01”,当前坐标点为
x=2,y=2(从0到7),输入游戏状态由设定模式 到设定地图最后到游戏进行
时:

图3.9 输入信号设置
此时的应输出 第一副地图,以及在输出第三行时,输出信号colr为
“00000100”,如下图,colg来显 示地图(绿色),colr用来显示位置(红色)。
9 22


数字电路综合实验报告

图3.10输出信号

当输入的游戏模式为迷雾模式“10”,此时地图仅显示周围一部分,其
他设置不变,此时的输出如下 图,可清楚的看到只有坐标点上下左右一格有
显示

图3.11 输出信号

c) 计时器及数码管显示模块(timer)的仿真:
该模块负责计时以及将时间和已走步数用数码管显示出来。
检查是否能正常输出控制信号,输入信号如下图所示,输入的已走步数
为22,不计时状态。

图3.12 输入信号设置
此时的输出应是显示时间为“00”,显示已走步数为“022”.
10 22


数字电路综合实验报告

图3.13 输出信号







四、 功能说明及资源利用情况
1、功能说明:
1) 开机小动画,游戏胜利小动画以及游戏失败小动画
玩家从待 机模式,按下BTN0按键进入选择游戏模式阶段,此间有个
小动画(锁打开的渐变过程)。同时,当游 戏胜利或失败都有相应的动
画显示。

图4.1 待机界面
2) 两种游戏模式
① 为基本要求中的普通模式 。
② 迷雾模式,即只能看到相距一格的地图。
11 22


数字电路综合实验报告


图4.2 选择游戏模式界面

图4.3 迷雾模式界面
3)
4)
两种游戏难度
① 限制游戏时间为30s。
② 限制游戏时间为20s,限制游戏步数不超过30步。
三幅内置地图以及随机选地图功能


图4.4 选择地图界面 图4.5 地图1



图4.6 地图2 图4.7 地图3

5)
6)
倒计时报警功能
当时间仅剩1 0秒时,蜂鸣器会发出频率约为1Hz的声音。当仅剩5
秒时,蜂鸣器会发出频率约为0.5Hz的声音 。
能够统计已走步数
在所有模式中都支持统计已走步数,并用数码管显示。











12 22


数字电路综合实验报告
2、资源利用情况:


由上图可得,元器件利用率为76%。





五、 故障及问题分析
问题一:点阵显示不正常。
问题描述:点阵显示十分暗。
问题解决:经过询问老师 ,发现输入频率太高,未经分频就将50MHz
接入,降低频率后显示正常。
问题二:数码管显示不正常。
问题描述:数码管需要显示五个数字,但没办法同时清晰的显示。
问题解决:与问题一的原因类似,输入时钟频率太高,调低频率之后解
决了问题。
问题三:点阵显示无法按照预定模式跳转。
问题描述:当游戏从选择游戏模式阶段到选 择游戏地图阶段,点阵没有
显示相应的选择画面,而是直接跳转到游戏进行时阶段。
问 题解决:通过分析,发现点阵显示模块输入的时钟频率远远小于控制
模块,导致控制模块发出的控制信号 ,点阵显示模块没法及时的接受。通过调整
两个模块接入的时钟频率,顺利解决了问题。
问题四:timer模块仿真波形毛刺太多
问题解决:通过查阅资料,发现异步模式的代 码是造成大量冒险的主要
原因,将代码重写成同步的,毛刺就减少到可接受范围了。




13 22


数字电路综合实验报告

六、 总结和结论
在这次数电综 合实验中,我收获了很多,将上学期的知识运用到了实际,
丰富了独立设计一个小系统的经验。
1、自顶向下的程序设计思想


通过老师第一次课的教导以及 自己阅读教材,我觉得自顶向下的思想比
较适合设计迷宫游戏,于是决定采用这种编程思路。首先分析出 整个游戏主要的
功能模块,整体把握整个系统的流程,分析出每个功能模块的IO接口,然后再
具体实现每个模块的功能,其中控制模块是最重要的部分,它掌握着整个游戏的
流程,先实现控制模块, 再去实现其他模块,能让自己对整个程序有个更好的把
握。
2、初步明白了硬件编程语言与软件编程语言的区别
这次实验是我第一次运用HDL实现一 个小系统,因为之前一直习惯用C++
这种高级语言编程,在这次实验中也碰了一些壁。但最后也领悟到 了一些区别,
首先VHDL中的有些语句是不能综合的,比如除法就不能在硬件上直接实现,也
不能用下标带变量的向量直接给输出信号赋值。在自己写的第一版程序中就有许
多用到除法的地方,最后 只能想办法绕过了除法。其次,硬件编程要考虑时延、
冒险等问题。总之硬件编程要时刻关注自己写的代 码能不能在硬件上实现以及硬
件上的时序问题。
3、增强了仿真能力
老师 在第一次课上反复提醒我们软件仿真的重要性,自己在实验过程中深有
体会,在每个模块写好之后,我都 仔细仿真过了一遍。在第一次下载到板子之后,
虽然也出现了些问题,但主要都是分频等比较难用仿真解 决的问题。仿真也确实
为自己节约了很多花在实验室里的问题。
4、独立设计系统的经验 < br>这次实验的代码量虽然也不过一千多行,但也算积累了自己设计,调试系统
的经验,增强了信心以 及排除困难的毅力。





七、 附录:源程序
考虑到篇幅的问题,仅附上控制器模块的代码,全部代码将在电子版中呈上。
Controller模块代码:
LIBRARY IEEE;
USE _LOGIC_;
USE _LOGIC_;
USE _LOGIC_;
USE C_;

ENTITY controller IS
14 22


数字电路综合实验报告
PORT(
timemsg: IN STD_LOGIC; --timer模块的反馈信号
clk: IN STD_LOGIC;
reset: IN STD_LOGIC; --btn7
turn_up: IN STD_LOGIC; --btn0
turn_down: IN STD_LOGIC; --btn1
turn_right: IN STD_LOGIC; --btn2
turn_left: IN STD_LOGIC; --btn3

--对timer模块的控制信号
cont_time: OUT STD_LOGIC; --0表示停止计时,1表示开始计时
--已走步数
num_step_x: OUT INTEGER RANGE 0 TO 9;
num_step_y: OUT INTEGER RANGE 0 TO 9;
num_step_z: OUT INTEGER RANGE 0 TO 9;
--对lattice模块的控制信号
game_state_out:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);--游戏状态
maps: OUT STD_LOGIC_VECTOR(1 DOWNTO 0); --地图选择
modes: OUT STD_LOGIC_VECTOR(1 DOWNTO 0);--模式xuanze
x: OUT INTEGER RANGE 0 TO 7;--玩家位置横坐标
y: OUT INTEGER RANGE 0 TO 7;--玩家位置纵坐标


);
END controller;

ARCHITECTURE behave OF controller IS
TYPE Con_State IS (WaitMsg,C hoLevel,ChoMaps,ChoModes,Moving,Win,Lose);
TYPE Map_Matrix IS ARRAY (0 TO 7)OF STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL state:Con_State;
SIGNAL x_de:INTEGER RANGE 0 TO 7;
SIGNAL y_de:INTEGER RANGE 0 TO 7;
SIGNAL destination:INTEGER RANGE 0 TO 77;
SIGNAL mapmatrix:Map_Matrix;
SIGNAL x_temp:INTEGER RANGE 0 TO 7;
SIGNAL y_temp:INTEGER RANGE 0 TO 7;
SIGNAL num_step_xtmp:INTEGER RANGE 0 TO 9;
SIGNAL num_step_ytmp:INTEGER RANGE 0 TO 9;
SIGNAL num_step_ztmp:INTEGER RANGE 0 TO 9;
SIGNAL random:STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
PROCESS(clk) --
BEGIN
15 22

con_buzzer: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);--蜂鸣器控制信号
level: BUFFER STD_LOGIC_VECTOR(1 DOWNTO 0) --游戏难度


数字电路综合实验报告
IF FALLING_EDGE(clk)THEN
IF random =
random<=
ELSE
random<= random + '1';
END IF;
END IF;
END PROCESS;

PROCESS(clk,reset,state) --initial
VARIABLE mapchoice:STD_LOGIC_VECTOR(1 DOWNTO 0);
VARIABLE con:STD_LOGIC;
BEGIN
IF reset='1' THEN --复位
state<= WaitMsg;
game_state_out<=
cont_time<='0';
num_step_xtmp<=0;
num_step_ytmp<=0;
num_step_ztmp<=0;
modes<=
ELSIF FALLING_EDGE(clk)THEN
CASE state IS
WHEN WaitMsg => --待机状态
game_state_out<=
cont_time<='0';
IF turn_up = '1' THEN
state<=ChoModes;
END IF;
WHEN ChoModes =>--选择游戏模式状态
game_state_out<=输出游戏状态信号:选择模式阶段
IF turn_up = '1' THEN
modes<=
state<=ChoLevel;
ELSIF turn_down = '1'THEN
modes<=
state<=ChoLevel;
END IF;
con:='1';
WHEN ChoLevel=> --选择游戏难度状态
game_state_out<= --输出游戏状态信号:选择难度阶段
IF turn_up='1'THEN
level<=
state<=ChoMaps;
16 22


数字电路综合实验报告
ELSIF turn_down='1'THEN
level<=
state<=ChoMaps;
END IF;

WHEN ChoMaps => --选择游戏地图状态
game_state_out<=输出游戏状态信号:选择地区阶段
IF turn_up ='1' THEN --map1
mapchoice:=
ELSIF turn_down ='1' THEN --map2
mapchoice:=
ELSIF turn_right = '1' THEN --map3
mapchoice:=
ELSIF turn_left = '1' THEN --随机
IF con='1'THEN
mapchoice:=random; con:='0';
END IF;
ELSE
mapchoice:=
maps<=
-- state<= ChoMaps;
END IF;
CASE mapchoice IS
WHEN
When

maps<= -- map1
mapmatrix<=(







y_temp<=6;
x_temp<=7;
y_de<=6;
x_de<=0;
state<= Moving;
num_step_xtmp<=0;
num_step_ytmp<=0;
num_step_ztmp<=0;
WHEN
17 22


数字电路综合实验报告
maps<= -- map2
mapmatrix<=(







y_temp<=1;
x_temp<=0;
y_de<=7;
x_de<=2;
state<= Moving;
num_step_xtmp<=0;
num_step_ytmp<=0;
num_step_ztmp<=0;
WHEN -- map3
maps<= -- map3
mapmatrix<=(







y_temp<=6;
x_temp<=0;
y_de<=0;
x_de<=3;
state<= Moving;
num_step_xtmp<=0;
num_step_ytmp<=0;
num_step_ztmp<=0;
END CASE;

WHEN Moving => --游戏进行时状态
game_state_out<=
cont_time<='1'; --开始计时
con_buzzer<=
IF level=难度级别2游戏结束条
件的判断
state<=Lose;
18 22


数字电路综合实验报告
END IF;
IF timemsg='1' THEN --时间到
state<=Lose;
ELSE -- 根据输入更新玩家的位置,判断是否到达终点并统计已走步

IF turn_up = '1'THEN
IF y_temp=7 AND mapmatrix(y_temp+1)(x_temp)='0' THEN
x_temp<=x_temp;y_temp<=y_temp+1;
























































IF num_step_xtmp=9 THEN


num_step_xtmp<=0;
num_step_xtmp<=num_step_xtmp+1;
ELSE
END IF;
IF num_step_ytmp=9 AND num_step_xtmp=9 THEN


num_step_ytmp<=0;
num_step_ytmp<=num_step_ytmp+1;
ELSIF num_step_xtmp=9 THEN
END IF;
IF num_step_ztmp=9 AND num_step_ytmp=9 AND num_step_xtmp=9 THEN
num_step_ztmp<=0;
state<=Lose;
ELSIF num_step_ytmp=9 AND num_step_xtmp=9 THEN
num_step_ztmp<=num_step_ztmp+1;
END IF;

END IF;
ELSIF turn_down = '1'THEN
IF y_temp=0 AND mapmatrix(y_temp-1)(x_temp)='0' THEN
x_temp<=x_temp;y_temp<=y_temp-1;


































































IF num_step_xtmp=9 THEN


num_step_xtmp<=0;
num_step_xtmp<=num_step_xtmp+1;
ELSE
END IF;
IF num_step_ytmp=9 AND num_step_xtmp=9 THEN


num_step_ytmp<=0;
num_step_ytmp<=num_step_ytmp+1;
ELSIF num_step_xtmp=9 THEN
END IF;
IF num_step_ztmp=9 AND num_step_ytmp=9 AND num_step_xtmp=9 THEN


num_step_ztmp<=0;
state<=Lose;
19 22


数字电路综合实验报告




















ELSIF num_step_ytmp=9 AND num_step_xtmp=9 THEN
num_step_ztmp<=num_step_ztmp+1;
END IF;

END IF;
ELSIF turn_right = '1'THEN
IF x_temp=7 AND mapmatrix(y_temp)(x_temp+1)='0' THEN
x_temp<=x_temp+1;y_temp<=y_temp;

















































































IF num_step_xtmp=9 THEN


num_step_xtmp<=0;
num_step_xtmp<=num_step_xtmp+1;
ELSE
END IF;
IF num_step_ytmp=9 AND num_step_xtmp=9 THEN


num_step_ytmp<=0;
num_step_ytmp<=num_step_ytmp+1;
ELSIF num_step_xtmp=9 THEN
END IF;
IF num_step_ztmp=9 AND num_step_ytmp=9 AND num_step_xtmp=9 THEN



num_step_ztmp<=0;
state<=Lose;
num_step_ztmp<=num_step_ztmp+1;
ELSIF num_step_ytmp=9 AND num_step_xtmp=9 THEN
END IF;

END IF;
ELSIF turn_left = '1'THEN
IF x_temp=0 AND mapmatrix(y_temp)(x_temp-1)='0' THEN
x_temp<=x_temp-1;y_temp<=y_temp;


































































IF num_step_xtmp=9 THEN


num_step_xtmp<=0;
num_step_xtmp<=num_step_xtmp+1;
ELSE
END IF;
IF num_step_ytmp=9 AND num_step_xtmp=9 THEN


num_step_ytmp<=0;
num_step_ytmp<=num_step_ytmp+1;
ELSIF num_step_xtmp=9 THEN
END IF;
IF num_step_ztmp=9 AND num_step_ytmp=9 AND num_step_xtmp=9 THEN


num_step_ztmp<=0;
state<=Lose;
20 22


数字电路综合实验报告















ELSIF num_step_ytmp=9 AND num_step_xtmp=9 THEN
num_step_ztmp<=num_step_ztmp+1;
END IF;

END IF;

END IF;
IF x_temp=x_de AND y_temp=y_de THEN
state<=Win;
END IF;
END IF;
WHEN Win => --游戏胜利状态
con_buzzer<=
game_state_out<=
cont_time<='0';
WHEN Lose => --游戏失败状态
game_state_out<=
cont_time<='0';
END CASE;
END IF;
END PROCESS;
x<=x_temp;
y<=y_temp;
num_step_x<=num_step_xtmp;
num_step_y<=num_step_ytmp;
num_step_z<=num_step_ztmp;
END;


21 22

沙漠之舟是什么动物-生查子元夕


beiying-世说新语两则ppt


保险经纪人-矢志


砌墙的砖头-申请的格式


叶培-植树活动


退伍军人优惠政策-我爱书吧


消防安全顺口溜6句-关于祖国的诗


泰星push-幸福是什么