Mission Juno -- Waves Investigation

Experiment Data Record (EDR) Format

Version 1 -- 2014-05-17

Prepared by

C. W. Piker

Dept. of Physics & Astronomy
The University of Iowa
Iowa City, IA 52242

This document has been reviewed for export control and does NOT contain technical information controlled under the International Traffic in Arms Regulations (22 CFR 120-130).

Contents
1. Overview
    1.1 Common Properties
    1.2 On-Board Manipulations
    1.3 Output to Spacecraft verses Level 2 Packets
    1.4 Extra Processing for Downmixed Waveforms

2. WGDS Packet Envelope
    2.1 Prefix Record
    2.2 Header Blocks
    2.3 Data (Payload) Blocks
    2.4 CRC-CCITT Algorithm

3. Science Data Packets
    3.1 Sample Vector Types (The PSID)
    3.2 Science Data Status Header Block
    3.3 Other Header Blocks
    3.4 Data Section
    3.5 Process for Converting from L2 to L3 data

4. Housekeeping Packets
    4.1 Sub-second Collect Time Adjustments
    4.2 Micro-packets


1. Overview: From Measurements to CODMAC Level 2 Files

The Level 2 volume, JNOWAV_0000 exists to "safe" low level binary Waves EDRs (Experiment Data Records) and Housekeeping packets. These data are not intended for general use. The Level 3 volume, JNOWAV_1000, provides calibrated, fixed-length records which should be used if at all possible for the task at hand. Persons wishing to process Level 2 records anyway should (in addition to reading this document) contact the Waves instrument team before proceeding.

Waves science EDRs are not fixed length and thus cannot be specified via standard PDS labels. Because of this limitation, Waves EDR records are detailed in this document. Waves housekeeping records contain both a fixed format 64 byte section followed by 4, variable content, 16 byte records. The fixed section of the Waves housekeeping packets are fully defined via PDS labels, while the variable content section is briefly touched on in Section 4 below.

Prerequisite: This document delves into some of the details of handling low-level Waves instrument data. The VOLSIS.HTM document on this volume provides a higher-level overview of the Juno Mission, the Waves Instrument and it's data products. Before reading this document readers should first be familiar with Section 1.6, all of Section 2, and Appendix C of VOLSIS.HTM before proceeding.

1.1 Common Properties

Waves measurements begin as digital conversions of analog voltage states. In this document, a set of conversion values which are,

are called a sample vector.

Inside the Waves instrument most sample vectors initially represent a voltage wave in time. If the voltage wave was driven by the electric antenna then it's an electric sample vector, if it was driven by the magnetic sensor then it's a magnetic sample vector.

One Wave, sampled N times, at a continuous rate, is one sample vector

Figure 1.1: Origin of most Waves data values

Raw sample vectors can be transmitted to the Juno spacecraft for later delivery to the ground. This mode of operation is called Burst Mode. Typically though, the time ordered sample vector is converted to a frequency ordered sample vector via the instrument's on-board Fourier Transform hardware. The transformed vector is further reduced via simple averaging into frequency bins. Sending reduced frequency vectors saves quite a bit of space while still providing a good overview of the instrument's environment. This mode of operation is call Survey Mode. No mater the transformations applied to the sample vector it still retains it's identity and has associated with it the following fixed properties:

These properties are as essential as the sample values themselves.

1.2 On-board Manipulations

Sample vectors may under go one or more of the following operations on-board before being delivered to the Juno spacecraft data systems:

  1. Conversion from time domain to frequency domain
  2. Averaging in the frequency domain
  3. Lossy compression by conversion to 9-bit floats
  4. Loss-less compression using the Rice compression algorithm
  5. Segmentation into smaller sample vectors
some of which are un-done in ground software writing the level 2 files, and some of which are permanent.

On-board manipulations two and three (averaging over frequency and 9-bit conversion) introduce permanent changes to the data. The first operation (conversion to the frequency domain) is only done on-board in preparation for frequency averaging so the fact that it is a reversible change is irrelevant. The last two operations (Rice compression and segmentation) are reversed before Level 2 data files are written to the JNOWAV_0000 volume. No matter the on-board operations preformed on a sample vector it still maintains it's identity. The vector's start time, sample frequency, initial length and analog state properties are retained and passed down, in some form, with the data values themselves.

1.3 Output to Spacecraft verses Level 2 Packets

One transmission unit to Juno is a Waves Header and 1-N mini-packets

Figure 1.2: Pre-Level 2 Processing

