CHAPTER 10
DIGITAL ON-BOARD RECORDER STANDARD
2005
10.6 Data Format Definition
10.6.1 Common Packet Elements.
Data shall have three required parts, a Packet Header, a Packet Body, a
Packet Trailer, and an optional part if enabled, a Packet Secondary Header.
Single or multiple channel recordings will always conform to the structure
outlined in Figure 10-4.
Figure 10-4. Data recording structure.
A packet has the basic structure shown in Figure 10-5. Note that the width of
the structure is not related to any number of bits. This table is merely to
represent relative packet elements and their placement within the packet. See
Figure 10-6 for a diagram of the generic packet format. This figure does not
depict the bit lengths of each field. Word sizes of 8-bit, 16-bit and 32-bit are
used depending on the data type. To further clarify the packet layout, Figure
10-6 shows the generic packet in a 32-bit, little-endian format, and assumes
16-bit data words and data checksum.
| PACKET SYNC PATTERN |
Packet Header |
| CHANNEL ID |
| PACKET LENGTH |
| DATA LENGTH |
| HEADER VERSION |
| SEQUENCE NUMBER |
| PACKET FLAGS |
| DATA TYPE |
| RELATIVE TIME COUNTER |
| HEADER CHECKSUM |
| TIME |
Packet Secondary Header (Optional) |
| RESERVED |
| SECONDARY HEADER CHECKSUM |
| CHANNEL SPECIFIC DATA |
Packet Body |
| INTRA-PACKET TIME STAMP 1 |
| INTRA-PACKET DATA HEADER 1 |
| DATA 1 |
| . . . . |
| INTRA-PACKET TIME STAMP n |
| INTRA-PACKET DATA HEADER n |
| DATA n |
| DATA CHECKSUM |
Packet Trailer |
Figure 10-5. General packet format.
msb 31 |
16 |
15 |
lsb 0 |
  |
| CHANNEL ID |
PACKET SYNC PATTERN |
Packet Header |
| PACKET LENGTH |
| DATA LENGTH |
| DATA TYPE |
PACKET FLAGS |
SEQUENCE NUMBER |
HEADER VERSION |
| RELATIVE TIME COUNTER |
| HEADER CHECKSUM |
RELATIVE TIME COUNTER |
| TIME (LSLW) |
(Optional) Packet Secondary Header |
| TIME (MSLW) |
| SECONDARY HEADER CHECKSUM |
RESERVED |
| CHANNEL SPECIFIC DATA |
Packet Body |
| INTRA-PACKET TIME STAMP 1 |
| INTRA-PACKET TIME STAMP 1 |
| INTRA-PACKET DATA HEADER 1 |
| DATA 1 WORD 2 |
DATA 1 WORD 1 |
| DATA 1 WORD n |
. . . . |
| INTRA-PACKET TIME STAMP 2 |
| INTRA-PACKET TIME STAMP 2 |
| INTRA-PACKET DATA HEADER 2 |
| DATA 2 WORD 2 |
DATA 2 WORD 1 |
| DATA 1 WORD n |
. . . . |
| . . . . |
| INTRA-PACKET TIME STAMP N |
| INTRA-PACKET TIME STAMP N |
| INTRA-PACKET DATA HEADER N |
| DATA N WORD 2 |
DATA N WORD 1 |
| DATA N WORD n |
. . . . |
| [FILLER] |
  |
| DATA CHECKSUM |
  |
Packet Trailer |
Figure 10-6. A 32-Bit packet format layout.
Depending on the data type, the size of the Data Checksum can be 16-bits,
32-bits, 8-bits, or left out entirely. For a 32-bit Data Checksum, the packet
trailer would be as shown in Figure 10-7.
msb 7 |
lsb 0 |
  |
| [FILLER] |
Packet Trailer |
| DATA CHECKSUM (LSB) |
| DATA CHECKSUM |
| DATA CHECKSUM |
| DATA CHECKSUM (MSB) |
Figure 10-7. Packet trailer for 32 bit data checksum.
For an 8-bit Data Checksum, the packet trailer would be as shown in Figure
10-8.
msb 7 |
lsb 0 |
  |
