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

Subversion Repositories wb_dma

[/] [wb_dma/] [trunk/] [rtl/] [verilog/] [wb_dma_top.v] - Blame information for rev 10

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

Line No. Rev Author Line
1 5 rudi
/////////////////////////////////////////////////////////////////////
2
////                                                             ////
3
////  WISHBONE DMA Top Level                                     ////
4
////                                                             ////
5
////                                                             ////
6
////  Author: Rudolf Usselmann                                   ////
7
////          rudi@asics.ws                                      ////
8
////                                                             ////
9
////                                                             ////
10
////  Downloaded from: http://www.opencores.org/cores/wb_dma/    ////
11
////                                                             ////
12
/////////////////////////////////////////////////////////////////////
13
////                                                             ////
14
//// Copyright (C) 2001 Rudolf Usselmann                         ////
15
////                    rudi@asics.ws                            ////
16
////                                                             ////
17
//// This source file may be used and distributed without        ////
18
//// restriction provided that this copyright statement is not   ////
19
//// removed from the file and that any derivative work contains ////
20
//// the original copyright notice and the associated disclaimer.////
21
////                                                             ////
22
////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     ////
23
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   ////
24
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   ////
25
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      ////
26
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         ////
27
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    ////
28
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   ////
29
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        ////
30
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  ////
31
//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  ////
32
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  ////
33
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         ////
34
//// POSSIBILITY OF SUCH DAMAGE.                                 ////
35
////                                                             ////
36
/////////////////////////////////////////////////////////////////////
37
 
38
//  CVS Log
39
//
40 10 rudi
//  $Id: wb_dma_top.v,v 1.4 2001-10-19 04:35:04 rudi Exp $
41 5 rudi
//
42 10 rudi
//  $Date: 2001-10-19 04:35:04 $
43
//  $Revision: 1.4 $
44 5 rudi
//  $Author: rudi $
45
//  $Locker:  $
46
//  $State: Exp $
47
//
48
// Change History:
49
//               $Log: not supported by cvs2svn $
50 10 rudi
//               Revision 1.3  2001/09/07 15:34:38  rudi
51
//
52
//               Changed reset to active high.
53
//
54 9 rudi
//               Revision 1.2  2001/08/15 05:40:30  rudi
55
//
56
//               - Changed IO names to be more clear.
57
//               - Uniquifyed define names to be core specific.
58
//               - Added Section 3.10, describing DMA restart.
59
//
60 8 rudi
//               Revision 1.1  2001/07/29 08:57:02  rudi
61
//
62
//
63
//               1) Changed Directory Structure
64
//               2) Added restart signal (REST)
65
//
66 5 rudi
//               Revision 1.3  2001/06/13 02:26:50  rudi
67
//
68
//
69
//               Small changes after running lint.
70
//
71
//               Revision 1.2  2001/06/05 10:22:37  rudi
72
//
73
//
74
//               - Added Support of up to 31 channels
75
//               - Added support for 2,4 and 8 priority levels
76
//               - Now can have up to 31 channels
77
//               - Added many configuration items
78
//               - Changed reset to async
79
//
80
//               Revision 1.1.1.1  2001/03/19 13:10:23  rudi
81
//               Initial Release
82
//
83
//
84
//
85
 
