0
votes

Information is readily available about "good" CRC polynomials, for example:

https://checksumcrc.blogspot.com/2015/07/significantly-updated-crc-data.html

However, all the information I've been able to find is based on detecting errors with a relatively short "Hamming distance" - errors resulting from a few flipped bits. I'm working with a communication medium that occasionally suffers a "bit slip" - a bit is lost, shifting all subsequent bits. A single bit slip in a 1024-bit transmission can result in hundreds of errant bits, as defined by Hamming distance. Unfortunately, the recommended 32-bit CRC polynomial for transmissions as large as 1024 bits is only known to catch all errors of Hamming distance 6:

https://users.ece.cmu.edu/~koopman/crc/

If anything is known about CRC polynomials that are good at catching bit slips, I'd like to learn about it.

1
I would have thought all CRCs would do this. They depended on the bit position, not just its value.user207421
Yes, in general, all CRCs catch bit slips, however different CRC polynomials perform differently. The cited research has found "optimal" polynomials based on certain types of errors (which do not include bit slips). I'm just looking for any information on CRC polynomial performance in the presence of bit slips. The research I'm aware of does brute-force enumeration of all instances of a certain class of errors. In theory, someone could have done this type of research using bit slips, rather than bit flips, and I'm hoping someone has. If not, probably good material for a Ph.D. thesis.AlpineCarver
There are error correcting codes specifically designed to handle bit slips, but the question is asking about error detection (not correction) for bit slips. Assuming that a failure doesn't result in an undetected all zeroes or a zero length received message case, CRC failure will be about 1/2^n, for a n-bit CRC as answered by Mark Adler.rcgldr

1 Answers

2
votes

All CRCs of the same length are equivalent for a bit slip, which from the CRC's point of view is simply a slew a bit errors. In that case, the probability of not detecting the error is 2-n, where n is the width of the CRC (e.g. 32).