Protocoles synchrones vs asynchrones
Introduction
Vous avez peut-être déjà entendu parler des protocoles de communication synchrones et asynchrones (tel que UART – Universal Asynchrone Receiver and Transmitter), mais savez vous de que signifient ces termes ? Si ce n’est pas le cas, ne vous inquiétez pas car nous allons en parler dans cet article.
En communication numérique – lorsque nous souhaitons envoyer des données entre un appareil et un autre – nous devons piloter des liens de communication de données soit à l’état Haut (1 – HIGH) soit à l’état Bas (0 – LOW). Ce sont les seules options disponibles. Supposons que nous voulions envoyer la donnée ‘Hello’ d’un appareil à un autre. Si nous utilisons le codage ASCII (pour lequel chaque lettre de l’alphabet est représenté par un nombre, car les ordinateurs travaillent en interne uniquement avec des nombres), ceci serait représenté par la séquence de nombres.
72 101 108 108 111
ou en binaire
01001000 01100101 01101100 01101100 01101111
Voir notre article sur les systèmes de numération pour plus d’information.
Si nous ne disposons que d’une seule ligne de données (comme c’est le cas pour la plupart des protocoles de communication) alors nous pouvons émettre un bit après l’autre, en pilotant la ligne de données entre les états haut et bas conformément à la valeur du bit à envoyer (les couleurs ont été ajoutées pour faciliter la lecture, sachant que les données binaires n’ont pas de couleurs !) avec le LSB transmit en premier (Bit le moins significatif – Least Significant Bit).
Le LSB d’un nombre binaire est le bit de plus petite valeur (le plus lointain sur la droite) et le MSB (Most Significant Bit) est le bit de plus grande valeur (le plus à gauche). Voir notre article sur la signification de Bit & Endian
Interpréter les données
Si les données transmises étaient toujours une séquence alternée de 1 et de 0, il serait assez facile de les interpréter car le motif est régulier et prévisible :
mais évidemment ce n’est pratiquement jamais le cas. Que se passerait il pour la séquence de 4 x 1 suivie de 4 x 0 (11110000) ?
Sans information supplémentaire le récepteur pourrait dire que le signal était 10, 1100, 111000 ou 11110000 (ou 1111100000, et ainsi de suite). Il nous faut absolument quelque chose en plus pour clarifier la communication.
Synchrone ou asynchrone
Cela se résout soit avec une ligne de communication supplémentaire pour indiquer le timing de chaque bit sur la ligne de données, ou en permettant au récepteur de connaître en interne la durée de chaque bit sur la ligne de données. La première possibilité, où une ligne de communication supplémentaire est utilisée pour indiquer les timings de chaque bit, est appelée communication synchrone. La ligne supplémentaire dans la communication synchrone est appelée la ligne d’horloge (parce que les horloges sont utilisées pour chronométrer les choses). La deuxième possibilité, où le récepteur connaît en interne la durée de chaque bit sur la ligne de données, est appelée communication asynchrone. Avec la communication asynchrone, le récepteur et l’émetteur ont besoin d’une horloge interne précise pour mesurer le temps. Le récepteur et l’émetteur doivent également évidemment être réglés pour utiliser la même vitesse/timing (taux de bauds) afin de communiquer avec succès.
La transmission synchrone par rapport à la transmission asynchrone se résume donc à savoir si l’horloge est externe (synchrone) ou interne (asynchrone). Quelques exemples de protocoles asynchrones comprennent UART, USB, CAN et Ethernet. Quelques exemples de protocoles synchrones comprennent SPI, I2C et DDR.
Avantages et inconvénients
Un avantage des protocoles synchrones est qu’ils ne nécessitent pas que le dispositif ait une horloge interne très précise (plus la communication est rapide, plus l’horloge interne devrait être précise). En conséquence, les protocoles de communication synchrones sont souvent utilisés dans de petits périphériques peu coûteux tels que des capteurs. Un autre avantage des protocoles synchrones est que les deux côtés de la communication n’ont pas besoin de connaître à l’avance quel sera le débit de données (timing). Certains protocoles synchrones ont même des débits de données variables et/ou peuvent utiliser la ligne d’horloge pour indiquer qu’ils sont toujours occupés en la maintenant dans le même état jusqu’à ce qu’ils soient prêts à recevoir de nouvelles données (c’est une fonctionnalité de l’I2C) ; les protocoles asynchrones nécessitent une ligne de communication supplémentaire pour implémenter cette fonctionnalité (comme la ligne CTS/RTS dans UART).
Un avantage des protocoles asynchrones est qu’ils nécessitent moins de lignes de communication et, de ce fait, ils génèrent moins de bruit électromagnétique (voir notre article sur les interférences EMI/EMC).
Comme il peut être difficile avec les protocoles asynchrones d’obtenir une synchronisation parfaite des horloges des deux côtés, généralement ils nécessiteront de temps en temps au moins une transition sur la ligne de données afin de réaligner leurs horloges internes. Cela peut faire partie de la trame du protocole (comme avec UART), ou cela peut être mis en œuvre en exigeant l’insertion d’un bit de bourrage (stuff bit) de polarité opposée après un certain nombre de bits consécutifs de la même polarité (le bit de bourrage est éliminé lors du décodage du protocole, comme avec le protocole CAN).
Résumé
C’est tout ce qu’il y a à comprendre dans les termes de communication synchrone ou asynchrone.
- Synchrone = Horloge externe
- Asynchrone = Horloge interne
Proteus inclut dans ses bibliothèques de nombreux composants modélisés utilisables en simulation, que ce soit pour les protocoles synchrones ou asynchrones. De plus, il existe également des instruments virtuels qui supportent ces protocoles de communication.
Copyright Labcenter Electronics Ltd. 2024
Traduction française
Copyright Multipower France 2024