| [FILLER] |
Packet Trailer |
| DATA CHECKSUM |
Figure 10-8. Packet trailer for 8-bit data checksum.
The size of a single Packet may be a maximum of 524,288 bytes as shown in
Table 10-5C. This includes the Packet Header, Packet Body, Packet Trailer, and
optional Packet Secondary Header if enabled. The only exception to the packet
size limit is the Computer Generated Data Packet, Format 1 Setup Record which
may be a maximum of 134,217,728 bytes. Any Packet which requires more than
524,288 bytes may do so by utilizing the packet sequence counter and generating
multiple packets. Some packet types allow a single data set to span multiple
packets if the data set size or time does not fall under packet maximums.
Consult the individual data types for the mechanisms that allow packet data
spanning for a given type.
 |
With the exception of Computer Generated Packets all other packets shall
be generated within 100 milliseconds whenever data is available. This
requirement ensures that a packet shall contain less than or equal to 100
milliseconds worth of data, and that a packet containing any data must be
generated within 100 milliseconds from the time the first data was placed in the
packet. This strategy will assure packet granularity but save bandwidth by not
forcing or marking empty/idle packets. |
 |
Packets can not contain only filler or can not be idle or empty. All
packets that are generated shall contain data. |
 |
All reserved bit fields in packet headers or channel specific data
words must be set to zero (0). |
 |
With the exception of Computer Generated Data Packets all other packets
must be committed to a Stream within 10,000,000 counts of the 10 MHz Relative Time
Counter contained in the packet header. |
| TABLE 10-5C. PACKET REQUIREMENTS |
| PACKET TYPE |
REQUIRED |
MAXIMUM PACKET SIZE |
REQUIRED PACKET LOCATION |
| Computer Generated Data Packet, Format 1 Setup Record |
Yes |
134,217,728 bytes |
First Packet in Recording. |
| Time Data Packet |
Yes |
524,288 bytes |
First Dynamic Data Packet Following Setup Record Packet(s). Reference the Time Data Packet Description for packet rate. |
| PCM, Mil-Std-1553, Analog, Message, Discrete, ARINC 429, Video, Image, UART, Computer Generated Data Packet, Format 2 Recording Events, Computer Generated Data Packet, Format 3 Recording Index (Node Index)
|
No |
524,288 bytes |
After First Time Data Packet and before the first Computer Generated Data Packet Format 2, Recording Index (Root Index) if enabled. |
| Computer Generated Data Packet, Format 3 Recording Index (Root Index) |
Yes, if Recording Events are Enabled. No, if Recording Events are Disabled. |
524,288 bytes |
If Recording Index Packets are enabled the Root Index Packet Type will be the last packet(s) in a recording. |
10.6.1.1 Packet Header.
The length of the packet header is fixed at 24 bytes (192-bits). The Packet
Header is mandatory and shall consist of the ten fields, positioned
contiguously, in the following sequence:
- Packet Sync Pattern. (2 Bytes) contain a static sync value for the every
packet. The Packet Sync Pattern value shall be 0xEB25.
- Channel ID. (2 Bytes) contain a value representing the Packet Channel ID. All
channels in a system must have a unique value (data channels). Channel value
0x0000 is reserved, and is used to insert computer-generated messages into the
composite data stream. Channel values 0x0001 thru 0xFFFF are available.
When a distributed Multiplexer system is used, the setup record will contain a
recorder attribute that identifies the number of most significant bits used from
the Channel ID field that identifies the channels from each multiplexer. The
least significant bits of the Channel ID will provide the unique Channel ID for
each data source acquired by a given multiplexer.
- Packet Length. (4 Bytes) contain a value representing the length of the
entire packet. The value shall be in bytes and is always a multiple of four
(bits 1 and 0 shall always be zero). This Packet Length includes the Packet
Header, Packet Secondary Header (if enabled), Channel Specific Data,
Intra-Packet Data Headers, Data, Filler and Data Checksum.
- Data Length. (4 Bytes) contain a value representing the valid data length
within the packet. This value shall be represented in bytes. Valid data length
includes Channel Specific Data, Intra-Packet Data Headers, Intra-Packet Time
Stamp, and Data but does not include filler and Data Checksum.
- Header Version. (1 Byte) contains a value representing the version of the
Packet Header for Chapter 10 packets. The value shall be represented by the
following bit patterns:
0x00 = Reserved
0x01 = Initial Release Header Version
0x02 = TG-78
0x03 = thru 0xFF = Reserved
- Sequence Number. (1 Byte) contains a value representing the packet sequence
number for each Channel ID. This is simply a counter that increments by n + 0x01
to 0xFF for every packet transferred from a particular channel and is not
required to start at 0x00 for the first occurrence of a packet for the Channel
ID.
 |
