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

Subversion Repositories core1990_interlaken

[/] [core1990_interlaken/] [trunk/] [gateware/] [sources/] [interlaken/] [crc/] [crc-32.vhd] - Blame information for rev 11

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 11 N.Boukadid
 
2
--******************************************************************************
3
--*                                                                            *
4
--*           Calculates a CRC-32 over the data at Din, data may               *
5
--*           already arrive when Reset is high                                *
6
--*           The process from Din to CRC takes 2 Clk cycles                   *
7
--*           Frans Schreuder (Nikhef) franss@nikhef.nl                        *
8
--*                                                                            *
9
--******************************************************************************
10
 
11
 
12
library ieee;
13
use ieee.std_logic_1164.all;
14
library work;
15
 
16
entity CRC_32 is
17
--   generic(
18
--     Nbits :  positive        := 64;
19
--     CRC_Width                  :  positive   := 32;
20
--     G_Poly: Std_Logic_Vector :=x"1EDC_6F41"; --c1acf
21
--     G_InitVal: std_logic_vector:=x"ffff_ffff"
22
--     );
23
   port(
24
     CRC   : out    std_logic_vector(31 downto 0);
25
     Calc  : in     std_logic;
26
     Clk   : in     std_logic;
27
     DIn   : in     std_logic_vector(63 downto 0);
28
     Reset : in     std_logic);
29
end CRC_32;
30
 
31
 
32
architecture rtl of CRC_32 is
33
 
34
--    function ToIndirectInitVal(Direct:std_logic_vector; CRC_Width: positive; Poly: std_logic_vector) return std_logic_vector is 
35
--        variable InDirect: std_logic_vector(Direct'high downto Direct'low);
36
--    begin
37
--        for k in 0 to CRC_Width loop
38
--            if(k = 0) then
39
--                InDirect := Direct;
40
--            else
41
--                if(InDirect(0)='1') then
42
--                    InDirect := (('0'&InDirect(CRC_Width-1 downto 1)) xor ('1'&Poly(CRC_Width-1 downto 1)));
43
--                else
44
--                    InDirect := '0'&InDirect(CRC_Width-1 downto 1);
45
--                end if;
46
--            end if;
47
--        end loop;
48
--        return InDirect; 
49
--    end function ToIndirectInitVal;
50
 
51
--    constant Poly: Std_Logic_Vector(CRC_Width-1 downto 0) := G_Poly;
52
--    constant InitVal: Std_Logic_Vector(CRC_Width-1 downto 0) := G_InitVal;
53
 
54
--    constant InDirectInitVal: std_logic_vector(CRC_Width-1 downto 0):=ToIndirectInitVal(InitVal, CRC_Width, Poly);
55
--    signal Reg_s : std_logic_vector(CRC_Width-1 downto 0);  
56
--begin
57
 
58
 
59
--    process (Clk)
60
--        variable Reg, Reg2: Std_Logic_Vector (CRC_Width-1 downto 0);
61
--        variable ApplyPoly: std_logic;
62
--    begin
63
 
64
--        if rising_Edge(Clk) then
65
--            if Reset = '1' then
66
--                if(Calc = '1') then
67
--                    for k In 0 to Nbits loop
68
--                        if(k = 0) then
69
--                            Reg := (InDirectInitVal);--(CRC_Width-1 downto 0)&dinP(k))xor ('0'&Poly);
70
--                        else
71
--                            if Reg(CRC_Width-1) = '1' then
72
--                                Reg := (Reg(CRC_Width-2 downto 0)&din(Nbits - k))xor (Poly);
73
--                            else
74
--                                Reg := Reg(CRC_Width-2 downto 0)&din(Nbits - k);
75
--                            end if;
76
--                        end if;
77
--                    end loop;
78
--                else
79
--                    Reg := InDirectInitVal;
80
--                end if;
81
--            else
82
--                if Calc = '1' then
83
--                    for k In 1 to Nbits loop
84
--                        if Reg(CRC_Width-1) = '1' then
85
--                            Reg := (Reg(CRC_Width-2 downto 0)&din(Nbits - k))xor (Poly);
86
--                        else
87
--                            Reg := Reg(CRC_Width-2 downto 0)&din(Nbits - k);
88
--                        end if;
89
--                    end loop;
90
--                else
91
--                    Reg := Reg;
92
--                end if;
93
--            end if;
94
 
