SURF  1.0
Gtp7TxRst.vhd
Go to the documentation of this file.
1 --//////////////////////////////////////////////////////////////////////////////
2 -- ____ ____
3 -- / /\/ /
4 -- /___/ \ / Vendor: Xilinx
5 -- \ \ \/ Version : 3.0
6 -- \ \ Application : 7 Series FPGAs Transceivers Wizard
7 -- / / Filename :gtwizard_0_tx_startup_fsm.vhd
8 -- /___/ /\
9 -- \ \ / \
10 -- \___\/\___\
11 --
12 --
13 -- Description : This module performs TX reset and initialization.
14 --
15 --
16 --
17 -- Module gtwizard_0_tx_startup_fsm
18 -- Generated by Xilinx 7 Series FPGAs Transceivers Wizard
19 --
20 --
21 -- (c) Copyright 2010-2012 Xilinx, Inc. All rights reserved.
22 --
23 -- This file contains confidential and proprietary information
24 -- of Xilinx, Inc. and is protected under U.S. and
25 -- international copyright and other intellectual property
26 -- laws.
27 --
28 -- DISCLAIMER
29 -- This disclaimer is not a license and does not grant any
30 -- rights to the materials distributed herewith. Except as
31 -- otherwise provided in a valid license issued to you by
32 -- Xilinx, and to the maximum extent permitted by applicable
33 -- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
34 -- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
35 -- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
36 -- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
37 -- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
38 -- (2) Xilinx shall not be liable (whether in contract or tort,
39 -- including negligence, or under any other theory of
40 -- liability) for any loss or damage of any kind or nature
41 -- related to, arising under or in connection with these
42 -- materials, including for any direct, or any indirect,
43 -- special, incidental, or consequential loss or damage
44 -- (including loss of data, profits, goodwill, or any type of
45 -- loss or damage suffered as a result of any action brought
46 -- by a third party) even if such damage or loss was
47 -- reasonably foreseeable or Xilinx had been advised of the
48 -- possibility of the same.
49 --
50 -- CRITICAL APPLICATIONS
51 -- Xilinx products are not designed or intended to be fail-
52 -- safe, or for use in any application requiring fail-safe
53 -- performance, such as life-support or safety devices or
54 -- systems, Class III medical devices, nuclear facilities,
55 -- applications related to the deployment of airbags, or any
56 -- other applications that could lead to death, personal
57 -- injury, or severe property or environmental damage
58 -- (individually and collectively, "Critical
59 -- Applications"). Customer assumes the sole risk and
60 -- liability of any use of Xilinx products in Critical
61 -- Applications, subject only to applicable laws and
62 -- regulations governing limitations on product liability.
63 --
64 -- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
65 -- PART OF THIS FILE AT ALL TIMES.
66 
67 
68 --*****************************************************************************
69 
70 library IEEE;
71 use IEEE.STD_LOGIC_1164.all;
72 use IEEE.NUMERIC_STD.all;
73 
74 --! @see entity
75  --! @ingroup xilinx_7Series_gtp7
76 entity Gtp7TxRst is
77  generic(
78  TPD_G : time := 1 ns;
79  STABLE_CLOCK_PERIOD : integer range 4 to 20 := 8; --Period of the stable clock driving this state-machine, unit is [ns]
80  RETRY_COUNTER_BITWIDTH : integer range 2 to 8 := 8;
81  TX_PLL0_USED : boolean := false -- the TX Reset FSMs must
82  );
83  port (
84  STABLE_CLOCK : in std_logic; --Stable Clock, either a stable clock from the PCB
85  --or reference-clock present at startup.
86  TXUSERCLK : in std_logic; --TXUSERCLK as used in the design
87  SOFT_RESET : in std_logic; --User Reset, can be pulled any time
88  TXPMARESETDONE : in std_logic;
89  TXOUTCLK : in std_logic;
90  PLL0REFCLKLOST : in std_logic; --PLL0 Reference-clock for the GT is lost
91  PLL1REFCLKLOST : in std_logic; --PLL1 Reference-clock for the GT is lost
92  PLL0LOCK : in std_logic; --Lock Detect from the PLL0 of the GT
93  PLL1LOCK : in std_logic; --Lock Detect from the PLL1 of the GT
94  TXRESETDONE : in std_logic;
95  MMCM_LOCK : in std_logic;
96  GTTXRESET : out std_logic := '0';
97  MMCM_RESET : out std_logic := '1';
98  PLL0_RESET : out std_logic := '0'; --Reset PLL0
99  PLL1_RESET : out std_logic := '0'; --Reset PLL1
100  TX_FSM_RESET_DONE : out std_logic; --Reset-sequence has sucessfully been finished.
101  TXUSERRDY : out std_logic := '0';
102  RUN_PHALIGNMENT : out std_logic := '0';
103  RESET_PHALIGNMENT : out std_logic := '0';
104  PHALIGNMENT_DONE : in std_logic;
105 
106  RETRY_COUNTER : out std_logic_vector (RETRY_COUNTER_BITWIDTH-1 downto 0) := (others => '0') -- Number of
107  -- Retries it took to get the transceiver up and running
108  );
109 end Gtp7TxRst;
110 
111 --Interdependencies:
112 -- * Timing depends on the frequency of the stable clock. Hence counters-sizes
113 -- are calculated at design-time based on the Generics
114 --
115 -- * if either of PLLs is reset during TX-startup, it does not need to be reset again by RX
116 -- => signal which PLL has been reset
117 -- *
118 
119 architecture RTL of Gtp7TxRst is
120 
122  INIT, ASSERT_ALL_RESETS, RELEASE_PLL_RESET,
123  RELEASE_MMCM_RESET, WAIT_RESET_DONE, DO_PHASE_ALIGNMENT,
124  RESET_FSM_DONE);
125 
126  signal tx_state : tx_rst_fsm_type := INIT;
127 
128  constant MMCM_LOCK_CNT_MAX : integer := 1024;
129  constant STARTUP_DELAY : integer := 500; --AR43482: Transceiver needs to wait for 500 ns after configuration
130  constant WAIT_CYCLES : integer := STARTUP_DELAY / STABLE_CLOCK_PERIOD; -- Number of Clock-Cycles to wait after configuration
131  constant WAIT_MAX : integer := WAIT_CYCLES + 10; -- 500 ns plus some additional margin
132 
133  constant WAIT_TIMEOUT_2ms : integer := 2000000 / STABLE_CLOCK_PERIOD; -- 2 ms time-out
134  constant WAIT_TLOCK_MAX : integer := 100000 / STABLE_CLOCK_PERIOD; --100 us time-out
135  constant WAIT_TIMEOUT_500us : integer := 500000 / STABLE_CLOCK_PERIOD; --100 us time-out
136  constant WAIT_1us_cycles : integer := 1000 / STABLE_CLOCK_PERIOD; --1 us time-out
137  constant WAIT_1us : integer := WAIT_1us_cycles+ 10; -- 1us plus some additional margin
138 
139  signal soft_reset_sync : std_logic;
140 
141  signal init_wait_count : integer range 0 to WAIT_MAX := 0;
142  signal init_wait_done : std_logic := '0';
143  signal pll_reset_asserted : std_logic := '0';
144 
145  signal tx_fsm_reset_done_int : std_logic := '0';
146  signal tx_fsm_reset_done_int_s2 : std_logic := '0';
147  signal tx_fsm_reset_done_int_s3 : std_logic := '0';
148 
149  signal txresetdone_s2 : std_logic := '0';
150  signal txresetdone_s3 : std_logic := '0';
151 
152  constant MAX_RETRIES : integer := 2**RETRY_COUNTER_BITWIDTH-1;
153  signal retry_counter_int : integer range 0 to MAX_RETRIES;
154  signal time_out_counter : integer range 0 to WAIT_TIMEOUT_2ms := 0;
155  signal count_1us : integer range 0 to WAIT_1us := 0;
156 
157  signal reset_time_out : std_logic := '0';
158  signal count_1us_done : std_logic := '0';
159  signal time_out_2ms : std_logic := '0'; --\Flags that the various time-out points
160  signal time_tlock_max : std_logic := '0'; --|have been reached.
161  signal time_out_500us : std_logic := '0'; --/
162 
163  signal mmcm_lock_count : integer range 0 to MMCM_LOCK_CNT_MAX-1 := 0;
164  signal mmcm_lock_int : std_logic := '0';
165  signal mmcm_lock_i : std_logic := '0';
166  signal mmcm_lock_reclocked : std_logic := '0';
167 
168  signal run_phase_alignment_int : std_logic := '0';
169  signal run_phase_alignment_int_s2 : std_logic := '0';
170  signal run_phase_alignment_int_s3 : std_logic := '0';
171  constant MAX_WAIT_BYPASS : integer := 45824; --110000 TXUSRCLK cycles is the max time for Multi lane designs
172 
173  signal wait_bypass_count : integer range 0 to MAX_WAIT_BYPASS-1;
174  signal time_out_wait_bypass : std_logic := '0';
175  signal time_out_wait_bypass_s2 : std_logic := '0';
176  signal time_out_wait_bypass_s3 : std_logic := '0';
177  signal txuserrdy_i : std_logic := '0';
178  signal refclk_lost : std_logic;
179  signal gttxreset_i : std_logic := '0';
180  signal txpmaresetdone_i : std_logic := '0';
181  signal txpmaresetdone_sync : std_logic;
182 
183  signal pll0lock_sync : std_logic := '0';
184  signal pll1lock_sync : std_logic := '0';
185  signal pll0lock_prev : std_logic := '0';
186  signal pll1lock_prev : std_logic := '0';
187  signal pll0lock_ris_edge : std_logic := '0';
188  signal pll1lock_ris_edge : std_logic := '0';
189 
190 begin
191  --Alias section, signals used within this module mapped to output ports:
192  RETRY_COUNTER <= std_logic_vector(TO_UNSIGNED(retry_counter_int, RETRY_COUNTER_BITWIDTH));
196  process(STABLE_CLOCK)
197  begin
198  if rising_edge(STABLE_CLOCK) then
199  -- The counter starts running when configuration has finished and
200  -- the clock is stable. When its maximum count-value has been reached,
201  -- the 500 ns from Answer Record 43482 have been passed.
202  if init_wait_count = WAIT_MAX then
203  init_wait_done <= '1';
204  else
206  end if;
207  end if;
208  end process;
209 
210  sync_txuserrdy : entity work.Synchronizer
211  port map (
212  clk => TXUSERCLK,
213  dataIn => txuserrdy_i,
214  dataOut => TXUSERRDY);
215 
216  sync_pmaresetdone : entity work.Synchronizer
217  port map (
218  clk => STABLE_CLOCK,
221 
222  timeouts : process(STABLE_CLOCK)
223  begin
224  if rising_edge(STABLE_CLOCK) then
225  -- One common large counter for generating three time-out signals.
226  -- Intermediate time-outs are derived from calculated values, based
227  -- on the period of the provided clock.
228  if reset_time_out = '1' then
229  time_out_counter <= 0;
230  time_out_2ms <= '0';
231  time_tlock_max <= '0';
232  time_out_500us <= '0';
233  else
235  time_out_2ms <= '1';
236  else
238  end if;
239 
241  time_tlock_max <= '1';
242  end if;
243 
245  time_out_500us <= '1';
246  end if;
247  end if;
248  end if;
249  end process;
250 
251  mmcm_lock_wait : process(STABLE_CLOCK)
252  begin
253  if rising_edge(STABLE_CLOCK) then
254  if mmcm_lock_i = '0' then
255  mmcm_lock_count <= 0;
256  mmcm_lock_reclocked <= '0';
257  else
258  if mmcm_lock_count < MMCM_LOCK_CNT_MAX - 1 then
260  else
261  mmcm_lock_reclocked <= '1';
262  end if;
263  end if;
264  end if;
265  end process;
266 
267 
268 
269  -- Clock Domain Crossing
270  sync_SOFT_RESET : entity work.Synchronizer
271  port map (
272  clk => STABLE_CLOCK,
273  dataIn => SOFT_RESET,
275 
276  sync_run_phase_alignment_int : entity work.Synchronizer
277  port map (
278  clk => TXUSERCLK,
281 
282  sync_tx_fsm_reset_done_int : entity work.Synchronizer
283  port map (
284  clk => TXUSERCLK,
287 
288  process(TXUSERCLK)
289  begin
290  if rising_edge(TXUSERCLK) then
292 
294  end if;
295  end process;
296 
297  sync_TXRESETDONE : entity work.Synchronizer
298  port map (
299  clk => STABLE_CLOCK,
300  dataIn => TXRESETDONE,
302 
303  sync_time_out_wait_bypass : entity work.Synchronizer
304  port map (
305  clk => STABLE_CLOCK,
308 
309  sync_mmcm_lock_reclocked : entity work.Synchronizer
310  port map (
311  clk => STABLE_CLOCK,
312  dataIn => MMCM_LOCK,
313  dataOut => mmcm_lock_i);
314 
315  process(STABLE_CLOCK)
316  begin
317  if rising_edge(STABLE_CLOCK) then
319 
323  end if;
324  end process;
325 
326 
327 
328  sync_PLL0LOCK : entity work.Synchronizer
329  port map (
330  clk => STABLE_CLOCK,
331  dataIn => PLL0LOCK,
333 
334  sync_PLL1LOCK : entity work.Synchronizer
335  port map (
336  clk => STABLE_CLOCK,
337  dataIn => PLL1LOCK,
339 
340 
341  process (STABLE_CLOCK)
342  begin
343  if rising_edge(STABLE_CLOCK) then
344  if(soft_reset_sync = '1') then
345  pll0lock_ris_edge <= '0';
346  elsif((pll0lock_prev = '0') and (pll0lock_sync = '1')) then
347  pll0lock_ris_edge <= '1';
348  elsif(tx_state = ASSERT_ALL_RESETS or tx_state = RELEASE_PLL_RESET) then
350  else
351  pll0lock_ris_edge <= '0';
352  end if;
353  end if;
354  end process;
355 
356  process (STABLE_CLOCK)
357  begin
358  if rising_edge(STABLE_CLOCK) then
359  if(soft_reset_sync = '1') then
360  pll1lock_ris_edge <= '0';
361  elsif((pll1lock_prev = '0') and (pll1lock_sync = '1')) then
362  pll1lock_ris_edge <= '1';
363  elsif(tx_state = ASSERT_ALL_RESETS or tx_state = RELEASE_PLL_RESET) then
365  else
366  pll1lock_ris_edge <= '0';
367  end if;
368  end if;
369  end process;
370 
371 
372  timeout_buffer_bypass : process(TXUSERCLK)
373  begin
374  if rising_edge(TXUSERCLK) then
375  if run_phase_alignment_int_s3 = '0' then
376  wait_bypass_count <= 0;
377  time_out_wait_bypass <= '0';
378  elsif (run_phase_alignment_int_s3 = '1') and (tx_fsm_reset_done_int_s3 = '0') then
379  if wait_bypass_count = MAX_WAIT_BYPASS - 1 then
380  time_out_wait_bypass <= '1';
381  else
383  end if;
384  end if;
385  end if;
386  end process;
387 
388 
389  refclk_lost <= '1' when ((TX_PLL0_USED and PLL0REFCLKLOST = '1') or (not TX_PLL0_USED and PLL1REFCLKLOST = '1')) else '0';
390 
391  --FSM for resetting the GTX/GTH/GTP in the 7-series.
392  --~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
393  --
394  -- Following steps are performed:
395  -- 1) Only for GTX - After configuration wait for approximately 500 ns as specified in
396  -- answer-record 43482
397  -- 2) Assert all resets on the GT and on an MMCM potentially connected.
398  -- After that wait until a reference-clock has been detected.
399  -- 3) Release the reset to the GT and wait until the GT-PLL has locked.
400  -- 4) Release the MMCM-reset and wait until the MMCM has signalled lock.
401  -- Also signal to the RX-side which PLL has been reset.
402  -- 5) Wait for the RESET_DONE-signal from the GT.
403  -- 6) Signal to start the phase-alignment procedure and wait for it to
404  -- finish.
405  -- 7) Reset-sequence has successfully run through. Signal this to the
406  -- rest of the design by asserting TX_FSM_RESET_DONE.
407 
408  reset_fsm : process(STABLE_CLOCK)
409  begin
410  if rising_edge(STABLE_CLOCK) then
411  if(soft_reset_sync = '1' or (not(tx_state = INIT) and not(tx_state = ASSERT_ALL_RESETS) and refclk_lost = '1')) then
412  tx_state <= INIT;
413  txuserrdy_i <= '0';
414  gttxreset_i <= '0';
415  MMCM_RESET <= '1';
416  tx_fsm_reset_done_int <= '0';
417  PLL0_RESET <= '0';
418  PLL1_RESET <= '0';
419  pll_reset_asserted <= '0';
420  reset_time_out <= '0';
421  retry_counter_int <= 0;
423  RESET_PHALIGNMENT <= '1';
424  else
425 
426  case tx_state is
427  when INIT =>
428  --Initial state after configuration. This state will be left after
429  --approx. 500 ns and not be re-entered.
430  if init_wait_done = '1' then
431  tx_state <= ASSERT_ALL_RESETS;
432  reset_time_out <= '1';
433  end if;
434 
435  when ASSERT_ALL_RESETS =>
436  --This is the state into which the FSM will always jump back if any
437  --time-outs will occur.
438  --The number of retries is reported on the output RETRY_COUNTER. In
439  --case the transceiver never comes up for some reason, this machine
440  --will still continue its best and rerun until the FPGA is turned off
441  --or the transceivers come up correctly.
442  if TX_PLL0_USED then
443  if pll_reset_asserted = '0' then
444  PLL0_RESET <= '1';
445  pll_reset_asserted <= '1';
446  else
447  PLL0_RESET <= '0';
448  end if;
449  else
450  if pll_reset_asserted = '0' then
451  PLL1_RESET <= '1';
452  pll_reset_asserted <= '1';
453  else
454  PLL1_RESET <= '0';
455  end if;
456  end if;
457  txuserrdy_i <= '0';
458  gttxreset_i <= '1';
459  MMCM_RESET <= '1';
460  reset_time_out <= '0';
462  RESET_PHALIGNMENT <= '1';
463 
464  if (TX_PLL0_USED and (PLL0REFCLKLOST = '0') and pll_reset_asserted = '1') or
465  (not TX_PLL0_USED and (PLL1REFCLKLOST = '0') and pll_reset_asserted = '1') then
466  tx_state <= RELEASE_PLL_RESET;
467  end if;
468 
469  when RELEASE_PLL_RESET =>
470  --PLL-Reset of the GTX gets released and the time-out counter
471  --starts running.
472  pll_reset_asserted <= '0';
473 
474  if (TX_PLL0_USED and (pll0lock_ris_edge = '1')) or
475  (not TX_PLL0_USED and (pll1lock_ris_edge = '1')) then
476  tx_state <= RELEASE_MMCM_RESET;
477  reset_time_out <= '1';
478  end if;
479 
480  if time_out_2ms = '1' then
482  -- If too many retries are performed compared to what is specified in
483  -- the generic, the counter simply wraps around.
484  retry_counter_int <= 0;
485  else
487  end if;
488  reset_time_out <= '1'; -- Need to reset time outs again or we'll always end up back here
489  tx_state <= ASSERT_ALL_RESETS;
490  end if;
491 
492  when RELEASE_MMCM_RESET =>
493  gttxreset_i <= '0';
494  --Release of the MMCM-reset. Waiting for the MMCM to lock.
495  if txpmaresetdone_sync = '1' then
496  MMCM_RESET <= '0';
497  reset_time_out <= '0';
498  end if;
499 
500  if mmcm_lock_reclocked = '1' then
501  tx_state <= WAIT_RESET_DONE;
502  reset_time_out <= '1';
503  end if;
504 
505  if (time_tlock_max = '1' and mmcm_lock_reclocked = '0' and reset_time_out = '0') then
507  -- If too many retries are performed compared to what is specified in
508  -- the generic, the counter simply wraps around.
509  retry_counter_int <= 0;
510  else
512  end if;
513  tx_state <= ASSERT_ALL_RESETS;
514  end if;
515 
516  when WAIT_RESET_DONE =>
517  txuserrdy_i <= '1';
518  reset_time_out <= '0';
519  if txresetdone_s3 = '1' then
520  tx_state <= DO_PHASE_ALIGNMENT;
521  reset_time_out <= '1';
522  end if;
523 
524  if (time_out_500us = '1' and reset_time_out = '0') then
526  -- If too many retries are performed compared to what is specified in
527  -- the generic, the counter simply wraps around.
528  retry_counter_int <= 0;
529  else
531  end if;
532  tx_state <= ASSERT_ALL_RESETS;
533  end if;
534 
535  when DO_PHASE_ALIGNMENT =>
536  --The direct handling of the signals for the Phase Alignment is done outside
537  --this state-machine.
538  RESET_PHALIGNMENT <= '0';
540  reset_time_out <= '0';
541 
542  if PHALIGNMENT_DONE = '1' then
543  tx_state <= RESET_FSM_DONE;
544  end if;
545 
546  if time_out_wait_bypass_s3 = '1' then
548  -- If too many retries are performed compared to what is specified in
549  -- the generic, the counter simply wraps around.
550  retry_counter_int <= 0;
551  else
553  end if;
554  tx_state <= ASSERT_ALL_RESETS;
555  end if;
556 
557  when RESET_FSM_DONE =>
558  reset_time_out <= '1';
559  tx_fsm_reset_done_int <= '1';
560 
561  when others =>
562  tx_state <= INIT;
563 
564  end case;
565  end if;
566  end if;
567  end process;
568 
569 end RTL;
integer := 500000/ STABLE_CLOCK_PERIOD WAIT_TIMEOUT_500us
Definition: Gtp7TxRst.vhd:135
std_logic := '0' init_wait_done
Definition: Gtp7TxRst.vhd:142
std_logic soft_reset_sync
Definition: Gtp7TxRst.vhd:139
std_logic := '0' pll0lock_prev
Definition: Gtp7TxRst.vhd:185
(INIT,ASSERT_ALL_RESETS,RELEASE_PLL_RESET,RELEASE_MMCM_RESET,WAIT_RESET_DONE,DO_PHASE_ALIGNMENT,RESET_FSM_DONE) tx_rst_fsm_type
Definition: Gtp7TxRst.vhd:121
integer range 0 to MMCM_LOCK_CNT_MAX- 1:= 0 mmcm_lock_count
Definition: Gtp7TxRst.vhd:163
std_logic := '0' mmcm_lock_i
Definition: Gtp7TxRst.vhd:165
std_logic := '0' mmcm_lock_int
Definition: Gtp7TxRst.vhd:164
integer := 45824 MAX_WAIT_BYPASS
Definition: Gtp7TxRst.vhd:171
in PLL1LOCKstd_logic
Definition: Gtp7TxRst.vhd:93
std_logic := '0' pll1lock_ris_edge
Definition: Gtp7TxRst.vhd:188
integer range 0 to WAIT_MAX:= 0 init_wait_count
Definition: Gtp7TxRst.vhd:141
out TX_FSM_RESET_DONEstd_logic
Definition: Gtp7TxRst.vhd:100
std_logic := '0' pll_reset_asserted
Definition: Gtp7TxRst.vhd:143
out RUN_PHALIGNMENTstd_logic := '0'
Definition: Gtp7TxRst.vhd:102
std_logic := '0' run_phase_alignment_int_s3
Definition: Gtp7TxRst.vhd:170
in TXOUTCLKstd_logic
Definition: Gtp7TxRst.vhd:89
std_logic := '0' tx_fsm_reset_done_int
Definition: Gtp7TxRst.vhd:145
integer := 1000/ STABLE_CLOCK_PERIOD WAIT_1us_cycles
Definition: Gtp7TxRst.vhd:136
std_logic := '0' reset_time_out
Definition: Gtp7TxRst.vhd:157
std_logic := '0' pll1lock_prev
Definition: Gtp7TxRst.vhd:186
std_logic := '0' count_1us_done
Definition: Gtp7TxRst.vhd:158
in PLL0REFCLKLOSTstd_logic
Definition: Gtp7TxRst.vhd:90
std_logic := '0' time_out_wait_bypass_s3
Definition: Gtp7TxRst.vhd:176
std_logic := '0' time_out_wait_bypass_s2
Definition: Gtp7TxRst.vhd:175
integer range 0 to MAX_RETRIES retry_counter_int
Definition: Gtp7TxRst.vhd:153
integer := WAIT_1us_cycles+ 10 WAIT_1us
Definition: Gtp7TxRst.vhd:137
out dataOutsl
out RESET_PHALIGNMENTstd_logic := '0'
Definition: Gtp7TxRst.vhd:103
std_logic := '0' run_phase_alignment_int_s2
Definition: Gtp7TxRst.vhd:169
std_logic := '0' tx_fsm_reset_done_int_s3
Definition: Gtp7TxRst.vhd:147
integer := 500 STARTUP_DELAY
Definition: Gtp7TxRst.vhd:129
std_logic := '0' time_tlock_max
Definition: Gtp7TxRst.vhd:160
std_logic := '0' gttxreset_i
Definition: Gtp7TxRst.vhd:179
std_logic refclk_lost
Definition: Gtp7TxRst.vhd:178
TX_PLL0_USEDboolean := false
Definition: Gtp7TxRst.vhd:82
out MMCM_RESETstd_logic := '1'
Definition: Gtp7TxRst.vhd:97
std_logic := '0' txresetdone_s3
Definition: Gtp7TxRst.vhd:150
std_logic := '0' time_out_wait_bypass
Definition: Gtp7TxRst.vhd:174
std_logic := '0' mmcm_lock_reclocked
Definition: Gtp7TxRst.vhd:166
integer := 2000000/ STABLE_CLOCK_PERIOD WAIT_TIMEOUT_2ms
Definition: Gtp7TxRst.vhd:133
in TXUSERCLKstd_logic
Definition: Gtp7TxRst.vhd:86
out GTTXRESETstd_logic := '0'
Definition: Gtp7TxRst.vhd:96
integer range 0 to WAIT_1us:= 0 count_1us
Definition: Gtp7TxRst.vhd:155
integer := STARTUP_DELAY/ STABLE_CLOCK_PERIOD WAIT_CYCLES
Definition: Gtp7TxRst.vhd:130
std_logic := '0' run_phase_alignment_int
Definition: Gtp7TxRst.vhd:168
std_logic txpmaresetdone_sync
Definition: Gtp7TxRst.vhd:181
in PHALIGNMENT_DONEstd_logic
Definition: Gtp7TxRst.vhd:104
integer := 1024 MMCM_LOCK_CNT_MAX
Definition: Gtp7TxRst.vhd:128
TPD_Gtime := 1 ns
Definition: Gtp7TxRst.vhd:78
std_logic := '0' time_out_2ms
Definition: Gtp7TxRst.vhd:159
std_logic := '0' pll1lock_sync
Definition: Gtp7TxRst.vhd:184
out TXUSERRDYstd_logic := '0'
Definition: Gtp7TxRst.vhd:101
in TXPMARESETDONEstd_logic
Definition: Gtp7TxRst.vhd:88
integer := 100000/ STABLE_CLOCK_PERIOD WAIT_TLOCK_MAX
Definition: Gtp7TxRst.vhd:134
std_logic := '0' txpmaresetdone_i
Definition: Gtp7TxRst.vhd:180
RETRY_COUNTER_BITWIDTHinteger range 2 to 8:= 8
Definition: Gtp7TxRst.vhd:80
integer := 2** RETRY_COUNTER_BITWIDTH- 1 MAX_RETRIES
Definition: Gtp7TxRst.vhd:152
std_logic := '0' time_out_500us
Definition: Gtp7TxRst.vhd:161
out PLL1_RESETstd_logic := '0'
Definition: Gtp7TxRst.vhd:99
in PLL0LOCKstd_logic
Definition: Gtp7TxRst.vhd:92
out RETRY_COUNTERstd_logic_vector( RETRY_COUNTER_BITWIDTH- 1 downto 0) :=( others => '0')
Definition: Gtp7TxRst.vhd:108
STABLE_CLOCK_PERIODinteger range 4 to 20:= 8
Definition: Gtp7TxRst.vhd:79
in PLL1REFCLKLOSTstd_logic
Definition: Gtp7TxRst.vhd:91
out PLL0_RESETstd_logic := '0'
Definition: Gtp7TxRst.vhd:98
tx_rst_fsm_type := INIT tx_state
Definition: Gtp7TxRst.vhd:126
std_logic := '0' txresetdone_s2
Definition: Gtp7TxRst.vhd:149
std_logic := '0' txuserrdy_i
Definition: Gtp7TxRst.vhd:177
std_logic := '0' pll0lock_ris_edge
Definition: Gtp7TxRst.vhd:187
integer := WAIT_CYCLES+ 10 WAIT_MAX
Definition: Gtp7TxRst.vhd:131
in SOFT_RESETstd_logic
Definition: Gtp7TxRst.vhd:87
integer range 0 to WAIT_TIMEOUT_2ms:= 0 time_out_counter
Definition: Gtp7TxRst.vhd:154
integer range 0 to MAX_WAIT_BYPASS- 1 wait_bypass_count
Definition: Gtp7TxRst.vhd:173
std_logic := '0' pll0lock_sync
Definition: Gtp7TxRst.vhd:183
in STABLE_CLOCKstd_logic
Definition: Gtp7TxRst.vhd:84
std_logic := '0' tx_fsm_reset_done_int_s2
Definition: Gtp7TxRst.vhd:146
in TXRESETDONEstd_logic
Definition: Gtp7TxRst.vhd:94
in MMCM_LOCKstd_logic
Definition: Gtp7TxRst.vhd:95