What does this CRC implementation mean by having a seed value?

fat balls picture fat balls · Jun 4, 2015 · Viewed 10.1k times · Source

I am trying to implement a CRC algorithm in Verilog for the SENT sensor protocol.

In a document put out by the SAE, they say their CRC uses the generator polynomial x^4 + x^3 + x^2 + 1 and a seed value of 0101. I understand the basic concept of calculating a CRC using XOR division and saving the remainder, but everytime I try to compute a CRC I get the wrong answer.

I know this because in the same document they have a list of examples with data bits and the corresponding checksum.

For example, the series of hex values x"73E73E" has checksum 15 and the series x"748748" has checksum 3. Is there anyone who can arrive at these values using the information above? If so, how did you do it?

This is a couple of sentences copied from the document: "The CRC checksum can be implemented as a series of shift left by 4 (multiply by 16) followed by a 256 element array lookup. The checksum is determined by using all data nibbles in sequence and then checksumming the result with an extra zero value."

Answer

Mark Adler picture Mark Adler · Jun 5, 2015

Take a look at RevEng, which can determine the CRC parameters from examples (it would need more examples than you have provided).