Arbre d’horloge FPGA et budget de gigue : pourquoi votre lien haute vitesse continue d’échouer
PCIe qui drop occasionnellement, JESD204B qui ne verrouille pas, lien vidéo qui scintille — souvent ce n’est pas le code RTL, c’est le design d’horloge. Les transceivers haute vitesse FPGA sont extrêmement sensibles à la gigue de l’horloge de référence, et chaque étage de l’arbre d’horloge depuis l’oscillateur → buffer d’horloge → réseau global FPGA ajoute de la gigue. Cet article explique comment calculer le budget de gigue, concevoir l’arbre d’horloge et éviter les pièges courants.
1. Pourquoi les liens haute vitesse craignent la gigue
Les transceivers haute vitesse FPGA (GTP/GTH/GTY) utilisent une récupération d’horloge embarquée (CDR), mais la qualité de l’horloge récupérée dépend de l’horloge de référence. Une gigue excessive de l’horloge de référence cause :
- Dégradation du BER PCIe : gigue RMS de l’horloge de référence > 1 ps, le Gen3 BER peut se dégrader de 1e-12 à 1e-8.
- Échec de synchronisation JESD204B : gigue SYSREF excessive, LMFC ne peut pas s’aligner, le lien ne verrouille tout simplement pas.
- Scintillement du lien vidéo : la gigue de l’horloge pixel décale les points d’échantillonnage, causant de la gigue ou des bandes horizontales.
- Perte de marge de temporisation DDR : la gigue d’horloge grignote la marge setup/hold, erreurs mémoire à haute température.
Formule clé : la gigue est additive — chaque étage de l’arbre d’horloge ajoute de la gigue ; la gigue totale est le RSS (racine carrée de la somme des carrés), pas la somme simple.
2. Comment calculer le budget de gigue
Prenons PCIe Gen3 x8 en exemple : la gigue RMS de l’horloge de référence doit être ≤ 1 ps (intégration 12 kHz ~ 20 MHz). Calcul étage par étage :
| Étape de l’arbre d’horloge | Gigue (RMS) | Notes |
|---|---|---|
| Oscillateur à cristal (XO) | 0,3 ps | OCXO à faible bruit de phase, 100 MHz |
| Buffer d’horloge | 0,5 ps | Si5341 ou série 8T49N |
| Trace PCB + vias | 0,2 ps | Microstrip 5 cm, impédance continue |
| Réseau d’horloge global FPGA | 0,3 ps | MRCC → BUFG → SERDES |
| Gigue totale (RSS) | √(0,3²+0,5²+0,2²+0,3²) ≈ 0,67 ps | Sous la spécification 1 ps, 33 % de marge |
Que faire si le budget est dépassé
Si la gigue totale calculée est de 1,2 ps, dépassant l’exigence 1 ps de PCIe Gen3, optimisez par ordre de priorité :
- Passer à un oscillateur à plus faible gigue : TCXO ordinaire 1 ps → OCXO descend à 0,3 ps, amélioration immédiate.
- Meilleur buffer d’horloge : supprimer les buffers redondants, utiliser un IC d’horloge dédié (Si5341 vs buffer GPIO).
- Raccourcir la trace PCB : oscillateur proche du FPGA, trace ≤ 5 cm, éviter les vias.
- Bonne désacouplement d’alimentation : LDO alimente l’IC d’horloge séparément, pas partagé avec les circuits numériques.
3. Structure de l’arbre d’horloge FPGA
L’arbre d’horloge interne du FPGA n’est pas une ligne simple mais un buffer multi-étages :
| Étape | Ressource | Usage | Gigue ajoutée |
|---|---|---|---|
| 1. Entrée externe | Broche d’horloge (MRCC/SRCC) | Entrée oscillateur / horloge externe | — |
| 2. MMCM/PLL | Gestionnaire d’horloge mode mixte | Multiplier, diviser, ajuster la phase | ≈ 0,1~0,3 ps |
| 3. Buffer global | BUFG / BUFGCE | Piloter tout le réseau logique FPGA | ≈ 0,1 ps |
| 4. Horloge régionale | BUFH / BUFR | Domaine d’horloge local, faible gigue | ≈ 0,05 ps |
| 5. Horloge SERDES | CPLL / QPLL | Horloge de référence du transceiver haute vitesse | ≈ 0,2 ps |
Règles clés
- Les horloges des transceivers haute vitesse doivent utiliser des broches dédiées : les broches d’horloge de référence GTH/GTY sont fixes, ne peuvent pas utiliser d’IO ordinaire.
- Ne pas cascader trop d’étages MMCM/PLL : deux PLL en cascade ajoutent de la gigue ; un étage vaut mieux que deux.
- Franchir les domaines d’horloge avec FIFO : ne franchissez pas les domaines dans la logique ; la métastabilité cause des erreurs aléatoires.
- L’horloge SDR/ADC doit être homogène avec l’horloge de données : JESD204B nécessite que Device Clock et SYSREF soient homogènes et synchronisés.
4. Trois pièges d’horloge courants
Piège 1 : oscillateur trop proche de l’alimentation à découpage
Le ripple DC-DC (niveau mV) module la sortie de l’oscillateur, aggravant la gigue de 2~3×. Correction : éloignez l’oscillateur du DC-DC, utilisez un LDO pour une alimentation séparée, ajoutez une ferrite.
Piège 2 : SYSREF JESD204B non aligné
SYSREF aligne LMFC (local multi-frame clock). Si SYSREF et Device Clock ne sont pas homogènes, ou si le skew de trace est trop grand, le lien perd aléatoirement le verrouillage. Correction : SYSREF et Device Clock sortent du même IC d’horloge, longueur de trace appariée.
Piège 3 : utiliser une IO ordinaire comme horloge de référence SERDES
Les transceivers haute vitesse FPGA ont des broches d’horloge de référence dédiées (par ex. MGTREFCLK0P/N). Si vous connectez l’oscillateur à une IO ordinaire, vous pouvez multiplier l’horloge pour la logique, mais le CDR SERDES ne verrouillera pas — la gigue inclut le bruit du réseau d’horloge global.
La moitié de la fiabilité des liens haute vitesse FPGA vient du design logique, l’autre moitié du design d’horloge. Calculez correctement le budget de gigue, construisez l’arbre d’horloge correctement, et faites bien la désacouplement d’alimentation — beaucoup de « chutes intermittentes de lien » disparaissent. L’horloge n’est pas magique ; c’est un problème d’ingénierie que vous pouvez calculer.
