# UART 16550

L'UART 16550 (transmissor/receptor asíncron universal) és un circuit integrat dissenyat per a implementar la interfície per a comunicacions sèrie. S'utilitzava freqüentment per implementar el port sèrie en ordinadors personals compatibles amb l'IBM PC, on sovint va ser connectat a una interfície RS-232 per als mòdems, ratolins sèrie, impressores i perifèrics similars.
El xip era fet originalment per National Semiconductor (NS). Dispositius similarment numerats, amb diferents nivells de compatibilitat amb la part original de NS, van ser fets per altres fabricants. Una funció de UART que és registre-compatible amb el 16550 és en general una característica de les targetes multifunció («Multi I/O») per a ordinadors compatibles amb l'IBM PC, i pot ser integrada en la placa mare d'altres equips compatibles. Per a millors prestacions calia un Zilog SCC.
La substitució de l'UART 8250 instal·lat de fàbrica va ser una actualització comú per als propietaris d'IBM PC, XT i ordinadors compatibles, quan els mòdems d'alta velocitat van estar disponibles. A velocitats superiors a 9600 bauds, els propietaris van descobrir que els ports sèrie dels equips no van ser capaços de manejar un flux continu de dades sense perdre caràcters. La substitució de l'UART 8250 (que tenia només una memòria intermèdia de dades rebudes d'un byte) per un 16550, i ocasionalment l'actualització o configuració del programari de sistema per a estar al corrent de la funció de FIFO del nou xip, millorava la fiabilitat i estabilitat de connexions de d'alta velocitat.
Les principals característiques del 16550 inclouen:
* Capacitat de convertir dades de forma serial a paral·lela i de forma paral·lela a serial, utilitzant registres de desplaçament.
* Un generador de taxa de bits (en bauds) en el xip per controlar la velocitat de dades transmesos i rebuts.
* Línies de «handshake» per a control d'un mòdem extern, controlable per programari.
* Una funció d'interrupció al microprocessador host.
* Existència d'una memòria intermèdia FIFO en el xip per a dades entrants i sortints; això dona al sistema host més temps per respondre a una interrupció generada per l'UART, sense pèrdua de dades.
Tant la interfície de maquinari com de programari del 16550 són compatibles amb l'anteriors UART 8250 i UART 16450. La versió actual (des de 1995) de National Semiconductor es diu el 16550D.

## El FIFO 16550

Un inconvenient de l'anteriors UARTS 8250 i 16450 era que interrupcions es generaven per a cada byte rebut. Això generava elevats índexs d'interrupcions mentre velocitats de transferència més grans. Més críticament, amb només una memòria intermèdia d'1 byte hi ha un risc real que un byte rebut es sobreescriurà si ocorren retards en el servei d'interrupció. Per superar aquestes deficiències, la sèrie UART 16550 va incorporar una FIFO de 16 bytes amb un disparador d'interrupció programable d'1, 4, 8 o 14 bytes.
Malauradament, hi havia un error en el 16550 original que impedia a aquesta FIFO de ser utilitzada. National Semiconductor posteriorment va alliberar el 16550A, que corregia aquest problema. Tanmateix, no tots els fabricants van adoptar aquesta nomenclatura i continuen referint-se al xip corregit com 16550.
El 16550 també incorpora una transmissió FIFO, encara que aquesta característica no és tan important, ja que les retards en el servei d'interrupció només donaria lloc a velocitats de transmissió subòptimes i no la pèrdua de dades reals.

## Referències

* 1 2 Frank Durda. «Serial and UART Tutorial» (en anglès), 13-01-1996. Arxivat de l'original el 2010-05-15. [Consulta: 10 juny 2010].
* 1 2 «Serial UART information» (en anglès). [Consulta: 10 juny 2010].
* ↑ «Una observació sobre els ports sèrie i llurs velocitats». Arxivat de l'original el 2016-03-03. [Consulta: 10 juny 2010].
* ↑ «What are UART and How Do They Affect Performance» (en anglès). [Consulta: 10 juny 2010].

## Enllaços externs

* Full de dades per a l'UART 16550D Arxivat 2008-06-13 a Wayback Machine. PDF (anglès)
* Sèrie UART, una introducció (anglès)