In article <
1953c27e-95f4-4be6...@vd8g2000pbc.googlegroups.com>,
<snip>
While not directly answering your question, I'll add my 2 cents.
I commented on this before, but I do it again - I really don't like tools such as
those on easics web site. CRCs in verilog or VHDL are dead-nuts simple. Using
those tools leads to more confusion and obtuse code than not.
A great reference for crcs is:
http://www.ross.net/crc/download/crc_v3.txt
For HW guys - don't read past chapter 8. After chapter 8, the doc is all about
optimizing the calcs in SW. For HW, it's really simple - just code up the
algorithm shown in chapter 8, and put a for loop in it for the number of bits
you need. Done.
Now you know that basics, there's two references that can help for the
special cases you've got:
J. Satran, D. Sheinwald, and I. Shimony, "Out of Order Incremental CRC Computation"
IEEE Transactions on Computers, Vol. 54, No. 9, September 2005.
and
M. Walma, "Pipelined Cycle Redundancy Check (CRC) Calculation". Intel Corporation
(My paper is lacking a clear reference, but it looks to be from some
IEEE doc published in 2007)
Both these papers have some great ideas to do creative things with CRCs, including
similar to what you're trying to do.
Regards,
Mark