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

Subversion Repositories dma_axi

[/] [dma_axi/] [trunk/] [src/] [dma_axi32/] [dma_axi32_core0_ch.v] - Blame information for rev 2

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

Line No. Rev Author Line
1 2 eyalhoc
//---------------------------------------------------------
2
//-- File generated by RobustVerilog parser
3
//-- Version: 1.0
4
//-- Invoked Fri Mar 25 23:34:52 2011
5
//--
6
//-- Source file: dma_ch.v
7
//---------------------------------------------------------
8
 
9
 
10
 
11
 
12
module dma_axi32_core0_ch (clk,reset,scan_en,pclk,clken,pclken,psel,penable,paddr,pwrite,pwdata,prdata,pslverr,periph_tx_req,periph_tx_clr,periph_rx_req,periph_rx_clr,rd_cmd_split,rd_cmd_line,rd_clr_line,rd_clr,rd_clr_load,rd_slverr,rd_decerr,wr_cmd_split,wr_cmd_pending,wr_clr_line,wr_clr,wr_clr_last,wr_slverr,wr_decerr,load_wr,load_wr_cycle,load_wdata,load_req_in_prog,int_all_proc,ch_start,idle,ch_active,ch_rd_active,ch_wr_active,wr_last_cmd,rd_line_cmd,wr_line_cmd,rd_go_next_line,wr_go_next_line,rd_ready,rd_burst_start,rd_burst_addr,rd_burst_size,rd_tokens,rd_port_num,rd_periph_delay,rd_clr_valid,rd_transfer,rd_transfer_size,rd_clr_stall,wr_ready,wr_burst_start,wr_burst_addr,wr_burst_size,wr_tokens,wr_port_num,wr_periph_delay,wr_clr_valid,wr_transfer,wr_transfer_size,wr_next_size,wr_clr_stall,wr_incr,timeout_aw,timeout_w,timeout_ar,wdt_timeout,fifo_wr,fifo_wdata,fifo_wsize,fifo_rd,fifo_rsize,fifo_rd_valid,fifo_rdata,fifo_wr_ready,joint_mode,joint_remote,rd_page_cross,wr_page_cross,joint_in_prog,joint_not_in_prog,joint_mux_in_prog,joint_req);
13
 
14
   input             clk;
15
   input             reset;
16
   input             scan_en;
17
 
18
   input             pclk;
19
   input             clken;
20
   input             pclken;
21
   input             psel;
22
   input             penable;
23
   input [7:0]             paddr;
24
   input             pwrite;
25
   input [31:0]         pwdata;
26
   output [31:0]         prdata;
27
   output             pslverr;
28
 
29
   input [31:1]         periph_tx_req;
30
   output [31:1]         periph_tx_clr;
31
   input [31:1]         periph_rx_req;
32
   output [31:1]         periph_rx_clr;
33
 
34
   input             rd_cmd_split;
35
   input             rd_cmd_line;
36
   input             rd_clr_line;
37
   input             rd_clr;
38
   input             rd_clr_load;
39
   input             rd_slverr;
40
   input             rd_decerr;
41
 
42
   input             wr_cmd_split;
43
   input             wr_cmd_pending;
44
   input             wr_clr_line;
45
   input             wr_clr;
46
   input             wr_clr_last;
47
   input             wr_slverr;
48
   input             wr_decerr;
49
 
50
   input             load_wr;
51
   input [1:0]             load_wr_cycle;
52
   input [32-1:0]    load_wdata;
53
   output             load_req_in_prog;
54
 
55
   output [1-1:0]    int_all_proc;
56
   input              ch_start;
57
   output             idle;
58
   output             ch_active;
59
   output             ch_rd_active;
60
   output             ch_wr_active;
61
   output             wr_last_cmd;
62
   output             rd_line_cmd;
63
   output             wr_line_cmd;
64
   output             rd_go_next_line;
65
   output             wr_go_next_line;
66
 
67
   output             rd_ready;
68
   input             rd_burst_start;
69
   output [32-1:0]   rd_burst_addr;
70
   output [7-1:0]  rd_burst_size;
71
   output [`TOKEN_BITS-1:0] rd_tokens;
72
   output             rd_port_num;
73
   output [`DELAY_BITS-1:0] rd_periph_delay;
