DBBC VLBI plugin
The EDD.dbbc collection implements a software-defined VLBI backend. It can
extract requested subbands from wideband voltage streams, package them as VDIF,
record or transmit the result, and translate VLBI Field System commands into
EDD Master Controller operations.
This page was verified against Galaxy collection version 1.0.1 and Python package version 1.0.0 in the supplied repository.
Signal chain
packetizer stream
|
v
DigitalDownConverter -- DigitalDownConverter:1 streams --> VDIFPacker
| |
disk VDIF UDP VDIF
The VDIF packer can also accept compatible raw packetizer input when no digital down-conversion is required. A spectrometer can subscribe commensally to the upstream voltage stream when network and compute capacity permit.
Roles
EDD.dbbc.ddc_processorGPU digital down-converter pipeline. Receives time-domain voltage data, mixes each requested local-oscillator frequency, performs rational resampling, and publishes upper and lower sidebands.
EDD.dbbc.vdif_packerGPU VDIF packing pipeline. Requantizes input samples, creates VDIF frames, records them, transmits UDP, and optionally produces live spectra.
EDD.dbbc.field_system_interfacePersistent protocol bridge rather than a normal EDD pipeline. It exposes a KATCP health endpoint and emulates DBBC and Mark 5 control endpoints for the VLBI Field System.
EDD.dbbc.jive5abDeploys JIVE5ab for compatible VDIF recording or transport workflows.
EDD.dbbc.edd_dbbcandEDD.dbbc.installerShared image-build and collection-install roles; they are not observation products.
Digital down-converter
The DDC is a streaming pipeline. Its default input format is
MPIFR_EDD_Packetizer:2 and its outputs use
DigitalDownConverter:1. For every input stream and f_lo value, define
two output streams: lower and upper sideband.
Key |
Default |
Meaning |
|---|---|---|
|
|
Mixer frequencies relative to the input stream. |
|
128 MHz |
Sample rate of every output sideband. |
|
|
One or more output handlers, normally |
|
|
|
|
32 |
Output sample bit depth recorded in the stream description. |
|
2048 |
Samples in an output SPEAD heap. |
|
0 |
First channel identifier assigned to generated sidebands. |
|
16 |
Slots in input and output DADA buffers. |
|
16777216 bytes |
Lower bound used while sizing processing buffers. |
|
false |
Development escape hatch when no suitable NUMA-local GPU/NIC exists. |
The input descriptor must provide sample rate, sync time, central frequency, band orientation, polarization, bit depth, and heap size. The DDC derives final output center frequencies, channel numbers, and timing during configure.
VDIF packer
The VDIF packer is a measuring pipeline for disk recording and can also stream continuously to a UDP consumer.
Key |
Default |
Meaning |
|---|---|---|
|
|
Include |
|
|
Comma-separated string or list of VDIF thread IDs matching inputs. |
|
0 |
Numeric VDIF station identifier. |
|
0.981599 |
Threshold used during low-bit quantization. |
|
|
Destination for network output. Set an intentional routable address. |
|
4991 |
UDP destination, matching the recorder configuration. |
|
|
Sender address; an empty value allows automatic fastest-NIC selection. |
|
1.1 |
Sender rate factor. |
|
2048 / 2 |
Live-monitor spectral resolution and integration. |
|
false |
Produce and publish live spectral monitoring data. |
|
empty fields |
Default |
Example DDC-to-VDIF products
{
"products": [
{
"id": "ddc_processor",
"f_lo": [256000000.0],
"output_samplerate": 32000000,
"input_data_streams": [
{
"source": "dig_pack_controller:polarization_0",
"format": "MPIFR_EDD_Packetizer:2"
}
],
"output_data_streams": {
"p0_lower": {"format": "DigitalDownConverter:1", "ip": "auto", "port": 8125},
"p0_upper": {"format": "DigitalDownConverter:1", "ip": "auto", "port": 8125}
}
},
{
"id": "vdif_packer",
"thread_ids": [0, 1],
"station_id": 1234,
"output_type": ["disk"],
"input_data_streams": [
{"source": "ddc_processor:p0_lower", "format": "DigitalDownConverter:1"},
{"source": "ddc_processor:p0_upper", "format": "DigitalDownConverter:1"}
]
}
]
}
Field System interface
The interface runs three concurrent servers by default:
Port |
Protocol |
Function |
|---|---|---|
7150 |
KATCP |
Health and status monitoring |
5000 |
DBBC |
BBC and IF configuration commands |
2620 |
Mark 5 |
Scan and recording commands |
The service is configured by a JSON file rendered by its Ansible role and mounted into the container. It does not register as an observational pipeline and does not use the standard Redis or Influx sidecars. Test command mapping, timeouts, station identity, and failure recovery with the site’s Field System before an experiment.
Monitoring and safety
The DDC reports output rate and DADA or receiver progress. The VDIF packer reports channel means and standard deviations, recording and sending state, current files, and optional spectra. Confirm VDIF station and thread IDs, timestamp epoch, frame rate, quantization statistics, destination, and recorder readiness before an experiment. A syntactically valid but incorrect VDIF header can make an observation unusable.
Testing
The repository contains Python and C++ unit tests, Field System integration tests, coherence checks, streaming tests, and provision tests for both DDC and VDIF pipelines. Run an end-to-end recording and validate the output with an independent VDIF tool before commissioning a mode.