Tile Beam Tracking Test

Purpose

This test verifies the beam tracking functionality in the tile beamformer firmware.

The tile beamformer is a firmware component that forms beams by summing signals from 16 antennas for a given coarse frequency channel. Beam tracking is achieved by applying a linear delay rate to each antenna within a beam. The maximum configurable delay rate is approximately 17.24 ps/s.

Beam tracking is validated by applying a set of delay rates to selected antennas and comparing the resulting beam values over time against calculated values. Beam data is sampled by requesting the LMC data type “beam data” and capturing it using the DAQ receiver.

Note

This test operates only on the first TPM in a station.

Note

For data acquisition to function correctly:

  • TPM network interfaces must be operational.

  • The link to the LMC destination must be active.

  • The LMC destination must be configured to route traffic to the server running the tests.

  • For simplicity, the CSP and LMC destinations should use the same network interface, routing all traffic to the test server.

Tile Beamformer Region Selection and Calibration Coefficients

The test configures the TPM beamformer to use the maximum number of beams that the FPGA firmware supports. The beamformer regions are made up of 8 consecutive frequency channels per beam (regardless of the number of beams being configured). The first beam’s first channel is chosen to be the frequency channel that corresponds to the start_frequency test parameter.

To also verify the antenna masking and subarray forming functionality of the FPGA firmware, different antenna to beam polarisation mappings are configured using the calibration coefficients in the tile beamformer. For example, for beam 0 polarisation 0, only antenna 0 contributes while for polarisation 1, antennas 0-15 (all antennas) contribute. These mappings are unique per beam (0-47) and can be found in the docstring of the execute() function in the test source code.

Quantisation & Limits of Delay Rates in Firmware

Tracking delay rates in firmware are stored as 12-bit signed integers (programmed_rate), with valid values from -2048 to +2047 units.

To convert the intended delay rate (in seconds per second) into the delay rate programmed in firmware:

programmed_rate = int(round(intended_rate * ((1024.0 * 1080e-9 * 2**37) / 1280e-9)))

To reverse this and get the effective rate used in calculations:

effective_rate = programmed_rate * 1280e-9 / (1024.0 * 1080e-9 * 2**37)

This gives us the range limits of approximately ±17.24 ps/s for the tracking delay rates.

The step width of the quantised delay rate is approximately 8.42 fs/s per unit of programmed_rate. This means each increment or decrement in the 12-bit signed integer (programmed_rate`) changes the effective delay rate by about 8.42 fs/s.

Note

Always use effective_rate for beam calculations, as quantisation may slightly alter the intended rate.

Calculation of Expected Beam Values

For all beams in the test, 16 linear tracking delay rates r are programmed for the 16 antennas on a TPM:

r = [
    -1.72382931e-11, -1.50835065e-11, -1.29287198e-11, -1.07739332e-11,
    -8.61914655e-12, -6.46435991e-12, -4.30957327e-12, -2.15478664e-12,
     0.00000000e+00,  2.15478664e-12,  4.30957327e-12,  6.46435991e-12,
     8.61914655e-12,  1.07739332e-11,  1.29287198e-11,  1.50835065e-11
]  # units: s/s

The signals from the tests generator for all 16 antennas are identical, having a constant frequency f.

Given that:

  • A₀ = magnitude of the beam at time t = 0

  • φ₀ = phase of the beam at time t = 0

  • rₖ = Tracking delay rate programmed for antenna k

The expected phase φₖ(t) of the tracked beam at time t for channel frequency f for antenna k is given by:

\[\phi_k(t) = \phi_0 + 2\pi f \times r_k \times t\]

The expected complex beam value B(t) at time t made from all 16 antennas can then be calculated using the formula:

\[\mathbf{B}(t) = \text{round}\left( A_0 \cdot \tfrac{1}{16} \sum_{k=0}^{15} e^{j \phi_k(t)} \right)\]

Methodology

  1. Connection is established to the station and the tile with the specified TPM ID.

  2. Beamformer regions are configured for 8 channels per beam for the maximum number of beams.

  3. The calibration coefficients matrix is generated for mapping certain antennas to certain beam polarisations. Unique for each beam.

  4. DAQ receiver is configured and initialised with the required UDP port and network interface.

  5. All JESD (ADC) channels are disabled to get ready to use the internal test generator.

  6. The test starts at the first specified frequency channel. This defaults to channel 4.

  7. The internal tone generator is configured with the centre frequency of the given frequency channel and zero delays.

  8. The calibration coefficient matrices are programmed with a gain of 1.0, such that one set of antennas contributes to beam polarisation 0 and the other set contributes to beam polarisation 1.

  9. The delay and delay rates are initially set to zero in firmware to generate an unpointed reference beam of the selected antennas.

  10. A linear array of 16 delay rates in the range [-max_rate, max_rate) is programmed for the 16 antennas to generate a tracked beam where max_rate ≈ 17.2 ps/s.

  11. The tracked beam is captured by requesting an LMC snapshot of beam data from the TPM and compared with the expected beam roughly every 2.5 seconds.

  12. The beam at time t=0 serves as the reference unpointed beam. Its phase and magnitude are used in calculating expected tracked beam values.

  13. This entire process is repeated (starting from step 7) for more channels up to the last specified channel. Default last channel is 11.

Results

The plots in this section show measured (captured) and expected (calculated) tracked beam values over time when the test is run in its default configuration. By default, starting frequency is set as 50 MHz and channels 4-11 are tested:

../../_images/beam_data_channel_4.png ../../_images/beam_data_channel_5.png ../../_images/beam_data_channel_6.png ../../_images/beam_data_channel_7.png ../../_images/beam_data_channel_8.png ../../_images/beam_data_channel_9.png ../../_images/beam_data_channel_10.png ../../_images/beam_data_channel_11.png