北邮数字电路综合实验_打地鼠游戏的设计与实现

上传人:ji****72 文档编号:26894001 上传时间:2018-01-03 格式:DOCX 页数:18 大小:308.58KB
返回 下载 相关 举报
北邮数字电路综合实验_打地鼠游戏的设计与实现_第1页
第1页 / 共18页
北邮数字电路综合实验_打地鼠游戏的设计与实现_第2页
第2页 / 共18页
北邮数字电路综合实验_打地鼠游戏的设计与实现_第3页
第3页 / 共18页
北邮数字电路综合实验_打地鼠游戏的设计与实现_第4页
第4页 / 共18页
北邮数字电路综合实验_打地鼠游戏的设计与实现_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《北邮数字电路综合实验_打地鼠游戏的设计与实现》由会员分享,可在线阅读,更多相关《北邮数字电路综合实验_打地鼠游戏的设计与实现(18页珍藏版)》请在金锄头文库上搜索。

1、数字电路与逻辑设计实验报告打地鼠游戏的设计与实现学院:信息与通信工程学院班级:2013211117 姓名:李昊然 学号:2013210486 序号:02 课题:打地鼠 一课题的任务要求基本要求:1、 设计一个挑战反应速度的“打地鼠”游戏,采用用88 双色点阵显示游戏界面,其中游戏边界采用绿色LED 显示,随机出现的地鼠采用红色LED 显示,游戏有16 个洞穴,如图1 所示。图1 打地鼠游戏示意图2、 游戏洞穴每次随机出现一个地鼠,每个地鼠的最长保持时间为2 秒,2 秒后随机出现下一个地鼠。以44 键盘的按键代表锤子,16 个洞穴与16 个按键一一对应,一旦锤子在2 秒内击中地鼠,地鼠消失,数码

2、管计分器分数加1 分;若锤子一直没有击中地鼠,2 秒后该地鼠消失。用两个数码管显示游戏成绩,当游戏成绩达到10 分时游戏结束,点阵显示字符“V ”。3、 用两个数码管对整个游戏进行倒计时,当游戏时间超过59 秒而成绩未达到10 分时,游戏失败,点阵显示字符“X ”。4、 按复位键重新开始游戏,并开始倒计时。提高要求:1、 增加游戏难关,在边界内每次随机出现两个地鼠,两个地鼠的最长保持时间均为2秒,2 秒后随机出现下两个地鼠,锤子击中一个地鼠加1 分,当游戏成绩达到20 分而且游戏时间未超过59 秒时,游戏结束,显示字符“V ”,否则显示字符“X ”。2、 自拟其他功能。二系统设计(一)设计思路

3、程序采用自顶向下设计的思路,先将主程序启动,然后依次进行多级分频,并逐个执行子程序,主程序为点阵中显示边框背景及随机出现地鼠,子程序包括数码管计分和计时部分、时钟部分、键盘部分以及逻辑判断部分等。(二)总体框图开始生成边框生成随机位置地鼠打地鼠2s 内击中地鼠60s 是否到时加 1 分积分是否达到 10 分赢输结束是是否否(三)分块设计1. 输入部分:外部时钟信号 CLK 频率为 25MHz,为程序提供初始的有效时钟边沿。复位信号输入 CLEAR 为高电平有效,当 CLEAR 为 1 时,数码管、点阵、计数器等都返回到初始状态。键盘输入值由两个四位二进制数分别表示行和列的状态。2. 逻辑判断模

4、块:通过检测键盘返回值是否与点阵上出现地鼠的位置相对应,判断“打”是否有效。通过 60s 倒计时的计数器是否为 0 判断游戏是否到时。通过一个模为 10 的计数器判断得分是否达到游戏要求。3输出部分:由译码电路,根据 SEG_SELECT 信号的扫描、对 SEG_SHOW 赋予不同的值,实现在四个数码管上分别显示两位 60s 倒计时和两位计分。点阵根据 LED_ROW 的扫描、和 LED_COL_G、LED_COL_R 的值显示游戏的边框、地鼠出现的位置以及结束画面,利用人眼的视觉延缓效应,当行扫描时钟信号 clk 的频率50Hz,可以达到六行点阵同时显示的效果。 4.键盘输入部分:以 1k

5、Hz 的频率进行列扫描,将键盘检测到的行和列的二进制数KEY_COL 和 KEY_ROW 组合起来,赋值给一个四位二进制数 CODE,记录按键的位置,方便与地鼠在点阵上的位置相比较。三仿真波形及波形分析1.分频由波形可知,对输入时钟信号clk进行了4倍分频2.绿色灯示边框在行数为1和6时,每列都亮,在行数为2、3、4、5时,亮第1和第6列,从而形成一个6*6的边框。3.随机出现地鼠地鼠可能出现在随机的行和列当lose信号为1时,点阵显示4. 数码管会在第一个到第四个之间来回扫描5.给键盘行值赋予一个随机值,程序进行列扫描,当键盘输入值与点阵值相对应时,积分信号score会+1,由于是随机赋值,

