-- VHDL code position: p257_ex8_37_experiment8_3_ballctrl -- Note : This is code file of tennis play -- See Also: example 8_35(top module), 8_36, 8_37, 8_38, 8_39, 8_40, 8_41, 8_42 -- Debug : no debug --------------------------------------------------------------------------------- --总控制模块 library ieee; use ieee.std_logic_1164.all; entity ballctrl is port ( clr : in std_logic; -- 系统复位 bain : in std_logic; -- 左球拍 bbin : in std_logic; -- 右球拍 serclka : in std_logic; -- 左拍准确接球或发球 serclkb : in std_logic; -- 右拍准确接球或发球 clk : in std_logic; -- 乒乓球灯移动时钟 bdout : out std_logic; -- 球拍接球脉冲 serve : out std_logic; -- 发球状态信号 serclk : out std_logic; -- 球拍正确接球信号 ballclr : out std_logic; -- 乒乓球灯清零信号 ballen : out std_logic -- 乒乓球灯使能 ); end entity ballctrl; architecture ful of ballctrl is signal bd : std_logic; signal ser : std_logic; begin bd <= bain OR bbin; ser <= serclka OR serclkb; serclk <= ser; -- 球拍正确接球信号 bdout <= bd; -- 球拍接球脉冲 process ( clr, clk, bd ) begin if ( clr = '1' ) then -- 系统复位 serve <= '1'; -- 系统处在发球状态 ballclr <= '1'; -- 乒乓球灯清零 else -- 系统正常 if( bd = '1' ) then -- 球拍发球或接球时 ballclr <= '1'; -- 乒乓球灯清零 if ( ser = '1' ) then -- 球拍发球或准确接球 ballen <= '1'; -- 乒乓球灯使能允许 serve <= '0'; -- 系统处在接球状态 else -- 接球 ballen <= '0'; -- 乒乓球灯被禁止 serve <= '1'; -- 系统处在发球状态 end if; else -- 没发球或接球时 ballclr <= '0'; -- 乒乓球灯不清零 end if; end if; end process; end architecture ful ;