x n k m(x) ) Codewords can be characterized by (and errors detected by): c(x) mod g(x) = 0 c(x)h(x) = 0 mod (x n 1)

Similar documents
Cyclic codes: overview

B. Cyclic Codes. Primitive polynomials are the generator polynomials of cyclic codes.

Objective: To become acquainted with the basic concepts of cyclic codes and some aspects of encoder implementations for them.

Coding Theory and Applications. Solved Exercises and Problems of Cyclic Codes. Enes Pasalic University of Primorska Koper, 2013

Error Correction Review

ECEN 604: Channel Coding for Communications

EE512: Error Control Coding

G Solution (10 points) Using elementary row operations, we transform the original generator matrix as follows.

Cyclic codes. Vahid Meghdadi Reference: Error Correction Coding by Todd K. Moon. February 2008

Fundamental Theorem of Algebra

Cyclic Codes. Saravanan Vijayakumaran August 26, Department of Electrical Engineering Indian Institute of Technology Bombay

Fault Tolerance & Reliability CDA Chapter 2 Cyclic Polynomial Codes

Error Detection & Correction

EE512: Error Control Coding

Chapter 5. Cyclic Codes

7.1 Definitions and Generator Polynomials

Information Theory. Lecture 7

3. Coding theory 3.1. Basic concepts

Linear Cyclic Codes. Polynomial Word 1 + x + x x 4 + x 5 + x x + x

Vector spaces. EE 387, Notes 8, Handout #12

Chapter 6. BCH Codes

Information redundancy

Linear Cyclic Codes. Polynomial Word 1 + x + x x 4 + x 5 + x x + x f(x) = q(x)h(x) + r(x),

The BCH Bound. Background. Parity Check Matrix for BCH Code. Minimum Distance of Cyclic Codes

ELEC 519A Selected Topics in Digital Communications: Information Theory. Hamming Codes and Bounds on Codes

Generator Matrix. Theorem 6: If the generator polynomial g(x) of C has degree n-k then C is an [n,k]-cyclic code. If g(x) = a 0. a 1 a n k 1.

Chapter 6 Reed-Solomon Codes. 6.1 Finite Field Algebra 6.2 Reed-Solomon Codes 6.3 Syndrome Based Decoding 6.4 Curve-Fitting Based Decoding

5.0 BCH and Reed-Solomon Codes 5.1 Introduction

Binary Primitive BCH Codes. Decoding of the BCH Codes. Implementation of Galois Field Arithmetic. Implementation of Error Correction


Implementation of Galois Field Arithmetic. Nonbinary BCH Codes and Reed-Solomon Codes

Know the meaning of the basic concepts: ring, field, characteristic of a ring, the ring of polynomials R[x].

Outline. MSRI-UP 2009 Coding Theory Seminar, Week 2. The definition. Link to polynomials

Algebra for error control codes

New Algebraic Decoding of (17,9,5) Quadratic Residue Code by using Inverse Free Berlekamp-Massey Algorithm (IFBM)

Rings. EE 387, Notes 7, Handout #10

Information Redundancy: Coding

ERROR CORRECTING CODES

EE 229B ERROR CONTROL CODING Spring 2005

Solutions of Exam Coding Theory (2MMC30), 23 June (1.a) Consider the 4 4 matrices as words in F 16

A 2-error Correcting Code

Part III. Cyclic codes

1 Vandermonde matrices

GF(2 m ) arithmetic: summary

Physical Layer and Coding

MATH3302 Coding Theory Problem Set The following ISBN was received with a smudge. What is the missing digit? x9139 9

Cyclic Redundancy Check Codes

The Golay codes. Mario de Boer and Ruud Pellikaan

Fault Tolerant Computing CS 530 Information redundancy: Coding theory. Yashwant K. Malaiya Colorado State University

EECS Components and Design Techniques for Digital Systems. Lec 26 CRCs, LFSRs (and a little power)

EE512: Error Control Coding

ECE8771 Information Theory & Coding for Digital Communications Villanova University ECE Department Prof. Kevin M. Buckley Lecture Set 2 Block Codes

A Brief Encounter with Linear Codes

Rings in Coding Theory

EE 229B ERROR CONTROL CODING Spring 2005

ELG 5372 Error Control Coding. Lecture 12: Ideals in Rings and Algebraic Description of Cyclic Codes

ELEC3227/4247 Mid term Quiz2 Solution with explanation

6.1.1 What is channel coding and why do we use it?

