Receiver Offset Control in HP I/O Banks - Receiver Offset Control in HP I/O Banks - UG861

Spartan UltraScale+ FPGAs SelectIO Resources User Guide (UG861)

Document ID
UG861
Release Date
2026-04-28
Revision
1.1 English

In HP I/O banks, for a subset of I/O standards, the UltraScale architecture provides the option of canceling the inherent offset of the input buffers that occurs due to process variations (up to ±35 mV). This feature can be accessed through IBUFE3, IBUFDSE3, IOBUFE3, and IOBUFDSE3 primitives as shown in the following two figures. Offset calibration requires building control logic into your interconnect logic design.

Note: Receiver offset control is not available in HD I/O or XP5IO I/O.
Figure 1. Offset Calibration Connections for Single-Ended I/O Standards
Figure 2. Offset Calibration Connections for Differential I/O Standards
  1. The offset cancellation feature is activated for the supported I/O standards when:
    1. Offset control attribute OFFSET_CNTRL is set to FABRIC.
    2. OSC_EN port is set to 1'b1 (single-ended I/O standards) or 2'b11 (for differential I/O standards).
    Important: The value of 2'b10 or 2'b01 is illegal when using OSC_EN for differential I/O standards.
  2. After the offset cancellation feature is activated, the input to the buffer is pulled-up to VREF (in differential I/Os, both legs are pulled-up to VREF). Based on the inherent offset of the buffer, the output (O) is either a logic 1 or 0. A logic 1 suggests a positive offset. A logic 0 suggests a negative offset. In simulation, this hardware behavior can be mimicked by setting the simulation-only attribute SIM_INPUT_BUFFER_OFFSET to a negative or positive value from –50 mV to +50 mV. This simulation-only attribute is supported with IBUFE3, IBUFDSE3, IOBUFE3, and IOBUFDSE3 primitives.
  3. Based on the value of O, the FABRIC calibration logic should sweep OSC[3:0] in the positive or negative direction until O is seen to flip. The value where O flips is the required offset to cancel the inherent offset of the buffer. The following table shows the approximate amount of offset cancellation provided by each setting of OSC.
    Table 1. Approximate Amount of Offset Cancellation for Each Setting of OSC
    OSC[3:0] Estimated Offset Cancellation (mV)
    0000 0
    0001 –5
    0010 –10
    0011 –15
    0100 –20
    0101 –25
    0110 –30
    0111 –35
    1000 0
    1001 5
    1010 10
    1011 15
    1100 20
    1101 25
    1110 30
    1111 35

    For example, if the buffer input offset is 15 mV, setting OSC[3:0] = 1011 cancels the offset. If the buffer input offset is –10 mV, setting OSC[3:0] = 0010 cancels the offset.

  4. If O does not flip, even at the maximum possible offset (–35 mV or 35 mV), OSC should be set to the maximum –35 mV (0111 ) if O stays at a logic 1 throughout, or +35 mV (1111) if O stays at a logic 0 throughout and continue to step 5.
  5. After the required offset is determined, OSC_EN should be turned off by setting it to 1'b0 (single ended I/O standards) or 2'b00 (differential I/O standards) and normal operation can resume.
Important: OSC[3:0] is a shared bus among all the I/Os within a half bank (26 consecutive I/Os in the top half or bottom half of a bank).

The I/O standards that support receiver offset control are shown in the following table.

Table 2. I/O Standards Supporting Receiver Offset Control
POD DIFF_POD
POD12 DIFF_POD12
POD12_DCI DIFF_POD12_DCI