In order to transmit information in an orderly way from Waves to Juno some sort of structure needs to be defined. Inside Waves, all sample vectors are organized into Waves Mini-Packets, which are then grouped into Waves Packets before transmission out to the spacecraft. This organization is represented in the left-hand structure in Figure 1.2.

Ideally one mini-packet would contain one sample vector. The header portion of the packet would provide the essential properties, Start Time, Sensor Selection, Gain States, Sampling Rate or Frequency Bins, Vector length and Digital Resolution. However this would make a very large header and since the Waves instrument only generates a small handful of different types of sample vectors, much of this information is provided in external look-up tables. The mini-packet headers themselves only carry a look-up table ID which must be used to determine many of the properties.

Also, it would be nice if one mini-packet always contained an entire sample vector, however some of the vectors generated by Waves are too large to fit in a single transmission unit to the spacecraft, and thus must be segmented into multiple units. These fragments each receive their own mini-packet header. Inside the header is a segment number which is used by ground software to re-assemble whole sample vectors.

In addition to these complications Waves also compresses data via two different schemes, (1) Rice Compression, which is loss-less and is used to compress the high resolution WAVES_BURST products, and (2) 9-bit float conversion which is lossy and is used to reduce the size of WAVES_SURVEY products.

Before data are written to the JNOWAV_0000 volume, the following operations are preformed:

At this point the data are still in instrument units and it is possible to re-generate the original mini-packets, if one were crazy enough to expend the effort.

1.4 Extra Processing for Downmixed Waveforms

The Waves high-frequency receivers are able to record high-resolution frequency information for signals that occur far above their sampling frequency of 1.3125 MHz using frequency down-mixing. Why this works is covered in Appendix C of the VOLSIS.HTM document. In addition to unsegmenting and decompressing Waves mini-packets. Ground software also combines HFR in-phase (I) and quadrature (Q) waveforms into a frequency spectrum centered on the mixer frequency and extending to plus and minus the Nyquist frequency of the down-linked waveforms. Like all level 2 data, the resulting spectrum is not calibrated but is still in units of data-numbers. The algorithm for doing this follows:

This algorithm has been applied by the ground software before Level 2 files were written to the volume.

It should be evident by now that quite a bit of processing is required to produce the just the Level 2 files. So, this document does not provide sufficient to information to process raw Waves science data products off the spacecraft up to useful calibrated products. The assumption then is that one has Level 2 products, by some means, and wishes to produce calibrated Level 3 files.



2. WGDS Packet Envelope

Waves Ground Data System Packet

Figure 2.1: WGDS Packet Format

The basic unit of data generated by Waves and delivered to the Juno spacecraft C&DH system is called an mini-packet. Waves mini-packets are formatted to meet restrictions on instrument-to-spacecraft packet lengths and to efficiently utilize the available telemetry bandwidth. To save space, Waves Level 2 data makes copious use of bit fields, employs loss-less compressed, and truncates SCLKs. C&DH Packet length limitations require Waves to segment long sample vectors across multiple mini-packets. All this complicated in-flight packaging must be undone on the ground to recover the collected waveforms and spectra.

To provide room for ancillary data and large measurements each as-delivered, mini-packet is embedded inside a WGDS (Waves Ground Data System) packet upon receipt by the Waves instrument team. Both science and housekeeping data are placed in WGDS wrappers. All WGDS packets consist of:

It is possible for a generic algorithm to navigate L2 data files without understanding the details of each header and data section.

Figure 2.1 provides the general structure of the ground processing packets. On the JNOWAV_0000 volume, all .DAT (housekeeping) and .PKT (science records) files are composed of a stream of these packets and only these packets. There are no other headers or footers in the files.

2.1 Prefix Record

Note: In this document all base 16 numbers are prefixed with the characters '0x', as this is standard in most common programming languages.

There is one prefix per WGDS packet, it is always 16 bytes long. The first 4 bytes are the sync pattern 0xFA, 0x6C, 0x27, 0x41. This is useful in the case that a file becomes fragmented or has invalid length information for one or more packets. Table 2.1 defines the prefix bytes in ascending address order.

Table 2.1: WGDS Prefix Definition
0123 456 7
Bytes 0-70xFA0x6C0x270x41 CRCNon-Data Length
Bytes 8-15Total Packet Length NAIF ID0x04Content

WGDS Packet prefix field definitions:

