ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:218.57KB ,
资源ID:10032110      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10032110.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(打地鼠课程设计.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

打地鼠课程设计.docx

1、打地鼠课程设计课程名称:数字系统与课程设计 实验名称:打地鼠VHDL的实现 院系:吴健雄学院 学号:61006209 姓名:* 1.课题介绍-32.具体实施方案-33.面板图-34.系统结构图-45.状态流程图-66.程序清单-77.各主要模块仿真结果波形- 178.课程设计总结-18一、课题介绍 本设计灵感来源于文曲星上风靡一时的打地鼠游戏,旨在一方面作为娱乐游戏,同时可以锻炼人的反应速度。游戏开始后4*4的点阵中每隔一定秒数(由设计难度决定)会随机点亮一盏,以供选手进行游戏。当一盏灯点亮时,在下一盏灯亮之前按下对应的键盘即可得分,否则失分。游戏开始时难度初始值可设定,随后进行一分钟倒计时,

2、一旦为0游戏结束。 在规定时间内得分最高者胜出。二、具体实施方案界面用4*4的点阵实现,在点阵中用随机亮起的等表示探出的老鼠, 按键用键盘来实现,由键盘4*4的键对应相应的点阵中的地鼠,控制器通过读取用户的按键及点阵输出代码并进行判断来相应的加减分。当玩家分数为零或者游戏时间倒计时置0时,游戏停止。在游戏过程中当玩家按了结束键之后推出进入游戏难度选择,这是用四个开关输入的。三、面板图: 难度 得分 时间 输入:输入名称功能及操作说明Start stop控制游戏开始结束,其中start是游戏总开关,start置1时游戏时钟才会走,游戏才可以开始。在start置1的前提下,若stop置0游戏开始,

3、stop置1时时间、分数等均清零,恢复初始状态。K1 K2 K3 K4输入初始等级的四个开关,为二进制数,如K1 K2 K3 K4为0100时则等级为4级,注意此输入只有在stop为1时才有效,即输入为初始等级,一旦stop置0游戏开始后,置数无效,只有等下一次stop置1时才能再次置入初始等级。键盘用作打地鼠的“榔头”,当某一盏灯亮时,在下一盏灯亮之前按下响应键盘按钮即可加分,否则扣分。输出:输出名称输出功能七段码管6显示游戏当前难度等级七段码管4、3显示玩家得分七段码管2、1显示本局游戏剩余时间4*4点阵每隔一段时间(随难度等级不同而变化)随机点亮其中一盏(熄灭前面一盏)表示地鼠出现显示模

4、块四、系统结构图:1. 总的系统框图2. 顶层结构图3. 各个模块的功能描述A分数判断模块判断选手得分或失分主要是由一个比较器完成的,将系统传给LED灯的信号与选手输入的信号作比较,相同则加分,否则扣分,这两个信号分别传给计分模块,从而完成系统判定得分的工作。 B . 系统时钟模块将内部2MHz的时钟分频为1kHz、及游戏时钟,供以后程序适使用C键盘电路主要通过产生行扫描,来识别用户的按键,电路中已经对按键进行了消抖。其提供给控制器按键的编码。D等级判断模块判断等级,若游戏未开始时,将等级设为初始值,游戏开始后则判断是否按对五次或按错五次,并响应的加、减等级。E随机数产生模块为使得测试结果的公

5、平性,需要4*4等灯亮灭具有随机性,因而需要随机数产生过程,在本方案中,采用伪随机数产生方法,即在ROM中存入随机表中的数据,游戏开始后采用一个计数器不断从其中读取数据。 F显示模块 用来将BCD码转化为可以在七段数码管中显示的。 G计时模块 系统的计时部分需要一个能置初值的计数器即可,其控制信号应为Start,stop五、状态流程图:六、程序清单1.分数判断模块-该模块实现系统的分数计算LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SCORE IS PORT(STOP1,clk,

6、start:IN STD_LOGIC; -stop1为系统中间开始、结束信号, -若分数或时间为零则置1,clk为游戏时钟,start为游戏清零键 UP,DN: IN STD_LOGIC; -up为加分信号,dn为减分信号 P: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-p为分数高位、低位输出 STOP: OUT STD_LOGIC); -若游戏分数为零则出高END SCORE; ARCHITECTURE BEHAVE OF SCORE IS begin process(clk,STOP1) variable tmp:std_logic_vector(7 downto

7、 0); begin if clkevent and clk=1 then if STOP1=1 then -如果stop1=1 tmp:=tmp; -保持分数不变 else IF UP=1 THEN -如果加分等于1 TMP:=TMP+1; -分数加一 IF(TMP(3 DOWNTO 0)=1010)THEN -如果分数低位为十 TMP(3 DOWNTO 0):=0000; -低位变为零 TMP(7 DOWNTO 4):=TMP(7 DOWNTO 4)+1; -高位加一 END IF; ELSIF DN=1 THEN -如果减分信号等于1 IF(TMP(3 DOWNTO 0)=0000)TH

8、EN -如果分数低位等于十 TMP(3 DOWNTO 0):=1010; -分数低位变为九 TMP(7 DOWNTO 4):=TMP(7 DOWNTO 4)-1; -高位减一 END IF; TMP:=TMP-1; -低位减一 END IF; p=tmp; -输出分数 IF TMP=00000000 THEN -如果分数为零 STOP=1; -清零信号置一 ELSE STOP=0; END IF; end if; end if; if start=1 then -如果游戏开始键为1 tmp:=01000000; -分数显示为初始的40分 p=tmp;end if; end process;en

9、d BEHAVE;2. 系统时钟分频-将内部2MHz的时钟分频为1kHz,供以后程序适使用library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity fenpinkaishi is port(clk: in std_logic; -输入的2MHz时钟 clk1:out std_logic; -输出的2000Hz时钟 clk2:out std_logic);-输出的1000Hz时钟end fenpinkaishi;architecture

10、behave of fenpinkaishi is signal x:std_logic;begin process(clk) variable cnt:integer range 0 to 1000; begin if clkevent and clk=1 then if cnt1000 then -变量cnt小于1000时继续加一 cnt:=cnt+1; else cnt:=0; x=not x; -否则清零,翻转x end if; end if; clk1=x; end process; process(x) variable y:std_logic; begin if xevent a

11、nd x=1 then -x变化则翻转y并输出 y:=not y; end if; clk2=y; end process;end behave;3. 等级判断模块-判断等级,若stop=1,将等级设为初始值,若stop=0则判断是否按对五次或按错五次,并响应的加分、减分。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity level is port( level: out std_logic_vector(3 downto 0)

12、; -游戏等级输出 clk,up: in std_logic; -游戏时钟,加分信号 stop: in std_logic; -游戏清零键 shuru: in std_logic_vector(3 downto 0); -初始等级输入end level;architecture behave of level is signal x:std_logic_vector(3 downto 0); begin process(shuru,clk) variable cnt1:integer range 0 to 9; variable cnt2:integer range 0 to 9; begin

13、 if stop=1 then level=shuru ;x=shuru;cnt1:=0;cnt2:=0; -如果stop=1,为等级附初始设定值 else if clkevent and clk=1 then if up=1 then -如果按对, if cnt15 then cnt1:=cnt1+1; -若cnt1小于五,则cnt1加一 else cnt1:=0; x=x +1; level= x; -若cnt1等于五,则归零且level加一 end if; else -如果按洞恚? if cnt25 then cnt2:=cnt2+1; -若cnt2小于五,则cnt2加一 else cn

14、t2:=0; x=x -1; levelif cnt3599 then cnt:=cnt+1; else cnt:=0; xif cnt3399 then cnt:=cnt+1; else cnt:=0; xif cnt3199 then cnt:=cnt+1; else cnt:=0; xif cnt2399 then cnt:=cnt+1; else cnt:=0; xif cnt2199 then cnt:=cnt+1; else cnt:=0; xif cnt1999 then cnt:=cnt+1; else cnt:=0; xif cnt1799 then cnt:=cnt+1;

15、else cnt:=0; xif cnt1599 then cnt:=cnt+1; else cnt:=0; xif cnt1399 then cnt:=cnt+1; else cnt:=0; x=not x; end if; end case; end if;clk1=x; end process; process(x) variable y:std_logic; begin if xevent and x=1 then -计数完后翻转y并输出作为游戏时钟 y:=not y; end if; clk2 x x x x x x x x x x x x x x x x x x x x x x x

16、 x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x= 01110111; end case; end if; Q= x; end process; end behave;6. 比较模块-该模块只是起到简单的比较作用,判断键盘输入和点阵输出是否相等-分别输出加分和减分信号为后面的模块服务library ieee;use ieee.std_logic_1164.all;entity comp is port (a,b : in std_logic_vector(7 downto 0

17、);-输入的键盘译码和点阵译码 clk: in std_logic; -游戏时钟 y1,y0:out std_logic); -y1为加分信号,y0为减分信号,他们为1时有效end comp;architecture behave of comp isbegin process(clk) variable x:std_logic;begin if a=b then -比较a和b y1=1;y0=0; -相等则y1置1,y0置0 else y1=0;y0=1; -不相等则y1置0,y0置1 end if; end process;end behave;7. 游戏时间控制模块-该模块控制游戏时间LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE I

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1