Re: How to use easics crc generator?

J

Jan Decaluwe

Mike said:
My advice applies only to VHDL and FPGAs.
I know very little about ASICs and Verilog.


Try it and see. I found no substantial difference
using Easics vs leo or synplicity on parallel
16 and 32 bit FCS checkers for an FPGA target.

Try and see is definitely the good advice.
My experience dates back several years, with Synopsys -
other synthesis tools / versions may behave differently,
especially if they would contain xor-specific optimizations,
as they perfectly could.

Also, for the record: a "stand-alone" experiment with
only the CRC functions is not sufficient to judge well.
The functions can and will be used in a context -
I remember that the difference became especially significant
within larger modules and for large bit
widths (e.g. 32) and large poly's (e.g. Ethernet).

However - if there's no significant difference, then
there is definitely no reason to use a specialized solution.

Regards, Jan
 
J

Jos

Jan said:
Try and see is definitely the good advice.
My experience dates back several years, with Synopsys -
other synthesis tools / versions may behave differently,
especially if they would contain xor-specific optimizations,
as they perfectly could.

Also, for the record: a "stand-alone" experiment with
only the CRC functions is not sufficient to judge well.
The functions can and will be used in a context -

Absolutely right. Synthesis tools tend to converge to an optimal
solution when synthesized "stand-alone". When buried in a bunch of other
logic the synthesizer doesn't find the optimal solution.

My favourite in that respect is the recursive xor or adder tree versus
the loop generated xor or adder.
Same phenomenon , same result.

Regards,

Jos
 
J

John Moore

Sorry to be a bore, but I'm still having trouble getting the generator
working in an ethernet transmitter.

It works fine in a receiver if I preload the crc with (others <= '1'), and
feed in the input bytes in bit reversed form, and look for an answer of
x"c704dd7b" at the end of the frame.

Presumably I should also preload with (others <= '1') for a transmitter as
well? This doesn't give the right answer (which I know from other
applications) after loading the last byte of the frame. Should I be doing
anything else?

Thanks for any further help
John Moore
 
M

Mike Treseler

John said:
Sorry to be a bore, but I'm still having trouble getting the generator
working in an ethernet transmitter.

We only do monitors so I haven't actually done this,
but in theory, the FCS you add to the end of the
packet should be the payload remainder with each
octet bit reversed, then the whole thing inverted.


-- Mike Treseler
 
J

John Moore

We only do monitors so I haven't actually done this,
but in theory, the FCS you add to the end of the
packet should be the payload remainder with each
octet bit reversed, then the whole thing inverted.
Thank you Mike. After reversing the CRC bytes, reversing the bits in each
byte, and inverting the bits (!) I have got the transmitter working as well.
Having a parallel CRC calculation is much nicer than a serial bit by bit
method. I can use a slower clock for a start.

John Moore
 
M

Mike Treseler

John said:
Thank you Mike. After reversing the CRC bytes, reversing the bits in each
byte, and inverting the bits (!) I have got the transmitter working as well.
Having a parallel CRC calculation is much nicer than a serial bit by bit
method. I can use a slower clock for a start.

You are welcome. Glad it works for you.
Consider posting a snippet of the
generator code to share with the group.

-- Mike Treseler
 
Joined
Aug 25, 2008
Messages
1
Reaction score
0
easics CRC implementation

hello all - i'm a complete newbie in the CRC world and have done quite a bit of googling on the topic, and eventually landed at the easics web site. i got their module for the Ethernet CRC32 module up and running and i have a few questions regarding the results:

1) i used a software algorithm with the same polynomial to generate the CRC for a data packet to send. i assumed that when generating the CRC that it initially had to be set to "FFFFFFFF", and on the receiving end, i must do the same thing before checking the data. this goes for inverting the result at the end as well (inverted by the transmitter = inverting by the receiver). this is sound, correct?
2) the comments in the CRC32 function say that "the first serial data bit is D(7)" , meaning, for all bytes, they must be bit reversed. easy enough. but which byte needs to come first? say for a 64 bit word, do i need to feed bits 63 downto 57, bit reveresed, first? or the 7 downto 0, bit reveresed, first?

I've tried both methods of feeding bytes into the algorithm, but I still can't get the CRCs to match. I tend to think that the SW generated CRC is correct in that it's been in use here for awhile, so I'm obviously missing something on the receiving end. i'm just not sure what. any tips would be greatly appreciated!
 
Joined
Dec 29, 2008
Messages
3
Reaction score
0
Hi, I can get the correct CRC for the first byte, but that's it.
If I feed the second byte, the CRC is wrong. Do I need to modify the return CRC value before I feed into the module? Right now, I have a direct feeding. Thx.
 
Joined
Apr 30, 2009
Messages
1
Reaction score
0
Hi, I can get the correct CRC for the first byte, but that's it.
If I feed the second byte, the CRC is wrong. Do I need to modify the return CRC value before I feed into the module? Right now, I have a direct feeding. Thx.
-------------------------------

AK51,

I ran into the same problem while trying to compare the output of the generator with the output of the Zilog MPSC chip. The answer can be found here under the Q&A for Synchronous Modes section h_t_t_p://www-clips.imag.fr/projet-systeme/Z85230/chapter7.pdf

Basically the second byte consists of {first_byte[7:6],second_byte[5:0]} in verilog or first_byte (7 downto 6) & second_byte (5 downto 0) in VHDL.

Hope that helps! It took me a few hours to find out.
 
Joined
Nov 26, 2010
Messages
1
Reaction score
0
Hi All,

I have been facing problems with easics crc16 (USB) generator. I have used the module at their website in by RTL and i plan to build a serial type crc generator to verify it. As per by calculation for CRC16 (X16+X15+X2+1) if the first 8bit data is 24 then crc output for this should also be 24. but i dont see that happening in the RTL. can you please suggest ? Should the data be manipulated before sending it in for crc calculation ?
 
Joined
May 20, 2009
Messages
8
Reaction score
0
OutputLogic.com CRC generator

Hi,

You can try using a different CRC generator tool on OutputLogic.com
It has a user forum with several similar questions that have been already answered.

Thanks
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,053
Latest member
BrodieSola

Latest Threads

Top