95
--            Reg_s <= Reg;
96
--            Reg2 := Reg_s;
97
--            --we need one more loop to output the CRC register to the output.
98
--            for k In 1 to CRC_Width loop
99
--                if Reg2(CRC_Width-1) = '1' then
100
--                    Reg2 := (Reg2(CRC_Width-2 downto 0)&'0')xor (Poly);
101
--                else
102
--                    Reg2:= Reg2(CRC_Width-2 downto 0)&'0';
103
--                end if;
104
--            end loop;
105
--            CRC <= Reg2;--(CRC_width-1 downto 0);
106
--        end if;
107
--    end process;
108
 
109
signal c: std_logic_vector(31 downto 0);
110
signal d: std_logic_vector(63 downto 0);
111
signal crc_out: std_logic_vector(31 downto 0);
112
begin
113
 
114
process(clk)
115
begin
116
    if rising_edge(clk) then
117
        d <= Din;
118
        if Reset = '1' then
119
            c <= (others => '1');
120
        else
121
            if Calc = '1' then
122
                c <= crc_out;
123
            end if;
124
        end if;
125
        CRC <= not crc_out;
126
    end if;
127
end process;
128
 
129
 
130
 crc_out(0) <=
131
    c(3) xor c(4) xor c(5) xor c(10) xor c(11) xor c(13) xor
132
    c(14) xor c(15) xor c(16) xor c(19) xor c(21) xor c(22) xor c(27) xor
133
    c(30) xor d(62) xor d(59) xor d(54) xor d(53) xor d(51) xor d(48) xor
134
    d(47) xor d(46) xor d(45) xor d(43) xor d(42) xor d(37) xor d(36) xor
135
    d(35) xor d(31) xor d(30) xor d(28) xor d(27) xor d(26) xor d(25) xor
136
    d(23) xor d(21) xor d(18) xor d(17) xor d(16) xor d(12) xor d(9) xor
137
    d(8) xor d(7) xor d(6) xor d(5) xor d(4) xor d(0);
138
 
139
 crc_out(1) <=
140
    c(0) xor c(4) xor c(5) xor c(6) xor c(11) xor c(12) xor
141
    c(14) xor c(15) xor c(16) xor c(17) xor c(20) xor c(22) xor c(23) xor
142
    c(28) xor c(31) xor d(63) xor d(60) xor d(55) xor d(54) xor d(52) xor
143
    d(49) xor d(48) xor d(47) xor d(46) xor d(44) xor d(43) xor d(38) xor
144
    d(37) xor d(36) xor d(32) xor d(31) xor d(29) xor d(28) xor d(27) xor
145
    d(26) xor d(24) xor d(22) xor d(19) xor d(18) xor d(17) xor d(13) xor
146
    d(10) xor d(9) xor d(8) xor d(7) xor d(6) xor d(5) xor d(1);
147
 
148
 crc_out(2) <=
149
    c(0) xor c(1) xor c(5) xor c(6) xor c(7) xor c(12) xor
150
    c(13) xor c(15) xor c(16) xor c(17) xor c(18) xor c(21) xor c(23) xor
151
    c(24) xor c(29) xor d(61) xor d(56) xor d(55) xor d(53) xor d(50) xor
152
    d(49) xor d(48) xor d(47) xor d(45) xor d(44) xor d(39) xor d(38) xor
153
    d(37) xor d(33) xor d(32) xor d(30) xor d(29) xor d(28) xor d(27) xor
154
    d(25) xor d(23) xor d(20) xor d(19) xor d(18) xor d(14) xor d(11) xor
155
    d(10) xor d(9) xor d(8) xor d(7) xor d(6) xor d(2);
