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

Subversion Repositories spi_slave

[/] [spi_slave/] [trunk/] [pcore/] [opb_spi_slave_v1_00_a/] [hdl/] [vhdl/] [PCK_CRC32_D32.vhd] - Blame information for rev 35

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 20 dkoethe
-----------------------------------------------------------------------
2
-- File:  PCK_CRC32_D32.vhd                              
3
-- Date:  Tue Mar  4 19:11:40 2008                                                      
4
--                                                                     
5
-- Copyright (C) 1999-2003 Easics NV.                 
6
-- This source file may be used and distributed without restriction    
7
-- provided that this copyright statement is not removed from the file 
8
-- and that any derivative work contains the original copyright notice
9
-- and the associated disclaimer.
10
--
11
-- THIS SOURCE FILE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS
12
-- OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
13
-- WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
14
--
15
-- Purpose: VHDL package containing a synthesizable CRC function
16
--   * polynomial: (0 1 2 4 5 7 8 10 11 12 16 22 23 26 32)
17
--   * data width: 32
18
--                                                                     
19
-- Info: tools@easics.be
20
--       http://www.easics.com                                  
21
-----------------------------------------------------------------------
22
 
23
 
24
library IEEE;
25
use IEEE.std_logic_1164.all;
26
 
27
package PCK_CRC32_D32 is
28
 
29
  -- polynomial: (0 1 2 4 5 7 8 10 11 12 16 22 23 26 32)
30
  -- data width: 32
31
  -- convention: the first serial data bit is D(31)
32
  function nextCRC32_D32
33
    ( Data:  std_logic_vector(31 downto 0);
34
      CRC:   std_logic_vector(31 downto 0) )
35
    return std_logic_vector;
36
 
37
end PCK_CRC32_D32;
38
 
39
library IEEE;
40
use IEEE.std_logic_1164.all;
41
 
42
package body PCK_CRC32_D32 is
43
 
44
  -- polynomial: (0 1 2 4 5 7 8 10 11 12 16 22 23 26 32)
45
  -- data width: 32
46
  -- convention: the first serial data bit is D(31)
47
  function nextCRC32_D32
48
    ( Data:  std_logic_vector(31 downto 0);
49
      CRC:   std_logic_vector(31 downto 0) )
50
    return std_logic_vector is
51
 
52
    variable D: std_logic_vector(31 downto 0);
53
    variable C: std_logic_vector(31 downto 0);
54
    variable NewCRC: std_logic_vector(31 downto 0);
55
 
56
  begin
57
 
58
    D := Data;
59
    C := CRC;
60
 
61
    NewCRC(0) := D(31) xor D(30) xor D(29) xor D(28) xor D(26) xor D(25) xor
62
                 D(24) xor D(16) xor D(12) xor D(10) xor D(9) xor D(6) xor
63
                 D(0) xor C(0) xor C(6) xor C(9) xor C(10) xor C(12) xor
64
                 C(16) xor C(24) xor C(25) xor C(26) xor C(28) xor C(29) xor
65
                 C(30) xor C(31);
66
    NewCRC(1) := D(28) xor D(27) xor D(24) xor D(17) xor D(16) xor D(13) xor
67
                 D(12) xor D(11) xor D(9) xor D(7) xor D(6) xor D(1) xor
68
                 D(0) xor C(0) xor C(1) xor C(6) xor C(7) xor C(9) xor
69
                 C(11) xor C(12) xor C(13) xor C(16) xor C(17) xor C(24) xor
70
                 C(27) xor C(28);
71
    NewCRC(2) := D(31) xor D(30) xor D(26) xor D(24) xor D(18) xor D(17) xor
72
                 D(16) xor D(14) xor D(13) xor D(9) xor D(8) xor D(7) xor
73
                 D(6) xor D(2) xor D(1) xor D(0) xor C(0) xor C(1) xor
74
                 C(2) xor C(6) xor C(7) xor C(8) xor C(9) xor C(13) xor
75
                 C(14) xor C(16) xor C(17) xor C(18) xor C(24) xor C(26) xor
76
                 C(30) xor C(31);
77
    NewCRC(3) := D(31) xor D(27) xor D(25) xor D(19) xor D(18) xor D(17) xor
78
                 D(15) xor D(14) xor D(10) xor D(9) xor D(8) xor D(7) xor
79
                 D(3) xor D(2) xor D(1) xor C(1) xor C(2) xor C(3) xor
80
                 C(7) xor C(8) xor C(9) xor C(10) xor C(14) xor C(15) xor
81
                 C(17) xor C(18) xor C(19) xor C(25) xor C(27) xor C(31);
82
    NewCRC(4) := D(31) xor D(30) xor D(29) xor D(25) xor D(24) xor D(20) xor
