Port changes and fix syntax of DDS Reader

This commit is contained in:
Greek 2021-03-31 19:17:57 +02:00
parent 4a67a18df2
commit c5239679d7
3 changed files with 1253 additions and 825 deletions

View File

@ -417,7 +417,7 @@ READER
+-------------------------------------------------------------+
05| PAYLOAD_ADDRESS |
+-------------------------------------------------------------+
06| INSTANCE_ADDRESS |
06| INSTANCE_ADDRESS | [only if WITH_KEY]
+-------------------------------------------------------------+
07| DISPOSED_GENERATION_COUNT |
+-------------------------------------------------------------+
@ -548,6 +548,7 @@ K...Key Hash available
F...FilteredFlag (1:1 PID_STATUS_INFO Mapping)
U...UnregisteredFlag (1:1 PID_STATUS_INFO Mapping)
D...DisposedFlag (1:1 PID_STATUS_INFO Mapping)
NOTE: If P=0 and K=0, the Payload contains the Serialized Key
INSTANCE MEMORY
===============

File diff suppressed because it is too large Load Diff

View File

@ -46,6 +46,7 @@ package rtps_config_package is
type KEY_GENERATOR_OPCODE_TYPE is (NOP, WRITE_PAYLOAD, READ_KEY, READ_SIZE);
type HISTORY_CACHE_RESPONSE_TYPE is (OK, REJECTED, INVALID, ERROR);
type DDS_WRITER_OPCODE_TYPE is (NOP, REGISTER_INSTANCE, WRITE, DISPOSE, UNREGISTER_INSTANCE, LOOKUP_INSTANCE, WAIT_FOR_ACKNOWLEDGEMENTS, GET_OFFERED_DEADLINE_MISSED_STATUS, ASSERT_LIVELINESS, GET_LIVELINESS_LOST_STATUS);
type DDS_READER_OPCODE_TYPE is (NOP, READ, TAKE, READ_NEXT_SAMPLE, TAKE_NEXT_SAMPLE, READ_INSTANCE, TAKE_INSTANCE, READ_NEXT_INSTANCE, TAKE_NEXT_INSTANCE, GET_SAMPLE_REJECTED_STATUS, GET_REQUESTED_DEADLINE_MISSED_STATUS);
-- Sample Status Info Flags
constant SSI_DISPOSED_FLAG : natural := STATUS_INFO_DISPOSED_FLAG;
@ -120,13 +121,6 @@ package rtps_config_package is
type RTPS_OUT_DATA_TYPE is array (0 to NUM_ENDPOINTS) of std_logic_vector(WORD_WIDTH-1 downto 0);
constant ENDPOINT_BITMAP_WIDTH : natural := 1; -- TODO
type ENDPOINT_BITMAP_ARRAY_TYPE is array (0 to round_div(ENDPOINT_BITMAP_WIDTH, WORD_WIDTH)-1) of std_logic_vector(0 to WORD_WIDTH-1);
constant ZERO_ENDPOINT_BITMAP_ARRAY : ENDPOINT_BITMAP_ARRAY_TYPE := (others => (others => '0'));
function from_endpoint_bitmap_array (input : ENDPOINT_BITMAP_ARRAY_TYPE) return std_logic_vector;
function to_endpoint_bitmap_array (input : std_logic_vector(0 to ENDPOINT_BITMAP_WIDTH-1)) return ENDPOINT_BITMAP_ARRAY_TYPE;
-- Swap "data" to Big Endian representation.
function endian_swap(swap : std_logic; data : std_logic_vector) return std_logic_vector;
function endian_swap(swap : std_logic; data : unsigned) return unsigned;
@ -1195,24 +1189,6 @@ package body rtps_config_package is
return ret;
end function;
function from_endpoint_bitmap_array (input : ENDPOINT_BITMAP_ARRAY_TYPE) return std_logic_vector is
variable ret : std_logic_vector(0 to ENDPOINT_BITMAP_WIDTH-1) := (others => '0');
begin
for i in 0 to input'length-1 loop
ret(i*WORD_WIDTH to ((i+1)*WORD_WIDTH)-1) := input(i);
end loop;
return ret;
end function;
function to_endpoint_bitmap_array (input : std_logic_vector(0 to ENDPOINT_BITMAP_WIDTH-1)) return ENDPOINT_BITMAP_ARRAY_TYPE is
variable ret : ENDPOINT_BITMAP_ARRAY_TYPE := (others => (others => '0'));
begin
for i in 0 to ret'length-1 loop
ret(i) := input(i*WORD_WIDTH to ((i+1)*WORD_WIDTH)-1);
end loop;
return ret;
end function;
function check_mask(flags : std_logic_vector; mask : std_logic_vector) return boolean is
begin
assert (flags'length = mask'length) report "Flag and mask Signal have unequal length" severity FAILURE;