74
   output             rd_clr_valid;
75
   input             rd_transfer;
76
   input [3-1:0]    rd_transfer_size;
77
   output             rd_clr_stall;
78
 
79
   output             wr_ready;
80
   input             wr_burst_start;
81
   output [32-1:0]   wr_burst_addr;
82
   output [7-1:0]  wr_burst_size;
83
   output [`TOKEN_BITS-1:0] wr_tokens;
84
   output             wr_port_num;
85
   output [`DELAY_BITS-1:0] wr_periph_delay;
86
   output             wr_clr_valid;
87
   input             wr_transfer;
88
   input [3-1:0]    wr_transfer_size;
89
   input [3-1:0]    wr_next_size;
90
   output             wr_clr_stall;
91
   output             wr_incr;
92
 
93
   input              timeout_aw;
94
   input              timeout_w;
95
   input              timeout_ar;
96
   input             wdt_timeout;
97
 
98
   input             fifo_wr;
99
   input [32-1:0]    fifo_wdata;
100
   input [3-1:0]    fifo_wsize;
101
 
102
   input             fifo_rd;
103
   input [3-1:0]    fifo_rsize;
104
 
105
   output             fifo_rd_valid;
106
   output [32-1:0]   fifo_rdata;
107
   output             fifo_wr_ready;
108
 
109
   input             joint_mode;
110
   input             joint_remote;
111
   input             rd_page_cross;
112
   input             wr_page_cross;
113
   output             joint_in_prog;
114
   output             joint_not_in_prog;
115
   output             joint_mux_in_prog;
116
   output             joint_req;
117
 
118
 
119
 
120
 
121
   //outputs of reg
122
   wire [32-1:0]     load_addr;
123
   wire             load_in_prog;
124
   wire             load_req_in_prog;
125
   wire             ch_update;
126
   wire [32-1:0]     rd_start_addr;
127
   wire [32-1:0]     wr_start_addr;
128
   wire [10-1:0]     x_size;
129
   wire [10-`X_BITS-1:0]         y_size;
130
   wire             block;
131
   wire             joint;
132
   wire [`FRAME_BITS-1:0]   frame_width;
133
   wire [2-1:0]     width_align;
134
   wire [`DELAY_BITS-1:0]   rd_periph_delay;
135
   wire [`DELAY_BITS-1:0]   wr_periph_delay;
136
   wire             rd_periph_block;
137
   wire             wr_periph_block;
138
   wire [`TOKEN_BITS-1:0]   rd_tokens;
139
   wire [`TOKEN_BITS-1:0]   wr_tokens;
140
   wire             rd_port_num;
141
   wire             wr_port_num;
142
   wire [`OUT_BITS-1:0]     rd_outs_max;
143
   wire [`OUT_BITS-1:0]     wr_outs_max;
144
   wire [`WAIT_BITS-1:0]    rd_wait_limit;
145
   wire [`WAIT_BITS-1:0]    wr_wait_limit;
146
   wire             rd_incr;
147
   wire             wr_incr;
148
   wire [7-1:0]    rd_burst_max_size;
149
   wire [7-1:0]    wr_burst_max_size;
150
   wire [4:0]             rd_periph_num;
151
   wire [4:0]             wr_periph_num;
152
   wire             wr_outstanding;
153
   wire             rd_outstanding;
154
   wire             ch_retry_wait;
155
   wire             ch_rd_active;
156
   wire             ch_wr_active;
157
   wire             ch_in_prog;
158
   wire [1:0]             end_swap;
159
 
160
   //outputs of rd offsets
161
   wire [10-1:0]     rd_x_offset;
162
   wire [10-`X_BITS-1:0]    rd_y_offset;
163
   wire [10-1:0]     rd_x_remain;
164
   wire [10-`X_BITS-1:0]    rd_clr_remain;
165
   wire             rd_ch_end;
166
   wire             rd_go_next_line;
167
   wire             rd_line_empty;
168
   wire             rd_empty;
169
   wire [2-1:0]     rd_align;
170
 
171
   //outputs of wr offsets
172
   wire [10-1:0]     wr_x_offset;
