Channel Coding for IEEE e Mobile WiMAX

Similar documents
PERFORMANCE EVALUATION OF WIMAX SYSTEM USING CONVOLUTIONAL PRODUCT CODE (CPC)

Contents Chapter 1: Introduction... 2

Notes 15: Concatenated Codes, Turbo Codes and Iterative Processing

Digital Television Lecture 5

Advanced channel coding : a good basis. Alexandre Giulietti, on behalf of the team

II. FRAME STRUCTURE In this section, we present the downlink frame structure of 3GPP LTE and WiMAX standards. Here, we consider

Performance comparison of convolutional and block turbo codes

C802.16a-02/76. IEEE Broadband Wireless Access Working Group <

Improved concatenated (RS-CC) for OFDM systems

Department of Electronic Engineering FINAL YEAR PROJECT REPORT

Chapter 3 Convolutional Codes and Trellis Coded Modulation

Decoding of Block Turbo Codes

AN INTRODUCTION TO ERROR CORRECTING CODES Part 2

A Survey of Advanced FEC Systems

ECE 6640 Digital Communications

Performance of Turbo Product Code in Wimax

TABLE OF CONTENTS CHAPTER TITLE PAGE

IEEE P Wireless Personal Area Networks

Serially Concatenated Coded Continuous Phase Modulation for Aeronautical Telemetry

Outline. Communications Engineering 1

Performance Analysis of n Wireless LAN Physical Layer

Performance Analysis of WiMAX Physical Layer Model using Various Techniques

ERROR CONTROL CODING From Theory to Practice

Digital Communications I: Modulation and Coding Course. Term Catharina Logothetis Lecture 12

International Journal of Computer Trends and Technology (IJCTT) Volume 40 Number 2 - October2016

Bridging the Gap Between Parallel and Serial Concatenated Codes

6. FUNDAMENTALS OF CHANNEL CODER

Turbo and LDPC Codes for Digital Video Broadcasting

Journal of Babylon University/Engineering Sciences/ No.(5)/ Vol.(25): 2017

Bit Error Rate Performance Evaluation of Various Modulation Techniques with Forward Error Correction Coding of WiMAX

A Novel Approach for FEC Decoding Based On the BP Algorithm in LTE and Wimax Systems

n Based on the decision rule Po- Ning Chapter Po- Ning Chapter

High-Rate Non-Binary Product Codes

Using TCM Techniques to Decrease BER Without Bandwidth Compromise. Using TCM Techniques to Decrease BER Without Bandwidth Compromise. nutaq.

FOR applications requiring high spectral efficiency, there

ISSN: Page 320

Turbo coding (CH 16)

Study of Turbo Coded OFDM over Fading Channel

Implementation of Extrinsic Information Transfer Charts

An Iterative Noncoherent Relay Receiver for the Two-way Relay Channel

ECE 6640 Digital Communications

UNIVERSITY OF SOUTHAMPTON

Hardware Accelerator for Duo-binary CTC decoding Algorithm Selection, HW/SW Partitioning and FPGA Implementation. Joakim Bjärmark Marco Strandberg

THE idea behind constellation shaping is that signals with

Study of turbo codes across space time spreading channel

SIMULATIONS OF ERROR CORRECTION CODES FOR DATA COMMUNICATION OVER POWER LINES

Recent Progress in Mobile Transmission

EE 435/535: Error Correcting Codes Project 1, Fall 2009: Extended Hamming Code. 1 Introduction. 2 Extended Hamming Code: Encoding. 1.

Turbo Codes for Pulse Position Modulation: Applying BCJR algorithm on PPM signals

TSTE17 System Design, CDIO. General project hints. Behavioral Model. General project hints, cont. Lecture 5. Required documents Modulation, cont.

Performance of Parallel Concatenated Convolutional Codes (PCCC) with BPSK in Nakagami Multipath M-Fading Channel

Discontinued IP. IEEE e CTC Decoder v4.0. Introduction. Features. Functional Description

UNIVERSITY OF MICHIGAN DEPARTMENT OF ELECTRICAL ENGINEERING : SYSTEMS EECS 555 DIGITAL COMMUNICATION THEORY

Physical Layer: Modulation, FEC. Wireless Networks: Guevara Noubir. S2001, COM3525 Wireless Networks Lecture 3, 1

Lab/Project Error Control Coding using LDPC Codes and HARQ

An Improved Rate Matching Method for DVB Systems Through Pilot Bit Insertion

Chapter 1 Coding for Reliable Digital Transmission and Storage

On the performance of Turbo Codes over UWB channels at low SNR

PROJECT 5: DESIGNING A VOICE MODEM. Instructor: Amir Asif

Convolutional Coding Using Booth Algorithm For Application in Wireless Communication

Performance of Nonuniform M-ary QAM Constellation on Nonlinear Channels

Physical-Layer Network Coding Using GF(q) Forward Error Correction Codes

Performance Analysis of Concatenated RS-CC Codes for WiMax System using QPSK

Diversity Techniques to combat fading in WiMAX

Comparative Analysis of Inter Satellite Links using Free Space Optical Communication with OOK and QPSK Modulation Techniques in Turbo Codes

EFFECTIVE CHANNEL CODING OF SERIALLY CONCATENATED ENCODERS AND CPM OVER AWGN AND RICIAN CHANNELS

Revision of Lecture Eleven

Comparison of BER for Various Digital Modulation Schemes in OFDM System

Rekha S.M, Manoj P.B. International Journal of Engineering and Advanced Technology (IJEAT) ISSN: , Volume-2, Issue-6, August 2013

DESIGN, IMPLEMENTATION AND OPTIMISATION OF 4X4 MIMO-OFDM TRANSMITTER FOR

ISSN: ISO 9001:2008 Certified International Journal of Engineering Science and Innovative Technology (IJESIT) Volume 2, Issue 4, July 2013

Spreading Codes and Characteristics. Error Correction Codes

A rate one half code for approaching the Shannon limit by 0.1dB

Mohammad Hossein Manshaei 1393

Single Error Correcting Codes (SECC) 6.02 Spring 2011 Lecture #9. Checking the parity. Using the Syndrome to Correct Errors

Analysis of WiMAX Physical Layer Using Spatial Multiplexing

Layered Space-Time Codes

Constellation Shaping for LDPC-Coded APSK

Lecture 12: Summary Advanced Digital Communications (EQ2410) 1

M4B-4. Concatenated RS-Convolutional Codes for Ultrawideband Multiband-OFDM. Nyembezi Nyirongo, Wasim Q. Malik, and David. J.

BER of OFDM system using concatenated forward error correcting codes (FEC) over Nakagami m fading channel

Performance of Turbo codec OFDM in Rayleigh fading channel for Wireless communication

Simulink Modeling of Convolutional Encoders

Multiple Input Multiple Output Dirty Paper Coding: System Design and Performance

