URL
https://opencores.org/ocsvn/pci_express_crc/pci_express_crc/trunk
Subversion Repositories pci_express_crc
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 1 to Rev 2
- ↔ Reverse comparison
Rev 1 → Rev 2
/trunk/doc/crc.doc
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
trunk/doc/crc.doc
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/doc/~$crc.doc
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: trunk/doc/~$crc.doc
===================================================================
--- trunk/doc/~$crc.doc (nonexistent)
+++ trunk/doc/~$crc.doc (revision 2)
trunk/doc/~$crc.doc
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/crc32d16N.v
===================================================================
--- trunk/crc32d16N.v (nonexistent)
+++ trunk/crc32d16N.v (revision 2)
@@ -0,0 +1,66 @@
+// ===========================================================================
+// File : crc32d16N.v
+// Author : cwinward
+// Date : Sat Dec 8 14:00:37 MST 2007
+// Project : TI PHY design
+//
+// Copyright (c) notice
+// This code adheres to the GNU public license
+//
+// ===========================================================================
+//
+// $Id: crc32d16N.v,v 1.1.1.1 2007-12-08 22:26:59 cmagleby Exp $
+//
+// ===========================================================================
+//
+// $Log: not supported by cvs2svn $
+//
+// ===========================================================================
+// Function : This provides the lcrc for the end of the pci express TLP
+// packet. This is 16 bits in 32 bits out.
+// For more data widths see www.gutzlogic.com
+// ===========================================================================
+// ===========================================================================
+
+module crc32d16N (/*AUTOARG*/
+ // Outputs
+ crc32N,
+ // Inputs
+ clk, resetN, load, d, en
+ );
+ input clk;
+ input resetN;
+ input load; //load the seed value
+ input [15:0] d; //16 bit of tlp data starting with seq. num
+ input en; //should be high the entire packet.
+
+ output [31:0] crc32N; //inverted and swapped per pci spec.
+ wire [31:0] crc32N;
+
+ assign crc32N = {~crc32[0],~crc32[1],~crc32[2],~crc32[3],~crc32[4],~crc32[5],~crc32[6],~crc32[7],
+ ~crc32[8],~crc32[9],~crc32[10],~crc32[11],~crc32[12],~crc32[13],~crc32[14],~crc32[15],
+ ~crc32[16],~crc32[17],~crc32[18],~crc32[19],~crc32[20],~crc32[21],~crc32[22],~crc32[23],
+ ~crc32[24],~crc32[25],~crc32[26],~crc32[27],~crc32[28],~crc32[29],~crc32[30],~crc32[31]};
+
+ /*AUTOWIRE*/
+ // Beginning of automatic wires (for undeclared instantiated-module outputs)
+ wire [31:0] crc; // From make_crc32d16 of crc32d16.v
+ // End of automatics
+
+ /* -----\/----- EXCLUDED -----\/-----
+ crc32d16 AUTO_TEMPLATE (.init(32'hFFFF_FFFF));
+ -----/\----- EXCLUDED -----/\----- */
+
+ crc32d16 make_crc32d16 (/*AUTOINST*/
+ // Outputs
+ .crc (crc[31:0]),
+ // Inputs
+ .clk (clk),
+ .resetN (resetN),
+ .load (load),
+ .d (d[15:0]),
+ .init (32'hFFFF_FFFF), // Templated
+ .en (en));
+
+endmodule
+
Index: trunk/crc32d16.v
===================================================================
--- trunk/crc32d16.v (nonexistent)
+++ trunk/crc32d16.v (revision 2)
@@ -0,0 +1,123 @@
+// ===========================================================================
+// File : crc32d16N.v
+// Author : cwinward
+// Date : Sat Dec 8 14:00:37 MST 2007
+// Project : TI PHY design
+//
+// Copyright (c) notice
+// This code adheres to the GNU public license
+//
+// ===========================================================================
+//
+// $Id: crc32d16.v,v 1.1.1.1 2007-12-08 22:27:00 cmagleby Exp $
+//
+// ===========================================================================
+//
+// $Log: not supported by cvs2svn $
+//
+// ===========================================================================
+// Function : CRC for TLP packet
+// This was generated by a c program owned by gutzlogic.
+// ===========================================================================
+// ===========================================================================
+
+
+module crc32d16(/*AUTOARG*/
+ // Outputs
+ crc,
+ // Inputs
+ clk, resetN, load, d, init,en
+ );
+
+
+ input clk;
+ input resetN;
+ input load;
+ input [15:0] d;
+ input [31:0] init;
+ input en;
+ output [31:0] crc;
+ reg [31:0] crc;
+
+
+ always @(posedge clk or negedge resetN)
+ begin
+ if(~resetN)
+ crc <= #1 32'hFFFF_FFFF;
+ else if(load)
+ crc <= #1 init;
+ else
+ if(en)
+ begin
+ crc[0] <= #1 d[3] ^ d[5] ^ d[6] ^ d[9] ^ d[15] ^ crc[16] ^ crc[22] ^ crc[25] ^ crc[26]
+ ^ crc[28];
+ crc[1] <= #1 d[2] ^ d[3] ^ d[4] ^ d[6] ^ d[8] ^ d[9] ^ d[14] ^ d[15] ^ crc[16] ^
+ crc[17] ^ crc[22] ^ crc[23] ^ crc[25] ^ crc[27] ^ crc[28] ^ crc[29];
+ crc[2] <= #1 d[1] ^ d[2] ^ d[6] ^ d[7] ^ d[8] ^ d[9] ^ d[13] ^ d[14] ^ d[15] ^
+ crc[16] ^ crc[17] ^ crc[18] ^ crc[22] ^ crc[23] ^ crc[24] ^ crc[25] ^ crc[29] ^ crc[30];
+ crc[3] <= #1 d[0] ^ d[1] ^ d[5] ^ d[6] ^ d[7] ^ d[8] ^ d[12] ^ d[13] ^ d[14] ^
+ crc[17] ^ crc[18] ^ crc[19] ^ crc[23] ^ crc[24] ^ crc[25] ^ crc[26] ^ crc[30] ^ crc[31];
+ crc[4] <= #1 d[0] ^ d[3] ^ d[4] ^ d[7] ^ d[9] ^ d[11] ^ d[12] ^ d[13] ^ d[15] ^
+ crc[16] ^ crc[18] ^ crc[19] ^ crc[20] ^ crc[22] ^ crc[24] ^ crc[27] ^ crc[28] ^ crc[31];
+ crc[5] <= #1 d[2] ^ d[5] ^ d[8] ^ d[9] ^ d[10] ^ d[11] ^ d[12] ^ d[14] ^ d[15]
+ ^ crc[16] ^ crc[17] ^ crc[19] ^ crc[20] ^ crc[21] ^ crc[22] ^ crc[23] ^ crc[26] ^
+ crc[29];
+ crc[6] <= #1 d[1] ^ d[4] ^ d[7] ^ d[8] ^ d[9] ^ d[10] ^ d[11] ^ d[13] ^ d[14] ^
+ crc[17] ^ crc[18] ^ crc[20] ^ crc[21] ^ crc[22] ^ crc[23] ^ crc[24] ^ crc[27] ^ crc[30];
+ crc[7] <= #1 d[0] ^ d[5] ^ d[7] ^ d[8] ^ d[10] ^ d[12] ^ d[13] ^ d[15] ^ crc[16]
+ ^ crc[18] ^ crc[19] ^ crc[21] ^ crc[23] ^ crc[24] ^ crc[26] ^ crc[31];
+ crc[8] <= #1 d[3] ^ d[4] ^ d[5] ^ d[7] ^ d[11] ^ d[12] ^ d[14] ^ d[15] ^ crc[16]
+ ^ crc[17] ^ crc[19] ^ crc[20] ^ crc[24] ^ crc[26] ^ crc[27] ^ crc[28];
+ crc[9] <= #1 d[2] ^ d[3] ^ d[4] ^ d[6] ^ d[10] ^ d[11] ^ d[13] ^ d[14] ^ crc[17]
+ ^ crc[18] ^ crc[20] ^ crc[21] ^ crc[25] ^ crc[27] ^ crc[28] ^ crc[29];
+ crc[10] <= #1 d[1] ^ d[2] ^ d[6] ^ d[10] ^ d[12] ^ d[13] ^ d[15] ^ crc[16] ^ crc[18]
+ ^ crc[19] ^ crc[21] ^ crc[25] ^ crc[29] ^ crc[30];
+ crc[11] <= #1 d[0] ^ d[1] ^ d[3] ^ d[6] ^ d[11] ^ d[12] ^ d[14] ^ d[15] ^ crc[16]
+ ^ crc[17] ^ crc[19] ^ crc[20] ^ crc[25] ^ crc[28] ^ crc[30] ^ crc[31];
+ crc[12] <= #1 d[0] ^ d[2] ^ d[3] ^ d[6] ^ d[9] ^ d[10] ^ d[11] ^ d[13] ^ d[14] ^
+ d[15] ^ crc[16] ^ crc[17] ^ crc[18] ^ crc[20] ^ crc[21] ^ crc[22] ^ crc[25] ^ crc[28]
+ ^ crc[29] ^ crc[31];
+ crc[13] <= #1 d[1] ^ d[2] ^ d[5] ^ d[8] ^ d[9] ^ d[10] ^ d[12] ^ d[13] ^ d[14] ^
+ crc[17] ^ crc[18] ^ crc[19] ^ crc[21] ^ crc[22] ^ crc[23] ^ crc[26] ^ crc[29] ^ crc[30];
+ crc[14] <= #1 d[0] ^ d[1] ^ d[4] ^ d[7] ^ d[8] ^ d[9] ^ d[11] ^ d[12] ^ d[13] ^
+ crc[18] ^ crc[19] ^ crc[20] ^ crc[22] ^ crc[23] ^ crc[24] ^ crc[27] ^ crc[30] ^ crc[31];
+ crc[15] <= #1 d[0] ^ d[3] ^ d[6] ^ d[7] ^ d[8] ^ d[10] ^ d[11] ^ d[12] ^ crc[19] ^
+ crc[20] ^ crc[21] ^ crc[23] ^ crc[24] ^ crc[25] ^ crc[28] ^ crc[31];
+ crc[16] <= #1 d[2] ^ d[3] ^ d[7] ^ d[10] ^ d[11] ^ d[15] ^ crc[0] ^ crc[16] ^ crc[20]
+ ^ crc[21] ^ crc[24] ^ crc[28] ^ crc[29];
+ crc[17] <= #1 d[1] ^ d[2] ^ d[6] ^ d[9] ^ d[10] ^ d[14] ^ crc[1] ^ crc[17] ^ crc[21] ^
+ crc[22] ^ crc[25] ^ crc[29] ^ crc[30];
+ crc[18] <= #1 d[0] ^ d[1] ^ d[5] ^ d[8] ^ d[9] ^ d[13] ^ crc[2] ^ crc[18] ^ crc[22] ^
+ crc[23] ^ crc[26] ^ crc[30] ^ crc[31];
+ crc[19] <= #1 d[0] ^ d[4] ^ d[7] ^ d[8] ^ d[12] ^ crc[3] ^ crc[19] ^ crc[23] ^ crc[24] ^
+ crc[27] ^ crc[31];
+ crc[20] <= #1 d[3] ^ d[6] ^ d[7] ^ d[11] ^ crc[4] ^ crc[20] ^ crc[24] ^ crc[25] ^ crc[28];
+ crc[21] <= #1 d[2] ^ d[5] ^ d[6] ^ d[10] ^ crc[5] ^ crc[21] ^ crc[25] ^ crc[26] ^ crc[29];
+ crc[22] <= #1 d[1] ^ d[3] ^ d[4] ^ d[6] ^ d[15] ^ crc[6] ^ crc[16] ^ crc[25] ^ crc[27] ^
+ crc[28] ^ crc[30];
+ crc[23] <= #1 d[0] ^ d[2] ^ d[6] ^ d[9] ^ d[14] ^ d[15] ^ crc[7] ^ crc[16] ^ crc[17] ^
+ crc[22] ^ crc[25] ^ crc[29] ^ crc[31];
+ crc[24] <= #1 d[1] ^ d[5] ^ d[8] ^ d[13] ^ d[14] ^ crc[8] ^ crc[17] ^ crc[18] ^ crc[23]
+ ^ crc[26] ^ crc[30];
+ crc[25] <= #1 d[0] ^ d[4] ^ d[7] ^ d[12] ^ d[13] ^ crc[9] ^ crc[18] ^ crc[19] ^ crc[24]
+ ^ crc[27] ^ crc[31];
+ crc[26] <= #1 d[5] ^ d[9] ^ d[11] ^ d[12] ^ d[15] ^ crc[10] ^ crc[16] ^ crc[19] ^ crc[20]
+ ^ crc[22] ^ crc[26];
+ crc[27] <= #1 d[4] ^ d[8] ^ d[10] ^ d[11] ^ d[14] ^ crc[11] ^ crc[17] ^ crc[20] ^ crc[21]
+ ^ crc[23] ^ crc[27];
+ crc[28] <= #1 d[3] ^ d[7] ^ d[9] ^ d[10] ^ d[13] ^ crc[12] ^ crc[18] ^ crc[21] ^ crc[22]
+ ^ crc[24] ^ crc[28];
+ crc[29] <= #1 d[2] ^ d[6] ^ d[8] ^ d[9] ^ d[12] ^ crc[13] ^ crc[19] ^ crc[22] ^ crc[23]
+ ^ crc[25] ^ crc[29];
+ crc[30] <= #1 d[1] ^ d[5] ^ d[7] ^ d[8] ^ d[11] ^ crc[14] ^ crc[20] ^ crc[23] ^ crc[24]
+ ^ crc[26] ^ crc[30];
+ crc[31] <= #1 d[0] ^ d[4] ^ d[6] ^ d[7] ^ d[10] ^ crc[15] ^ crc[21] ^ crc[24] ^ crc[25]
+ ^ crc[27] ^ crc[31];
+ end // if (en)
+ else
+ crc <= #1 crc;
+ end
+
+endmodule
+
+