This preview shows page 1. Sign up to view the full content.
Unformatted text preview: 1 1: that is, the number of bits is b, the ﬁrst and last bits are both 1,
and the bits εi in the middle could be either 0 or 1. The minimum burst length is 2,
corresponding to the pattern “11”.
Suppose we would like our CRC to detect all such error patterns, where e(x) =
−2
xs (1 · xb−1 + b=1 εi xi + 1). This polynomial represents a burst error pattern of size b
i
starting s bits to the left from the end of the packet. If we pick g (x) to be a polynomial
of degree b, and if g (x) does not have x as a factor, then any error pattern of length
≤ b is guaranteed to be detected, because g (x) will not divide a polynomial of degree
smaller than its own. Moreover, there is exactly one error pattern of length b + 1—
corresponding to the case when the burst error pattern matches the coefﬁcients of
g (x) itself—that will not be detected. All other error patterns of length b + 1 will be
detected by this CRC. 6 LECTURE 7. DETECTING BIT ERRORS Figure 72: Commonly used CRC generator polynomials, g (x). From Wikipedia. If fact, such a CRC is quite good at detecting longer burst errors as well, though it
cannot detect all of them.
CRCs are examples of cyclic codes, which have the property that if c is a code word,
then any cyclic shift (rotation) of c is another valid code word. Hence, referring to Eq.(7.1),
we ﬁnd that one can represent the polynomial corresponding to one cyclic left shift of w as
w(1) (x) = wn−1 + w0 x + w1 x2 + . . . wn−2 xn−1
= xw(x) + (1 + xn )wn−1 (7.3)
(7.4) Now, because w(1) (x) must also be a valid code word, it must be a multiple of g (x),
which means that g (x) must divide 1 + xn . Note that 1 + xn corresponds to a double error
pattern; what this observation implies is that the CRC scheme using cyclic code polynomials can detect the errors we want to detect (such as all double bit errors) as long as g (x)
is picked so that the smallest n for which 1 + xn is a multiple of g (x) is quite large. For
example, in practice, a common 16bit CRC has a g (x) for which the smallest such value of
n is 215 − 1 = 32767, which means that it’s quite effective for all messages of length smaller
than that.
7.2.5 CRCs in practice CRCs are used in essentially all communication systems. The table in Figure 72, culled
from Wikipedia, has a list of common CRCs and practical systems in which they are used.
You can see that they all have an even number of terms, and verify (if you wish) that 1 + x
divides each of them....
View
Full
Document
This document was uploaded on 02/26/2014 for the course CS 6.02 at MIT.
 Fall '13
 HariBalakrishnan

Click to edit the document details