Simulation of the Performance of IEEE WirelessMAN-OFDM PHY

Disclaimer. Primer. Agenda. previous work at the EIT Department, activities at Ericsson

Know your Algorithm! Architectural Trade-offs in the Implementation of a Viterbi Decoder. Matthias Kamuf,

Collaborative decoding in bandwidth-constrained environments

Error Control Codes. Tarmo Anttalainen

designing the inner codes Turbo decoding performance of the spectrally efficient RSCC codes is further evaluated in both the additive white Gaussian n

Master s Thesis Defense

Communications Theory and Engineering

The BICM Capacity of Coherent Continuous-Phase Frequency Shift Keying

Improvement Of Block Product Turbo Coding By Using A New Concept Of Soft Hamming Decoder

A physical layer simulator for WiMAX Marius Oltean 1, Maria Kovaci 1, Jamal Mountassir 2, Alexandru Isar 1, Petru Lazăr 2

: IEEE C802.16e-04/533r5. IEEE Broadband Wireless Access Working Group <

Open Access Concatenated RS-Convolutional Codes for Cooperative Wireless Communication

Master s Thesis Defense

CHAPTER 4 LINK ADAPTATION USING NEURAL NETWORK

TCM-coded OFDM assisted by ANN in Wireless Channels

Transcription:

Channel Coding for IEEE 80.16e Mobile WiMAX Matthew C. Valenti Lane Department of Computer Science and Electrical Engineering West Virginia University U.S.A. June 9 ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9Virginia 1 / Univer 94

Outline 1 Overview of (Mobile) WiMAX Convolutional Codes 3 Turbo Codes 4 Low-density Parity-check Codes 5 Conclusion ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9Virginia / Univer 94

Outline Overview of (Mobile) WiMAX 1 Overview of (Mobile) WiMAX Convolutional Codes 3 Turbo Codes 4 Low-density Parity-check Codes 5 Conclusion ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9Virginia 3 / Univer 94

Overview of (Mobile) WiMAX WiMAX and IEEE 80.16 IEEE 80.16 IEEE 80.16 is a family of standards for Wireless MAN s. Metropolitan area networks. Wireless at broadband speeds. Applications of IEEE 80.16 Wireless backhaul. Residential broadband. Cellular-like service. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9Virginia 4 / Univer 94

Progression of standards Overview of (Mobile) WiMAX WiMAX and IEEE 80.16 80.16 December 1. -66 GHz. Line-of-sight (LOS) only. Up to 134.4 Mbps operation using 8 MHz bandwidth. 80.16-4 June 4. Added - GHz non-los operation. Up to 75 Mbps operation using 15 MHz bandwidth. 80.16e-5 December 5. Added support for mobility. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9Virginia 5 / Univer 94

Overview of (Mobile) WiMAX WiMAX and IEEE 80.16 Key Technologies Advanced technologies supported by IEEE 80.16 OFDM and OFDMA. Adaptive modulation: QPSK, 16-QAM, or 64-QAM. Adaptive turbo and LDPC codes. Hybrid-ARQ MIMO: Space-time codes and spatial multiplexing. Time-division duplexing. Multiuser diversity. Partial frequency reuse. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9Virginia 6 / Univer 94

Overview of (Mobile) WiMAX WiMAX and IEEE 80.16 WiMAX Forum The WiMAX forum is an consortium of over 5 companies whose purpose is to commercialize systems based on IEEE 80.16 technology. The activities of the WiMAX forum include: Development of WiMAX system profiles. Certification of equipment. Standardization of higher-layer functionality., ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9Virginia 7 / Univer 94

Overview of (Mobile) WiMAX WiMAX and IEEE 80.16 WiMAX vs. mobile WiMAX WiMAX fixed system profile. OFDM PHY from IEEE 80.16-4. 56 OFDM subcarriers (fixed). 3.5 MHz bandwidth. mobile WiMAX mobility system profile. OFDMA PHY from IEEE 80.16e-4. 18 to,048 subcarriers (scalable). 1.5 to 0 MHz bandwidths ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9Virginia 8 / Univer 94

Overview of (Mobile) WiMAX Channel Coding Channel Codes Specified in IEEE 80.16e Four codes are specified in IEEE 80.16e. 1 Tailbiting convolutional code. Block turbo code (BTC). 3 Convolutional turbo code (CTC). 4 Low-density Parity-check (LDPC) code. The goal of the remainder of this tutorial is to describe each of these codes in detail. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9Virginia 9 / Univer 94

Outline Convolutional Codes 1 Overview of (Mobile) WiMAX Convolutional Codes 3 Turbo Codes 4 Low-density Parity-check Codes 5 Conclusion ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

Convolutional Codes Binary Linear Codes Code and Message Vectors A binary code C is a set of k codewords c i, 0 i < k. Each codeword is represented by a length n binary vector. Each codeword is associated with a unique message u i, 0 i < k, which is a length k binary vector. The code must define the mapping from messages to codewords u c. u message Encoder c codeword ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

Convolutional Codes Binary Linear Codes Linear codes. A code is linear if the modulo- sum of any two codewords is also a codeword. Mathematically, if c i C and c j C, then c i + c j C. Note that the addition is modulo-. Because c i + c i = 0, it follows that all linear codes must contain the all-zeros codeword. All codes considered in this tutorial are linear. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 1 / Univer 94

Encoding Convolutional Codes Convolutional Encoding A convolutional encoder is a device with k c inputs and n c outputs, where n c k c. The input message u is split into k c input streams u (i), 0 i k c 1 each of length k/k c. Similarly, the output codeword c is assembled from n c output streams c (j), 0 j n c 1 each of length n/n c. In this tutorial, 1 k c and 1 n c 4. u Separate Streams u (0)... u (k c -1) Convolutional Encoder c (0)... c (n c -1) Combine Streams c ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 13 / Univer 94

Convolutional Codes Convolutional Encoding Convolutional Encoding when k c = 1 Suppose there is one input stream, u (0) = u. Output stream c (j) is found by convolving the input stream with a generator sequence g (j) as follows: c (j) = u g (j) where the l th element of the output vector is c (j) l = m k=0 u l k g (j) k and the addition is modulo-. m is the memory of the encoder. ν = m + 1 is the constraint length. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 14 / Univer 94

Convolutional Codes Convolutional Encoding Encoder Diagram Let g (0) = [1] and g (1) = [1]. The encoder may be realized with the following structure: c (0) u D D c (1) ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 15 / Univer 94

Convolutional Codes State diagram representation Convolutional Encoding A convolutional encoder is a finite state machine, and can be represented in terms of a state diagram. Input data bit 1/ Corresponding output code bits S 1 = 1/ 0/ S 0 = 1/ 0/ S 3 = 1/ 0/ S = 0/ m = 4 total states ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 16 / Univer 94

