library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity carrie is
port
(
CLK:std_logic; --扫描脉冲
host : in std_logic; --主持人信号
answer : in std_logic_vector(3 downto 0); --抢答信号
light : out std_logic_vector(3 downto 0) --指示灯
);
end entity;
architecture rtl of carrie is
signal lock:std_logic; --定义一个‘锁’信号使得一人抢答后其他人不能再抢答
begin
process (host,answer,CLK)
begin
if(host='0')then -- 主持人清零
light<="0000"; --清零
lock<='0';
elsif (HOST='1')then --主持人置‘1’,开始抢答
IF(LOCK='0') THEN --控制 信号,完成只能有一路选通
IF(CLK'EVENT AND CLK='1') THEN --脉冲扫描
case answer is
when "1000"=>light<="1000";lock<='1'; --lock 信号使得一人抢答后其他人不能再抢答上
when "0100"=>light<="0100";lock<='1';
when "0010"=>light<="0010";lock<='1';
when "0001"=>light<="0001";lock<='1';
when others=>light<="0000";
end case;
end if;
end if;
end if;
end process;
end rtl;