Looking for Computer Science  & Information Technology online courses ?
Check my new web site: https://www.yesik.it !

Communication.png

Comment faire communiquer deux systèmes électroniques?

Il existe différents moyens d'interconnecter deux systèmes électroniques pour les faire communiquer. Dans cet article, nous allons comparer deux modes de communications répandus en électronique numérique. À savoir la liaison série et la liaison parallèle.

Un exemple

Imaginons que nous travaillions sur un système de surveillance de type boîte noire, chargé d'enregistrer tous les paramètres de vol d'un avion. Essentiellement, ce dispositif sera doté d'un enregistreur et de plusieurs capteurs qui y seront reliés. Pour faire encore plus simple, je ne vais considérer ici qu'un seul de ces capteurs. Disons, le capteur de vitesse. Une fois par seconde, celui-ci estime la vitesse de l'avion et transmet cette information à l'enregistreur. De son côté, celui-ci la reçoit et l'enregistre.

Le capteur considéré ici transmet l'information de vitesse sous forme numérique. Cela veut dire que la vitesse mesurée va être encodée sous la forme d'une séquence de bits. Autrement dit, sous la forme d'une séquence de 0 et de 1.

Considérons enfin qu'il s'agit d'un capteur 8 bits. Cela signifie qu'à chaque mesure de vitesse correspondra une séquence de huit 0 ou 1. Le plus petit chiffre représentable dans ces conditions est 00000000. Ce qui correspond à 0 (en base 10). Le plus grand chiffre représentable est 11111111. Ce qui correspond à 255 (en base 10). En tout, avec 8 bits, on peut écrire 256 combinaisons différentes de 0 et de 1.

Tout cela pour dire qu'à chaque fois que le capteur va transmettre une vitesse, il devra en réalité transmettre huit bits. Toute la question restant de savoir comment transmettre ces huit bits.

Vitesse estimée Codage
DécimalBinaire
0 km/h  000000000
5 km/h  000000000
10 km/h  100000001
20 km/h  200000010
100 km/h 1000001010
200 km/h 2000010100
1000 km/h10001100100
2550 km/h25511111111
Capteur 8 bits.png

La vitesse mesurée par le capteur est encodée sous la forme d'un entier sur 8 bits (un octet). Dans cet exemple, la vitesse peut être déterminée par palier de 10km/h. Et, comme 8 bits permettent de coder 256 valeurs (28), ce capteur peut mesurer des vitesses de 0 km/h à 2550 km/h.



Liaison parallèle

Communication parallèle.png

Dans une communication parallèle, plusieurs lignes sont utilisées pour transmettre simultanément des données.

L'idée qui peut sembler la plus simple pour relier notre capteur à l'enregistreur est de se dire que, puisqu'il faut transmettre 8 bits, il suffit d'utiliser 8 fils et transmettre un bit sur chacun d'entre eux.

Ce type de liaison est appelée une liaison parallèle car tous les bits du message sont transmis ... en parallèle. C'est à dire en même temps.

L'idée est séduisante mais a des limitations. Tout d'abord, s'il s'agit de fils électriques, il faudra sans doute rajouter un 9ème fil pour la masse (groundGND). Ce qui en soit n'est pas excessivement gênant. Sauf qu'il s'agit ici de capteurs embarqués dans un avion. Multiplier les fils, sur des longueurs de plusieurs dizaines de mètres finit par faire du poids. D'autant plus qu'il y aura plus d'un capteur. Et que certains capteurs seront peut-être des capteurs 16 ou 32 bits. Donc requérant d'autant plus de conducteurs.

Même en dehors du cadre particulier de l'aéronautique, la multiplication des câbles peut avoir des conséquences pratiques gênantes: il faut de la place pour passer tous ces fils. Et cela a un coût.

