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.
Course notes
Objectives
- 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
- 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.
Videos
- Introduction to Convolutional Codes
- Impulse response and polynomial form for convolutional encoders
- Finite State Machine for convolutional encoders
- Tree and trellis diagrams for convolutional encoders
- Decoding a convolutional code with the Viterbi algorithm
- Decoding a convolutional code with the Viterbi algorithm - MLSE
Course notes
Objectives
- 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
- 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
- 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.
Videos
Course notes
Objectives
- 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
- 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
- section 12.2 Pseudonoise Sequences
- section 7.1 Convolutional Encoding
- section 7.2 Convolutional Encoder Representation