beamf_fd
Overview
All tile beamformer, configuations including calibration, delay and beam pointing
Python Class & Methods Index
- class pyfabil.plugins.tpm.beamf_fd.BeamfFD(board, **kwargs)[source]
Frequency Domain Beamformer plugin
- compute_calibration_coefs()[source]
Compute the calibration coefficients and load them in the hardware. To be used after load_cal_curve(), load_antenna_tapering() and load_beam_angle
Obsolete, does not support subarrays, kept for backward compatibility
- current_frame()[source]
Return current frame processed by the tile beamformer
- Returns:
current frame number, in units of 256 ADC frames (276,48 us)
- load_antenna_tapering(tapering_coefs)[source]
Tapering_coefs is a vector of 8 values, one per antenna. Default (at initialization) is 1.0
Obsolete, does not support subarrays, kept for backward compatibility
- load_beam_angle(angle_coefs)[source]
Angle_coefs is an array of one element per beam, specifying a rotation angle, in radians, for the specified beam. The rotation is the same
for all antennas. Default is 0 (no rotation). A positive pi/4 value transfers the X polarization to the Y polarization. The rotation is applied after regular calibration. Rot_matrix[beam] then contains the rotation matrix of each beam
Obsolete, does not support subarrays, kept for backward compatibility
- load_cal_curve(antenna, beam, cal_coefficients)[source]
Calibration curve is specified for 512 frequency channels over the whole (0-400) MHz range. Calibration for unused frequency regions may assume any value (e.g. 0). Default (at initialization) is 1.0 for diagonal terms and 0.0 for cross diagonal terms.
Obsolete, does not support subarrays, kept for backward compatibility
- load_calibration(antenna, calibration_coefs)[source]
Loads calibration coefficients. calibration_coefs is a bidimensional complex array of the form calibration_coefs[channel, polarization], with each element representing a normalized coefficient, with (1.0, 0.0) the normal, expected response for an ideal antenna. Channel is the index specifying the channels at the beamformer output, i.e. considering only those channels actually processed and beam assignments. The polarization index ranges from 0 to 3.
0: X polarization direct element 1: X->Y polarization cross element 2: Y->X polarization cross element 3: Y polarization direct element
The calibration coefficients may include any rotation matrix (e.g. the parallactic angle), but do not include the geometric delay.
- Parameters:
antenna – Antenna number. Integer in range 0:8
calibration_coefs – Calibration coefficients. array [384, 4]
- load_delay(load_time=0, beam_mask=281474976710655)[source]
Transfers the delay to the delay computing hardware at the prescribed frame number (load_time) If load_time = 0 transfers the delay immediately.
- Parameters:
load_time – Prescribed load time (frame number). 0 = immediate
beam_mask – beams to be activated. Default: all. unsupported in this FW
- set_delay(delay_array, beam_index)[source]
The method specifies the delay in seconds and the delay rate in seconds/seconds. The delay_array specifies the delay and delay rate for each antenna. beam_index specifies which beam is described (range 0:7). Delay is updated inside the delay engine at the time specified by method load_delay
- Parameters:
delay_array – bidimensional array [8,2]. Each row contains 2 elements, as delay (in s) and delay rate (in s/s). One delay is specified for both polarization in each antenna
beam_index – hardware station beam to program. Range 0:8 (0:48 in future firmware)
- set_regions(region_array)[source]
- Set frequency regions.
Regions are defined in a 2-d array, for a maximum of 16 (48) regions. Actual limit defined in hardware by the size of the region_off table. Each element in the array defines a region, with the form [start_ch, nof_ch, beam_index] - start_ch: region starting channel (currently must be a
multiple of 2, LS bit discarded)
nof_ch: size of the region: must be multiple of 8 chans
beam_index: beam used for this region, range [0:8)
Total number of channels must be <= 384 The routine computes the arrays beam_index, region_off, region_sel, and the total number of channels nof_chans, and programs it in the HW
- Parameters:
region_array – Bidimensional array of regions
- switch_calibration_bank(time=0, force=False)[source]
Switch the calibration bank. To be performed after all calibration qantities have been updated on both FPGAS
- Parameters:
time – Time to perform bank switch (frame number). Default 0 = current time + 64 frames
force – Force immediate switch
- Returns:
bank used after bank switch (0 or 1)