

Un émetteur-récepteur asynchrone universel ( UART communication série asynchrone dont le format des données et la vitesse de transmission sont configurables. Il transmet les bits de données un , du moins significatif au plus significatif, encadrés par des bits de début et de fin, la synchronisation précise étant assurée par le canal de communication. Les niveaux de signalisation électrique sont gérés par un circuit de commande externe à l'UART. Les niveaux de signal courants sont RS-232 , RS-485 et TTL brut pour les liaisons de débogage courtes. Les premiers téléscripteurs utilisaient des boucles de courant .
Il s'agissait de l'un des premiers appareils de communication informatique, utilisé pour connecter des téléscripteurs à une console d'opérateur . C'était également un des premiers systèmes matériels pour Internet .
Un UART est généralement implémenté dans un circuit intégré (CI) et utilisé pour les communications série via le port série d'un ordinateur ou d'un périphérique . Un ou plusieurs périphériques UART sont couramment intégrés dans les puces de microcontrôleurs . Des UART spécialisés sont utilisés dans l'automobile , les cartes à puce et les cartes SIM .
Un dispositif similaire, l' émetteur-récepteur universel synchrone et asynchrone (USART), prend également en charge le fonctionnement synchrone.
En termes de modèle OSI , l'UART se situe au niveau de la couche 2, la couche de liaison de données .télégraphiques primitifs utilisaient des impulsions de durée variable (comme le code Morse ) et des mécanismes d'horlogerie rotatifs pour transmettre des caractères alphabétiques. Les premiers dispositifs de communication série (à impulsions de durée fixe) étaient des commutateurs mécaniques rotatifs . Différents codes de caractères utilisant 5, 6, 7 ou 8 bits de données se sont répandus dans les téléscripteurs, puis comme périphériques informatiques. Le téléscripteur constituait un excellent périphérique d'entrée/sortie polyvalent pour un petit ordinateur.
Gordon Bell, de DEC, a conçu la première interface UART, occupant une carte de circuit imprimé entière appelée unité de ligne , pour la série d'ordinateurs PDP , à commencer par le PDP-1 . Selon Bell, la principale innovation de l'UART résidait dans son utilisation de l'échantillonnage pour convertir le signal dans le domaine numérique, permettant une synchronisation plus fiable que les circuits précédents qui utilisaient des dispositifs de synchronisation analogiques avec des potentiomètres réglables manuellement . Afin de réduire le coût du câblage, du fond de panier et des autres composants, ces ordinateurs ont également été les premiers à utiliser le contrôle de flux par les caractères XON et XOFF plutôt que par des fils physiques.
DEC a intégré la conception de l'unité de ligne dans un UART monopuce primitif pour son propre usage. Western Digital a développé ce composant pour en faire le premier UART monopuce largement disponible, le WD1402A, vers 1971. Il s'agissait d'un des premiers exemples de circuit intégré à moyenne échelle . Une autre puce populaire était le SCN2651 de la famille Signetics 2650 .
Un exemple d'UART du début des années 1980 est le National Semiconductor 8250 , utilisé dans la carte d'adaptation de communications asynchrones du premier IBM PC . Dans les années 1990, de nouveaux UART dotés de mémoires tampon intégrées ont été développés. Ceci a permis une vitesse de transmission plus élevée sans perte de données et sans nécessiter une intervention aussi fréquente de l'ordinateur. Par exemple, le populaire National Semiconductor 16550 possède une FIFO de 16 octets et a donné naissance à de nombreuses variantes, notamment les 16C550, 16C650, 16C750 et 16C850 .
Selon le fabricant, différentes appellations sont utilisées pour désigner les dispositifs assurant les fonctions UART. Intel nommait son dispositif 8251 « Interface de communication programmable » car il s'agissait en réalité d'un USART capable de fonctionner en mode synchrone et asynchrone. Il a été commercialisé en 1979. Le MOS Technology 6551 était connu sous le nom d'« Adaptateur d'interface de communication asynchrone » (ACIA). Le terme « Interface de communication série » (SCI) a été utilisé pour la première fois chez Motorola vers 1975 pour désigner leur interface série asynchrone de type marche/arrêt, que d'autres appelaient UART. Zilog a fabriqué plusieurs contrôleurs de communication série (SCC).
À partir des années 2000, la plupart des ordinateurs compatibles IBM PC ont abandonné leurs ports COM RS-232 externes au profit de ports USB , offrant un débit de données plus rapide. Pour les utilisateurs qui ont encore besoin de ports série RS-232, des ponts USB-UART externes sont désormais couramment utilisés. Ces ponts combinent câbles et une puce assurant la conversion USB/UART. Cypress Semiconductor et FTDI figurent parmi les principaux fournisseurs de ces puces. Bien que les ports RS-232 ne soient plus accessibles aux utilisateurs sur la plupart des ordinateurs, de nombreux processeurs intègrent des interfaces UART, permettant ainsi aux concepteurs de matériel d'interagir avec d'autres puces ou périphériques utilisant les protocoles RS-232 ou RS-485 .
Transmission et réception de données série
L'UART ne génère ni ne reçoit généralement directement les signaux externes utilisés entre différents équipements. Des interfaces distinctes sont utilisées pour convertir les signaux logiques de l'UART vers et depuis les niveaux de signalisation externes, qui peuvent être des niveaux de tension, de courant ou d'autres signaux normalisés.
La communication peut s'effectuer selon trois modes :
- simplex (dans un seul sens, sans possibilité pour le dispositif récepteur de renvoyer des informations au dispositif émetteur)
- duplex intégral (les deux appareils envoient et reçoivent simultanément)
- semi-duplex (les appareils transmettent et reçoivent alternativement)
Pour que l'UART fonctionne, les paramètres suivants doivent être identiques côté émission et côté réception :
- Niveau de tension
- débit en bauds
- Bit de parité
- Taille des bits de données
- Taille des bits d'arrêt
- Contrôle du débit
Concernant le niveau de tension, deux modules UART fonctionnent correctement lorsqu'ils sont au même niveau de tension, par exemple 3 V entre eux. Pour utiliser deux modules UART à des niveaux de tension différents, un circuit d'adaptation de niveau externe doit être ajouté.
encadrement des données

Une trame UART se compose de cinq éléments :
- Inactif (logique haut (1))
- Bit de départ (niveau logique bas (0)) : le bit de départ signale au récepteur qu'un nouveau caractère arrive.
- Bits de données : les cinq à neuf bits suivants, selon le jeu de caractères utilisé, représentent le caractère.
- Bit de parité : si un bit de parité est utilisé, il est placé après tous les bits de données. Le bit de parité permet au récepteur UART de détecter si des données ont été modifiées pendant la transmission.
- Bit d'arrêt (niveau logique haut (1)) : le ou les bits suivants sont toujours à l' état haut (niveau logique haut, soit 1) et sont appelés bits d'arrêt. Ils signalent au récepteur la fin du caractère. Le bit de départ étant à l'état bas (0) et le bit d'arrêt à l'état haut (1), il y a toujours au moins deux changements de signal garantis entre chaque caractère. Si la ligne reste à l'état bas pendant plus longtemps que la durée d'un caractère, il s'agit d'une interruption détectable par l'UART.
Dans la configuration la plus courante (8 bits de données, sans parité et avec 1 bit d'arrêt, soit 8N1 ), l'efficacité du protocole est de 8/10 = 80 %. À titre de comparaison, l'efficacité du protocole Ethernet , avec des trames à débit maximal d'une charge utile de 1 500 octets, atteint 95 % et 99 % avec des trames jumbo de 9 000 octets. Cependant, en raison de la surcharge du protocole Ethernet et de la taille minimale de charge utile de 42 octets, l'efficacité du protocole Ethernet chute considérablement par rapport à l'efficacité constante de 80 % du protocole UART (8N1).
L'état d'inactivité (absence de données) correspond à une tension élevée, ou à une alimentation électrique. Il s'agit d'un héritage historique de la télégraphie, où la ligne est maintenue haute tension pour indiquer que la ligne et l'émetteur ne sont pas endommagés.
Chaque caractère est composé d'un bit de départ à l'état bas, de bits de données, éventuellement d'un bit de parité et d'un ou plusieurs bits d'arrêt. Dans la plupart des applications, le bit de données de poids faible (celui de gauche sur ce schéma) est transmis en premier, mais il existe des exceptions (comme le terminal d'impression IBM 2741 ).
Récepteur
Toutes les opérations du matériel UART sont contrôlées par un signal d'horloge interne, dont la fréquence est un multiple du débit de données, généralement 8 ou 16 fois le débit binaire. Le récepteur teste l'état du signal entrant à chaque impulsion d'horloge, à la recherche du début du bit de départ. Si ce bit de départ apparent dure au moins la moitié de la durée d'un bit, il est valide et signale le début d'un nouveau caractère. Dans le cas contraire, il est considéré comme une impulsion parasite et ignoré. Après une nouvelle attente correspondant à la durée d'un bit, l'état de la ligne est échantillonné à nouveau et le niveau résultant est stocké dans un registre à décalage. Une fois écoulé le nombre de périodes binaires requis pour la longueur du caractère (généralement de 5 à 8 bits), le contenu du registre à décalage est mis à la disposition du système de réception (en parallèle). L'UART active un indicateur signalant la disponibilité de nouvelles données et peut également générer une interruption processeur pour demander au processeur hôte de transférer les données reçues.
Les UART communicants ne possèdent pas de système de synchronisation partagé, hormis le signal de communication. En règle générale, les UART resynchronisent leurs horloges internes à chaque changement d'état de la ligne de données, sauf si ce changement est considéré comme une impulsion parasite. Grâce à cette méthode d'acquisition d'informations de synchronisation, elles détectent avec fiabilité les variations de vitesse d'émission de l'émetteur. Les UART simplifiées, quant à elles, se resynchronisent uniquement sur le front descendant du bit de départ, puis lisent le milieu de chaque bit de données attendu. Ce système fonctionne si le débit de données diffusé est suffisamment précis pour permettre un échantillonnage fiable des bits d'arrêt.
Il est courant qu'une interface UART stocke le dernier caractère reçu pendant la réception du suivant. Ce « double tampon » permet à l'ordinateur récepteur de disposer d'un temps de transmission complet pour récupérer un caractère reçu. De nombreuses interfaces UART intègrent une petite mémoire tampon FIFO (premier entré, premier sorti) entre le registre à décalage du récepteur et l'interface du système hôte. Cela permet au processeur hôte de disposer de plus de temps pour traiter une interruption provenant de l'UART et évite la perte de données reçues à haut débit.
Émetteur
Le fonctionnement de la transmission est simplifié car la synchronisation n'a pas à être déterminée à partir de l'état de la ligne et n'est soumise à aucun intervalle de temps fixe. Dès que le système émetteur dépose un caractère dans le registre à décalage (après la transmission du caractère précédent), l'UART génère un bit de départ, décale le nombre de bits de données requis sur la ligne, génère et envoie le bit de parité (le cas échéant), puis envoie les bits d'arrêt. Le fonctionnement en duplex intégral nécessitant l'envoi et la réception simultanés des caractères, les UART utilisent deux registres à décalage distincts pour les caractères transmis et reçus. Les UART hautes performances peuvent intégrer une mémoire tampon FIFO (premier entré, premier sorti) de transmission, permettant ainsi au processeur ou au contrôleur DMA de déposer plusieurs caractères en rafale dans la FIFO plutôt que de les déposer un par un dans le registre à décalage. La transmission d'un ou plusieurs caractères pouvant être relativement longue par rapport à la vitesse du processeur, l'UART maintient un indicateur d'occupation afin que le système hôte sache si au moins un caractère est présent dans la mémoire tampon de transmission ou le registre à décalage. Le message « prêt pour le(s) prochain(s) caractère(s) » peut également être signalé par une interruption.
Application
Pour un fonctionnement correct, les interfaces UART d'émission et de réception doivent être configurées avec le même débit binaire, la même longueur de caractère, la même parité et le même nombre de bits d'arrêt. L'interface UART de réception peut détecter des paramètres incompatibles et activer un bit d'erreur de trame pour le système hôte ; dans des cas exceptionnels, elle peut alors transmettre au système hôte un flux erratique de caractères tronqués.
Les ports série typiques utilisés avec les ordinateurs personnels connectés à des modems utilisent un bit de départ, huit bits de données, aucune parité et un bit d'arrêt ; pour cette configuration, le nombre de caractères ASCII par seconde est égal au débit binaire divisé par 10.
Certains ordinateurs personnels ou systèmes embarqués très bon marché, dépourvus de port UART physique, peuvent émuler le protocole par logiciel en échantillonnant l'état d'un port d'entrée ou en manipulant directement un port de sortie pour la transmission de données. Bien que très gourmande en ressources processeur (la synchronisation étant critique), cette méthode permet de se passer de la puce UART, ce qui représente un gain d'argent et d'espace. Cette technique est appelée « bit-banging » .
Modèles
La plupart des composants du tableau ci-dessous sont obsolètes et ne sont plus fabriqués. Un UART double ( DUART ) intègre deux UART sur une seule puce. De même, un UART quadruple ( QUART ) intègre quatre UART dans un seul boîtier, comme le NXP 28L194. Un UART octal ( OCTART) intègre huit UART dans un seul boîtier, comme l' Exar XR16L788 ou le NXP SCC2698.
| Modèle | Description | |
|---|---|---|
| WD1402A | Le premier UART monopuce commercialisé. Introduit vers 1971. Les puces compatibles incluent le Fairchild TR1402A et le General Instruments AY-5-1013. | |
| Exar XR21V1410 | ||
| Intersil 6402 | ||
| CDP 1854 (RCA, maintenant Intersil) | ||
| Zilog Z8440 | Émetteur-récepteur universel synchrone et asynchrone (USART). bisynchrone , SDLC , HDLC , X.25 . CRC . Tampon RX de 4 octets. Tampon TX de 2 octets. Fournit les signaux nécessaires à un contrôleur DMA tiers pour effectuer des transferts DMA. | |
| Z8530/Z85C30 | Cette interface USART possède un tampon de réception de 3 octets et un tampon d'émission de 1 octet. Elle intègre un circuit matériel d'accélération du traitement des signaux HDLC et SDLC. La version CMOS (Z85C30) fournit des signaux permettant à un contrôleur DMA tiers d'effectuer des transferts DMA. Elle prend en charge les communications asynchrones, synchrones au niveau octet et synchrones au niveau bit. | |
| 8250 | Ces UART, désormais obsolètes avec leurs tampons de 1 octet, offrent une vitesse maximale de 9 600 bits par seconde (avec une latence d'interruption de 1 milliseconde ). Les UART 8250 étaient utilisés dans les IBM PC 5150 et IBM PC/XT, tandis que les UART 16450 équipaient les ordinateurs de la série IBM PC/AT . L'UART 8251 est compatible USART. | |
| 8251 | ||
| Motorola 6850 | ||
| 6551 | ||
| Rockwell 65C52 | ||
| 16450 | ||
| 82510 | Ce contrôleur UART permet un fonctionnement asynchrone jusqu'à 16550 | La mémoire FIFO de cette interface UART est défectueuse ; elle ne peut donc pas fonctionner en toute sécurité à une fréquence supérieure à celle de l'interface UART 16450. Ce problème est corrigé dans les versions 16550A et ultérieures. |
| 16550A | Cette interface UART possède des tampons FIFO de 16 octets. Ses seuils de déclenchement d'interruption de réception peuvent être configurés à 1, 4, 8 ou 14 caractères. Sa vitesse maximale de port série standard, avec une latence d'interruption de 1 milliseconde, est de Tampons de 128 octets. Cette interface UART peut gérer une vitesse maximale de Tampons de 128 octets. Ce port UART, désormais obsolète, supporte une vitesse maximale de Version quadruple port du 16950/16C950. Tampons de 128 octets. Ce contrôleur UART, désormais obsolète, supporte une vitesse maximale de Actuellement produit par NXP , le 2691 est un UART monocanal intégrant également un compteur/timer programmable. Il dispose d'un registre d'émission d'un octet et d'une FIFO de réception de quatre octets. Sa vitesse maximale standard est de TIA-422 et TIA-485 et être programmés pour prendre en charge des débits de données non standard. Disponibles en boîtiers PDIP-40, PLCC-44 et QFP 44 broches, ils sont facilement adaptables aux bus Motorola et Intel . Leur adaptation aux bus 65C02 et 65C816 a également été réalisée avec succès . Le module 28L91 fonctionne sous 3,3 ou 5 volts. | |
| SCC28L91 | ||
| SCC2692 | Actuellement produits par NXP, ces dispositifs sont des interfaces UART doubles (DUART), composées de deux canaux de communication, de registres de contrôle associés et d'un compteur/minuterie. Chaque canal de communication est programmable indépendamment et prend en charge des débits de données de transmission et de réception indépendants. Le 2692 possède un registre de maintien d'émetteur d'un octet et une FIFO de réception de 4 octets pour chaque canal. La vitesse standard maximale des deux canaux du 2692 est CMOS . Le 28L92 est une version compatible ascendante du 26C92, dotée de FIFO d'émetteur et de récepteur sélectionnables de 8 ou 16 octets, d'une prise en charge améliorée des débits de données étendus et de caractéristiques de synchronisation de bus plus rapides, ce qui rend le dispositif plus adapté à une utilisation avec des microprocesseurs hautes performances. Les modules 2692, 26C92 et 28L92 peuvent fonctionner en modes TIA-422 et TIA-485 et peuvent également être programmés pour prendre en charge des débits de données non standard. Disponibles en boîtiers PDIP-40, PLCC-44 et QFP 44 broches, ils sont facilement adaptables aux bus Motorola et Intel. Ils ont également été adaptés avec succès aux bus 65C02 et 65C816. Le module 28L92 fonctionne sous 3,3 ou 5 volts. | |
| SC26C92 | ||
| SC28L92 | ||
| SCC28C94 | Actuellement produit par NXP, le quadruple UART 28C94 (QUART) est fonctionnellement similaire à deux DUART SCC26C92 montés dans un boîtier commun, avec en plus un système d'interruptions arbitrées pour un traitement efficace lors des pics d'activité sur le canal. Des signaux supplémentaires sont présents pour la gestion des interruptions et les broches d'entrée/sortie auxiliaires sont disposées différemment de celles du 26C92. Par ailleurs, le modèle de programmation du 28C94 est similaire à celui du 26C92, ne nécessitant que des modifications mineures du code pour exploiter pleinement toutes ses fonctionnalités. Le 28C94 supporte une vitesse standard maximale de Z85230 | Modes synchrone/asynchrone (USART), 2 ports. Fournit les signaux nécessaires à un contrôleur DMA tiers pour effectuer des transferts DMA. Tampon de 4 octets pour l'émission, tampon de 8 octets pour la réception par canal. Modes SDLC/HDLC. SPI (l’AS99100A pouvant se connecter à une mémoire flash ROM SPI), ou bus de type ISA . Tous les modes, à l’exception du mode pont PCIe vers bus de type ISA, disposent de broches GPIO supplémentaires . Les UART, dans chaque mode sauf le mode pont de bus de type ISA, possèdent des FIFO de 256 octets dans chaque sens, prennent en charge les transferts en rafale DMA et supportent un débit bidirectionnel maximal de 25 Mbit/s par port série. |
Utilisations
Certains modems pour ordinateurs personnels, se connectant à la carte mère, intègrent la fonction UART. La puce UART 8250 d'origine, fournie avec l'ordinateur personnel IBM, disposait d'une mémoire tampon d'un caractère pour l'émetteur et le récepteur, ce qui limitait les performances des logiciels de communication à des débits supérieurs à protocole de communication de l'UART est simple, il peut être émulé en manipulant les broches GPIO par logiciel sur des microcontrôleurs modernes (par exemple Arduino ou Teensy ), ou sur des machines d'état d'E/S programmables (par exemple PIO du Raspberry Pi Pico ou FlexIO de NXP ).