-- -- LCB Global Definitions Package -- -- Matt Warren Aug 2016 -- -- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; package lcb_pkg_globals is subtype slv4 is std_logic_vector(3 downto 0); type slv4_array is array (natural range <>) of slv4; subtype slv7 is std_logic_vector(6 downto 0); type slv7_array is array (natural range <>) of slv7; subtype slv8 is std_logic_vector(7 downto 0); type slv8_array is array (natural range <>) of slv8; -- From Paul: constant MAP_6B_8B : slv8_array(0 to 63) := (x"59", -- 0 0x00 x"71", -- 1 0x01 x"72", -- 2 0x02 x"c3", -- 3 0x03 x"65", -- 4 0x04 x"c5", -- 5 0x05 x"c6", -- 6 0x06 x"87", -- 7 0x07 x"69", -- 8 0x08 x"c9", -- 9 0x09 x"ca", -- 10 0x0a x"8b", -- 11 0x0b x"cc", -- 12 0x0c x"8d", -- 13 0x0d x"8e", -- 14 0x0e x"4b", -- 15 0x0f x"53", -- 16 0x10 x"d1", -- 17 0x11 x"d2", -- 18 0x12 x"93", -- 19 0x13 x"d4", -- 20 0x14 x"95", -- 21 0x15 x"96", -- 22 0x16 x"17", -- 23 0x17 x"d8", -- 24 0x18 x"99", -- 25 0x19 x"9a", -- 26 0x1a x"1b", -- 27 0x1b x"9c", -- 28 0x1c x"1d", -- 29 0x1d x"1e", -- 30 0x1e x"5c", -- 31 0x1f x"63", -- 32 0x20 x"e1", -- 33 0x21 x"e2", -- 34 0x22 x"a3", -- 35 0x23 x"e4", -- 36 0x24 x"a5", -- 37 0x25 x"a6", -- 38 0x26 x"27", -- 39 0x27 x"e8", -- 40 0x28 x"a9", -- 41 0x29 x"aa", -- 42 0x2a x"2b", -- 43 0x2b x"ac", -- 44 0x2c x"2d", -- 45 0x2d x"2e", -- 46 0x2e x"6c", -- 47 0x2f x"74", -- 48 0x30 x"b1", -- 49 0x31 x"b2", -- 50 0x32 x"33", -- 51 0x33 x"b4", -- 52 0x34 x"35", -- 53 0x35 x"36", -- 54 0x36 x"56", -- 55 0x37 x"b8", -- 56 0x38 x"39", -- 57 0x39 x"3a", -- 58 0x3a x"5a", -- 59 0x3b x"3c", -- 60 0x3c x"4d", -- 61 0x3d x"4e", -- 62 0x3e x"66"); -- 63 0x3f constant MAP_K_8B : slv8_array(0 to 3) := (x"47", -- K0 x"55", -- K1 x"78", -- K2 x"6A"); -- K3 constant S6B8B_00 : std_logic_vector(7 downto 0) := MAP_6B_8B(0); constant S6B8B_01 : std_logic_vector(7 downto 0) := MAP_6B_8B(1); constant S6B8B_02 : std_logic_vector(7 downto 0) := MAP_6B_8B(2); constant S6B8B_03 : std_logic_vector(7 downto 0) := MAP_6B_8B(3); constant S6B8B_04 : std_logic_vector(7 downto 0) := MAP_6B_8B(4); constant S6B8B_05 : std_logic_vector(7 downto 0) := MAP_6B_8B(5); constant S6B8B_06 : std_logic_vector(7 downto 0) := MAP_6B_8B(6); constant S6B8B_07 : std_logic_vector(7 downto 0) := MAP_6B_8B(7); constant S6B8B_08 : std_logic_vector(7 downto 0) := MAP_6B_8B(8); constant S6B8B_09 : std_logic_vector(7 downto 0) := MAP_6B_8B(9); constant S6B8B_0a : std_logic_vector(7 downto 0) := MAP_6B_8B(10); constant S6B8B_0b : std_logic_vector(7 downto 0) := MAP_6B_8B(11); constant S6B8B_0c : std_logic_vector(7 downto 0) := MAP_6B_8B(12); constant S6B8B_0d : std_logic_vector(7 downto 0) := MAP_6B_8B(13); constant S6B8B_0e : std_logic_vector(7 downto 0) := MAP_6B_8B(14); constant S6B8B_0f : std_logic_vector(7 downto 0) := MAP_6B_8B(15); constant S6B8B_10 : std_logic_vector(7 downto 0) := MAP_6B_8B(16); constant S6B8B_11 : std_logic_vector(7 downto 0) := MAP_6B_8B(17); constant S6B8B_12 : std_logic_vector(7 downto 0) := MAP_6B_8B(18); constant S6B8B_13 : std_logic_vector(7 downto 0) := MAP_6B_8B(19); constant S6B8B_14 : std_logic_vector(7 downto 0) := MAP_6B_8B(20); constant S6B8B_15 : std_logic_vector(7 downto 0) := MAP_6B_8B(21); constant S6B8B_16 : std_logic_vector(7 downto 0) := MAP_6B_8B(22); constant S6B8B_17 : std_logic_vector(7 downto 0) := MAP_6B_8B(23); constant S6B8B_18 : std_logic_vector(7 downto 0) := MAP_6B_8B(24); constant S6B8B_19 : std_logic_vector(7 downto 0) := MAP_6B_8B(25); constant S6B8B_1a : std_logic_vector(7 downto 0) := MAP_6B_8B(26); constant S6B8B_1b : std_logic_vector(7 downto 0) := MAP_6B_8B(27); constant S6B8B_1c : std_logic_vector(7 downto 0) := MAP_6B_8B(28); constant S6B8B_1d : std_logic_vector(7 downto 0) := MAP_6B_8B(29); constant S6B8B_1e : std_logic_vector(7 downto 0) := MAP_6B_8B(30); constant S6B8B_1f : std_logic_vector(7 downto 0) := MAP_6B_8B(31); constant S6B8B_20 : std_logic_vector(7 downto 0) := MAP_6B_8B(32); constant S6B8B_21 : std_logic_vector(7 downto 0) := MAP_6B_8B(33); constant S6B8B_22 : std_logic_vector(7 downto 0) := MAP_6B_8B(34); constant S6B8B_23 : std_logic_vector(7 downto 0) := MAP_6B_8B(35); constant S6B8B_24 : std_logic_vector(7 downto 0) := MAP_6B_8B(36); constant S6B8B_25 : std_logic_vector(7 downto 0) := MAP_6B_8B(37); constant S6B8B_26 : std_logic_vector(7 downto 0) := MAP_6B_8B(38); constant S6B8B_27 : std_logic_vector(7 downto 0) := MAP_6B_8B(39); constant S6B8B_28 : std_logic_vector(7 downto 0) := MAP_6B_8B(40); constant S6B8B_29 : std_logic_vector(7 downto 0) := MAP_6B_8B(41); constant S6B8B_2a : std_logic_vector(7 downto 0) := MAP_6B_8B(42); constant S6B8B_2b : std_logic_vector(7 downto 0) := MAP_6B_8B(43); constant S6B8B_2c : std_logic_vector(7 downto 0) := MAP_6B_8B(44); constant S6B8B_2d : std_logic_vector(7 downto 0) := MAP_6B_8B(45); constant S6B8B_2e : std_logic_vector(7 downto 0) := MAP_6B_8B(46); constant S6B8B_2f : std_logic_vector(7 downto 0) := MAP_6B_8B(47); constant S6B8B_30 : std_logic_vector(7 downto 0) := MAP_6B_8B(48); constant S6B8B_31 : std_logic_vector(7 downto 0) := MAP_6B_8B(49); constant S6B8B_32 : std_logic_vector(7 downto 0) := MAP_6B_8B(50); constant S6B8B_33 : std_logic_vector(7 downto 0) := MAP_6B_8B(51); constant S6B8B_34 : std_logic_vector(7 downto 0) := MAP_6B_8B(52); constant S6B8B_35 : std_logic_vector(7 downto 0) := MAP_6B_8B(53); constant S6B8B_36 : std_logic_vector(7 downto 0) := MAP_6B_8B(54); constant S6B8B_37 : std_logic_vector(7 downto 0) := MAP_6B_8B(55); constant S6B8B_38 : std_logic_vector(7 downto 0) := MAP_6B_8B(56); constant S6B8B_39 : std_logic_vector(7 downto 0) := MAP_6B_8B(57); constant S6B8B_3a : std_logic_vector(7 downto 0) := MAP_6B_8B(58); constant S6B8B_3b : std_logic_vector(7 downto 0) := MAP_6B_8B(59); constant S6B8B_3c : std_logic_vector(7 downto 0) := MAP_6B_8B(60); constant S6B8B_3d : std_logic_vector(7 downto 0) := MAP_6B_8B(61); constant S6B8B_3e : std_logic_vector(7 downto 0) := MAP_6B_8B(62); constant S6B8B_3f : std_logic_vector(7 downto 0) := MAP_6B_8B(63); constant S6B8B_K0 : std_logic_vector(7 downto 0) := MAP_K_8B(0); constant S6B8B_K1 : std_logic_vector(7 downto 0) := MAP_K_8B(1); constant S6B8B_K2 : std_logic_vector(7 downto 0) := MAP_K_8B(2); constant S6B8B_K3 : std_logic_vector(7 downto 0) := MAP_K_8B(3); -- 0x17 -> 0x11 (17) -- 0x1b -> 0x1B (27) -- 0x1d -> 0x1D (29) -- 0x1e -> 0x1E (30) -- 0x27 -> 0x27 (39) -- 0x2b -> 0x2B (43) -- 0x2d -> 0x2D (45) -- 0x2e -> 0x2E (46) -- 0x33 -> 0x33 (51) -- 0x35 -> 0x35 (53) -- 0x36 -> 0x36 (54) -- 0x39 -> 0x39 (57) -- 0x3a -> 0x3A (58) -- 0x3c -> 0x3C (60) -- 0x4b -> 0x0F (15) -- 0x4d -> 0x3D (61) -- 0x4e -> 0x3E (62) -- 0x53 -> 0x10 (16) -- 0x56 -> 0x37 (55) -- 0x59 -> 0x00 (00) -- 0x5a -> 0x3B (59) -- 0x5c -> 0x1F (31) -- 0x63 -> 0x20 (32) -- 0x65 -> 0x04 (04) -- 0x66 -> 0x3F (63) -- 0x69 -> 0x08 (08) -- 0x6c -> 0x2F (47) -- 0x71 -> 0x01 (01) -- 0x72 -> 0x02 (02) -- 0x74 -> 0x30 (48) -- 0x87 -> 0x07 (07) -- 0x8b -> 0x0B (11) -- 0x8d -> 0x0D (13) -- 0x8e -> 0x0E (14) -- 0x93 -> 0x13 (19) -- 0x95 -> 0x15 (21) -- 0x96 -> 0x16 (22) -- 0x99 -> 0x19 (25) -- 0x9a -> 0x1A (26) -- 0x9c -> 0x1C (28) -- 0xa3 -> 0x23 (35) -- 0xa5 -> 0x25 (37) -- 0xa6 -> 0x26 (38) -- 0xa9 -> 0x29 (41) -- 0xaa -> 0x2A (42) -- 0xac -> 0x2C (44) -- 0xb1 -> 0x31 (49) -- 0xb2 -> 0x32 (50) -- 0xb4 -> 0x34 (52) -- 0xb8 -> 0x38 (56) -- 0xc3 -> 0x03 (03) -- 0xc5 -> 0x05 (05) -- 0xc6 -> 0x06 (06) -- 0xc9 -> 0x09 (09) -- 0xca -> 0x0A (10) -- 0xcc -> 0x0C (12) -- 0xd1 -> 0x11 (17) -- 0xd2 -> 0x12 (18) -- 0xd4 -> 0x14 (20) -- 0xd8 -> 0x18 (24) -- 0xe1 -> 0x21 (33) -- 0xe2 -> 0x22 (34) -- 0xe4 -> 0x24 (36) -- 0xe8 -> 0x28 (40) -- K0 K1 -- 76543210 76543210 -- IDLE is K0, K1 , but sent msb first, so to get a it in order on the scope -- so it makes more sent to form it K1, K0 constant IDLE_FRAME : std_logic_vector(15 downto 0) := (MAP_K_8B(0) & MAP_K_8B(1)); -- Suggest using something completely not an HCCID constant SYMB_CMD_IGNORE : std_logic_vector(7 downto 0) := MAP_6B_8B(2#100000#); --0x63 -- btw K2 = 0x78 constant SYMB_CMD_END : std_logic_vector(7 downto 0) := MAP_6B_8B(2#000001#); --0x71 -- speculative ... constant SYMB_ECR : std_logic_vector(7 downto 0) := MAP_6B_8B(2#000010#); -- 0x72 constant SYMB_ABCRST : std_logic_vector(7 downto 0) := MAP_6B_8B(2#000100#); -- 0x65 constant SYMB_HCCRST : std_logic_vector(7 downto 0) := MAP_6B_8B(2#001000#); -- 0x69 constant FSYNC_NIB0 : std_logic_vector(1 downto 0) := "00"; constant FSYNC_SYMB0 : std_logic_vector(1 downto 0) := "01"; constant FSYNC_NIB2 : std_logic_vector(1 downto 0) := "10"; constant FSYNC_FRAME : std_logic_vector(1 downto 0) := "11"; constant HCC : integer := 16#cc#; constant ABC : integer := 16#ab#; end lcb_pkg_globals; --========================================================================================= -- -- B O D Y -- --========================================================================================= package body lcb_pkg_globals is end lcb_pkg_globals;