83
                 D(19) xor D(18) xor D(15) xor D(12) xor D(11) xor D(8) xor
84
                 D(6) xor D(4) xor D(3) xor D(2) xor D(0) xor C(0) xor
85
                 C(2) xor C(3) xor C(4) xor C(6) xor C(8) xor C(11) xor
86
                 C(12) xor C(15) xor C(18) xor C(19) xor C(20) xor C(24) xor
87
                 C(25) xor C(29) xor C(30) xor C(31);
88
    NewCRC(5) := D(29) xor D(28) xor D(24) xor D(21) xor D(20) xor D(19) xor
89
                 D(13) xor D(10) xor D(7) xor D(6) xor D(5) xor D(4) xor
90
                 D(3) xor D(1) xor D(0) xor C(0) xor C(1) xor C(3) xor
91
                 C(4) xor C(5) xor C(6) xor C(7) xor C(10) xor C(13) xor
92
                 C(19) xor C(20) xor C(21) xor C(24) xor C(28) xor C(29);
93
    NewCRC(6) := D(30) xor D(29) xor D(25) xor D(22) xor D(21) xor D(20) xor
94
                 D(14) xor D(11) xor D(8) xor D(7) xor D(6) xor D(5) xor
95
                 D(4) xor D(2) xor D(1) xor C(1) xor C(2) xor C(4) xor
96
                 C(5) xor C(6) xor C(7) xor C(8) xor C(11) xor C(14) xor
97
                 C(20) xor C(21) xor C(22) xor C(25) xor C(29) xor C(30);
98
    NewCRC(7) := D(29) xor D(28) xor D(25) xor D(24) xor D(23) xor D(22) xor
99
                 D(21) xor D(16) xor D(15) xor D(10) xor D(8) xor D(7) xor
100
                 D(5) xor D(3) xor D(2) xor D(0) xor C(0) xor C(2) xor
101
                 C(3) xor C(5) xor C(7) xor C(8) xor C(10) xor C(15) xor
102
                 C(16) xor C(21) xor C(22) xor C(23) xor C(24) xor C(25) xor
103
                 C(28) xor C(29);
104
    NewCRC(8) := D(31) xor D(28) xor D(23) xor D(22) xor D(17) xor D(12) xor
105
                 D(11) xor D(10) xor D(8) xor D(4) xor D(3) xor D(1) xor
106
                 D(0) xor C(0) xor C(1) xor C(3) xor C(4) xor C(8) xor
107
                 C(10) xor C(11) xor C(12) xor C(17) xor C(22) xor C(23) xor
108
                 C(28) xor C(31);
109
    NewCRC(9) := D(29) xor D(24) xor D(23) xor D(18) xor D(13) xor D(12) xor
110
                 D(11) xor D(9) xor D(5) xor D(4) xor D(2) xor D(1) xor
111
                 C(1) xor C(2) xor C(4) xor C(5) xor C(9) xor C(11) xor
112
                 C(12) xor C(13) xor C(18) xor C(23) xor C(24) xor C(29);
113
    NewCRC(10) := D(31) xor D(29) xor D(28) xor D(26) xor D(19) xor D(16) xor
114
                  D(14) xor D(13) xor D(9) xor D(5) xor D(3) xor D(2) xor
115
                  D(0) xor C(0) xor C(2) xor C(3) xor C(5) xor C(9) xor
116
                  C(13) xor C(14) xor C(16) xor C(19) xor C(26) xor C(28) xor
117
                  C(29) xor C(31);
118
    NewCRC(11) := D(31) xor D(28) xor D(27) xor D(26) xor D(25) xor D(24) xor
119
                  D(20) xor D(17) xor D(16) xor D(15) xor D(14) xor D(12) xor
120
                  D(9) xor D(4) xor D(3) xor D(1) xor D(0) xor C(0) xor
121
                  C(1) xor C(3) xor C(4) xor C(9) xor C(12) xor C(14) xor
122
                  C(15) xor C(16) xor C(17) xor C(20) xor C(24) xor C(25) xor
123
                  C(26) xor C(27) xor C(28) xor C(31);
124
    NewCRC(12) := D(31) xor D(30) xor D(27) xor D(24) xor D(21) xor D(18) xor
125
                  D(17) xor D(15) xor D(13) xor D(12) xor D(9) xor D(6) xor
126
                  D(5) xor D(4) xor D(2) xor D(1) xor D(0) xor C(0) xor
127
                  C(1) xor C(2) xor C(4) xor C(5) xor C(6) xor C(9) xor
128
                  C(12) xor C(13) xor C(15) xor C(17) xor C(18) xor C(21) xor
129
                  C(24) xor C(27) xor C(30) xor C(31);
