diff --git a/applications/disturb2/libraries/disturb/src/vhdl/disturb_station.vhd b/applications/disturb2/libraries/disturb/src/vhdl/disturb_station.vhd index bfa362cb2e4407123220b0f4ea06b31c53d09994..7e127caf571f8fcb3f7b01c330ed5964f4548267 100644 --- a/applications/disturb2/libraries/disturb/src/vhdl/disturb_station.vhd +++ b/applications/disturb2/libraries/disturb/src/vhdl/disturb_station.vhd @@ -410,7 +410,9 @@ ARCHITECTURE str OF disturb_station IS CONSTANT c_nof_mac : NATURAL := 12; -- Using 9 out of 12 (this is NOT optimized away during synthesis), must match one of the MAC IP variations, e.g. 1, 3, 4, 12, 24, 48 SIGNAL gn_index : NATURAL := 0; - SIGNAL this_rn : STD_LOGIC_VECTOR(c_byte_w-1 DOWNTO 0); + SIGNAL O_rn : NATURAL := 0; + SIGNAL this_rn : STD_LOGIC_VECTOR(c_byte_w-1 DOWNTO 0); + ---------------------------------------------- -- BF ---------------------------------------------- @@ -538,10 +540,9 @@ ARCHITECTURE str OF disturb_station IS SIGNAL bst_udp_src_port : STD_LOGIC_VECTOR(c_network_udp_port_w-1 DOWNTO 0); SIGNAL xst_udp_src_port : STD_LOGIC_VECTOR(c_network_udp_port_w-1 DOWNTO 0); - SIGNAL disturb_info : t_disturb_info := c_disturb_info_rst; + SIGNAL disturb_info : t_disturb_info := c_disturb_info_rst; SIGNAL ring_info : t_ring_info; - BEGIN gn_index <= TO_UINT(gn_id); @@ -597,7 +598,10 @@ BEGIN ring_info => ring_info ); - this_rn <= TO_UVEC(gn_index - TO_UINT(ring_info.O_rn), c_byte_w) WHEN rising_edge(dp_clk); -- Using register to ease timing closure. + -- Map O_rn in gn_index range 0:31 (c_sdp_W_gn_id = 5), to determine RN + -- index of this_rn + O_rn <= TO_UINT(ring_info.O_rn(c_sdp_W_gn_id-1 DOWNTO 0)); + this_rn <= TO_UVEC(gn_index - O_rn, c_byte_w) WHEN rising_edge(dp_clk); -- Use register to ease timing closure. ----------------------------------------------------------------------------- -- node_adc_input_and_timing (AIT) diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd index b6286cb5eca5ec72af520ebf988ce9d6eff60624..7f06d8f9953e4d11664fcdf728de01932fbb26d8 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd @@ -422,6 +422,7 @@ ARCHITECTURE str OF sdp_station IS CONSTANT c_ring_nof_mac : NATURAL := 12; -- Using 9 out of 12 (this is NOT optimized away during synthesis), must match one of the MAC IP variations, e.g. 1, 3, 4, 12, 24, 48 SIGNAL gn_index : NATURAL := 0; + SIGNAL O_rn : NATURAL := 0; SIGNAL this_rn : STD_LOGIC_VECTOR(c_byte_w-1 DOWNTO 0); SIGNAL sdp_info : t_sdp_info := c_sdp_info_rst; @@ -612,7 +613,10 @@ BEGIN ring_info => ring_info ); - this_rn <= TO_UVEC(gn_index - TO_UINT(ring_info.O_rn), c_byte_w) WHEN rising_edge(dp_clk); -- Using register to ease timing closure. + -- Map O_rn in gn_index range 0:31 (c_sdp_W_gn_id = 5), to determine RN + -- index of this_rn + O_rn <= TO_UINT(ring_info.O_rn(c_sdp_W_gn_id-1 DOWNTO 0)); + this_rn <= TO_UVEC(gn_index - O_rn, c_byte_w) WHEN rising_edge(dp_clk); -- Use register to ease timing closure. ----------------------------------------------------------------------------- -- node_adc_input_and_timing (AIT)