CRC: A unsigned 16-bit MSB (Most Significant Byte) first integer containing the CRC-CCITT of everything that follows for this packet up to and including the trailing length bytes. See Section 1.4 for a definition of the CRC-CCITT algorithm in the C language.

Non-Data Length: An unsigned 16-bit MSB first integer containing the number of bytes in the WGDS headers alone, this includes the entire 4-byte sync pattern and the trailing 4 length bytes. Waves packets always pad the headers out to 256 bytes. This combined with the 4 trailing length bytes means that the non-data length will always be at least 260.

Total Packet Length: An unsigned 32-bit MSB first integer containing the number of bytes in the total packet, including all data, all headers, all padding and the trailer bytes.

NAIF ID: The NAIF SPICE ID for Juno, this is always -61, or 0xFF 0xC3 as hex bytes. Note that the NAIF ID sets the name space or "code table" for the header block IDs, programs IDs and the content indicator byte below.

Content Indicator Byte: An identifier for the contents of the packet. For Waves this byte consists of two parts, the upper 4 bits are the Data Kind Indicator and may have one of the following values:

The lower bits are the Data Contents Indicator. This value denotes how many processing stages have been applied to the data contents. Upon receipt by the Waves IOT it will have the value 0x1, by the time science packets are ready for delivery to the PDS the value will be 0x5. A list of all values follows:

2.2 Header Blocks

The rest of the header is series of Header Blocks, each of which may be up to 256 bytes in size and always starts with a size byte and a block ID byte. At a minimum, this provides sufficient information for programs to skip over blocks that are unrecognized. To reiterate, all WGDS header blocks start as follows:

Byte 0Byte 1Byte N
Block Type IDBlock Length - 1 (in Bytes) ....varies

where the meaning of the block type IDs is defined by the "code-page" indicated in the NAIF ID field of the prefix. Of course only code-page -61, Juno, will be defined in this document. Since the block length byte can have a maximum value of 255, a single header block is limited to 256 bytes in length.

To allow processing meta-data to be easily distinguished from measurement meta-data, a second generic header block is defined as follows:

Byte 0Byte 1Byte 2Byte N
0x70Block Length - 1 (in Bytes)Process Type ID ....varies

where, as expected, the Process Type ID's are only defined within the Juno "code-page".

Building upon these generic header block definitions are the specific Juno Waves header blocks. Here's a list of the actual header block types that may be found within Waves L2 data, most packets contain just a few of the possible header block types. Note that header blocks are always written in order by increasing block type ID and, if applicable, by increasing processes type ID.

Table 2.2: WGDS Header Block Listing
Block Type ID Block Size Process Type ID Purpose
0x10 56 bytes N/A Science Data Status Block -- provides definition of science packet data area, present in science data packets
0x11 48 bytes N/A Memory Read Out Status Block -- provides memory dump address information, present in MRO packets.
0x1A 24 bytes N/A High Rate Science Bin Header Block -- A copy of the high rate product record mode or binning mode header applicable to a WAVES_BURST product.
0x20 13 bytes N/A CCSDS Header Block -- A copy of the CCSDS header applied on the spacecraft, present in housekeeping packets
0x70 60 bytes 0x13 Product file Reader Processing Block -- Applied by the program which reads product telemetry data files
0x70 112 bytes 0x14 SFDU Reader Processing Block -- Applied by the program that reads Waves packets from an SFDU stream.
0x70 16 bytes 0x20 Unpacker Processing Block -- Applied by the program that separates individual Waves measurements from the enclosing IDP packet in to separate WGDS packets.
0x70 64 bytes 0x30 Unsegmenter Processing Block -- Applied by the program that combines broken-up Waves measurements from multiple IDP packets into a single WGDS packet.
0x70 16 bytes 0x40 Decompresser Processing Block -- Applied by the program that decompresses Waves measurements.
0x70 94 bytes 0x70 Sideband Recovery Block -- Applied by the program that combines In-phase and Quadrature measurements from an HFR into a 1 MHz spectrum about the mixing frequency.

2.3 Data (Payload) Block

Initially the payload section is quite complicated, containing one IDP packet as transmitted from Waves and, is thus, a non-trivial mixture of headers and in-flight packaged data. Ground software then undoes most of the in-flight packaging. At the point that uncalibrated Level 2 data sets are generated by the ground software, the payload section consists of only one series vector in a simply readable format. These processed packets are written to the Level 2 volume.

C.1.4 CRC-CCITT algorithm

