From: Tobias Weber Date: Thu, 5 Sep 2013 13:04:01 +0000 (+0200) Subject: Fix Bug with missing Dataword at beginning of hit generation/add readout of eventcounter X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=141bb941951a7bd8e61d6f738d98782ec1187c10;p=trb3.git Fix Bug with missing Dataword at beginning of hit generation/add readout of eventcounter --- diff --git a/mupix/sources/EventBuffer.vhd b/mupix/sources/EventBuffer.vhd index 0a9a5da..be55002 100644 --- a/mupix/sources/EventBuffer.vhd +++ b/mupix/sources/EventBuffer.vhd @@ -65,7 +65,7 @@ begin -- Behavioral -- Send data to FIFO (TODO: generate FiFo Core in Cores-Directory!!) fifo_32_data_1 : fifo_32_data port map ( - Data => MuPixData_in, --Data In + Data => fifo_data_in, --Data In Clock => CLK, WrEn => fifo_write, RdEn => fifo_read_enable, diff --git a/mupix/sources/MuPix3_interface.vhd b/mupix/sources/MuPix3_interface.vhd index af8c96b..629b868 100644 --- a/mupix/sources/MuPix3_interface.vhd +++ b/mupix/sources/MuPix3_interface.vhd @@ -5,10 +5,6 @@ -- nberger@physi.uni-heidelberg.de -- Adepted to TRBv3 Readout: Tobias Weber, University Mainz ----------------------------------------------------------------------------- - - - - library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; @@ -85,9 +81,9 @@ architecture RTL of mupix_interface is signal ngeneratehitscounter : unsigned(15 downto 0); signal generatehitswaitcounter : unsigned(31 downto 0); - signal gen_hit_col : std_logic_vector(5 downto 0); - signal gen_hit_row : std_logic_vector(5 downto 0); - signal gen_hit_time : std_logic_vector(7 downto 0); + signal gen_hit_col : std_logic_vector(5 downto 0) := (others => '0'); + signal gen_hit_row : std_logic_vector(5 downto 0) := (others => '0'); + signal gen_hit_time : std_logic_vector(7 downto 0) := (others => '0'); signal testoutro : std_logic_vector (127 downto 0); @@ -110,6 +106,7 @@ begin --x0022: Timestamp Controlbits --x0023: Hit Generator --x0024: Delay Counters + --x0025: EventCounter ----------------------------------------------------------------------------- SLV_HANDLER : process(clk) @@ -138,6 +135,8 @@ begin when x"0024" => SLV_DATA_OUT <= delaycounters; SLV_ACK_OUT <= '1'; + when x"0025" => + SLV_DATA_OUT <= std_logic_vector(eventcounter); when others => SLV_UNKNOWN_ADDR_OUT <= '1'; end case; @@ -389,7 +388,7 @@ begin ro_busy_int <= '1'; testoutro(6) <= '1'; state <= hitgenerator; - if(delcounter = "100") then -- write event header + if(delcounter = "0100") then -- write event header state <= hitgenerator; memdata <= "11111010101111101010101110111010"; --0xFABEABBA memwren <= '1'; @@ -400,7 +399,7 @@ begin gen_hit_time <= (others => '0'); delcounter <= delcounter - 1; endofevent <= '0'; - elsif(delcounter = "011") then -- write event counter + elsif(delcounter = "0011") then -- write event counter state <= hitgenerator; memdata <= std_logic_vector(eventcounter); memwren <= '1'; @@ -411,13 +410,13 @@ begin memwren <= '0'; delcounter <= delcounter - 1; endofevent <= '0'; - elsif(delcounter = "001") then -- write trigger number + elsif(delcounter = "0001") then -- write trigger number state <= hitgenerator; memdata <= (others => '0'); --empty trigger number memwren <= '1'; delcounter <= delcounter - 1; endofevent <= '0'; - elsif(delcounter = "000" and ngeneratehitscounter > "0000000000000000") then + elsif(delcounter = "0000" and ngeneratehitscounter > "0000000000000000") then state <= hitgenerator; delcounter <= delcounter; ngeneratehitscounter <= ngeneratehitscounter - 1; @@ -429,13 +428,13 @@ begin memdata <= "111100001111" & "0" & gen_hit_col(4 downto 0) & gen_hit_row & graycount; --0xF0F memwren <= '1'; endofevent <= '0'; - elsif(delcounter = "000" and ngeneratehitscounter = "0000000000000000" and generatehits = '0') then + elsif(delcounter = "0000" and ngeneratehitscounter = "0000000000000000" and generatehits = '0') then state <= waiting; -- end of event memwren <= '1'; memdata <= "10111110111011111011111011101111"; --0xBEEFBEEF endofevent <= '1'; - elsif(delcounter = "000" and ngeneratehitscounter = "0000000000000000" and generatehits = '1') then + elsif(delcounter = "0000" and ngeneratehitscounter = "0000000000000000" and generatehits = '1') then state <= hitgeneratorwait; -- end of event memwren <= '1';