1 |
2 |
cmagleby |
// ===========================================================================
|
2 |
|
|
// File : crc32d16N.v
|
3 |
|
|
// Author : cwinward
|
4 |
|
|
// Date : Sat Dec 8 14:00:37 MST 2007
|
5 |
|
|
// Project : TI PHY design
|
6 |
|
|
//
|
7 |
|
|
// Copyright (c) notice
|
8 |
|
|
// This code adheres to the GNU public license
|
9 |
|
|
//
|
10 |
|
|
// ===========================================================================
|
11 |
|
|
//
|
12 |
|
|
// $Id: crc32d16.v,v 1.1.1.1 2007-12-08 22:27:00 cmagleby Exp $
|
13 |
|
|
//
|
14 |
|
|
// ===========================================================================
|
15 |
|
|
//
|
16 |
|
|
// $Log: not supported by cvs2svn $
|
17 |
|
|
//
|
18 |
|
|
// ===========================================================================
|
19 |
|
|
// Function : CRC for TLP packet
|
20 |
|
|
// This was generated by a c program owned by gutzlogic.
|
21 |
|
|
// ===========================================================================
|
22 |
|
|
// ===========================================================================
|
23 |
|
|
|
24 |
|
|
|
25 |
|
|
module crc32d16(/*AUTOARG*/
|
26 |
|
|
// Outputs
|
27 |
|
|
crc,
|
28 |
|
|
// Inputs
|
29 |
|
|
clk, resetN, load, d, init,en
|
30 |
|
|
);
|
31 |
|
|
|
32 |
|
|
|
33 |
|
|
input clk;
|
34 |
|
|
input resetN;
|
35 |
|
|
input load;
|
36 |
|
|
input [15:0] d;
|
37 |
|
|
input [31:0] init;
|
38 |
|
|
input en;
|
39 |
|
|
output [31:0] crc;
|
40 |
|
|
reg [31:0] crc;
|
41 |
|
|
|
42 |
|
|
|
43 |
|
|
always @(posedge clk or negedge resetN)
|
44 |
|
|
begin
|
45 |
|
|
if(~resetN)
|
46 |
|
|
crc <= #1 32'hFFFF_FFFF;
|
47 |
|
|
else if(load)
|
48 |
|
|
crc <= #1 init;
|
49 |
|
|
else
|
50 |
|
|
if(en)
|
51 |
|
|
begin
|
52 |
|
|
crc[0] <= #1 d[3] ^ d[5] ^ d[6] ^ d[9] ^ d[15] ^ crc[16] ^ crc[22] ^ crc[25] ^ crc[26]
|
53 |
|
|
^ crc[28];
|
54 |
|
|
crc[1] <= #1 d[2] ^ d[3] ^ d[4] ^ d[6] ^ d[8] ^ d[9] ^ d[14] ^ d[15] ^ crc[16] ^
|
55 |
|
|
crc[17] ^ crc[22] ^ crc[23] ^ crc[25] ^ crc[27] ^ crc[28] ^ crc[29];
|
56 |
|
|
crc[2] <= #1 d[1] ^ d[2] ^ d[6] ^ d[7] ^ d[8] ^ d[9] ^ d[13] ^ d[14] ^ d[15] ^
|
57 |
|
|
crc[16] ^ crc[17] ^ crc[18] ^ crc[22] ^ crc[23] ^ crc[24] ^ crc[25] ^ crc[29] ^ crc[30];
|
58 |
|
|
crc[3] <= #1 d[0] ^ d[1] ^ d[5] ^ d[6] ^ d[7] ^ d[8] ^ d[12] ^ d[13] ^ d[14] ^
|
59 |
|
|
crc[17] ^ crc[18] ^ crc[19] ^ crc[23] ^ crc[24] ^ crc[25] ^ crc[26] ^ crc[30] ^ crc[31];
|
60 |
|
|
crc[4] <= #1 d[0] ^ d[3] ^ d[4] ^ d[7] ^ d[9] ^ d[11] ^ d[12] ^ d[13] ^ d[15] ^
|
61 |
|
|
crc[16] ^ crc[18] ^ crc[19] ^ crc[20] ^ crc[22] ^ crc[24] ^ crc[27] ^ crc[28] ^ crc[31];
|
62 |
|
|
crc[5] <= #1 d[2] ^ d[5] ^ d[8] ^ d[9] ^ d[10] ^ d[11] ^ d[12] ^ d[14] ^ d[15]
|
63 |
|
|
^ crc[16] ^ crc[17] ^ crc[19] ^ crc[20] ^ crc[21] ^ crc[22] ^ crc[23] ^ crc[26] ^
|
64 |
|
|
crc[29];
|
65 |
|
|
crc[6] <= #1 d[1] ^ d[4] ^ d[7] ^ d[8] ^ d[9] ^ d[10] ^ d[11] ^ d[13] ^ d[14] ^
|
66 |
|
|
crc[17] ^ crc[18] ^ crc[20] ^ crc[21] ^ crc[22] ^ crc[23] ^ crc[24] ^ crc[27] ^ crc[30];
|
67 |
|
|
crc[7] <= #1 d[0] ^ d[5] ^ d[7] ^ d[8] ^ d[10] ^ d[12] ^ d[13] ^ d[15] ^ crc[16]
|
68 |
|
|
^ crc[18] ^ crc[19] ^ crc[21] ^ crc[23] ^ crc[24] ^ crc[26] ^ crc[31];
|
69 |
|
|
crc[8] <= #1 d[3] ^ d[4] ^ d[5] ^ d[7] ^ d[11] ^ d[12] ^ d[14] ^ d[15] ^ crc[16]
|
70 |
|
|
^ crc[17] ^ crc[19] ^ crc[20] ^ crc[24] ^ crc[26] ^ crc[27] ^ crc[28];
|
71 |
|
|
crc[9] <= #1 d[2] ^ d[3] ^ d[4] ^ d[6] ^ d[10] ^ d[11] ^ d[13] ^ d[14] ^ crc[17]
|
72 |
|
|
^ crc[18] ^ crc[20] ^ crc[21] ^ crc[25] ^ crc[27] ^ crc[28] ^ crc[29];
|
73 |
|
|
crc[10] <= #1 d[1] ^ d[2] ^ d[6] ^ d[10] ^ d[12] ^ d[13] ^ d[15] ^ crc[16] ^ crc[18]
|
74 |
|
|
^ crc[19] ^ crc[21] ^ crc[25] ^ crc[29] ^ crc[30];
|
75 |
|
|
crc[11] <= #1 d[0] ^ d[1] ^ d[3] ^ d[6] ^ d[11] ^ d[12] ^ d[14] ^ d[15] ^ crc[16]
|
76 |
|
|
^ crc[17] ^ crc[19] ^ crc[20] ^ crc[25] ^ crc[28] ^ crc[30] ^ crc[31];
|
77 |
|
|
crc[12] <= #1 d[0] ^ d[2] ^ d[3] ^ d[6] ^ d[9] ^ d[10] ^ d[11] ^ d[13] ^ d[14] ^
|
78 |
|
|
d[15] ^ crc[16] ^ crc[17] ^ crc[18] ^ crc[20] ^ crc[21] ^ crc[22] ^ crc[25] ^ crc[28]
|
79 |
|
|
^ crc[29] ^ crc[31];
|
80 |
|
|
crc[13] <= #1 d[1] ^ d[2] ^ d[5] ^ d[8] ^ d[9] ^ d[10] ^ d[12] ^ d[13] ^ d[14] ^
|
81 |
|
|
crc[17] ^ crc[18] ^ crc[19] ^ crc[21] ^ crc[22] ^ crc[23] ^ crc[26] ^ crc[29] ^ crc[30];
|
82 |
|
|
crc[14] <= #1 d[0] ^ d[1] ^ d[4] ^ d[7] ^ d[8] ^ d[9] ^ d[11] ^ d[12] ^ d[13] ^
|
83 |
|
|
crc[18] ^ crc[19] ^ crc[20] ^ crc[22] ^ crc[23] ^ crc[24] ^ crc[27] ^ crc[30] ^ crc[31];
|
84 |
|
|
crc[15] <= #1 d[0] ^ d[3] ^ d[6] ^ d[7] ^ d[8] ^ d[10] ^ d[11] ^ d[12] ^ crc[19] ^
|
85 |
|
|
crc[20] ^ crc[21] ^ crc[23] ^ crc[24] ^ crc[25] ^ crc[28] ^ crc[31];
|
86 |
|
|
crc[16] <= #1 d[2] ^ d[3] ^ d[7] ^ d[10] ^ d[11] ^ d[15] ^ crc[0] ^ crc[16] ^ crc[20]
|
87 |
|
|
^ crc[21] ^ crc[24] ^ crc[28] ^ crc[29];
|
88 |
|
|
crc[17] <= #1 d[1] ^ d[2] ^ d[6] ^ d[9] ^ d[10] ^ d[14] ^ crc[1] ^ crc[17] ^ crc[21] ^
|
89 |
|
|
crc[22] ^ crc[25] ^ crc[29] ^ crc[30];
|
90 |
|
|
crc[18] <= #1 d[0] ^ d[1] ^ d[5] ^ d[8] ^ d[9] ^ d[13] ^ crc[2] ^ crc[18] ^ crc[22] ^
|
91 |
|
|
crc[23] ^ crc[26] ^ crc[30] ^ crc[31];
|
92 |
|
|
crc[19] <= #1 d[0] ^ d[4] ^ d[7] ^ d[8] ^ d[12] ^ crc[3] ^ crc[19] ^ crc[23] ^ crc[24] ^
|
93 |
|
|
crc[27] ^ crc[31];
|
94 |
|
|
crc[20] <= #1 d[3] ^ d[6] ^ d[7] ^ d[11] ^ crc[4] ^ crc[20] ^ crc[24] ^ crc[25] ^ crc[28];
|
95 |
|
|
crc[21] <= #1 d[2] ^ d[5] ^ d[6] ^ d[10] ^ crc[5] ^ crc[21] ^ crc[25] ^ crc[26] ^ crc[29];
|
96 |
|
|
crc[22] <= #1 d[1] ^ d[3] ^ d[4] ^ d[6] ^ d[15] ^ crc[6] ^ crc[16] ^ crc[25] ^ crc[27] ^
|
97 |
|
|
crc[28] ^ crc[30];
|
98 |
|
|
crc[23] <= #1 d[0] ^ d[2] ^ d[6] ^ d[9] ^ d[14] ^ d[15] ^ crc[7] ^ crc[16] ^ crc[17] ^
|
99 |
|
|
crc[22] ^ crc[25] ^ crc[29] ^ crc[31];
|
100 |
|
|
crc[24] <= #1 d[1] ^ d[5] ^ d[8] ^ d[13] ^ d[14] ^ crc[8] ^ crc[17] ^ crc[18] ^ crc[23]
|
101 |
|
|
^ crc[26] ^ crc[30];
|
102 |
|
|
crc[25] <= #1 d[0] ^ d[4] ^ d[7] ^ d[12] ^ d[13] ^ crc[9] ^ crc[18] ^ crc[19] ^ crc[24]
|
103 |
|
|
^ crc[27] ^ crc[31];
|
104 |
|
|
crc[26] <= #1 d[5] ^ d[9] ^ d[11] ^ d[12] ^ d[15] ^ crc[10] ^ crc[16] ^ crc[19] ^ crc[20]
|
105 |
|
|
^ crc[22] ^ crc[26];
|
106 |
|
|
crc[27] <= #1 d[4] ^ d[8] ^ d[10] ^ d[11] ^ d[14] ^ crc[11] ^ crc[17] ^ crc[20] ^ crc[21]
|
107 |
|
|
^ crc[23] ^ crc[27];
|
108 |
|
|
crc[28] <= #1 d[3] ^ d[7] ^ d[9] ^ d[10] ^ d[13] ^ crc[12] ^ crc[18] ^ crc[21] ^ crc[22]
|
109 |
|
|
^ crc[24] ^ crc[28];
|
110 |
|
|
crc[29] <= #1 d[2] ^ d[6] ^ d[8] ^ d[9] ^ d[12] ^ crc[13] ^ crc[19] ^ crc[22] ^ crc[23]
|
111 |
|
|
^ crc[25] ^ crc[29];
|
112 |
|
|
crc[30] <= #1 d[1] ^ d[5] ^ d[7] ^ d[8] ^ d[11] ^ crc[14] ^ crc[20] ^ crc[23] ^ crc[24]
|
113 |
|
|
^ crc[26] ^ crc[30];
|
114 |
|
|
crc[31] <= #1 d[0] ^ d[4] ^ d[6] ^ d[7] ^ d[10] ^ crc[15] ^ crc[21] ^ crc[24] ^ crc[25]
|
115 |
|
|
^ crc[27] ^ crc[31];
|
116 |
|
|
end // if (en)
|
117 |
|
|
else
|
118 |
|
|
crc <= #1 crc;
|
119 |
|
|
end
|
120 |
|
|
|
121 |
|
|
endmodule
|
122 |
|
|
|
123 |
|
|
|