library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use ieee.numeric_std.all;
entity CrossLED is
Port (
nRST: in std_logic; -- 系統(tǒng)復(fù)位控制信號(hào),低電平有效。
--
-- 各信號(hào)下標(biāo)3、2、1、0對應(yīng)方向東、南、西、北。
-- 輸出0,對應(yīng)信號(hào)燈亮;輸出1,對應(yīng)信號(hào)燈滅。
--
State: in std_logic_vector(1 downto 0); --
Yellow: out std_logic_vector(3 downto 0);
Red: out std_logic_vector(3 downto 0);
Blue: out std_logic_vector(3 downto 0)
);
end CrossLED;
architecture Behavioral of CrossLED is
begin
Yellow <= "0000" when nRST = '0' else -- 復(fù)位狀態(tài)東西南北黃燈亮。
"1111" when State = "00" else -- 東西兩側(cè)紅燈亮,南北兩側(cè)綠燈亮。
"1010" when State = "01" else -- 東西兩側(cè)紅燈亮,南北兩側(cè)黃燈亮(準(zhǔn)備變紅燈)。
"1111" when State = "10" else -- 東西兩側(cè)綠燈亮,南北兩側(cè)紅燈亮。
"0101" when State = "11" else -- 東西兩側(cè)黃燈亮(準(zhǔn)備變紅燈),南北兩側(cè)紅燈亮。
"0000";
Red <= "1111" when nRST = '0' else -- 復(fù)位狀態(tài)東西南北黃燈亮。
"0101" when State = "00" else -- 東西兩側(cè)紅燈亮,南北兩側(cè)綠燈亮。
"0101" when State = "01" else -- 東西兩側(cè)紅燈亮,南北兩側(cè)黃燈亮(準(zhǔn)備變紅燈)。
"1010" when State = "10" else -- 東西兩側(cè)綠燈亮,南北兩側(cè)紅燈亮。
"1010" when State = "11" else -- 東西兩側(cè)黃燈亮(準(zhǔn)備變紅燈),南北兩側(cè)紅燈亮。
"1111";
Blue <= "1111" when nRST = '0' else -- 復(fù)位狀態(tài)東西南北黃燈亮。
"1010" when State = "00" else -- 東西兩側(cè)紅燈亮,南北兩側(cè)綠燈亮。
"1111" when State = "01" else -- 東西兩側(cè)紅燈亮,南北兩側(cè)黃燈亮(準(zhǔn)備變紅燈)。
"0101" when State = "10" else -- 東西兩側(cè)綠燈亮,南北兩側(cè)紅燈亮。
"1111" when State = "11" else -- 東西兩側(cè)黃燈亮(準(zhǔn)備變紅燈),南北兩側(cè)紅燈亮。
"1111";
end Behavioral;