130
    NewCRC(13) := D(31) xor D(28) xor D(25) xor D(22) xor D(19) xor D(18) xor
131
                  D(16) xor D(14) xor D(13) xor D(10) xor D(7) xor D(6) xor
132
                  D(5) xor D(3) xor D(2) xor D(1) xor C(1) xor C(2) xor
133
                  C(3) xor C(5) xor C(6) xor C(7) xor C(10) xor C(13) xor
134
                  C(14) xor C(16) xor C(18) xor C(19) xor C(22) xor C(25) xor
135
                  C(28) xor C(31);
136
    NewCRC(14) := D(29) xor D(26) xor D(23) xor D(20) xor D(19) xor D(17) xor
137
                  D(15) xor D(14) xor D(11) xor D(8) xor D(7) xor D(6) xor
138
                  D(4) xor D(3) xor D(2) xor C(2) xor C(3) xor C(4) xor
139
                  C(6) xor C(7) xor C(8) xor C(11) xor C(14) xor C(15) xor
140
                  C(17) xor C(19) xor C(20) xor C(23) xor C(26) xor C(29);
141
    NewCRC(15) := D(30) xor D(27) xor D(24) xor D(21) xor D(20) xor D(18) xor
142
                  D(16) xor D(15) xor D(12) xor D(9) xor D(8) xor D(7) xor
143
                  D(5) xor D(4) xor D(3) xor C(3) xor C(4) xor C(5) xor
144
                  C(7) xor C(8) xor C(9) xor C(12) xor C(15) xor C(16) xor
145
                  C(18) xor C(20) xor C(21) xor C(24) xor C(27) xor C(30);
146
    NewCRC(16) := D(30) xor D(29) xor D(26) xor D(24) xor D(22) xor D(21) xor
147
                  D(19) xor D(17) xor D(13) xor D(12) xor D(8) xor D(5) xor
148
                  D(4) xor D(0) xor C(0) xor C(4) xor C(5) xor C(8) xor
149
                  C(12) xor C(13) xor C(17) xor C(19) xor C(21) xor C(22) xor
150
                  C(24) xor C(26) xor C(29) xor C(30);
151
    NewCRC(17) := D(31) xor D(30) xor D(27) xor D(25) xor D(23) xor D(22) xor
152
                  D(20) xor D(18) xor D(14) xor D(13) xor D(9) xor D(6) xor
153
                  D(5) xor D(1) xor C(1) xor C(5) xor C(6) xor C(9) xor
154
                  C(13) xor C(14) xor C(18) xor C(20) xor C(22) xor C(23) xor
155
                  C(25) xor C(27) xor C(30) xor C(31);
156
    NewCRC(18) := D(31) xor D(28) xor D(26) xor D(24) xor D(23) xor D(21) xor
157
                  D(19) xor D(15) xor D(14) xor D(10) xor D(7) xor D(6) xor
158
                  D(2) xor C(2) xor C(6) xor C(7) xor C(10) xor C(14) xor
159
                  C(15) xor C(19) xor C(21) xor C(23) xor C(24) xor C(26) xor
160
                  C(28) xor C(31);
161
    NewCRC(19) := D(29) xor D(27) xor D(25) xor D(24) xor D(22) xor D(20) xor
162
                  D(16) xor D(15) xor D(11) xor D(8) xor D(7) xor D(3) xor
163
                  C(3) xor C(7) xor C(8) xor C(11) xor C(15) xor C(16) xor
164
                  C(20) xor C(22) xor C(24) xor C(25) xor C(27) xor C(29);
165
    NewCRC(20) := D(30) xor D(28) xor D(26) xor D(25) xor D(23) xor D(21) xor
166
                  D(17) xor D(16) xor D(12) xor D(9) xor D(8) xor D(4) xor
167
                  C(4) xor C(8) xor C(9) xor C(12) xor C(16) xor C(17) xor
168
                  C(21) xor C(23) xor C(25) xor C(26) xor C(28) xor C(30);
169
    NewCRC(21) := D(31) xor D(29) xor D(27) xor D(26) xor D(24) xor D(22) xor
170
                  D(18) xor D(17) xor D(13) xor D(10) xor D(9) xor D(5) xor
171
                  C(5) xor C(9) xor C(10) xor C(13) xor C(17) xor C(18) xor
172
                  C(22) xor C(24) xor C(26) xor C(27) xor C(29) xor C(31);
173
    NewCRC(22) := D(31) xor D(29) xor D(27) xor D(26) xor D(24) xor D(23) xor
174
                  D(19) xor D(18) xor D(16) xor D(14) xor D(12) xor D(11) xor
175
                  D(9) xor D(0) xor C(0) xor C(9) xor C(11) xor C(12) xor
