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

Subversion Repositories pcie_ds_dma

[/] [pcie_ds_dma/] [trunk/] [core/] [ds_dma64/] [pcie_src/] [pcie_core64_m1/] [source_artix7/] [cl_a7pcie_x4_pipe_user.v] - Blame information for rev 46

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

Line No. Rev Author Line
1 46 dsmv
//-----------------------------------------------------------------------------
2
//
3
// (c) Copyright 2010-2011 Xilinx, Inc. All rights reserved.
4
//
5
// This file contains confidential and proprietary information
6
// of Xilinx, Inc. and is protected under U.S. and
7
// international copyright and other intellectual property
8
// laws.
9
//
10
// DISCLAIMER
11
// This disclaimer is not a license and does not grant any
12
// rights to the materials distributed herewith. Except as
13
// otherwise provided in a valid license issued to you by
14
// Xilinx, and to the maximum extent permitted by applicable
15
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
16
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
17
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
18
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
19
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
20
// (2) Xilinx shall not be liable (whether in contract or tort,
21
// including negligence, or under any other theory of
22
// liability) for any loss or damage of any kind or nature
23
// related to, arising under or in connection with these
24
// materials, including for any direct, or any indirect,
25
// special, incidental, or consequential loss or damage
26
// (including loss of data, profits, goodwill, or any type of
27
// loss or damage suffered as a result of any action brought
28
// by a third party) even if such damage or loss was
29
// reasonably foreseeable or Xilinx had been advised of the
30
// possibility of the same.
31
//
32
// CRITICAL APPLICATIONS
33
// Xilinx products are not designed or intended to be fail-
34
// safe, or for use in any application requiring fail-safe
35
// performance, such as life-support or safety devices or
36
// systems, Class III medical devices, nuclear facilities,
37
// applications related to the deployment of airbags, or any
38
// other applications that could lead to death, personal
39
// injury, or severe property or environmental damage
40
// (individually and collectively, "Critical
41
// Applications"). Customer assumes the sole risk and
42
// liability of any use of Xilinx products in Critical
43
// Applications, subject only to applicable laws and
44
// regulations governing limitations on product liability.
45
//
46
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
47
// PART OF THIS FILE AT ALL TIMES.
48
//
49
//-----------------------------------------------------------------------------
50
// Project    : Series-7 Integrated Block for PCI Express
51
// File       : cl_a7pcie_x4_pipe_user.v
52
// Version    : 1.9
53
//------------------------------------------------------------------------------
54
//  Filename     :  pipe_user.v
55
//  Description  :  PIPE User Module for 7 Series Transceiver
56
//  Version      :  15.3.3
57
//------------------------------------------------------------------------------
58
 
59
 
60
 
