Module 5 - Error Correcting Codes

Overview

Module 5 introduces the concept of error correcting codes to improve system performance. These solutions are extremely effective, but require additional complexity and some bandwidth efficiency trade-offs. As an example, we introduce convolutional code fundamentals. PartA of module 5 is an introduction and motivation for the use of forward error correction (FEC). We focus on the role of coding and basic parity-based protection. We introduce several metrics for FECs.

Objectives

Forward code correction
  • understand how coding can improve power efficiency
  • understand the interpretation of temporal orthogonality as coding
  • be able to express coding in the language of probability theory (channel models)
  • understand coding gain, coding threshold, and bandwidth expansion

Reading

Sklar textbook
  • section 6.1.1 Antipodal and Orthogonal Signals
  • section 6.1.2 M-ary Signals
  • section 6.1.3 Waveform Coding (only 6.1.3.1 Orthogonal Codes)

Overview

Module 5 introduces the concept of error correcting codes to improve system performance. These solutions are extremely effective, but require additional complexity and some bandwidth efficiency trade-offs. As an example, we introduce convolutional code fundamentals. PartB of Module 5 examines convolutional coding. Detailed descriptions of the convolutional encoder are provided, with varied encoder representations (e.g., finite-state models, trellis diagrams), and decoding principles using the Viterbi algorithm.

Objectives

Convolutional code: encoding
  • know the definition of a convolutional code and constraint length
  • know the differences between a convolutional code and a block code
  • be able to express a convolutional code in a shift register implementation
  • understand the concept of an impulse response of a convolutional code
  • be able to generate the output of a convolutional encoder
  • be able to represent a convolutional code in a finite state machine
  • be able to represent a convolutional code in tree diagram
  • be able to represent a convolutional code in a trellis
  • be able to trace the trellis output for a convolutional encoder
Convolutional code: decoding
  • know the difference between soft and hard decisions
  • be able to apply the Hamming distance and the Euclidian distance to symbol sequences
  • know how to use a trellis for decoding
  • be able to calculate branch and path metrics
  • know the benefits of the Viterbi algorithm

Reading

Sklar textbook
  • section 7.1 Convolutional Encoding
  • section 7.2 Convolutional Encoder Representation
  • section 7.3 Formulation of the Convolutional Decoding Problem
  • section 7.4 Properties of Convolutional Codes

Overview

Module 5 introduces the concept of error correcting codes to improve system performance. These solutions are extremely effective, but require additional complexity and some bandwidth efficiency trade-offs. As an example, we introduce convolutional code fundamentals. PartC of Module 5 examines the Viterbi decoder in some detail. We cover convolutional decoding topics (complexity, free distance, coding gain), plus additional tools and examples.

Objectives

Convolutional code: decoding (continued)
  • be able to analyze the memory required for the Viterbi decoder
  • know the definition of minimum distance for convolutional codes
  • know how to find the number of correctable errors for convolutional codes
  • know definition of coding gain
Others
  • apply equalization techniques to experimental data
  • appreciate the performance of concatenated, turbo codes
  • be able to calculate encoding and decoding for convolutional codes
  • be able to use a coding table
  • use Matlab to find the minimum distance of a convolutional code

Reading

Sklar textbook
  • section 12.2 Pseudonoise Sequences
  • section 7.1 Convolutional Encoding
  • section 7.2 Convolutional Encoder Representation