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

Subversion Repositories xmatchpro

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 9 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_C_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_C_32;
50
 
51
architecture CRC1 of CRC_UNIT_C_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
NEXT_CRC : process(DIN, CRC_AUX)
78
 
79
    variable D: bit_vector(31 downto 0);
80
    variable C: bit_vector(31 downto 0);
81
    variable NewCRC: bit_vector(31 downto 0);
82
 
83
  begin
84
 
85
    D := DIN;
86
    C := CRC_AUX;
87
 
88
    NewCRC(0) := D(31) xor D(30) xor D(29) xor D(28) xor D(26) xor D(25) xor
89
                 D(24) xor D(16) xor D(12) xor D(10) xor D(9) xor D(6) xor
90
                 D(0) xor C(0) xor C(6) xor C(9) xor C(10) xor C(12) xor
91
                 C(16) xor C(24) xor C(25) xor C(26) xor C(28) xor C(29) xor
92
                 C(30) xor C(31);
93
    NewCRC(1) := D(28) xor D(27) xor D(24) xor D(17) xor D(16) xor D(13) xor
94
                 D(12) xor D(11) xor D(9) xor D(7) xor D(6) xor D(1) xor
95
                 D(0) xor C(0) xor C(1) xor C(6) xor C(7) xor C(9) xor
96
                 C(11) xor C(12) xor C(13) xor C(16) xor C(17) xor C(24) xor
97
                 C(27) xor C(28);
98
    NewCRC(2) := D(31) xor D(30) xor D(26) xor D(24) xor D(18) xor D(17) xor
99
                 D(16) xor D(14) xor D(13) xor D(9) xor D(8) xor D(7) xor
100
                 D(6) xor D(2) xor D(1) xor D(0) xor C(0) xor C(1) xor
101
                 C(2) xor C(6) xor C(7) xor C(8) xor C(9) xor C(13) xor
102
                 C(14) xor C(16) xor C(17) xor C(18) xor C(24) xor C(26) xor
103
                 C(30) xor C(31);
104
    NewCRC(3) := D(31) xor D(27) xor D(25) xor D(19) xor D(18) xor D(17) xor
105
                 D(15) xor D(14) xor D(10) xor D(9) xor D(8) xor D(7) xor
106
                 D(3) xor D(2) xor D(1) xor C(1) xor C(2) xor C(3) xor
107
                 C(7) xor C(8) xor C(9) xor C(10) xor C(14) xor C(15) xor
108
                 C(17) xor C(18) xor C(19) xor C(25) xor C(27) xor C(31);
109
    NewCRC(4) := D(31) xor D(30) xor D(29) xor D(25) xor D(24) xor D(20) xor
110
                 D(19) xor D(18) xor D(15) xor D(12) xor D(11) xor D(8) xor
111
                 D(6) xor D(4) xor D(3) xor D(2) xor D(0) xor C(0) xor
112
                 C(2) xor C(3) xor C(4) xor C(6) xor C(8) xor C(11) xor
113
                 C(12) xor C(15) xor C(18) xor C(19) xor C(20) xor C(24) xor
114
                 C(25) xor C(29) xor C(30) xor C(31);
115
    NewCRC(5) := D(29) xor D(28) xor D(24) xor D(21) xor D(20) xor D(19) xor
116
                 D(13) xor D(10) xor D(7) xor D(6) xor D(5) xor D(4) xor
117
                 D(3) xor D(1) xor D(0) xor C(0) xor C(1) xor C(3) xor
118
                 C(4) xor C(5) xor C(6) xor C(7) xor C(10) xor C(13) xor
119
                 C(19) xor C(20) xor C(21) xor C(24) xor C(28) xor C(29);
120
    NewCRC(6) := D(30) xor D(29) xor D(25) xor D(22) xor D(21) xor D(20) xor
121
                 D(14) xor D(11) xor D(8) xor D(7) xor D(6) xor D(5) xor
122
                 D(4) xor D(2) xor D(1) xor C(1) xor C(2) xor C(4) xor
123
                 C(5) xor C(6) xor C(7) xor C(8) xor C(11) xor C(14) xor
124
                 C(20) xor C(21) xor C(22) xor C(25) xor C(29) xor C(30);