Convolutional Codes Convolutional Encoding Initial and Terminating States The system needs a policy for choosing the initial and terminating states of the encoder. The usual convention is to start in the all-zeros state and then force the encoder to terminate in the all-zeros state. Termination in the all-zeros state requires a tail of m zeros. The tail results in a fractional-rate loss. Tailbiting convolutional codes operate such that the initial and terminating states are the same (but not necessarily all-zeros). Tailbiting codes don t require a tail and have no fractional-rate loss. More on tailbiting codes later... ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 17 / Univer 94

Trellis representation Convolutional Codes Convolutional Encoding A trellis is an expansion of the state diagram which explicitly shows the passage of time. Every branch corresponds to a particular data bit and -bits of the code word 1/ 1/ input and output bits for time L = 4 every sequence of input data bits corresponds to a unique path through the trellis S 3 0/ 0/ 0/ S 1/ 0/ 1/ 0/ 1/ 0/ 0/ S 1 S 0 1/ 1/ 1/ 0/ 1/ 0/ 0/ 0/ 0/ 0/ 0/ i = 0 i = 1 i = i = 3 i = 4 i = 5 i = 6 1/ 0/ 1/ 0/ 0/ initial final state new state after m = state first bit is encoded tail bits ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 18 / Univer 94

Convolutional Codes Encoding Using the Trellis Convolutional Encoding The trellis can be used to encode the message. Use message bits to determine path, then read off the code bits. u = [1 1 0 1] S 3 1/ 0/ 0/ 0/ S 1/ 0/ 1/ 0/ 1/ 0/ 0/ S 1 S 0 1/ 1/ 1/ 0/ 1/ 0/ 0/ 0/ 0/ 0/ 0/ i = 0 i = 1 i = i = 3 i = 4 i = 5 i = 6 1/ 0/ 1/ 0/ 0/ c = [1 1 1 0 1 0 0 0 0 1 1 1] ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 19 / Univer 94

Convolutional Codes Decoding The Viterbi Algorithm S 3 0/ S 1/ 0/ 0/ 1/ 0/ S 1 S 0 1/ 0/ 1/ The Viterbi algorithm is used for ML Decoding. Exploiting the recursive structure of the trellis minimizes complexity. Steps: A forward sweep through the trellis is performed. Each node holds a partial path metric. A branch metric is computed for each branch in the trellis. At each node, an add-compare-select operation is performed. Once the end of the trellis is reached, a traceback operation determines the value of the data bits. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 0 / Univer 94

Convolutional Codes Decoding Viterbi Algorithm: Example Suppose that the input to the convolutional encoder is: u = [ 1 1 0 1 0 0 ] Then the ouput of the encoder is: c = [ 1 1 1 0 1 0 0 0 0 1 1 1 ] Suppose every fourth bit is received in error: r = [ 1 1 1 1 1 0 0 1 0 1 1 0 ] Determine the most likely u given r. For clarity, we will assume hard-decision decoding. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 1 / Univer 94

Convolutional Codes Decoding r = [ 1 1 1 1 1 0 0 1 0 1 1 0 ] ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

Convolutional Codes Decoding 0 r = [ 1 1 1 1 1 0 0 1 0 1 1 0 ] ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

Convolutional Codes Decoding 0 0 r = [ 1 1 1 1 1 0 0 1 0 1 1 0 ] ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

Convolutional Codes Decoding 0 0 r = [ 1 1 1 1 1 0 0 1 0 1 1 0 ] ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

Convolutional Codes Decoding 0 0 0 r = [ 1 1 1 1 1 0 0 1 0 1 1 0 ] ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

Convolutional Codes Decoding 0 0 0 r = [ 1 1 1 1 1 0 0 1 0 1 1 0 ] ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

Convolutional Codes Decoding 1 1 0 0 0 0 r = [ 1 1 1 1 1 0 0 1 0 1 1 0 ] ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

Convolutional Codes Decoding 1 1 1 1 0 0 0 0 4 r = [ 1 1 1 1 1 0 0 1 0 1 1 0 ] ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

0 1 Convolutional Codes Decoding 1 0 1 1 1 0 0 1 1 0 0 1 0 4 1 r = [ 1 1 1 1 1 0 0 1 0 1 1 0 ] ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

0 1 Convolutional Codes Decoding 1 0 1 1 1 0 1 0 1 1 0 0 1 0 4 1 r = [ 1 1 1 1 1 0 0 1 0 1 1 0 ] ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

0 1 Convolutional Codes Decoding 1 0 0 1 1 1 0 1 0 0 1 1 1 1 0 0 1 1 0 4 1 1 r = [ 1 1 1 1 1 0 0 1 0 1 1 0 ] ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

0 1 Convolutional Codes Decoding 1 0 0 1 1 1 0 1 0 0 1 1 1 1 0 0 1 1 0 4 1 1 r = [ 1 1 1 1 1 0 0 1 0 1 1 0 ] ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

0 1 Convolutional Codes Decoding 1 0 0 1 1 1 0 1 0 0 0 1 1 1 1 1 0 0 1 1 0 4 1 1 1 r = [ 1 1 1 1 1 0 0 1 0 1 1 0 ] ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

0 1 Convolutional Codes Decoding 1 0 0 1 1 1 0 1 0 0 0 1 1 1 1 1 0 0 1 1 0 4 1 1 1 3 r = [ 1 1 1 1 1 0 0 1 0 1 1 0 ] ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

0 1 Convolutional Codes Decoding 1 0 0 1 1 1 0 1 0 0 0 1 1 1 1 1 1 0 0 1 1 0 4 1 1 1 3 1 r = [ 1 1 1 1 1 0 0 1 0 1 1 0 ] ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

0 1 Convolutional Codes Decoding 1 0 0 1 1 1 0 1 0 0 0 1 1 1 1 1 1 0 0 1 1 0 4 1 1 1 3 1 3 r = [ 1 1 1 1 1 0 0 1 0 1 1 0 ] ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

0 1 Convolutional Codes Decoding 1 1 0 0 3 r = [ 1 1 1 1 1 0 0 1 0 1 1 0 ] ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

0 1 Convolutional Codes Decoding 1 0 1 1 0 1 0 0 1 0 3 r = [ 1 1 1 1 1 0 0 1 0 1 1 0 ] ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia / Univer 94

Convolutional Codes Decoding Soft-decision Decoding Instead of using hard-decisions on the bits, soft-decisions could be used. Requires that the input to the decoder be a log-likelihood ratio (LLR) in the form: λ i = log P [c i = 1 r i ] P [c i = 0 r i ] For BPSK modulation in AWGN, the LLR is λ i = σ r i The branch metric for a particular state transition S j S l is: γ j,l = n c 1 i=0 c i λ i Goal is to maximize the metric, rather than minimize it. Thus, the ACS will select the larger branch instead of the smaller one. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 3 / Univer 94

