Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] CRC-16 Calculation Polynomial Selection

Status
Not open for further replies.

shaswat

Advanced Member level 4
Full Member level 1
Joined
Jul 2, 2013
Messages
115
Helped
1
Reputation
2
Reaction score
1
Trophy points
18
Visit site
Activity points
963
I would like to compute the CRC-16 checksum of a byte array, with 0xA001 polynomial. But I don't really how the given polynomial (0xA001) is used. Is it some kind of special value (0xA001)? What would be the value if calculate CRC for 8 and 32 bit?

Any new idea would be appreciated..

Thanks
 

I believe you won't ask again if you had read some literature about CRC. So your job to study the basics is still pending.

Every CRC algorithm has it's specific polynomial. It's arbitrary to some extend, but the selection has also to do with mathematical properties of the number. https://en.wikipedia.org/wiki/Cyclic_redundancy_check
 
Also, pay attention to the detail of whether the initial "seed" value is set of 0xFFFF or cleared (0). Different CRC standards specify that as well as the polynomial selection used. To implement this correctly, you really do have to read up on things, and some of the links given to you above will get you started. It is very involved to try to explain it all in a dozen sentences or so on a forum like this.

The A001 polynomial is an industry standard. It is however, not all that effective on catching/correcting a number of multibit errors - but it is part of an old standard, so many still use it as is, for backward compatability, or simply because they've implemented the algorithm once and re-use it. If you get into CRC analysis, you will learn about Hamming-distance (the relative percentage of possible bit errors (single and multibit) that can be detected by any given crc polynomial.... they all are NOT created equal.
 
I believe you won't ask again if you had read some literature about CRC. So your job to study the basics is still pending.

Every CRC algorithm has it's specific polynomial. It's arbitrary to some extend, but the selection has also to do with mathematical properties of the number. https://en.wikipedia.org/wiki/Cyclic_redundancy_check
Thanks for the link. This one really Helps me in understanding the CRC.

- - - Updated - - -

Also, pay attention to the detail of whether the initial "seed" value is set of 0xFFFF or cleared (0). Different CRC standards specify that as well as the polynomial selection used. To implement this correctly, you really do have to read up on things, and some of the links given to you above will get you started. It is very involved to try to explain it all in a dozen sentences or so on a forum like this.

The A001 polynomial is an industry standard. It is however, not all that effective on catching/correcting a number of multibit errors - but it is part of an old standard, so many still use it as is, for backward compatability, or simply because they've implemented the algorithm once and re-use it. If you get into CRC analysis, you will learn about Hamming-distance (the relative percentage of possible bit errors (single and multibit) that can be detected by any given crc polynomial.... they all are NOT created equal.
Thanks for the answer. This one & wiki link really helps me
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top