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 086c0fff928623108bb0e6be04e7aa555bb1196b..3c803f89870113b0e99a3fbbbef3a92218a4cb63 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 @@ -602,10 +602,10 @@ BEGIN dp_bsn_monitor_in_siso_arr(4) <= dp_offload_tx_src_in_arr(0); ----------------------------------------------------------------------------- - -- Beamlet routing from 10GbE inputs T2..T0 to unfolder correlator inputs 23..0: + -- Beamlet routing from 10GbE inputs T2..T0 to unfolder correlator inputs 23..0: ***48 VISIBILITY VERSION*** -- . Beamlet indices between parentheses () - -- . Stream indices between brackets [] /-Insert Mesh terminals here (?) after deinterleaved_arr - -- / + -- . Stream indices between brackets [] + -- -- T2(B6,B7)--[11]--deinter-[1]--(T2,B7)--[23] [23]--(T2,B7)--[1]-reinter-[11]--(T1,B7),(T2,B7)--unfold-[1]--(T2,B7)-->[23] -- \[0]--(T2,B6)--[22] [15]--(T1,B7)--[0]/ \[0]--(T1,B7)-->[22] -- (B4,B5)--[10]--deinter-[1]--(T2,B5)--[21] [07]--(T0,B7)--[1]-reinter-[10]--(T2,B6),(T0,B7)--unfold-[1]--(T0,B7)-->[21] @@ -634,6 +634,41 @@ BEGIN -- interleaved_arr | reinterleave_in_arr | Unfolded correlator inputs -- deinterleaved_arr reinterleave_out_arr,wpfb_out_arr,correlator_snk_in_arr ----------------------------------------------------------------------------- + + ----------------------------------------------------------------------------- + -- Beamlet routing from 10GbE inputs T2..T0 to unfolder correlator inputs 23..0: ***FINAL MESH VERSION*** + -- . Beamlet indices between parentheses () The exact indices depend on FPGA index--FIXME + -- . Stream indices between brackets [] / To do: BSN align these 24 streams --FIXME + -- [<-----------/------------>] / + -- T2(B6,B7)--[11]--deinter-[1]--(T2,B7)--[23]--MESH_TX[3][2] MESH_RX[3][2]--[23]--(T23,B0)--[1]-reinter-[11]--(T22,B0),(T23,B0)--unfold-[1]--(T23,B0)-->[23] + -- \[0]--(T2,B6)--[22]--MESH_TX[3][1] MESH_RX[3][1]--[22]--(T22,B0)--[0]/ \[0]--(T22,B0)-->[22] + -- (B4,B5)--[10]--deinter-[1]--(T2,B5)--[21]--MESH_TX[3][0] MESH_RX[3][0]--[21]--(T21,B0)--[1]-reinter-[10]--(T20,B0),(T21,B0)--unfold-[1]--(T21,B0)-->[21] + -- \[0]--(T2,B4)--[20]--MESH_TX[2][2] MESH_RX[2][2]--[20]--(T10,B0)--[0]/ \[0]--(T20,B0)-->[20] + -- (B2,B3)--[09]--deinter-[1]--(T2,B3)--[19]--MESH_TX[2][1] MESH_RX[2][1]--[19]--(T19,B0)--[1]-reinter-[09]--(T18,B0),(T19,B0)--unfold-[1]--(T19,B0)-->[19] + -- \[0]--(T2,B2)--[18]--MESH_TX[2][0] MESH_RX[2][0]--[18]--(T18,B0)--[0]/ \[0]--(T18,B0)-->[18] + -- (B0,B1)--[08]--deinter-[1]--(T2,B1)--[17]--MESH_TX[1][2] MESH_RX[1][2]--[17]--(T17,B0)--[1]-reinter-[08]--(T16,B0),(T17,B0)--unfold-[1]--(T17,B0)-->[17] + -- \[0]--(T2,B0)--[16]--MESH_TX[1][1] MESH_RX[1][1]--[16]--(T16,B0)--[0]/ \[0]--(T16,B0)-->[16] + -- T1(B6,B7)--[07]--deinter-[1]--(T1,B7)--[15]--MESH_TX[1][0] MESH_RX[1][0]--[15]--(T15,B0)--[1]-reinter-[07]--(T14,B0),(T15,B0)--unfold-[1]--(T15,B0)-->[15] + -- \[0]--(T1,B6)--[14]--MESH_TX[0][2] MESH_RX[0][2]--[14]--(T14,B0)--[0]/ \[0]--(T14,B0)-->[14] + -- (B4,B5)--[06]--deinter-[1]--(T1,B5)--[13]--MESH_TX[0][1] MESH_RX[0][1]--[13]--(T13,B0)--[1]-reinter-[06]--(T12,B0),(T13,B0)--unfold-[1]--(T13,B0)-->[13] + -- \[0]--(T1,B4)--[12]--MESH_TX[0][0]\/MESH_RX[0][0]--[12]--(T12,B0)--[0]/ \[0]--(T12,B0)-->[12] + -- (B2,B3)--[05]--deinter-[1]--(T1,B3)--[11]--MESH_TX[3][2]/\MESH_RX[3][2]--[11]--(T11,B0)--[1]-reinter-[05]--(T10,B0),(T11,B0)--unfold-[1]--(T11,B0)-->[11] + -- \[0]--(T1,B2)--[10]--MESH_TX[3][1] MESH_RX[3][1]--[10]--(T10,B0)--[0]/ \[0]--(T10,B0)-->[10] + -- (B0,B1)--[04]--deinter-[1]--(T1,B1)--[09]--MESH_TX[3][0] MESH_RX[3][0]--[09]--(T09,B0)--[1]-reinter-[04]--(T08,B0),(T09,B0)--unfold-[1]--(T09,B0)-->[09] + -- \[0]--(T1,B0)--[08]--MESH_TX[2][2] MESH_RX[2][2]--[08]--(T08,B0)--[0]/ \[0]--(T08,B0)-->[08] + -- T0(B6,B7)--[03]--deinter-[1]--(T0,B7)--[07]--MESH_TX[2][1] MESH_RX[2][1]--[07]--(T07,B0)--[1]-reinter-[03]--(T06,B0),(T07,B0)--unfold-[1]--(T07,B0)-->[07] + -- \[0]--(T0,B6)--[06]--MESH_TX[2][0] MESH_RX[2][0]--[06]--(T06,B0)--[0]/ \[0]--(T06,B0)-->[06] + -- (B4,B5)--[02]--deinter-[1]--(T0,B5)--[05]--MESH_TX[1][2] MESH_RX[1][2]--[05]--(T05,B0)--[1]-reinter-[02]--(T04,B0),(T05,B0)--unfold-[1]--(T05,B0)-->[05] + -- \[0]--(T0,B4)--[04]--MESH_TX[1][1] MESH_RX[1][1]--[04]--(T04,B0)--[0]/ \[0]--(T04,B0)-->[04] + -- (B2,B3)--[01]--deinter-[1]--(T0,B3)--[03]--MESH_TX[1][0] MESH_RX[1][0]--[03]--(T03,B0)--[1]-reinter-[01]--(T02,B0),(T03,B0)--unfold-[1]--(T03,B0)-->[03] + -- \[0]--(T0,B2)--[02]--MESH_TX[0][2] MESH_RX[0][2]--[02]--(T02,B0)--[0]/ \[0]--(T02,B0)-->[02] + -- (B0,B1)--[00]--deinter-[1]--(T0,B1)--[01]--MESH_TX[0][1] MESH_RX[0][1]--[01]--(T01,B0)--[1]-reinter-[00]--(T00,B0),(T01,B0)--unfold-[1]--(T01,B0)-->[01] -- Note that we're also TX'ing the locally RX'ed telescope inputs T0..T2 as + -- \[0]--(T0,B0)--[00]--MESH_TX[0][0] MESH_RX[0][0]--[00]--(T00,B0)--[0]/ \[0]--(T00,B0)-->[00] -- it appears to be easier with the re-interleaving and BSN alignment. + -- ^ ^ ^ ^ ^ + -- interleaved_arr | mesh_tx_snk_in_2arr | Unfolded correlator inputs + -- deinterleaved_arr reinterleave_out_arr,wpfb_out_arr,correlator_snk_in_arr + ----------------------------------------------------------------------------- + gen_deinterleave_snk_in_arr: IF g_use_dumb_mesh_terminals=FALSE GENERATE dp_pipeline_snk_in <= interleaved_arr(0); dp_deinterleave_snk_in_arr <= interleaved_arr;