Skip to content

Niveau 9 · Chapitre 9.5

Signaux dans les fils et les fibres

Comment voyagent les bits : délai de propagation (30 cm par nanoseconde dans le vide, environ moitié moins sur un circuit imprimé), lignes de transmission, réflexions et adaptation d’impédance, décalage d’horloge, pourquoi PCIe, USB et Ethernet utilisent des paires différentielles, fibre optique et réflexion totale interne, décibels et limite de Shannon — tout calculé.

Stocker un bit n’est que la moitié du travail ; l’autre moitié, c’est le déplacer. À l’intérieur d’une puce, les bits circulent sur les fils limités par RC du premier chapitre. Entre les puces, à travers une carte, le long d’un câble ou sous un océan, ils voyagent sous forme d’ondes électromagnétiques guidées par du cuivre ou du verre. Ce chapitre couvre la physique qui décide de la vitesse et de la portée : la vitesse de l’onde, ce qui se passe au bout d’un fil, pourquoi les liaisons rapides utilisent des paires de fils, comment une fibre garde la lumière à l’intérieur, et la limite absolue du nombre de bits par seconde qu’un canal peut transporter.

L’organisation de ces liaisons en bus et en protocoles relève des niveaux supérieurs : Bus réels : PCI, PCI Express et USB au niveau de la logique numérique et Des modems à Ethernet au niveau des composants.

À quelle vitesse va un signal

Un changement de tension ne se propage pas le long d’un fil parce que les électrons y foncent — ils dérivent à des fractions de millimètre par seconde, comme l’a calculé le premier chapitre. Il se propage comme une onde électromagnétique dans l’espace autour et entre les conducteurs, et sa vitesse dépend de l’isolant qui remplit cet espace :

v = c / √εr

où c = 299 792 458 m/s est la vitesse de la lumière dans le vide (exacte, par définition du mètre) et εr la permittivité relative de l’isolant. Dans une fibre, l’indice de réfraction n du verre joue le même rôle : v = c/n.

c = 299792458
print(c * 1e-9 * 100, "cm per ns")                 # 29.98
for name, er in [("coax, polyethylene", 2.25), ("board microstrip (eff.)", 3.0),
                 ("board stripline, FR-4", 4.0)]:
    v = c / er**0.5
    print(name, v / c, v * 1e-9 * 100, "cm/ns", 1e-3 / v * 1e12, "ps/mm")
print("fiber", 1 / 1.468, c / 1.468 * 1e-9 * 100)  # n ≈ 1.468
MilieuVitesse (fraction de c)cm par nsDélai par mm
vide130,03,3 ps
câble coaxial (polyéthylène)0,6720,05,0 ps
fibre (n ≈ 1,468)0,6820,44,9 ps
piste de circuit imprimé, couche externe (εeff ≈ 3)0,5817,35,8 ps
piste de circuit imprimé, couche interne (FR-4, εr ≈ 4)0,5015,06,7 ps
1 mm de fil sur puce, limité par RC——~255 ps (premier chapitre)

Quelques conséquences :

  • En une nanoseconde, la lumière parcourt 30 cm dans le vide — environ un pied. Pendant un cycle d’une horloge à 5 GHz (200 ps), elle parcourt 6 cm.
  • Un signal qui traverse une piste de 30 cm sur une couche interne de carte mère met environ 2 ns : 8 cycles d’un processeur à 4 GHz, avant qu’aucune logique n’ait travaillé.
  • Une requête vers une puce de DRAM à 10 cm et son retour parcourent 20 cm, soit au moins 1,3 ns à la moitié de la vitesse de la lumière. La latence mémoire a un plancher qu’aucune astuce de circuit n’enlève.

Tanenbaum donne 20 cm/ns pour les signaux « dans un fil de cuivre ou une fibre optique ». C’est juste pour la fibre et les câbles courants. Sur un circuit imprimé, où l’isolant est un stratifié verre-époxy (FR-4), les signaux vont à 15–17 cm/ns. Et sur la puce elle-même, les longs fils sont bien plus lents que tout cela à cause de leur résistance.

Les fils comme lignes de transmission