Convolutional Codes CML The Coded Modulation Library CML is a software library for simulating coding and modulation. Developed by me and my students. Runs in matlab, though much is written in C. Supports all four codes decribed in this tutorial. Open source under the lesser GPL license. Download at www.iterativesolutions.com Extract files, open matlab, cd to./cml, and type CmlStartup ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 4 / Univer 94

Convolutional Codes CML Encoding a Convolutional Code in CML >> help ConvEncode ConvEncode encodes a NSC or RSC convolutional code with a tail. The calling syntax is: [output] = ConvEncode(input, g_encoder, [code_type] ) output = code word Required inputs: input = data word g_encoder = generator matrix for convolutional code (If RSC, then feedback polynomial is first) Optional inputs: code_type = 0 for recursive systematic convolutional (RSC) code (default) = 1 for non-systematic convolutional (NSC) code = for tail-biting NSC code Copyright (C) 5-8, Matthew C. Valenti ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 5 / Univer 94

Convolutional Codes CML Encoding a Convolutional Code in CML c (0) u D D c (1) >> g = [1 0 1 1 1 1]; % enter the generators >> data = [1 1 0 1]; % enter the data sequence >> c = ConvEncode( data, g, 1 ) % command to encode c = 1 1 1 0 1 0 0 0 0 1 1 1 Note that the 1 is required as a third argument to specify that this is a nonsystematic convolutional code and that the trellis is terminated with a tail. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 6 / Univer 94

Convolutional Codes CML Decoding a Convolutional Code in CML >> help ViterbiDecode ViterbiDecode performs soft-in/hard-out decoding for a convolutional code using the Viterbi algorithm The calling syntax is: [output_u] = ViterbiDecode( input_c, g_encoder, [code_type], [depth] ) output_u = hard decisions on the data bits (0 or 1) Required inputs: input_c = LLR of the code bits (based on channel observations) g_encoder = generator matrix for convolutional code (If RSC, then feedback polynomial is first) Optional inputs: code_type = 0 for recursive systematic convolutional (RSC) code (default) = 1 for non-systematic convolutional (NSC) code = for tail-biting NSC code depth = wrap depth used for tail-biting decoding default is 6 times the constraint length Copyright (C) 5-8, Matthew C. Valenti ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 7 / Univer 94

Convolutional Codes CML Decoding a Convolutional Code in CML >> s = *c-1; % BPSK modulate >> variance = 1/; % noise variance for Es/No = 0 db or Eb/No = 3 db >> noise = sqrt(variance)*randn(size(s)); % generate noise >> r = s + noise; % add noise to signal >> [s r ] % compare transmitted and received signals ans 1. 1. 1. -1. 1. -1. -1. -1. -1. 1. 1. 1. -0.5349 0.9581 0.854-0.5655 1.3590 0.1967-0.5819-1.4551-0.73 0.864 0.986 0.9659 >> llr = *r/variance; % compute the LLR >> dataout = ViterbiDecode( llr, g, 1 ) % pass through Viterbi decoder dataout = 1 1 0 1 The 1 is again required as a third argument to specify that this is a nonsystematic convolutional code and that the trellis is terminated with a tail. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 8 / Univer 94

The Tailbiting Concept Convolutional Codes Tailbiting Convolutional Codes The idea behind a tailbiting convolutional code is to equate the initial and terminating states The benefit is that there is no tail or fractional rate loss. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 9 / Univer 94

Convolutional Codes Tailbiting Convolutional Codes Encoding of Tailbiting Codes Example u = []. u D D c (0) c (1) Since the last two bits are, the final state is. To encode, determine final state from the last m bits, then set the initial state. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 30 / Univer 94

Convolutional Codes Encoding Using a Cyclic Prefix Tailbiting Convolutional Codes To encode, copy the last m data bits to the beginning of the message. 0 1 1 1 0 1 The bits were used only to determine the initial state, so don t transmit the associated code bits. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 31 / Univer 94

Convolutional Codes Tailbiting Convolutional Codes Decoding of Tailbiting Codes A tailbiting trellis can be visualized as a cylinder by connecting the starting and ending states. The Viterbi algorithm can be run on the cylinder. In theory, the algorithm would have to run forever by cycling around the cylinder. In practice, it is sufficient to limit the cycling around the cylinder. The wrap depth is the amount of trellis on the cylinder that is traversed more than once. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 3 / Univer 94

Wrap Depth Convolutional Codes Tailbiting Convolutional Codes Here, the wrap depth is ν = 3 trellis stages. c = [ ] Expand trellis by 3 sections before and after code sequence Append first 3 received pairs to end of sequence. Prepend last 3 received pairs to start of sequence. Assume all starting and ending states are equally likely. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 33 / Univer 94

Convolutional Codes Tailbiting Convolutional Codes Tailbiting Convolutional Code in CML Setting the third argument of ConvEncode and ViterbiDecode to indicates a tailbiting NSC code. >> g = [1 0 1 1 1 1]; % enter the generators >> data = [1 1 0 1]; % enter the data sequence >> c = ConvEncode( data, g, ) c = 1 0 0 1 1 0 0 0 >> s = *c-1; % BPSK modulate >> variance = 1/; % noise variance for Es/No = 0 db or Eb/No = 3 db >> noise = sqrt(variance)*randn(size(s)); % generate noise >> r = s + noise; % add noise to signal >> [s r ] % compare transmitted and received signals ans 1. -1. -1. 1. 1. -1. -1. -1. 1. -1.48-0.57-0.351 1.308-0.3667-0.4831-0.5914 >> llr = *r/variance; % compute the LLR >> dataout = ViterbiDecode( llr, g,, 6 ) % pass through Viterbi decoder dataout = 1 1 0 1 The fourth argument to ViterbiDecode is the wrap depth (in multiples of ν). ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 34 / Univer 94

64-QAM /3 j = 1 Convolutional Codes Tailbiting Convolutional Codes 64-QAM 3/4 j = 1 8.4.9..1 Convolutional coding (CC) The 80.16e Standard Tailbiting CC Each FEC block is encoded by the binary convolutional encoder, which shall have native rate of 1/, a constraint length equal to K = 7, and shall use the following generator polynomials codes to derive its two code bits: G 1 = 171 OCT FOR X G = 133 OCT FOR Y The generators are g (0) = [1] and g (1) = [0] The generator is depicted in Figure 55. X output (15) Data in 1 bit delay 1 bit delay 1 bit delay 1 bit delay 1 bit delay 1 bit delay Y output Figure 55 Convolutional encoder of rate 1/ Message length is 6 to 36 bytes, depending on mode of operation. 590 Copyright 4 IEEE. All rights reserved. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 35 / Univer 94

