OpenCores
URL https://opencores.org/ocsvn/pci_express_crc/pci_express_crc/trunk

Subversion Repositories pci_express_crc

[/] [pci_express_crc/] [trunk/] [crc32d16.v] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
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
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.