The PCI Express Gen1, Gen2, and Gen3 protocol specification states a maximum channel loss requirement; however, this requirement may not always be achievable in all systems. Because Stratix® V transceivers are programmable, a higher channel loss can be compensated for than defined by the PCI Express specification. This application note presents a method to compensate for a higher channel loss.
The Quartus® II software provides two PHY IP cores that implement the PCI Express protocol:
- PHY IP Core for PCI Express (PIPE)
- Stratix® V Hard IP for PCI Express
Each core contains pre-determined transmitter PMA settings to achieve the channel loss requirement as defined in the PCI Express specification. The PMA presets are automatically enabled at run time.
Both implementations of the PCI Express core have connections for the Stratix V Transceiver Reconfiguration Controller. The Reconfiguration Controller is a required IP when using Stratix V transceivers and provides the necessary calibration logic to tune the transceivers for optimal performance. Furthermore, the Reconfiguration Controller also provides access to the PMA registers to allow dynamic control of the PMA settings.
Controlling the PMA settings for the PCI Express core requires two steps:
- Bypass the PCI Express presets
- Modify the PMA settings
In the Assignment Editor, set the Transmitter VOD/Preemphasis Control Source assignment to
Specify the transmitter port name of the PCI Express core in the To field.
Alternatively, use the following QSF assignment:set_instance_assignment -name XCVR_TX_VOD_PRE_EMP_CTRL_SRC DYNAMIC_CTL -to <transmitter port>The assignment must be made to all transmitter channels that require the PCI Express presets to be bypassed. After the assignments are applied, the PCI Express presets are no longer used.Note: This QSF assignment is applicable to Cyclone® V and Arria® V devices as well.
The default PMA settings are used after device bring-up or during programming. The default PMA settings are defined in the Statically Modifying the PMA Settings section.
After the PCI Express preset PMA settings have been bypassed, the Reconfiguration Controller has access to the PMA registers. Use the Avalon® interface in the Reconfiguration Controller to dynamically modify the transmitter PMA settings.
- Read the control and status register at 0xA. Bit 8, the busy bit, must be set to 0 before continuing to step 2.
- Write the logical interface number of the lane to be modified to address 0x8.
- Write the PMA offset address to 0xB. The PMA offset addresses are shown in the table below.
- Write the appropriate data value to the data register at 0xC.
- Write the control and status register write bit with 1'b1 to 0xA.
- Read the control and status register busy bit. When busy = 0, the Transceiver Reconfiguration Controller has updated the logical channel specified in step 2 with the data specified in step 3.
|0x0||[5:0]||RW||VOD||The following encoding is defined:
|0x1||[4:0]||RW||Pre-emphasis pre-tap||The following encodings are defined:
|0x2||[4:0]||RW||Pre-emphasis first post-tap||The following encoding is defined:
|0x3||[4:0]||RW||Pre-emphasis second post-tap||The following encodings are defined:
The following example shows the reconfiguration steps required to change the VOD setting to 40 on logical interface 0.
Example 1. Reconfiguration Steps for Changing the VOD Setting
- write_32 0x8 0x0 #Set logical channel 0
- write_32 0xB 0x0 #Set offset to VOD
- write_32 0xC 0x28 #Set data register to 40
- write_32 0xA 0x1 #Write all data
After the PCI Express preset PMA settings have been bypassed, use the Assignment Editor to statically tune the PMA settings. The Assignment Editor contains all applicable transmitter PMA assignments. The PMA assignments you make are incorporated into the Stratix V programming file. The available assignments are:
- Transmitter Differential Output Voltage
- Transmitter Pre-emphasis Pre-Tap
- Transmitter Pre-emphasis First Post-Tap
- Transmitter Pre-emphasis Second Post-Tap
These assignments must be applied to the PCI Express transmitter ports.
Alternatively, you can use the following QSF assignments:
set_instance_assignment -name XCVR_TX_VOD <value> -to <transmitter port> set_instance_assignment -name XCVR_TX_PRE_EMP_1ST_POST_TAP <value> -to <transmitter port> set_instance_assignment -name XCVR_TX_PRE_EMP_PRE_TAP <value> -to <transmitter port> set_instance_assignment -name XCVR_TX_PRE_EMP_2ND_POST_TAP <value> -to <transmitter port>
After these assignments are made, the programming file that is generated after compilation will contain the PMA settings you specified instead of the preset ones.
|February 2016||2016.02.05||Added information about Arria V and Cyclone V devices.|
|December 2012||2012.12.19||Initial release.|