Hierarchy and Structure - 1.7 English

UltraScale FPGAs Transceivers Wizard LogiCORE IP Product Guide (PG182)

Document ID
PG182
Release Date
2023-05-17
Version
1.7 English

The hierarchy and simplified representation of the structure of the Wizard IP example design is illustrated in This Figure .

Figure: Wizard Example Design Block Diagram

Page-1 Sheet.1 IP Example Design Wrapper IP Example Design Wrapper Sheet.2 Transceiver CHANNEL Wrapper Sheet.3 Sheet.4 TransceiverCHANNEL Wrapper Sheet.5 Sheet.6 Sheet.7 Sheet.8 Sheet.9 Sheet.10 Sheet.11 CHANNEL Primitive CHANNELPrimitive Sheet.12 Sheet.13 Sheet.14 Sheet.15 Sheet.16 Sheet.17 Sheet.18 Helper Block in IP Core Helper Block in IP Core Sheet.19 Sheet.20 Transceiver COMMON Wrapper Sheet.21 Sheet.22 TransceiverCOMMON Wrapper Sheet.23 Sheet.24 Sheet.25 Sheet.26 Sheet.27 Sheet.28 Sheet.29 COMMON Primitive COMMONPrimitive Sheet.30 Sheet.31 Sheet.32 Sheet.33 Sheet.34 Sheet.35 Sheet.36 X14550 X14550 Sheet.37 Sheet.38 Sheet.39 IP Core Instance IP Core Instance Sheet.40 A A Sheet.41 Helper Block in Example Design Helper Block in Example Design Sheet.42 B B Sheet.43 Sheet.44 Sheet.45 Sheet.46 Sheet.47 Initialization Initialization Sheet.48 PRBS Generator PRBS Generator Sheet.49 PRBS Checker PRBS Checker Sheet.50 Logic Logic Sheet.51 Link Status Link Status Sheet.52 IP Example Design Top-Level Module IP Example Design Top-Level Module Sheet.53 D D Sheet.54 Sheet.55 Sheet.56 Sheet.57 Sheet.58 Sheet.59 Sheet.60 Sheet.61 Sheet.62 Sheet.63 Sheet.64 C C Sheet.65 Sheet.66 Sheet.67 E E curve.484 curve.50 curve.51 Sheet.71 VIO VIO Sheet.72

The example design instantiates the customized core instance. The core instance contains one or more transceiver channel primitives and, depending on customization choices, can instantiate one or more transceiver common primitives and one or more helper blocks. Portion A of the figure represents a helper block included within the core instance.

The lowest level of example design hierarchy is the example design wrapper. The purpose of the example design wrapper is to instantiate only the customized core and any helper blocks that you included in the example design. By including only those resources and no additional demonstration logic, the example design wrapper can be integrated into your project with no or minimal modification required. Portion B of the figure represents a helper block instantiated within the example design wrapper. Enabled ports of the core instance that do not directly interface to helper block B are routed through to the next level of example design hierarchy.


The example design top-level module instantiates the example design wrapper and is the top-level module of the Vivado IP example project. The top-level module serves many purposes. Portion C of the figure represents the different ways that ports enabled on the core and exposed through the example design wrapper are handled in the example design top-level module. Ports that were optionally enabled or otherwise enabled but are not directly used in the example design are tied to their appropriate values (per the core customization). A small number of ports that must be driven internally to the example design for purposes of example design operation are driven by some logic function to produce the necessary value. A small number of ports are also connected to the top-level example design I/O.

An example stimulus module and an example checking module are each instantiated for each transceiver channel instance. As shown in portion D of the figure, these modules include a PRBS block that is customized for data generation or checking as appropriate, as well as a minimal amount of additional logic sufficient to interface to the selected transmitter data encoding and receiver data decoding formats of the transceiver channels.

Note: The example stimulus and example checking modules fundamentally transmit and check raw PRBS data, and do not implement higher-level protocols to encapsulate that raw data.


