Add 'si_ack' to DDS Reader

Previously the simaple info data was valid for exectly 1 clock cycle,
in which the user had to pull the 'get_data' signal if he wanted the
associated payload.
This change allows the user to control how long the sample info data is
shown.
This commit is contained in:
Greek 2021-10-26 11:16:23 +02:00
parent 609ed2d686
commit e33d982182
19 changed files with 32 additions and 10 deletions

View File

@ -205,6 +205,7 @@ begin
si_absolute_generation_rank => si_absolute_generation_rank, si_absolute_generation_rank => si_absolute_generation_rank,
si_valid_data => si_valid_data, si_valid_data => si_valid_data,
si_valid => si_valid, si_valid => si_valid,
si_ack => '1',
eoc => eoc, eoc => eoc,
status => status status => status
); );

View File

@ -204,6 +204,7 @@ begin
si_absolute_generation_rank => si_absolute_generation_rank, si_absolute_generation_rank => si_absolute_generation_rank,
si_valid_data => si_valid_data, si_valid_data => si_valid_data,
si_valid => si_valid, si_valid => si_valid,
si_ack => '1',
eoc => eoc, eoc => eoc,
status => status status => status
); );

View File

@ -204,6 +204,7 @@ begin
si_absolute_generation_rank => si_absolute_generation_rank, si_absolute_generation_rank => si_absolute_generation_rank,
si_valid_data => si_valid_data, si_valid_data => si_valid_data,
si_valid => si_valid, si_valid => si_valid,
si_ack => '1',
eoc => eoc, eoc => eoc,
status => status status => status
); );

View File

@ -183,6 +183,7 @@ begin
si_absolute_generation_rank => si_absolute_generation_rank, si_absolute_generation_rank => si_absolute_generation_rank,
si_valid_data => si_valid_data, si_valid_data => si_valid_data,
si_valid => si_valid, si_valid => si_valid,
si_ack => '1',
eoc => eoc, eoc => eoc,
status => status status => status
); );

View File

@ -205,6 +205,7 @@ begin
si_absolute_generation_rank => si_absolute_generation_rank, si_absolute_generation_rank => si_absolute_generation_rank,
si_valid_data => si_valid_data, si_valid_data => si_valid_data,
si_valid => si_valid, si_valid => si_valid,
si_ack => '1',
eoc => eoc, eoc => eoc,
status => status status => status
); );

View File

@ -205,6 +205,7 @@ begin
si_absolute_generation_rank => si_absolute_generation_rank, si_absolute_generation_rank => si_absolute_generation_rank,
si_valid_data => si_valid_data, si_valid_data => si_valid_data,
si_valid => si_valid, si_valid => si_valid,
si_ack => '1',
eoc => eoc, eoc => eoc,
status => status status => status
); );

View File

@ -158,6 +158,7 @@ begin
si_absolute_generation_rank => si_absolute_generation_rank, si_absolute_generation_rank => si_absolute_generation_rank,
si_valid_data => si_valid_data, si_valid_data => si_valid_data,
si_valid => si_valid, si_valid => si_valid,
si_ack => '1',
eoc => eoc, eoc => eoc,
status => status status => status
); );

View File

@ -198,6 +198,7 @@ begin
si_absolute_generation_rank => si_absolute_generation_rank, si_absolute_generation_rank => si_absolute_generation_rank,
si_valid_data => si_valid_data, si_valid_data => si_valid_data,
si_valid => si_valid, si_valid => si_valid,
si_ack => '1',
eoc => eoc, eoc => eoc,
status => status status => status
); );

View File

@ -198,6 +198,7 @@ begin
si_absolute_generation_rank => si_absolute_generation_rank, si_absolute_generation_rank => si_absolute_generation_rank,
si_valid_data => si_valid_data, si_valid_data => si_valid_data,
si_valid => si_valid, si_valid => si_valid,
si_ack => '1',
eoc => eoc, eoc => eoc,
status => status status => status
); );

View File

@ -198,6 +198,7 @@ begin
si_absolute_generation_rank => si_absolute_generation_rank, si_absolute_generation_rank => si_absolute_generation_rank,
si_valid_data => si_valid_data, si_valid_data => si_valid_data,
si_valid => si_valid, si_valid => si_valid,
si_ack => '1',
eoc => eoc, eoc => eoc,
status => status status => status
); );

View File

@ -198,6 +198,7 @@ begin
si_absolute_generation_rank => si_absolute_generation_rank, si_absolute_generation_rank => si_absolute_generation_rank,
si_valid_data => si_valid_data, si_valid_data => si_valid_data,
si_valid => si_valid, si_valid => si_valid,
si_ack => '1',
eoc => eoc, eoc => eoc,
status => status status => status
); );

View File

@ -199,6 +199,7 @@ begin
si_absolute_generation_rank => si_absolute_generation_rank, si_absolute_generation_rank => si_absolute_generation_rank,
si_valid_data => si_valid_data, si_valid_data => si_valid_data,
si_valid => si_valid, si_valid => si_valid,
si_ack => '1',
eoc => eoc, eoc => eoc,
status => status status => status
); );

View File

@ -179,6 +179,7 @@ begin
si_absolute_generation_rank => si_absolute_generation_rank, si_absolute_generation_rank => si_absolute_generation_rank,
si_valid_data => si_valid_data, si_valid_data => si_valid_data,
si_valid => si_valid, si_valid => si_valid,
si_ack => '1',
eoc => eoc, eoc => eoc,
status => status status => status
); );

