没有合适的资源?快使用搜索试试~ 我知道了~
首页用vhdl语言编写猜数字小游戏
资源详情
资源评论
资源推荐

数字系统综合设计
——猜数字游戏
一、课题介绍
猜数字(又称 Bulls and Cows )是一种大概于 20 世纪中期兴起于英国的益智类小游戏。一般由两
个人玩,也可以由一个人和电脑玩,在纸上、在网上都可以玩。这种游戏规则简单,但可以考验人
的严谨和耐心。
标准规则:通常由两个人玩,一方出数字,一方猜。出数字的人要想好一个没有重复数字的 4 位
数,不能让猜的人知道。猜的人就可以开始猜。每猜一个数字,出数者就要根据这个数字给出几
A 几 B,其中 A 前面的数字表示位置正确的数的个数,而 B 前的数字表示数字正确而位置不对的
数的个数。 如正确答案为 5234,而猜的人猜 5346,则是 1A2B,其中有一个 5 的位置对了,记为 1A,而 3 和 4
这两个数字对了,而位置没对,因此记为 2B,合起来就是 1A2B。 接着猜的人再根据出题者的几 A 几 B 继续猜,
直到猜中(即 4A0B)为止。
整个系统由 VHDL 语言写成,以 Quartus 作为开发平台,以自上而下的逐步细化的方式完成。各模块有很好的独立
性、整个系统的功能完善,效果很好。
二、具体实施方案
从键盘输入 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 分别代表不同意义。
0,1,2,3,4,5,6,7,8,9 代表输入的数字
A 代表 清除(刚才输入的数字)clear
B 代表 输入确定键 enter
C cin 无实际意义
D 代表输入的为被猜的数字 answer
E 代表输入的为猜的数字 guess
F :刚开始程序的初始化 res
Led 数码管:
An:表示数字猜对并且位置也对的个数
Bn:表示数字猜对并且位置不对的个数
Temp:由四个数码管表示当时的(guess 或 answer)数字
程序的关键是判断输入的为数字还是字母以及状态的转变等等
键盘的设计方案如下:
对键盘的四行进行每个时刻有且只有一个低电平的扫描,监测四个列扫描是否有变化,如有变化,记录下四
个行和四个列的值,在由译码电路翻译成程序核心模块所需要的代码。
三、面板图:

输入有:
0,1,2,3,4,5,6,7,8,9 代表输入的数字
A 代表 清除(刚才输入的数字)clear
B 代表 输入确定键 enter
C cin 无实际意义
D 代表输入的为被猜的数字 answer
E 代表输入的为猜的数字 guess
F :刚开始程序的初始化 res
输出有:
An:表示数字猜对并且位置也对的个数
Bn:表示数字猜对并且位置不对的个数
Temp:由四个数码管表示当时的(guess 或 answer)数字
四、系统结构图:
系统框图:

修改棋子状态
反馈给状态机
用于后续判断
顶层结构图:
Keyboard4_4 模块:
检测键盘输入并进行译码。
Clk——时钟
Reset——初始化键
状
态
机
确认键
Clear 键
数字 LED 管
An , Bn
: 个
数
Answer 键
Guess 键
0123456789 键
数字 LED 管
temp 显示数字

Scan[3..0]——键盘的行扫描输出信号
Keyin[3..0]——键盘的列输入信号
Guess——输入的为 guess
Answer——输入的为 answer
Clear ——清除前一个数
Enter ——确定键
Cin——
Num (9 ..0) ——位数为 1,则为输入的为那个数字
Keyboard4 模块:
输入键盘的输入信号(译码后),对之分析并进行相应操作(res,answer,guess,clear),将猜出的结果
(An,Bn)状态输出。
Clk——时钟
Reset——复位键
Guess——输入的为 guess
Answer——输入的为 answer
Clear ——清除前一个数
Enter ——确定键
Cin——
Num (9 ..0) ——位数为 1,则为输入的为那个数字
Ag —— 1 为 answer 0 为 guess
Out_code4——数字已输入的位数
Ans——被猜的数字
Gus——猜的数字
An——表示数字猜对并且位置也对的个数
Bn——表示数字猜对并且位置不对的个数
Temp——由四个数码管表示当时的(guess 或 answer)数字
剩余19页未读,继续阅读


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论5