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

Subversion Repositories nysa_sata

[/] [nysa_sata/] [trunk/] [rtl/] [sata_stack.v] - Blame information for rev 2

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

Line No. Rev Author Line
1 2 cospan
//sata_stack.v
2
/*
3
Distributed under the MIT license.
4
Copyright (c) 2011 Dave McCoy (dave.mccoy@cospandesign.com)
5
 
6
Permission is hereby granted, free of charge, to any person obtaining a copy of
7
this software and associated documentation files (the "Software"), to deal in
8
the Software without restriction, including without limitation the rights to
9
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
10
of the Software, and to permit persons to whom the Software is furnished to do
11
so, subject to the following conditions:
12
 
13
The above copyright notice and this permission notice shall be included in all
14
copies or substantial portions of the Software.
15
 
16
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
SOFTWARE.
23
*/
24
 
25
`include "sata_defines.v"
26
 
27
module sata_stack (
28
  input               rst,            //reset
29
  input               clk,            //clock used to run the stack
30
  input               data_in_clk,
31
  input               data_in_clk_valid,
32
  input               data_out_clk,
33
  input               data_out_clk_valid,
34
 
35
  input               platform_ready,   //the underlying physical platform is
36
  output  wire        linkup,           //link is finished
37
  output              sata_ready,
38
  output              sata_init,
39
 
40
  input               send_sync_escape,
41
  input       [15:0]  user_features,
42
 
43
//User Interface
44
  output              busy,
45
  output              error,
46
 
47
 
48
  input               write_data_en,
49
  input               single_rdwr,
50
  input               read_data_en,
51
 
52
  input               send_user_command_stb,
53
  input               soft_reset_en,
54
  input       [7:0]   command,
55
  output              pio_data_ready,
56
 
57
  input       [15:0]  sector_count,
58
  input       [47:0]  sector_address,
59
 
60
 
61
  output              dma_activate_stb,
62
  output              d2h_reg_stb,
63
  output              pio_setup_stb,
64
  output              d2h_data_stb,
65
  output              dma_setup_stb,
66
  output  wire        set_device_bits_stb,
67
 
68
  output              dbg_send_command_stb,
69
  output              dbg_send_control_stb,
70
  output              dbg_send_data_stb,
71
 
72
  output              d2h_interrupt,
73
  output              d2h_notification,
74
  output      [3:0]   d2h_port_mult,
75
  output      [7:0]   d2h_device,
76
  output      [47:0]  d2h_lba,
77
  output      [15:0]  d2h_sector_count,
78
  output      [7:0]   d2h_status,
79
  output      [7:0]   d2h_error,
80
 
81
  input       [31:0]  user_din,
82
  input               user_din_stb,
83
  output      [1:0]   user_din_ready,
84
  input       [1:0]   user_din_activate,
85
  output      [23:0]  user_din_size,
86
 
87
  output      [31:0]  user_dout,
88
  output              user_dout_ready,
89
  input               user_dout_activate,
90
  input               user_dout_stb,
91
  output      [23:0]  user_dout_size,
92
 
93
 
94
  output              transport_layer_ready,
95
  output              link_layer_ready,
96
  output              phy_ready,
97
 
98
//Buffer
99
//Platform Interface
100
  output  [31:0]      tx_dout,
101
  output              tx_isk,
102
  output              tx_comm_reset,
103
  output              tx_comm_wake,
104
  output              tx_elec_idle,
105
 
106
  input   [31:0]      rx_din,
107
  input   [3:0]       rx_isk,
108
  input               rx_elec_idle,
109
  input               comm_init_detect,
110
  input               comm_wake_detect,
111
  input               rx_byte_is_aligned,
112
 
113
 
114
//Debug
115
  output              dbg_remote_abort,
116
  output              dbg_xmit_error,
117
  output              dbg_read_crc_error,
118
 
119
//PIO
120
  output              dbg_pio_response,
121
  output              dbg_pio_direction,
122
  output  [15:0]      dbg_pio_transfer_count,
123
  output  [7:0]       dbg_pio_e_status,
124
 
125
//Host dbg_ to Device Regster Values
126
  output  [7:0]       dbg_h2d_command,
127
  output  [15:0]      dbg_h2d_features,
128
  output  [7:0]       dbg_h2d_control,
129
  output  [3:0]       dbg_h2d_port_mult,
130
  output  [7:0]       dbg_h2d_device,
131
  output  [47:0]      dbg_h2d_lba,
132
  output  [15:0]      dbg_h2d_sector_count,
133
 
134
//DMA Specific Control
135
 
136
//Data Control
137
  output              dbg_cl_if_ready,
138
  output              dbg_cl_if_activate,
139
  output      [23:0]  dbg_cl_if_size,
140
  output              dbg_cl_if_strobe,
141
  output      [31:0]  dbg_cl_if_data,
142
 
143
  output      [1:0]   dbg_cl_of_ready,
144
  output      [1:0]   dbg_cl_of_activate,
145
  output              dbg_cl_of_strobe,
146
  output      [31:0]  dbg_cl_of_data,
147
  output      [23:0]  dbg_cl_of_size,
148
 
149
  output      [3:0]   dbg_cc_lax_state,
150
  output      [3:0]   dbg_cr_lax_state,
151
  output      [3:0]   dbg_cw_lax_state,
152
 
153
  output      [3:0]   dbg_t_lax_state,
154
 
155
  output      [3:0]   dbg_li_lax_state,
156
  output      [3:0]   dbg_lr_lax_state,
157
  output      [3:0]   dbg_lw_lax_state,
158
  output      [3:0]   dbg_lw_lax_fstate,
159
 
160
//Link Layer
161
  input               prim_scrambler_en,
162
  input               data_scrambler_en,
163
 
164
  output              dbg_ll_write_ready,
165
  output              dbg_ll_paw,
166
  output              dbg_ll_write_start,
167
  output              dbg_ll_write_strobe,
168
  output              dbg_ll_write_finished,
169
  output       [31:0] dbg_ll_write_data,
170
  output       [31:0] dbg_ll_write_size,
171
  output              dbg_ll_write_hold,
172
  output              dbg_ll_write_abort,
173
 
174
  output              dbg_ll_read_start,
175
  output              dbg_ll_read_strobe,
176
  output      [31:0]  dbg_ll_read_data,
177
  output              dbg_ll_read_ready,
178
  output              dbg_ll_read_finished,
179
  output              dbg_ll_remote_abort,
180
  output              dbg_ll_xmit_error,
181
 
182
  output              dbg_ll_send_crc,
183
 
184
//Phy Layer
185
  output      [3:0]   lax_state,
186
 
187
//Primative Detection
188
  output              dbg_detect_sync,
189
  output              dbg_detect_r_rdy,
190
  output              dbg_detect_r_ip,
191
  output              dbg_detect_r_ok,
192
  output              dbg_detect_r_err,
193
  output              dbg_detect_x_rdy,
194
  output              dbg_detect_sof,
195
  output              dbg_detect_eof,
196
  output              dbg_detect_wtrm,
197
  output              dbg_detect_cont,
198
  output              dbg_detect_hold,
199
  output              dbg_detect_holda,
200
  output              dbg_detect_align,
201
  output              dbg_detect_preq_s,
202
  output              dbg_detect_preq_p,
203
  output              dbg_detect_xrdy_xrdy,
204
 
205
  output              dbg_send_holda,
206
 
207
  output      [23:0]  slw_in_data_addra,
208
  output      [12:0]  slw_d_count,
209
  output      [12:0]  slw_write_count,
210
  output      [3:0]   slw_buffer_pos
211
);
212
 
213
//Parameters
214
//Registers/Wires
215
 
216
//Command Layer
217
wire                send_command_stb;
218
wire                send_control_stb;
219
wire                send_data_stb;
220
 
221
wire                if_strobe;
222
wire        [31:0]  if_data;
223
wire                if_ready;
224
wire                if_activate;
225
wire        [23:0]  if_size;
226
 
227
wire                of_strobe;
228
wire        [31:0]  of_data;
229
wire        [1:0]   of_ready;
230
wire        [1:0]   of_activate;
231
wire        [23:0]  of_size;
232
 
233
 
234
//Link Layer
235
wire                ll_sync_escape;
236
wire                ll_write_start;
237
wire                ll_write_strobe;
238
wire                ll_write_finished;
239
wire        [31:0]  ll_write_data;
240
wire        [31:0]  ll_write_size;
241
wire                ll_write_hold;
242
wire                ll_write_abort;
243
 
244
 
245
wire                ll_read_ready;
246
wire                ll_read_start;
247
wire                ll_read_strobe;
248
wire        [31:0]  ll_read_data;
249
wire                ll_read_finished;
250
wire                ll_read_crc_ok;
251
wire                ll_remote_abort;
252
wire                ll_xmit_error;
253
 
254
wire        [31:0]  ll_tx_dout;
255
wire                ll_tx_isk;
256
 
257
//Phy Layer
258
wire        [31:0]  phy_tx_dout;
259
wire                phy_tx_isk;
260
 
261
//User Interface state machine
262
 
263
//Transport Layer
264
wire                sync_escape;
265
 
266
wire        [7:0]   h2d_command;
267
wire        [15:0]  h2d_features;
268
wire        [7:0]   h2d_control;
269
wire        [3:0]   h2d_port_mult;
270
wire        [7:0]   h2d_device;
271
wire        [47:0]  h2d_lba;
272
wire        [15:0]  h2d_sector_count;
273
 
274
 
275
wire                remote_abort;
276
wire                xmit_error;
277
wire                read_crc_error;
278
 
279
//PIO
280
wire                pio_response;
281
wire                pio_direction;
282
wire        [15:0]  pio_transfer_count;
283
wire        [7:0]   pio_e_status;
284
 
285
//Data Control
286
wire                cl_if_ready;
287
wire                cl_if_activate;
288
wire        [23:0]  cl_if_size;
289
wire                cl_if_strobe;
290
wire        [31:0]  cl_if_data;
291
 
292
wire        [1:0]   cl_of_ready;
293
wire        [1:0]   cl_of_activate;
294
wire                cl_of_strobe;
295
wire        [31:0]  cl_of_data;
296
wire        [23:0]  cl_of_size;
297
 
298
 
299
//Link Layer Interface
300
wire                t_sync_escape;
301
wire                t_write_start;
302
wire                t_write_strobe;
303
wire                t_write_finished;
304
wire        [31:0]  t_write_data;
305
wire        [31:0]  t_write_size;
306
wire                t_write_hold;
307
wire                t_write_abort;
308
wire                t_xmit_error;
309
 
310
wire                t_read_start;
311
wire                t_read_ready;
312
wire        [31:0]  t_read_data;
313
wire                t_read_strobe;
314
wire                t_read_finished;
315
wire                t_read_crc_ok;
316
wire                t_remote_abort;
317
 
318
//Comand Layer registers
319
 
320
//Submodules
321
sata_command_layer scl (
322
  .rst                  (rst                      ),
323
  .linkup               (linkup                   ),
324
  .clk                  (clk                      ),
325
  .data_in_clk          (data_in_clk              ),
326
  .data_in_clk_valid    (data_in_clk_valid        ),
327
  .data_out_clk         (data_out_clk             ),
328
  .data_out_clk_valid   (data_out_clk_valid       ),
329
 
330
  //Application Interface
331
  .sata_init            (sata_init                ),
332
  .command_layer_ready  (sata_ready               ),
333
  .busy                 (busy                     ),
334
  .dev_error            (error                    ),
335
  .send_sync_escape     (send_sync_escape         ),
336
  .user_features        (user_features            ),
337
 
338
  .write_data_en        (write_data_en            ),
339
  .single_rdwr          (single_rdwr              ),
340
  .read_data_en         (read_data_en             ),
341
 
342
  .send_user_command_stb(send_user_command_stb    ),
343
  .soft_reset_en        (soft_reset_en            ),
344
  .command              (command                  ),
345
  .pio_data_ready       (pio_data_ready           ),
346
 
347
  .sector_count         (sector_count             ),
348
  .sector_address       (sector_address           ),
349
 
350
  .user_din             (user_din                 ),
351
  .user_din_stb         (user_din_stb             ),
352
  .user_din_ready       (user_din_ready           ),
353
  .user_din_activate    (user_din_activate        ),
354
  .user_din_size        (user_din_size            ),
355
 
356
  .user_dout            (user_dout                ),
357
  .user_dout_ready      (user_dout_ready          ),
358
  .user_dout_activate   (user_dout_activate       ),
359
  .user_dout_stb        (user_dout_stb            ),
360
  .user_dout_size       (user_dout_size           ),
361
 
362
  //Transfer Layer Interface
363
  .transport_layer_ready(transport_layer_ready    ),
364
  .sync_escape          (sync_escape              ),
365
 
366
  .t_send_command_stb   (send_command_stb         ),
367
  .t_send_control_stb   (send_control_stb         ),
368
  .t_send_data_stb      (send_data_stb            ),
369
 
370
  .t_dma_activate_stb   (dma_activate_stb         ),
371
  .t_d2h_reg_stb        (d2h_reg_stb              ),
372
  .t_pio_setup_stb      (pio_setup_stb            ),
373
  .t_d2h_data_stb       (d2h_data_stb             ),
374
  .t_dma_setup_stb      (dma_setup_stb            ),
375
  .t_set_device_bits_stb(set_device_bits_stb      ),
376
 
377
  .t_remote_abort       (remote_abort             ),
378
  .t_xmit_error         (xmit_error               ),
379
  .t_read_crc_error     (read_crc_error           ),
380
 
381
 
382
  //PIO
383
  .t_pio_response       (pio_response             ),
384
  .t_pio_direction      (pio_direction            ),
385
  .t_pio_transfer_count (pio_transfer_count       ),
386
  .t_pio_e_status       (pio_e_status             ),
387
 
388
  //Host to Device Register Values
389
  .h2d_command          (h2d_command              ),
390
  .h2d_features         (h2d_features             ),
391
  .h2d_control          (h2d_control              ),
392
  .h2d_port_mult        (h2d_port_mult            ),
393
  .h2d_device           (h2d_device               ),
394
  .h2d_lba              (h2d_lba                  ),
395
  .h2d_sector_count     (h2d_sector_count         ),
396
 
397
  //Device to Host Register Values
398
  .d2h_interrupt        (d2h_interrupt            ),
399
  .d2h_notification     (d2h_notification         ),
400
  .d2h_port_mult        (d2h_port_mult            ),
401
  .d2h_device           (d2h_device               ),
402
  .d2h_lba              (d2h_lba                  ),
403
  .d2h_sector_count     (d2h_sector_count         ),
404
  .d2h_status           (d2h_status               ),
405
  .d2h_error            (d2h_error                ),
406
 
407
  //command layer data interface
408
  .t_if_strobe          (if_strobe                ),
409
  .t_if_data            (if_data                  ),
410
  .t_if_ready           (if_ready                 ),
411
  .t_if_activate        (if_activate              ),
412
  .t_if_size            (if_size                  ),
413
 
414
  .t_of_strobe          (of_strobe                ),
415
  .t_of_data            (of_data                  ),
416
  .t_of_ready           (of_ready                 ),
417
  .t_of_activate        (of_activate              ),
418
  .t_of_size            (of_size                  ),
419
 
420
  .cl_c_state           (dbg_cc_lax_state         ),
421
  .cl_r_state           (dbg_cr_lax_state         ),
422
  .cl_w_state           (dbg_cw_lax_state         )
423
 
424
 
425
 
426
);
427
 
428
 
429
 
430
//Transport Layer
431
sata_transport_layer stl (
432
  .rst                    (rst  | !linkup         ),
433
  .clk                    (clk                    ),
434
  .phy_ready              (phy_ready              ),
435
 
436
  //Status
437
  .transport_layer_ready  (transport_layer_ready  ),
438
  .sync_escape            (sync_escape            ),
439
 
440
  .send_command_stb       (send_command_stb       ),
441
  .send_control_stb       (send_control_stb       ),
442
  .send_data_stb          (send_data_stb          ),
443
 
444
  .dma_activate_stb       (dma_activate_stb       ),
445
  .d2h_reg_stb            (d2h_reg_stb            ),
446
  .pio_setup_stb          (pio_setup_stb          ),
447
  .d2h_data_stb           (d2h_data_stb           ),
448
  .dma_setup_stb          (dma_setup_stb          ),
449
  .set_device_bits_stb    (set_device_bits_stb    ),
450
 
451
  .remote_abort           (remote_abort           ),
452
  .xmit_error             (xmit_error             ),
453
  .read_crc_error         (read_crc_error         ),
454
 
455
  //PIO
456
  .pio_response           (pio_response           ),
457
  .pio_direction          (pio_direction          ),
458
  .pio_transfer_count     (pio_transfer_count     ),
459
  .pio_e_status           (pio_e_status           ),
460
 
461
  //Host to Device Register Values
462
  .h2d_command            (h2d_command            ),
463
  .h2d_features           (h2d_features           ),
464
  .h2d_control            (h2d_control            ),
465
  .h2d_port_mult          (h2d_port_mult          ),
466
  .h2d_device             (h2d_device             ),
467
  .h2d_lba                (h2d_lba                ),
468
  .h2d_sector_count       (h2d_sector_count       ),
469
 
470
  //Device to Host Register Values
471
  .d2h_interrupt          (d2h_interrupt          ),
472
  .d2h_notification       (d2h_notification       ),
473
  .d2h_port_mult          (d2h_port_mult          ),
474
  .d2h_device             (d2h_device             ),
475
  .d2h_lba                (d2h_lba                ),
476
  .d2h_sector_count       (d2h_sector_count       ),
477
  .d2h_status             (d2h_status             ),
478
  .d2h_error              (d2h_error              ),
479
 
480
  //command layer data interface
481
  .cl_if_ready            (cl_if_ready            ),
482
  .cl_if_activate         (cl_if_activate         ),
483
  .cl_if_size             (cl_if_size             ),
484
  .cl_if_strobe           (cl_if_strobe           ),
485
  .cl_if_data             (cl_if_data             ),
486
 
487
  .cl_of_ready            (cl_of_ready            ),
488
  .cl_of_activate         (cl_of_activate         ),
489
  .cl_of_strobe           (cl_of_strobe           ),
490
  .cl_of_data             (cl_of_data             ),
491
  .cl_of_size             (cl_of_size             ),
492
 
493
 
494
  //Link Layer Interface
495
  .link_layer_ready       (link_layer_ready       ),
496
  .ll_sync_escape         (t_sync_escape          ),
497
 
498
  .ll_write_start         (t_write_start          ),
499
  .ll_write_strobe        (t_write_strobe         ),
500
  .ll_write_finished      (t_write_finished       ),
501
  .ll_write_data          (t_write_data           ),
502
  .ll_write_size          (t_write_size           ),
503
  .ll_write_hold          (t_write_hold           ),
504
  .ll_write_abort         (t_write_abort          ),
505
  .ll_xmit_error          (t_xmit_error           ),
506
 
507
  .ll_read_start          (t_read_start           ),
508
  .ll_read_ready          (t_read_ready           ),
509
  .ll_read_data           (t_read_data            ),
510
  .ll_read_strobe         (t_read_strobe          ),
511
  .ll_read_finished       (t_read_finished        ),
512
  .ll_read_crc_ok         (t_read_crc_ok          ),
513
  .ll_remote_abort        (t_remote_abort         ),
514
 
515
  .lax_state              (dbg_t_lax_state        )
516
 
517
);
518
 
519
sata_link_layer sll(
520
  .rst                    (rst  | !linkup         ),
521
  .clk                    (clk                    ),
522
 
523
  //Status
524
  .link_layer_ready       (link_layer_ready       ),
525
  .sync_escape            (ll_sync_escape         ),
526
  .write_ready            (dbg_ll_write_ready     ),
527
  .post_align_write       (dbg_ll_paw             ),
528
  .hold                   (1'b0                   ),
529
 
530
  //Transport Layer Interface
531
  .write_start            (ll_write_start         ),
532
  .write_strobe           (ll_write_strobe        ),
533
  .write_finished         (ll_write_finished      ),
534
  .write_data             (ll_write_data          ),
535
  .write_size             (ll_write_size          ),
536
  .write_hold             (ll_write_hold          ),
537
  .write_abort            (ll_write_abort         ),
538
 
539
  .read_data              (ll_read_data           ),
540
  .read_strobe            (ll_read_strobe         ),
541
  .read_ready             (ll_read_ready          ),
542
  .read_start             (ll_read_start          ),
543
  .read_finished          (ll_read_finished       ),
544
  .remote_abort           (ll_remote_abort        ),
545
  .xmit_error             (ll_xmit_error          ),
546
  .read_crc_ok            (ll_read_crc_ok         ),
547
 
548
  .prim_scrambler_en      (prim_scrambler_en      ),
549
  .data_scrambler_en      (data_scrambler_en      ),
550
 
551
   //Phy Layer
552
  .phy_ready              (phy_ready              ),
553
  .platform_ready         (platform_ready         ),
554
  .tx_dout                (ll_tx_dout             ),
555
  .tx_isk                 (ll_tx_isk              ),
556
 
557
  .rx_din                 (rx_din                 ),
558
  .rx_isk                 (rx_isk                 ),
559
  .is_device              (1'b0                   ),
560
 
561
//Primative Detection
562
  .detect_sync            (dbg_detect_sync        ),
563
  .detect_r_rdy           (dbg_detect_r_rdy       ),
564
  .detect_r_ip            (dbg_detect_r_ip        ),
565
  .detect_r_ok            (dbg_detect_r_ok        ),
566
  .detect_r_err           (dbg_detect_r_err       ),
567
  .detect_x_rdy           (dbg_detect_x_rdy       ),
568
  .detect_sof             (dbg_detect_sof         ),
569
  .detect_eof             (dbg_detect_eof         ),
570
  .detect_wtrm            (dbg_detect_wtrm        ),
571
  .detect_cont            (dbg_detect_cont        ),
572
  .detect_hold            (dbg_detect_hold        ),
573
  .detect_holda           (dbg_detect_holda       ),
574
  .detect_align           (dbg_detect_align       ),
575
  .detect_preq_s          (dbg_detect_preq_s      ),
576
  .detect_preq_p          (dbg_detect_preq_p      ),
577
  .detect_xrdy_xrdy       (dbg_detect_xrdy_xrdy   ),
578
 
579
  .dbg_send_holda         (dbg_send_holda         ),
580
 
581
  .send_crc               (dbg_ll_send_crc        ),
582
 
583
 
584
  .lax_i_state            (dbg_li_lax_state       ),
585
  .lax_r_state            (dbg_lr_lax_state       ),
586
  .lax_w_state            (dbg_lw_lax_state       ),
587
  .lax_w_fstate           (dbg_lw_lax_fstate      ),
588
 
589
 
590
  .in_data_addra          (slw_in_data_addra      ),
591
  .d_count                (slw_d_count            ),
592
  .write_count            (slw_write_count        ),
593
  .buffer_pos             (slw_buffer_pos         )
594
 
595
 
596
 
597
 
598
);
599
 
600
sata_phy_layer phy (
601
  .rst                    (rst                    ),
602
  .clk                    (clk                    ),
603
 
604
  //Control/Status
605
  .platform_ready         (platform_ready         ),
606
  .linkup                 (linkup                 ),
607
 
608
  //Platform Interface
609
  .tx_dout                (phy_tx_dout            ),
610
  .tx_isk                 (phy_tx_isk             ),
611
  .tx_comm_reset          (tx_comm_reset          ),
612
  .tx_comm_wake           (tx_comm_wake           ),
613
  .tx_elec_idle           (tx_elec_idle           ),
614
 
615
  .rx_din                 (rx_din                 ),
616
  .rx_isk                 (rx_isk                 ),
617
  .comm_init_detect       (comm_init_detect       ),
618
  .comm_wake_detect       (comm_wake_detect       ),
619
  .rx_elec_idle           (rx_elec_idle           ),
620
  .rx_byte_is_aligned     (rx_byte_is_aligned     ),
621
 
622
  .lax_state              (lax_state              ),
623
  .phy_ready              (phy_ready              )
624
);
625
 
626
 
627
 
628
//Asynchronous Logic
629
 
630
//control of data to the platform controller
631
assign                tx_dout     = (phy_ready) ? ll_tx_dout  : phy_tx_dout;
632
assign                tx_isk      = (phy_ready) ? ll_tx_isk   : phy_tx_isk;
633
 
634
  //no activity on the stack
635
 
636
//Debug
637
assign                ll_write_start        = t_write_start;
638
assign                dbg_ll_write_start    = t_write_start;
639
assign                ll_write_data         = t_write_data;
640
assign                dbg_ll_write_data     = t_write_data;
641
assign                ll_write_hold         = t_write_hold;
642
assign                dbg_ll_write_hold     = t_write_hold;
643
assign                ll_write_size         = t_write_size;
644
assign                dbg_ll_write_size     = t_write_size;
645
assign                ll_write_abort        = t_write_abort;
646
assign                dbg_ll_write_abort    = t_write_abort;
647
 
648
assign                ll_read_ready         = t_read_ready;
649
assign                dbg_ll_read_ready     = t_read_ready;
650
assign                ll_sync_escape        = t_sync_escape;
651
 
652
assign                dbg_ll_write_strobe   = ll_write_strobe;
653
assign                t_write_strobe        = ll_write_strobe;
654
 
655
assign                dbg_ll_write_finished = ll_write_finished;
656
assign                t_write_finished      = ll_write_finished;
657
 
658
 
659
assign                dbg_ll_read_strobe    = ll_read_strobe;
660
assign                dbg_ll_read_start     = ll_read_start;
661
assign                dbg_ll_read_finished  = ll_read_finished;
662
assign                dbg_ll_read_data      = ll_read_data;
663
assign                dbg_ll_remote_abort   = ll_remote_abort;
664
assign                dbg_ll_xmit_error     = ll_xmit_error;
665
 
666
assign                t_read_strobe         = ll_read_strobe;
667
assign                t_read_start          = ll_read_start;
668
assign                t_read_finished       = ll_read_finished;
669
assign                t_read_data           = ll_read_data;
670
assign                t_remote_abort        = ll_remote_abort;
671
assign                t_xmit_error          = ll_xmit_error;
672
assign                t_read_crc_ok         = ll_read_crc_ok;
673
 
674
assign                dbg_send_command_stb  = send_command_stb;
675
assign                dbg_send_control_stb  = send_control_stb;
676
assign                dbg_send_data_stb     = send_data_stb;
677
 
678
assign                dbg_remote_abort        = remote_abort;
679
assign                dbg_xmit_error          = xmit_error;
680
assign                dbg_read_crc_error      = read_crc_error;
681
 
682
assign                dbg_h2d_command         = h2d_command;
683
assign                dbg_h2d_features        = h2d_features;
684
assign                dbg_h2d_control         = h2d_control;
685
assign                dbg_h2d_port_mult       = h2d_port_mult;
686
assign                dbg_h2d_device          = h2d_device;
687
assign                dbg_h2d_sector_count    = h2d_sector_count;
688
 
689
 
690
assign                cl_if_ready             = if_ready;
691
assign                dbg_cl_if_activate      = cl_if_activate;
692
assign                if_activate             = cl_if_activate;
693
assign                dbg_cl_if_size          = if_size;
694
assign                cl_if_size              = if_size;
695
assign                dbg_cl_if_strobe        = cl_if_strobe;
696
assign                if_strobe               = cl_if_strobe;
697
assign                dbg_cl_if_data          = if_data;
698
assign                cl_if_data              = if_data;
699
 
700
assign                cl_of_ready             = of_ready;
701
assign                dbg_cl_of_ready         = of_ready;
702
assign                of_activate             = cl_of_activate;
703
assign                dbg_cl_of_activate      = cl_of_activate;
704
assign                of_strobe               = cl_of_strobe;
705
assign                dbg_cl_of_strobe        = cl_of_strobe;
706
assign                of_data                 = cl_of_data;
707
assign                dbg_cl_of_data          = cl_of_data;
708
assign                cl_of_size              = of_size;
709
assign                dbg_cl_of_size          = of_size;
710
 
711
 
712
 
713
//Synchronous Logic
714
endmodule

powered by: WebSVN 2.1.0

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