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 17

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

powered by: WebSVN 2.1.0

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