- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE \* MERGEFORMAT 50
数字电路与逻辑设计实验实验报告
简易猜数字游戏机的设计与实现
班级:
姓名:
学号:
班内序号:
简易猜数字游戏机设计与实现的任务要求……………………3
简易猜数字游戏机系统设计………………… …………4
设计思路
总体框图
分块设计
仿真波形及波形分析……………………………………………5
源程序(要有注释)……………………………………………8
顶层源码(GuessNum.vnd)
键盘源码(Keyboard.vhd)
消抖源码(xiaodou.vhd)
点阵源码(DotMatrix.vhd)
数码管源码(Display.vhd)
随机数源码(random.vhd)
蜂鸣器源码(beep_t.vhd)
功能说明及资源利用情况………………………………………26
故障及问题分析…………………………………………………27
实验总结…………………………………………………………30
简易猜数字游戏机设计与实现的任务要求
实验基本要求:
游戏规则:通常由两个人玩,一方出数字,另一方猜。出数字的人要想好一个没有重复数字的4 位数,不能让猜的人知道。
数字设置:通过 4*4键盘进行 4位数字输入,在数码管(DISP0~DISP3)上显示当前所输入的数字。通过设置确定键(BTN1键)进行锁定,此时数码管上的数值消失,同时用点阵开始倒计时,即:初始状态点阵全亮,然后从右下角开始,由右到左、由下到上逐点逐排依次熄灭,间隔时间为 1s,共计64s。
猜数字:可以通过 4*4 键盘进行 4 位数字输入进行猜数字,且每输入一位数字在数码管(DISP0~DISP3)上显示当前所输入的数字,按确定键(BTN2键)进行确认,此时要根据输入的这组数字给出几A几 B,其中:
A前面的数字表示位置正确的数的个数,用DISP5显示
B前的数字表示数字正确而位置不对的数的个数,用DISP4显示
如正确答案为2134,而猜的人猜5314,则是1A2B,其中有一个4的位置对了,记为1A,而1和3这三个数字对了,而位置没对,因此记为2B,合起来就是1A2B;
接着猜的人再根据出题者的几A几B继续猜,直到猜中(即 4A0B)为止。
若数字正确则显示猜数字成功,点阵显示“?”笑脸;若输入数字错误系统仍然处于猜数字状态,点阵显示“X” ,并用蜂鸣器或led闪烁报警。
若到点阵全灭时(64s结束)仍未猜出正确数字,游戏失败,点阵显示“囧” 。
设置游戏机开关。
实验提高要求:
若数字正确则显示猜数字成功,用蜂鸣器播放一段乐曲。
随机产生数字,并不在数码管上显示,进行猜数字游戏,用点阵进行 64s计时,即点阵轮询熄灭两次,其他要求同基本功能 3、4 和5。
自拟其他功能。
简易猜数字游戏机系统设计
设计思路
这次实验主要用到了4×4键盘、8×8点阵、七段显示数码管及蜂鸣器。实验整体设计流程是:
Step1:编写并调试键盘;
Step2:编写并调试数码管和键盘;
Step3: 编写并调试点阵;
Step4:遍写并调试随机数;
Step5:编写并调试比较(随机数测);
Step6:编写顶层并调试。
总体框图
分块设计
首先,键盘输入数字(顶层文件获取键盘输入的数字并根据不同的输入信号做出相关判断与处理操作),通过列扫描(扫描频率为10k)的方式检测键盘的输入信号,根据扫描频率做一个计数器,计数周期为4,依次扫描列(1110、1101、1011、0111),列与行合并为一个八位数组,当八位数组中出现两个0时,表示键盘输入了数字,此时需将key_pressed(数码管显示信号)置1,对比出现八位数组中两个0出现的位置,可得出输入的数值。
其次是防抖,由于按键按下,理想状态会根据按键时间的长短产生一个方波,但是实际上会产生很多毛刺,不利于检测按键的输入信号,对此需要做消抖处理。这部分代码的书写参考了网络上的资料,通过RS触发器,对按键输入信号做消抖处理。在本次试验中,按键均用到了消抖。
第三个则是,数码管显示六位数字(顶层文件发送给数码管disp0-5六个数字,六位数码管分别显示六个数字),数码管扫描频率为10k,根据扫描频率做一个计数器,计数周期为8,当计数器数值为0-5时,分别显示0-5六个数码管的值,其他两个状态数码管不工作。数码管部分的另一功能则是对数字做七段译码处理。
点阵模块(扫描频率10k,倒计时频率1Hz),输入信号有dz、start、 wrong、 success(均由顶层文件赋值)。其中,dz为点阵开始工作的信号(持续高电平),由顶层文件赋值,sta
文档评论(0)