Every program that generates or modifies a WGDS packet must calculate a CRC (cyclic redundancy check) to guard against packet corruption. These CRCs are re-calculated every time a packet is loaded for processing and checked against the embedded value. As described in VOLSIS.HTM Section 3.3.1 packets which fail a CRC check are dropped with an error message. A C-code listing of the CRC-CCITT algorithm for little endian byte architectures with constants used for the CRC field in the WGDS packet header follows.

static int              crc_tabccitt_init = 0;
static unsigned short   crc_tabccitt[256];
#define                 P_CCITT     0x1021

 
static void init_crcccitt_tab( void ) {
   int i, j;
   unsigned short crc, c;
 
   for(i=0; i<256; i++) {
      crc = 0;
      c   = ((unsigned short) i) << 8;
 
      for(j=0; j<8; j++) {
 
         if( (crc ^ c) & 0x8000 )
            crc = ( crc << 1 ) ^ P_CCITT;
         else
            crc =   crc << 1;
 
          c = c << 1;
      }
      crc_tabccitt[i] = crc;
   }
   crc_tabccitt_init = 1;
}  
 
/* Calc CRC-CCITT on an arbitrary length set of char data */
unsigned short crc_ccitt(const char* sData, size_t szLen){
   int i;
   unsigned short usIdx, usChar, usCRC;
   sRet[2] = '\0';
   
   if( ! crc_tabccitt_init ) init_crcccitt_tab();
   
   usCRC = 0;
   for(i = 0; i<szLen; i++){
      usChar  = 0x00ff & (unsigned short) sData[i];
      usIdx = (usCRC >> 8) ^ usChar;
      usCRC = (usCRC << 8) ^ crc_tabccitt[usIdx];
   }
   return usCRC;
}


3. Science Data Packets

Science Data WGDS Packets

Figure 3.1: Science Data WGDS packets

All final science products delivered to the PDS are originally given to the Waves IOT as product telemetry files. These product telemetry files consist of pure Waves IDP packets without other padding or headers. By the time Waves data makes it through the Level 2 processing chain, packets have the layout defined in Figure 3.1. Though the Level 2 data packets contain many header blocks, most Level 3 products may be written using only the Science Data Status block. The Science data status block is key, as it identifies the receiver used to collect the measurement, the time of collection and the binary format of the samples in the data section.

3.1 Sample Vector Types (The PSID)

Waves generates only a limited number of different sample vectors. Each sample vector type has a unique Packet and Source ID (PSID). Many properties of the vector may be determined using the PSID and table 3.1 below. These include:

The PSID may be found within the mini-packet header which is within the Science Data Status header block. This block is defined in Section 3.2 below.

Properties that are not defined by the PSID are:

These properties must be determined by consulting other fields in the Science Data Status header block as defined below.

Table 3.1: Waves Packet and Source IDs
PSID Measurement Type Source Notes
0x47 3 to 41 MHz spectra
1 MHz steps
HFR-44 Log Amp Analog spectrum analyzer data,
freq centers are 3.5, 4.5, ...
40.5 and 1 MHz wide.
0x46 HFR-45 Log Amp
0x5F Binned FFTs of a
7MHz waveform capture
HFR-44 I chan -> FFT Engine Frequency bins defined in Table 3.6
0x5B HFR-45 I -> FFT Engine
0x3B HFR-45 I -> FFT Engine
0x7B 7 MHz waveform capture HFR-45 I chan This are the input data to the FFT transforms, though it may not be sent to the ground.
0x7F HFR-44 I chan
0x3F HFR-44 I chan
0x88 1.3125 MHz waveform HFR-45 I chan In-phase signal mixed with local oscillator
0x8C HFR-44 I chan
0x89 HFR-45 Q chan Quadrature signal mixed with local oscillator
0x8D HFR-44 Q chan
0xF1 1.3 MHz band limited spectra
centered at mixer frequency.
HFR-45 I & Q chan Derived on ground from 0x88 & 0x89
0xF2 HFR-44 I & Q chan Derived on ground from 0x8C & 0x8D
0x91 Binned FFTs of a 50 kHz waveform capture LFR B -> FFT engine Frequency bins defined in Table 3.4
0x92 LFR Lo E -> FFT engine
0x93 Binned FFTs of a 375 kHz waveform LFR Hi E -> FFT engine Frequency bins defined in Table 3.5
0xF0 3 different binned FFTs of 50 kHz waveform captures LFR B, LFR Noise -> FFT eng. Frequency bins defined in Table 3.4
0xF4 LFR Lo E,LFR Noise -> FFT eng.
0xF5 3 different binned FFTs of 375 kHz waveform captures LFR Hi E, LFR Noise -> FFT eng. Frequency bins defined in Table 3.5
0xA1 50 kHz waveform LFR B These are the input data to the FFT transforms, though it may not be sent to the ground.
0xA2 LFR Lo E
0xA3 375 kHz waveform LFR Hi E
0xA0 3 different 50 kHz waveforms LFR B E, LFR Noise Input Original signal waveform, plus noise mitigation waveform, plus noise mitigated waveform.
0xA4 LFR Lo E, LFR Noise Input
0xA5 3 different 375 kHz waveforms LFR Hi E, LFR Noise Input