Puncturing Convolutional Codes Tailbiting Convolutional Codes AIR INTERFACE FOR FIXED BROADBAND WIRELESS ACCESS SYSTEMS IEEE Std 80.16-4 The data rate can be increased above 1/ by puncturing. Puncturing: Periodically deleting code bits. The puncturing patterns and serialization order that shall be used to realize different code rates are defined in Table 319. In the table, 1 means a transmitted bit and 0 denotes a removed bit, whereas X and Y are in reference At theto decoder, Figure 55. insert an erasure in the place of the punctured bit. For soft-decision decoding, an erasure is λ i = 0. Table 319 The inner convolutional code with puncturing configuration Code Rates Rate 1/ /3 3/4 5/6 d free 6 5 4 X 1 1 1 Y 1 0 0 XY X 1 Y 1 X 1 Y 1 Y X 1 Y 1 Y X 3 X 1 Y 1 Y X 3 Y 4 X 5 Each FEC block is encoded by a tail-biting convolutional encoder, which is achieved by initializing the encoders memory with the last data bits of the FEC block being encoded (the packet data bits numbered b n- 5...b n ). In the above table, 1 means transmit and 0 means delete. Puncturing is implemented in CML with the Puncture and Depuncture functions. Table 30 defines the basic sizes of the useful data payloads to be encoded in relation with the selected modulation type and encoding rate and concatenation rule. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 36 / Univer 94

Payload Sizes Convolutional Codes Tailbiting Convolutional Codes Each FEC block is encoded by a tail-biting convolutional encoder, which is achieved by initializing the encoders memory with the last data bits of the FEC block being encoded (the packet data bits numbered b n- 5...b n ). Table 30 defines the basic sizes of the useful data payloads to be encoded in relation with the selected modulation type and encoding rate and concatenation rule. Depending on the modulation and rate, different size payloads may be accommodated. Table 30 Useful data payload for a subchannel QPSK 16 QAM 64 QAM Encoding rate R=1/ R=3/4 R=1/ R=3/4 R=1/ R=/3 R=3/4 Data payload (bytes) 6 9 1 1 18 18 18 18 4 4 4 7 7 30 36 36 36 36 36 8.4.9.. Block Turbo Coding (optional) The BTC is based on the product of two simple component codes, which are binary extended Hamming codes or parity check codes from the set depicted in Table 31. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 37 / Univer 94

Convolutional Codes Tailbiting Convolutional Codes Influence of Wrap Depth (QPSK, r=1/, 6 byte payload) 0-1 - Rate 1/, QPSK, 6 Bytes, depth 0 Rate 1/, QPSK, 6 Bytes, depth 1 Rate 1/, QPSK, 6 Bytes, depth Rate 1/, QPSK, 6 Bytes, depth 3 Rate 1/, QPSK, 6 Bytes, depth 4 Rate 1/, QPSK, 6 Bytes, depth 5 Rate 1/, QPSK, 6 Bytes, depth 6 Rate 1/, QPSK, 6 Bytes, depth 7 Rate 1/, QPSK, 6 Bytes, depth 8 BER -3-4 -5-6 0 1 3 4 5 6 7 8 9 Eb/No in db CmlPlot( TailbitingScenarios, 1:9 ) ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 38 / Univer 94

Convolutional Codes Tailbiting Convolutional Codes Performance with QPSK (wrap depth 6ν) 0-1 Rate 1/, QPSK, 1 Bytes, depth 6 Rate 1/, QPSK, 18 Bytes, depth 6 Rate 1/, QPSK, 4 Bytes, depth 6 Rate 1/, QPSK, 30 Bytes, depth 6 Rate 1/, QPSK, 36 Bytes, depth 6 - BER -3-4 -5-6 0 0.5 1 1.5.5 3 3.5 4 4.5 Eb/No in db CmlPlot( TailbitingScenarios, :14 ) ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 39 / Univer 94

Convolutional Codes Tailbiting Convolutional Codes Performance with QAM (wrap depth 6ν) 0-1 Rate 1/, 16-QAM, 1 Bytes, depth 6 Rate 1/, 16-QAM, 4 Bytes, depth 6 Rate 1/, 16-QAM, 36 Bytes, depth 6 Rate 1/, 64-QAM, 18 Bytes, depth 6 Rate 1/, 64-QAM, 36 Bytes, depth 6 Rate /3, 64-QAM, 4 Bytes, depth 6 - BER -3-4 -5-6 0 4 6 8 1 14 Eb/No in db CmlPlot( TailbitingScenarios, 15:0 ) ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 40 / Univer 94

Convolutional Codes RSC Codes RSC Codes Turbo codes use recursive systematic convolutional (RSC) codes. An RSC may be constructed from a standard convolutional encoder by feeding back one of the outputs. c (1) u D D c (0) The feedback of one output allows one of the outputs to be the input, hence it is systematic. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 41 / Univer 94

Convolutional Codes RSC Codes RSC Codes Turbo codes use recursive systematic convolutional (RSC) codes. An RSC may be constructed from a standard convolutional encoder by feeding back one of the outputs. c (0) c (1) u D D The feedback of one output allows one of the outputs to be the input, hence it is systematic. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 41 / Univer 94

Convolutional Codes RSC Codes Trellis Termination for RSC Codes The usual convention is to start and end in the all-zeros state. However, this cannot necessarily be done with an all-zeros tail. c (0) c (1) u D D Throwing the switch down after the k data bits have been encoded creates a tail that will bring the encoder back into the all-zeros state. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 4 / Univer 94

Convolutional Codes RSC Codes Trellis Termination for RSC Codes The usual convention is to start and end in the all-zeros state. However, this cannot necessarily be done with an all-zeros tail. c (0) c (1) u D D Throwing the switch down after the k data bits have been encoded creates a tail that will bring the encoder back into the all-zeros state. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 4 / Univer 94

Trellis of an RSC code Convolutional Codes RSC Codes The trellis is identical to that of an NSC code, except that some input labels have been reversed. S 3 0/ 0/ 1/ 1/ 1/ S 1/ 0/ 1/ 0/ S 1 S 0 1/ 1/ 0/ 1/ 0/ 0/ 1/ 1/ 0/ 0/ 0/ 0/ 0/ 0/ i = 0 i = 1 i = i = 3 i = 4 i = 5 i = 6 1/ 1/ 0/ 1/ 1/ m = tail bits no longer all-zeros must be calculated by the encoder ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 43 / Univer 94

