智能乒乓球游戏机控制系统的设计PPT格式课件下载.ppt
- 文档编号:15672766
- 上传时间:2022-11-12
- 格式:PPT
- 页数:36
- 大小:1.59MB
智能乒乓球游戏机控制系统的设计PPT格式课件下载.ppt
《智能乒乓球游戏机控制系统的设计PPT格式课件下载.ppt》由会员分享,可在线阅读,更多相关《智能乒乓球游戏机控制系统的设计PPT格式课件下载.ppt(36页珍藏版)》请在冰豆网上搜索。
输出变量:
speaker是蜂鸣器led8s是一排8个发光二极管代表球场,led7s14是4个显示分数的数码管,led7s5是显示发球权的数码管。
五、确定输入状态考虑到游戏的复杂度,采用状态机来实现这些模式转换。
用到8个状态,如下所示:
状态功能S0复位状态,也是判断发球权的状态S1甲方发球S2球从甲方向乙方右移,若此时乙方接球就给甲方加一分,并将球权给甲方S3开始判断乙方是否在0.5S内接球S4乙方发球S5球从乙方向甲方左移,若此时甲方接球就给乙方加一分,并将球权给乙方S6开始判断甲方是否在0.5S内接球S7用于接球后判断发球六、整体设计框图八、状态机设计(状态转换图)九、状态机设计(状态编码)modulepingpangok(state,clk2hz,rst,k_a,k_b,led8s,led7s1,led7s2,led7s3,led7s4,led7s5,speaker);
/clk2hz指一个2Hz的时钟输入,rst异步复位,k_a和k_b是比赛双方按键,speaker是蜂鸣器/led8s是一排8个发光二极管代表球场,led7s14是4个显示分数的数码管,led7s5是显示发球权的数码管inputclk2hz,rst,k_a,k_boutput7:
0led8s;
output6:
0led7s1,led7s2,led7s3,led7s4,led7s5;
outputspeaker;
output2:
0state;
reg7:
reg6:
reg3:
0score_a,score_b;
reg2:
regspeaker;
parameters0=3b000,/复位状态,也是判断发球权的状态;
s1=3b001,/甲方发球;
s2=3b010,/球从甲方向乙方右移,若此时乙方接球就给甲方加一分,并将球权给甲方;
s3=3b011,/开始判断乙方是否在0.5S内接球;
s4=3b100,/乙方发球;
s5=3b101,/球从乙方向甲方左移,若此时甲方接球就给乙方加一分,并将球权给乙方;
s6=3b110;
/开始判断甲方是否在0.5S内接球;
s7=3b111;
/用于判断接球后发球;
always(posedgeclk2hz)begincase(state)s7:
beginif(k_a)state=s1;
/甲发球;
elseif(k_b)state=s4;
/乙发球;
elseif(speaker)speaker=1b0;
elsespeaker=1b0;
ends0:
beginled7s5=7b0111111;
/第五个数码管显示数字0,表示发球权可以开始判断了;
led8s=7b00000000;
score_a=0;
score_b=0;
/给甲乙双方的分数复位;
if(k_a)beginspeaker=1b1;
/因为按键k_a要持续按着保持高电位1,蜂鸣器鸣叫是提示可以松手了;
state=s7;
endelseif(k_b)beginspeaker=1b1;
endelsestate=s0;
ends1:
beginled7s5=7b0000110;
/第五个数码管显示数字1,表示发球权现在是甲方的;
if(led8s=8b00000000)led8s=8b10000000;
/点亮的灯出现在最右边,即甲方发球;
state=s2;
if(speaker)speaker=1b0;
/将刚才鸣叫的蜂鸣器关闭;
ends2:
beginif(led8s=8b00000010)beginled8s1;
state=s3;
/进入判断乙方接球的状态;
endelsebeginled8s1;
endif(k_b)beginscore_a=score_a+1;
speaker=1b1;
/若在此期间乙方抢先按键,就判断乙方输,给甲方加1分,并让蜂鸣器鸣叫;
led8s=8b00000000;
endends3:
beginif(k_b)beginstate=s7;
/乙方接球成功,并进入乙方发球的s7状态;
endelsebeginscore_a=score_a+1;
/乙方接球不成功,则甲方加一分,并进入甲方发球的s7状态,蜂鸣器鸣叫;
endends4:
beginled7s5=7b1011011;
/第五个数码管显示数字2,表示发球权现在是乙方的;
if(led8s=8b00000000)led8s=8b00000001;
/点亮的灯出现在最左边,即乙方发球;
state=s5;
ends5:
beginif(led8s=8b01000000)beginled8s=led8s1;
state=s6;
/进入判断甲方接球的状态;
endelsebeginled8s=led8s1;
endif(k_a)beginscore_b=score_b+1;
/若在此期间甲方抢先按键,就判断甲方输,给乙方加1分,并让蜂鸣器鸣叫;
endends6:
beginif(k_a)beginstate=s7;
/甲方接球成功,并进入甲方发球的s7状态;
endelsebeginscore_b=score_b+1;
/甲方接球不成功,则乙方加一分,并进入乙方发球的s7状态,蜂鸣器鸣叫;
endenddefault:
state=s0;
endcase/-甲乙双方的分数各用2个数码管显示-if(score_a=11&
score_b=11)beginscore_a=0;
/如果任一方得11分,一局结束,计分清零;
endcase(score_a)8b0000:
beginled7s1=7b0111111;
led7s2=7b0111111;
/数码管显示0分;
end8b0001:
led7s2=7b0000110;
/数码管显示1分;
end8b0010:
led7s2=7b1011011;
/数码管显示2分;
end8b0011:
led7s2=7b1001111;
/数码管显示3分;
end8b0100:
led7s2=7b1100110;
/数码管显示4分;
end8b0101:
led7s2=7b1101101;
/数码管显示5分;
end8b0110:
led7s2=7b1111101;
/数码管显示6分;
end8b0111:
led7s2=7b0000111;
/数码管显示7分;
end8b1000:
led7s2=7b1111111;
/数码管显示8分;
end8b1001:
led7s2=7b1101111;
/数码管显示9分;
end8b1010:
beginled7s1=7b0000110;
/数码管显示10分;
end8b1011:
/数码管显示11分;
enddefault:
endendcasecase(score_b)8b0000:
beginled7s3=7b0111111;
led7s4=7b0111111;
led7s4=7b0000110;
led7s4=7b1011011;
led7s4=7b1001111;
led7s4=7b1100110;
led7s4=7b1101101;
led7s4=7b1111101;
led7s4=7b0000111;
led7s4=7b1111111;
led7s4=7b1101111;
beginled7s3=7b0000110;
endendcaseendendmodule十:
系统模块十一、RTL图十二、仿真时序图A发球B未接球A发球B接球A发球B接球B再发球B发球A未接球B发球A接球B发球A接球B再发球十三、演示照片十四、设计结论及评价优点:
结合了所学的数字电子与EDA技术,实现数字计分,节约了人力,并使计分结果更准确。
不足:
实品并不是对我们的生活有很大的帮助,可能让大家看起来很鸡肋,计分与游戏在一起,所以无法用在生活中结论:
通过这次大作业的练习,我对EDA有了更加深入的理解,对用Verilog语言设计程序不再感到陌生。
我对设计要求进行了仔细的分析,对设计算法不断地进行优化,对程序反复地进行调试,这在很大程度上锻炼了我解决问题的能力。
另外,通过这次课程设计我的Verilog编程能力得到了很大的提高,同时熟练掌握了Quartus这个EDA软件。
总之,这次课程设计让我受益匪浅,最后非常感谢
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 乒乓球 游戏机 控制系统 设计