diff --git a/libraries/base/dp/src/vhdl/dp_bsn_source_v2.vhd b/libraries/base/dp/src/vhdl/dp_bsn_source_v2.vhd index 66598b4d337c739710274cbe38b8ebebb8d85bf6..84c6953020fc5f8c44d5313a2f25398af3612de5 100644 --- a/libraries/base/dp/src/vhdl/dp_bsn_source_v2.vhd +++ b/libraries/base/dp/src/vhdl/dp_bsn_source_v2.vhd @@ -29,9 +29,16 @@ -- sop and eop will be active. -- Alternatively, one can assert dp_on while dp_on_pps is high to -- start the data path on the next PPS. +-- The dp_on is asynchronous. The dp_bsn_source_v2 takes care that +-- src_out.valid starts with a src_out.sop and that src_out.valid can +-- only go low after a src_out.eop, to ensure that src_out only produces +-- complete sop-eop blocks that enter the subsequent processing. +-- The bs_start is active at the first src_out.sop after dp_on went high. -- Remarks: --- Starting the data path is only possible from the dp_off state, so one +-- . Starting the data path is only possible from the dp_off state, so one -- has to disable (dp_on='0') the data path before restarting it. +-- . Effectively dp_on_status = src_out.valid, because when the BSN source +-- is on, then src_out.valid = '1' at every clk cycle. -- -- author : P.Donker okt. 2020, added bsn_time_offset -- @@ -57,8 +64,8 @@ ENTITY dp_bsn_source_v2 IS dp_on : IN STD_LOGIC; dp_on_pps : IN STD_LOGIC; - dp_on_status : OUT STD_LOGIC; - bs_restart : OUT STD_LOGIC; + dp_on_status : OUT STD_LOGIC; -- = src_out.valid + bs_restart : OUT STD_LOGIC; -- = src_out.sop for first sop after dp_on went high nof_clk_per_sync : IN STD_LOGIC_VECTOR(c_word_w-1 DOWNTO 0) := TO_UVEC(g_nof_clk_per_sync, c_word_w); bsn_init : IN STD_LOGIC_VECTOR(g_bsn_w-1 DOWNTO 0) := (OTHERS=>'0');