125
    NewCRC(7) := D(29) xor D(28) xor D(25) xor D(24) xor D(23) xor D(22) xor
126
                 D(21) xor D(16) xor D(15) xor D(10) xor D(8) xor D(7) xor
127
                 D(5) xor D(3) xor D(2) xor D(0) xor C(0) xor C(2) xor
128
                 C(3) xor C(5) xor C(7) xor C(8) xor C(10) xor C(15) xor
129
                 C(16) xor C(21) xor C(22) xor C(23) xor C(24) xor C(25) xor
130
                 C(28) xor C(29);
131
    NewCRC(8) := D(31) xor D(28) xor D(23) xor D(22) xor D(17) xor D(12) xor
132
                 D(11) xor D(10) xor D(8) xor D(4) xor D(3) xor D(1) xor
133
                 D(0) xor C(0) xor C(1) xor C(3) xor C(4) xor C(8) xor
134
                 C(10) xor C(11) xor C(12) xor C(17) xor C(22) xor C(23) xor
135
                 C(28) xor C(31);
136
    NewCRC(9) := D(29) xor D(24) xor D(23) xor D(18) xor D(13) xor D(12) xor
137
                 D(11) xor D(9) xor D(5) xor D(4) xor D(2) xor D(1) xor
138
                 C(1) xor C(2) xor C(4) xor C(5) xor C(9) xor C(11) xor
139
                 C(12) xor C(13) xor C(18) xor C(23) xor C(24) xor C(29);
140
    NewCRC(10) := D(31) xor D(29) xor D(28) xor D(26) xor D(19) xor D(16) xor
141
                  D(14) xor D(13) xor D(9) xor D(5) xor D(3) xor D(2) xor
142
                  D(0) xor C(0) xor C(2) xor C(3) xor C(5) xor C(9) xor
143
                  C(13) xor C(14) xor C(16) xor C(19) xor C(26) xor C(28) xor
144
                  C(29) xor C(31);
145
    NewCRC(11) := D(31) xor D(28) xor D(27) xor D(26) xor D(25) xor D(24) xor
146
                  D(20) xor D(17) xor D(16) xor D(15) xor D(14) xor D(12) xor
147
                  D(9) xor D(4) xor D(3) xor D(1) xor D(0) xor C(0) xor
148
                  C(1) xor C(3) xor C(4) xor C(9) xor C(12) xor C(14) xor
149
                  C(15) xor C(16) xor C(17) xor C(20) xor C(24) xor C(25) xor
150
                  C(26) xor C(27) xor C(28) xor C(31);
151
    NewCRC(12) := D(31) xor D(30) xor D(27) xor D(24) xor D(21) xor D(18) xor
152
                  D(17) xor D(15) xor D(13) xor D(12) xor D(9) xor D(6) xor
153
                  D(5) xor D(4) xor D(2) xor D(1) xor D(0) xor C(0) xor
154
                  C(1) xor C(2) xor C(4) xor C(5) xor C(6) xor C(9) xor
155
                  C(12) xor C(13) xor C(15) xor C(17) xor C(18) xor C(21) xor
156
                  C(24) xor C(27) xor C(30) xor C(31);
157
    NewCRC(13) := D(31) xor D(28) xor D(25) xor D(22) xor D(19) xor D(18) xor
158
                  D(16) xor D(14) xor D(13) xor D(10) xor D(7) xor D(6) xor
159
                  D(5) xor D(3) xor D(2) xor D(1) xor C(1) xor C(2) xor
160
                  C(3) xor C(5) xor C(6) xor C(7) xor C(10) xor C(13) xor
161
                  C(14) xor C(16) xor C(18) xor C(19) xor C(22) xor C(25) xor
162
                  C(28) xor C(31);
163
    NewCRC(14) := D(29) xor D(26) xor D(23) xor D(20) xor D(19) xor D(17) xor
164
                  D(15) xor D(14) xor D(11) xor D(8) xor D(7) xor D(6) xor
165
                  D(4) xor D(3) xor D(2) xor C(2) xor C(3) xor C(4) xor
166
                  C(6) xor C(7) xor C(8) xor C(11) xor C(14) xor C(15) xor
167
                  C(17) xor C(19) xor C(20) xor C(23) xor C(26) xor C(29);