3.2 Science Data Status Header Block

Program processing Level 2 data generate and update this header block. The Science Data Status Block defines the state of the data section and contains both permanent fields that are retained after all processing is complete and temporary fields required for intermediate processing states, only the permanent fields will be defined. This block has the lowest type ID so that it will always occur directly following the prefix.

This block acts an expanded version of the mini-packet header. Ideally the mini-packet header emitted by Waves would be reused for ground processing. The limitation in doing so is that the mini-packet headers transmitted from Waves are designed to be as small as possible and thus cannot describe unsegmented data. That being said, no information is lost, so the original telemetered mini-packet headers could be recreated via information encoded in the Science Data Status block, the Unsegmenter block and the High Rate Bin Header block, along with some knowledge of the instrument to C&DH communication protocol.

Table 3.2: Science Data Status Header Block
Byte Index 0123456 7
0 - 7 0x10 0x37 Modifier Telem Src Collect SCLK
8 - 15 Col. RTI Avg Hi Seq No Hi Report SCLK
16 - 23 IDP CRC Lo Seq No Lo Report SCLK
24 - 31 MPH 0 MPH 1 MPH 2 MPH 3 MPH 4 MPH 5 MPH 6 MPH 7
32 - 39 MSF 0 MSF 1 MSF 2 MSF 3 MSF 4 MSF 5 MSF 6 MSF 7
40 - 47 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
48 - 55 0x00 0x00 0x00 0x00 0x00 0x00 0x00 Flags

Science Data Status Block fields relevant to generating Level 3 data are described below:

Collect SCLK: The full 32-bit spacecraft SCLK at the time of the data collection, reconstructed using the IDP header SCLK and the individual mini-packet RTI fields. This is a 32-bit MSB first unsigned integer.

Collect RTI (Real Time Interrupt): The internal Waves scheduling clock runs at 40 Hz. Thus operations can be scheduled to occur at most 1/40th of a second. An RTI value of 0 represents a collection that began as the clock clicked to a new second, and a value of 39 is the last possible measurement start time in a second.

Avg: The number of original data captures averaged within the Waves instrument to arrive at this measurement. Warning: This value must be set in ground software and may be in error.

MPH0 through MPH7: An updated mini-packet header were all fields in the original mini-packet header that no longer accurate have been zero'ed out. In order to convert data samples to waveform or spectra measurements, software must at least read the ID, PATN, BGAIN, ATTN, SRC, BND and FMT bit fields. The bits are broken out as follows:

Table 3.3: Mini-packet Header Bit Breakout
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
MPH 0 ID 3 ID 3 ID 1 ID 0 0 0 0 0
MPH 1 0 0 0 0 0 0 0 0
MPH 2 RTI 15 RTI 14 RTI 13 RTI 12 RTI 11 RTI 10 RTI 9 RTI 8
MPH 3 RTI 7 RTI 6 RTI 5 RTI 4 RTI 3 RTI 2 RTI 1 RTI 0
MPH 4 1 PATN BATN 1 0 0 0 0
MPH 5 SATN 3 SATN 2 SATN 1 SATN 0 SRC 3 SRC 2 SRC 1 SRC 0
MPH 6 BND 7 BND 6 BND 5 BND 4 BND 3 BND 2 BND 1 BND 0
MPH 7 MSF 1 MSF 2 FMT 5 FMT 4 FMT 3 FMT 2 FMT 1 FMT 0

ID and SRC: The combination of these two fields identifies the hardware and software path within the Waves instrument from which the samples were collected. In C one can get the combined ID by:

PSID = (ID << 4) | SRC;

so the ID filed becomes the upper four bits and the SRC filed becomes the lower 4 bits. See Table 3.1 for an overview of most Waves science record types listed by PSID.

RTI: This is a combination of the 40Hz interrupt counter plus the SCLK as follows:

RTI field = (0x3FF & SCLK)*40 + rti

This field is used in conjunction with the IDP_SCLK to determine the Collect SCLK and Collect RTI pair, which are much more convenient to work with.

PATN: If 1 the pre-amplifier attenuator is on. The attenuation is 25dB for the Lo E and B LFR channels, and 20dB for LFR Hi E, HFR baseband and HFR down-mixed channels.

BATN: If 1 the back end LFR attenuator is on for the Hi and Lo E channels which adds 20dB of attenuation to the signal. This field should be ignored for HFR data.

SATN: The HFR-44 and HFR-45 receivers each contain a programmable attenuator. To determine the receiver attenuation present in the samples use the relation:

Rec. Attn = SATN * 2 dB.

This field should be ignored for LFR data.

BND: The HFR-44 and HFR-45 receivers use a local oscillator to down-mix E-field signals that vary too quickly to be directly sampled via the on-board A/D converters. This byte provides the setting for the local oscillator, when in use. This it it only meaningful for data derived from the HFR I& Q channels, which would be PSIDs 0x88, 0x89, 0x8C, 0x8D, 0xF1 and 0xF2. The values are:

Note that the mixer runs at four times the center frequency for HFR I/Q packets thus:

Center MHz = BND / 4.0

FMT: The measurement format, provides the binary format for the numeric samples in the data section of the packet. Note that the Waves central processor is a "little-endian" architecture, and all multi-byte measurements are stored with the least significant byte in the lowest address. Values for the FMT field found in process Waves science data packets are:

3.3 Other Header Blocks

Parsing the fields defined in Section 2.2 above are sufficient to determine how to read most types of measurements. Further documentation on all the header fields may be found in the text document WAVESEDR/WAVESBLKS.TXT located in the DOCUMENT/WAVESEDR directory of the JNOWAV_0000 volume. In particular the High Rate Bin Header block is useful for gathering the Quality Factors generated by the Waves Instrument to signal to the spacecraft C&DH system which waveform captures should be telemetered to the ground.

3.4 Data Section

The data section of the WGDS packet mostly consists of pure samples strung end to end without padding. Some packets contain more than one kind of data product and must be handled as exceptions, see "Gotchas" below. To convert the samples to floating point numbers read the FMT field in the MPH 7 byte of the Science Data Status block in the WGDS header. Though it may appear otherwise, the Waves IOT did not intentionally bury the data format.

To convert these samples to physical units consult the calibration document WAVESCAL.HTM. In addition the labels for the individual calibration files in the JNOWAV_1000/CALIB directory contain quite a bit of descriptive text explaining exactly how each column and field is utilized.

Since all sample vectors that are transformed to frequency space are handled in the exact same way based on the PSID, frequency values are not included in the data section. Instead assign frequency bin values using one of the tables below.

Low Frequency Receiver - Low Channel Bins

This frequency down mapping is handled on-board and applies to packets with the PSID values 0x91, 0x92, 0xF0 and 0xF4. All these measurements were acquired using the low frequency channel low frequency receiver (LFR-Lo). The on-board processing is not actually an average but rather a sum. Thus before sending raw values for these packet to the calibration functions, divide the values by the number of bins indicated in Table 3.4 below.

Table 3.4: LFR-Lo Frequencies, 1024 bins mapped to 43 bins
Data Value Index Target Frequency Low DFT Frequency High DFT Frequency DFT Low Index DFT High Index Number of Summed Bins
050.118748.8281248.828121 11
1100.00097.6562597.656252 21
2141.254146.4844146.48443 31
3199.526195.3125195.31254 41
4251.189244.1406244.14065 51
5281.838292.9688292.96886 61
6354.813341.7969341.79697 71
7398.107390.6250390.62508 81
8446.684439.4531439.45319 91
9501.187488.2813488.281310 101
10562.341537.1094537.109411 111
11562.341585.9375585.937512 121
12630.957634.7656634.765613 131
13707.946683.5938732.421914 152
14794.328781.2500830.078116 172
15891.251878.9063927.734418 192
161000.00976.56251025.39120 212
171122.021074.2191171.87522 243
181258.931220.7031318.35925 273
191412.541367.1881464.84428 303
201584.891513.6721660.15631 344
211778.281708.9841855.46935 384
221995.261904.2972099.60939 435
232238.722148.4382343.75044 485
242511.892392.5782636.71949 546
252818.382685.5472978.51655 617
263162.283027.3443320.31362 687
273548.133369.1413710.93869 768
283981.073759.7664199.21977 8610
294466.844248.0474687.50087 9610
305011.874736.3285273.43897 10812
315623.415322.2665908.203109 12113
326309.575957.0316640.625122 13615
337079.466689.4537470.703137 15317
347943.287519.5318398.438154 17219
358912.518447.2669423.828173 19321
3610000.09472.65610546.88194 21623
3711220.210595.7011865.23217 24327
3812589.311914.0613330.08244 27330
3914125.413378.9114941.41274 30633
4015848.914990.2316748.05307 34337
4117782.816796.8818798.83344 38542
4219952.618847.6621093.75386 43247

