Iterative Solutions Coded Modulation Library Theory of Operation

Similar documents
An Introduction to Low Density Parity Check (LDPC) Codes

Message-Passing Decoding for Low-Density Parity-Check Codes Harish Jethanandani and R. Aravind, IIT Madras

Efficient LLR Calculation for Non-Binary Modulations over Fading Channels

Performance of Multi Binary Turbo-Codes on Nakagami Flat Fading Channels

Performance Analysis and Code Optimization of Low Density Parity-Check Codes on Rayleigh Fading Channels

Convolutional Codes ddd, Houshou Chen. May 28, 2012

Construction of low complexity Array based Quasi Cyclic Low density parity check (QC-LDPC) codes with low error floor

The Turbo Principle in Wireless Communications

LDPC Codes. Intracom Telecom, Peania

Chapter 7: Channel coding:convolutional codes

State-of-the-Art Channel Coding

Turbo Codes for Deep-Space Communications

Turbo Codes. Manjunatha. P. Professor Dept. of ECE. June 29, J.N.N. College of Engineering, Shimoga.

Low Density Parity Check (LDPC) Codes and the Need for Stronger ECC. August 2011 Ravi Motwani, Zion Kwok, Scott Nelson

Encoder. Encoder 2. ,...,u N-1. 0,v (0) ,u 1. ] v (0) =[v (0) 0,v (1) v (1) =[v (1) 0,v (2) v (2) =[v (2) (a) u v (0) v (1) v (2) (b) N-1] 1,...

New Designs for Bit-Interleaved Coded Modulation with Hard-Decision Feedback Iterative Decoding

Turbo Codes for xdsl modems

Modern Coding Theory. Daniel J. Costello, Jr School of Information Theory Northwestern University August 10, 2009

LDPC Codes. Slides originally from I. Land p.1

PUNCTURED 8-PSK TURBO-TCM TRANSMISSIONS USING RECURSIVE SYSTEMATIC CONVOLUTIONAL GF ( 2 N ) ENCODERS

New Puncturing Pattern for Bad Interleavers in Turbo-Codes

Turbo Codes are Low Density Parity Check Codes

Optimized Symbol Mappings for Bit-Interleaved Coded Modulation with Iterative Decoding

Introduction to Low-Density Parity Check Codes. Brian Kurkoski

Interleaver Design for Turbo Codes

Turbo Compression. Andrej Rikovsky, Advisor: Pavol Hanus

The Viterbi Algorithm EECS 869: Error Control Coding Fall 2009

Research on Unequal Error Protection with Punctured Turbo Codes in JPEG Image Transmission System

Iterative Encoding of Low-Density Parity-Check Codes

Constellation Shaping for Communication Channels with Quantized Outputs

ECC for NAND Flash. Osso Vahabzadeh. TexasLDPC Inc. Flash Memory Summit 2017 Santa Clara, CA 1

Lecture 4 : Introduction to Low-density Parity-check Codes

Symbol Interleaved Parallel Concatenated Trellis Coded Modulation

ECEN 655: Advanced Channel Coding

Graph-based codes for flash memory

On the Computation of EXIT Characteristics for Symbol-Based Iterative Decoding

The Concept of Soft Channel Encoding and its Applications in Wireless Relay Networks

Lecture 12. Block Diagram

Channel Coding and Interleaving

Low-density parity-check codes

Digital Communications

Construction of coset-based low rate convolutional codes and their application to low rate turbo-like code design

Practical Polar Code Construction Using Generalised Generator Matrices

THE EFFECT OF PUNCTURING ON THE CONVOLUTIONAL TURBO-CODES PERFORMANCES

Expected Error Based MMSE Detection Ordering for Iterative Detection-Decoding MIMO Systems

SIPCom8-1: Information Theory and Coding Linear Binary Codes Ingmar Land

Introduction to Wireless & Mobile Systems. Chapter 4. Channel Coding and Error Control Cengage Learning Engineering. All Rights Reserved.

CHAPTER 3 LOW DENSITY PARITY CHECK CODES

Lower Bounds on the Graphical Complexity of Finite-Length LDPC Codes

AN INTRODUCTION TO LOW-DENSITY PARITY-CHECK CODES

An algorithm to improve the error rate performance of Accumulate-Repeat-Accumulate codes Tae-Ui Kim

Capacity-approaching codes

Low-Density Parity-Check codes An introduction

Efficient Computation of EXIT Functions for Non-Binary Iterative Decoding

Sub-Gaussian Model Based LDPC Decoder for SαS Noise Channels

Extended MinSum Algorithm for Decoding LDPC Codes over GF (q)

Rate-Compatible Low Density Parity Check Codes for Capacity-Approaching ARQ Schemes in Packet Data Communications

Low-density parity-check (LDPC) codes

The Sorted-QR Chase Detector for Multiple-Input Multiple-Output Channels

Non-binary Hybrid LDPC Codes: structure, decoding and optimization

Code design: Computer search

AALTO UNIVERSITY School of Electrical Engineering. Sergio Damian Lembo MODELING BLER PERFORMANCE OF PUNCTURED TURBO CODES

Expectation propagation for signal detection in flat-fading channels

APPLICATIONS. Quantum Communications

Constructions of Nonbinary Quasi-Cyclic LDPC Codes: A Finite Field Approach

A NEW CHANNEL CODING TECHNIQUE TO APPROACH THE CHANNEL CAPACITY

NAME... Soc. Sec. #... Remote Location... (if on campus write campus) FINAL EXAM EE568 KUMAR. Sp ' 00

Integrated Code Design for a Joint Source and Channel LDPC Coding Scheme

Structured Low-Density Parity-Check Codes: Algebraic Constructions

LDPC Decoder LLR Stopping Criterion

A Simplified Min-Sum Decoding Algorithm. for Non-Binary LDPC Codes

Making Error Correcting Codes Work for Flash Memory

Graph-based Codes for Quantize-Map-and-Forward Relaying

Bit-wise Decomposition of M-ary Symbol Metric

FEEDBACK does not increase the capacity of a discrete

Graph-based Codes and Iterative Decoding

Random Redundant Soft-In Soft-Out Decoding of Linear Block Codes

Data Detection for Controlled ISI. h(nt) = 1 for n=0,1 and zero otherwise.

Efficient design of LDPC code using circulant matrix and eira code Seul-Ki Bae

A New Performance Evaluation Metric for Sub-Optimal Iterative Decoders

A Study on Simulating Convolutional Codes and Turbo Codes

Iterative Equalization using Improved Block DFE for Synchronous CDMA Systems

RCA Analysis of the Polar Codes and the use of Feedback to aid Polarization at Short Blocklengths

Single-Gaussian Messages and Noise Thresholds for Low-Density Lattice Codes

Error Correction Methods

Error Floors of LDPC Coded BICM

Physical Layer and Coding

Exact Probability of Erasure and a Decoding Algorithm for Convolutional Codes on the Binary Erasure Channel

Introduction to Convolutional Codes, Part 1

A First Course in Digital Communications

Mapper & De-Mapper System Document

A Short Length Low Complexity Low Delay Recursive LDPC Code

Factor Graphs and Message Passing Algorithms Part 1: Introduction

An Introduction to Low-Density Parity-Check Codes

Analysis of coding on non-ergodic block-fading channels

These outputs can be written in a more convenient form: with y(i) = Hc m (i) n(i) y(i) = (y(i); ; y K (i)) T ; c m (i) = (c m (i); ; c m K(i)) T and n

Design of Multidimensional Mappings for Iterative MIMO Detection with Minimized Bit Error Floor

Recent Results on Capacity-Achieving Codes for the Erasure Channel with Bounded Complexity

Low-Density Parity-Check Code Design Techniques to Simplify Encoding

Introducing Low-Density Parity-Check Codes

Transcription:

Iterative Solutions Coded Modulation Library Theory of Operation Oct. 3, 2005 Matthew Valenti Associate Professor West Virginia University Morgantown, WV 26506-6109 mvalenti@wvu.edu

Noisy Channel Coding Theorem Claude Shannon, A mathematical theory of communication, Bell Systems Technical Journal, 1948. Every channel has associated with it a capacity C. Measured in bits per channel use (modulated symbol). The channel capacity is an upper bound on information rate r. There exists a code of rate r < C that achieves reliable communications. Reliable means an arbitrarily small error probability. 2/106

Contents Shannon capacity under modulation constraints. Bit interleaved coded modulation. Iterative demodulation and decoding EXIT charts. Turbo coding. The SISO decoding algorithm. LDPC codes The message passing algorithm. 3/106

Computing Channel Capacity The capacity is the mutual information between the channel s input X and output Y maximized over all possible input distributions: C= max I( X; Y) px ( ) zz p a f 2 R U pxy = ST (,) max pxy, log pxpy dxdy VW px ( ) ()() 4/106

Capacity of AWGN with Unconstrained Input Consider an AWGN channel with 1-dimensional input: y = x + n where n is Gaussian with variance N o /2 x is a signal with average energy (variance) E s The capacity in this channel is: F I F Es reb C= max I( X; Y) p = 1 HG 2 + KJ 1 = HG 2 log 2 1 log 2 + 1 px ( ) 2 No 2 No where E b is the energy per (information) bit. This capacity is achieved by a Gaussian input x. This is not a practical modulation. I KJ 5/106

Capacity of AWGN with BPSK Constrained Input If we only consider antipodal (BPSK) modulation, then and the capacity is: C = = max I X; Y p( x) a I X; Y p( x): p= 1/ 2 = H( Y) H( N) z l a f fq X =± Es maximized when two signals are equally liely a f b g o = p y log p( y) dy 1 2 log 2 πen 2 This term must be integrated numerically with z py( y) = px( y) pn( y) = px( λ) pn( y λ) dλ 6/106

Capacity of AWGN w/ 1-D Signaling 1.0 It is theoretically impossible to operate in this region. BPSK Capacity Bound Spectral Efficiency Code Rate r 0.5 Shannon Capacity Bound It is theoretically possible to operate in this region. -2-1 0 1 2 3 4 5 6 7 8 9 10 Eb/No in db

Power Efficiency of Standard Binary Channel Codes 1.0 BPSK Capacity Bound Uncoded BPSK Spectral Efficiency Code Rate r 0.5 Turbo Code 1993 LDPC Code 2001 Chung, Forney, Richardson, Urbane Shannon Capacity Bound Pioneer 1968-72 Voyager 1977 IS-95 1991 Iridium 1998 Odenwalder Convolutional Codes 1976 Galileo:LGA 1996 Galileo:BVD 1992 Mariner 1969 arbitrarily low BER: = 10 5 P b -2-1 0 1 2 3 4 5 6 7 8 9 10 Eb/No in db

M-ary Complex Modulation µ = log 2 M bits are mapped to the symbol x, which is chosen from the set S = {x 1, x 2,, x M } The symbol is multidimensional. 2-D Examples: QPSK, M-PSK, QAM, APSK, HEX M-D Example: FSK, bloc space-time codes (BSTC) The signal y = hx + n is received h is a complex fading coefficient. More generally (BSTC), Y = HX + N Modulation implementation in the ISCML Currently only 2-D modulation is supported. The complex signal set S is created with the Create2D function. Modulation is performed using the Mod2D function. 9/106

Log-lielihood of Received Symbols Let p(x y) denote the probability that signal x S was transmitted given that y was received. Let f(x y) = Κ p(x y), where Κ is any multiplicative term that is constant for all x. When all symbols are equally liely, f(x y) f(y x ) For each signal in S, the receiver computes f(y x ) This function depends on the modulation, channel, and receiver. Implemented by the Demod2D function, which actually computes log f(y x ). Assuming that all symbols are equally liely, the most liely symbol x is found by maing a hard decision on f(y x ) or log f(y x ). 10/106

11/106 Example: QAM over AWGN. Let y = x + n, where n is complex i.i.d. N(0,N 0 /2 ) and the average energy per symbol is E[ x 2 ] = E s o s N x y E x y x y f x y x y f x y x y p 2 2 2 2 2 2 2 2 2 ) ( log 2 exp ) ( 2 exp 2 1 ) ( = = = = σ σ σ πσ

12/106 Log-Lielihood of Symbol x The log-lielihood of symbol x is found by: { } [ ] ) ( max* log ) ( log ) ( log exp log ) ( log ) ( log ) ( log ) ( ) ( log ) ( ) ( log ) ( log m S S m S m S m S f f f f f f f f p p p m m m m m x y x y x y x y x y x y x y x y y x y x y x x x x x x = = = = = = Λ

The max* function The pairwise max* function is defined as: max*( x, y) = log exp( = max( x, [ x) + exp( y) ] = max( x, y) + y) + log 1 ( + exp{ y x} ) ( y x ) Where fc is a correction function that only depends on the magnitude of the difference between x and y. For multiple arguments, it follows the recursive relationship: f c [ max*( x, y z] max* ( x, y, z) = max* ), 13/106

The correction function 0.7 0.6 0.5 f c [ + exp( ))] ( z) = log 1 z 0.4 f c ( y-x ) 0.3 0.2 0.1 0-0.1 0 1 2 3 4 5 6 7 8 9 10 y-x

Simplifications 0.7 0.6 0.5 f c [ + exp( ))] ( z) = log 1 z 0.4 f c ( y-x ) 0.3 0.2 0.1 0-0.1 0 1 2 3 4 5 6 7 8 9 10 y-x

