rtps_writer now can be configured to simulate multiple endpoints. All Testbenched were modified to reflect and test this change. Packages were extended with array definitions.
107 lines
5.2 KiB
VHDL
107 lines
5.2 KiB
VHDL
-- altera vhdl_input_version vhdl_2008
|
|
-- XXX: QSYS Fix (https://www.intel.com/content/www/us/en/support/programmable/articles/000079458.html)
|
|
|
|
library ieee;
|
|
use ieee.std_logic_1164.all;
|
|
use ieee.numeric_std.all;
|
|
|
|
use work.math_pkg.all;
|
|
use work.rtps_package.all;
|
|
use work.user_config.all;
|
|
use work.rtps_config_package.all;
|
|
|
|
entity rtps_writer_syn is
|
|
port (
|
|
-- SYSTEM
|
|
clk : in std_logic;
|
|
reset : in std_logic;
|
|
time : in TIME_TYPE;
|
|
-- FROM RTPS HANDLER (USER TRAFFIC)
|
|
empty_user : in std_logic_vector(0 to NUM_WRITERS-1);
|
|
rd_user : out std_logic;
|
|
data_in_user : in std_logic_vector(WORD_WIDTH-1 downto 0);
|
|
last_word_in_user : in std_logic;
|
|
-- FROM DISCOVERY MODULE (META TRAFFIC)
|
|
empty_meta : in std_logic_vector(0 to NUM_WRITERS-1);
|
|
rd_meta : out std_logic;
|
|
data_in_meta : in std_logic_vector(WORD_WIDTH-1 downto 0);
|
|
last_word_in_meta : in std_logic;
|
|
-- TO DISCOVERY MODULE (META TRAFFIC)
|
|
alive_sig : out std_logic_vector(0 to NUM_WRITERS-1);
|
|
-- RTPS OUTPUT
|
|
full_ro : in std_logic;
|
|
wr_ro : out std_logic;
|
|
data_out_ro : out std_logic_vector(WORD_WIDTH-1 downto 0);
|
|
last_word_out_ro : out std_logic;
|
|
-- FROM HISTORY CACHE
|
|
liveliness_assertion : in std_logic_vector(0 to NUM_WRITERS-1);
|
|
data_available : in std_logic_vector(0 to NUM_WRITERS-1);
|
|
start_hc : out std_logic_vector(0 to NUM_WRITERS-1);
|
|
opcode_hc : out HISTORY_CACHE_OPCODE_ARRAY_TYPE(0 to NUM_WRITERS-1);
|
|
ack_hc : in std_logic_vector(0 to NUM_WRITERS-1);
|
|
seq_nr_hc : out SEQUENCENUMBER_ARRAY_TYPE(0 to NUM_WRITERS-1);
|
|
done_hc : in std_logic_vector(0 to NUM_WRITERS-1);
|
|
ret_hc : in HISTORY_CACHE_RESPONSE_ARRAY_TYPE(0 to NUM_WRITERS-1);
|
|
get_data_hc : out std_logic_vector(0 to NUM_WRITERS-1);
|
|
valid_in_hc : in std_logic_vector(0 to NUM_WRITERS-1);
|
|
ready_in_hc : out std_logic_vector(0 to NUM_WRITERS-1);
|
|
data_in_hc : in WORD_ARRAY_TYPE(0 to NUM_WRITERS-1);
|
|
last_word_in_hc : in std_logic_vector(0 to NUM_WRITERS-1);
|
|
cc_instance_handle : in INSTANCE_HANDLE_ARRAY_TYPE(0 to NUM_WRITERS-1);
|
|
cc_kind : in CACHE_CHANGE_KIND_ARRAY_TYPE(0 to NUM_WRITERS-1);
|
|
cc_source_timestamp : in TIME_ARRAY_TYPE(0 to NUM_WRITERS-1);
|
|
cc_seq_nr : in SEQUENCENUMBER_ARRAY_TYPE(0 to NUM_WRITERS-1)
|
|
);
|
|
end entity;
|
|
|
|
architecture arch of rtps_writer_syn is
|
|
begin
|
|
|
|
if_gen : if (NUM_WRITERS > 0) generate
|
|
syn_inst : entity work.rtps_writer(arch)
|
|
generic map (
|
|
NUM_WRITERS => 1,
|
|
CONFIG_ARRAY => to_QUARTUS_CONFIG_ARRAY_TYPE(ENDPOINT_CONFIG(NUM_READERS to NUM_READERS)),
|
|
ENTITYID => ENTITYID(NUM_READERS to NUM_READERS),
|
|
INLINE_QOS => INLINE_QOS_DATA(0 to 0)
|
|
)
|
|
port map (
|
|
-- SYSTEM
|
|
clk => clk,
|
|
reset => reset,
|
|
time => time,
|
|
empty_user => empty_user,
|
|
rd_user => rd_user,
|
|
data_in_user => data_in_user,
|
|
last_word_in_user => last_word_in_user,
|
|
empty_meta => empty_meta,
|
|
rd_meta => rd_meta,
|
|
data_in_meta => data_in_meta,
|
|
last_word_in_meta => last_word_in_meta,
|
|
alive_sig => alive_sig,
|
|
full_ro => full_ro,
|
|
wr_ro => wr_ro,
|
|
data_out_ro => data_out_ro,
|
|
last_word_out_ro => last_word_out_ro,
|
|
liveliness_assertion => liveliness_assertion,
|
|
data_available => data_available,
|
|
start_hc => start_hc,
|
|
opcode_hc => opcode_hc,
|
|
ack_hc => ack_hc,
|
|
seq_nr_hc => seq_nr_hc,
|
|
done_hc => done_hc,
|
|
ret_hc => ret_hc,
|
|
get_data_hc => get_data_hc,
|
|
data_in_hc => data_in_hc,
|
|
valid_in_hc => valid_in_hc,
|
|
ready_in_hc => ready_in_hc,
|
|
last_word_in_hc => last_word_in_hc,
|
|
cc_instance_handle => cc_instance_handle,
|
|
cc_kind => cc_kind,
|
|
cc_source_timestamp => cc_source_timestamp,
|
|
cc_seq_nr => cc_seq_nr
|
|
);
|
|
end generate;
|
|
|
|
end architecture;
|