文档介绍:vhdl乒乓球比赛游戏可编程专用集成电路和硬件描述语言实验乒乓球电路李万鹏电子与通信工程1120092029乒乓球游戏机设计任务与要求:设计一个能够模拟乒乓球比赛的基本过程和规则,并能自动裁判和记分的乒乓球游戏机。要求:比赛时甲乙双方各在不同的位置发球或击球;根据球的位置发出相应的动作,提前击球或出界均判失分;乒乓球的位置和移动方向有灯亮及依次点亮的方向决定;甲乙双方设置各自的记分牌,任何一方先记满21分该方就算胜了此局;当记分牌清零后,又可开始新的一局比赛。总体框图乒乓球游戏机的总体框图如下图所示:片选信号产生模块核心模块七段译码器数据转换模块设计思路及各模块功能:设计思路:用8个发光二极管代表乒乓球台,在游戏机的两侧各设置两个开关,一个是发球开关,一个是击球开关。甲方按动发球开关时,靠近甲方的第一盏灯亮,然后发光二极管由甲向乙依次点亮,代表乒乓球在移动。当球过网后,按设计者规定的球位乙方就可以击球。若乙方提前击球或没有击到球,则判乙方失分,甲方自动加分,重新发球比赛继续进行到一方记分到21分,该局结束,记分牌清零,可以开始新的一局比赛。(1)片选信号产生模块片选信号产生模块是用来产生数码管的片选信号,将产生的片选信号输送到数据转换模块,以便其对输入数据进行选择。(2)核心模块核心模块有两个功能,第一个是实现逻辑功能,即对甲方乙方的发球击球情况进行判断,然后再对双方谁得分进行记录;第二个是将整数得计分转换成十进制数,以便译码显示。(3)数据转换模块数据转换模块是将核心模块输送过来的数据通过片选信号对其进行选择,并将符合要求的数据输送出去。(4)七段译码器七段译码器用来将输入数据进行翻译,便于数码管显示出数据。三、实验程序及原理图(1)片选信号产生模块libraryieee;;;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="001"thentmp:="100";elsiftmp="100"thentmp:="101";elsiftmp="101"thentmp:="000";endif;endif;sell<=tmp;endprocess;endsel_arc;仿真波形:(2)核心模块libraryieee;;;aisport(clr,af,aj,bf,bj,clk:instd_logic;shift:outstd_logic_vector(7downto0);ah,al,bh,bl:outstd_logic_vector(3downto0));a;aissignalamark,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'thenifshe>8thenifbj='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'thenifshe<16andshe/=0thenifaj='1'thenbmark<=bmark+1;a:='0';b:='0';she:="000000