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

Subversion Repositories wb_dma

[/] [wb_dma/] [trunk/] [rtl/] [verilog/] [wb_dma_rf.v] - Blame information for rev 17

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 rudi
/////////////////////////////////////////////////////////////////////
2
////                                                             ////
3
////  WISHBONE DMA Register File                                 ////
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_rf.v,v 1.4 2002-02-01 01:54:45 rudi Exp $
42 5 rudi
//
43 15 rudi
//  $Date: 2002-02-01 01:54:45 $
44
//  $Revision: 1.4 $
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.3  2001/10/19 04:35:04  rudi
52
//
53
//               - Made the core parameterized
54
//
55 10 rudi
//               Revision 1.2  2001/08/15 05:40:30  rudi
56
//
57
//               - Changed IO names to be more clear.
58
//               - Uniquifyed define names to be core specific.
59
//               - Added Section 3.10, describing DMA restart.
60
//
61 8 rudi
//               Revision 1.1  2001/07/29 08:57:02  rudi
62
//
63
//
64
//               1) Changed Directory Structure
65
//               2) Added restart signal (REST)
66
//
67 5 rudi
//               Revision 1.4  2001/06/14 08:50:46  rudi
68
//
69
//               Changed name of channel register file module.
70
//
71
//               Revision 1.3  2001/06/13 02:26:48  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:11  rudi
86
//               Initial Release
87
//
88
//
89
//
90
 
