@@ -31,6 +31,16 @@ From top L# level to implementation L# level the ICD should read like a document
...
@@ -31,6 +31,16 @@ From top L# level to implementation L# level the ICD should read like a document
Eye opener: Hence the ICD is like a normal written document, the difference is that all sections are captured by numbered interfaces and definitions in Polarion, so that they can be traced and referred to.
Eye opener: Hence the ICD is like a normal written document, the difference is that all sections are captured by numbered interfaces and definitions in Polarion, so that they can be traced and referred to.
The template should only contain the structure and hidden information for the editor. The read only text should only contain a link to the ICD general explanations, to ensure that nearly all text is manually written tekst.
The template should only contain the structure and hidden information for the editor. The read only text should only contain a link to the ICD general explanations, to ensure that nearly all text is manually written tekst.
@@ -224,14 +266,17 @@ so about 2 * NOF_LANES * packet size number of octets of RAM. For example 2 * 16
...
@@ -224,14 +266,17 @@ so about 2 * NOF_LANES * packet size number of octets of RAM. For example 2 * 16
The FPGA has 2713 M20k, so this is 128/2713 ~= 5% of the internal BRAM resources.
The FPGA has 2713 M20k, so this is 128/2713 ~= 5% of the internal BRAM resources.
The total number of streams to CEP then becomes NOF_BEAMSETS * NOF_LANES.
The total number of streams to CEP then becomes NOF_BEAMSETS * NOF_LANES.
- 1 Byte, MARKER
- 1 Byte, MARKER
. Like in APERTIF and ARTS, may be useful to quickly recognize the data packet.
. Like in APERTIF and ARTS, may be useful to quickly recognize the data packet.
. Beamlets : 20
. Beamlets: 98 = 0x62 = 'b'
. Transient: 21
. Other UDP packets can use e.g:
. SST : 22
. Transient: 't' = 116 = 0x74
. BST : 23
. SST : 'S' = 83 = 0x53
. XST : 24
. BST : 'B' = 66 = 0x42
. XST : 'X' = 88 = 0x58
- 1 Byte, VERSION_ID
- 1 Byte, VERSION_ID
. 2,3,4 for LOFAR1
. 2,3,4 for LOFAR1
...
@@ -239,7 +284,7 @@ The total number of streams to CEP then becomes NOF_BEAMSETS * NOF_LANES.
...
@@ -239,7 +284,7 @@ The total number of streams to CEP then becomes NOF_BEAMSETS * NOF_LANES.
- 4 Byte, OBSERVATION_ID
- 4 Byte, OBSERVATION_ID
Instead of CONFIGURATION_ID 8b (used in LOFAR1? intended to refer to the parset that defines this observation)
Instead of CONFIGURATION_ID 8b (used in LOFAR1? intended to refer to the parset that defines this observation)
The observation ID provides the hook to information on e.g. RCU mode, f_adc = 200 MHz, 160 MHz, Nyquist zone
The observation ID provides a hook to information on e.g. RCU mode, f_adc = 200 MHz, 160 MHz, Nyquist zone
(0, 1, 2), critically PFB, oversampled PFB, nof antenna in array (core, LBA, HBA inner to make HBA international look like HBA remote), maximum S_ant = 192.
(0, 1, 2), critically PFB, oversampled PFB, nof antenna in array (core, LBA, HBA inner to make HBA international look like HBA remote), maximum S_ant = 192.
. etc
. etc
...
@@ -251,9 +296,18 @@ The total number of streams to CEP then becomes NOF_BEAMSETS * NOF_LANES.
...
@@ -251,9 +296,18 @@ The total number of streams to CEP then becomes NOF_BEAMSETS * NOF_LANES.
- 4 Byte, SOURCE_INFO
- 4 Byte, SOURCE_INFO
Only include info that can be inserted by SDP, without explicit write by SC. Therefore e.g. RCU mode,
Only include info that can be inserted by SDP, without explicit write by SC. Therefore e.g. RCU mode,
Nyquist zone, nof antenna in array are not included.
Nyquist zone, nof antenna in array are not included.
. 1b f_adc = 200 MHz, 160 MHz, sample rate
The packet header does not contain all info to derive the RF frequency, because it does not contain the
. 1b t_pfb = PBF type, 0 critically PFB, 1 oversampled PFB (rather than p, q for R_os = p/q)
subband-beamlet mapping R_bsub. Therefore it is not necessary to include the Nyquist zone information in
. 1b payload_ok, 0 payload ok, 1 one or more blocks in payload have data errors
the header. However, just for information the Nyquist zone is useful to have in the header.
. 1b f_adc, sample clock frequency of the ADC, 0 = 160 MHz, 1 = 200 MHz
. 2b nyuist_zone
. 1b pfb_type, 0 = critically PFB, 1 = oversampled PFB (rather than p, q for R_os = p/q)
- The f_adc and t_pfb are in the header, because this information is sufficent to know the subband
frequency grid (f_sub = f_adc / N_fft = 195312.5 or 156250 Hz) and the subband sample rate
(R_os * f_sub).
. 1b payload_error, 0 payload ok, 1 one or more blocks in payload have data errors
- a single payload error bit means that all blocks in the payload get discarded if only only block
has an error.
- no need for indicator bit per block, assuming errors are rare and will result in loss of
- no need for indicator bit per block, assuming errors are rare and will result in loss of
multiple blocks anyway
multiple blocks anyway
. 5b beamlet_width in number of bits
. 5b beamlet_width in number of bits
...
@@ -263,38 +317,75 @@ The total number of streams to CEP then becomes NOF_BEAMSETS * NOF_LANES.
...
@@ -263,38 +317,75 @@ The total number of streams to CEP then becomes NOF_BEAMSETS * NOF_LANES.
. 6b pn_id = UniBoard2 FPGA ID
. 6b pn_id = UniBoard2 FPGA ID
- Instead of RSP_ID in LOFAR1
- Instead of RSP_ID in LOFAR1
- 16 FPGAs for LBA, 16 for HBA in International Station, so maximum 32, but use one bit extra
- 16 FPGAs for LBA, 16 for HBA in International Station, so maximum 32, but use one bit extra
- The PN ID is useful for fault diagnoses, to know the PN in SDP from which the data originated.
- The pn_id implicitly also reveals the antenna array ID (core station 1 LBA, 2 HBAS, 3 HBA0, 4 HBA1, ...)
- The pn_id implicitly also reveals the antenna array ID (core station 1 LBA, 2 HBAS, 3 HBA0, 4 HBA1, ...)
Therefore it is not necessary to define an explicit antenna ARRAY_ID field that would need to be
Therefore it is not necessary to define an explicit antenna ARRAY_ID field that would need to be