173
   wire [10-`X_BITS-1:0]    wr_y_offset;
174
   wire [10-1:0]     wr_x_remain;
175
   wire [10-`X_BITS-1:0]    wr_clr_remain;
176
   wire             wr_ch_end;
177
   wire             wr_go_next_line;
178
   wire             wr_line_empty;
179
   wire             wr_empty;
180
   wire [2-1:0]     wr_align;
181
   wire             wr_ch_end_pre;
182
   reg                 wr_ch_end_reg;
183
 
184
   //outputs of remain
185
   wire [5:0]         rd_gap;
186
   wire [5:0]         wr_fullness;
187
 
188
   //outputs of outs rd
189
   wire             rd_cmd_outs;
190
   wire             rd_clr_outs;
191
   wire [`OUT_BITS-1:0]     rd_outs;
192
   wire             rd_outs_empty;
193
   wire             outs_empty;
194
   wire             rd_stall;
195
   wire             timeout_rresp;
196
 
197
   //outputs of outs wr
198
   wire             wr_cmd_outs;
199
   wire             wr_clr_outs;
200
   wire [`OUT_BITS-1:0]     wr_outs;
201
   wire             wr_outs_empty;
202
   wire             wr_stall;
203
   wire             wr_stall_pre;
204
   wire             timeout_wresp;
205
 
206
   //outputs of calc rd
207
   wire             rd_burst_last;
208
   wire [32-1:0]     rd_burst_addr;
209
   wire [7-1:0]    rd_burst_size;
210
   wire             rd_burst_ready;
211
   wire             rd_joint_ready;
212
   wire             rd_joint_flush;
213
   wire             joint_burst_req;
214
 
215
   //outputs of calc wr
216
   wire             wr_burst_last;
217
   wire [32-1:0]     wr_burst_addr;
218
   wire [7-1:0]    wr_burst_size;
219
   wire             wr_burst_ready;
220
   wire             wr_single;
221
   wire             wr_joint_ready;
222
   wire             wr_joint_flush;
223
   wire             joint_line_req;
224
 
225
   //outputs of rd periph mux
226
   wire [31:1]             periph_rx_clr;
227
   wire             rd_periph_ready;
228
 
229
   //outputs of wr periph mux
230
   wire [31:1]             periph_tx_clr;
231
   wire             wr_periph_ready;
232
 
233
   //outputs of rd wait
234
   wire             rd_wait_ready;
235
 
236
   //outputs of wr wait
237
   wire             wr_wait_ready;
238
 
239
   //outputs of fifo_ctrl
240
   wire             fifo_wr_ready;
241
   wire             fifo_overflow;
242
   wire             fifo_underflow;
243
 
244
   wire             rd_clr_block_pre;
245
   wire             rd_clr_block;
246
   wire             rd_clr_valid;
247
   wire             wr_clr_block_pre;
248
   wire             wr_clr_block;
249
   wire             wr_clr_valid;
250
   wire             wr_clr_mux;
251
 
252
   wire             rd_cmd_line_d;
253
   wire             rd_clr_stall;
254
   wire             wr_clr_stall;
255
   wire             allow_line_cmd;
256
 
257
   wire             load_cmd;
258
 
259
   wire [4:0]             timeout_bus;
260
 
261
   wire             joint_flush;
262
   wire             page_cross;
263
   reg                 joint_cross_reg;
264
   wire             joint_cross;
265
   reg                 rd_joint_not_in_prog;
266
   reg                 wr_joint_not_in_prog;
267
   wire             joint_not_in_prog;
268
   reg                 rd_joint_in_prog;
269
   reg                 wr_joint_in_prog;
270
   wire             joint_in_prog;
271
   wire             rd_clr_outs_d_pre;
272
   wire             rd_clr_outs_d;
273
   wire             wr_clr_outs_d_pre;
274
   wire             wr_clr_outs_d;
275
   wire             rd_clr_d;
276
   wire             wr_clr_d;
277
   wire             access_port0_mux;
278
   wire             access_port1_mux;
279
 
280
   wire             idle_pre;
281
   wire             clk_en;
282
   wire             gclk;
283
 
284
 
285
   assign             ch_active         = ch_in_prog | load_in_prog;
286
 