RSC Codes in CML Convolutional Codes RSC Codes Setting the third argument of ConvEncode and ViterbiDecode to 0 indicates an RSC code with terminated trellis. >> g = [1 0 1 1 1 1]; % enter the generators >> data = [1 1 0 1]; % enter the data sequence >> c = ConvEncode( data, g, 0 ) c = 1 1 1 0 0 1 1 0 1 1 0 0 >> s = *c-1; % BPSK modulate >> variance = 1/; % noise variance for Es/No = 0 db or Eb/No = 3 db >> noise = sqrt(variance)*randn(size(s)); % generate noise >> r = s + noise; % add noise to signal >> [s r ] % compare transmitted and received signals ans 1. 1. 1. -1. -1. 1. 1. -1. 1. 1. -1. -1. 0.7331 0.7908-0.0431-1.1655-0.916 1.6.007-1.48 1.4407 1.5650-0.3347-1.75 >> llr = *r/variance; % compute the LLR >> dataout = ViterbiDecode( llr, g, 0 ) % pass through Viterbi decoder dataout = 1 1 0 1 ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 44 / Univer 94

Convolutional Codes Soft-output Decoding SISO Decoding The Viterbi algorithm provides a hard output. With turbo codes, multiple decoders exchange soft information. Therefore, turbo decoders require the ability to obtain soft outputs from the constituent decoders. (u i ) (c i ) SISO Decoder (u i ) (c i ) A soft-input, soft-output (SISO) decoder updates the LLR s of the code bits and/or message bits by using knowledge of the underlying code structure. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 45 / Univer 94

Convolutional Codes Soft-output Decoding SISO Decoding Overview The SISO Decoder has three main steps: Forward sweep through trellis. Backward sweep through trellis. Update LLR. Because there are two sweeps, complexity is roughly twice that of Viterbi. The algorithm has several names: BCJR. MAP. APP. log-map. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 46 / Univer 94

Forward Sweep Convolutional Codes Soft-output Decoding i i,k k j,k j Sweep through the trellis, just as in the Viterbi algorithm. Instead of the ACS operation at each node, use: Where α k = max [(α i + γ i,k ), (α j + γ j,k )] max [x, y] = log(e x + e y ) = max[x, y] + log (1 + e y x ) } {{ } f c( y x ) ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 47 / Univer 94

Convolutional Codes The max-log-map algorithm Soft-output Decoding Note that may be approximated by max [x, y] = max[x, y] + f c ( y x ) max [x, y] max[x, y] If this approximation is used, the algorithm is called the max-log-map algorithm. The forward sweep is identical to the Viterbi algorithm. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 48 / Univer 94

Convolutional Codes Soft-output Decoding The Correction Function The max-star Operator 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 = 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. log-map 0.1 0-0.1 0 1 3 4 5 6 7 8 9 y-x ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 49 / Univer 94

Convolutional Codes Soft-output Decoding Reverse Sweep k k,i i k,j j Starting from the end of the trellis, sweep backwards to the start of the trellis. At each node, compute a metric β k = max [(β i + γ k,i ), (β j + γ k,j )] If the trellis is terminated with a tail, the initial conditions are: β 0 = 0 β i =, i > 0 ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 50 / Univer 94

Updating the LLR s Convolutional Codes Soft-output Decoding The log-likelihood of branch i j is 3 3,3 3 Λ(i j) = α i + γ i,j + β j 3, The log-likelihood that a message bit u is a 1,4 max {Λ(i j)} i j:u=1 The log-likelihood that a message bit u is a 0 1,0 1 max {Λ(i j)} i j:u=0 0 0,1 0,0 0 The output LLR is λ (u) = max {Λ(i j)} max {Λ(i j)} i j:u=1 i j:u=0 ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 51 / Univer 94

SISO Decoding in CML Convolutional Codes Soft-output Decoding Use SisoDecode instead of ViterbiDecode. >> help SisoDecode SisoDecode performs soft-in/soft-out decoding of a convolutional code. The calling syntax is: [output_u, output_c] = SisoDecode(input_u, input_c, g_encoder, [code_type], [dec_type] ) output_u = LLR of the data bits output_c = LLR of the code bits Required inputs: input_u = APP of the data bits input_c = APP of the code bits g_encoder = generator matrix for convolutional code (If RSC, then feedback polynomial is first) Optional inputs: code_type = 0 for RSC outer code (default) = 1 for NSC outer code dec_type = the decoder type: = 0 For linear approximation to log-map (DEFAULT) = 1 For max-log-map algorithm (i.e. max*(x,y) = max(x,y) ) = 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 (slow) ) Copyright (C) 5, Matthew C. Valenti ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 5 / Univer 94

SISO Decoding in CML Convolutional Codes Soft-output Decoding >> code_type = 0; % RSC code, set to 1 for NSC code. >> g = [1 0 1 1 1 1]; % enter the generators >> data = [1 1 0 1]; % enter the data sequence >> c = ConvEncode( data, g, code_type ) c = 1 1 1 0 0 1 1 0 1 1 0 0 >> s = *c-1; % BPSK modulate >> variance = 1/; % noise variance for Es/No = 0 db or Eb/No = 3 db >> noise = sqrt(variance)*randn(size(s)); % generate noise >> r = s + noise; % add noise to signal >> llr = *r/variance; % compute the LLR >> input_c = llr; % channel input >> input_u = zeros( length(data) ); % a priori information (used in turbo decoding) >> dec_type = 4; % this is the most accurate (but slowest) decoder type >> [output_u, output_c] = SisoDecode( input_u, input_c, g, code_type, dec_type ); >> output_u % now the output is soft output_u = 18.4795 3.8975-19.849.1813 >> [output_u > 0] % hard decision on the bits ans = 1 1 0 1 ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 53 / Univer 94

Outline Turbo Codes 1 Overview of (Mobile) WiMAX Convolutional Codes 3 Turbo Codes 4 Low-density Parity-check Codes 5 Conclusion ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 54 / Univer 94

Turbo Codes The Idea Behind Turbo Codes Introduction A turbo code is created by concatenating two or more constituent codes. The constituent codes can be convolutional or block codes. The encoder usually has some sort of interleaver to reorder the data at the input of the different encoders. At least one code should be recursive (e.g. RSC). Decoding is iterative There is a constituent decoder for each constituent code. The constituent decoders are SISO. The decoders exchange information after each iteration. Iterations proceed until either data is correct or a maximum number of iterations is reached. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 55 / Univer 94

Product Codes Turbo Codes n x Block Turbo Codes n n y Information Bits Checks k y n y B Q Informa Checks Checks on Checks Ch I x k x Place data into k y by k x matrix. Encode each row by a (n x, k x ) systematic code. Encode each column by a (n y, k y ) systematic code. Transmit the n x n y code bits. The BTC specified by IEEEE 80.16e is a product code. Figure 56 BTC and shortened BTC struc Table 3 gives the block sizes for the optional modulation and coding schem the code parameters for each of the possible data and coded block sizes. k x ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 56 / Univer 94