156
 
157
 crc_out(3) <=
158
    c(1) xor c(2) xor c(6) xor c(7) xor c(8) xor c(13) xor
159
    c(14) xor c(16) xor c(17) xor c(18) xor c(19) xor c(22) xor c(24) xor
160
    c(25) xor c(30) xor d(62) xor d(57) xor d(56) xor d(54) xor d(51) xor
161
    d(50) xor d(49) xor d(48) xor d(46) xor d(45) xor d(40) xor d(39) xor
162
    d(38) xor d(34) xor d(33) xor d(31) xor d(30) xor d(29) xor d(28) xor
163
    d(26) xor d(24) xor d(21) xor d(20) xor d(19) xor d(15) xor d(12) xor
164
    d(11) xor d(10) xor d(9) xor d(8) xor d(7) xor d(3);
165
 
166
 crc_out(4) <=
167
    c(0) xor c(2) xor c(3) xor c(7) xor c(8) xor c(9) xor
168
    c(14) xor c(15) xor c(17) xor c(18) xor c(19) xor c(20) xor c(23) xor
169
    c(25) xor c(26) xor c(31) xor d(63) xor d(58) xor d(57) xor d(55) xor
170
    d(52) xor d(51) xor d(50) xor d(49) xor d(47) xor d(46) xor d(41) xor
171
    d(40) xor d(39) xor d(35) xor d(34) xor d(32) xor d(31) xor d(30) xor
172
    d(29) xor d(27) xor d(25) xor d(22) xor d(21) xor d(20) xor d(16) xor
173
    d(13) xor d(12) xor d(11) xor d(10) xor d(9) xor d(8) xor d(4);
174
 
175
 crc_out(5) <=
176
    c(0) xor c(1) xor c(3) xor c(4) xor c(8) xor c(9) xor
177
    c(10) xor c(15) xor c(16) xor c(18) xor c(19) xor c(20) xor c(21) xor
178
    c(24) xor c(26) xor c(27) xor d(59) xor d(58) xor d(56) xor d(53) xor
179
    d(52) xor d(51) xor d(50) xor d(48) xor d(47) xor d(42) xor d(41) xor
180
    d(40) xor d(36) xor d(35) xor d(33) xor d(32) xor d(31) xor d(30) xor
181
    d(28) xor d(26) xor d(23) xor d(22) xor d(21) xor d(17) xor d(14) xor
182
    d(13) xor d(12) xor d(11) xor d(10) xor d(9) xor d(5);
183
 
184
 crc_out(6) <=
185
    c(0) xor c(1) xor c(2) xor c(3) xor c(9) xor c(13) xor
186
    c(14) xor c(15) xor c(17) xor c(20) xor c(25) xor c(28) xor c(30) xor
187
    d(62) xor d(60) xor d(57) xor d(52) xor d(49) xor d(47) xor d(46) xor
188
    d(45) xor d(41) xor d(35) xor d(34) xor d(33) xor d(32) xor d(30) xor
189
    d(29) xor d(28) xor d(26) xor d(25) xor d(24) xor d(22) xor d(21) xor
190
    d(17) xor d(16) xor d(15) xor d(14) xor d(13) xor d(11) xor d(10) xor
191
    d(9) xor d(8) xor d(7) xor d(5) xor d(4) xor d(0);
192
 
193
 crc_out(7) <=
194
    c(1) xor c(2) xor c(3) xor c(4) xor c(10) xor c(14) xor
195
    c(15) xor c(16) xor c(18) xor c(21) xor c(26) xor c(29) xor c(31) xor
196
    d(63) xor d(61) xor d(58) xor d(53) xor d(50) xor d(48) xor d(47) xor
197
    d(46) xor d(42) xor d(36) xor d(35) xor d(34) xor d(33) xor d(31) xor
198
    d(30) xor d(29) xor d(27) xor d(26) xor d(25) xor d(23) xor d(22) xor
