智能乒乓球游戏机控制系统的设计.ppt

上传人:b****3 文档编号:2761539 上传时间:2022-11-12 格式:PPT 页数:36 大小:1.59MB
下载 相关 举报
智能乒乓球游戏机控制系统的设计.ppt_第1页
第1页 / 共36页
智能乒乓球游戏机控制系统的设计.ppt_第2页
第2页 / 共36页
智能乒乓球游戏机控制系统的设计.ppt_第3页
第3页 / 共36页
智能乒乓球游戏机控制系统的设计.ppt_第4页
第4页 / 共36页
智能乒乓球游戏机控制系统的设计.ppt_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

智能乒乓球游戏机控制系统的设计.ppt

《智能乒乓球游戏机控制系统的设计.ppt》由会员分享,可在线阅读,更多相关《智能乒乓球游戏机控制系统的设计.ppt(36页珍藏版)》请在冰豆网上搜索。

智能乒乓球游戏机控制系统的设计.ppt

题目:

智能乒乓球游戏机控制系统的设计一、大作业摘要目前以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。

本实验应用现学的知识为基础,完成的一个智能乒乓球游戏机控制系统,下面是我的作品。

二、设计的背景、目的和意义背景:

在乒乓球比赛中要计分,但对于人工记分较为繁琐并容易出错,所以要使用计分器就可以避免这些问题,并能让人清楚地看到两人的分数。

目的:

能实现积分并在有人达到11时进行蜂鸣提醒。

意义:

实现数字计分,节约了人力,并使计分结果更准确。

三、设计任务及要求左、右双方各持一按键作为“球拍”,实验板上一行8只发光二极管为乒乓球台,其中那只发光的发光二极管代表乒乓球所在位置。

设计如图1所示的乒乓球游戏实物图的模拟控制器。

发球方最后一位LED点亮,按下键表示发球,亮的灯依次向对方移动,当到达对方最后一位时0.5s内对方必须按下按键表示接球,接球后LED灯向对方移动,否则输球。

接球时,LED没有亮到最后一位时就按下接球按键为犯规。

输球或者犯规,对方加1分,率先加到11分者游戏胜出这一局。

四、确定输入和输出变量输入变量:

clk2hz指一个2Hz的时钟输入,rst异步复位,k_a和k_b是比赛双方按键。

输出变量:

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:

0led8s;reg6:

0led7s1,led7s2,led7s3,led7s4,led7s5;reg3:

0score_a,score_b;reg2:

0state;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;state=s7;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;state=s7;endif(k_b)beginscore_a=score_a+1;speaker=1b1;/若在此期间乙方抢先按键,就判断乙方输,给甲方加1分,并让蜂鸣器鸣叫;state=s7;led8s=8b00000000;endends3:

beginif(k_b)beginstate=s7;/乙方接球成功,并进入乙方发球的s7状态;led8s=8b00000000;endelsebeginscore_a=score_a+1;speaker=1b1;state=s7;/乙方接球不成功,则甲方加一分,并进入甲方发球的s7状态,蜂鸣器鸣叫;led8s=8b00000000;endends4:

beginled7s5=7b1011011;/第五个数码管显示数字2,表示发球权现在是乙方的;if(led8s=8b00000000)led8s=8b00000001;/点亮的灯出现在最左边,即乙方发球;state=s5;if(speaker)speaker=1b0;/将刚才鸣叫的蜂鸣器关闭;ends5:

beginif(led8s=8b01000000)beginled8s=led8s1;state=s6;/进入判断甲方接球的状态;endelsebeginled8s=led8s1;state=s7;endif(k_a)beginscore_b=score_b+1;speaker=1b1;/若在此期间甲方抢先按键,就判断甲方输,给乙方加1分,并让蜂鸣器鸣叫;state=s7;led8s=8b00000000;endends6:

beginif(k_a)beginstate=s7;/甲方接球成功,并进入甲方发球的s7状态;led8s=8b00000000;endelsebeginscore_b=score_b+1;speaker=1b1;state=s7;/甲方接球不成功,则乙方加一分,并进入乙方发球的s7状态,蜂鸣器鸣叫;led8s=8b00000000;endenddefault:

