Further this limit is sufficiently small to guarantee

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: t the number of contiguous symbols without transition for a particular class of convolutional codes, independent of the data source model. Further, this limit is sufficiently small to guarantee acceptable symbol synchronizer performance for typical applications. The maximum number of contiguous symbols without transition for the convolutional code of figure 4-1 is 14. Historically, ESA, NASA-GSFC and NASA-JPL have each used a different ordering of the two parity checks or has inverted a different parity check. Performance is not affected by these minor differences. But, to reduce the number of options, CCSDS has adopted only one convolutional code for cross-support: all agencies are encouraged to adopt for all facilities the single convention described in reference [3]. 4 See further discussion in section 8. CCSDS 130.1-G-1 Page 4-2 June 2006 TM SYNCHRONIZATION AND CHANNEL CODING —SUMMARY OF CONCEPT AND RATIONALE 4.3 ENCODER FOR THE RECOMMENDED PUNCTURED CONVOLUTIONAL CODES The CCSDS standard convolutional code, with constraint length K=7, has rate 1/2. The code rate can be increased by using a puncturing pattern, thus achieving an increase in bandwidth efficiency. Puncturing removes some of the encoded symbols before transmission, leading to a higher code rate and a lower bandwidth expansion than the original code, but with reduced error correcting performance. A block diagram of the punctured encoder is shown in figure 4-2. G1 INPUT D D D D C1 D OUTPUT PUNCTURE (table 4-1) D C2 G2 Figure 4-2: Encoder Block Diagram for the Punctured CCSDS Convolutional Codes Starting from the CCSDS rate-1/2 convolutional code, the recommended punctured codes are obtained with fixed puncturing patterns yielding code rates 2/3, 3/4, 5/6 and 7/8, as reported in table 4-1. Table 4-1: Puncturing Patterns for the CCSDS Punctured Convolutional Code Rates Puncturing Pattern 1 = transmitted symbol 0 = non-transmitted symbol C1: 1 0 C2: 1 1 C1: 1 0 1 C2: 1 1 0 C1: 1 0 1 0 1 C2: 1 1 0 1 0 C1: 1 0 0 0 1 0 1 C2: 1 1 1 1 0 1 0 CCSDS 130.1-G-1 Code Rate Output C1(t), C2(t) denote values at bit time t (t=1,2,3,...) 2/3 C1(1) C2(1) C2(2) ... 3/4 C1(1) C2(1) C2(2) C1(3) ... 5/6 C1(1) C2(1) C2(2) C1(3) C2(4) C1(5) ... 7/8 C1(1) C2(1) C2(2) C2(3) C2(4) C1(5) C2(6) C1(7) ... Page 4-3 June 2006 TM SYNCHRONIZATION AND CHANNEL CODING —SUMMARY OF CONCEPT AND RATIONALE 4.4 SOFT MAXIMUM LIKELIHOOD DECODING OF CONVOLUTIONAL CODES Soft, maximum likelihood decoding of convolutional codes can be accomplished by using the Viterbi algorithm (see references [21] and [25]), which will be illustrated for rate 1/n codes. The same decoding algorithm is applicable to both non-punctured and punctured codes, provided that the received symbol stream is ‘depunctured’ by inserting zero-symbols (i.e., neutral symbol values that do not favor either a received ‘0’ or ‘1’ bit) at the positions where encoded symbols were removed during the encoding of the punctured code. Before proceeding to the Viterbi algorithm, a discussion of the trellis representation of the convolutional encoder is desirable. For a constraint length K, code rate r = 1/n, (K, r) convolutional encoder, the state is defined by the (K–1) = m most recent bits in the shift register. Figure 4-3 shows an encoder for a (3,1/2) convolutional code. (Note that this is just an illustrative example, and is not the CCSDS recommended code.) The output bits and transitions between states can be recorded by the trellis diagram of figure 4-4. 0100 0110 1 2 3 0111 Figure 4-3: (3,1/2) Convolutional Encoder 00 a 00 11 00 11 00 00 00 11 01 11 b 11 11 00 10 10 10 10 c 01 01 11 01 01 10 d Figure 4-4: Trellis Representation of (3,1/2) Convolutional Code The diagram starts in the all-zero state, node a, and makes transitions corresponding to the next data bit. These transitions are denoted by a solid line (branch) for a ‘0’ and by a dotted line for a ‘1’. Thus node a proceeds to node a or b with outputs bits ‘00’ or ‘11’. A branch weight is the number of ‘1’s in the n code symbols in the branch. CCSDS 130.1-G-1 Page 4-4 June 2006 TM SYNCHRONIZATION AND CHANNEL CODING —SUMMARY OF CONCEPT AND RATIONALE It has been shown (see reference [25]) that the Viterbi algorithm implements, in fact, maximum-likelihood decoding. An exhaustive search maximum-likelihood decoder would calculate the likelihood of the received data for code symbol sequences on all paths through the trellis. The path with the largest likelihood would then be selected, and the information bits corresponding to that path would form the decoder output. Unfortunately, the number of paths for an L bit information sequence is 2L; thus, this exhaustive search decoding quickly becomes impractical as L increases. With Viterbi decoding, it is possible to greatly reduce the effort required for maximumlikelihood decoding by taking advantage of the special structure of the code trellis. Referring to figure 4-4, it is clear that the trellis assumes a fixed periodic structure after trellis depth K i...
View Full Document

{[ snackBarMessage ]}

Ask a homework question - tutors are online