199
    d(18) xor d(17) xor d(16) xor d(15) xor d(14) xor d(12) xor d(11) xor
200
    d(10) xor d(9) xor d(8) xor d(6) xor d(5) xor d(1);
201
 
202
 crc_out(8) <=
203
    c(0) xor c(2) xor c(10) xor c(13) xor c(14) xor c(17) xor
204
    c(21) xor d(53) xor d(49) xor d(46) xor d(45) xor d(42) xor d(34) xor
205
    d(32) xor d(25) xor d(24) xor d(21) xor d(19) xor d(15) xor d(13) xor
206
    d(11) xor d(10) xor d(8) xor d(5) xor d(4) xor d(2) xor d(0);
207
 
208
 crc_out(9) <=
209
    c(1) xor c(4) xor c(5) xor c(10) xor c(13) xor c(16) xor
210
    c(18) xor c(19) xor c(21) xor c(27) xor c(30) xor d(62) xor d(59) xor
211
    d(53) xor d(51) xor d(50) xor d(48) xor d(45) xor d(42) xor d(37) xor
212
    d(36) xor d(33) xor d(31) xor d(30) xor d(28) xor d(27) xor d(23) xor
213
    d(22) xor d(21) xor d(20) xor d(18) xor d(17) xor d(14) xor d(11) xor
214
    d(8) xor d(7) xor d(4) xor d(3) xor d(1) xor d(0);
215
 
216
 crc_out(10) <=
217
    c(0) xor c(2) xor c(3) xor c(4) xor c(6) xor c(10) xor
218
    c(13) xor c(15) xor c(16) xor c(17) xor c(20) xor c(21) xor c(27) xor
219
    c(28) xor c(30) xor c(31) xor d(63) xor d(62) xor d(60) xor d(59) xor
220
    d(53) xor d(52) xor d(49) xor d(48) xor d(47) xor d(45) xor d(42) xor
221
    d(38) xor d(36) xor d(35) xor d(34) xor d(32) xor d(30) xor d(29) xor
222
    d(27) xor d(26) xor d(25) xor d(24) xor d(22) xor d(19) xor d(17) xor
223
    d(16) xor d(15) xor d(7) xor d(6) xor d(2) xor d(1) xor d(0);
224
 
225
 crc_out(11) <=
226
    c(1) xor c(7) xor c(10) xor c(13) xor c(15) xor c(17) xor
227
    c(18) xor c(19) xor c(27) xor c(28) xor c(29) xor c(30) xor c(31) xor
228
    d(63) xor d(62) xor d(61) xor d(60) xor d(59) xor d(51) xor d(50) xor
229
    d(49) xor d(47) xor d(45) xor d(42) xor d(39) xor d(33) xor d(21) xor
230
    d(20) xor d(12) xor d(9) xor d(6) xor d(5) xor d(4) xor d(3) xor
231
    d(2) xor d(1) xor d(0);
232
 
233
 crc_out(12) <=
234
    c(2) xor c(8) xor c(11) xor c(14) xor c(16) xor c(18) xor
235
    c(19) xor c(20) xor c(28) xor c(29) xor c(30) xor c(31) xor d(63) xor
236
    d(62) xor d(61) xor d(60) xor d(52) xor d(51) xor d(50) xor d(48) xor
237
    d(46) xor d(43) xor d(40) xor d(34) xor d(22) xor d(21) xor d(13) xor
238
    d(10) xor d(7) xor d(6) xor d(5) xor d(4) xor d(3) xor d(2) xor
239
    d(1);
240
 
241
 crc_out(13) <=
242
    c(4) xor c(5) xor c(9) xor c(10) xor c(11) xor c(12) xor
243
    c(13) xor c(14) xor c(16) xor c(17) xor c(20) xor c(22) xor c(27) xor
244
    c(29) xor c(31) xor d(63) xor d(61) xor d(59) xor d(54) xor d(52) xor
245
    d(49) xor d(48) xor d(46) xor d(45) xor d(44) xor d(43) xor d(42) xor