168
    NewCRC(15) := D(30) xor D(27) xor D(24) xor D(21) xor D(20) xor D(18) xor
169
                  D(16) xor D(15) xor D(12) xor D(9) xor D(8) xor D(7) xor
170
                  D(5) xor D(4) xor D(3) xor C(3) xor C(4) xor C(5) xor
171
                  C(7) xor C(8) xor C(9) xor C(12) xor C(15) xor C(16) xor
172
                  C(18) xor C(20) xor C(21) xor C(24) xor C(27) xor C(30);
173
    NewCRC(16) := D(30) xor D(29) xor D(26) xor D(24) xor D(22) xor D(21) xor
174
                  D(19) xor D(17) xor D(13) xor D(12) xor D(8) xor D(5) xor
175
                  D(4) xor D(0) xor C(0) xor C(4) xor C(5) xor C(8) xor
176
                  C(12) xor C(13) xor C(17) xor C(19) xor C(21) xor C(22) xor
177
                  C(24) xor C(26) xor C(29) xor C(30);
178
    NewCRC(17) := D(31) xor D(30) xor D(27) xor D(25) xor D(23) xor D(22) xor
179
                  D(20) xor D(18) xor D(14) xor D(13) xor D(9) xor D(6) xor
180
                  D(5) xor D(1) xor C(1) xor C(5) xor C(6) xor C(9) xor
181
                  C(13) xor C(14) xor C(18) xor C(20) xor C(22) xor C(23) xor
182
                  C(25) xor C(27) xor C(30) xor C(31);
183
    NewCRC(18) := D(31) xor D(28) xor D(26) xor D(24) xor D(23) xor D(21) xor
184
                  D(19) xor D(15) xor D(14) xor D(10) xor D(7) xor D(6) xor
185
                  D(2) xor C(2) xor C(6) xor C(7) xor C(10) xor C(14) xor
186
                  C(15) xor C(19) xor C(21) xor C(23) xor C(24) xor C(26) xor
187
                  C(28) xor C(31);
188
    NewCRC(19) := D(29) xor D(27) xor D(25) xor D(24) xor D(22) xor D(20) xor
189
                  D(16) xor D(15) xor D(11) xor D(8) xor D(7) xor D(3) xor
190
                  C(3) xor C(7) xor C(8) xor C(11) xor C(15) xor C(16) xor
191
                  C(20) xor C(22) xor C(24) xor C(25) xor C(27) xor C(29);
192
    NewCRC(20) := D(30) xor D(28) xor D(26) xor D(25) xor D(23) xor D(21) xor
193
                  D(17) xor D(16) xor D(12) xor D(9) xor D(8) xor D(4) xor
194
                  C(4) xor C(8) xor C(9) xor C(12) xor C(16) xor C(17) xor
195
                  C(21) xor C(23) xor C(25) xor C(26) xor C(28) xor C(30);
196
    NewCRC(21) := D(31) xor D(29) xor D(27) xor D(26) xor D(24) xor D(22) xor
197
                  D(18) xor D(17) xor D(13) xor D(10) xor D(9) xor D(5) xor
198
                  C(5) xor C(9) xor C(10) xor C(13) xor C(17) xor C(18) xor
199
                  C(22) xor C(24) xor C(26) xor C(27) xor C(29) xor C(31);
200
    NewCRC(22) := D(31) xor D(29) xor D(27) xor D(26) xor D(24) xor D(23) xor
201
                  D(19) xor D(18) xor D(16) xor D(14) xor D(12) xor D(11) xor
202
                  D(9) xor D(0) xor C(0) xor C(9) xor C(11) xor C(12) xor
203
                  C(14) xor C(16) xor C(18) xor C(19) xor C(23) xor C(24) xor
204
                  C(26) xor C(27) xor C(29) xor C(31);
205
    NewCRC(23) := D(31) xor D(29) xor D(27) xor D(26) xor D(20) xor D(19) xor
206
                  D(17) xor D(16) xor D(15) xor D(13) xor D(9) xor D(6) xor
207
                  D(1) xor D(0) xor C(0) xor C(1) xor C(6) xor C(9) xor
208
                  C(13) xor C(15) xor C(16) xor C(17) xor C(19) xor C(20) xor