287
   assign             outs_empty        = rd_outs_empty & wr_outs_empty;
288
 
289
 
290
 
291
   assign             rd_clr_outs_d_pre = rd_clr_outs & (~rd_burst_start);
292
   assign             wr_clr_outs_d_pre = wr_clr_outs & (~wr_burst_start);
293
 
294
   prgen_delay #(1) delay_rd_clr_outs (.clk(clk), .reset(reset), .din(rd_clr_outs_d_pre), .dout(rd_clr_outs_d));
295
   prgen_delay #(1) delay_wr_clr_outs (.clk(clk), .reset(reset), .din(wr_clr_outs_d_pre), .dout(wr_clr_outs_d));
296
 
297
   prgen_delay #(1) delay_rd_clr (.clk(clk), .reset(reset), .din(rd_clr), .dout(rd_clr_d));
298
   prgen_delay #(1) delay_wr_clr (.clk(clk), .reset(reset), .din(wr_clr), .dout(wr_clr_d));
299
 
300
   always @(posedge clk or posedge reset)
301
     if (reset)
302
       rd_joint_not_in_prog <= #1 1'b0;
303
     else if (ch_update)
304
       rd_joint_not_in_prog <= #1 1'b0;
305
     else if (rd_burst_start)
306
       rd_joint_not_in_prog <= #1 (~joint_req);
307
     else if (rd_outs_empty & rd_clr_outs_d)
308
       rd_joint_not_in_prog <= #1 1'b0;
309
 
310
   always @(posedge clk or posedge reset)
311
     if (reset)
312
       wr_joint_not_in_prog <= #1 1'b0;
313
     else if (ch_update)
314
       wr_joint_not_in_prog <= #1 1'b0;
315
     else if (wr_burst_start)
316
       wr_joint_not_in_prog <= #1 (~joint_req);
317
     else if (wr_outs_empty & wr_clr_outs_d)
318
       wr_joint_not_in_prog <= #1 1'b0;
319
 
320
   always @(posedge clk or posedge reset)
321
     if (reset)
322
       rd_joint_in_prog <= #1 1'b0;
323
     else if (ch_update)
324
       rd_joint_in_prog <= #1 1'b0;
325
     else if (rd_burst_start)
326
       rd_joint_in_prog <= #1 joint_req;
327
     else if (rd_outs_empty & rd_clr_outs_d)
328
       rd_joint_in_prog <= #1 1'b0;
329
 
330
   always @(posedge clk or posedge reset)
331
     if (reset)
332
       wr_joint_in_prog <= #1 1'b0;
333
     else if (ch_update)
334
       wr_joint_in_prog <= #1 1'b0;
335
     else if (wr_burst_start)
336
       wr_joint_in_prog <= #1 joint_req;
337
     else if (wr_outs_empty & wr_clr_outs_d)
338
       wr_joint_in_prog <= #1 1'b0;
339
 
340
   always @(posedge clk or posedge reset)
341
     if (reset)
342
       joint_cross_reg <= #1 1'b0;
343
     else if (ch_update)
344
       joint_cross_reg <= #1 1'b0;
345
     else if (page_cross & joint)
346
       joint_cross_reg <= #1 1'b1;
347
     else if (joint_not_in_prog & outs_empty)
348
       joint_cross_reg <= #1 1'b0;
349
 
350
   assign             joint_cross       = joint_cross_reg;
351
   assign             page_cross        = rd_page_cross | wr_page_cross;
352
   assign             joint_in_prog     = rd_joint_in_prog | wr_joint_in_prog;
353
   assign             joint_not_in_prog = rd_joint_not_in_prog | wr_joint_not_in_prog;
354
 
355
   assign             access_port0_mux  = ((rd_port_num == 1'b0) | ((wr_port_num == 1'b0))) & 0;
356
   assign             access_port1_mux  = ((rd_port_num == 1'b1) | ((wr_port_num == 1'b1))) & 0;
357
   assign             joint_mux_in_prog = joint_in_prog & (access_port0_mux | access_port1_mux);
358
 
359
   assign             joint_req         = joint & rd_joint_ready & wr_joint_ready & (~joint_cross) & (~load_req_in_prog);
360
   assign             joint_flush       = rd_joint_flush | wr_joint_flush;
