From deb7f6053eac35e64f5358e8fc477820cc36eb9e Mon Sep 17 00:00:00 2001 From: Reinier van der Walle <walle@astron.nl> Date: Wed, 7 Apr 2021 17:10:23 +0200 Subject: [PATCH] Corrected ta2_channel_cross offset constants --- .../ta2_channel_cross/ta2_channel_cross.vhd | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/applications/ta2/ip/ta2_channel_cross/ta2_channel_cross.vhd b/applications/ta2/ip/ta2_channel_cross/ta2_channel_cross.vhd index 4203f8ac92..1f4acf2012 100644 --- a/applications/ta2/ip/ta2_channel_cross/ta2_channel_cross.vhd +++ b/applications/ta2/ip/ta2_channel_cross/ta2_channel_cross.vhd @@ -109,15 +109,14 @@ ARCHITECTURE str OF ta2_channel_cross IS CONSTANT c_bsn_w : NATURAL := sel_a_b(g_use_bsn, g_bsn_w, 0); CONSTANT c_channel_w : NATURAL := sel_a_b(g_use_channel, g_channel_w, 0); - CONSTANT c_err_offset : NATURAL := (g_nof_bytes+1 * c_byte_w); + CONSTANT c_sop_offset : NATURAL := g_nof_bytes*c_byte_w; + CONSTANT c_eop_offset : NATURAL := g_nof_bytes*c_byte_w+1; + CONSTANT c_sync_offset : NATURAL := g_nof_bytes*c_byte_w+2; + CONSTANT c_empty_high : NATURAL := c_byte_w*(g_nof_bytes+1); + CONSTANT c_err_offset : NATURAL := c_byte_w*(g_nof_bytes+1); CONSTANT c_bsn_offset : NATURAL := c_err_offset+c_err_w; CONSTANT c_channel_offset : NATURAL := c_bsn_offset+c_bsn_w; - CONSTANT c_sop_offset : NATURAL := g_nof_bytes*c_byte_w; - CONSTANT c_eop_offset : NATURAL := g_nof_bytes*c_byte_w+1; - CONSTANT c_sync_offset : NATURAL := g_nof_bytes*c_byte_w+2; - CONSTANT c_empty_offset : NATURAL := c_byte_w*(g_nof_bytes+1); - SIGNAL dp_latency_adapter_tx_snk_in_arr : t_dp_sosi_arr(g_nof_streams-1 DOWNTO 0); SIGNAL dp_latency_adapter_tx_snk_out_arr : t_dp_siso_arr(g_nof_streams-1 DOWNTO 0); SIGNAL dp_latency_adapter_tx_src_out_arr : t_dp_sosi_arr(g_nof_streams-1 DOWNTO 0); @@ -200,7 +199,7 @@ BEGIN kernel_src_out_arr(stream).data(c_sop_offset) <= dp_latency_adapter_tx_src_out_arr(stream).sop; kernel_src_out_arr(stream).data(c_eop_offset) <= dp_latency_adapter_tx_src_out_arr(stream).eop; kernel_src_out_arr(stream).data(c_sync_offset) <= dp_latency_adapter_tx_src_out_arr(stream).sync WHEN g_use_sync ELSE '0'; - kernel_src_out_arr(stream).data(c_empty_offset-1 DOWNTO c_empty_offset-c_empty_w) <= dp_latency_adapter_tx_src_out_arr(stream).empty(c_empty_w-1 DOWNTO 0); + kernel_src_out_arr(stream).data(c_empty_high-1 DOWNTO c_empty_high-c_empty_w) <= dp_latency_adapter_tx_src_out_arr(stream).empty(c_empty_w-1 DOWNTO 0); kernel_src_out_arr(stream).valid <= dp_latency_adapter_tx_src_out_arr(stream).valid; dp_latency_adapter_tx_src_in_arr(stream).ready <= kernel_src_in_arr(stream).ready; dp_latency_adapter_tx_src_in_arr(stream).xon <= '1'; @@ -245,10 +244,10 @@ BEGIN END GENERATE; -- Assign correct data fields to control signals. - dp_latency_adapter_rx_snk_in_arr(stream).sop <= kernel_snk_in_arr(stream).data(c_byte_w*g_nof_bytes+0); - dp_latency_adapter_rx_snk_in_arr(stream).eop <= kernel_snk_in_arr(stream).data(c_byte_w*g_nof_bytes+1); - dp_latency_adapter_rx_snk_in_arr(stream).sync <= kernel_snk_in_arr(stream).data(c_byte_w*g_nof_bytes+2) WHEN g_use_sync ELSE '0'; - dp_latency_adapter_rx_snk_in_arr(stream).empty(c_empty_w-1 DOWNTO 0) <= kernel_snk_in_arr(stream).data(c_byte_w*(g_nof_bytes+1)-1 DOWNTO c_byte_w*(g_nof_bytes+1)-c_empty_w); + dp_latency_adapter_rx_snk_in_arr(stream).sop <= kernel_snk_in_arr(stream).data(c_sop_offset); + dp_latency_adapter_rx_snk_in_arr(stream).eop <= kernel_snk_in_arr(stream).data(c_eop_offset); + dp_latency_adapter_rx_snk_in_arr(stream).sync <= kernel_snk_in_arr(stream).data(c_sync_offset) WHEN g_use_sync ELSE '0'; + dp_latency_adapter_rx_snk_in_arr(stream).empty(c_empty_w-1 DOWNTO 0) <= kernel_snk_in_arr(stream).data(c_empty_high-1 DOWNTO c_empty_high-c_empty_w); dp_latency_adapter_rx_snk_in_arr(stream).valid <= kernel_snk_in_arr(stream).valid; kernel_snk_out_arr(stream).ready <= dp_latency_adapter_rx_snk_out_arr(stream).ready; -- Flow control towards source kernel_snk_out_arr(stream).xon <= dp_latency_adapter_rx_snk_out_arr(stream).xon; -- GitLab