View File

@ -158,6 +158,7 @@ begin
si_absolute_generation_rank => si_absolute_generation_rank, si_absolute_generation_rank => si_absolute_generation_rank,
si_valid_data => si_valid_data, si_valid_data => si_valid_data,
si_valid => si_valid, si_valid => si_valid,
si_ack => '1',
eoc => eoc, eoc => eoc,
status => status status => status
); );

View File

@ -158,6 +158,7 @@ begin
si_absolute_generation_rank => si_absolute_generation_rank, si_absolute_generation_rank => si_absolute_generation_rank,
si_valid_data => si_valid_data, si_valid_data => si_valid_data,
si_valid => si_valid, si_valid => si_valid,
si_ack => '1',
eoc => eoc, eoc => eoc,
status => status status => status
); );

View File

@ -158,6 +158,7 @@ begin
si_absolute_generation_rank => si_absolute_generation_rank, si_absolute_generation_rank => si_absolute_generation_rank,
si_valid_data => si_valid_data, si_valid_data => si_valid_data,
si_valid => si_valid, si_valid => si_valid,
si_ack => '1',
eoc => eoc, eoc => eoc,
status => status status => status
); );

View File

@ -158,6 +158,7 @@ begin
si_absolute_generation_rank => si_absolute_generation_rank, si_absolute_generation_rank => si_absolute_generation_rank,
si_valid_data => si_valid_data, si_valid_data => si_valid_data,
si_valid => si_valid, si_valid => si_valid,
si_ack => '1',
eoc => eoc, eoc => eoc,
status => status status => status
); );

View File

@ -158,6 +158,7 @@ begin
si_absolute_generation_rank => si_absolute_generation_rank, si_absolute_generation_rank => si_absolute_generation_rank,
si_valid_data => si_valid_data, si_valid_data => si_valid_data,
si_valid => si_valid, si_valid => si_valid,
si_ack => '1',
eoc => eoc, eoc => eoc,
status => status status => status
); );

View File

@ -84,6 +84,7 @@ entity dds_reader is
si_absolute_generation_rank : out std_logic_vector(ABSOLUTE_GENERATION_COUNT_WIDTH-1 downto 0); si_absolute_generation_rank : out std_logic_vector(ABSOLUTE_GENERATION_COUNT_WIDTH-1 downto 0);
si_valid_data : out std_logic; si_valid_data : out std_logic;
si_valid : out std_logic; si_valid : out std_logic;
si_ack : in std_logic;
eoc : out std_logic; eoc : out std_logic;
-- Communication Status -- Communication Status
status : out std_logic_vector(STATUS_KIND_WIDTH-1 downto 0) status : out std_logic_vector(STATUS_KIND_WIDTH-1 downto 0)
@ -647,8 +648,8 @@ begin
-- GET_KEY_HASH Fetch the calculated key hash from the Key Hash Generator -- GET_KEY_HASH Fetch the calculated key hash from the Key Hash Generator
-- INITIATE_INSTANCE_SEARCH Initiate Instance Search Memory Operation. This state is used to start the Search operation as soon as the required data is available -- INITIATE_INSTANCE_SEARCH Initiate Instance Search Memory Operation. This state is used to start the Search operation as soon as the required data is available
-- FILTER_STAGE This state decides if the RTPS Cache Change is accepted, dropped, or rejected. It also decides what sample (if any) has to be removed. -- FILTER_STAGE This state decides if the RTPS Cache Change is accepted, dropped, or rejected. It also decides what sample (if any) has to be removed.
-- UPDATE_INSTANCE Update the Data of the Instance of the received saample (Cache Change) -- UPDATE_INSTANCE Update the Data of the Instance of the received sample (Cache Change)
-- FINALIZE_PAYLOAD Finalize the payload addition (Update pointers). -- FINALIZE_PAYLOAD Finalize the payload addition (Update pointers)
-- PRE_SAMPLE_FINALIZE Store Sample Info based on Instance Data -- PRE_SAMPLE_FINALIZE Store Sample Info based on Instance Data
-- FIND_POS Find Sample List position based on DESTINATION_ORDER_QOS -- FIND_POS Find Sample List position based on DESTINATION_ORDER_QOS
-- FIX_POINTERS Update the List Pointers of the inserted Sample neighbours (First Step of Sample Addition Finalization) -- FIX_POINTERS Update the List Pointers of the inserted Sample neighbours (First Step of Sample Addition Finalization)
@ -3975,14 +3976,17 @@ begin
-- Reset Data Available Status -- Reset Data Available Status
status_sig_next <= status_sig and (not DATA_AVAILABLE_STATUS); status_sig_next <= status_sig and (not DATA_AVAILABLE_STATUS);
-- Sample Data Request -- Wait on User
if (get_data_dds = '1') then if (si_ack = '1') then
stage_next <= GET_PAYLOAD; -- Sample Data Request
cnt_next <= 0; if (get_data_dds = '1') then
else stage_next <= GET_PAYLOAD;
cnt_next <= 2; cnt_next <= 0;
-- Invalidate Data else
si_valid_sig_next <= '0'; cnt_next <= 2;
-- Invalidate Data
si_valid_sig_next <= '0';
end if;
end if; end if;
-- Post-Present Data -- Post-Present Data
when 2 => when 2 =>