À basse vitesse, un fil n’est qu’une connexion : la tension est la même sur toute sa longueur. Ce n’est plus vrai dès qu’un signal change plus vite qu’il ne parcourt le fil. Un front montant qui met 100 ps pour aller de 0 à 1 s’étale sur 1,5 cm de piste à la moitié de la vitesse de la lumière :

print(100e-12 * 0.5 * c * 100, "cm")   # 1.5 cm

Toute piste plus longue qu’une fraction de cette distance — c’est-à-dire pratiquement toute piste rapide d’une carte — porte, au même instant, des tensions différentes en différents points. Elle se comporte comme une ligne de transmission : une onde qui se déplace le long d’une paire de conducteurs (la piste de signal et le plan de masse en dessous).

Une ligne de transmission a une impédance caractéristique Z₀ = √(L/C), où L et C sont son inductance et sa capacité par unité de longueur. Z₀ est fixée par la géométrie — largeur de piste, distance au plan de masse, isolant — et non par la longueur. C’est le rapport entre tension et courant dans l’onde qui se propage : une ligne de 50 Ω attaquée par un échelon de 1 V tire 20 mA pendant que le front la parcourt, quoi qu’il y ait au bout, jusqu’à ce que le front y arrive.

Les réflexions

Quand l’onde atteint le bout de la ligne, elle rencontre une charge d’impédance ZL. Si ZL est égale à Z₀, la charge absorbe l’onde exactement comme la ligne l’aurait transportée, et rien ne revient. Sinon, une partie de l’onde est réfléchie vers la source, avec un coefficient de réflexion :

Γ = (Z_L − Z₀) / (Z_L + Z₀)

G = lambda zl, z0=50: (zl - z0) / (zl + z0)
for zl in (50, 75, 100, 25, 0, float("inf")):
    print(zl, G(zl) if zl != float("inf") else 1.0)
Charge au bout d’une ligne de 50 ΩΓCe qui revient
50 Ω (adaptée)0rien
75 Ω+0,20un cinquième de l’onde, même signe
100 Ω+0,33un tiers, même signe
25 Ω−0,33un tiers, inversé
court-circuit−1tout, inversé
circuit ouvert (une entrée de porte)+1tout : la tension double au bout

Une entrée CMOS est proche d’un circuit ouvert, donc une ligne non terminée réfléchit presque tout le front. La réflexion repart, se réfléchit de nouveau sur l’émetteur, et le récepteur voit le signal osciller (ringing) — dépassements, creux, faux fronts — pendant plusieurs allers-retours. Le remède est la terminaison : une résistance égale à Z₀ au bout de la ligne (ou en série côté source) pour que l’onde soit absorbée. La description du SCSI par Tanenbaum, où le dernier périphérique du câble devait être terminé pour empêcher les réflexions, montre cet effet sur un câble des années 1980. Aujourd’hui, les puces de mémoire DDR activent et désactivent des résistances de terminaison internes (terminaison intégrée, on-die termination), et les récepteurs série rapides en ont d’origine.

Des bits en vol

À vitesse suffisante, un fil contient plusieurs bits à la fois, comme un pipeline. Une voie PCIe 5.0 fonctionne à 32 gigatransferts par seconde, donc chaque bit dure 31,25 ps :

ui = 1 / 32e9
t = 0.30 / (0.5 * c)             # 30 cm of board trace at c/2
print(ui * 1e12, t / ui)         # 31.25 ps per bit, 64 bits in flight
print(ui * 0.5 * c * 1000, "mm") # each bit occupies 4.7 mm of trace

Sur une piste de 30 cm, 64 bits sont sur le fil en même temps, chacun étant un tronçon de 4,7 mm de tension en mouvement.

À ces fréquences, le fil perd aussi une part croissante du signal. À haute fréquence, le courant ne circule que dans une fine couche externe du conducteur, l’épaisseur de peau, qui diminue comme 1/√f :

import math
rho, mu0 = 1.68e-8, 4e-7 * math.pi
for f in (60, 1e6, 1e9, 10e9):
    print(f, math.sqrt(rho / (math.pi * f * mu0)) * 1e6, "µm")
# 60 Hz: 8,422 µm   1 MHz: 65 µm   1 GHz: 2.1 µm   10 GHz: 0.65 µm

