diff --git a/.gitignore b/.gitignore index eaff8ff..08b8a3a 100644 --- a/.gitignore +++ b/.gitignore @@ -18,11 +18,12 @@ #***QUARTUS*** #Project File !*.qpf -!*.qsf #Settings File !*.qsf #QSYS File !*.qsys +#Constraint File +!*.sdc #Unignore VHDL Files in syn Directory First Level !/syn/*.vhd diff --git a/src/FWFT_FIFO.vhd b/src/FWFT_FIFO.vhd index 3bc1b2b..b5a254c 100644 --- a/src/FWFT_FIFO.vhd +++ b/src/FWFT_FIFO.vhd @@ -15,13 +15,15 @@ entity FWFT_FIFO is -- SYSTEM clk : in std_logic; reset : in std_logic; - - data_in : in std_logic_vector(DATA_WIDTH-1 downto 0); + -- INPUT + full : out std_logic; write : in std_logic; + data_in : in std_logic_vector(DATA_WIDTH-1 downto 0); + -- OUTPUT + empty : out std_logic; read : in std_logic; data_out : out std_logic_vector(DATA_WIDTH-1 downto 0); - empty : out std_logic; - full : out std_logic; + -- MISC free : out natural range 0 to FIFO_DEPTH ); end entity; diff --git a/src/TEMPLATE_reader_wrapper.vhd b/src/TEMPLATE_reader_wrapper.vhd index fd9a2a9..c797fbc 100644 --- a/src/TEMPLATE_reader_wrapper.vhd +++ b/src/TEMPLATE_reader_wrapper.vhd @@ -8,7 +8,7 @@ use ieee.numeric_std.all; use work.rtps_package.all; use work.rtps_config_package.all; -entity Type2_reader_wrapper is +entity TYPENAME_reader_wrapper is port ( -- SYSTEM clk : in std_logic; @@ -25,8 +25,8 @@ entity Type2_reader_wrapper is get_data_dds : out std_logic; done_dds : in std_logic; return_code_dds : in std_logic_vector(RETURN_CODE_WIDTH-1 downto 0); - ready_in_dds : out std_logic; valid_in_dds : in std_logic; + ready_in_dds : out std_logic; data_in_dds : in std_logic_vector(WORD_WIDTH-1 downto 0); last_word_in_dds : in std_logic; -- Sample Info @@ -87,13 +87,13 @@ entity Type2_reader_wrapper is ); end entity; -architecture arch of Type2_reader_wrapper is +architecture arch of TYPENAME_reader_wrapper is --*****TYPE DECLARATION***** -- FSM states. Explained below in detail type STAGE_TYPE is (IDLE,GET_PAYLOAD_HEADER,FETCH,ALIGN_STREAM,SKIP_PAYLOAD,DECODE_PAYLOAD); -- ###GENERATED START### - type DECODE_STAGE_TYPE is (GET_OPTIONAL_HEADER); + type DECODE_STAGE_TYPE is (TODO,GET_OPTIONAL_HEADER); -- TYPES DECLARATIONS -- ###GENERATED END### diff --git a/src/user_config.vhd b/src/TEMPLATE_user_config.vhd similarity index 91% rename from src/user_config.vhd rename to src/TEMPLATE_user_config.vhd index 5cc4cab..43c9254 100644 --- a/src/user_config.vhd +++ b/src/TEMPLATE_user_config.vhd @@ -10,10 +10,16 @@ use work.rtps_package.all; package user_config is --*****USER CONFIG***** - -- NOTE: All strings have to be padded to 256 characters - -- Unicast IPv4 Address used by all RTPS Entities [Default 192.168.0.80] + -- Period of system clock + constant CLOCK_PERIOD : time := 50 ns; + -- Maximum number of supported remote Participants (Affects generated Memory Size) + constant MAX_REMOTE_PARTICIPANTS : natural := 50; + -- Maximum number of supported remote Endpoints (Affects generated Memory Size) + constant MAX_REMOTE_ENDPOINTS : natural := 50; + + -- Unicast IPv4 Address used by all RTPS Entities [Default 192.168.0.128] constant DEFAULT_IPv4_ADDRESS : std_logic_vector(IPv4_ADDRESS_WIDTH-1 downto 0) := x"C0A80080"; -- Number of RTPS Writer Endpoints constant NUM_WRITERS : natural := 0; @@ -44,11 +50,13 @@ package user_config is --***RTPS ENDPOINTS*** -- Array denoting if Endpoints use Keyed Topics - constant ENDPOINT_WITH_KEY : USER_BOOLEAN_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => FALSE); + constant ENDPOINT_WITH_KEY : USER_BOOLEAN_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => FALSE); + -- Array denoting which mode the Endpoints are operating with + constant ENDPOINT_PUSH_MODE : USER_BOOLEAN_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => TRUE); -- Array mapping Topic Names to Endpoints - constant ENDPOINT_TOPIC_STRING : USER_STRING_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => "Placeholder" & (12 to 256 => NUL)); + constant ENDPOINT_TOPIC_STRING : USER_STRING_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => "Placeholder" & (12 to 256 => NUL)); -- Array mapping Type Names to Endpoints - constant ENDPOINT_TYPE_STRING : USER_STRING_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => "Placeholder" & (12 to 256 => NUL)); + constant ENDPOINT_TYPE_STRING : USER_STRING_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => "Placeholder" & (12 to 256 => NUL)); -- *TIMING CHARACTERISTICS* -- Timing Characteristics for Participant constant PARTICIPANT_ANNOUNCEMENT_PERIOD : DURATION_TYPE := gen_duration(30,0); -- 30 s @@ -72,6 +80,7 @@ package user_config is --***ENDPOINT DDS QOS*** -- Array mapping DURABILITY QoS to Endpoints constant ENDPOINT_DURABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_DURABILITY_QOS); + -- Array mapping DURABILITY SERVICE QoS to Endpoints constant ENDPOINT_DURABILITY_SERVICE_CLEANUP_DELAY : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_DURABILITY_SERVICE_CLEANUP_DELAY); constant ENDPOINT_DURABILITY_SERVICE_HISTORY : USER_LONG_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_DURABILITY_SERVICE_HISTORY); constant ENDPOINT_DURABILITY_SERVICE_HISTORY_DEPTH : USER_LONG_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_DURABILITY_SERVICE_HISTORY_DEPTH); @@ -120,10 +129,6 @@ package user_config is constant ENDPOINT_AUTOPURGE_NOWRITER_SAMPLES_DELAY : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_AUTOPURGE_NOWRITER_SAMPLES_DELAY); constant ENDPOINT_AUTOPURGE_DISPOSED_SAMPLES_DELAY : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_AUTOPURGE_DISPOSED_SAMPLES_DELAY); - -- NOTE: The buffer will not only store participants, but also endpoint data - -- Used to determine the size of the builtin endpoint buffer - constant MAX_REMOTE_PARTICIPANTS : natural := 50; - -- Set to TRUE for Simulation Testing (Extra Code generated) constant SIMULATION_FLAG : boolean := FALSE; -end package; +end package; \ No newline at end of file diff --git a/src/TEMPLATE_writer_wrapper.vhd b/src/TEMPLATE_writer_wrapper.vhd index 54ed4bf..757be7a 100644 --- a/src/TEMPLATE_writer_wrapper.vhd +++ b/src/TEMPLATE_writer_wrapper.vhd @@ -8,7 +8,7 @@ use ieee.numeric_std.all; use work.rtps_package.all; use work.rtps_config_package.all; -entity Type2_writer_wrapper is +entity TYPENAME_writer_wrapper is generic ( LITTLE_ENDIAN : std_logic := '0' ); @@ -26,12 +26,12 @@ entity Type2_writer_wrapper is done_dds : in std_logic; return_code_dds : in std_logic_vector(RETURN_CODE_WIDTH-1 downto 0); instance_handle_in_dds : in INSTANCE_HANDLE_TYPE; - ready_out_dds : in std_logic; valid_out_dds : out std_logic; + ready_out_dds : in std_logic; data_out_dds : out std_logic_vector(WORD_WIDTH-1 downto 0); last_word_out_dds : out std_logic; - ready_in_dds : out std_logic; valid_in_dds : in std_logic; + ready_in_dds : out std_logic; data_in_dds : in std_logic_vector(WORD_WIDTH-1 downto 0); last_word_in_dds : in std_logic; -- Communication Status @@ -58,7 +58,7 @@ entity Type2_writer_wrapper is ); end entity; -architecture arch of Type2_writer_wrapper is +architecture arch of TYPENAME_writer_wrapper is --*****TYPE DECLARATION***** -- FSM states. Explained below in detail diff --git a/src/Tests/test_config2.vhd b/src/Tests/Level_2/L2_Testbench_Lib2_config.vhd similarity index 91% rename from src/Tests/test_config2.vhd rename to src/Tests/Level_2/L2_Testbench_Lib2_config.vhd index 0d362bd..3f40c6a 100644 --- a/src/Tests/test_config2.vhd +++ b/src/Tests/Level_2/L2_Testbench_Lib2_config.vhd @@ -7,10 +7,16 @@ use work.rtps_package.all; package user_config is --*****USER CONFIG***** - -- NOTE: All strings have to be padded to 256 characters - -- Unicast IPv4 Address used by all RTPS Entities [Default 192.168.0.81] + -- Period of system clock + constant CLOCK_PERIOD : time := 50 ns; + -- Maximum number of supported remote Participants (Affects generated Memory Size) + constant MAX_REMOTE_PARTICIPANTS : natural := 50; + -- Maximum number of supported remote Endpoints (Affects generated Memory Size) + constant MAX_REMOTE_ENDPOINTS : natural := 50; + + -- Unicast IPv4 Address used by all RTPS Entities [Default 192.168.0.129] constant DEFAULT_IPv4_ADDRESS : std_logic_vector(IPv4_ADDRESS_WIDTH-1 downto 0) := x"C0A80081"; -- Number of RTPS Writer Endpoints constant NUM_WRITERS : natural := 1; @@ -41,23 +47,13 @@ package user_config is --***RTPS ENDPOINTS*** -- Array denoting if Endpoints use Keyed Topics - constant ENDPOINT_WITH_KEY : USER_BOOLEAN_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := ( - 0 => TRUE - ); - + constant ENDPOINT_WITH_KEY : USER_BOOLEAN_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => TRUE); -- Array denoting which mode the Endpoints are operating with - constant ENDPOINT_PUSH_MODE : USER_BOOLEAN_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := ( - 0 => TRUE - ); - + constant ENDPOINT_PUSH_MODE : USER_BOOLEAN_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => TRUE); -- Array mapping Topic Names to Endpoints - constant ENDPOINT_TOPIC_STRING : USER_STRING_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := ( - 0 => "Topic1" & (7 to 256 => NUL) - ); + constant ENDPOINT_TOPIC_STRING : USER_STRING_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => "Topic1" & (7 to 256 => NUL)); -- Array mapping Type Names to Endpoints - constant ENDPOINT_TYPE_STRING : USER_STRING_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := ( - 0 => "Type1" & (6 to 256 => NUL) - ); + constant ENDPOINT_TYPE_STRING : USER_STRING_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => "Type1" & (6 to 256 => NUL)); -- *TIMING CHARACTERISTICS* -- Timing Characteristics for Participant constant PARTICIPANT_ANNOUNCEMENT_PERIOD : DURATION_TYPE := gen_duration(0,50000); -- 50k ns @@ -81,6 +77,7 @@ package user_config is --***ENDPOINT DDS QOS*** -- Array mapping DURABILITY QoS to Endpoints constant ENDPOINT_DURABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => TRANSIENT_LOCAL_DURABILITY_QOS); + -- Array mapping DURABILITY SERVICE QoS to Endpoints constant ENDPOINT_DURABILITY_SERVICE_CLEANUP_DELAY : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_DURABILITY_SERVICE_CLEANUP_DELAY); constant ENDPOINT_DURABILITY_SERVICE_HISTORY : USER_LONG_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_DURABILITY_SERVICE_HISTORY); constant ENDPOINT_DURABILITY_SERVICE_HISTORY_DEPTH : USER_LONG_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_DURABILITY_SERVICE_HISTORY_DEPTH); @@ -129,10 +126,6 @@ package user_config is constant ENDPOINT_AUTOPURGE_NOWRITER_SAMPLES_DELAY : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_AUTOPURGE_NOWRITER_SAMPLES_DELAY); constant ENDPOINT_AUTOPURGE_DISPOSED_SAMPLES_DELAY : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_AUTOPURGE_DISPOSED_SAMPLES_DELAY); - -- TESTING PARAMETERS - constant TEST_STRING : string := "TEST_CONFIG_2"; - -- Set to TRUE for Simulation Testing (Extra Code generated) constant SIMULATION_FLAG : boolean := TRUE; - end package; \ No newline at end of file diff --git a/src/Tests/test_config3.vhd b/src/Tests/Level_2/L2_Testbench_Lib3_config.vhd similarity index 91% rename from src/Tests/test_config3.vhd rename to src/Tests/Level_2/L2_Testbench_Lib3_config.vhd index a8736e5..061a0af 100644 --- a/src/Tests/test_config3.vhd +++ b/src/Tests/Level_2/L2_Testbench_Lib3_config.vhd @@ -7,10 +7,16 @@ use work.rtps_package.all; package user_config is --*****USER CONFIG***** - -- NOTE: All strings have to be padded to 256 characters - -- Unicast IPv4 Address used by all RTPS Entities [Default 192.168.0.82] + -- Period of system clock + constant CLOCK_PERIOD : time := 50 ns; + -- Maximum number of supported remote Participants (Affects generated Memory Size) + constant MAX_REMOTE_PARTICIPANTS : natural := 50; + -- Maximum number of supported remote Endpoints (Affects generated Memory Size) + constant MAX_REMOTE_ENDPOINTS : natural := 50; + + -- Unicast IPv4 Address used by all RTPS Entities [Default 192.168.0.130] constant DEFAULT_IPv4_ADDRESS : std_logic_vector(IPv4_ADDRESS_WIDTH-1 downto 0) := x"C0A80082"; -- Number of RTPS Writer Endpoints constant NUM_WRITERS : natural := 0; @@ -41,23 +47,15 @@ package user_config is --***RTPS ENDPOINTS*** -- Array denoting if Endpoints use Keyed Topics - constant ENDPOINT_WITH_KEY : USER_BOOLEAN_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := ( - 0 => TRUE - ); + constant ENDPOINT_WITH_KEY : USER_BOOLEAN_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => TRUE); -- Array denoting which mode the Endpoints are operating with - constant ENDPOINT_PUSH_MODE : USER_BOOLEAN_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := ( - 0 => TRUE - ); + constant ENDPOINT_PUSH_MODE : USER_BOOLEAN_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => TRUE); -- Array mapping Topic Names to Endpoints - constant ENDPOINT_TOPIC_STRING : USER_STRING_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := ( - 0 => "Topic1" & (7 to 256 => NUL) - ); + constant ENDPOINT_TOPIC_STRING : USER_STRING_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => "Topic1" & (7 to 256 => NUL)); -- Array mapping Type Names to Endpoints - constant ENDPOINT_TYPE_STRING : USER_STRING_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := ( - 0 => "Type1" & (6 to 256 => NUL) - ); + constant ENDPOINT_TYPE_STRING : USER_STRING_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => "Type1" & (6 to 256 => NUL)); -- *TIMING CHARACTERISTICS* -- Timing Characteristics for Participant constant PARTICIPANT_ANNOUNCEMENT_PERIOD : DURATION_TYPE := gen_duration(0,50000); -- 50k ns @@ -81,6 +79,7 @@ package user_config is --***ENDPOINT DDS QOS*** -- Array mapping DURABILITY QoS to Endpoints constant ENDPOINT_DURABILITY_QOS : USER_ENUMERATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => TRANSIENT_LOCAL_DURABILITY_QOS); + -- Array mapping DURABILITY SERVICE QoS to Endpoints constant ENDPOINT_DURABILITY_SERVICE_CLEANUP_DELAY : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_DURABILITY_SERVICE_CLEANUP_DELAY); constant ENDPOINT_DURABILITY_SERVICE_HISTORY : USER_LONG_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_DURABILITY_SERVICE_HISTORY); constant ENDPOINT_DURABILITY_SERVICE_HISTORY_DEPTH : USER_LONG_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_DURABILITY_SERVICE_HISTORY_DEPTH); @@ -129,10 +128,6 @@ package user_config is constant ENDPOINT_AUTOPURGE_NOWRITER_SAMPLES_DELAY : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_AUTOPURGE_NOWRITER_SAMPLES_DELAY); constant ENDPOINT_AUTOPURGE_DISPOSED_SAMPLES_DELAY : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_AUTOPURGE_DISPOSED_SAMPLES_DELAY); - -- TESTING PARAMETERS - constant TEST_STRING : string := "TEST_CONFIG_2"; - -- Set to TRUE for Simulation Testing (Extra Code generated) constant SIMULATION_FLAG : boolean := TRUE; - end package; \ No newline at end of file diff --git a/src/Tests/test_config1.vhd b/src/Tests/Testbench_Lib1_config.vhd similarity index 93% rename from src/Tests/test_config1.vhd rename to src/Tests/Testbench_Lib1_config.vhd index 066f074..93aaddb 100644 --- a/src/Tests/test_config1.vhd +++ b/src/Tests/Testbench_Lib1_config.vhd @@ -7,10 +7,16 @@ use work.rtps_package.all; package user_config is --*****USER CONFIG***** - -- NOTE: All strings have to be padded to 256 characters - -- Unicast IPv4 Address used by all RTPS Entities [Default 192.168.0.80] + -- Period of system clock + constant CLOCK_PERIOD : time := 50 ns; + -- Maximum number of supported remote Participants (Affects generated Memory Size) + constant MAX_REMOTE_PARTICIPANTS : natural := 50; + -- Maximum number of supported remote Endpoints (Affects generated Memory Size) + constant MAX_REMOTE_ENDPOINTS : natural := 50; + + -- Unicast IPv4 Address used by all RTPS Entities [Default 192.168.0.128] constant DEFAULT_IPv4_ADDRESS : std_logic_vector(IPv4_ADDRESS_WIDTH-1 downto 0) := x"C0A80080"; -- Number of RTPS Writer Endpoints constant NUM_WRITERS : natural := 8; @@ -33,7 +39,7 @@ package user_config is -- D3 Value of Default Port Generation (see DDSI-RTPS 2.3 Section 9.6.1) constant PORT_CONFIG_D3 : natural := 11; -- MAC Address of underlying network stack (Used to generate GUIDs) - constant MAC_ADDRESS : std_logic_vector(47 downto 0) := x"97917E0BA8CF"; + constant MAC_ADDRESS : std_logic_vector(47 downto 0) := x"17E97CEF2F64"; -- Domain ID constant USER_DOMAIN_ID : natural := 1; -- Domain TAG @@ -41,19 +47,17 @@ package user_config is --***RTPS ENDPOINTS*** -- Array denoting if Endpoints use Keyed Topics - constant ENDPOINT_WITH_KEY : USER_BOOLEAN_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => FALSE); - + constant ENDPOINT_WITH_KEY : USER_BOOLEAN_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => FALSE); -- Array denoting which mode the Endpoints are operating with - constant ENDPOINT_PUSH_MODE : USER_BOOLEAN_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => FALSE); - + constant ENDPOINT_PUSH_MODE : USER_BOOLEAN_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => FALSE); -- Array mapping Topic Names to Endpoints - constant ENDPOINT_TOPIC_STRING : USER_STRING_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := ( + constant ENDPOINT_TOPIC_STRING : USER_STRING_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := ( 2 => "TOPIC_2" & (8 to 256 => NUL), NUM_READERS+2 => "TOPIC_2" & (8 to 256 => NUL), others => "TOPIC_1" & (8 to 256 => NUL) ); -- Array mapping Type Names to Endpoints - constant ENDPOINT_TYPE_STRING : USER_STRING_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := ( + constant ENDPOINT_TYPE_STRING : USER_STRING_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := ( 1 => "TYPE_2" & (7 to 256 => NUL), 2 => "TYPE_2" & (7 to 256 => NUL), NUM_READERS+1 => "TYPE_2" & (7 to 256 => NUL), @@ -87,6 +91,7 @@ package user_config is NUM_READERS+4 => TRANSIENT_LOCAL_DURABILITY_QOS, others => DEFAULT_DURABILITY_QOS ); + -- Array mapping DURABILITY SERVICE QoS to Endpoints constant ENDPOINT_DURABILITY_SERVICE_CLEANUP_DELAY : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := ( NUM_READERS+7 => gen_duration(86400,0), others => DEFAULT_DURABILITY_SERVICE_CLEANUP_DELAY @@ -216,10 +221,9 @@ package user_config is constant ENDPOINT_AUTOPURGE_NOWRITER_SAMPLES_DELAY : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_AUTOPURGE_NOWRITER_SAMPLES_DELAY); constant ENDPOINT_AUTOPURGE_DISPOSED_SAMPLES_DELAY : USER_DURATION_ARRAY_TYPE(0 to NUM_ENDPOINTS-1) := (others => DEFAULT_AUTOPURGE_DISPOSED_SAMPLES_DELAY); - -- TESTING PARAMETERS - constant TEST_STRING : string := "TEST_CONFIG_1"; - -- Set to TRUE for Simulation Testing (Extra Code generated) constant SIMULATION_FLAG : boolean := TRUE; + -- TESTING PARAMETERS + constant TEST_STRING : string := "TEST_CONFIG_1"; end package; \ No newline at end of file diff --git a/src/Tests/testbench.pro b/src/Tests/testbench.pro index 6fbc637..5aa296d 100644 --- a/src/Tests/testbench.pro +++ b/src/Tests/testbench.pro @@ -4,7 +4,7 @@ include ../OSVVM/osvvm.pro library Testbench_Lib2 analyze ../math_pkg.vhd analyze ../rtps_package.vhd -analyze test_config2.vhd +analyze Level_2/L2_Testbench_Lib2_config.vhd analyze ../rtps_config_package.vhd analyze ../rtps_test_package.vhd analyze ../single_port_ram.vhd @@ -34,7 +34,7 @@ analyze Type1_config.vhd library Testbench_Lib3 analyze ../math_pkg.vhd analyze ../rtps_package.vhd -analyze test_config3.vhd +analyze Level_2/L2_Testbench_Lib3_config.vhd analyze ../rtps_config_package.vhd analyze ../rtps_test_package.vhd analyze ../single_port_ram.vhd @@ -66,7 +66,7 @@ analyze Type1_config.vhd library Testbench_Lib1 analyze ../math_pkg.vhd analyze ../rtps_package.vhd -analyze test_config1.vhd +analyze Testbench_Lib1_config.vhd analyze ../rtps_config_package.vhd analyze ../rtps_test_package.vhd analyze ../single_port_ram.vhd diff --git a/src/dds_reader.vhd b/src/dds_reader.vhd index 24a4f80..65c556b 100644 --- a/src/dds_reader.vhd +++ b/src/dds_reader.vhd @@ -58,8 +58,8 @@ entity dds_reader is get_data_dds : in std_logic; done_dds : out std_logic; return_code_dds : out std_logic_vector(RETURN_CODE_WIDTH-1 downto 0); - ready_out_dds : in std_logic; valid_out_dds : out std_logic; + ready_out_dds : in std_logic; data_out_dds : out std_logic_vector(WORD_WIDTH-1 downto 0); last_word_out_dds : out std_logic; -- Sample Info diff --git a/src/dds_writer.vhd b/src/dds_writer.vhd index 2c7e7bb..e8ac5b7 100644 --- a/src/dds_writer.vhd +++ b/src/dds_writer.vhd @@ -60,12 +60,12 @@ entity dds_writer is done_dds : out std_logic; return_code_dds : out std_logic_vector(RETURN_CODE_WIDTH-1 downto 0); instance_handle_out_dds : out INSTANCE_HANDLE_TYPE; - ready_in_dds : out std_logic; valid_in_dds : in std_logic; + ready_in_dds : out std_logic; data_in_dds : in std_logic_vector(WORD_WIDTH-1 downto 0); last_word_in_dds : in std_logic; - ready_out_dds : in std_logic; valid_out_dds : out std_logic; + ready_out_dds : in std_logic; data_out_dds : out std_logic_vector(WORD_WIDTH-1 downto 0); last_word_out_dds : out std_logic; -- Communication Status diff --git a/src/rtps_config_package.vhd b/src/rtps_config_package.vhd index 4171807..9cc2299 100644 --- a/src/rtps_config_package.vhd +++ b/src/rtps_config_package.vhd @@ -126,6 +126,8 @@ 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 CLOCK_DURATION : DURATION_TYPE := gen_duration(0, CLOCK_PERIOD / 1 ns); + -- 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; diff --git a/src/rtps_handler.vhd b/src/rtps_handler.vhd index 7ff0481..9a0716a 100644 --- a/src/rtps_handler.vhd +++ b/src/rtps_handler.vhd @@ -19,15 +19,15 @@ entity rtps_handler is empty : in std_logic; rd : out std_logic; data_in : in std_logic_vector(WORD_WIDTH-1 downto 0); - -- TO BUILTIN ENDPOINT + -- TO BUILTIN ENDPOINT full_be : in std_logic; wr_be : out std_logic; data_out_be : out std_logic_vector(WORD_WIDTH-1 downto 0); last_word_out_be : out std_logic; -- TO USER ENDPOINTS - data_out_ue : out std_logic_vector(WORD_WIDTH-1 downto 0); -- one-to-many (Multicast) Connection full_ue : in std_logic_vector(0 to NUM_ENDPOINTS-1); wr_ue : out std_logic_vector(0 to NUM_ENDPOINTS-1); + data_out_ue : out std_logic_vector(WORD_WIDTH-1 downto 0); -- one-to-many (Multicast) Connection last_word_out_ue : out std_logic -- one-to-many (Multicast) Connection ); end entity; diff --git a/src/rtps_out.vhd b/src/rtps_out.vhd index 34774fb..9f2028f 100644 --- a/src/rtps_out.vhd +++ b/src/rtps_out.vhd @@ -19,13 +19,13 @@ entity rtps_out is clk : in std_logic; reset : in std_logic; -- INPUT - full : in std_logic; - wr : out std_logic; + empty : in std_logic_vector(0 to NUM_ENDPOINTS); + rd : out std_logic_vector(0 to NUM_ENDPOINTS); data_in : in RTPS_OUT_DATA_TYPE; last_word_in: in std_logic_vector(0 to NUM_ENDPOINTS); -- OUTPUT - empty : in std_logic_vector(0 to NUM_ENDPOINTS); - rd : out std_logic_vector(0 to NUM_ENDPOINTS); + full : in std_logic; + wr : out std_logic; data_out : out std_logic_vector(WORD_WIDTH-1 downto 0) ); end entity; diff --git a/src/rtps_reader.vhd b/src/rtps_reader.vhd index 453377d..a1e9532 100644 --- a/src/rtps_reader.vhd +++ b/src/rtps_reader.vhd @@ -53,9 +53,9 @@ entity rtps_reader is ack_hc : in std_logic; done_hc : in std_logic; ret_hc : in HISTORY_CACHE_RESPONSE_TYPE; - data_out_hc : out std_logic_vector(WORD_WIDTH-1 downto 0); valid_out_hc : out std_logic; ready_out_hc : in std_logic; + data_out_hc : out std_logic_vector(WORD_WIDTH-1 downto 0); last_word_out_hc : out std_logic ); end entity; diff --git a/src/rtps_writer.vhd b/src/rtps_writer.vhd index 181c371..4014500 100644 --- a/src/rtps_writer.vhd +++ b/src/rtps_writer.vhd @@ -40,7 +40,7 @@ entity rtps_writer is 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 RTPS BUILTIN ENDPOINT (META TRAFFIC) + -- TO/FROM RTPS BUILTIN ENDPOINT (META TRAFFIC) empty_meta : in std_logic; rd_meta : out std_logic; data_in_meta : in std_logic_vector(WORD_WIDTH-1 downto 0); @@ -62,9 +62,9 @@ entity rtps_writer is done_hc : in std_logic; ret_hc : in HISTORY_CACHE_RESPONSE_TYPE; get_data_hc : out std_logic; - data_in_hc : in std_logic_vector(WORD_WIDTH-1 downto 0); valid_in_hc : in std_logic; ready_in_hc : out std_logic; + data_in_hc : in std_logic_vector(WORD_WIDTH-1 downto 0); last_word_in_hc : in std_logic; cc_instance_handle : in INSTANCE_HANDLE_TYPE; cc_kind : in CACHE_CHANGE_KIND_TYPE;