176
                  C(14) xor C(16) xor C(18) xor C(19) xor C(23) xor C(24) xor
177
                  C(26) xor C(27) xor C(29) xor C(31);
178
    NewCRC(23) := D(31) xor D(29) xor D(27) xor D(26) xor D(20) xor D(19) xor
179
                  D(17) xor D(16) xor D(15) xor D(13) xor D(9) xor D(6) xor
180
                  D(1) xor D(0) xor C(0) xor C(1) xor C(6) xor C(9) xor
181
                  C(13) xor C(15) xor C(16) xor C(17) xor C(19) xor C(20) xor
182
                  C(26) xor C(27) xor C(29) xor C(31);
183
    NewCRC(24) := D(30) xor D(28) xor D(27) xor D(21) xor D(20) xor D(18) xor
184
                  D(17) xor D(16) xor D(14) xor D(10) xor D(7) xor D(2) xor
185
                  D(1) xor C(1) xor C(2) xor C(7) xor C(10) xor C(14) xor
186
                  C(16) xor C(17) xor C(18) xor C(20) xor C(21) xor C(27) xor
187
                  C(28) xor C(30);
188
    NewCRC(25) := D(31) xor D(29) xor D(28) xor D(22) xor D(21) xor D(19) xor
189
                  D(18) xor D(17) xor D(15) xor D(11) xor D(8) xor D(3) xor
190
                  D(2) xor C(2) xor C(3) xor C(8) xor C(11) xor C(15) xor
191
                  C(17) xor C(18) xor C(19) xor C(21) xor C(22) xor C(28) xor
192
                  C(29) xor C(31);
193
    NewCRC(26) := D(31) xor D(28) xor D(26) xor D(25) xor D(24) xor D(23) xor
194
                  D(22) xor D(20) xor D(19) xor D(18) xor D(10) xor D(6) xor
195
                  D(4) xor D(3) xor D(0) xor C(0) xor C(3) xor C(4) xor
196
                  C(6) xor C(10) xor C(18) xor C(19) xor C(20) xor C(22) xor
197
                  C(23) xor C(24) xor C(25) xor C(26) xor C(28) xor C(31);
198
    NewCRC(27) := D(29) xor D(27) xor D(26) xor D(25) xor D(24) xor D(23) xor
199
                  D(21) xor D(20) xor D(19) xor D(11) xor D(7) xor D(5) xor
200
                  D(4) xor D(1) xor C(1) xor C(4) xor C(5) xor C(7) xor
201
                  C(11) xor C(19) xor C(20) xor C(21) xor C(23) xor C(24) xor
202
                  C(25) xor C(26) xor C(27) xor C(29);
203
    NewCRC(28) := D(30) xor D(28) xor D(27) xor D(26) xor D(25) xor D(24) xor
204
                  D(22) xor D(21) xor D(20) xor D(12) xor D(8) xor D(6) xor
205
                  D(5) xor D(2) xor C(2) xor C(5) xor C(6) xor C(8) xor
206
                  C(12) xor C(20) xor C(21) xor C(22) xor C(24) xor C(25) xor
207
                  C(26) xor C(27) xor C(28) xor C(30);
208
    NewCRC(29) := D(31) xor D(29) xor D(28) xor D(27) xor D(26) xor D(25) xor
209
                  D(23) xor D(22) xor D(21) xor D(13) xor D(9) xor D(7) xor
210
                  D(6) xor D(3) xor C(3) xor C(6) xor C(7) xor C(9) xor
211
                  C(13) xor C(21) xor C(22) xor C(23) xor C(25) xor C(26) xor
212
                  C(27) xor C(28) xor C(29) xor C(31);
213
    NewCRC(30) := D(30) xor D(29) xor D(28) xor D(27) xor D(26) xor D(24) xor
214
                  D(23) xor D(22) xor D(14) xor D(10) xor D(8) xor D(7) xor
215
                  D(4) xor C(4) xor C(7) xor C(8) xor C(10) xor C(14) xor
216
                  C(22) xor C(23) xor C(24) xor C(26) xor C(27) xor C(28) xor
217
                  C(29) xor C(30);
218
    NewCRC(31) := D(31) xor D(30) xor D(29) xor D(28) xor D(27) xor D(25) xor
219
                  D(24) xor D(23) xor D(15) xor D(11) xor D(9) xor D(8) xor
220
                  D(5) xor C(5) xor C(8) xor C(9) xor C(11) xor C(15) xor
221
                  C(23) xor C(24) xor C(25) xor C(27) xor C(28) xor C(29) xor
222
                  C(30) xor C(31);
223
 
224
    return NewCRC;
225
 
226
  end nextCRC32_D32;
227
 
228
end PCK_CRC32_D32;
229
 

powered by: WebSVN 2.1.0

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