Low Frequency Receiver - High Channel Bins

This frequency down mapping is handled on-board and applies to packets with the PSID values 0x93 and 0xF5. All these measurements were acquired using the high frequency channel low frequency receiver (LFR-Hi). Like the LFR-Lo data, the on-board processing is not actually an average but rather a sum . Thus before sending raw values for these packet to the calibration functions, divide the values by the number of bins indicated in Table 3.5 below.

Table 3.5: LFR-Lo Frequencies, 1024 bins mapped to 18 bins
Data Value Index Target Frequency Low FFT Frequency High FFT Frequency DFT Low Index DFT High Index Number of Summed Bins
019952.619042.9720874.02 52576
122387.221240.2323437.50 58647
225118.923803.7126367.19 65728
328183.826733.4029663.09 73819
431622.830029.3033325.20 829110
535481.433691.4037353.52 9210211
639810.737719.7342114.26 10311513
744668.442480.4747241.21 11612914
850118.747607.4252734.38 13014415
956234.253100.5959326.17 14516218
1063095.859692.3866650.39 16318220
1170794.667016.6074707.03 18320422
1279432.975073.2483862.31 20522925
1389125.184228.5294116.21 23025728
1410000094482.42105835.0 25828932
15112202106201.2118652.3 29032435
16125893119018.6133300.8 32536440
17141254133667.0149414.1 36540844

High Frequency Receiver - Baseband Bins

This frequency down mapping is handled on-board and applies to packets with the PSID values 0x5F, 0x5B, and 0xF5. All these measurements were acquired the baseband channel of one of the high frequency receivers ( HFR-45 Baseband, or HFR-46 Baseband). Again, like the LFR-Lo data, the on-board processing is not actually an average but rather a sum . Thus before sending raw values for these packet to the calibration functions, divide the values by the number of bins indicated in Table 3.6 below.

Table 3.6: HFR Baseband Frequencies, 1024 bins mapped to 27 bins
Data Value Index Target Frequency Low FFT Frequency High FFT Frequency DFT Low Index DFT High Index Number of Summed Bins
014125413671914355520 212
115848915039116406322 243
217782817089818457025 273
319952619140620507828 303
422387221191423242231 344
525118923925825976635 384
628183826660229394539 435
731622830078132812544 485
835481333496136914149 546
939810737597741699255 617
1044668442382847168062 698
1150118747851652636770 778
1256234153320359472778 8710
1363095760156366308688 9710
1470794666992274511798 10912
15794328751953840820110 12314
16891251847656943359124 13815
1710000009501951052734139 15416
18112201910595701182617155 17319
19125892611894531333008174 19522
20141253813398441490234196 21823
21158489314970701674805219 24527
22177828016816411879883246 27530
23199526218867192112305276 30934
24223872121191412365234310 34637
25251188723720702659180347 38943
26281838326660162980469390 43647

Processing "Gotchas" by PSID

Packets with PSIDs 0xF0, 0xF4, and 0xF5 contain three different spectra. All data are stored as 32-bit IEEE floats in little endian byte order. Assuming the number of data samples is N (a number that is always divisible by 3), the data layout is as follows:

where all upper bounds are exclusive (i.e. don't include the upper bound in the count of values).

Packets with PSIDs 0xA0, 0xA4, and 0xA5 contain three different waveforms stacked end-to-end along with a set of coefficients from the Noise Mitigation algorithm. All data are stored as 32-bit IEEE floats in little endian byte order. Assuming the number of data samples is N (a number that is always divisible by 3), the data layout is as follows:

where all upper bounds are exclusive. Also, note that section number 3, the noise mitigated waveform, is shorter than the other two by 32 values.

3.5 Process for Converting from L2 to L3 data

Though it has already been described in VOLSIS.HTM Section 3.3.2, it is worth restating the Level 2 data to Level 3 processing procedure using terms defined in this document. An outline of the steps preformed in the conversion from Level 2 WGDS packets on the JNOWAV_0000 volume to Level 3 WAVES_SURVEY SPREADSHEET objects on the JNOWAV_1000 volume follows.

  1. Spectra and attenuator calibration files are loaded from the JNOWAV_1000/CALIB directory.

  2. All WGDS packets on the JNOWAV_0000 volume containing WAVES_SURVEY data for a single UTC day are loaded to memory.

  3. All WGDS packets on the JNOWAV_0000 volume containing Housekeeping data for a single UTC day are parsed to find sub-second time adjustments.

  4. All packet data is converted to 32-bit IEEE floats and calibrated to physical measurements. This includes basic calibration plus adjustments for attenuation.

  5. Data collection SCLKs are pulled from the Science Data Status block of each WGDS packet. Housekeeping sub-second time adjustments are then added to these SCLK values, the resulting SCLK is sent to SPICE for conversion to SCETs.

  6. All calibrated E-field packets are matched in SCET space in an attempt to define SPREADSHEET rows that contain complete sweeps from 50Hz to 41 MHz. Partial rows will be defined for packets that could not be aligned into a complete sweep.

  7. Two primary WAVES_SURVEY products are written to the JNOWAV_1000 volume containing all primary measurements for a particular UTC day. One for E-field data and the other for B-field data.

  8. If noise reduction diagnostic data were present, auxiliary product files are written to contain those data.

The equivalent processing for WAVES_BURST data follows.

  1. 1.Waveform and attenuation calibration files are loaded from the JNOWAV_1000/CALIB directory.

  2. All WGDS packets on the JNOWAV_0000 volume containing WAVES_BURST data for a single continuous high-rate recording session are loaded to memory.

  3. All WGDS packets on the JNOWAV_0000 volume containing Housekeeping data for a single UTC day are parsed to find sub-second time adjustments.

  4. All packet data is converted to 32-bit IEEE floats and calibrated to physical measurements. This includes basic calibration plus adjustments for attenuation.

  5. Data collection SCLKs are pulled from the Science Data Status block of each WGDS packet. Housekeeping sub-second time adjustments are then added to these SCLK values, the resulting SCLK is sent to SPICE for conversion to SCETs.

  6. All measurements for the continuous recording session are written to a single product file.



4. Housekeeping Packets

Waves Housekeeping WGDS Packets

Figure 4.1: Waves Housekeeping WGDS Packets

Since housekeeping packets just happen to be fixed length, files containing housekeeping data may be defined via standard PDS labels. Thus, most of the information needed to view these records may be obtained by reading any one PDS label for a file with the name pattern WAV_YYYYDDD_HSK_VXX.DAT on the JNOWAV_0000 volume.

4.1 Sub-second Collect Time Adjustments

The Collect SCLK fields in the WGDS science data packets are not exactly the real spacecraft SCLK at the time of data collection. There is a sub-second offset from spacecraft seconds which changes very slowly compared to the data collection rate. To save space in the Science data stream this offset is not reported in the science IDP packets generated by Waves. Instead these offsets are emitted into the housekeeping stream. Thus, to determine data collections times to greater that 1 second accuracy, housekeeping data must be loaded. This field containing the offset is named SCLK_SUBSEC and is defined and described in all housekeeping product labels.

4.2 Micro-packets

The housekeeping packets contain both a fixed content 64-byte section, which is defined via standard PDS labels followed by a 64-byte variable content containing 4, 16-byte micro-packets. Micro-packets are touched on below, but to get the details on the the usefulness of each micro-packet type consult the University of Iowa document Juno/Waves Housekeeping Telemetry Formats Reference Manual, 98-90016 JPL/DRD SE-007-001A.

Each housekeeping packet ends with 4 micro packets. A micro-packet is 16 bytes long and has the following format.

Byte 0Byte 1Bytes 2-3Bytes 4-15
TypeSequence RTIvaries

The Type field identifies the content of bytes 4-15 in the micro-packet. The following types are defined.

The sequence field increments for each micro packet added to the output buffer in the Waves kernel software. At the time a housekeeping packet is emitted, the last 4 micro-packets are dumped into the output stream. Since new micro-packets may not be present, the sequence field may be used to identify repeated micro-packets and ignore them.

The RTI field is produced in the same manner as the RTI field in Section 3.1, and records the time at which the micro-packet was added to the output buffer.