À 60 Hz, l’épaisseur de peau vaut 8,4 mm, plus que le rayon de n’importe quel fil ordinaire, donc le courant utilise tout le conducteur ; à 10 GHz, il n’utilise que les 0,65 µm extérieurs, et la résistance effective est bien plus élevée. L’isolant de la carte absorbe aussi davantage d’énergie aux hautes fréquences. Les composantes hautes fréquences d’un signal rapide sont donc bien plus atténuées que les basses, ce qui étale chaque bit sur ses voisins. Les récepteurs rapides corrigent cela avec des égaliseurs qui remontent les hautes fréquences, et les longs chemins sur carte ont besoin de retimers qui reçoivent et régénèrent le signal en route.

Le décalage d’horloge

Un circuit synchrone suppose que le front d’horloge atteint chaque bascule au même instant. Toute différence de temps d’arrivée est un décalage d’horloge (clock skew), et elle mord directement sur le cycle : une donnée lancée par une horloge en avance et capturée par une horloge en retard dispose de moins de temps que prévu.

Dans une puce, l’horloge est distribuée par un arbre de fils et de tampons soigneusement équilibré (l’arbre en H en est la forme classique : chaque chemin de la racine à une feuille a la même longueur), et les concepteurs limitent le décalage à une petite fraction du cycle — un objectif difficile quand un millimètre de fil fin sans tampon prend déjà un cycle entier. Les portes aussi ont un délai ; une chaîne de portes est le moyen classique de le mesurer sur une puce, avec un oscillateur en anneau, un nombre impair de portes inverseuses en boucle :

Logic · Mesurer le délai d’une porte avec un oscillateur en anneau

À essayer : Cliquez sur un interrupteur d’entrée du circuit (ou sur son bouton au-dessus) pour le basculer — les portes et la table de vérité suivent.

auto
0
gate delays
stable after 0
stable
state
loop
critical path
feedback: sequential
3
gates
ENNAND gate: output 1NOT gate: output 0NOT gate: output 11OUT
1 0 inputs changed, output switches next delayclick a switch to toggle it
ENOUT
0stable
1oscillates, period 6 delays

An odd number of inverting gates in a loop has no stable state. With EN = 1 the signal chases its own tail and the output toggles every 3 gate delays: the simulator detects the repeating state instead of settling. Real chips use this to measure gate speed.

Unit-delay model: every gate takes one step to react. With auto off, toggle switches and press step to watch the change travel gate by gate.

Avec EN activé, la sortie bascule tous les trois délais de porte : la période vaut six délais, deux fois le nombre de portes de la boucle. Sur silicium, un compteur de fréquence branché sur un oscillateur en anneau donne directement le délai d’une porte : c’est ainsi que les puces mesurent la vitesse de leurs propres transistors.

Entre les puces, c’est le décalage qui a tué les larges bus parallèles. Tanenbaum le montre en comparant PCI et PCI Express : les 32 ou 64 fils d’un bus parallèle n’ont jamais exactement le même délai, et plus le bus est rapide, plus cette différence représente une grande fraction du cycle. La réponse a été de passer en série et d’envoyer l’horloge avec les données : un récepteur série retrouve le rythme à partir des transitions du flux de bits lui-même (récupération d’horloge et de données), donc il n’y a pas de fil d’horloge séparé par rapport auquel se décaler. Une liaison à plusieurs voies a encore un décalage entre ses voies, mais chaque voie est cadencée indépendamment et le récepteur les réaligne dans des tampons. Le PATA est devenu SATA, le PCI est devenu PCIe, les ports d’imprimante parallèles sont devenus l’USB.

La transmission différentielle

Presque toutes les liaisons série rapides — PCIe, USB, SATA, Ethernet, HDMI, DisplayPort — transportent chaque signal sur une paire de fils, pilotés avec des tensions opposées. Le récepteur ne regarde que la différence entre les deux. On y gagne plusieurs choses à la fois :

  • Le rejet du bruit. Les parasites venant d’un fil voisin ou d’une alimentation touchent presque également les deux fils d’une paire bien couplée. La différence les annule (réjection de mode commun). Torsader la paire, comme dans un câble Ethernet, garde les deux fils également exposés.
  • De petites excursions. Comme le bruit s’annule en grande partie, le signal peut être faible : la norme LVDS utilise une différence d’environ 350 mV. Des excursions plus petites donnent des fronts plus rapides et, puisque l’énergie varie comme CV², moins de consommation.
  • Moins de rayonnement. Les deux courants opposés créent des champs qui s’annulent en grande partie à courte distance, donc la paire rayonne moins de parasites elle-même.
  • Sa propre référence. Le récepteur ne compare pas le signal à une masse qui pourrait être à une tension légèrement différente sur l’autre puce ou à l’autre bout d’un câble.

