掷骰子游戏电路的设计与实现实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字电路与逻辑设计实验题目:掷骰子游戏电路的设计与实现
学号:
:进考
班级:
学院:信息与通信工程学院
日期:2014.11.10
一、设计课题的任务要求
设计并实现一个掷骰子游戏电路。
基本要求:
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、整体设计思路
将整个游戏电路分为时钟分频模块、随机数产生模块、数码管显示模块、判断控制模块、点阵显示模块等五个模块。其中,时钟分频模块用于产生适合其他模块使用的时钟频率;随机数产生模块接收来自按键的信号,产生1-6的随机数,其中按键带有防抖功能;数码管显示产生的随机数和局数;判断控制模块用于判断胜负,并控制点阵显示;点阵显示模块用于显示胜利的一方。
2、系统框图
3、分块设计
○1时钟分频模块
采用多级分频的方法分别产生点阵扫描需要的1MHz的
clk_dian频率、数码管扫描的10KHz的clk_shu频率、产生第一位随机数的2KHz的clk_x频率、产生第二位随机数的3.3kHz
的clk_y频率和用于防抖的20hz的clk_dou频率。
○2随机数产生模块
随机数产生模块用于产生随机数和局数计数。reset用于使局数归零,重新开始游戏。btn0用于作为产生甲方随机数的信号,btn1用于作为产生乙方随机数的信号。clk_x和clk_y是用来产生两位随机数的时钟信号。clk_dou为防抖时钟。qout1-2
是甲随机数输出信号,qout3-4是乙随机数输出信号,
qout5是
局数信号。
○3数码管显示模块
数码管显示模块用于显示产生的随机数和局数。clk_shu接收10KHz的时钟频率。qin1-5分别接收随机数产生模块的
qout1-5信号。cat[5..0]和g[6..0]控制数码管的位选和段选信号。
○4控制判断模块
控制判断模块用于判断胜负并控制点阵显示。clk_dou为防抖时钟频率,btn1为乙方按完按键的信号,jia1-2和yi1-2为
甲乙方的随机数,ju为比赛局数。V
是胜负结果,用于控制点阵
显示。
○5点阵显示模块
点阵显示模块用于显示胜利的一方。clkin接1MHz的时钟频率,v是胜负结果。beep是蜂鸣器输出信号,当有一方胜利的时候就会输出高电平信号;row和col分别是点阵的行输入和列输入。
三、仿真波形及波形分析
○1分频模块
由于分频比例太高,仿真到1s需要花费大量时间,故只仿真到20ms,可观察其中的clk_x和clk_y信号。
○2随机数模块
如图所示,当btn0被按下,经过防抖测试之后,产生随机数1和4,btn1被按下,经过防抖测试之后,产生随机数3和6,reset
拨上之后局数归零,重新开始(圆角方形所示)。
○3数码管显示模块
如图所示,圆圈为位选输出信号,其中cat4数码管没有使用。方框为段选输出信号,以输出1和5为例,显示正确,其中的毛刺可以忽略,不影响显示效果。
○4判断控制模块
如图,仅以第一局为例,设置甲方为5+2=7,乙方为1+1=2,如
方框所示;btn1下降沿触发比较,v的结果为01,即甲方获胜,如圆圈所示,仿真结果正确。
○5点阵显示模块
如图,以显示甲为例,输入为v=01,行输出和列输出显示结果为汉字甲,蜂鸣器输出beep=1,符合预设结果。
四、源程序
分频器模块fenpinqi.vhd
library ieee;
use ieee.std_logic_1164.all;
entity fenpinqi is
port( clkin:in std_logic; --时钟信号输入
clk_dian,clk_shu,clk_x,clk_y,clk_dou:out std_logic); --时钟信号输出
end fenpinqi;
architecture a of fenpinqi is
signal tmp1:integer range 0 to 24;
signal tmp2:integer range 0 to 49;
signal tmp3:integer range 0 to 4;
signal tmp4:integer range 0 to 149;
signal tmp5:integer range 0 to 499;
signal clktmp1:std_logic;
signal clktmp2:std_logic;
signal clktmp3:std_logic;
signal clktmp4:std_logic;
signal clktmp5:std_logic;
begin
p1:process(clkin)---分频到1MHz
begin
if clkin'event and clkin='1' then
if tmp1=24 then
tmp1<=0;