From 28c539302c131b77b3daba42a72b6d358ab0b63f Mon Sep 17 00:00:00 2001 From: Eric Kooistra <kooistra@astron.nl> Date: Wed, 17 May 2023 08:26:11 +0200 Subject: [PATCH] Added ring control points usage. --- .../sdp_ring_settings_per_station.txt | 228 ++++++++++++++++++ 1 file changed, 228 insertions(+) create mode 100644 applications/lofar2/doc/prestudy/sdp_ring_settings_per_station.txt diff --git a/applications/lofar2/doc/prestudy/sdp_ring_settings_per_station.txt b/applications/lofar2/doc/prestudy/sdp_ring_settings_per_station.txt new file mode 100644 index 0000000000..f145caafba --- /dev/null +++ b/applications/lofar2/doc/prestudy/sdp_ring_settings_per_station.txt @@ -0,0 +1,228 @@ +############################################################################### +# Title: Ring settings per station +# +# Author: Eric Kooistra +# Date: 17 May 2023 +# +############################################################################### + +Contents: +1) SDP parameter definitions +2) Ring configurations +3) Ring setup control points +4) Verify ring setup + +References: +[1] https://support.astron.nl/confluence/display/L2M/L3+Station+Digital+Processor+Design+Document +[2] https://support.astron.nl/confluence/display/L2M/L3+SDP+Decision%3A+SDP+Parameter+definitions +[3] https://support.astron.nl/confluence/display/L2M/L2+STAT+Decision%3A+SC+-+SDP+OPC-UA+interface +[4] https://support.astron.nl/confluence/display/L2M/L2+STAT+Decision%3A+SC+-+SDP+OPC-UA+interface+presentation + + +1) SDP parameter definitions [2]: + +LB = Low Band +HB = High Band + +UniBoard2 has 4 nodes (FPGAs) + +RN = Ring Node index (range 0:15) +GN = Global Node index (range 0:255) + +O_rn is GN index of first node in ring +N_rn is number of nodes in the ring +P_sq = N_rn // 2 + 1 , is number of XST cells per node +N_hop = P_sq - 1, is number of transport hops along the ring for XST packets + + +2) Ring configurations +The ring settings define where the cable connections between UniBoard2 are and +depend on the station type and antenna band [1]: + +a) LB: same in all stations: + +* SDPTR instance with: + . O_rn = 0 + . N_rn = 16 + . P_sq = 9 + . RN 0:15 = GN 0:15 + . RN: 0 1 2 3 cable 4 5 6 7 cable 8 9 10 11 cable 12 13 14 15 cable back to 0 + +b) HB: different per station +- International station: + * SDPTR instance with: + . O_rn = 16 + . N_rn = 16 + . P_sq = 9 + . RN 0:15 = GN 16:31 + . RN: 0 1 2 3 cable 4 5 6 7 cable 8 9 10 11 cable 12 13 14 15 cable back to 0 + +- Remote station + * SDPTR instance with: + . O_rn = 16 + . N_rn = 8 + . P_sq = 5 + . RN 0:7 = GN 16:23 + . RN: 0 1 2 3 cable 4 5 6 7 cable back to 0 + +- Core station + * HB ear 0: SDPTR instance with + . O_rn = 0 + . N_rn = 4 + . P_sq = 3 + . RN 0:3 = GN 16:19 + . RN: 0 1 2 3 cable back to 0 + * HB ear 1: SDPTR instance with: + . O_rn = 20 + . N_rn = 4 + . P_sq = 3 + . RN 0:3 = GN 20:23 + . RN: 0 1 2 3 cable back to 0 + + +3) Ring setup control points + +In general form: + +# Ring common: +FPGA_ring_node_offset_RW = [O_rn]*N_rn +FPGA_ring_nof_nodes = [N_rn]*N_rn + +# XST setup: +FPGA_xst_ring_nof_transport_hops = [N_hops]*N_rn + +Specified per ring configuration: + +a) LB all stations + +# Ring common: +FPGA_ring_node_offset_RW = [0]*16 +FPGA_ring_nof_nodes = [16]*16 +FPGA_ring_use_cable_to_next_rn = [False,False,False,True,False,False,False,True,False,False,False,True,False,False,False,True] +FPGA_ring_use_cable_to_previous_rn = [True,False,False,False,True,False,False,False,True,False,False,False,True,False,False,False] + +# XST setup: +FPGA_xst_ring_nof_transport_hops = [8]*16 + +# BF setup: +FPGA_xst_ring_nof_transport_hops [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0] + + +b1) HB international station + +# Ring common: +FPGA_ring_node_offset_RW = [16]*16 +FPGA_ring_nof_nodes = [16]*16 +FPGA_ring_use_cable_to_next_rn = [False,False,False,True,False,False,False,True,False,False,False,True,False,False,False,True] +FPGA_ring_use_cable_to_previous_rn = [True,False,False,False,True,False,False,False,True,False,False,False,True,False,False,False] + +# XST setup: +FPGA_xst_ring_nof_transport_hops = [8]*16 + +# BF setup: +FPGA_xst_ring_nof_transport_hops [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0] + + +b2) HB remote station + +# Ring common: +FPGA_ring_node_offset_RW = [16]*8 +FPGA_ring_nof_nodes = [8]*8 +FPGA_ring_use_cable_to_next_rn = [False,False,False,True,False,False,False,True] +FPGA_ring_use_cable_to_previous_rn = [True,False,False,False,True,False,False,False] + +# XST setup: +FPGA_xst_ring_nof_transport_hops = [4]*16 + +# BF setup: +FPGA_xst_ring_nof_transport_hops [1,1,1,1,1,1,1,0] + + + +b3) HB core station + +HB ear-0: + +# Ring common: +FPGA_ring_node_offset_RW = [16]*4 +FPGA_ring_nof_nodes = [4]*4 +FPGA_ring_use_cable_to_next_rn = [False,False,False,True] +FPGA_ring_use_cable_to_previous_rn = [True,False,False,False] + +# XST setup: +FPGA_xst_ring_nof_transport_hops = [2]*4 + +# BF setup: +FPGA_xst_ring_nof_transport_hops [1,1,1,0] + + +HB ear-1: + +# Ring common: +FPGA_ring_node_offset_RW = [20]*4 +FPGA_ring_nof_nodes = [4]*4 +FPGA_ring_use_cable_to_next_rn = [False,False,False,True] +FPGA_ring_use_cable_to_previous_rn = [True,False,False,False] + +# XST setup: +FPGA_xst_ring_nof_transport_hops = [2]*4 + +# BF setup: +FPGA_xst_ring_nof_transport_hops [1,1,1,0] + + + +4) Verify ring setup + +SDP processing enable: +FPGA_processing_enable [True]*N_rn + +XST processing enable/restart: +FPGA_processing_enable [True]*N_rn + +Then check packet arrival latencies along the ring via: + +FPGA_xst_ring_rx_latency_RW for XST packets +FPGA_bf_ring_rx_latency_RW for beamlet packets + +Expected XST crosslet packet arrival latencies (unit 5 ns) for LB with N_rn = 16: + +kooistra@dop386:~/git/sdptr$ sdp_rw.py --host 10.99.0.250 --port 4842 -r xst_ring_rx_latency +read xst_ring_rx_latency: +node 64: -1 -1 -1 -1 -1 -1 -1 -1 1791 1569 1349 1150 927 661 462 264 +node 65: 257 -1 -1 -1 -1 -1 -1 -1 -1 1786 1566 1365 1142 876 680 479 +node 66: 471 248 -1 -1 -1 -1 -1 -1 -1 -1 1777 1579 1357 1090 890 694 +node 67: 694 468 262 -1 -1 -1 -1 -1 -1 -1 -1 1798 1569 1341 1103 920 +node 68: 921 679 479 256 -1 -1 -1 -1 -1 -1 -1 -1 1785 1566 1339 1142 +node 69: 1129 899 699 472 251 -1 -1 -1 -1 -1 -1 -1 -1 1787 1563 1356 +node 70: 1346 1122 921 697 469 263 -1 -1 -1 -1 -1 -1 -1 -1 1772 1570 +node 71: 1574 1347 1128 906 682 481 257 -1 -1 -1 -1 -1 -1 -1 -1 1793 +node 72: 1815 1589 1370 1151 908 707 484 287 -1 -1 -1 -1 -1 -1 -1 -1 +node 73: -1 1804 1581 1363 1119 918 696 493 246 -1 -1 -1 -1 -1 -1 -1 +node 74: -1 -1 1800 1579 1352 1134 909 707 460 255 -1 -1 -1 -1 -1 -1 +node 75: -1 -1 -1 1794 1569 1345 1121 919 674 479 256 -1 -1 -1 -1 -1 +node 76: -1 -1 -1 -1 1810 1589 1367 1145 901 705 484 283 -1 -1 -1 -1 +node 77: -1 -1 -1 -1 -1 1795 1594 1352 1108 929 707 511 266 -1 -1 -1 +node 78: -1 -1 -1 -1 -1 -1 1800 1576 1347 1147 919 718 489 247 -1 -1 +node 79: -1 -1 -1 -1 -1 -1 -1 1801 1570 1353 1124 927 703 452 248 -1 + +Expected beamlet packet arrival latencies (unit 5 ns) for LB with N_rn = 16: + +kooistra@dop386:~/git/sdptr$ sdp_rw.py --host 10.99.0.250 --port 4842 -r bf_ring_rx_latency +read bf_ring_rx_latency: +node 64: -1 +node 65: 4884 +node 66: 6932 +node 67: 9000 +node 68: 11041 +node 69: 13094 +node 70: 15126 +node 71: 17178 +node 72: 19251 +node 73: 21269 +node 74: 23319 +node 75: 25366 +node 76: 27442 +node 77: 29471 +node 78: 31514 +node 79: 33574 -- GitLab