资源描述:
《北邮数电综合实验_简易猜数字游戏机的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数电综合实验题目:简易猜数字游戏机的设计与实现姓名孙尚威学院电子工程学院专业电子信息科学与技术班级2013211202学号2013210849班内序号04指导教师孙丹丹2015年11月摘要:通过分析题目要求以及实际生活中猜数字游戏机的操作方式,在以Atmel EMP1270T144C5 芯片为核心,拥有按键、点阵、数码管和蜂鸣器等外设的实验板上设计并实现了简易猜数字游戏机。采用模块化设计思路在Quartus II软件中利用VHDL语言实现模块化电路设计,利用自顶而下的设计思路实现系统整体搭建,并利用Quartus II 软件功能进行仿真和分析。最终下载到实验板上可流畅
2、运行,无明显逻辑错误,在完成实验要求的基础上,实现了随机数/手动设置数字模式切换功能,led灯提示游戏进行状态等拓展功能。一、游戏规则简述通常由两个人玩,一方出数字,另一方猜。出数字的人要想好一个没有重复数字的4位数,不能让猜的人知道。通过4*4键盘进行4位数字输入,在按下确定键后由猜数字人在规定时间内猜对之前输入的4位数字,过程中系统会给出提示XAYB(A前面的数字表示位置正确的数的个数,B前的数字表示数字正确而位置不对的数的个数。例:正确答案为2134,而猜的人猜5314,则是1A2B,其中有一个4的位置对了,记为1A,而1和3这三个数字对了,而位置没对,因此记为
3、2B,合起来就是1A2B)。接着猜的人再根据出题者的XAYB继续猜,直到猜中即4A0B为止。二、实验要求基本要求:(1)设置游戏机开关以及复位键。(2)数字设置:通过4*4键盘进行4位数字输入,在数码管(DISP0~DISP3)上显示当前所输入的数字。通过设置确定键(BTN1键)进行锁定,此时数码管上的数值消失,同时用点阵开始倒计时,即:初始状态点阵全亮,然后从右上角开始,由右到左、由下到上逐点逐排依次熄灭,间隔时间为1s,共计64s。(3)猜数字:可以通过4*4键盘进行4位数字输入进行猜数字,且每输入一位数字在数码管(DISP0~DISP3)上显示当前所输入的数字,
4、按确定键(BTN2键)进行确认,此时要根据输入的这组数字给出XAYB。(4)若数字正确则显示猜数字成功,点阵显示“☺”笑脸;若输入数字错误系统仍然处于猜数字状态,点阵显示“X”,并用蜂鸣器报警。(5)若到点阵全灭时(64s结束)仍未猜出正确数字,游戏失败,点阵显示“囧”。提高要求:(1)若数字正确则显示猜数字成功,用蜂鸣器播放一段乐曲。(2)一键产生4位随机数字。三、总体设计思路功能流程图:四、 功能模块的设计和实现系统共通过8个模块实现,分别是:游戏控制(状态机)、分频器、键盘模块、点阵显示模块、数码管显示、倒计时模块、随机数生成器、音乐播放这8个模块实现的,具体设
5、计如下。(1)游戏控制模块(ssw)1. 模块设计思路 使用状态机进行编写,共计7个状态分别是:空闲(idle)、设定数字(set_number)、猜数字(guess_number)、比较判断(compare)、正确(smile)、错误(false)、倒计时结束(jiong)。各状态间通过外接按键以及其他模块传递过来的控制信号进行转移。在不同的状态下输出不同的状态标志信号对后续模块进行控制。状态转移图如图2. 外部接口设计 设计输入端口: 时钟信号clk_scan:STD_LOGIC,频率2KHz; 复位信号reset: STD_LOGIC,使状态机复位到空闲(idl
6、e)状态; 开始信号start : STD_LOGIC,使状态由空闲(idle)状态转移到设定数字(set_number)状态,开始游戏; Ø 设置数字保存set_save: STD_LOGIC,使状态由设定数字(set_number)转移到猜数字(guess_number)状态,保存设置数字;猜数字保存guess_save: STD_LOGIC,使状态由猜数字(guess_number)转移到比较判断(compare)状态,进行状态转移判断; 猜数字正确信号win:STD_LOGIC,使状态由比较判断(compare)状态转移到正确(smile)状态,输出笑脸信号给
7、点阵和音乐信号给音乐播放模块; 猜数字错误信号wrong:STD_LOGIC,使状态由比较判断(compare)状态转移到错误(false)状态,输出X信号给点阵和报警信号给音乐播放模块; 显示等待信号done:STD_LOGIC,使状态由错误(false)状态转移到猜数字(guess_number)状态; 倒计时结束信号time_over:STD_LOGIC,使状态由猜数字(guess_number)状态转移到倒计时结束(jiong)状态,输出囧信号给点阵;设计输出端口:当前状态机信号state_flag:STD_LOGIC_VECTOR(3dow