209
                  C(26) xor C(27) xor C(29) xor C(31);
210
    NewCRC(24) := D(30) xor D(28) xor D(27) xor D(21) xor D(20) xor D(18) xor
211
                  D(17) xor D(16) xor D(14) xor D(10) xor D(7) xor D(2) xor
212
                  D(1) xor C(1) xor C(2) xor C(7) xor C(10) xor C(14) xor
213
                  C(16) xor C(17) xor C(18) xor C(20) xor C(21) xor C(27) xor
214
                  C(28) xor C(30);
215
    NewCRC(25) := D(31) xor D(29) xor D(28) xor D(22) xor D(21) xor D(19) xor
216
                  D(18) xor D(17) xor D(15) xor D(11) xor D(8) xor D(3) xor
217
                  D(2) xor C(2) xor C(3) xor C(8) xor C(11) xor C(15) xor
218
                  C(17) xor C(18) xor C(19) xor C(21) xor C(22) xor C(28) xor
219
                  C(29) xor C(31);
220
    NewCRC(26) := D(31) xor D(28) xor D(26) xor D(25) xor D(24) xor D(23) xor
221
                  D(22) xor D(20) xor D(19) xor D(18) xor D(10) xor D(6) xor
222
                  D(4) xor D(3) xor D(0) xor C(0) xor C(3) xor C(4) xor
223
                  C(6) xor C(10) xor C(18) xor C(19) xor C(20) xor C(22) xor
224
                  C(23) xor C(24) xor C(25) xor C(26) xor C(28) xor C(31);
225
    NewCRC(27) := D(29) xor D(27) xor D(26) xor D(25) xor D(24) xor D(23) xor
226
                  D(21) xor D(20) xor D(19) xor D(11) xor D(7) xor D(5) xor
227
                  D(4) xor D(1) xor C(1) xor C(4) xor C(5) xor C(7) xor
228
                  C(11) xor C(19) xor C(20) xor C(21) xor C(23) xor C(24) xor
229
                  C(25) xor C(26) xor C(27) xor C(29);
230
    NewCRC(28) := D(30) xor D(28) xor D(27) xor D(26) xor D(25) xor D(24) xor
231
                  D(22) xor D(21) xor D(20) xor D(12) xor D(8) xor D(6) xor
232
                  D(5) xor D(2) xor C(2) xor C(5) xor C(6) xor C(8) xor
233
                  C(12) xor C(20) xor C(21) xor C(22) xor C(24) xor C(25) xor
234
                  C(26) xor C(27) xor C(28) xor C(30);
235
    NewCRC(29) := D(31) xor D(29) xor D(28) xor D(27) xor D(26) xor D(25) xor
236
                  D(23) xor D(22) xor D(21) xor D(13) xor D(9) xor D(7) xor
237
                  D(6) xor D(3) xor C(3) xor C(6) xor C(7) xor C(9) xor
238
                  C(13) xor C(21) xor C(22) xor C(23) xor C(25) xor C(26) xor
239
                  C(27) xor C(28) xor C(29) xor C(31);
240
    NewCRC(30) := D(30) xor D(29) xor D(28) xor D(27) xor D(26) xor D(24) xor
241
                  D(23) xor D(22) xor D(14) xor D(10) xor D(8) xor D(7) xor
242
                  D(4) xor C(4) xor C(7) xor C(8) xor C(10) xor C(14) xor
243
                  C(22) xor C(23) xor C(24) xor C(26) xor C(27) xor C(28) xor
244
                  C(29) xor C(30);
245
    NewCRC(31) := D(31) xor D(30) xor D(29) xor D(28) xor D(27) xor D(25) xor
246
                  D(24) xor D(23) xor D(15) xor D(11) xor D(9) xor D(8) xor
247
                  D(5) xor C(5) xor C(8) xor C(9) xor C(11) xor C(15) xor
248
                  C(23) xor C(24) xor C(25) xor C(27) xor C(28) xor C(29) xor
249
                  C(30) xor C(31);
250
 
251
CRC_NEW <= NewCRC;
252
 
253
end process NEXT_CRC;
254
 
255
CRC_OUT <= CRC_AUX;
256
 
257
end CRC1;
258
 
259
 

powered by: WebSVN 2.1.0

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