246
    d(41) xor d(37) xor d(36) xor d(31) xor d(30) xor d(28) xor d(27) xor
247
    d(26) xor d(25) xor d(22) xor d(21) xor d(18) xor d(17) xor d(16) xor
248
    d(14) xor d(12) xor d(11) xor d(9) xor d(3) xor d(2) xor d(0);
249
 
250
 crc_out(14) <=
251
    c(0) xor c(3) xor c(4) xor c(6) xor c(12) xor c(16) xor
252
    c(17) xor c(18) xor c(19) xor c(22) xor c(23) xor c(27) xor c(28) xor
253
    d(60) xor d(59) xor d(55) xor d(54) xor d(51) xor d(50) xor d(49) xor
254
    d(48) xor d(44) xor d(38) xor d(36) xor d(35) xor d(32) xor d(30) xor
255
    d(29) xor d(25) xor d(22) xor d(21) xor d(19) xor d(16) xor d(15) xor
256
    d(13) xor d(10) xor d(9) xor d(8) xor d(7) xor d(6) xor d(5) xor
257
    d(3) xor d(1) xor d(0);
258
 
259
 crc_out(15) <=
260
    c(1) xor c(4) xor c(5) xor c(7) xor c(13) xor c(17) xor
261
    c(18) xor c(19) xor c(20) xor c(23) xor c(24) xor c(28) xor c(29) xor
262
    d(61) xor d(60) xor d(56) xor d(55) xor d(52) xor d(51) xor d(50) xor
263
    d(49) xor d(45) xor d(39) xor d(37) xor d(36) xor d(33) xor d(31) xor
264
    d(30) xor d(26) xor d(23) xor d(22) xor d(20) xor d(17) xor d(16) xor
265
    d(14) xor d(11) xor d(10) xor d(9) xor d(8) xor d(7) xor d(6) xor
266
    d(4) xor d(2) xor d(1);
267
 
268
 crc_out(16) <=
269
    c(0) xor c(2) xor c(5) xor c(6) xor c(8) xor c(14) xor
270
    c(18) xor c(19) xor c(20) xor c(21) xor c(24) xor c(25) xor c(29) xor
271
    c(30) xor d(62) xor d(61) xor d(57) xor d(56) xor d(53) xor d(52) xor
272
    d(51) xor d(50) xor d(46) xor d(40) xor d(38) xor d(37) xor d(34) xor
273
    d(32) xor d(31) xor d(27) xor d(24) xor d(23) xor d(21) xor d(18) xor
274
    d(17) xor d(15) xor d(12) xor d(11) xor d(10) xor d(9) xor d(8) xor
275
    d(7) xor d(5) xor d(3) xor d(2);
276
 
277
 crc_out(17) <=
278
    c(0) xor c(1) xor c(3) xor c(6) xor c(7) xor c(9) xor
279
    c(15) xor c(19) xor c(20) xor c(21) xor c(22) xor c(25) xor c(26) xor
280
    c(30) xor c(31) xor d(63) xor d(62) xor d(58) xor d(57) xor d(54) xor
281
    d(53) xor d(52) xor d(51) xor d(47) xor d(41) xor d(39) xor d(38) xor
282
    d(35) xor d(33) xor d(32) xor d(28) xor d(25) xor d(24) xor d(22) xor
283
    d(19) xor d(18) xor d(16) xor d(13) xor d(12) xor d(11) xor d(10) xor
284
    d(9) xor d(8) xor d(6) xor d(4) xor d(3);
285
 
286
 crc_out(18) <=
287
    c(1) xor c(2) xor c(3) xor c(5) xor c(7) xor c(8) xor
288
    c(11) xor c(13) xor c(14) xor c(15) xor c(19) xor c(20) xor c(23) xor
289
    c(26) xor c(30) xor c(31) xor d(63) xor d(62) xor d(58) xor d(55) xor
290
    d(52) xor d(51) xor d(47) xor d(46) xor d(45) xor d(43) xor d(40) xor