Une paire est elle aussi une ligne de transmission, spécifiée par son impédance différentielle : 85 Ω pour le PCIe, 90 Ω pour l’USB, 100 Ω pour la paire torsadée Ethernet. Le prix, c’est deux fils par signal — vite remboursé, puisque chaque paire va bien plus vite que ne le pourrait un fil unique.

La fibre optique

Sur de longues distances, le cuivre perd trop. La fibre optique transporte de la lumière à la place, dans un fil de verre extrêmement pur.

La lumière est retenue par réflexion totale interne. Une fibre a un cœur d’indice de réfraction légèrement plus élevé que la gaine qui l’entoure. À une interface, la loi de Snell-Descartes (n₁ sin θ₁ = n₂ sin θ₂) écarte la lumière de la perpendiculaire quand elle passe vers l’indice le plus faible. Au-delà de l’angle critique θc = arcsin(n₂/n₁), il n’y a plus de rayon transmis du tout : la lumière est entièrement réfléchie. Avec un écart d’indice d’environ 0,36 %, typique de la fibre monomode :

n1 = 1.468; n2 = n1 * (1 - 0.0036)
print(math.degrees(math.asin(n2 / n1)))            # 85.1° from the perpendicular
NA = math.sqrt(n1**2 - n2**2)
print(NA, math.degrees(math.asin(NA)))             # 0.12, acceptance half-angle 7.1°

La lumière qui se propage à moins d’environ 5° de l’axe de la fibre, dans le verre, est réfléchie sans perte à chaque contact avec la gaine. La fibre accepte la lumière qui entre à moins d’environ 7° de son axe (son ouverture numérique, environ 0,12 ici).

Deux types de fibre sont courants :

  • La fibre multimode a un cœur large, de 50 ou 62,5 µm. La lumière y suit de nombreux chemins (modes) de longueurs légèrement différentes, ce qui étale les impulsions avec la distance ; on l’utilise avec des sources bon marché à 850 nm sur quelques dizaines à quelques centaines de mètres, dans les bâtiments et les centres de données.
  • La fibre monomode a un cœur d’environ 9 µm, assez petit pour qu’un seul mode s’y propage. Utilisée à 1310 et 1550 nm, elle transporte des données sur des kilomètres, voire des milliers de kilomètres.

Décibels et atténuation

La perte de signal se mesure en décibels (dB), un rapport de puissances logarithmique : dB = 10 log₁₀(Pentrée/Psortie). Les pertes en dB s’additionnent le long d’un trajet, au lieu de se multiplier :

PerteFraction de puissance restante
3 dB50 %
10 dB10 %
20 dB1 %
30 dB0,1 %

La fibre monomode moderne perd environ 0,2 dB par kilomètre à 1550 nm, là où le verre est le plus transparent :

for km in (10, 80, 100):
    print(km, km * 0.2, "dB", 10 ** (-km * 0.2 / 10))
# 10 km: 2 dB (63 %)   80 km: 16 dB (2.5 %)   100 km: 20 dB (1 %)

Après 100 km, il reste 1 % de la lumière : encore détectable. Les liaisons longue distance placent des amplificateurs optiques (amplificateurs à fibre dopée à l’erbium) tous les 50 à 100 km environ, qui amplifient toutes les longueurs d’onde à la fois sans repasser par l’électricité. Et une seule fibre transporte des dizaines de canaux indépendants sur des longueurs d’onde différentes (multiplexage en longueur d’onde).

La vitesse de la lumière dans le verre fixe aussi un plancher à la latence des réseaux : environ 4,9 ms par 1 000 km, dans un sens. Un aller-retour à travers l’Atlantique ne peut pas prendre moins de quelques dizaines de millisecondes, quel que soit l’équipement.

Shannon : la capacité d’un canal

