---------------------------------------------------------- -- Base Station DIGIT Control -- Author : Gautam Karnik -- Date : March 30, 2001 -- Filename : base_DIGIT_control.vhd -- Architecture : Behavioral -- Description : This module is used to interface with the DIGIT -- display on the UP1 Board for the specified user in -- the base station. --------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; library work; use work.CDMA_pkg.all; entity base_DIGIT_control is port( resetn, clock, clk_en : in std_logic; usr1_data : in std_logic_vector(2 downto 0); usr2_data : in std_logic_vector(2 downto 0); usr1_online : in std_logic; usr2_online : in std_logic; data_out1 : out std_logic_vector(6 downto 0); data_out2 : out std_logic_vector(6 downto 0) ); end base_DIGIT_control; architecture behavioral of base_DIGIT_control is type DIGIT_TYPE is ( digNone, dig0, dig1, dig2, dig3, dig4, dig5, dig6, dig7); signal usr1_disp, usr2_disp : DIGIT_TYPE; begin digit_display : process ( resetn, clock, clk_en ) begin wait until rising_edge ( clock ); if resetn = '0' then usr1_disp <= digNone; usr2_disp <= digNone; else if (clk_en = '1' ) then if ( usr1_online = '1' ) then CASE usr1_data IS WHEN "000" => usr1_disp <= dig0; WHEN "001" => usr1_disp <= dig1; WHEN "010" => usr1_disp <= dig2; WHEN "011" => usr1_disp <= dig3; WHEN "100" => usr1_disp <= dig4; WHEN "101" => usr1_disp <= dig5; WHEN "110" => usr1_disp <= dig6; WHEN "111" => usr1_disp <= dig7; WHEN OTHERS => usr1_disp <= digNone; END CASE; else usr1_disp <= digNone; end if; if ( usr2_online = '1' ) then CASE usr2_data IS WHEN "000" => usr2_disp <= dig0; WHEN "001" => usr2_disp <= dig1; WHEN "010" => usr2_disp <= dig2; WHEN "011" => usr2_disp <= dig3; WHEN "100" => usr2_disp <= dig4; WHEN "101" => usr2_disp <= dig5; WHEN "110" => usr2_disp <= dig6; WHEN "111" => usr2_disp <= dig7; WHEN OTHERS => usr2_disp <= digNone; END CASE; else usr2_disp <= digNone; end if; end if; end if; end process digit_display; WITH usr1_disp SELECT data_out1 <= "1000000" WHEN dig0, "1111001" WHEN dig1, "0100100" WHEN dig2, "0110000" WHEN dig3, "0011001" WHEN dig4, "0010010" WHEN dig5, "0000010" WHEN dig6, "1111000" WHEN dig7, "1111111" WHEN OTHERS; WITH usr2_disp SELECT data_out2 <= "1000000" WHEN dig0, "1111001" WHEN dig1, "0100100" WHEN dig2, "0110000" WHEN dig3, "0011001" WHEN dig4, "0010010" WHEN dig5, "0000010" WHEN dig6, "1111000" WHEN dig7, "1111111" WHEN OTHERS; end behavioral;