dataout_valid : out std_logic; -- data out valid signal
counterA : out std_logic_vector(31 downto 0); -- last counter value link A
counterB : out std_logic_vector(31 downto 0); -- last counter value link B
- counterC : out std_logic_vector(31 downto 0); -- last counter value link C
- counterD : out std_logic_vector(31 downto 0) -- last counter value link D
- );
+ counterC : out std_logic_vector(31 downto 0)); -- last counter value link C
end entity MupixDataFilter;
signal counterA_i : std_logic_vector(31 downto 0) := (others => '0');
signal counterB_i : std_logic_vector(31 downto 0) := (others => '0');
signal counterC_i : std_logic_vector(31 downto 0) := (others => '0');
- signal counterD_i : std_logic_vector(31 downto 0) := (others => '0');
begin
counterA_i <= (others => '0');
counterB_i <= (others => '0');
counterC_i <= (others => '0');
- counterD_i <= (others => '0');
dataout_valid_i <= '0';
else
dataout_valid_i <= '0';
counterA <= counterA_i;
counterB <= counterB_i;
counterC <= counterC_i;
- counterD <= counterD_i;
end architecture;
dataout_valid : out std_logic;
counterA : out std_logic_vector(31 downto 0);
counterB : out std_logic_vector(31 downto 0);
- counterC : out std_logic_vector(31 downto 0);
- counterD : out std_logic_vector(31 downto 0));
+ counterC : out std_logic_vector(31 downto 0));
end component MupixDataFilter;
component ReadoutController
signal mupix_filter_counterA_i : std_logic_vector(g_datawidthtrb - 1 downto 0);
signal mupix_filter_counterB_i : std_logic_vector(g_datawidthtrb - 1 downto 0);
signal mupix_filter_counterC_i : std_logic_vector(g_datawidthtrb - 1 downto 0);
- signal mupix_filter_counterD_i : std_logic_vector(g_datawidthtrb - 1 downto 0);
signal start_readout_slow_to_buffer : std_logic := '0';
signal start_readout : std_logic := '0';
dataout_valid => mupix_filter_dataout_valid_i,
counterA => mupix_filter_counterA_i,
counterB => mupix_filter_counterB_i,
- counterC => mupix_filter_counterC_i,
- counterD => mupix_filter_counterD_i);
+ counterC => mupix_filter_counterC_i);
cycl_buffer_1 : entity work.CircularMemory
generic map(
--0x10c: counter link A (read-only)
--0x10d: counter link B (read-only)
--0x10e: counter link C (read-only)
- --0x10f: counter link D (read-only)
-----------------------------------------------------------------------------------
slv_bus_handler : process(clk) is
begin
when x"010e" =>
SLV_DATA_OUT <= mupix_filter_counterC_i;
SLV_ACK_OUT <= '1';
- when x"010f" =>
- SLV_DATA_OUT <= mupix_filter_counterD_i;
- SLV_ACK_OUT <= '1';
when others =>
slv_unknown_addr_out <= '1';
end case;
data_out <= data_in;
wordcounter <= wordcounter + 1;
readout_fsm <= read;
- if mode = "01" then
- if wordcounter < unsigned(max_words) - 2 and almost_empty = '0' then
- rd_en <= '1';
- else
- rd_en <= '0';
- end if;
- if almost_empty_edge = "01" or wordcounter = unsigned(max_words) - 1 then
- readout_fsm <= trailer;
- end if;
+ if wordcounter < unsigned(max_words) - 2 and almost_empty = '0' then
+ rd_en <= '1';
else
- if wordcounter < unsigned(max_words) - 2 and almost_empty = '0' then
- rd_en <= '1';
- else
- rd_en <= '0';
- end if;
- if almost_empty_edge = "01" or wordcounter = unsigned(max_words) - 1 then
- readout_fsm <= trailer;
- end if;
+ rd_en <= '0';
+ end if;
+ if almost_empty_edge = "01" or wordcounter = unsigned(max_words) - 1 then
+ readout_fsm <= trailer;
end if;
when wait_trigger =>
busy <= '1';