数字系统综合设计
——猜数字游戏
一、课题介绍
猜数字(又称 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)数字
程序的关键是判断输入的为数字还是字母以及状态的转变等等
键盘的设计方案如下:
对键盘的四行进行每个时刻有且只有一个低电平的扫描,监测四个列扫描是否有变化,如有变化,记录下四
个行和四个列的值,在由译码电路翻译成程序核心模块所需要的代码。
三、面板图:
评论5