rtps-fpga/syn/rtps_writer_syn.vhd
Greek64 f6fec48a0e Convert rtps_writer to Vector Endpoint
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.
2022-04-05 17:18:07 +02:00

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;