291
    d(39) xor d(37) xor d(35) xor d(34) xor d(33) xor d(31) xor d(30) xor
292
    d(29) xor d(28) xor d(27) xor d(21) xor d(20) xor d(19) xor d(18) xor
293
    d(16) xor d(14) xor d(13) xor d(11) xor d(10) xor d(8) xor d(6) xor
294
    d(0);
295
 
296
 crc_out(19) <=
297
    c(0) xor c(2) xor c(5) xor c(6) xor c(8) xor c(9) xor
298
    c(10) xor c(11) xor c(12) xor c(13) xor c(19) xor c(20) xor c(22) xor
299
    c(24) xor c(30) xor c(31) xor d(63) xor d(62) xor d(56) xor d(54) xor
300
    d(52) xor d(51) xor d(45) xor d(44) xor d(43) xor d(42) xor d(41) xor
301
    d(40) xor d(38) xor d(37) xor d(34) xor d(32) xor d(29) xor d(27) xor
302
    d(26) xor d(25) xor d(23) xor d(22) xor d(20) xor d(19) xor d(18) xor
303
    d(16) xor d(15) xor d(14) xor d(11) xor d(8) xor d(6) xor d(5) xor
304
    d(4) xor d(1) xor d(0);
305
 
306
 crc_out(20) <=
307
    c(1) xor c(4) xor c(5) xor c(6) xor c(7) xor c(9) xor
308
    c(12) xor c(15) xor c(16) xor c(19) xor c(20) xor c(22) xor c(23) xor
309
    c(25) xor c(27) xor c(30) xor c(31) xor d(63) xor d(62) xor d(59) xor
310
    d(57) xor d(55) xor d(54) xor d(52) xor d(51) xor d(48) xor d(47) xor
311
    d(44) xor d(41) xor d(39) xor d(38) xor d(37) xor d(36) xor d(33) xor
312
    d(31) xor d(25) xor d(24) xor d(20) xor d(19) xor d(18) xor d(15) xor
313
    d(8) xor d(4) xor d(2) xor d(1) xor d(0);
314
 
315
 crc_out(21) <=
316
    c(0) xor c(2) xor c(5) xor c(6) xor c(7) xor c(8) xor
317
    c(10) xor c(13) xor c(16) xor c(17) xor c(20) xor c(21) xor c(23) xor
318
    c(24) xor c(26) xor c(28) xor c(31) xor d(63) xor d(60) xor d(58) xor
319
    d(56) xor d(55) xor d(53) xor d(52) xor d(49) xor d(48) xor d(45) xor
320
    d(42) xor d(40) xor d(39) xor d(38) xor d(37) xor d(34) xor d(32) xor
321
    d(26) xor d(25) xor d(21) xor d(20) xor d(19) xor d(16) xor d(9) xor
322
    d(5) xor d(3) xor d(2) xor d(1);
323
 
324
 crc_out(22) <=
325
    c(1) xor c(4) xor c(5) xor c(6) xor c(7) xor c(8) xor
326
    c(9) xor c(10) xor c(13) xor c(15) xor c(16) xor c(17) xor c(18) xor
327
    c(19) xor c(24) xor c(25) xor c(29) xor c(30) xor d(62) xor d(61) xor
328
    d(57) xor d(56) xor d(51) xor d(50) xor d(49) xor d(48) xor d(47) xor
329
    d(45) xor d(42) xor d(41) xor d(40) xor d(39) xor d(38) xor d(37) xor
330
    d(36) xor d(33) xor d(31) xor d(30) xor d(28) xor d(25) xor d(23) xor
331
    d(22) xor d(20) xor d(18) xor d(16) xor d(12) xor d(10) xor d(9) xor
332
    d(8) xor d(7) xor d(5) xor d(3) xor d(2) xor d(0);
333
 
334
 crc_out(23) <=
335
    c(0) xor c(2) xor c(3) xor c(4) xor c(6) xor c(7) xor
336
    c(8) xor c(9) xor c(13) xor c(15) xor c(17) xor c(18) xor c(20) xor
