Why FPGA IBERT Test Fails with Optical Modules
Why Your FPGA IBERT Test Fails with Optical Modules
First, it's necessary to explain some optical module-related terminology. Make sure you understand the following terms before use
What is IBERT
IBERT (Integrated Bit Error Ratio Tester) is an integrated bit error rate testing tool provided by Xilinx/AMD inside FPGAs. It uses the GTH/GTY and other high-speed transceivers of FPGAs to generate and transmit PRBS pseudo-random sequences, while receiving and verifying data to count the Bit Error Rate (BER).
Functions of IBERT:
- Verify if the FPGA high-speed SerDes hardware link is normal (PCB traces, connectors, cables, optical modules)
- Adjust TX pre-emphasis/de-emphasis and RX equalizer parameters
- Measure Eye Diagram and Bit Error Rate (BER)
- No need to write any RTL code, can be used directly by generating IP in Vivado
PRBS Pseudo-Random Sequence Patterns
The test patterns used by IBERT are PRBS (Pseudo-Random Binary Sequence), generated by Linear Feedback Shift Registers (LFSR). The characteristics of PRBS sequences with different orders are as follows:
| Pattern | Sequence Length | Max Consecutive Identical Digits (CID) | Spectral Characteristics | Test Strictness |
|---|---|---|---|---|
| PRBS-7 | 2⁷−1 = 127 bits | 7 bits | More low-frequency components, high transition density | ★☆☆ Least Strict |
| PRBS-9 | 2⁹−1 = 511 bits | 9 bits | Medium | ★★☆ Medium |
| PRBS-15 | 2¹⁵−1 = 32767 bits | 15 bits | Wide | ★★★ Relatively Strict |
| PRBS-23 | 2²³−1 ≈ 8M bits | 23 bits | Wider | ★★★★ Strict |
| PRBS-31 | 2³¹−1 ≈ 2G bits | 31 bits | Closest to real random data | ★★★★★ Most Strict |
Key Difference Explanation
- Max Consecutive Identical Digits (CID): The maximum consecutive 0s or 1s of PRBS-N is N bits. Longer CID puts more pressure on the receiver's CDR (Clock Data Recovery), as long periods without transitions can cause CDR loss of lock.
- Longer sequence: The spectrum is closer to white noise, providing more comprehensive channel testing (covering more frequency components).
- PRBS-7: Short sequence, high transition density, friendly to CDR, easy to lock, suitable for initial debugging.
- PRBS-31: Extremely long sequence, maximum 31-bit consecutive identical digits pose the greatest challenge to CDR, making it the strictest pattern for channel quality assessment.
Which Pattern Should Be Used for Evaluation?
| Scenario | Recommended Pattern | Reason |
|---|---|---|
| Initial debugging, confirming basic link connectivity | PRBS-7 | CDR locks easily, quickly determine if the link is connected |
| Routine product verification, optical module testing | PRBS-23 | Common industry standard, recommended by IEEE 802.3 Ethernet specifications |
| Final product certification, strict BER evaluation | PRBS-31 | Most stringent conditions, can expose all potential issues |
| 25G/100G Ethernet optical module compliance testing | PRBS-31 | Required by SFF-8636 / IEEE specifications |
Practical advice: First use PRBS-7 to confirm basic link connectivity and CDR lock, then gradually upgrade to PRBS-31 for final evaluation. If PRBS-7 cannot lock, it indicates serious link issues (hardware failure or incorrect control signal configuration).
AOC DAC MPO SFP+ QSFP+ QSFP28 QSFP-DD
| Term | Full Name | Speed | Explanation |
|---|---|---|---|
| AOC | Active Optical Cable | - | Active optical cable with integrated photoelectric conversion chips at both ends and optical fiber in the middle, suitable for long-distance (1m~100m) interconnection |
| DAC | Direct Attach Cable | - | Direct attach copper cable (passive), high-speed copper cable, suitable for short-distance (≤5m) interconnection, low cost and low power consumption |
| MPO | Multi-fiber Push On | - | Multi-fiber connector standard, commonly found at the tail of QSFP optical modules, supporting 8/12/24 fibers |
| SFP+ | Small Form-factor Pluggable Plus | 1×10G = 10G | Small form-factor pluggable optical module, single channel |
| QSFP+ | Quad Small Form-factor Pluggable Plus | 4×10G = 40G | Quad small form-factor pluggable optical module, 10G per channel |
| QSFP28 | Quad Small Form-factor Pluggable 28 | 4×25G = 100G | Quad small form-factor pluggable optical module, 25G per channel |
| QSFP-DD | Quad SFP Double Density | 8×25G/50G = 200G/400G | Dual-density 8-channel optical module, backward compatible with QSFP28 |
What Are the Differences in Usage Between AOC and DAC?
In terms of cables and PIN definitions:
| Comparison Item | DAC (Direct Attach Copper) | AOC (Active Optical Cable) |
|---|---|---|
| Transmission Medium | High-speed copper cable (Twinax) | Optical fiber |
| Active/Passive | Passive (Passive DAC ≤5m) or Active (Active DAC ≤15m) | Active, with photoelectric conversion chips at both ends |
| Transmission Distance | Short distance ≤5m (passive), ≤15m (active) | Medium to long distance 1m~100m+ |
| Power Consumption | Extremely low (passive DAC ~0W) | Relatively high (~1W per chip at both ends) |
| Cost | Low | Medium |
| Bending Radius | Copper cable is thick with large bending radius | Optical fiber is thin and flexible with small bending radius |
| EMI | Copper cable may have electromagnetic interference | Optical fiber has no EMI issues |
| PIN Definition Differences | TX/RX differential pairs directly carry high-speed electrical signals | TX/RX differential pairs connect to laser driver / TIA chips inside the cable ends |
| Connector Compatibility | Compatible with QSFP28 cage, plug-and-play | Compatible with QSFP28 cage, plug-and-play |
In actual use, the high-speed SerDes differential pair electrical interfaces on the FPGA side are completely identical for DAC and AOC, with differences only in the cables themselves. Selection is mainly determined by transmission distance and wiring environment.
However, there are differences in the use of control signals (LPMode, ResetL, etc.):
| Control Signal | Passive DAC (Passive Copper Cable) | Active DAC / AOC (Active) |
|---|---|---|
| LPMode | Invalid -- No electronic components inside passive DAC, no power management required, can remain Low | Must be controlled correctly: Low = High power mode (normal operation), High = Low power mode (laser off) |
| ResetL | Invalid -- No internal logic to reset, can remain High | Normal reset timing must be executed, otherwise internal chips will not initialize |
| ModPrsL | Pulled low when module is inserted (normal response) | Pulled low when module is inserted (normal response) |
| ModSelL | I2C management invalid (no internal registers), state irrelevant | Must be pulled low to access internal registers |
| IntL | Always High (no alarm sources) | Valid, pulled low on temperature / RX LOS and other alarms |
Key Conclusion: Passive DAC has no internal electronic components, so control signals have no practical effect on it and no special processing is required on the FPGA side; while AOC and Active DAC contain active components such as lasers/TIAs inside, and LPMode and ResetL must be driven correctly, otherwise the module will not work properly.
QSFP28 Optical Module Usage
QSFP 1
QSFP28 Pin Layout
PIN Definitions are as follows:
| PIN Number | Signal Name | Direction / Explanation |
|---|---|---|
| 1, 4, 7, 13, 16, 19, 20, 23, 26, 32, 35, 38 | GND | Ground |
| 29 | VCCT | Transmitter side power supply (3.3V) |
| 30 | VCC1 | Core power supply (3.3V) |
| 10 | VCCR | Receiver side power supply (3.3V) |
| 11 | SCL | I2C Clock (management interface) |
| 12 | SDA | I2C Data (management interface) |
| 36, 37 | Tx1p, Tx1n | Transmit Channel 1 Differential Pair |
| 3, 2 | Tx2p, Tx2n | Transmit Channel 2 Differential Pair |
| 33, 34 | Tx3p, Tx3n | Transmit Channel 3 Differential Pair |
| 6, 5 | Tx4p, Tx4n | Transmit Channel 4 Differential Pair |
| 17, 18 | Rx1p, Rx1n | Receive Channel 1 Differential Pair |
| 22, 21 | Rx2p, Rx2n | Receive Channel 2 Differential Pair |
| 14, 15 | Rx3p, Rx3n | Receive Channel 3 Differential Pair |
| 25, 24 | Rx4p, Rx4n | Receive Channel 4 Differential Pair |
| 8 | ModSelL | Module Select (Active Low) |
| 9 | ResetL | Module Reset (Active Low) |
| 27 | ModPrsL | Module Present Detect (Active Low, pulled low when module is inserted) |
| 28 | IntL | Interrupt Output (Active Low, pulled low on module alarm) |
| 31 | LPMode | Low Power Mode Control (High = Low Power Mode) |
If operation at 100G speed is required, the constraints for LPMODE, MODPRSL, RESETL, MODSELL, etc. are as follows:
| Control Signal | State During Normal 100G Operation | Explanation |
|---|---|---|
| LPMode | Pulled Low | Low = High power mode, all 4 module channels enabled and working normally; High puts the module into low power mode (≤1.5W), only I2C management available |
| ModPrsL | Module Output Low | This signal is module output, automatically pulled low when inserted; FPGA side should pull up and detect this signal to determine if the module is present |
| ResetL | Pulled High | Module is in reset state when Low; after power-on, should keep Low ≥2ms, then release to High, wait for module initialization to complete (tInit ≤2s) |
| ModSelL | Pulled Low | Low = Module selected, I2C communication valid; when multiple modules share the I2C bus, select the target module through this signal |
| IntL | Module Output, High during normal operation | Pulled low when internal module alarms occur (overtemperature, RX LOS, etc.), FPGA can read specific alarm registers via I2C |
Recommended Power-on Sequence:
- After power-on, LPMode = High (low power), ResetL = Low (keep reset)
- After power stabilization (≥100ms), release ResetL = High
- Wait for module initialization to complete (detect IntL or wait 2s)
- Read module information and configure parameters via I2C
- Pull LPMode low to enter high power mode, 4 channels start normal transmission and reception
Hardware Design Note: As seen from the schematic, ModSelL, ResetL, ModPrsL, IntL, LPMode are all pulled up to QSPF_3V3 through 4.7KΩ resistors, complying with SFF-8636 specification requirements.
Therefore, in FPGA design for AOC or Active DAC, correct timing control of ResetL and LPMode must be noted; incorrect usage will cause the module to fail to work. There are no such constraints for Passive DAC.
Attached is the test on the Hello-FPGA-Z19EG development board, using 1 copper cable and 1 optical cable. The quality of the optical cable is significantly better than that of the copper cable https://imggrab.com/productinfo/257718.html



This is the eye diagram of the optical cable
Optical Cable Eye Diagram Test Result
This is the eye diagram of the copper cable
Copper Cable Eye Diagram Test Result
U
Summary: Why Does Your FPGA Fail to Communicate with Optical Modules?
If your FPGA high-speed link works with DAC but fails with AOC, there is almost only one reason -- control signals are not driven correctly.
Core Check Items:
- Is LPMode pulled low?
Pull-up resistors will keep LPMode high by default (low power mode), at which time the laser does not work and optical power is zero. Must be actively pulled low by FPGA. - Is ResetL released correctly?
Pull-up resistors will keep ResetL high by default (non-reset), but if the power-on sequence is incorrect, the module may not initialize properly. Should keep Low ≥ 2ms first, then High, wait 2s for initialization. - Why does Passive DAC work?
Because Passive DAC is just a copper wire inside, without any electronic components -- no power-on, no reset, no power management required -- plug and play. While AOC contains lasers and TIA chips inside, which must be powered on and initialized according to specifications to work normally.
One-sentence summary: DAC working does not mean the link is problem-free, and AOC not working does not mean hardware failure -- check if your FPGA correctly controls LPMode and ResetL.