Cyclic Code
Cyclic Code
• We have
where
• The claim is that C(x) must divide g(x) hence
is a code polynomial.
33 mod 7 = 5. Hence 33-5=28 can be divided by 7.
Example
• A (7,4) cyclic code with g(x) = x3 + x + 1.
• If m(x) = x3 + 1, the non-systematic code is
C(x) = x6 + x4 + x + 1.
• What is the systematic code?
Example
• A (7,4) cyclic code with g(x) = x3 + x + 1.
• If m(x) = x3 + 1, the non-systematic code is
C(x) = x6 + x4 + x + 1.
• What is the systematic code?
• r(x) = m(x) x3 mod g(x)
= (x6 + x3) mod x3 + x + 1
= x2 + x
• Therefore, C(x) = x6 + x3 + x2 + x.
Cyclic Redundancy Check (CRC)
• In communications, usually the data is followed by a
checksum.
• Checksum is calculated according to a cyclic code,
therefore it is called Cyclic Redundancy Check (CRC).
• To be more precise, it is done by calculating the
systematic code, with the data packet as the message
polynomial.
• The receiver, once received the data followed by the
checksum, will calculate the checksum again, if match,
assume no error, otherwise there is error, either in the
data or the checksum.
Research Challenge
• In wireless communications, a packet of 1500
bytes usually has less then 10 byte errors,
usually clustered in a few locations, if
corrupted.
• Standards today say retransmit everything.
• Any better ideas?
Remaining Questions for Those Really
Interested
• Decoding. Divide the received polynomial by
g(x). If there is no error you should get a 0
(why?). Make sure that the error polynomial
you have in mind does not divide g(x).
• How to make sure to choose a good g(x) to
make the minimum degree larger? Turns out
to learn this you have to study more – it’s the
BCH code.
Other codes
• RS code. Block code. Used in CD, DVD, HDTV
transmission.
• LDPC code. Also block code. Reinvented after
first proposed 40 some years ago. Proposed to
be used in 802.11n. Achieve close-to-Shannon
bound
• Trellis code. Not block code. More closely
coupled with modulation.
• Turbo code. Achieve close-to-Shannon bound.