ERROR CONTROL CODING From Theory to Practice Peter Sweeney University of Surrey, Guildford, UK JOHN WILEY & SONS, LTD
Contents 1 The Principles of Coding in Digital Communications 1.1 Error Control Schemes 1.2 Elements of Digital Communication Systems 1.3 Source Encoding 1.4 Error Control Coding 1.5 Modulation 1.6 The Channel 1.7 Demodulation 1.7.1 Coherent demodulation 1.7.2 Differential demodulation 1.7.3 Soft-decision demodulation 1.8 Decoding 1.8.1 Encoding and decoding example 1.8.2 Soft-decision decoding 1.8.3 Alternative decoding approaches 1.9 Code Performance and Coding Gain 1.10 Information Theory Limits to Code Performance 1.11 Coding for Multilevel Modulations 1.12 Coding for Burst-Error Channels 1.13 Multistage Coding 1.14 Error Detection Based Methods 1.14.1 ARQ strategies 1.14.2 Error concealment 1.14.3 Error detection and correction capability of block Codes 1.15 Selection of Coding Scheme 1.15.1 General considerations 1.15.2 Data structure 1.15.3 Information type 1.15.4 Data rate 1.15.5 Real time data processing d 1.15.6 Power and bandwidth constraints 1 1 2 2 3 5 7 8 8 9 10 11 12 14 15 16 18 21 22 24 24 24 26 26 27 27 28 29 29 30 30
vi P 1.15.7 Channel error mechanisms 1.15.8 Cost 1.16 Conclusion 1.17 Exercises 1.18 References 2 Convolutional Codes 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.1 1 2.12 2.13 2.14 2.15 2.16 2.17 2.18 2.19 Introduction General Properties of Convolutional Codes Generator Polynomials Terminology Encoder State Diagram Distance Structure of Convolutional Codes Evaluating Distance and Weight Structures Maximum Likelihood Decoding Viterbi Algorithm 2.9.1 General principles 2.9.2 Example of viterbi decoding 2.9.3 Issues arising Practical Implementation of Viterbi Decoding Performance of Convolutional Codes Good Convolutional Codes Punctured Convolutional Codes Applications of Convolutional Codes Codes for Multilevel Modulations Sequential Decoding Conclusion Exercises References 3 Linear Block Codes 3.1 Introduction 3.2 Mathematics of Binary Codes 3.3 Parity Checks 3.4 Systematic Codes 3.5 Minimum Hamming Distance of a Linear Block Code 3.6 How to Encode - Generator Matrix 3.7 Encoding with the Parity Check Matrix 3.8 Decoding with the Parity Check Matrix 3.9 Decoding by Standard Array 3.10 Codec Design for Linear Block Codes 3.11 Modifications to Block Codes 3.12 Dorsch Algorithm Decoding 3.13 Conclusion 3. (4 Exercises 3.15 References 31 31 32 33 34 35 35 35 36 37 38 39 39 41 42 42 42 45 45 51 53 55 56 57 62 64 64 66 67 67 67 68 69 70 70 71 73 75 76 78 81 83 83 85
_~ 4 Cyclic Codes 4.1 Introduction 4.2 Definition of a Cyclic Code 4.3 Example of a Cyclic Code 4.4 Polynomial Representation 4.5 Encoding by Convolution 4.6 Establishing the Cyclic Property 4.7 Deducing the Properties of a Cyclic Code 4.8 Primitive Polynomials 4.9 Systematic Encoding of Cyclic Codes 4.10 Syndrome of a Cyclic Code 4.11 Implementation of Encoding 4.12 Decoding 4.13 Decoder Operation 4.14 Multiple-Error Correction 4.15 Example of Multiple-Error Correction 4.16 Shortened Cyclic Codes 4.17 Expurgated Cyclic Codes 4.18 BCH Codes 4.19 Cyclic Codes for Burst-Error Correction 4.20 Conclusion 4.21 Exercises 4.22 References 5 Finite Field Arithmetic 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 9 5.14 5.15 Introduction Definition of a Finite Field Prime Size Finite Field GF(p) Extensions to the Binary Field - Finite Field GF(2") Polynomial Representation of Finite Field Elements Properties of Polynomials and Finite Field Elements 5.6.1 Roots of a polynomial 5.6.2 Minimum polynomial 5.6.3 Order of an element 5.6.4 Finite field elements as roots of a polynomial 5.6.5 Roots of an irreducible polynomial 5.6.6 Factorization of a polynomial Fourier Transform over a Finite Field Alternative Visualization of Finite Field Fourier Transform Roots and Spectral Components Fast Fourier Transforms Hardware Multipliers using Polynomial Basis Hardware Multiplication using Dual Basis Hardware Multiplication using Normal Basis Software Implementation of Finite Field Arithmetic Conclusion vii 87 87 87 88 88 89 90 91 92 93 94 94 96 100 100 101 103 104 106 107 110 110 112 113 113 113 114 115 117 119 119 121 121 123 124 125 127 129 131 132 134
viii 6 7 8 5.16 Exercises 5.17 References BCH Codes 6.1 Introduction 6.2 Specifying Cyclic Codes by Roots 6.3 Definition of a BCH Code 6.4 Construction of Binary BCH Codes 6.5 Roots and Parity Check Matrices 6.6 Algebraic Decoding 6.7 BCH Decoding and the BCH Bound 6.8 Decoding in the Frequency Domain 6.9 Decoding Examples for Binary BCH Codes 6.10 Polynomial Form of the Key Equation 6.1 1 Euclid's Method 6.12 Berlekamp-Massey Algorithm 6.13 Conclusion 6.14 Exercises 6.15 References Reed Solomon Codes 7.1 Introduction 7.2 Generator Polynomial for a Reed Solomon Code 7.3 Time Domain Encoding for Reed Solomon Codes 7.4 Decoding Reed Solomon Codes 7.5 Reed Solomon Decoding Example 7.6 Frequency Domain Encoded Reed Solomon Codes 7.7 Further Examples of Reed Solomon Decoding 7.8 Erasure Decoding 7.9 Example of Erasure Decoding of Reed Solomon Codes 7.10 Generalized Minimum Distance Decoding 7.11 Welch-Berlekamp Algorithm 7.12 Singly Extended Reed Solomon Codes 7.13 Doubly Extended Reed Solomon Codes 7.14 Conclusion 7.15 Exercises 7.16 References Performance Calculations for Block Codes 8.1 Introduction 8.2 Hamming Bound 8.3 Plotkin Bound 8.4 Griesmer Bound 8.5 Singleton Bound 8.6' Gilbert-Varsharmov Bound 8.7 Error Detection 135 136 137 137 137 138 138 140 143 144 146 147 149 149 151 152 153 154 155 155 155 156 158 159 160 162 164 165 167 168 170 172 175 175 176 177 177 177 178 179 180 180 181
8.8 8.9 8.10 8.1 1 8.12 8.13 8.14 8.15 8.16 8.17 Random-Error Detection Performance of Block Codes Weight Distributions Worst Case Undetected Error Rate Burst-Error Detection Examples of Error Detection Codes Output Error Rates using Block Codes Detected Uncorrectable Errors Application Example - Optical Communications Conclusion Exercises ix 181 182 184 185 185 186 188 190 192 192 9 Multistage Coding 9.1 Introduction 9.2 Serial Concatenation 9.3 Serial Concatenation using Inner Block Code 9.3.1 Maximal length Codes 9.3.2 Orthogonal Codes 9.3.3 Reed Muller Codes 9.3.4 High rate Codes with soft-decision decoding 9.4 9.5 Serial Concatenation using Inner Convolutional Code Product Codes 9.6 Generalized Array Codes 9.7 Applications of Multistage Coding 9.8 Conclusion 9.9 Exercises 9.10 References 10 Iterative Decoding 10.1 Introduction 10.2 The BCJR Algorithm 10.3 BCJR Product Code Example 10.4 Use of Extrinsic Information 10.5 Recursive Systematic Convolutional Codes 10.6 MAP Decoding of RSC Codes 10.7 Interleaving and Trellis Termination 10.8 The Soft-Output Viterbi Algorithm 10.9 Gallager Codes 10.10 Serial Concatenation with Iterative Decoding 10.11 Performance and Complexity Issues 10.12 Application to Mobile Communications 10.13 Turbo Trellis-Coded Modulation 10.14 Conclusion 10.15 Exercises 10.16 References 4 Index 195 195 195 196 196 197 198 198 199 200 203 206 208 208 209 21 1 21 1 21 1 212 214 215 217 220 222 225 23 1 232 233 233 235 235 236 239