6、所以恰好碰上的概率较小,加分的时间较长四源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY dds ISPORT(CLK:IN STD_LOGIC; -输入时钟LED_ROW:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -点阵行LED_COL_G:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -点阵列 绿色LED_COL_R:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -点阵列 红色SEG_SELECT:OUT

7、STD_LOGIC_VECTOR(5 DOWNTO 0);-数码管位置扫描SEG_SHOW:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -数码管显示 KEY_COL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -键盘列KEY_ROW:IN STD_LOGIC_VECTOR(3 DOWNTO 0); -键盘行CLEAR:IN STD_LOGIC; -复位信号LIGHT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) -输出 灯);END dds;ARCHITECTURE a OF dds ISSIGNAL TEMP_LED_ROW

8、: STD_LOGIC_VECTOR(7 DOWNTO 0); -DIAN ZHENSIGNAL TEMP_LED_COLG: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL TEMP_LED_COLR: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL TEMP_SEG_SELECT: STD_LOGIC_VECTOR(5 DOWNTO 0):=011111; -SHU MA GUANSIGNAL TEMP_SEG1: STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL TEMP_SEG2: STD_LOGIC_VECTOR(

9、6 DOWNTO 0);SIGNAL TEMP_SEG3: STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL TEMP_SEG4: STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL RANDOM: STD_LOGIC_VECTOR(3 DOWNTO 0); -SUIJISHUSIGNAL TEMP_RANDOM: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL DIV_1K: INTEGER RANGE 0 TO 12499; -FEN PIN 0.001SSIGNAL DIV_1S: INTEGER RANGE 0 TO 4

10、99; -FEN PIN 1SSIGNAL DIV_2S: INTEGER RANGE 0 TO 999; -FEN PIN 2SSIGNAL DIV_R: INTEGER RANGE 0 TO 998; -FEN PIN SUI JI SIGNAL TEMP_10: INTEGER RANGE 0 TO 9; -DAO JI SHI SHI WEISIGNAL CLK_1K: STD_LOGIC; -SHI ZHONGSIGNAL CLK_1S: STD_LOGIC;SIGNAL CLK_2S: STD_LOGIC;SIGNAL CLK_R: STD_LOGIC;-SIGNAL CLKTEM

11、P: STD_LOGIC;SIGNAL TEMP_KEY_COL:STD_LOGIC_VECTOR(3 DOWNTO 0); -JIAN PANSIGNAL TEMP_KEY_ROW:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL CODE: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL TEMP_LIGHT:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL POKE:INTEGER RANGE 0 TO 1; -DA DI SHUSIGNAL POKE_FLAG:INTEGER RANGE 0 TO 1:=0; -DA

12、 BIAO ZHI WEISIGNAL SCORE :INTEGER RANGE 0 TO 10; -DE FEN SIGNAL SCORE_FLAG: INTEGER RANGE 0 TO 1; -DE FEN BIAO ZHI WEISIGNAL COUNTDOWN_60:INTEGER RANGE 0 TO 60; -60S DAO JI SHISIGNAL WIN :INTEGER RANGE 0 TO 1; -YINGSIGNAL LOSE :INTEGER RANGE 0 TO 1; -SHU SIGNAL CLEAR_TEMP: STD_LOGIC; -FU WEIBEGINP1

13、:PROCESS (CLK) -DIV 0.001 SBEGINIF CLKEVENT AND CLK = 1 THEN IF DIV_1K =12499 THEN -计数12500次DIV_1K RANDOM RANDOM RANDOM RANDOM RANDOM RANDOM RANDOM RANDOM RANDOM RANDOM RANDOM RANDOM RANDOM RANDOM RANDOM RANDOM IF TEMP_LED_ROW = 10111111 THEN TEMP_LED_COLR IF TEMP_LED_ROW = 10111111 THEN TEMP_LED_CO

14、LR IF TEMP_LED_ROW = 10111111 THEN TEMP_LED_COLR IF TEMP_LED_ROW = 10111111 THEN TEMP_LED_COLR IF TEMP_LED_ROW = 11011111 THEN TEMP_LED_COLR IF TEMP_LED_ROW = 11011111 THEN TEMP_LED_COLR IF TEMP_LED_ROW = 11011111 THEN TEMP_LED_COLR IF TEMP_LED_ROW = 11011111 THEN TEMP_LED_COLR IF TEMP_LED_ROW = 11101111 THEN TEMP_LED

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号