已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2009-2010学年度第二学期电子线路硬件课程设计-健身游戏机设计院 系: 电子与信息工程系 专 业: 班 级: 姓 名: 学 号: 指导教师: l 设计任务名称:基于Xilinx的FPGA的健身游戏机设计l 设计内容及要求:1、 基本功能: 用8个灯作目标,与之对应有8个按键进行控制。每一次8个灯中随机出现一个灯处于“亮”的状态,在灯亮的时间内要求“踩”到对应的按键,若踩到则加1分,且灯熄灭;否则失败扣一分。 设定初始命数为9,连续成功五次加1条命,分数不清0,连续失败5次扣一条命,命数为0时游戏结束。 游戏分四个难度级别,每个级别灯闪亮的速度不同,级别越高,速度越快,灯亮的时间越短。连续加两条命则速度加1. 设有暂停/继续和开始/停止功能,能记录和更新历史最高分数。控制液晶显示器进行相应的显示。命数最多显示为99条,分数最多显示为999分。2、 扩展功能:每个难度级别对应产生不同的音乐,与灯闪的频率节奏相当。l 实验条件说明Spartan-3E入门实验板:自己设计外围电路:提供芯片有:译码器74LS138,编码器74LS148,其余有,LED灯8个,按键8个,1k电阻8个,510电阻1个,排线两根,导线一组,排针一组,设计好的外围电路如下: l 系统设计系统框图与说明二:各个模块功能分析随机数产生模块 该模块是用程序产生一个随机的数,该数在除以8得到余数即为0到7之间的某个随机数,利用该随机数控制游戏机灯的亮和灭。指示灯显示模块 该模块用于显示指示灯的工作状态计时器模块 该模块在系统里面起计时的作用,用来控制每把游戏的时间。游戏按键控制模块 在该功能模块里面主要用来实现游戏按键的控制,根据随机数的值来确定相应的游戏的按键的开启。历史记录 在该功能模块里面用来显示游戏历史的记录,比如最高分,以及最高分记录。当前成绩记录与LED显示 该功能模块主要用来实现当前成绩的记录,和显示,如果成绩高于了历史记录里面的值则修改成绩历史,否则,仅显示当前成绩。难度控制 该功能模块主要用来实现游戏过程中难度的控制,在完成一个难度之后,自动跳转到下一个难度级别。扩展模块该模块里面,主要用来实现一些扩展功能。如,每个难度对应不同的音乐,与灯闪的频率相当,手动调节游戏难度等!输入输出设计与说明 我设计的部分模块输入输出设计与说明如下:LCD显示模块:LCDXS.v 输入:CLK_base:用系统时钟来控制状态机state的改变,从而在LCD屏幕上输出所需要的字符。 RST:复位信号,使LCD输出初始化值。 Score:当前得分。 HiScore:历史最高得分。 Life:当前命数。 Level:当前游戏难度。 State_sys:表示系统当前的运行状态,如state_start(开始), state_pause(暂停),state_gameover(游戏结束);由相应的状态来选择相应的输出显示到LCD上,如GO!(开始),READY(暂停),gg(游戏结束)。 输出: LCD_rw:控制LCD的读写,当其为低电平时,写入所需输出字符的控制字。 LCD_e:如果LCD_e使能信号为低,所有其它输入LCD信号全被忽视。 LCD_d:通过赋给其所需输出字符的行值和列值,使LCD输出正确的字符。 去抖动模块:QUDOU.v基本思想:由于按键按下和弹起都会有抖动(即有多个上升沿的触发),从而会影响了游戏控制时钟的正确性,所以必须加入去抖动模块。其基本原理就是在74ls148的EO第一次改变的时候改变一次PressButton信号,并且忽略之后一段固定时间内的EO信号的改变,使按键抖动不会影响到游戏时钟的正确性。输入: CLK_base:系统基频信号,用其控制按下和弹起寄存器从而产生固定的时间间隔。 Button_EO:74ls138的输出信号,高电平表示有按键输入,低电平则表示无按键输入。输出: PressButton:输出的去抖动后的按键信号,从而忽略了抖动对游戏控制时钟的影响,保证了CLK_game的正确性。亮灯模块:LED.v输入: CLK_game:每一个游戏控制时钟CLK_game的上升沿,读取随机数RAMnumber赋给LED_output,从而控制二极管的随机亮灭。 GameOver:当该信号变为1时,表示游戏结束,此时74ls138译码器的使能端S1输入为LED_enable变为0,则二极管全灭。 RAMnumber:为32位伪随机数产生模块中选取的三位,赋值给LED_output,作为74ls138译码器的输入,经译码后输出控制8个发光二极管的亮灭。输出: LED_output:作为74ls138译码器的输入,经译码后输出控制8个发光二极管的亮灭。 LED_enable:作为74ls138的使能端S1的输入信号,控制74ls138的工作状态。状态模块:STATE.v输入: CLK_base:系统基准频率,在其上升沿触发,扫描系统的GameOver信号 和PAUSE信号的状态,从而决定表征系统状态State_sys的值。 RST:复位信号,此信号变为1时系统状态State_sys变为0。表示复位状态。 GameOver:当此信号置1时,State_sys值为3。 PAUSE:当此信号置1时,State_sys值为1。输出: State_sys:表征系统当前处于的状态,作为LCD的输入,从而在LCD上输出系统当前处于的状态,便于玩家操作。外设部分: 电路原理图如下 上部的芯片是译码器74LS138,实现3位随机数对应随机的8个LED灯。 下面的芯片是编码器74LS148,实现8个按键对应四位码值输出。 74LS138译码器的真值表如下:74LS148编码器的真值表如下: 可以看出,当没有任何按键输入时,恒定输出为1111,符合分数计算要求的逻辑。按照真值表可知,这个按键是有优先级的,都按下时,输出为0000。 n 详细设计关键代码及说明我设计的模块是外设,lcd,led部分,具体的设计如下:1. LCD 模块moduleLCD(CLK_base,RST,LCD_rs,LCD_rw,LCD_e,LCD_d,FLASH_ce,Score,Life,Level,State_sys,HiScore); /LCD显示模块/LCD正确显示为: /|S:000 L:00 Lv.1 | S得分 L命数 Lv等级/|H:000 XXXXXXXX | H最高得分 XXXXXXXX为显示系统状态区域 input CLK_base; /输入的时钟信号 input RST; /复位信号输入input 11:0 Score,HiScore; /输入LCD要显示的得分记录和最高分记录input 7:0 Life; /输入LCD要显示的生命数input 1:0 Level,State_sys; /前者表示当前游戏难度,后者表示系统当前的运行/状态,如state_start(开始),state_pause(暂停),state_gameover(游戏结束);由相应/的状态来选择相应的输出显示 到LCD上,如GO!(开始),READY(暂停),gg(游/戏结束)。 output LCD_rs; output LCD_rw; /控制LCD的读写,当其为低电平时,写入所需输出字符的控制字 output LCD_e; /如果LCD_e使能信号为低,所有其它输入LCD信号全被忽视 output 3:0 LCD_d; /通过赋给其所需输出字符的行值和列值,使LCD输出正确的字符。 output FLASH_ce; *这段代码太长,在此略去!详见程序包!endmodule 2.LED显示模块module LED(CLK_game,GameOver,RAMnumber,LED_output,LED_enable ); /LED控制模块input CLK_game,GameOver; /输入的时钟信号和结束信号input2:0 RAMnumber; /输入的随机数 output LED_enable; reg LED_enable; /作为74ls138的使能端S1的输入信号,控制74ls138的工作状态。output2:0 LED_output; reg2:0 LED_output; / 作为74ls138译码器的输入,经译码后输出控制8个发光二极管的亮灭/在每一个游戏时钟下降沿处读取随机数,改变LED显示always (negedge CLK_game or posedge GameOver)beginif(GameOver) LED_enable=0;elsebeginLED_enable=1;LED_output=RAMnumber;endendendmodule3主程序模块module main(CLK_base,RST,Button_EO,PAUSE,Button_input,LED_output,LED_enable,LCD_rs,LCD_rw,LCD_e,FLASH_ce,LCD_d,beep);/顶层模块,各模块调用input CLK_base,RST,Button_EO,PAUSE; /输入的时钟,复位,按键,暂停信号input2:0 Button_input; /按键输入信号output2:0 LED_output; /LED显示输出output LED_enable,LCD_rs,LCD_rw,LCD_e,FLASH_ce,beep; /LCD显示output3:0 LCD_d; /输出reg1:0 State_sys; /状态 wire2:0 RAMnumber; /随机数 wire1:0 Level; /等级wire11:0 Score,HiScore; /得分和最高分数wire7:0 Life; /生命数wire2:0 Button_input; /按键输入wire2:0 LED_output; /LED输出BUTTON B1(CLK_base,PressButton,Button_EO);/按键去抖动模块RAMNUMR1(CLK_base,RST,RAMnumber);/随机数生成模块LED L1(CLK_game,GameOver,RAMnumber,LED_output,LED_enable);/发光二极管控制模块CLK C1(CLK_base,PressButton,Level,CLK_game,GameOver,RST,PAUSE);/游戏时钟生成模块SCORE S1(RST,CLK_game,Button_input,LED_output,Level,Score,Life,GameOver,PressButton,HiScore);/得分,命数,等级改变判断模块LCD L2(CLK_base,RST,LCD_rs,LCD_rw,LCD_e,LCD_d,FLASH_ce,Score,Life,Level,State_sys,HiScore);/LCD显示模块SOUNDS2(CLK_base,beep,State_sys,RST,Level);/音乐模块/系统状态转移:always (posedge CLK_base or posedge RST)if(RST) State_sys = 2b00;else if(GameOver) State_sys = 2b11;else if(PAUSE) State_sys = 2b01;else State_sys = 2b00;endmodulel 系统仿真分数计算模块分频模块去抖动模块的仿真在程序运行成功之后,在XILINX开发板上,显示的结果是l 实验总结: 这个实验对于没学过杨老师FPGA的课程的我们来说,有很大的困难。在执行的初期阶段我们对于整个流程的方向性的把握不是很准确,我们小组刚开始在软件模块的设计就出现了很大的问题,对于各个木块功能实现的具体代码把握也不是很明确,在查了很多资料,参考同学的程序之后才有了具体实现的思路。在这些模块中,比较有难度的是分数与按键匹配的判定,以及判定之后的加分升级和改变伴随的音乐,还有一个是LED的显示,在查了资料后才终于得出了结论。其他的还好,进行的还比较顺利。 在这个课程设计中,最难的,最麻烦的,花了最多时间的是我们开始没有想到的硬件!我们原本以为在软件设计成功之后就可以验收了,因为外接的电路不是很复杂,PCB板上最复杂的只有两块芯片。可是但我们真正设计起来才发现了它的难度,不会画PCB板然后我们请教大神帮我们画了,但在印制的过程中多次的返工几乎让我们想到了放弃,可是我们当时的固执让我们坚持了下来,因为放弃实在让我们很不忍心,毕竟已经花了那么长时间了。最后也许是时来运转,或者说人品爆发,终于做出来了一个能够成功的实现相应功能的PCB板,在制作过程中的一波三折,因为对于这个设计过程中流程的不熟悉,还有操作的不灵活,导致印制的电路板失败了三次,花了三天,终于把PCB做好,但是在焊接的过程中出现了很严重的问题,因为设计的焊孔太小,不容
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外科护士长述职报告范文(8篇)
- 乡镇综治办主任述职报告(3篇)
- 售楼处案场经理述职报告范文(3篇)
- 人员密集场所爆炸紧急处置方案
- 2026年医疗机构疾控监督员考核试题及答案
- 2026年智能驾驶系统状态监控工具
- 气焊与气割的基本原理和安全特点培训课件
- 微机在填写操作票中的应用培训
- 2026葡萄牙葡萄酒产销量供需互动机制分析及品质提升投资评估规划分析报告
- 2026能源转型行业市场分析深度及发展前景与融资运作报告
- 2026年二级建造师继续教育考试练习题及答案
- 【新教材】人教版(2024)八年级下册物理期末质量监测试卷1(含答案)
- 2026年幼儿园师德师风的认识
- DB34-T 4351-2022 综合医院康复治疗中心建设规范
- 泉州第五中学2026届数学高一下期末质量检测模拟试题含解析
- 设备管理教学培训课件
- 避雷器课件教学
- 高中住校申请书
- GB/T 20042.5-2024质子交换膜燃料电池第5部分:膜电极测试方法
- SF-T0095-2021人身损害与疾病因果关系判定指南
- GB/T 4706.74-2024家用和类似用途电器的安全第74部分:缝纫机的特殊要求
评论
0/150
提交评论