Intel® Cyclone® 10 GX Transceiver PHY User Guide

ID 683054
Date 4/14/2023
Public
Document Table of Contents

6.16.1. Using PRBS Data Pattern Generator and Checker

Use the Cyclone® 10 GX PRBS generator and checker to simulate traffic and easily characterize high-speed links without fully implementing any upper protocol stack layer. The PRBS generator generates a self-aligning pattern and covers a known number of unique sequences. Because the PRBS pattern is generated by a Linear Feedback Shift Register (LFSR), the next pattern can be determined from the previous pattern. When the PRBS checker receives a portion of the received pattern, it can generate the next sequence of bits to verify whether the next data sequence received is correct.

The PRBS generator and checker are shared between the Standard and Enhanced datapaths through the PCS. Therefore, they have only one set of control signals and registers. The data lines from the various PCSs and shared PRBS generator are MUXed before they are sent to the PMA. When the PRBS generator is enabled, the data on the PRBS data lines is selected to be sent to the PMA. Either the data from the PCS or the data generated from the PRBS generator can be sent to the PMA at any time.

The PRBS generator and checker can be configured for two widths of the PCS-PMA interface: 10 bits and 64 bits. PRBS9 is available in both 10-bit and 64-bit PCS-PMA widths. All other PRBS patterns are available in 64-bit PCS-PMA width only. The PRBS generator and checker patterns can only be used when the PCS-PMA interface width is configured to 10 bits or 64 bits. For any other PCS-PMA width, to ensure the correct clocks are provided to the PRBS blocks you must first reconfigure the width to either 10 or 64 bits before using the PRBS generator and checker. For example, when the transceiver is configured to a 20-bit PCS/PMA interface, you must first reconfigure the PCS-PMA width to 10 bits before setting up the PRBS generator and checker. The PRBS setup does not automatically change the PCS/PMA width.

The 10-bit PCS-PMA width for PRBS9 is available for lower frequency testing. You can configure PRBS9 in either 10-bit or 64-bit width, based on the data rate. The FPGA fabric-PCS interface must run in the recommended speed range of the FPGA core. Therefore, you must configure PRBS9 in one of the two bit width modes, so that the FPGA fabric-PCS interface parallel clock runs in this operating range.

Examples:

  • If you want to use PRBS9 and the data rate is 2.5 Gbps, you can use the PRBS9 in 10-bit mode (PCS-PMA width = 10). In this case, the parallel clock frequency = Data rate / PCS-PMA width = 2500 Mbps/10 = 250 MHz.
  • If you want to use PRBS9 and the data rate is 6.4 Gbps, you can use the PRBS9 in 64-bit mode (PCS-PMA width = 64). In this case, the parallel clock frequency = Data rate / PCS-PMA width = 6400 Mbps/64 = 100 MHz.
  • If you want to use PRBS9 and the data rate is 12.5 Gbps, you can use the PRBS9 in 64 bit mode (PCS-PMA width = 64). In this case, the parallel clock frequency = Data rate / PCS-PMA width = 12500 Mbps/64 = 195.3125 MHz.
Table 215.   PRBS Supported Polynomials and Data WidthsUse the 10-bit mode of PRBS9 when the data rate is lower than 3 Gbps.
Pattern Polynomial 64-Bit 10-Bit
PRBS7 G(x) = 1+ x6 + x7 X  
PRBS9 G(x) = 1+ x5 + x9 X X
PRBS15 G(x) = 1+ x14 + x15 X
PRBS23 G(x) = 1+ x18 + x23 X
PRBS31 G(x) = 1+ x28 + x31 X

The PRBS checker has the following control and status signals available to the FPGA fabric:

  • rx_prbs_done—Indicates the PRBS sequence has completed one full cycle. It stays high until you reset it with rx_prbs_err_clr.
  • rx_prbs_err—Goes high if an error occurs. This signal is pulse-extended to allow you to capture it in the RX FPGA CLK domain.
  • rx_prbs_err_clr—Used to reset the rx_prbs_err signal.

Enable the PRBS checker control and status ports through the Native PHY IP Parameter Editor in the Quartus Prime software.