Coding Theory: Linear-Error Correcting Codes Anna Dovzhik Math 420: Advanced Linear Algebra Spring 2014

1. How many errors may be detected (not necessarily corrected) if a code has a Hamming Distance of 6?

Solutions or answers to Final exam in Error Control Coding, October 24, G eqv = ( 1+D, 1+D + D 2)

Solutions to problems from Chapter 3

ECE 4450:427/527 - Computer Networks Spring 2017

Chapter 7. Error Control Coding. 7.1 Historical background. Mikael Olofsson 2005

CYCLIC SIEVING FOR CYCLIC CODES

Cyclic Codes. Chapter Basics

Error Correction Methods

: Coding Theory. Notes by Assoc. Prof. Dr. Patanee Udomkavanich October 30, upattane

MATH 433 Applied Algebra Lecture 21: Linear codes (continued). Classification of groups.

Chapter 3 Linear Block Codes

Linear Feedback Shift Registers

Communications II Lecture 9: Error Correction Coding. Professor Kin K. Leung EEE and Computing Departments Imperial College London Copyright reserved

The Pennsylvania State University. The Graduate School. Department of Computer Science and Engineering

: Error Correcting Codes. November 2017 Lecture 2

Cyclic Codes from the Two-Prime Sequences

New algebraic decoding method for the (41, 21,9) quadratic residue code

Making Error Correcting Codes Work for Flash Memory

Section IV.23. Factorizations of Polynomials over a Field

CONSTRUCTION OF QUASI-CYCLIC CODES

Math 512 Syllabus Spring 2017, LIU Post

Optical Storage Technology. Error Correction

SIDDHARTH GROUP OF INSTITUTIONS :: PUTTUR Siddharth Nagar, Narayanavanam Road UNIT I

Linear Feedback Shift Registers (LFSRs) 4-bit LFSR

Lecture 12. Block Diagram

Optimum Soft Decision Decoding of Linear Block Codes

MATH32031: Coding Theory Part 15: Summary

Error Correction and Trellis Coding

A Proposed Quantum Low Density Parity Check Code

Codes over Subfields. Chapter Basics

On the Construction and Decoding of Cyclic LDPC Codes

Part I. Cyclic codes and channel codes. CODING, CRYPTOGRAPHY and CRYPTOGRAPHIC PROTOCOLS

A family Of Cyclic Codes Over Finite Chain Rings

ELEC 405/ELEC 511 Error Control Coding. Hamming Codes and Bounds on Codes

16.36 Communication Systems Engineering

RON M. ROTH * GADIEL SEROUSSI **

Outline. EECS Components and Design Techniques for Digital Systems. Lec 18 Error Coding. In the real world. Our beautiful digital world.

Hamming Codes 11/17/04

MATH/MTHE 406 Homework Assignment 2 due date: October 17, 2016

ELEC-E7240 Coding Methods L (5 cr)

Design and Implementation of Reed-Solomon Decoder using Decomposed Inversion less Berlekamp-Massey Algorithm by

Transcription:

Cyclic codes: review EE 387, Notes 15, Handout #26 A cyclic code is a LBC such that every cyclic shift of a codeword is a codeword. A cyclic code has generator polynomial g(x) that is a divisor of every codeword. The generator polynomial is a divisor of x n 1, where n is blocklength. The parity-check polynomial is h(x) = xn 1 g(x). Codewords can be generated by: nonsystematic: m(x) m(x)g(x) systematic: m(x) x n k m(x) R g(x) ( x n k m(x) ) Codewords can be characterized by (and errors detected by): c(x) mod g(x) = 0 c(x)h(x) = 0 mod (x n 1) EE 387, October 28, 2015 Notes 15, Page 1

Examples of binary cyclic codes Example: Over GF(2) the cyclic polynomial of degree 6 can be factored as x 6 1 = (x 3 ±1) 2 = (x+1) 2 (x 2 +x+1) 2. The binary cyclic codes of blocklength 6 have generator polynomials (x+1) i (x 2 +x+1) j, 0 i 2, 0 j 2 None of these 9 cyclic codes is interesting poor minimum distance. Example: Over GF(2), x 7 1 = (x+1)(x 3 +x+1)(x 3 +x 2 +1). There are 2 3 = 8 divisors x 7 1 and thus 8 cyclic codes of blocklength 7. Primitive polynomial yields cyclic Hamming code; e.g., g(x) = x 3 +x+1. G = = H = 1 1 0 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 0 1 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1 The dual code has generator matrix H, the (7, 3) maximum-length code. All nonzero codewords have the same weight, 2 m 1 = 4. EE 387, October 28, 2015 Notes 15, Page 2

