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) =
xs (1 · xb−1 + b=1 εi xi + 1). This polynomial represents a burst error pattern of size b
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 7-2: 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 16-bit 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
7.2.5 CRCs in practice CRCs are used in essentially all communication systems. The table in Figure 7-2, 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