Because independent example stimulus and checking modules exist per channel, an aggregate pattern match status across all modules is needed. A small amount of logic in the example design top-level module combines the match status from all example checking modules into a single “match all” signal. This signal is then used in a simple link status state machine to indicate the health of the PRBS checker-based link while remaining resilient to occasional bit errors. A sticky link down indicator is set any time the link status signal de-asserts, and an accompanying reset signal clears that sticky link down indicator. Together, these three signals are sufficient to monitor data integrity-based link status across all transceiver channels in an abstract fashion, including mapping the top-level I/O to two LEDs and one pushbutton on a PCB. To reduce reliance on hardware I/O interaction and simplify example design bring-up and debug, a VIO core instance also connects to these top-level signals and other key control and status signals. The VIO core can be re-customized and connected to other signals as needed.

Additionally, an initialization state machine provides demonstration logic that interacts with and enhances the reset controller helper block to assist with successful system bring-up. See Link Status and Initialization for more details on these features.


As shown in portion E of the figure, a dedicated transceiver reference clock differential buffer (IBUFDS_GTE3 or IBUFDS_GTE4 primitive) is instantiated for each reference clock source that was specified in the Physical Resources tab of the Customize IP dialog box. Differential clock input ports drive each buffer instance, which in turn is wired to all the transceiver channel or transceiver common primitives it was specified to drive. If you wish to use different connectivity in your system, re-customize the core and select different transceiver reference clock locations in the Customize IP dialog box, rather than modifying the clock connectivity, to properly adjust both the wiring and the transceiver primitive location constraints.

The ports shown in Table: Example Design Top-Level Ports are present on the example design top-level module, and are therefore package pins in the example project.

Table: Example Design Top-Level Ports

Name

Direction

Width

Clock Domain

Description

mgtrefclk<i>_<j>_p

Input

1

Positive and negative inputs of the differential reference clock where:

<i>: 0 (corresponds to MGTREFCLK0 source) or 1 (corresponds to MGTREFCLK1 source)

<j>: The coordinate of the transceiver common primitive where the IBUFDS_GTE3 or IBUFDS_GTE4 instance resides.

For example, the input “mgtrefclk0_x0y0_p” is the positive clock input of MGTREFCLK0 within the Quad that contains the transceiver common at the X0Y0 coordinate.

mgtrefclk<i>_<j>_n

Input

1

rxrecclkout_ch<j>_p

Output

1

Positive and negative outputs of the differential recovered clock where:

<j>: The coordinate of the transceiver channel primitive that drives the OBUFDS_GTE3 or OBUFDS_GTE4 primitive which produces the differential outputs.

For example, the output "rxrecclkout_chx0y4_n" is the negative clock output of the OBUFDS_GTE3 or OBUFDS_GTE4 within the Quad that contains the transceiver channel primitive at the X0Y4 coordinate.

rxrecclkout_ch<j>_n

Output

1

ch<i>_gt[h|y]rxn_in

Input

1

Serial

Positive and negative inputs of the transceiver channel differential serial data receiver, where:

<i>: Corresponds to the index of the transceiver channel among all enabled transceiver channels in the core.

ch<i>_gt[h|y]rxp_in

Input

1

Serial

ch<i>_gt[h|y]txn_out

Output

1

Serial

Positive and negative outputs of the transceiver channel differential serial data transmitter, where:

<i>: Corresponds to the index of the transceiver channel among all enabled transceiver channels in the core.

ch<i>_gt[h|y]txp_out

Output

1

Serial

hb_gtwiz_reset_clk_freerun_in

Input

1

Free-running clock, used by the example design and reset controller helper block for various system bring-up tasks. The example design top-level module globally buffers this single-ended clock input.

Note: To alternatively use a differential clock input:
- add a second input port,
- instantiate an IBUFDS primitive driven by both the existing hb_gtwiz_reset_clk_freerun_in and that new port, and
- drive the input of the existing BUFG primitive with the output of that IBUFDS primitive instead of the hb_gtwiz_reset_clk_freerun_in port.

hb_gtwiz_reset_all_in

Input

1

Async

Falling edge-triggered, active-High “reset all” input used by the reset controller helper block to initiate a full system reset sequence. Assumed to be de-bounced external to the device.

link_down_latched_reset_in

Input

1

Async

Active-High signal used to reset the sticky link down indicator. Assumed to be de-bounced external to the device.

link_status_out

Output

1

hb_gtwiz_reset_
clk_freerun_in

Active-High, live indicator of link status based on combined PRBS match status across all example checking modules.

link_down_latched_out

Output

1

hb_gtwiz_reset_
clk_freerun_in

Active-High, sticky link down indicator. Set when link_status_out is Low and cleared when link_down_latched_reset_in is High.