Capacity of Coded Modulation (CM) Suppose we want to compute capacity of M-ary modulation In each case, the input distribution is constrained, so there is no need to maximize over p(x) The capacity is merely the mutual information between channel input and output. The mutual information can be measured as the following expectation: [ log M log p( x )] nats C = I( X ; Y ) = E, + y x n 16/106

Monte Carlo Calculation of the Capacity of Coded Modulation (CM) The mutual information can be measured as the following expectation: C = I( X ; Y ) = = log M = log 2 = µ + M E x + +, n E E x E, n [ log M + log p( x y) ] [ Λ ] nats [ Λ ] [ Λ ] bits log(2), n x x, n log(2) bits nats This expectation can be obtained through Monte Carlo simulation. 17/106

Simulation Bloc Diagram This function is computed by the ISCML function Demod2D This function is computed by the ISCML function Capacity Modulator: Pic x at random from S x n Receiver: Compute log f(y x ) for every x S Calculate: Λ = log f ( y x max* log x S m ) [ f ( y x )] m Noise Generator Benefits of Monte Carlo approach: -Allows high dimensional signals to be studied. -Can determine performance in fading. -Can study influence of receiver design. After running many trials, calculate: C = µ + E [ Λ ] log(2)

8 Capacity of 2-D modulation in AWGN 256QAM 7 Capacity (bits per symbol) 6 5 4 3 16QAM 2-D Unconstrained Capacity 16PSK 64QAM 8PSK 2 QPSK 1 BPSK 0-2 0 2 4 6 8 10 12 14 16 18 20 Eb/No in db