86
`include "wb_dma_defines.v"
87
 
88 8 rudi
module wb_dma_top(clk_i, rst_i,
89 5 rudi
 
90
        wb0s_data_i, wb0s_data_o, wb0_addr_i, wb0_sel_i, wb0_we_i, wb0_cyc_i,
91
        wb0_stb_i, wb0_ack_o, wb0_err_o, wb0_rty_o,
92
        wb0m_data_i, wb0m_data_o, wb0_addr_o, wb0_sel_o, wb0_we_o, wb0_cyc_o,
93
        wb0_stb_o, wb0_ack_i, wb0_err_i, wb0_rty_i,
94
 
95
        wb1s_data_i, wb1s_data_o, wb1_addr_i, wb1_sel_i, wb1_we_i, wb1_cyc_i,
96
        wb1_stb_i, wb1_ack_o, wb1_err_o, wb1_rty_o,
97
        wb1m_data_i, wb1m_data_o, wb1_addr_o, wb1_sel_o, wb1_we_o, wb1_cyc_o,
98
        wb1_stb_o, wb1_ack_i, wb1_err_i, wb1_rty_i,
99
 
100
        dma_req_i, dma_ack_o, dma_nd_i, dma_rest_i,
101
 
102
        inta_o, intb_o
103
        );
104
 
105 10 rudi
////////////////////////////////////////////////////////////////////
106
//
107
// Module Parameters
108
//
109
 
110
// chXX_conf = { CBUF, ED, ARS, EN }
111
parameter               rf_addr = 0;
112
parameter       [1:0]    pri_sel = 2'h0;
113
parameter               ch_count = 1;
114
parameter       [3:0]    ch0_conf = 4'h1;
115
parameter       [3:0]    ch1_conf = 4'h0;
116
parameter       [3:0]    ch2_conf = 4'h0;
117
parameter       [3:0]    ch3_conf = 4'h0;
118
parameter       [3:0]    ch4_conf = 4'h0;
119
parameter       [3:0]    ch5_conf = 4'h0;
120
parameter       [3:0]    ch6_conf = 4'h0;
121
parameter       [3:0]    ch7_conf = 4'h0;
122
parameter       [3:0]    ch8_conf = 4'h0;
123
parameter       [3:0]    ch9_conf = 4'h0;
124
parameter       [3:0]    ch10_conf = 4'h0;
125
parameter       [3:0]    ch11_conf = 4'h0;
126
parameter       [3:0]    ch12_conf = 4'h0;
127
parameter       [3:0]    ch13_conf = 4'h0;
128
parameter       [3:0]    ch14_conf = 4'h0;
129
parameter       [3:0]    ch15_conf = 4'h0;
130
parameter       [3:0]    ch16_conf = 4'h0;
131
parameter       [3:0]    ch17_conf = 4'h0;
132
parameter       [3:0]    ch18_conf = 4'h0;
133
parameter       [3:0]    ch19_conf = 4'h0;
134
parameter       [3:0]    ch20_conf = 4'h0;
135
parameter       [3:0]    ch21_conf = 4'h0;
136
parameter       [3:0]    ch22_conf = 4'h0;
137
parameter       [3:0]    ch23_conf = 4'h0;
138
parameter       [3:0]    ch24_conf = 4'h0;
139
parameter       [3:0]    ch25_conf = 4'h0;
140
parameter       [3:0]    ch26_conf = 4'h0;
141
parameter       [3:0]    ch27_conf = 4'h0;
142
parameter       [3:0]    ch28_conf = 4'h0;
143
parameter       [3:0]    ch29_conf = 4'h0;
144
parameter       [3:0]    ch30_conf = 4'h0;
145
 
146
////////////////////////////////////////////////////////////////////
147
//
148
// Module IOs
149
//
150
 
151 8 rudi
input           clk_i, rst_i;
152 5 rudi
 
153
// --------------------------------------
154
// WISHBONE INTERFACE 0
155
 
156
// Slave Interface
157
input   [31:0]   wb0s_data_i;
158
output  [31:0]   wb0s_data_o;
159
input   [31:0]   wb0_addr_i;
160
input   [3:0]    wb0_sel_i;
161
input           wb0_we_i;
162
input           wb0_cyc_i;
163
input           wb0_stb_i;
164
output          wb0_ack_o;
165
output          wb0_err_o;
166
output          wb0_rty_o;
167
 
168
// Master Interface
169
input   [31:0]   wb0m_data_i;
170
output  [31:0]   wb0m_data_o;
171
output  [31:0]   wb0_addr_o;
172
output  [3:0]    wb0_sel_o;
173
output          wb0_we_o;
174
output          wb0_cyc_o;
175
output          wb0_stb_o;
176
input           wb0_ack_i;
177
input           wb0_err_i;
178
input           wb0_rty_i;
179
 
180
// --------------------------------------
181
// WISHBONE INTERFACE 1
182
 
183
// Slave Interface
184
input   [31:0]   wb1s_data_i;
185
output  [31:0]   wb1s_data_o;
186
input   [31:0]   wb1_addr_i;
187
input   [3:0]    wb1_sel_i;
188
input           wb1_we_i;
189
input           wb1_cyc_i;
190
input           wb1_stb_i;
191
output          wb1_ack_o;
192
output          wb1_err_o;
193
output          wb1_rty_o;
194
 
195
// Master Interface
196
input   [31:0]   wb1m_data_i;
197
output  [31:0]   wb1m_data_o;
198
output  [31:0]   wb1_addr_o;
199
output  [3:0]    wb1_sel_o;
200
output          wb1_we_o;
201
output          wb1_cyc_o;
202
output          wb1_stb_o;
203
input           wb1_ack_i;
204
input           wb1_err_i;
205
input           wb1_rty_i;
206
 
207
// --------------------------------------
208
// Misc Signals
209 10 rudi
input   [ch_count-1:0]   dma_req_i;
210
input   [ch_count-1:0]   dma_nd_i;
211
output  [ch_count-1:0]   dma_ack_o;
212
input   [ch_count-1:0]   dma_rest_i;
213 5 rudi
output                  inta_o;
214
output                  intb_o;
215
 
216
////////////////////////////////////////////////////////////////////
217
//
218
// Local Wires
219
//
220
 
221
wire    [31:0]   pointer0, pointer0_s, ch0_csr, ch0_txsz, ch0_adr0, ch0_adr1, ch0_am0, ch0_am1;
222
wire    [31:0]   pointer1, pointer1_s, ch1_csr, ch1_txsz, ch1_adr0, ch1_adr1, ch1_am0, ch1_am1;
223
wire    [31:0]   pointer2, pointer2_s, ch2_csr, ch2_txsz, ch2_adr0, ch2_adr1, ch2_am0, ch2_am1;
224
wire    [31:0]   pointer3, pointer3_s, ch3_csr, ch3_txsz, ch3_adr0, ch3_adr1, ch3_am0, ch3_am1;
225
wire    [31:0]   pointer4, pointer4_s, ch4_csr, ch4_txsz, ch4_adr0, ch4_adr1, ch4_am0, ch4_am1;
226
wire    [31:0]   pointer5, pointer5_s, ch5_csr, ch5_txsz, ch5_adr0, ch5_adr1, ch5_am0, ch5_am1;
227
wire    [31:0]   pointer6, pointer6_s, ch6_csr, ch6_txsz, ch6_adr0, ch6_adr1, ch6_am0, ch6_am1;
228
wire    [31:0]   pointer7, pointer7_s, ch7_csr, ch7_txsz, ch7_adr0, ch7_adr1, ch7_am0, ch7_am1;
229
wire    [31:0]   pointer8, pointer8_s, ch8_csr, ch8_txsz, ch8_adr0, ch8_adr1, ch8_am0, ch8_am1;
230
wire    [31:0]   pointer9, pointer9_s, ch9_csr, ch9_txsz, ch9_adr0, ch9_adr1, ch9_am0, ch9_am1;
231
wire    [31:0]   pointer10, pointer10_s, ch10_csr, ch10_txsz, ch10_adr0, ch10_adr1, ch10_am0, ch10_am1;
232
wire    [31:0]   pointer11, pointer11_s, ch11_csr, ch11_txsz, ch11_adr0, ch11_adr1, ch11_am0, ch11_am1;
233
wire    [31:0]   pointer12, pointer12_s, ch12_csr, ch12_txsz, ch12_adr0, ch12_adr1, ch12_am0, ch12_am1;
234
wire    [31:0]   pointer13, pointer13_s, ch13_csr, ch13_txsz, ch13_adr0, ch13_adr1, ch13_am0, ch13_am1;
235
wire    [31:0]   pointer14, pointer14_s, ch14_csr, ch14_txsz, ch14_adr0, ch14_adr1, ch14_am0, ch14_am1;
236
wire    [31:0]   pointer15, pointer15_s, ch15_csr, ch15_txsz, ch15_adr0, ch15_adr1, ch15_am0, ch15_am1;
237
wire    [31:0]   pointer16, pointer16_s, ch16_csr, ch16_txsz, ch16_adr0, ch16_adr1, ch16_am0, ch16_am1;
238
wire    [31:0]   pointer17, pointer17_s, ch17_csr, ch17_txsz, ch17_adr0, ch17_adr1, ch17_am0, ch17_am1;
239
wire    [31:0]   pointer18, pointer18_s, ch18_csr, ch18_txsz, ch18_adr0, ch18_adr1, ch18_am0, ch18_am1;
240
wire    [31:0]   pointer19, pointer19_s, ch19_csr, ch19_txsz, ch19_adr0, ch19_adr1, ch19_am0, ch19_am1;
241
wire    [31:0]   pointer20, pointer20_s, ch20_csr, ch20_txsz, ch20_adr0, ch20_adr1, ch20_am0, ch20_am1;
242
wire    [31:0]   pointer21, pointer21_s, ch21_csr, ch21_txsz, ch21_adr0, ch21_adr1, ch21_am0, ch21_am1;
243
wire    [31:0]   pointer22, pointer22_s, ch22_csr, ch22_txsz, ch22_adr0, ch22_adr1, ch22_am0, ch22_am1;
244
wire    [31:0]   pointer23, pointer23_s, ch23_csr, ch23_txsz, ch23_adr0, ch23_adr1, ch23_am0, ch23_am1;
245
wire    [31:0]   pointer24, pointer24_s, ch24_csr, ch24_txsz, ch24_adr0, ch24_adr1, ch24_am0, ch24_am1;
246
wire    [31:0]   pointer25, pointer25_s, ch25_csr, ch25_txsz, ch25_adr0, ch25_adr1, ch25_am0, ch25_am1;
247
wire    [31:0]   pointer26, pointer26_s, ch26_csr, ch26_txsz, ch26_adr0, ch26_adr1, ch26_am0, ch26_am1;
248
wire    [31:0]   pointer27, pointer27_s, ch27_csr, ch27_txsz, ch27_adr0, ch27_adr1, ch27_am0, ch27_am1;
249
wire    [31:0]   pointer28, pointer28_s, ch28_csr, ch28_txsz, ch28_adr0, ch28_adr1, ch28_am0, ch28_am1;
250
wire    [31:0]   pointer29, pointer29_s, ch29_csr, ch29_txsz, ch29_adr0, ch29_adr1, ch29_am0, ch29_am1;
251
wire    [31:0]   pointer30, pointer30_s, ch30_csr, ch30_txsz, ch30_adr0, ch30_adr1, ch30_am0, ch30_am1;
252
 
253
wire    [4:0]    ch_sel;         // Write Back Channel Select
254
wire    [30:0]   ndnr;           // Next Descriptor No Request
255
wire            de_start;       // Start DMA Engine
256
wire            ndr;            // Next Descriptor With Request
257
wire    [31:0]   csr;            // Selected Channel CSR
258
wire    [31:0]   pointer;
259
wire    [31:0]   pointer_s;
260
wire    [31:0]   txsz;           // Selected Channel Transfer Size
261
wire    [31:0]   adr0, adr1;     // Selected Channel Addresses
262
wire    [31:0]   am0, am1;       // Selected Channel Address Masks
263
wire            next_ch;        // Indicates the DMA Engine is done
264
 
265
wire            inta_o, intb_o;
266
wire            dma_abort;
267
wire            dma_busy, dma_err, dma_done, dma_done_all;
268
wire    [31:0]   de_csr;
269
wire    [11:0]   de_txsz;
270
wire    [31:0]   de_adr0;
271
wire    [31:0]   de_adr1;
272
wire            de_csr_we, de_txsz_we, de_adr0_we, de_adr1_we;
273
wire            de_fetch_descr;
274
wire            ptr_set;
275
wire            de_ack;
276
wire            pause_req;
277
wire            paused;
278
 
279
wire            mast0_go;       // Perform a Master Cycle (as long as this
280
wire            mast0_we;       // Read/Write
281
wire    [31:0]   mast0_adr;      // Address for the transfer
282
wire    [31:0]   mast0_din;      // Internal Input Data
283
wire    [31:0]   mast0_dout;     // Internal Output Data
284
wire            mast0_err;      // Indicates an error has occurred
285
wire            mast0_drdy;     // Indicated that either data is available
286
wire            mast0_wait;     // Tells the master to insert wait cycles
287
 
288
wire    [31:0]   slv0_adr;       // Slave Address
289
wire    [31:0]   slv0_din;       // Slave Input Data
290
wire    [31:0]   slv0_dout;      // Slave Output Data
291
wire            slv0_re;        // Slave Read Enable
292
wire            slv0_we;        // Slave Write Enable
293
 
294
wire            pt0_sel_i;      // Pass Through Mode Selected
295
wire    [70:0]   mast0_pt_in;    // Grouped WISHBONE inputs
296
wire    [34:0]   mast0_pt_out;   // Grouped WISHBONE outputs
297
 
298
wire            pt0_sel_o;      // Pass Through Mode Active
299
wire    [70:0]   slv0_pt_out;    // Grouped WISHBONE out signals
300
wire    [34:0]   slv0_pt_in;     // Grouped WISHBONE in signals
301
 
302
wire            mast1_go;       // Perform a Master Cycle (as long as this
303
wire            mast1_we;       // Read/Write
304
wire    [31:0]   mast1_adr;      // Address for the transfer
305
wire    [31:0]   mast1_din;      // Internal Input Data
306
wire    [31:0]   mast1_dout;     // Internal Output Data
307
wire            mast1_err;      // Indicates an error has occurred
308
wire            mast1_drdy;     // Indicated that either data is available
309
wire            mast1_wait;     // Tells the master to insert wait cycles
310
 
311
wire    [31:0]   slv1_adr;       // Slave Address
312
wire    [31:0]   slv1_dout;      // Slave Output Data
313
wire            slv1_re;        // Slave Read Enable
314
wire            slv1_we;        // Slave Write Enable
315
 
316
wire            pt1_sel_i;      // Pass Through Mode Selected
317
wire    [70:0]   mast1_pt_in;    // Grouped WISHBONE inputs
318
wire    [34:0]   mast1_pt_out;   // Grouped WISHBONE outputs
319
 
320
wire            pt1_sel_o;      // Pass Through Mode Active
321
wire    [70:0]   slv1_pt_out;    // Grouped WISHBONE out signals
322
wire    [34:0]   slv1_pt_in;     // Grouped WISHBONE in signals
323
 
324
wire    [30:0]   dma_req;
325
wire    [30:0]   dma_nd;
326
wire    [30:0]   dma_ack;
327
wire    [30:0]   dma_rest;
328
 
329
////////////////////////////////////////////////////////////////////
330
//
331
// Misc Logic
332
//
333
 
334 10 rudi
wire    [31:0]   tmp_gnd = 32'h0;
335 5 rudi
 
336 10 rudi
assign dma_req[ch_count-1:0] = dma_req_i;
337
assign dma_nd[ch_count-1:0] = dma_nd_i;
338
assign dma_rest[ch_count-1:0] = dma_rest_i;
339
assign dma_ack_o = {tmp_gnd[31-ch_count:0], dma_ack[ch_count-1:0]};
340
 
341 5 rudi
// --------------------------------------------------
342
// This should go in to a separate Pass Through Block
343
assign pt1_sel_i = pt0_sel_o;
344
assign pt0_sel_i = pt1_sel_o;
345
assign mast1_pt_in = slv0_pt_out;
346
assign slv0_pt_in  = mast1_pt_out;
347
assign mast0_pt_in = slv1_pt_out;
348
assign slv1_pt_in  = mast0_pt_out;
349
// --------------------------------------------------
350
 
351
////////////////////////////////////////////////////////////////////
352
//
353
// Modules
354
//
355
 
356
// DMA Register File
357 10 rudi
wb_dma_rf   #(  ch0_conf,
358
                ch1_conf,
359
                ch2_conf,
360
                ch3_conf,
361
                ch4_conf,
362
                ch5_conf,
363
                ch6_conf,
364
                ch7_conf,
365
                ch8_conf,
366
                ch9_conf,
367
                ch10_conf,
368
                ch11_conf,
369
                ch12_conf,
370
                ch13_conf,
371
                ch14_conf,
372
                ch15_conf,
373
                ch16_conf,
374
                ch17_conf,
375
                ch18_conf,
376
                ch19_conf,
377
                ch20_conf,
378
                ch21_conf,
379
                ch22_conf,
380
                ch23_conf,
381
                ch24_conf,
382
                ch25_conf,
383
                ch26_conf,
384
                ch27_conf,
385
                ch28_conf,
386
                ch29_conf,
387
                ch30_conf)
388
                u0(
389 8 rudi
                .clk(           clk_i           ),
390 9 rudi
                .rst(           ~rst_i          ),
391 5 rudi
                .wb_rf_adr(     slv0_adr[9:2]   ),
392
                .wb_rf_din(     slv0_dout       ),
393
                .wb_rf_dout(    slv0_din        ),
394
                .wb_rf_re(      slv0_re         ),
395
                .wb_rf_we(      slv0_we         ),
396
                .inta_o(        inta_o          ),
397
                .intb_o(        intb_o          ),
398
                .pointer0(      pointer0        ),
399
                .pointer0_s(    pointer0_s      ),
400
                .ch0_csr(       ch0_csr         ),
401
                .ch0_txsz(      ch0_txsz        ),
402
                .ch0_adr0(      ch0_adr0        ),
403
                .ch0_adr1(      ch0_adr1        ),
404
                .ch0_am0(       ch0_am0         ),
405
                .ch0_am1(       ch0_am1         ),
406
                .pointer1(      pointer1        ),
407
                .pointer1_s(    pointer1_s      ),
408
                .ch1_csr(       ch1_csr         ),
409
                .ch1_txsz(      ch1_txsz        ),
410
                .ch1_adr0(      ch1_adr0        ),
411
                .ch1_adr1(      ch1_adr1        ),
412
                .ch1_am0(       ch1_am0         ),
413
                .ch1_am1(       ch1_am1         ),
414
                .pointer2(      pointer2        ),
415
                .pointer2_s(    pointer2_s      ),
416
                .ch2_csr(       ch2_csr         ),
417
                .ch2_txsz(      ch2_txsz        ),
418
                .ch2_adr0(      ch2_adr0        ),
419
                .ch2_adr1(      ch2_adr1        ),
420
                .ch2_am0(       ch2_am0         ),
421
                .ch2_am1(       ch2_am1         ),
422
                .pointer3(      pointer3        ),
423
                .pointer3_s(    pointer3_s      ),
424
                .ch3_csr(       ch3_csr         ),
425
                .ch3_txsz(      ch3_txsz        ),
426
                .ch3_adr0(      ch3_adr0        ),
427
                .ch3_adr1(      ch3_adr1        ),
428
                .ch3_am0(       ch3_am0         ),
429
                .ch3_am1(       ch3_am1         ),
430
                .pointer4(      pointer4        ),
431
                .pointer4_s(    pointer4_s      ),
432
                .ch4_csr(       ch4_csr         ),
433
                .ch4_txsz(      ch4_txsz        ),
434
                .ch4_adr0(      ch4_adr0        ),
435
                .ch4_adr1(      ch4_adr1        ),
436
                .ch4_am0(       ch4_am0         ),
437
                .ch4_am1(       ch4_am1         ),
438
                .pointer5(      pointer5        ),
439
                .pointer5_s(    pointer5_s      ),
440
                .ch5_csr(       ch5_csr         ),
441
                .ch5_txsz(      ch5_txsz        ),
442
                .ch5_adr0(      ch5_adr0        ),
443
                .ch5_adr1(      ch5_adr1        ),
444
                .ch5_am0(       ch5_am0         ),
445
                .ch5_am1(       ch5_am1         ),
446
                .pointer6(      pointer6        ),
447
                .pointer6_s(    pointer6_s      ),
448
                .ch6_csr(       ch6_csr         ),
449
                .ch6_txsz(      ch6_txsz        ),
450
                .ch6_adr0(      ch6_adr0        ),
451
                .ch6_adr1(      ch6_adr1        ),
452
                .ch6_am0(       ch6_am0         ),
453
                .ch6_am1(       ch6_am1         ),
454
                .pointer7(      pointer7        ),
455
                .pointer7_s(    pointer7_s      ),
456
                .ch7_csr(       ch7_csr         ),
457
                .ch7_txsz(      ch7_txsz        ),
458
                .ch7_adr0(      ch7_adr0        ),
459
                .ch7_adr1(      ch7_adr1        ),
460
                .ch7_am0(       ch7_am0         ),
461
                .ch7_am1(       ch7_am1         ),
462
                .pointer8(      pointer8        ),
463
                .pointer8_s(    pointer8_s      ),
464
                .ch8_csr(       ch8_csr         ),
465
                .ch8_txsz(      ch8_txsz        ),
466
                .ch8_adr0(      ch8_adr0        ),
467
                .ch8_adr1(      ch8_adr1        ),
468
                .ch8_am0(       ch8_am0         ),
469
                .ch8_am1(       ch8_am1         ),
470
                .pointer9(      pointer9        ),
471
                .pointer9_s(    pointer9_s      ),
472
                .ch9_csr(       ch9_csr         ),
473
                .ch9_txsz(      ch9_txsz        ),
474
                .ch9_adr0(      ch9_adr0        ),
475
                .ch9_adr1(      ch9_adr1        ),
476
                .ch9_am0(       ch9_am0         ),
477
                .ch9_am1(       ch9_am1         ),
478
                .pointer10(     pointer10       ),
479
                .pointer10_s(   pointer10_s     ),
480
                .ch10_csr(      ch10_csr        ),
481
                .ch10_txsz(     ch10_txsz       ),
482
                .ch10_adr0(     ch10_adr0       ),
483
                .ch10_adr1(     ch10_adr1       ),
484
                .ch10_am0(      ch10_am0        ),
485
                .ch10_am1(      ch10_am1        ),
486
                .pointer11(     pointer11       ),
487
                .pointer11_s(   pointer11_s     ),
488
                .ch11_csr(      ch11_csr        ),
489
                .ch11_txsz(     ch11_txsz       ),
490
                .ch11_adr0(     ch11_adr0       ),
491
                .ch11_adr1(     ch11_adr1       ),
492
                .ch11_am0(      ch11_am0        ),
493
                .ch11_am1(      ch11_am1        ),
494
                .pointer12(     pointer12       ),
495
                .pointer12_s(   pointer12_s     ),
496
                .ch12_csr(      ch12_csr        ),
497
                .ch12_txsz(     ch12_txsz       ),
498
                .ch12_adr0(     ch12_adr0       ),
499
                .ch12_adr1(     ch12_adr1       ),
500
                .ch12_am0(      ch12_am0        ),
501
                .ch12_am1(      ch12_am1        ),
502
                .pointer13(     pointer13       ),
503
                .pointer13_s(   pointer13_s     ),
504
                .ch13_csr(      ch13_csr        ),
505
                .ch13_txsz(     ch13_txsz       ),
506
                .ch13_adr0(     ch13_adr0       ),
507
                .ch13_adr1(     ch13_adr1       ),
508
                .ch13_am0(      ch13_am0        ),
509
                .ch13_am1(      ch13_am1        ),
510
                .pointer14(     pointer14       ),
511
                .pointer14_s(   pointer14_s     ),
512
                .ch14_csr(      ch14_csr        ),
513
                .ch14_txsz(     ch14_txsz       ),
514
                .ch14_adr0(     ch14_adr0       ),
515
                .ch14_adr1(     ch14_adr1       ),
516
                .ch14_am0(      ch14_am0        ),
517
                .ch14_am1(      ch14_am1        ),
518
                .pointer15(     pointer15       ),
519
                .pointer15_s(   pointer15_s     ),
520
                .ch15_csr(      ch15_csr        ),
521
                .ch15_txsz(     ch15_txsz       ),
522
                .ch15_adr0(     ch15_adr0       ),
523
                .ch15_adr1(     ch15_adr1       ),
524
                .ch15_am0(      ch15_am0        ),
525
                .ch15_am1(      ch15_am1        ),
526
                .pointer16(     pointer16       ),
527
                .pointer16_s(   pointer16_s     ),
528
                .ch16_csr(      ch16_csr        ),
529
                .ch16_txsz(     ch16_txsz       ),
530
                .ch16_adr0(     ch16_adr0       ),
531
                .ch16_adr1(     ch16_adr1       ),
532
                .ch16_am0(      ch16_am0        ),
533
                .ch16_am1(      ch16_am1        ),
534
                .pointer17(     pointer17       ),
535
                .pointer17_s(   pointer17_s     ),
536
                .ch17_csr(      ch17_csr        ),
537
                .ch17_txsz(     ch17_txsz       ),
538
                .ch17_adr0(     ch17_adr0       ),
539
                .ch17_adr1(     ch17_adr1       ),
540
                .ch17_am0(      ch17_am0        ),
541
                .ch17_am1(      ch17_am1        ),
542
                .pointer18(     pointer18       ),
543
                .pointer18_s(   pointer18_s     ),
544
                .ch18_csr(      ch18_csr        ),
545
                .ch18_txsz(     ch18_txsz       ),
546
                .ch18_adr0(     ch18_adr0       ),
547
                .ch18_adr1(     ch18_adr1       ),
548
                .ch18_am0(      ch18_am0        ),
549
                .ch18_am1(      ch18_am1        ),
550
                .pointer19(     pointer19       ),
551
                .pointer19_s(   pointer19_s     ),
552
                .ch19_csr(      ch19_csr        ),
553
                .ch19_txsz(     ch19_txsz       ),
554
                .ch19_adr0(     ch19_adr0       ),
555
                .ch19_adr1(     ch19_adr1       ),
556
                .ch19_am0(      ch19_am0        ),
557
                .ch19_am1(      ch19_am1        ),
558
                .pointer20(     pointer20       ),
559
                .pointer20_s(   pointer20_s     ),
560
                .ch20_csr(      ch20_csr        ),
561
                .ch20_txsz(     ch20_txsz       ),
562
                .ch20_adr0(     ch20_adr0       ),
563
                .ch20_adr1(     ch20_adr1       ),
564
                .ch20_am0(      ch20_am0        ),
565
                .ch20_am1(      ch20_am1        ),
566
                .pointer21(     pointer21       ),
567
                .pointer21_s(   pointer21_s     ),
568
                .ch21_csr(      ch21_csr        ),
569
                .ch21_txsz(     ch21_txsz       ),
570
                .ch21_adr0(     ch21_adr0       ),
571
                .ch21_adr1(     ch21_adr1       ),
572
                .ch21_am0(      ch21_am0        ),
573
                .ch21_am1(      ch21_am1        ),
574
                .pointer22(     pointer22       ),
575
                .pointer22_s(   pointer22_s     ),
576
                .ch22_csr(      ch22_csr        ),
577
                .ch22_txsz(     ch22_txsz       ),
578
                .ch22_adr0(     ch22_adr0       ),
579
                .ch22_adr1(     ch22_adr1       ),
580
                .ch22_am0(      ch22_am0        ),
581
                .ch22_am1(      ch22_am1        ),
582
                .pointer23(     pointer23       ),
583
                .pointer23_s(   pointer23_s     ),
584
                .ch23_csr(      ch23_csr        ),
585
                .ch23_txsz(     ch23_txsz       ),
586
                .ch23_adr0(     ch23_adr0       ),
587
                .ch23_adr1(     ch23_adr1       ),
588
                .ch23_am0(      ch23_am0        ),
589
                .ch23_am1(      ch23_am1        ),
590
                .pointer24(     pointer24       ),
591
                .pointer24_s(   pointer24_s     ),
592
                .ch24_csr(      ch24_csr        ),
593
                .ch24_txsz(     ch24_txsz       ),
594
                .ch24_adr0(     ch24_adr0       ),
595
                .ch24_adr1(     ch24_adr1       ),
596
                .ch24_am0(      ch24_am0        ),
597
                .ch24_am1(      ch24_am1        ),
598
                .pointer25(     pointer25       ),
599
                .pointer25_s(   pointer25_s     ),
600
                .ch25_csr(      ch25_csr        ),
601
                .ch25_txsz(     ch25_txsz       ),
602
                .ch25_adr0(     ch25_adr0       ),
603
                .ch25_adr1(     ch25_adr1       ),
604
                .ch25_am0(      ch25_am0        ),
605
                .ch25_am1(      ch25_am1        ),
606
                .pointer26(     pointer26       ),
607
                .pointer26_s(   pointer26_s     ),
608
                .ch26_csr(      ch26_csr        ),
609
                .ch26_txsz(     ch26_txsz       ),
610
                .ch26_adr0(     ch26_adr0       ),
611
                .ch26_adr1(     ch26_adr1       ),
612
                .ch26_am0(      ch26_am0        ),
613
                .ch26_am1(      ch26_am1        ),
614
                .pointer27(     pointer27       ),
615
                .pointer27_s(   pointer27_s     ),
616
                .ch27_csr(      ch27_csr        ),
617
                .ch27_txsz(     ch27_txsz       ),
618
                .ch27_adr0(     ch27_adr0       ),
619
                .ch27_adr1(     ch27_adr1       ),
620
                .ch27_am0(      ch27_am0        ),
621
                .ch27_am1(      ch27_am1        ),
622
                .pointer28(     pointer28       ),
623
                .pointer28_s(   pointer28_s     ),
624
                .ch28_csr(      ch28_csr        ),
625
                .ch28_txsz(     ch28_txsz       ),
626
                .ch28_adr0(     ch28_adr0       ),
627
                .ch28_adr1(     ch28_adr1       ),
628
                .ch28_am0(      ch28_am0        ),
629
                .ch28_am1(      ch28_am1        ),
630
                .pointer29(     pointer29       ),
631
                .pointer29_s(   pointer29_s     ),
632
                .ch29_csr(      ch29_csr        ),
633
                .ch29_txsz(     ch29_txsz       ),
634
                .ch29_adr0(     ch29_adr0       ),
635
                .ch29_adr1(     ch29_adr1       ),
636
                .ch29_am0(      ch29_am0        ),
637
                .ch29_am1(      ch29_am1        ),
638
                .pointer30(     pointer30       ),
639
                .pointer30_s(   pointer30_s     ),
640
                .ch30_csr(      ch30_csr        ),
641
                .ch30_txsz(     ch30_txsz       ),
642
                .ch30_adr0(     ch30_adr0       ),
643
                .ch30_adr1(     ch30_adr1       ),
644
                .ch30_am0(      ch30_am0        ),
645
                .ch30_am1(      ch30_am1        ),
646
                .ch_sel(        ch_sel          ),
647
                .ndnr(          ndnr            ),
648
                .pause_req(     pause_req       ),
649
                .paused(        paused          ),
650
                .dma_abort(     dma_abort       ),
651
                .dma_busy(      dma_busy        ),
652
                .dma_err(       dma_err         ),
653
                .dma_done(      dma_done        ),
654
                .dma_done_all(  dma_done_all    ),
655
                .de_csr(        de_csr          ),
656
                .de_txsz(       de_txsz         ),
657
                .de_adr0(       de_adr0         ),
658
                .de_adr1(       de_adr1         ),
659
                .de_csr_we(     de_csr_we       ),
660
                .de_txsz_we(    de_txsz_we      ),
661
                .de_adr0_we(    de_adr0_we      ),
662
                .de_adr1_we(    de_adr1_we      ),
663
                .de_fetch_descr(de_fetch_descr  ),
664
                .dma_rest(      dma_rest        ),
665
                .ptr_set(       ptr_set         )
666
                );
667
 
668
// Channel Select
669 10 rudi
wb_dma_ch_sel #(pri_sel,
670
                ch0_conf,
671
                ch1_conf,
672
                ch2_conf,
673
                ch3_conf,
674
                ch4_conf,
675
                ch5_conf,
676
                ch6_conf,
677
                ch7_conf,
678
                ch8_conf,
679
                ch9_conf,
680
                ch10_conf,
681
                ch11_conf,
682
                ch12_conf,
683
                ch13_conf,
684
                ch14_conf,
685
                ch15_conf,
686
                ch16_conf,
687
                ch17_conf,
688
                ch18_conf,
689
                ch19_conf,
690
                ch20_conf,
691
                ch21_conf,
692
                ch22_conf,
693
                ch23_conf,
694
                ch24_conf,
695
                ch25_conf,
696
                ch26_conf,
697
                ch27_conf,
698
                ch28_conf,
699
                ch29_conf,
700
                ch30_conf)
701
                u1(
702 8 rudi
                .clk(           clk_i           ),
703 9 rudi
                .rst(           ~rst_i          ),
704 5 rudi
                .req_i(         dma_req         ),
705
                .ack_o(         dma_ack         ),
706
                .nd_i(          dma_nd          ),
707
 
708
                .pointer0(      pointer0        ),
709
                .pointer0_s(    pointer0_s      ),
710
                .ch0_csr(       ch0_csr         ),
711
                .ch0_txsz(      ch0_txsz        ),
712
                .ch0_adr0(      ch0_adr0        ),
713
                .ch0_adr1(      ch0_adr1        ),
714
                .ch0_am0(       ch0_am0         ),
715
                .ch0_am1(       ch0_am1         ),
716
                .pointer1(      pointer1        ),
717
                .pointer1_s(    pointer1_s      ),
718
                .ch1_csr(       ch1_csr         ),
719
                .ch1_txsz(      ch1_txsz        ),
720
                .ch1_adr0(      ch1_adr0        ),
721
                .ch1_adr1(      ch1_adr1        ),
722
                .ch1_am0(       ch1_am0         ),
723
                .ch1_am1(       ch1_am1         ),
724
                .pointer2(      pointer2        ),
725
                .pointer2_s(    pointer2_s      ),
726
                .ch2_csr(       ch2_csr         ),
727
                .ch2_txsz(      ch2_txsz        ),
728
                .ch2_adr0(      ch2_adr0        ),
729
                .ch2_adr1(      ch2_adr1        ),
730
                .ch2_am0(       ch2_am0         ),
731
                .ch2_am1(       ch2_am1         ),
732
                .pointer3(      pointer3        ),
733
                .pointer3_s(    pointer3_s      ),
734
                .ch3_csr(       ch3_csr         ),
735
                .ch3_txsz(      ch3_txsz        ),
736
                .ch3_adr0(      ch3_adr0        ),
737
                .ch3_adr1(      ch3_adr1        ),
738
                .ch3_am0(       ch3_am0         ),
739
                .ch3_am1(       ch3_am1         ),
740
                .pointer4(      pointer4        ),
741
                .pointer4_s(    pointer4_s      ),
742
                .ch4_csr(       ch4_csr         ),
743
                .ch4_txsz(      ch4_txsz        ),
744
                .ch4_adr0(      ch4_adr0        ),
745
                .ch4_adr1(      ch4_adr1        ),
746
                .ch4_am0(       ch4_am0         ),
747
                .ch4_am1(       ch4_am1         ),
748
                .pointer5(      pointer5        ),
749
                .pointer5_s(    pointer5_s      ),
750
                .ch5_csr(       ch5_csr         ),
751
                .ch5_txsz(      ch5_txsz        ),
752
                .ch5_adr0(      ch5_adr0        ),
753
                .ch5_adr1(      ch5_adr1        ),
754
                .ch5_am0(       ch5_am0         ),
755
                .ch5_am1(       ch5_am1         ),
756
                .pointer6(      pointer6        ),
757
                .pointer6_s(    pointer6_s      ),
758
                .ch6_csr(       ch6_csr         ),
759
                .ch6_txsz(      ch6_txsz        ),
760
                .ch6_adr0(      ch6_adr0        ),
761
                .ch6_adr1(      ch6_adr1        ),
762
                .ch6_am0(       ch6_am0         ),
763
                .ch6_am1(       ch6_am1         ),
764
                .pointer7(      pointer7        ),
765
                .pointer7_s(    pointer7_s      ),
766
                .ch7_csr(       ch7_csr         ),
767
                .ch7_txsz(      ch7_txsz        ),
768
                .ch7_adr0(      ch7_adr0        ),
769
                .ch7_adr1(      ch7_adr1        ),
770
                .ch7_am0(       ch7_am0         ),
771
                .ch7_am1(       ch7_am1         ),
772
                .pointer8(      pointer8        ),
773
                .pointer8_s(    pointer8_s      ),
774
                .ch8_csr(       ch8_csr         ),
775
                .ch8_txsz(      ch8_txsz        ),
776
                .ch8_adr0(      ch8_adr0        ),
777
                .ch8_adr1(      ch8_adr1        ),
778
                .ch8_am0(       ch8_am0         ),
779
                .ch8_am1(       ch8_am1         ),
780
                .pointer9(      pointer9        ),
781
                .pointer9_s(    pointer9_s      ),
782
                .ch9_csr(       ch9_csr         ),
783
                .ch9_txsz(      ch9_txsz        ),
784
                .ch9_adr0(      ch9_adr0        ),
785
                .ch9_adr1(      ch9_adr1        ),
786
                .ch9_am0(       ch9_am0         ),
787
                .ch9_am1(       ch9_am1         ),
788
                .pointer10(     pointer10       ),
789
                .pointer10_s(   pointer10_s     ),
790
                .ch10_csr(      ch10_csr        ),
791
                .ch10_txsz(     ch10_txsz       ),
792
                .ch10_adr0(     ch10_adr0       ),
793
                .ch10_adr1(     ch10_adr1       ),
794
                .ch10_am0(      ch10_am0        ),
795
                .ch10_am1(      ch10_am1        ),
796
                .pointer11(     pointer11       ),
797
                .pointer11_s(   pointer11_s     ),
798
                .ch11_csr(      ch11_csr        ),
799
                .ch11_txsz(     ch11_txsz       ),
800
                .ch11_adr0(     ch11_adr0       ),
801
                .ch11_adr1(     ch11_adr1       ),
802
                .ch11_am0(      ch11_am0        ),
803
                .ch11_am1(      ch11_am1        ),
804
                .pointer12(     pointer12       ),
805
                .pointer12_s(   pointer12_s     ),
806
                .ch12_csr(      ch12_csr        ),
807
                .ch12_txsz(     ch12_txsz       ),
808
                .ch12_adr0(     ch12_adr0       ),
809
                .ch12_adr1(     ch12_adr1       ),
810
                .ch12_am0(      ch12_am0        ),
811
                .ch12_am1(      ch12_am1        ),
812
                .pointer13(     pointer13       ),
813
                .pointer13_s(   pointer13_s     ),
814
                .ch13_csr(      ch13_csr        ),
815
                .ch13_txsz(     ch13_txsz       ),
816
                .ch13_adr0(     ch13_adr0       ),
817
                .ch13_adr1(     ch13_adr1       ),
818
                .ch13_am0(      ch13_am0        ),
819
                .ch13_am1(      ch13_am1        ),
820
                .pointer14(     pointer14       ),
821
                .pointer14_s(   pointer14_s     ),
822
                .ch14_csr(      ch14_csr        ),
823
                .ch14_txsz(     ch14_txsz       ),
824
                .ch14_adr0(     ch14_adr0       ),
825
                .ch14_adr1(     ch14_adr1       ),
826
                .ch14_am0(      ch14_am0        ),
827
                .ch14_am1(      ch14_am1        ),
828
                .pointer15(     pointer15       ),
829
                .pointer15_s(   pointer15_s     ),
830
                .ch15_csr(      ch15_csr        ),
831
                .ch15_txsz(     ch15_txsz       ),
832
                .ch15_adr0(     ch15_adr0       ),
833
                .ch15_adr1(     ch15_adr1       ),
834
                .ch15_am0(      ch15_am0        ),
835
                .ch15_am1(      ch15_am1        ),
836
                .pointer16(     pointer16       ),
837
                .pointer16_s(   pointer16_s     ),
838
                .ch16_csr(      ch16_csr        ),
839
                .ch16_txsz(     ch16_txsz       ),
840
                .ch16_adr0(     ch16_adr0       ),
841
                .ch16_adr1(     ch16_adr1       ),
842
                .ch16_am0(      ch16_am0        ),
843
                .ch16_am1(      ch16_am1        ),
844
                .pointer17(     pointer17       ),
845
                .pointer17_s(   pointer17_s     ),
846
                .ch17_csr(      ch17_csr        ),
847
                .ch17_txsz(     ch17_txsz       ),
848
                .ch17_adr0(     ch17_adr0       ),
849
                .ch17_adr1(     ch17_adr1       ),
850
                .ch17_am0(      ch17_am0        ),
851
                .ch17_am1(      ch17_am1        ),
852
                .pointer18(     pointer18       ),
853
                .pointer18_s(   pointer18_s     ),
854
                .ch18_csr(      ch18_csr        ),
855
                .ch18_txsz(     ch18_txsz       ),
856
                .ch18_adr0(     ch18_adr0       ),
857
                .ch18_adr1(     ch18_adr1       ),
858
                .ch18_am0(      ch18_am0        ),
859
                .ch18_am1(      ch18_am1        ),
860
                .pointer19(     pointer19       ),
861
                .pointer19_s(   pointer19_s     ),
862
                .ch19_csr(      ch19_csr        ),
863
                .ch19_txsz(     ch19_txsz       ),
864
                .ch19_adr0(     ch19_adr0       ),
865
                .ch19_adr1(     ch19_adr1       ),
866
                .ch19_am0(      ch19_am0        ),
867
                .ch19_am1(      ch19_am1        ),
868
                .pointer20(     pointer20       ),
869
                .pointer20_s(   pointer20_s     ),
870
                .ch20_csr(      ch20_csr        ),
871
                .ch20_txsz(     ch20_txsz       ),
872
                .ch20_adr0(     ch20_adr0       ),
873
                .ch20_adr1(     ch20_adr1       ),
874
                .ch20_am0(      ch20_am0        ),
875
                .ch20_am1(      ch20_am1        ),
876
                .pointer21(     pointer21       ),
877
                .pointer21_s(   pointer21_s     ),
878
                .ch21_csr(      ch21_csr        ),
879
                .ch21_txsz(     ch21_txsz       ),
880
                .ch21_adr0(     ch21_adr0       ),
881
                .ch21_adr1(     ch21_adr1       ),
882
                .ch21_am0(      ch21_am0        ),
883
                .ch21_am1(      ch21_am1        ),
884
                .pointer22(     pointer22       ),
885
                .pointer22_s(   pointer22_s     ),
886
                .ch22_csr(      ch22_csr        ),
887
                .ch22_txsz(     ch22_txsz       ),
888
                .ch22_adr0(     ch22_adr0       ),
889
                .ch22_adr1(     ch22_adr1       ),
890
                .ch22_am0(      ch22_am0        ),
891
                .ch22_am1(      ch22_am1        ),
892
                .pointer23(     pointer23       ),
893
                .pointer23_s(   pointer23_s     ),
894
                .ch23_csr(      ch23_csr        ),
895
                .ch23_txsz(     ch23_txsz       ),
896
                .ch23_adr0(     ch23_adr0       ),
897
                .ch23_adr1(     ch23_adr1       ),
898
                .ch23_am0(      ch23_am0        ),
899
                .ch23_am1(      ch23_am1        ),
900
                .pointer24(     pointer24       ),
901
                .pointer24_s(   pointer24_s     ),
902
                .ch24_csr(      ch24_csr        ),
903
                .ch24_txsz(     ch24_txsz       ),
904
                .ch24_adr0(     ch24_adr0       ),
905
                .ch24_adr1(     ch24_adr1       ),
906
                .ch24_am0(      ch24_am0        ),
907
                .ch24_am1(      ch24_am1        ),
908
                .pointer25(     pointer25       ),
909
                .pointer25_s(   pointer25_s     ),
910
                .ch25_csr(      ch25_csr        ),
911
                .ch25_txsz(     ch25_txsz       ),
912
                .ch25_adr0(     ch25_adr0       ),
913
                .ch25_adr1(     ch25_adr1       ),
914
                .ch25_am0(      ch25_am0        ),
915
                .ch25_am1(      ch25_am1        ),
916
                .pointer26(     pointer26       ),
917
                .pointer26_s(   pointer26_s     ),
918
                .ch26_csr(      ch26_csr        ),
919
                .ch26_txsz(     ch26_txsz       ),
920
                .ch26_adr0(     ch26_adr0       ),
921
                .ch26_adr1(     ch26_adr1       ),
922
                .ch26_am0(      ch26_am0        ),
923
                .ch26_am1(      ch26_am1        ),
924
                .pointer27(     pointer27       ),
925
                .pointer27_s(   pointer27_s     ),
926
                .ch27_csr(      ch27_csr        ),
927
                .ch27_txsz(     ch27_txsz       ),
928
                .ch27_adr0(     ch27_adr0       ),
929
                .ch27_adr1(     ch27_adr1       ),
930
                .ch27_am0(      ch27_am0        ),
931
                .ch27_am1(      ch27_am1        ),
932
                .pointer28(     pointer28       ),
933
                .pointer28_s(   pointer28_s     ),
934
                .ch28_csr(      ch28_csr        ),
935
                .ch28_txsz(     ch28_txsz       ),
936
                .ch28_adr0(     ch28_adr0       ),
937
                .ch28_adr1(     ch28_adr1       ),
938
                .ch28_am0(      ch28_am0        ),
939
                .ch28_am1(      ch28_am1        ),
940
                .pointer29(     pointer29       ),
941
                .pointer29_s(   pointer29_s     ),
942
                .ch29_csr(      ch29_csr        ),
943
                .ch29_txsz(     ch29_txsz       ),
944
                .ch29_adr0(     ch29_adr0       ),
945
                .ch29_adr1(     ch29_adr1       ),
946
                .ch29_am0(      ch29_am0        ),
947
                .ch29_am1(      ch29_am1        ),
948
                .pointer30(     pointer30       ),
949
                .pointer30_s(   pointer30_s     ),
950
                .ch30_csr(      ch30_csr        ),
951
                .ch30_txsz(     ch30_txsz       ),
952
                .ch30_adr0(     ch30_adr0       ),
953
                .ch30_adr1(     ch30_adr1       ),
954
                .ch30_am0(      ch30_am0        ),
955
                .ch30_am1(      ch30_am1        ),
956
 
957
                .ch_sel(        ch_sel          ),
958
                .ndnr(          ndnr            ),
959
                .de_start(      de_start        ),
960
                .ndr(           ndr             ),
961
                .csr(           csr             ),
962
                .pointer(       pointer         ),
963
                .txsz(          txsz            ),
964
                .adr0(          adr0            ),
965
                .adr1(          adr1            ),
966
                .am0(           am0             ),
967
                .am1(           am1             ),
968
                .pointer_s(     pointer_s       ),
969
                .next_ch(       next_ch         ),
970
                .de_ack(        de_ack          ),
971
                .dma_busy(      dma_busy        )
972
                );
973
 
974
 
975
// DMA Engine
976
wb_dma_de       u2(
977 8 rudi
                .clk(           clk_i           ),
978 9 rudi
                .rst(           ~rst_i          ),
979 5 rudi
                .mast0_go(      mast0_go        ),
980
                .mast0_we(      mast0_we        ),
981
                .mast0_adr(     mast0_adr       ),
982
                .mast0_din(     mast0_dout      ),
983
                .mast0_dout(    mast0_din       ),
984
                .mast0_err(     mast0_err       ),
985
                .mast0_drdy(    mast0_drdy      ),
986
                .mast0_wait(    mast0_wait      ),
987
                .mast1_go(      mast1_go        ),
988
                .mast1_we(      mast1_we        ),
989
                .mast1_adr(     mast1_adr       ),
990
                .mast1_din(     mast1_dout      ),
991
                .mast1_dout(    mast1_din       ),
992
                .mast1_err(     mast1_err       ),
993
                .mast1_drdy(    mast1_drdy      ),
994
                .mast1_wait(    mast1_wait      ),
995
                .de_start(      de_start        ),
996
                .nd(            ndr             ),
997
                .csr(           csr             ),
998
                .pointer(       pointer         ),
999
                .pointer_s(     pointer_s       ),
1000
                .txsz(          txsz            ),
1001
                .adr0(          adr0            ),
1002
                .adr1(          adr1            ),
1003
                .am0(           am0             ),
1004
                .am1(           am1             ),
1005
                .de_csr_we(     de_csr_we       ),
1006
                .de_txsz_we(    de_txsz_we      ),
1007
                .de_adr0_we(    de_adr0_we      ),
1008
                .de_adr1_we(    de_adr1_we      ),
1009
                .de_fetch_descr(de_fetch_descr  ),
1010
                .ptr_set(       ptr_set         ),
1011
                .de_csr(        de_csr          ),
1012
                .de_txsz(       de_txsz         ),
1013
                .de_adr0(       de_adr0         ),
1014
                .de_adr1(       de_adr1         ),
1015
                .next_ch(       next_ch         ),
1016
                .de_ack(        de_ack          ),
1017
                .pause_req(     pause_req       ),
1018
                .paused(        paused          ),
1019
                .dma_abort(     dma_abort       ),
1020
                .dma_busy(      dma_busy        ),
1021
                .dma_err(       dma_err         ),
1022
                .dma_done(      dma_done        ),
1023
                .dma_done_all(  dma_done_all    )
1024
                );
1025
 
1026
// Wishbone Interface 0
1027 10 rudi
wb_dma_wb_if    #(rf_addr)      u3(
1028 8 rudi
                .clk(           clk_i           ),
1029 9 rudi
                .rst(           ~rst_i          ),
1030 5 rudi
                .wbs_data_i(    wb0s_data_i     ),
1031
                .wbs_data_o(    wb0s_data_o     ),
1032
                .wb_addr_i(     wb0_addr_i      ),
1033
                .wb_sel_i(      wb0_sel_i       ),
1034
                .wb_we_i(       wb0_we_i        ),
1035
                .wb_cyc_i(      wb0_cyc_i       ),
1036
                .wb_stb_i(      wb0_stb_i       ),
1037
                .wb_ack_o(      wb0_ack_o       ),
1038
                .wb_err_o(      wb0_err_o       ),
1039
                .wb_rty_o(      wb0_rty_o       ),
1040
                .wbm_data_i(    wb0m_data_i     ),
1041
                .wbm_data_o(    wb0m_data_o     ),
1042
                .wb_addr_o(     wb0_addr_o      ),
1043
                .wb_sel_o(      wb0_sel_o       ),
1044
                .wb_we_o(       wb0_we_o        ),
1045
                .wb_cyc_o(      wb0_cyc_o       ),
1046
                .wb_stb_o(      wb0_stb_o       ),
1047
                .wb_ack_i(      wb0_ack_i       ),
1048
                .wb_err_i(      wb0_err_i       ),
1049
                .wb_rty_i(      wb0_rty_i       ),
1050
                .mast_go(       mast0_go        ),
1051
                .mast_we(       mast0_we        ),
1052
                .mast_adr(      mast0_adr       ),
1053
                .mast_din(      mast0_din       ),
1054
                .mast_dout(     mast0_dout      ),
1055
                .mast_err(      mast0_err       ),
1056
                .mast_drdy(     mast0_drdy      ),
1057
                .mast_wait(     mast0_wait      ),
1058
                .pt_sel_i(      pt0_sel_i       ),
1059
                .mast_pt_in(    mast0_pt_in     ),
1060
                .mast_pt_out(   mast0_pt_out    ),
1061
                .slv_adr(       slv0_adr        ),
1062
                .slv_din(       slv0_din        ),
1063
                .slv_dout(      slv0_dout       ),
1064
                .slv_re(        slv0_re         ),
1065
                .slv_we(        slv0_we         ),
1066
                .pt_sel_o(      pt0_sel_o       ),
1067
                .slv_pt_out(    slv0_pt_out     ),
1068
                .slv_pt_in(     slv0_pt_in      )
1069
                );
1070
 
1071
// Wishbone Interface 1
1072 10 rudi
wb_dma_wb_if    #(rf_addr) u4(
1073 8 rudi
                .clk(           clk_i           ),
1074 9 rudi
                .rst(           ~rst_i          ),
1075 5 rudi
                .wbs_data_i(    wb1s_data_i     ),
1076
                .wbs_data_o(    wb1s_data_o     ),
1077
                .wb_addr_i(     wb1_addr_i      ),
1078
                .wb_sel_i(      wb1_sel_i       ),
1079
                .wb_we_i(       wb1_we_i        ),
1080
                .wb_cyc_i(      wb1_cyc_i       ),
1081
                .wb_stb_i(      wb1_stb_i       ),
1082
                .wb_ack_o(      wb1_ack_o       ),
1083
                .wb_err_o(      wb1_err_o       ),
1084
                .wb_rty_o(      wb1_rty_o       ),
1085
                .wbm_data_i(    wb1m_data_i     ),
1086
                .wbm_data_o(    wb1m_data_o     ),
1087
                .wb_addr_o(     wb1_addr_o      ),
1088
                .wb_sel_o(      wb1_sel_o       ),
1089
                .wb_we_o(       wb1_we_o        ),
1090
                .wb_cyc_o(      wb1_cyc_o       ),
1091
                .wb_stb_o(      wb1_stb_o       ),
1092
                .wb_ack_i(      wb1_ack_i       ),
1093
                .wb_err_i(      wb1_err_i       ),
1094
                .wb_rty_i(      wb1_rty_i       ),
1095
                .mast_go(       mast1_go        ),
1096
                .mast_we(       mast1_we        ),
1097
                .mast_adr(      mast1_adr       ),
1098
                .mast_din(      mast1_din       ),
1099
                .mast_dout(     mast1_dout      ),
1100
                .mast_err(      mast1_err       ),
1101
                .mast_drdy(     mast1_drdy      ),
1102
                .mast_wait(     mast1_wait      ),
1103
                .pt_sel_i(      pt1_sel_i       ),
1104
                .mast_pt_in(    mast1_pt_in     ),
1105
                .mast_pt_out(   mast1_pt_out    ),
1106
                .slv_adr(       slv1_adr        ),
1107
                .slv_din(       32'h0           ),      // Not Connected
1108
                .slv_dout(      slv1_dout       ),      // Not Connected
1109
                .slv_re(        slv1_re         ),      // Not Connected
1110
                .slv_we(        slv1_we         ),      // Not Connected
1111
                .pt_sel_o(      pt1_sel_o       ),
1112
                .slv_pt_out(    slv1_pt_out     ),
1113
                .slv_pt_in(     slv1_pt_in      )
1114
                );
1115
 
1116
 
1117
endmodule

powered by: WebSVN 2.1.0

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