1、主要内容:设计一个乒乓球游戏机,比赛由甲乙双方和裁判3人构成,能模拟比赛的基本过程和规则并能自动裁判和记分。2、基本要求:1、设计一个由甲、乙双方参赛,有裁判的3人乒乓球游戏机。2、用8个(或更多个)LED排成一条直线,以中点为界,两边各代表参赛双方的位置,其中一只点亮的LED指示球的当前位置,点亮的LED依此从左到右,或从右到左,其移动的速度应能调节。3、当“球”(点亮的那只LED)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球。若击中,则球向相反方向移动;若未击中,则对方得1分。一方得分时,电路自动响铃3秒,这期间发球无效,等铃声停止后方能继续比赛。4、设置自动记分电路,甲、乙双方各用2位数码管进行记分显示,每计满21分为1局。5、甲、乙双方各设一个发光二极管,表示拥有发球权,每隔5次自动交换发球权,拥有发球权的一方发球才有效。3、主要参考资料:[1]潘松著.EDA技术实用教程(第二版).北京:科学出版社,2005.[2]康华光主编.电子技术基础模拟部分.北京:高教出版社,2006.[3]阎石主编.数字电子技术基础.北京:高教出版社,2003.一、总体设计思想1.基本原理用8个(或更多个)LED排成一条直线,以中点为界,两边各代表参赛双方的位置,其中一只点亮的LED指示球的当前位置,点亮的LED依此从左到右,或从右到左,其移动的速度应能调节。当“球”(点亮的那只LED)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球。若击中,则球向相反方向移动;若未击中,则对方得1分。一方得分时,电路自动响铃3秒,这期间发球无效,等铃声停止后方能继续比赛。设置自动记分电路,甲、乙双方各用2位数码管进行记分显示,每计满21分为1局。甲、乙双方各设一个发光二极管,表示拥有发球权,每隔5次自动交换发球权,拥有发球权的一方发球才有效。2.设计框图1.1设计流程图二、设计步骤和调试过程1、总体设计电路用8个发光二极管代表乒乓球台,在游戏机的两侧设置两个开关,一个是发球开关,一个是击球开关,甲方按动发球开关时,靠近甲方的第一盏灯亮,然后发光二极管由甲向乙依次点亮,代表乒乓球在移动。当球过网后,乙方就可击球。若乙方提前击球或没击中球,则判乙方失分,甲方自动加分,重新发球比赛继续进行到一方记分到21分,该局结束,记分牌清零,可以开始新的一局比赛。使用VHDL进行电路系统设计,利用PLD来实现控制器的硬件电路1.2乒乓游戏机的电路框图2、模块设计和相应模块程序系统各功能模块的实现1、模块SEL的实现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、模块CORNA的实现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='0'thena:='0';b:='0';she:=00000000;amark=0;bmark=0;elsifclk'eventandclk='1'thenifa='0'andb='0'andaf='0'thena:='1';she:=10000000;elsifa='0'andb='0'andbf='0'thenb:='1';she:=00000001;elsifa='1'andb='0'thenifshe8thenifbj='0'thenamark=amark+1;a:='0';b:='0';she:=00000000;elseshe:='0'&she(7downto1);endif;elsifshe=0thenamark=amark+1;a:='0';b:='0';elseifbj='0'thena:='0';b:='1';elseshe:='0'&she(7downto1);endif;endif;elsifa='0'andb='1'thenifshe16andshe/=0thenifaj='0'thenbmark=bmark+1;a:='0';b:='0';she:=00000000;elseshe:=she(6downto0)&'0';endif;elsifshe=0thenbmark=bmark+1;a:='0';b:='0';elseifaj='0'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='0'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;3、模块CH41A的实现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;4、模块DISPA的实现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=0100111;when1000=q=1111111;whenothers=q=1101111;endcase;endprocess;enddispa_arc;3、仿真及仿真结果分析在这个仿真图中,看到serve数组为1,代表乙发球。I从8开始依次递减计数,控制发光管亮暗light信号也随着i的数值变化,见图4.3所示。由light端口输出的高电平驱动芯片以外的发光二极管使之点亮,这样就可以通过发光二极管模拟乒乓球的运动轨迹。可以看到,在甲该击球的时候没有击球,也就是hit1在state状态6的时候没有高电平‘1’输入,则乙得分,count2由0变1,score22的值随之变化。从最后一行state值的变化,可以清楚分析状态转移。三、结论及心得体会在大学课程即将接近尾声的时候,学院最后为我们安排了EDA课程设计,通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。