UART 16550

De Viquipèdia
Dreceres ràpides: navegació, cerca
Un xip Exar ST16C550CJ, compatible amb el NS16550.

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.[1]

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.[1] 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 el IBM PC, i pot ser integrada en la placa mare d'altres equips compatibles.

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 estar al tant 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ò dóna 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[modifica | modifica el codi]

Un xip NS16550AFN del 1992.

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.[2]

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.[2][3] Tanmateix, no tots els fabricants van adoptar aquesta nomenclatura i continuen referint-se al xip corregit com 16550.[4]

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[modifica | modifica el codi]

  1. 1,0 1,1 Frank Durda. «Serial and UART Tutorial» (en anglès), 13-01-1996. [Consulta: 10-06-2010].
  2. 2,0 2,1 «Serial UART information» (en anglès). [Consulta: 10-06-2010].
  3. «Una observació sobre els ports sèrie i llurs velocitats». [Consulta: 10-06-2010].
  4. «What are UART and How Do They Affect Performance» (en anglès). [Consulta: 10-06-2010].

Enllaços externs[modifica | modifica el codi]