361
 
362
 
363
   assign             rd_clr_block      = 1'b1;
364
   assign             wr_clr_block      = 1'b1;
365
   assign             wr_clr_mux        = wr_clr;
366
   assign             rd_clr_stall      = 1'b0;
367
   assign             wr_clr_stall      = 1'b0;
368
   assign             allow_line_cmd    = 1'b0;
369
   assign             rd_line_cmd       = 1'b0;
370
   assign             wr_line_cmd       = 1'b0;
371
 
372
   assign             rd_clr_valid   = rd_clr_block & (~ch_retry_wait);
373
   assign             wr_clr_valid   = wr_clr_block & (~ch_retry_wait);
374
 
375
   assign             rd_ready       = (~rd_stall) & (~rd_clr_stall) &
376
                                 ch_rd_active & (rd_periph_ready | load_req_in_prog) &
377
                rd_wait_ready & rd_burst_ready;
378
 
379
 
380
   assign             wr_ready       = (~wr_stall) & (~wr_clr_stall) &
381
                                 ch_wr_active & wr_periph_ready &
382
                wr_wait_ready & wr_burst_ready;
383
 
384
   assign             wr_last_cmd    = wr_empty;
385
 
386
   assign             load_cmd       = load_req_in_prog & rd_burst_start;
387
 
388
   assign             rd_cmd_outs    = rd_burst_start | rd_cmd_split;
389
   assign             wr_cmd_outs    = wr_burst_start | wr_cmd_split;
390
 
391
   assign             rd_clr_outs    = rd_clr | rd_clr_load;
392
   assign             wr_clr_outs    = wr_clr;
393
 
394
 
395
   assign             timeout_bus    = {
396
                          timeout_aw,
397
                          timeout_w,
398
                          {timeout_wresp & (~timeout_aw)},
399
                          timeout_ar,
400
                          {timeout_rresp & (~timeout_ar)}
401
                          };
402
 
403
 
404
   assign             clk_en         = ch_active | ch_update | (~outs_empty) | (~rd_wait_ready) | (~wr_wait_ready);
405
 
406
   assign             idle_pre       = !clk_en;
407
   prgen_delay #(1) delay_idle (.clk(clk), .reset(reset), .din(idle_pre), .dout(idle));
408
 
409
   assign             gclk = clk;
410
 
411
 
412
   dma_axi32_core0_ch_reg