Cyclic codes of blocklength 15 Over GF(2) the cyclic polynomial x 15 1 has five distinct prime factors: x 15 1 = (x+1)(x 2 +x+1) (x 4 +x+1)(x 4 +x 3 +1)(x 4 +x 3 +x 2 +x+1) There are 2 5 cyclic codes. Some of the more useful generator polynomials: (x 4 +x+1) (15,11) binary cyclic Hamming (x 4 +x+1)(x 4 +x 3 +x 2 +x+1) (15,7) 2-error-correcting BCH (x 4 +x+1)(x 4 +x 3 +x 2 +x+1)(x 2 +x+1) (15,5) 3EC BCH (x 4 +x+1)(x 4 +x 3 +x 2 +x+1)(x 2 +x+1)(x+1) (15,4) maximum-length These codes, with d = 3, 5, 7, 8, are obtained by expurgation. Weight distributions of blocklength 15 cyclic codes 1 0 0 35 105 168 280 435 435 280 168 105 35 0 0 1 1 0 0 0 0 18 30 15 15 30 18 0 0 0 0 1 1 0 0 0 0 0 0 15 15 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 15 0 0 0 0 0 0 0 EE 387, October 28, 2015 Notes 15, Page 3

Equivalent codes The cyclic (7,4) Hamming code is different from earlier (7,4) Hamming code; check bits are in positions 1,2,3 instead of 1,2,4. 1 0 1 0 1 0 1 1 0 0 1 0 1 1 H old = 0 1 1 0 0 1 1 H cyclic = 0 1 0 1 1 1 0 0 0 0 1 1 1 1 0 0 1 0 1 1 1 Definition: Two block codes that are the same except for a permutation of the symbol positions are called equivalent. Equivalent codes have same weight distribution and minimum weight. Not every linear block code is systematic. Consider this generator matrix: [ ] 1 1 0 0 G = 0 0 1 1 Every linear block code is equivalent to a linear block code that has a systematic generator matrix G = [P I] (or G = [I P ]). EE 387, October 28, 2015 Notes 15, Page 4

Parity-check polynomial The parity-check polynomial of cyclic code with generator polynomial g(x) is h(x) = xn 1. g(x) The degree of the parity-check polynomial is n (n k) = k. Parity-check polynomial defines a relation satisfied by all codewords: c(x)h(x) = m(x)g(x)h(x) = m(x)(x n 1) = x n m(x) m(x) = 0 mod (x n 1) = (0,...,0,m 0,...,m k 1 ) (m 0,...,m k 1,0,...,0) Therefore coefficients of x i in c(x)h(x) are 0 for i = k,...,n 1. This corresponds to n k check equations: x k = 0 = c 0 h k + c 1 h k 1 + + c k 1 h 1 + c k h 0 x k+1 = 0 = c 1 h k + c 2 h k 1 + + c k h 1 + c k+1 h 0.. x n 1 = 0 = c n k 1 h k + c n k h k 1 + + c n 2 h 1 + c n 1 h 0 EE 387, October 28, 2015 Notes 15, Page 5

Parity-check matrix: nonsystematic The n k check equations obtained from c(x)h(x) = 0 mod (x n 1) correspond to a nonsystematic parity-check matrix: c 0 c 1 c k 1 c k c k+1 c k+2 c n 1 h k h k 1 h 1 h 0 0 0 0 h R (x) 0 h k h k 1 h 1 h 0 0 0 xh R (x). H 1 =................... =. 0 0 h k h k 1 h 1 h 0 0 x n k 2 h R (x) 0 0 0 h k h k 1 h 1 h 0 x n k 1 h R (x) This matrix has the same form as the nonsystematic generator matrix. The rows of H 1 are shifts of the reverse of h(x). h R (x) = h k +h k 1 x+ +h 1 x k 1 +h 0 x k. Since h(x) is also a divisor of x n 1, it generates an (n,n k) cyclic code. EE 387, October 28, 2015 Notes 15, Page 6

Parity-check matrix: nonsystematic (cont.) Since h R (x) = x k h(x 1 ), zeroes of h R (x) are reciprocals of zeroes of h(x). Thus h R (x) is also called the reciprocal polynomial. The equation g R (x)h R (x) = (g(x)h(x)) R shows that h R (x) is a divisor of x n 1. = (x n 1) R = 1 x n = (x n 1) Parity-check matrix H 1 has the form of a nonsystematic generator matrix. Rows of H 1 are shifts of the reversal polynomial h R (x). Thus h 1 0 hr (x) generates a cyclic code. The cyclic code generated by h(x) consists of the reversals of the dual of the cyclic code generated by g(x). EE 387, October 28, 2015 Notes 15, Page 7

