L’UART ou « Universal Asynchronous Receiver Transmitter » est un circuit électronique que l’on retrouve dans nos ordinateurs et sur certains de nos modems (s’ils sont internes). Ce circuit permet de convertir dans les deux sens et gérer les données qui sont présentées sur le port série (RS232). Il permet de faire le lien physique entre le microprocesseur et le connecteur série de l’ordinateur puis vers le modem. C’est lui qui va interpréter les données qui arrivent du modem pour les renvoyer au microprocesseur. Il existe plusieurs sortes d’UART, et souvent, on parle du « 16550 » étant l’UART le mieux adapté aux modems rapides… la raison est simple: par rapport aux autres UARTs, ce dernier possède une mémoire tampon (Fifo) qui permet d’accélérer le flux des informations qui transitent par ce circuit. Il évite les temps d’arrêts et est donc bien adapté aux modem « HS ou Hight Speed » (haute vitesse).
Voici dans le détail, la liste des UARTs les plus utilisés et leurs avantages:
8250
Le 8250 fut le premier circuit SIO (integrated circuit) qui fut utilisé par les IBM PC et certains « clones » (copies conformes). De la part d’IBM, leur choix ne fut pas le meilleur, car pour un prix comparable, les 8251A ou 8530 avaient de meilleurs performances. IBM choisi le 8250 pour apporter une compatibilité aux communications qui ne pouvaient être synchrones et ceci afin d’adopter ce standard de communication, qui est moins coûteux à la fabrication.
D’un point de vue mécanique, le 8250 est un circuit relativement lent. Il semble que les logiciels de communication peuvent charger les différents registres du 8250 dans la mémoire de l’ordinateur et les traiter plus rapidement que le ferai le circuit seul. Le 8250 a un total de 7 registres. Les spécifications lui permettent un débit maximum de 56kB.
8250A
Le 8250A corrige quelques bugs (défauts) du 8250. Je ne vais entrer dans le détail concernant ces bugs, mais beaucoup de constructeurs utilisent indifféremment le 8250A du 8250. Un registre supplémentaire active le logiciel en lui indiquant la présence ou non d’un 8250. Les spécifications techniques sont les mêmes que son jumeau, et permet un débit de 56kB.
16450
Le 16450 est une version largement améliorée du 8250A et beaucoup plus rapide. Il n’y a pas d’option interne permettant de détecter directement sa présence comme le 8250A. Le 16450 a été conçu afin d’éliminer la nécessité au logiciel de créer des mémoires tampons pour accéder au fonctions du circuit. Le 16450 travaille de façon beaucoup plus rapide que ces prédécesseurs. Je ne connais pas la réelle différence qui a été apportée avec le 16450A, mais il semble que ses caractéristiques soient pratiquement identiques.
16C451
Le 16C451 est une version de technologie CMOS. L’avantage pour ce circuit conçu dans cette technologie, est de consommer moins d’énergie. Hormis ces différences, le 16C451 est le même circuit que le 16450.
16550 Non A
Il est très difficile de trouver un 16550 (non A). D’après le constructeur National Semiconductor, ils firent tout leur maximum pour récupérer tous les 16550 en circulation. Il faut aussi savoir que le 16550 fut installé très tôt sur les systèmes PS/2 d’IBM. Si vous en avez un (un 16550), le fossil driver X00 (ou XU) le détectera.
Le 16550 fut la première version de ce circuit à posséder un Fifo (sorte de mémoire tampon interne). Il semble, d’après les sources de National Semiconductor que les Fifo des premiers 16550 n’étaient pas reliés et n’étaient, de ce fait, pas activés. Les 16550 se comporteraient donc comme les 16450. D’après les documents techniques le 16550A (version corrigée) supporte un flux de données allant jusqu’à 128kB, pour des valeurs supérieures, allant jusqu’à 1.5 MB, le circuit peux générer de petites erreurs du au cristal de référence (Quartz).
16550A, 16550AF, 16550AFN, 16550C et 16550CF
Les versions qui suivent corrigent des bugs minimes, mais je n’ai pas de documentation précises à ce sujet. Suivant les appellations, les boîtiers sont aussi de différentes matières (plastique, céramique, etc…).
16550s fabriqué par Western Digital
Les 16550s de Western Digital ont un petit problème avec leur Fifo quand ils travaillent sous 2400 baud et moins.
16C551
Le 16c551 est une version CMOS du 16550AF. Se rapporter à la discussion du 16C451.
16C552
Le 16C552 est un double (dual) 16551. Dans un même boîtier on a intégré deux 16C551 ce qui améliore légèrement les caractéristiques. Ce circuit est utilisé dans les cartes multi-ports.
82510
Le 82510 est une amélioration du 16450. Il possède en plus un fifo de 4 bytes (au lieu de 8 ou 16 suivant les modèles de 16550xxx). On trouve souvent ce circuit dans les « laptops » car il est de petite taille. De plus, en cas d’inactivité, ce circuit ne consomme pratiquement rien, et donc bien adapté aux ordinateurs portatifs, « mangeurs d’énergie ».