------------------------------------------------- -- EE552 ASL and Handheld keyboard developement Code -- This code Translates ASCII coded data to data to be used on seven segment display -- hex_display.vhd -- The Hex display recieves data from the 4 to eight bit decorder and -- displays them on the seven segment LED in Hex -- This code outputs active high Data but the data can be modified to give out -- Active Low data used on the FPGA inputs library ieee; use ieee.std_logic_1164.all; -- The decoder has five inputs from the glove information -- The output is decorded into eight bit data. The data is eight bit -- hex data entity hex_display is PORT ( --interface in is valid data recieved from the glove led_data : IN std_logic_vector(7 downto 0); enable : IN std_logic; led_a : OUT std_logic_vector(7 downto 0); led_b : OUT std_logic_vector(7 downto 0)); end entity hex_display; --we use the LSB of the LED the seven segment LED outputs --a and b for the decimal point. => a0 & b0 = point architecture behavioral of hex_display is --constant datawidth : positive := 8; signal a : std_logic_vector(7 downto 0); signal b : std_logic_vector(7 downto 0); begin display: process(enable,led_data) is begin --this basically asigns ASCII CODE to a seven segment LED display case led_data is --display 41 hex equvalent of A in Ascii --Example of ASCII 41 = 01000001 when "01000001" => --seven segment led assignment a <= "01100110"; b <= "01100000"; when "01000010" => a <= "01100110"; b <= "11011010"; when "01000011" => a <= "01100110"; b <= "11110010"; when "01000100" => a <= "01100110"; b <= "01100110"; when "01000101" => a <= "01100110"; b <= "10110110"; when "01000110" => a <= "01100110"; b <= "10111110"; when "01000111" => a <= "01100110"; b <= "11100000"; when "01001000" => a <= "01100110"; b <= "11111110"; when "01001001" => a <= "01100110"; b <= "11110110"; when "01001010" => a <= "01100110"; b <= "11101110"; when "01001011" => a <= "01100110"; b <= "00111110"; when "01001100" => a <= "01100110"; b <= "10011100"; when "01001101" => a <= "01100110"; b <= "01111010"; when "01001110" => a <= "01100110"; b <= "10011110"; when "01001111" => a <= "01100110"; b <= "10001110"; when "01010000" => a <= "01101101"; b <= "11111100"; when "01010001" => a <= "01101101"; b <= "01100000"; when "01010010" => a <= "01101101"; b <= "11011010"; when "01010011" => a <= "01101101"; b <= "11110010"; when "01010100" => a <= "01101101"; b <= "01100110"; when "01010101" => a <= "01101101"; b <= "10110110"; when "01010110" => a <= "01101101"; b <= "10111110"; when "01010111" => a <= "01101101"; b <= "11100000"; when "01011000" => a <= "01101101"; b <= "11111110"; when "01011001" => a <= "01101101"; b <= "11110110"; when "01011010" => a <= "01101101"; b <= "11101110"; when "00100000" => a <="00000001"; b <= "00000001"; when "00001000" => a <="00000000"; b <= "00000000"; when "00101110" => a <="00000001"; b <= "00000000"; when "00101101" => a <="00000000"; b <= "00000000"; when "00001101" => a <="00000000"; b <= "00000000"; when others => a <="00000000"; b <= "00000001"; end case; --inevert ouputs to active low end process display; led_a <= not a; led_b <= not b; end behavioral;