From e87d84ba24760b6832c346586b54ec9ab8c691e5 Mon Sep 17 00:00:00 2001 From: Greek Date: Thu, 18 Nov 2021 16:44:42 +0100 Subject: [PATCH] Modify ports of rtps_builtin_endpoint according to port naming convention The ports to rtps_out from the rtps_reader and rtps_writer entities were also modified to apply a uniform naming. --- src/FWFT_FIFO.vhd | 4 +- .../L0_rtps_builtin_endpoint_test1.vhd | 53 +- .../L0_rtps_builtin_endpoint_test2.vhd | 53 +- .../L0_rtps_builtin_endpoint_test3.vhd | 53 +- .../L0_rtps_builtin_endpoint_test4.vhd | 53 +- .../L0_rtps_builtin_endpoint_test5.vhd | 53 +- .../L0_rtps_builtin_endpoint_test6.vhd | 53 +- .../Level_0/L0_rtps_reader_test1_vbk.vhd | 8 +- .../Level_0/L0_rtps_reader_test1_vrk.vhd | 8 +- .../Level_0/L0_rtps_reader_test2_tbk.vhd | 8 +- .../Level_0/L0_rtps_reader_test2_trk.vhd | 8 +- .../Level_0/L0_rtps_reader_test2_vbk.vhd | 8 +- .../Level_0/L0_rtps_reader_test2_vrk.vhd | 8 +- .../Level_0/L0_rtps_reader_test2_vrn.vhd | 8 +- src/Tests/Level_0/L0_rtps_reader_test3_a.vhd | 8 +- src/Tests/Level_0/L0_rtps_reader_test3_m.vhd | 8 +- .../Level_0/L0_rtps_writer_test1_vbkdp.vhd | 8 +- .../Level_0/L0_rtps_writer_test1_vrkdp.vhd | 8 +- .../Level_0/L0_rtps_writer_test2_vrkdp.vhd | 8 +- .../L1_rtps_builtin_endpoint_test1.vhd | 35 +- .../Level_1/L1_rtps_reader_test1_trk.vhd | 8 +- .../Level_1/L1_rtps_reader_test1_vrk.vhd | 8 +- .../Level_1/L1_rtps_writer_test1_tbkdp.vhd | 8 +- .../Level_1/L1_rtps_writer_test1_trkdn.vhd | 8 +- .../Level_1/L1_rtps_writer_test1_trkdp.vhd | 8 +- .../Level_1/L1_rtps_writer_test1_vbkdp.vhd | 8 +- .../Level_1/L1_rtps_writer_test1_vrkdn.vhd | 8 +- .../Level_1/L1_rtps_writer_test1_vrkdp.vhd | 8 +- .../Level_1/L1_rtps_writer_test1_vrksp.vhd | 8 +- .../Level_1/L1_rtps_writer_test1_vrndp.vhd | 8 +- .../Level_1/L1_rtps_writer_test2_vrkdn.vhd | 8 +- src/Tests/Level_2/L2_Testbench_Lib2.vhd | 42 +- src/Tests/Level_2/L2_Testbench_Lib3.vhd | 42 +- src/Tests/Level_2/L2_Type1_test1.vhd | 4 +- src/key_hash_generator.vhd | 7 +- src/key_holder.vhd | 7 +- src/mem_ctrl.vhd | 2 + src/rtps_builtin_endpoint.vhd | 536 +++++++++--------- src/rtps_out.vhd | 13 +- src/rtps_reader.vhd | 62 +- src/rtps_writer.vhd | 194 +++---- 41 files changed, 764 insertions(+), 686 deletions(-) diff --git a/src/FWFT_FIFO.vhd b/src/FWFT_FIFO.vhd index aaee200..781bf96 100644 --- a/src/FWFT_FIFO.vhd +++ b/src/FWFT_FIFO.vhd @@ -9,8 +9,10 @@ entity FWFT_FIFO is ); port ( - reset : in std_logic; + -- SYSTEM clk : in std_logic; + reset : in std_logic; + data_in : in std_logic_vector(DATA_WIDTH-1 downto 0); write : in std_logic; read : in std_logic; diff --git a/src/Tests/Level_0/L0_rtps_builtin_endpoint_test1.vhd b/src/Tests/Level_0/L0_rtps_builtin_endpoint_test1.vhd index a07b317..b0b7f26 100644 --- a/src/Tests/Level_0/L0_rtps_builtin_endpoint_test1.vhd +++ b/src/Tests/Level_0/L0_rtps_builtin_endpoint_test1.vhd @@ -35,10 +35,10 @@ architecture testbench of L0_rtps_builtin_endpoint_test1 is type TEST_RAM_TYPE is array (0 to (MAX_REMOTE_PARTICIPANTS*PARTICIPANT_FRAME_SIZE)-1) of std_logic_vector(WORD_WIDTH-1 downto 0); -- *SIGNAL DECLARATION* - signal clk, in_empty, rd_sig, last_word_in, last_word_out: std_logic := '0'; + signal clk, in_empty, rd_sig, last_word_in, last_word_out_ue: std_logic := '0'; signal reset : std_logic := '1'; --TODO: Do that in all testbenches - signal endpoint_wr, endpoint_full : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0'); - signal data_in, data_out : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0'); + signal wr_ue, full_ue : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0'); + signal data_in, data_out_ue : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0'); signal stim_stage : TEST_STAGE_TYPE := IDLE; shared variable stimulus, reference : TEST_PACKET_TYPE := EMPTY_TEST_PACKET; signal packet_sent : std_logic := '0'; @@ -76,20 +76,27 @@ begin MAX_REMOTE_PARTICIPANTS => MAX_REMOTE_PARTICIPANTS ) port map ( - clk => clk, - reset => reset, - empty => in_empty or packet_sent, - rd => rd_sig, - data_in => data_in, - data_out => data_out, - last_word_in => last_word_in, - time => TIME_ZERO, - endpoint_full => endpoint_full, - endpoint_wr => endpoint_wr, - rtps_wr => open, - rtps_full => '0', - last_word_out => last_word_out, - alive => (others => '0') + -- SYSTEM + clk => clk, + reset => reset, + time => TIME_ZERO, + -- FROM RTPS HANDLER + empty => in_empty or packet_sent, + rd => rd_sig, + data_in => data_in, + last_word_in => last_word_in, + -- FROM USER ENDPOINT + alive => (others => '0'), + -- TO USER ENDPOINT + full_ue => full_ue, + wr_ue => wr_ue, + data_out_ue => data_out_ue, + last_word_out_ue => last_word_out_ue, + -- RTPS OUTPUT + full_ro => '0', + wr_ro => open, + data_out_ro => open, + last_word_out_ro => open ); stimulus_prc : process @@ -595,10 +602,10 @@ begin endpoint_full_prc : process begin - endpoint_full <= (others => '0'); - wait until (or endpoint_wr) = '1'; + full_ue <= (others => '0'); + wait until (or wr_ue) = '1'; wait until rising_edge(clk); - endpoint_full <= (others => '1'); + full_ue <= (others => '1'); wait until rising_edge(clk); end process; @@ -606,7 +613,7 @@ begin begin if rising_edge(clk) then alertif(in_empty = '1' and rd_sig = '1', "Input FIFO read signal high while empty signal high", ERROR); - alertif(endpoint_full /= (0 to NUM_ENDPOINTS-1 => '0') and (endpoint_wr /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR); + alertif(full_ue /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR); end if; end process; @@ -645,8 +652,8 @@ begin output_check_prc : process(all) begin if rising_edge(clk) then - if (endpoint_wr /= (0 to NUM_ENDPOINTS-1 => '0')) then - SB_out.Check(endpoint_wr & last_word_out & data_out); + if (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')) then + SB_out.Check(wr_ue & last_word_out_ue & data_out_ue); end if; if (stim_done = '1' and SB_out.empty) then check_done <= '1'; diff --git a/src/Tests/Level_0/L0_rtps_builtin_endpoint_test2.vhd b/src/Tests/Level_0/L0_rtps_builtin_endpoint_test2.vhd index 4cd4335..a73f5da 100644 --- a/src/Tests/Level_0/L0_rtps_builtin_endpoint_test2.vhd +++ b/src/Tests/Level_0/L0_rtps_builtin_endpoint_test2.vhd @@ -107,10 +107,10 @@ architecture testbench of L0_rtps_builtin_endpoint_test2 is type MATCH_MATRIX_TYPE is array (0 to NUM_WRITERS-1) of std_logic_vector(0 to NUM_READERS-1); -- *SIGNAL DECLARATION* - signal clk, in_empty, rd_sig, last_word_in, last_word_out: std_logic := '0'; + signal clk, in_empty, rd_sig, last_word_in, last_word_out_ue: std_logic := '0'; signal reset : std_logic := '1'; - signal endpoint_wr, endpoint_full : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0'); - signal data_in, data_out : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0'); + signal wr_ue, full_ue : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0'); + signal data_in, data_out_ue : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0'); signal stim_stage : TEST_STAGE_TYPE := IDLE; shared variable stimulus, reference : TEST_PACKET_TYPE := EMPTY_TEST_PACKET; signal packet_sent : std_logic := '0'; @@ -149,20 +149,27 @@ begin MAX_REMOTE_PARTICIPANTS => 3 ) port map ( - clk => clk, - reset => reset, - empty => in_empty or packet_sent, - rd => rd_sig, - data_in => data_in, - data_out => data_out, - last_word_in => last_word_in, - time => TIME_ZERO, - endpoint_full => endpoint_full, - endpoint_wr => endpoint_wr, - rtps_wr => open, - rtps_full => '0', - last_word_out => last_word_out, - alive => (others => '0') + -- SYSTEM + clk => clk, + reset => reset, + time => TIME_ZERO, + -- FROM RTPS HANDLER + empty => in_empty or packet_sent, + rd => rd_sig, + data_in => data_in, + last_word_in => last_word_in, + -- FROM USER ENDPOINT + alive => (others => '0'), + -- TO USER ENDPOINT + full_ue => full_ue, + wr_ue => wr_ue, + data_out_ue => data_out_ue, + last_word_out_ue => last_word_out_ue, + -- RTPS OUTPUT + full_ro => '0', + wr_ro => open, + data_out_ro => open, + last_word_out_ro => open ); stimulus_prc : process @@ -897,10 +904,10 @@ begin endpoint_full_prc : process begin - endpoint_full <= (others => '0'); - wait until (or endpoint_wr) = '1'; + full_ue <= (others => '0'); + wait until (or wr_ue) = '1'; wait until rising_edge(clk); - endpoint_full <= (others => '1'); + full_ue <= (others => '1'); wait until rising_edge(clk); end process; @@ -908,7 +915,7 @@ begin begin if rising_edge(clk) then alertif(in_empty = '1' and rd_sig = '1', "Input FIFO read signal high while empty signal high", ERROR); - alertif(endpoint_full /= (0 to NUM_ENDPOINTS-1 => '0') and (endpoint_wr /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR); + alertif(full_ue /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR); end if; end process; @@ -948,8 +955,8 @@ begin begin check_done <= '0'; if rising_edge(clk) then - if (endpoint_wr /= (0 to NUM_ENDPOINTS-1 => '0')) then - SB.Check(endpoint_wr & last_word_out & data_out); + if (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')) then + SB.Check(wr_ue & last_word_out_ue & data_out_ue); end if; if (stim_done = '1' and SB.empty) then check_done <= '1'; diff --git a/src/Tests/Level_0/L0_rtps_builtin_endpoint_test3.vhd b/src/Tests/Level_0/L0_rtps_builtin_endpoint_test3.vhd index 3d6a69b..bf640be 100644 --- a/src/Tests/Level_0/L0_rtps_builtin_endpoint_test3.vhd +++ b/src/Tests/Level_0/L0_rtps_builtin_endpoint_test3.vhd @@ -56,10 +56,10 @@ architecture testbench of L0_rtps_builtin_endpoint_test3 is type TEST_STAGE_TYPE is (IDLE, BUSY); -- *SIGNAL DECLARATION* - signal clk, in_empty, rd_sig, last_word_in, last_word_out: std_logic := '0'; + signal clk, in_empty, rd_sig, last_word_in, last_word_out_ue: std_logic := '0'; signal reset : std_logic := '1'; - signal endpoint_wr, endpoint_full : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0'); - signal data_in, data_out : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0'); + signal wr_ue, full_ue : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0'); + signal data_in, data_out_ue : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0'); signal stim_stage : TEST_STAGE_TYPE := IDLE; shared variable stimulus, reference : TEST_PACKET_TYPE := EMPTY_TEST_PACKET; signal packet_sent : std_logic := '0'; @@ -97,20 +97,27 @@ begin MAX_REMOTE_PARTICIPANTS => MAX_REMOTE_PARTICIPANTS ) port map ( - clk => clk, - reset => reset, - empty => in_empty or packet_sent, - rd => rd_sig, - data_in => data_in, - data_out => data_out, - last_word_in => last_word_in, - time => TIME_ZERO, - endpoint_full => endpoint_full, - endpoint_wr => endpoint_wr, - rtps_wr => open, - rtps_full => '0', - last_word_out => last_word_out, - alive => (others => '0') + -- SYSTEM + clk => clk, + reset => reset, + time => TIME_ZERO, + -- FROM RTPS HANDLER + empty => in_empty or packet_sent, + rd => rd_sig, + data_in => data_in, + last_word_in => last_word_in, + -- FROM USER ENDPOINT + alive => (others => '0'), + -- TO USER ENDPOINT + full_ue => full_ue, + wr_ue => wr_ue, + data_out_ue => data_out_ue, + last_word_out_ue => last_word_out_ue, + -- RTPS OUTPUT + full_ro => '0', + wr_ro => open, + data_out_ro => open, + last_word_out_ro => open ); stimulus_prc : process @@ -1244,10 +1251,10 @@ begin endpoint_full_prc : process begin - endpoint_full <= (others => '0'); - wait until (or endpoint_wr) = '1'; + full_ue <= (others => '0'); + wait until (or wr_ue) = '1'; wait until rising_edge(clk); - endpoint_full <= (others => '1'); + full_ue <= (others => '1'); wait until rising_edge(clk); end process; @@ -1255,7 +1262,7 @@ begin begin if rising_edge(clk) then alertif(in_empty = '1' and rd_sig = '1', "Input FIFO read signal high while empty signal high", ERROR); - alertif(endpoint_full /= (0 to NUM_ENDPOINTS-1 => '0') and (endpoint_wr /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR); + alertif(full_ue /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR); end if; end process; @@ -1294,8 +1301,8 @@ begin output_check_prc : process(all) begin if rising_edge(clk) then - if (endpoint_wr /= (0 to NUM_ENDPOINTS-1 => '0')) then - SB_out.Check(endpoint_wr & last_word_out & data_out); + if (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')) then + SB_out.Check(wr_ue & last_word_out_ue & data_out_ue); end if; if (stim_done = '1' and SB_out.empty) then check_done <= '1'; diff --git a/src/Tests/Level_0/L0_rtps_builtin_endpoint_test4.vhd b/src/Tests/Level_0/L0_rtps_builtin_endpoint_test4.vhd index be8d716..360b097 100644 --- a/src/Tests/Level_0/L0_rtps_builtin_endpoint_test4.vhd +++ b/src/Tests/Level_0/L0_rtps_builtin_endpoint_test4.vhd @@ -25,10 +25,10 @@ architecture testbench of L0_rtps_builtin_endpoint_test4 is type TEST_RAM_TYPE is array (0 to (MAX_REMOTE_PARTICIPANTS*PARTICIPANT_FRAME_SIZE)-1) of std_logic_vector(WORD_WIDTH-1 downto 0); -- *SIGNAL DECLARATION* - signal clk, in_empty, rd_sig, last_word_in, last_word_out: std_logic := '0'; + signal clk, in_empty, rd_sig, last_word_in, last_word_out_ue: std_logic := '0'; signal reset : std_logic := '1'; - signal endpoint_wr, endpoint_full : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0'); - signal data_in, data_out : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0'); + signal wr_ue, full_ue : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0'); + signal data_in, data_out_ue : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0'); signal stim_stage : TEST_STAGE_TYPE := IDLE; shared variable stimulus, reference : TEST_PACKET_TYPE := EMPTY_TEST_PACKET; signal packet_sent : std_logic := '0'; @@ -74,20 +74,27 @@ begin MAX_REMOTE_PARTICIPANTS => MAX_REMOTE_PARTICIPANTS ) port map ( - clk => clk, - reset => reset, - empty => in_empty or packet_sent, - rd => rd_sig, - data_in => data_in, - data_out => data_out, - last_word_in => last_word_in, - time => TIME_ZERO, - endpoint_full => endpoint_full, - endpoint_wr => endpoint_wr, - rtps_wr => open, - rtps_full => '0', - last_word_out => last_word_out, - alive => (others => '0') + -- SYSTEM + clk => clk, + reset => reset, + time => TIME_ZERO, + -- FROM RTPS HANDLER + empty => in_empty or packet_sent, + rd => rd_sig, + data_in => data_in, + last_word_in => last_word_in, + -- FROM USER ENDPOINT + alive => (others => '0'), + -- TO USER ENDPOINT + full_ue => full_ue, + wr_ue => wr_ue, + data_out_ue => data_out_ue, + last_word_out_ue => last_word_out_ue, + -- RTPS OUTPUT + full_ro => '0', + wr_ro => open, + data_out_ro => open, + last_word_out_ro => open ); stimulus_prc : process @@ -1765,10 +1772,10 @@ begin endpoint_full_prc : process begin - endpoint_full <= (others => '0'); - wait until (or endpoint_wr) = '1'; + full_ue <= (others => '0'); + wait until (or wr_ue) = '1'; wait until rising_edge(clk); - endpoint_full <= (others => '1'); + full_ue <= (others => '1'); wait until rising_edge(clk); end process; @@ -1776,7 +1783,7 @@ begin begin if rising_edge(clk) then alertif(in_empty = '1' and rd_sig = '1', "Input FIFO read signal high while empty signal high", ERROR); - alertif(endpoint_full /= (0 to NUM_ENDPOINTS-1 => '0') and (endpoint_wr /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR); + alertif(full_ue /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR); end if; end process; @@ -1815,8 +1822,8 @@ begin output_check_prc : process(all) begin if rising_edge(clk) then - if (endpoint_wr /= (0 to NUM_ENDPOINTS-1 => '0')) then - SB_out.Check(endpoint_wr & last_word_out & data_out); + if (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')) then + SB_out.Check(wr_ue & last_word_out_ue & data_out_ue); end if; if (stim_done = '1' and SB_out.empty) then check_done <= '1'; diff --git a/src/Tests/Level_0/L0_rtps_builtin_endpoint_test5.vhd b/src/Tests/Level_0/L0_rtps_builtin_endpoint_test5.vhd index 679d4d6..a42d743 100644 --- a/src/Tests/Level_0/L0_rtps_builtin_endpoint_test5.vhd +++ b/src/Tests/Level_0/L0_rtps_builtin_endpoint_test5.vhd @@ -28,10 +28,10 @@ architecture testbench of L0_rtps_builtin_endpoint_test5 is type TEST_RAM_TYPE is array (0 to (MAX_REMOTE_PARTICIPANTS*PARTICIPANT_FRAME_SIZE)-1) of std_logic_vector(WORD_WIDTH-1 downto 0); -- *SIGNAL DECLARATION* - signal clk, in_empty, rd_sig, last_word_in, last_word_out: std_logic := '0'; + signal clk, in_empty, rd_sig, last_word_in, last_word_out_ue: std_logic := '0'; signal reset : std_logic := '1'; - signal endpoint_wr, endpoint_full : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0'); - signal data_in, data_out : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0'); + signal wr_ue, full_ue : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0'); + signal data_in, data_out_ue : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0'); signal stim_stage : TEST_STAGE_TYPE := IDLE; shared variable stimulus, reference : TEST_PACKET_TYPE := EMPTY_TEST_PACKET; signal packet_sent : std_logic := '0'; @@ -70,20 +70,27 @@ begin MAX_REMOTE_PARTICIPANTS => MAX_REMOTE_PARTICIPANTS ) port map ( - clk => clk, - reset => reset, - empty => in_empty or packet_sent, - rd => rd_sig, - data_in => data_in, - data_out => data_out, - last_word_in => last_word_in, - time => test_time, - endpoint_full => endpoint_full, - endpoint_wr => endpoint_wr, - rtps_wr => open, - rtps_full => '0', - last_word_out => last_word_out, - alive => (others => '0') + -- SYSTEM + clk => clk, + reset => reset, + time => test_time, + -- FROM RTPS HANDLER + empty => in_empty or packet_sent, + rd => rd_sig, + data_in => data_in, + last_word_in => last_word_in, + -- FROM USER ENDPOINT + alive => (others => '0'), + -- TO USER ENDPOINT + full_ue => full_ue, + wr_ue => wr_ue, + data_out_ue => data_out_ue, + last_word_out_ue => last_word_out_ue, + -- RTPS OUTPUT + full_ro => '0', + wr_ro => open, + data_out_ro => open, + last_word_out_ro => open ); stimulus_prc : process @@ -301,10 +308,10 @@ begin endpoint_full_prc : process begin - endpoint_full <= (others => '0'); - wait until (or endpoint_wr) = '1'; + full_ue <= (others => '0'); + wait until (or wr_ue) = '1'; wait until rising_edge(clk); - endpoint_full <= (others => '1'); + full_ue <= (others => '1'); wait until rising_edge(clk); end process; @@ -312,7 +319,7 @@ begin begin if rising_edge(clk) then alertif(in_empty = '1' and rd_sig = '1', "Input FIFO read signal high while empty signal high", ERROR); - alertif(endpoint_full /= (0 to NUM_ENDPOINTS-1 => '0') and (endpoint_wr /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR); + alertif(full_ue /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR); end if; end process; @@ -351,8 +358,8 @@ begin output_check_prc : process(all) begin if rising_edge(clk) then - if (endpoint_wr /= (0 to NUM_ENDPOINTS-1 => '0')) then - SB_out.Check(endpoint_wr & last_word_out & data_out); + if (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')) then + SB_out.Check(wr_ue & last_word_out_ue & data_out_ue); end if; if (stim_done = '1' and SB_out.empty) then check_done <= '1'; diff --git a/src/Tests/Level_0/L0_rtps_builtin_endpoint_test6.vhd b/src/Tests/Level_0/L0_rtps_builtin_endpoint_test6.vhd index 866f2e4..afa03f6 100644 --- a/src/Tests/Level_0/L0_rtps_builtin_endpoint_test6.vhd +++ b/src/Tests/Level_0/L0_rtps_builtin_endpoint_test6.vhd @@ -23,10 +23,10 @@ architecture testbench of L0_rtps_builtin_endpoint_test6 is type TEST_STAGE_TYPE is (IDLE, BUSY); -- *SIGNAL DECLARATION* - signal clk, in_empty, rd_sig, last_word_in, last_word_out: std_logic := '0'; + signal clk, in_empty, rd_sig, last_word_in, last_word_out_ue: std_logic := '0'; signal reset : std_logic := '1'; - signal endpoint_wr, endpoint_full : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0'); - signal data_in, data_out : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0'); + signal wr_ue, full_ue : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0'); + signal data_in, data_out_ue : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0'); signal stim_stage : TEST_STAGE_TYPE := IDLE; shared variable stimulus, reference : TEST_PACKET_TYPE := EMPTY_TEST_PACKET; signal packet_sent : std_logic := '0'; @@ -57,20 +57,27 @@ begin MAX_REMOTE_PARTICIPANTS => 2 ) port map ( - clk => clk, - reset => reset, - empty => in_empty or packet_sent, - rd => rd_sig, - data_in => data_in, - data_out => data_out, - last_word_in => last_word_in, - time => TIME_ZERO, - endpoint_full => endpoint_full, - endpoint_wr => endpoint_wr, - rtps_wr => open, - rtps_full => '0', - last_word_out => last_word_out, - alive => (others => '0') + -- SYSTEM + clk => clk, + reset => reset, + time => TIME_ZERO, + -- FROM RTPS HANDLER + empty => in_empty or packet_sent, + rd => rd_sig, + data_in => data_in, + last_word_in => last_word_in, + -- FROM USER ENDPOINT + alive => (others => '0'), + -- TO USER ENDPOINT + full_ue => full_ue, + wr_ue => wr_ue, + data_out_ue => data_out_ue, + last_word_out_ue => last_word_out_ue, + -- RTPS OUTPUT + full_ro => '0', + wr_ro => open, + data_out_ro => open, + last_word_out_ro => open ); stimulus_prc : process @@ -278,10 +285,10 @@ begin endpoint_full_prc : process begin - endpoint_full <= (others => '0'); - wait until (or endpoint_wr) = '1'; + full_ue <= (others => '0'); + wait until (or wr_ue) = '1'; wait until rising_edge(clk); - endpoint_full <= (others => '1'); + full_ue <= (others => '1'); wait until rising_edge(clk); end process; @@ -289,7 +296,7 @@ begin begin if rising_edge(clk) then alertif(in_empty = '1' and rd_sig = '1', "Input FIFO read signal high while empty signal high", ERROR); - alertif(endpoint_full /= (0 to NUM_ENDPOINTS-1 => '0') and (endpoint_wr /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR); + alertif(full_ue /= (0 to NUM_ENDPOINTS-1 => '0') and (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')), "Endpoint FIFO write signal high while full signal high", ERROR); end if; end process; @@ -329,8 +336,8 @@ begin begin check_done <= '0'; if rising_edge(clk) then - if (endpoint_wr /= (0 to NUM_ENDPOINTS-1 => '0')) then - SB_out.Check(endpoint_wr & last_word_out & data_out); + if (wr_ue /= (0 to NUM_ENDPOINTS-1 => '0')) then + SB_out.Check(wr_ue & last_word_out_ue & data_out_ue); end if; if (stim_done = '1' and SB_out.empty) then check_done <= '1'; diff --git a/src/Tests/Level_0/L0_rtps_reader_test1_vbk.vhd b/src/Tests/Level_0/L0_rtps_reader_test1_vbk.vhd index 94df688..692ed4e 100644 --- a/src/Tests/Level_0/L0_rtps_reader_test1_vbk.vhd +++ b/src/Tests/Level_0/L0_rtps_reader_test1_vbk.vhd @@ -98,10 +98,10 @@ begin rd_meta => rd_meta, data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, - wr_rtps => open, - full_rtps => '0', - last_word_out_rtps => open, - data_out_rtps => open, + wr_ro => open, + full_ro => '0', + last_word_out_ro => open, + data_out_ro => open, start_hc => start_hc, opcode_hc => opcode_hc, ack_hc => ack_hc, diff --git a/src/Tests/Level_0/L0_rtps_reader_test1_vrk.vhd b/src/Tests/Level_0/L0_rtps_reader_test1_vrk.vhd index 4539a9f..f2922d3 100644 --- a/src/Tests/Level_0/L0_rtps_reader_test1_vrk.vhd +++ b/src/Tests/Level_0/L0_rtps_reader_test1_vrk.vhd @@ -98,10 +98,10 @@ begin rd_meta => rd_meta, data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, - wr_rtps => open, - full_rtps => '0', - last_word_out_rtps => open, - data_out_rtps => open, + wr_ro => open, + full_ro => '0', + last_word_out_ro => open, + data_out_ro => open, start_hc => start_hc, opcode_hc => opcode_hc, ack_hc => ack_hc, diff --git a/src/Tests/Level_0/L0_rtps_reader_test2_tbk.vhd b/src/Tests/Level_0/L0_rtps_reader_test2_tbk.vhd index c903fdd..947c841 100644 --- a/src/Tests/Level_0/L0_rtps_reader_test2_tbk.vhd +++ b/src/Tests/Level_0/L0_rtps_reader_test2_tbk.vhd @@ -86,10 +86,10 @@ begin rd_meta => rd_meta, data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, - wr_rtps => wr_rtps, - full_rtps => '0', - last_word_out_rtps => open, - data_out_rtps => open, + wr_ro => wr_rtps, + full_ro => '0', + last_word_out_ro => open, + data_out_ro => open, start_hc => start_hc, opcode_hc => opcode_hc, ack_hc => ack_hc, diff --git a/src/Tests/Level_0/L0_rtps_reader_test2_trk.vhd b/src/Tests/Level_0/L0_rtps_reader_test2_trk.vhd index 43c4c07..766c293 100644 --- a/src/Tests/Level_0/L0_rtps_reader_test2_trk.vhd +++ b/src/Tests/Level_0/L0_rtps_reader_test2_trk.vhd @@ -86,10 +86,10 @@ begin rd_meta => rd_meta, data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, - wr_rtps => open, - full_rtps => '0', - last_word_out_rtps => open, - data_out_rtps => open, + wr_ro => open, + full_ro => '0', + last_word_out_ro => open, + data_out_ro => open, start_hc => start_hc, opcode_hc => opcode_hc, ack_hc => ack_hc, diff --git a/src/Tests/Level_0/L0_rtps_reader_test2_vbk.vhd b/src/Tests/Level_0/L0_rtps_reader_test2_vbk.vhd index d56fedb..f4117cc 100644 --- a/src/Tests/Level_0/L0_rtps_reader_test2_vbk.vhd +++ b/src/Tests/Level_0/L0_rtps_reader_test2_vbk.vhd @@ -86,10 +86,10 @@ begin rd_meta => rd_meta, data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, - wr_rtps => wr_rtps, - full_rtps => '0', - last_word_out_rtps => open, - data_out_rtps => open, + wr_ro => wr_rtps, + full_ro => '0', + last_word_out_ro => open, + data_out_ro => open, start_hc => start_hc, opcode_hc => opcode_hc, ack_hc => ack_hc, diff --git a/src/Tests/Level_0/L0_rtps_reader_test2_vrk.vhd b/src/Tests/Level_0/L0_rtps_reader_test2_vrk.vhd index cffb835..88b600a 100644 --- a/src/Tests/Level_0/L0_rtps_reader_test2_vrk.vhd +++ b/src/Tests/Level_0/L0_rtps_reader_test2_vrk.vhd @@ -86,10 +86,10 @@ begin rd_meta => rd_meta, data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, - wr_rtps => open, - full_rtps => '0', - last_word_out_rtps => open, - data_out_rtps => open, + wr_ro => open, + full_ro => '0', + last_word_out_ro => open, + data_out_ro => open, start_hc => start_hc, opcode_hc => opcode_hc, ack_hc => ack_hc, diff --git a/src/Tests/Level_0/L0_rtps_reader_test2_vrn.vhd b/src/Tests/Level_0/L0_rtps_reader_test2_vrn.vhd index ef96ad4..e31944b 100644 --- a/src/Tests/Level_0/L0_rtps_reader_test2_vrn.vhd +++ b/src/Tests/Level_0/L0_rtps_reader_test2_vrn.vhd @@ -86,10 +86,10 @@ begin rd_meta => rd_meta, data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, - wr_rtps => open, - full_rtps => '0', - last_word_out_rtps => open, - data_out_rtps => open, + wr_ro => open, + full_ro => '0', + last_word_out_ro => open, + data_out_ro => open, start_hc => start_hc, opcode_hc => opcode_hc, ack_hc => ack_hc, diff --git a/src/Tests/Level_0/L0_rtps_reader_test3_a.vhd b/src/Tests/Level_0/L0_rtps_reader_test3_a.vhd index d70dd42..0a19eac 100644 --- a/src/Tests/Level_0/L0_rtps_reader_test3_a.vhd +++ b/src/Tests/Level_0/L0_rtps_reader_test3_a.vhd @@ -82,10 +82,10 @@ begin rd_meta => rd_meta, data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, - wr_rtps => open, - full_rtps => '0', - last_word_out_rtps => open, - data_out_rtps => open, + wr_ro => open, + full_ro => '0', + last_word_out_ro => open, + data_out_ro => open, start_hc => start_hc, opcode_hc => opcode_hc, ack_hc => ack_hc, diff --git a/src/Tests/Level_0/L0_rtps_reader_test3_m.vhd b/src/Tests/Level_0/L0_rtps_reader_test3_m.vhd index 684fdaa..45f35fb 100644 --- a/src/Tests/Level_0/L0_rtps_reader_test3_m.vhd +++ b/src/Tests/Level_0/L0_rtps_reader_test3_m.vhd @@ -82,10 +82,10 @@ begin rd_meta => rd_meta, data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, - wr_rtps => open, - full_rtps => '0', - last_word_out_rtps => open, - data_out_rtps => open, + wr_ro => open, + full_ro => '0', + last_word_out_ro => open, + data_out_ro => open, start_hc => start_hc, opcode_hc => opcode_hc, ack_hc => ack_hc, diff --git a/src/Tests/Level_0/L0_rtps_writer_test1_vbkdp.vhd b/src/Tests/Level_0/L0_rtps_writer_test1_vbkdp.vhd index 4900c43..1e33011 100644 --- a/src/Tests/Level_0/L0_rtps_writer_test1_vbkdp.vhd +++ b/src/Tests/Level_0/L0_rtps_writer_test1_vbkdp.vhd @@ -97,10 +97,10 @@ begin data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, alive_sig => open, - wr_rtps => open, - full_rtps => '0', - last_word_out_rtps => open, - data_out_rtps => open, + wr_ro => open, + full_ro => '0', + last_word_out_ro => open, + data_out_ro => open, liveliness_assertion => '0', data_available => '0', start_hc => start_hc, diff --git a/src/Tests/Level_0/L0_rtps_writer_test1_vrkdp.vhd b/src/Tests/Level_0/L0_rtps_writer_test1_vrkdp.vhd index 7b00469..209b211 100644 --- a/src/Tests/Level_0/L0_rtps_writer_test1_vrkdp.vhd +++ b/src/Tests/Level_0/L0_rtps_writer_test1_vrkdp.vhd @@ -97,10 +97,10 @@ begin data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, alive_sig => open, - wr_rtps => open, - full_rtps => '0', - last_word_out_rtps => open, - data_out_rtps => open, + wr_ro => open, + full_ro => '0', + last_word_out_ro => open, + data_out_ro => open, liveliness_assertion => '0', data_available => '0', start_hc => start_hc, diff --git a/src/Tests/Level_0/L0_rtps_writer_test2_vrkdp.vhd b/src/Tests/Level_0/L0_rtps_writer_test2_vrkdp.vhd index edf9f66..3665651 100644 --- a/src/Tests/Level_0/L0_rtps_writer_test2_vrkdp.vhd +++ b/src/Tests/Level_0/L0_rtps_writer_test2_vrkdp.vhd @@ -81,10 +81,10 @@ begin data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, alive_sig => open, - wr_rtps => open, - full_rtps => '0', - last_word_out_rtps => open, - data_out_rtps => open, + wr_ro => open, + full_ro => '0', + last_word_out_ro => open, + data_out_ro => open, liveliness_assertion => '0', data_available => '0', start_hc => start_hc, diff --git a/src/Tests/Level_1/L1_rtps_builtin_endpoint_test1.vhd b/src/Tests/Level_1/L1_rtps_builtin_endpoint_test1.vhd index 7e06c85..1297ef8 100644 --- a/src/Tests/Level_1/L1_rtps_builtin_endpoint_test1.vhd +++ b/src/Tests/Level_1/L1_rtps_builtin_endpoint_test1.vhd @@ -389,20 +389,27 @@ begin MAX_REMOTE_PARTICIPANTS => 1 ) port map ( - clk => clk, - reset => reset, - empty => in_empty or packet_sent, - rd => rd_sig, - data_in => data_in, - data_out => fifo_in(WORD_WIDTH-1 downto 0), - last_word_in => last_word_in, - time => test_time, - endpoint_full => (others => '0'), - endpoint_wr => open, - rtps_wr => fifo_wr, - rtps_full => fifo_full, - last_word_out => fifo_in(WORD_WIDTH), - alive => alive + -- SYSTEM + clk => clk, + reset => reset, + time => test_time, + -- FROM RTPS HANDLER + empty => in_empty or packet_sent, + rd => rd_sig, + data_in => data_in, + last_word_in => last_word_in, + -- FROM USER ENDPOINT + alive => alive, + -- TO USER ENDPOINT + full_ue => (others => '0'), + wr_ue => open, + data_out_ue => open, + last_word_out_ue => open, + -- RTPS OUTPUT + full_ro => fifo_full, + wr_ro => fifo_wr, + data_out_ro => fifo_in(WORD_WIDTH-1 downto 0), + last_word_out_ro => fifo_in(WORD_WIDTH) ); fifo_inst : entity work.FWFT_FIFO(arch) diff --git a/src/Tests/Level_1/L1_rtps_reader_test1_trk.vhd b/src/Tests/Level_1/L1_rtps_reader_test1_trk.vhd index 0b3b350..ae6f63f 100644 --- a/src/Tests/Level_1/L1_rtps_reader_test1_trk.vhd +++ b/src/Tests/Level_1/L1_rtps_reader_test1_trk.vhd @@ -105,10 +105,10 @@ begin rd_meta => rd_meta, data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, - wr_rtps => fifo_wr, - full_rtps => fifo_full, - last_word_out_rtps => fifo_in(WORD_WIDTH), - data_out_rtps => fifo_in(WORD_WIDTH-1 downto 0), + wr_ro => fifo_wr, + full_ro => fifo_full, + last_word_out_ro => fifo_in(WORD_WIDTH), + data_out_ro => fifo_in(WORD_WIDTH-1 downto 0), start_hc => open, opcode_hc => open, ack_hc => '1', diff --git a/src/Tests/Level_1/L1_rtps_reader_test1_vrk.vhd b/src/Tests/Level_1/L1_rtps_reader_test1_vrk.vhd index c191097..4eeb269 100644 --- a/src/Tests/Level_1/L1_rtps_reader_test1_vrk.vhd +++ b/src/Tests/Level_1/L1_rtps_reader_test1_vrk.vhd @@ -106,10 +106,10 @@ begin rd_meta => rd_meta, data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, - wr_rtps => fifo_wr, - full_rtps => fifo_full, - last_word_out_rtps => fifo_in(WORD_WIDTH), - data_out_rtps => fifo_in(WORD_WIDTH-1 downto 0), + wr_ro => fifo_wr, + full_ro => fifo_full, + last_word_out_ro => fifo_in(WORD_WIDTH), + data_out_ro => fifo_in(WORD_WIDTH-1 downto 0), start_hc => open, opcode_hc => open, ack_hc => '1', diff --git a/src/Tests/Level_1/L1_rtps_writer_test1_tbkdp.vhd b/src/Tests/Level_1/L1_rtps_writer_test1_tbkdp.vhd index 2be3cbd..74c09a5 100644 --- a/src/Tests/Level_1/L1_rtps_writer_test1_tbkdp.vhd +++ b/src/Tests/Level_1/L1_rtps_writer_test1_tbkdp.vhd @@ -104,10 +104,10 @@ begin data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, alive_sig => open, - wr_rtps => fifo_wr, - full_rtps => fifo_full, - last_word_out_rtps => fifo_in(WORD_WIDTH), - data_out_rtps => fifo_in(WORD_WIDTH-1 downto 0), + wr_ro => fifo_wr, + full_ro => fifo_full, + last_word_out_ro => fifo_in(WORD_WIDTH), + data_out_ro => fifo_in(WORD_WIDTH-1 downto 0), liveliness_assertion => '0', data_available => data_available, start_hc => start_hc, diff --git a/src/Tests/Level_1/L1_rtps_writer_test1_trkdn.vhd b/src/Tests/Level_1/L1_rtps_writer_test1_trkdn.vhd index be6952a..2cb9ee4 100644 --- a/src/Tests/Level_1/L1_rtps_writer_test1_trkdn.vhd +++ b/src/Tests/Level_1/L1_rtps_writer_test1_trkdn.vhd @@ -104,10 +104,10 @@ begin data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, alive_sig => open, - wr_rtps => fifo_wr, - full_rtps => fifo_full, - last_word_out_rtps => fifo_in(WORD_WIDTH), - data_out_rtps => fifo_in(WORD_WIDTH-1 downto 0), + wr_ro => fifo_wr, + full_ro => fifo_full, + last_word_out_ro => fifo_in(WORD_WIDTH), + data_out_ro => fifo_in(WORD_WIDTH-1 downto 0), liveliness_assertion => '0', data_available => data_available, start_hc => start_hc, diff --git a/src/Tests/Level_1/L1_rtps_writer_test1_trkdp.vhd b/src/Tests/Level_1/L1_rtps_writer_test1_trkdp.vhd index 8471b3a..80364f7 100644 --- a/src/Tests/Level_1/L1_rtps_writer_test1_trkdp.vhd +++ b/src/Tests/Level_1/L1_rtps_writer_test1_trkdp.vhd @@ -104,10 +104,10 @@ begin data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, alive_sig => open, - wr_rtps => fifo_wr, - full_rtps => fifo_full, - last_word_out_rtps => fifo_in(WORD_WIDTH), - data_out_rtps => fifo_in(WORD_WIDTH-1 downto 0), + wr_ro => fifo_wr, + full_ro => fifo_full, + last_word_out_ro => fifo_in(WORD_WIDTH), + data_out_ro => fifo_in(WORD_WIDTH-1 downto 0), liveliness_assertion => '0', data_available => data_available, start_hc => start_hc, diff --git a/src/Tests/Level_1/L1_rtps_writer_test1_vbkdp.vhd b/src/Tests/Level_1/L1_rtps_writer_test1_vbkdp.vhd index d881ad6..e8269ad 100644 --- a/src/Tests/Level_1/L1_rtps_writer_test1_vbkdp.vhd +++ b/src/Tests/Level_1/L1_rtps_writer_test1_vbkdp.vhd @@ -104,10 +104,10 @@ begin data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, alive_sig => open, - wr_rtps => fifo_wr, - full_rtps => fifo_full, - last_word_out_rtps => fifo_in(WORD_WIDTH), - data_out_rtps => fifo_in(WORD_WIDTH-1 downto 0), + wr_ro => fifo_wr, + full_ro => fifo_full, + last_word_out_ro => fifo_in(WORD_WIDTH), + data_out_ro => fifo_in(WORD_WIDTH-1 downto 0), liveliness_assertion => '0', data_available => data_available, start_hc => start_hc, diff --git a/src/Tests/Level_1/L1_rtps_writer_test1_vrkdn.vhd b/src/Tests/Level_1/L1_rtps_writer_test1_vrkdn.vhd index 6e2bcde..1c208a3 100644 --- a/src/Tests/Level_1/L1_rtps_writer_test1_vrkdn.vhd +++ b/src/Tests/Level_1/L1_rtps_writer_test1_vrkdn.vhd @@ -104,10 +104,10 @@ begin data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, alive_sig => open, - wr_rtps => fifo_wr, - full_rtps => fifo_full, - last_word_out_rtps => fifo_in(WORD_WIDTH), - data_out_rtps => fifo_in(WORD_WIDTH-1 downto 0), + wr_ro => fifo_wr, + full_ro => fifo_full, + last_word_out_ro => fifo_in(WORD_WIDTH), + data_out_ro => fifo_in(WORD_WIDTH-1 downto 0), liveliness_assertion => '0', data_available => data_available, start_hc => start_hc, diff --git a/src/Tests/Level_1/L1_rtps_writer_test1_vrkdp.vhd b/src/Tests/Level_1/L1_rtps_writer_test1_vrkdp.vhd index 386bcf1..7172e8b 100644 --- a/src/Tests/Level_1/L1_rtps_writer_test1_vrkdp.vhd +++ b/src/Tests/Level_1/L1_rtps_writer_test1_vrkdp.vhd @@ -104,10 +104,10 @@ begin data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, alive_sig => open, - wr_rtps => fifo_wr, - full_rtps => fifo_full, - last_word_out_rtps => fifo_in(WORD_WIDTH), - data_out_rtps => fifo_in(WORD_WIDTH-1 downto 0), + wr_ro => fifo_wr, + full_ro => fifo_full, + last_word_out_ro => fifo_in(WORD_WIDTH), + data_out_ro => fifo_in(WORD_WIDTH-1 downto 0), liveliness_assertion => '0', data_available => data_available, start_hc => start_hc, diff --git a/src/Tests/Level_1/L1_rtps_writer_test1_vrksp.vhd b/src/Tests/Level_1/L1_rtps_writer_test1_vrksp.vhd index 0c5d82a..f077359 100644 --- a/src/Tests/Level_1/L1_rtps_writer_test1_vrksp.vhd +++ b/src/Tests/Level_1/L1_rtps_writer_test1_vrksp.vhd @@ -104,10 +104,10 @@ begin data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, alive_sig => open, - wr_rtps => fifo_wr, - full_rtps => fifo_full, - last_word_out_rtps => fifo_in(WORD_WIDTH), - data_out_rtps => fifo_in(WORD_WIDTH-1 downto 0), + wr_ro => fifo_wr, + full_ro => fifo_full, + last_word_out_ro => fifo_in(WORD_WIDTH), + data_out_ro => fifo_in(WORD_WIDTH-1 downto 0), liveliness_assertion => '0', data_available => data_available, start_hc => start_hc, diff --git a/src/Tests/Level_1/L1_rtps_writer_test1_vrndp.vhd b/src/Tests/Level_1/L1_rtps_writer_test1_vrndp.vhd index 3488c56..e90d205 100644 --- a/src/Tests/Level_1/L1_rtps_writer_test1_vrndp.vhd +++ b/src/Tests/Level_1/L1_rtps_writer_test1_vrndp.vhd @@ -104,10 +104,10 @@ begin data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, alive_sig => open, - wr_rtps => fifo_wr, - full_rtps => fifo_full, - last_word_out_rtps => fifo_in(WORD_WIDTH), - data_out_rtps => fifo_in(WORD_WIDTH-1 downto 0), + wr_ro => fifo_wr, + full_ro => fifo_full, + last_word_out_ro => fifo_in(WORD_WIDTH), + data_out_ro => fifo_in(WORD_WIDTH-1 downto 0), liveliness_assertion => '0', data_available => data_available, start_hc => start_hc, diff --git a/src/Tests/Level_1/L1_rtps_writer_test2_vrkdn.vhd b/src/Tests/Level_1/L1_rtps_writer_test2_vrkdn.vhd index 37e7984..81af70e 100644 --- a/src/Tests/Level_1/L1_rtps_writer_test2_vrkdn.vhd +++ b/src/Tests/Level_1/L1_rtps_writer_test2_vrkdn.vhd @@ -103,10 +103,10 @@ begin data_in_meta => data_in_meta, last_word_in_meta => last_word_in_meta, alive_sig => open, - wr_rtps => fifo_wr, - full_rtps => fifo_full, - last_word_out_rtps => fifo_in(WORD_WIDTH), - data_out_rtps => fifo_in(WORD_WIDTH-1 downto 0), + wr_ro => fifo_wr, + full_ro => fifo_full, + last_word_out_ro => fifo_in(WORD_WIDTH), + data_out_ro => fifo_in(WORD_WIDTH-1 downto 0), liveliness_assertion => liveliness_assertion, data_available => data_available, start_hc => start_hc, diff --git a/src/Tests/Level_2/L2_Testbench_Lib2.vhd b/src/Tests/Level_2/L2_Testbench_Lib2.vhd index 81578bc..9acafb3 100644 --- a/src/Tests/Level_2/L2_Testbench_Lib2.vhd +++ b/src/Tests/Level_2/L2_Testbench_Lib2.vhd @@ -244,10 +244,10 @@ begin -- TO RTPS_BUILTIN_ENDPOINT (META TRAFFIC) alive_sig => alive_sig_rtps(0), -- RTPS OUTPUT - wr_rtps => wr_rtps_out(0), - full_rtps => full_rtps_out(0), - data_out_rtps => data_in_rtps_out(0)(WORD_WIDTH-1 downto 0), - last_word_out_rtps => data_in_rtps_out(0)(WORD_WIDTH), + wr_ro => wr_rtps_out(0), + full_ro => full_rtps_out(0), + data_out_ro => data_in_rtps_out(0)(WORD_WIDTH-1 downto 0), + last_word_out_ro => data_in_rtps_out(0)(WORD_WIDTH), -- FROM HC liveliness_assertion => liveliness_assertion_dds_rtps, data_available => data_available_dds_rtps, @@ -273,27 +273,29 @@ begin MAX_REMOTE_PARTICIPANTS => 5 ) port map ( - clk => clk, - reset => reset, - time => time, + clk => clk, + reset => reset, + time => time, -- FROM RTPS HANDLER - empty => empty_rh(NUM_ENDPOINTS), - rd => rd_rh(NUM_ENDPOINTS), - data_in => data_out_rh(NUM_ENDPOINTS)(WORD_WIDTH-1 downto 0), - last_word_in => data_out_rh(NUM_ENDPOINTS)(WORD_WIDTH), - -- TO RTPS ENDPOINTS - endpoint_full => full_rtps(0 to NUM_ENDPOINTS-1), - endpoint_wr => wr_rtps(0 to NUM_ENDPOINTS-1), - alive => alive_sig_rtps(0 to NUM_ENDPOINTS-1), + empty => empty_rh(NUM_ENDPOINTS), + rd => rd_rh(NUM_ENDPOINTS), + data_in => data_out_rh(NUM_ENDPOINTS)(WORD_WIDTH-1 downto 0), + last_word_in => data_out_rh(NUM_ENDPOINTS)(WORD_WIDTH), + -- FROM USER ENDPOINTS + alive => alive_sig_rtps(0 to NUM_ENDPOINTS-1), + -- TO USER ENDPOINTS + full_ue => full_rtps(0 to NUM_ENDPOINTS-1), + wr_ue => wr_rtps(0 to NUM_ENDPOINTS-1), + data_out_ue => data_out_rbe, + last_word_out_ue => last_word_out_rbe, -- TO RTPS OUT - rtps_full => full_rtps_out(NUM_ENDPOINTS), - rtps_wr => wr_rtps_out(NUM_ENDPOINTS), - last_word_out => last_word_out_rbe, - data_out => data_out_rbe + full_ro => full_rtps_out(NUM_ENDPOINTS), + wr_ro => wr_rtps_out(NUM_ENDPOINTS), + data_out_ro => data_in_rtps_out(NUM_ENDPOINTS)(WORD_WIDTH-1 downto 0), + last_word_out_ro => data_in_rtps_out(NUM_ENDPOINTS)(WORD_WIDTH) ); data_in_rtps(0 to NUM_ENDPOINTS-1) <= (others => (last_word_out_rbe & data_out_rbe)); - data_in_rtps_out(NUM_ENDPOINTS) <= last_word_out_rbe & data_out_rbe; rtps_handler_w_inst : entity Testbench_Lib2.rtps_handler(arch) port map ( diff --git a/src/Tests/Level_2/L2_Testbench_Lib3.vhd b/src/Tests/Level_2/L2_Testbench_Lib3.vhd index 6cbff3e..e873a49 100644 --- a/src/Tests/Level_2/L2_Testbench_Lib3.vhd +++ b/src/Tests/Level_2/L2_Testbench_Lib3.vhd @@ -305,10 +305,10 @@ begin data_in_meta => data_out_rtps(0)(WORD_WIDTH-1 downto 0), last_word_in_meta => data_out_rtps(0)(WORD_WIDTH), -- RTPS OUTPUT - wr_rtps => wr_rtps_out(0), - full_rtps => full_rtps_out(0), - data_out_rtps => data_in_rtps_out(0)(WORD_WIDTH-1 downto 0), - last_word_out_rtps => data_in_rtps_out(0)(WORD_WIDTH), + wr_ro => wr_rtps_out(0), + full_ro => full_rtps_out(0), + data_out_ro => data_in_rtps_out(0)(WORD_WIDTH-1 downto 0), + last_word_out_ro => data_in_rtps_out(0)(WORD_WIDTH), -- TO HISTORY CACHE start_hc => start_dds_rtps, opcode_hc => opcode_dds_rtps, @@ -326,27 +326,29 @@ begin MAX_REMOTE_PARTICIPANTS => 5 ) port map ( - clk => clk, - reset => reset, - time => time, + clk => clk, + reset => reset, + time => time, -- FROM RTPS HANDLER - empty => empty_rh(NUM_ENDPOINTS), - rd => rd_rh(NUM_ENDPOINTS), - data_in => data_out_rh(NUM_ENDPOINTS)(WORD_WIDTH-1 downto 0), - last_word_in => data_out_rh(NUM_ENDPOINTS)(WORD_WIDTH), - -- TO RTPS ENDPOINTS - endpoint_full => full_rtps(0 to NUM_ENDPOINTS-1), - endpoint_wr => wr_rtps(0 to NUM_ENDPOINTS-1), - alive => alive_sig_rtps(0 to NUM_ENDPOINTS-1), + empty => empty_rh(NUM_ENDPOINTS), + rd => rd_rh(NUM_ENDPOINTS), + data_in => data_out_rh(NUM_ENDPOINTS)(WORD_WIDTH-1 downto 0), + last_word_in => data_out_rh(NUM_ENDPOINTS)(WORD_WIDTH), + -- FROM USER ENDPOINTS + alive => alive_sig_rtps(0 to NUM_ENDPOINTS-1), + -- TO USER ENDPOINTS + full_ue => full_rtps(0 to NUM_ENDPOINTS-1), + wr_ue => wr_rtps(0 to NUM_ENDPOINTS-1), + data_out_ue => data_out_rbe, + last_word_out_ue => last_word_out_rbe, -- TO RTPS OUT - rtps_full => full_rtps_out(NUM_ENDPOINTS), - rtps_wr => wr_rtps_out(NUM_ENDPOINTS), - last_word_out => last_word_out_rbe, - data_out => data_out_rbe + full_ro => full_rtps_out(NUM_ENDPOINTS), + wr_ro => wr_rtps_out(NUM_ENDPOINTS), + data_out_ro => data_in_rtps_out(NUM_ENDPOINTS)(WORD_WIDTH-1 downto 0), + last_word_out_ro => data_in_rtps_out(NUM_ENDPOINTS)(WORD_WIDTH) ); data_in_rtps(0 to NUM_ENDPOINTS-1) <= (others => (last_word_out_rbe & data_out_rbe)); - data_in_rtps_out(NUM_ENDPOINTS) <= last_word_out_rbe & data_out_rbe; rtps_handler_r_inst : entity Testbench_Lib3.rtps_handler(arch) port map ( diff --git a/src/Tests/Level_2/L2_Type1_test1.vhd b/src/Tests/Level_2/L2_Type1_test1.vhd index 4e1371d..64d9562 100644 --- a/src/Tests/Level_2/L2_Type1_test1.vhd +++ b/src/Tests/Level_2/L2_Type1_test1.vhd @@ -120,7 +120,7 @@ begin fifo_r_w_inst : entity work.FWFT_FIFO(arch) generic map ( - FIFO_DEPTH => 65536, + FIFO_DEPTH => 65536/(WORD_WIDTH/BYTE_WIDTH), DATA_WIDTH => WORD_WIDTH ) port map @@ -138,7 +138,7 @@ begin fifo_w_r_inst : entity work.FWFT_FIFO(arch) generic map ( - FIFO_DEPTH => 65536, + FIFO_DEPTH => 65536/(WORD_WIDTH/BYTE_WIDTH), DATA_WIDTH => WORD_WIDTH ) port map diff --git a/src/key_hash_generator.vhd b/src/key_hash_generator.vhd index e1172c8..a5d4b51 100644 --- a/src/key_hash_generator.vhd +++ b/src/key_hash_generator.vhd @@ -4,17 +4,18 @@ use ieee.numeric_std.all; entity key_hash_generator is port ( + -- SYSTEM clk : in std_logic; reset : in std_logic; - + -- CONTROL start : in std_logic; ack : out std_logic; - + -- INPUT data_in : in std_logic_vector(7 downto 0); valid_in : in std_logic; ready_in : out std_logic; last_word_in : in std_logic; - + -- OUTPUT key_hash : out std_logic_vector(127 downto 0); done : out std_logic ); diff --git a/src/key_holder.vhd b/src/key_holder.vhd index 32d7bcb..8084611 100644 --- a/src/key_holder.vhd +++ b/src/key_holder.vhd @@ -7,20 +7,21 @@ use work.rtps_config_package.all; entity key_holder is port ( + -- SYSTEM clk : in std_logic; reset : in std_logic; - + -- CONTROL start : in std_logic; opcode : in KEY_HOLDER_OPCODE_TYPE; ack : out std_logic; decode_error : out std_logic; abort : in std_logic; - + -- INPUT data_in : in std_logic_vector(WORD_WIDTH-1 downto 0); valid_in : in std_logic; ready_in : out std_logic; last_word_in : in std_logic; - + -- OUTPUT data_out : out std_logic_vector(WORD_WIDTH-1 downto 0); valid_out : out std_logic; ready_out : in std_logic; diff --git a/src/mem_ctrl.vhd b/src/mem_ctrl.vhd index 824afa8..64c7de2 100644 --- a/src/mem_ctrl.vhd +++ b/src/mem_ctrl.vhd @@ -10,8 +10,10 @@ entity mem_ctrl is MAX_BURST_LENGTH : natural ); port ( + -- SYSTEM clk : in std_logic; reset : in std_logic; + addr : in std_logic_vector(ADDR_WIDTH-1 downto 0); read : in std_logic; ready_in : out std_logic; diff --git a/src/rtps_builtin_endpoint.vhd b/src/rtps_builtin_endpoint.vhd index 15efffb..5ac0208 100644 --- a/src/rtps_builtin_endpoint.vhd +++ b/src/rtps_builtin_endpoint.vhd @@ -12,20 +12,27 @@ entity rtps_builtin_endpoint is MAX_REMOTE_PARTICIPANTS : natural := 50 ); port ( - clk : in std_logic; -- Input Clock - reset : in std_logic; -- Synchronous Reset - empty : in std_logic; -- Input FIFO empty flag - rd : out std_logic; -- Input FIFO read signal - data_in : in std_logic_vector(WORD_WIDTH-1 downto 0); -- Input FIFO data signal - data_out : out std_logic_vector(WORD_WIDTH-1 downto 0); - last_word_in : in std_logic; - time : in TIME_TYPE; - endpoint_full : in std_logic_vector(0 to NUM_ENDPOINTS-1); - endpoint_wr : out std_logic_vector(0 to NUM_ENDPOINTS-1); - rtps_wr : out std_logic; - rtps_full : in std_logic; - last_word_out : out std_logic; - alive : in std_logic_vector(0 to NUM_ENDPOINTS-1) + -- SYSTEM + clk : in std_logic; + reset : in std_logic; + time : in TIME_TYPE; + -- FROM RTPS HANDLER + empty : in std_logic; + rd : out std_logic; + data_in : in std_logic_vector(WORD_WIDTH-1 downto 0); + last_word_in : in std_logic; + -- FROM USER ENDPOINTS + alive : in std_logic_vector(0 to NUM_ENDPOINTS-1); + -- TO USER ENDPOINTS + 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 + -- 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 ); end entity; @@ -351,6 +358,10 @@ architecture arch of rtps_builtin_endpoint is signal idle_sig : std_logic := '0'; -- Signifies that we received an Unregister/Dispose Status Info signal ud_status, ud_status_next : std_logic := '0'; + -- Internal Signal for data_out + signal data_out_sig : std_logic_vector(WORD_WIDTH-1 downto 0) := (others => '0'); + -- Internal Signal for last_word_out + signal last_word_out_sig : std_logic := '0'; -- *MEMORY PROCESS* -- Memory FSM State @@ -512,30 +523,35 @@ begin -- This process connects the Intermediate Output Signals to the actual output FIFOs output_prc : process(all) begin - endpoint_wr <= (others => '0'); - rtps_wr <= '0'; + wr_ue <= (others => '0'); + wr_ro <= '0'; case (stage) is when INFORM_ENDPOINTS_MATCH => if (wr_sig = '1') then - endpoint_wr <= endpoint_mask; + wr_ue <= endpoint_mask; end if; when INFORM_ENDPOINTS_UNMATCH => if (wr_sig = '1') then - endpoint_wr <= not endpoint_mask; + wr_ue <= not endpoint_mask; end if; when INFORM_ENDPOINTS_PARTICIPANT_UNMATCH => if (wr_sig = '1') then - endpoint_wr <= (others => '1'); + wr_ue <= (others => '1'); end if; when LIVELINESS_UPDATE => if (wr_sig = '1') then - endpoint_wr <= endpoint_mask; + wr_ue <= endpoint_mask; end if; when others => - rtps_wr <= wr_sig; + wr_ro <= wr_sig; end case; end process; + data_out_ue <= data_out_sig; + data_out_ro <= data_out_sig; + last_word_out_ue <= last_word_out_sig; + last_word_out_ro <= last_word_out_sig; + -- Main State Machine -- STATE DESCRIPTION -- IDLE Idle state. Initiates Participant Announcements, Heartbeat/Liveliness Assertions, Stale Participant Entry Checks ,and Packet Processing, in that priority order. @@ -666,10 +682,10 @@ begin wr_sig <= '0'; mem_opcode <= NOP; mem_op_start <= '0'; - last_word_out <= '0'; + last_word_out_sig <= '0'; reset_endpoint_alive <= '0'; idle_sig <= '0'; - data_out <= (others => '0'); + data_out_sig <= (others => '0'); mem_field_flags <= (others => '0'); extra_flags <= (others => '0'); mem_addr_update <= PARTICIPANT_MEMORY_MAX_ADDRESS; @@ -1392,26 +1408,26 @@ begin -- DONE stage_next <= SKIP_PACKET; -- Output FIFO Guard - elsif ((endpoint_mask and endpoint_full) = (endpoint_full'range => '0')) then + elsif ((endpoint_mask and full_ue) = (full_ue'range => '0')) then wr_sig <= '1'; case (cnt) is -- Liveliness Assertion Opcode when 0 => - data_out <= OPCODE_LIVELINESS_UPDATE; - cnt_next <= cnt + 1; + data_out_sig <= OPCODE_LIVELINESS_UPDATE; + cnt_next <= cnt + 1; -- GUID Prefix 1/3 when 1 => - data_out <= guid(0); - cnt_next <= cnt + 1; + data_out_sig <= guid(0); + cnt_next <= cnt + 1; -- GUID Prefix 2/3 when 2 => - data_out <= guid(1); - cnt_next <= cnt + 1; + data_out_sig <= guid(1); + cnt_next <= cnt + 1; -- GUID Prefix 3/3 when 3 => - data_out <= guid(2); - last_word_out <= '1'; + data_out_sig <= guid(2); + last_word_out_sig <= '1'; -- DONE stage_next <= SKIP_PACKET; @@ -2880,54 +2896,54 @@ begin assert check_mask(current_pmf, PMF_DEFAULT_IPV4_ADDR_FLAG or PMF_UDP_PORT_FLAG) severity FAILURE; -- Output FIFO Guard - if ((endpoint_mask and endpoint_full) = (endpoint_full'range => '0')) then + if ((endpoint_mask and full_ue) = (full_ue'range => '0')) then wr_sig <= '1'; case (cnt) is -- Match Opcode when 0 => - data_out <= OPCODE_ENDPOINT_MATCH; - cnt_next <= cnt + 1; + data_out_sig <= OPCODE_ENDPOINT_MATCH; + cnt_next <= cnt + 1; -- GUID Prefix 1/3 when 1 => - data_out <= guid(0); - cnt_next <= cnt + 1; + data_out_sig <= guid(0); + cnt_next <= cnt + 1; -- GUID Prefix 2/3 when 2 => - data_out <= guid(1); - cnt_next <= cnt + 1; + data_out_sig <= guid(1); + cnt_next <= cnt + 1; -- GUID Prefix 3/3 when 3 => - data_out <= guid(2); - cnt_next <= cnt + 1; + data_out_sig <= guid(2); + cnt_next <= cnt + 1; -- Entity ID when 4 => - data_out <= guid(3); - cnt_next <= cnt + 1; + data_out_sig <= guid(3); + cnt_next <= cnt + 1; -- IPv4 Address when 5 => -- If Endpoint did not set Address, use Participant Default if (def_addr /= (def_addr'reverse_range => '0')) then - data_out <= def_addr; + data_out_sig <= def_addr; else - data_out <= participant_data.def_addr; + data_out_sig <= participant_data.def_addr; end if; cnt_next <= cnt + 1; -- UDPv4 Port and Reader Flags when 6 => -- Default - data_out <= (others => '0'); - last_word_out <= '1'; + data_out_sig <= (others => '0'); + last_word_out_sig <= '1'; -- If Endpoint did not set Port, use Participant Default if (def_port /= (def_port'reverse_range => '0')) then - data_out(31 downto 16) <= def_port; + data_out_sig(31 downto 16) <= def_port; else - data_out(31 downto 16) <= participant_data.def_port; + data_out_sig(31 downto 16) <= participant_data.def_port; end if; if (is_subscriber = '1') then - data_out(15 downto 0) <= reader_flags; + data_out_sig(15 downto 0) <= reader_flags; end if; -- DONE @@ -2940,30 +2956,30 @@ begin end if; when INFORM_ENDPOINTS_UNMATCH => -- Output FIFO Guard - if (((not endpoint_mask) and endpoint_full) = (endpoint_full'range => '0')) then + if (((not endpoint_mask) and full_ue) = (full_ue'range => '0')) then wr_sig <= '1'; case (cnt) is -- Match Opcode when 0 => - data_out <= OPCODE_ENDPOINT_UNMATCH; - cnt_next <= cnt + 1; + data_out_sig <= OPCODE_ENDPOINT_UNMATCH; + cnt_next <= cnt + 1; -- GUID Prefix 1/3 when 1 => - data_out <= guid(0); - cnt_next <= cnt + 1; + data_out_sig <= guid(0); + cnt_next <= cnt + 1; -- GUID Prefix 2/3 when 2 => - data_out <= guid(1); - cnt_next <= cnt + 1; + data_out_sig <= guid(1); + cnt_next <= cnt + 1; -- GUID Prefix 3/3 when 3 => - data_out <= guid(2); - cnt_next <= cnt + 1; + data_out_sig <= guid(2); + cnt_next <= cnt + 1; -- Entity ID when 4 => - data_out <= guid(3); - last_word_out <= '1'; + data_out_sig <= guid(3); + last_word_out_sig <= '1'; -- DONE stage_next <= SKIP_PACKET; @@ -2973,26 +2989,26 @@ begin end if; when INFORM_ENDPOINTS_PARTICIPANT_UNMATCH => -- Output FIFO Guard - if (endpoint_full = (endpoint_full'range => '0')) then + if (full_ue = (full_ue'range => '0')) then wr_sig <= '1'; case (cnt) is -- Match Opcode when 0 => - data_out <= OPCODE_PARTICIPANT_UNMATCH; - cnt_next <= cnt + 1; + data_out_sig <= OPCODE_PARTICIPANT_UNMATCH; + cnt_next <= cnt + 1; -- GUID Prefix 1/3 when 1 => - data_out <= guid(0); - cnt_next <= cnt + 1; + data_out_sig <= guid(0); + cnt_next <= cnt + 1; -- GUID Prefix 2/3 when 2 => - data_out <= guid(1); - cnt_next <= cnt + 1; + data_out_sig <= guid(1); + cnt_next <= cnt + 1; -- GUID Prefix 3/3 when 3 => - data_out <= guid(2); - last_word_out <= '1'; + data_out_sig <= guid(2); + last_word_out_sig <= '1'; -- Currently in Stale Check if (stale_check = '1') then @@ -3015,48 +3031,48 @@ begin assert check_mask(current_pmf, PMF_META_IPV4_ADDR_FLAG or PMF_UDP_PORT_FLAG) severity FAILURE; end if; - if (rtps_full = '0') then + if (full_ro = '0') then wr_sig <= '1'; case (cnt) is -- OUTPUT HEADER -- Src IPv4 Address when 0 => - data_out <= DEFAULT_IPv4_ADDRESS; + data_out_sig <= DEFAULT_IPv4_ADDRESS; cnt_next <= cnt + 1; -- Dest IPv4 Address when 1 => -- Set Default Multicast Announce Address if Participant Announcement if (return_stage = SEND_PARTICIPANT_ANNOUNCEMENT) then - data_out <= DEFAULT_IPv4_META_ADDRESS; + data_out_sig <= DEFAULT_IPv4_META_ADDRESS; else - data_out <= participant_data.meta_addr; + data_out_sig <= participant_data.meta_addr; end if; cnt_next <= cnt + 1; -- Src and Dest UDPv4 Ports when 2 => -- Set Default Multicast Announce Port if Participant Announcement if (return_stage = SEND_PARTICIPANT_ANNOUNCEMENT) then - data_out <= META_IPv4_UNICAST_PORT & META_IPv4_MULTICAST_PORT; + data_out_sig <= META_IPv4_UNICAST_PORT & META_IPv4_MULTICAST_PORT; else - data_out <= META_IPv4_UNICAST_PORT & participant_data.meta_port; + data_out_sig <= META_IPv4_UNICAST_PORT & participant_data.meta_port; end if; cnt_next <= cnt + 1; -- RTPS MESSAGE HEADER when 3 => - data_out <= PROTOCOL_RTPS; - cnt_next <= cnt + 1; + data_out_sig <= PROTOCOL_RTPS; + cnt_next <= cnt + 1; when 4 => - data_out <= PROTOCOLVERSION_2_4 & VENDORID; - cnt_next <= cnt + 1; + data_out_sig <= PROTOCOLVERSION_2_4 & VENDORID; + cnt_next <= cnt + 1; when 5 => - data_out <= GUIDPREFIX(0); - cnt_next <= cnt + 1; + data_out_sig <= GUIDPREFIX(0); + cnt_next <= cnt + 1; when 6 => - data_out <= GUIDPREFIX(1); - cnt_next <= cnt + 1; + data_out_sig <= GUIDPREFIX(1); + cnt_next <= cnt + 1; when 7 => - data_out <= GUIDPREFIX(2); + data_out_sig <= GUIDPREFIX(2); -- Continue with respective RTPS Submessage stage_next <= return_stage; @@ -3070,15 +3086,15 @@ begin end if; end if; when SEND_PARTICIPANT_ANNOUNCEMENT => - if (rtps_full = '0') then + if (full_ro = '0') then wr_sig <= '1'; -- Send Participant Data - data_out <= LOCAL_PARTICIPANT_DATA.data(participant_data_cnt); + data_out_sig <= LOCAL_PARTICIPANT_DATA.data(participant_data_cnt); -- Exit Condition if (participant_data_cnt = (LOCAL_PARTICIPANT_DATA.length-1)) then - last_word_out <= '1'; + last_word_out_sig <= '1'; -- DONE stage_next <= IDLE; else @@ -3092,115 +3108,115 @@ begin if (mem_op_done = '1') then assert check_mask(current_pmf, PMF_PUB_SEQ_NR_FLAG or PMF_SUB_SEQ_NR_FLAG or PMF_MES_SEQ_NR_FLAG) severity FAILURE; - if (rtps_full = '0') then + if (full_ro = '0') then wr_sig <= '1'; case (cnt) is -- ACKNACK RTPS SUBMESSAGE (Publication) -- RTPS Submessage Header when 0 => - data_out <= SID_ACKNACK & "00000010" & std_logic_vector(to_unsigned(28, 16)); - cnt_next <= cnt + 1; + data_out_sig <= SID_ACKNACK & "00000010" & std_logic_vector(to_unsigned(28, 16)); + cnt_next <= cnt + 1; -- Reader Entity ID when 1 => - data_out <= ENTITYID_SEDP_BUILTIN_SUBSCRIPTIONS_DETECTOR; - cnt_next <= cnt + 1; + data_out_sig <= ENTITYID_SEDP_BUILTIN_SUBSCRIPTIONS_DETECTOR; + cnt_next <= cnt + 1; -- Writer Entity ID when 2 => - data_out <= ENTITYID_SEDP_BUILTIN_SUBSCRIPTIONS_ANNOUNCER; - cnt_next <= cnt + 1; + data_out_sig <= ENTITYID_SEDP_BUILTIN_SUBSCRIPTIONS_ANNOUNCER; + cnt_next <= cnt + 1; -- Sequence Number Set (Bitmap Base 1/2) when 3 => - data_out <= std_logic_vector(participant_data.pub_seq_nr(0)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(participant_data.pub_seq_nr(0)); + cnt_next <= cnt + 1; -- Sequence Number Set (Bitmap Base 2/2) when 4 => - data_out <= std_logic_vector(participant_data.pub_seq_nr(1)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(participant_data.pub_seq_nr(1)); + cnt_next <= cnt + 1; -- Sequence Number Set (NumBits) when 5 => - data_out <= std_logic_vector(to_unsigned(CDR_LONG_WIDTH, CDR_LONG_WIDTH)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(to_unsigned(CDR_LONG_WIDTH, CDR_LONG_WIDTH)); + cnt_next <= cnt + 1; -- Sequence Number Set (Bitmap) when 6 => -- NOTE: In order to avoid having to generate a variable sized bitmap, we always request the next 32 sequence numbers, even if they do not exist (yet) -- XXX: Assumes correct implementation of the RTPS Protocol (i.e. Writer ignores requested SNs that do not exist) - data_out <= (others => '1'); - cnt_next <= cnt + 1; + data_out_sig <= (others => '1'); + cnt_next <= cnt + 1; -- Count when 7 => - data_out <= std_logic_vector(count); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(count); + cnt_next <= cnt + 1; -- ACKNACK RTPS SUBMESSAGE (Subscription) -- RTPS Submessage Header when 8 => - data_out <= SID_ACKNACK & "00000010" & std_logic_vector(to_unsigned(28, 16)); - cnt_next <= cnt + 1; + data_out_sig <= SID_ACKNACK & "00000010" & std_logic_vector(to_unsigned(28, 16)); + cnt_next <= cnt + 1; -- Reader Entity ID when 9 => - data_out <= ENTITYID_SEDP_BUILTIN_PUBLICATIONS_DETECTOR; - cnt_next <= cnt + 1; + data_out_sig <= ENTITYID_SEDP_BUILTIN_PUBLICATIONS_DETECTOR; + cnt_next <= cnt + 1; -- Writer Entity ID when 10 => - data_out <= ENTITYID_SEDP_BUILTIN_PUBLICATIONS_ANNOUNCER; - cnt_next <= cnt + 1; + data_out_sig <= ENTITYID_SEDP_BUILTIN_PUBLICATIONS_ANNOUNCER; + cnt_next <= cnt + 1; -- Sequence Number Set (Bitmap Base 1/2) when 11 => - data_out <= std_logic_vector(participant_data.sub_seq_nr(0)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(participant_data.sub_seq_nr(0)); + cnt_next <= cnt + 1; -- Sequence Number Set (Bitmap Base 2/2) when 12 => - data_out <= std_logic_vector(participant_data.sub_seq_nr(1)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(participant_data.sub_seq_nr(1)); + cnt_next <= cnt + 1; -- Sequence Number Set (NumBits) when 13 => - data_out <= std_logic_vector(to_unsigned(CDR_LONG_WIDTH, CDR_LONG_WIDTH)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(to_unsigned(CDR_LONG_WIDTH, CDR_LONG_WIDTH)); + cnt_next <= cnt + 1; -- Sequence Number Set (Bitmap) when 14 => -- NOTE: In order to avoid having to generate a variable sized bitmap, we always request the next 32 sequence numbers, even if they do not exist (yet) -- XXX: Assumes correct implementation of the RTPS Protocol (i.e. Writer ignores requested SNs that do not exist) - data_out <= (others => '1'); - cnt_next <= cnt + 1; + data_out_sig <= (others => '1'); + cnt_next <= cnt + 1; -- Count when 15 => - data_out <= std_logic_vector(count); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(count); + cnt_next <= cnt + 1; -- ACKNACK RTPS SUBMESSAGE (Message) -- RTPS Submessage Header when 16 => - data_out <= SID_ACKNACK & "00000010" & std_logic_vector(to_unsigned(28, 16)); - cnt_next <= cnt + 1; + data_out_sig <= SID_ACKNACK & "00000010" & std_logic_vector(to_unsigned(28, 16)); + cnt_next <= cnt + 1; -- Reader Entity ID when 17 => - data_out <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_READER; - cnt_next <= cnt + 1; + data_out_sig <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_READER; + cnt_next <= cnt + 1; -- Writer Entity ID when 18 => - data_out <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_WRITER; - cnt_next <= cnt + 1; + data_out_sig <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_WRITER; + cnt_next <= cnt + 1; -- Sequence Number Set (Bitmap Base 1/2) when 19 => - data_out <= std_logic_vector(participant_data.mes_seq_nr(0)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(participant_data.mes_seq_nr(0)); + cnt_next <= cnt + 1; -- Sequence Number Set (Bitmap Base 2/2) when 20 => - data_out <= std_logic_vector(participant_data.mes_seq_nr(1)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(participant_data.mes_seq_nr(1)); + cnt_next <= cnt + 1; -- Sequence Number Set (NumBits) when 21 => - data_out <= std_logic_vector(to_unsigned(CDR_LONG_WIDTH, CDR_LONG_WIDTH)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(to_unsigned(CDR_LONG_WIDTH, CDR_LONG_WIDTH)); + cnt_next <= cnt + 1; -- Sequence Number Set (Bitmap) when 22 => -- NOTE: In order to avoid having to generate a variable sized bitmap, we always request the next 32 sequence numbers, even if they do not exist (yet) -- XXX: Assumes correct implementation of the RTPS Protocol (i.e. Writer ignores requested SNs that do not exist) - data_out <= (others => '1'); - cnt_next <= cnt + 1; + data_out_sig <= (others => '1'); + cnt_next <= cnt + 1; -- Count when 23 => - data_out <= std_logic_vector(count); - last_word_out <= '1'; + data_out_sig <= std_logic_vector(count); + last_word_out_sig <= '1'; -- Continue stage_next <= PARTICIPANT_STALE_CHECK; @@ -3211,108 +3227,108 @@ begin end if; end if; when SEND_HEARTBEAT => - if (rtps_full = '0') then + if (full_ro = '0') then wr_sig <= '1'; case (cnt) is -- HEARTBEAT RTPS SUBMESSAGE (Publication) -- RTPS Submessage Header when 0 => - data_out <= SID_HEARTBEAT & "00000010" & std_logic_vector(to_unsigned(28, 16)); - cnt_next <= cnt + 1; + data_out_sig <= SID_HEARTBEAT & "00000010" & std_logic_vector(to_unsigned(28, 16)); + cnt_next <= cnt + 1; -- Reader Entity ID when 1 => - data_out <= ENTITYID_SEDP_BUILTIN_PUBLICATIONS_DETECTOR; - cnt_next <= cnt + 1; + data_out_sig <= ENTITYID_SEDP_BUILTIN_PUBLICATIONS_DETECTOR; + cnt_next <= cnt + 1; -- Writer Entity ID when 2 => - data_out <= ENTITYID_SEDP_BUILTIN_PUBLICATIONS_ANNOUNCER; - cnt_next <= cnt + 1; + data_out_sig <= ENTITYID_SEDP_BUILTIN_PUBLICATIONS_ANNOUNCER; + cnt_next <= cnt + 1; -- Sequence Number 1/2 when 3 => - data_out <= std_logic_vector(FIRST_SEQUENCENUMBER(0)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(FIRST_SEQUENCENUMBER(0)); + cnt_next <= cnt + 1; -- Sequence Number 2/2 when 4 => - data_out <= std_logic_vector(FIRST_SEQUENCENUMBER(1)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(FIRST_SEQUENCENUMBER(1)); + cnt_next <= cnt + 1; -- Sequence Number 1/2 when 5 => - data_out <= std_logic_vector(PUB_SEQUENCENUMBER(0)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(PUB_SEQUENCENUMBER(0)); + cnt_next <= cnt + 1; -- Sequence Number 1/2 when 6 => - data_out <= std_logic_vector(PUB_SEQUENCENUMBER(1)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(PUB_SEQUENCENUMBER(1)); + cnt_next <= cnt + 1; -- Count when 7 => - data_out <= std_logic_vector(count); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(count); + cnt_next <= cnt + 1; -- HEARTBEAT RTPS SUBMESSAGE (Subscription) -- RTPS Submessage Header when 8 => - data_out <= SID_HEARTBEAT & "00000010" & std_logic_vector(to_unsigned(28, 16)); - cnt_next <= cnt + 1; + data_out_sig <= SID_HEARTBEAT & "00000010" & std_logic_vector(to_unsigned(28, 16)); + cnt_next <= cnt + 1; -- Reader Entity ID when 9 => - data_out <= ENTITYID_SEDP_BUILTIN_SUBSCRIPTIONS_DETECTOR; - cnt_next <= cnt + 1; + data_out_sig <= ENTITYID_SEDP_BUILTIN_SUBSCRIPTIONS_DETECTOR; + cnt_next <= cnt + 1; -- Writer Entity ID when 10 => - data_out <= ENTITYID_SEDP_BUILTIN_SUBSCRIPTIONS_ANNOUNCER; - cnt_next <= cnt + 1; + data_out_sig <= ENTITYID_SEDP_BUILTIN_SUBSCRIPTIONS_ANNOUNCER; + cnt_next <= cnt + 1; -- Sequence Number 1/2 when 11 => - data_out <= std_logic_vector(FIRST_SEQUENCENUMBER(0)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(FIRST_SEQUENCENUMBER(0)); + cnt_next <= cnt + 1; -- Sequence Number 2/2 when 12 => - data_out <= std_logic_vector(FIRST_SEQUENCENUMBER(1)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(FIRST_SEQUENCENUMBER(1)); + cnt_next <= cnt + 1; -- Sequence Number 1/2 when 13 => - data_out <= std_logic_vector(SUB_SEQUENCENUMBER(0)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(SUB_SEQUENCENUMBER(0)); + cnt_next <= cnt + 1; -- Sequence Number 1/2 when 14 => - data_out <= std_logic_vector(SUB_SEQUENCENUMBER(1)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(SUB_SEQUENCENUMBER(1)); + cnt_next <= cnt + 1; -- Count when 15 => - data_out <= std_logic_vector(count); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(count); + cnt_next <= cnt + 1; -- HEARTBEAT RTPS SUBMESSAGE (Message) -- RTPS Submessage Header when 16 => - data_out <= SID_HEARTBEAT & "00000010" & std_logic_vector(to_unsigned(28, 16)); - cnt_next <= cnt + 1; + data_out_sig <= SID_HEARTBEAT & "00000010" & std_logic_vector(to_unsigned(28, 16)); + cnt_next <= cnt + 1; -- Reader Entity ID when 17 => - data_out <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_READER; - cnt_next <= cnt + 1; + data_out_sig <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_READER; + cnt_next <= cnt + 1; -- Writer Entity ID when 18 => - data_out <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_WRITER; - cnt_next <= cnt + 1; + data_out_sig <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_WRITER; + cnt_next <= cnt + 1; -- Sequence Number 1/2 when 19 => - data_out <= std_logic_vector(man_live_seq_nr(0)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(man_live_seq_nr(0)); + cnt_next <= cnt + 1; -- Sequence Number 2/2 when 20 => - data_out <= std_logic_vector(man_live_seq_nr(1)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(man_live_seq_nr(1)); + cnt_next <= cnt + 1; -- Sequence Number 1/2 when 21 => - data_out <= std_logic_vector(auto_live_seq_nr(0)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(auto_live_seq_nr(0)); + cnt_next <= cnt + 1; -- Sequence Number 1/2 when 22 => - data_out <= std_logic_vector(auto_live_seq_nr(1)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(auto_live_seq_nr(1)); + cnt_next <= cnt + 1; -- Count when 23 => - data_out <= std_logic_vector(count); + data_out_sig <= std_logic_vector(count); -- If manual and automatic sequence numbers are not consecutive, we have only asserted the automatic liveliness if (live_gap_start /= auto_live_seq_nr) then @@ -3338,15 +3354,15 @@ begin if (not check_mask(participant_data.extra_flags, EF_PUB_DATA_FLAG) or NUM_WRITERS = 0) then stage_next <= SEND_SUB_DATA; -- Output FIFO Guard - elsif (rtps_full = '0') then + elsif (full_ro = '0') then wr_sig <= '1'; -- Send Publisher Data - data_out <= WRITER_ENDPOINT_DATA.data(publisher_data_cnt); + data_out_sig <= WRITER_ENDPOINT_DATA.data(publisher_data_cnt); -- Exit Condition if (publisher_data_cnt = (WRITER_ENDPOINT_DATA.length-1)) then - last_word_out <= '1'; + last_word_out_sig <= '1'; -- If we still have Data to sent, continue if (check_mask(participant_data.extra_flags, EF_SUB_DATA_FLAG) or check_mask(participant_data.extra_flags, EF_MES_DATA_FLAG)) then stage_next <= SEND_HEADER; @@ -3377,15 +3393,15 @@ begin stage_next <= SEND_MES_MAN_LIVE; cnt_next <= 0; -- Output FIFO Guard - elsif (rtps_full = '0') then + elsif (full_ro = '0') then wr_sig <= '1'; -- Send Subscriber Data - data_out <= READER_ENDPOINT_DATA.data(subscriber_data_cnt); + data_out_sig <= READER_ENDPOINT_DATA.data(subscriber_data_cnt); -- Exit Condition if (subscriber_data_cnt = (READER_ENDPOINT_DATA.length-1)) then - last_word_out <= '1'; + last_word_out_sig <= '1'; -- If we still have Data to sent, continue if (check_mask(participant_data.extra_flags, EF_MES_DATA_FLAG)) then stage_next <= SEND_HEADER; @@ -3406,59 +3422,59 @@ begin end if; when SEND_MES_MAN_LIVE => -- Output FIFO Guard - if (rtps_full = '0') then + if (full_ro = '0') then wr_sig <= '1'; case (cnt) is -- DATA RTPS SUBMESSAGE (Participant Message) -- RTPS Submessage Header when 0 => - data_out <= SID_DATA & "00000100" & std_logic_vector(to_unsigned(44, 16)); - cnt_next <= cnt + 1; + data_out_sig <= SID_DATA & "00000100" & std_logic_vector(to_unsigned(44, 16)); + cnt_next <= cnt + 1; -- ExtraFlags, octetsToInlineQoS when 1 => - data_out <= x"0000" & std_logic_vector(to_unsigned(16, 16)); - cnt_next <= cnt + 1; + data_out_sig <= x"0000" & std_logic_vector(to_unsigned(16, 16)); + cnt_next <= cnt + 1; -- Reader Entity ID when 2 => - data_out <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_READER; - cnt_next <= cnt + 1; + data_out_sig <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_READER; + cnt_next <= cnt + 1; -- Writer Entity ID when 3 => - data_out <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_WRITER; - cnt_next <= cnt + 1; + data_out_sig <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_WRITER; + cnt_next <= cnt + 1; -- Sequence Number 1/2 when 4 => - data_out <= std_logic_vector(man_live_seq_nr(0)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(man_live_seq_nr(0)); + cnt_next <= cnt + 1; -- Sequence Number 2/2 when 5 => - data_out <= std_logic_vector(man_live_seq_nr(1)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(man_live_seq_nr(1)); + cnt_next <= cnt + 1; -- Serialized Payload Header when 6 => - data_out <= CDR_BE & x"0000"; - cnt_next <= cnt + 1; + data_out_sig <= CDR_BE & x"0000"; + cnt_next <= cnt + 1; -- Serialized Payload BEGIN -- GUID Prefix 1/3 when 7 => - data_out <= GUIDPREFIX(0); - cnt_next <= cnt + 1; + data_out_sig <= GUIDPREFIX(0); + cnt_next <= cnt + 1; -- GUID Prefix 2/3 when 8 => - data_out <= GUIDPREFIX(1); - cnt_next <= cnt + 1; + data_out_sig <= GUIDPREFIX(1); + cnt_next <= cnt + 1; -- GUID Prefix 3/3 when 9 => - data_out <= GUIDPREFIX(2); - cnt_next <= cnt + 1; + data_out_sig <= GUIDPREFIX(2); + cnt_next <= cnt + 1; -- Participant Message Kind when 10 => - data_out <= PARTICIPANT_MESSAGE_DATA_KIND_MANUAL_LIVELINESS_UPDATE; - cnt_next <= cnt + 1; + data_out_sig <= PARTICIPANT_MESSAGE_DATA_KIND_MANUAL_LIVELINESS_UPDATE; + cnt_next <= cnt + 1; -- Data Length when 11 => - data_out <= (others => '0'); + data_out_sig <= (others => '0'); -- If manual and automatic sequence numbers are not consecutive, we need to send a GAP Message if (live_gap_start /= auto_live_seq_nr) then stage_next <= SEND_MES_GAP; @@ -3473,104 +3489,104 @@ begin end if; when SEND_MES_GAP => -- Output FIFO Guard - if (rtps_full = '0') then + if (full_ro = '0') then wr_sig <= '1'; case (cnt) is -- DATA RTPS SUBMESSAGE (Participant Message) -- RTPS Submessage Header when 0 => - data_out <= SID_GAP & "00000000" & std_logic_vector(to_unsigned(28, 16)); - cnt_next <= cnt + 1; + data_out_sig <= SID_GAP & "00000000" & std_logic_vector(to_unsigned(28, 16)); + cnt_next <= cnt + 1; -- Reader Entity ID when 1 => - data_out <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_READER; - cnt_next <= cnt + 1; + data_out_sig <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_READER; + cnt_next <= cnt + 1; -- Writer Entity ID when 2 => - data_out <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_WRITER; - cnt_next <= cnt + 1; + data_out_sig <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_WRITER; + cnt_next <= cnt + 1; -- GAP Start Sequence Number 1/2 when 3 => - data_out <= std_logic_vector(live_gap_start(0)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(live_gap_start(0)); + cnt_next <= cnt + 1; -- GAP Start Sequence Number 2/2 when 4 => - data_out <= std_logic_vector(live_gap_start(1)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(live_gap_start(1)); + cnt_next <= cnt + 1; -- GAP End Sequence Number Set (Bitmap Base 1/2) when 5 => - data_out <= std_logic_vector(live_gap_end(0)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(live_gap_end(0)); + cnt_next <= cnt + 1; -- GAP End Sequence Number Set (Bitmap Base 2/2) when 6 => - data_out <= std_logic_vector(live_gap_end(1)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(live_gap_end(1)); + cnt_next <= cnt + 1; -- GAP End Sequence Number Set (NumBits) when 7 => - data_out <= (others => '0'); - stage_next <= SEND_MES_AUTO_LIVE; - cnt_next <= 0; + data_out_sig <= (others => '0'); + stage_next <= SEND_MES_AUTO_LIVE; + cnt_next <= 0; when others => null; end case; end if; when SEND_MES_AUTO_LIVE => -- Output FIFO Guard - if (rtps_full = '0') then + if (full_ro = '0') then wr_sig <= '1'; case (cnt) is -- DATA RTPS SUBMESSAGE (Participant Message) -- RTPS Submessage Header when 0 => - data_out <= SID_DATA & "00000100" & std_logic_vector(to_unsigned(44, 16)); - cnt_next <= cnt + 1; + data_out_sig <= SID_DATA & "00000100" & std_logic_vector(to_unsigned(44, 16)); + cnt_next <= cnt + 1; -- ExtraFlags, octetsToInlineQoS when 1 => - data_out <= x"0000" & std_logic_vector(to_unsigned(16, 16)); - cnt_next <= cnt + 1; + data_out_sig <= x"0000" & std_logic_vector(to_unsigned(16, 16)); + cnt_next <= cnt + 1; -- Reader Entity ID when 2 => - data_out <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_READER; - cnt_next <= cnt + 1; + data_out_sig <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_READER; + cnt_next <= cnt + 1; -- Writer Entity ID when 3 => - data_out <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_WRITER; - cnt_next <= cnt + 1; + data_out_sig <= ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_WRITER; + cnt_next <= cnt + 1; -- Sequence Number 1/2 when 4 => - data_out <= std_logic_vector(auto_live_seq_nr(0)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(auto_live_seq_nr(0)); + cnt_next <= cnt + 1; -- Sequence Number 2/2 when 5 => - data_out <= std_logic_vector(auto_live_seq_nr(1)); - cnt_next <= cnt + 1; + data_out_sig <= std_logic_vector(auto_live_seq_nr(1)); + cnt_next <= cnt + 1; -- Serialized Payload Header when 6 => - data_out <= CDR_BE & x"0000"; - cnt_next <= cnt + 1; + data_out_sig <= CDR_BE & x"0000"; + cnt_next <= cnt + 1; -- Serialized Payload BEGIN -- GUID Prefix 1/3 when 7 => - data_out <= GUIDPREFIX(0); - cnt_next <= cnt + 1; + data_out_sig <= GUIDPREFIX(0); + cnt_next <= cnt + 1; -- GUID Prefix 2/3 when 8 => - data_out <= GUIDPREFIX(1); - cnt_next <= cnt + 1; + data_out_sig <= GUIDPREFIX(1); + cnt_next <= cnt + 1; -- GUID Prefix 3/3 when 9 => - data_out <= GUIDPREFIX(2); - cnt_next <= cnt + 1; + data_out_sig <= GUIDPREFIX(2); + cnt_next <= cnt + 1; -- Participant Message Kind when 10 => - data_out <= PARTICIPANT_MESSAGE_DATA_KIND_AUTOMATIC_LIVELINESS_UPDATE; - cnt_next <= cnt + 1; + data_out_sig <= PARTICIPANT_MESSAGE_DATA_KIND_AUTOMATIC_LIVELINESS_UPDATE; + cnt_next <= cnt + 1; -- Data Length when 11 => - data_out <= (others => '0'); - last_word_out <= '1'; + data_out_sig <= (others => '0'); + last_word_out_sig <= '1'; -- If we are in the middle of a liveliness assertion, find the next Participant destination if (is_live_assert = '1') then @@ -3640,7 +3656,7 @@ begin -- Force rd_sig low rd_sig <= '0'; -- Notify Endpoints of EOP - last_word_out <= '1'; -- TODO: Necessary? (We do not pass through input to output, so a EOP should not leave us "stranded" during a write out) + last_word_out_sig <= '1'; -- TODO: Necessary? (We do not pass through input to output, so a EOP should not leave us "stranded" during a write out) -- Continue parsing next Packet stage_next <= IDLE; -- Reset Last Word In Latch @@ -3655,7 +3671,7 @@ begin -- Force rd_sig low rd_sig <= '0'; -- Notify Endpoints of EOP - last_word_out <= '1'; + last_word_out_sig <= '1'; -- Invalid Parameter Length, Skip Packet stage_next <= SKIP_PACKET; -- Reset Parameter End diff --git a/src/rtps_out.vhd b/src/rtps_out.vhd index a01b1be..5d73d84 100644 --- a/src/rtps_out.vhd +++ b/src/rtps_out.vhd @@ -9,18 +9,21 @@ use work.rtps_config_package.all; entity rtps_out is generic ( -- Max Serialized Payload Size in a UDP Stream (Bytes) [MAX_PAYLOAD(65536) - IPv4_HEADER(20) - UDP_HEADER(8) + FORMAT_HEADER(16)] - MAX_BUFFER_SIZE : natural := 65524/4 + MAX_BUFFER_SIZE : natural := 65524/(WORD_WIDTH/BYTE_WIDTH) ); port ( + -- SYSTEM clk : in std_logic; reset : in std_logic; + -- INPUT + full : in std_logic; + wr : out std_logic; data_in : in RTPS_OUT_DATA_TYPE; last_word_in: in std_logic_vector(0 to NUM_ENDPOINTS); - rd : out std_logic_vector(0 to NUM_ENDPOINTS); + -- OUTPUT empty : in std_logic_vector(0 to NUM_ENDPOINTS); - data_out : out std_logic_vector(WORD_WIDTH-1 downto 0); - wr : out std_logic; - full : in std_logic + rd : out std_logic_vector(0 to NUM_ENDPOINTS); + 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 5e21cb0..756be43 100644 --- a/src/rtps_reader.vhd +++ b/src/rtps_reader.vhd @@ -28,21 +28,21 @@ entity rtps_reader is clk : in std_logic; reset : in std_logic; time : in TIME_TYPE; - -- FROM RTPS_HANDLER (USER TRAFFIC) + -- FROM RTPS HANDLER (USER TRAFFIC) empty_user : in std_logic; 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) + -- 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); last_word_in_meta : in std_logic; -- RTPS OUTPUT - wr_rtps : out std_logic; - full_rtps : in std_logic; - last_word_out_rtps : out std_logic; - data_out_rtps : out std_logic_vector(WORD_WIDTH-1 downto 0); + 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; -- TO HISTORY CACHE start_hc : out std_logic; opcode_hc : out HISTORY_CACHE_OPCODE_TYPE; @@ -435,13 +435,13 @@ begin start_hc <= '0'; valid_out_hc <= '0'; last_word_out_hc <= '0'; - wr_rtps <= '0'; - last_word_out_rtps <= '0'; + wr_ro <= '0'; + last_word_out_ro <= '0'; idle_sig <= '0'; rd_guard := '0'; mem_field_flags <= (others => '0'); data_out_hc <= (others => '0'); - data_out_rtps <= (others => '0'); + data_out_ro <= (others => '0'); mem_addr_update <= (others => '0'); @@ -1557,38 +1557,38 @@ begin assert check_mask(current_emf, EMF_IPV4_ADDR_FLAG or EMF_UDP_PORT_FLAG) severity FAILURE; -- Output FIFO Guard - if (full_rtps = '0') then - wr_rtps <= '1'; + if (full_ro = '0') then + wr_ro <= '1'; case (cnt) is -- OUTPUT HEADER -- Src IPv4 Address when 0 => - data_out_rtps <= DEFAULT_IPv4_ADDRESS; - cnt_next <= cnt + 1; + data_out_ro <= DEFAULT_IPv4_ADDRESS; + cnt_next <= cnt + 1; -- Dest IPv4 Address when 1 => - data_out_rtps <= mem_endpoint_data.addr; + data_out_ro <= mem_endpoint_data.addr; cnt_next <= cnt + 1; -- Src and Dest UDPv4 Ports when 2 => - data_out_rtps <= USER_IPv4_UNICAST_PORT & mem_endpoint_data.portn; + data_out_ro <= USER_IPv4_UNICAST_PORT & mem_endpoint_data.portn; cnt_next <= cnt + 1; -- RTPS MESSAGE HEADER when 3 => - data_out_rtps <= PROTOCOL_RTPS; + data_out_ro <= PROTOCOL_RTPS; cnt_next <= cnt + 1; when 4 => - data_out_rtps <= PROTOCOLVERSION_2_4 & VENDORID; + data_out_ro <= PROTOCOLVERSION_2_4 & VENDORID; cnt_next <= cnt + 1; when 5 => - data_out_rtps <= GUIDPREFIX(0); + data_out_ro <= GUIDPREFIX(0); cnt_next <= cnt + 1; when 6 => - data_out_rtps <= GUIDPREFIX(1); + data_out_ro <= GUIDPREFIX(1); cnt_next <= cnt + 1; when 7 => - data_out_rtps <= GUIDPREFIX(2); + data_out_ro <= GUIDPREFIX(2); -- Continue with respective RTPS Submessage stage_next <= return_stage; @@ -1606,45 +1606,45 @@ begin assert check_mask(current_emf, EMF_ENTITYID_FLAG or EMF_NEXT_SEQ_NR_FLAG) severity FAILURE; -- Output FIFO Guard - if (full_rtps = '0') then - wr_rtps <= '1'; + if (full_ro = '0') then + wr_ro <= '1'; case (cnt) is -- ACKNACK RTPS SUBMESSAGE -- RTPS Submessage Header when 0 => - data_out_rtps <= SID_ACKNACK & "00000010" & std_logic_vector(to_unsigned(28, SUBMESSAGE_LENGTH_WIDTH)); + data_out_ro <= SID_ACKNACK & "00000010" & std_logic_vector(to_unsigned(28, SUBMESSAGE_LENGTH_WIDTH)); cnt_next <= cnt + 1; -- Reader Entity ID when 1 => - data_out_rtps <= ENTITYID; + data_out_ro <= ENTITYID; cnt_next <= cnt + 1; -- Writer Entity ID when 2 => - data_out_rtps <= mem_endpoint_data.guid(3); + data_out_ro <= mem_endpoint_data.guid(3); cnt_next <= cnt + 1; -- Sequence Number Set (Bitmap Base 1/2) when 3 => - data_out_rtps <= std_logic_vector(mem_endpoint_data.next_seq_nr(0)); + data_out_ro <= std_logic_vector(mem_endpoint_data.next_seq_nr(0)); cnt_next <= cnt + 1; -- Sequence Number Set (Bitmap Base 2/2) when 4 => - data_out_rtps <= std_logic_vector(mem_endpoint_data.next_seq_nr(1)); + data_out_ro <= std_logic_vector(mem_endpoint_data.next_seq_nr(1)); cnt_next <= cnt + 1; -- Sequence Number Set (NumBits) when 5 => - data_out_rtps <= std_logic_vector(to_unsigned(CDR_LONG_WIDTH, CDR_LONG_WIDTH)); + data_out_ro <= std_logic_vector(to_unsigned(CDR_LONG_WIDTH, CDR_LONG_WIDTH)); cnt_next <= cnt + 1; -- Sequence Number Set (Bitmap) when 6 => -- NOTE: In order to avoid having to generate a variable sized bitmap, we always request the next 32 sequence numbers, even if they do not exist (yet) -- XXX: Assumes correct implementation of the RTPS Protocol (i.e. Writer ignores requested SNs that do not exist) - data_out_rtps <= (others => '1'); + data_out_ro <= (others => '1'); cnt_next <= cnt + 1; -- Count when 7 => - data_out_rtps <= std_logic_vector(count); - last_word_out_rtps <= '1'; + data_out_ro <= std_logic_vector(count); + last_word_out_ro <= '1'; -- Stale Check in Progress if (stale_check = '1') then diff --git a/src/rtps_writer.vhd b/src/rtps_writer.vhd index ae8027e..5971aa4 100644 --- a/src/rtps_writer.vhd +++ b/src/rtps_writer.vhd @@ -31,24 +31,24 @@ entity rtps_writer is clk : in std_logic; reset : in std_logic; time : in TIME_TYPE; - -- FROM RTPS_HANDLER (USER TRAFFIC) + -- FROM RTPS HANDLER (USER TRAFFIC) empty_user : in std_logic; 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) + -- 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); last_word_in_meta : in std_logic; - -- TO RTPS_BUILTIN_ENDPOINT (META TRAFFIC) + -- TO RTPS BUILTIN ENDPOINT (META TRAFFIC) alive_sig : out std_logic; -- RTPS OUTPUT - wr_rtps : out std_logic; - full_rtps : in std_logic; - last_word_out_rtps : out std_logic; - data_out_rtps : out std_logic_vector(WORD_WIDTH-1 downto 0); - -- FROM HC + 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; data_available : in std_logic; start_hc : out std_logic; @@ -328,10 +328,10 @@ architecture arch of rtps_writer is alias final_flag : std_logic is rtps_flags(1); alias liveliness_flag : std_logic is rtps_flags(2); -- RTPS OUT DATA SUBMESSAGE FLAGS - alias qos_flag : std_logic is data_out_rtps(17); - alias data_flag : std_logic is data_out_rtps(18); - alias key_flag : std_logic is data_out_rtps(19); - alias non_std_flag : std_logic is data_out_rtps(20); + alias qos_flag : std_logic is data_out_ro(17); + alias data_flag : std_logic is data_out_ro(18); + alias key_flag : std_logic is data_out_ro(19); + alias non_std_flag : std_logic is data_out_ro(20); -- ACKNACK alias nack_base : SEQUENCENUMBER_TYPE is sn_latch_1; alias nack_base_next : SEQUENCENUMBER_TYPE is sn_latch_1_next; @@ -463,8 +463,8 @@ begin alive_sig <= '0'; rd_meta <= '0'; rd_user <= '0'; - wr_rtps <= '0'; - last_word_out_rtps <= '0'; + wr_ro <= '0'; + last_word_out_ro <= '0'; mem_op_start <= '0'; start_hc <= '0'; ready_in_hc <= '0'; @@ -473,7 +473,7 @@ begin seq_nr <= SEQUENCENUMBER_UNKNOWN; seq_nr_hc <= SEQUENCENUMBER_UNKNOWN; mem_field_flags <= (others => '0'); - data_out_rtps <= (others => '0'); + data_out_ro <= (others => '0'); mem_addr_update <= (others => '0'); -- Assert Liveliness Latch Setter @@ -1639,38 +1639,38 @@ begin assert check_mask(current_emf, EMF_IPV4_ADDR_FLAG or EMF_UDP_PORT_FLAG) severity FAILURE; -- Output FIFO Guard - if (full_rtps = '0') then - wr_rtps <= '1'; + if (full_ro = '0') then + wr_ro <= '1'; case (cnt) is -- OUTPUT HEADER -- Src IPv4 Address when 0 => - data_out_rtps <= DEFAULT_IPv4_ADDRESS; + data_out_ro <= DEFAULT_IPv4_ADDRESS; cnt_next <= cnt + 1; -- Dest IPv4 Address when 1 => - data_out_rtps <= mem_endpoint_data.addr; + data_out_ro <= mem_endpoint_data.addr; cnt_next <= cnt + 1; -- Src and Dest UDPv4 Ports when 2 => - data_out_rtps <= USER_IPv4_UNICAST_PORT & mem_endpoint_data.portn; + data_out_ro <= USER_IPv4_UNICAST_PORT & mem_endpoint_data.portn; cnt_next <= cnt + 1; -- RTPS MESSAGE HEADER when 3 => - data_out_rtps <= PROTOCOL_RTPS; + data_out_ro <= PROTOCOL_RTPS; cnt_next <= cnt + 1; when 4 => - data_out_rtps <= PROTOCOLVERSION_2_4 & VENDORID; + data_out_ro <= PROTOCOLVERSION_2_4 & VENDORID; cnt_next <= cnt + 1; when 5 => - data_out_rtps <= GUIDPREFIX(0); + data_out_ro <= GUIDPREFIX(0); cnt_next <= cnt + 1; when 6 => - data_out_rtps <= GUIDPREFIX(1); + data_out_ro <= GUIDPREFIX(1); cnt_next <= cnt + 1; when 7 => - data_out_rtps <= GUIDPREFIX(2); + data_out_ro <= GUIDPREFIX(2); -- Continue with respective RTPS Submessage stage_next <= return_stage; @@ -1682,22 +1682,22 @@ begin end if; when SEND_INFO_TS => -- Output FIFO Guard - if (full_rtps = '0') then - wr_rtps <= '1'; + if (full_ro = '0') then + wr_ro <= '1'; case (cnt) is -- INFO_TS RTPS SUBMESSAGE -- RTPS Submessage Header when 0 => - data_out_rtps <= SID_INFO_TS & "00000000" & std_logic_vector(to_unsigned(8, SUBMESSAGE_LENGTH_WIDTH)); + data_out_ro <= SID_INFO_TS & "00000000" & std_logic_vector(to_unsigned(8, SUBMESSAGE_LENGTH_WIDTH)); cnt_next <= cnt + 1; -- Source Timestamp 1/2 when 1 => - data_out_rtps <= std_logic_vector(cc_source_timestamp(0)); + data_out_ro <= std_logic_vector(cc_source_timestamp(0)); cnt_next <= cnt + 1; -- Writer Entity ID when 2 => - data_out_rtps <= std_logic_vector(cc_source_timestamp(1)); + data_out_ro <= std_logic_vector(cc_source_timestamp(1)); stage_next <= SEND_DATA_A; cnt_next <= 0; @@ -1713,41 +1713,41 @@ begin assert check_mask(current_emf, EMF_UDP_PORT_FLAG) severity FAILURE; -- Output FIFO Guard - if (full_rtps = '0') then + if (full_ro = '0') then case (cnt) is -- DATA RTPS SUBMESSAGE -- RTPS Submessage Header when 0 => - data_out_rtps <= SID_DATA & "00000000" & std_logic_vector(to_unsigned(0, SUBMESSAGE_LENGTH_WIDTH)); + data_out_ro <= SID_DATA & "00000000" & std_logic_vector(to_unsigned(0, SUBMESSAGE_LENGTH_WIDTH)); data_flag <= '1' when (cc_kind = ALIVE) else '0'; key_flag <= '1' when (WITH_KEY and cc_kind /= ALIVE) else '0'; qos_flag <= '1' when (cc_kind /= ALIVE or WITH_KEY or mem_endpoint_data.flags(READER_EXPECTS_INLINE_QOS_FLAG) = '1') else '0'; - wr_rtps <= '1'; + wr_ro <= '1'; cnt_next <= cnt + 1; -- extraFlags, octetsToInlineQoS when 1 => - data_out_rtps <= x"0000" & std_logic_vector(to_unsigned(16, 16)); - wr_rtps <= '1'; + data_out_ro <= x"0000" & std_logic_vector(to_unsigned(16, 16)); + wr_ro <= '1'; cnt_next <= cnt + 1; -- Reader Entity ID when 2 => - data_out_rtps <= ENTITYID_UNKNOWN; - wr_rtps <= '1'; + data_out_ro <= ENTITYID_UNKNOWN; + wr_ro <= '1'; cnt_next <= cnt + 1; -- Writer Entity ID when 3 => - data_out_rtps <= ENTITYID; - wr_rtps <= '1'; + data_out_ro <= ENTITYID; + wr_ro <= '1'; cnt_next <= cnt + 1; -- Sequence Number 1/2 when 4 => - data_out_rtps <= std_logic_vector(next_seq_nr(0)); - wr_rtps <= '1'; + data_out_ro <= std_logic_vector(next_seq_nr(0)); + wr_ro <= '1'; cnt_next <= cnt + 1; -- Sequence Number 2/2 when 5 => - data_out_rtps <= std_logic_vector(next_seq_nr(1)); - wr_rtps <= '1'; + data_out_ro <= std_logic_vector(next_seq_nr(1)); + wr_ro <= '1'; -- Need to send Key Hash if (WITH_KEY) then @@ -1764,7 +1764,7 @@ begin stage_next <= SEND_DATA_B; cnt_next <= 0; else - last_word_out_rtps <= '1'; + last_word_out_ro <= '1'; -- Continue if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and stale_check = '1') then stage_next <= HANDLE_REQUESTS; @@ -1783,40 +1783,40 @@ begin when 6 => -- Synthesis Guard if (WITH_KEY) then - data_out_rtps <= PID_KEY_HASH & std_logic_vector(to_unsigned(16, SUBMESSAGE_LENGTH_WIDTH)); - wr_rtps <= '1'; + data_out_ro <= PID_KEY_HASH & std_logic_vector(to_unsigned(16, SUBMESSAGE_LENGTH_WIDTH)); + wr_ro <= '1'; cnt_next <= cnt + 1; end if; -- Key Hash 1/4 when 7 => -- Synthesis Guard if (WITH_KEY) then - data_out_rtps <= std_logic_vector(cc_instance_handle(0)); - wr_rtps <= '1'; + data_out_ro <= std_logic_vector(cc_instance_handle(0)); + wr_ro <= '1'; cnt_next <= cnt + 1; end if; -- Key Hash 2/4 when 8 => -- Synthesis Guard if (WITH_KEY) then - data_out_rtps <= std_logic_vector(cc_instance_handle(1)); - wr_rtps <= '1'; + data_out_ro <= std_logic_vector(cc_instance_handle(1)); + wr_ro <= '1'; cnt_next <= cnt + 1; end if; -- Key Hash 3/4 when 9 => -- Synthesis Guard if (WITH_KEY) then - data_out_rtps <= std_logic_vector(cc_instance_handle(2)); - wr_rtps <= '1'; + data_out_ro <= std_logic_vector(cc_instance_handle(2)); + wr_ro <= '1'; cnt_next <= cnt + 1; end if; -- Key Hash 4/4 when 10 => -- Synthesis Guard if (WITH_KEY) then - data_out_rtps <= std_logic_vector(cc_instance_handle(3)); - wr_rtps <= '1'; + data_out_ro <= std_logic_vector(cc_instance_handle(3)); + wr_ro <= '1'; -- Need to send Status Info if (cc_kind /= ALIVE) then @@ -1831,20 +1831,20 @@ begin end if; -- Status Info PID when 11 => - data_out_rtps <= PID_STATUS_INFO & std_logic_vector(to_unsigned(4, SUBMESSAGE_LENGTH_WIDTH)); - wr_rtps <= '1'; + data_out_ro <= PID_STATUS_INFO & std_logic_vector(to_unsigned(4, SUBMESSAGE_LENGTH_WIDTH)); + wr_ro <= '1'; cnt_next <= cnt + 1; -- Status Info when 12 => - data_out_rtps <= (others => '0'); - wr_rtps <= '1'; + data_out_ro <= (others => '0'); + wr_ro <= '1'; case (cc_kind) is when ALIVE_FILTERED => - data_out_rtps(STATUS_INFO_FILTERED_FLAG) <= '1'; + data_out_ro(STATUS_INFO_FILTERED_FLAG) <= '1'; when NOT_ALIVE_DISPOSED => - data_out_rtps(STATUS_INFO_DISPOSED_FLAG) <= '1'; + data_out_ro(STATUS_INFO_DISPOSED_FLAG) <= '1'; when NOT_ALIVE_UNREGISTERED => - data_out_rtps(STATUS_INFO_UNREGISTERED_FLAG) <= '1'; + data_out_ro(STATUS_INFO_UNREGISTERED_FLAG) <= '1'; when others => null; end case; @@ -1858,14 +1858,14 @@ begin end if; -- Sentinel when 13 => - data_out_rtps <= PID_SENTINEL & std_logic_vector(to_unsigned(0, PARAMETER_LENGTH_WIDTH)); - wr_rtps <= '1'; + data_out_ro <= PID_SENTINEL & std_logic_vector(to_unsigned(0, PARAMETER_LENGTH_WIDTH)); + wr_ro <= '1'; -- Payload Available (DATA or Serialized Key) if (cc_kind = ALIVE or (WITH_KEY and cc_kind /= ALIVE)) then stage_next <= SEND_DATA_B; else - last_word_out_rtps <= '1'; + last_word_out_ro <= '1'; -- Continue if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and stale_check = '1') then stage_next <= HANDLE_REQUESTS; @@ -1887,9 +1887,9 @@ begin end if; when SEND_INLINE_QOS => -- Output FIFO Guard - if (full_rtps = '0') then - data_out_rtps <= INLINE_QOS.data(cnt3); - wr_rtps <= '1'; + if (full_ro = '0') then + data_out_ro <= INLINE_QOS.data(cnt3); + wr_ro <= '1'; -- Exit Condition if (cnt3 = INLINE_QOS.length-1) then @@ -1897,7 +1897,7 @@ begin if (cc_kind = ALIVE or (WITH_KEY and cc_kind /= ALIVE)) then stage_next <= SEND_DATA_B; else - last_word_out_rtps <= '1'; + last_word_out_ro <= '1'; -- Continue if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and stale_check = '1') then stage_next <= HANDLE_REQUESTS; @@ -1918,15 +1918,15 @@ begin end if; when SEND_DATA_B => -- Output FIFO Guard - if (full_rtps = '0') then + if (full_ro = '0') then ready_in_hc <= '1'; if (valid_in_hc = '1') then - data_out_rtps <= data_in_hc; - wr_rtps <= '1'; + data_out_ro <= data_in_hc; + wr_ro <= '1'; if (last_word_in_hc = '1') then - last_word_out_rtps <= '1'; + last_word_out_ro <= '1'; -- Continue if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and stale_check = '1') then @@ -1946,30 +1946,30 @@ begin end if; when SEND_GAP_A => -- Output FIFO Guard - if (full_rtps = '0') then - wr_rtps <= '1'; + if (full_ro = '0') then + wr_ro <= '1'; case (cnt) is -- DATA RTPS SUBMESSAGE (Participant Message) -- RTPS Submessage Header when 0 => - data_out_rtps <= SID_GAP & "00000000" & std_logic_vector(to_unsigned(28, 16)); + data_out_ro <= SID_GAP & "00000000" & std_logic_vector(to_unsigned(28, 16)); cnt_next <= cnt + 1; -- Reader Entity ID when 1 => - data_out_rtps <= ENTITYID_UNKNOWN; + data_out_ro <= ENTITYID_UNKNOWN; cnt_next <= cnt + 1; -- Writer Entity ID when 2 => - data_out_rtps <= ENTITYID; + data_out_ro <= ENTITYID; cnt_next <= cnt + 1; -- GAP Start Sequence Number 1/2 when 3 => - data_out_rtps <= std_logic_vector(next_seq_nr(0)); + data_out_ro <= std_logic_vector(next_seq_nr(0)); cnt_next <= cnt + 1; -- GAP Start Sequence Number 2/2 when 4 => - data_out_rtps <= std_logic_vector(next_seq_nr(1)); + data_out_ro <= std_logic_vector(next_seq_nr(1)); -- Continue if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and stale_check = '1') then @@ -1985,24 +1985,24 @@ begin end if; when SEND_GAP_B => -- Output FIFO Guard - if (full_rtps = '0') then - wr_rtps <= '1'; + if (full_ro = '0') then + wr_ro <= '1'; case (cnt) is -- GAP List Sequence Number Set (Bitmap Base 1/2) when 0 => - data_out_rtps <= std_logic_vector(next_seq_nr(0)); + data_out_ro <= std_logic_vector(next_seq_nr(0)); cnt_next <= cnt + 1; -- GAP List Sequence Number Set (Bitmap Base 2/2) when 1 => - data_out_rtps <= std_logic_vector(next_seq_nr(1)); + data_out_ro <= std_logic_vector(next_seq_nr(1)); cnt_next <= cnt + 1; -- GAP List Sequence Number Set (NumBits) when 2 => - data_out_rtps <= (others => '0'); + data_out_ro <= (others => '0'); if (gap_is_last = '1') then - last_word_out_rtps <= '1'; + last_word_out_ro <= '1'; -- Reset gap_is_last_next <= '0'; end if; @@ -2018,47 +2018,47 @@ begin -- Synthesis Guard if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS or LIVELINESS_QOS = MANUAL_BY_TOPIC_LIVELINESS_QOS) then -- Output FIFO Guard - if (full_rtps = '0') then - wr_rtps <= '1'; + if (full_ro = '0') then + wr_ro <= '1'; case (cnt) is -- HEARTBEAT RTPS SUBMESSAGE -- RTPS Submessage Header when 0 => if (assert_liveliness_latch = '1') then - data_out_rtps <= SID_HEARTBEAT & "00000100" & std_logic_vector(to_unsigned(28, 16)); + data_out_ro <= SID_HEARTBEAT & "00000100" & std_logic_vector(to_unsigned(28, 16)); else - data_out_rtps <= SID_HEARTBEAT & "00000000" & std_logic_vector(to_unsigned(28, 16)); + data_out_ro <= SID_HEARTBEAT & "00000000" & std_logic_vector(to_unsigned(28, 16)); end if; cnt_next <= cnt + 1; -- Reader Entity ID when 1 => - data_out_rtps <= ENTITYID_UNKNOWN; + data_out_ro <= ENTITYID_UNKNOWN; cnt_next <= cnt + 1; -- Writer Entity ID when 2 => - data_out_rtps <= ENTITYID; + data_out_ro <= ENTITYID; cnt_next <= cnt + 1; -- First Sequence Number 1/2 when 3 => - data_out_rtps <= std_logic_vector(min_sn(0)); + data_out_ro <= std_logic_vector(min_sn(0)); cnt_next <= cnt + 1; -- First Sequence Number 2/2 when 4 => - data_out_rtps <= std_logic_vector(min_sn(1)); + data_out_ro <= std_logic_vector(min_sn(1)); cnt_next <= cnt + 1; -- Last Sequence Number 1/2 when 5 => - data_out_rtps <= std_logic_vector(last_seq_nr(0)); + data_out_ro <= std_logic_vector(last_seq_nr(0)); cnt_next <= cnt + 1; -- Last Sequence Number 2/2 when 6 => - data_out_rtps <= std_logic_vector(last_seq_nr(1)); + data_out_ro <= std_logic_vector(last_seq_nr(1)); cnt_next <= cnt + 1; -- Count when 7 => - data_out_rtps <= std_logic_vector(count); - last_word_out_rtps <= '1'; + data_out_ro <= std_logic_vector(count); + last_word_out_ro <= '1'; stage_next <= HANDLE_HEARTBEATS; cnt_next <= 1;