- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北京邮电大学
数字电路与逻辑设计实验报告
实验题目:掷骰子游戏电路的设计与实现
学生姓名:
班级:
学号:
序号:
目录
设计课题的任务要求
系统设计
仿真波形及波形分析
源程序
功能说明及资源利用情况
故障及问题分析
总结和结论
设计课题的任务要求
设计并实现一个掷骰子游戏电路。
基本要求:
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、设计思路:按照实验要求,使用状态机分别表示游戏的不同状态;使用分频器来控制时钟;控制器实现具体的游戏规则;8*8LED点阵来显示胜负;数码管显示局数和甲乙掷出的随机数;随机数用一到六的循环产生。在编译时采用元件例化来生成各自的模块。流程图如下
显示
2、总体框图:
控制器
分频器
防抖器
输入
3、分块设计:
分别包括分频器、防抖器、随机数的产生、判断器、译码器和显示器等模块,综合起来实现所要求的功能。
分频器:
防抖器:
随机数的产生:
判断器:
译码器:
显示器:
仿真波形及波形分析
根据甲先乙后的顺序进行仿真如下:
从仿真中可以看出随机数的产生,若时间轴向后移可以将游戏看得更加清楚。
源程序
分频器:
library ieee;
use ieee.std_logic_1164.all;
entity fenpingqi is
port (clk:in std_logic;
clktmp:out std_logic);
end fenpingqi;
architecture a of fenpingqi is
signal tmp: integer range 0 to 499:=0;
signal clktmp1: std_logic;
begin
p3:process(clk) --frequent time
begin
if clkevent and clk=1then
if tmp=499 then
tmp=0;clktmp1= not clktmp1;
else
tmp=tmp+1;
end if;
end if;
end process p3;
clktmp=clktmp1;
end a ;
防抖器:
library ieee;
use ieee.std_logic_1164.all;
entity fangdouqi is
port (clk,btn1, btn2 :in std_logic;
btn1_en,btn2_en :out std_logic);
end fangdouqi;
architecture a of fangdouqi is
signal tempcount1:integer range 0 to 5 :=0;
signal tempcount2:integer range 0 to 5 :=0;
begin
p5:process(clk,btn1,btn2)
begin
if clkevent and clk=1 then
if btn1=1 then
if tempcount1=5 then tempcount1=tempcount1;
else tempcount1=tempcount1+1;
end if;
if tempcount1=4 then btn1_en=1;
else btn1_en=0;
end if;
else tempcount1 =0;
文档评论(0)