北邮数电实验--打地鼠游戏的设计与实现实验的报告.docx

北邮数电实验--打地鼠游戏的设计与实现实验的报告.docx

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字电路与逻辑设计实验(下)实验报告课题名称:打地鼠游戏的设计与实现学院:电子工程学院班级:2013211202姓名:学号:设计课题及任务要求课题名称:打地鼠游戏的设计及实现任务要求:设计“打地鼠”游戏,采用8X8双色点阵显示游戏界面,其中游戏边界采用绿色LED显示,随机出现的地鼠采用红色LED显示,游戏有十六个洞穴。洞穴每次随机出现一个地鼠,每个地鼠最长保持时间为2秒,2秒后随机出现下一个地鼠,以4x4键盘的按键代表锤子,16个洞穴对应16个锤子,一旦锤子在2秒内击中地鼠,则地鼠消失,数码管计分器加1分,若锤子没有击中地鼠,则两秒后地鼠消失,用两个数码管显示游戏成绩,成绩到达10分时,游戏结束,点阵显示“V”。用两个数码管对整个游戏进行倒计时,当游戏超过59秒而成绩未达到10分时,游戏失败,点阵显示“X”。按复位键重新开始游戏,并开始倒计时。二.系统设计1.设计思路:采用自顶向下的设计原则。首先对游戏的状态进行判断,整个游戏共应该有四种状态,重置状态,游戏状态,游戏成功状态,游戏失败状态。然后由这四种状态对其他模块进行控制。所以控制模块置于整体框图的中心,然后再考虑这四个状态分别由什么输入控制。·重置状态:当拨动开关置高电平时,整个游戏进行重置,此时计分数码管应该有计分的初始显示,即00分,点阵显示重置画面,而计时的数码管置数60准备开始倒计时,当拨动开关置低电平时,游戏正式开始,转入游戏状态。·游戏状态:此时计分数码管计分,倒计时数码管进行倒计时,点阵显示游戏界面,即6x6的绿色边界以及一个随机出现的红色地鼠。若在倒计时结束之前,计分数码管显示10分,则转入游戏成功状态,若倒计时结束时,尚未达到十分,则转入游戏失败状态。·游戏成功状态:此时倒计时数码管停止计时,计分数码管显示10分,点阵显示绿色“V”。·游戏失败状态:此时倒计时数码管和计分数码管不再继续工作,而点阵显示红色“X”。2.整体分析:综上分析以及结合实际,得出整个工程大致需要的模块为:分频模块、倒计时模块、计分模块、数码管显示模块、点阵显示模块、状态控制模块、随机地鼠生成模块、键盘输出模块。3.整体设计框图:三.分模块设计1.分频模块设计1)需求分析:整个工程共需要四个频率,地鼠出现的频率为2秒一个,即需要一个0.5Hz的频率,而倒计时一秒减小一个十进制数,所以需要一个1HZ的频率,数码管的扫频和点阵的扫频为1000Hz,键盘防抖模块的扫频为100Hz,所以我采用级联分频的方式,将实验室25MHz的频率先通过25000倍分频分为1000Hz,再将1000Hz频率十分频分为100Hz,再将100Hz一百分频为1Hz,再讲1Hz频率分为0.5Hz。2)模块代码:3)模块仿真波形为减少仿真时长,仿真时将分频系数依次调为2,3,4,实现分频依次为3分频,4分频,5分频。仿真波形如图所示,可由仿真波形看出分频模块实现分频功能。2.倒计时模块:1)功能分析:倒计时模块由状态控制模块控制。重置状态时,进行置数60,游戏状态时,进行减计数,输出分为高位和低位,由上升沿出发,每个上升沿,个位数减一,个位数减至0时,个位数变成9,十位数减一。然后高位和低位进行七段数码管译码输出,设立一个计时结束标识,以反馈控制状态,当个位十位都为0时,倒计时结束,flag=1,否则,flag=0。2)模块代码:entity counter is --实体定义 port(clk:instd_logic;c_state:instd_logic_vector(1 downto 0); nixie_1:out std_logic_vector(7 downto 0);--高位译码输出 nixie_2:out std_logic_vector(7 downto 0);--地位译码输出gameover:outstd_logic --计时结束flag );end counter;architecture counter_1 of counter issignal count_d:integer range 0 to 6;--十位信号signal count_o:integer range 0 to 9;--个位信号begincounting: --倒计时进程process(clk)beginif(c_state=00) then—重置状态置数60count_d=6;count_o=0;gameover=0;--flag置0elsif(c_state=01) thenif(clkevent and clk=1) then if(count_d=0 and count

文档评论(0)

skvdnd51 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档