337
    c(21) xor c(22) xor c(25) xor c(26) xor c(27) xor c(31) xor d(63) xor
338
    d(59) xor d(58) xor d(57) xor d(54) xor d(53) xor d(52) xor d(50) xor
339
    d(49) xor d(47) xor d(45) xor d(41) xor d(40) xor d(39) xor d(38) xor
340
    d(36) xor d(35) xor d(34) xor d(32) xor d(30) xor d(29) xor d(28) xor
341
    d(27) xor d(25) xor d(24) xor d(19) xor d(18) xor d(16) xor d(13) xor
342
    d(12) xor d(11) xor d(10) xor d(7) xor d(5) xor d(3) xor d(1) xor
343
    d(0);
344
 
345
 crc_out(24) <=
346
    c(1) xor c(3) xor c(4) xor c(5) xor c(7) xor c(8) xor
347
    c(9) xor c(10) xor c(14) xor c(16) xor c(18) xor c(19) xor c(21) xor
348
    c(22) xor c(23) xor c(26) xor c(27) xor c(28) xor d(60) xor d(59) xor
349
    d(58) xor d(55) xor d(54) xor d(53) xor d(51) xor d(50) xor d(48) xor
350
    d(46) xor d(42) xor d(41) xor d(40) xor d(39) xor d(37) xor d(36) xor
351
    d(35) xor d(33) xor d(31) xor d(30) xor d(29) xor d(28) xor d(26) xor
352
    d(25) xor d(20) xor d(19) xor d(17) xor d(14) xor d(13) xor d(12) xor
353
    d(11) xor d(8) xor d(6) xor d(4) xor d(2) xor d(1);
354
 
355
 crc_out(25) <=
356
    c(0) xor c(2) xor c(3) xor c(6) xor c(8) xor c(9) xor
357
    c(13) xor c(14) xor c(16) xor c(17) xor c(20) xor c(21) xor c(23) xor
358
    c(24) xor c(28) xor c(29) xor c(30) xor d(62) xor d(61) xor d(60) xor
359
    d(56) xor d(55) xor d(53) xor d(52) xor d(49) xor d(48) xor d(46) xor
360
    d(45) xor d(41) xor d(40) xor d(38) xor d(35) xor d(34) xor d(32) xor
361
    d(29) xor d(28) xor d(25) xor d(23) xor d(20) xor d(17) xor d(16) xor
362
    d(15) xor d(14) xor d(13) xor d(8) xor d(6) xor d(4) xor d(3) xor
363
    d(2) xor d(0);
364
 
365
 crc_out(26) <=
366
    c(1) xor c(5) xor c(7) xor c(9) xor c(11) xor c(13) xor
367
    c(16) xor c(17) xor c(18) xor c(19) xor c(24) xor c(25) xor c(27) xor
368
    c(29) xor c(31) xor d(63) xor d(61) xor d(59) xor d(57) xor d(56) xor
369
    d(51) xor d(50) xor d(49) xor d(48) xor d(45) xor d(43) xor d(41) xor
370
    d(39) xor d(37) xor d(33) xor d(31) xor d(29) xor d(28) xor d(27) xor
371
    d(25) xor d(24) xor d(23) xor d(15) xor d(14) xor d(12) xor d(8) xor
372
    d(6) xor d(3) xor d(1) xor d(0);
373
 
374
 crc_out(27) <=
375
    c(0) xor c(2) xor c(3) xor c(4) xor c(5) xor c(6) xor
376
    c(8) xor c(11) xor c(12) xor c(13) xor c(15) xor c(16) xor c(17) xor
377
    c(18) xor c(20) xor c(21) xor c(22) xor c(25) xor c(26) xor c(27) xor
378
    c(28) xor d(60) xor d(59) xor d(58) xor d(57) xor d(54) xor d(53) xor
379
    d(52) xor d(50) xor d(49) xor d(48) xor d(47) xor d(45) xor d(44) xor
380
    d(43) xor d(40) xor d(38) xor d(37) xor d(36) xor d(35) xor d(34) xor
