diff --git a/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/apertif_unb1_correlator.vhd b/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/apertif_unb1_correlator.vhd index b57ad5052ddd43855fc14ca87ea858ddc32981df..225c152e9aed27b491f7f4a4efb4f7c930fbd99c 100644 --- a/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/apertif_unb1_correlator.vhd +++ b/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/apertif_unb1_correlator.vhd @@ -323,7 +323,9 @@ ARCHITECTURE str OF apertif_unb1_correlator IS SIGNAL correlator_src_out_arr : t_dp_sosi_arr(1-1 DOWNTO 0); -- 1GbE Visibility Offload - SIGNAL dp_fifo_dc_mixed_widths_snk_in : t_dp_sosi; + SIGNAL dp_fifo_sc_snk_in : t_dp_sosi; + SIGNAL dp_repack_data_snk_in : t_dp_sosi; + SIGNAL dp_repack_data_snk_out : t_dp_siso; SIGNAL apertif_unb1_correlator_vis_offload_snk_in : t_dp_sosi; SIGNAL apertif_unb1_correlator_vis_offload_snk_out : t_dp_siso; SIGNAL dp_offload_tx_src_out_arr : t_dp_sosi_arr(1-1 DOWNTO 0); @@ -989,29 +991,48 @@ BEGIN gen_wires_complex : IF g_sim=FALSE or g_sim_fast=FALSE GENERATE p_wires_complex : PROCESS(correlator_src_out_arr) BEGIN - dp_fifo_dc_mixed_widths_snk_in <= correlator_src_out_arr(0); - dp_fifo_dc_mixed_widths_snk_in.data(64-1 DOWNTO 0) <= correlator_src_out_arr(0).re(64/2-1 DOWNTO 0) & correlator_src_out_arr(0).im(64/2-1 DOWNTO 0); + dp_fifo_sc_snk_in <= correlator_src_out_arr(0); + dp_fifo_sc_snk_in.data(64-1 DOWNTO 0) <= correlator_src_out_arr(0).re(64/2-1 DOWNTO 0) & correlator_src_out_arr(0).im(64/2-1 DOWNTO 0); END PROCESS; END GENERATE; ----------------------------------------------------------------------------- -- 64b -> 32b ----------------------------------------------------------------------------- - u_dp_fifo_dc_mixed_widths : ENTITY dp_lib.dp_fifo_dc_mixed_widths + u_dp_fifo_sc : ENTITY dp_lib.dp_fifo_sc GENERIC MAP ( - g_wr_data_w => 64, - g_rd_data_w => 32, - g_use_ctrl => TRUE, - g_wr_fifo_size => 300 + g_data_w => 64, + g_use_ctrl => TRUE, + g_use_bsn => TRUE, + g_use_channel => TRUE, + g_bsn_w => 64, + g_channel_w => 16, + g_fifo_size => 300 + 20 ) PORT MAP ( - wr_rst => dp_rst, - wr_clk => dp_clk, - rd_rst => dp_rst, - rd_clk => dp_clk, + rst => dp_rst, + clk => dp_clk, + + snk_in => dp_fifo_sc_snk_in, + + src_in => dp_repack_data_snk_out, + src_out => dp_repack_data_snk_in + ); - snk_in => dp_fifo_dc_mixed_widths_snk_in, + u_dp_repack_data : ENTITY dp_lib.dp_repack_data + GENERIC MAP ( + g_in_dat_w => 64, + g_in_nof_words => 1, + g_out_dat_w => 32, + g_out_nof_words => 2 + ) + PORT MAP ( + rst => dp_rst, + clk => dp_clk, + snk_out => dp_repack_data_snk_out, + snk_in => dp_repack_data_snk_in, + src_in => apertif_unb1_correlator_vis_offload_snk_out, src_out => apertif_unb1_correlator_vis_offload_snk_in ); diff --git a/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/apertif_unb1_correlator_vis_offload.vhd b/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/apertif_unb1_correlator_vis_offload.vhd index fb2890c4b02116cd994e6f78405ef1f38b1220bc..eebe7c947147a6b1ab1142f0905b0f1f1a662e5b 100644 --- a/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/apertif_unb1_correlator_vis_offload.vhd +++ b/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/apertif_unb1_correlator_vis_offload.vhd @@ -188,6 +188,7 @@ BEGIN hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "udp_dst_port" ) DOWNTO field_lo(c_hdr_field_arr, "udp_dst_port" )) <= x"D0" & ID; hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "ip_src_addr" ) DOWNTO field_lo(c_hdr_field_arr, "ip_src_addr" )) <= x"0A63" & id_backplane & INCR_UVEC(id_chip, 1); + hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "id_channel_index" ) DOWNTO field_lo(c_hdr_field_arr, "id_channel_index" )) <= snk_in.channel(15 DOWNTO 0); hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "id_timestamp" ) DOWNTO field_lo(c_hdr_field_arr, "id_timestamp" )) <= snk_in.bsn; END GENERATE;