Transmission série
Transmettre une information numérique revient à transmettre via un medium capable de véhiculer une grandeur physique (électrique, optique, sonore, …) représentant les bits qui permettent de la coder.
Par exemple, on peut coder
-
- le nombre décimal 63 par un mot de 8 bits : 0011 1111
- la couleur de ce mot par le nombre hexadécimal F90, soit 1111 1001 0000 en codage binaire
- …
Transmettre un mot binaire en série consiste à faire passer toutes les informations binaires via une unique voie (« tuyau »), bit après bit : la transmission est séquentielle.
Synchronisation
En transmission série, puisque l’information passe par une seule voie, il existe un problème de synchronisation entre l’émetteur et le récepteur : le récepteur ne peut pas a priori distinguer les séquences de bits, car les bits sont envoyés successivement, avec une période définie par l’émetteur.
Il existe deux types de transmission permettant de remédier à ce problème :
Transmission synchrone
La transmission des éléments binaires s’effectue au rythme d’un signal d’horloge transmis en permanence.
En général, le bit de donnée est émit/lu à l’instant du front descendant ↓ de l’horloge.
En pratique il faudrait transmettre ce signal de synchronisation sur une voie séparée des données. Cette solution est envisageable pour des liaisons filaires à très courte distance (car câbles et fibres optiques coutent cher !).
Une autre technique consiste à mélanger le signal d’horloge aux données, au moment du codage. Il est souvent possible, côté réception, de recréer une horloge de synchronisation à partir du signal reçu.
Transmission asynchrone
L’émetteur et le récepteur ont des horloges dont les fréquences sont en principe égale : les 2 applications de communication doivent être configurées.
Exemple :
Pour faire communiquer un Arduino avec un moniteur série, il faut que le programme comporte une ligne de configuration du port série
Serial.begin(9600);
et que le moniteur série soit configuré avec la même vitesse :
Mais en raison d’une légère et inévitable différence, la transmission se fait par séquences de bits courtes (environ un octet).
Un « top », dit de bit de synchronisation (ou bit de start), indique au récepteur le début d’une séquence. Le récepteur, fait alors démarrer son horloge locale, laquelle marque les temps de bit en un relatif isochronisme avec celle avec laquelle le récepteur créé le signal.
Voir le cours « La liaison série RS232«
Trames
Les transmissions séries sont généralement structurées sous forme de trames : un ensemble de bits successifs contenant les données à transmettre… mais pas uniquement !
Ces trames comportent :
- un en-tête de synchronisation (« synchronisation bits ») : un « motif » particulier qui donne l’information du début de transmission de la trame (utile uniquement pour les transmissions asynchrones)
- suivi d’un symbole de délimiteur de début de trame, et éventuellement de fin de trame
- les données, envoyées sous différents formats :
- ordre des bits : poids faibles en premier (LSB first – Least Significant Bit first) ou bien poids forts en premier (MSB first – Most Significant Bit first)
- valeurs des bits : normal ou inverse (on envoie 1 à la place de 0, et vice-versa)
- en plusieurs exemplaires (par exemple, les bits normaux puis les bits inversés)
- un code de détection (ou correction) d’erreur
Voir la trame série RS232
Codage en ligne
Pour transporter un signal logique d’une machine à une autre, il faut le convertir en un signal physique associé aux propriétés physiques spécifiques des canaux de transmissions (les médias) :
Le processus de codage du signal logique en signal physique est appelé codage en ligne.
Codage bipolaire
Une des valeurs logiques (soit le 0, soit le 1) est alternativement codée par une grandeur physique de valeur positive puis de valeur négative.
L’autre est toujours codée par une grandeur physique de valeur nulle.
Exemples :
-
- La valeur logique 1 est codée par une grandeur physique de valeur nulle
- La valeur logique 0 est codée par une grandeur physique alternativement positive, puis négative
-
- La valeur logique 0 est codée par une grandeur physique de valeur nulle
- La valeur logique 1 est codée par une grandeur physique alternativement positive, puis négative
Codage différentiel
On parle de codage différentiel lorsque seul le changement de valeur logique dans une trame produit un effet (changement de valeur, changement de front, …) sur le signal physique.
Exemples pour des signaux pour lesquels l’information est portée par la valeur de la grandeur physique :
-
- La valeur logique 1 est codée par une non modification du signal physique
- La valeur logique 0 est codée par une modification du signal physique
- La valeur logique 1 est codée par une non modification du signal physique
-
- La valeur logique 0 est codée par une non modification du signal physique
- La valeur logique 1 est codée par une modification du signal physique
- La valeur logique 0 est codée par une non modification du signal physique
Le codage différentiel est particulièrement utilisé dans certains type de transmission par modulation, car il permet d’assurer une réception non ambigüe.
Quelques systèmes de codages …
Tous les systèmes de codage suivants peuvent être utilisés en mode synchrone ou asynchrone, mais certains sont plus adaptés à un mode de transmission qu’à un autre …
NRZ (Non Return to Zero)
Très proche du codage binaire de base, il code :
- un 1 par +V,
- un 0 par -V
(ou l’inverse, ce qui est le cas pour la norme RS232).
Avantages :
- Le code NRZ est le moyen le plus simple de coder l’information: il y a une relation directe entre la valeur logique et une grandeur physique (exemple une tension électrique).
- NRZ produit un signal dont la grandeur physique varie d’une valeur positive à une valeur opposée. Ainsi, une grandeur physique nulle signifie un défaut sur la ligne.
- Le codage NRZ améliore légèrement le codage binaire de base en augmentant la différence d’amplitude du signal entre les 0 et les 1.
Inconvénients :
- Toutefois les longues séries de bits identiques (0 ou 1) provoquent un signal sans transition pendant une longue période de temps, ce qui peut engendrer une perte de synchronisation en cas de transmission asynchrone.
NRZI (Non Return to Zero Inverted)
On produit une transition du signal pour chaque 1, pas de transition pour les 0 (ou bien l’inverse).
Ce codage n’utilise pas directement le niveau mais un changement de niveau (par rapport au bit précédent) pour coder les valeurs logiques ; ce codage est du type différentiel.
Avantages :
Il s’agit, comme pour NRZ, d’un codage facile à mettre en œuvre.
En cas d’inversion de polarité, la trame logique est identique !
Inconvénients :
On retrouve là encore le problème des longues périodes niveaux identiques en présence d’une longue suite de 0 (qui ne font pas commuter le signal).
Exemple d’utilisation : le bus USB
![]()
(transition sur les 0 ; pour éviter la perte de synchronisation un 0 est envoyé après six 1 consécutifs)
Manchester
Le codage Manchester est obtenu par le mélange (opération logique OU-exclusif) d’un signal horloge et d’un signal NRZ.
Il s’agit donc intrinsèquement d’un signal synchrone, qui ne nécessite pas de voie dédiée à une horloge puisque le signal d’horloge est « intégré » au signal Manchester.
Par exemple :
Valeur logique à coder | ↔ | Signal physique transmis |
0 | ↔ | transition du niveau haut vers le niveau bas ![]() |
1 | ↔ | transition du niveau bas vers le niveau haut ![]() |
(mais cela peut parfois être l’inverse !)
Avantages :
- Mise en œuvre simple, codage et décodage faciles.
- Il se produit un changement d’état physique de la ligne à chaque période d’horloge : il ne peut donc plus y avoir de perte de synchronisation à cause d’une suite de 0 ou de 1.
- Peu sensible aux parasites
Exemples d’utilisation : Ethernet Station météo domestiques
……
Manchester différentiel
Le Manchester peut également être du type différentiel :
Dans ce cas on utilise la variation du sens des transitions par rapport au bit précédent.
Dans l’exemple précédent, on constate une inversion du sens des transitions du signal en milieu de période bit (durée = T) pour les valeurs « 1 » logiques. Par contre un « 0 » logique conserve le sens de la transition précédente.
MLT3
Dans ce codage, seuls les 1 font changer le signal d’état. Les 0 sont codés conservant la valeur précédemment transmise. Les 1 sont codés successivement sur trois états +V, 0, -V.
Le principal avantage du codage MLT3 est de diminuer fortement la fréquence nécessaire pour un débit donné grâce à l’utilisation de 3 états.
Les longues séquences de 0 peuvent entraîner une perte ou un déphasage de l’horloge du récepteur.
2B1Q
Le code 2B1Q fait correspondre à un groupe de deux éléments un créneau de tension dit symbole quaternaire pouvant endosser quatre valeurs différentes :
Groupe de 2 bits | Tension |
00 | -3 |
01 | -1 |
11 | +1 |
10 | +3 |
Les données sont donc transmises à deux fois la fréquence de l’horloge.
Application interactive
Codage en ligne