413
   dma_axi32_ch_reg (
414
          .clk(pclk),
415
          .clken(clken),
416
          .pclken(pclken),
417
          .reset(reset),
418
          .psel(psel),
419
          .penable(penable),
420
          .paddr(paddr),
421
          .pwrite(pwrite),
422
          .pwdata(pwdata),
423
          .prdata(prdata),
424
          .pslverr(pslverr),
425
 
426
          .timeout_bus(timeout_bus),
427
          .wdt_timeout(wdt_timeout),
428
 
429
          .ch_start(ch_start),
430
          .load_wr(load_wr),
431
          .load_wr_cycle(load_wr_cycle),
432
          .load_wdata(load_wdata),
433
          .load_in_prog(load_in_prog),
434
          .load_req_in_prog(load_req_in_prog),
435
          .rd_ch_end(rd_ch_end),
436
          .wr_ch_end(wr_ch_end),
437
          .wr_clr_last(wr_clr_last),
438
          .rd_slverr(rd_slverr),
439
          .rd_decerr(rd_decerr),
440
          .wr_slverr(wr_slverr),
441
          .wr_decerr(wr_decerr),
442
          .int_all_proc(int_all_proc),
443
          .ch_rd_active(ch_rd_active),
444
          .ch_wr_active(ch_wr_active),
445
          .ch_in_prog(ch_in_prog),
446
          .wr_outstanding(wr_outstanding),
447
          .rd_outstanding(rd_outstanding),
448
          .ch_retry_wait(ch_retry_wait),
449
 
450
          .joint_mode(joint_mode),
451
          .joint_remote(joint_remote),
452
          .joint(joint),
453
          .joint_cross(joint_cross),
454
          .page_cross(page_cross),
455
          .joint_flush(joint_flush),
456
 
457
          .rd_x_offset(rd_x_offset),
458
          .rd_y_offset(rd_y_offset),
459
          .wr_x_offset(wr_x_offset),
460
          .wr_y_offset(wr_y_offset),
461
          .rd_gap(rd_gap),
462
          .wr_fullness(wr_fullness),
463
          .fifo_overflow(fifo_overflow),
464
          .fifo_underflow(fifo_underflow),
465
 
466
          .load_cmd(load_cmd),
467
          .load_addr(load_addr),
468
 
469
          .ch_update(ch_update),
470
          .rd_start_addr(rd_start_addr),
471
          .wr_start_addr(wr_start_addr),
472
          .x_size(x_size),
473
          .y_size(y_size),
474
 
475
          .rd_burst_max_size(rd_burst_max_size),
476
          .wr_burst_max_size(wr_burst_max_size),
477
          .rd_periph_delay(rd_periph_delay),
478
          .wr_periph_delay(wr_periph_delay),
479
          .rd_periph_block(rd_periph_block),
480
          .wr_periph_block(wr_periph_block),
481
          .rd_tokens(rd_tokens),
482
          .wr_tokens(wr_tokens),
483
          .end_swap(end_swap),
484
          .rd_port_num(rd_port_num),
485
          .wr_port_num(wr_port_num),
486
          .rd_outs_max(rd_outs_max),
487
          .wr_outs_max(wr_outs_max),
488
          .rd_outs(rd_outs),
489
          .wr_outs(wr_outs),
490
          .outs_empty(outs_empty),
491
          .rd_wait_limit(rd_wait_limit),
492
          .wr_wait_limit(wr_wait_limit),
493
          .rd_periph_num(rd_periph_num),
494
          .wr_periph_num(wr_periph_num),
495
          .rd_incr(rd_incr),
496
          .wr_incr(wr_incr),
497
          .block(block),
498
          .allow_line_cmd(allow_line_cmd),
499
          .frame_width(frame_width),
500
          .width_align(width_align)
501
          );
502
 
503
 
504
   dma_axi32_core0_ch_offsets
505
   dma_axi32_ch_offsets_rd (
506
             .clk(gclk),
507
             .reset(reset),
508
             .ch_update(ch_update),
509
             .burst_start(rd_burst_start),
510
             .burst_last(rd_burst_last),
511
             .burst_size(rd_burst_size),
512
             .load_req_in_prog(load_req_in_prog),
513
             .x_size(x_size),
514
             .y_size(y_size),
515
             .x_offset(rd_x_offset),
516
             .y_offset(rd_y_offset),
517
             .x_remain(rd_x_remain),
518
             .clr_remain(rd_clr_remain),
519
             .ch_end(rd_ch_end),
520
             .go_next_line(rd_go_next_line),
521
             .incr(rd_incr),
522
             .clr_line(rd_clr_line),
523
             .line_empty(rd_line_empty),
524
             .empty(rd_empty),
525
             .start_align(rd_start_addr[2-1:0]),
526
             .width_align(width_align),
527
             .align(wr_align) //rd address writes to fifo
528
             );
529
 
530
   dma_axi32_core0_ch_offsets
