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

Subversion Repositories reed_solomon_codec_generator

[/] [reed_solomon_codec_generator/] [trunk/] [example/] [rtl/] [RsDecodeSyndrome.v] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 issei
//===================================================================
2
// Module Name : RsDecodeSyndrome
3
// File Name   : RsDecodeSyndrome.v
4
// Function    : Rs Decoder syndrome calculation
5
// 
6
// Revision History:
7
// Date          By           Version    Change Description
8
//===================================================================
9
// 2009/02/03  Gael Sapience     1.0       Original
10
//
11
//===================================================================
12
// (C) COPYRIGHT 2009 SYSTEM LSI CO., Ltd.
13
//
14
 
15
 
16
module RsDecodeSyndrome(
17
   CLK,           // system clock
18
   RESET,         // system reset
19
   enable,        // enable signal
20
   sync,          // sync signal
21
   dataIn,        // data input
22
   syndrome_0,    // syndrome polynom 0
23
   syndrome_1,    // syndrome polynom 1
24
   syndrome_2,    // syndrome polynom 2
25
   syndrome_3,    // syndrome polynom 3
26
   syndrome_4,    // syndrome polynom 4
27
   syndrome_5,    // syndrome polynom 5
28
   syndrome_6,    // syndrome polynom 6
29
   syndrome_7,    // syndrome polynom 7
30
   syndrome_8,    // syndrome polynom 8
31
   syndrome_9,    // syndrome polynom 9
32
   syndrome_10,   // syndrome polynom 10
33
   syndrome_11,   // syndrome polynom 11
34
   syndrome_12,   // syndrome polynom 12
35
   syndrome_13,   // syndrome polynom 13
36
   syndrome_14,   // syndrome polynom 14
37
   syndrome_15,   // syndrome polynom 15
38
   syndrome_16,   // syndrome polynom 16
39
   syndrome_17,   // syndrome polynom 17
40
   syndrome_18,   // syndrome polynom 18
41
   syndrome_19,   // syndrome polynom 19
42
   syndrome_20,   // syndrome polynom 20
43
   syndrome_21,   // syndrome polynom 21
44
   done           // done signal
45
);
46
 
47
 
48
   input          CLK;           // system clock
49
   input          RESET;         // system reset
50
   input          enable;        // enable signal
51
   input          sync;          // sync signal
52
   input  [7:0]   dataIn;        // data input
53
   output [7:0]   syndrome_0;    // syndrome polynom 0
54
   output [7:0]   syndrome_1;    // syndrome polynom 1
55
   output [7:0]   syndrome_2;    // syndrome polynom 2
56
   output [7:0]   syndrome_3;    // syndrome polynom 3
57
   output [7:0]   syndrome_4;    // syndrome polynom 4
58
   output [7:0]   syndrome_5;    // syndrome polynom 5
59
   output [7:0]   syndrome_6;    // syndrome polynom 6
60
   output [7:0]   syndrome_7;    // syndrome polynom 7
61
   output [7:0]   syndrome_8;    // syndrome polynom 8
62
   output [7:0]   syndrome_9;    // syndrome polynom 9
63
   output [7:0]   syndrome_10;   // syndrome polynom 10
64
   output [7:0]   syndrome_11;   // syndrome polynom 11
65
   output [7:0]   syndrome_12;   // syndrome polynom 12
66
   output [7:0]   syndrome_13;   // syndrome polynom 13
67
   output [7:0]   syndrome_14;   // syndrome polynom 14
68
   output [7:0]   syndrome_15;   // syndrome polynom 15
69
   output [7:0]   syndrome_16;   // syndrome polynom 16
70
   output [7:0]   syndrome_17;   // syndrome polynom 17
71
   output [7:0]   syndrome_18;   // syndrome polynom 18
72
   output [7:0]   syndrome_19;   // syndrome polynom 19
73
   output [7:0]   syndrome_20;   // syndrome polynom 20
74
   output [7:0]   syndrome_21;   // syndrome polynom 21
75
   output         done;          // done signal
76
 
77
 
78
   //------------------------------------------------------------------------
79
   // + count
80
   //- Counter
81
   //------------------------------------------------------------------------
