~~ODT~~
===== PCM DATA =====
==== Type 0x08, PCM Data, Format 0. Reserved for future use ====
==== Type 0x09, PCM Data, Format 1 (IRIG 106 Chapter 4/8) ====
PCM Data, Format 1 packets
are used to record Pulse Code Modulation (PCM) data frames. PCM data is a serial stream of
bits from multiple interleaved data sources. Each data source generally operates at a different
data rate and have their digital data interleaved in a fixed, defined fashion. The data from these
multiplexed data sources are organized into major frames and minor frames. PCM Data
Format 1 records minor frames as integral units of data. In general, the PCM data packet will
contain multiple PCM minor frame data messages in packed and unpacked mode. There is
extensive discussion of PCM in IRIG 106 Chapter 4, Chapter 8, and Appendix C, as well as RCC
Document 119 (Telemetry Applications Handbook).
The PCM minor frame data is recorded in one of three major modes; Unpacked Mode,
Packed Mode, and Throughput Mode. In Unpacked Mode, packing is disabled and each data
word is padded with the number of filler bits necessary to align the first bit of each word with the
next 16-bit boundary in 16-bit alignment mode, or the next 32-bit boundary in 32-bit boundary
mode. In Packed Mode, packing is enabled and padding is not added to each data word.
However, filler bits may be required to maintain minor frame alignment on word boundaries. In
Throughput Mode, the PCM data are not frame synchronized so the first data bit in the packet
can be any bit in the major frame. Chapter 10 discusses these modes in greater detail.
The layout of the CSDW is shown in Figure 6-16. The uSyncOffset field is the value
of the byte offset into a major frame for the first data word in a packet, and is only valid in
Unpacked Mode. The bUnpackedMode, bPackedMode, and bThruMode flags indicate
Unpacked Mode, Packed Mode, and Throughput Mode respectively and are mutually exclusive.
The bAlignment flag indicates 16 or 32-bit alignment of minor frames and minor frame fields.
The uMajorFrStatus field indicates the lock status of the major frame. The
uMinorFrStatus indicates the lock status of the minor frame. The bMinorFrInd flag
indicates the first word of the packet is the beginning of a minor frame. The bMajorFrInd
flag indicates the first word of the packet is the beginning of a major frame. The
bIntraPckHdr flag indicates the presence of intra-packet headers.
struct SuPcmF1_ChanSpec
{
uint32_t uSyncOffset : 18; // Sync offset
uint32_t bUnpackedMode : 1; // Packed mode flag
uint32_t bPackedMode : 1; // Unpacked mode flag
uint32_t bThruMode : 1; // Throughput mode flag
uint32_t bAlignment : 1; // 16/32-bit alignment flag
uint32_t Reserved1 : 2; //
uint32_t uMajorFrStatus : 2; // Major frame lock status
uint32_t uMinorFrStatus : 2; // Minor frame lock status
uint32_t bMinorFrInd : 1; // Minor frame indicator
uint32_t bMajorFrInd : 1; // Major frame indicator
uint32_t bIntraPckHdr : 1; // Intra-packet header flag
uint32_t Reserved2 : 1; //
}
struct SuPcmF1_Header
{
uint64_t suIntraPckTime; // Reference time
uint32_t Reserved : 12; //
uint32_t uMajorFrStatus : 2; // Major frame lock status
uint32_t uMinorFrStatus : 2; // Minor frame lock status
uint32_t Reserved : 16; //
};