91
`include "wb_dma_defines.v"
92
 
93
module wb_dma_rf(clk, rst,
94
 
95
        // WISHBONE Access
96
        wb_rf_adr, wb_rf_din, wb_rf_dout, wb_rf_re, wb_rf_we,
97
 
98
        // WISHBONE Interrupt outputs
99
        inta_o, intb_o,
100
 
101
        // DMA Registers Outputs
102
        pointer0, pointer0_s, ch0_csr, ch0_txsz, ch0_adr0, ch0_adr1, ch0_am0, ch0_am1,
103
        pointer1, pointer1_s, ch1_csr, ch1_txsz, ch1_adr0, ch1_adr1, ch1_am0, ch1_am1,
104
        pointer2, pointer2_s, ch2_csr, ch2_txsz, ch2_adr0, ch2_adr1, ch2_am0, ch2_am1,
105
        pointer3, pointer3_s, ch3_csr, ch3_txsz, ch3_adr0, ch3_adr1, ch3_am0, ch3_am1,
106
        pointer4, pointer4_s, ch4_csr, ch4_txsz, ch4_adr0, ch4_adr1, ch4_am0, ch4_am1,
107
        pointer5, pointer5_s, ch5_csr, ch5_txsz, ch5_adr0, ch5_adr1, ch5_am0, ch5_am1,
108
        pointer6, pointer6_s, ch6_csr, ch6_txsz, ch6_adr0, ch6_adr1, ch6_am0, ch6_am1,
109
        pointer7, pointer7_s, ch7_csr, ch7_txsz, ch7_adr0, ch7_adr1, ch7_am0, ch7_am1,
110
        pointer8, pointer8_s, ch8_csr, ch8_txsz, ch8_adr0, ch8_adr1, ch8_am0, ch8_am1,
111
        pointer9, pointer9_s, ch9_csr, ch9_txsz, ch9_adr0, ch9_adr1, ch9_am0, ch9_am1,
112
        pointer10, pointer10_s, ch10_csr, ch10_txsz, ch10_adr0, ch10_adr1, ch10_am0, ch10_am1,
113
        pointer11, pointer11_s, ch11_csr, ch11_txsz, ch11_adr0, ch11_adr1, ch11_am0, ch11_am1,
114
        pointer12, pointer12_s, ch12_csr, ch12_txsz, ch12_adr0, ch12_adr1, ch12_am0, ch12_am1,
115
        pointer13, pointer13_s, ch13_csr, ch13_txsz, ch13_adr0, ch13_adr1, ch13_am0, ch13_am1,
116
        pointer14, pointer14_s, ch14_csr, ch14_txsz, ch14_adr0, ch14_adr1, ch14_am0, ch14_am1,
117
        pointer15, pointer15_s, ch15_csr, ch15_txsz, ch15_adr0, ch15_adr1, ch15_am0, ch15_am1,
118
        pointer16, pointer16_s, ch16_csr, ch16_txsz, ch16_adr0, ch16_adr1, ch16_am0, ch16_am1,
119
        pointer17, pointer17_s, ch17_csr, ch17_txsz, ch17_adr0, ch17_adr1, ch17_am0, ch17_am1,
120
        pointer18, pointer18_s, ch18_csr, ch18_txsz, ch18_adr0, ch18_adr1, ch18_am0, ch18_am1,
121
        pointer19, pointer19_s, ch19_csr, ch19_txsz, ch19_adr0, ch19_adr1, ch19_am0, ch19_am1,
122
        pointer20, pointer20_s, ch20_csr, ch20_txsz, ch20_adr0, ch20_adr1, ch20_am0, ch20_am1,
123
        pointer21, pointer21_s, ch21_csr, ch21_txsz, ch21_adr0, ch21_adr1, ch21_am0, ch21_am1,
124
        pointer22, pointer22_s, ch22_csr, ch22_txsz, ch22_adr0, ch22_adr1, ch22_am0, ch22_am1,
125
        pointer23, pointer23_s, ch23_csr, ch23_txsz, ch23_adr0, ch23_adr1, ch23_am0, ch23_am1,
126
        pointer24, pointer24_s, ch24_csr, ch24_txsz, ch24_adr0, ch24_adr1, ch24_am0, ch24_am1,
127
        pointer25, pointer25_s, ch25_csr, ch25_txsz, ch25_adr0, ch25_adr1, ch25_am0, ch25_am1,
128
        pointer26, pointer26_s, ch26_csr, ch26_txsz, ch26_adr0, ch26_adr1, ch26_am0, ch26_am1,
129
        pointer27, pointer27_s, ch27_csr, ch27_txsz, ch27_adr0, ch27_adr1, ch27_am0, ch27_am1,
130
        pointer28, pointer28_s, ch28_csr, ch28_txsz, ch28_adr0, ch28_adr1, ch28_am0, ch28_am1,
131
        pointer29, pointer29_s, ch29_csr, ch29_txsz, ch29_adr0, ch29_adr1, ch29_am0, ch29_am1,
132
        pointer30, pointer30_s, ch30_csr, ch30_txsz, ch30_adr0, ch30_adr1, ch30_am0, ch30_am1,
133
 
134
        // DMA Registers Write Back Channel Select
135
        ch_sel, ndnr,
136
 
137
        // DMA Engine Status
138
        pause_req, paused, dma_abort, dma_busy, dma_err, dma_done, dma_done_all,
139
 
140
        // DMA Engine Reg File Update ctrl signals
141
        de_csr, de_txsz, de_adr0, de_adr1,
142
        de_csr_we, de_txsz_we, de_adr0_we, de_adr1_we, de_fetch_descr, dma_rest,
143
        ptr_set
144
        );
145
 
146 10 rudi
////////////////////////////////////////////////////////////////////
147
//
148
// Module Parameters
149
//
150
 
151
// chXX_conf = { CBUF, ED, ARS, EN }
152
parameter       [3:0]    ch0_conf = 4'h1;
153
parameter       [3:0]    ch1_conf = 4'h0;
154
parameter       [3:0]    ch2_conf = 4'h0;
155
parameter       [3:0]    ch3_conf = 4'h0;
156
parameter       [3:0]    ch4_conf = 4'h0;
157
parameter       [3:0]    ch5_conf = 4'h0;
158
parameter       [3:0]    ch6_conf = 4'h0;
159
parameter       [3:0]    ch7_conf = 4'h0;
160
parameter       [3:0]    ch8_conf = 4'h0;
161
parameter       [3:0]    ch9_conf = 4'h0;
162
parameter       [3:0]    ch10_conf = 4'h0;
163
parameter       [3:0]    ch11_conf = 4'h0;
164
parameter       [3:0]    ch12_conf = 4'h0;
165
parameter       [3:0]    ch13_conf = 4'h0;
166
parameter       [3:0]    ch14_conf = 4'h0;
167
parameter       [3:0]    ch15_conf = 4'h0;
168
parameter       [3:0]    ch16_conf = 4'h0;
169
parameter       [3:0]    ch17_conf = 4'h0;
170
parameter       [3:0]    ch18_conf = 4'h0;
171
parameter       [3:0]    ch19_conf = 4'h0;
172
parameter       [3:0]    ch20_conf = 4'h0;
173
parameter       [3:0]    ch21_conf = 4'h0;
174
parameter       [3:0]    ch22_conf = 4'h0;
175
parameter       [3:0]    ch23_conf = 4'h0;
176
parameter       [3:0]    ch24_conf = 4'h0;
177
parameter       [3:0]    ch25_conf = 4'h0;
178
parameter       [3:0]    ch26_conf = 4'h0;
179
parameter       [3:0]    ch27_conf = 4'h0;
180
parameter       [3:0]    ch28_conf = 4'h0;
181
parameter       [3:0]    ch29_conf = 4'h0;
182
parameter       [3:0]    ch30_conf = 4'h0;
183
 
184
////////////////////////////////////////////////////////////////////
185
//
186
// Module IOs
187
//
188
 
189 5 rudi
input           clk, rst;
190
 
191
// WISHBONE Access
192
input   [7:0]    wb_rf_adr;
193
input   [31:0]   wb_rf_din;
194
output  [31:0]   wb_rf_dout;
195
input           wb_rf_re;
196
input           wb_rf_we;
197
 
198
// WISHBONE Interrupt outputs
199
output          inta_o, intb_o;
200
 
201
// Channel Registers Inputs
202
output  [31:0]   pointer0, pointer0_s, ch0_csr, ch0_txsz, ch0_adr0, ch0_adr1, ch0_am0, ch0_am1;
203
output  [31:0]   pointer1, pointer1_s, ch1_csr, ch1_txsz, ch1_adr0, ch1_adr1, ch1_am0, ch1_am1;
204
output  [31:0]   pointer2, pointer2_s, ch2_csr, ch2_txsz, ch2_adr0, ch2_adr1, ch2_am0, ch2_am1;
205
output  [31:0]   pointer3, pointer3_s, ch3_csr, ch3_txsz, ch3_adr0, ch3_adr1, ch3_am0, ch3_am1;
206
output  [31:0]   pointer4, pointer4_s, ch4_csr, ch4_txsz, ch4_adr0, ch4_adr1, ch4_am0, ch4_am1;
207
output  [31:0]   pointer5, pointer5_s, ch5_csr, ch5_txsz, ch5_adr0, ch5_adr1, ch5_am0, ch5_am1;
208
output  [31:0]   pointer6, pointer6_s, ch6_csr, ch6_txsz, ch6_adr0, ch6_adr1, ch6_am0, ch6_am1;
209
output  [31:0]   pointer7, pointer7_s, ch7_csr, ch7_txsz, ch7_adr0, ch7_adr1, ch7_am0, ch7_am1;
210
output  [31:0]   pointer8, pointer8_s, ch8_csr, ch8_txsz, ch8_adr0, ch8_adr1, ch8_am0, ch8_am1;
211
output  [31:0]   pointer9, pointer9_s, ch9_csr, ch9_txsz, ch9_adr0, ch9_adr1, ch9_am0, ch9_am1;
212
output  [31:0]   pointer10, pointer10_s, ch10_csr, ch10_txsz, ch10_adr0, ch10_adr1, ch10_am0, ch10_am1;
213
output  [31:0]   pointer11, pointer11_s, ch11_csr, ch11_txsz, ch11_adr0, ch11_adr1, ch11_am0, ch11_am1;
214
output  [31:0]   pointer12, pointer12_s, ch12_csr, ch12_txsz, ch12_adr0, ch12_adr1, ch12_am0, ch12_am1;
215
output  [31:0]   pointer13, pointer13_s, ch13_csr, ch13_txsz, ch13_adr0, ch13_adr1, ch13_am0, ch13_am1;
216
output  [31:0]   pointer14, pointer14_s, ch14_csr, ch14_txsz, ch14_adr0, ch14_adr1, ch14_am0, ch14_am1;
217
output  [31:0]   pointer15, pointer15_s, ch15_csr, ch15_txsz, ch15_adr0, ch15_adr1, ch15_am0, ch15_am1;
218
output  [31:0]   pointer16, pointer16_s, ch16_csr, ch16_txsz, ch16_adr0, ch16_adr1, ch16_am0, ch16_am1;
219
output  [31:0]   pointer17, pointer17_s, ch17_csr, ch17_txsz, ch17_adr0, ch17_adr1, ch17_am0, ch17_am1;
220
output  [31:0]   pointer18, pointer18_s, ch18_csr, ch18_txsz, ch18_adr0, ch18_adr1, ch18_am0, ch18_am1;
221
output  [31:0]   pointer19, pointer19_s, ch19_csr, ch19_txsz, ch19_adr0, ch19_adr1, ch19_am0, ch19_am1;
222
output  [31:0]   pointer20, pointer20_s, ch20_csr, ch20_txsz, ch20_adr0, ch20_adr1, ch20_am0, ch20_am1;
223
output  [31:0]   pointer21, pointer21_s, ch21_csr, ch21_txsz, ch21_adr0, ch21_adr1, ch21_am0, ch21_am1;
224
output  [31:0]   pointer22, pointer22_s, ch22_csr, ch22_txsz, ch22_adr0, ch22_adr1, ch22_am0, ch22_am1;
225
output  [31:0]   pointer23, pointer23_s, ch23_csr, ch23_txsz, ch23_adr0, ch23_adr1, ch23_am0, ch23_am1;
226
output  [31:0]   pointer24, pointer24_s, ch24_csr, ch24_txsz, ch24_adr0, ch24_adr1, ch24_am0, ch24_am1;
227
output  [31:0]   pointer25, pointer25_s, ch25_csr, ch25_txsz, ch25_adr0, ch25_adr1, ch25_am0, ch25_am1;
228
output  [31:0]   pointer26, pointer26_s, ch26_csr, ch26_txsz, ch26_adr0, ch26_adr1, ch26_am0, ch26_am1;
229
output  [31:0]   pointer27, pointer27_s, ch27_csr, ch27_txsz, ch27_adr0, ch27_adr1, ch27_am0, ch27_am1;
230
output  [31:0]   pointer28, pointer28_s, ch28_csr, ch28_txsz, ch28_adr0, ch28_adr1, ch28_am0, ch28_am1;
231
output  [31:0]   pointer29, pointer29_s, ch29_csr, ch29_txsz, ch29_adr0, ch29_adr1, ch29_am0, ch29_am1;
232
output  [31:0]   pointer30, pointer30_s, ch30_csr, ch30_txsz, ch30_adr0, ch30_adr1, ch30_am0, ch30_am1;
233
 
234
input   [4:0]    ch_sel;         // Write Back Channel Select
235
input   [30:0]   ndnr;           // Next Descriptor No Request
236
 
237
// DMA Engine Abort
238
output          dma_abort;
239
 
240
// DMA Engine Status
241
output          pause_req;
242
input           paused;
243
input           dma_busy, dma_err, dma_done, dma_done_all;
244
 
245
// DMA Engine Reg File Update ctrl signals
246
input   [31:0]   de_csr;
247
input   [11:0]   de_txsz;
248
input   [31:0]   de_adr0;
249
input   [31:0]   de_adr1;
250
input           de_csr_we, de_txsz_we, de_adr0_we, de_adr1_we, ptr_set;
251
input           de_fetch_descr;
252
input   [30:0]   dma_rest;
253
 
254
////////////////////////////////////////////////////////////////////
255
//
256
// Local Wires and Registers
257
//
258
 
259
reg     [31:0]   wb_rf_dout;
260
reg             inta_o, intb_o;
261
reg     [30:0]   int_maska_r, int_maskb_r;
262
wire    [31:0]   int_maska, int_maskb;
263
wire    [31:0]   int_srca, int_srcb;
264
wire            int_maska_we, int_maskb_we;
265
wire    [30:0]   ch_int;
266
wire            csr_we;
267
wire    [31:0]   csr;
268
reg     [7:0]    csr_r;
269
 
270
wire    [30:0]   ch_stop;
271
wire    [30:0]   ch_dis;
272
 
273
wire    [31:0]   ch0_csr, ch0_txsz, ch0_adr0, ch0_adr1, ch0_am0, ch0_am1;
274
wire    [31:0]   ch1_csr, ch1_txsz, ch1_adr0, ch1_adr1, ch1_am0, ch1_am1;
275
wire    [31:0]   ch2_csr, ch2_txsz, ch2_adr0, ch2_adr1, ch2_am0, ch2_am1;
276
wire    [31:0]   ch3_csr, ch3_txsz, ch3_adr0, ch3_adr1, ch3_am0, ch3_am1;
277
wire    [31:0]   ch4_csr, ch4_txsz, ch4_adr0, ch4_adr1, ch4_am0, ch4_am1;
278
wire    [31:0]   ch5_csr, ch5_txsz, ch5_adr0, ch5_adr1, ch5_am0, ch5_am1;
279
wire    [31:0]   ch6_csr, ch6_txsz, ch6_adr0, ch6_adr1, ch6_am0, ch6_am1;
280
wire    [31:0]   ch7_csr, ch7_txsz, ch7_adr0, ch7_adr1, ch7_am0, ch7_am1;
281
wire    [31:0]   ch8_csr, ch8_txsz, ch8_adr0, ch8_adr1, ch8_am0, ch8_am1;
282
wire    [31:0]   ch9_csr, ch9_txsz, ch9_adr0, ch9_adr1, ch9_am0, ch9_am1;
283
wire    [31:0]   ch10_csr, ch10_txsz, ch10_adr0, ch10_adr1, ch10_am0, ch10_am1;
284
wire    [31:0]   ch11_csr, ch11_txsz, ch11_adr0, ch11_adr1, ch11_am0, ch11_am1;
285
wire    [31:0]   ch12_csr, ch12_txsz, ch12_adr0, ch12_adr1, ch12_am0, ch12_am1;
286
wire    [31:0]   ch13_csr, ch13_txsz, ch13_adr0, ch13_adr1, ch13_am0, ch13_am1;
287
wire    [31:0]   ch14_csr, ch14_txsz, ch14_adr0, ch14_adr1, ch14_am0, ch14_am1;
288
wire    [31:0]   ch15_csr, ch15_txsz, ch15_adr0, ch15_adr1, ch15_am0, ch15_am1;
289
wire    [31:0]   ch16_csr, ch16_txsz, ch16_adr0, ch16_adr1, ch16_am0, ch16_am1;
290
wire    [31:0]   ch17_csr, ch17_txsz, ch17_adr0, ch17_adr1, ch17_am0, ch17_am1;
291
wire    [31:0]   ch18_csr, ch18_txsz, ch18_adr0, ch18_adr1, ch18_am0, ch18_am1;
292
wire    [31:0]   ch19_csr, ch19_txsz, ch19_adr0, ch19_adr1, ch19_am0, ch19_am1;
293
wire    [31:0]   ch20_csr, ch20_txsz, ch20_adr0, ch20_adr1, ch20_am0, ch20_am1;
294
wire    [31:0]   ch21_csr, ch21_txsz, ch21_adr0, ch21_adr1, ch21_am0, ch21_am1;
295
wire    [31:0]   ch22_csr, ch22_txsz, ch22_adr0, ch22_adr1, ch22_am0, ch22_am1;
296
wire    [31:0]   ch23_csr, ch23_txsz, ch23_adr0, ch23_adr1, ch23_am0, ch23_am1;
297
wire    [31:0]   ch24_csr, ch24_txsz, ch24_adr0, ch24_adr1, ch24_am0, ch24_am1;
298
wire    [31:0]   ch25_csr, ch25_txsz, ch25_adr0, ch25_adr1, ch25_am0, ch25_am1;
299
wire    [31:0]   ch26_csr, ch26_txsz, ch26_adr0, ch26_adr1, ch26_am0, ch26_am1;
300
wire    [31:0]   ch27_csr, ch27_txsz, ch27_adr0, ch27_adr1, ch27_am0, ch27_am1;
301
wire    [31:0]   ch28_csr, ch28_txsz, ch28_adr0, ch28_adr1, ch28_am0, ch28_am1;
302
wire    [31:0]   ch29_csr, ch29_txsz, ch29_adr0, ch29_adr1, ch29_am0, ch29_am1;
303
wire    [31:0]   ch30_csr, ch30_txsz, ch30_adr0, ch30_adr1, ch30_am0, ch30_am1;
304
 
305
wire    [31:0]   sw_pointer0, sw_pointer1, sw_pointer2, sw_pointer3;
306
wire    [31:0]   sw_pointer4, sw_pointer5, sw_pointer6, sw_pointer7;
307
wire    [31:0]   sw_pointer8, sw_pointer9, sw_pointer10, sw_pointer11;
308
wire    [31:0]   sw_pointer12, sw_pointer13, sw_pointer14, sw_pointer15;
309
wire    [31:0]   sw_pointer16, sw_pointer17, sw_pointer18, sw_pointer19;
310
wire    [31:0]   sw_pointer20, sw_pointer21, sw_pointer22, sw_pointer23;
311
wire    [31:0]   sw_pointer24, sw_pointer25, sw_pointer26, sw_pointer27;
312
wire    [31:0]   sw_pointer28, sw_pointer29, sw_pointer30;
313
 
314
////////////////////////////////////////////////////////////////////
315
//
316
// Aliases
317
//
318
 
319
assign int_maska = {1'h0, int_maska_r};
320
assign int_maskb = {1'h0, int_maskb_r};
321
assign csr = {31'h0, paused};
322
 
323
////////////////////////////////////////////////////////////////////
324
//
325
// Misc Logic
326
//
327
 
328
assign dma_abort = |ch_stop;
329
assign pause_req = csr_r[0];
330
 
331
////////////////////////////////////////////////////////////////////
332
//
333
// WISHBONE Register Read Logic
334
//
335
 
336
always @(posedge clk)
337
        case(wb_rf_adr)         // synopsys parallel_case full_case
338
           8'h0:        wb_rf_dout <= #1 csr;
339
           8'h1:        wb_rf_dout <= #1 int_maska;
340
           8'h2:        wb_rf_dout <= #1 int_maskb;
341
           8'h3:        wb_rf_dout <= #1 int_srca;
342
           8'h4:        wb_rf_dout <= #1 int_srcb;
343
 
344
           8'h8:        wb_rf_dout <= #1 ch0_csr;
345
           8'h9:        wb_rf_dout <= #1 ch0_txsz;
346
           8'ha:        wb_rf_dout <= #1 ch0_adr0;
347
           8'hb:        wb_rf_dout <= #1 ch0_am0;
348
           8'hc:        wb_rf_dout <= #1 ch0_adr1;
349
           8'hd:        wb_rf_dout <= #1 ch0_am1;
350
           8'he:        wb_rf_dout <= #1 pointer0;
351
           8'hf:        wb_rf_dout <= #1 sw_pointer0;
352
 
353 10 rudi
           8'h10:       wb_rf_dout <= #1 ch1_conf[0] ? ch1_csr    : 32'h0;
354
           8'h11:       wb_rf_dout <= #1 ch1_conf[0] ? ch1_txsz   : 32'h0;
355
           8'h12:       wb_rf_dout <= #1 ch1_conf[0] ? ch1_adr0   : 32'h0;
356
           8'h13:       wb_rf_dout <= #1 ch1_conf[0] ? ch1_am0    : 32'h0;
357
           8'h14:       wb_rf_dout <= #1 ch1_conf[0] ? ch1_adr1   : 32'h0;
358
           8'h15:       wb_rf_dout <= #1 ch1_conf[0] ? ch1_am1    : 32'h0;
359
           8'h16:       wb_rf_dout <= #1 ch1_conf[0] ? pointer1   : 32'h0;
360
           8'h17:       wb_rf_dout <= #1 ch1_conf[0] ? sw_pointer1   : 32'h0;
361 5 rudi
 
362 10 rudi
           8'h18:       wb_rf_dout <= #1 ch2_conf[0] ? ch2_csr    : 32'h0;
363
           8'h19:       wb_rf_dout <= #1 ch2_conf[0] ? ch2_txsz   : 32'h0;
364
           8'h1a:       wb_rf_dout <= #1 ch2_conf[0] ? ch2_adr0   : 32'h0;
365
           8'h1b:       wb_rf_dout <= #1 ch2_conf[0] ? ch2_am0    : 32'h0;
366
           8'h1c:       wb_rf_dout <= #1 ch2_conf[0] ? ch2_adr1   : 32'h0;
367
           8'h1d:       wb_rf_dout <= #1 ch2_conf[0] ? ch2_am1    : 32'h0;
368
           8'h1e:       wb_rf_dout <= #1 ch2_conf[0] ? pointer2   : 32'h0;
369
           8'h1f:       wb_rf_dout <= #1 ch2_conf[0] ? sw_pointer2   : 32'h0;
370 5 rudi
 
371 10 rudi
           8'h20:       wb_rf_dout <= #1 ch3_conf[0] ? ch3_csr    : 32'h0;
372
           8'h21:       wb_rf_dout <= #1 ch3_conf[0] ? ch3_txsz   : 32'h0;
373
           8'h22:       wb_rf_dout <= #1 ch3_conf[0] ? ch3_adr0   : 32'h0;
374
           8'h23:       wb_rf_dout <= #1 ch3_conf[0] ? ch3_am0    : 32'h0;
375
           8'h24:       wb_rf_dout <= #1 ch3_conf[0] ? ch3_adr1   : 32'h0;
376
           8'h25:       wb_rf_dout <= #1 ch3_conf[0] ? ch3_am1    : 32'h0;
377
           8'h26:       wb_rf_dout <= #1 ch3_conf[0] ? pointer3   : 32'h0;
378
           8'h27:       wb_rf_dout <= #1 ch3_conf[0] ? sw_pointer3   : 32'h0;
379 5 rudi
 
380 10 rudi
           8'h28:       wb_rf_dout <= #1 ch4_conf[0] ? ch4_csr    : 32'h0;
381
           8'h29:       wb_rf_dout <= #1 ch4_conf[0] ? ch4_txsz   : 32'h0;
382
           8'h2a:       wb_rf_dout <= #1 ch4_conf[0] ? ch4_adr0   : 32'h0;
383
           8'h2b:       wb_rf_dout <= #1 ch4_conf[0] ? ch4_am0    : 32'h0;
384
           8'h2c:       wb_rf_dout <= #1 ch4_conf[0] ? ch4_adr1   : 32'h0;
385
           8'h2d:       wb_rf_dout <= #1 ch4_conf[0] ? ch4_am1    : 32'h0;
386
           8'h2e:       wb_rf_dout <= #1 ch4_conf[0] ? pointer4   : 32'h0;
387
           8'h2f:       wb_rf_dout <= #1 ch4_conf[0] ? sw_pointer4   : 32'h0;
388 5 rudi
 
389 10 rudi
           8'h30:       wb_rf_dout <= #1 ch5_conf[0] ? ch5_csr    : 32'h0;
390
           8'h31:       wb_rf_dout <= #1 ch5_conf[0] ? ch5_txsz   : 32'h0;
391
           8'h32:       wb_rf_dout <= #1 ch5_conf[0] ? ch5_adr0   : 32'h0;
392
           8'h33:       wb_rf_dout <= #1 ch5_conf[0] ? ch5_am0    : 32'h0;
393
           8'h34:       wb_rf_dout <= #1 ch5_conf[0] ? ch5_adr1   : 32'h0;
394
           8'h35:       wb_rf_dout <= #1 ch5_conf[0] ? ch5_am1    : 32'h0;
395
           8'h36:       wb_rf_dout <= #1 ch5_conf[0] ? pointer5   : 32'h0;
396
           8'h37:       wb_rf_dout <= #1 ch5_conf[0] ? sw_pointer5   : 32'h0;
397 5 rudi
 
398 10 rudi
           8'h38:       wb_rf_dout <= #1 ch6_conf[0] ? ch6_csr    : 32'h0;
399
           8'h39:       wb_rf_dout <= #1 ch6_conf[0] ? ch6_txsz   : 32'h0;
400
           8'h3a:       wb_rf_dout <= #1 ch6_conf[0] ? ch6_adr0   : 32'h0;
401
           8'h3b:       wb_rf_dout <= #1 ch6_conf[0] ? ch6_am0    : 32'h0;
402
           8'h3c:       wb_rf_dout <= #1 ch6_conf[0] ? ch6_adr1   : 32'h0;
403
           8'h3d:       wb_rf_dout <= #1 ch6_conf[0] ? ch6_am1    : 32'h0;
404
           8'h3e:       wb_rf_dout <= #1 ch6_conf[0] ? pointer6   : 32'h0;
405
           8'h3f:       wb_rf_dout <= #1 ch6_conf[0] ? sw_pointer6   : 32'h0;
406 5 rudi
 
407 10 rudi
           8'h40:       wb_rf_dout <= #1 ch7_conf[0] ? ch7_csr    : 32'h0;
408
           8'h41:       wb_rf_dout <= #1 ch7_conf[0] ? ch7_txsz   : 32'h0;
409
           8'h42:       wb_rf_dout <= #1 ch7_conf[0] ? ch7_adr0   : 32'h0;
410
           8'h43:       wb_rf_dout <= #1 ch7_conf[0] ? ch7_am0    : 32'h0;
411
           8'h44:       wb_rf_dout <= #1 ch7_conf[0] ? ch7_adr1   : 32'h0;
412
           8'h45:       wb_rf_dout <= #1 ch7_conf[0] ? ch7_am1    : 32'h0;
413
           8'h46:       wb_rf_dout <= #1 ch7_conf[0] ? pointer7   : 32'h0;
414
           8'h47:       wb_rf_dout <= #1 ch7_conf[0] ? sw_pointer7   : 32'h0;
415 5 rudi
 
416 10 rudi
           8'h48:       wb_rf_dout <= #1 ch8_conf[0] ? ch8_csr    : 32'h0;
417
           8'h49:       wb_rf_dout <= #1 ch8_conf[0] ? ch8_txsz   : 32'h0;
418
           8'h4a:       wb_rf_dout <= #1 ch8_conf[0] ? ch8_adr0   : 32'h0;
419
           8'h4b:       wb_rf_dout <= #1 ch8_conf[0] ? ch8_am0    : 32'h0;
420
           8'h4c:       wb_rf_dout <= #1 ch8_conf[0] ? ch8_adr1   : 32'h0;
421
           8'h4d:       wb_rf_dout <= #1 ch8_conf[0] ? ch8_am1    : 32'h0;
422
           8'h4e:       wb_rf_dout <= #1 ch8_conf[0] ? pointer8   : 32'h0;
423
           8'h4f:       wb_rf_dout <= #1 ch8_conf[0] ? sw_pointer8   : 32'h0;
424 5 rudi
 
425 10 rudi
           8'h50:       wb_rf_dout <= #1 ch9_conf[0] ? ch9_csr    : 32'h0;
426
           8'h51:       wb_rf_dout <= #1 ch9_conf[0] ? ch9_txsz   : 32'h0;
427
           8'h52:       wb_rf_dout <= #1 ch9_conf[0] ? ch9_adr0   : 32'h0;
428
           8'h53:       wb_rf_dout <= #1 ch9_conf[0] ? ch9_am0    : 32'h0;
429
           8'h54:       wb_rf_dout <= #1 ch9_conf[0] ? ch9_adr1   : 32'h0;
430
           8'h55:       wb_rf_dout <= #1 ch9_conf[0] ? ch9_am1    : 32'h0;
431
           8'h56:       wb_rf_dout <= #1 ch9_conf[0] ? pointer9   : 32'h0;
432
           8'h57:       wb_rf_dout <= #1 ch9_conf[0] ? sw_pointer9   : 32'h0;
433 5 rudi
 
434 10 rudi
           8'h58:       wb_rf_dout <= #1 ch10_conf[0] ? ch10_csr    : 32'h0;
435
           8'h59:       wb_rf_dout <= #1 ch10_conf[0] ? ch10_txsz   : 32'h0;
436
           8'h5a:       wb_rf_dout <= #1 ch10_conf[0] ? ch10_adr0   : 32'h0;
437
           8'h5b:       wb_rf_dout <= #1 ch10_conf[0] ? ch10_am0    : 32'h0;
438
           8'h5c:       wb_rf_dout <= #1 ch10_conf[0] ? ch10_adr1   : 32'h0;
439
           8'h5d:       wb_rf_dout <= #1 ch10_conf[0] ? ch10_am1    : 32'h0;
440
           8'h5e:       wb_rf_dout <= #1 ch10_conf[0] ? pointer10   : 32'h0;
441
           8'h5f:       wb_rf_dout <= #1 ch10_conf[0] ? sw_pointer10   : 32'h0;
442 5 rudi
 
443 10 rudi
           8'h60:       wb_rf_dout <= #1 ch11_conf[0] ? ch11_csr    : 32'h0;
444
           8'h61:       wb_rf_dout <= #1 ch11_conf[0] ? ch11_txsz   : 32'h0;
445
           8'h62:       wb_rf_dout <= #1 ch11_conf[0] ? ch11_adr0   : 32'h0;
446
           8'h63:       wb_rf_dout <= #1 ch11_conf[0] ? ch11_am0    : 32'h0;
447
           8'h64:       wb_rf_dout <= #1 ch11_conf[0] ? ch11_adr1   : 32'h0;
448
           8'h65:       wb_rf_dout <= #1 ch11_conf[0] ? ch11_am1    : 32'h0;
449
           8'h66:       wb_rf_dout <= #1 ch11_conf[0] ? pointer11   : 32'h0;
450
           8'h67:       wb_rf_dout <= #1 ch11_conf[0] ? sw_pointer11   : 32'h0;
451 5 rudi
 
452 10 rudi
           8'h68:       wb_rf_dout <= #1 ch12_conf[0] ? ch12_csr    : 32'h0;
453
           8'h69:       wb_rf_dout <= #1 ch12_conf[0] ? ch12_txsz   : 32'h0;
454
           8'h6a:       wb_rf_dout <= #1 ch12_conf[0] ? ch12_adr0   : 32'h0;
455
           8'h6b:       wb_rf_dout <= #1 ch12_conf[0] ? ch12_am0    : 32'h0;
456
           8'h6c:       wb_rf_dout <= #1 ch12_conf[0] ? ch12_adr1   : 32'h0;
457
           8'h6d:       wb_rf_dout <= #1 ch12_conf[0] ? ch12_am1    : 32'h0;
458
           8'h6e:       wb_rf_dout <= #1 ch12_conf[0] ? pointer12   : 32'h0;
459
           8'h6f:       wb_rf_dout <= #1 ch12_conf[0] ? sw_pointer12   : 32'h0;
460 5 rudi
 
461 10 rudi
           8'h70:       wb_rf_dout <= #1 ch13_conf[0] ? ch13_csr    : 32'h0;
462
           8'h71:       wb_rf_dout <= #1 ch13_conf[0] ? ch13_txsz   : 32'h0;
463
           8'h72:       wb_rf_dout <= #1 ch13_conf[0] ? ch13_adr0   : 32'h0;
464
           8'h73:       wb_rf_dout <= #1 ch13_conf[0] ? ch13_am0    : 32'h0;
465
           8'h74:       wb_rf_dout <= #1 ch13_conf[0] ? ch13_adr1   : 32'h0;
466
           8'h75:       wb_rf_dout <= #1 ch13_conf[0] ? ch13_am1    : 32'h0;
467
           8'h76:       wb_rf_dout <= #1 ch13_conf[0] ? pointer13   : 32'h0;
468
           8'h77:       wb_rf_dout <= #1 ch13_conf[0] ? sw_pointer13   : 32'h0;
469 5 rudi
 
470 10 rudi
           8'h78:       wb_rf_dout <= #1 ch14_conf[0] ? ch14_csr    : 32'h0;
471
           8'h79:       wb_rf_dout <= #1 ch14_conf[0] ? ch14_txsz   : 32'h0;
472
           8'h7a:       wb_rf_dout <= #1 ch14_conf[0] ? ch14_adr0   : 32'h0;
473
           8'h7b:       wb_rf_dout <= #1 ch14_conf[0] ? ch14_am0    : 32'h0;
474
           8'h7c:       wb_rf_dout <= #1 ch14_conf[0] ? ch14_adr1   : 32'h0;
475
           8'h7d:       wb_rf_dout <= #1 ch14_conf[0] ? ch14_am1    : 32'h0;
476
           8'h7e:       wb_rf_dout <= #1 ch14_conf[0] ? pointer14   : 32'h0;
477
           8'h7f:       wb_rf_dout <= #1 ch14_conf[0] ? sw_pointer14   : 32'h0;
478 5 rudi
 
479 10 rudi
           8'h80:       wb_rf_dout <= #1 ch15_conf[0] ? ch15_csr    : 32'h0;
480
           8'h81:       wb_rf_dout <= #1 ch15_conf[0] ? ch15_txsz   : 32'h0;
481
           8'h82:       wb_rf_dout <= #1 ch15_conf[0] ? ch15_adr0   : 32'h0;
482
           8'h83:       wb_rf_dout <= #1 ch15_conf[0] ? ch15_am0    : 32'h0;
483
           8'h84:       wb_rf_dout <= #1 ch15_conf[0] ? ch15_adr1   : 32'h0;
484
           8'h85:       wb_rf_dout <= #1 ch15_conf[0] ? ch15_am1    : 32'h0;
485
           8'h86:       wb_rf_dout <= #1 ch15_conf[0] ? pointer15   : 32'h0;
486
           8'h87:       wb_rf_dout <= #1 ch15_conf[0] ? sw_pointer15   : 32'h0;
487 5 rudi
 
488 10 rudi
           8'h88:       wb_rf_dout <= #1 ch16_conf[0] ? ch16_csr    : 32'h0;
489
           8'h89:       wb_rf_dout <= #1 ch16_conf[0] ? ch16_txsz   : 32'h0;
490
           8'h8a:       wb_rf_dout <= #1 ch16_conf[0] ? ch16_adr0   : 32'h0;
491
           8'h8b:       wb_rf_dout <= #1 ch16_conf[0] ? ch16_am0    : 32'h0;
492
           8'h8c:       wb_rf_dout <= #1 ch16_conf[0] ? ch16_adr1   : 32'h0;
493
           8'h8d:       wb_rf_dout <= #1 ch16_conf[0] ? ch16_am1    : 32'h0;
494
           8'h8e:       wb_rf_dout <= #1 ch16_conf[0] ? pointer16   : 32'h0;
495
           8'h8f:       wb_rf_dout <= #1 ch16_conf[0] ? sw_pointer16   : 32'h0;
496 5 rudi
 
497 10 rudi
           8'h90:       wb_rf_dout <= #1 ch17_conf[0] ? ch17_csr    : 32'h0;
498
           8'h91:       wb_rf_dout <= #1 ch17_conf[0] ? ch17_txsz   : 32'h0;
499
           8'h92:       wb_rf_dout <= #1 ch17_conf[0] ? ch17_adr0   : 32'h0;
500
           8'h93:       wb_rf_dout <= #1 ch17_conf[0] ? ch17_am0    : 32'h0;
501
           8'h94:       wb_rf_dout <= #1 ch17_conf[0] ? ch17_adr1   : 32'h0;
502
           8'h95:       wb_rf_dout <= #1 ch17_conf[0] ? ch17_am1    : 32'h0;
503
           8'h96:       wb_rf_dout <= #1 ch17_conf[0] ? pointer17   : 32'h0;
504
           8'h97:       wb_rf_dout <= #1 ch17_conf[0] ? sw_pointer17   : 32'h0;
505 5 rudi
 
506 10 rudi
           8'h98:       wb_rf_dout <= #1 ch18_conf[0] ? ch18_csr    : 32'h0;
507
           8'h99:       wb_rf_dout <= #1 ch18_conf[0] ? ch18_txsz   : 32'h0;
508
           8'h9a:       wb_rf_dout <= #1 ch18_conf[0] ? ch18_adr0   : 32'h0;
509
           8'h9b:       wb_rf_dout <= #1 ch18_conf[0] ? ch18_am0    : 32'h0;
510
           8'h9c:       wb_rf_dout <= #1 ch18_conf[0] ? ch18_adr1   : 32'h0;
511
           8'h9d:       wb_rf_dout <= #1 ch18_conf[0] ? ch18_am1    : 32'h0;
512
           8'h9e:       wb_rf_dout <= #1 ch18_conf[0] ? pointer18   : 32'h0;
513
           8'h9f:       wb_rf_dout <= #1 ch18_conf[0] ? sw_pointer18   : 32'h0;
514 5 rudi
 
515 10 rudi
           8'ha0:       wb_rf_dout <= #1 ch19_conf[0] ? ch19_csr    : 32'h0;
516
           8'ha1:       wb_rf_dout <= #1 ch19_conf[0] ? ch19_txsz   : 32'h0;
517
           8'ha2:       wb_rf_dout <= #1 ch19_conf[0] ? ch19_adr0   : 32'h0;
518
           8'ha3:       wb_rf_dout <= #1 ch19_conf[0] ? ch19_am0    : 32'h0;
519
           8'ha4:       wb_rf_dout <= #1 ch19_conf[0] ? ch19_adr1   : 32'h0;
520
           8'ha5:       wb_rf_dout <= #1 ch19_conf[0] ? ch19_am1    : 32'h0;
521
           8'ha6:       wb_rf_dout <= #1 ch19_conf[0] ? pointer19   : 32'h0;
522
           8'ha7:       wb_rf_dout <= #1 ch19_conf[0] ? sw_pointer19   : 32'h0;
523 5 rudi
 
524 10 rudi
           8'ha8:       wb_rf_dout <= #1 ch20_conf[0] ? ch20_csr    : 32'h0;
525
           8'ha9:       wb_rf_dout <= #1 ch20_conf[0] ? ch20_txsz   : 32'h0;
526
           8'haa:       wb_rf_dout <= #1 ch20_conf[0] ? ch20_adr0   : 32'h0;
527
           8'hab:       wb_rf_dout <= #1 ch20_conf[0] ? ch20_am0    : 32'h0;
528
           8'hac:       wb_rf_dout <= #1 ch20_conf[0] ? ch20_adr1   : 32'h0;
529
           8'had:       wb_rf_dout <= #1 ch20_conf[0] ? ch20_am1    : 32'h0;
530
           8'hae:       wb_rf_dout <= #1 ch20_conf[0] ? pointer20   : 32'h0;
531
           8'haf:       wb_rf_dout <= #1 ch20_conf[0] ? sw_pointer20   : 32'h0;
532 5 rudi
 
533 10 rudi
           8'hb0:       wb_rf_dout <= #1 ch21_conf[0] ? ch21_csr    : 32'h0;
534
           8'hb1:       wb_rf_dout <= #1 ch21_conf[0] ? ch21_txsz   : 32'h0;
535
           8'hb2:       wb_rf_dout <= #1 ch21_conf[0] ? ch21_adr0   : 32'h0;
536
           8'hb3:       wb_rf_dout <= #1 ch21_conf[0] ? ch21_am0    : 32'h0;
537
           8'hb4:       wb_rf_dout <= #1 ch21_conf[0] ? ch21_adr1   : 32'h0;
538
           8'hb5:       wb_rf_dout <= #1 ch21_conf[0] ? ch21_am1    : 32'h0;
539
           8'hb6:       wb_rf_dout <= #1 ch21_conf[0] ? pointer21   : 32'h0;
540
           8'hb7:       wb_rf_dout <= #1 ch21_conf[0] ? sw_pointer21   : 32'h0;
541 5 rudi
 
542 10 rudi
           8'hb8:       wb_rf_dout <= #1 ch22_conf[0] ? ch22_csr    : 32'h0;
543
           8'hb9:       wb_rf_dout <= #1 ch22_conf[0] ? ch22_txsz   : 32'h0;
544
           8'hba:       wb_rf_dout <= #1 ch22_conf[0] ? ch22_adr0   : 32'h0;
545
           8'hbb:       wb_rf_dout <= #1 ch22_conf[0] ? ch22_am0    : 32'h0;
546
           8'hbc:       wb_rf_dout <= #1 ch22_conf[0] ? ch22_adr1   : 32'h0;
547
           8'hbd:       wb_rf_dout <= #1 ch22_conf[0] ? ch22_am1    : 32'h0;
548
           8'hbe:       wb_rf_dout <= #1 ch22_conf[0] ? pointer22   : 32'h0;
549
           8'hbf:       wb_rf_dout <= #1 ch22_conf[0] ? sw_pointer22   : 32'h0;
550 5 rudi
 
551 10 rudi
           8'hc0:       wb_rf_dout <= #1 ch23_conf[0] ? ch23_csr    : 32'h0;
552
           8'hc1:       wb_rf_dout <= #1 ch23_conf[0] ? ch23_txsz   : 32'h0;
553
           8'hc2:       wb_rf_dout <= #1 ch23_conf[0] ? ch23_adr0   : 32'h0;
554
           8'hc3:       wb_rf_dout <= #1 ch23_conf[0] ? ch23_am0    : 32'h0;
555
           8'hc4:       wb_rf_dout <= #1 ch23_conf[0] ? ch23_adr1   : 32'h0;
556
           8'hc5:       wb_rf_dout <= #1 ch23_conf[0] ? ch23_am1    : 32'h0;
557
           8'hc6:       wb_rf_dout <= #1 ch23_conf[0] ? pointer23   : 32'h0;
558
           8'hc7:       wb_rf_dout <= #1 ch23_conf[0] ? sw_pointer23   : 32'h0;
559 5 rudi
 
560 10 rudi
           8'hc8:       wb_rf_dout <= #1 ch24_conf[0] ? ch24_csr    : 32'h0;
561
           8'hc9:       wb_rf_dout <= #1 ch24_conf[0] ? ch24_txsz   : 32'h0;
562
           8'hca:       wb_rf_dout <= #1 ch24_conf[0] ? ch24_adr0   : 32'h0;
563
           8'hcb:       wb_rf_dout <= #1 ch24_conf[0] ? ch24_am0    : 32'h0;
564
           8'hcc:       wb_rf_dout <= #1 ch24_conf[0] ? ch24_adr1   : 32'h0;
565
           8'hcd:       wb_rf_dout <= #1 ch24_conf[0] ? ch24_am1    : 32'h0;
566
           8'hce:       wb_rf_dout <= #1 ch24_conf[0] ? pointer24   : 32'h0;
567
           8'hcf:       wb_rf_dout <= #1 ch24_conf[0] ? sw_pointer24   : 32'h0;
568 5 rudi
 
569 10 rudi
           8'hd0:       wb_rf_dout <= #1 ch25_conf[0] ? ch25_csr    : 32'h0;
570
           8'hd1:       wb_rf_dout <= #1 ch25_conf[0] ? ch25_txsz   : 32'h0;
571
           8'hd2:       wb_rf_dout <= #1 ch25_conf[0] ? ch25_adr0   : 32'h0;
572
           8'hd3:       wb_rf_dout <= #1 ch25_conf[0] ? ch25_am0    : 32'h0;
573
           8'hd4:       wb_rf_dout <= #1 ch25_conf[0] ? ch25_adr1   : 32'h0;
574
           8'hd5:       wb_rf_dout <= #1 ch25_conf[0] ? ch25_am1    : 32'h0;
575
           8'hd6:       wb_rf_dout <= #1 ch25_conf[0] ? pointer25   : 32'h0;
576
           8'hd7:       wb_rf_dout <= #1 ch25_conf[0] ? sw_pointer25   : 32'h0;
577 5 rudi
 
578 10 rudi
           8'hd8:       wb_rf_dout <= #1 ch26_conf[0] ? ch26_csr    : 32'h0;
579
           8'hd9:       wb_rf_dout <= #1 ch26_conf[0] ? ch26_txsz   : 32'h0;
580
           8'hda:       wb_rf_dout <= #1 ch26_conf[0] ? ch26_adr0   : 32'h0;
581
           8'hdb:       wb_rf_dout <= #1 ch26_conf[0] ? ch26_am0    : 32'h0;
582
           8'hdc:       wb_rf_dout <= #1 ch26_conf[0] ? ch26_adr1   : 32'h0;
583
           8'hdd:       wb_rf_dout <= #1 ch26_conf[0] ? ch26_am1    : 32'h0;
584
           8'hde:       wb_rf_dout <= #1 ch26_conf[0] ? pointer26   : 32'h0;
585
           8'hdf:       wb_rf_dout <= #1 ch26_conf[0] ? sw_pointer26   : 32'h0;
586 5 rudi
 
587 10 rudi
           8'he0:       wb_rf_dout <= #1 ch27_conf[0] ? ch27_csr    : 32'h0;
588
           8'he1:       wb_rf_dout <= #1 ch27_conf[0] ? ch27_txsz   : 32'h0;
589
           8'he2:       wb_rf_dout <= #1 ch27_conf[0] ? ch27_adr0   : 32'h0;
590
           8'he3:       wb_rf_dout <= #1 ch27_conf[0] ? ch27_am0    : 32'h0;
591
           8'he4:       wb_rf_dout <= #1 ch27_conf[0] ? ch27_adr1   : 32'h0;
592
           8'he5:       wb_rf_dout <= #1 ch27_conf[0] ? ch27_am1    : 32'h0;
593
           8'he6:       wb_rf_dout <= #1 ch27_conf[0] ? pointer27   : 32'h0;
594
           8'he7:       wb_rf_dout <= #1 ch27_conf[0] ? sw_pointer27   : 32'h0;
595 5 rudi
 
596 10 rudi
           8'he8:       wb_rf_dout <= #1 ch28_conf[0] ? ch28_csr    : 32'h0;
597
           8'he9:       wb_rf_dout <= #1 ch28_conf[0] ? ch28_txsz   : 32'h0;
598
           8'hea:       wb_rf_dout <= #1 ch28_conf[0] ? ch28_adr0   : 32'h0;
599
           8'heb:       wb_rf_dout <= #1 ch28_conf[0] ? ch28_am0    : 32'h0;
600
           8'hec:       wb_rf_dout <= #1 ch28_conf[0] ? ch28_adr1   : 32'h0;
601
           8'hed:       wb_rf_dout <= #1 ch28_conf[0] ? ch28_am1    : 32'h0;
602
           8'hee:       wb_rf_dout <= #1 ch28_conf[0] ? pointer28   : 32'h0;
603
           8'hef:       wb_rf_dout <= #1 ch28_conf[0] ? sw_pointer28   : 32'h0;
604 5 rudi
 
605 10 rudi
           8'hf0:       wb_rf_dout <= #1 ch29_conf[0] ? ch29_csr    : 32'h0;
606
           8'hf1:       wb_rf_dout <= #1 ch29_conf[0] ? ch29_txsz   : 32'h0;
607
           8'hf2:       wb_rf_dout <= #1 ch29_conf[0] ? ch29_adr0   : 32'h0;
608
           8'hf3:       wb_rf_dout <= #1 ch29_conf[0] ? ch29_am0    : 32'h0;
609
           8'hf4:       wb_rf_dout <= #1 ch29_conf[0] ? ch29_adr1   : 32'h0;
610
           8'hf5:       wb_rf_dout <= #1 ch29_conf[0] ? ch29_am1    : 32'h0;
611
           8'hf6:       wb_rf_dout <= #1 ch29_conf[0] ? pointer29   : 32'h0;
612
           8'hf7:       wb_rf_dout <= #1 ch29_conf[0] ? sw_pointer29   : 32'h0;
613 5 rudi
 
614 10 rudi
           8'hf8:       wb_rf_dout <= #1 ch30_conf[0] ? ch30_csr    : 32'h0;
615
           8'hf9:       wb_rf_dout <= #1 ch30_conf[0] ? ch30_txsz   : 32'h0;
616
           8'hfa:       wb_rf_dout <= #1 ch30_conf[0] ? ch30_adr0   : 32'h0;
617
           8'hfb:       wb_rf_dout <= #1 ch30_conf[0] ? ch30_am0    : 32'h0;
618
           8'hfc:       wb_rf_dout <= #1 ch30_conf[0] ? ch30_adr1   : 32'h0;
619
           8'hfd:       wb_rf_dout <= #1 ch30_conf[0] ? ch30_am1    : 32'h0;
620
           8'hfe:       wb_rf_dout <= #1 ch30_conf[0] ? pointer30   : 32'h0;
621
           8'hff:       wb_rf_dout <= #1 ch30_conf[0] ? sw_pointer30   : 32'h0;
622 5 rudi
 
623
        endcase
624
 
625
 
626
////////////////////////////////////////////////////////////////////
627
//
628
// WISHBONE Register Write Logic
629
// And DMA Engine register Update Logic
630
//
631
 
632
// Global Registers
633
assign csr_we           = wb_rf_we & (wb_rf_adr == 8'h0);
634
assign int_maska_we     = wb_rf_we & (wb_rf_adr == 8'h1);
635
assign int_maskb_we     = wb_rf_we & (wb_rf_adr == 8'h2);
636
 
637
// ---------------------------------------------------
638
 
639
always @(posedge clk or negedge rst)
640 8 rudi
        if(!rst)                csr_r <= #1 8'h0;
641 5 rudi
        else
642
        if(csr_we)              csr_r <= #1 wb_rf_din[7:0];
643
 
644
// ---------------------------------------------------
645
// INT_MASK
646
always @(posedge clk or negedge rst)
647 8 rudi
        if(!rst)                int_maska_r <= #1 31'h0;
648 5 rudi
        else
649
        if(int_maska_we)        int_maska_r <= #1 wb_rf_din[30:0];
650
 
651
always @(posedge clk or negedge rst)
652 8 rudi
        if(!rst)                int_maskb_r <= #1 31'h0;
653 5 rudi
        else
654
        if(int_maskb_we)        int_maskb_r <= #1 wb_rf_din[30:0];
655
 
656
////////////////////////////////////////////////////////////////////
657
//
658
// Interrupts
659
//
660
 
661
assign int_srca = {1'b0, (int_maska_r & ch_int) };
662
assign int_srcb = {1'b0, (int_maskb_r & ch_int) };
663
 
664
// Interrupt Outputs
665
always @(posedge clk)
666
        inta_o <= #1 |int_srca;
667
 
668
always @(posedge clk)
669
        intb_o <= #1 |int_srcb;
670
 
671
////////////////////////////////////////////////////////////////////
672
//
673
// Channel Register File
674
//
675
 
676 10 rudi
// chXX_conf = { CBUF, ED, ARS, EN }
677
 
678
wb_dma_ch_rf #(0, ch0_conf[0], ch0_conf[1], ch0_conf[2], ch0_conf[3]) u0(
679 5 rudi
                .clk(           clk             ),
680
                .rst(           rst             ),
681
                .pointer(       pointer0        ),
682
                .pointer_s(     pointer0_s      ),
683
                .ch_csr(        ch0_csr         ),
684
                .ch_txsz(       ch0_txsz        ),
685
                .ch_adr0(       ch0_adr0        ),
686
                .ch_adr1(       ch0_adr1        ),
687
                .ch_am0(        ch0_am0         ),
688
                .ch_am1(        ch0_am1         ),
689
                .sw_pointer(    sw_pointer0     ),
690
                .ch_stop(       ch_stop[0]       ),
691
                .ch_dis(        ch_dis[0]        ),
692
                .int(           ch_int[0]        ),
693
                .wb_rf_din(     wb_rf_din       ),
694
                .wb_rf_adr(     wb_rf_adr       ),
695
                .wb_rf_we(      wb_rf_we        ),
696
                .wb_rf_re(      wb_rf_re        ),
697
                .ch_sel(        ch_sel          ),
698
                .ndnr(          ndnr[0]          ),
699
                .dma_busy(      dma_busy        ),
700
                .dma_err(       dma_err         ),
701
                .dma_done(      dma_done        ),
702
                .dma_done_all(  dma_done_all    ),
703
                .de_csr(        de_csr          ),
704
                .de_txsz(       de_txsz         ),
705
                .de_adr0(       de_adr0         ),
706
                .de_adr1(       de_adr1         ),
707
                .de_csr_we(     de_csr_we       ),
708
                .de_txsz_we(    de_txsz_we      ),
709
                .de_adr0_we(    de_adr0_we      ),
710
                .de_adr1_we(    de_adr1_we      ),
711
                .de_fetch_descr(de_fetch_descr  ),
712
                .dma_rest(      dma_rest[0]      ),
713
                .ptr_set(       ptr_set         )
714
                );
715
 
716 10 rudi
wb_dma_ch_rf #(1, ch1_conf[0], ch1_conf[1], ch1_conf[2], ch1_conf[3]) u1(
717 5 rudi
                .clk(           clk             ),
718
                .rst(           rst             ),
719
                .pointer(       pointer1        ),
720
                .pointer_s(     pointer1_s      ),
721
                .ch_csr(        ch1_csr         ),
722
                .ch_txsz(       ch1_txsz        ),
723
                .ch_adr0(       ch1_adr0        ),
724
                .ch_adr1(       ch1_adr1        ),
725
                .ch_am0(        ch1_am0         ),
726
                .ch_am1(        ch1_am1         ),
727
                .sw_pointer(    sw_pointer1     ),
728
                .ch_stop(       ch_stop[1]      ),
729
                .ch_dis(        ch_dis[1]       ),
730
                .int(           ch_int[1]       ),
731
                .wb_rf_din(     wb_rf_din       ),
732
                .wb_rf_adr(     wb_rf_adr       ),
733
                .wb_rf_we(      wb_rf_we        ),
734
                .wb_rf_re(      wb_rf_re        ),
735
                .ch_sel(        ch_sel          ),
736
                .ndnr(          ndnr[1]         ),
737
                .dma_busy(      dma_busy        ),
738
                .dma_err(       dma_err         ),
739
                .dma_done(      dma_done        ),
740
                .dma_done_all(  dma_done_all    ),
741
                .de_csr(        de_csr          ),
742
                .de_txsz(       de_txsz         ),
743
                .de_adr0(       de_adr0         ),
744
                .de_adr1(       de_adr1         ),
745
                .de_csr_we(     de_csr_we       ),
746
                .de_txsz_we(    de_txsz_we      ),
747
                .de_adr0_we(    de_adr0_we      ),
748
                .de_adr1_we(    de_adr1_we      ),
749
                .de_fetch_descr(de_fetch_descr  ),
750
                .dma_rest(      dma_rest[1]     ),
751
                .ptr_set(       ptr_set         )
752
                );
753
 
754 10 rudi
wb_dma_ch_rf #(2, ch2_conf[0], ch2_conf[1], ch2_conf[2], ch2_conf[3]) u2(
755 5 rudi
                .clk(           clk             ),
756
                .rst(           rst             ),
757
                .pointer(       pointer2        ),
758
                .pointer_s(     pointer2_s      ),
759
                .ch_csr(        ch2_csr         ),
760
                .ch_txsz(       ch2_txsz        ),
761
                .ch_adr0(       ch2_adr0        ),
762
                .ch_adr1(       ch2_adr1        ),
763
                .ch_am0(        ch2_am0         ),
764
                .ch_am1(        ch2_am1         ),
765
                .sw_pointer(    sw_pointer2     ),
766
                .ch_stop(       ch_stop[2]      ),
767
                .ch_dis(        ch_dis[2]       ),
768
                .int(           ch_int[2]       ),
769
                .wb_rf_din(     wb_rf_din       ),
770
                .wb_rf_adr(     wb_rf_adr       ),
771
                .wb_rf_we(      wb_rf_we        ),
772
                .wb_rf_re(      wb_rf_re        ),
773
                .ch_sel(        ch_sel          ),
774
                .ndnr(          ndnr[2]         ),
775
                .dma_busy(      dma_busy        ),
776
                .dma_err(       dma_err         ),
777
                .dma_done(      dma_done        ),
778
                .dma_done_all(  dma_done_all    ),
779
                .de_csr(        de_csr          ),
780
                .de_txsz(       de_txsz         ),
781
                .de_adr0(       de_adr0         ),
782
                .de_adr1(       de_adr1         ),
783
                .de_csr_we(     de_csr_we       ),
784
                .de_txsz_we(    de_txsz_we      ),
785
                .de_adr0_we(    de_adr0_we      ),
786
                .de_adr1_we(    de_adr1_we      ),
787
                .de_fetch_descr(de_fetch_descr  ),
788
                .dma_rest(      dma_rest[2]     ),
789
                .ptr_set(       ptr_set         )
790
                );
791
 
792 10 rudi
wb_dma_ch_rf #(3, ch3_conf[0], ch3_conf[1], ch3_conf[2], ch3_conf[3]) u3(
793 5 rudi
                .clk(           clk             ),
794
                .rst(           rst             ),
795
                .pointer(       pointer3        ),
796
                .pointer_s(     pointer3_s      ),
797
                .ch_csr(        ch3_csr         ),
798
                .ch_txsz(       ch3_txsz        ),
799
                .ch_adr0(       ch3_adr0        ),
800
                .ch_adr1(       ch3_adr1        ),
801
                .ch_am0(        ch3_am0         ),
802
                .ch_am1(        ch3_am1         ),
803
                .sw_pointer(    sw_pointer3     ),
804
                .ch_stop(       ch_stop[3]      ),
805
                .ch_dis(        ch_dis[3]       ),
806
                .int(           ch_int[3]       ),
807
                .wb_rf_din(     wb_rf_din       ),
808
                .wb_rf_adr(     wb_rf_adr       ),
809
                .wb_rf_we(      wb_rf_we        ),
810
                .wb_rf_re(      wb_rf_re        ),
811
                .ch_sel(        ch_sel          ),
812
                .ndnr(          ndnr[3]         ),
813
                .dma_busy(      dma_busy        ),
814
                .dma_err(       dma_err         ),
815
                .dma_done(      dma_done        ),
816
                .dma_done_all(  dma_done_all    ),
817
                .de_csr(        de_csr          ),
818
                .de_txsz(       de_txsz         ),
819
                .de_adr0(       de_adr0         ),
820
                .de_adr1(       de_adr1         ),
821
                .de_csr_we(     de_csr_we       ),
822
                .de_txsz_we(    de_txsz_we      ),
823
                .de_adr0_we(    de_adr0_we      ),
824
                .de_adr1_we(    de_adr1_we      ),
825
                .de_fetch_descr(de_fetch_descr  ),
826
                .dma_rest(      dma_rest[3]     ),
827
                .ptr_set(       ptr_set         )
828
                );
829
 
830 10 rudi
wb_dma_ch_rf #(4, ch4_conf[0], ch4_conf[1], ch4_conf[2], ch4_conf[3]) u4(
831 5 rudi
                .clk(           clk             ),
832
                .rst(           rst             ),
833
                .pointer(       pointer4        ),
834
                .pointer_s(     pointer4_s      ),
835
                .ch_csr(        ch4_csr         ),
836
                .ch_txsz(       ch4_txsz        ),
837
                .ch_adr0(       ch4_adr0        ),
838
                .ch_adr1(       ch4_adr1        ),
839
                .ch_am0(        ch4_am0         ),
840
                .ch_am1(        ch4_am1         ),
841
                .sw_pointer(    sw_pointer4     ),
842
                .ch_stop(       ch_stop[4]      ),
843
                .ch_dis(        ch_dis[4]       ),
844
                .int(           ch_int[4]       ),
845
                .wb_rf_din(     wb_rf_din       ),
846
                .wb_rf_adr(     wb_rf_adr       ),
847
                .wb_rf_we(      wb_rf_we        ),
848
                .wb_rf_re(      wb_rf_re        ),
849
                .ch_sel(        ch_sel          ),
850
                .ndnr(          ndnr[4]         ),
851
                .dma_busy(      dma_busy        ),
852
                .dma_err(       dma_err         ),
853
                .dma_done(      dma_done        ),
854
                .dma_done_all(  dma_done_all    ),
855
                .de_csr(        de_csr          ),
856
                .de_txsz(       de_txsz         ),
857
                .de_adr0(       de_adr0         ),
858
                .de_adr1(       de_adr1         ),
859
                .de_csr_we(     de_csr_we       ),
860
                .de_txsz_we(    de_txsz_we      ),
861
                .de_adr0_we(    de_adr0_we      ),
862
                .de_adr1_we(    de_adr1_we      ),
863
                .de_fetch_descr(de_fetch_descr  ),
864
                .dma_rest(      dma_rest[4]     ),
865
                .ptr_set(       ptr_set         )
866
                );
867
 
868 10 rudi
wb_dma_ch_rf #(5, ch5_conf[0], ch5_conf[1], ch5_conf[2], ch5_conf[3]) u5(
869 5 rudi
                .clk(           clk             ),
870
                .rst(           rst             ),
871
                .pointer(       pointer5        ),
872
                .pointer_s(     pointer5_s      ),
873
                .ch_csr(        ch5_csr         ),
874
                .ch_txsz(       ch5_txsz        ),
875
                .ch_adr0(       ch5_adr0        ),
876
                .ch_adr1(       ch5_adr1        ),
877
                .ch_am0(        ch5_am0         ),
878
                .ch_am1(        ch5_am1         ),
879
                .sw_pointer(    sw_pointer5     ),
880
                .ch_stop(       ch_stop[5]      ),
881
                .ch_dis(        ch_dis[5]       ),
882
                .int(           ch_int[5]       ),
883
                .wb_rf_din(     wb_rf_din       ),
884
                .wb_rf_adr(     wb_rf_adr       ),
885
                .wb_rf_we(      wb_rf_we        ),
886
                .wb_rf_re(      wb_rf_re        ),
887
                .ch_sel(        ch_sel          ),
888
                .ndnr(          ndnr[5]         ),
889
                .dma_busy(      dma_busy        ),
890
                .dma_err(       dma_err         ),
891
                .dma_done(      dma_done        ),
892
                .dma_done_all(  dma_done_all    ),
893
                .de_csr(        de_csr          ),
894
                .de_txsz(       de_txsz         ),
895
                .de_adr0(       de_adr0         ),
896
                .de_adr1(       de_adr1         ),
897
                .de_csr_we(     de_csr_we       ),
898
                .de_txsz_we(    de_txsz_we      ),
899
                .de_adr0_we(    de_adr0_we      ),
900
                .de_adr1_we(    de_adr1_we      ),
901
                .de_fetch_descr(de_fetch_descr  ),
902
                .dma_rest(      dma_rest[5]     ),
903
                .ptr_set(       ptr_set         )
904
                );
905
 
906 10 rudi
wb_dma_ch_rf #(6, ch6_conf[0], ch6_conf[1], ch6_conf[2], ch6_conf[3]) u6(
907 5 rudi
                .clk(           clk             ),
908
                .rst(           rst             ),
909
                .pointer(       pointer6        ),
910
                .pointer_s(     pointer6_s      ),
911
                .ch_csr(        ch6_csr         ),
912
                .ch_txsz(       ch6_txsz        ),
913
                .ch_adr0(       ch6_adr0        ),
914
                .ch_adr1(       ch6_adr1        ),
915
                .ch_am0(        ch6_am0         ),
916
                .ch_am1(        ch6_am1         ),
917
                .sw_pointer(    sw_pointer6     ),
918
                .ch_stop(       ch_stop[6]      ),
919
                .ch_dis(        ch_dis[6]       ),
920
                .int(           ch_int[6]       ),
921
                .wb_rf_din(     wb_rf_din       ),
922
                .wb_rf_adr(     wb_rf_adr       ),
923
                .wb_rf_we(      wb_rf_we        ),
924
                .wb_rf_re(      wb_rf_re        ),
925
                .ch_sel(        ch_sel          ),
926
                .ndnr(          ndnr[6]         ),
927
                .dma_busy(      dma_busy        ),
928
                .dma_err(       dma_err         ),
929
                .dma_done(      dma_done        ),
930
                .dma_done_all(  dma_done_all    ),
931
                .de_csr(        de_csr          ),
932
                .de_txsz(       de_txsz         ),
933
                .de_adr0(       de_adr0         ),
934
                .de_adr1(       de_adr1         ),
935
                .de_csr_we(     de_csr_we       ),
936
                .de_txsz_we(    de_txsz_we      ),
937
                .de_adr0_we(    de_adr0_we      ),
938
                .de_adr1_we(    de_adr1_we      ),
939
                .de_fetch_descr(de_fetch_descr  ),
940
                .dma_rest(      dma_rest[6]     ),
941
                .ptr_set(       ptr_set         )
942
                );
943
 
944 10 rudi
wb_dma_ch_rf #(7, ch7_conf[0], ch7_conf[1], ch7_conf[2], ch7_conf[3]) u7(
945 5 rudi
                .clk(           clk             ),
946
                .rst(           rst             ),
947
                .pointer(       pointer7        ),
948
                .pointer_s(     pointer7_s      ),
949
                .ch_csr(        ch7_csr         ),
950
                .ch_txsz(       ch7_txsz        ),
951
                .ch_adr0(       ch7_adr0        ),
952
                .ch_adr1(       ch7_adr1        ),
953
                .ch_am0(        ch7_am0         ),
954
                .ch_am1(        ch7_am1         ),
955
                .sw_pointer(    sw_pointer7     ),
956
                .ch_stop(       ch_stop[7]      ),
957
                .ch_dis(        ch_dis[7]       ),
958
                .int(           ch_int[7]       ),
959
                .wb_rf_din(     wb_rf_din       ),
960
                .wb_rf_adr(     wb_rf_adr       ),
961
                .wb_rf_we(      wb_rf_we        ),
962
                .wb_rf_re(      wb_rf_re        ),
963
                .ch_sel(        ch_sel          ),
964
                .ndnr(          ndnr[7]         ),
965
                .dma_busy(      dma_busy        ),
966
                .dma_err(       dma_err         ),
967
                .dma_done(      dma_done        ),
968
                .dma_done_all(  dma_done_all    ),
969
                .de_csr(        de_csr          ),
970
                .de_txsz(       de_txsz         ),
971
                .de_adr0(       de_adr0         ),
972
                .de_adr1(       de_adr1         ),
973
                .de_csr_we(     de_csr_we       ),
974
                .de_txsz_we(    de_txsz_we      ),
975
                .de_adr0_we(    de_adr0_we      ),
976
                .de_adr1_we(    de_adr1_we      ),
977
                .de_fetch_descr(de_fetch_descr  ),
978
                .dma_rest(      dma_rest[7]     ),
979
                .ptr_set(       ptr_set         )
980
                );
981
 
982 10 rudi
wb_dma_ch_rf #(8, ch8_conf[0], ch8_conf[1], ch8_conf[2], ch8_conf[3]) u8(
983 5 rudi
                .clk(           clk             ),
984
                .rst(           rst             ),
985
                .pointer(       pointer8        ),
986
                .pointer_s(     pointer8_s      ),
987
                .ch_csr(        ch8_csr         ),
988
                .ch_txsz(       ch8_txsz        ),
989
                .ch_adr0(       ch8_adr0        ),
990
                .ch_adr1(       ch8_adr1        ),
991
                .ch_am0(        ch8_am0         ),
992
                .ch_am1(        ch8_am1         ),
993
                .sw_pointer(    sw_pointer8     ),
994
                .ch_stop(       ch_stop[8]      ),
995
                .ch_dis(        ch_dis[8]       ),
996
                .int(           ch_int[8]       ),
997
                .wb_rf_din(     wb_rf_din       ),
998
                .wb_rf_adr(     wb_rf_adr       ),
999
                .wb_rf_we(      wb_rf_we        ),
1000
                .wb_rf_re(      wb_rf_re        ),
1001
                .ch_sel(        ch_sel          ),
1002
                .ndnr(          ndnr[8]         ),
1003
                .dma_busy(      dma_busy        ),
1004
                .dma_err(       dma_err         ),
1005
                .dma_done(      dma_done        ),
1006
                .dma_done_all(  dma_done_all    ),
1007
                .de_csr(        de_csr          ),
1008
                .de_txsz(       de_txsz         ),
1009
                .de_adr0(       de_adr0         ),
1010
                .de_adr1(       de_adr1         ),
1011
                .de_csr_we(     de_csr_we       ),
1012
                .de_txsz_we(    de_txsz_we      ),
1013
                .de_adr0_we(    de_adr0_we      ),
1014
                .de_adr1_we(    de_adr1_we      ),
1015
                .de_fetch_descr(de_fetch_descr  ),
1016
                .dma_rest(      dma_rest[8]     ),
1017
                .ptr_set(       ptr_set         )
1018
                );
1019
 
1020 10 rudi
wb_dma_ch_rf #(9, ch9_conf[0], ch9_conf[1], ch9_conf[2], ch9_conf[3]) u9(
1021 5 rudi
                .clk(           clk             ),
1022
                .rst(           rst             ),
1023
                .pointer(       pointer9        ),
1024
                .pointer_s(     pointer9_s      ),
1025
                .ch_csr(        ch9_csr         ),
1026
                .ch_txsz(       ch9_txsz        ),
1027
                .ch_adr0(       ch9_adr0        ),
1028
                .ch_adr1(       ch9_adr1        ),
1029
                .ch_am0(        ch9_am0         ),
1030
                .ch_am1(        ch9_am1         ),
1031
                .sw_pointer(    sw_pointer9     ),
1032
                .ch_stop(       ch_stop[9]      ),
1033
                .ch_dis(        ch_dis[9]       ),
1034
                .int(           ch_int[9]       ),
1035
                .wb_rf_din(     wb_rf_din       ),
1036
                .wb_rf_adr(     wb_rf_adr       ),
1037
                .wb_rf_we(      wb_rf_we        ),
1038
                .wb_rf_re(      wb_rf_re        ),
1039
                .ch_sel(        ch_sel          ),
1040
                .ndnr(          ndnr[9]         ),
1041
                .dma_busy(      dma_busy        ),
1042
                .dma_err(       dma_err         ),
1043
                .dma_done(      dma_done        ),
1044
                .dma_done_all(  dma_done_all    ),
1045
                .de_csr(        de_csr          ),
1046
                .de_txsz(       de_txsz         ),
1047
                .de_adr0(       de_adr0         ),
1048
                .de_adr1(       de_adr1         ),
1049
                .de_csr_we(     de_csr_we       ),
1050
                .de_txsz_we(    de_txsz_we      ),
1051
                .de_adr0_we(    de_adr0_we      ),
1052
                .de_adr1_we(    de_adr1_we      ),
1053
                .de_fetch_descr(de_fetch_descr  ),
1054
                .dma_rest(      dma_rest[9]     ),
1055
                .ptr_set(       ptr_set         )
1056
                );
1057
 
1058 10 rudi
wb_dma_ch_rf #(10, ch10_conf[0], ch10_conf[1], ch10_conf[2], ch10_conf[3]) u10(
1059 5 rudi
                .clk(           clk             ),
1060
                .rst(           rst             ),
1061
                .pointer(       pointer10       ),
1062
                .pointer_s(     pointer10_s     ),
1063
                .ch_csr(        ch10_csr                ),
1064
                .ch_txsz(       ch10_txsz       ),
1065
                .ch_adr0(       ch10_adr0       ),
1066
                .ch_adr1(       ch10_adr1       ),
1067
                .ch_am0(        ch10_am0                ),
1068
                .ch_am1(        ch10_am1                ),
1069
                .sw_pointer(    sw_pointer10    ),
1070
                .ch_stop(       ch_stop[10]     ),
1071
                .ch_dis(        ch_dis[10]      ),
1072
                .int(           ch_int[10]      ),
1073
                .wb_rf_din(     wb_rf_din       ),
1074
                .wb_rf_adr(     wb_rf_adr       ),
1075
                .wb_rf_we(      wb_rf_we        ),
1076
                .wb_rf_re(      wb_rf_re        ),
1077
                .ch_sel(        ch_sel          ),
1078
                .ndnr(          ndnr[10]                ),
1079
                .dma_busy(      dma_busy        ),
1080
                .dma_err(       dma_err         ),
1081
                .dma_done(      dma_done        ),
1082
                .dma_done_all(  dma_done_all    ),
1083
                .de_csr(        de_csr          ),
1084
                .de_txsz(       de_txsz         ),
1085
                .de_adr0(       de_adr0         ),
1086
                .de_adr1(       de_adr1         ),
1087
                .de_csr_we(     de_csr_we       ),
1088
                .de_txsz_we(    de_txsz_we      ),
1089
                .de_adr0_we(    de_adr0_we      ),
1090
                .de_adr1_we(    de_adr1_we      ),
1091
                .de_fetch_descr(de_fetch_descr  ),
1092
                .dma_rest(      dma_rest[10]    ),
1093
                .ptr_set(       ptr_set         )
1094
                );
1095
 
1096 10 rudi
wb_dma_ch_rf #(11, ch11_conf[0], ch11_conf[1], ch11_conf[2], ch11_conf[3]) u11(
1097 5 rudi
                .clk(           clk             ),
1098
                .rst(           rst             ),
1099
                .pointer(       pointer11       ),
1100
                .pointer_s(     pointer11_s     ),
1101
                .ch_csr(        ch11_csr                ),
1102
                .ch_txsz(       ch11_txsz       ),
1103
                .ch_adr0(       ch11_adr0       ),
1104
                .ch_adr1(       ch11_adr1       ),
1105
                .ch_am0(        ch11_am0                ),
1106
                .ch_am1(        ch11_am1                ),
1107
                .sw_pointer(    sw_pointer11    ),
1108
                .ch_stop(       ch_stop[11]     ),
1109
                .ch_dis(        ch_dis[11]      ),
1110
                .int(           ch_int[11]      ),
1111
                .wb_rf_din(     wb_rf_din       ),
1112
                .wb_rf_adr(     wb_rf_adr       ),
1113
                .wb_rf_we(      wb_rf_we        ),
1114
                .wb_rf_re(      wb_rf_re        ),
1115
                .ch_sel(        ch_sel          ),
1116
                .ndnr(          ndnr[11]                ),
1117
                .dma_busy(      dma_busy        ),
1118
                .dma_err(       dma_err         ),
1119
                .dma_done(      dma_done        ),
1120
                .dma_done_all(  dma_done_all    ),
1121
                .de_csr(        de_csr          ),
1122
                .de_txsz(       de_txsz         ),
1123
                .de_adr0(       de_adr0         ),
1124
                .de_adr1(       de_adr1         ),
1125
                .de_csr_we(     de_csr_we       ),
1126
                .de_txsz_we(    de_txsz_we      ),
1127
                .de_adr0_we(    de_adr0_we      ),
1128
                .de_adr1_we(    de_adr1_we      ),
1129
                .de_fetch_descr(de_fetch_descr  ),
1130
                .dma_rest(      dma_rest[11]    ),
1131
                .ptr_set(       ptr_set         )
1132
                );
1133
 
1134 10 rudi
wb_dma_ch_rf #(12, ch12_conf[0], ch12_conf[1], ch12_conf[2], ch12_conf[3]) u12(
1135 5 rudi
                .clk(           clk             ),
1136
                .rst(           rst             ),
1137
                .pointer(       pointer12       ),
1138
                .pointer_s(     pointer12_s     ),
1139
                .ch_csr(        ch12_csr                ),
1140
                .ch_txsz(       ch12_txsz       ),
1141
                .ch_adr0(       ch12_adr0       ),
1142
                .ch_adr1(       ch12_adr1       ),
1143
                .ch_am0(        ch12_am0                ),
1144
                .ch_am1(        ch12_am1                ),
1145
                .sw_pointer(    sw_pointer12    ),
1146
                .ch_stop(       ch_stop[12]     ),
1147
                .ch_dis(        ch_dis[12]      ),
1148
                .int(           ch_int[12]      ),
1149
                .wb_rf_din(     wb_rf_din       ),
1150
                .wb_rf_adr(     wb_rf_adr       ),
1151
                .wb_rf_we(      wb_rf_we        ),
1152
                .wb_rf_re(      wb_rf_re        ),
1153
                .ch_sel(        ch_sel          ),
1154
                .ndnr(          ndnr[12]                ),
1155
                .dma_busy(      dma_busy        ),
1156
                .dma_err(       dma_err         ),
1157
                .dma_done(      dma_done        ),
1158
                .dma_done_all(  dma_done_all    ),
1159
                .de_csr(        de_csr          ),
1160
                .de_txsz(       de_txsz         ),
1161
                .de_adr0(       de_adr0         ),
1162
                .de_adr1(       de_adr1         ),
1163
                .de_csr_we(     de_csr_we       ),
1164
                .de_txsz_we(    de_txsz_we      ),
1165
                .de_adr0_we(    de_adr0_we      ),
1166
                .de_adr1_we(    de_adr1_we      ),
1167
                .de_fetch_descr(de_fetch_descr  ),
1168
                .dma_rest(      dma_rest[12]    ),
1169
                .ptr_set(       ptr_set         )
1170
                );
1171
 
1172 10 rudi
wb_dma_ch_rf #(13, ch13_conf[0], ch13_conf[1], ch13_conf[2], ch13_conf[3]) u13(
1173 5 rudi
                .clk(           clk             ),
1174
                .rst(           rst             ),
1175
                .pointer(       pointer13       ),
1176
                .pointer_s(     pointer13_s     ),
1177
                .ch_csr(        ch13_csr                ),
1178
                .ch_txsz(       ch13_txsz       ),
1179
                .ch_adr0(       ch13_adr0       ),
1180
                .ch_adr1(       ch13_adr1       ),
1181
                .ch_am0(        ch13_am0                ),
1182
                .ch_am1(        ch13_am1                ),
1183
                .sw_pointer(    sw_pointer13    ),
1184
                .ch_stop(       ch_stop[13]     ),
1185
                .ch_dis(        ch_dis[13]      ),
1186
                .int(           ch_int[13]      ),
1187
                .wb_rf_din(     wb_rf_din       ),
1188
                .wb_rf_adr(     wb_rf_adr       ),
1189
                .wb_rf_we(      wb_rf_we        ),
1190
                .wb_rf_re(      wb_rf_re        ),
1191
                .ch_sel(        ch_sel          ),
1192
                .ndnr(          ndnr[13]                ),
1193
                .dma_busy(      dma_busy        ),
1194
                .dma_err(       dma_err         ),
1195
                .dma_done(      dma_done        ),
1196
                .dma_done_all(  dma_done_all    ),
1197
                .de_csr(        de_csr          ),
1198
                .de_txsz(       de_txsz         ),
1199
                .de_adr0(       de_adr0         ),
1200
                .de_adr1(       de_adr1         ),
1201
                .de_csr_we(     de_csr_we       ),
1202
                .de_txsz_we(    de_txsz_we      ),
1203
                .de_adr0_we(    de_adr0_we      ),
1204
                .de_adr1_we(    de_adr1_we      ),
1205
                .de_fetch_descr(de_fetch_descr  ),
1206
                .dma_rest(      dma_rest[13]    ),
1207
                .ptr_set(       ptr_set         )
1208
                );
1209
 
1210 10 rudi
wb_dma_ch_rf #(14, ch14_conf[0], ch14_conf[1], ch14_conf[2], ch14_conf[3]) u14(
1211 5 rudi
                .clk(           clk             ),
1212
                .rst(           rst             ),
1213
                .pointer(       pointer14       ),
1214
                .pointer_s(     pointer14_s     ),
1215
                .ch_csr(        ch14_csr                ),
1216
                .ch_txsz(       ch14_txsz       ),
1217
                .ch_adr0(       ch14_adr0       ),
1218
                .ch_adr1(       ch14_adr1       ),
1219
                .ch_am0(        ch14_am0                ),
1220
                .ch_am1(        ch14_am1                ),
1221
                .sw_pointer(    sw_pointer14    ),
1222
                .ch_stop(       ch_stop[14]     ),
1223
                .ch_dis(        ch_dis[14]      ),
1224
                .int(           ch_int[14]      ),
1225
                .wb_rf_din(     wb_rf_din       ),
1226
                .wb_rf_adr(     wb_rf_adr       ),
1227
                .wb_rf_we(      wb_rf_we        ),
1228
                .wb_rf_re(      wb_rf_re        ),
1229
                .ch_sel(        ch_sel          ),
1230
                .ndnr(          ndnr[14]                ),
1231
                .dma_busy(      dma_busy        ),
1232
                .dma_err(       dma_err         ),
1233
                .dma_done(      dma_done        ),
1234
                .dma_done_all(  dma_done_all    ),
1235
                .de_csr(        de_csr          ),
1236
                .de_txsz(       de_txsz         ),
1237
                .de_adr0(       de_adr0         ),
1238
                .de_adr1(       de_adr1         ),
1239
                .de_csr_we(     de_csr_we       ),
1240
                .de_txsz_we(    de_txsz_we      ),
1241
                .de_adr0_we(    de_adr0_we      ),
1242
                .de_adr1_we(    de_adr1_we      ),
1243
                .de_fetch_descr(de_fetch_descr  ),
1244
                .dma_rest(      dma_rest[14]    ),
1245
                .ptr_set(       ptr_set         )
1246
                );
1247
 
1248 10 rudi
wb_dma_ch_rf #(15, ch15_conf[0], ch15_conf[1], ch15_conf[2], ch15_conf[3]) u15(
1249 5 rudi
                .clk(           clk             ),
1250
                .rst(           rst             ),
1251
                .pointer(       pointer15       ),
1252
                .pointer_s(     pointer15_s     ),
1253
                .ch_csr(        ch15_csr                ),
1254
                .ch_txsz(       ch15_txsz       ),
1255
                .ch_adr0(       ch15_adr0       ),
1256
                .ch_adr1(       ch15_adr1       ),
1257
                .ch_am0(        ch15_am0                ),
1258
                .ch_am1(        ch15_am1                ),
1259
                .sw_pointer(    sw_pointer15    ),
1260
                .ch_stop(       ch_stop[15]     ),
1261
                .ch_dis(        ch_dis[15]      ),
1262
                .int(           ch_int[15]      ),
1263
                .wb_rf_din(     wb_rf_din       ),
1264
                .wb_rf_adr(     wb_rf_adr       ),
1265
                .wb_rf_we(      wb_rf_we        ),
1266
                .wb_rf_re(      wb_rf_re        ),
1267
                .ch_sel(        ch_sel          ),
1268
                .ndnr(          ndnr[15]                ),
1269
                .dma_busy(      dma_busy        ),
1270
                .dma_err(       dma_err         ),
1271
                .dma_done(      dma_done        ),
1272
                .dma_done_all(  dma_done_all    ),
1273
                .de_csr(        de_csr          ),
1274
                .de_txsz(       de_txsz         ),
1275
                .de_adr0(       de_adr0         ),
1276
                .de_adr1(       de_adr1         ),
1277
                .de_csr_we(     de_csr_we       ),
1278
                .de_txsz_we(    de_txsz_we      ),
1279
                .de_adr0_we(    de_adr0_we      ),
1280
                .de_adr1_we(    de_adr1_we      ),
1281
                .de_fetch_descr(de_fetch_descr  ),
1282
                .dma_rest(      dma_rest[15]    ),
1283
                .ptr_set(       ptr_set         )
1284
                );
1285
 
1286 10 rudi
wb_dma_ch_rf #(16, ch16_conf[0], ch16_conf[1], ch16_conf[2], ch16_conf[3]) u16(
1287 5 rudi
                .clk(           clk             ),
1288
                .rst(           rst             ),
1289
                .pointer(       pointer16       ),
1290
                .pointer_s(     pointer16_s     ),
1291
                .ch_csr(        ch16_csr                ),
1292
                .ch_txsz(       ch16_txsz       ),
1293
                .ch_adr0(       ch16_adr0       ),
1294
                .ch_adr1(       ch16_adr1       ),
1295
                .ch_am0(        ch16_am0                ),
1296
                .ch_am1(        ch16_am1                ),
1297
                .sw_pointer(    sw_pointer16    ),
1298
                .ch_stop(       ch_stop[16]     ),
1299
                .ch_dis(        ch_dis[16]      ),
1300
                .int(           ch_int[16]      ),
1301
                .wb_rf_din(     wb_rf_din       ),
1302
                .wb_rf_adr(     wb_rf_adr       ),
1303
                .wb_rf_we(      wb_rf_we        ),
1304
                .wb_rf_re(      wb_rf_re        ),
1305
                .ch_sel(        ch_sel          ),
1306
                .ndnr(          ndnr[16]                ),
1307
                .dma_busy(      dma_busy        ),
1308
                .dma_err(       dma_err         ),
1309
                .dma_done(      dma_done        ),
1310
                .dma_done_all(  dma_done_all    ),
1311
                .de_csr(        de_csr          ),
1312
                .de_txsz(       de_txsz         ),
1313
                .de_adr0(       de_adr0         ),
1314
                .de_adr1(       de_adr1         ),
1315
                .de_csr_we(     de_csr_we       ),
1316
                .de_txsz_we(    de_txsz_we      ),
1317
                .de_adr0_we(    de_adr0_we      ),
1318
                .de_adr1_we(    de_adr1_we      ),
1319
                .de_fetch_descr(de_fetch_descr  ),
1320
                .dma_rest(      dma_rest[16]    ),
1321
                .ptr_set(       ptr_set         )
1322
                );
1323
 
1324 10 rudi
wb_dma_ch_rf #(17, ch17_conf[0], ch17_conf[1], ch17_conf[2], ch17_conf[3]) u17(
1325 5 rudi
                .clk(           clk             ),
1326
                .rst(           rst             ),
1327
                .pointer(       pointer17       ),
1328
                .pointer_s(     pointer17_s     ),
1329
                .ch_csr(        ch17_csr                ),
1330
                .ch_txsz(       ch17_txsz       ),
1331
                .ch_adr0(       ch17_adr0       ),
1332
                .ch_adr1(       ch17_adr1       ),
1333
                .ch_am0(        ch17_am0                ),
1334
                .ch_am1(        ch17_am1                ),
1335
                .sw_pointer(    sw_pointer17    ),
1336
                .ch_stop(       ch_stop[17]     ),
1337
                .ch_dis(        ch_dis[17]      ),
1338
                .int(           ch_int[17]      ),
1339
                .wb_rf_din(     wb_rf_din       ),
1340
                .wb_rf_adr(     wb_rf_adr       ),
1341
                .wb_rf_we(      wb_rf_we        ),
1342
                .wb_rf_re(      wb_rf_re        ),
1343
                .ch_sel(        ch_sel          ),
1344
                .ndnr(          ndnr[17]                ),
1345
                .dma_busy(      dma_busy        ),
1346
                .dma_err(       dma_err         ),
1347
                .dma_done(      dma_done        ),
1348
                .dma_done_all(  dma_done_all    ),
1349
                .de_csr(        de_csr          ),
1350
                .de_txsz(       de_txsz         ),
1351
                .de_adr0(       de_adr0         ),
1352
                .de_adr1(       de_adr1         ),
1353
                .de_csr_we(     de_csr_we       ),
1354
                .de_txsz_we(    de_txsz_we      ),
1355
                .de_adr0_we(    de_adr0_we      ),
1356
                .de_adr1_we(    de_adr1_we      ),
1357
                .de_fetch_descr(de_fetch_descr  ),
1358
                .dma_rest(      dma_rest[17]    ),
1359
                .ptr_set(       ptr_set         )
1360
                );
1361
 
1362 10 rudi
wb_dma_ch_rf #(18, ch18_conf[0], ch18_conf[1], ch18_conf[2], ch18_conf[3]) u18(
1363 5 rudi
                .clk(           clk             ),
1364
                .rst(           rst             ),
1365
                .pointer(       pointer18       ),
1366
                .pointer_s(     pointer18_s     ),
1367
                .ch_csr(        ch18_csr                ),
1368
                .ch_txsz(       ch18_txsz       ),
1369
                .ch_adr0(       ch18_adr0       ),
1370
                .ch_adr1(       ch18_adr1       ),
1371
                .ch_am0(        ch18_am0                ),
1372
                .ch_am1(        ch18_am1                ),
1373
                .sw_pointer(    sw_pointer18    ),
1374
                .ch_stop(       ch_stop[18]     ),
1375
                .ch_dis(        ch_dis[18]      ),
1376
                .int(           ch_int[18]      ),
1377
                .wb_rf_din(     wb_rf_din       ),
1378
                .wb_rf_adr(     wb_rf_adr       ),
1379
                .wb_rf_we(      wb_rf_we        ),
1380
                .wb_rf_re(      wb_rf_re        ),
1381
                .ch_sel(        ch_sel          ),
1382
                .ndnr(          ndnr[18]                ),
1383
                .dma_busy(      dma_busy        ),
1384
                .dma_err(       dma_err         ),
1385
                .dma_done(      dma_done        ),
1386
                .dma_done_all(  dma_done_all    ),
1387
                .de_csr(        de_csr          ),
1388
                .de_txsz(       de_txsz         ),
1389
                .de_adr0(       de_adr0         ),
1390
                .de_adr1(       de_adr1         ),
1391
                .de_csr_we(     de_csr_we       ),
1392
                .de_txsz_we(    de_txsz_we      ),
1393
                .de_adr0_we(    de_adr0_we      ),
1394
                .de_adr1_we(    de_adr1_we      ),
1395
                .de_fetch_descr(de_fetch_descr  ),
1396
                .dma_rest(      dma_rest[18]    ),
1397
                .ptr_set(       ptr_set         )
1398
                );
1399
 
1400 10 rudi
wb_dma_ch_rf #(19, ch19_conf[0], ch19_conf[1], ch19_conf[2], ch19_conf[3]) u19(
1401 5 rudi
                .clk(           clk             ),
1402
                .rst(           rst             ),
1403
                .pointer(       pointer19       ),
1404
                .pointer_s(     pointer19_s     ),
1405
                .ch_csr(        ch19_csr                ),
1406
                .ch_txsz(       ch19_txsz       ),
1407
                .ch_adr0(       ch19_adr0       ),
1408
                .ch_adr1(       ch19_adr1       ),
1409
                .ch_am0(        ch19_am0                ),
1410
                .ch_am1(        ch19_am1                ),
1411
                .sw_pointer(    sw_pointer19    ),
1412
                .ch_stop(       ch_stop[19]     ),
1413
                .ch_dis(        ch_dis[19]      ),
1414
                .int(           ch_int[19]      ),
1415
                .wb_rf_din(     wb_rf_din       ),
1416
                .wb_rf_adr(     wb_rf_adr       ),
1417
                .wb_rf_we(      wb_rf_we        ),
1418
                .wb_rf_re(      wb_rf_re        ),
1419
                .ch_sel(        ch_sel          ),
1420
                .ndnr(          ndnr[19]                ),
1421
                .dma_busy(      dma_busy        ),
1422
                .dma_err(       dma_err         ),
1423
                .dma_done(      dma_done        ),
1424
                .dma_done_all(  dma_done_all    ),
1425
                .de_csr(        de_csr          ),
1426
                .de_txsz(       de_txsz         ),
1427
                .de_adr0(       de_adr0         ),
1428
                .de_adr1(       de_adr1         ),
1429
                .de_csr_we(     de_csr_we       ),
1430
                .de_txsz_we(    de_txsz_we      ),
1431
                .de_adr0_we(    de_adr0_we      ),
1432
                .de_adr1_we(    de_adr1_we      ),
1433
                .de_fetch_descr(de_fetch_descr  ),
1434
                .dma_rest(      dma_rest[19]    ),
1435
                .ptr_set(       ptr_set         )
1436
                );
1437
 
1438 10 rudi
wb_dma_ch_rf #(20, ch20_conf[0], ch20_conf[1], ch20_conf[2], ch20_conf[3]) u20(
1439 5 rudi
                .clk(           clk             ),
1440
                .rst(           rst             ),
1441
                .pointer(       pointer20       ),
1442
                .pointer_s(     pointer20_s     ),
1443
                .ch_csr(        ch20_csr                ),
1444
                .ch_txsz(       ch20_txsz       ),
1445
                .ch_adr0(       ch20_adr0       ),
1446
                .ch_adr1(       ch20_adr1       ),
1447
                .ch_am0(        ch20_am0                ),
1448
                .ch_am1(        ch20_am1                ),
1449
                .sw_pointer(    sw_pointer20    ),
1450
                .ch_stop(       ch_stop[20]     ),
1451
                .ch_dis(        ch_dis[20]      ),
1452
                .int(           ch_int[20]      ),
1453
                .wb_rf_din(     wb_rf_din       ),
1454
                .wb_rf_adr(     wb_rf_adr       ),
1455
                .wb_rf_we(      wb_rf_we        ),
1456
                .wb_rf_re(      wb_rf_re        ),
1457
                .ch_sel(        ch_sel          ),
1458
                .ndnr(          ndnr[20]                ),
1459
                .dma_busy(      dma_busy        ),
1460
                .dma_err(       dma_err         ),
1461
                .dma_done(      dma_done        ),
1462
                .dma_done_all(  dma_done_all    ),
1463
                .de_csr(        de_csr          ),
1464
                .de_txsz(       de_txsz         ),
1465
                .de_adr0(       de_adr0         ),
1466
                .de_adr1(       de_adr1         ),
1467
                .de_csr_we(     de_csr_we       ),
1468
                .de_txsz_we(    de_txsz_we      ),
1469
                .de_adr0_we(    de_adr0_we      ),
1470
                .de_adr1_we(    de_adr1_we      ),
1471
                .de_fetch_descr(de_fetch_descr  ),
1472
                .dma_rest(      dma_rest[20]    ),
1473
                .ptr_set(       ptr_set         )
1474
                );
1475
 
1476 10 rudi
wb_dma_ch_rf #(21, ch21_conf[0], ch21_conf[1], ch21_conf[2], ch21_conf[3]) u21(
1477 5 rudi
                .clk(           clk             ),
1478
                .rst(           rst             ),
1479
                .pointer(       pointer21       ),
1480
                .pointer_s(     pointer21_s     ),
1481
                .ch_csr(        ch21_csr                ),
1482
                .ch_txsz(       ch21_txsz       ),
1483
                .ch_adr0(       ch21_adr0       ),
1484
                .ch_adr1(       ch21_adr1       ),
1485
                .ch_am0(        ch21_am0                ),
1486
                .ch_am1(        ch21_am1                ),
1487
                .sw_pointer(    sw_pointer21    ),
1488
                .ch_stop(       ch_stop[21]     ),
1489
                .ch_dis(        ch_dis[21]      ),
1490
                .int(           ch_int[21]      ),
1491
                .wb_rf_din(     wb_rf_din       ),
1492
                .wb_rf_adr(     wb_rf_adr       ),
1493
                .wb_rf_we(      wb_rf_we        ),
1494
                .wb_rf_re(      wb_rf_re        ),
1495
                .ch_sel(        ch_sel          ),
1496
                .ndnr(          ndnr[21]                ),
1497
                .dma_busy(      dma_busy        ),
1498
                .dma_err(       dma_err         ),
1499
                .dma_done(      dma_done        ),
1500
                .dma_done_all(  dma_done_all    ),
1501
                .de_csr(        de_csr          ),
1502
                .de_txsz(       de_txsz         ),
1503
                .de_adr0(       de_adr0         ),
1504
                .de_adr1(       de_adr1         ),
1505
                .de_csr_we(     de_csr_we       ),
1506
                .de_txsz_we(    de_txsz_we      ),
1507
                .de_adr0_we(    de_adr0_we      ),
1508
                .de_adr1_we(    de_adr1_we      ),
1509
                .de_fetch_descr(de_fetch_descr  ),
1510
                .dma_rest(      dma_rest[21]    ),
1511
                .ptr_set(       ptr_set         )
1512
                );
1513
 
1514 10 rudi
wb_dma_ch_rf #(22, ch22_conf[0], ch22_conf[1], ch22_conf[2], ch22_conf[3]) u22(
1515 5 rudi
                .clk(           clk             ),
1516
                .rst(           rst             ),
1517
                .pointer(       pointer22       ),
1518
                .pointer_s(     pointer22_s     ),
1519
                .ch_csr(        ch22_csr                ),
1520
                .ch_txsz(       ch22_txsz       ),
1521
                .ch_adr0(       ch22_adr0       ),
1522
                .ch_adr1(       ch22_adr1       ),
1523
                .ch_am0(        ch22_am0                ),
1524
                .ch_am1(        ch22_am1                ),
1525
                .sw_pointer(    sw_pointer22    ),
1526
                .ch_stop(       ch_stop[22]     ),
1527
                .ch_dis(        ch_dis[22]      ),
1528
                .int(           ch_int[22]      ),
1529
                .wb_rf_din(     wb_rf_din       ),
1530
                .wb_rf_adr(     wb_rf_adr       ),
1531
                .wb_rf_we(      wb_rf_we        ),
1532
                .wb_rf_re(      wb_rf_re        ),
1533
                .ch_sel(        ch_sel          ),
1534
                .ndnr(          ndnr[22]                ),
1535
                .dma_busy(      dma_busy        ),
1536
                .dma_err(       dma_err         ),
1537
                .dma_done(      dma_done        ),
1538
                .dma_done_all(  dma_done_all    ),
1539
                .de_csr(        de_csr          ),
1540
                .de_txsz(       de_txsz         ),
1541
                .de_adr0(       de_adr0         ),
1542
                .de_adr1(       de_adr1         ),
1543
                .de_csr_we(     de_csr_we       ),
1544
                .de_txsz_we(    de_txsz_we      ),
1545
                .de_adr0_we(    de_adr0_we      ),
1546
                .de_adr1_we(    de_adr1_we      ),
1547
                .de_fetch_descr(de_fetch_descr  ),
1548
                .dma_rest(      dma_rest[22]    ),
1549
                .ptr_set(       ptr_set         )
1550
                );
1551
 
1552 10 rudi
wb_dma_ch_rf #(23, ch23_conf[0], ch23_conf[1], ch23_conf[2], ch23_conf[3]) u23(
1553 5 rudi
                .clk(           clk             ),
1554
                .rst(           rst             ),
1555
                .pointer(       pointer23       ),
1556
                .pointer_s(     pointer23_s     ),
1557
                .ch_csr(        ch23_csr                ),
1558
                .ch_txsz(       ch23_txsz       ),
1559
                .ch_adr0(       ch23_adr0       ),
1560
                .ch_adr1(       ch23_adr1       ),
1561
                .ch_am0(        ch23_am0                ),
1562
                .ch_am1(        ch23_am1                ),
1563
                .sw_pointer(    sw_pointer23    ),
1564
                .ch_stop(       ch_stop[23]     ),
1565
                .ch_dis(        ch_dis[23]      ),
1566
                .int(           ch_int[23]      ),
1567
                .wb_rf_din(     wb_rf_din       ),
1568
                .wb_rf_adr(     wb_rf_adr       ),
1569
                .wb_rf_we(      wb_rf_we        ),
1570
                .wb_rf_re(      wb_rf_re        ),
1571
                .ch_sel(        ch_sel          ),
1572
                .ndnr(          ndnr[23]                ),
1573
                .dma_busy(      dma_busy        ),
1574
                .dma_err(       dma_err         ),
1575
                .dma_done(      dma_done        ),
1576
                .dma_done_all(  dma_done_all    ),
1577
                .de_csr(        de_csr          ),
1578
                .de_txsz(       de_txsz         ),
1579
                .de_adr0(       de_adr0         ),
1580
                .de_adr1(       de_adr1         ),
1581
                .de_csr_we(     de_csr_we       ),
1582
                .de_txsz_we(    de_txsz_we      ),
1583
                .de_adr0_we(    de_adr0_we      ),
1584
                .de_adr1_we(    de_adr1_we      ),
1585
                .de_fetch_descr(de_fetch_descr  ),
1586
                .dma_rest(      dma_rest[23]    ),
1587
                .ptr_set(       ptr_set         )
1588
                );
1589
 
1590 10 rudi
wb_dma_ch_rf #(24, ch24_conf[0], ch24_conf[1], ch24_conf[2], ch24_conf[3]) u24(
1591 5 rudi
                .clk(           clk             ),
1592
                .rst(           rst             ),
1593
                .pointer(       pointer24       ),
1594
                .pointer_s(     pointer24_s     ),
1595
                .ch_csr(        ch24_csr                ),
1596
                .ch_txsz(       ch24_txsz       ),
1597
                .ch_adr0(       ch24_adr0       ),
1598
                .ch_adr1(       ch24_adr1       ),
1599
                .ch_am0(        ch24_am0                ),
1600
                .ch_am1(        ch24_am1                ),
1601
                .sw_pointer(    sw_pointer24    ),
1602
                .ch_stop(       ch_stop[24]     ),
1603
                .ch_dis(        ch_dis[24]      ),
1604
                .int(           ch_int[24]      ),
1605
                .wb_rf_din(     wb_rf_din       ),
1606
                .wb_rf_adr(     wb_rf_adr       ),
1607
                .wb_rf_we(      wb_rf_we        ),
1608
                .wb_rf_re(      wb_rf_re        ),
1609
                .ch_sel(        ch_sel          ),
1610
                .ndnr(          ndnr[24]                ),
1611
                .dma_busy(      dma_busy        ),
1612
                .dma_err(       dma_err         ),
1613
                .dma_done(      dma_done        ),
1614
                .dma_done_all(  dma_done_all    ),
1615
                .de_csr(        de_csr          ),
1616
                .de_txsz(       de_txsz         ),
1617
                .de_adr0(       de_adr0         ),
1618
                .de_adr1(       de_adr1         ),
1619
                .de_csr_we(     de_csr_we       ),
1620
                .de_txsz_we(    de_txsz_we      ),
1621
                .de_adr0_we(    de_adr0_we      ),
1622
                .de_adr1_we(    de_adr1_we      ),
1623
                .de_fetch_descr(de_fetch_descr  ),
1624
                .dma_rest(      dma_rest[24]    ),
1625
                .ptr_set(       ptr_set         )
1626
                );
1627
 
1628 10 rudi
wb_dma_ch_rf #(25, ch25_conf[0], ch25_conf[1], ch25_conf[2], ch25_conf[3]) u25(
1629 5 rudi
                .clk(           clk             ),
1630
                .rst(           rst             ),
1631
                .pointer(       pointer25       ),
1632
                .pointer_s(     pointer25_s     ),
1633
                .ch_csr(        ch25_csr                ),
1634
                .ch_txsz(       ch25_txsz       ),
1635
                .ch_adr0(       ch25_adr0       ),
1636
                .ch_adr1(       ch25_adr1       ),
1637
                .ch_am0(        ch25_am0                ),
1638
                .ch_am1(        ch25_am1                ),
1639
                .sw_pointer(    sw_pointer25    ),
1640
                .ch_stop(       ch_stop[25]     ),
1641
                .ch_dis(        ch_dis[25]      ),
1642
                .int(           ch_int[25]      ),
1643
                .wb_rf_din(     wb_rf_din       ),
1644
                .wb_rf_adr(     wb_rf_adr       ),
1645
                .wb_rf_we(      wb_rf_we        ),
1646
                .wb_rf_re(      wb_rf_re        ),
1647
                .ch_sel(        ch_sel          ),
1648
                .ndnr(          ndnr[25]                ),
1649
                .dma_busy(      dma_busy        ),
1650
                .dma_err(       dma_err         ),
1651
                .dma_done(      dma_done        ),
1652
                .dma_done_all(  dma_done_all    ),
1653
                .de_csr(        de_csr          ),
1654
                .de_txsz(       de_txsz         ),
1655
                .de_adr0(       de_adr0         ),
1656
                .de_adr1(       de_adr1         ),
1657
                .de_csr_we(     de_csr_we       ),
1658
                .de_txsz_we(    de_txsz_we      ),
1659
                .de_adr0_we(    de_adr0_we      ),
1660
                .de_adr1_we(    de_adr1_we      ),
1661
                .de_fetch_descr(de_fetch_descr  ),
1662
                .dma_rest(      dma_rest[25]    ),
1663
                .ptr_set(       ptr_set         )
1664
                );
1665
 
1666 10 rudi
wb_dma_ch_rf #(26, ch26_conf[0], ch26_conf[1], ch26_conf[2], ch26_conf[3]) u26(
1667 5 rudi
                .clk(           clk             ),
1668
                .rst(           rst             ),
1669
                .pointer(       pointer26       ),
1670
                .pointer_s(     pointer26_s     ),
1671
                .ch_csr(        ch26_csr                ),
1672
                .ch_txsz(       ch26_txsz       ),
1673
                .ch_adr0(       ch26_adr0       ),
1674
                .ch_adr1(       ch26_adr1       ),
1675
                .ch_am0(        ch26_am0                ),
1676
                .ch_am1(        ch26_am1                ),
1677
                .sw_pointer(    sw_pointer26    ),
1678
                .ch_stop(       ch_stop[26]     ),
1679
                .ch_dis(        ch_dis[26]      ),
1680
                .int(           ch_int[26]      ),
1681
                .wb_rf_din(     wb_rf_din       ),
1682
                .wb_rf_adr(     wb_rf_adr       ),
1683
                .wb_rf_we(      wb_rf_we        ),
1684
                .wb_rf_re(      wb_rf_re        ),
1685
                .ch_sel(        ch_sel          ),
1686
                .ndnr(          ndnr[26]                ),
1687
                .dma_busy(      dma_busy        ),
1688
                .dma_err(       dma_err         ),
1689
                .dma_done(      dma_done        ),
1690
                .dma_done_all(  dma_done_all    ),
1691
                .de_csr(        de_csr          ),
1692
                .de_txsz(       de_txsz         ),
1693
                .de_adr0(       de_adr0         ),
1694
                .de_adr1(       de_adr1         ),
1695
                .de_csr_we(     de_csr_we       ),
1696
                .de_txsz_we(    de_txsz_we      ),
1697
                .de_adr0_we(    de_adr0_we      ),
1698
                .de_adr1_we(    de_adr1_we      ),
1699
                .de_fetch_descr(de_fetch_descr  ),
1700
                .dma_rest(      dma_rest[26]    ),
1701
                .ptr_set(       ptr_set         )
1702
                );
1703
 
1704 10 rudi
wb_dma_ch_rf #(27, ch27_conf[0], ch27_conf[1], ch27_conf[2], ch27_conf[3]) u27(
1705 5 rudi
                .clk(           clk             ),
1706
                .rst(           rst             ),
1707
                .pointer(       pointer27       ),
1708
                .pointer_s(     pointer27_s     ),
1709
                .ch_csr(        ch27_csr                ),
1710
                .ch_txsz(       ch27_txsz       ),
1711
                .ch_adr0(       ch27_adr0       ),
1712
                .ch_adr1(       ch27_adr1       ),
1713
                .ch_am0(        ch27_am0                ),
1714
                .ch_am1(        ch27_am1                ),
1715
                .sw_pointer(    sw_pointer27    ),
1716
                .ch_stop(       ch_stop[27]     ),
1717
                .ch_dis(        ch_dis[27]      ),
1718
                .int(           ch_int[27]      ),
1719
                .wb_rf_din(     wb_rf_din       ),
1720
                .wb_rf_adr(     wb_rf_adr       ),
1721
                .wb_rf_we(      wb_rf_we        ),
1722
                .wb_rf_re(      wb_rf_re        ),
1723
                .ch_sel(        ch_sel          ),
1724
                .ndnr(          ndnr[27]                ),
1725
                .dma_busy(      dma_busy        ),
1726
                .dma_err(       dma_err         ),
1727
                .dma_done(      dma_done        ),
1728
                .dma_done_all(  dma_done_all    ),
1729
                .de_csr(        de_csr          ),
1730
                .de_txsz(       de_txsz         ),
1731
                .de_adr0(       de_adr0         ),
1732
                .de_adr1(       de_adr1         ),
1733
                .de_csr_we(     de_csr_we       ),
1734
                .de_txsz_we(    de_txsz_we      ),
1735
                .de_adr0_we(    de_adr0_we      ),
1736
                .de_adr1_we(    de_adr1_we      ),
1737
                .de_fetch_descr(de_fetch_descr  ),
1738
                .dma_rest(      dma_rest[27]    ),
1739
                .ptr_set(       ptr_set         )
1740
                );
1741
 
1742 10 rudi
wb_dma_ch_rf #(28, ch28_conf[0], ch28_conf[1], ch28_conf[2], ch28_conf[3]) u28(
1743 5 rudi
                .clk(           clk             ),
1744
                .rst(           rst             ),
1745
                .pointer(       pointer28       ),
1746
                .pointer_s(     pointer28_s     ),
1747
                .ch_csr(        ch28_csr                ),
1748
                .ch_txsz(       ch28_txsz       ),
1749
                .ch_adr0(       ch28_adr0       ),
1750
                .ch_adr1(       ch28_adr1       ),
1751
                .ch_am0(        ch28_am0                ),
1752
                .ch_am1(        ch28_am1                ),
1753
                .sw_pointer(    sw_pointer28    ),
1754
                .ch_stop(       ch_stop[28]     ),
1755
                .ch_dis(        ch_dis[28]      ),
1756
                .int(           ch_int[28]      ),
1757
                .wb_rf_din(     wb_rf_din       ),
1758
                .wb_rf_adr(     wb_rf_adr       ),
1759
                .wb_rf_we(      wb_rf_we        ),
1760
                .wb_rf_re(      wb_rf_re        ),
1761
                .ch_sel(        ch_sel          ),
1762
                .ndnr(          ndnr[28]                ),
1763
                .dma_busy(      dma_busy        ),
1764
                .dma_err(       dma_err         ),
1765
                .dma_done(      dma_done        ),
1766
                .dma_done_all(  dma_done_all    ),
1767
                .de_csr(        de_csr          ),
1768
                .de_txsz(       de_txsz         ),
1769
                .de_adr0(       de_adr0         ),
1770
                .de_adr1(       de_adr1         ),
1771
                .de_csr_we(     de_csr_we       ),
1772
                .de_txsz_we(    de_txsz_we      ),
1773
                .de_adr0_we(    de_adr0_we      ),
1774
                .de_adr1_we(    de_adr1_we      ),
1775
                .de_fetch_descr(de_fetch_descr  ),
1776
                .dma_rest(      dma_rest[28]    ),
1777
                .ptr_set(       ptr_set         )
1778
                );
1779
 
1780 10 rudi
wb_dma_ch_rf #(29, ch29_conf[0], ch29_conf[1], ch29_conf[2], ch29_conf[3]) u29(
1781 5 rudi
                .clk(           clk             ),
1782
                .rst(           rst             ),
1783
                .pointer(       pointer29       ),
1784
                .pointer_s(     pointer29_s     ),
1785
                .ch_csr(        ch29_csr                ),
1786
                .ch_txsz(       ch29_txsz       ),
1787
                .ch_adr0(       ch29_adr0       ),
1788
                .ch_adr1(       ch29_adr1       ),
1789
                .ch_am0(        ch29_am0                ),
1790
                .ch_am1(        ch29_am1                ),
1791
                .sw_pointer(    sw_pointer29    ),
1792
                .ch_stop(       ch_stop[29]     ),
1793
                .ch_dis(        ch_dis[29]      ),
1794
                .int(           ch_int[29]      ),
1795
                .wb_rf_din(     wb_rf_din       ),
1796
                .wb_rf_adr(     wb_rf_adr       ),
1797
                .wb_rf_we(      wb_rf_we        ),
1798
                .wb_rf_re(      wb_rf_re        ),
1799
                .ch_sel(        ch_sel          ),
1800
                .ndnr(          ndnr[29]                ),
1801
                .dma_busy(      dma_busy        ),
1802
                .dma_err(       dma_err         ),
1803
                .dma_done(      dma_done        ),
1804
                .dma_done_all(  dma_done_all    ),
1805
                .de_csr(        de_csr          ),
1806
                .de_txsz(       de_txsz         ),
1807
                .de_adr0(       de_adr0         ),
1808
                .de_adr1(       de_adr1         ),
1809
                .de_csr_we(     de_csr_we       ),
1810
                .de_txsz_we(    de_txsz_we      ),
1811
                .de_adr0_we(    de_adr0_we      ),
1812
                .de_adr1_we(    de_adr1_we      ),
1813
                .de_fetch_descr(de_fetch_descr  ),
1814
                .dma_rest(      dma_rest[29]    ),
1815
                .ptr_set(       ptr_set         )
1816
                );
1817
 
1818 10 rudi
wb_dma_ch_rf #(30, ch30_conf[0], ch30_conf[1], ch30_conf[2], ch30_conf[3]) u30(
1819 5 rudi
                .clk(           clk             ),
1820
                .rst(           rst             ),
1821
                .pointer(       pointer30       ),
1822
                .pointer_s(     pointer30_s     ),
1823
                .ch_csr(        ch30_csr                ),
1824
                .ch_txsz(       ch30_txsz       ),
1825
                .ch_adr0(       ch30_adr0       ),
1826
                .ch_adr1(       ch30_adr1       ),
1827
                .ch_am0(        ch30_am0                ),
1828
                .ch_am1(        ch30_am1                ),
1829
                .sw_pointer(    sw_pointer30    ),
1830
                .ch_stop(       ch_stop[30]     ),
1831
                .ch_dis(        ch_dis[30]      ),
1832
                .int(           ch_int[30]      ),
1833
                .wb_rf_din(     wb_rf_din       ),
1834
                .wb_rf_adr(     wb_rf_adr       ),
1835
                .wb_rf_we(      wb_rf_we        ),
1836
                .wb_rf_re(      wb_rf_re        ),
1837
                .ch_sel(        ch_sel          ),
1838
                .ndnr(          ndnr[30]                ),
1839
                .dma_busy(      dma_busy        ),
1840
                .dma_err(       dma_err         ),
1841
                .dma_done(      dma_done        ),
1842
                .dma_done_all(  dma_done_all    ),
1843
                .de_csr(        de_csr          ),
1844
                .de_txsz(       de_txsz         ),
1845
                .de_adr0(       de_adr0         ),
1846
                .de_adr1(       de_adr1         ),
1847
                .de_csr_we(     de_csr_we       ),
1848
                .de_txsz_we(    de_txsz_we      ),
1849
                .de_adr0_we(    de_adr0_we      ),
1850
                .de_adr1_we(    de_adr1_we      ),
1851
                .de_fetch_descr(de_fetch_descr  ),
1852
                .dma_rest(      dma_rest[30]    ),
1853
                .ptr_set(       ptr_set         )
1854
                );
1855
 
1856
endmodule

powered by: WebSVN 2.1.0

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