Commit 982968c2 authored by Dimitris Lampridis's avatar Dimitris Lampridis

hdl: register dcr_enable bit to help with timing (#28)

parent ab8edc42
......@@ -10,7 +10,7 @@
-- Author : Tomasz Wlostowski
-- Company : CERN
-- Created : 2011-08-24
-- Last update: 2014-03-24
-- Last update: 2023-10-26
-- Platform : FPGA-generic
-- Standard : VHDL'93
-------------------------------------------------------------------------------
......@@ -194,6 +194,7 @@ architecture behavioral of fd_delay_channel_driver is
signal tag_valid_d : std_logic_vector(4 downto 0);
signal dcr_arm_d : std_logic_vector(4 downto 0);
signal dcr_en_d : std_logic;
signal regs_in : t_fd_channel_out_registers;
signal regs_out : t_fd_channel_in_registers;
......@@ -228,9 +229,11 @@ begin
if rst_n_ref_i = '0' then
tag_valid_d <= (others => '0');
dcr_arm_d <= (others => '0');
dcr_en_d <= '0';
else
tag_valid_d <= tag_valid_d(tag_valid_d'length-2 downto 0) & tag_valid_i;
dcr_arm_d <= dcr_arm_d(dcr_arm_d'length-2 downto 0) & regs_in.dcr_pg_arm_o;
dcr_en_d <= regs_in.dcr_enable_o;
end if;
end if;
end process;
......@@ -393,7 +396,7 @@ begin
p_match_hit_stage1 : process(clk_ref_i)
begin
if rising_edge(clk_ref_i) then
if rst_n_ref_i = '0' or regs_in.dcr_enable_o = '0' then
if rst_n_ref_i = '0' or dcr_en_d = '0' then
hit_end <= '0';
hit_start <= '0';
hit_start_stage1 <= (others => '0');
......@@ -421,7 +424,7 @@ begin
p_fine_fsm : process(clk_ref_i)
begin
if rising_edge(clk_ref_i) then
if rst_n_ref_i = '0' or regs_in.dcr_enable_o = '0' then
if rst_n_ref_i = '0' or dcr_en_d = '0' then
state <= IDLE;
delay_load_o <= '0';
first_pulse <= '1';
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment