------------------------------------------------------------------------------- -- Title : pt reconstruction look-up tables -- Project : Prototype implementation of the GTU of the Alice TRD Experiment ------------------------------------------------------------------------------- -- File : rec_tables.vhd -- Author : Jan de Cuveland ------------------------------------------------------------------------------- -- This file has been generated by RecPtGen.c ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; ------------------------------------------------------------------------------- entity mask_id_lut is port ( mask : in std_logic_vector(5 downto 0); mask_id : out unsigned(4 downto 0)); end; ------------------------------------------------------------------------------- architecture default of mask_id_lut is begin process (mask) begin mask_id <= "-----"; case mask is when "001111" => mask_id <= conv_unsigned(00, 5); when "010111" => mask_id <= conv_unsigned(01, 5); when "011011" => mask_id <= conv_unsigned(02, 5); when "011101" => mask_id <= conv_unsigned(03, 5); when "011110" => mask_id <= conv_unsigned(04, 5); when "011111" => mask_id <= conv_unsigned(05, 5); when "100111" => mask_id <= conv_unsigned(06, 5); when "101011" => mask_id <= conv_unsigned(07, 5); when "101101" => mask_id <= conv_unsigned(08, 5); when "101110" => mask_id <= conv_unsigned(09, 5); when "101111" => mask_id <= conv_unsigned(10, 5); when "110011" => mask_id <= conv_unsigned(11, 5); when "110101" => mask_id <= conv_unsigned(12, 5); when "110110" => mask_id <= conv_unsigned(13, 5); when "110111" => mask_id <= conv_unsigned(14, 5); when "111001" => mask_id <= conv_unsigned(15, 5); when "111010" => mask_id <= conv_unsigned(16, 5); when "111011" => mask_id <= conv_unsigned(17, 5); when "111100" => mask_id <= conv_unsigned(18, 5); when "111101" => mask_id <= conv_unsigned(19, 5); when "111110" => mask_id <= conv_unsigned(20, 5); when "111111" => mask_id <= conv_unsigned(21, 5); when others => null; end case; end process; end; ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; ------------------------------------------------------------------------------- entity yt_lut is generic ( plane : integer := 0); port ( chamber : in unsigned(2 downto 0); zpos : in unsigned(3 downto 0); yt : out signed(10 downto 0)); end; ------------------------------------------------------------------------------- architecture default of yt_lut is begin gen0 : if plane = 0 generate process (chamber, zpos) variable input : std_logic_vector(6 downto 0); begin input := std_logic_vector(chamber) & std_logic_vector(zpos); yt <= "-----------"; case input is when "0000000" => yt <= conv_signed(-648, 11); when "0000001" => yt <= conv_signed(-631, 11); when "0000010" => yt <= conv_signed(-615, 11); when "0000011" => yt <= conv_signed(-598, 11); when "0000100" => yt <= conv_signed(-582, 11); when "0000101" => yt <= conv_signed(-565, 11); when "0000110" => yt <= conv_signed(-549, 11); when "0000111" => yt <= conv_signed(-533, 11); when "0001000" => yt <= conv_signed(-516, 11); when "0001001" => yt <= conv_signed(-500, 11); when "0001010" => yt <= conv_signed(-483, 11); when "0001011" => yt <= conv_signed(-467, 11); when "0001100" => yt <= conv_signed(-450, 11); when "0001101" => yt <= conv_signed(-434, 11); when "0001110" => yt <= conv_signed(-418, 11); when "0001111" => yt <= conv_signed(-401, 11); when "0010000" => yt <= conv_signed(-378, 11); when "0010001" => yt <= conv_signed(-362, 11); when "0010010" => yt <= conv_signed(-345, 11); when "0010011" => yt <= conv_signed(-329, 11); when "0010100" => yt <= conv_signed(-312, 11); when "0010101" => yt <= conv_signed(-296, 11); when "0010110" => yt <= conv_signed(-279, 11); when "0010111" => yt <= conv_signed(-263, 11); when "0011000" => yt <= conv_signed(-247, 11); when "0011001" => yt <= conv_signed(-230, 11); when "0011010" => yt <= conv_signed(-214, 11); when "0011011" => yt <= conv_signed(-197, 11); when "0011100" => yt <= conv_signed(-181, 11); when "0011101" => yt <= conv_signed(-164, 11); when "0011110" => yt <= conv_signed(-148, 11); when "0011111" => yt <= conv_signed(-132, 11); when "0100000" => yt <= conv_signed(-107, 11); when "0100001" => yt <= conv_signed( -88, 11); when "0100010" => yt <= conv_signed( -68, 11); when "0100011" => yt <= conv_signed( -49, 11); when "0100100" => yt <= conv_signed( -29, 11); when "0100101" => yt <= conv_signed( -10, 11); when "0100110" => yt <= conv_signed( 10, 11); when "0100111" => yt <= conv_signed( 29, 11); when "0101000" => yt <= conv_signed( 49, 11); when "0101001" => yt <= conv_signed( 68, 11); when "0101010" => yt <= conv_signed( 88, 11); when "0101011" => yt <= conv_signed( 107, 11); when "0110000" => yt <= conv_signed( 132, 11); when "0110001" => yt <= conv_signed( 148, 11); when "0110010" => yt <= conv_signed( 164, 11); when "0110011" => yt <= conv_signed( 181, 11); when "0110100" => yt <= conv_signed( 197, 11); when "0110101" => yt <= conv_signed( 214, 11); when "0110110" => yt <= conv_signed( 230, 11); when "0110111" => yt <= conv_signed( 247, 11); when "0111000" => yt <= conv_signed( 263, 11); when "0111001" => yt <= conv_signed( 279, 11); when "0111010" => yt <= conv_signed( 296, 11); when "0111011" => yt <= conv_signed( 312, 11); when "0111100" => yt <= conv_signed( 329, 11); when "0111101" => yt <= conv_signed( 345, 11); when "0111110" => yt <= conv_signed( 362, 11); when "0111111" => yt <= conv_signed( 378, 11); when "1000000" => yt <= conv_signed( 401, 11); when "1000001" => yt <= conv_signed( 418, 11); when "1000010" => yt <= conv_signed( 434, 11); when "1000011" => yt <= conv_signed( 450, 11); when "1000100" => yt <= conv_signed( 467, 11); when "1000101" => yt <= conv_signed( 483, 11); when "1000110" => yt <= conv_signed( 500, 11); when "1000111" => yt <= conv_signed( 516, 11); when "1001000" => yt <= conv_signed( 533, 11); when "1001001" => yt <= conv_signed( 549, 11); when "1001010" => yt <= conv_signed( 565, 11); when "1001011" => yt <= conv_signed( 582, 11); when "1001100" => yt <= conv_signed( 598, 11); when "1001101" => yt <= conv_signed( 615, 11); when "1001110" => yt <= conv_signed( 631, 11); when "1001111" => yt <= conv_signed( 648, 11); when others => null; end case; end process; end generate; gen1 : if plane = 1 generate process (chamber, zpos) variable input : std_logic_vector(6 downto 0); begin input := std_logic_vector(chamber) & std_logic_vector(zpos); yt <= "-----------"; case input is when "0000000" => yt <= conv_signed( 680, 11); when "0000001" => yt <= conv_signed( 662, 11); when "0000010" => yt <= conv_signed( 645, 11); when "0000011" => yt <= conv_signed( 627, 11); when "0000100" => yt <= conv_signed( 610, 11); when "0000101" => yt <= conv_signed( 593, 11); when "0000110" => yt <= conv_signed( 575, 11); when "0000111" => yt <= conv_signed( 558, 11); when "0001000" => yt <= conv_signed( 540, 11); when "0001001" => yt <= conv_signed( 523, 11); when "0001010" => yt <= conv_signed( 505, 11); when "0001011" => yt <= conv_signed( 488, 11); when "0001100" => yt <= conv_signed( 470, 11); when "0001101" => yt <= conv_signed( 453, 11); when "0001110" => yt <= conv_signed( 435, 11); when "0001111" => yt <= conv_signed( 418, 11); when "0010000" => yt <= conv_signed( 394, 11); when "0010001" => yt <= conv_signed( 376, 11); when "0010010" => yt <= conv_signed( 359, 11); when "0010011" => yt <= conv_signed( 342, 11); when "0010100" => yt <= conv_signed( 324, 11); when "0010101" => yt <= conv_signed( 307, 11); when "0010110" => yt <= conv_signed( 289, 11); when "0010111" => yt <= conv_signed( 272, 11); when "0011000" => yt <= conv_signed( 254, 11); when "0011001" => yt <= conv_signed( 237, 11); when "0011010" => yt <= conv_signed( 219, 11); when "0011011" => yt <= conv_signed( 202, 11); when "0011100" => yt <= conv_signed( 184, 11); when "0011101" => yt <= conv_signed( 167, 11); when "0011110" => yt <= conv_signed( 150, 11); when "0011111" => yt <= conv_signed( 132, 11); when "0100000" => yt <= conv_signed( 107, 11); when "0100001" => yt <= conv_signed( 88, 11); when "0100010" => yt <= conv_signed( 68, 11); when "0100011" => yt <= conv_signed( 49, 11); when "0100100" => yt <= conv_signed( 29, 11); when "0100101" => yt <= conv_signed( 10, 11); when "0100110" => yt <= conv_signed( -10, 11); when "0100111" => yt <= conv_signed( -29, 11); when "0101000" => yt <= conv_signed( -49, 11); when "0101001" => yt <= conv_signed( -68, 11); when "0101010" => yt <= conv_signed( -88, 11); when "0101011" => yt <= conv_signed(-107, 11); when "0110000" => yt <= conv_signed(-132, 11); when "0110001" => yt <= conv_signed(-150, 11); when "0110010" => yt <= conv_signed(-167, 11); when "0110011" => yt <= conv_signed(-184, 11); when "0110100" => yt <= conv_signed(-202, 11); when "0110101" => yt <= conv_signed(-219, 11); when "0110110" => yt <= conv_signed(-237, 11); when "0110111" => yt <= conv_signed(-254, 11); when "0111000" => yt <= conv_signed(-272, 11); when "0111001" => yt <= conv_signed(-289, 11); when "0111010" => yt <= conv_signed(-307, 11); when "0111011" => yt <= conv_signed(-324, 11); when "0111100" => yt <= conv_signed(-342, 11); when "0111101" => yt <= conv_signed(-359, 11); when "0111110" => yt <= conv_signed(-376, 11); when "0111111" => yt <= conv_signed(-394, 11); when "1000000" => yt <= conv_signed(-418, 11); when "1000001" => yt <= conv_signed(-435, 11); when "1000010" => yt <= conv_signed(-453, 11); when "1000011" => yt <= conv_signed(-470, 11); when "1000100" => yt <= conv_signed(-488, 11); when "1000101" => yt <= conv_signed(-505, 11); when "1000110" => yt <= conv_signed(-523, 11); when "1000111" => yt <= conv_signed(-540, 11); when "1001000" => yt <= conv_signed(-558, 11); when "1001001" => yt <= conv_signed(-575, 11); when "1001010" => yt <= conv_signed(-593, 11); when "1001011" => yt <= conv_signed(-610, 11); when "1001100" => yt <= conv_signed(-627, 11); when "1001101" => yt <= conv_signed(-645, 11); when "1001110" => yt <= conv_signed(-662, 11); when "1001111" => yt <= conv_signed(-680, 11); when others => null; end case; end process; end generate; gen2 : if plane = 2 generate process (chamber, zpos) variable input : std_logic_vector(6 downto 0); begin input := std_logic_vector(chamber) & std_logic_vector(zpos); yt <= "-----------"; case input is when "0000000" => yt <= conv_signed(-704, 11); when "0000001" => yt <= conv_signed(-686, 11); when "0000010" => yt <= conv_signed(-668, 11); when "0000011" => yt <= conv_signed(-650, 11); when "0000100" => yt <= conv_signed(-632, 11); when "0000101" => yt <= conv_signed(-614, 11); when "0000110" => yt <= conv_signed(-596, 11); when "0000111" => yt <= conv_signed(-578, 11); when "0001000" => yt <= conv_signed(-560, 11); when "0001001" => yt <= conv_signed(-542, 11); when "0001010" => yt <= conv_signed(-524, 11); when "0001011" => yt <= conv_signed(-506, 11); when "0001100" => yt <= conv_signed(-488, 11); when "0001101" => yt <= conv_signed(-470, 11); when "0001110" => yt <= conv_signed(-453, 11); when "0001111" => yt <= conv_signed(-435, 11); when "0010000" => yt <= conv_signed(-410, 11); when "0010001" => yt <= conv_signed(-391, 11); when "0010010" => yt <= conv_signed(-373, 11); when "0010011" => yt <= conv_signed(-354, 11); when "0010100" => yt <= conv_signed(-336, 11); when "0010101" => yt <= conv_signed(-317, 11); when "0010110" => yt <= conv_signed(-299, 11); when "0010111" => yt <= conv_signed(-280, 11); when "0011000" => yt <= conv_signed(-262, 11); when "0011001" => yt <= conv_signed(-243, 11); when "0011010" => yt <= conv_signed(-225, 11); when "0011011" => yt <= conv_signed(-206, 11); when "0011100" => yt <= conv_signed(-188, 11); when "0011101" => yt <= conv_signed(-170, 11); when "0011110" => yt <= conv_signed(-151, 11); when "0011111" => yt <= conv_signed(-133, 11); when "0100000" => yt <= conv_signed(-107, 11); when "0100001" => yt <= conv_signed( -88, 11); when "0100010" => yt <= conv_signed( -68, 11); when "0100011" => yt <= conv_signed( -49, 11); when "0100100" => yt <= conv_signed( -29, 11); when "0100101" => yt <= conv_signed( -10, 11); when "0100110" => yt <= conv_signed( 10, 11); when "0100111" => yt <= conv_signed( 29, 11); when "0101000" => yt <= conv_signed( 49, 11); when "0101001" => yt <= conv_signed( 68, 11); when "0101010" => yt <= conv_signed( 88, 11); when "0101011" => yt <= conv_signed( 107, 11); when "0110000" => yt <= conv_signed( 133, 11); when "0110001" => yt <= conv_signed( 151, 11); when "0110010" => yt <= conv_signed( 170, 11); when "0110011" => yt <= conv_signed( 188, 11); when "0110100" => yt <= conv_signed( 206, 11); when "0110101" => yt <= conv_signed( 225, 11); when "0110110" => yt <= conv_signed( 243, 11); when "0110111" => yt <= conv_signed( 262, 11); when "0111000" => yt <= conv_signed( 280, 11); when "0111001" => yt <= conv_signed( 299, 11); when "0111010" => yt <= conv_signed( 317, 11); when "0111011" => yt <= conv_signed( 336, 11); when "0111100" => yt <= conv_signed( 354, 11); when "0111101" => yt <= conv_signed( 373, 11); when "0111110" => yt <= conv_signed( 391, 11); when "0111111" => yt <= conv_signed( 410, 11); when "1000000" => yt <= conv_signed( 435, 11); when "1000001" => yt <= conv_signed( 453, 11); when "1000010" => yt <= conv_signed( 470, 11); when "1000011" => yt <= conv_signed( 488, 11); when "1000100" => yt <= conv_signed( 506, 11); when "1000101" => yt <= conv_signed( 524, 11); when "1000110" => yt <= conv_signed( 542, 11); when "1000111" => yt <= conv_signed( 560, 11); when "1001000" => yt <= conv_signed( 578, 11); when "1001001" => yt <= conv_signed( 596, 11); when "1001010" => yt <= conv_signed( 614, 11); when "1001011" => yt <= conv_signed( 632, 11); when "1001100" => yt <= conv_signed( 650, 11); when "1001101" => yt <= conv_signed( 668, 11); when "1001110" => yt <= conv_signed( 686, 11); when "1001111" => yt <= conv_signed( 704, 11); when others => null; end case; end process; end generate; gen3 : if plane = 3 generate process (chamber, zpos) variable input : std_logic_vector(6 downto 0); begin input := std_logic_vector(chamber) & std_logic_vector(zpos); yt <= "-----------"; case input is when "0000000" => yt <= conv_signed( 736, 11); when "0000001" => yt <= conv_signed( 717, 11); when "0000010" => yt <= conv_signed( 698, 11); when "0000011" => yt <= conv_signed( 679, 11); when "0000100" => yt <= conv_signed( 660, 11); when "0000101" => yt <= conv_signed( 641, 11); when "0000110" => yt <= conv_signed( 622, 11); when "0000111" => yt <= conv_signed( 603, 11); when "0001000" => yt <= conv_signed( 584, 11); when "0001001" => yt <= conv_signed( 565, 11); when "0001010" => yt <= conv_signed( 546, 11); when "0001011" => yt <= conv_signed( 527, 11); when "0001100" => yt <= conv_signed( 508, 11); when "0001101" => yt <= conv_signed( 489, 11); when "0001110" => yt <= conv_signed( 470, 11); when "0001111" => yt <= conv_signed( 451, 11); when "0010000" => yt <= conv_signed( 426, 11); when "0010001" => yt <= conv_signed( 406, 11); when "0010010" => yt <= conv_signed( 387, 11); when "0010011" => yt <= conv_signed( 367, 11); when "0010100" => yt <= conv_signed( 348, 11); when "0010101" => yt <= conv_signed( 328, 11); when "0010110" => yt <= conv_signed( 309, 11); when "0010111" => yt <= conv_signed( 289, 11); when "0011000" => yt <= conv_signed( 270, 11); when "0011001" => yt <= conv_signed( 250, 11); when "0011010" => yt <= conv_signed( 231, 11); when "0011011" => yt <= conv_signed( 211, 11); when "0011100" => yt <= conv_signed( 192, 11); when "0011101" => yt <= conv_signed( 172, 11); when "0011110" => yt <= conv_signed( 153, 11); when "0011111" => yt <= conv_signed( 133, 11); when "0100000" => yt <= conv_signed( 107, 11); when "0100001" => yt <= conv_signed( 88, 11); when "0100010" => yt <= conv_signed( 68, 11); when "0100011" => yt <= conv_signed( 49, 11); when "0100100" => yt <= conv_signed( 29, 11); when "0100101" => yt <= conv_signed( 10, 11); when "0100110" => yt <= conv_signed( -10, 11); when "0100111" => yt <= conv_signed( -29, 11); when "0101000" => yt <= conv_signed( -49, 11); when "0101001" => yt <= conv_signed( -68, 11); when "0101010" => yt <= conv_signed( -88, 11); when "0101011" => yt <= conv_signed(-107, 11); when "0110000" => yt <= conv_signed(-133, 11); when "0110001" => yt <= conv_signed(-153, 11); when "0110010" => yt <= conv_signed(-172, 11); when "0110011" => yt <= conv_signed(-192, 11); when "0110100" => yt <= conv_signed(-211, 11); when "0110101" => yt <= conv_signed(-231, 11); when "0110110" => yt <= conv_signed(-250, 11); when "0110111" => yt <= conv_signed(-270, 11); when "0111000" => yt <= conv_signed(-289, 11); when "0111001" => yt <= conv_signed(-309, 11); when "0111010" => yt <= conv_signed(-328, 11); when "0111011" => yt <= conv_signed(-348, 11); when "0111100" => yt <= conv_signed(-367, 11); when "0111101" => yt <= conv_signed(-387, 11); when "0111110" => yt <= conv_signed(-406, 11); when "0111111" => yt <= conv_signed(-426, 11); when "1000000" => yt <= conv_signed(-451, 11); when "1000001" => yt <= conv_signed(-470, 11); when "1000010" => yt <= conv_signed(-489, 11); when "1000011" => yt <= conv_signed(-508, 11); when "1000100" => yt <= conv_signed(-527, 11); when "1000101" => yt <= conv_signed(-546, 11); when "1000110" => yt <= conv_signed(-565, 11); when "1000111" => yt <= conv_signed(-584, 11); when "1001000" => yt <= conv_signed(-603, 11); when "1001001" => yt <= conv_signed(-622, 11); when "1001010" => yt <= conv_signed(-641, 11); when "1001011" => yt <= conv_signed(-660, 11); when "1001100" => yt <= conv_signed(-679, 11); when "1001101" => yt <= conv_signed(-698, 11); when "1001110" => yt <= conv_signed(-717, 11); when "1001111" => yt <= conv_signed(-736, 11); when others => null; end case; end process; end generate; gen4 : if plane = 4 generate process (chamber, zpos) variable input : std_logic_vector(6 downto 0); begin input := std_logic_vector(chamber) & std_logic_vector(zpos); yt <= "-----------"; case input is when "0000000" => yt <= conv_signed(-750, 11); when "0000001" => yt <= conv_signed(-728, 11); when "0000010" => yt <= conv_signed(-706, 11); when "0000011" => yt <= conv_signed(-685, 11); when "0000100" => yt <= conv_signed(-663, 11); when "0000101" => yt <= conv_signed(-641, 11); when "0000110" => yt <= conv_signed(-620, 11); when "0000111" => yt <= conv_signed(-598, 11); when "0001000" => yt <= conv_signed(-576, 11); when "0001001" => yt <= conv_signed(-555, 11); when "0001010" => yt <= conv_signed(-533, 11); when "0001011" => yt <= conv_signed(-511, 11); when "0001100" => yt <= conv_signed(-490, 11); when "0001101" => yt <= conv_signed(-468, 11); when "0010000" => yt <= conv_signed(-440, 11); when "0010001" => yt <= conv_signed(-420, 11); when "0010010" => yt <= conv_signed(-400, 11); when "0010011" => yt <= conv_signed(-379, 11); when "0010100" => yt <= conv_signed(-359, 11); when "0010101" => yt <= conv_signed(-338, 11); when "0010110" => yt <= conv_signed(-318, 11); when "0010111" => yt <= conv_signed(-297, 11); when "0011000" => yt <= conv_signed(-277, 11); when "0011001" => yt <= conv_signed(-256, 11); when "0011010" => yt <= conv_signed(-236, 11); when "0011011" => yt <= conv_signed(-215, 11); when "0011100" => yt <= conv_signed(-195, 11); when "0011101" => yt <= conv_signed(-174, 11); when "0011110" => yt <= conv_signed(-154, 11); when "0011111" => yt <= conv_signed(-134, 11); when "0100000" => yt <= conv_signed(-107, 11); when "0100001" => yt <= conv_signed( -88, 11); when "0100010" => yt <= conv_signed( -68, 11); when "0100011" => yt <= conv_signed( -49, 11); when "0100100" => yt <= conv_signed( -29, 11); when "0100101" => yt <= conv_signed( -10, 11); when "0100110" => yt <= conv_signed( 10, 11); when "0100111" => yt <= conv_signed( 29, 11); when "0101000" => yt <= conv_signed( 49, 11); when "0101001" => yt <= conv_signed( 68, 11); when "0101010" => yt <= conv_signed( 88, 11); when "0101011" => yt <= conv_signed( 107, 11); when "0110000" => yt <= conv_signed( 134, 11); when "0110001" => yt <= conv_signed( 154, 11); when "0110010" => yt <= conv_signed( 174, 11); when "0110011" => yt <= conv_signed( 195, 11); when "0110100" => yt <= conv_signed( 215, 11); when "0110101" => yt <= conv_signed( 236, 11); when "0110110" => yt <= conv_signed( 256, 11); when "0110111" => yt <= conv_signed( 277, 11); when "0111000" => yt <= conv_signed( 297, 11); when "0111001" => yt <= conv_signed( 318, 11); when "0111010" => yt <= conv_signed( 338, 11); when "0111011" => yt <= conv_signed( 359, 11); when "0111100" => yt <= conv_signed( 379, 11); when "0111101" => yt <= conv_signed( 400, 11); when "0111110" => yt <= conv_signed( 420, 11); when "0111111" => yt <= conv_signed( 440, 11); when "1000000" => yt <= conv_signed( 468, 11); when "1000001" => yt <= conv_signed( 490, 11); when "1000010" => yt <= conv_signed( 511, 11); when "1000011" => yt <= conv_signed( 533, 11); when "1000100" => yt <= conv_signed( 555, 11); when "1000101" => yt <= conv_signed( 576, 11); when "1000110" => yt <= conv_signed( 598, 11); when "1000111" => yt <= conv_signed( 620, 11); when "1001000" => yt <= conv_signed( 641, 11); when "1001001" => yt <= conv_signed( 663, 11); when "1001010" => yt <= conv_signed( 685, 11); when "1001011" => yt <= conv_signed( 706, 11); when "1001100" => yt <= conv_signed( 728, 11); when "1001101" => yt <= conv_signed( 750, 11); when others => null; end case; end process; end generate; gen5 : if plane = 5 generate process (chamber, zpos) variable input : std_logic_vector(6 downto 0); begin input := std_logic_vector(chamber) & std_logic_vector(zpos); yt <= "-----------"; case input is when "0000000" => yt <= conv_signed( 749, 11); when "0000001" => yt <= conv_signed( 727, 11); when "0000010" => yt <= conv_signed( 705, 11); when "0000011" => yt <= conv_signed( 683, 11); when "0000100" => yt <= conv_signed( 661, 11); when "0000101" => yt <= conv_signed( 639, 11); when "0000110" => yt <= conv_signed( 617, 11); when "0000111" => yt <= conv_signed( 595, 11); when "0001000" => yt <= conv_signed( 573, 11); when "0001001" => yt <= conv_signed( 551, 11); when "0001010" => yt <= conv_signed( 529, 11); when "0001011" => yt <= conv_signed( 507, 11); when "0001100" => yt <= conv_signed( 485, 11); when "0010000" => yt <= conv_signed( 456, 11); when "0010001" => yt <= conv_signed( 435, 11); when "0010010" => yt <= conv_signed( 413, 11); when "0010011" => yt <= conv_signed( 392, 11); when "0010100" => yt <= conv_signed( 370, 11); when "0010101" => yt <= conv_signed( 349, 11); when "0010110" => yt <= conv_signed( 327, 11); when "0010111" => yt <= conv_signed( 306, 11); when "0011000" => yt <= conv_signed( 284, 11); when "0011001" => yt <= conv_signed( 263, 11); when "0011010" => yt <= conv_signed( 241, 11); when "0011011" => yt <= conv_signed( 220, 11); when "0011100" => yt <= conv_signed( 199, 11); when "0011101" => yt <= conv_signed( 177, 11); when "0011110" => yt <= conv_signed( 156, 11); when "0011111" => yt <= conv_signed( 134, 11); when "0100000" => yt <= conv_signed( 107, 11); when "0100001" => yt <= conv_signed( 88, 11); when "0100010" => yt <= conv_signed( 68, 11); when "0100011" => yt <= conv_signed( 49, 11); when "0100100" => yt <= conv_signed( 29, 11); when "0100101" => yt <= conv_signed( 10, 11); when "0100110" => yt <= conv_signed( -10, 11); when "0100111" => yt <= conv_signed( -29, 11); when "0101000" => yt <= conv_signed( -49, 11); when "0101001" => yt <= conv_signed( -68, 11); when "0101010" => yt <= conv_signed( -88, 11); when "0101011" => yt <= conv_signed(-107, 11); when "0110000" => yt <= conv_signed(-134, 11); when "0110001" => yt <= conv_signed(-156, 11); when "0110010" => yt <= conv_signed(-177, 11); when "0110011" => yt <= conv_signed(-199, 11); when "0110100" => yt <= conv_signed(-220, 11); when "0110101" => yt <= conv_signed(-241, 11); when "0110110" => yt <= conv_signed(-263, 11); when "0110111" => yt <= conv_signed(-284, 11); when "0111000" => yt <= conv_signed(-306, 11); when "0111001" => yt <= conv_signed(-327, 11); when "0111010" => yt <= conv_signed(-349, 11); when "0111011" => yt <= conv_signed(-370, 11); when "0111100" => yt <= conv_signed(-392, 11); when "0111101" => yt <= conv_signed(-413, 11); when "0111110" => yt <= conv_signed(-435, 11); when "0111111" => yt <= conv_signed(-456, 11); when "1000000" => yt <= conv_signed(-485, 11); when "1000001" => yt <= conv_signed(-507, 11); when "1000010" => yt <= conv_signed(-529, 11); when "1000011" => yt <= conv_signed(-551, 11); when "1000100" => yt <= conv_signed(-573, 11); when "1000101" => yt <= conv_signed(-595, 11); when "1000110" => yt <= conv_signed(-617, 11); when "1000111" => yt <= conv_signed(-639, 11); when "1001000" => yt <= conv_signed(-661, 11); when "1001001" => yt <= conv_signed(-683, 11); when "1001010" => yt <= conv_signed(-705, 11); when "1001011" => yt <= conv_signed(-727, 11); when "1001100" => yt <= conv_signed(-749, 11); when others => null; end case; end process; end generate; end; ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; ------------------------------------------------------------------------------- entity c1_lut is port ( mask_id : in unsigned(4 downto 0); c1 : out signed(12 downto 0)); end; ------------------------------------------------------------------------------- architecture default of c1_lut is begin process (mask_id) begin c1 <= "-------------"; case mask_id is when "00000" => c1 <= conv_signed(-1890, 13); when "00001" => c1 <= conv_signed(-1962, 13); when "00010" => c1 <= conv_signed(-1962, 13); when "00011" => c1 <= conv_signed(-1962, 13); when "00100" => c1 <= conv_signed(-2043, 13); when "00101" => c1 <= conv_signed(-1963, 13); when "00110" => c1 <= conv_signed(-2034, 13); when "00111" => c1 <= conv_signed(-2034, 13); when "01000" => c1 <= conv_signed(-2034, 13); when "01001" => c1 <= conv_signed(-2118, 13); when "01010" => c1 <= conv_signed(-2036, 13); when "01011" => c1 <= conv_signed(-2034, 13); when "01100" => c1 <= conv_signed(-2034, 13); when "01101" => c1 <= conv_signed(-2118, 13); when "01110" => c1 <= conv_signed(-2036, 13); when "01111" => c1 <= conv_signed(-2034, 13); when "10000" => c1 <= conv_signed(-2118, 13); when "10001" => c1 <= conv_signed(-2036, 13); when "10010" => c1 <= conv_signed(-2202, 13); when "10011" => c1 <= conv_signed(-2036, 13); when "10100" => c1 <= conv_signed(-2119, 13); when "10101" => c1 <= conv_signed(-2037, 13); when others => null; end case; end process; end; ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; ------------------------------------------------------------------------------- entity acoeff_lut is generic ( plane : integer := 0); port ( mask_id : in unsigned(4 downto 0); acoeff : out signed(12 downto 0)); end; ------------------------------------------------------------------------------- architecture default of acoeff_lut is begin gen0 : if plane = 0 generate process (mask_id) begin acoeff <= "-------------"; case mask_id is when "00000" => acoeff <= conv_signed(-3422, 13); when "00001" => acoeff <= conv_signed(-3462, 13); when "00010" => acoeff <= conv_signed(-2835, 13); when "00011" => acoeff <= conv_signed(-3462, 13); when "00100" => acoeff <= conv_signed( 0, 13); when "00101" => acoeff <= conv_signed(-2768, 13); when "00110" => acoeff <= conv_signed(-1493, 13); when "00111" => acoeff <= conv_signed( 0, 13); when "01000" => acoeff <= conv_signed(-3666, 13); when "01001" => acoeff <= conv_signed( 0, 13); when "01010" => acoeff <= conv_signed(-1491, 13); when "01011" => acoeff <= conv_signed(-1841, 13); when "01100" => acoeff <= conv_signed(-3462, 13); when "01101" => acoeff <= conv_signed( 0, 13); when "01110" => acoeff <= conv_signed(-1798, 13); when "01111" => acoeff <= conv_signed(-2917, 13); when "10000" => acoeff <= conv_signed( 0, 13); when "10001" => acoeff <= conv_signed(-1839, 13); when "10010" => acoeff <= conv_signed( 0, 13); when "10011" => acoeff <= conv_signed(-2848, 13); when "10100" => acoeff <= conv_signed( 0, 13); when "10101" => acoeff <= conv_signed(-1797, 13); when others => null; end case; end process; end generate; gen1 : if plane = 1 generate process (mask_id) begin acoeff <= "-------------"; case mask_id is when "00000" => acoeff <= conv_signed(-3284, 13); when "00001" => acoeff <= conv_signed( 0, 13); when "00010" => acoeff <= conv_signed(-1373, 13); when "00011" => acoeff <= conv_signed( 0, 13); when "00100" => acoeff <= conv_signed(-3550, 13); when "00101" => acoeff <= conv_signed(-1371, 13); when "00110" => acoeff <= conv_signed(-2842, 13); when "00111" => acoeff <= conv_signed(-3590, 13); when "01000" => acoeff <= conv_signed( 0, 13); when "01001" => acoeff <= conv_signed(-3590, 13); when "01010" => acoeff <= conv_signed(-2777, 13); when "01011" => acoeff <= conv_signed(-1768, 13); when "01100" => acoeff <= conv_signed( 0, 13); when "01101" => acoeff <= conv_signed(-2938, 13); when "01110" => acoeff <= conv_signed(-1766, 13); when "01111" => acoeff <= conv_signed( 0, 13); when "10000" => acoeff <= conv_signed(-3590, 13); when "10001" => acoeff <= conv_signed(-1729, 13); when "10010" => acoeff <= conv_signed( 0, 13); when "10011" => acoeff <= conv_signed( 0, 13); when "10100" => acoeff <= conv_signed(-2871, 13); when "10101" => acoeff <= conv_signed(-1727, 13); when others => null; end case; end process; end generate; gen2 : if plane = 2 generate process (mask_id) begin acoeff <= "-------------"; case mask_id is when "00000" => acoeff <= conv_signed( 3156, 13); when "00001" => acoeff <= conv_signed( -171, 13); when "00010" => acoeff <= conv_signed( 0, 13); when "00011" => acoeff <= conv_signed( -171, 13); when "00100" => acoeff <= conv_signed(-3412, 13); when "00101" => acoeff <= conv_signed( -136, 13); when "00110" => acoeff <= conv_signed( 1377, 13); when "00111" => acoeff <= conv_signed( 0, 13); when "01000" => acoeff <= conv_signed( 3381, 13); when "01001" => acoeff <= conv_signed( 0, 13); when "01010" => acoeff <= conv_signed( 1375, 13); when "01011" => acoeff <= conv_signed( 0, 13); when "01100" => acoeff <= conv_signed( -171, 13); when "01101" => acoeff <= conv_signed(-1424, 13); when "01110" => acoeff <= conv_signed( -89, 13); when "01111" => acoeff <= conv_signed( 0, 13); when "10000" => acoeff <= conv_signed( 0, 13); when "10001" => acoeff <= conv_signed( 0, 13); when "10010" => acoeff <= conv_signed(-3678, 13); when "10011" => acoeff <= conv_signed( -140, 13); when "10100" => acoeff <= conv_signed(-1422, 13); when "10101" => acoeff <= conv_signed( -89, 13); when others => null; end case; end process; end generate; gen3 : if plane = 3 generate process (mask_id) begin acoeff <= "-------------"; case mask_id is when "00000" => acoeff <= conv_signed( 3038, 13); when "00001" => acoeff <= conv_signed( 0, 13); when "00010" => acoeff <= conv_signed( 1270, 13); when "00011" => acoeff <= conv_signed( 0, 13); when "00100" => acoeff <= conv_signed( 3284, 13); when "00101" => acoeff <= conv_signed( 1268, 13); when "00110" => acoeff <= conv_signed( 0, 13); when "00111" => acoeff <= conv_signed( -171, 13); when "01000" => acoeff <= conv_signed(-3257, 13); when "01001" => acoeff <= conv_signed( -171, 13); when "01010" => acoeff <= conv_signed( -132, 13); when "01011" => acoeff <= conv_signed( 0, 13); when "01100" => acoeff <= conv_signed( 0, 13); when "01101" => acoeff <= conv_signed( 0, 13); when "01110" => acoeff <= conv_signed( 0, 13); when "01111" => acoeff <= conv_signed(-1307, 13); when "10000" => acoeff <= conv_signed( -171, 13); when "10001" => acoeff <= conv_signed( -82, 13); when "10010" => acoeff <= conv_signed(-3541, 13); when "10011" => acoeff <= conv_signed(-1305, 13); when "10100" => acoeff <= conv_signed( -136, 13); when "10101" => acoeff <= conv_signed( -82, 13); when others => null; end case; end process; end generate; gen4 : if plane = 4 generate process (mask_id) begin acoeff <= "-------------"; case mask_id is when "00000" => acoeff <= conv_signed( 0, 13); when "00001" => acoeff <= conv_signed( 3121, 13); when "00010" => acoeff <= conv_signed( 2426, 13); when "00011" => acoeff <= conv_signed( 3121, 13); when "00100" => acoeff <= conv_signed( 3166, 13); when "00101" => acoeff <= conv_signed( 2495, 13); when "00110" => acoeff <= conv_signed( 0, 13); when "00111" => acoeff <= conv_signed( 0, 13); when "01000" => acoeff <= conv_signed( 0, 13); when "01001" => acoeff <= conv_signed( 0, 13); when "01010" => acoeff <= conv_signed( 0, 13); when "01011" => acoeff <= conv_signed( 1575, 13); when "01100" => acoeff <= conv_signed( 3121, 13); when "01101" => acoeff <= conv_signed( 1321, 13); when "01110" => acoeff <= conv_signed( 1621, 13); when "01111" => acoeff <= conv_signed( 2496, 13); when "10000" => acoeff <= conv_signed( 0, 13); when "10001" => acoeff <= conv_signed( 1574, 13); when "10010" => acoeff <= conv_signed( 3412, 13); when "10011" => acoeff <= conv_signed( 2567, 13); when "10100" => acoeff <= conv_signed( 1319, 13); when "10101" => acoeff <= conv_signed( 1620, 13); when others => null; end case; end process; end generate; gen5 : if plane = 5 generate process (mask_id) begin acoeff <= "-------------"; case mask_id is when "00000" => acoeff <= conv_signed( 0, 13); when "00001" => acoeff <= conv_signed( 0, 13); when "00010" => acoeff <= conv_signed( 0, 13); when "00011" => acoeff <= conv_signed( 0, 13); when "00100" => acoeff <= conv_signed( 0, 13); when "00101" => acoeff <= conv_signed( 0, 13); when "00110" => acoeff <= conv_signed( 2446, 13); when "00111" => acoeff <= conv_signed( 3249, 13); when "01000" => acoeff <= conv_signed( 3030, 13); when "01001" => acoeff <= conv_signed( 3249, 13); when "01010" => acoeff <= conv_signed( 2513, 13); when "01011" => acoeff <= conv_signed( 1522, 13); when "01100" => acoeff <= conv_signed( 0, 13); when "01101" => acoeff <= conv_signed( 2529, 13); when "01110" => acoeff <= conv_signed( 1520, 13); when "01111" => acoeff <= conv_signed( 1216, 13); when "10000" => acoeff <= conv_signed( 3249, 13); when "10001" => acoeff <= conv_signed( 1564, 13); when "10010" => acoeff <= conv_signed( 3294, 13); when "10011" => acoeff <= conv_signed( 1214, 13); when "10100" => acoeff <= conv_signed( 2598, 13); when "10101" => acoeff <= conv_signed( 1563, 13); when others => null; end case; end process; end generate; end;