Turbo Codes Block Turbo Codes Cyclic Codes Block Turbo Codes use systematic cyclic codes. A code is cyclic if a cyclic shift of any codeword produces another valid codeword. Like convolutional codes, cyclic codes are produced by performing the discrete-time convolution of the message with a generator. Cyclic codes are specified by a degree m generator polynomial. Cyclic codes used in 80.16 Hamming, n = m 1. Single parity check (SPC), g(x) = 1 + X and n = anything. Extended Hamming: g(x) = g Hamming (X)g SP C (X) and n = m. k = n m. Example Hamming code. g(x) = 1 + X + X 3. g = []. m = 3, n = m 1 = 7, k = n m = 4. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 57 / Univer 94

Turbo Codes Block Turbo Codes Encoding Cyclic Codes Convolving the length k message with the length ν = m + 1 generator results in a length n = k + ν 1 = k + m codeword. The codeword may be generated using a rate-1 convolutional encoder. The trellis must be terminated with a tail of m zeros. u D D D c ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 58 / Univer 94

Turbo Codes State Diagram of a Cyclic Code Block Turbo Codes 1/0 1/1 1 0/1 1/1 0 1/0 0/0 0 1/0 0 1/1 1 0/1 1 1/1 0/0 0/1 1 0/0 1/0 0 0/0 0/1 ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 59 / Univer 94

Turbo Codes Block Turbo Codes Systematic Cyclic Codes BTC use systematic cyclic codes. Just like an RSC, the code can be made systematic by feeding the output back to the input. As with an RSC, the trellis is terminated by a tail of m bits, not necessarily zeros. u D D D c ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 60 / Univer 94

Turbo Codes Block Turbo Codes Systematic Cyclic Codes BTC use systematic cyclic codes. Just like an RSC, the code can be made systematic by feeding the output back to the input. As with an RSC, the trellis is terminated by a tail of m bits, not necessarily zeros. c u D D D ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 60 / Univer 94

Turbo Codes Block Turbo Codes State Diagram of a Systematic Cyclic Code 0/0 1/1 1 1/1 1/1 0 0/0 0/0 0 0/0 0 1/1 1 1/1 1 1/1 0/0 1/1 1 0/0 0/0 0 0/0 1/1 ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 61 / Univer 94

Turbo Codes Block Turbo Codes Encoder Block Diagram u o Outer (Row) Encoder c o Block Interleaver u i Inner (Column) Encoder c i The outer encoder produces k y row codewords. Each row codeword written into the rows of the block interleaver. Information read from each column of the block interleaver. The inner encoder produces n x column codewords. The column codewords are transmitted over the channel. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 6 / Univer 94

Turbo Codes Block Turbo Codes Decoder Block Diagram u o Outer (Row) Encoder c o Block Interleaver u i Inner (Column) Encoder c i Initially, pass soft outputs from outer decoder to inner decoder. The deinterleaver reverses the action of the interleaver. Make a hard decision on λ (u o ). If data is incorrect, feed back soft-info from inner to outer decoder. To prevent positive feedback, subtract input from output so that it is actually extrinsic information that gets fed back. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 63 / Univer 94

Turbo Codes Block Turbo Codes Decoder Block Diagram (u o ) Outer Siso Decoder (c 0 ) Deinterl. (u i ) Inner Siso Decoder (c i ) Initially, pass soft outputs from outer decoder to inner decoder. The deinterleaver reverses the action of the interleaver. Make a hard decision on λ (u o ). If data is incorrect, feed back soft-info from inner to outer decoder. To prevent positive feedback, subtract input from output so that it is actually extrinsic information that gets fed back. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 63 / Univer 94

Decoder Block Diagram Turbo Codes Block Turbo Codes (u o ) (c 0 ) Outer Siso Decoder (c 0 ) Deinterl. (u i ) (u i ) Inner Siso Decoder (c i ) Interl. Initially, pass soft outputs from outer decoder to inner decoder. The deinterleaver reverses the action of the interleaver. Make a hard decision on λ (u o ). If data is incorrect, feed back soft-info from inner to outer decoder. To prevent positive feedback, subtract input from output so that it is actually extrinsic information that gets fed back. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 63 / Univer 94

Decoder Block Diagram Turbo Codes Block Turbo Codes (u o ) (c 0 ) Outer Siso Decoder (c 0 ) Deinterl. (u i ) (u i ) Inner Siso Decoder (c i ) Interl. Initially, pass soft outputs from outer decoder to inner decoder. The deinterleaver reverses the action of the interleaver. Make a hard decision on λ (u o ). If data is incorrect, feed back soft-info from inner to outer decoder. To prevent positive feedback, subtract input from output so that it is actually extrinsic information that gets fed back. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 63 / Univer 94

Turbo Codes Block Turbo Codes Constituent Codes Used by 80.16e The constituent block codes may be generated using the following polynomials: Generator polynomial Generator vector Shorthand 1 + X [] g1 1 + X + X 4 + X 5 [] g5 1 + X + X + X 3 + X 5 + X 6 [0] g6 1 + X + X 6 + X 7 [] g7 Generator 1 + X is a single-parity check (SPC) code. The other three generators are extended Hamming codes. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 64 / Univer 94

Turbo Codes Block Turbo Codes Shortened Block Structure ESS SYSTEMS IEEE Std 80.16-4 Instead of a standard product code structure, the following structure is used to match the codeword size to the OFDM symbol size: n x I y n y B Q Information Bits Checks k y Data size is (k y I y)(k x I x) (B + Q) bits. Pre-pad input with (B + Q) zeros. Checks Checks on Checks Delete the B zeros prior to transmission. I x k x ortened BTC structure ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 65 / Univer 94

Turbo Codes Block Turbo Codes BTC Encoder >> help BtcEncode BTCEncode encodes a data sequence using a block turbo encoder. The calling syntax is: codeword = BtcEncode( data, grows, gcols, k_per_row, k_per_col, B, Q ) codeword = the codeword generated by the encoder, data = the row vector of data bits grows = the generator used to encode the rows gcols = the generator used to encode the columns k_per_row = number of data bits per row k_per_col = number of data bits per column B = number of zeros padded before data but not transmitted Q = number of zeros padded before data and transmitted Copyright (C) 8, Matthew C. Valenti and Sushma Mamidipaka k per row = k x I x. k per col = k y I y. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 66 / Univer 94

Turbo Codes Block Turbo Codes BTC Parameters Code bytes Data bytes grows gcols k per row k per col B Q 1 6 g1 g6 3 18 0 6 1 9 g1 g1 9 9 4 5 4 1 g1 g5 17 6 6 0 4 0 g1 g1 13 13 4 5 36 18 g1 g5 6 6 9 3 36 5 g1 g7 5 41 0 5 48 3 g6 g5 9 8 6 48 35 g6 g1 6 0 6 60 31 g6 g6 16 16 4 4 7 40 g6 g6 18 18 0 4 ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 67 / Univer 94

