Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
Announcements
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.
21618 Discussions

Concept of CRC24 calcualtion for 64 bits

Altera_Forum
Honored Contributor II
2,594 Views

Hi, 

Does anyone knows concept of CRC calculation? (which is generated by ALTERA for Interlaken protocol core )  

Kindly refer the document of advanced synthesis cookbook. 

I don't know how are they doing XOR operation for incoming 64bits? 

CRC24 calculation == DATA 64 bits (single cycle) 

Kindly see the attached file for CRC calculation. 

 

Thanks
0 Kudos
4 Replies
Altera_Forum
Honored Contributor II
1,851 Views

Hi, 

 

I understand you're asking about parallel calculation of the CRC. I've written this article (http://outputlogic.com/my-stuff/circuit-cellar-january-2010-crc.pdf)a while ago on the subject that you might find useful. Also, there is online tool (http://outputlogic.com/?page_id=321) to generate CRC for different polynomials and data widths. 

 

 

Thanks, 

Evgeni
0 Kudos
Altera_Forum
Honored Contributor II
1,851 Views

Hi, 

 

Thanks for your reply. I went through that paper which u suggested but in that paper they have used matrix method. 

Could you just explain the concept of Table 2? i.e Mout (next state CRC) as a function of Min(current state CRC) when N=0  

In that table 2 matrix ,I'm not able understand how you are making Min[0] is 1 initially i.e. Min[0] row[0] = 1 0 0 0 0 (rest of rows I understand)  

 

 

Mout = F(Nin=0,Min) 

 

Nin = 0 Mout[4] Mout[3] Mout[2] Mout[1] Mout[0] 

Min[0] 1 0 0 0 0 

 

 

Thanks
0 Kudos
Altera_Forum
Honored Contributor II
1,851 Views

Mout = F(Nin=0,Min) 

 

Nin = 0 Mout[4] Mout[3] Mout[2] Mout[1] Mout[0] 

Min[0] 1 0 0 0 0 

 

Thank you sir
0 Kudos
Altera_Forum
Honored Contributor II
1,851 Views

Hi, 

 

Each row corresponds to Mout for different Min, from 0x01 to 0x10. So, for example, when Min=0x1 (first row), Mout bits are 10000. 2'nd row is Min = 0x2, etc. 

The reason why it's Min[0], Min[1], etc, is that Min values are one-hot encoded. 

 

 

Thanks, 

Evgeni
0 Kudos
Reply