Syndrome circuit #1 Syndrome computation circuit corresponding to H 1 multiplies by the fixed polynomial h(x). r(x)h(x) h 4 h 3 h 2 h 1 h 0 r(x) This circuit convolves input sequence r 0,r 1,...,r n 1 with parity-check polynomial coefficient sequence h 0,h 1,...,h k. Since degr(x) n 1, the product r(x)h(x) has degree n 1+k. Only n k of the n+k coefficients of r(x)h(x) are used as the syndrome. The syndrome consists of the coefficients of x k,...,x n 1 in r(x)h(x). These are generated after r n 1,...,r n k have been shifted into the register. EE 387, October 28, 2015 Notes 15, Page 8

Syndrome polynomial We can obtain the systematic parity-check matrix from the systematic generator matrix using the general approach: G = [P I] = H = [I P T ] Direct construction: define syndrome polynomial to be the remainder of division by generator polynomial: s(x) = r(x) mod g(x) = s 0 +s 1 x+ +s n k 1 x n k 1 Every codeword is a multiple of g(x), so codewords have syndrome 0. Thus s(x) = r(x) mod g(x) = (c(x)+e(x)) mod g(x) = c(x) mod g(x)+e(x) mod g(x) = e(x) mod g(x) The remainder function is linear in the dividend r(x). Therefore remainders of all n-tuples are linear combinations of x i mod g(x) (i = 0,1,...,n 1) EE 387, October 28, 2015 Notes 15, Page 9

Parity-check matrix: systematic Polynomial syndrome s(x) corresponds to systematic parity-check matrix: T 1 x. H 2 = x n k 1 = x n k mod g(x).. x n 1 mod g(x) 1 0 0 s [n k] 0 s [n 2] 0 s [n 1] 0 0 1 0 s [n k] 1 s [n 2] 1 s [n 1] 1.......... 0 0 1 s [n k] n k 1 s[n 2] n k 1 s[n 1] n k 1 Column i of H 2 is syndrome of x i, consists of coefficients of x i mod g(x). Special case: column n k consists of coefficients of g(x) except x n k. Column i is obtained from column i 1 by a linear feedback shift.. EE 387, October 28, 2015 Notes 15, Page 10

Syndrome circuit #2 Syndromes corresponding to H 2 can be calculated very efficiently using linear feedback shift register circuits that implement polynomial division. g 0 g 1 g 2 g 3 1 r(x) r(x) mod g(x) r(x) div g(x) Encoding circuits can also be used for syndrome computation: syndrome = actual check symbols expected check symbols where expected check symbols are computed from received message symbols using the above encoder. EE 387, October 28, 2015 Notes 15, Page 11

Partial syndromes The zeroes of the generator polynomial determine codewords: c(x) is codeword c(β) = 0 for every zero β of g(x). (The if holds when g(x) has no repeated zeroes, i.e., repeated factors.) The zeroes of g(x) belong to extension field GF(q m ) of GF(q). Let {β 1,...,β t } include at least one zero of each prime factor of g(x). The partial syndromes S 1,...,S t of r(x) are defined to be S i = r(β i ) = r 0 +r 1 β i + +r n 1 β n 1 i (i = 1,...,t) The partial syndromes belong to the same extension field as β 1,...,β t. Syndrome component S i corresponds to m linear equations over GF(q). The equations are linearly dependent if β i is in a proper subfield of GF(q m ). EE 387, October 28, 2015 Notes 15, Page 12

Example: cyclic Hamming code Let p(x) be a primitive polynomial over GF(2) of degree m. The smallest value of n such that p(x) (x n 1) is n = 2 m 1. Cyclic code generated by p(x) has blocklength n = 2 m 1. The parity-check matrix H whose columns are x i mod p(x) has distinct nonzero columns, so the code can correct all single errors. The columns of H are powers of α = x in GF(2 m ): H = [ 1 α α 2 α n 2 α n 1] Assume a single error in location i, i.e., e(x) = x i. Partial syndrome for α: S 1 = r(α) = r 0 +r 1 α+ +r n 1 α n 1 = c(α)+e(α) = e(α) = α i. Decoder must find error location i from syndrome S 1 = α i, i.e., decoder must compute a discrete logarithm base α. EE 387, October 28, 2015 Notes 15, Page 13

