乒乓球游戏机.docx
《乒乓球游戏机.docx》由会员分享,可在线阅读,更多相关《乒乓球游戏机.docx(15页珍藏版)》请在冰豆网上搜索。
乒乓球游戏机
EDA课程设计报告书
课题名称
乒乓球游戏机
姓名
学号
院系
专业
指导教师
年月日
一、设计任务及要求:
设计一个能够模拟乒乓球比赛的基本过程和规则,并能自动裁判和记分的乒乓球游戏机。
要求:
用8只发光二极管代表球台,比赛时甲乙双方各在不同的位置发球或击球;根据球的位置发出相应的动作,提前击球或出界均判失分;乒乓球的位置和移动方向有灯亮及依次点亮的方向决定,球移动的速度为0.1~0.5s移动一位;甲乙双方设置各自的记分牌,任何一方先记满21分该方就算胜了此局;当记分牌清零后,又可开始新的一局比赛。
指导教师签名:
年月日
二、指导教师评语:
指导教师签名:
年月日
三、成绩
验收盖章
年月日
基于EDA的乒乓球游戏机电路设计
1、设计目的
学会运用EDA设计各种电路、系统,熟练使用工具软件,把所学的专业知识更好的用到实践方面。
2、设计的主要内容和要求
用8个发光二极管代表乒乓球台,在游戏机的两侧各设置两个开关,一个是发球开关,一个是击球开关。
甲方按动发球开关时,靠近甲方的第一盏灯亮,然后发光二极管由甲向乙依次点亮,代表乒乓球在移动。
当球过网后,按设计者规定的球位乙方就可以击球。
若乙方提前击球或没有击到球,则判乙方失分,甲方自动加分,重新发球比赛继续进行到一方记分到21分,该局结束,记分牌清零,可以开始新的一局比赛。
3整体设计方案
3.1、片选信号产生模块
片选信号产生模块是用来产生数码管的片选信号,将产生的片选信号输送
到数据转换模块,以便其对输入数据进行选择。
3.2、核心模块
核心模块有两个功能,第一个是实现逻辑功能,即对甲方乙方的发球击球
情况进行判断,然后再对双方谁得分进行记录;第二个是将整数得计分转换成十进制数,以便译码显示。
3.3、数据转换模块
数据转换模块是将核心模块输送过来的数据通过片选信号对其进行选择,
并将符合要求的数据输送出去。
3.4、七段译码器
七段译码器用来将输入数据进行翻译,便于数码管显示出数据。
3.5、总电路
将各个模块产生的符号文件组合起来构成乒乓球游戏机。
4硬件电路的设计
4.1、器件选择
设计开发软件:
MAX+plusⅡ10.2;
CPLD/FPGA适配器板:
EPF10K10接口板;
主芯片:
ALTERAEPF10K1084-4;
4.2、总体框图
乒乓球游戏机的总体框图如下图所示:
图4.2总体框图
4.3、各模块功能及其仿真
4.3.1片选信号产生模块(图4.3.1)
[1]片选信号产生模块是用来产生数码管的片选信号,将产生的片选信号输送到数据转换模块,以便其对输入数据进行选择。
图4.3.1片选信号产生模块符号
[2]图4.3.1模块为片选信号产生模块,用来产生数码管的片选信号。
其与数据
转换模块的对应关系如表4.3.1所示:
接口序号
数据转换模块
SEL2
SEL1
SEL0
选择数据
0
0
0
d2
0
0
1
d3
0
1
0
d3
0
1
1
d3
1
0
0
d0
1
0
1
d1
1
1
0
d3
1
1
1
d3
表4.3.1数据转换表
[3]CLK是扫描时钟信号接CLK5时钟信号源,A[2..0]是代表扫描片选地址信号SEL2,SEL1,SEL0的管脚同四位扫描驱动地址的低三位相连。
其VHDL程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityselis
port(clk:
instd_logic;
sell:
outstd_logic_vector(2downto0));
endsel;
architecturesel_arcofselis
begin
process(clk)
variabletmp:
std_logic_vector(2downto0);
begin
if(clk'eventandclk='1')then
if(tmp="000")then
tmp:
="001";
elsiftmp="001"then
tmp:
="100";
elsiftmp="100"then
tmp:
="101";
elsiftmp="101"then
tmp:
="000";
endif;
endif;sell<=tmp;
endprocess;
endsel_arc;
[4]仿真波形如下所示:
图4.3.2片选信号模块仿真波形图
[5]波形分析:
当CLK的上升沿到达时,sell按照十进制数0、1、4、5、0变化,并且向端口外输出片选信号,符合设计模块的要求。
4.3.2核心模块(图3.3.3)
[1]coma模块有两个功能,第一个是实现整个设计的逻辑功能,第二个是将整数得计分转换为十进制数,便于译码显示。
clr为乒乓球游戏清零键,接按键;af为甲方发球控制键,接按键;aj为甲方接球控制键,接按键;bf为乙方发球控制键,接按键;bj为乙方接球控制键,接按键;CLK为控制乒乓球行进速度的时钟信号,接clk时钟信号源;shift[7..0]为LED灯显示输出端,接8个LED显示灯;ah[3..0]为甲方记分的高位,al[3..0]为甲方记分的低位,bh[3..0]为乙方记分的高位,bl[3..0]为乙方记分的低位,以上四位都在经过译码器译码后接8位共阴极数码显示管。
[2]其VHDL程序如下所示:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycomais
port(clr,af,aj,bf,bj,clk:
instd_logic;
shift:
outstd_logic_vector(7downto0);
ah,al,bh,bl:
outstd_logic_vector(3downto0));图4.3.3核心模块符号
endcoma;
architecturecom_arcofcomais
signalamark,bmark:
integer;
begin
process(clr,clk)
variablea,b:
std_logic;
variableshe:
std_logic_vector(7downto0);
begin
ifclr='0'then
a:
='0';
b:
='0';
she:
="00000000";
amark<=0;
bmark<=0;
elsifclk'eventandclk='1'then
ifa='0'andb='0'andaf='0'then
a:
='1';
she:
="10000000";
elsifa='0'andb='0'andbf='0'then
b:
='1';
she:
="00000001";
elsifa='1'andb='0'then
ifshe>8then
ifbj='0'then
amark<=amark+1;
a:
='0';
b:
='0';
she:
="00000000";
else
she:
='0'&she(7downto1);
endif;
elsifshe=0then
amark<=amark+1;
a:
='0';
b:
='0';
else
ifbj='0'then
a:
='0';
b:
='1';
else
she:
='0'&she(7downto1);
endif;
endif;
elsifa='0'andb='1'then
ifshe<16andshe/=0then
ifaj='0'then
bmark<=bmark+1;
a:
='0';
b:
='0';
she:
="00000000";
else
she:
=she(6downto0)&'0';
endif;
elsifshe=0then
bmark<=bmark+1;
a:
='0';
b:
='0';
else
ifaj='0'then
a:
='1';
b:
='0';
elseshe:
=she(6downto0)&'0';
endif;
endif;
endif;
endif;
shift<=she;
endprocess;
process(clk,clr,amark,bmark)
variableaha,ala,bha,bla:
std_logic_vector(3downto0);
variabletmp1,tmp2:
integer;
begin
ifclr='0'then
aha:
="0000";
ala:
="0000";
bha:
="0000";
bla:
="0000";
tmp1:
=0;
tmp2:
=0;
elseifclk'eventandclk='1'then
ifamark>tmp1then
ifala="1001"then
ala:
="0000";
aha:
=aha+1;
tmp1:
=tmp1+1;
else
ala:
=ala+1;
tmp1:
=tmp1+1;
endif;
endif;
ifbmark>tmp2then
ifbla="1001"then
bla:
="0000";
bha:
=bha+1;
tmp2:
=tmp2+1;
else
bla:
=bla+1;
tmp2:
=tmp2+1;
endif;
endif;
endif;
al<=ala;
bl<=bla;
ah<=aha;
bh<=bha;
endif;
endprocess;
endcom_arc;
[3]仿真波形如下:
图4.3.4核心模块仿真波形图
[4]波形分析
clr的低电平有效,其清零后,在clk上升沿有效的条件下,甲方先发球,则LED灯显示十进制数80,即为二进制数10000000,乒乓球灯右移,波形图符合要求。
4.3.2数据转换模块(图4.3.5)
[1]数据转换模块在输入片选信号的作用下对核心模块输送过来的数据进行选择,并从输出端口进行输出。
其中sel[2..0]为输入片选信号,d0[3..0]、d1[3..0]、d2[3..0]、d3[3..0]分别为得分记录的数据,分别接甲方记分低位,甲方记分高位,乙方记分低位,乙方记分高位。
q[3..0]为被选中的数据,并向七段译码器输出
[2]其VHDL程序如下所示:
图4.3.5数据转换模块符号
libraryieee;
useieee.std_logic_1164.all;
entitych41ais
port(sel:
instd_logic_vector(2downto0);
d0,d1,d2,d3:
instd_logic_vector(3downto0);
q:
outstd_logic_vector(3downto0));
endch41a;
architecturech41_arcofch41ais
begin
process(sel)
begin
caseselis
when"100"=>q<=d0;
when"101"=>q<=d1;
when"000"=>q<=d2;
whenothers=>q<=d3;
endcase;
endprocess;
endch41_arc;
[3]仿真波形如下所示:
图4.3.6数据转换模块仿真波形图
[4]波形分析:
由上述波形图可以看出:
在输入片选信号的作用下,当sel为0时,q输出d2的数据,sel为4时,q输出d0的数据,sel为5时,q输出d1的数据,sel为其它数时,q输出d3的数据。
波形符合要求。
4.3.3译码模块(图4.3.7)
[1]此模块为数码管控制模块,功能是控制七段数码管对转换后的数字量进行显示,使其完成甲方和乙方各自得分记录显示。
其中D[3..0]接数据转换模块的输出端口,Q[6..0]连接七段扫描数码管的段输入a、b、c、d、e、f、g,利用其控制特性在数码管上显示出参加乒乓球游戏的甲乙双方各自的得分。
图4.3.7译码模块符号
[2]其VHDL程序如下:
libraryieee;
useieee.std_logic_1164.all;
entitydispais
port(d:
instd_logic_vector(3downto0);
q:
outstd_logic_vector(6downto0));
enddispa;
architecturedispa_arcofdispais
begin
process(d)
begin
casedis
when"0000"=>q<="0111111";
when"0001"=>q<="0000110";
when"0010"=>q<="1011011";
when"0011"=>q<="1001111";
when"0100"=>q<="1100110";
when"0101"=>q<="1101101";
when"0110"=>q<="1111101";
when"0111"=>q<="0100111";
when"1000"=>q<="1111111";
whenothers=>q<="1101111";
endcase;
endprocess;
enddispa_arc;
[3]仿真波形如下(图4.3.8)所示:
图4.3.8译码模块仿真波形图
[4]波形分析:
由上面仿真图可以看出,译码模块完成了对数据在数码管上正确地显示。
波形符合要求。
5、总体电路设计及其仿真
5.1总电路原理图
图5.1总电路原理图
5.2整体工作情况
sclk和clk分别接扫描时钟信号和时钟信号,其它端口接法如上所述,SEL产生片选信号并作用于数据转换模块CH41A,COMA为核心模块,实现逻辑功能,并且对数据进行数制转换。
CH41A将所选数据送到七段译码器模块DISPA,使得分在数码管上显示。
5.3仿真结果(图5.3)
图5.3总电路仿真图
5.4管脚分配图(图5.4)
按照管脚分配图上所示,对各管脚在EDA试验箱上进行连接,sclk接clk时钟信号源,clr为清零控制键,接按键,af接按键,aj接按键,bf接按键,bj接按键,clk接clk0时钟信号源,sell[2..0]接扫描SEL0、SEL1、SEL2,shift[7..0]接八个LED显示灯,q[6..0]接数码管a、b、c、d、e、f、g。
在乒乓球游戏开始时,先按clr键对系统进行清零,然后甲或者乙就可以按发球键发球,在LED灯上显示球的行进路径,当过网后另一方就可以击球,数码管设置了两个记分牌,分别来记录甲乙的得分情况。
图5.4管脚分配图
6、设计总结
在刚看到乒乓球游戏机这个题目时,觉得非常的有趣,就选了但在二周的课程设计里,使我认识到了并非只是单单的有趣,对我来说非常难,那是因为自己平时学习不是很用功,造成了知识有很大的断节,并且也使我深刻地认识到了必须踏实认真地去做事才能将它做好,在这期间得到了老师和同学的帮助,在以后的学习中,要努力克服半途而废的作法,好好学习,将知识透彻理解。
参考文献
[1]江国强.EDA技术与应用.北京:
电子工业出版社.2010
[2]梁明理邓人清等.电子线路.北京:
高等教育出版社.2000年
[3]郑亚民董小周.可编程逻辑器件开发软件QuartusII.国防工业出版社
[10]张俊谟.单片机中级教程[M].北京:
北京航空航天大学出版.