15 Capacity of M-ary Noncoherent FSK in AWGN W. E. Star, Capacity and cutoff rate of noncoherent FSK with nonselective Rician fading, IEEE Trans. Commun., Nov. 1985. M.C. Valenti and S. Cheng, Iterative demodulation and decoding of turbo coded M-ary noncoherent orthogonal modulation, to appear in IEEE JSAC, 2005. Minimum Eb/No (in db) 10 5 Noncoherent combining penalty M=2 M=4 M=16 M=64 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Rate R (symbol per channel use)

15 Capacity of M-ary Noncoherent FSK in Rayleigh Fading Ergodic Capacity (Fully interleaved) Assumes perfect fading amplitude estimates available to receiver Minimum Eb/No (in db) 10 5 M=2 M=4 M=16 M=64 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Rate R (symbol per channel use)

BICM Coded modulation (CM) is required to attain the aforementioned capacity. Channel coding and modulation handled jointly. e.g. trellis coded modulation (Ungerboec); coset codes (Forney) Most off-the-shelf capacity approaching codes are binary. A pragmatic system would use a binary code followed by a bitwise interleaver and an M-ary modulator. Bit Interleaved Coded Modulation (BICM); Caire 1998. ul Binary Encoder c' n Bitwise Interleaver cn Binary to M-ary mapping x 22/106

Transforming Symbol Log-Liehoods Into Bit LLRs Lie the CM receiver, the BICM receiver calculates log f (y x ) for each signal in S. Furthermore, the BICM receiver needs to calculate the log-lielihood ratio of each code bit: λ n = log = S p p (1) n ( cn = 1 y) ( c = 0 y) n max* log x ( x y) ( x y) n [ f ( y x )] max* log[ f ( y x )] (1) = log x x x S S S ( 0 ) n (1) n p p ( y x ) ( y x ) where S represents the set of symbols whose n th bit is a 1. n ( 0 ) = log x x S S (1) n ( 0 ) n p p p[ x p[ x ] ] and is the set of symbols whose n th bit is a 0. S ( 0 ) n 23/106

