-- -- Star Fast-Link Definitions Package -- -- Matt Warren July 2015 -- -- --------------------------------------------------------------------- -- -- --------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; package pkg_star_flink is constant sIDLE : std_logic_vector(3 downto 0) := x"1"; constant sBCR : std_logic_vector(3 downto 0) := x"2"; constant sLS : std_logic_vector(3 downto 0) := x"3"; constant sBCRLS : std_logic_vector(3 downto 0) := x"4"; constant sPR : std_logic_vector(3 downto 0) := x"5"; constant sLP : std_logic_vector(3 downto 0) := x"6"; constant sDATA7 : std_logic_vector(3 downto 0) := x"7"; constant sDATA0 : std_logic_vector(3 downto 0) := x"8"; constant sDATA1 : std_logic_vector(3 downto 0) := x"9"; constant sDATA2 : std_logic_vector(3 downto 0) := x"a"; constant sDATA3 : std_logic_vector(3 downto 0) := x"b"; constant sDATA4 : std_logic_vector(3 downto 0) := x"c"; constant sDATA5 : std_logic_vector(3 downto 0) := x"d"; constant sDATA6 : std_logic_vector(3 downto 0) := x"e"; function data2symb (data3b : std_logic_vector(2 downto 0)) return std_logic_vector; function symb2data (symb4b : std_logic_vector(3 downto 0)) return std_logic_vector; type t_usymbol is (ID, BR, LS, BL, PR, LP, D0, D1, D2, D3, D4, D5, D6, D7, AA, ZZ); end pkg_star_flink; --========================================================================================= -- -- B O D Y -- --========================================================================================= package body pkg_star_flink is function data2symb ( data3b : std_logic_vector(2 downto 0) ) return std_logic_vector is variable rval4b : std_logic_vector(3 downto 0); begin case data3b is when "000" => rval4b := sDATA0; when "001" => rval4b := sDATA1; when "010" => rval4b := sDATA2; when "011" => rval4b := sDATA3; when "100" => rval4b := sDATA4; when "101" => rval4b := sDATA5; when "110" => rval4b := sDATA6; when others => rval4b := sDATA7; end case; return rval4b; end function; function symb2data ( symb4b : std_logic_vector(3 downto 0) ) return std_logic_vector is variable rval3b : std_logic_vector(2 downto 0); begin case symb4b is when sDATA0 => rval3b := "000"; when sDATA1 => rval3b := "001"; when sDATA2 => rval3b := "010"; when sDATA3 => rval3b := "011"; when sDATA4 => rval3b := "100"; when sDATA5 => rval3b := "101"; when sDATA6 => rval3b := "110"; when others => rval3b := "111"; end case; return rval3b; end function; end pkg_star_flink;