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_valid_data => si_valid_data,
si_valid => si_valid,
si_ack => '1',
eoc => eoc,
status => status
);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -158,6 +158,7 @@ begin
si_absolute_generation_rank => si_absolute_generation_rank,
si_valid_data => si_valid_data,
si_valid => si_valid,
si_ack => '1',
eoc => eoc,
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_valid_data : out std_logic;
si_valid : out std_logic;
si_ack : in std_logic;
eoc : out std_logic;
-- Communication Status
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
-- 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.
-- UPDATE_INSTANCE Update the Data of the Instance of the received saample (Cache Change)
-- FINALIZE_PAYLOAD Finalize the payload addition (Update pointers).
-- UPDATE_INSTANCE Update the Data of the Instance of the received sample (Cache Change)
-- FINALIZE_PAYLOAD Finalize the payload addition (Update pointers)
-- PRE_SAMPLE_FINALIZE Store Sample Info based on Instance Data
-- 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)
@ -3975,6 +3976,8 @@ begin
-- Reset Data Available Status
status_sig_next <= status_sig and (not DATA_AVAILABLE_STATUS);
-- Wait on User
if (si_ack = '1') then
-- Sample Data Request
if (get_data_dds = '1') then
stage_next <= GET_PAYLOAD;
@ -3984,6 +3987,7 @@ begin
-- Invalidate Data
si_valid_sig_next <= '0';
end if;
end if;
-- Post-Present Data
when 2 =>
-- Memory Operation Guard