Sequence Number counter will repeat (roll over to 0x00) if more that 256
packets are transferred in a given recording per channel. |
- Packet Flags. (1 Byte) contain bits representing information on the content
and format of the packet(s).
| Bit 7: |
Indicates the presence or absence of the Packet Secondary Header.
0 = Packet Secondary Header is not present.
1 = Packet Secondary Header is present.
|
| Bit 6: |
Indicates the Intra-Packet Time Stamp Time Source.
0 = Packet Header 48-Bit Relative Time Counter.
1 = Packet Secondary Header Time (Bit 7 must = 1).
|
| Bit 5: |
Relative Time Counter Sync Error.
0 = No Relative Time Counter sync error.
1 = Relative Time Counter sync error has occurred.
|
| Bit 4: |
Indicates the Data Overflow Error.
0 = No data overflow.
1 = Data overflow has occurred.
|
| Bits 3-2: |
Indicate the Packet Secondary Header Time Format.
00 = IRIG 106 Chapter 4 binary weighted 48-bit time format. The two LSB’s of the
64-bit Packet Secondary Header Time and Intra-Packet Time Stamp shall be zero
filled.
01 = Reserved
10 = Reserved
11 = Reserved
|
| Bits 1-0: |
Indicate Data Checksum existence.
00 = No data checksum present
01 = 8-bit data checksum present
10 = 16-bit data checksum present
11 = 32-bit data checksum present
|
- Data Type. (1 Byte) contains a value representing the type and format of the
data. All values not used to define a data type are reserved for future data
type growth:
| Packet Header Value |
Data Type Name |
Data Type Description |
| 0x00 |
Computer Generated Data, Format 0 |
(User Defined) |
| 0x01 |
Computer Generated Data, Format 1 |
(Setup Record) |
| 0x02 |
Computer Generated Data, Format 2 |
(Recording Events) |
| 0x03 |
Computer Generated Data, Format 3 |
(Recording Index) |
| 0x04 - 0x07 |
Computer Generated Data, Format 4 - Format 7 |
(Reserved for future use) |
| 0x08 |
PCM Data, Format 0 |
(Reserved for future use) |
| 0x09 |
PCM Data, Format 1 |
(IRIG 106 Chapter 4) |
| 0x0A - 0x0F |
PCM Data, Format 2 - Format 7 |
(Reserved for future use) |
| 0x10 |
Time Data, Format 0 |
(Reserved for future use) |
| 0x11 |
Time Data, Format 1 |
(IRIG/GPS/RTC) |
| 0x12 - 0x17 |
Time Data, Format 2 - Format 7 |
(Reserved for future use) |
| 0x18 |
MIL-STD-1553 Data, Format 0 |
(Reserved for future use) |
| 0x19 |
MIL-STD-1553 Data, Format 1 |
(Mil-Std-1553B Data) |
| 0x1a - 0x1F |
MIL-STD-1553 Data, Format 2 - Format 7 |
(Reserved for future use) |
| 0x20 |
Analog Data, Format 0 |
(Reserved for future use) |
| 0x21 |
Analog Data, Format 1 |
(Analog Data) |
| 0x22 - 0x27 |
Analog Data, Format 2 - Format 7 |
(Reserved for future use) |
| 0x28 |
Discrete Data, Format 0 |
(Reserved for future use) |
| 0x29 |
Discrete Data, Format 1 |
(Discrete Data) |
| 0x2A - 0x2F |
Discrete Data, Format 2 - Format 7 |
(Reserved for future use) |
| 0x30 |
Message Data, Format 0 |
(Generic Message Data) |
| 0x31 - 0x37 |
Message Data, Format 1 - Format 7 |
(Reserved for future use) |
| 0x38 |
ARINC 429 Data, Format 0 |
(ARINC429 Data) |
| 0x39- 0x3F |
ARINC 429 Data, Format 1 - Format 7 |
(Reserved for future use) |
| 0x40 |
Video Data, Format 0 |
(MPEG-2 Video) |
| 0x41 |
Video Data, Format 1 |
(ISO 13818-1 MPEG-2 Bit Stream) |
| 0x42 - 0x47 |
Video Data, Format 2 - Format 7 |
(Reserved for future use) |
| 0x48 |
Image Data, Format 0 |
(Image Data) |
| 0x49 - 0x4F |
Image Data, Format 1 - Format 7 |
(Reserved for future use) |
| 0x50 |
UART Data, Format 0 |
(UART Data) |
| 0x51 - 0x57 |
UART Data, Format 1 - Format 7 |
(Reserved for future use) |
| 0x58 |
IEEE-1394 Fire Wire Data, Format 0 |
(IEEE-1394 Data) |
| 0x59 - 0x5F |
IEEE-1394 Fire Wire Data, Format 1 - Format 7 |
(Reserved for future use) |
| 0x60 |
Parallel Data, Format 0 |
(Parallel Data) |
| 0x61 - 0x67 |
Parallel Data, Format 1 - Format 7 |
(Reserved for future use) |
- Relative Time Counter. (6 Bytes) contain a value representing the Relative Time Counter.
 |