Combien de bits par seconde un canal peut-il transporter ? En 1948, Claude Shannon a démontré qu’un canal de bande passante B hertz et de rapport signal sur bruit SNR (un rapport de puissances, pas en dB) a un débit maximal sans erreur — sa capacité :

C = B × log₂(1 + SNR)

Aucun codage ne peut la dépasser ; les bons codes modernes s’en approchent. Doubler la bande passante double la capacité ; doubler la puissance du signal n’ajoute qu’environ un bit par seconde et par hertz.

C = lambda B, snr_db: B * math.log2(1 + 10 ** (snr_db / 10))
print(C(3100, 35))      # telephone line: 36,044 bit/s
print(C(20e6, 25))      # 20 MHz radio channel at 25 dB: 166 Mbit/s
print(C(1e6, 0))        # SNR = 1 (0 dB): C = B = 1 Mbit/s
print(10 * math.log10(2 ** (33600 / 3100) - 1))   # 32.6 dB needed for 33.6 kbit/s

Une voie téléphonique laisse passer environ 300 à 3 400 Hz, soit à peu près 3,1 kHz de bande passante. Avec un SNR de 35 dB, Shannon autorise environ 36 kbit/s. La dernière génération de modems analogiques fonctionnait à 33,6 kbit/s, ce qui demande au moins 32,6 dB : ils étaient à quelques pour cent de la limite. Les modems « 56k » qui ont suivi n’ont pas battu Shannon ; ils évitaient une conversion analogique parce que l’extrémité du fournisseur était reliée numériquement au réseau téléphonique. Cette histoire appartient à Des modems à Ethernet, au niveau des composants.

La même formule gouverne toutes les liaisons. Un canal Wi-Fi de 20 MHz avec 25 dB de SNR peut transporter au plus 166 Mbit/s par flux spatial ; des canaux plus larges et plusieurs antennes (plusieurs flux) sont la façon dont le Wi-Fi accélère. Les liaisons filaires s’y heurtent aussi : le PCIe 6.0 a doublé le débit du PCIe 5.0 sans doubler la fréquence en envoyant du PAM4 — quatre niveaux de tension, deux bits par symbole — au lieu de deux niveaux. Avec quatre niveaux dans la même plage de tension, l’écart entre niveaux voisins vaut un tiers de l’excursion totale, ce qui coûte 20 log₁₀ 3 ≈ 9,5 dB de marge de bruit ; la liaison a besoin d’une correction d’erreurs puissante pour compenser.

À retenir

  • Les signaux voyagent comme des ondes électromagnétiques à c/√εr : 30 cm/ns dans le vide, environ 20 cm/ns dans les câbles et les fibres, 15 à 17 cm/ns sur un circuit imprimé. Les fils sur puce sont encore plus lents à cause du délai RC.
  • Une piste de 30 cm sur une carte prend environ 2 ns ; un aller-retour vers une mémoire à 10 cm prend au moins 1,3 ns.
  • Les pistes rapides sont des lignes de transmission d’impédance caractéristique Z₀. Une extrémité non adaptée réfléchit Γ = (ZL − Z₀)/(ZL + Z₀) de l’onde ; la terminaison l’absorbe.
  • À 32 GT/s, une piste de 30 cm contient 64 bits en vol, et les pertes augmentent avec la fréquence (épaisseur de peau de 2,1 µm à 1 GHz), d’où l’égalisation dans les récepteurs.
  • Le décalage limite les bus parallèles ; les liaisons série intègrent l’horloge aux données. Les paires différentielles rejettent le bruit de mode commun, permettent de petites excursions et rayonnent moins.
  • La fibre guide la lumière par réflexion totale interne ; la fibre monomode perd environ 0,2 dB/km à 1550 nm (1 % restant après 100 km).
  • Shannon : C = B log₂(1 + SNR). Une ligne téléphonique de 3,1 kHz à 35 dB autorise 36 kbit/s — que les modems à 33,6 kbit/s ont presque atteints.

Dans ce niveau

  1. 9.1Électrons, conducteurs et isolants
  2. 9.2Semi-conducteurs, dopage et jonction p-n
  3. 9.3Comment un MOSFET commute : l’effet de champ
  4. 9.4Stocker un bit : charge, magnétisme et lumière
  5. 9.5Signaux dans les fils et les fibres
  6. 9.6Les limites : chaleur, effet tunnel, Landauer et calcul quantique