您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > vhdl乒乓球比赛游戏
可编程专用集成电路和硬件描述语言实验乒乓球电路李万鹏电子与通信工程1120092029乒乓球游戏机一、设计任务与要求:设计一个能够模拟乒乓球比赛的基本过程和规则,并能自动裁判和记分的乒乓球游戏机。要求:比赛时甲乙双方各在不同的位置发球或击球;根据球的位置发出相应的动作,提前击球或出界均判失分;乒乓球的位置和移动方向有灯亮及依次点亮的方向决定;甲乙双方设置各自的记分牌,任何一方先记满21分该方就算胜了此局;当记分牌清零后,又可开始新的一局比赛。二、总体框图1、乒乓球游戏机的总体框图如下图所示:2、设计思路及各模块功能:设计思路:用8个发光二极管代表乒乓球台,在游戏机的两侧各设置两个开关,一个是发球开关,一个是击球开关。甲方按动发球开关时,靠近甲方的第一盏灯亮,然后发光二极管由甲向乙依次点亮,代表乒乓球在移动。当球过网后,按设计者规定的球位乙方就可以击球。若乙方提前击球或没有击到球,则判乙方失分,甲方自动加分,重新发球比赛继续进行到一方记分到21分,该局结束,记分牌清零,可以开始新的一局比赛。(1)片选信号产生模块片选信号产生模块是用来产生数码管的片选信号,将产生的片选信号输送到数据转换模块,以便其对输入数据进行选择。(2)核心模块核心模块有两个功能,第一个是实现逻辑功能,即对甲方乙方的发球击球情况进行判断,然后再对双方谁得分进行记录;第二个是将整数得计分转换成十进制数,以便译码显示。片选信号产生模块核心模块七段译码器数据转换模块(3)数据转换模块数据转换模块是将核心模块输送过来的数据通过片选信号对其进行选择,并将符合要求的数据输送出去。(4)七段译码器七段译码器用来将输入数据进行翻译,便于数码管显示出数据。三、实验程序及原理图(1)片选信号产生模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityselisport(clk:instd_logic;sell:outstd_logic_vector(2downto0));endsel;architecturesel_arcofselisbeginprocess(clk)variabletmp:std_logic_vector(2downto0);beginif(clk'eventandclk='1')thenif(tmp=000)thentmp:=001;elsiftmp=001thentmp:=100;elsiftmp=100thentmp:=101;elsiftmp=101thentmp:=000;endif;endif;sell=tmp;endprocess;endsel_arc;仿真波形:(2)核心模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycomaisport(clr,af,aj,bf,bj,clk:instd_logic;shift:outstd_logic_vector(7downto0);ah,al,bh,bl:outstd_logic_vector(3downto0));endcoma;architecturecom_arcofcomaissignalamark,bmark:integer;beginprocess(clr,clk)variablea,b:std_logic;variableshe:std_logic_vector(7downto0);beginifclr='1'thena:='0';b:='0';she:=00000000;amark=0;bmark=0;elsifclk'eventandclk='1'thenifa='0'andb='0'andaf='1'thena:='1';she:=10000000;elsifa='0'andb='0'andbf='1'thenb:='1';she:=00000001;elsifa='1'andb='0'thenifshe8thenifbj='1'thenamark=amark+1;a:='0';b:='0';she:=00000000;elseshe:='0'&she(7downto1);endif;elsifshe=0thenamark=amark+1;a:='0';b:='0';elseifbj='1'thena:='0';b:='1';elseshe:='0'&she(7downto1);endif;endif;elsifa='0'andb='1'thenifshe16andshe/=0thenifaj='1'thenbmark=bmark+1;a:='0';b:='0';she:=00000000;elseshe:=she(6downto0)&'0';endif;elsifshe=0thenbmark=bmark+1;a:='0';b:='0';elseifaj='1'thena:='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;beginifclr='1'thenaha:=0000;ala:=0000;bha:=0000;bla:=0000;tmp1:=0;tmp2:=0;elseifclk'eventandclk='1'thenifamarktmp1thenifala=1001thenala:=0000;aha:=aha+1;tmp1:=tmp1+1;elseala:=ala+1;tmp1:=tmp1+1;endif;endif;ifbmarktmp2thenifbla=1001thenbla:=0000;bha:=bha+1;tmp2:=tmp2+1;elsebla:=bla+1;tmp2:=tmp2+1;endif;endif;endif;al=ala;bl=bla;ah=aha;bh=bha;endif;endprocess;endcom_arc;CLR为乒乓球游戏清零键,接按键;AF为甲方发球控制键,接按键;AJ为甲方接球控制键,接按键;BF为乙方发球控制键,接按键;BJ为乙方接球控制键,接按键;CLK为控制乒乓球行进速度的时钟信号,接CLK0时钟信号源;SHIFT[7..0]为LED灯显示输出端,接8个LED显示灯;AH[3..0]为甲方记分的高位,AL[3..0]为甲方记分的低位,BH[3..0]为乙方记分的高位,BL[3..0]为乙方记分的低位,以上四位都在经过译码器译码后接8位共阴极数码显示管。仿真波形:(3)数据转换模块libraryieee;useieee.std_logic_1164.all;entitych41aisport(sel:instd_logic_vector(2downto0);d0,d1,d2,d3:instd_logic_vector(3downto0);q:outstd_logic_vector(3downto0));endch41a;architecturech41_arcofch41aisbeginprocess(sel)begincaseseliswhen100=q=d0;when101=q=d1;when000=q=d2;whenothers=q=d3;endcase;endprocess;endch41_arc;仿真波形:由上述波形图可以看出:在输入片选信号的作用下,当sel为0时,q输出d2的数据,sel为4时,q输出d0的数据,sel为5时,q输出d1的数据,sel为其它数时,q输出d3的数据。波形符合要求。(4)译码模块libraryieee;useieee.std_logic_1164.all;entitydispaisport(d:instd_logic_vector(3downto0);q:outstd_logic_vector(6downto0));enddispa;architecturedispa_arcofdispaisbeginprocess(d)begincasediswhen0000=q=0111111;when0001=q=0000110;when0010=q=1011011;when0011=q=1001111;when0100=q=1100110;when0101=q=1101101;when0110=q=1111101;when0111=q=0000111;when1000=q=1111111;whenothers=q=1101111;endcase;endprocess;enddispa_arc;仿真波形:三、总体设计电路图仿真波形:四、实验总结:1、通过本次实验进一步掌握了使用MaxPlus的设计流程2、这次实验综合采用VHDL语言设计程序和图形输入法,充分锻炼了编程和调试程序的能力。实验要求较多,需要足够的耐心和高度谨慎的态度,只要将所有条件理清楚,搞清它们之间的牵制关系,一一列出,并在头脑中形成清晰的条理框架,一点点、一块块攻克。语句不难,难的是一环扣一环的编程思维,出错不要紧,关键是能坚持下去,一旦将程序调试成功一定会收获很多。我在实验过程中遇到了很多问题,通过向老师及同学请教都已基本解决,弥补了学习中的不足,受益匪浅。
本文标题:vhdl乒乓球比赛游戏
链接地址:https://www.777doc.com/doc-4668348 .html