Hard FEC Wrapper IP Core Interface - 8.11 English

CPRI LogiCORE IP Product Guide (PG056)

Document ID
PG056
Release Date
2022-11-16
Version
8.11 English

This is only applicable to selected UltraScale+ devices. Refer to UltraScale Architecture and Product Data Sheet: Overview (DS890) [Ref 16] for details.

When the Generate a Hard FEC CPRI wrapper option is selected, the CPRI IP core is converted into a 4 lane Hard RS-FEC Receiver IP core.

Table: Hard FEC Wrapper IP Interface Signals lists the ports where chx refers to CPRI channels 0, 1, 2, or 3.

IMPORTANT: The Hard FEC sub-core (CMAC) must be placed in the same SLR of the device as the GTYE4 transceiver to guarantee timing closure. See UltraScale and UltraScale+ FPGAs Packaging and Pinouts (UG575) [Ref 17] and Zynq UltraScale+ Device Packaging and Pinouts (UG1075) [Ref 18] for details. See Constraining the Core .

Table 3-44: Hard FEC Wrapper IP Interface Signals

Port

Direction

Clock Domain

Description

rx_fast_clk

In

N/A

Hard FEC wrapper clock 368.64 MHz, used on the 66bit ingress and egress datapaths.

rx_fast_reset

In

rx_fast_clk

Hard FEC wrapper reset. Active-High input.

hires_clk

In

N/A

High resolution sampling clock used to measure the transit time of the clock domain crossing FIFOs. Must be at least 380 MHz.

rsfec_clk

In

N/A

RS-FEC clock input:

294.912 MHz for 24.3G Hard FEC cores

184.32 MHz for 12.1G Hard FEC cores

153.6MHz for 10.1G Hard FEC cores

122.88MHz for 8.1G Hard FEC cores

For 24.3G Hard FEC cores this clock should be generated from the rx_fast_clk (368.64MHz).

For 12.1G, 10.1G and 8.1G Hard FEC cores this clock should be the same as the rx_fast_clk.

all_clk_locked

In

N/A

Assert High when rx_fast_clk, rsfec_clk and hires_clk input clocks are all stable.

rsfec_enable_correction

In

rx_fast_clk

When set High, enables FEC correction.

rsfec_enable_indication

In

rx_fast_clk

When set High, enables FEC indication of total CWs and corrected and uncorrected CWs.

rx_rsfec_enable_chx

In

rx_rec_clk_chx

Hard FEC wrapper channel enable input from CPRI lanes 0-3. Drive high to enable each CPRI channel through the RS-FEC.

rx_rec_clk_chx

In

N/A

Recovered clock from CPRI lanes 0-3.

rx_serdes_data_chx(63:0)

In

rx_rec_clk_chx

64-bit data from CPRI lanes 0-3.

rx_serdes_head_chx(1:0)

In

rx_rec_clk_chx

2-bit header from CPRI lanes 0-3.

rx_gbx_slip_chx

Out

rx_rec_clk_chx

Receive gearbox slip output to GTs in CPRI lanes 0-3. Slips the GT gearbox contents when pulsed high.

cdc_reset_chx

In

rx_fast_clk

Hold CDC FIFO in reset until clocks are stable.

fifo_fill_level_chx(8:0)

In

Management Clock

In master cores the starting level of the CDC FIFO can be set using this input port. By default the CDC FIFO fills to fill_level=64 before reading is enabled. To reduce latency, at the expense of reduced cable length support, the FIFO fill level can be reduced.

average_chx(16:0)

Out

hires_clk

Averaged CDC FIFO transit time value. This value can be converted to UI by multiplying by 66 and dividing by 256.

average_rdy_chx

Out

hires_clk

Averaged CDC FIFO transit time value ready.Handshake signal used for transferring the CDC average value from the source clock domain to the destination clock domain of the external CPRI cores 0-3. (3)

average_ack_chx

In

Management Clock

Averaged CDC FIFO transit time value acknowledge. Handshake signal used for transferring the CDC average value from the source clock domain to the destination clock domain of the external CPRI cores 0-3. (3)

fifo_error_chx

Out

rx_fast_clk

Indicates a FIFO full or FIFO empty condition. This will cause cdc_reset to assert.

cdc_rxdata_chx(63:0)

Out

rx_fast_clk

64-bit data from Hard FEC wrapper to CPRI lanes 0-3. This is the data from the read port of the CDC FIFO is intended to be used by the receiving CPRI core for non-FEC line rates.

cdc_rxheader_chx(1:0)

Out

rx_fast_clk

2-bit header from Hard FEC wrapper to CPRI lanes 0-3. This is the header from the read port of the CDC FIFO and is intended to be used by the receiving CPRI core for non-FEC line rates.

pcs_rxdata_chx(63:0)

Out

rx_fast_clk

64-bit data from Hard FEC wrapper to CPRI lanes 0-3.

pcs_rxheader_chx(1:0)

Out

rx_fast_clk

2-bit header from Hard FEC wrapper to CPRI lanes 0-3.

pcs_rxheadervalid_chx

Out

rx_fast_clk

This output indicates the start of a codeword on CPRI lanes 0-3.

stat_rx_aligned_status_chx

Out

rx_fast_clk

When High this signal indicates that alignment to the incoming codeword boundary position has been achieved and the receiver is accepting and processing data.

stat_cw_inc_chx

Out

rx_fast_clk

Active-High pulse Indicates a received RS-FEC codeword.

stat_corrected_cw_inc_chx

Out

rx_fast_clk

Active-High pulse Indicates a corrected RS-FEC codeword.

stat_uncorrected_cw_inc_chx

Out

rx_fast_clk

Active-High pulse Indicates an uncorrected RS-FEC codeword.

hfec_fifo_latency_chx(15:0)

Out

rx_fast_clk

Variable latency through the Hard FEC Wrapper to CPRI channels 0-3. This value can be used to perform the delay measurement calculation described in Delay Measurement and Requirement 21 (R21) in hardware. The value is the number of rx_fast_clk clock cycles. Multiply by 66 to get the latency in UI.

hfec_fifo_latency_rdy_chx

Out

rx_fast_clk

Hard FEC FIFO Latency ready signal. Handshake signal used for clock domain crossing the latency value from the Hard FEC wrapper to the external CPRI cores 0-3. Signal is high when the latency value is ready to be transferred.

hfec_fifo_latency_ack_chx

In

Management Clock

Channel (0-3)

Hard FEC FIFO Latency acknowledge signal. Handshake signal used for clock domain crossing the latency value from the Hard FEC wrapper to the external CPRI cores 0-3. If it is not necessary to perform clock crossing on hfec_fifo_latency_chx, these ports should be permanently driven High. Otherwise wait until ready signal is high and then pulse acknowledge High when the latency value has been transferred.

Notes:

1. Where _chx refers to external CPRI channels 0, 1, 2, or 3.

2. In hard FEC wrapper IP designs where Xilinx CPRI IP cores are not being used, the following handshake mechanism should be used to transfer the CDC FIFO average value from the hard FEC wrapper clock domain to your own CPRI core clock domain. The signal average_ack_chx should be pulsed High when average_chx(16:0) has been read by the external CPRI core. The hard FEC wrapper will then update average_chx(16:0) with a new value. When the new value is valid the hard FEC wrapper asserts High average_rdy_chx .

3. If using Xilinx CPRI IP cores the handshake logic does this automatically.