---- opp_hitmap.vhd --- V1.0 8/04/99 Tsuyoshi NAKAYA (UC : nakaya@hep.uchicago.edu) ---- The module to generate the hit status map based on hitmap and long cluster map ---- ---- Layer Map and the HIT_STAT word result ---- x : miss hit, *: long cluster bit, % either miss hit or long cluster bit ---- hit_stat Layer with a hit ---- ---- V2.0: Hit status information are reduced to 4 bits because of extra one bit request ---- From L2 interface board. 10/17/00 U.K. Yang ---- ---- 0 (0,1,2,3,4) ---- 1 (0,1,2,3,%) ---- 2 (0,1,2,%,4) ---- 3 (0,1,%,3,4) ---- 4 (0,%,2,3,4) ---- 5 (%,1,2,3,4) ---- 6 (1,2,3,x,*) or (1,2,3,x,x) ---- (1,2,3,*,x) or (1,2,3,*,*) ---- 7 (1,2,x,4,*) or (1,2,x,4,x) ---- (1,2,*,4,x) or (1,2,*,4,*) ---- 8 (1,2,x,*,5) or (1,2,x,x,5) ---- (1,2,*,x,5) or (1,2,*,*,5) ---- 9 (1,x,3,4,*) or (1,x,3,4,x) ---- (1,*,3,4,x) or (1,*,3,4,*) ---- 10 (1,x,3,*,5) or (1,x,3,x,5) ---- (1,*,3,x,5) or (1,*,3,*,5) ---- 11 (1,x,*,4,5) or (1,x,x,4,5) ---- (1,*,x,4,5) or (1,*,*,4,5) ---- 12 (x,2,3,4,*) or (x,2,3,4,x) ---- (*,2,3,4,x) or (*,2,3,4,*) ---- 13 (x,2,3,*,5) or (x,2,3,x,5) ---- (*,2,3,x,5) or (*,2,3,*,5) ---- 14 (x,2,*,4,5) or (x,2,x,4,5) ---- (*,2,x,4,5) or (*,2,*,4,5) ---- (x,*,3,4,5) or (x,x,3,4,5) ---- (*,x,3,4,5) or (*,*,3,4,5) ---- 15 Any others LIBRARY ieee; USE ieee.std_logic_1164.ALL; LIBRARY lpm; USE lpm.lpm_components.ALL; LIBRARY altera; USE altera.maxplus2.ALL; USE work.tf_def.ALL; ENTITY opp_hitmap IS PORT( clk : IN STD_LOGIC; hitmap, lclmap : IN SVX_PLANE ; hit_stat : OUT HIT_STAT_WORD); END opp_hitmap; ARCHITECTURE a OF opp_hitmap IS SIGNAL badmap, missmap : SVX_PLANE; BEGIN missmap <= NOT hitmap; badmap <= missmap OR lclmap; hit_word : PROCESS (clk) BEGIN WAIT UNTIL clk'EVENT AND clk = '1'; ----- NO BAD HIT in any SVX laers : 0 IF (badmap = ('0','0','0','0','0')) THEN hit_stat <= ('0','0','0','0','0'); --0 ----- ONE BAD HIT in the SVX laers : 1-5 ELSIF (badmap = ('0','0','0','0','1')) THEN hit_stat <= ('0','0','1','0','1'); --5 ELSIF (badmap = ('0','0','0','1','0')) THEN hit_stat <= ('0','0','1','0','0'); --4 ELSIF (badmap = ('0','0','1','0','0')) THEN hit_stat <= ('0','0','0','1','1'); --3 ELSIF (badmap = ('0','1','0','0','0')) THEN hit_stat <= ('0','0','0','1','0'); --2 ELSIF (badmap = ('1','0','0','0','0')) THEN hit_stat <= ('0','0','0','0','1'); --1 ----- TWO BAD HITs in the SVX laers : 6-14 ELSIF (badmap = ('0','0','0','1','1')) THEN hit_stat <= ('0','1','1','1','0'); -- 14 ELSIF (badmap = ('0','0','1','0','1')) THEN hit_stat <= ('0','1','1','1','0'); -- 14 ELSIF (badmap = ('0','1','0','0','1')) THEN hit_stat <= ('0','1','1','0','1'); -- 13 ELSIF (badmap = ('1','0','0','0','1')) THEN hit_stat <= ('0','1','1','0','0'); -- 12 ELSIF (badmap = ('0','0','1','1','0')) THEN hit_stat <= ('0','1','0','1','1'); -- 11 ELSIF (badmap = ('0','1','0','1','0')) THEN hit_stat <= ('0','1','0','1','0'); -- 10 ELSIF (badmap = ('1','0','0','1','0')) THEN hit_stat <= ('0','1','0','0','0'); -- 9 ELSIF (badmap = ('0','1','1','0','0')) THEN hit_stat <= ('0','1','0','0','0'); -- 8 ELSIF (badmap = ('1','0','1','0','0')) THEN hit_stat <= ('0','0','1','1','1'); -- 7 ELSIF (badmap = ('1','1','0','0','0')) THEN hit_stat <= ('0','0','1','1','0'); -- 6 ELSE hit_stat <= ('0','1','1','1','1'); -- 15 END IF; END PROCESS; END a;