state=s0;endcase/-甲乙双方的分数各用2个数码管显示-if(score_a=11&score_b=11)beginscore_a=0;score_b=0;/如果任一方得11分,一局结束,计分清零;endcase(score_a)8b0000:

beginled7s1=7b0111111;led7s2=7b0111111;/数码管显示0分;end8b0001:

beginled7s1=7b0111111;led7s2=7b0000110;/数码管显示1分;end8b0010:

beginled7s1=7b0111111;led7s2=7b1011011;/数码管显示2分;end8b0011:

beginled7s1=7b0111111;led7s2=7b1001111;/数码管显示3分;end8b0100:

beginled7s1=7b0111111;led7s2=7b1100110;/数码管显示4分;end8b0101:

beginled7s1=7b0111111;led7s2=7b1101101;/数码管显示5分;end8b0110:

beginled7s1=7b0111111;led7s2=7b1111101;/数码管显示6分;end8b0111:

beginled7s1=7b0111111;led7s2=7b0000111;/数码管显示7分;end8b1000:

beginled7s1=7b0111111;led7s2=7b1111111;/数码管显示8分;end8b1001:

beginled7s1=7b0111111;led7s2=7b1101111;/数码管显示9分;end8b1010:

beginled7s1=7b0000110;led7s2=7b0111111;/数码管显示10分;end8b1011:

beginled7s1=7b0000110;led7s2=7b0000110;/数码管显示11分;enddefault:

beginled7s1=7b0111111;led7s2=7b0111111;/数码管显示0分;endendcasecase(score_b)8b0000:

beginled7s3=7b0111111;led7s4=7b0111111;/数码管显示0分;end8b0001:

beginled7s3=7b0111111;led7s4=7b0000110;/数码管显示1分;end8b0010:

beginled7s3=7b0111111;led7s4=7b1011011;/数码管显示2分;end8b0011:

beginled7s3=7b0111111;led7s4=7b1001111;/数码管显示3分;end8b0100:

beginled7s3=7b0111111;led7s4=7b1100110;/数码管显示4分;end8b0101:

beginled7s3=7b0111111;led7s4=7b1101101;/数码管显示5分;end8b0110:

beginled7s3=7b0111111;led7s4=7b1111101;/数码管显示6分;end8b0111:

beginled7s3=7b0111111;led7s4=7b0000111;/数码管显示7分;end8b1000:

beginled7s3=7b0111111;led7s4=7b1111111;/数码管显示8分;end8b1001:

beginled7s3=7b0111111;led7s4=7b1101111;/数码管显示9分;end8b1010:

beginled7s3=7b0000110;led7s4=7b0111111;/数码管显示10分;end8b1011:

beginled7s3=7b0000110;led7s4=7b0000110;/数码管显示11分;enddefault:

beginled7s3=7b0111111;led7s4=7b0111111;/数码管显示0分;endendcaseendendmodule十:

系统模块十一、RTL图十二、仿真时序图A发球B未接球A发球B接球A发球B接球B再发球B发球A未接球B发球A接球B发球A接球B再发球十三、演示照片十四、设计结论及评价优点:

结合了所学的数字电子与EDA技术,实现数字计分,节约了人力,并使计分结果更准确。

不足:

实品并不是对我们的生活有很大的帮助,可能让大家看起来很鸡肋,计分与游戏在一起,所以无法用在生活中结论:

通过这次大作业的练习,我对EDA有了更加深入的理解,对用Verilog语言设计程序不再感到陌生。

我对设计要求进行了仔细的分析,对设计算法不断地进行优化,对程序反复地进行调试,这在很大程度上锻炼了我解决问题的能力。

另外,通过这次课程设计我的Verilog编程能力得到了很大的提高,同时熟练掌握了Quartus这个EDA软件。

总之,这次课程设计让我受益匪浅,最后非常感谢

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 财务管理

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

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