北京邮电大学
数字电路与逻辑设计实验
掷骰子游戏电路的设计与实现
学院:信息与通信工程学院
班级:2012211111
姓名:孙振超
学号:2012210326
班内序号:24
课题设计的任务要求
基本要求:
1、电路可供甲乙二人游戏,游戏者甲使用的按键为BTN0,游戏者乙使用的按键为
BTN1。
2、每按一次按键,代表掷一次骰子,可随机得到1~6范围内的两个数字。
3、甲乙按键产生的随机数字分别用数码管DISP0-DISP1、DISP2-DISP3显示,并用
DISP7显示比赛局数,比赛结束用8×8点阵显示获胜方,并伴有声音效果。
4、具体游戏规则如下:
(1)第一局比赛,甲乙依次各按一次按键,按键所得两数之和为 7 或 11 者胜;若无
人取胜,则进行第二局比赛;
(2)第二局比赛,甲乙每人各按一次按键,按键所得二数之和与第一局比赛相同者获
胜,若无人获胜,则进行第三局比赛,重复进行步骤(2),直到出现胜者为止。
(3)游戏局数最多进行六局。在第六局比赛时,若重复进行步骤(2)仍未出现胜者,
以按键所得两数之和最大者为获胜方。
提高要求:
1、增加多人游戏的功能,数码管可分时记录显示每个游戏者的骰子点数。
2、点阵显示增加游戏开机动画、结束动画,并伴有乐曲播放。
3、自拟其它功能。
系统设计(包括设计思路、总体框图、分块设计)
1、设计思路:
想实现的功能是二人掷骰子,并根据规则决定胜负,用顺序结构和if when逻辑判断来实现总体来说可以将其分为两个大块。第一个是接受键盘命令并通过逻辑判断向LED灯和数码管发出命令。第二个是显示模块,通过接收命令控制灯亮与数码管显示。
逻辑划分框图如下
时钟分频
控制判断
结果显示
骰子数据
分频计数
结构功能框图如下
按键输入
输出显示
逻辑判断
游戏规则
总体框图
时钟输入
分频
1~6随机数
局数(≤6)
译码为甲或乙掷骰子
数码管显示点数及局数
判定结果
有人赢
否
点阵显示结果
红V乙赢
绿V甲赢
是
3、分块设计:
高频时钟上升沿计数,50M除以50000可得到1KHZ的分频时钟。50M除以10000得5KHZ的时钟。以下为1KHZ分频,5KHZ同理。
IF CLOCK'EVENT AND CLOCK='1' THEN
COUNT3<=COUNT3+1;
IF COUNT3<=24999 THEN --1KHZ分频
CLK_1K<='1';
ELSIF COUNT3>24999 AND COUNT3<=49999 THEN
CLK_1K<='0';
ELSIF COUNT3=50000 THEN
COUNT3<=0;
END IF;
END IF;
计数器pr1和pr2,模为6并对1~6计数。pr1在1Khz时钟上升沿计数,pr2在5Khz时钟上升沿计数。甲按键时,此时的pr1,pr2分别赋值给甲的点数a1,a2。乙按键时,同理得到b1,b2。当乙按键按下时,局数i加一。
IF CLK_1K'EVENT AND CLK_1K='1' THEN
IF po1>=6 THEN
po1<="0001";
ELSE po1<=po1+1;
END IF;
END IF;
if sw2='1'then a1:="0000";a2:="0000";
elsif sw0'event and sw0='1' then
a1:=po1;
a2:=po2;
i:=i+1
、8*8点阵显示
sel为模8计数器,在5Khz时钟上升沿计数,扫描点阵。若ya=1即甲获胜时,显示绿色V。若yb=1即乙获胜,显示红色V。
IF CLK_5K'EVENT AND CLK_5K='1' then
IF SEL="111" THEN
SEL<="000";
E
骰子de实验报告 来自淘豆网m.daumloan.com转载请标明出处.