ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:1,007.17KB ,
资源ID:4400350      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4400350.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(北邮数字电路实验投骰子游戏.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

北邮数字电路实验投骰子游戏.docx

1、北邮数字电路实验投骰子游戏数电综合实验报告掷骰子游戏电路的设计与实现姓名:xxx班级:xxx学号:xxx目录数电综合实验报告掷骰子游戏电路的设计与实现 1一、 实验要求: 2基本要求: 2提高要求: 2二、 系统设计 2设计思路 2总体框图 2三、 仿真波形及波形分析 6四、 源程序 6五、 功能说明及资源利用情况 18功能说明 18资源利用情况 18六、 故障及问题分析 19七、 实验结果显示 20八、 总结和结论 21一、 实验要求:基本要求:1、 电路可供甲乙二人游戏,游戏者甲使用的按键是BTN0,游戏者乙使用的按键为BTN1。2、 每按一次按键,代表掷一次骰子,可随机得到16范围内的两

2、个数字。3、 甲乙按键产生的随机数字分别用数码管DISP0DISP1、DISP2DISP3显示,并用DISP7显示比赛局数,比赛结束用88点阵显示获胜方,并伴有声音效果。4、 具体游戏规则如下:(1) 第一局比赛,甲乙依次各按一次按键,按键所得两数之和为7或11者胜;若无人取胜,则进行第二局比赛; (2) 第二局比赛,甲乙每人各按一次按键,按键所得二数之和与第一局比赛相同者获胜,若无人获胜,则进行第三局比赛,重复进行步骤(2),直到出现胜者为止。 (3) 游戏局数最多进行六局。在第六局比赛时,若重复进行步骤(2)仍未出现胜者,以按键所得两数之和最大者为获胜方。 提高要求:1、 增加多人游戏的功

3、能,数码管可分时记录显示每个游戏者的骰子点数。2、 点阵显示增加游戏开机动画、结束动画,并伴有乐曲播放。3、 自拟其它功能。二、 系统设计设计思路在设计该游戏时,我采用了自顶向下的设计方法,首先分析了这个掷骰子游戏的基本功能就是按照上述的游戏要求设计,然后看这个系统结构该怎么分解,会产生哪些系统模型和子模块,根据上述要求最终我决定将该系统分解成以下五个模块:随机数产生模块、按键赋值模块、数码管显示模块、状态判断模块、结果输出(点阵和蜂鸣器)模块,最后具体到各个模块该怎么实现,及代码的编写。总体框图具体框图见附加Visio文件注:框图中|表示并行程序1、 分块设计随机数产生与按键赋值模块状态判断

4、模块结果显示模块三、 仿真波形及波形分析 由上图波形可以看出程序已经实现了基本功能,但在某些部分会出现毛刺,不影响整体性能。四、 源程序-主程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity zhishaizi is port( - CLK:in std_logic; SG: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -段码 BT:OUT STD_LOGIC_VECTOR(5 DOWNTO 0) ; -位码 - buttoin1: in std_logic;

5、 buttoin2: in std_logic; beep:out std_logic; row,lie1: out std_logic_vector(7 downto 0); end zhishaizi;architecture ab of zhishaizi is- type shu_zu is array (7 downto 0) of std_logic_vector(7 downto 0); constant kaiji:shu_zu:= ( (00100001), (00100010), (00100100), (00100100), (11111111), (00100100),

6、 (00100100), (11111111) );constant jia:shu_zu:= ( (00011000), (00011000), (00011000), (11111111), (10011001), (11111111), (10011001), (11111111) ); constant yi:shu_zu:= ( (11111110), (10000001), (00000010), (00000100), (00001000), (00010000), (00100000), (11111111) ); constant ping:shu_zu:= ( (00011

7、000), (00011000), (00011000), (11111111), (00111100), (01011010), (10011001), (11111111) ); constant jieshu:shu_zu:= ( (00001000), (00000100), (00000010), (11111111), (00000010), (00000100), (00001000), (00000000) ); - SIGNAL clk_tmp: STD_LOGIC; SIGNAL clk_tmpp: STD_LOGIC; signal temp:integer range

8、0 to 1999; signal tempp:integer range 0 to 1896; signal ab:INTEGER RANGE 0 TO 7; SIGNAL CNT6:INTEGER RANGE 0 TO 4; SIGNAL cn:integer range 1 to 6; SIGNAL cnn:integer range 1 to 6; signal a1,a2,b1,b2: INTEGER range 1 to 6; signal count: INTEGER range 1 to 6; signal a3,b3: INTEGER range 2 to 12; signa

9、l m1,m2: INTEGER range 1 to 12; signal A:INTEGER RANGE 1 TO 6; signal jieguo:INTEGER RANGE 0 TO 4; signal judge: std_logic; signal clear:integer range 0 to 1;begin -pp1:process(clk) -分频器1begin if clkevent and clk=1 then if temp=999 then temp=0; else temp=temp+1; end if;end if;end process pp1;pp2:pro

10、cess(temp)begin if temp=999 thenclk_tmp=1;elseclk_tmp=0;end if;end process pp2;p0p1:process(clk) -分频器2begin if clkevent and clk=1 then if tempp=896 then tempp=0; else tempp=tempp+1; end if;end if;end process p0p1;p0p2:process(tempp)begin if tempp=896 thenclk_tmpp=1;elseclk_tmpp=0;end if;end process

11、p0p2;p02:process(clk_tmp) -点阵的扫描信号 begin if(clk_tmpevent and clk_tmp=1)then ab=ab+1; if(ab=8)then ab-开机动画 case ab is when 0= lie1=kaiji(ab); row lie1=kaiji(ab); row lie1=kaiji(ab); row lie1=kaiji(ab); row lie1=kaiji(ab); row lie1=kaiji(ab); row lie1=kaiji(ab); row lie1=kaiji(ab); row-显示甲 case ab is

12、when 0= lie1=jia(ab); row lie1=jia(ab); row lie1=jia(ab); row lie1=jia(ab); row lie1=jia(ab); row lie1=jia(ab); row lie1=jia(ab); row lie1=jia(ab); row-显示乙 case ab is when 0= lie1=yi(ab); row lie1=yi(ab); row lie1=yi(ab); row lie1=yi(ab); row lie1=yi(ab); row lie1=yi(ab); row lie1=yi(ab); row lie1=y

13、i(ab); row-显示平 case ab is when 0= lie1=ping(ab); row lie1=ping(ab); row lie1=ping(ab); row lie1=ping(ab); row lie1=ping(ab); row lie1=ping(ab); row lie1=ping(ab); row lie1=ping(ab); row-显示箭头 case ab is when 0= lie1=jieshu(ab); row lie1=jieshu(ab); row lie1=jieshu(ab); row lie1=jieshu(ab); row lie1=j

14、ieshu(ab); row lie1=jieshu(ab); row lie1=jieshu(ab); row lie1=jieshu(ab); row=11111110; end case; end case; end process p0;P2:process(clk_tmp) -控制码位 BEGIN if(clk_tmpevent and clk_tmp=1)then if(CNT6=4)THEN CNT6=0; ELSE CNT6 BT = 011111 ; A BT = 101111 ; A BT = 111011 ; A BT = 111101 ; A BT = 111110 ;

15、 A NULL ; END CASE ; END PROCESS P1; P3:process(A) BEGIN CASE A IS -实现数码管的显示功能 WHEN 1 = SG SG SG SG SG SG = 1011111; END CASE ; END PROCESS P3; - 两个分频器分别产生两个随机数 p4:process(clk_tmp) begin if (clk_tmpevent and clk_tmp=1) then if cn=6 then cn=1; else cn=cn+1; end if; end if; end process p4; pp4:process

16、(clk_tmpp) begin if (clk_tmppevent and clk_tmpp=1) then if cnn=6 then cnn=1; else cnn=cnn+1; end if; end if; end process pp4;- 蜂鸣器p5:process(clk_tmp) begin if clear=1 then if clk=1 then beep=1after 5ns; else beep=0 after 5ns; end if; else null; end if; end process p5;- 当有按键按下时,根据按下的键取不同的值 p7p:proces

17、s(buttoin1,buttoin2) begin if(buttoin1=1 )then if judge=1 then a1=cn; a2=cnn; judge=0; end if; end if; if(buttoin2=1 )then if judge=0 then b1=cn; b2=cnn; judge=1; end if; end if; end process p7p; - p8:process(judge) begin if(judgeevent and judge=1) then if (count=6 ) then count=1; else count=count+1

18、; end if; end if; a3=a1+a2; b3=b1+b2; end process p8; -判断状态是第几局 p9:process(count) begin if(clear=1)then -如果清零信号为1则先置零 m1=1; -防止被上局的结果影响 m2=1; clear if(a3=7 or a3=11) then if( b3=7 or b3=11 )then jieguo=3; -点阵显示平局,重新开始 else if(b3/=7 and b3/=11) then jieguo=1; clear=1; -点阵显示甲胜,重新开始 else null; end if; end if; elsif(b3=7 or b3=11) then jieguo=2; clear=1; -点阵显示乙胜,重新开始 else m1=a3; m2=b3; jieguo if (a3=m1 and b3=m2) then jieguo=3; -点阵显示平局,重新开始 elsif

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1