82
   reg    [7:0]   count;
83
   always @(posedge CLK or negedge RESET) begin
84
      if (~RESET) begin
85
         count [7:0] <= 8'd0;
86
      end
87
      else if (enable == 1'b1) begin
88
         if (sync == 1'b1) begin
89
            count[7:0] <= 8'd1;
90
         end
91
         else if ( (count[7:0] ==8'd0) || (count[7:0] ==8'd255)) begin
92
            count[7:0] <= 8'd0;
93
         end
94
         else begin
95
            count[7:0] <= count[7:0] + 8'd1;
96
         end
97
      end
98
   end
99
 
100
 
101
 
102
   //------------------------------------------------------------------------
103
   // + done
104
   //------------------------------------------------------------------------
105
   reg         done;
106
   always @(count) begin
107
      if (count ==8'd255) begin
108
         done = 1'b1;
109
      end
110
      else begin
111
         done = 1'b0;
112
      end
113
   end
114
 
115
 
116
   //------------------------------------------------------------------------
117
   // + product_0,..., product_21
118
   //- Syndrome Generator
119
   //------------------------------------------------------------------------
120
   wire [7:0]   product_0;
121
   wire [7:0]   product_1;
122
   wire [7:0]   product_2;
123
   wire [7:0]   product_3;
124
   wire [7:0]   product_4;
125
   wire [7:0]   product_5;
126
   wire [7:0]   product_6;
127
   wire [7:0]   product_7;
128
   wire [7:0]   product_8;
129
   wire [7:0]   product_9;
130
   wire [7:0]   product_10;
131
   wire [7:0]   product_11;
132
   wire [7:0]   product_12;
133
   wire [7:0]   product_13;
134
   wire [7:0]   product_14;
135
   wire [7:0]   product_15;
136
   wire [7:0]   product_16;
137
   wire [7:0]   product_17;
138
   wire [7:0]   product_18;
139
   wire [7:0]   product_19;
140
   wire [7:0]   product_20;
141
   wire [7:0]   product_21;
142
 
143
   reg  [7:0]    reg_0;
144
   reg  [7:0]    reg_1;
145
   reg  [7:0]    reg_2;
146
   reg  [7:0]    reg_3;
147
   reg  [7:0]    reg_4;
148
   reg  [7:0]    reg_5;
149
   reg  [7:0]    reg_6;
150
   reg  [7:0]    reg_7;
151
   reg  [7:0]    reg_8;
152
   reg  [7:0]    reg_9;
153
   reg  [7:0]    reg_10;
154
   reg  [7:0]    reg_11;
155
   reg  [7:0]    reg_12;
156
   reg  [7:0]    reg_13;
157
   reg  [7:0]    reg_14;
158
   reg  [7:0]    reg_15;
159
   reg  [7:0]    reg_16;
160
   reg  [7:0]    reg_17;
161
   reg  [7:0]    reg_18;
162
   reg  [7:0]    reg_19;
163
   reg  [7:0]    reg_20;
164
   reg  [7:0]    reg_21;
165
 
166
   assign product_0 [0] = reg_0[0];
167
   assign product_0 [1] = reg_0[1];
168
   assign product_0 [2] = reg_0[2];
169
   assign product_0 [3] = reg_0[3];
170
   assign product_0 [4] = reg_0[4];
171
   assign product_0 [5] = reg_0[5];
172
   assign product_0 [6] = reg_0[6];
173
   assign product_0 [7] = reg_0[7];
174
   assign product_1 [0] = reg_1[7];
175
   assign product_1 [1] = reg_1[0];
176
   assign product_1 [2] = reg_1[1] ^ reg_1[7];
177
   assign product_1 [3] = reg_1[2] ^ reg_1[7];
178
   assign product_1 [4] = reg_1[3] ^ reg_1[7];
179
   assign product_1 [5] = reg_1[4];
180
   assign product_1 [6] = reg_1[5];
181
   assign product_1 [7] = reg_1[6];
182
   assign product_2 [0] = reg_2[6];
183
   assign product_2 [1] = reg_2[7];
184
   assign product_2 [2] = reg_2[0] ^ reg_2[6];
185
   assign product_2 [3] = reg_2[1] ^ reg_2[6] ^ reg_2[7];
186
   assign product_2 [4] = reg_2[2] ^ reg_2[6] ^ reg_2[7];
187
   assign product_2 [5] = reg_2[3] ^ reg_2[7];
188
   assign product_2 [6] = reg_2[4];
189
   assign product_2 [7] = reg_2[5];
190
   assign product_3 [0] = reg_3[5];
191
   assign product_3 [1] = reg_3[6];
192
   assign product_3 [2] = reg_3[5] ^ reg_3[7];
193
   assign product_3 [3] = reg_3[0] ^ reg_3[5] ^ reg_3[6];
194
   assign product_3 [4] = reg_3[1] ^ reg_3[5] ^ reg_3[6] ^ reg_3[7];
195
   assign product_3 [5] = reg_3[2] ^ reg_3[6] ^ reg_3[7];
196
   assign product_3 [6] = reg_3[3] ^ reg_3[7];
197
   assign product_3 [7] = reg_3[4];
198
   assign product_4 [0] = reg_4[4];
199
   assign product_4 [1] = reg_4[5];
200
   assign product_4 [2] = reg_4[4] ^ reg_4[6];
201
   assign product_4 [3] = reg_4[4] ^ reg_4[5] ^ reg_4[7];
202
   assign product_4 [4] = reg_4[0] ^ reg_4[4] ^ reg_4[5] ^ reg_4[6];
203
   assign product_4 [5] = reg_4[1] ^ reg_4[5] ^ reg_4[6] ^ reg_4[7];
204
   assign product_4 [6] = reg_4[2] ^ reg_4[6] ^ reg_4[7];
205
   assign product_4 [7] = reg_4[3] ^ reg_4[7];
206
   assign product_5 [0] = reg_5[3] ^ reg_5[7];
207
   assign product_5 [1] = reg_5[4];
208
   assign product_5 [2] = reg_5[3] ^ reg_5[5] ^ reg_5[7];
209
   assign product_5 [3] = reg_5[3] ^ reg_5[4] ^ reg_5[6] ^ reg_5[7];
210
   assign product_5 [4] = reg_5[3] ^ reg_5[4] ^ reg_5[5];
211
   assign product_5 [5] = reg_5[0] ^ reg_5[4] ^ reg_5[5] ^ reg_5[6];
212
   assign product_5 [6] = reg_5[1] ^ reg_5[5] ^ reg_5[6] ^ reg_5[7];
213
   assign product_5 [7] = reg_5[2] ^ reg_5[6] ^ reg_5[7];
214
   assign product_6 [0] = reg_6[2] ^ reg_6[6] ^ reg_6[7];
215
   assign product_6 [1] = reg_6[3] ^ reg_6[7];
216
   assign product_6 [2] = reg_6[2] ^ reg_6[4] ^ reg_6[6] ^ reg_6[7];
217
   assign product_6 [3] = reg_6[2] ^ reg_6[3] ^ reg_6[5] ^ reg_6[6];
218
   assign product_6 [4] = reg_6[2] ^ reg_6[3] ^ reg_6[4];
219
   assign product_6 [5] = reg_6[3] ^ reg_6[4] ^ reg_6[5];
220
   assign product_6 [6] = reg_6[0] ^ reg_6[4] ^ reg_6[5] ^ reg_6[6];
221
   assign product_6 [7] = reg_6[1] ^ reg_6[5] ^ reg_6[6] ^ reg_6[7];
222
   assign product_7 [0] = reg_7[1] ^ reg_7[5] ^ reg_7[6] ^ reg_7[7];
223
   assign product_7 [1] = reg_7[2] ^ reg_7[6] ^ reg_7[7];
224
   assign product_7 [2] = reg_7[1] ^ reg_7[3] ^ reg_7[5] ^ reg_7[6];
225
   assign product_7 [3] = reg_7[1] ^ reg_7[2] ^ reg_7[4] ^ reg_7[5];
226
   assign product_7 [4] = reg_7[1] ^ reg_7[2] ^ reg_7[3] ^ reg_7[7];
227
   assign product_7 [5] = reg_7[2] ^ reg_7[3] ^ reg_7[4];
228
   assign product_7 [6] = reg_7[3] ^ reg_7[4] ^ reg_7[5];
229
   assign product_7 [7] = reg_7[0] ^ reg_7[4] ^ reg_7[5] ^ reg_7[6];
230
   assign product_8 [0] = reg_8[0] ^ reg_8[4] ^ reg_8[5] ^ reg_8[6];
231
   assign product_8 [1] = reg_8[1] ^ reg_8[5] ^ reg_8[6] ^ reg_8[7];
232
   assign product_8 [2] = reg_8[0] ^ reg_8[2] ^ reg_8[4] ^ reg_8[5] ^ reg_8[7];
233
   assign product_8 [3] = reg_8[0] ^ reg_8[1] ^ reg_8[3] ^ reg_8[4];
234
   assign product_8 [4] = reg_8[0] ^ reg_8[1] ^ reg_8[2] ^ reg_8[6];
235
   assign product_8 [5] = reg_8[1] ^ reg_8[2] ^ reg_8[3] ^ reg_8[7];
236
   assign product_8 [6] = reg_8[2] ^ reg_8[3] ^ reg_8[4];
237
   assign product_8 [7] = reg_8[3] ^ reg_8[4] ^ reg_8[5];
238
   assign product_9 [0] = reg_9[3] ^ reg_9[4] ^ reg_9[5];
239
   assign product_9 [1] = reg_9[0] ^ reg_9[4] ^ reg_9[5] ^ reg_9[6];
240
   assign product_9 [2] = reg_9[1] ^ reg_9[3] ^ reg_9[4] ^ reg_9[6] ^ reg_9[7];
241
   assign product_9 [3] = reg_9[0] ^ reg_9[2] ^ reg_9[3] ^ reg_9[7];
242
   assign product_9 [4] = reg_9[0] ^ reg_9[1] ^ reg_9[5];
243
   assign product_9 [5] = reg_9[0] ^ reg_9[1] ^ reg_9[2] ^ reg_9[6];
244
   assign product_9 [6] = reg_9[1] ^ reg_9[2] ^ reg_9[3] ^ reg_9[7];
245
   assign product_9 [7] = reg_9[2] ^ reg_9[3] ^ reg_9[4];
246
   assign product_10 [0] = reg_10[2] ^ reg_10[3] ^ reg_10[4];
247
   assign product_10 [1] = reg_10[3] ^ reg_10[4] ^ reg_10[5];
248
   assign product_10 [2] = reg_10[0] ^ reg_10[2] ^ reg_10[3] ^ reg_10[5] ^ reg_10[6];
249
   assign product_10 [3] = reg_10[1] ^ reg_10[2] ^ reg_10[6] ^ reg_10[7];
250
   assign product_10 [4] = reg_10[0] ^ reg_10[4] ^ reg_10[7];
251
   assign product_10 [5] = reg_10[0] ^ reg_10[1] ^ reg_10[5];
252
   assign product_10 [6] = reg_10[0] ^ reg_10[1] ^ reg_10[2] ^ reg_10[6];
253
   assign product_10 [7] = reg_10[1] ^ reg_10[2] ^ reg_10[3] ^ reg_10[7];
254
   assign product_11 [0] = reg_11[1] ^ reg_11[2] ^ reg_11[3] ^ reg_11[7];
255
   assign product_11 [1] = reg_11[2] ^ reg_11[3] ^ reg_11[4];
256
   assign product_11 [2] = reg_11[1] ^ reg_11[2] ^ reg_11[4] ^ reg_11[5] ^ reg_11[7];
257
   assign product_11 [3] = reg_11[0] ^ reg_11[1] ^ reg_11[5] ^ reg_11[6] ^ reg_11[7];
258
   assign product_11 [4] = reg_11[3] ^ reg_11[6];
259
   assign product_11 [5] = reg_11[0] ^ reg_11[4] ^ reg_11[7];
260
   assign product_11 [6] = reg_11[0] ^ reg_11[1] ^ reg_11[5];
261
   assign product_11 [7] = reg_11[0] ^ reg_11[1] ^ reg_11[2] ^ reg_11[6];
262
   assign product_12 [0] = reg_12[0] ^ reg_12[1] ^ reg_12[2] ^ reg_12[6];
263
   assign product_12 [1] = reg_12[1] ^ reg_12[2] ^ reg_12[3] ^ reg_12[7];
264
   assign product_12 [2] = reg_12[0] ^ reg_12[1] ^ reg_12[3] ^ reg_12[4] ^ reg_12[6];
265
   assign product_12 [3] = reg_12[0] ^ reg_12[4] ^ reg_12[5] ^ reg_12[6] ^ reg_12[7];
266
   assign product_12 [4] = reg_12[2] ^ reg_12[5] ^ reg_12[7];
267
   assign product_12 [5] = reg_12[3] ^ reg_12[6];
268
   assign product_12 [6] = reg_12[0] ^ reg_12[4] ^ reg_12[7];
269
   assign product_12 [7] = reg_12[0] ^ reg_12[1] ^ reg_12[5];
270
   assign product_13 [0] = reg_13[0] ^ reg_13[1] ^ reg_13[5];
271
   assign product_13 [1] = reg_13[0] ^ reg_13[1] ^ reg_13[2] ^ reg_13[6];
272
   assign product_13 [2] = reg_13[0] ^ reg_13[2] ^ reg_13[3] ^ reg_13[5] ^ reg_13[7];
273
   assign product_13 [3] = reg_13[3] ^ reg_13[4] ^ reg_13[5] ^ reg_13[6];
274
   assign product_13 [4] = reg_13[1] ^ reg_13[4] ^ reg_13[6] ^ reg_13[7];
275
   assign product_13 [5] = reg_13[2] ^ reg_13[5] ^ reg_13[7];
276
   assign product_13 [6] = reg_13[3] ^ reg_13[6];
277
   assign product_13 [7] = reg_13[0] ^ reg_13[4] ^ reg_13[7];
278
   assign product_14 [0] = reg_14[0] ^ reg_14[4] ^ reg_14[7];
279
   assign product_14 [1] = reg_14[0] ^ reg_14[1] ^ reg_14[5];
280
   assign product_14 [2] = reg_14[1] ^ reg_14[2] ^ reg_14[4] ^ reg_14[6] ^ reg_14[7];
281
   assign product_14 [3] = reg_14[2] ^ reg_14[3] ^ reg_14[4] ^ reg_14[5];
282
   assign product_14 [4] = reg_14[0] ^ reg_14[3] ^ reg_14[5] ^ reg_14[6] ^ reg_14[7];
283
   assign product_14 [5] = reg_14[1] ^ reg_14[4] ^ reg_14[6] ^ reg_14[7];
284
   assign product_14 [6] = reg_14[2] ^ reg_14[5] ^ reg_14[7];
285
   assign product_14 [7] = reg_14[3] ^ reg_14[6];
286
   assign product_15 [0] = reg_15[3] ^ reg_15[6];
287
   assign product_15 [1] = reg_15[0] ^ reg_15[4] ^ reg_15[7];
288
   assign product_15 [2] = reg_15[0] ^ reg_15[1] ^ reg_15[3] ^ reg_15[5] ^ reg_15[6];
289
   assign product_15 [3] = reg_15[1] ^ reg_15[2] ^ reg_15[3] ^ reg_15[4] ^ reg_15[7];
290
   assign product_15 [4] = reg_15[2] ^ reg_15[4] ^ reg_15[5] ^ reg_15[6];
291
   assign product_15 [5] = reg_15[0] ^ reg_15[3] ^ reg_15[5] ^ reg_15[6] ^ reg_15[7];
292
   assign product_15 [6] = reg_15[1] ^ reg_15[4] ^ reg_15[6] ^ reg_15[7];
293
   assign product_15 [7] = reg_15[2] ^ reg_15[5] ^ reg_15[7];
294
   assign product_16 [0] = reg_16[2] ^ reg_16[5] ^ reg_16[7];
295
   assign product_16 [1] = reg_16[3] ^ reg_16[6];
296
   assign product_16 [2] = reg_16[0] ^ reg_16[2] ^ reg_16[4] ^ reg_16[5];
297
   assign product_16 [3] = reg_16[0] ^ reg_16[1] ^ reg_16[2] ^ reg_16[3] ^ reg_16[6] ^ reg_16[7];
298
   assign product_16 [4] = reg_16[1] ^ reg_16[3] ^ reg_16[4] ^ reg_16[5];
299
   assign product_16 [5] = reg_16[2] ^ reg_16[4] ^ reg_16[5] ^ reg_16[6];
300
   assign product_16 [6] = reg_16[0] ^ reg_16[3] ^ reg_16[5] ^ reg_16[6] ^ reg_16[7];
301
   assign product_16 [7] = reg_16[1] ^ reg_16[4] ^ reg_16[6] ^ reg_16[7];
302
   assign product_17 [0] = reg_17[1] ^ reg_17[4] ^ reg_17[6] ^ reg_17[7];
303
   assign product_17 [1] = reg_17[2] ^ reg_17[5] ^ reg_17[7];
304
   assign product_17 [2] = reg_17[1] ^ reg_17[3] ^ reg_17[4] ^ reg_17[7];
305
   assign product_17 [3] = reg_17[0] ^ reg_17[1] ^ reg_17[2] ^ reg_17[5] ^ reg_17[6] ^ reg_17[7];
306
   assign product_17 [4] = reg_17[0] ^ reg_17[2] ^ reg_17[3] ^ reg_17[4];
307
   assign product_17 [5] = reg_17[1] ^ reg_17[3] ^ reg_17[4] ^ reg_17[5];
308
   assign product_17 [6] = reg_17[2] ^ reg_17[4] ^ reg_17[5] ^ reg_17[6];
309
   assign product_17 [7] = reg_17[0] ^ reg_17[3] ^ reg_17[5] ^ reg_17[6] ^ reg_17[7];
310
   assign product_18 [0] = reg_18[0] ^ reg_18[3] ^ reg_18[5] ^ reg_18[6] ^ reg_18[7];
311
   assign product_18 [1] = reg_18[1] ^ reg_18[4] ^ reg_18[6] ^ reg_18[7];
312
   assign product_18 [2] = reg_18[0] ^ reg_18[2] ^ reg_18[3] ^ reg_18[6];
313
   assign product_18 [3] = reg_18[0] ^ reg_18[1] ^ reg_18[4] ^ reg_18[5] ^ reg_18[6];
314
   assign product_18 [4] = reg_18[1] ^ reg_18[2] ^ reg_18[3];
315
   assign product_18 [5] = reg_18[0] ^ reg_18[2] ^ reg_18[3] ^ reg_18[4];
316
   assign product_18 [6] = reg_18[1] ^ reg_18[3] ^ reg_18[4] ^ reg_18[5];
317
   assign product_18 [7] = reg_18[2] ^ reg_18[4] ^ reg_18[5] ^ reg_18[6];
318
   assign product_19 [0] = reg_19[2] ^ reg_19[4] ^ reg_19[5] ^ reg_19[6];
319
   assign product_19 [1] = reg_19[0] ^ reg_19[3] ^ reg_19[5] ^ reg_19[6] ^ reg_19[7];
320
   assign product_19 [2] = reg_19[1] ^ reg_19[2] ^ reg_19[5] ^ reg_19[7];
321
   assign product_19 [3] = reg_19[0] ^ reg_19[3] ^ reg_19[4] ^ reg_19[5];
322
   assign product_19 [4] = reg_19[0] ^ reg_19[1] ^ reg_19[2];
323
   assign product_19 [5] = reg_19[1] ^ reg_19[2] ^ reg_19[3];
324
   assign product_19 [6] = reg_19[0] ^ reg_19[2] ^ reg_19[3] ^ reg_19[4];
325
   assign product_19 [7] = reg_19[1] ^ reg_19[3] ^ reg_19[4] ^ reg_19[5];
326
   assign product_20 [0] = reg_20[1] ^ reg_20[3] ^ reg_20[4] ^ reg_20[5];
327
   assign product_20 [1] = reg_20[2] ^ reg_20[4] ^ reg_20[5] ^ reg_20[6];
328
   assign product_20 [2] = reg_20[0] ^ reg_20[1] ^ reg_20[4] ^ reg_20[6] ^ reg_20[7];
329
   assign product_20 [3] = reg_20[2] ^ reg_20[3] ^ reg_20[4] ^ reg_20[7];
330
   assign product_20 [4] = reg_20[0] ^ reg_20[1];
331
   assign product_20 [5] = reg_20[0] ^ reg_20[1] ^ reg_20[2];
332
   assign product_20 [6] = reg_20[1] ^ reg_20[2] ^ reg_20[3];
333
   assign product_20 [7] = reg_20[0] ^ reg_20[2] ^ reg_20[3] ^ reg_20[4];
334
   assign product_21 [0] = reg_21[0] ^ reg_21[2] ^ reg_21[3] ^ reg_21[4];
335
   assign product_21 [1] = reg_21[1] ^ reg_21[3] ^ reg_21[4] ^ reg_21[5];
336
   assign product_21 [2] = reg_21[0] ^ reg_21[3] ^ reg_21[5] ^ reg_21[6];
337
   assign product_21 [3] = reg_21[1] ^ reg_21[2] ^ reg_21[3] ^ reg_21[6] ^ reg_21[7];
338
   assign product_21 [4] = reg_21[0] ^ reg_21[7];
339
   assign product_21 [5] = reg_21[0] ^ reg_21[1];
340
   assign product_21 [6] = reg_21[0] ^ reg_21[1] ^ reg_21[2];
341
   assign product_21 [7] = reg_21[1] ^ reg_21[2] ^ reg_21[3];
342
 
343
 
344
 
345
   //------------------------------------------------------------------------
346
   // + REG_0,..., REG_21
347
   //------------------------------------------------------------------------
348
   always @(posedge CLK or negedge RESET) begin
349
      if (~RESET) begin
350
         reg_0 [7:0]  <= 8'd0;
351
         reg_1 [7:0]  <= 8'd0;
352
         reg_2 [7:0]  <= 8'd0;
353
         reg_3 [7:0]  <= 8'd0;
354
         reg_4 [7:0]  <= 8'd0;
355
         reg_5 [7:0]  <= 8'd0;
356
         reg_6 [7:0]  <= 8'd0;
357
         reg_7 [7:0]  <= 8'd0;
358
         reg_8 [7:0]  <= 8'd0;
359
         reg_9 [7:0]  <= 8'd0;
360
         reg_10 [7:0] <= 8'd0;
361
         reg_11 [7:0] <= 8'd0;
362
         reg_12 [7:0] <= 8'd0;
363
         reg_13 [7:0] <= 8'd0;
364
         reg_14 [7:0] <= 8'd0;
365
         reg_15 [7:0] <= 8'd0;
366
         reg_16 [7:0] <= 8'd0;
367
         reg_17 [7:0] <= 8'd0;
368
         reg_18 [7:0] <= 8'd0;
369
         reg_19 [7:0] <= 8'd0;
370
         reg_20 [7:0] <= 8'd0;
371
         reg_21 [7:0] <= 8'd0;
372
      end
373
      else if (enable == 1'b1) begin
374
         if (sync == 1'b1) begin
375
            reg_0 [7:0]  <= dataIn[7:0];
376
            reg_1 [7:0]  <= dataIn[7:0];
377
            reg_2 [7:0]  <= dataIn[7:0];
378
            reg_3 [7:0]  <= dataIn[7:0];
379
            reg_4 [7:0]  <= dataIn[7:0];
380
            reg_5 [7:0]  <= dataIn[7:0];
381
            reg_6 [7:0]  <= dataIn[7:0];
382
            reg_7 [7:0]  <= dataIn[7:0];
383
            reg_8 [7:0]  <= dataIn[7:0];
384
            reg_9 [7:0]  <= dataIn[7:0];
385
            reg_10 [7:0] <= dataIn[7:0];
386
            reg_11 [7:0] <= dataIn[7:0];
387
            reg_12 [7:0] <= dataIn[7:0];
388
            reg_13 [7:0] <= dataIn[7:0];
389
            reg_14 [7:0] <= dataIn[7:0];
390
            reg_15 [7:0] <= dataIn[7:0];
391
            reg_16 [7:0] <= dataIn[7:0];
392
            reg_17 [7:0] <= dataIn[7:0];
393
            reg_18 [7:0] <= dataIn[7:0];
394
            reg_19 [7:0] <= dataIn[7:0];
395
            reg_20 [7:0] <= dataIn[7:0];
396
            reg_21 [7:0] <= dataIn[7:0];
397
         end
398
         else begin
399
            reg_0 [7:0]  <= dataIn [7:0] ^ product_0[7:0];
400
            reg_1 [7:0]  <= dataIn [7:0] ^ product_1[7:0];
401
            reg_2 [7:0]  <= dataIn [7:0] ^ product_2[7:0];
402
            reg_3 [7:0]  <= dataIn [7:0] ^ product_3[7:0];
403
            reg_4 [7:0]  <= dataIn [7:0] ^ product_4[7:0];
404
            reg_5 [7:0]  <= dataIn [7:0] ^ product_5[7:0];
405
            reg_6 [7:0]  <= dataIn [7:0] ^ product_6[7:0];
406
            reg_7 [7:0]  <= dataIn [7:0] ^ product_7[7:0];
407
            reg_8 [7:0]  <= dataIn [7:0] ^ product_8[7:0];
408
            reg_9 [7:0]  <= dataIn [7:0] ^ product_9[7:0];
409
            reg_10 [7:0] <= dataIn [7:0] ^ product_10[7:0];
410
            reg_11 [7:0] <= dataIn [7:0] ^ product_11[7:0];
411
            reg_12 [7:0] <= dataIn [7:0] ^ product_12[7:0];
412
            reg_13 [7:0] <= dataIn [7:0] ^ product_13[7:0];
413
            reg_14 [7:0] <= dataIn [7:0] ^ product_14[7:0];
414
            reg_15 [7:0] <= dataIn [7:0] ^ product_15[7:0];
415
            reg_16 [7:0] <= dataIn [7:0] ^ product_16[7:0];
416
            reg_17 [7:0] <= dataIn [7:0] ^ product_17[7:0];
417
            reg_18 [7:0] <= dataIn [7:0] ^ product_18[7:0];
418
            reg_19 [7:0] <= dataIn [7:0] ^ product_19[7:0];
419
            reg_20 [7:0] <= dataIn [7:0] ^ product_20[7:0];
420
            reg_21 [7:0] <= dataIn [7:0] ^ product_21[7:0];
421
         end
422
      end
423
   end
424
 
425
 
426
 
427
   //------------------------------------------------------------------------
428
   //- Output Ports
429
   //------------------------------------------------------------------------
430
   assign   syndrome_0[7:0]  = reg_0[7:0];
431
   assign   syndrome_1[7:0]  = reg_1[7:0];
432
   assign   syndrome_2[7:0]  = reg_2[7:0];
433
   assign   syndrome_3[7:0]  = reg_3[7:0];
434
   assign   syndrome_4[7:0]  = reg_4[7:0];
435
   assign   syndrome_5[7:0]  = reg_5[7:0];
436
   assign   syndrome_6[7:0]  = reg_6[7:0];
437
   assign   syndrome_7[7:0]  = reg_7[7:0];
438
   assign   syndrome_8[7:0]  = reg_8[7:0];
439
   assign   syndrome_9[7:0]  = reg_9[7:0];
440
   assign   syndrome_10[7:0] = reg_10[7:0];
441
   assign   syndrome_11[7:0] = reg_11[7:0];
442
   assign   syndrome_12[7:0] = reg_12[7:0];
443
   assign   syndrome_13[7:0] = reg_13[7:0];
444
   assign   syndrome_14[7:0] = reg_14[7:0];
445
   assign   syndrome_15[7:0] = reg_15[7:0];
446
   assign   syndrome_16[7:0] = reg_16[7:0];
447
   assign   syndrome_17[7:0] = reg_17[7:0];
448
   assign   syndrome_18[7:0] = reg_18[7:0];
449
   assign   syndrome_19[7:0] = reg_19[7:0];
450
   assign   syndrome_20[7:0] = reg_20[7:0];
451
   assign   syndrome_21[7:0] = reg_21[7:0];
452
 
453
endmodule

powered by: WebSVN 2.1.0

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