This is a free-running 10 MHz binary counter represented by 48-Bits
common to all data channels. The counter shall be derived from an internal
crystal oscillator and shall remain free running during each recording session.
The applicable data bit to which the 48-bit value APPLIES unless defined in each
data type section shall correspond to the first bit of the data in the packet
body. |
- Header Checksum. (2 Bytes) contain a value representing a 16-bit arithmetic
sum of all 16-bit words in the header excluding the Header Checksum Word.
10.6.1.2 Packet Secondary Header (Optional).
The length of the Packet Secondary Header is fixed at 12 bytes (96-bits). The
Packet Secondary Header is optional and when enabled shall consist of the three
fields, positioned contiguously, in the following sequence:
- Time. (8 Bytes) contain the value representing Time in the format indicated
by bits 2 and 3 of the Packet Flags in section 10.6.1.1g.
- Reserved. (2 Bytes) are reserved and shall be zero filled.
- Secondary Header Checksum. (2 Bytes) contain a value representing a 16-bit
arithmetic sum of all Secondary Header bytes excluding the Secondary Header
Checksum Word.
10.6.1.3 Packet Body.
The format of the data in the packet body is unique to each channel type.
Detailed descriptions of the type-specific data formats found in packet bodies
are described in subsequent sections of this document.
- Channel Specific Data. (Variable Bytes) contain the number and contents of
the Channel Specific Data field(s) depending on the Data Type field in the
Packet Header. Channel Specific Data is mandatory for each data type and
channel. The occurrence of Channel Specific Data is once per packet and precedes
packet channel data.
- Intra-Packet Time Stamp. (8 Bytes) contain Time in either 48-bit Relative
Time Counter format (plus 16 high-order zero bits) or 64-bit absolute format as
specified in the Packet Flags in the Packet Header. The Intra-Packet Time Stamps
are only mandatory where defined by the data formats.
- Intra-Packet Data Header. (Variable Bytes) contain additional status and
format information pertaining to the data items that follow. The Intra-packet
Data Headers are only mandatory where defined by the data formats.
- Data. (n Bytes) contain valid data from a particular channel as defined
within the data formats contained within this standard.
 |
