Telemetry Channel Coding
Telemetry Channel Coding
http://public.ccsds.org/publications/
CCSDS HISTORICAL DOCUMENT
Consultative
Committee for
Space Data Systems
TELEMETRY
CHANNEL CODING
CCSDS 101.0-B-6
BLUE BOOK
October 2002
DEDICATION
AUTHORITY
This document has been approved for publication by the Management Council of the
Consultative Committee for Space Data Systems (CCSDS) and represents the consensus
technical agreement of the participating CCSDS Member Agencies. The procedure for
review and authorization of CCSDS Recommendations is detailed in reference [D1], and the
record of Agency participation in the authorization of this document can be obtained from
the CCSDS Secretariat at the address below.
CCSDS Secretariat
Office of Space Communication (Code M-3)
National Aeronautics and Space Administration
Washington, DC 20546, USA
STATEMENT OF INTENT
The Consultative Committee for Space Data Systems (CCSDS) is an organization officially
established by the management of member space Agencies. The Committee meets
periodically to address data systems problems that are common to all participants, and to
formulate sound technical solutions to these problems. Inasmuch as participation in the
CCSDS is completely voluntary, the results of Committee actions are termed
Recommendations and are not considered binding on any Agency.
This Recommendation is issued by, and represents the consensus of, the CCSDS Plenary
body. Agency endorsement of this Recommendation is entirely voluntary. Endorsement,
however, indicates the following understandings:
o Specific service arrangements shall be made via memoranda of agreement. Neither this
Recommendation nor any ensuing standard is a substitute for a memorandum of
agreement.
No later than five years from its date of issuance, this Recommendation will be reviewed by
the CCSDS to determine whether it should: (1) remain in effect without change; (2) be
changed to reflect the impact of new technologies, new requirements, or new directions; or,
(3) be retired or canceled.
FOREWORD
This document is a technical Recommendation for use in developing channel coding systems
and has been prepared by the Consultative Committee for Space Data Systems (CCSDS).
The telemetry channel coding concept described herein is the baseline concept for spacecraft-
to-ground data communication within missions that are cross-supported between Agencies of
the CCSDS.
This Recommendation establishes a common framework and provides a common basis for
the coding schemes used on spacecraft telemetry streams. It allows implementing
organizations within each Agency to proceed coherently with the development of compatible
derived Standards for the flight and ground systems that are within their cognizance.
Derived Agency Standards may implement only a subset of the optional features allowed by
the Recommendation and may incorporate features not addressed by the Recommendation.
http://www.ccsds.org/
Questions relating to the contents or status of this document should be addressed to the
CCSDS Secretariat at the address indicated on page i.
At time of publication, the active Member and Observer Agencies of the CCSDS were:
Member Agencies
Observer Agencies
DOCUMENT CONTROL
NOTE – Substantive technical changes from the previous issue are flagged with change
bars in the right margin.
CONTENTS
Section Page
1 INTRODUCTION.......................................................................................................... 1-1
6 PSEUDO-RANDOMIZER............................................................................................ 6-1
CONTENTS (continued)
Section Page
Figure
Table
2-1 Puncture Code Patterns for Convolutional Code Rates ................................................ 2-5
4-1 Specified Information Block Lengths........................................................................... 4-2
4-2 Codeblock Lengths for Supported Code Rates (Measured in Bits).............................. 4-3
4-3 Parameters k1 and k2 for Specified Information Block Lengths ................................... 4-4
A-1 Equivalence of Representations................................................................................... A-5
1 INTRODUCTION
1.1 PURPOSE
The purpose of this document is to establish a common Recommendation for space telemetry
channel coding systems to provide cross-support among missions and facilities of member
Agencies of the Consultative Committee for Space Data Systems (CCSDS). In addition, it
provides focusing for the development of multi-mission support capabilities within the
respective Agencies to eliminate the need for arbitrary, unique capabilities for each mission.
Telemetry channel coding is a method of processing data being sent from a source to a
destination so that distinct messages are created which are easily distinguishable from one
another. This allows reconstruction of the data with low error probability, thus improving
the performance of the channel.
1.2 SCOPE
Several space telemetry channel coding schemes are described in this document. The
characteristics of the codes are specified only to the extent necessary to ensure
interoperability and cross-support. The specification does not attempt to quantify the relative
coding gain or the merits of each approach discussed, nor the design requirements for
encoders or decoders.
This Recommendation does not require that coding be used on all cross-supported missions.
However, for those planning to use coding, the recommended codes to be used are those
described in this document.
The rate 1/2 convolutional code recommended for cross-support is described in Section 2,
“Convolutional Coding”. Depending on performance requirements, this code alone may be
satisfactory.
For telecommunication channels which are bandwidth-constrained and cannot tolerate the
increase in bandwidth required by the basic convolutional code specified in 2.1, the
punctured convolutional code specified in 2.2 has the advantage of smaller bandwidth
expansion. The Reed-Solomon code specified in Section 3 also has the advantage of smaller
bandwidth expansion and has the capability to indicate the presence of uncorrectable errors.
Where a greater coding gain is needed than can be provided by the convolutional code or
Reed-Solomon code alone, a concatenation of the convolutional code as the inner code with
the Reed-Solomon code as the outer code may be used for improved performance. The turbo
codes recommended in Section 4 may be used to obtain even greater coding gain where the
environment permits.
The recommended methods for frame (or codeblock) synchronization are described in
Section 5.
1.3 APPLICABILITY
In addition to being applicable to conventional Packet Telemetry systems [1], the codes in
this recommendation are applicable to the forward and return links of Advanced Orbiting
Systems (AOS) [2]. For coding purposes, the terms “Transfer Frame” and “Reed-Solomon
Codeblock” as used in this recommendation are understood to be equivalent to the AOS
terms “Virtual Channel Data Unit” (VCDU), and “Coded Virtual Channel Data Unit”
(CVCDU), respectively.
In this document, the following convention is used to identify each bit in a forward-justified
N-bit field. The first bit in the field to be transmitted (i.e., the most left justified when
drawing a figure) is defined to be “Bit 0”; the following bit is defined to be “Bit 1” and so on
up to “Bit N-1”, as shown in Figure 1-1. When the field is used to express a binary value
(such as a counter), the Most Significant Bit (MSB) shall be the first transmitted bit of the
field, i.e., “Bit 0”.
In accordance with modern data communications practice, spacecraft data fields are often
grouped into 8-bit “words” which conform to the above convention. Throughout this
Recommendation, the following nomenclature is used to describe this grouping:
1.5 REFERENCES
[1] Packet Telemetry. Recommendation for Space Data System Standards, CCSDS 102.0-
B-5. Blue Book. Issue 5. Washington, D.C.: CCSDS, November 2000.
[2] Advanced Orbiting Systems, Networks and Data Links: Architectural Specification.
Recommendation for Space Data System Standards, CCSDS 701.0-B-3. Blue Book.
Issue 3. Washington, D.C.: CCSDS, June 2001.
2 CONVOLUTIONAL CODING
The basic convolutional code is a rate 1/2, constraint-length 7 transparent code which is well
suited for channels with predominantly Gaussian noise. This code is defined in 2.1.2. When
this code is punctured according to 2.2, higher code rates (lower overhead) may be achieved,
although with somewhat lower error correcting performance.
NOTES
2 If the decoder’s correction capability is exceeded, undetected burst errors may appear
in the output. For this reason, when CCSDS Transfer Frames or Virtual Channel
Data Units are used, references [1] and [2], respectively, require that a cyclic
redundancy check (CRC) be used to validate the frame unless the Reed-Solomon
code is used.
It is recommended that soft bit decisions with at least 3-bit quantization be used whenever
constraints (such as location of decoder) permit.
This recommendation is a non-systematic code and a specific decoding procedure, with the
following characteristics:1
____ ____
The output symbol sequence is: C1(1), C2(1), C1(2), C2(2). . . .
1
When suppressed-carrier modulation systems are used, NRZ-M or NRZ-L may be used as a modulating waveform. If the
user contemplates conversion of his modulating waveform from NRZ-L to NRZ-M, such conversion should be performed
on-board at the input to the convolutional encoder. Correspondingly, the conversion on the ground from NRZ-M to NRZ-
L should be performed at the output of the convolutional decoder. This avoids unnecessary link performance loss.
CAUTION – When a fixed pattern (the fixed part of the convolutionally encoded Attached Sync Marker) in
the symbol stream is used to provide node synchronization for the Viterbi decoder, care must be
taken to account for any modification of the pattern due to the modulating waveform conversion.
G1 C1
INPUT
D D D D D D S1
OUTPUT
2
C2
G2
NOTES:
3. S1 IS IN THE POSITION
SHOWN (1) FOR THE FIRST
SYMBOL ASSOCIATED WITH AN
INCOMING BIT.
4. = MODULO-2 ADDER.
5. = INVERTER.
2.2.1 GENERAL
The code rate (r=1/2), constraint length (k=7) convolutional code can be modified to achieve
an increase in bandwidth efficiency. This modification is achieved by using a puncture
pattern P(r). Puncturing removes some of the symbols before transmission, providing lower
overhead and lower bandwidth expansion than the original code, but with slightly reduced
error correcting performance.
Puncturing allows a single code rate of either 2/3, 3/4, 5/6 or 7/8 to be selected. The four
different puncturing schemes allow selection of the most appropriate level of error correction
and symbol rate for a given service or data rate. Figure 2-2 depicts the punctured encoding
scheme.
NOTE – The symbol inverter associated with G2 in the rate 1/2 code (defined in 2.1.2) is
omitted here. Therefore, the Pseudo-Randomizer defined in Section 6 is required
unless the system designer verifies that sufficient symbol transition density is
assured by other means when the Randomizer is not used.
G1
C1
OUTPUT
PUNCTURE
INPUT (Table 2-1)
C2
G2
The puncturing patterns for each of the punctured convolutional code rates are defined by
Table 2-1 below.
3 REED-SOLOMON CODING
3.1 INTRODUCTION
The Reed-Solomon code defined in this section is a powerful burst error correcting code. In
addition, the code chosen has an extremely low undetected error rate. This means that the
decoder can reliably indicate whether it can make the proper corrections or not. To achieve
this reliability, proper codeblock synchronization is mandatory.
One of two different error-correcting options may be chosen. For maximum performance (at
the expense of accompanying overhead) the E=16 option can correct 16 R-S symbols in error
per codeword. For lower overhead (with reduced performance) the E=8 option can correct 8
R-S symbols per codeword. The two options shall not be mixed in a single telemetry stream.
NOTES
1 The extremely low undetected error rate of this code means that the R-S decoder can,
with a high degree of certainty, validate the decoded codeblock and consequently the
contained CCSDS Transfer Frame (reference [1]) or Virtual Channel Data Unit
(reference [2]). For this reason, [1] and [2] do not require a Cyclic Redundancy
Check when this Reed-Solomon Code is used.
The Reed-Solomon code may be used alone, and as such it provides an excellent forward
error correction capability in a burst-noise channel. However, should the Reed-Solomon
code alone not provide sufficient coding gain, it may be concatenated with the convolutional
code defined in Section 2. Used this way, the Reed-Solomon code is the outer code, while
the convolutional code is the inner code.
3.2 SPECIFICATION
(d) k = n–2E is the number of R-S symbols among n R-S symbols of an R-S
codeword representing information.
F(x) = x8 + x7 + x2 + x + 1
over GF(2).
127 + E 2E
= ∑ Gix
i
g(x) = ∏ ( x – α11j )
j=128 – E i=0
It should be recognized that α11 is a primitive element in GF(28) and that F(x) and
g(x) characterize a (255,223) Reed-Solomon code when E = 16 and a (255,239)
Reed-Solomon code when E = 8.
(6) The selected code is a systematic code. This results in a systematic codeblock.
R-S ENCODER #1
S1 S2
•
IN OUT
•
•
R-S ENCODER #I
Data bits to be encoded into a single Reed-Solomon Codeblock enter at the port
labeled “IN”. Switches S1 and S2 are synchronized together and advance from
encoder to encoder in the sequence 1,2, . . ., I, 1,2, . . ., I, . . ., spending one R-S
symbol time (8 bits) in each position.
One codeblock will be formed from kI R-S symbols entering “IN”. In this
functional representation, a space of 2EI R-S symbols in duration is required
between each entering set of kI R-S information symbols.
Due to the action of S1, each encoder accepts k of these symbols, each symbol
spaced I symbols apart (in the original stream). These k symbols are passed
directly to the output of each encoder. The synchronized action of S2
reassembles the symbols at the port labeled “OUT” in the same way as they
entered at “IN”.
Following this, each encoder outputs its 2E check symbols, one symbol at a time,
as it is sampled in sequence by S2.
then the output is the same sequence with the [2E × 5 spaces] filled by the
[2E × 5] check symbols as shown below:
1 5 1 5
p ... p ... p ... p
1 1 2E 2E
where
i i i i i
d d ... d p ... p
1 2 k 1 2E
is the R-S codeword produced by the ith encoder. If q virtual fill symbols are
used in each codeword, then replace k by (k – q) in the above discussion.
When an encoder (initially cleared at the start of a block) receives kI–Q symbols
representing information (where Q, representing fill, is a multiple of I, and is less
than kI), 2EI check symbols are computed over kI symbols, of which the leading
Q symbols are treated as all-zero symbols. A (nI–Q, kI–Q) shortened codeblock
results where the leading Q symbols (all zeros) are neither entered into the
encoder nor transmitted.
1
It should be noted that shortening the transmitted codeblock length in this way changes the overall performance to a
degree dependent on the amount of virtual fill used. Since it incorporates no virtual fill, the maximum codeblock length
allows full performance. In addition, as virtual fill in a codeblock is increased (at a specific bit rate), the number of
codeblocks per unit time that the decoder must handle increases. Therefore, care should be taken so that the maximum
operating speed of the decoder (codeblocks per unit time) is not exceeded.
ATTACHED
SYNC MARKER TRANSMITTED CODEBLOCK
LOGICAL CODEBLOCK
The Reed-Solomon Check Symbols consist of the trailing 2EI symbols (2EIJ
bits) of the codeblock. (As an example, when E = 16 and k = 223, for I=5 this is
always 1280 bits.)
The Attached Sync Marker used with R-S coding or convolutional coding alone
is a 32-bit pattern specified in Section 5 as an aid to synchronization. It precedes
the Telemetry Transfer Frame or the Transmitted Codeblock (if R-S coding is
used). Frame synchronizers should, therefore, be set to expect a marker at every
Telemetry Transfer Frame + 32 bits or at every Transmitted Codeblock + 32 bits
(if R-S coding is used).
The Logical Codeblock is the logical data entity operated upon by the R-S
decoder. It can have a different length than the transmitted codeblock because it
accounts for the amount of virtual fill that was introduced. (As an example, when
E = 16 and k = 223, for I=5 the logical codeblock always appears to have exactly
10,200 bits in length.)
Virtual fill is used to logically complete the codeblock and is not transmitted. If
used, virtual fill shall:
(d) be inserted only at the beginning of the codeblock (i.e., after the attached
sync marker but before the beginning of the transmitted codeblock);
Each 8-bit Reed-Solomon symbol is an element of the finite field GF(256). Since
GF(256) is a vector space of dimension 8 over the binary field GF(2), the actual
8-bit representation of a symbol is a function of the particular basis that is chosen.
One basis for GF(256) over GF(2) is the set ( 1, α1, α 2, . . ., α7). This means that
any element of GF(256) has a representation of the form
1, if i = j
Tr(liβ j ) = 0, otherwise
k=0
1 0 0 0 1 1 0 1
1 1 1 0 1 1 1 1
1
1
1
0
1
0
0
0
1
0
1
1
0
1
0
0
[z , . . ., z ] = [u , . . ., u ]
0 7 7 0
1 1 1 1 1 0 1 0
1
1
0
0
0
1
1
0
1
1
0
1
0
1
1
1
0 1 1 1 1 0 1 1
and
1 1 0 0 0 1 0 1
0 1 0 0 0 0 1 0
0
1
0
1
1
1
0
1
1
1
1
1
1
0
0
1
[u , . . ., u ] = [z , . . ., z ]
7 0 0 7
1 1 1 1 0 0 0 0
0
1
1
0
1
1
1
0
1
1
0
1
0
0
1
0
1 1 0 0 1 1 0 0
Further information relating the dual basis (Berlekamp) and conventional
representations is given in Annex B. Also included is a recommended scheme for
permitting the symbols generated in a conventional encoder to be transformed to
meet the symbol representation required by this document.
(12) Synchronization:
The ambiguity between true and complemented data must be resolved so that only
true data is provided to the Reed-Solomon decoder. Data in NRZ-L form is
normally resolved using the 32-bit Attached Sync Marker, while NRZ-M data is
self-resolving.
4 TURBO CODING1
4.1 INTRODUCTION
Turbo codes are binary block codes with large code blocks (hundreds or thousands of bits).
They are systematic and inherently non-transparent.2 Phase ambiguities are resolved using
frame markers, which are required for Codeblock synchronization.
Turbo codes may be used to obtain even greater coding gain than those provided by
concatenated coding systems.
NOTES
1 Turbo coding, by itself, cannot guarantee sufficient bit transitions to keep receiver
symbol synchronizers in lock. Therefore, the Pseudo-Randomizer defined in Section
6 is required unless the system designer verifies that sufficient symbol transition
density is assured by other means when the Randomizer is not used.
2 While providing outstanding coding gain, turbo codes may still leave some residual
errors in the decoded output. For this reason, when CCSDS Transfer Frames or
Virtual Channel Data Units are used, references [1] and [2], respectively, require that
a cyclic redundancy check (CRC) be used to validate the frame.
1 Implementers should be aware that a wide class of turbo codes is covered by a patent by France Télécom and
Télédiffusion de France under US Patent 5,446,747 and its counterparts in other countries. Potential user agencies should
direct their requests for licenses to:
2 Differential encoding (i.e., NRZ-M signaling) after the turbo encoder is not recommended since soft decoding would
require the use of differential detection with considerable loss of performance. Differential encoding before the turbo
encoder cannot be used because the turbo codes recommended in this document are non-transparent. This implies that
phase ambiguities have to be detected and resolved by the frame synchronizer.
4.2 SPECIFICATION
The recommended turbo code is a systematic code with the following specifications:
(6) The specified information block lengths k are shown in Table 4-1. They are
chosen for compatibility with the corresponding Reed-Solomon interleaving
depths, also shown in Table 4-1.
The corresponding codeblock lengths in bits, n=(k+4)/r, for the specified code
rates are shown in Table 4-2.
1784 (=223 × 1 octets) 1 For very low data rates or low latency
1 Because of “trellis termination” symbols (see item 10 below), the true code rates (defined as the ratios of the information
block lengths to the codeblock lengths in Table 4-2 of item 6) are slightly smaller than the nominal code rates. In this
Recommendation, the terminology “code rate” always refer to the nominal code rates, r = 1/2, 1/3, 1/4, or 1/6.
Table 4-2: Codeblock Lengths for Supported Code Rates (Measured in Bits)
Codeblock length n
Information block length k
rate 1/2 rate 1/3 rate 1/4 rate 1/6
1784 3576 5364 7152 10728
3568 7144 10716 14288 21432
7136 14280 21420 28560 42840
8920 17848 26772 35696 53544
16384 32776 49164 65552 98328
First express k as k=k1k2. The parameters k1 and k2 for the specified block sizes
are given in Table 4-3.
Next do the following operations for s=1 to s=k to obtain permutation numbers
π(s). In the equation below, x denotes the largest integer less than or equal to x,
and pq denotes one of the following eight prime integers:
m = (s – 1) mod 2
s–1
i = 2 k2
s–1
j = 2 – i k2
k1
t = (19i + 1) mod 2
q = t mod 8 + 1
c = (pq j + 21m) mod k2
k1
π(s) = 2(t + c 2 + 1) – m
The interpretation of the permutation numbers is such that the sth bit read out on
line “in b” in Figure 4-2 is the π(s)th bit of the input information block, as shown
in Figure 4-1.
Input ENCODER a
out 0a
•• ••
Information
in a
• + G0
Block o +
INFORMATION •
BLOCK
BUFFER D D D D
• • • •
• • •
G1 • +
•
+
•
+ out 1a
• •
G2 • + + out 2a
••
G3 + + + + out 3a
••
ENCODER b
RATE 1/2
•
RATE 1/3
RATE 1/4
o + + G0
RATE 1/6
•
in b
D D D D
• • • •
• • •
+ = Exclusive OR G1 •
•
+
•
+
+
•
+
+
out 1b
Not used
• ••
• = Take every symbol
G2
G3 + + + + out 3b
•
= Take every other symbol
(a) Backward connection vector for both component codes and all code rates:
G0 = 10011.
(b) Forward connection vector for both component codes and rates 1/2 and 1/3:
G1 = 11011. Puncturing of every other symbol from each component code
is necessary for rate 1/2. No puncturing is done for rate 1/3.
(c) Forward connection vectors for rate 1/4: G2 = 10101, G3 = 11111 (1st
component code); G1 = 11011 (2nd component code). No puncturing is
done for rate 1/4.
(d) Forward connection vectors for rate 1/6: G1 = 11011, G2 = 10101, G3 = 11111
(1st component code); G1 = 11011, G3 = 11111 (2nd component code). No
puncturing is done for rate 1/6.
The recommended encoder block diagram is shown in Figure 4-2. Each input
frame of k information bits is held in a frame buffer, and the bits in the buffer are
read out in two different orders for the two component encoders. The first
component encoder (a) operates on the bits in unpermuted order (“in a”), while
the second component encoder (b) receives the same bits permuted by the
interleaver (“in b”). The read-out addressing for “in a” is a simple counter, while
the addressing for “in b” is specified by the turbo code permutation described in
item 7 above.
Both component encoders in Figure 4-2 are initialized with 0s in all registers, and
both are run for a total of k+4 bit times, producing an output Codeblock of (k+4)/r
encoded symbols, where r is the nominal code rate. For the first k bit times, the
input switches are in the lower position (as indicated in the figure) to receive
input data. For the final 4 bit times, these switches move to the upper position to
receive feedback from the shift registers. This feedback cancels the same
feedback sent (unswitched) to the leftmost adder and causes all four registers to
become filled with zeros after the final 4 bit times. Filling the registers with zeros
is called terminating the trellis. During trellis termination the encoder continues
to output nonzero encoded symbols. In particular, the “systematic uncoded”
output (line “out 0a” in the figure) includes an extra 4 bits from the feedback line
in addition to the k information bits.
In Figure 4-2, the encoded symbols are multiplexed from top-to-bottom along the
output line for the selected code rate to form the Turbo Codeblock. For the rate
1/3 code, the output sequence is (out 0a, out 1a, out 1b); for rate 1/4, the sequence
is (out 0a, out 2a, out 3a, out 1b); for rate 1/6, the sequence is (out 0a, out 1a, out
2a, out 3a, out 1b, out 3b). These sequences are repeated for (k+4) bit times. For
the rate 1/2 code, the output sequence is (out 0a, out 1a, out 0a, out 1b), repeated
(k+4)/2 times. Note that this pattern implies that out 1b is the first to be
punctured, out 1a is the second, and so forth. The Turbo Codeblocks constructed
from these output sequences are depicted in Figure 4-3 for the four nominal code
rates.
out 0a out 1a out 1b out 0a out 1a out 1b ...... out 0a out 1a out 1b out 0a out 1a out 1b
out
0a
out
2a
out
3a
out
1b
out
0a
out
2a
out
3a
out
1b ...... out
0a
out
2a
out
3a
out
1b
out
0a
out
2a
out
3a
out
1b
out
0a
out
1a
out
2a
out
3a
out
1b
out
3b
out
0a
out
1a
out
2a
out
3a
out
1b
out
3b ...... out
0a
out
1a
out
2a
out
3a
out
1b
out
3b
out
0a
out
1a
out
2a
out
3a
out
1b
out
3b
Rate-Dependent
Attached Sync
Marker
Turbo Codeblock
5 FRAME SYNCHRONIZATION
5.1 INTRODUCTION
If the telemetry channel is uncoded, Reed-Solomon coded, or turbo coded, the code symbols
comprising the ASM are attached directly to the encoder output without being encoded by
the Reed-Solomon or turbo code. If an inner convolutional code is used in conjunction with
an outer Reed-Solomon code, the ASM is encoded by the inner code but not by the outer
code.
For a concatenated Reed-Solomon and convolutional coding system, the ASM may be
acquired either in the channel symbol domain (i.e., before any decoding) or in the domain of
bits decoded by the inner code (i.e., the code symbol domain of the Reed-Solomon code).
For a turbo coding system, the ASM must be acquired in the channel symbol domain (i.e.,
the code symbol domain of the turbo code).
The ASM for telemetry data that is not turbo coded shall consist of a 32-bit (4-octet) marker
with a pattern shown in Figure 5-1. The ASM for data that is turbo coded with nominal code
rate r = 1/2, 1/3, 1/4, or 1/6 shall consist of a 32/r-bit (4/r-octet) marker with bit patterns
shown in Figure 5-2. The ASM bit patterns are represented in hexadecimal notation as:
The ASM is attached to (i.e., shall immediately precede) the Reed-Solomon or Turbo
Codeblock, or the Transfer Frame if the telemetry channel is not Reed-Solomon or turbo
coded.
The ASM for one Codeblock (or Transfer Frame) shall immediately follow the end of the
preceding Codeblock (or Transfer Frame); i.e., there shall be no intervening bits (data or fill)
preceding the ASM.
The ASM is NOT a part of the encoded data space of the Reed-Solomon Codeblock, and it is
not presented to the input of the Reed-Solomon encoder or decoder. This prevents the
encoder from routinely regenerating a second, identical marker in the check symbol field
under certain repeating data-dependent conditions (e.g., a test pattern of 01010101010 ...
among others) which could cause synchronization difficulties at the receiving end. The
relationship among the ASM, Reed-Solomon Codeblock, and Transfer Frame is illustrated in
Figure 3-2.
Similarly, the ASM is not presented to the input of the turbo encoder or decoder. It is
directly attached to the Turbo Codeblock, as shown in Figure 4-4.
A different ASM pattern (see Figure 5-3) may be required where another data stream (e.g., a
stream of transfer frames played back from a tape recorder in the forward direction) is
inserted into the data field of the Transfer Frame of the main stream appearing on the
telemetry channel. The ASM for the embedded data stream, to differentiate it from the main
stream marker, shall consist of a 32-bit (4-octet) marker with a pattern as follows:
352EF853
6 PSEUDO-RANDOMIZER
6.1 INTRODUCTION
In order to maintain bit (or symbol) synchronization with the received telemetry signal, every
ground data capture system requires that the incoming signal have a minimum bit transition
density (see reference [3]).
In order to ensure proper receiver operation, the data stream must be sufficiently random.
The Pseudo-Randomizer defined in this section is the preferred method to ensure sufficient
randomness for all combinations of CCSDS-recommended modulation and coding schemes.
The Pseudo-Randomizer defined in this section is required unless the system designer
verifies proper operation of the system if this randomizer is not used1.
The method for ensuring sufficient transitions is to exclusive-OR each bit of the Codeblock
or Transfer Frame with a standard pseudo-random sequence.
1
Problems with telemetry links have been encountered because this Pseudo-Randomizer was not used, and sufficient
randomness was not ensured by other means and properly verified.
2
“Derandomization” consists of either: a) exclusive OR-ing the pseudo-random sequence with the received bits of a transfer
frame or a Reed-Solomon codeblock, or b) inverting (or not inverting), according to the Pseudo-Randomizer bit pattern,
the demodulator output of a turbo codeblock.
The Attached Sync Marker (ASM) is already optimally configured for synchronization
purposes and it is therefore used for synchronizing the Pseudo-Randomizer.
The pseudo-random sequence is applied starting with the first bit of the Codeblock or
Transfer Frame. On the sending end, the Codeblock or Transfer Frame is randomized by
exclusive-ORing the first bit of the Codeblock or Transfer Frame with the first bit of the
pseudo-random sequence, followed by the second bit of the Codeblock or Transfer Frame
with the second bit of the pseudo-random sequence, and so on.
On the receiving end, the original Codeblock or Transfer Frame is reconstructed using the
same pseudo-random sequence. After locating the ASM in the received data stream, the
pseudo-random sequence is exclusive-ORed with the data bits immediately following the
ASM. The pseudo-random sequence is applied by exclusive-ORing the first bit following
the ASM with the first bit of the pseudo-random sequence, followed by the second bit of the
data stream with the second bit of the pseudo-random sequence, and so on.
h(x) = x8 + x7 + x5 + x3 + 1
This sequence begins at the first bit of the Codeblock or Transfer Frame and repeats after 255
bits, continuing repeatedly until the end of the Codeblock or Transfer Frame. The sequence
generator is initialized to the all-ones state at the start of each Codeblock or Transfer Frame.
The first 40 bits of the pseudo-random sequence from the generator are shown below; the
leftmost bit is the first bit of the sequence to be exclusive-ORed with the first bit of the
Codeblock or Transfer Frame; the second bit of the sequence is exclusive-ORed with the
second bit of the Codeblock or Transfer Frame, and so on.
1111 1111 0100 1000 0000 1110 1100 0000 1001 1010 . . . .
X8 X7 X6 X5 X4 x3 X2 X1 Pseudo-random
sequence
ANNEX A
A 1 PURPOSE
This Annex provides information to assist users of the Reed-Solomon code in this
Recommendation to transform between the Berlekamp (dual basis) and Conventional
representations. In addition, it shows where transformations are made to allow a
conventional encoder to produce the dual basis representation on which the Recommendation
is based.
A 2 TRANSFORMATION
Referring to Figure A-1, it can be seen that information symbols I entering and check
symbols C emanating from the Berlekamp R-S encoder are interpreted as
Information symbols I' entering and check symbols C' emanating from the conventional R-S
encoder are interpreted as
I C
BERLEKAMP R-S ENCODER
C
-1
Tα Tα
I' C'
CONVENTIONAL R-S ENCODER
Conventional and Berlekamp types of (255,k) Reed-Solomon encoders are assumed to have
the same self-reciprocal generator polynomial whose coefficients appear in paragraph 4.2 (4)
and (5). The representation of symbols associated with the conventional encoder is the
polynomials in “α” appearing in Table A-1, below. Corresponding to each polynomial in
“α” is the representation in the dual basis of symbols associated with the Berlekamp type
encoder.
Given
αi = u7α7 + u6α6 + ... + u0
where 0 ≤ i < 255 (and α* denotes the zero polynomial, u7, u6, ... = 0, 0, ...),
and
1 0 0 0 1 1 0 1
1 1 1 0 1 1 1 1
1 1 1 0 1 1 0 0
Tα = 1 0 0 0 0 1 1 0
1 1 1 1 1 0 1 0
1 0 0 1 1 0 0 1
1 0 1 0 1 1 1 1
0 1 1 1 1 0 1 1
Row 1, row 2, ... , and row 8 in Tα l are representations in the dual basis of α7 (10 ... 0), α6
(010 ... 0), ... , and α0 (00 ... 01), respectively.
The inverse of Tα l is
1 1 0 0 0 1 0 1
0 1 0 0 0 0 1 0
-1 0 0 1 0 1 1 1 0
Tα = 1 1 1 1 1 1 0 1
1 1 1 1 0 0 0 0
0 1 1 1 1 0 0 1
1 0 1 0 1 1 0 0
1 1 0 0 1 1 0 0
-1
Row 1, row 2, ... , and row 8 in Tα l are polynomials in “α” corresponding to l0 (10 ... 0),
l1 (010 ... 0), ... , and l7 (00, ... 01), respectively. Thus,
-1
[z0, z1, ... , z7 ] Tα l = [u7, u6, ... , u0]
Example 1:
then
-1
Tα
[1 0 1 1 1 0 0 1] 1 1 0 0 0 1 0 1
0 1 0 0 0 0 1 0
0 0 1 0 1 1 1 0
1 1 1 1 1 1 0 1 = [u7, u6, ..., u0] = 00101010 = I'
1 1 1 1 0 0 0 0
0 1 1 1 1 0 0 1
1 0 1 0 1 1 0 0
1 1 0 0 1 1 0 0
and
Example 2:
Then,
[0 1 0 1 1 0 0 1] 1 0 0 0 1 1 0 1
1 1 1 0 1 1 1 1
1 1 1 0 1 1 0 0
1 0 0 0 0 1 1 0 = [z 0, z 1, ..., z 7] = 11101000 = C
1 1 1 1 1 0 1 0
1 0 0 1 1 0 0 1
1 0 1 0 1 1 1 1
0 1 1 1 1 0 1 1
P P
O POLY O POLY
W
E
IN
ALPHA l01234567 W
E
IN
ALPHA l01234567
R R
==== =============== ============= =================== =============
1
From Table 4 of reference [D2]. Note: Coefficients of the “Polynomial in Alpha” column are listed in descending powers
of α, starting with α7.
P P
O POLY O POLY
W IN l01234567 W IN l01234567
E ALPHA E ALPHA
R R
P P
O POLY O POLY
W IN l01234567 W IN l01234567
E ALPHA E ALPHA
R R
P P
O POLY O POLY
W IN l01234567 W IN l01234567
E ALPHA E ALPHA
R R
ANNEX B
Purpose:
While the equations given in the Reed-Solomon Coding Section of this recommendation are
fully specifying, this Annex provides additional assistance for those implementing either the
E = 16 or the E = 8 code.
For E = 16:
Further information, including encoder block diagrams, is provided by Perlman and Lee in
reference [D2].
For E = 8:
ANNEX C
C 1 PURPOSE
This annex defines key acronyms and terms that are used throughout this Recommendation
to describe telemetry channel coding.
C 2 TERMS
CODE RATE: The average ratio of the number of binary digits at the input of an encoder
to the number of binary digits at its output.
CODEWORD: In a block code, one of the sequences in the range of the one-to-one
transformation (see BLOCK ENCODING).
CONCATENATION: The use of two or more codes to process data sequentially with the
output of one encoder used as the input of the next.
INNER CODE: In a concatenated coding system, the last encoding algorithm that is applied to
the data stream. The data stream here consists of the codewords generated by the outer decoder.
NRZ-L: A modulating waveform in which a data “one” is represented by one of two levels,
and a data “zero” is represented by the other level.
OUTER CODE: In a concatenated coding system, the first encoding algorithm that is
applied to the data stream.
PUNCTURED CODE: As used in this document, a code obtained by deleting some of the
parity symbols generated by the convolutional encoder before transmission. The bandwidth
efficiency obtained by puncturing is increased compared to the original code, although the
minimum weight (and therefore its error-correcting performance) will be less than that of the
original code.
TRANSPARENT CODE: A code that has the property that complementing the input of the
encoder or decoder results in complementing the output.
TRELLIS TERMINATION: The operation of filling with zeros the s stages of each shift
register used in the turbo encoder, after the end of the information block. During trellis
termination the encoders continue to output encoded symbols for s-1 additional clock cycles.
TURBO CODE: As used in this document, a block code formed by combining two component
recursive convolutional codes. A turbo code takes as input a block of k information bits. The
input block is sent unchanged to the first component code and bit-wise interleaved (see
TURBO CODE PERMUTATION) to the second component code. The output is formed by
the parity symbols contributed by each component code plus a replica of the information bits.
TURBO CODE PERMUTATION: A fixed bit-by-bit permutation of the entire input block
of information bits performed by an interleaver, used in turbo codes.
ANNEX D
INFORMATIVE REFERENCES
[D1] Procedures Manual for the Consultative Committee for Space Data Systems. CCSDS
A00.0-Y-8. Yellow Book. Issue 8. Washington, D.C.: CCSDS, July 2002.
ANNEX E
E1 PURPOSE
The purpose of this annex is to summarize the length constraints on frames imposed by the
use of the Channel Codes specified in this Recommendation.
NOTES
1 Recommendations [1] and [2] require that any Transfer Frame or VCDU not
operating on a channel using the Reed-Solomon Code of Section 4 must include a
Cyclic Redundancy Check (CRC) to be included to provide validation. It follows that
a frame on an uncoded channel must also carry the CRC.
The Convolutional Codes of Section 2 are not block-oriented codes, so they impose no
constraint on the length of the transfer frame or VCDU. However, other length constraints
specified in [1] and [2] must still be observed.
1
Frame, as used in this annex, includes the Telemetry “Transfer Frame” as defined in [1] and the AOS “Virtual Channel
Data Unit” (VCDU) as defined in [2].
E3.1 GENERAL
With the Reed-Solomon Codes specified in Section 3, only certain specific lengths of
transfer frames may be contained within the codeblock’s data space. In some cases these
lengths may be shortened in discrete steps by using virtual fill at a small sacrifice in coding
gain. Since these R-S codes have a symbol length of 8 bits, the length of the codeblock must
be a combined multiple of 8 bits and the interleaving depth. This will give “octet
compatibility”. If high-speed efficiency is needed for “32-bit compatibility” (with 32-bit
processors, for example), then the length of the codeblock must be a combined multiple of 8
bits, the interleaving depth, and 32 bits.
NOTES
2 In each table below, lengths are given in bits with equivalent octets in (parentheses).
The following are allowed lengths for Transfer Frames when octet compatibility is sufficient
and the Reed-Solomon E=16 code is selected. Maximum lengths are shown; shorter lengths
are permitted in discrete steps using the concept of “Virtual Fill” and shortening the
transmitted codeblock length by the steps shown in the last column.
The following are allowed lengths for Transfer Frames when octet compatibility is sufficient
and the Reed-Solomon E=8 code is selected. Maximum lengths are shown; shorter lengths
are permitted in discrete steps using the concept of “Virtual Fill” and shortening the
transmitted codeblock length by the steps shown in the last column.
The Turbo Codes specified in Section 4 of this Recommendation are block codes. Therefore,
the frame length must match the information block lengths for the selected turbo code.
Performance for only the following information block lengths have been validated by
CCSDS and approved for use. These lengths will accommodate both Version 1 Transfer
Frames [1] and Version 2 VCDUs [2]. Values are in bits.
NOTES
1 Frame synchronizers should be set to account for the Attached Sync Marker, whose
length must be added to the turbo codeblock length as specified in Table 4-2. The
ASM pattern and length depend on the turbo code rate as shown in Figure 4-4.
2 Recommendations [1] and [2] require that if the Reed-Solomon Code is not used, a
Cyclic Redundancy Check (CRC) is required as part of the Transfer Frame or VCDU
for validation purposes.
1
Interleaver parameters for the length 16384 bits are under study by the CCSDS. Until finalized, use of this option is not
recommended.