Nonbinary Hamming codes Every 1EC code has d 3, hence any two columns of check matrix are LI, hence no column of H is a multiple of another column. There are q m 1 m-tuples over GF(q). The largest number of pairwise LI columns is q m 1 q 1 = qm 1 +q m 2 + +q +1. since we can use only one of the q 1 nonzero multiples of any m-tuple. We normalize columns by requiring first nonzero entry to be 1. Example: 1 1 1 1 1 1 1 1 1 0 0 0 0 H = 0 0 0 1 1 1 2 2 2 1 1 1 0. 0 1 2 0 1 2 0 1 2 0 1 2 1 Decoding procedure for this (13, 10) code: 1. Compute syndrome s = rh T. 2. Normalize syndrome by dividing by first nonzero entry s i. 3. Equal column of H is error location, and s i is error magnitude. EE 387, October 28, 2015 Notes 15, Page 14

Cyclic nonbinary Hamming codes A cyclic nonbinary Hamming code is defined by an element β of GF(q m ) of order n = (q m 1)/(q 1). The check matrix is H = [ 1 β β 2 β n 1], and g(x) is the minimal polynomial over GF(q) of β. (Fact: degg(x) = m) Columns of H are LI over GF(q) if and only if β j /β i = β l is not in GF(q). Fact: There exists a cyclic Hamming code of blocklength n if and only if n and q 1 are coprime, which is true if and only if m and q 1 are coprime. Example: If q = 3 then q 1 = 2, so odd values of m are required. Let GF(3 3 ) be defined by primitive polynomial x 3 +2x+1, and β = α 2. H = [ 1 α 2... α 22 α 24 ] 1 0 0 1 2 0 2 0 1 1 1 2 1 = 0 0 2 1 0 1 0 2 2 2 1 2 2. 0 1 1 1 2 1 1 0 0 1 2 0 2 The generator polynomial x 3 +x 2 +x+2 can be found by several methods, then used to construct a systematic parity-check matrix. EE 387, October 28, 2015 Notes 15, Page 15

Cyclic binary Golay code Multiplicative orders of elements of GF(2 11 ) divide 2 11 1 = 23 89. There are φ(23) = 22 elements of order 23. Conjugates of any such β are β, β 2, β 4, β 8, β 16, β 9, β 18, β 13, β 3, β 6,β 12 The minimal polynomial has degree 11. Prime polynomials of degree 11 are g(x) = x 11 +x 10 +x 6 +x 5 +x 4 +x 2 +1 g(x) = x 11 +x 9 +x 7 +x 6 +x 5 +x+1 These polynomials are mirror images; their zeroes are reciprocals. Consecutive powers β,β 2,β 3,β 4 among the conjugates guarantee d 5. Lemma: Golay codewords of even weight have weight a multiple of 4. Theorem: The cyclic Golay codes has d = 7 and in fact are perfect codes. Weight enumerator: 1+253x 7 +506x 8 +1288x 11 +1288x 12 +506x 15 +253x 16 +x 23 EE 387, October 28, 2015 Notes 15, Page 16

Examples of cyclic codes: CRC-16 Cyclic codes are often used for error detection because the encoding and syndrome calculation circuits are very simple. The most common generator polynomial is CRC-16: CRC-16 = x 16 +x 15 +x 2 +1 = (x+1)(x 15 +x+1) CRC-16 is simplest polynomial of degree 16 with degree 15 primitive factor. The factor x 15 +x+1 is primitive of degree 15 hence has order 2 15 1. Therefore the design blocklength of CRC-16 is 2 15 1 = 32767 bits. A significantly shortened code is almost always used. EE 387, October 28, 2015 Notes 15, Page 17

Examples of cyclic codes: CRC-CCITT Another popular generator polynomial is < CRC-CCITT = x 16 +x 12 +x 5 +1 = (x+1)p 2 (x), where p 2 (x) is a primitive polynomial of degree 15: p 2 (x) = x 15 +x 14 +x 13 +x 12 +x 4 +x 3 +x 2 +x+1 CRC-16 and CRC-CCITTT polynomials have only 4 nonzero coefficients, so the shift register coding circuits need only 3 exclusive-or gates. Minimum distance for CRC-16, CRC-CCITT is 4. Both codes correct single errors while detecting double errors, or detect up to 3 errors. Any cyclic code with n k = 16 detects burst errors of length 16 bits, which is optimal. EE 387, October 28, 2015 Notes 15, Page 18