Wikipedia's article Cyclic redundancy check states that for the same n (bits) there are multiple CRCs possible with different polynomial. Then it lists this Best CRC Polynomials article that gives some variations with different polynomials. I am looking to implement a simple CRC-8. What should be my criteria for picking one polynomial over another?

I assume that it boils down to selecting the Hamming distance, but how is that related to my problem at hand? How do I pick the correct/best Hamming distance for best detecting possible errors in my case (and in what terms should I describe my case)? For example, will the choice depend on the media for storing/transmitting data or other physical factors or something else?

  • 1
    $\begingroup$ Have you read this report, by the same author? tc.faa.gov/its/worldpac/techrpt/tc14-49.pdf $\endgroup$ – Yuval Filmus Mar 28 '16 at 7:52
  • $\begingroup$ No, thanks, that's what I was looking for (at the top of page C-19)! Please post it as an answer and I will be happy to accept it. I only wonder why the "best" polynomials listed at the bottom of page C-18 differ from those listed on users.ece.cmu.edu/~koopman/crc ? $\endgroup$ – Greg Mar 28 '16 at 13:10

The author of the list that you mention has written a thorough report on the problem of selecting a CRC polynomial, which probably contains the answers to all your questions. See page C-19:

Important to select CRC polynomial based on:

  • Data Word length
  • Desired HD
  • Desired CRC size

Safety-critical applications commonly select HD=6 at max message length

For example, HD-6 detects between 1-6 error bits in the Data Word, so the bigger the HD the better (for the given Data Word length).

| cite | improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.