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

Subversion Repositories dma_axi

[/] [dma_axi/] [trunk/] [src/] [dma_axi64/] [dma_axi64_core0_ch.v] - Blame information for rev 4

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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