Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- library IEEE;
- use ieee.std_logic_1164.all;
- entity lab91 is
- port(
- PS2_KBCLK : IN std_logic;
- PS2_KBDAT : IN std_logic;
- CLOCK_50 : IN std_logic;
- KEY : IN std_logic_vector(1 downto 0);
- LEDR : OUT std_logic_vector(15 downto 0);
- HEX6 : OUT std_logic_vector(6 downto 0);
- HEX7 : OUT std_logic_vector(6 downto 0)
- );
- end lab91;
- architecture a of lab91 is
- component ps2_keyboard_to_ascii is
- GENERIC(
- clk_freq : INTEGER := 50_000_000; --system clock frequency in Hz
- ps2_debounce_counter_size : INTEGER := 8);
- PORT(
- clk : IN STD_LOGIC; --system clock input
- ps2_clk : IN STD_LOGIC; --clock signal from PS2 keyboard
- ps2_data : IN STD_LOGIC; --data signal from PS2 keyboard
- ascii_new : OUT STD_LOGIC; --output flag indicating new ASCII value
- ascii_code : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); --ASCII value
- end component;
- component s7_forps2 is
- port (
- c: IN std_logic_vector(3 downto 0);
- o: OUT std_logic_vector(6 downto 0));
- end component;
- signal ascii : STD_LOGIC_VECTOR(7 DOWNTO 0);
- signal asciiN: STD_LOGIC;
- signal LED: std_logic_vector(15 downto 0);
- signal R : std_logic_vector(3 downto 0);
- signal L : std_logic_vector(3 downto 0);
- signal rst: std_logic;
- begin
- ps2: ps2_keyboard_to_ascii port map(CLOCK_50, PS2_KBCLK, PS2_KBDAT, asciiN, ascii(6 downto 0));
- rst <= KEY(0);
- process(ascii)
- begin
- R <= ascii(3 downto 0);
- L <= '0' & ascii(6 downto 4);
- end process;
- LED <= "1000000000000000" when ascii = x"66" else
- "0100000000000000" when ascii = x"65" else
- "0010000000000000" when ascii = x"64" else
- "0001000000000000" when ascii = x"63" else
- "0000100000000000" when ascii = x"62" else
- "0000010000000000" when ascii = x"61" else
- "0000001000000000" when ascii = x"39" else
- "0000000100000000" when ascii = x"38" else
- "0000000010000000" when ascii = x"37" else
- "0000000001000000" when ascii = x"36" else
- "0000000000100000" when ascii = x"35" else
- "0000000000010000" when ascii = x"34" else
- "0000000000001000" when ascii = x"33" else
- "0000000000000100" when ascii = x"32" else
- "0000000000000010" when ascii = x"31" else
- "0000000000000001" when ascii = x"30" else
- "0000000000000000" when rst = '0' else
- "0000000000000000";
- LEDR <= LED;
- s7_1: s7_forps2 port map(R, HEX6);
- s7_2: s7_forps2 port map(L, HEX7);
- end a;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement