library ieee; use ieee.std_logic_1164.all; package StringP is function to_char (data : in std_logic) return character; function to_char (data : in std_logic_vector(3 downto 0)) return character; function to_string (data : in std_logic) return string; function to_string (data : in std_logic_vector) return string; end package StringP; package body StringP is function to_char (data : in std_logic) return character is begin case data is when 'U' => return 'U'; when 'X' => return 'X'; when '0' => return '0'; when '1' => return '1'; when 'Z' => return 'Z'; when 'W' => return 'W'; when 'L' => return 'L'; when 'H' => return 'H'; when '-' => return '-'; end case; end to_char; function to_char (data : in std_logic_vector(3 downto 0)) return character is begin case data is when x"0" => return '0'; when x"1" => return '1'; when x"2" => return '2'; when x"3" => return '3'; when x"4" => return '4'; when x"5" => return '5'; when x"6" => return '6'; when x"7" => return '7'; when x"8" => return '8'; when x"9" => return '9'; when x"A" => return 'A'; when x"B" => return 'B'; when x"C" => return 'C'; when x"D" => return 'D'; when x"E" => return 'E'; when x"F" => return 'F'; when others => return 'X'; end case; end to_char; function to_string (data : in std_logic) return string is variable str : string(1 to 1); begin str(1) := to_char(data); return str; end function to_string; function to_string (data : in std_logic_vector) return string is variable v_str : string (1 to data'length); variable v_str_index : positive := 1; begin for i in data'range loop v_str(v_str_index) := to_char(data(i)); v_str_index := v_str_index + 1; end loop; return v_str; end function to_string; end package body StringP;