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

Subversion Repositories xmatchpro

[/] [xmatchpro/] [trunk/] [xmw4-comdec/] [src/] [crc_unit_d_32.vhd] - Blame information for rev 9

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 8 eejlny
--This library is free software; you can redistribute it and/or
2
--modify it under the terms of the GNU Lesser General Public
3
--License as published by the Free Software Foundation; either
4
--version 2.1 of the License, or (at your option) any later version.
5
 
6
--This library is distributed in the hope that it will be useful,
7
--but WITHOUT ANY WARRANTY; without even the implied warranty of
8
--MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
9
--Lesser General Public License for more details.
10
 
11
--You should have received a copy of the GNU Lesser General Public
12
--License along with this library; if not, write to the Free Software
13
--Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
14
 
15
-- e_mail : j.l.nunez-yanez@byacom.co.uk
16
 
17
---------------------------------
18
--  ENTITY       = CRC_UNIT    --
19
--  version      = 1.0         --
20
--  last update  = 30/08/01    --
21
--  author       = Jose Nunez  --
22
---------------------------------
23
 
24
 
25
-- FUNCTION
26
-- calculates a 16 bit X25 CRC code
27
-- Purpose: VHDL package containing a synthesizable CRC function
28
--   * polynomial: (0 5 12 16)
29
--   * data width: 32
30
 
31
--  PIN LIST
32
--  DIN   = input data
33
--  ENABLE = activate CRC calculation
34
--  CRC_OUT = CRC output
35
 
36
library ieee;
37
use ieee.std_logic_1164.all;
38
 
39
entity CRC_UNIT_D_32 is
40
 
41
port(DIN : in bit_vector(31 downto 0);
42
         ENABLE : in bit;
43
         CLK : in bit;
44
         RESET : in bit;
45
         CLEAR : in bit;
46
         CRC_OUT : out bit_vector(31 downto 0)
47
);
48
 
49
end CRC_UNIT_D_32;
50
 
51
architecture CRC1 of CRC_UNIT_D_32 is
52
 
53
signal CRC_AUX : bit_vector(31 downto 0);
54
signal CRC_NEW : bit_vector(31 downto 0);
55
 
56
begin
57
 
58
 
59
FLIP_FLOPS : process (CLK,CLEAR)
60
begin
61
 
62
if (CLEAR = '0') then
63
        CRC_AUX <= x"00000000";
