FHS-VCC All Bands Controller - ICD MCS to FHS-VCC
Overview
This document serves as the internal ICD between MCS and the FHS-VCC. The FHS-VCC All Bands Controller provides the control layer between MCS and the subordinate FHS-VCC devices. Implemented as a Tango Device server using the 1.0.0+ version of the ska-tango-base classes.
Scenario Diagram

Device Attributes
Name |
Type |
Read/Write |
Description |
|---|---|---|---|
|
DevString |
R |
Associated dish identifier |
|
|
R |
Read attribute for applied gain multipliers size= |
|
|
R |
Read attribute for applied gain multipliers on fine channels to enable PSS`. |
|
|
R |
Read attribute for applied gain multipliers used for FSs selected for TCB channels`. |
|
DevEnum |
R |
Frequency band that is currently configured |
|
DevString |
R |
Identifier of the current scan configuration |
|
DevULong |
R |
Identifier of the current scan |
|
DevULong64 |
R |
Input sample rate read attribute |
|
DevLong[2] |
R |
Frequency band offset, received during scan configuration |
|
Scalar |
R/W |
Requested RFI Headroom, in decibels (dB), to be applied when Auto-set gains is requested (default: 3dB) |
|
DevUShort |
R |
Current Subarray the VCC is a member of. |
|
DevFloat |
R/W |
Measurement interval for Noise Diode calculations, provided as an integer number of samples at the channel resolution where the power is being measured. |
|
DevUShort |
R/W |
The reporting interval is an integer number of measurement intervals, applicable to Noise Diode reporting. |
Device Properties
Name |
Type |
Description |
|---|---|---|
|
DevString |
Fully Qualified Domain name (FQDN) for the 1,2& 3 OSPPFB Channelizer lower level device |
|
DevString |
FQDN for the 4&5 stream 1 OSPPFB Channelizer lower level device |
|
DevString |
FQDN for the 4&5 stream 2 OSPPFB Channelizer lower level device |
|
DevString |
FQDN for the Wideband Power Meter for B123 |
|
DevString |
FQDN for the Wideband Power Meter for B45.1 |
|
DevString |
FQDN for the Wideband Power Meter for B45.2 |
|
Array of DevStrings (size = 26) |
FQDNs for the FS powers meters on each of the 26 lanes following the FS Selection IP BIock |
|
DevString |
FQDN for the FS Packetizer |
|
DevString |
FQDN for the FS Selection lower level device |
|
DevString |
FQDN for Wideband Frequency Shifter lower level device |
|
DevString |
FQDN for Wideband Frequency Input Buffer lower level device |
|
DevString |
FQDN for Ethernet Media Access Control (MAC) lower level device likely only needed for testing purposes in loopback mode |
Publish Events
Name |
Type |
Description |
|---|---|---|
healthState |
HealthState Enum |
Publishes a change event on the health state if any changes were detected from the low-level devices, the value holds the reason for the change in state. |
gains |
|
Publishes a change event if the gain values have been updated as a result of a gains stabilization. |
pssGains |
|
Publishes a change event if the gain values have been updated as a result of a gains stabilization across PSS fine channels. |
tcbGains |
|
Publishes a change event if the gain values have been updated as a result of a gains stabilization on selected FSs used for TCB. |
frequencyBand |
DevEnum |
Change event published if the band changed successfully. |
Commands
Name |
Input Type |
Input Parameter |
Allowed in modes |
Description |
|---|---|---|---|---|
|
JSON String |
See below. |
IDLE, READY |
Configure parameters for the next scan(s). Parameters are propagated down to low-level device servers. Sets the state to CONFIGURING, if the inputted JSON can be successfully parsed the state is set to READY. |
|
String |
The identifier of the current scan |
READY |
Start the scan using the last set of parameters passed via the |
|
void |
n/a |
READY |
Resets the device and changes the state to IDLE |
|
void |
n/a |
IDLE, READY, SCANNING |
Sets the device state to ABORTED and aborts all running/queued commands |
|
void |
n/a |
SCANNING |
Completes the scan and changes the device back to the READY state. |
|
void |
n/a |
ABORTED, FAULT |
Reset the observing device from a FAULT/ABORTED obsState to IDLE. Initially sets the state to RESETTING, resets the configuration of the device to the default and then sets the state to IDLE on completion. |
|
Scalar |
Requested RFI headroom. |
SCANNING |
This command triggers the algorithm to determine and adjust filter gains and levels and takes as input the optional parameter Headroom. |
|
Scalar |
Dwell Time |
SCANNING |
This command triggers algorithm that measures and adjusts Transient Capture Buffer (TCB) re-quantizer gain settings to provide optimal sensitivity. ‘Dwell time” specifies how long to integrate to determine the quantizer gain settings (seconds). |
|
int |
Subarray ID |
Command to update the current subarray membership of the VCC. If the VCC is not currently assigned to a subarray, i.e. its subarray_id attribute is 0, then its membership is updated and the subarray_id attribute is set appropriately. Otherwise, if the current subarray_id > 0, indicating the VCC has already been assigned to a differing subarray, then the command is REJECTED. |
|
|
Timestamp |
Starting epoch to begin transient capture |
SCANNING |
Command which triggers the offload of transient data for the given VCC. Data is offloaded relative to the start time of the capture and the duration configured within the scan. On command execution, writing to the transient buffer is locked, and it is iterated over to construct a capture, starting at the provided start time and lasting for the provided duration, before it is transmitted over the 400GbE to SDP. |
|
JSON string |
See below. |
READY, SCANNING |
Update delay tracking with new High order delay models required for PSS processing. |
|
int |
Optional - Index for a frequency band {1-6} |
N/A |
Returns a 2-Dimensional list of previously set auto-set gains. |
|
(TBD) |
Placeholder: Applies updates to Jones Matrix polarization correction for fine channels. |
||
|
(TBD) |
Placeholder: TBD: Retrieves Bandpass correction coefficients required when PSS is configured. |
Command Parameter Definitions
UpdateSubarrayMembership(int)
Parameters
Name |
Type |
Description |
Range |
|---|---|---|---|
subarray_id |
int |
Subarray ID to assign this VCC to. If 0, the subarray membership of the VCC is reset. |
0-16 |
Returns
Returns ResultCode.OK if the VCC could be successfully assigned or the value has been cleared. The command is a LRC to ensure no race conditions can occur between subarrays.
Errors
Returns ResultCode.REJECTED if the VCC is already assigned to a subarray and the ID provided is not equal to 0. Membership must be cleared before reassignment.
ConfigureScan()
Parameters
Name |
Type |
Description |
Range |
|---|---|---|---|
|
string |
Identifier of the current scan configuration |
|
|
string |
Expected Dish ID for the VCC |
MKT000-MKT063 or |
|
string |
Frequency band for the current scan |
(“1”,”2”,”5a”,”5b”) |
|
long |
See |
|
|
long |
See |
|
|
PowerMeterConfig |
Configuration for the wideband power meter pre-B123 OSPPFB Channelizer |
|
|
PowerMeterConfig |
Configuration for the wideband power meter pre-B45 sub-band 1 OSPPFB Channelizer |
|
|
PowerMeterConfig |
Configuration for the wideband power meter pre-B45 sub-band 2 OSPPFB Channelizer |
|
|
Array of FSLaneConfig(size = 26) |
Configuration the set of 26 FS power meters, each element specifies config for relative to an FS lane following the FS Selection handling either 10 FS in Band 1&2, 15 in Band 4 or 26 in Band 5 (a or b). |
|
|
Array of int {0-2} (size = 2) |
Required in band 5 (a or b) the two streams produce 15 frequency slices each through the B45.1 and B45.2 channelizers for a total of 30 frequency slices however, only 26 outputs are available within the FS selection IP block. Therefore, the start channel index is used to mitigate the number of FSs for both streams. |
|
|
Array of Floats |
Center frequency for the band-of-interest. Required if band is 5a or 5b; not specified for other bands |
5A: 5.85 to 7.25 GHz |
|
float |
Number of sample frames that indicates the worst case state transition in the event of packet loss/corruption within the Wideband Input Buffer |
0 to 65535 |
|
uint64_t |
Dish sample rate factoring in the frequency band and the freq_offset_k |
3,960,001,800 to 11,891,998,800 |
|
Array of DevDouble (size = |
Specifies the gain of each channel in the VCC for stream 1 (e.g. VCC-B123 OSPPFB or VCC-B45 OSPPFB 1) |
When frequency band is: |
|
Array of DevDouble (size = |
Specifies the gain of each channel for the VCC-B45 OSPPFB 2 |
Size = 30 |
|
bool |
Is PSS being configured? |
|
|
PSSConfig |
The PSS configuration, used if PSS is being configured (is_pss=True) |
Power Meter Config
Name |
Type |
Description |
Range |
|---|---|---|---|
|
float |
Averaging interval in seconds. The power meters implement a block moving average, when interval |
|
|
int |
Specifies the mode used for to handle flagged data. |
0 - Ignore |
FS Lane Config Definition:
Name |
Type |
Description |
Range |
|---|---|---|---|
|
uint16 |
VLAN identifier for use in network switch map to the given FS to an FSP (Used for the Packetizer) |
$[[2, 1001], [1006, 4094]]$ |
|
int |
Identifier of the frequency slice |
$[1,26]$ |
|
PowerMeter Config |
Power Meter configuration to configure the ND Power Meter for the fs lane equal to |
PSS Config
Name |
Type |
Description |
Range |
|---|---|---|---|
|
Array of SearchWindow Config |
Provides configuration for up to two 300 MHz Search Windows, providing input Transient Capture Buffer and/or PSS beam-forming. |
Size=1 or 2 |
|
RDTConfig |
See below definition. TBD: The size of this config relative to the 6 RDTs. |
|
|
bool |
Is Transient Capture Buffer enabled? |
|
|
int[2] |
FS Identifiers for use in the TB FS Selection block prior to requantization. |
|
|
int |
Period before requested epoch to capture transient data. |
2s or 4s |
|
int |
Period after requested epoch to capture transient data. |
20s or 40s |
|
int |
The bit size of the FS to be requantized to for use in the buffers. |
4 or 8 |
|
string |
Destination address for offload of transient buffer data. This must be validated to map to the SDP port, due this TBD if we need to provide this configuration option if we know the destination. |
SearchWindow Config
Name |
Type |
Description |
Range |
|---|---|---|---|
|
int |
Identifier of the 300MHz Search Window. |
1-2 |
|
int |
The Search Window tuning in Hertz (Hz) is provided in absolute terms as RF center frequency. Based on this, Mid.CBF calculates its tuning within the data stream received from the receptor. |
The Search Window must be placed within the observed Band. If partially out of the observed Band a warning is generated. If completely outside of the observed Band an exception is generated and configuration is rejected. |
|
int |
Parameter to specify the sizes of the SWs, provided as integers 1,2, …, 10, which represent multiples of 40 MHz |
RDT Config
Name |
Type |
Description |
Range |
|---|---|---|---|
|
long |
The sample rate of the incoming signal. |
>= 0 |
|
long |
The desired sample rate of the outgoing signal. |
>= 0 |
|
double |
The duration, in seconds, for which each FODM should be valid, i.e., this should represent the difference between each FODM’s start_ts and stop_ts. Default is 0.01 (10ms). |
>= 0 |
|
long |
The “needs filling” threshold of elements in the FW circular buffer, below which the DS will start generating and loading more FODMs into the FW. Default is 3000 (30 seconds of 10ms FODMs). |
>= 0 |
|
long |
The “low” threshold of elements in the FW circular buffer, below which the DS will move to a DEGRADED HealthState. Default is 500 (5 seconds of 10ms FODMs). |
>= 0 |
|
double |
The time offset, in seconds, which is added to the current timestamp of the IP to determine the minimum allowed start timestamp, rounded up to the next PPS, for FODMs to be provided to the FW driver (which then loads them into the circular buffer). All FODMs generated with start timestamps before this calculated minimum will be discarded. |
>= 0 |
|
long |
The number of points to use in the Least Squares (LSQ) linear fitting algorithm for converting HODMs to FODMs. Default is 100. |
>= 0 |
|
double |
The frequency downshift that was applied to the input signal in the VCC IP(?). |
|
|
double |
A fine frequency shift to additionally apply to the output signal. This covers any residual wideband frequency shift and alignment of channels between frequency slices. |
|
|
double |
The wideband (WB) frequency shift that was applied to the input signal in the Frequency Shifter IP(?). |
|
|
double |
The frequency shift required due to SCFO sampling. (TODO: Need more detail?) |
Returns
Implmented as a LRC. Once the task has completed for a successful command completion, the command will return ResultCode.OK with message ConfigureScan completed OK.
Errors
Bad Request: provided configuration does not match required JSON schema definition or input critieria for a specific band. Returns ResultCode.REJECTED and message: Arg provided does not meet ConfigureScan criteria: {reason}
State Model violation: there was an attempt to call a command that violates the current ObsState. Returns ResultCode.REJECTED and message Attempted to call ConfigureScan command from an incorrect state
Low-level device failure: error configuring a IP block low-level device. Returns ResultCode: REJECTED, message: Configuration of low-level fhs device failed: {device name}
Server Error: unexpected error occured on server. Returns ResultCode: FAILED, message: Failed to an unexpected exception during ConfigureScan
Scan(DevLong)
Parameters
Name |
Type |
Description |
|---|---|---|
|
long |
Identifier of the current scan |
UpdateDelayModels(DevString)
Parameters
Name |
Type |
Description |
Range |
|---|---|---|---|
|
Double |
||
|
Double |
||
|
Double |
||
|
String |
||
|
Integer |
||
|
Array of JSON (format Receptor Delays) |
Receptor Delays Config
Name |
Type |
Description |
Range |
|---|---|---|---|
|
uint16 |
Receptor id to update the delay model for |
TBD |
|
Vector of Double |
||
|
Double |
GoToIdle()
Parameters
n/a
EndScan()
Parameters
n/a
AutoSetFilterGains(int)
Parameters
Name |
Type |
Description |
Range |
|---|---|---|---|
|
int - Optional |
Requested RFI Headroom, in decibels (dB), to be accounted for pre-requantization (default: 3 dB) |
OffloadTransientBufferCapture(DevLong)
Parameters
Name |
Type |
Description |
Range |
|---|---|---|---|
|
long |
Epoch start time to begin transient buffer capture |
GetStoredGainValues(int) - Fast Command
Parameters
Name |
Type |
Description |
Range |
|---|---|---|---|
|
int - Optional |
Frequency Band of interest for retrieving gain corrections (uses same definition as Frequency Band used within ConfigureScan) |
1-6 |
Returns
Returns a Float[][][] of digital bandpass corrections for the specified of band_id.
If a band_id is not provided All gains corrections are returned of the format [i → frequency band, j → gain value for channel i, pol % 2]
Abort()
Parameters
n/a
ObsReset()
Parameters
n/a