381
    d(32) xor d(31) xor d(29) xor d(27) xor d(24) xor d(23) xor d(21) xor
382
    d(18) xor d(17) xor d(15) xor d(13) xor d(12) xor d(8) xor d(6) xor
383
    d(5) xor d(2) xor d(1) xor d(0);
384
 
385
 crc_out(28) <=
386
    c(0) xor c(1) xor c(6) xor c(7) xor c(9) xor c(10) xor
387
    c(11) xor c(12) xor c(15) xor c(17) xor c(18) xor c(23) xor c(26) xor
388
    c(28) xor c(29) xor c(30) xor d(62) xor d(61) xor d(60) xor d(58) xor
389
    d(55) xor d(50) xor d(49) xor d(47) xor d(44) xor d(43) xor d(42) xor
390
    d(41) xor d(39) xor d(38) xor d(33) xor d(32) xor d(31) xor d(27) xor
391
    d(26) xor d(24) xor d(23) xor d(22) xor d(21) xor d(19) xor d(17) xor
392
    d(14) xor d(13) xor d(12) xor d(8) xor d(5) xor d(4) xor d(3) xor
393
    d(2) xor d(1) xor d(0);
394
 
395
 crc_out(29) <=
396
    c(0) xor c(1) xor c(2) xor c(7) xor c(8) xor c(10) xor
397
    c(11) xor c(12) xor c(13) xor c(16) xor c(18) xor c(19) xor c(24) xor
398
    c(27) xor c(29) xor c(30) xor c(31) xor d(63) xor d(62) xor d(61) xor
399
    d(59) xor d(56) xor d(51) xor d(50) xor d(48) xor d(45) xor d(44) xor
400
    d(43) xor d(42) xor d(40) xor d(39) xor d(34) xor d(33) xor d(32) xor
401
    d(28) xor d(27) xor d(25) xor d(24) xor d(23) xor d(22) xor d(20) xor
402
    d(18) xor d(15) xor d(14) xor d(13) xor d(9) xor d(6) xor d(5) xor
403
    d(4) xor d(3) xor d(2) xor d(1);
404
 
405
 crc_out(30) <=
406
    c(1) xor c(2) xor c(3) xor c(8) xor c(9) xor c(11) xor
407
    c(12) xor c(13) xor c(14) xor c(17) xor c(19) xor c(20) xor c(25) xor
408
    c(28) xor c(30) xor c(31) xor d(63) xor d(62) xor d(60) xor d(57) xor
409
    d(52) xor d(51) xor d(49) xor d(46) xor d(45) xor d(44) xor d(43) xor
410
    d(41) xor d(40) xor d(35) xor d(34) xor d(33) xor d(29) xor d(28) xor
411
    d(26) xor d(25) xor d(24) xor d(23) xor d(21) xor d(19) xor d(16) xor
412
    d(15) xor d(14) xor d(10) xor d(7) xor d(6) xor d(5) xor d(4) xor
413
    d(3) xor d(2);
414
 
415
 crc_out(31) <=
416
    c(2) xor c(3) xor c(4) xor c(9) xor c(10) xor c(12) xor
417
    c(13) xor c(14) xor c(15) xor c(18) xor c(20) xor c(21) xor c(26) xor
418
    c(29) xor c(31) xor d(63) xor d(61) xor d(58) xor d(53) xor d(52) xor
419
    d(50) xor d(47) xor d(46) xor d(45) xor d(44) xor d(42) xor d(41) xor
420
    d(36) xor d(35) xor d(34) xor d(30) xor d(29) xor d(27) xor d(26) xor
421
    d(25) xor d(24) xor d(22) xor d(20) xor d(17) xor d(16) xor d(15) xor
422
    d(11) xor d(8) xor d(7) xor d(6) xor d(5) xor d(4) xor d(3);
423
 
424
 
425
 
426
 
427
end architecture rtl ; -- of CRC
428
 

powered by: WebSVN 2.1.0

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