Par ailleurs, le capteur que je considère ici n’envoie qu'une mesure par seconde. Soit un débit de 8bits/s. Mais d'autres capteurs sont susceptibles d'envoyer des données à des cadences beaucoup plus importantes. Ainsi, un capteur surveillant le fonctionnement des turbines de l'avion sera susceptible de transmettre des données plusieurs dizaines ou plusieurs centaines de fois par seconde. Et on peut imaginer des systèmes nécessitant de communiquer à des débits beaucoup plus élevés. Or, d'un point de vue purement technique, il est problématique d'avoir de nombreux conducteurs électriques côte à côte lorsque la longueur des câbles et le débit augmentent. Dans ces circonstances, des phénomènes électriques prennent place et perturbent la communication. Par exemple, un bit peut sauter d'un fil à l'autre (c'est la diaphonie). Ou encore, à cause des légères variations de caractéristiques d'un câble à l'autre, les bits peuvent arriver de manière décalée (on parle de dérive ou de 'désynchronisation').

Pour toutes ces raisons, la liaison parallèle reste plutôt employée sur de courtes distances, et pour des débits faibles ou moyens.

Diaphonie.png

Lorsqu'ils circulent à proximité l'un de l'autre, les signaux électriques sont susceptibles d'interférer entre eux. C'est la diaphonie. Dans le cadre d'une liaison numérique, cela peut causer des erreurs de transmission avec un ou plusieurs bits erronés.

Ce phénomène s'amplifie avec l'augmentation de la fréquence de transmission.

Dérive.png

À cause des caractéristiques physiques légèrement variables d'un fil à l'autre, des bits émis simultanément sur une liaison parallèle ne se propagent pas nécessairement à la même vitesse. Certains vont arriver un peu plus vite que d'autre, ou à l'inverse avoir un peu de retard. On parle de dérive ou de désynchronisation. Le fait qu'ils n'arrivent pas tous en même temps, rend la lecture des données sujette à erreurs.

Ce phénomène est d'autant plus significatif que les câbles sont long et que la fréquence augmente.

Résolution

Revenons maintenant à notre exemple. Et imaginons que notre avion dispose également d'un capteur capable de renseigner l'enregisteur sur le niveau des réservoirs de kérosène. L'avion en question dispose de réservoirs pour une capacité totale de 310000l de carburant. Si je n'utilise qu'un capteur 8 bits pour coder le niveau du carburant, j'aurais une précision de l'ordre de 1200l (c'est à dire 310000/28 ou encore 310000/256). Qu'est-ce que ça veut dire? Que le capteur me dira la même chose qu'il me reste 1200l en réservoir ou seulement 100l. Vous voyez le problème en situation d'urgence?

Pour coder le niveau de carburant avec suffisamment de précision, je vais donc devoir augmenter la résolution de mon capteur. Disons donc que j'utilise maintenant un capteur 16 bits. Dans ces conditions, j'arrive à une résolution de 4l (soit 310000/216). Avec ce capteur, je connais la quantité de carburant en réserve à 4l près. C'est nettement plus viable!

Oui, mais en liaison parallèle, cela implique d'utiliser maintenant 16 fils pour les données. Et si, pour des raisons pratiques, je souhaitais me limiter à un bus de données sur 8 bits? La solution est simple: il me suffirait de transmettre la donnée sur 16 bits en deux paquets de 8.

Transfert 16bits sur bus 8bits.png

Quand la taille des données à transmettre dépasse la taille du bus, il est nécessaire d'utiliser plusieurs cycles pour les acheminer.

Ainsi, transmettre 16 bits de données sur un bus 8 bits nécessite 2 cycles. Sur un bus à 1kHz, chaque cycle prend par définition 1ms. Il faudra donc un total de 2ms pour acheminer les données dans l'exemple précédent.



Liaison série

Communication série.png

Dans une communication série un seul canal est utilisé. Les données doivent donc être transmises les unes après les autres.

A partir de l'exemple précédent, on peut se dire que réduire le nombre de fils, c'est facile:

C'est exactement cette dernière solution qu'on appelle une liaison série: dans ce cas, les bits sont transmis les uns après les autres.

Instinctivement, on peut se dire que c'est moins rapide que la liaison parallèle. Puisque cette dernière transmet plusieurs bits en même temps. C'est vrai, mais à fréquence de transmission égale. En clair, si sur un fil on peut faire passer 1000 bits/s, en liaison série on obtient donc un débit de 1000 bits/s. S'il est possible de transmettre à la même fréquence en liaison parallèle sur 8 bits, on arrive à un débit de 8000 bits/s.

La subtilité est quand je dis dans la phrase précédente « S'il est possible de transmettre à la même fréquence ». Or, j'en ai déjà parlé, en liaison parallèle, l'augmentation de la fréquence de transmission entraine des problèmes. Ce qui n'est pas le cas avec une liaison série: avec un seul fil de données, il n'y plus de risque de diaphonie ni de désynchronisation. Par conséquent il devient possible de fortement augmenter la fréquence de transmission et donc le débit. Par ailleurs, les limites de longueurs de câbles sont repoussées. Et, qui plus est, la réduction du nombre de conducteurs facilite la mise en œuvre pratique et réduit les coûts.

C'est pour toutes ces raisons que les liaisons séries sont de plus en plus populaires: L'USB et le FireWire sont des liaisons séries. De la même manière, le bus SATA est une liaison série qui remplace sur les ordinateurs récents le bus (P)ATA (parallèle). Même les cartes internes des ordinateurs évoluent aujourd'hui vers des liaisons séries. Ainsi, le bus PCI Express (en version x1) assure la communication entre une carte d'extension et son hôte par une liaison série. Alors que les anciennes versions de PCI utilisaient un bus parallèle sur 32 ou 64 bits.