Use the PRBS soft accumulators to count the number of accumulated bits and errors when the hard PRBS blocks are used. For more information about using the accumulators and reading the error values, refer to the PRBS Soft Accumulators section.

Table 216.   Register Map for PRBS Generators for bonded and non bonded designs
Description Reconfiguration Address Reconfiguration Bits Value Attribute Encoding Attribute Name
Select PRBS generator block 0x006 [2:0] 3'b100 prbs_pat tx_pma_data_sel
0x008 [6:5] 2'b00
Enable PRBS 9 in 10-bit mode 0x006 [3] 1'b1 prbs9_10b prbs9_dwidth
Enable PRBS 9 in 64-bit mode 1'b0 prbs9_64b
Enable PRBS generator clock 0x006 [6] 1'b1 prbs_clk_en prbs_clken
Disable PRBS generator clock 1'b0 prbs_clk_dis
Enable PRBS 7 pattern 0x007 [7:4] 4'b0001 prbs_7 prbs_gen_pat
0x008 [4] 1'b0
Enable PRBS 9 pattern 0x007 [7:4] 4'b0010 prbs_9
0x008 [4] 1'b0
Enable PRBS 15 pattern 0x007 [7:4] 4'b0100 prbs_15
0x008 [4] 1'b0
Enable PRBS 23 pattern 0x007 [7:4] 4'b1000 prbs_23
0x008 [4] 1'b0
enable PRBS 31 pattern 0x007 [7:4] 4'b0000 prbs_31
0x008 [4] 1'b1
Serializer 64-bit width mode 0x110 [2:0] 3'b011 sixty_four_bit ser_mode
Serializer 10-bit width mode 3'b100 ten_bit
Enable xN non bonding 0x111 [4:0] 5'b11000 xN_non_bonding36 x1_clock_source_sel
0x119 [0] 1'b0
Table 217.  Register Map for PRBS Checker for bonded and non bonded designs
Description Reconfiguration Address Reconfiguration Bits Value Attribute Encoding Attribute Name
Enable PRBS checker clock 0x00A [7] 1'b1 prbs_clk_en prbs_clken
Disable PRBS checker clock 1'b0 prbs_clk_dis
Mask out the initial errors (from error counter threshold to 1023) seen by PRBS checker 0x00B [3:2] 2'b11 prbsmask1024 rx_prbs_mask
Mask out the initial errors (from error counter threshold to 127) seen by PRBS checker 2'b00 prbsmask128
Mask out the initial errors (from error counter threshold to 255) seen by PRBS checker 2'b01 prbsmask256
Mask out the initial errors (from error counter threshold to 511) seen by PRBS checker 2'b10 prbsmask512
Enable PRBS 7 pattern 0x00B [7:4] 4'b0001 prbs_7 prbs_ver
0x00C [0] 1'b0
Enable PRBS 9 pattern 0x00B [7:4] 4'b0010 prbs_9
0x00C [0] 1'b0
Enable PRBS 15 pattern 0x00B [7:4] 4'b0100 prbs_15
0x00C [0] 1'b0
Enable PRBS 23 pattern 0x00B [7:4] 4'b1000 prbs_23
0x00C [0] 1'b0
Enable PRBS 31 pattern 0x00B [7:4] 4'b0000 prbs_31
0x00C [0] 1'b1
PRBS 9 10-bit 0x00C [3] 1'b1 prbs9_10b prbs9_dwidth
PRBS 9 64-bit 1'b0 prbs9_64b
Deserialization factor 10-bit mode 0x13F [3:0] 4'b0001 10-bit mode deser_factor
Deserialization factor 64-bit mode 4'b1110 64-bit mode
36

The pattern generators and checkers are supported only for non-bonded channels. If original design is bonded and you would like to use the PRBS generator/checker, you must read and save the value in registers 0x119[0], 0x111[4:0] before changing the x1_clock_source_sel settings to xN_non_bonding (by writing 5'b11000 to 0x119[0], 0x111[4:0]). This changes the design from bonded to non-bonded.

To disable the PRBS generator and restore the design back to original bonded design, you need to restore the original value that was previously saved from registers 0x119[0], 0x111[4:0].