![no use](https://cdn.opencores.org/img/pils_lt.png)
![no use](https://cdn.opencores.org/img/pil_lt.png)
![no use](https://cdn.opencores.org/img/pil_rt.png)
![no use](https://cdn.opencores.org/img/pils_rt.png)
wide crc_32 doesn't need to be slow.
by Unknown on Nov 8, 2004 |
Not available! | ||
hello,
really itz a gud approach making calc. faster.
But can anyone suggest me a short mehod to calculate 64 bit crc
without creating any lookup tables funda?
sharib4444 at rediffmail.com
----- Original Message -----
From: "llbutcher" llbutcher at v...>
To: cores at o...>
Date: Wed, 3 Oct 2001 00:52:48 -0700
Subject: [oc] wide crc_32 doesn't need to be slow.
Allan: I looked into making wider CRC's run faster. At first glance, it seems that the logic grows and grows. So wider CRC's would seem to run slower due to logic depth. But I found that the dependence on the internal CRC state does NOT grow more and more complicated. What this means is that you can do a calculation based on the new data in, and combine it with a calculation based on the internal state. The advantage of this is that you can pipeline the complicated calculation based on input data. It can take more than 1 clock. I think that one should be able to make the CRC calculation for any width wider than 32 bits take roughly the same time as a 32-bit calculation, with a pipeline depth which grows with the input width. Plus lots of extra pipeline flops. I included a 64-bit calculation in the crc_32.lib which demonstrates this. I would expect it and wider CRC's to run in about the time it takes to cascade 5 XOR's into a flop. I found a paper on the web by a person from IBM which uses a different tactic. It describes a way to calculate a much wider CRC with simple terms, and then collapse it to the final crc_32 at the end. As you say, it looks like a 64-bit CRC should be able to run at 10 GBit/sec in an FPGA. I have no idea what IBM needs to do checksums on which runs substantially faster. Curious. blue beaver
> You reach a point where making the bus wider doesn't make the
CRC
> faster, in terms of bits per second. The number of inputs to
each XOR
> grows with the bus width.
> > I was doing some parallel PRBS experiments recently, and I found in some
> cases that the 128 bit bus produced lower bit rates than a 64
bit
> design.
|
![no use](https://cdn.opencores.org/img/pils_lt.png)
![no use](https://cdn.opencores.org/img/pil_lt.png)
![no use](https://cdn.opencores.org/img/pil_rt.png)
![no use](https://cdn.opencores.org/img/pils_rt.png)