The Intra-Packet Time Stamp and the Intra-Packet Data Header are
collectively called the Intra-Packet Header. In some cases an Intra-Packet
Header may only have a Time Stamp (zero-length Data Header), while in other
cases, the Intra-Packet Header only has a Data Header (zero-length Time Stamp).
Some data types have no Intra-Packet Header. The Intra-Packet Header
requirements are specified separately for each Data Type. |
10.6.1.4 Packet Trailer.
The packet trailer may contain filler, a data checksum, both filler and a
data checksum, or neither filler nor a data checksum. In the latter case, the
packet trailer has zero length. The reason a packet trailer would have a zero
length is best explained by understanding the reason for inserting filler. The
purpose of the filler is twofold:
- Keep all packets aligned on 32-bit boundaries (i.e., make all packet lengths
a multiple of 4 bytes), and
- Optionally keep all packets from a particular channel the same length.
If both of the above requirements are already met without adding filler,
then filler will not be added.
The inclusion of the data checksum is optional as well and is indicated by the
Packet Flags setting. When included, the packet trailer contains either an
8-bit, 16-bit or 32-bit Data Checksum. Depending on the Packet Flags option
selected, the Data Checksum is the arithmetic sum of all of the bytes (8-bits),
words (16-bits) or long words (32-bits) in the packet excluding the 24 bytes of
Packet Header Words, Packet Secondary Header (if enabled) and the Data Checksum
Word. Stated another way, the Data Checksum includes everything in the packet
body plus all added filler.
- Filler. (n Bytes/Bits) All filler shall be set to 0x00 or 0Xff
- 8-Bit Data Checksum. (1 Byte) contains a value representing an 8-bit
arithmetic sum of the bytes in the packet (includes Channel Specific Data, Data
and Filler). Only inserted if Packet Flag bits 0 and 1 = 01.
- 16-Bit Data Checksum. (2 Bytes) contain a value representing a 16-bit
arithmetic sum of the words in the packet (includes Channel Specific Data, Data
and Filler). Only inserted if Packet Flag bits 0 and 1 = 10.
- 32-Bit Data Checksum. (4 Bytes) contain a value representing a 32-bit
arithmetic sum of the long words in the packet (includes Channel Specific Data,
Data and Filler). Only inserted if Packet Flag bits 0 and 1 = 11.
Warning: strtotime() [
function.strtotime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Chicago' for 'CST/-6.0/no DST' instead in
/web/irig106/comments/show.inc on line
88
Warning: strftime() [
function.strftime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Chicago' for 'CST/-6.0/no DST' instead in
/web/irig106/comments/show.inc on line
89
05/30/2007 03:36 - Yigal Zayfman (yigal_z at elbit dot co dot il)
It seems that the way of Header Checksum calculation has been changed from 106-04:
"10.6.1.1.10 Header Checksum. This field (2 bytes) contains a value representing a 16-bit
arithmetic sum of all header bytes(!!!-YZ) excluding the Header Checksum Word."
to 106-05, 10.6.1.1:
"j. Header Checksum. (2 Bytes) contain a value representing a 16-bit arithmetic sum of all 16-bit words(!!! - YZ) in the header excluding the Header Checksum Word."
but it has no reflection in changes history description document
Warning: strtotime() [
function.strtotime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Chicago' for 'CST/-6.0/no DST' instead in
/web/irig106/comments/show.inc on line
88
Warning: strftime() [
function.strftime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Chicago' for 'CST/-6.0/no DST' instead in
/web/irig106/comments/show.inc on line
89
02/05/2007 10:34 - Bob (bob dot baggerman at gatech dot edu)
For secondary header time format = 0x00 see IRIG 106 Ch 4, section 4.7, and especially Figure 4-3. This time format is a 48 bit binary format. The most significant 32 bits (Secondary Header Time MSLW) are a binary representation of relative time with the least significant bit = 0.01 seconds. The remaining 16 bits (the most significant 16 bits of Secondary Header LSLW) represent microseconds with the least significant bit of the 16 bit word (i.e. bit 16 of the LSLW) = 1 microsecond. The least significant 16 bits of Secondary Header LSLW should be zero filled. This relative time representation has enough bits to run for over a year.
Warning: strtotime() [
function.strtotime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Chicago' for 'CST/-6.0/no DST' instead in
/web/irig106/comments/show.inc on line
88
Warning: strftime() [
function.strftime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Chicago' for 'CST/-6.0/no DST' instead in
/web/irig106/comments/show.inc on line
89
01/15/2007 12:56 - Bob (bob dot baggerman at gatech dot edu)
10.6.1.1.7 Packet Flags.
Bit 5: Relative Time Counter Sync Error
Bit 4: Indicates the Data Overflow Error.
What do these mean exactly?
Warning: strtotime() [
function.strtotime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Chicago' for 'CST/-6.0/no DST' instead in
/web/irig106/comments/show.inc on line
88
Warning: strftime() [
function.strftime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Chicago' for 'CST/-6.0/no DST' instead in
/web/irig106/comments/show.inc on line
89
01/15/2007 12:55 - Bob (bob dot baggerman at gatech dot edu)
10.6.1.1.5 Header version
Beware of different header versions. To be complete, must have all Ch 10 versions. It would be nice to have a table of what changed between versions.
This field definition changes some in the 2006 version.
Warning: strtotime() [
function.strtotime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Chicago' for 'CST/-6.0/no DST' instead in
/web/irig106/comments/show.inc on line
88
Warning: strftime() [
function.strftime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Chicago' for 'CST/-6.0/no DST' instead in
/web/irig106/comments/show.inc on line
89
01/15/2007 12:52 - Bob (bob dot baggerman at gatech dot edu)
Note that Ch 10 Channel ID seems to be the same as Ch 9 Track Number
Irig106.org Home