BTC Decoder Turbo Codes Block Turbo Codes >> help BtcDecode BTCEncode decodes a block turbo code The calling syntax is: [detected_data, errors] = BTCDecode( symbol_likelihood, data, grows, gcols, k_per_row,... k_per_col, B, Q, max_iterations, decoder_type ) detected_data = a row vector containing hard decisions on the detected data errors = a column vector containing the number of errors per iteration symbol_likelihood = the decoder input, in the form of bit LLRs data = the row vector of data bits (used to count errors and for early halting of iterative decoding) grows = the generator used to encode the rows gcols = the generator used to encode the columns k_per_row = number of data bits per row k_per_col = number of data bits per column B = number of zeros padded before data but not transmitted Q = number of zeros padded before data and transmitted max_iterations = the number of turbo iterations decoder_type = the decoder type = 0 For linear-log-map algorithm, i.e. correction function is a straght line. = 1 For max-log-map algorithm (i.e. max*(x,y) = max(x,y) ), i.e. correction function = 0. = For Constant-log-MAP algorithm, i.e. correction function is a constant. = 3 For log-map, correction factor from small nonuniform table and interpolation. = 4 For log-map, correction factor uses C function calls. Copyright (C) 8, Matthew C. Valenti and Sushma Mamidipaka ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 68 / Univer 94

Turbo Codes Block Turbo Codes BTC in CML Code bytes Data bytes grows gcols k per row k per col B Q 36 18 g1 g5 6 6 9 3 >> grows = [1 1]; >> gcols = [1 0 1 0 1 1]; >> k_per_row = 6; >> k_per_col = 6; >> B=9; >> Q=3; >> data = round(rand(1,144)); % 18 data bytes >> c = BtcEncode( data, grows, gcols, k_per_row, k_per_col, B, Q ); >> s = *c-1; >> variance = 1; >> noise = sqrt(variance)*randn(size(c)); >> r = s + noise; >> llr = *r/variance; >> [out,errors] = BtcDecode( llr, data, grows, gcols, k_per_row, k_per_col, B, Q, 6, 4 ); >> errors errors = 1 0 0 After the fifth iteration, the data is correct. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 69 / Univer 94

Turbo Codes Block Turbo Codes Influence of the Number of Iterations 0-1 Student Version of MATLAB (7,40) BTC in AWGN, log-map - BER -3-4 -5-6 0 0.5 1 1.5.5 3 3.5 4 4.5 5 Eb/No in db CmlPlot( BtcScenarios, ) ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 70 / Univer 94

Mamidipaka Turbo Codes Performance of BTC in AWGN Chapter 5. Results and Conclusion Block Turbo Codes 0-1 - (1,6) BTC in AWGN, log-map (1,9) BTC in AWGN, log-map (4,1) BTC in AWGN, log-map (4,0) BTC in AWGN, log-map (36,18) BTC in AWGN, log-map (36,5) BTC in AWGN, log-map (48,3) BTC in AWGN, log-map (48,35) BTC in AWGN, log-map (60,31) BTC in AWGN, log-map (7,40) BTC in AWGN, log-map BER -3-4 -5-6 0 1 3 4 5 6 7 8 Eb/No in db CmlPlot( BtcScenarios, 1: ) ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 71 / Univer 94

Turbo Codes Convolutional Turbo Codes Serially Concatenated Codes u o Outer (Row) Encoder c o Block Interleaver u i Inner (Column) Encoder c i Inner and outer codes need not be cyclic codes. For instance, they could be convolutional codes. Instead of one codeword per row or column, the inner and outer encoders could each produce one long codeword. The interleaver need not be a block interleaver. Instead, a pseudo-random interleaver could be used. The decoder is identical to the one shown earlier. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 7 / Univer 94

Turbo Codes Convolutional Turbo Codes Serially Concatenated Codes u o Outer Encoder c o Interleaver u i Inner Encoder c i Inner and outer codes need not be cyclic codes. For instance, they could be convolutional codes. Instead of one codeword per row or column, the inner and outer encoders could each produce one long codeword. The interleaver need not be a block interleaver. Instead, a pseudo-random interleaver could be used. The decoder is identical to the one shown earlier. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 7 / Univer 94

Turbo Codes Convolutional Turbo Codes AIR INTERFACE FOR FIXED BROADBAND WIRELESS ACCESS SYSTEMS IEEE Std 80.16-4 Parallel Concatenated Codes n x n x I y n y Information Bits Checks k y n y u B u u Upper Encoder Q Information Bits c u k y Checks Combine c Checks Checks on Checks Interl. u l Lower Encoder Checks c l Checks on Checks I x k x k x If the double-parity Figure 56 BTC (checks and on shortened checks) BTC component structure is punctured, then encoding could be done in parallel. Table 3 gives the block sizes for the optional modulation and coding schemes using BTC. Table 33 gives Convolutional turbo codes are parallel concatenated codes with the code parameters for each of the possible data and coded block sizes. convolutional constituent codes. Table 3 Useful data payload for a subchannel ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 73 / Univer 94

Turbo Codes Convolutional Turbo Codes CTC Decoder The serial decoder could be used by setting λ(c) = 0 in the positions of the double-parity bits. A more efficient alternative is as follows: Deinterl. (u u ) (c) Separate (c u ) Upper Decoder (u l ) Interl. (c l ) (u l ) Lower Decoder (u l ) ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 74 / Univer 94

Turbo Codes CTC Encoder Used by 80.16e Convolutional Turbo Codes ACE FOR FIXED BROADBAND WIRELESS ACCESS SYSTEMS IEEE Std 80.16-4 The CTC specified in IEEE 80.16e uses the following constituent encoder: A B A B 1 Constituent CTC encoder Interleaver switch + S 1 + S + S 3 + Constituent encoder Figure 57 CTC encoder + C 1 C Y 1 W 1 Y W Parity part Systematic part Key features: The code is duo-binary (rate /4). Tailbiting is used to force starting and ending states to be the same. Encoder operation: With switch up, encode the data in its natural order. Throw switch down and encode the interleaved data. Puncturing can be used to increase rate above 1/. ncoder (after initialization by the circulation state Sc 1, see 8.4.9..3.3) is fed the sequence in the er (position 1) with the incremental address i = 0.. N 1. This first encoding is called C 1 encoding. ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 75 / Univer 94

Turbo Codes Convolutional Turbo Codes CTC parameters QPSK Rate 1/ with data block size: 6, 1, 18, 4, 30, 36, 48, 54, 60 bytes Rate 3/4 with data block size: 9, 18, 7, 36, 45, 54 bytes 16-QAM Rate 1/ with data block size: 1, 4, 36, 48, 60 bytes Rate 3/4 with data block size: 18, 36, 54 bytes 64-QAM Rate 1/ with data block size: 36, 54 bytes Rate /3 with data block size: 4, 48 bytes Rate 3/4 with data block size: 7, 54 bytes Rate 5/6 with data block size: 30, 60 bytes ( Lane Department Coding for ofwimax Computer Science and Electrical Engineering JuneWest 9 Virginia 76 / Univer 94