64
elsif ((CLK'event) and (CLK = '1')) then
65
        if (RESET = '0') then
66
                CRC_AUX <= x"00000000";
67
        elsif (ENABLE = '1') then
68
                CRC_AUX <= CRC_NEW;
69
        else
70
                CRC_AUX <= CRC_AUX;
71
        end if;
72
end if;
73
 
74
end process FLIP_FLOPS;
75
 
76
 
77
 
78
NEXT_CRC : process(DIN, CRC_AUX)
79
 
80
variable D: bit_vector(31 downto 0);
81
variable C: bit_vector(31 downto 0);
82
variable NewCRC : bit_vector(31 downto 0);
83
 
84
begin
85
 
86
    D := DIN;
87
    C := CRC_AUX;
88
 
89
     NewCRC(0) := D(31) xor D(30) xor D(29) xor D(28) xor D(26) xor D(25) xor
90
                 D(24) xor D(16) xor D(12) xor D(10) xor D(9) xor D(6) xor
91
                 D(0) xor C(0) xor C(6) xor C(9) xor C(10) xor C(12) xor
92
                 C(16) xor C(24) xor C(25) xor C(26) xor C(28) xor C(29) xor
93
                 C(30) xor C(31);
94
    NewCRC(1) := D(28) xor D(27) xor D(24) xor D(17) xor D(16) xor D(13) xor
95
                 D(12) xor D(11) xor D(9) xor D(7) xor D(6) xor D(1) xor
96
                 D(0) xor C(0) xor C(1) xor C(6) xor C(7) xor C(9) xor
97
                 C(11) xor C(12) xor C(13) xor C(16) xor C(17) xor C(24) xor
98
                 C(27) xor C(28);
99
    NewCRC(2) := D(31) xor D(30) xor D(26) xor D(24) xor D(18) xor D(17) xor
100
                 D(16) xor D(14) xor D(13) xor D(9) xor D(8) xor D(7) xor
101
                 D(6) xor D(2) xor D(1) xor D(0) xor C(0) xor C(1) xor
102
                 C(2) xor C(6) xor C(7) xor C(8) xor C(9) xor C(13) xor
103
                 C(14) xor C(16) xor C(17) xor C(18) xor C(24) xor C(26) xor
104
                 C(30) xor C(31);
105
    NewCRC(3) := D(31) xor D(27) xor D(25) xor D(19) xor D(18) xor D(17) xor
106
                 D(15) xor D(14) xor D(10) xor D(9) xor D(8) xor D(7) xor
107
                 D(3) xor D(2) xor D(1) xor C(1) xor C(2) xor C(3) xor
108
                 C(7) xor C(8) xor C(9) xor C(10) xor C(14) xor C(15) xor
109
                 C(17) xor C(18) xor C(19) xor C(25) xor C(27) xor C(31);
110
    NewCRC(4) := D(31) xor D(30) xor D(29) xor D(25) xor D(24) xor D(20) xor
111
                 D(19) xor D(18) xor D(15) xor D(12) xor D(11) xor D(8) xor
112
                 D(6) xor D(4) xor D(3) xor D(2) xor D(0) xor C(0) xor
113
                 C(2) xor C(3) xor C(4) xor C(6) xor C(8) xor C(11) xor
114
                 C(12) xor C(15) xor C(18) xor C(19) xor C(20) xor C(24) xor
115
                 C(25) xor C(29) xor C(30) xor C(31);
116
    NewCRC(5) := D(29) xor D(28) xor D(24) xor D(21) xor D(20) xor D(19) xor
117
                 D(13) xor D(10) xor D(7) xor D(6) xor D(5) xor D(4) xor
118
                 D(3) xor D(1) xor D(0) xor C(0) xor C(1) xor C(3) xor
119
                 C(4) xor C(5) xor C(6) xor C(7) xor C(10) xor C(13) xor
120
                 C(19) xor C(20) xor C(21) xor C(24) xor C(28) xor C(29);
121
    NewCRC(6) := D(30) xor D(29) xor D(25) xor D(22) xor D(21) xor D(20) xor
122
                 D(14) xor D(11) xor D(8) xor D(7) xor D(6) xor D(5) xor
123
                 D(4) xor D(2) xor D(1) xor C(1) xor C(2) xor C(4) xor
124
                 C(5) xor C(6) xor C(7) xor C(8) xor C(11) xor C(14) xor
125
                 C(20) xor C(21) xor C(22) xor C(25) xor C(29) xor C(30);
126
    NewCRC(7) := D(29) xor D(28) xor D(25) xor D(24) xor D(23) xor D(22) xor
127
                 D(21) xor D(16) xor D(15) xor D(10) xor D(8) xor D(7) xor
128
                 D(5) xor D(3) xor D(2) xor D(0) xor C(0) xor C(2) xor
129
                 C(3) xor C(5) xor C(7) xor C(8) xor C(10) xor C(15) xor
130
                 C(16) xor C(21) xor C(22) xor C(23) xor C(24) xor C(25) xor
131
                 C(28) xor C(29);
132
    NewCRC(8) := D(31) xor D(28) xor D(23) xor D(22) xor D(17) xor D(12) xor
133
                 D(11) xor D(10) xor D(8) xor D(4) xor D(3) xor D(1) xor
134
                 D(0) xor C(0) xor C(1) xor C(3) xor C(4) xor C(8) xor
135
                 C(10) xor C(11) xor C(12) xor C(17) xor C(22) xor C(23) xor
136
                 C(28) xor C(31);
137
    NewCRC(9) := D(29) xor D(24) xor D(23) xor D(18) xor D(13) xor D(12) xor
138
                 D(11) xor D(9) xor D(5) xor D(4) xor D(2) xor D(1) xor
139
                 C(1) xor C(2) xor C(4) xor C(5) xor C(9) xor C(11) xor
140
                 C(12) xor C(13) xor C(18) xor C(23) xor C(24) xor C(29);
141
    NewCRC(10) := D(31) xor D(29) xor D(28) xor D(26) xor D(19) xor D(16) xor
142
                  D(14) xor D(13) xor D(9) xor D(5) xor D(3) xor D(2) xor
143
                  D(0) xor C(0) xor C(2) xor C(3) xor C(5) xor C(9) xor
144
                  C(13) xor C(14) xor C(16) xor C(19) xor C(26) xor C(28) xor
145
                  C(29) xor C(31);
146
    NewCRC(11) := D(31) xor D(28) xor D(27) xor D(26) xor D(25) xor D(24) xor
147
                  D(20) xor D(17) xor D(16) xor D(15) xor D(14) xor D(12) xor
148
                  D(9) xor D(4) xor D(3) xor D(1) xor D(0) xor C(0) xor
149
                  C(1) xor C(3) xor C(4) xor C(9) xor C(12) xor C(14) xor
150
                  C(15) xor C(16) xor C(17) xor C(20) xor C(24) xor C(25) xor
151
                  C(26) xor C(27) xor C(28) xor C(31);
152
    NewCRC(12) := D(31) xor D(30) xor D(27) xor D(24) xor D(21) xor D(18) xor
153
                  D(17) xor D(15) xor D(13) xor D(12) xor D(9) xor D(6) xor
154
                  D(5) xor D(4) xor D(2) xor D(1) xor D(0) xor C(0) xor
155
                  C(1) xor C(2) xor C(4) xor C(5) xor C(6) xor C(9) xor
156
                  C(12) xor C(13) xor C(15) xor C(17) xor C(18) xor C(21) xor
157
                  C(24) xor C(27) xor C(30) xor C(31);
158
    NewCRC(13) := D(31) xor D(28) xor D(25) xor D(22) xor D(19) xor D(18) xor
159
                  D(16) xor D(14) xor D(13) xor D(10) xor D(7) xor D(6) xor
160
                  D(5) xor D(3) xor D(2) xor D(1) xor C(1) xor C(2) xor
161
                  C(3) xor C(5) xor C(6) xor C(7) xor C(10) xor C(13) xor
162
                  C(14) xor C(16) xor C(18) xor C(19) xor C(22) xor C(25) xor
163
                  C(28) xor C(31);
164
    NewCRC(14) := D(29) xor D(26) xor D(23) xor D(20) xor D(19) xor D(17) xor
165
                  D(15) xor D(14) xor D(11) xor D(8) xor D(7) xor D(6) xor
166
                  D(4) xor D(3) xor D(2) xor C(2) xor C(3) xor C(4) xor
167
                  C(6) xor C(7) xor C(8) xor C(11) xor C(14) xor C(15) xor
168
                  C(17) xor C(19) xor C(20) xor C(23) xor C(26) xor C(29);
169
    NewCRC(15) := D(30) xor D(27) xor D(24) xor D(21) xor D(20) xor D(18) xor
170
                  D(16) xor D(15) xor D(12) xor D(9) xor D(8) xor D(7) xor
171
                  D(5) xor D(4) xor D(3) xor C(3) xor C(4) xor C(5) xor
172
                  C(7) xor C(8) xor C(9) xor C(12) xor C(15) xor C(16) xor
173
                  C(18) xor C(20) xor C(21) xor C(24) xor C(27) xor C(30);
174
    NewCRC(16) := D(30) xor D(29) xor D(26) xor D(24) xor D(22) xor D(21) xor
175
                  D(19) xor D(17) xor D(13) xor D(12) xor D(8) xor D(5) xor
176
                  D(4) xor D(0) xor C(0) xor C(4) xor C(5) xor C(8) xor
177
                  C(12) xor C(13) xor C(17) xor C(19) xor C(21) xor C(22) xor
178
                  C(24) xor C(26) xor C(29) xor C(30);
179
    NewCRC(17) := D(31) xor D(30) xor D(27) xor D(25) xor D(23) xor D(22) xor
180
                  D(20) xor D(18) xor D(14) xor D(13) xor D(9) xor D(6) xor
181
                  D(5) xor D(1) xor C(1) xor C(5) xor C(6) xor C(9) xor
182
                  C(13) xor C(14) xor C(18) xor C(20) xor C(22) xor C(23) xor
183
                  C(25) xor C(27) xor C(30) xor C(31);
184
    NewCRC(18) := D(31) xor D(28) xor D(26) xor D(24) xor D(23) xor D(21) xor
185
                  D(19) xor D(15) xor D(14) xor D(10) xor D(7) xor D(6) xor
186
                  D(2) xor C(2) xor C(6) xor C(7) xor C(10) xor C(14) xor
187
                  C(15) xor C(19) xor C(21) xor C(23) xor C(24) xor C(26) xor
188
                  C(28) xor C(31);
189
    NewCRC(19) := D(29) xor D(27) xor D(25) xor D(24) xor D(22) xor D(20) xor
190
                  D(16) xor D(15) xor D(11) xor D(8) xor D(7) xor D(3) xor
191
                  C(3) xor C(7) xor C(8) xor C(11) xor C(15) xor C(16) xor
192
                  C(20) xor C(22) xor C(24) xor C(25) xor C(27) xor C(29);
193
    NewCRC(20) := D(30) xor D(28) xor D(26) xor D(25) xor D(23) xor D(21) xor
194
                  D(17) xor D(16) xor D(12) xor D(9) xor D(8) xor D(4) xor
195
                  C(4) xor C(8) xor C(9) xor C(12) xor C(16) xor C(17) xor
196
                  C(21) xor C(23) xor C(25) xor C(26) xor C(28) xor C(30);
197
    NewCRC(21) := D(31) xor D(29) xor D(27) xor D(26) xor D(24) xor D(22) xor
198
                  D(18) xor D(17) xor D(13) xor D(10) xor D(9) xor D(5) xor
199
                  C(5) xor C(9) xor C(10) xor C(13) xor C(17) xor C(18) xor
200
                  C(22) xor C(24) xor C(26) xor C(27) xor C(29) xor C(31);
201
    NewCRC(22) := D(31) xor D(29) xor D(27) xor D(26) xor D(24) xor D(23) xor
202
                  D(19) xor D(18) xor D(16) xor D(14) xor D(12) xor D(11) xor
203
                  D(9) xor D(0) xor C(0) xor C(9) xor C(11) xor C(12) xor
204
                  C(14) xor C(16) xor C(18) xor C(19) xor C(23) xor C(24) xor
205
                  C(26) xor C(27) xor C(29) xor C(31);
206
    NewCRC(23) := D(31) xor D(29) xor D(27) xor D(26) xor D(20) xor D(19) xor
207
                  D(17) xor D(16) xor D(15) xor D(13) xor D(9) xor D(6) xor
208
                  D(1) xor D(0) xor C(0) xor C(1) xor C(6) xor C(9) xor
209
                  C(13) xor C(15) xor C(16) xor C(17) xor C(19) xor C(20) xor
210
                  C(26) xor C(27) xor C(29) xor C(31);
211
    NewCRC(24) := D(30) xor D(28) xor D(27) xor D(21) xor D(20) xor D(18) xor
212
                  D(17) xor D(16) xor D(14) xor D(10) xor D(7) xor D(2) xor
213
                  D(1) xor C(1) xor C(2) xor C(7) xor C(10) xor C(14) xor
214
                  C(16) xor C(17) xor C(18) xor C(20) xor C(21) xor C(27) xor
215
                  C(28) xor C(30);
216
    NewCRC(25) := D(31) xor D(29) xor D(28) xor D(22) xor D(21) xor D(19) xor
217
                  D(18) xor D(17) xor D(15) xor D(11) xor D(8) xor D(3) xor
218
                  D(2) xor C(2) xor C(3) xor C(8) xor C(11) xor C(15) xor
219
                  C(17) xor C(18) xor C(19) xor C(21) xor C(22) xor C(28) xor
220
                  C(29) xor C(31);
221
    NewCRC(26) := D(31) xor D(28) xor D(26) xor D(25) xor D(24) xor D(23) xor
222
                  D(22) xor D(20) xor D(19) xor D(18) xor D(10) xor D(6) xor
223
                  D(4) xor D(3) xor D(0) xor C(0) xor C(3) xor C(4) xor
224
                  C(6) xor C(10) xor C(18) xor C(19) xor C(20) xor C(22) xor
225
                  C(23) xor C(24) xor C(25) xor C(26) xor C(28) xor C(31);
226
    NewCRC(27) := D(29) xor D(27) xor D(26) xor D(25) xor D(24) xor D(23) xor
227
                  D(21) xor D(20) xor D(19) xor D(11) xor D(7) xor D(5) xor
228
                  D(4) xor D(1) xor C(1) xor C(4) xor C(5) xor C(7) xor
229
                  C(11) xor C(19) xor C(20) xor C(21) xor C(23) xor C(24) xor
230
                  C(25) xor C(26) xor C(27) xor C(29);
231
    NewCRC(28) := D(30) xor D(28) xor D(27) xor D(26) xor D(25) xor D(24) xor
232
                  D(22) xor D(21) xor D(20) xor D(12) xor D(8) xor D(6) xor
233
                  D(5) xor D(2) xor C(2) xor C(5) xor C(6) xor C(8) xor
234
                  C(12) xor C(20) xor C(21) xor C(22) xor C(24) xor C(25) xor
235
                  C(26) xor C(27) xor C(28) xor C(30);
236
    NewCRC(29) := D(31) xor D(29) xor D(28) xor D(27) xor D(26) xor D(25) xor
237
                  D(23) xor D(22) xor D(21) xor D(13) xor D(9) xor D(7) xor
238
                  D(6) xor D(3) xor C(3) xor C(6) xor C(7) xor C(9) xor
239
                  C(13) xor C(21) xor C(22) xor C(23) xor C(25) xor C(26) xor
240
                  C(27) xor C(28) xor C(29) xor C(31);
241
    NewCRC(30) := D(30) xor D(29) xor D(28) xor D(27) xor D(26) xor D(24) xor
242
                  D(23) xor D(22) xor D(14) xor D(10) xor D(8) xor D(7) xor
243
                  D(4) xor C(4) xor C(7) xor C(8) xor C(10) xor C(14) xor
244
                  C(22) xor C(23) xor C(24) xor C(26) xor C(27) xor C(28) xor
245
                  C(29) xor C(30);
246
    NewCRC(31) := D(31) xor D(30) xor D(29) xor D(28) xor D(27) xor D(25) xor
247
                  D(24) xor D(23) xor D(15) xor D(11) xor D(9) xor D(8) xor
248
                  D(5) xor C(5) xor C(8) xor C(9) xor C(11) xor C(15) xor
249
                  C(23) xor C(24) xor C(25) xor C(27) xor C(28) xor C(29) xor
250
                  C(30) xor C(31);
251
 
252
CRC_NEW <= NewCRC;
253
 
254
end process NEXT_CRC;
255
 
256
CRC_OUT <= CRC_AUX;
257
 
258
end CRC1;
259
 
260
 

powered by: WebSVN 2.1.0

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