531
   dma_axi32_ch_offsets_wr (
532
             .clk(gclk),
533
             .reset(reset),
534
             .ch_update(ch_update),
535
             .burst_start(wr_burst_start),
536
             .burst_last(wr_burst_last),
537
             .burst_size(wr_burst_size),
538
             .load_req_in_prog(1'b0),
539
             .x_size(x_size),
540
             .y_size(y_size),
541
             .x_offset(wr_x_offset),
542
             .y_offset(wr_y_offset),
543
             .x_remain(wr_x_remain),
544
             .clr_remain(wr_clr_remain),
545
             .ch_end(wr_ch_end),
546
             .go_next_line(wr_go_next_line),
547
             .incr(wr_incr),
548
             .clr_line(wr_clr_line),
549
             .line_empty(wr_line_empty),
550
             .empty(wr_empty),
551
             .start_align(wr_start_addr[2-1:0]),
552
             .width_align(width_align),
553
             .align(rd_align) //wr address reads from fifo
554
             );
555
 
556
 
557
   dma_axi32_core0_ch_remain
558
   dma_axi32_ch_remain (
559
               .clk(gclk),
560
               .reset(reset),
561
               .ch_update(ch_update),
562
               .wr_outstanding(wr_outstanding),
563
               .rd_outstanding(rd_outstanding),
564
               .load_req_in_prog(load_req_in_prog),
565
               .rd_line_cmd(rd_line_cmd),
566
               .rd_burst_start(rd_burst_start),
567
               .rd_burst_size(rd_burst_size),
568
               .rd_transfer(rd_transfer),
569
               .rd_transfer_size(rd_transfer_size),
570
               .wr_clr_line(wr_clr_line),
571
               .wr_burst_start(wr_burst_start),
572
               .wr_burst_size(wr_burst_size),
573
               .wr_transfer(wr_transfer),
574
               .wr_transfer_size(wr_transfer_size),
575
               .rd_gap(rd_gap),
576
               .wr_fullness(wr_fullness)
577
               );
578
 
579
 
580
   dma_axi32_core0_ch_outs dma_axi32_ch_outs_rd(
581
                      .clk(gclk),
582
                      .reset(reset),
583
                      .cmd(rd_cmd_outs),
584
                      .clr(rd_clr_outs),
585
                      .outs_max(rd_outs_max),
586
                      .outs(rd_outs),
587
                      .outs_empty(rd_outs_empty),
588
                      .stall(rd_stall),
589
                      .timeout(timeout_rresp)
590
                      );
591
 
592
   dma_axi32_core0_ch_outs dma_axi32_ch_outs_wr(
593
                      .clk(gclk),
594
                      .reset(reset),
595
                      .cmd(wr_cmd_outs),
596
                      .clr(wr_clr_outs),
597
                      .outs_max(wr_outs_max),
598
                      .outs(wr_outs),
599
                      .outs_empty(wr_outs_empty),
600
                      .stall(wr_stall_pre),
601
                      .timeout(timeout_wresp)
602
                      );
603
 
604
   assign             wr_stall = wr_stall_pre & (~joint_req);
605
 
606
 
607
 
608
   dma_axi32_core0_ch_calc #(.READ(1))
609
   dma_axi32_ch_calc_rd (
610
              .clk(gclk),
611
              .reset(reset),
612
              .wr_cmd_pending(1'b0),
613
              .outs_empty(outs_empty),
614
              .load_in_prog(load_in_prog),
615
              .load_req_in_prog(load_req_in_prog),
616
              .load_addr(load_addr),
617
              .ch_update(ch_update),
618
              .ch_end(rd_ch_end),
619
              .ch_end_flush(1'b0),
620
              .go_next_line(rd_go_next_line),
621
              .burst_start(rd_burst_start),
622
              .burst_last(rd_burst_last),
623
              .burst_max_size(rd_burst_max_size),
624
              .start_addr(rd_start_addr),
625
              .incr(rd_incr),
626
              .frame_width(frame_width),
627
              .x_size(x_size[`X_BITS-1:0]),
628
              .x_remain(rd_x_remain),
629
              .fifo_remain(rd_gap),
630
              .fifo_wr_ready(fifo_wr_ready),
631
              .burst_addr(rd_burst_addr),
632
              .burst_size(rd_burst_size),
633
              .burst_ready(rd_burst_ready),
634
              .single(),
635
              .joint_ready_out(rd_joint_ready),
636
              .joint_ready_in(wr_joint_ready),
637
              .joint_line_req_in(joint_line_req),
638
              .joint_line_req_out(),
639
              .joint_burst_req_in(1'b0),
640
              .joint_burst_req_out(joint_burst_req),
641
              .joint_line_req_clr(wr_clr_d),
642
              .joint(joint),
643
              .page_cross(rd_page_cross),
644
              .joint_cross(joint_cross),
645
              .joint_flush(rd_joint_flush),
646
              .joint_flush_in(joint_flush)
647
              );
648
 
649
 
650
   dma_axi32_core0_ch_calc #(.READ(0))
651
   dma_axi32_ch_calc_wr (
652
              .clk(gclk),
653
              .reset(reset),
654
              .wr_cmd_pending(wr_cmd_pending),
655
              .outs_empty(outs_empty),
656
              .load_in_prog(load_in_prog),
657
              .load_req_in_prog(1'b0),
658
              .load_addr({32{1'b0}}),
659
              .ch_update(ch_update),
660
              .ch_end(wr_ch_end),
661
              .ch_end_flush(rd_ch_end),
662
              .go_next_line(wr_go_next_line),
663
              .burst_start(wr_burst_start),
664
              .burst_last(wr_burst_last),
665
              .burst_max_size(wr_burst_max_size),
666
              .start_addr(wr_start_addr),
667
              .incr(wr_incr),
668
              .frame_width(frame_width),
669
              .x_size(x_size[`X_BITS-1:0]),
670
              .x_remain(wr_x_remain),
671
              .fifo_wr_ready(1'b0),
672
              .fifo_remain(wr_fullness),
673
              .burst_addr(wr_burst_addr),
674
              .burst_size(wr_burst_size),
675
              .burst_ready(wr_burst_ready),
676
              .single(wr_single),
677
              .joint_ready_out(wr_joint_ready),
678
              .joint_ready_in(rd_joint_ready),
679
              .joint_line_req_in(1'b0),
680
              .joint_line_req_out(joint_line_req),
681
              .joint_burst_req_in(joint_burst_req),
682
              .joint_burst_req_out(),
683
              .joint_line_req_clr(rd_clr_d),
684
              .joint(joint),
685
              .page_cross(wr_page_cross),
686
              .joint_cross(joint_cross),
687
              .joint_flush(wr_joint_flush),
688
              .joint_flush_in(joint_flush)
689
              );
690
 
691
 
692
   assign             rd_wait_ready = 1'b1;
693
   assign             wr_wait_ready = 1'b1;
694
 
695
 
696
 
697
   dma_axi32_core0_ch_periph_mux dma_axi32_ch_periph_mux_rd(
698
                              .clk(gclk),
699
                              .reset(reset),
700
                              .clken(clken),
701
                              .periph_req(periph_rx_req),
702
                              .periph_clr(periph_rx_clr),
703
                              .periph_ready(rd_periph_ready),
704
                              .periph_num(rd_periph_num),
705
                              .clr_valid(rd_clr_valid),
706
                              .clr(rd_clr)
707
                              );
708
 
709
 
710
   dma_axi32_core0_ch_periph_mux dma_axi32_ch_periph_mux_wr(
711
                              .clk(gclk),
712
                              .reset(reset),
713
                              .clken(clken),
714
                              .periph_req(periph_tx_req),
715
                              .periph_clr(periph_tx_clr),
716
                              .periph_ready(wr_periph_ready),
717
                              .periph_num(wr_periph_num),
718
                              .clr_valid(wr_clr_valid),
719
                              .clr(wr_clr_mux)
720
                              );
721
 
722
 
723
 
724
   dma_axi32_core0_ch_fifo_ctrl
725
   dma_axi32_ch_fifo_ctrl (
726
            .clk(clk),
727
            .reset(reset),
728
            .end_swap(end_swap),
729
            .joint_in_prog(joint_in_prog),
730
            .wr_outstanding(wr_outstanding),
731
            .ch_update(ch_update),
732
            .fifo_wr(fifo_wr),
733
            .fifo_wdata(fifo_wdata),
734
            .fifo_wsize(fifo_wsize),
735
            .wr_align(wr_align),
736
            .wr_single(wr_single),
737
            .rd_incr(rd_incr),
738
            .fifo_rd(fifo_rd),
739
            .fifo_rsize(fifo_rsize),
740
            .rd_align(rd_align),
741
            .wr_incr(wr_incr),
742
            .wr_burst_size(wr_burst_size),
743
            .rd_clr_line(rd_clr_line),
744
            .wr_clr_line(wr_clr_line),
745
            .wr_next_size(wr_next_size),
746
 
747
            .fifo_rd_valid(fifo_rd_valid),
748
            .fifo_rdata(fifo_rdata),
749
            .fifo_wr_ready(fifo_wr_ready),
750
            .fifo_overflow(fifo_overflow),
751
            .fifo_underflow(fifo_underflow)
752
            );
753
 
754
 
755
 
756
 
757
 
758
endmodule
759
 
760
 

powered by: WebSVN 2.1.0

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