1 / 29
文档名称:

基于Xilinx的FPGA的健身游戏机设计.doc

格式:doc   页数:29
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

基于Xilinx的FPGA的健身游戏机设计.doc

上传人:小猪猪 2011/12/6 文件大小:0 KB

下载得到文件列表

基于Xilinx的FPGA的健身游戏机设计.doc

文档介绍

文档介绍:课程设计实验报告

基于Xilinx的FPGA的健身游戏机设计
院系: 电子与信息工程
专业: 电信
班级:
姓名:
学号:
指导教师:
设计任务名称:基于Xilinx的FPGA的健身游戏机设计
设计内容及要求:
基本功能:
用8个灯作目标,与之对应有8个按键进行控制。每一次8个灯中随机出现一个灯处于“亮”的状态,在灯亮的时间内要求“踩”到对应的按键,若踩到则加1分,且灯熄灭;否则失败扣一分。
设定初始命数为9,连续成功五次加1条命,分数不清0,连续失败5次扣一条命,命数为0时游戏结束。
游戏分四个难度级别,每个级别灯闪亮的速度不同,级别越高,速度越快,灯亮的时间越短。连续加两条命则速度加1.
设有暂停/继续和开始/停止功能,能记录和更新历史最高分数。控制液晶显示器进行相应的显示。命数最多显示为99条,分数最多显示为999分。
扩展功能:
每个难度级别对应产生不同的音乐,与灯闪的频率节奏相当。
实验条件说明
Spartan-3E入门实验板:
自己设计外围电路:
提供芯片有:译码器74LS138,编码器74LS148,其余有,LED灯8个,按键8个,1k电阻8个,510Ω电阻1个,排线两根,导线一组,排针一组,设计好的外围电路如下:
系统设计
系统框图与说明
音乐模块
随机数生成模块
分数计算模块
命数计算

LCD显示模块
外接LED灯
外部按键输入
说明:
外部按键输入:通过74LS148编码器实现8线—3线编码,实现对应按键输入,因为编码器特性,全部为高时输出为1111(其中最高位为状态为)而在其他状态下区间为(0000----0111),可以方便实现与随机数的比较从而实现分数计算。具体电路图及逻辑见外设部分。
分数计算模块:实现外部按键与内部随机数的匹配比较,若匹配则分数加1,同时为命数模块提供一个win脉冲用来计数;若不匹配则分数减1,同时为命数模块提供一个lose脉冲用来计数。要求保留最高分数。这里要求对按键与随机数的比较次数进行识别,一个随机数只能比较一次,详见详细设计部分。
命数计算:通过分数计算模块说提供的win和lose信号进行计数,累计到5,则实现命数加减1,要求当命数连续加2后输出一个speed信号,此信号给音乐模块和随机数模块,进行音乐的变化和速度的升级。同时在命数减为0后输出一个over信号,告诉系统游戏结束。
随机数生成模块:此模块主要实现伪随机数输出,并且根据speed信号进行生成速度的转换,同时要求在pause信号和over信号为1时停止随机数输出。随机数外接到外设部分,通过译码器控制LED灯的亮灭。
外接LED 灯:根据随机数,通过74LS138译码器控制对应LED灯的随机闪烁。
LCD显示模块:根据分数计算模块,命数模块所输入BCD码以及内部设定在LCD上显示控制信息和生命分数信息。
音乐模块:通过speed信号的输入,控制音乐乐谱的变化,同时当over信号为高时停止音乐输出。
状态转换图与说明
本实验涉及的状态转换较多,这里只详细介绍我所设计的模块的状态转换:
Res
1:分数计算模块:

S2
S0
S3
S1
状态说明:这里S0状态下,将随机数random赋给一个中间变量random-temp,
然后比较按键信号和随机信号,若按键信号和随机信号相等,转入S1,否则转入S2;在S1状态下,若按键和随机数相等且随机信号和中间变量random-temp相等,意味着随机数没变化,则在S1处循环,直到随机数与中间变量不相等,意味着随机数发生变化,则分数加1;另外若在S1状态下,按键和随机数不等,则意味着按键已经抬起,但此时属于正确情况,则在随机数变化后,分数加1,状态转到S0;在S2状态下,若按键信号为“1111”,则意味着没有任何按键按下,则在随机信号变化之前,处于在S2状态循环,若随机信号变化,仍为
“1111”,意味着没来的及按下,分数减1,转到S0,若在S2状态下,按键信号等于随机信号,意味着按键正确,则转入S1,若在S2状态下,按键信号不等于随机信号,同时也不等于“1111”,则判断按错,扣一分,转入S3;在S3状态下,一直处于循环,直到随机数变化转到S0。
完成完整的循环,上述状态变化,实现了判断按键与随机数的具体逻辑。后文有具体代码。

2:音乐模块:
Res
S3
S2
S1
S0



状态说明:音乐模块比较简单,主要是在乐谱里有状态的转换,状态S0为第一个曲谱,以Res信号为准,直接进入此状态,在S0状态下,遇到speed脉冲信号,则转换为S1为第二个曲谱,以此类推,没遇到一个speed转换一个曲谱,知道S3