24/106 BICM Capacity BICM transforms the channel into µ parallel binary channels, and the capacity of the nth channel is: [ ] { } [ ] nats 1) 0,( max* - log(2) nats ) ( ) 1 (,log ) ( ) 0 ( log max* - log(2) nats ) ( ) 1 ( exp log ) ( ) 0 ( exp log log - log(2) nats ) ( ) 1 ( ) 0 ( log log(2) nats ) 1 ( ) 0 ( ) ( log log(2) nats ) ( log log(2),,,,,, c c c c c c c n n n n n n E c p c p c p c p E c p c p c p c p E c p c p c p E c p c p c p E c p E C λ = = = = = + = = = + = = = + = + = + = n n n n n n y y y y y y y y y y y y y y y

BICM Capacity (Continued) Since capacity over parallel channels adds, the capacity of BICM is: C = = µ = 1 µ = 1 C c { log(2) - E [ max* { 0,( 1) λ }]} = µ log(2) = µ 1 log(2) µ = 1 µ = 1 c, n n E E c, n n c, n n c [ max* { 0,( 1) λ }] nats nats c [ max* { 0,( 1) λ }] bits 25/106

BICM Capacity As with CM, this can be computed using a Monte Carlo integration. Modulator: Pic x at random from S x n Noise Generator Receiver: Compute p(y x ) for every x S Λ = µ = 1 E This function is computed by the ISCML function Somap For each bit, calculate: λ n = log x S x S (1) n ( 0 ) n p p ( y x) ( y x) For each symbol, calculate: c, n n c [ max* { 0,( 1) λ }] bits Unlie CM, the capacity of BICM depends on how bits are mapped to symbols After running many trials, calculate: C = µ + [ Λ] E log(2) 26/106

Code Rate R (4-bit symbols per channel use) 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 CM and BICM capacity for 16QAM in AWGN CM M=16 QAM AWGN BICM M=16 QAM gray BICM M=16 QAM SP BICM M=16 QAM MSP BICM M=16 QAM Antigray BICM M=16 QAM MSEW 0-10 -5 0 5 10 15 20 Minimum Es/No (in db)

BICM-ID The conventional BICM receiver assumes that all bits in a symbol are equally liely: However, if the receiver has estimates of the bit probabilities, it can use this to weight the symbol lielihoods. λ n λ n = = log log x S x S (1) n ( 0 ) n x S x S p p (1) n ( 0 ) n ( x y) ( x y) p p ( y x) ( y x) ( y x) ( y x) This information is obtained from decoder feedbac. Bit Interleaved Coded Modulation with Iterative Demodulation Li and Ritcey 1999. x S x S = p( x p( x log c c n n = (1) n ( 0 ) n p p = 1) 0) 28/106

Mutual Information Transfer Chart Now consider a receiver that has a priori information about the code bits (from a soft output decoder). Assume the following: The a priori information is in LLR form. The a priori LLR s are Gaussian distributed. The LLR s have mutual information I v Then the mutual information I z at the output of the receiver can be measured through Monte Carlo Integration. I z vs. I v is the Mutual Information Transfer Characteristic. ten Brin 1999. 29/106

Generating Random a Priori Input 1 0.9 0.8 Mutual Information 0.7 0.6 0.5 0.4 0.3 0.2 0.1 There is a one-to-one correspondence between the mutual information and the variance of the Gaussian distributed a priori input 0 0 5 10 15 20 25 30 35 40 45 50 variance

Mutual Information Characteristic 1 0.9 0.8 0.7 gray SP MSP MSEW Antigray 0.6 I z 0.5 0.4 0.3 0.2 16-QAM AWGN 6.8 db 0.1 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 I v

EXIT Chart 1 0.9 0.8 0.7 0.6 16-QAM AWGN 6.8 db adding curve for a FEC code maes this an extrinsic information transfer (EXIT) chart I z 0.5 0.4 0.3 0.2 0.1 gray SP MSP MSEW Antigray K=3 Conv code 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 I v

EXIT Chart for Space Time Bloc Code 1 0.9 0.8 16-QAM 8 db Rayleigh fading 0.7 0.6 I z 0.5 0.4 0.3 0.2 0.1 1 by 1 MSP 2 by 1 Alamouti MSP 2 by 1 Alamouti huangnr1 2 by 2 Alamouti MSP 2 by 2 Alamouti huangnr2 K=3 Conv code 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 I v

BICM-ID for Noncoherent FSK M.C. Valenti and S. Cheng, Iterative demodulation and decoding of turbo coded M-ary noncoherent orthogonal modulation, to appear in IEEE JSAC, 2005.

Review: Convolutional Codes D D Constraint Length K = 3 A convolutional encoder encodes a stream of data. The size of the code word is unbounded. The encoder is a Finite Impulse Response (FIR) filter. binary inputs n binary outputs K -1 delay elements Coefficients are either 1 or 0 All operations over GF(2) Addition: XOR

Recursive Systematic Convolutional (RSC) Encoding r i D D In the ISCML, convolutional encoding is implemented with the ConvEncode function. The optional input nsc_flag determines if it is an RSC (flag = 0) or NSC (flag = 1) encoder. The default is for it to be an RSC encoder. x i An RSC encoder is constructed from a standard convolutional encoder by feeding bac one of the outputs. An RSC code is systematic. The input bits appear directly in the output. An RSC encoder is an Infinite Impulse Response (IIR) Filter. An arbitrary input will cause a good (high weight) output with high probability. Some inputs will cause bad (low weight) outputs.

Parallel Concatenated Codes with Nonuniform Interleaving A stronger code can be created by encoding in parallel. A nonuniform interleaver scrambles the ordering of bits at the input of the second encoder. Uses a pseudo-random interleaving pattern. It is very unliely that both encoders produce low weight code words. MUX increases code rate from 1/3 to 1/2. Input RSC #1 Systematic Output x i Nonuniform Interleaver RSC #2 MUX Parity Output 37/106

Random Coding Interpretation of Turbo Codes Random codes achieve the best performance. Shannon showed that as n, random codes achieve channel capacity. However, random codes are not feasible. The code must contain enough structure so that decoding can be realized with actual hardware. Coding dilemma: All codes are good, except those that we can thin of. With turbo codes: The nonuniform interleaver adds apparent randomness to the code. Yet, they contain enough structure so that decoding is feasible. 38/106

Comparison of a Turbo Code and a Convolutional Code First consider a K=12 convolutional code. d min = 18 β d = 187 (output weight of all d min paths) Now consider the original turbo code. C. Berrou, A. Glavieux, and P. Thitimasjshima, Near Shannon limit errorcorrecting coding and decoding: Turbo-codes, in Proc. IEEE Int. Conf. on Commun., Geneva, Switzerland, May 1993, pp. 1064-1070. Same complexity as the K=12 convolutional code Constraint length 5 RSC encoders = 65,536 bit interleaver Minimum distance d min = 6 a d = 3 minimum distance code words Minimum distance code words have average information weight of only f d = 2 39/106

Comparison of Minimum-distance Asymptotes BER 10 0 10-2 10-4 Convolutional Code CC free distance asymptote Turbo Code TC free distance asymptote Convolutional code: d = 18 min c = 187 d min E P 18 Turbo code: b ( ) b 187 Q No 10-6 10-8 0.5 1 1.5 2 2.5 3 3.5 4 E b /N o in db P 6 b a d min = 6 w~ ~ d min d min cd min = 3 2 = 65536 5 ( ) Eb 9.2 10 Q No

The Turbo-Principle Turbo codes get their name because the decoder uses feedbac, lie a turbo engine. 41/106

Performance as a Function of Number of Iterations BER 10 0 10-1 10-2 10-3 10-4 6 iterations 1 iteration 2 iterations 3 iterations K = 5 constraint length r = 1/2 code rate L= 65,536 interleaver size number data bits Log-MAP algorithm 10-5 10 iterations 10-6 18 iterations 10-7 0.5 1 1.5 2 E b /N o in db

Summary of Performance Factors and Tradeoffs Latency vs. performance Frame (interleaver) size L Complexity vs. performance Decoding algorithm Number of iterations Encoder constraint length K Spectral efficiency vs. performance Overall code rate r Other factors Interleaver design Puncture pattern Trellis termination 43/106

Tradeoff: BER Performance versus Frame Size (Latency) 10 0 10-1 10-2 10-2 10-3 K=1024 K=4096 K=16384 K=65536 K = 5 Rate r = 1/2 18 decoder iterations AWGN Channel BER 10-4 10-4 10-5 10-6 10-6 10-8-7 0.5 1 1 1.5 1.5 2 2.5 2 3 2.5 E /N in db b o

Characteristics of Turbo Codes Turbo codes have extraordinary performance at low SNR. Very close to the Shannon limit. Due to a low multiplicity of low weight code words. However, turbo codes have a BER floor. This is due to their low minimum distance. Performance improves for larger bloc sizes. Larger bloc sizes mean more latency (delay). However, larger bloc sizes are not more complex to decode. The BER floor is lower for larger frame/interleaver sizes The complexity of a constraint length K TC turbo code is the same as a K = K CC convolutional code, where: K CC 2+K TC + log 2 (number decoder iterations) 45/106

UMTS Turbo Encoder Input X Systematic Output X Upper RSC Encoder Uninterleaved Parity Z Output Interleaver Interleaved Input X Lower RSC Encoder Interleaved Parity Z From ETSI TS 125 212 v3.4.0 (2000-09) UMTS Multiplexing and channel coding Data is segmented into blocs of L bits. where 40 L 5114

UMTS Interleaver: Inserting Data into Matrix Data is fed row-wise into a R by C matrix. R = 5, 10, or 20. 8 C 256 If L < RC then matrix is padded with dummy characters. In the ISCML, the UMTS inteleaver is created by the function CreateUMTSInterleaver Interleaving and Deinterleaving are implemented by Interleave and Deinterleave X 1 X 2 X 3 X 4 X 5 X 6 X 7 X 8 X 9 X 10 X 11 X 12 X 13 X 14 X 15 X 16 X 17 X 18 X 19 X 20 X 21 X 22 X 23 X 24 X 25 X 26 X 27 X 28 X 29 X 30 X 31 X 32 X 33 X 34 X 35 X 36 X 37 X 38 X 39 X 40 47/106

UMTS Interleaver: Intra-Row Permutations Data is permuted within each row. Permutation rules are rather complicated. See spec for details. X 2 X 6 X 5 X 7 X 3 X 4 X 1 X 8 X 10 X 12 X 11 X 15 X 13 X 14 X 9 X 16 X 18 X 22 X 21 X 23 X 19 X 20 X 17 X 24 X 26 X 28 X 27 X 31 X 29 X 30 X 25 X 32 X 40 X 36 X 35 X 39 X 37 X 38 X 33 X 34 48/106

Rows are permuted. UMTS Interleaver: Inter-Row Permutations If R = 5 or 10, the matrix is reflected about the middle row. For R=20 the rule is more complicated and depends on L. See spec for R=20 case. X 40 X 36 X 35 X 39 X 37 X 38 X 33 X 34 X 26 X 28 X 27 X 31 X 29 X 30 X 25 X 32 X 18 X 22 X 21 X 23 X 19 X 20 X 17 X 24 X 10 X 12 X 11 X 15 X 13 X 14 X 9 X 16 X 2 X 6 X 5 X 7 X 3 X 4 X 1 X 8 49/106

UMTS Interleaver: Reading Data From Matrix Data is read from matrix column-wise. X 40 X 36 X 35 X 39 X 37 X 38 X 33 X 34 X 26 X 28 X 27 X 31 X 29 X 30 X 25 X 32 X 18 X 22 X 21 X 23 X 19 X 20 X 17 X 24 X 10 X 12 X 11 X 15 X 13 X 14 X 9 X 16 X 2 X 6 X 5 X 7 X 3 X 4 X 1 X 8 Thus: X 1 = X 40 X 2 = X 26 X 3 = X 18 X 38 = X 24 X 2 = X 16 X 40 = X 8 50/106

Recursive Systematic Convolutional (RSC) Encoder Systematic Output (Upper Encoder Only) D D D Parity Output (Both Encoders) Upper and lower encoders are identical: Feedforward generator is 15 in octal. Feedbac generator is 13 in octal. 51/106

Trellis Termination X L+1 X L+2 X L+3 Z L+1 Z L+2 Z L+3 D D D After the L th input bit, a 3 bit tail is calculated. The tail bit equals the fed bac bit. This guarantees that the registers get filled with zeros. Each encoder has its own tail. The tail bits and their parity bits are transmitted at the end. 52/106

Output Stream Format The format of the output steam is: X 1 Z 1 Z 1 X 2 Z 2 Z 2 X L Z L Z L X L+1 Z L+1 X L+2 Z L+2 X L+3 Z L+3 X L+1 Z L+1 X L+2 Z L+2 X L+3 Z L+3 L data bits and their associated 2L parity bits (total of 3L bits) 3 tail bits for upper encoder and their 3 parity bits 3 tail bits for lower encoder and their 3 parity bits Total number of coded bits = 3L + 12 Code rate: r = L 3L + 12 1 3 53/106

Channel Model and LLRs {0,1} BPSK {-1,1} Modulator y r Channel gain: a Rayleigh random variable if Rayleigh fading a = 1 if AWGN channel Noise variance is: a 2 σ n 1 3 = E b E 2r 2 No N b o 2a 2 σ 54/106

SISO-MAP Decoding Bloc This bloc is implemented in the ISCML by the SisoDecode function λ u,i λ c,i SISO MAP Decoder λ u,o λ c,o Inputs: λ u,i LLR s of the data bits. This comes from the other decoder r. λ c,i LLR s of the code bits. This comes from the channel observations r. Two output streams: λ u,o LLR s of the data bits. Passed to the other decoder. λ c,o LLR s of the code bits. Not used by the other decoder. 55/106

Turbo Decoding Architecture r(x ) r(z ) Demux Upper MAP Decoder Interleave zeros r(z ) Demux Lower MAP Decoder Deinnterleave $X Initialization and timing: Upper λ u,i input is initialized to all zeros. Upper decoder executes first, then lower decoder.

Performance as a Function of Number of Iterations 10 0 10-1 10-2 BER of 640 bit turbo code in AWGN 1 iteration L=640 bits AWGN channel 10 iterations BER 10-3 10-4 2 iterations 10-5 3 iterations 10-6 10 iterations 10-7 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 Eb/No in db

Log-MAP Algorithm: Overview Log-MAP algorithm is MAP implemented in log-domain. Multiplications become additions. Additions become special max* operator (Jacobi logarithm) Log-MAP is similar to the Viterbi algorithm. Except max is replaced by max* in the ACS operation. Processing: Sweep through the trellis in forward direction using modified Viterbi algorithm. Sweep through the trellis in bacward direction using modified Viterbi algorithm. Determine LLR for each trellis section. Determine output extrinsic info for each trellis section. 58/106

The max* operator revisited max* must implement the following operation: Ways to accomplish this: C-function calls or large loo-up-table. (Piecewise) linear approximation. Rough correction value. Max operator. z = max( x, y) + ln 1 = max( x, y) + = max*( x, y) 0 z max( x, y) + 0.5 if z max( x, y) f f c ( + exp{ y x} ) ( y x ) y - x > 1.5 y - x 1.5 log-map constant-log-map max-log-map 59/106

The Correction Function 0.7 f c ( y-x ) 0.6 0.5 0.4 0.3 Constant-log-MAP dec_type option in SisoDecode =0 For linear-log-map (DEFAULT) = 1 For max-log-map algorithm = 2 For Constant-log-MAP algorithm = 3 For log-map, correction factor from small nonuniform table and interpolation = 4 For log-map, correction factor uses C function calls 0.2 log-map 0.1 0-0.1 0 1 2 3 4 5 6 7 8 9 10 y-x

The Trellis for UMTS γ 00 S 0 S 0 γ 10 S 1 S 1 S 2 S 2 S 3 S 3 Dotted line = data 0 Solid line = data 1 Note that each node has one each of data 0 and 1 entering and leaving it. The branch from node S i to S j has metric γ ij γ = X ( i, j) λ + X ( i, j) λ + λ ij u, i c, i Z ( i, j) 1 c, i 2 S 4 S 4 S 5 S 5 data bit associated with branch S i S j The two code bits labeling with branch S i S j S 6 S 6 S 7 S 7 61/106

Forward Recursion γ 00 α 0 α 0 A new metric must be calculated for each node in the trellis using: γ 10 α 1 α 1 α = max* α' + γ, α' + γ 1 1 2 2 od id it j i i j i i j α 2 α 3 α 4 α 5 α 6 α 7 α 2 α 3 α 4 α 5 α 6 α 7 where i 1 and i 2 are the two states connected to j. Start from the beginning of the trellis (i.e. the left edge). Initialize stage 0: α o = 0 α i = - for all i 0 62/106

Bacward Recursion γ 00 β 0 β 0 γ 10 A new metric must be calculated for each node in the trellis using: od id it β 1 β 1 β = max* β ' + γ, β ' + γ i j ij j ij 1 1 2 2 β 2 β 3 β 4 β 5 β 6 β 7 β 2 β 3 β 4 β 5 β 6 β 7 where j 1 and j 2 are the two states connected to i. Start from the end of the trellis (i.e. the right edge). Initialize stage L+3: β o = 0 β i = - for all i 0 63/106

Log-lielihood Ratio α 0 β 0 α 1 α 2 α 3 α 4 α 5 α 6 γ 10 β 1 β 2 β 3 β 4 β 5 β 6 The lielihood of any one branch is: + + γ 00 α γ β i ij j The lielihood of data 1 is found by summing the lielihoods of the solid branches. The lielihood of data 0 is found by summing the lielihoods of the dashed branches. The log lielihood ratio (LLR) is: b g Λ X = ln F HG PX PX S S : X = 1 i j S S : X = 0 i j n n = 1 = 0 I KJ = max* α + γ + β i ij j max* α + γ + β i ij j s s α 7 β 7 64/106

Extrinsic Information The extrinsic information is found by subtracting the corresponding input from the LLR output, i.e. λ u,i (lower) = λ u,o (upper) - λ u,i (upper) λ u,i (upper) = λ u,o (lower) - λ u,i (lower) It is necessary to subtract the information that is already available at the other decoder in order to prevent positive feedbac. The extrinsic information is the amount of new information gained by the current decoder step. 65/106

Performance Comparison 10 0 10-1 BER of 640 bit turbo code max-log-map constant-log-map log-map 10-2 Fading BER 10-3 10-4 AWGN 10-5 10-6 10-7 10 decoder iterations 0 0.5 1 1.5 2 2.5 3 Eb/No in db

Practical Implementation Issues No need to store both alpha and beta in trellis. Compute beta first and store in trellis. Then compute alpha and derive LLR estimates at the same time. No need to store alpha trellis. The metrics eep getting larger and larger. Floating point: loss of precision. Fixed point: overflow. Solution: normalize the metrics: b g α = α min α or i normalized i i b g i b g αi = α α normalized i 0 b g β = β min β i normalized i i b g i b g βi = β β normalized i 0 67/106

Issues: Channel Estimation In an AWGN Channel: log-map and constant-log-map need an estimate of σ 2 Estimate of σ 2 is not needed for max-log-map. Constant-log-MAP is more vulnerable to bad estimates than log- MAP. In addition, for fading channels: All three algorithms require estimates of the channel gain a. 68/106

Issues: Memory Limitations Storing the entire beta trellis can require a significant amount of memory: 8L states For L=5114 there will have to be 40,912 stored values. The values only need to be single-precision floats. An alternative is to use a sliding window approach. 69/106

Issues: Halting the Iterations Turbo decoding progresses until a fixed number of iterations have completed. However, the decoder will often converge early. Can stop once it has converged (i.e. BER = 0). Stopping early can greatly increase the throughput. For a simulation, it is reasonable to automatically halt once the BER goes to zero. Requires nowledge of the data. For an actual system, a blind method for halting is desirable. Blind --- don t now the data. 70/106

Simple Method for Halting A simple method is as follows: After each decoder iteration, determine the smallest output LLR value: Then compare this value to a threshold. If the minimum LLR is more than the threshold, then halt: Halt if: Λmin min Λ X Λ min m b gr = 1 K > llr_ halt 71/106

BER of Different Values of llr_halt in AWGN channel 10-1 10-2 10-3 BER of 640 bit turbo code llr halt = 1 llr halt = 5 llr halt = 10 llr halt = 0 BER 10-4 10-5 10-6 10-7 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 Eb/No in db

FER of Different Values of llr_halt in AWGN channel 10 0 FER of 640 bit turbo code 10-1 10-2 FER 10-3 10-4 llr halt = 1 llr halt = 5 llr halt = 10 llr halt = 0 10-5 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 Eb/No in db

Average Number of Iterations Number of decoder iterations 10 9 8 7 6 5 4 3 Number of iterations for 640 bit turbo code llr halt = 1 llr halt = 5 llr halt = 10 llr halt = 0 2 1 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 Eb/No in db

LDPC Code Overview Low Density Parity Chec (LDPC) codes are a class of linear bloc codes characterized by sparse parity chec matrices H. Review of parity chec matrices: For a (n,) code, H is a n- by n matrix of ones and zeros. A codeword c is valid iff ch T = 0 Each row of H specifies a parity chec equation. The code bits in positions where the row is one must sum (modulo-2) to zero. In an LDPC code, only a few bits (~4 to 6) participate in each parity chec equation. LDPC codes were originally invented by Robert Gallager in the early 1960 s but were largely ignored until they were rediscovered in the mid-1990 s by MacKay. 75/106

Decoding LDPC Codes Lie turbo codes, LDPC codes are iteratively decoded Instead of a trellis, LDPC codes use a Tanner graph A Tanner graph consists of variable-nodes (corresponding to the received code bits) and chec-nodes (corresponding to the parity chec equations). The H matrix determines the connections between v-nodes and c-nodes. Messages iteratively flow bac and forth between v-nodes and c-nodes. In general, the per-iteration complexity of LDPC codes is less than it is for turbo codes. e.g. the best LDPC code investigated here needs half as many additions per iteration than the UMTS turbo code. However, many more iterations may be required (max 100;avg 30). Thus, overall complexity can be higher than turbo. More on the decoding algorithm and complexity later. 76/106

Detecting Errors With LDPC codes, error detection comes for free. Errors can be detected by computing ch T =? 0 The probability of undetetected error is very small. This can be used to dynamically halt the iterations. No outer error detecting code is needed. 77/106

Regular vs. Irregular LDPC codes An LDPC code is regular if the rows and columns of H have uniform weight, i.e. all rows have the same number of ones and all columns have the same number of ones. The codes of Gallager and MacKay were regular (or as close as possible). Although regular codes had impressive performance, they are still about 1 db from capacity and generally perform worse than turbo codes. An LDPC code is irregular if the rows and columns have non-uniform weight. Typically the rows have similar weight (e.g. 5 and 6) while the columns have vastly different weight (e.g. from 2 to 15 or 20). Around 2000, Richardson and Urbane showed that long irregular LDPC codes could come within ~0.1 db of capacity. One of their r=1/2 designs (with Chung) came within 0.04 db of capacity. Irregular LDPC codes tend to outperform turbo codes for bloc lengths of about n>10 5 78/106

Encoding LDPC Codes A linear bloc code is encoded by performing the matrix multiplication c = ug, where u is the -bit long message and G is a by n generator matrix. A common method for finding G from H is to first mae the code systematic by adding rows and exchanging columns to get the H matrix in the form H = [P T I]. Then G = [I P]. However, the result of the row reduction is a non-sparse P matrix. The multiplication c=ug =[u up] is now very complex, as the calculation of up is O((n-)) Solutions: Richardson and Urbane (2001) show how to transform the H matrix into a (fairly) sparse (almost) lower triangular matrix. Then encoding complexity is approximately O(). An alternative involving a sparse-matrix multiply followed by differential encoding has been proposed by Ryan, Yang, & Li. 79/106

Extended IRA Codes (Ryan, Yang, & Li) Let H = [H 1 H 2 ] where H 1 is sparse and Then a systematic code can be generated with G = [I H 1T H 2 -T ]. It turns out that H 2 -T is the generator matrix for an accumulate-code (differential encoder), and thus the encoder structure is simply: u H 2 = 1 1 1 1 1 u uh 1T H 2 -T Similar to Jin & McEliece s Irregular Repeat Accumulate (IRA) codes. Thus termed Extended IRA Codes 1 1 Multiply by H 1 T... 1 1 D and H T 2 = 1 1 1 1 1 1............ 1 1 1 1 1 80/106

Performance Comparison We now compare the performance of the maximum-length UMTS turbo code against four LDPC code designs. Code parameters All codes are rate ⅓ The LDPC codes are length (n,) = (15000, 5000) Up to 100 iterations of log-domain sum-product decoding Code parameters are given on next slide The turbo code has length (n,) = (15354,5114) Up to 16 iterations of log-map decoding BPSK modulation AWGN and fully-interleaved Rayleigh fading Enough trials run to log 40 frame errors Sometimes fewer trials were run for the last point (highest SNR). 81/106

LDPC Code Parameters Code 1: MacKay s regular construction 2A See: D.J.C. MacKay, Good error-correcting codes based on very sparse matrices, IEEE Trans. Inform. Theory, March 1999. Code 2: Richardson & Urbane irregular construction See T. Richardson, M. Shorollahi, and R. Urbane, Design of capacityapproaching irregular low-density parity-chec codes, IEEE Trans. Inform. Theory, Feb. 2001. Code 3: Improved irregular construction Designed by Chris Jones using principles from T. Tian, C. Jones, J.D. Villasenor, and R.D. Wesel, Construction of irregular LDPC codes with low error floors, in Proc. ICC 2003. Idea is to avoid small stopping sets Code 4: Extended IRA code Designed by Michael Yang & Bill Ryan using principles from M. Yang and W.E. Ryan, Lowering the error-rate floors of moderate-length high-rate irregular LDPC codes, to appear at ISIT 2003. 82/106

LDPC Degree Distributions The distribution of row-weights, or chec-node degrees, is as follows: i 1 2 3 4 3 4 5 6 10000 9987 5458 4542 5000 The distribution of column-weights, or variable-node degrees, is: i 1 2 3 4 1 2 3 4 5 8 15 5000 10000 13 8282 2238 2584 206 1 1689 9045 2267 569 1941 1178 1 4999 1 9999 5000 Code number: 1 = MacKay construction 2A 2 = Richardson & Urbane 3 = Jones, Wesel, & Tian 4 = Ryan s Extended-IRA 83/106

10-1 BER in AWGN BPSK/AWGN Capacity: -0.50 db for r = 1/3 10-2 10-3 BER 10-4 10-5 Code #3: JWT Code #2: R&U Code #1: Macay 2A 10-6 Code #4: IRA 10-7 turbo 0 0.2 0.4 0.6 0.8 1 1.2 Eb/No in db

10 0 FER in AWGN 10-1 10-2 FER 10-3 10-4 turbo Code #3: JWT Code #2: R&U Code #4: IRA Code #1: Macay 2A 0 0.2 0.4 0.6 0.8 1 1.2 Eb/No in db

Average Number of Iterations in 100 AWGN 90 80 Average number of iterations 70 60 50 40 30 Code #2: R&U Code #3: JWT Code #1: Macay 2A 20 10 turbo Code #4: IRA 0 0 0.2 0.4 0.6 0.8 1 1.2 Eb/No in db

BER in Fully-Interleaved 10-1 10-2 Rayleigh Fading BPSK/Fading Capacity: 0.5 db for r = 1/3 10-3 Code #1: Macay 2A BER 10-4 10-5 Code #3: JWT Code #2: R&U Code #4: IRA 10-6 turbo 1 1.2 1.4 1.6 1.8 2 2.2 Eb/No in db

FER in Fully-Interleaved 10 0 Rayleigh Fading 10-1 Code #1: Macay 2A FER 10-2 10-3 turbo Code #3: JWT Code #2: R&U Code #4: IRA 10-4 1 1.2 1.4 1.6 1.8 2 2.2 Eb/No in db

Average Number of Iterations Rayleigh Fading Average number of iterations 100 90 80 70 60 50 40 30 Code #1: Macay 2A 20 10 turbo Code #3: JWT Code #2: R&U Code #4: IRA 0 1 1.2 1.4 1.6 1.8 2 2.2 Eb/No in db

Tanner Graphs A Tanner graph is a bipartite graph that describes the parity chec matrix H. There are two classes of nodes: Variable-nodes: Correspond to bits of the codeword or equivalently, to columns of the parity chec matrix. There are n v-nodes. Chec-nodes: Correspond to parity chec equations or equivalently, to rows of the parity chec matrix. There are m=n- c-nodes. Bipartite means that nodes of the same type cannot be connected (e.g. a c-node cannot be connected to another c-node). The i th chec node is connected to the j th variable node iff the (i,j) th element of the parity chec matrix is one, i.e. if h ij =1. All of the v-nodes connected to a particular c-node must sum (modulo-2) to zero. 90/106

Example: Tanner Graph for (7,4) Hamming Code H = 1 1 1 1 1 0 1 0 1 0 1 1 1 0 0 0 1 0 0 0 1 c-nodes f 0 f 1 f 2 y 0 y 1 y 2 y 3 y 4 y 5 y 6 v-nodes 91/106

Message Passing Decoding: Notation Q i = LLR of the i th code bit (ultimate goal of algorithm) q ij = extrinsic info to be passed from v-node i to c-node j r ji = extrinsic info to be passed from c-node j to v-node i C i = {j: h ji = 1} This is the set of row location of the 1 s in the i th column. R j = {i: h ji = 1} This is the set of column location of the 1 s in the j th row R j\i = {i : h ji =1}\{i} The set of column locations of the 1 s in the j th row, excluding location i. 92/106

More Notation α ij = sign( q ij ) β ij = q ij φ(x) = -log tanh(x/2) = log( (e x +1)/(e x -1) )= φ -1 (x) 6 5 4 φ(x) 3 2 1 0 0 1 2 3 4 5 6 x 93/106

Initialize: Sum-Product Decoder (in Log-Domain) q ij = λ i = 2Re{a i* r i }/σ 2 = channel LLR value Loop over all i,j for which h ij = 1 At each c-node, update the r messages: r ji = ( ) αi' j φ φ βi' j i' R j\ i i' R j\ i At each v-node update the q message and Q LLR: Qi = λi + rji q ij = Q i j C r ji i Mae hard decision: cˆ i = 1 if Qi < 0 0 otherwise 94/106

Halting Criteria After each iteration, halt if: T c ˆH = 0 This is effective, because the probability of an undetectible decoding error is negligible. Otherwise, halt once the maximum number of iterations is reached. 95/106

Note that: Min-Sum Decoder (Log-Domain) ( ) ( ( ) i' j = φ φ min βi' j min βi' j ( β ) φ maxφ( β ) φ φ i ' j = i' i' i' So we can replace the r message update formula with r ji = α i' R j\ i This greatly reduces complexity, since now we don t have to worry about computing the nonlinear φ function. Note that since α is just the sign of q, α can be implemented by using XOR operations. i' j min β i' R j\ i i' j i' 96/106

Extrinsic-information Scaling As with max-log-map decoding of turbo codes, min-sum decoding of LDPC codes produces an extrinsic information estimate which is biased. In particular, r ji is overly optimistic. A significant performance improvement can be achieved by multiplying r ji by a constant κ, where κ<1. r ji = κ α i' R j\ i i' j min β i' R j\ i See: J. Heo, Analysis of scaling soft information on low density parity chec code, IEE Electronic Letters, 23 rd Jan. 2003. Here we compare the performance of sum-product, minsum, and min-sum with extrinsic info scaling. Experimentation shows that κ=0.9 gives best performance. i' j 97/106

BER of 10-1 Different Decoding Algorithms 10-2 10-3 Code #1: MacKay s construction 2A AWGN channel BPSK modulation Min-sum BER 10-4 10-5 Min-sum w/ extrinsic info scaling Scale factor κ=0.9 10-6 Sum-product 10-7 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 Eb/No in db

FER of 10 0 Different Decoding Algorithms 10-1 Code #1: MacKay s construction 2A AWGN channel BPSK modulation Min-sum 10-2 FER 10-3 10-4 Sum-product Min-sum w/ extrinsic info scaling Scale factor κ=0.9 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 Eb/No in db

Complexity of Turbo Decoding Consider the complexity of an efficiently implemented max-log-map decoding of the UMTS turbo code. **See: M.C. Valenti and J. Sun, The UMTS turbo code and an efficient decoder implementation suitable for software defined radios, Int. J. Wireless Info. Networs, vol. 8, no. 4, pp. 203-216, Oct. 2001. Forward Recursion. For each stage of the trellis, compute 2 2 = 4 branch metrics. This only requires 1 addition** Compute the pair of partial path metrics entering each node This requires 12 additions** Select from among the two branches entering each node. This requires 8 pairwise comparisons. Normalization Requires 7 subtractions** (subtraction has same complexity as addition) Thus the forward recursion requires (where is # info bits): 20 additions. 8 comparisons. 100/106

Complexity of Turbo Decoding Bacward Recursion Complexity is identical to forward recursion LLR Calculation: Lielihood of one: Compare 8 branches* Lielhood of zero: Compare 7 branches* So, 13 pairwise comparisons per trellis section. Subtract the two lielihoods Thus LLR Calculation requires: additions 13 comparisons Extra overhead: Need to subtract input from output LLR to get extrinsic info, and need to add extrinsic info to channel LLR. Amounts to an extra 3 additions / iteration.** 101/106

Summary: Complexity of Turbo Decoding Since each SISO decoder is executed twice per iteration, the per iteration decoding complexity of the UMTS turbo code is: 44 additions / iteration 39 pairwise comparisons / iteration where is the number of data bits If log-map decoding is used instead of max-log-map, then the 39 pairwise comparisons are replaced with max* operators. This neglects the extra overhead of detecting the data bits, implementing an adaptive stopping criterion, or scaling the extrinsic information. 102/106

Complexity of Min-Sum Decoding of LDPC Codes Let m i be the number of rows of H with weight i. Let n i be the number of columns of H with weight i. Update r: For a c-node of degree i, there will be i(i-2) xors and i(i-2) pairwise comparisons. Thus overall complexity of the update r stage is: i Update Q: r ji = α i' R j\ i For v-node of degree i, this requires i additions. So overall complexity of the update Q stage is: i' j min β i' R j\ i mii( i 2) xors and mii( i 2) pairwise comparisons Q i = λ + i i j C i r i' j ji i i n i additions 103/106

Complexity of Min-Sum Decoding of LDPC Codes Update q: q ij = Q i r ji This is a single subtraction at every branch leaving a v-node, and thus the complexity is also: n i i additions i And so the per iteration complexity of min-sum decoding of LDPC codes is: m i( i 2) xors i i m i( i 2) 2 i i i n i i pairwise comparisons additions This neglects the extra overhead of detecting the data bits, checing for errors, or scaling the extrinsic information. 104/106

Complexity of Sum-Product Decoding If sum-product decoding is used, then r ji = αi' j φ φ i' R j\ i i' R j\ i ( β ) i' j Thus every comparison operation is replaced with an addition. Complexity can be slightly reduced by first taing the sum of all φ( β) and then subtracting off the particular β i Also, there will now be two nonlinear φ function calls per iteration for every edge in the graph One for every β and another for every r. 105/106

Complexity Comparison Here we compare the complexity of the (15000, 4996) turbo code with the four (15000,5000) LDPC codes. Per iteration complexity. Overall, assuming 5 turbo iterations and 30 LDPC iterations. Code Per iteration complexity Overall Complexity additions comparisons* additions comparisons* Turbo 219,824 194,844 1,099,120 974,220 LDPC #1 (MacKay 2A) 80,000 80,000 2,400,000 2,400,000 LDPC #2 (R&U) 119,974 239,883 3,599,220 7,196,490 LDPC #3 (JWT) 109,084 190,878 3,272,520 5,726,340 LDPC #4 (extended IRA) 79,998 114,995 2,399,940 3,449,850 * For LDPC codes, one XOR is also required for every pairwise comparison. 106/106