61
`timescale 1ns / 1ps
62
 
63
 
64
 
65
//---------- PIPE User Module --------------------------------------------------
66
module cl_a7pcie_x4_pipe_user #
67
(
68
 
69
    parameter PCIE_SIM_MODE    = "FALSE",                   // PCIe sim mode 
70
    parameter PCIE_USE_MODE    = "3.0",                     // PCIe sim version
71
    parameter PCIE_OOBCLK_MODE = 1,                         // PCIe OOB clock mode
72
    parameter RXCDRLOCK_MAX    = 4'd15,                     // RXCDRLOCK max count
73
    parameter RXVALID_MAX      = 4'd15,                     // RXVALID max count
74
    parameter CONVERGE_MAX     = 22'd3125000                // Convergence max count
75
 
76
)
77
 
78
(
79
 
80
    //---------- Input -------------------------------------
81
    input               USER_TXUSRCLK,
82
    input               USER_RXUSRCLK,
83
    input               USER_OOBCLK_IN,
84
    input               USER_RST_N,
85
    input               USER_RXUSRCLK_RST_N,
86
    input               USER_PCLK_SEL,
87
    input               USER_RESETOVRD_START,
88
    input               USER_TXRESETDONE,
89
    input               USER_RXRESETDONE,
90
    input               USER_TXELECIDLE,
91
    input               USER_TXCOMPLIANCE,
92
    input               USER_RXCDRLOCK_IN,
93
    input               USER_RXVALID_IN,
94
    input               USER_RXSTATUS_IN,
95
    input               USER_PHYSTATUS_IN,
96
    input               USER_RATE_DONE,
97
    input               USER_RST_IDLE,
98
    input               USER_RATE_RXSYNC,
99
    input               USER_RATE_IDLE,
100
    input               USER_RATE_GEN3,
101
    input               USER_RXEQ_ADAPT_DONE,
102
 
103
    //---------- Output ------------------------------------
104
    output              USER_OOBCLK,
105
    output              USER_RESETOVRD,
106
    output              USER_TXPMARESET,
107
    output              USER_RXPMARESET,
108
    output              USER_RXCDRRESET,
109
    output              USER_RXCDRFREQRESET,
110
    output              USER_RXDFELPMRESET,
111
    output              USER_EYESCANRESET,
112
    output              USER_TXPCSRESET,
113
    output              USER_RXPCSRESET,
114
    output              USER_RXBUFRESET,
115
    output              USER_RESETOVRD_DONE,
116
    output              USER_RESETDONE,
117
    output              USER_ACTIVE_LANE,
118
    output              USER_RXCDRLOCK_OUT,
119
    output              USER_RXVALID_OUT,
120
    output              USER_PHYSTATUS_OUT,
121
    output              USER_PHYSTATUS_RST,
122
    output              USER_GEN3_RDY,
123
    output              USER_RX_CONVERGE
124
 
125
);
126
 
127
    //---------- Input Registers ---------------------------   
128
    reg                 pclk_sel_reg1;
129
    reg                 resetovrd_start_reg1;
130
    reg                 txresetdone_reg1;
131
    reg                 rxresetdone_reg1;
132
    reg                 txelecidle_reg1;
133
    reg                 txcompliance_reg1;
134
    reg                 rxcdrlock_reg1;
135
    reg                 rxvalid_reg1;
136
    reg                 rxstatus_reg1;
137
    reg                 rate_done_reg1;
138
    reg                 rst_idle_reg1;
139
    reg                 rate_rxsync_reg1;
140
    reg                 rate_idle_reg1;
141
    reg                 rate_gen3_reg1;
142
    reg                 rxeq_adapt_done_reg1;
143
 
144
    reg                 pclk_sel_reg2;
145
    reg                 resetovrd_start_reg2;
146
    reg                 txresetdone_reg2;
147
    reg                 rxresetdone_reg2;
148
    reg                 txelecidle_reg2;
149
    reg                 txcompliance_reg2;
150
          reg                   rxcdrlock_reg2;
151
    reg                 rxvalid_reg2;
152
    reg                 rxstatus_reg2;
153
    reg                 rate_done_reg2;
154
    reg                 rst_idle_reg2;
155
    reg                 rate_rxsync_reg2;
156
    reg                 rate_idle_reg2;
157
    reg                 rate_gen3_reg2;
158
    reg                 rxeq_adapt_done_reg2;
159
 
160
    //---------- Internal Signal ---------------------------
161
    reg         [ 1:0]  oobclk_cnt    =  2'd0;
162
    reg         [ 7:0]  reset_cnt     =  8'd127;
163
    reg         [ 3:0]  rxcdrlock_cnt =  4'd0;
164
    reg         [ 3:0]  rxvalid_cnt   =  4'd0;
165
    reg         [21:0]  converge_cnt  = 22'd0;
166
    reg                 converge_gen3 =  1'd0;
167
 
168
    //---------- Output Registers --------------------------
169
    reg                 oobclk   = 1'd0;
170
    reg         [ 7:0]  reset    = 8'h00;
171
    reg                 gen3_rdy = 1'd0;
172
    reg         [ 1:0]  fsm      = 2'd0;
173
 
174
    //---------- FSM ---------------------------------------                                         
175
    localparam          FSM_IDLE       = 2'd0;
176
    localparam          FSM_RESETOVRD  = 2'd1;
177
    localparam          FSM_RESET_INIT = 2'd2;
178
    localparam          FSM_RESET      = 2'd3;
179
 
180
    //---------- Simulation Speedup ------------------------
181
    localparam converge_max_cnt = (PCIE_SIM_MODE == "TRUE") ? 22'd100 : CONVERGE_MAX;
182
 
183
 
184
 
185
//---------- Input FF ----------------------------------------------------------
186
always @ (posedge USER_TXUSRCLK)
187
begin
188
 
189
    if (!USER_RST_N)
190
        begin
191
        //---------- 1st Stage FF --------------------------  
192
        pclk_sel_reg1        <= 1'd0;
193
        resetovrd_start_reg1 <= 1'd0;
194
        txresetdone_reg1     <= 1'd0;
195
        rxresetdone_reg1     <= 1'd0;
196
        txelecidle_reg1      <= 1'd0;
197
        txcompliance_reg1    <= 1'd0;
198
        rxcdrlock_reg1       <= 1'd0;
199
        rxeq_adapt_done_reg1 <= 1'd0;
200
        //---------- 2nd Stage FF --------------------------
201
        pclk_sel_reg2        <= 1'd0;
202
        resetovrd_start_reg2 <= 1'd0;
203
        txresetdone_reg2     <= 1'd0;
204
        rxresetdone_reg2     <= 1'd0;
205
        txelecidle_reg2      <= 1'd0;
206
        txcompliance_reg2    <= 1'd0;
207
        rxcdrlock_reg2       <= 1'd0;
208
        rxeq_adapt_done_reg2 <= 1'd0;
209
        end
210
    else
211
        begin
212
        //---------- 1st Stage FF --------------------------
213
        pclk_sel_reg1        <= USER_PCLK_SEL;
214
        resetovrd_start_reg1 <= USER_RESETOVRD_START;
215
        txresetdone_reg1     <= USER_TXRESETDONE;
216
        rxresetdone_reg1     <= USER_RXRESETDONE;
217
        txelecidle_reg1      <= USER_TXELECIDLE;
218
        txcompliance_reg1    <= USER_TXCOMPLIANCE;
219
        rxcdrlock_reg1       <= USER_RXCDRLOCK_IN;
220
        rxeq_adapt_done_reg1 <= USER_RXEQ_ADAPT_DONE;
221
        //---------- 2nd Stage FF --------------------------
222
        pclk_sel_reg2        <= pclk_sel_reg1;
223
        resetovrd_start_reg2 <= resetovrd_start_reg1;
224
        txresetdone_reg2     <= txresetdone_reg1;
225
        rxresetdone_reg2     <= rxresetdone_reg1;
226
        txelecidle_reg2      <= txelecidle_reg1;
227
        txcompliance_reg2    <= txcompliance_reg1;
228
        rxcdrlock_reg2       <= rxcdrlock_reg1;
229
        rxeq_adapt_done_reg2 <= rxeq_adapt_done_reg1;
230
        end
231
 
232
end
233
 
234
 
235
 
236
//---------- Input FF ----------------------------------------------------------
237
always @ (posedge USER_RXUSRCLK)
238
begin
239
 
240
    if (!USER_RXUSRCLK_RST_N)
241
        begin
242
        //---------- 1st Stage FF --------------------------   
243
        rxvalid_reg1     <= 1'd0;
244
        rxstatus_reg1    <= 1'd0;
245
        rst_idle_reg1    <= 1'd0;
246
        rate_done_reg1   <= 1'd0;
247
        rate_rxsync_reg1 <= 1'd0;
248
        rate_idle_reg1   <= 1'd0;
249
        rate_gen3_reg1   <= 1'd0;
250
        //---------- 2nd Stage FF --------------------------
251
        rxvalid_reg2     <= 1'd0;
252
        rxstatus_reg2    <= 1'd0;
253
        rst_idle_reg2    <= 1'd0;
254
        rate_done_reg2   <= 1'd0;
255
        rate_rxsync_reg2 <= 1'd0;
256
        rate_idle_reg2   <= 1'd0;
257
        rate_gen3_reg2   <= 1'd0;
258
        end
259
    else
260
        begin
261
        //---------- 1st Stage FF --------------------------
262
        rxvalid_reg1     <= USER_RXVALID_IN;
263
        rxstatus_reg1    <= USER_RXSTATUS_IN;
264
        rst_idle_reg1    <= USER_RST_IDLE;
265
        rate_done_reg1   <= USER_RATE_DONE;
266
        rate_rxsync_reg1 <= USER_RATE_RXSYNC;
267
        rate_idle_reg1   <= USER_RATE_IDLE;
268
        rate_gen3_reg1   <= USER_RATE_GEN3;
269
        //---------- 2nd Stage FF --------------------------       
270
        rxvalid_reg2     <= rxvalid_reg1;
271
        rxstatus_reg2    <= rxstatus_reg1;
272
        rst_idle_reg2    <= rst_idle_reg1;
273
        rate_done_reg2   <= rate_done_reg1;
274
        rate_rxsync_reg2 <= rate_rxsync_reg1;
275
        rate_idle_reg2   <= rate_idle_reg1;
276
        rate_gen3_reg2   <= rate_gen3_reg1;
277
        end
278
 
279
end
280
 
281
 
282
 
283
//---------- Generate Reset Override -------------------------------------------
284
generate if (PCIE_USE_MODE == "1.0")
285
 
286
    begin : resetovrd
287
 
288
    //---------- Reset Counter -------------------------------------------------
289
    always @ (posedge USER_TXUSRCLK)
290
    begin
291
 
292
        if (!USER_RST_N)
293
            reset_cnt <= 8'd127;
294
        else
295
 
296
            //---------- Decrement Counter ---------------------
297
            if (((fsm == FSM_RESETOVRD) || (fsm == FSM_RESET)) && (reset_cnt != 8'd0))
298
                reset_cnt <= reset_cnt - 8'd1;
299
 
300
            //---------- Reset Counter -------------------------
301
            else
302
 
303
                case (reset)
304
                8'b00000000 : reset_cnt <= 8'd127;              // Programmable PMARESET       time
305
                8'b11111111 : reset_cnt <= 8'd127;              // Programmable RXCDRRESET     time
306
                8'b11111110 : reset_cnt <= 8'd127;              // Programmable RXCDRFREQRESET time
307
                8'b11111100 : reset_cnt <= 8'd127;              // Programmable RXDFELPMRESET  time
308
                8'b11111000 : reset_cnt <= 8'd127;              // Programmable EYESCANRESET   time
309
                8'b11110000 : reset_cnt <= 8'd127;              // Programmable PCSRESET       time
310
                8'b11100000 : reset_cnt <= 8'd127;              // Programmable RXBUFRESET     time
311
                8'b11000000 : reset_cnt <= 8'd127;              // Programmable RESETOVRD deassertion time
312
                8'b10000000 : reset_cnt <= 8'd127;
313
                default     : reset_cnt <= 8'd127;
314
                endcase
315
 
316
    end
317
 
318
 
319
 
320
    //---------- Reset Shift Register ------------------------------------------
321
    always @ (posedge USER_TXUSRCLK)
322
    begin
323
 
324
        if (!USER_RST_N)
325
            reset <= 8'h00;
326
        else
327
 
328
            //---------- Initialize Reset Register ---------
329
            if (fsm == FSM_RESET_INIT)
330
                reset <= 8'hFF;
331
            //---------- Shift Reset Register --------------
332
            else if ((fsm == FSM_RESET) && (reset_cnt == 8'd0))
333
                reset <= {reset[6:0], 1'd0};
334
            //---------- Hold Reset Register ---------------
335
            else
336
                reset <= reset;
337
 
338
    end
339
 
340
 
341
 
342
    //---------- Reset Override FSM --------------------------------------------
343
    always @ (posedge USER_TXUSRCLK)
344
    begin
345
 
346
        if (!USER_RST_N)
347
            fsm <= FSM_IDLE;
348
 
349
        else
350
 
351
            begin
352
 
353
            case (fsm)
354
            //---------- Idle State ------------------------
355
            FSM_IDLE       : fsm <= resetovrd_start_reg2 ? FSM_RESETOVRD : FSM_IDLE;
356
            //---------- Assert RESETOVRD ------------------
357
            FSM_RESETOVRD  : fsm <= (reset_cnt == 8'd0) ? FSM_RESET_INIT : FSM_RESETOVRD;
358
            //---------- Initialize Reset ------------------
359
            FSM_RESET_INIT : fsm <= FSM_RESET;
360
            //---------- Shift Reset -----------------------
361
            FSM_RESET      : fsm <= ((reset == 8'd0) && rxresetdone_reg2) ? FSM_IDLE : FSM_RESET;
362
            //---------- Default State ---------------------
363
            default        : fsm <= FSM_IDLE;
364
                  endcase
365
 
366
            end
367
 
368
    end
369
 
370
    end
371
 
372
//---------- Disable Reset Override --------------------------------------------
373
else
374
 
375
    begin : resetovrd_disble
376
 
377
    //---------- Generate Default Signals --------------------------------------
378
    always @ (posedge USER_TXUSRCLK)
379
    begin
380
 
381
       if (!USER_RST_N)
382
           begin
383
           reset_cnt <= 8'hFF;
384
           reset     <= 8'd0;
385
           fsm       <= 2'd0;
386
           end
387
       else
388
           begin
389
           reset_cnt <= 8'hFF;
390
           reset     <= 8'd0;
391
           fsm       <= 2'd0;
392
           end
393
 
394
    end
395
 
396
    end
397
 
398
endgenerate
399
 
400
 
401
 
402
//---------- Generate OOB Clock Divider ------------------------
403
generate if (PCIE_OOBCLK_MODE == 1)
404
 
405
    begin : oobclk_div
406
 
407
    //---------- OOB Clock Divider -----------------------------
408
    always @ (posedge USER_OOBCLK_IN)
409
    begin
410
 
411
        if (!USER_RST_N)
412
            begin
413
            oobclk_cnt <= 2'd0;
414
            oobclk     <= 1'd0;
415
            end
416
        else
417
            begin
418
            oobclk_cnt <= oobclk_cnt + 2'd1;
419
            oobclk     <= pclk_sel_reg2 ? oobclk_cnt[1] : oobclk_cnt[0];
420
            end
421
 
422
    end
423
 
424
    end
425
 
426
else
427
 
428
    begin : oobclk_div_disable
429
 
430
    //---------- OOB Clock Default -------------------------
431
    always @ (posedge USER_OOBCLK_IN)
432
    begin
433
 
434
        if (!USER_RST_N)
435
            begin
436
            oobclk_cnt <= 2'd0;
437
            oobclk     <= 1'd0;
438
            end
439
        else
440
            begin
441
            oobclk_cnt <= 2'd0;
442
            oobclk     <= 1'd0;
443
            end
444
 
445
    end
446
 
447
    end
448
 
449
endgenerate
450
 
451
//---------- RXCDRLOCK Filter --------------------------------------------------
452
always @ (posedge USER_TXUSRCLK)
453
begin
454
 
455
    if (!USER_RST_N)
456
        rxcdrlock_cnt <= 4'd0;
457
    else
458
 
459
        //---------- Increment RXCDRLOCK Counter -----------
460
        if (rxcdrlock_reg2 && (rxcdrlock_cnt != RXCDRLOCK_MAX))
461
            rxcdrlock_cnt <= rxcdrlock_cnt + 4'd1;
462
 
463
        //---------- Hold RXCDRLOCK Counter ----------------
464
        else if (rxcdrlock_reg2 && (rxcdrlock_cnt == RXCDRLOCK_MAX))
465
            rxcdrlock_cnt <= rxcdrlock_cnt;
466
 
467
        //---------- Reset RXCDRLOCK Counter ---------------
468
        else
469
            rxcdrlock_cnt <= 4'd0;
470
 
471
end
472
 
473
 
474
 
475
//---------- RXVALID Filter ----------------------------------------------------
476
always @ (posedge USER_RXUSRCLK)
477
begin
478
 
479
    if (!USER_RXUSRCLK_RST_N)
480
        rxvalid_cnt <= 4'd0;
481
    else
482
 
483
        //---------- Increment RXVALID Counter -------------
484
        if (rxvalid_reg2 && (rxvalid_cnt != RXVALID_MAX) && (!rxstatus_reg2))
485
            rxvalid_cnt <= rxvalid_cnt + 4'd1;
486
 
487
        //---------- Hold RXVALID Counter ------------------
488
        else if (rxvalid_reg2 && (rxvalid_cnt == RXVALID_MAX))
489
            rxvalid_cnt <= rxvalid_cnt;
490
 
491
        //---------- Reset RXVALID Counter -----------------
492
        else
493
            rxvalid_cnt <= 4'd0;
494
 
495
end
496
 
497
 
498
 
499
//---------- Converge Counter --------------------------------------------------
500
always @ (posedge USER_TXUSRCLK)
501
begin
502
 
503
    if (!USER_RST_N)
504
        converge_cnt <= 22'd0;
505
    else
506
 
507
        //---------- Enter Gen1/Gen2 -----------------------
508
        if (rst_idle_reg2 && rate_idle_reg2 && !rate_gen3_reg2)
509
            begin
510
 
511
            //---------- Increment Converge Counter --------
512
            if (converge_cnt < converge_max_cnt)
513
                converge_cnt <= converge_cnt + 22'd1;
514
            //---------- Hold Converge Counter -------------
515
            else
516
                converge_cnt <= converge_cnt;
517
 
518
            end
519
 
520
        //---------- Reset Converge Counter ----------------
521
        else
522
            converge_cnt <= 22'd0;
523
 
524
end
525
 
526
 
527
 
528
//---------- Converge ----------------------------------------------------------
529
always @ (posedge USER_TXUSRCLK)
530
begin
531
 
532
    if (!USER_RST_N)
533
        converge_gen3 <= 1'd0;
534
    else
535
 
536
        //---------- Enter Gen3 ----------------------------
537
        if (rate_gen3_reg2)
538
 
539
            //---------- Wait for RX equalization adapt done 
540
            if (rxeq_adapt_done_reg2)
541
                converge_gen3 <= 1'd1;
542
            else
543
                converge_gen3 <= converge_gen3;
544
 
545
        //-------- Exit Gen3 -------------------------------
546
        else
547
 
548
            converge_gen3 <= 1'd0;
549
 
550
 
551
end
552
 
553
 
554
 
555
//---------- GEN3_RDY Generator ------------------------------------------------
556
always @ (posedge USER_RXUSRCLK)
557
begin
558
 
559
    if (!USER_RXUSRCLK_RST_N)
560
        gen3_rdy <= 1'd0;
561
    else
562
        gen3_rdy <= rate_idle_reg2 && rate_gen3_reg2;
563
 
564
end
565
 
566
 
567
 
568
//---------- PIPE User Override Reset Output -----------------------------------  
569
assign USER_RESETOVRD      = (fsm != FSM_IDLE);
570
assign USER_TXPMARESET     = 1'd0;
571
assign USER_RXPMARESET     = reset[0];
572
assign USER_RXCDRRESET     = reset[1];
573
assign USER_RXCDRFREQRESET = reset[2];
574
assign USER_RXDFELPMRESET  = reset[3];
575
assign USER_EYESCANRESET   = reset[4];
576
assign USER_TXPCSRESET     = 1'd0;
577
assign USER_RXPCSRESET     = reset[5];
578
assign USER_RXBUFRESET     = reset[6];
579
assign USER_RESETOVRD_DONE = (fsm == FSM_IDLE);
580
 
581
//---------- PIPE User Output --------------------------------------------------
582
assign USER_OOBCLK         = oobclk;
583
assign USER_RESETDONE      = (txresetdone_reg2 && rxresetdone_reg2);
584
assign USER_ACTIVE_LANE    = !(txelecidle_reg2 && txcompliance_reg2);
585
//----------------------------------------------------------
586
assign USER_RXCDRLOCK_OUT  = (USER_RXCDRLOCK_IN && (rxcdrlock_cnt == RXCDRLOCK_MAX));        // Filtered RXCDRLOCK
587
//----------------------------------------------------------
588
assign USER_RXVALID_OUT    = ((USER_RXVALID_IN  && (rxvalid_cnt == RXVALID_MAX)) &&          // Filtered RXVALID
589
                              rst_idle_reg2                                      &&          // Force RXVALID = 0 during reset
590
                              rate_idle_reg2);                                               // Force RXVALID = 0 during rate change
591
//----------------------------------------------------------
592
assign USER_PHYSTATUS_OUT  = (!rst_idle_reg2                                              || // Force PHYSTATUS = 1 during reset
593
                              ((rate_idle_reg2 || rate_rxsync_reg2) && USER_PHYSTATUS_IN) || // Raw PHYSTATUS
594
                              rate_done_reg2);                                               // Gated PHYSTATUS for rate change
595
//----------------------------------------------------------
596
assign USER_PHYSTATUS_RST  = !rst_idle_reg2;                                                 // Filtered PHYSTATUS for reset
597
//----------------------------------------------------------
598
assign USER_GEN3_RDY       = 0;//gen3_rdy;                                                      
599
//----------------------------------------------------------
600
assign USER_RX_CONVERGE    = (converge_cnt == converge_max_cnt) || converge_gen3;
601
 
602
 
603
 
604
endmodule

powered by: WebSVN 2.1.0

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