Raw File Guide
All CReSIS Toolbox File Guides
Overview
The file_version field (param.records.file_version field) uniquely identifies the file type. The following table shows the mapping.
records.file_version | File Loader | Description |
---|---|---|
1 | basic_load_fmcw.m | snow, kuband (Leuschen/Ledford based, 2009 Greenland P3 to 2011 Antarctica DC8, couple of segments in 2012 Greenland P3) |
2 | basic_load_fmcw2.m | snow2, kuband2 (NI based, seconds field is written to from the GUI software, 2012 Greenland P3, 2012 Antarctica DC8) |
3 | basic_load_fmcw3.m | snow3, kuband3 (NI based, DDC enabled, seconds from hardware serial read and stored as BCD, 2013 Greenland P3) |
4 | basic_load_fmcw2.m | snow2, kuband2 (NI based, no DDC, limited use, seconds from hardware serial read and stored as ASCII string instead of BCD, spring 2021 Alaska SO, 2018 Alaska SO, two segments of 2013 Greenland P3) |
5 | basic_load_fmcw3.m | snow3, kuband3, kaband3 (NI based, second version of DDC code, 2013 Antarctica P3/2013 Antarctica Basler to 2016 Antarctica DC8) |
6 | basic_load_fmcw4.m | snow4, kuband4 (NI based, Spring 2015 NRL version of DDC code, multichannel) |
7 | basic_load.m | snow5 (NI based, AWI version of DDC code, multichannel, multiwaveform). Note this is a standard file type loaded by basic_load.m |
8 | basic_load.m | snow8 (NI based, Keysight waveform generator). Some files start with snow4 from the test flight. basic_load_fmcw8.m also reads file. |
9 | basic_load_arena.m1 | snow9 (RSS based, Arena Snow Radar). |
10 | basic_load_arena.m1 | snow10 (RSS based, Arena Helicopter Snow Radar). |
11 | basic_load.m | data_v11 (NI based, Mini-Snow Radar). Files start with "data_v11_". Used for snow radar, Ku-band radar, and Ka-band radar. 2019 Greenland TO/2019 Alaska SO and later. |
101 | basic_load_accum.m | accum (Leuschen/Ledford based) |
102 | basic_load_accum2.m | accum2 (Sundance, Paden/Rink based) |
103 | basic_load_arena.m1 | accum3 (RSS based, Arena) |
401 | basic_load_mcords.m | mcords (Leuschen/Ledford based, 2009 Antarctica DC8 to 2010 Antarctica DC8) |
402 | basic_load_mcords2.m | mcords2 (NI based, XML files unreliable, 2011 Greenland P3 to 2012 Antarctica DC8) |
403 | basic_load_mcords3.m | mcords3 (NI based, header fields changed, 2013 Greenland P3 to 2019 Greenland P3, XML files correct 2014 Antarctica DC8 and later unreliable before that) |
404 | basic_load_mcords4.m | mcords4 (NI based, introduced 2013 Antarctica Basler, wideband, XML files complete) |
405 | basic_load_acords.m | acords (Akins based, 2003 Greenland P3, low/high gain) |
406 | basic_load_acords.m | acords v2 (Akins based, 2004 Antarctica P3-chile and 2005 Greenland TO, low/high gain, 4-channel option) |
407 | basic_load_mcords5.m | mcords5 (NI based, introduced 2015 Greenland C130/Polar6, AWI version, wideband, XML files complete, DDC) |
408 | basic_load_fmcw.m | mcords5 (NI based, introduced 2015 Greenland C130/Polar6, wideband, XML files complete, No DDC) |
103 | basic_load_arena.m1 | mcords6 (RSS based, Arena), same as accum3 |
409 | basic_load_icards.m | icards (?/Akins Linux PCI card based, introduced 1993 Greenland P3) |
410 | basic_load_mcrds.m | mcrds (Akins based, introduced 2006 Greenland P3, multichannel/waveforms) |
411 | +hfrds package | hfrds (Leuschen eval board based, 2013 Antarctica G1XB???, 2016 Greenland G1XB) |
412 | basic_load_arena.m1 | hfrds2 (RSS based, Arena HF Sounder, 2016 Greenland TOdtu). |
413 | +utua_rds package | rds (NI based, UT/UA HF sounder, 2018 Alaska SO). |
414 | load | rds (NI based, BAS sounder, 2017 Antarctica TObas). |
1 Arena files must be run through run_preprocess to remove the network packet headers before basic_load_arena.m will work.
File version 1: snow/kuband
IEEE big endian format. Presums are assumed to be 4. Bit shifts are assumed to be 0. start_idx is assumed to be 0.
Field | Byte Offset | Type | Description |
---|---|---|---|
frame sync | 0 | uint32 | 0xDEADBEEF |
EPRI | 4 | uint32 | Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. |
seconds | 16 | uint32 | Seconds of day field. Pulled from NMEA $GPGGA UTC time in software and then increments by one for each 1 PPS pulse that is read in. If there are errors in the PPS signal (e.g. ringing), then the seconds field can be incorrect. |
fraction | 20 | uint32 | Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. |
data | 32 | uint16*Nt | Nt uint16 real samples. Note that the only way to determine Nt is to find the frame syncs and use the byte offset between the frame syncs to determine the number of samples, Nt. |
File version 2: snow2/kuband2
IEEE big endian format.
Field | Byte Offset | Type | Description |
---|---|---|---|
Frame sync | 0 | uint32 | 0xBADA55E5 |
EPRI | 4 | uint32 | Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. |
seconds | 8 | uint32 | Seconds of day field. Pulled from NMEA $GPGGA UTC time in software and then increments by one for each 1 PPS pulse that is read in. If there are errors in the PPS signal (e.g. ringing), then the seconds field can be incorrect. |
fraction | 12 | uint32 | Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. |
comp_time_sod | 16 | uint64 | Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader. |
NA | 24 | uint64 | Notes indicate a second UTC time SOD field, but it is not used. The loader does not load. |
wf index | 32 | uint8 | Waveform index. This field is zero-indexed. |
num_wfs | 33 | uint8 | Number of waveforms minus 1. A value of N in this field, means that there are N+1 waveforms. Note that this field is hard coded to 1 meaning that there are two waveforms in each record. Due to a hardware hack, these two waveforms actually represent the same data stream. These two waveforms are always loaded together and summed so that effectively there is just one waveform. Therefore the loader always returns num_wfs == 1. |
presums | 34 | uint8 | Number of presums minus 1. A value of N in this field, means that N+1 presums were done. Note that this is always doubled after loading because of the hardware hack which is solved by adding the two waveforms together which effectively doubles the number of presums for the loaded data. |
bit_shifts | 35 | int8 | Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts. |
start_index | 36 | uint16 | Sample index that recording begins on (this sample is recorded). |
stop_index | 38 | uint16 | Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = stop_index - start_index. |
data | 40 | int16*Nt | Nt int16 real samples. |
Due to a hardware hack, there are always two waveforms in each EPRI, but really these two waveforms should have been associated with individual records since they come from the same source. Because of this, when this file is loaded, these two waveforms are summed together during loading so that there is only one waveform after loading and the number of presums is doubled.
File version 3: snow3/kuband3
IEEE big endian format.
Field | Byte Offset | Type | Description |
---|---|---|---|
Frame sync | 0 | uint32 | 0xBADA55E5 |
EPRI | 4 | uint32 | Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. |
seconds | 8 | uint32 | Seconds of day field. Pulled from NMEA $GPGGA UTC time using hardware UART, character string "SSMMHH00" in binary coded decimal (BCD) format. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect. |
fraction | 12 | uint32 | Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. |
counter | 16 | uint64 | Counter operating at fparam.clk. This counter is starts at zero and is never reset. |
comp_time_sod | 24 | uint64 | Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader. |
presums | 34 | uint8 | Number of presums minus 1. A value of N in this field, means that N+1 presums were done. |
bit_shifts | 35 | int8 | Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts. |
start_index | 36 | uint16 | Sample index that recording begins on (this sample is recorded). |
stop_index | 38 | uint16 | Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = floor((stop-start)/DDC_dec)). |
DC_offset | 40 | int16 | DC offset to cancel out ADC offset before entering DDC. Generally this field is not needed. |
NCO_freq | 42 | uint16 | Numerically controlled oscillator (NCO). This parameter is the step size in a sine look up table with 32768 elements. For example, when the NCO equals one, it will take 32768 clock cycles to go through one clock cycle. |
nyquist_zone | 44 | uint8 | ADC external filter select (Nyquist zone select) |
DDC_dec | 45 | uint8 | Indicates the amount of decimation. A value of N means decimation by 2^(N+1). When this field is loaded, one is always added to it so that the a value of N means decimation by 2^N to match the other file formats. The possible decimation values supported by the hardware are 4, 8, 16, and 32. |
complex | 47 | uint8 | This field is inverted. If 0, then the data is complex. If 1, then the data is real and the DDC is disabled. When this field is loaded it is inverted so that a 1 means complex/DDC data. |
data | 48 | int16*Nt | Nt int16 real samples or Nt int16 complex samples. Sample order is real0, imag0, real1, imag1, etc. Certain selections of start/stop index sometimes add an extra sample (a bug in the hardware). |
File version 4: snow2/kuband2 alternate
IEEE big endian format.
Field | Byte Offset | Type | Description |
---|---|---|---|
Frame sync | 0 | uint32 | 0xBADA55E5 |
EPRI | 4 | uint32 | Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. |
seconds | 8 | uint64 | Seconds of day field. Pulled from NMEA $GPGGA UTC time using hardware UART, character string "00HHMMSS" in ASCII format. First two bytes are always zero. The last two bytes are a 2 character ASCII seconds of minute string. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect. |
fraction | 16 | uint64 | Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count and generally never wrap around because it is 64 bits. |
counter | 24 | uint64 | Counter operating at fparam.clk. This counter is starts at zero and is never reset. |
presums | 34 | uint8 | Number of presums minus 1. A value of N in this field, means that N+1 presums were done. |
bit_shifts | 35 | int8 | Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts. |
start_index | 36 | uint16 | Sample index that recording begins on (this sample is recorded). |
stop_index | 38 | uint16 | Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = stop_index - start_index. |
data | 40 | int16*Nt | Nt int16 real samples. |
File version 5: snow3/kuband3
IEEE big endian format. Second version of DDC code.
Field | Byte Offset | Type | Description |
---|---|---|---|
Frame sync | 0 | uint32 | 0xBADA55E5 |
EPRI | 4 | uint32 | Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. |
seconds | 8 | uint32 | Seconds of day field. Pulled from NMEA $GPGGA UTC time using hardware UART, character string "SSMMHH00" in binary coded decimal (BCD) format. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect. |
fraction | 12 | uint32 | Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. |
counter | 16 | uint64 | Counter operating at fparam.clk. This counter is starts at zero and is never reset. |
comp_time_sod | 24 | uint64 | Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader. |
wf index | 32 | uint8 | Waveform index |
num_wfs | 33 | uint8 | Number of waveforms minus 1. A value of N in this field, means that there are N+1 waveforms. |
presums | 34 | uint8 | Number of presums minus 1. A value of N in this field, means that N+1 presums were done. |
bit_shifts | 35 | int8 | Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts. |
start_index | 36 | uint16 | Sample index that recording begins on (this sample is recorded). |
stop_index | 38 | uint16 | Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = floor((stop-start)/DDC_dec)). |
DC_offset | 40 | int16 | DC offset to cancel out ADC offset before entering DDC. Generally this field is not needed. |
NCO_freq | 42 | uint16 | Numerically controlled oscillator (NCO). This parameter is the step size in a sine look up table with 32768 elements. For example, when the NCO equals one, it will take 32768 clock cycles to go through one clock cycle. |
nyquist_zone | 44 | uint8 | ADC external filter select (Nyquist zone select) |
DDC_dec | 45 | uint8 | Indicates the amount of decimation. A value of N means decimation by 2^N. The possible decimation values supported by the hardware are 2, 4, 8, 16. |
complex | 47 | uint8 | This field is inverted. If 0, then the data is complex. If 1, then the data is real and the DDC is disabled. When this field is loaded it is inverted so that a 1 means complex/DDC data. |
data | 48 | int16*Nt | Nt int16 real samples or Nt int16 complex samples. Sample order is real0, imag0, real1, imag1, etc. Certain selections of start/stop index sometimes add an extra sample (a bug in the hardware). |
File version 6: snow4/kuband4
IEEE big endian format. NRL Snow Radar. Record boundaries are ambiguous. If switch is toggling between nadir and side-looking, then one record (EPRI) should include both the nadir and side-looking waveforms in a single record. However, a different EPRI and time stamp is assigned to the nadir and side-looking waveforms. Therefore two record headers get saved with every record. For synchronization, the second record is removed and the EPRI field is divided by 2.
Field | Byte Offset | Type | Description |
---|---|---|---|
Frame sync | 0 | uint32 | 0xBADA55E5 |
EPRI | 4 | uint32 | Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. |
seconds | 8 | uint32 | Seconds of day field. Pulled from NMEA $GPGGA UTC time using hardware UART, character string "SSMMHH00" in binary coded decimal (BCD) format. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect. |
fraction | 12 | uint32 | Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. |
counter | 16 | uint64 | Counter operating at fparam.clk. This counter is starts at zero and is never reset. |
comp_time_sod | 24 | uint64 | Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader. |
delay | 32 | uint16 | The delay of the reference signal. One (1) delay is equal to 8ns. |
presums | 34 | uint8 | Number of presums minus 1. A value of N in this field, means that N+1 presums were done. |
bit_shifts | 35 | int8 | Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts. |
start_index | 36 | uint16 | Sample index that recording begins on (this sample is recorded). |
stop_index | 38 | uint16 | Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = stop_index - start_index. |
DC_offset | 40 | int16 | DC offset to cancel out ADC offset before entering DDC. Generally this field is not needed. |
NCO_freq | 42 | uint16 | Numerically controlled oscillator (NCO). This parameter is the step size in a sine look up table with 32768 elements. For example, when the NCO equals one, it will take 32768 clock cycles to go through one clock cycle. |
switch | 44 | uint8 | Indicates the switch setting. For the only system using this file format, 1 = nadir and 0 = side looking. |
DDC_dec | 45 | uint8 | Indicates the amount of decimation. A value of N means decimation by 2^N. The possible decimation values supported by the hardware are 2, 4, 8, 16. |
complex | 47 | uint8 | This field is inverted. If 0, then the data is complex. If 1, then the data is real and the DDC is disabled. When this field is loaded it is inverted so that a 1 means complex/DDC data. |
data | 40 | int16*Nt | Nt int16 real samples or Nt int16 complex samples. Sample order is real0, imag0, real1, imag1, etc. Certain selections of start/stop index sometimes add an extra sample (a bug in the hardware). |
File version 7: snow5/kuband5
IEEE big endian format. AWI Snow Radar.
Field | Byte Offset | Type | Description |
---|---|---|---|
Frame sync | 0 | uint32 | 0x1ACFFC1D |
EPRI | 4 | uint32 | Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. |
seconds | 8 | uint32 | Seconds of day field. Pulled from NMEA $GPGGA UTC time using hardware UART, character string "SSMMHH00" in binary coded decimal (BCD) format. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect. |
fraction | 12 | uint32 | Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. |
counter | 16 | uint64 | Counter operating at fparam.clk. This counter is starts at zero and is never reset. |
file_version | 24 | uint16 | This field is hard coded to 7. |
switch | 26 | uint8 | State of TTL line for this waveform. Use of the switch is season dependent. For AWI snow radar, 0: V transmit polarization, 1: H transmit polarization. |
num_wfs | 27 | uint8 | Number of waveforms minus 1. A value of N in this field, means that there are N+1 waveforms. |
presums | 34 | uint8 | Number of presums minus 1. A value of N in this field, means that N+1 presums were done. |
bit_shifts | 35 | int8 | Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts. |
start_index | 36 | uint16 | Sample index that recording begins on (this sample is recorded). |
stop_index | 38 | uint16 | Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = floor((stop-start)/DDC_dec)). |
DC_offset | 40 | int16 | DC offset to cancel out ADC offset before entering DDC. Generally this field is not needed. |
NCO_freq | 42 | uint16 | Numerically controlled oscillator (NCO). This parameter is the step size in a sine look up table with 32768 elements. For example, when the NCO equals one, it will take 32768 clock cycles to go through one clock cycle. |
nyquist_zone | 44 | uint8 | ADC external filter select (Nyquist zone select) |
DDC_dec | 45 | uint8 | Indicates the amount of decimation. A value of N means decimation by 2^N. The possible decimation values supported by the hardware are 2, 4, 8, 16. |
complex | 47 | uint8 | This field is inverted. If 0, then the data is complex. If 1, then the data is real and the DDC is disabled. When this field is loaded it is inverted so that a 1 means complex/DDC data. |
data | 48 | int16*Nt | Nt int16 real samples or Nt int16 complex samples. Sample order is real0, imag0, real1, imag1, etc. Certain selections of start/stop index sometimes add an extra sample (a bug in the hardware). |
File version 8, 11: snow8, data_v11
File version 8 is Agilent AWG based snow radar.
File version 11 is Minisnow for 2019 and later.
IEEE big endian format.
Field | Byte Offset | Type | Description |
---|---|---|---|
Frame sync | 0 | uint32 | File version 8: 0xBADA55E5 File version 11: 0x1ACFFC1D for the first waveform and 0x00000000 for the remaining waveforms. |
EPRI | 4 | uint32 | Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. |
seconds | 8 | uint32 | Seconds of day field. Pulled from NMEA $GPGGA UTC time using hardware UART, character string "SSMMHH00" in binary coded decimal (BCD) format. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect. |
fraction | 12 | uint32 | Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. |
counter | 16 | uint64 | Counter operating at fparam.clk. This counter is starts at zero and is never reset. |
file_version | 24 | uint16 | For file version 8, this field is always zero even though it should be 8. For file version 11, it is always 11. |
num_wfs | 27 | uint8 | Number of waveforms minus 1. A value of N in this field, means that there are N+1 waveforms. |
multifield | 33 | uint8 | Multiple fields in one. See explanation below. |
presums | 34 | uint8 | Number of presums minus 1. A value of N in this field, means that N+1 presums were done. |
bit_shifts | 35 | int8 | Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts. |
start_index | 36 | uint16 | Sample index that recording begins on (this sample is recorded). |
stop_index | 38 | uint16 | Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = floor((stop-start)/DDC_dec)). |
waveform_ID | 40 | char8*8 | File version 8: Keysight waveform generator waveform ID. The informal waveform ID was OIB_FMCW for the deramp reference being the same as the transmit signal. For time offsets between the reference and transmit signal, the format is “SSSSSNNN” with “S” representing an ASCII space (32 or 0x20) and “NNN” representing three ASCII numbers 0-9 and a delay of NN.N s. For example “ 090” is a 9 us delay. File version 11: Reserved (always zero). |
data | 48 | int16*Nt*num_adc | Nt int16 real samples for num_adc ADC inputs. Samples are interleaved for each ADC. The order is real0_adc0, real0_adc1, real1_adc0, real1_adc1, real2_adc0, etc. |
Multifield bit description
Bits | Name | Description |
---|---|---|
7:5 | reserved | MSB, always zero. |
4 | complex_flag | Binary value. 1 indicates complex data. 0 indicates real data. |
3:2 | num_adc | Number of ADC channels minus one (b'00 means 1 ADC, b'01 means 2 ADCs, b'10 means 3 ADCs, and b'11 means 4 ADCs) |
1:0 | nyquist_zone | LSB, Nyquist zone select (usually controls an external ADC filter), b'00 is 0 to fs/2, b'01 is fs/2 to f_s, b'10 is f_s to 3fs/2, b'11 is 3fs/2 to 2f_s. |
File version 401: mcords
Custom digital system.
IEEE big endian format.
Field | Byte Offset | Type | Description |
---|---|---|---|
Frame sync | 0 | uint32 | 0xDEADBEEF |
radar_ID | 4 | uint32 | Radar ID. Each copy of the radar is assigned a unique ID which is written to this field. This field is not loaded by the loader. |
seconds | 8 | uint32 | Seconds of day field. Pulled from NMEA $GPGGA UTC time in software and then increments by one for each 1 PPS pulse that is read in. If there are errors in the PPS signal (e.g. ringing), then the seconds field can be incorrect. |
fraction | 12 | uint32 | Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. |
EPRI | 16 | uint32 | Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. |
num_wf | 20 | uint32 | Number of waveforms. Valid range is 1 to 16. |
NA | 24 | uint32 | Reserved |
NA | 28 | uint32 | Reserved |
wf | 32 | 64 bits*16 | Waveform fields. |
data | 160 | uint16*Nt*num_wf | Samples are not interleaved. Waveform 1 comes first, then waveform 2, and so on. Up to 16 waveforms. Each waveform is Nt uint16 real samples. |
wf Fields
Each wf field has 8 bytes. There are 16 wf fields.
Field | Byte Offset | Type | Description |
---|---|---|---|
num_sam | 0 | uint32 | Number of samples. Only bits 13:0 are used. The rest are always zero. |
Multifield | 4 | uint32 | Multiple fields in one. See explanation below. |
Multifield bit description
Bits | Name | Description |
---|---|---|
31:29 | reserved | MSB, always zero. |
28:24 | bit_shifts | Number of logical right bit shifts performed after presumming. |
23:10 | start_index | Sample index that recording begins on (this sample is recorded). |
9:0 | presums | Number of presums minus 1. If this field is N, then there were N+1 presums. The loader adds one to this field so that a value of N means N presums were done. |
File version 402: mcords2
NI digital system.
IEEE big endian format.
Field | Byte Offset | Type | Description |
---|---|---|---|
Frame sync | 0 | uint32 | 0xBADA55E5 |
EPRI | 4 | uint32 | Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. |
seconds | 8 | uint32 | Seconds of day field. Pulled from NMEA $GPGGA UTC time in software and then increments by one for each 1 PPS pulse that is read in. If there are errors in the PPS signal (e.g. ringing), then the seconds field can be incorrect. |
fraction | 12 | uint32 | Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. |
comp_time_sod | 16 | uint64 | Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader. |
NA | 24 | uint64 | Notes indicate a second UTC time SOD field, but it is not used. |
wf index | 32+WF | uint8 | Waveform index. This field is zero-indexed. |
num_wfs | 33+WF | uint8 | Number of waveforms minus 1. A value of N in this field, means that there are N+1 waveforms. Note that this field is hard coded to 1 meaning that there are two waveforms in each record. Due to a hardware hack, these two waveforms actually represent the same data stream. These two waveforms are always loaded together and summed so that effectively there is just one waveform. Therefore the loader always returns num_wfs == 1. |
presums | 34+WF | uint8 | Number of presums minus 1. A value of N in this field, means that N+1 presums were done. Note that this is always doubled after loading because of the hardware hack which is solved by adding the two waveforms together which effectively doubles the number of presums for the loaded data. |
bit_shifts | 35+WF | int8 | Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts. |
start_index | 36+WF | uint16 | Sample index that recording begins on (this sample is recorded). |
stop_index | 38+WF | uint16 | Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = stop_index - start_index. |
data | 40+WF | int16*Nt*num_adc | Nt int16 real samples for num_adc ADC inputs. num_adc is always 4 for this data format. Samples are interleaved for each ADC. The order is real0_adc0, real0_adc1, real0_adc2, real0_adc3, real1_adc0, real1_adc1, real1_adc2, real1_adc3, real2_adc0, etc. |
WF is the waveform offset. For waveform 0 this is always WF = 0. Subsequent waveforms are appended in sequence to the file and their byte offset in each record is determined by the cumulative sum of the previous waveforms.
File version 403: mcords3
NI digital system. Version 2 format for RDS.
IEEE big endian format.
Field | Byte Offset | Type | Description |
---|---|---|---|
Frame sync | 0 | uint32 | 0xBADA55E5 |
EPRI | 4 | uint32 | Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. |
seconds | 8 | uint32 | Seconds of day field. Pulled from NMEA $GPGGA UTC time using hardware UART, character string "SSMMHH00" in binary coded decimal (BCD) format. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect. |
fraction | 12 | uint32 | Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. |
counter | 16 | uint64 | Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader. |
comp_time_sod | 24 | uint64 | Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader. |
wf index | 32+WF | uint8 | Waveform index. This field is zero-indexed. |
num_wfs | 33+WF | uint8 | Number of waveforms minus 1. A value of N in this field, means that there are N+1 waveforms. Note that this field is hard coded to 1 meaning that there are two waveforms in each record. Due to a hardware hack, these two waveforms actually represent the same data stream. These two waveforms are always loaded together and summed so that effectively there is just one waveform. Therefore the loader always returns num_wfs == 1. |
presums | 34+WF | uint8 | Number of presums minus 1. A value of N in this field, means that N+1 presums were done. Note that this is always doubled after loading because of the hardware hack which is solved by adding the two waveforms together which effectively doubles the number of presums for the loaded data. |
bit_shifts | 35+WF | int8 | Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts. |
start_index | 36+WF | uint16 | Sample index that recording begins on (this sample is recorded). |
stop_index | 38+WF | uint16 | Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = stop_index - start_index. |
data | 40+WF | int16*Nt*num_adc | Nt int16 real samples for num_adc ADC inputs. num_adc is always 4 for this data format. Samples are interleaved for each ADC. The order is real0_adc0, real0_adc1, real0_adc2, real0_adc3, real1_adc0, real1_adc1, real1_adc2, real1_adc3, real2_adc0, etc. |
WF is the waveform offset. For waveform 0 this is always WF = 0. Subsequent waveforms are appended in sequence to the file and their byte offset in each record is determined by the cumulative sum of the previous waveforms.
File version 404: mcords4
NI digital system. Wideband system deployed only for 2013 Antarctica Basler.
IEEE big endian format.
Field | Byte Offset | Type | Description |
---|---|---|---|
Frame sync | 0 | uint32 | 0x1ACFFC1D |
EPRI | 4 | uint32 | Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. |
NA | 8 | uint32 | Shows FPGA firmware version used for data storage. The format of version tag in decimal display format is: YYYY-MM-DD-VV, e.g. 2013081401, means the FPGA firmware is version 01 generated on 08/14/2013. This is not loaded by the loader. |
NA | 12 | uint32 | This filed is reserved for tagging the measurement type of the data. Current measurement code is:
This is not loaded by the loader. |
seconds | 16 | uint32 | Seconds of day field. Pulled from NMEA $GPGGA UTC time using hardware UART, character string "SSMMHH00" in binary coded decimal (BCD) format. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect. |
fraction | 20 | uint32 | Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. |
counter | 24 | uint64 | Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader. |
comp_time_sod | 32 | uint64 | Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader. |
wf index | 40+WF | uint8 | Waveform index. This field is zero-indexed. |
num_wfs | 41+WF | uint8 | Number of waveforms minus 1. A value of N in this field, means that there are N+1 waveforms. Note that this field is hard coded to 1 meaning that there are two waveforms in each record. Due to a hardware hack, these two waveforms actually represent the same data stream. These two waveforms are always loaded together and summed so that effectively there is just one waveform. Therefore the loader always returns num_wfs == 1. |
presums | 42+WF | uint8 | Number of presums minus 1. A value of N in this field, means that N+1 presums were done. Note that this is always doubled after loading because of the hardware hack which is solved by adding the two waveforms together which effectively doubles the number of presums for the loaded data. |
bit_shifts | 43+WF | int8 | Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts. |
start_index | 44+WF | uint16 | Sample index that recording begins on (this sample is recorded). |
stop_index | 46+WF | uint16 | Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = 4*(stop_index - start_index). |
data | 48+WF | int16*Nt | Nt int16 real samples. |
WF is the waveform offset. For waveform 0 this is always WF = 0. Subsequent waveforms are appended in sequence to the file and their byte offset in each record is determined by the cumulative sum of the previous waveforms.
File version 407,408: mcords5
NI digital system. AWI UWB system.
There is a bug in the header format for file version 408. For file version 408, every 8 bytes, there are 8 zeros inserted. Therefore this table is shown separately from 407.
IEEE big endian format.
File version 407
Field | Byte Offset | Type | Description |
---|---|---|---|
Frame sync | 0 | uint32 | 0x1ACFFC1D |
EPRI | 4 | uint32 | Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. |
NA | 8 | uint16 | Shows FPGA firmware version used for data storage. The format of version tag in decimal display format is noted as: YMMDD (but this is not possible since this is 20 bits). This field is not loaded by the loader. |
DDC_dec | 10 | uint16 | The digital down converter (DDC) decimation. DDC_dec == 0 means no decimation and no DDC. DDC_dec== 1 means decimation by 4. DDC_dec == 2 means decimation by 8. The loader converts this to the actual decimation so that DDC_dec 0, 4, or 8. The complex flag is set to 1 when DDC is enabled. |
NA | 12 | uint32 | This filed is reserved for tagging the measurement type of the data. Current measurement code is:
This is not loaded by the loader. |
seconds | 16 | uint32 | Seconds of day field. Pulled from NMEA $GPGGA UTC time using hardware UART, character string "SSMMHH00" in binary coded decimal (BCD) format. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect. |
fraction | 20 | uint32 | Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. |
counter | 24 | uint64 | Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader. |
comp_time_sod | 32 | uint64 | Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader. |
wf index | 40+WF | uint8 | Waveform index. This field is zero-indexed. |
num_wfs | 41+WF | uint8 | Number of waveforms minus 1. A value of N in this field, means that there are N+1 waveforms. Note that this field is hard coded to 1 meaning that there are two waveforms in each record. Due to a hardware hack, these two waveforms actually represent the same data stream. These two waveforms are always loaded together and summed so that effectively there is just one waveform. Therefore the loader always returns num_wfs == 1. |
presums | 42+WF | uint8 | Number of presums minus 1. A value of N in this field, means that N+1 presums were done. Note that this is always doubled after loading because of the hardware hack which is solved by adding the two waveforms together which effectively doubles the number of presums for the loaded data. |
bit_shifts | 43+WF | int8 | Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts. |
start_index | 44+WF | uint16 | Sample index that recording begins on (this sample is recorded). |
Nt | 46+WF | uint16 | Number of samples recorded after record start, the actual length of the data need to be adjusted according to the DDC_dec field:
|
data | 48+WF | int16*Nt | Nt int16 real samples packed depending on the DDC mode. For DDC_dec==8, the samples are packed in order and interleaved I and Q. For DDC_dec==4, the samples are packed real0, real1, imag0, imag1, real2, real3, imag2, imag3, real4, etc. For DDC_dec==1, the samples are packed data0, data2, data4, data6, data1, data3, data5, data7, and then repeats with the next 8 samples data8, data10, data12, data14, data9, data11, etc. |
WF is the waveform offset. For waveform 0 this is always WF = 0. Subsequent waveforms are appended in sequence to the file and their byte offset in each record is determined by the cumulative sum of the previous waveforms.
File version 408
Field | Byte Offset | Type | Description |
---|---|---|---|
Frame sync | 0 | uint32 | 0x1ACFFC1D |
EPRI | 4 | uint32 | Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. |
NA | 16 | uint16 | Shows FPGA firmware version used for data storage. The format of version tag in decimal display format is noted as: YMMDD (but this is not possible since this is 20 bits). This field is not loaded by the loader. |
DDC_dec | 18 | uint16 | The digital down converter (DDC) decimation. DDC_dec == 0 means no decimation and no DDC. DDC_dec== 1 means decimation by 4. DDC_dec == 2 means decimation by 8. The loader converts this to the actual decimation so that DDC_dec 0, 4, or 8. The complex flag is set to 1 when DDC is enabled. |
NA | 20 | uint32 | This filed is reserved for tagging the measurement type of the data. Current measurement code is:
This is not loaded by the loader. |
seconds | 32 | uint32 | Seconds of day field. Pulled from NMEA $GPGGA UTC time using hardware UART, character string "SSMMHH00" in binary coded decimal (BCD) format. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect. |
fraction | 36 | uint32 | Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. |
counter | 48 | uint64 | Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader. |
comp_time_sod | 64 | uint64 | Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader. |
wf index | 80+WF | uint8 | Waveform index. This field is zero-indexed. |
num_wfs | 81+WF | uint8 | Number of waveforms minus 1. A value of N in this field, means that there are N+1 waveforms. Note that this field is hard coded to 1 meaning that there are two waveforms in each record. Due to a hardware hack, these two waveforms actually represent the same data stream. These two waveforms are always loaded together and summed so that effectively there is just one waveform. Therefore the loader always returns num_wfs == 1. |
presums | 82+WF | uint8 | Number of presums minus 1. A value of N in this field, means that N+1 presums were done. Note that this is always doubled after loading because of the hardware hack which is solved by adding the two waveforms together which effectively doubles the number of presums for the loaded data. |
bit_shifts | 83+WF | int8 | Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts. |
start_index | 84+WF | uint16 | Sample index that recording begins on (this sample is recorded). |
Nt | 86+WF | uint16 | Number of samples recorded after record start, the actual length of the data need to be adjusted according to the DDC_dec field:
|
data | 96+WF | int16*Nt | Nt int16 real samples packed depending on the DDC mode. For DDC_dec==8, the samples are packed in order and interleaved I and Q. For DDC_dec==4, the samples are packed real0, real1, imag0, imag1, real2, real3, imag2, imag3, real4, etc. For DDC_dec==1, the samples are packed data0, data2, data4, data6, data1, data3, data5, data7, and then repeats with the next 8 samples data8, data10, data12, data14, data9, data11, etc. |
WF is the waveform offset. For waveform 0 this is always WF = 0. Subsequent waveforms are appended in sequence to the file and their byte offset in each record is determined by the cumulative sum of the previous waveforms.