Universal Asynchronous Receiver / Transmitter - Universal asynchronous receiver-transmitter

Blockschaltbild für einen UART

Ein universellen asynchronen Empfänger-Sender ( UART / ju ɑːr t / ) ist eine Computer - Hardware - Vorrichtung für asynchrone serielle Kommunikation in dem das Datenformat und die Übertragungsgeschwindigkeiten konfigurierbar sind. Es sendet Datenbits nacheinander, vom niederwertigsten zum höchstwertigen, eingerahmt von Start- und Stoppbits, so dass der Kommunikationskanal ein präzises Timing verarbeitet. Die elektrischen Signalpegel werden von einer Treiberschaltung außerhalb des UART gehandhabt. Zwei übliche Signalpegel sind RS-232 , ein 12- Volt- System, und RS-485 , ein 5-Volt-System.

Es war eines der frühesten Computerkommunikationsgeräte, das verwendet wurde, um Fernschreiber für eine Bedienerkonsole anzuschließen . Es war auch ein frühes Hardwaresystem für das Internet .

Ein UART ist normalerweise ein einzelner (oder ein Teil eines) integrierten Schaltkreises (IC), der für die serielle Kommunikation über einen seriellen Port eines Computers oder Peripheriegeräts verwendet wird . Eine oder mehrere UART-Peripheriegeräte sind üblicherweise in Mikrocontroller- Chips integriert. Spezialisierte UARTs werden für Autos , Smartcards und SIMs verwendet . Frühe Fernschreiber verwendeten Stromschleifen .

Ein verwandtes Gerät, der universelle synchrone und asynchrone Empfänger-Sender (USART), unterstützt auch den synchronen Betrieb.

Senden und Empfangen von seriellen Daten

Der universelle asynchrone Empfänger-Sender (UART) nimmt Datenbytes und überträgt die einzelnen Bits sequentiell. Am Ziel setzt ein zweiter UART die Bits wieder zu vollständigen Bytes zusammen. Jeder UART enthält ein Schieberegister , das die grundlegende Methode der Umwandlung zwischen seriellen und parallelen Formen ist. Die serielle Übertragung digitaler Informationen (Bits) über eine einzelne Leitung oder ein anderes Medium ist weniger kostspielig als die parallele Übertragung über mehrere Leitungen.

Der UART erzeugt oder empfängt normalerweise nicht direkt die externen Signale, die zwischen verschiedenen Geräten verwendet werden. Separate Schnittstellengeräte werden verwendet, um die Logikpegelsignale des UART in und von den externen Signalisierungspegeln umzuwandeln , die standardisierte Spannungspegel, Strompegel oder andere Signale sein können.

Die Kommunikation kann Simplex (nur in eine Richtung, ohne dass das empfangende Gerät Informationen an das sendende Gerät zurücksenden kann), Vollduplex (beide Geräte senden und empfangen gleichzeitig) oder Halbduplex (Geräte senden und empfangen abwechselnd) sein ).

Datenframing

Diagramm mit UART-Timing

Der Ruhezustand, keine Daten, ist Hochspannung oder mit Strom versorgt. Dies ist ein historisches Erbe der Telegrafie, bei dem die Leitung hoch gehalten wird, um zu zeigen, dass Leitung und Sender nicht beschädigt sind. Jedes Zeichen wird als logisch niedriges Startbit, Datenbits, möglicherweise ein Paritätsbit und ein oder mehrere Stoppbits eingerahmt . In den meisten Anwendungen wird das niedrigstwertige Datenbit (das in diesem Diagramm links) zuerst übertragen, aber es gibt Ausnahmen (wie das Druckterminal IBM 2741 ).

Das Startbit signalisiert dem Empfänger, dass ein neues Zeichen kommt. Die nächsten fünf bis neun Bits repräsentieren, abhängig vom verwendeten Codesatz, das Zeichen. Wenn ein Paritätsbit verwendet wird, wird es nach allen Datenbits platziert. Die nächsten ein oder zwei Bits befinden sich immer im Markierungszustand (logisch hoch, dh '1') und werden als Stoppbit(s) bezeichnet. Sie signalisieren dem Empfänger, dass das Zeichen vollständig ist. Da das Startbit logisch niedrig (0) und das Stoppbit logisch hoch (1) ist, gibt es immer mindestens zwei garantierte Signalwechsel zwischen den Zeichen.

Wenn die Leitung länger als eine Zeichenzeit im logisch niedrigen Zustand gehalten wird, ist dies ein Unterbrechungszustand , der vom UART erkannt werden kann.

Empfänger

Alle Operationen der UART-Hardware werden durch ein internes Taktsignal gesteuert, das mit einem Vielfachen der Datenrate läuft, typischerweise dem 8- oder 16-fachen der Bitrate. Der Empfänger testet den Zustand des eingehenden Signals bei jedem Taktimpuls und sucht nach dem Anfang des Startbits. Wenn das scheinbare Startbit mindestens die Hälfte der Bitzeit dauert, ist es gültig und signalisiert den Beginn eines neuen Zeichens. Wenn nicht, wird er als Störimpuls betrachtet und ignoriert. Nach einer weiteren Bitzeit wird der Zustand der Leitung erneut abgetastet und der resultierende Pegel in ein Schieberegister getaktet. Nach Ablauf der erforderlichen Anzahl von Bitperioden für die Zeichenlänge (typischerweise 5 bis 8 Bit) wird der Inhalt des Schieberegisters (parallel) dem empfangenden System zur Verfügung gestellt. Der UART wird ein Flag anzeigt , neue Daten verfügbar sind, und kann auch einen Prozessor erzeugen Interrupt zu verlangen , dass der Host - Prozessor überträgt die empfangenen Daten.

Kommunizierende UARTs haben außer dem Kommunikationssignal kein gemeinsames Timing-System. Typischerweise resynchronisieren UARTs ihre internen Takte bei jeder Änderung der Datenleitung, die nicht als Störimpuls betrachtet wird. Wenn sie auf diese Weise Timing-Informationen erhalten, empfangen sie zuverlässig, wenn der Sender mit einer etwas anderen Geschwindigkeit sendet, als er sollte. Vereinfachte UARTs tun dies nicht; stattdessen resynchronisieren sie nur an der abfallenden Flanke des Startbits und lesen dann die Mitte jedes erwarteten Datenbits, und dieses System funktioniert, wenn die Sendedatenrate genau genug ist, um ein zuverlässiges Abtasten der Stoppbits zu ermöglichen.

Es ist eine Standardfunktion für einen UART, das neueste Zeichen zu speichern, während das nächste empfangen wird. Diese "doppelte Pufferung" gibt einem empfangenden Computer eine ganze Zeichenübertragungszeit, um ein empfangenes Zeichen abzurufen. Viele UARTs haben einen kleinen First-In-First-Out-( FIFO )-Pufferspeicher zwischen dem Empfängerschieberegister und der Hostsystemschnittstelle. Dies gibt dem Host-Prozessor noch mehr Zeit, einen Interrupt vom UART zu verarbeiten und verhindert den Verlust von empfangenen Daten bei hohen Raten.

Sender

Der Sendebetrieb ist einfacher, da das Timing nicht aus dem Leitungszustand ermittelt werden muss und auch nicht an feste Zeitintervalle gebunden ist. Sobald das sendende System ein Zeichen im Schieberegister ablegt (nach Beendigung des vorherigen Zeichens), erzeugt der UART ein Startbit, schiebt die erforderliche Anzahl Datenbits auf die Leitung, generiert und sendet das Paritätsbit (sofern verwendet ) und sendet die Stoppbits. Da der Vollduplex-Betrieb erfordert, dass Zeichen gleichzeitig gesendet und empfangen werden, verwenden UARTs zwei verschiedene Schieberegister für gesendete und empfangene Zeichen. Hochleistungs-UARTs könnten einen Sende-FIFO-Puffer (First In First Out) enthalten, um es einer CPU oder einem DMA-Controller zu ermöglichen, mehrere Zeichen in einem Burst im FIFO abzulegen, anstatt jeweils ein Zeichen im Schieberegister ablegen zu müssen. Da die Übertragung eines einzelnen oder mehrerer Zeichen relativ zu den CPU-Geschwindigkeiten lange dauern kann, behält ein UART ein Flag, das den Besetzt-Status anzeigt, so dass das Host-System weiß, ob sich mindestens ein Zeichen im Sendepuffer oder Schieberegister befindet; "ready for next character(s)" kann auch mit einem Interrupt signalisiert werden.

Anwendung

Senden und Empfangen von UARTs müssen für den ordnungsgemäßen Betrieb auf dieselbe Bitgeschwindigkeit, Zeichenlänge, Parität und Stoppbits eingestellt werden. Der empfangende UART kann einige nicht übereinstimmende Einstellungen erkennen und ein Flag-Bit "Rahmenfehler" für das Host-System setzen; in Ausnahmefällen erzeugt der empfangende UART einen unregelmäßigen Strom verstümmelter Zeichen und überträgt sie an das Hostsystem.

Typische serielle Ports, die bei an Modems angeschlossenen Personalcomputern verwendet werden, verwenden acht Datenbits, keine Parität und ein Stoppbit; Bei dieser Konfiguration entspricht die Anzahl der ASCII-Zeichen pro Sekunde der Bitrate geteilt durch 10.

Einige sehr kostengünstige Heimcomputer oder eingebettete Systeme verzichten auf einen UART und verwenden die CPU , um den Zustand eines Eingangsports abzutasten oder einen Ausgangsport direkt für die Datenübertragung zu manipulieren. Obwohl sehr CPU-intensiv (da das CPU-Timing kritisch ist), kann der UART-Chip daher weggelassen werden, was Geld und Platz spart. Die Technik ist als Bit-Banging bekannt .

Geschichte

Einige frühe Telegrafenschemata verwendeten Impulse variabler Länge (wie im Morsecode ) und rotierende Uhrwerkmechanismen, um alphabetische Zeichen zu übertragen. Die ersten seriellen Kommunikationsgeräte (mit Impulsen fester Länge) waren rotierende mechanische Schalter ( Kommutatoren ). Verschiedene Zeichencodes mit 5, 6, 7 oder 8 Datenbits wurden in Fernschreibern und später als Computerperipheriegeräte üblich. Die Fernschreibmaschine war ein ausgezeichnetes Allzweck-I/O-Gerät für einen kleinen Computer.

Gordon Bell von DEC entwarf den ersten UART, der eine ganze Platine, die sogenannte Line Unit , für die PDP- Computerserie, beginnend mit dem PDP-1, belegte . Laut Bell war die Hauptinnovation des UART die Verwendung von Sampling , um das Signal in den digitalen Bereich umzuwandeln, was ein zuverlässigeres Timing ermöglicht als frühere Schaltungen, die analoge Zeitmessgeräte mit manuell eingestellten Potentiometern verwendeten . Um die Kosten für Verkabelung, Rückwandplatine und andere Komponenten zu reduzieren, waren diese Computer auch Vorreiter bei der Flusssteuerung mit XON- und XOFF-Zeichen anstelle von Hardwarekabeln.

DEC hat das Line-Unit-Design zu einem frühen Single-Chip-UART für den eigenen Gebrauch zusammengefasst. Western Digital entwickelte dies um 1971 zum ersten weit verbreiteten Einzelchip-UART, dem WD1402A. Dies war ein frühes Beispiel für eine mittelgroße integrierte Schaltung . Ein weiterer beliebter Chip war der SCN2651 aus der Signetics 2650- Familie.

Ein Beispiel für einen UART aus den frühen 1980er Jahren war der National Semiconductor 8250, der in der Asynchronous Communications Adapter-Karte des ursprünglichen IBM PCs verwendet wurde. In den 1990er Jahren wurden neuere UARTs mit On-Chip-Puffer entwickelt. Dies ermöglichte eine höhere Übertragungsgeschwindigkeit ohne Datenverlust und ohne so häufige Aufmerksamkeit des Computers zu erfordern. Zum Beispiel hat der beliebte National Semiconductor 16550 einen 16-Byte- FIFO und hat viele Varianten hervorgebracht, darunter 16C550, 16C650, 16C750 und 16C850 .

Je nach Hersteller werden unterschiedliche Begriffe verwendet, um Geräte zu identifizieren, die die UART-Funktionen ausführen. Intel nannte sein 8251- Gerät ein "Programmable Communication Interface". MOS Technology 6551 war unter dem Namen "Asynchronous Communications Interface Adapter" (ACIA) bekannt. Der Begriff "Serial Communications Interface" (SCI) wurde erstmals um 1975 bei Motorola verwendet, um sich auf ihr asynchrones serielles Start-Stopp-Gerät zu beziehen, das andere als UART bezeichneten. Zilog stellte eine Reihe von seriellen Kommunikationscontrollern oder SCCs her.

Ab den 2000er Jahren entfernten die meisten IBM PC-kompatiblen Computer ihre externen RS-232- COM-Anschlüsse und verwendeten USB- Anschlüsse, die Daten schneller senden können. Für Benutzer, die noch serielle RS-232-Ports benötigen, werden jetzt häufig externe USB-zu-UART-Brücken verwendet. Sie kombinieren die Hardwarekabel und einen Chip, um die USB- und UART-Konvertierung durchzuführen. Cypress Semiconductor und FTDI sind zwei der bedeutendsten kommerziellen Anbieter dieser Chips. Obwohl RS-232-Ports für Benutzer außerhalb der meisten Computer nicht mehr verfügbar sind, haben viele interne Prozessoren und Mikroprozessoren UARTs in ihre Chips eingebaut, um Hardware-Designern die Möglichkeit zu geben, sich mit anderen Chips oder Geräten zu verbinden, die RS-232 oder RS-232 verwenden. 485 für die Kommunikation.

Struktur

Ein UART enthält normalerweise die folgenden Komponenten:

  • ein Taktgenerator, normalerweise ein Vielfaches der Bitrate, um eine Abtastung in der Mitte einer Bitperiode zu ermöglichen
  • Eingangs- und Ausgangsschieberegister
  • Sende-/Empfangssteuerung
  • Steuerlogik lesen/schreiben
  • Autobaud-Messung (optional)
  • Sende-/Empfangspuffer (optional)
  • Systemdatenbuspuffer (optional)
  • First-in, First-out ( FIFO ) Pufferspeicher (optional)
  • Signale, die von einem DMA-Controller eines Drittanbieters benötigt werden (optional)
  • Integrierter Bus-Mastering-DMA-Controller (optional)

Besondere Transceiver-Bedingungen

Überlauffehler

Ein "Überlauffehler" tritt auf, wenn der Empfänger das gerade eingegangene Zeichen nicht verarbeiten kann, bevor das nächste eintrifft. Verschiedene Geräte haben unterschiedliche Mengen an Pufferspeicher, um empfangene Zeichen zu halten. Der CPU- oder DMA-Controller muss den UART warten, um Zeichen aus dem Eingabepuffer zu entfernen. Wenn der CPU- oder DMA-Controller den UART nicht schnell genug bedient und der Puffer voll wird, tritt ein Überlauffehler auf und eingehende Zeichen gehen verloren.

Unterlauffehler

Ein "Unterlauffehler" tritt auf, wenn der UART-Sender das Senden eines Zeichens abgeschlossen hat und der Sendepuffer leer ist. In asynchronen Modi wird dies als Hinweis darauf, dass keine Daten mehr übertragen werden müssen, und nicht als Fehler behandelt, da zusätzliche Stoppbits angehängt werden können. Diese Fehleranzeige wird häufig in USARTs gefunden, da ein Underrun in synchronen Systemen schwerwiegender ist.

Rahmenfehler

Ein UART erkennt einen Rahmenfehler, wenn er kein "Stopp"-Bit zur erwarteten "Stopp"-Bitzeit sieht. Da das "Start"-Bit verwendet wird, um den Anfang eines eingehenden Zeichens zu identifizieren, ist sein Timing eine Referenz für die restlichen Bits. Wenn die Datenleitung nicht im erwarteten Zustand (hoch) ist, wenn das "Stop"-Bit erwartet wird (entsprechend der Anzahl der Daten- und Paritätsbits, für die der UART gesetzt ist), wird der UART einen Rahmenfehler melden. Ein "Break"-Zustand auf der Leitung wird auch als Framing-Fehler gemeldet.

Paritätsfehler

Ein Paritätsfehler tritt auf, wenn die Parität der Anzahl von Eins-Bits nicht mit der durch das Paritätsbit spezifizierten übereinstimmt. Zur Erkennung von Übertragungsfehlern wird häufig die Paritätsprüfung verwendet. Die Verwendung eines Paritätsbits ist optional, daher tritt dieser Fehler nur auf, wenn die Paritätsprüfung aktiviert wurde.

Bruchbedingung

Eine Unterbrechungsbedingung tritt auf, wenn der Empfängereingang länger als eine gewisse Zeitdauer, typischerweise länger als eine Zeichenzeit, auf dem "Leerzeichen"-Pegel (logisch niedrig, dh "0") ist. Dies ist nicht unbedingt ein Fehler, sondern erscheint dem Empfänger als ein Zeichen aller Null-Bits mit einem Rahmenfehler. Der Begriff "Unterbrechung" leitet sich von der Stromschleifensignalisierung ab , die die traditionelle Signalisierung für Fernschreiber war . Der Zustand "Abstand" einer Stromschleifenleitung wird dadurch angezeigt, dass kein Strom fließt, und ein sehr langer Zeitraum ohne Stromfluss wird oft durch eine Unterbrechung oder einen anderen Fehler in der Leitung verursacht.

Einige Geräte senden absichtlich den "Leerzeichen"-Pegel länger als ein Zeichen als Aufmerksamkeitssignal. Wenn die Signalisierungsraten nicht übereinstimmen, können keine sinnvollen Zeichen gesendet werden, aber ein langes "Pause"-Signal kann eine nützliche Möglichkeit sein, die Aufmerksamkeit eines nicht übereinstimmenden Empfängers auf etwas zu lenken (z. B. sich selbst zurückzusetzen). Computersysteme können das lange "Unterbrechungs"-Niveau als Anforderung verwenden, um die Signalisierungsrate zu ändern, um den Einwahlzugriff bei mehreren Signalisierungsraten zu unterstützen. Das DMX512- Protokoll verwendet die Unterbrechungsbedingung, um den Beginn eines neuen Pakets zu signalisieren.

UART-Modelle

Ein Dual-UART oder DUART kombiniert zwei UARTs zu einem einzigen Chip. In ähnlicher Weise kombiniert ein vierfacher UART oder QUART vier UARTs in einem Paket, wie beispielsweise der NXP 28L194. Ein oktaler UART oder OCTART kombiniert acht UARTs in einem Paket, wie zum Beispiel den Exar XR16L788 oder den NXP SCC2698.

Modell Beschreibung
WD1402A Der erste Single-Chip-UART im allgemeinen Verkauf. Eingeführt etwa 1971. Zu den kompatiblen Chips gehörten der Fairchild TR1402A und der General Instruments AY-5-1013.
Exar XR21V1410
Intersil 6402
CDP 1854 (RCA, jetzt Intersil)
Zilog Z8440 Universeller synchroner und asynchroner Empfänger-Sender . 2000kbit/s. Asynchron, Bisync , SDLC , HDLC , X.25 . CRC . 4-Byte-RX-Puffer. 2-Byte-TX-Puffer. Stellt Signale bereit, die von einem DMA- Controller eines Drittanbieters benötigt werden , um DMA-Übertragungen durchzuführen.
Z8530/Z85C30 Dieser universelle synchrone und asynchrone Empfänger-Sender verfügt über einen 3-Byte-Empfangspuffer und einen 1-Byte-Sendepuffer. Es verfügt über Hardware, um die Verarbeitung von HDLC und SDLC zu beschleunigen. Die CMOS-Version (Z85C30) stellt Signale bereit, die es einem DMA-Controller eines Drittanbieters ermöglichen, DMA-Übertragungen durchzuführen. Es kann asynchrone, synchrone Byte-Ebenen- und synchrone Bit-Ebenen-Kommunikationen durchführen.
8250 Veraltet mit 1-Byte-Puffer. Die maximale Standardgeschwindigkeit des seriellen Ports dieser UARTs beträgt 9600 Bits pro Sekunde, wenn das Betriebssystem eine Interrupt-Latenzzeit von 1 Millisekunde hat . 8250 UARTs wurden in IBM PC 5150 und IBM PC/XT verwendet, während die 16450 UARTs in IBM PC/AT- Serie Computern verwendet wurden.
8251
Motorola 6850
6551
Rockwell 65C52
16450
82510 Dieser UART ermöglicht einen asynchronen Betrieb bis zu 288 kbit/s mit zwei unabhängigen 4-Byte-FIFOs. Es wurde von Intel mindestens von 1993 bis 1996 hergestellt, und Innovastic Semiconductor hat ein Datenblatt von 2011 für IA82510.
16550 Der FIFO dieses UART ist kaputt, daher kann er nicht sicher schneller als der 16450 UART laufen. Der 16550A und spätere Versionen beheben diesen Fehler.
16550A Dieser UART hat 16-Byte-FIFO-Puffer. Die Triggerpegel für Empfangsunterbrechungen können auf 1, 4, 8 oder 14 Zeichen eingestellt werden. Die maximale Standardgeschwindigkeit der seriellen Schnittstelle beträgt 128 kbit/s, wenn das Betriebssystem eine Interrupt-Latenzzeit von 1 Millisekunde hat. Systeme mit niedrigeren Interrupt-Latenzen oder mit DMA-Controllern könnten höhere Baudraten verarbeiten. Dieser Chip kann Signale bereitstellen, die benötigt werden, damit ein DMA-Controller DMA-Übertragungen zum und vom UART durchführen kann, wenn der DMA-Modus, den dieser UART einführt, aktiviert ist. Es wurde von National Semiconductor eingeführt, das an Texas Instruments verkauft wurde. National Semiconductor behauptete, dass dieser UART mit bis zu 1,5 Mbit/s laufen könnte.
16C552
16650 Dieser UART wurde von Startech Semiconductor eingeführt, das jetzt im Besitz der Exar Corporation ist und nicht mit Startech.com verwandt ist. Frühe Versionen haben einen defekten FIFO-Puffer und können daher nicht sicher schneller als der 16450 UART laufen. Versionen dieses UART, die nicht kaputt waren, haben 32-Zeichen-FIFO-Puffer und könnten mit standardmäßigen seriellen Port-Geschwindigkeiten von bis zu 230,4 kbit/s funktionieren, wenn das Betriebssystem eine Interrupt-Latenzzeit von 1 Millisekunde hat. Aktuelle Versionen dieses UART von Exar behaupten, bis zu 1,5 Mbit/s verarbeiten zu können. Dieser UART führt die Auto-RTS- und Auto-CTS-Funktionen ein, bei denen das RTS#-Signal vom UART gesteuert wird, um dem externen Gerät zu signalisieren, die Übertragung zu stoppen, wenn der Puffer des UART bis zu einem vom Benutzer eingestellten Triggerpunkt oder darüber hinaus voll ist und die Übertragung zu beenden an das Gerät, wenn das Gerät das CTS#-Signal hoch (logisch 0) steuert.
16750 64-Byte-Puffer. Dieser UART kann eine maximale Standardgeschwindigkeit des seriellen Ports von 460,8 kbit/s verarbeiten, wenn die maximale Interrupt-Latenzzeit 1 Millisekunde beträgt. Dieser UART wurde von Texas Instruments eingeführt. TI behauptet, dass frühe Modelle bis zu 1 Mbit/s laufen können und spätere Modelle dieser Serie bis zu 3 Mbit/s.
16850 128-Byte-Puffer. Dieser UART kann eine maximale Standardgeschwindigkeit des seriellen Ports von 921,6 kbit/s verarbeiten, wenn die maximale Interrupt-Latenzzeit 1 Millisekunde beträgt. Dieser UART wurde von der Exar Corporation eingeführt. Exar behauptet, dass frühe Versionen bis zu 2 Mbit/s laufen können und spätere Versionen je nach Herstellungsdatum bis zu 2,25 Mbit/s laufen können.
16C850
16950 128-Byte-Puffer. Dieser UART kann eine maximale Standardgeschwindigkeit des seriellen Ports von 921,6 kbit/s verarbeiten, wenn die maximale Interrupt-Latenzzeit 1 Millisekunde beträgt. Dieser UART unterstützt 9-Bit-Zeichen zusätzlich zu den 5- bis 8-Bit-Zeichen, die andere UARTs unterstützen. Dies wurde von Oxford Semiconductor eingeführt, das jetzt zu PLX Technology gehört. Oxford/PLX behauptet, dass dieser UART mit bis zu 15 Mbit/s laufen kann. PCI-Express-Varianten von Oxford/PLX sind in einen First-Party-Bus-Mastering-PCIe-DMA-Controller integriert. Dieser DMA-Controller verwendet die DMA-Modussignale des UART, die für den 16550 definiert wurden. Der DMA-Controller erfordert, dass die CPU jede Transaktion einrichtet und ein Statusregister abfragt, nachdem die Transaktion gestartet wurde, um festzustellen, ob die Transaktion abgeschlossen ist. Jede DMA-Transaktion kann zwischen 1 und 128 Byte zwischen einem Speicherpuffer und dem UART übertragen. PCI-Express-Varianten können es der CPU auch ermöglichen, Daten zwischen sich selbst und dem UART mit 8-, 16- oder 32-Bit-Übertragungen zu übertragen, wenn programmierte E/A verwendet wird.
16C950
16954 Quad-Port-Version des 16950/16C950. 128-Byte-Puffer. Dieser UART kann eine maximale Standardgeschwindigkeit des seriellen Ports von 921,6 kbit/s verarbeiten, wenn die maximale Interrupt-Latenzzeit 1 Millisekunde beträgt. Dieser UART unterstützt 9-Bit-Zeichen zusätzlich zu den 5-8-Bit-Zeichen, die andere UARTs unterstützen. Dies wurde von Oxford Semiconductor eingeführt, das jetzt zu PLX Technology gehört. Oxford/PLX behauptet, dass dieser UART mit bis zu 15 Mbit/s laufen kann. PCI-Express-Varianten von Oxford/PLX sind in einen First-Party-Bus-Mastering-PCIe-DMA-Controller integriert. Dieser DMA-Controller wird durch die DMA-Modussignale des UART gesteuert, die für den 16550 definiert wurden. Der DMA-Controller erfordert, dass die CPU jede Transaktion einrichtet und ein Statusregister abfragt, nachdem die Transaktion gestartet wurde, um festzustellen, ob die Transaktion abgeschlossen ist. Jede DMA-Transaktion kann zwischen 1 und 128 Byte zwischen einem Speicherpuffer und dem UART übertragen. PCI-Express-Varianten können es der CPU auch ermöglichen, Daten zwischen sich selbst und dem UART mit 8-, 16- oder 32-Bit-Übertragungen zu übertragen, wenn programmierte E/A verwendet wird.
16C954
16C1550/16C1551 UART mit 16-Byte-FIFO-Puffer. Bis zu 1,5 Mbit/s. Der ST16C155X ist nicht mit dem Industriestandard 16550 kompatibel und funktioniert nicht mit dem standardmäßigen seriellen Porttreiber in Microsoft Windows.
16C2450 Dual-UART mit 1-Byte-FIFO-Puffer.
16C2550 Dual-UART mit 16-Byte-FIFO-Puffer. Pin-to-Pin und funktionskompatibel zu 16C2450. Software kompatibel mit INS8250 und NS16C550.
SCC2691 Der derzeit von NXP produzierte 2691 ist ein Einkanal-UART, der auch einen programmierbaren Zähler/Timer enthält. Der 2691 verfügt über ein Einzelbyte-Senderhalteregister und ein 4-Byte-Empfangs- FIFO . Die maximale Standardgeschwindigkeit des 2692 beträgt 115,2 kbit/s.

Der 28L91 ist eine aufwärtskompatible Version des 2691 mit wählbaren 8- oder 16-Byte-Sender- und -Empfänger-FIFOs, verbesserter Unterstützung für erweiterte Datenraten und schnelleren Bus-Timing-Eigenschaften, wodurch der Baustein besser für den Einsatz mit Hochleistungs-Mikroprozessoren geeignet ist.

Sowohl der 2691 als auch der 28L91 können auch in den Modi TIA-422 und TIA-485 betrieben werden und können auch so programmiert werden, dass sie nicht standardmäßige Datenraten unterstützen. Die Bausteine ​​werden in PDIP-40-, PLCC-44- und 44-Pin-QFP-Gehäusen hergestellt und sind leicht an Motorola- und Intel- Busse anpassbar . Sie wurden auch erfolgreich an die Busse 65C02 und 65C816 angepasst . Der 28L91 wird mit 3,3 oder 5 Volt betrieben.

SCC28L91
SCC2692 Diese Geräte werden derzeit von NXP hergestellt und sind Dual-UARTs (DUART), die aus zwei Kommunikationskanälen, zugehörigen Steuerregistern und einem Zähler/Timer bestehen. Jeder Kommunikationskanal ist unabhängig programmierbar und unterstützt unabhängige Sende- und Empfangsdatenraten.

Der 2692 verfügt über ein Einzelbyte-Senderhalteregister und ein 4-Byte-Empfänger- FIFO für jeden Kanal. Die maximale Standardgeschwindigkeit beider Kanäle des 2692 beträgt 115,2 kbit/s.

Der 26C92 ist eine aufwärtskompatible Version des 2692 mit 8-Byte-Sender- und -Empfänger-FIFOs für verbesserte Leistung bei kontinuierlicher bidirektionaler asynchroner Übertragung (CBAT) auf beiden Kanälen mit der maximalen Standardgeschwindigkeit von 230,4 kbit/s. Der Buchstabe C in der Teilenummer 26C92 hat nichts mit dem Herstellungsprozess zu tun; alle NXP UARTs sind CMOS- Geräte.

Der 28L92 ist eine aufwärtskompatible Version des 26C92 mit wählbaren 8- oder 16-Byte-Sender- und Empfänger-FIFOs, verbesserter Unterstützung für erweiterte Datenraten und schnelleren Bus-Timing-Eigenschaften, wodurch das Gerät besser für den Einsatz mit Hochleistungsmikroprozessoren geeignet ist.

Die Modelle 2692, 26C92 und 28L92 können in den Modi TIA-422 und TIA-485 betrieben werden und können auch so programmiert werden, dass sie nicht standardmäßige Datenraten unterstützen. Die Geräte werden in PDIP-40-, PLCC-44- und 44-Pin-QFP-Gehäusen hergestellt und sind leicht an Motorola- und Intel-Busse anpassbar. Sie wurden auch erfolgreich an die Busse 65C02 und 65C816 angepasst. Der 28L92 wird mit 3,3 oder 5 Volt betrieben.

SC26C92
SC28L92
SCC28C94 Der derzeit von NXP produzierte 28C94-Quadruple-UART (QUART) ähnelt funktionell einem Paar SCC26C92-DUARTs, die in einem gemeinsamen Gehäuse montiert sind, mit einem zusätzlichen Arbitrierte-Interrupt-System für eine effiziente Verarbeitung in Zeiten intensiver Kanalaktivität. Einige zusätzliche Signale sind vorhanden, um die Interrupt-Management-Funktionen zu unterstützen, und die zusätzlichen Eingangs-/Ausgangspins sind anders angeordnet als beim 26C92. Ansonsten ähnelt das Programmiermodell für den 28C94 dem des 26C92 und erfordert nur geringfügige Codeänderungen, um alle Funktionen voll auszunutzen. Der 28C94 unterstützt eine maximale Standardgeschwindigkeit von 230,4 kbit/s, ist in einem PLCC-52-Paket erhältlich und lässt sich problemlos an Motorola- und Intel-Busse anpassen. Es wurde auch erfolgreich an den 65C816-Bus angepasst.
SCC2698B Der derzeit von NXP produzierte 2698 oktale UART (OCTART) besteht im Wesentlichen aus vier SCC2692 DUARTs in einem einzigen Paket. Die Spezifikationen sind die gleichen wie beim SCC2692 (nicht beim SCC26C92). Aufgrund des Fehlens von Sender-FIFOs und der geringen Größe der Empfänger-FIFOs kann der 2698 einen Interrupt-"Sturm" verursachen, wenn alle Kanäle gleichzeitig mit einer kontinuierlichen bidirektionalen Kommunikation beschäftigt sind. Das Gerät wird in PDIP-64- und PLCC-84-Gehäusen hergestellt und ist leicht an Motorola- und Intel-Busse anpassbar. Der 2698 wurde auch erfolgreich an die Busse 65C02 und 65C816 angepasst.
SCC28L198 Der derzeit von NXP produzierte 28L198 OCTART ist im Wesentlichen eine hochskalierte Erweiterung des oben beschriebenen SCC28C94 QUART mit acht unabhängigen Kommunikationskanälen sowie einem arbitrierten Interrupt-System für eine effiziente Verarbeitung in Zeiten intensiver Kanalaktivität. Der 28L198 unterstützt eine maximale Standardgeschwindigkeit von 460,8 kbit/s, ist in PLCC-84- und LQFP-100-Gehäusen erhältlich und lässt sich problemlos an Motorola- und Intel-Busse anpassen. Der 28L198 wird mit 3,3 oder 5 Volt betrieben.
Z85230 Synchroner/Asynchroner Modus, 2 Ports. Stellt Signale bereit, die von einem DMA-Controller eines Drittanbieters benötigt werden, um DMA-Übertragungen durchzuführen. 4-Byte-Puffer zum Senden, 8-Byte-Puffer zum Empfangen pro Kanal. SDLC/HDLC-Modi. 5 Mbit/s im Synchronmodus.
Hayes ESP 1 KB Puffer, 921,6 kbit/s , 8 Ports.
Exar XR17V352, XR17V354 und XR17V358 Dual-, Quad- und Octal-PCI-Express-UARTs mit 16550-kompatiblem Registersatz, 256-Byte-TX- und RX-FIFOs, programmierbare TX- und RX-Triggerpegel, TX/RX-FIFO-Pegelzähler, fraktionierter Baudratengenerator, automatische RTS/CTS- oder DTR/DSR-Hardware Flusskontrolle mit programmierbarer Hysterese, Automatische Xon/Xoff Software Flusskontrolle, RS-485 Halbduplex Richtungssteuerausgang mit programmierbarer Umkehrverzögerung, Multi-Drop mit automatischer Adresserkennung, Infrarot (IrDA 1.1) Daten-Encoder/Decoder. Sie sind bis 25 Mbit/s spezifiziert. Datenblätter stammen aus dem Jahr 2012.
Exar XR17D152, XR17D154 und XR17D158 Dual-, Quad- und Octal-PCI-Bus-UARTs mit 16C550-kompatiblem 5G-Registersatz, 64-Byte-Sende- und Empfangs-FIFOs, Sende- und Empfangs-FIFO-Pegelzähler, programmierbarer TX- und RX-FIFO-Triggerpegel, automatische RTS/CTS- oder DTR/DSR-Flusskontrolle, automatisch Xon/Xoff Software-Flusskontrolle, RS485 HDX-Steuerausgang mit wählbarer Turnaround-Verzögerung, Infrarot (IrDA 1.0) Daten-Encoder/Decoder, Programmierbare Datenrate mit Prescaler, Bis zu 6,25 Mbit/s serielle Datenrate. Datenblätter stammen aus den Jahren 2004 und 2005.
Exar XR17C152, XR17C154 und XR17C158 Dual-, Quad- und Octal-5-V-PCI-Bus-UARTs mit 16C550-kompatiblen Registern, 64-Byte-Sende- und Empfangs-FIFOs, Sende- und Empfangs-FIFO-Pegelzähler, automatische RTS/CTS- oder DTR/DSR-Flusskontrolle, automatische Xon/Xoff-Software-Flusskontrolle, RS485 Halbduplex-Steuerung mit wählbarer Verzögerung, Infrarot (IrDA 1.0) Daten-Encoder/Decoder, Programmierbare Datenrate mit Prescaler, Bis zu 6,25 Mbit/s serielle Datenrate. Datenblätter stammen aus den Jahren 2004 und 2005.
Exar XR17V252, XR17V254 und XR17V258 Dual-, Quad- und Octal-66-MHz-PCI-Bus-UARTs mit Power Management Support, 16C550-kompatibler Registersatz, 64-Byte-TX- und RX-FIFOs mit Pegelzählern und programmierbaren Triggerpegeln, fraktionierter Baudratengenerator, automatischer RTS/CTS- oder DTR/DSR-Hardwarefluss Steuerung mit programmierbarer Hysterese, Automatische Xon/Xoff-Softwareflusssteuerung, RS-485 Halbduplex-Richtungssteuerausgang mit wählbarer Umkehrverzögerung, Infrarot (IrDA 1.0) Daten-Encoder/Decoder, Programmierbare Datenrate mit Prescaler. Datenblätter stammen aus den Jahren 2008 und 2010.

UART in Modems

Modems für PCs, die in einen Motherboard-Steckplatz eingesteckt werden, müssen auch die UART-Funktion auf der Karte enthalten. Der ursprüngliche 8250-UART-Chip, der mit dem IBM-Personalcomputer geliefert wurde, hatte jeweils einen Ein-Zeichen-Puffer für den Empfänger und den Sender, was bedeutete, dass die Kommunikationssoftware bei Geschwindigkeiten über 9600 Bit/s schlecht funktionierte, insbesondere wenn sie in einem Multitasking-System betrieben wurde oder Interrupts verarbeitete von Festplattencontrollern. Hochgeschwindigkeitsmodems verwendeten UARTs, die mit dem Originalchip kompatibel waren, aber zusätzliche FIFO-Puffer enthielten, wodurch der Software zusätzliche Zeit gegeben wurde, auf eingehende Daten zu reagieren.

Ein Blick auf die Leistungsanforderungen bei hohen Bitraten zeigt, warum der 16-, 32-, 64- oder 128-Byte-FIFO eine Notwendigkeit ist. Die Microsoft-Spezifikation für ein DOS-System erfordert, dass Interrupts nicht länger als 1 Millisekunde auf einmal deaktiviert werden. Einige Festplattenlaufwerke und Videocontroller verstoßen gegen diese Spezifikation. 9600 Bit/s liefern ungefähr jede Millisekunde ein Zeichen, daher sollte ein 1-Byte-FIFO bei dieser Rate auf einem DOS-System ausreichen, das das maximale Interrupt-Deaktivierungs-Timing einhält. Preise darüber können einen neuen Charakter erhalten, bevor der alte abgerufen wurde, und somit geht der alte Charakter verloren. Dies wird als Überlauffehler bezeichnet und führt zu einem oder mehreren verlorenen Zeichen.

Ein 16-Byte-FIFO ermöglicht den Empfang von bis zu 16 Zeichen, bevor der Computer den Interrupt bearbeiten muss. Dies erhöht die maximale Bitrate, die der Computer zuverlässig von 9600 auf 153.000 Bit/s verarbeiten kann, wenn er eine Interrupt-Totzeit von 1 Millisekunde hat. Ein 32-Byte-FIFO erhöht die maximale Rate auf über 300.000 Bit/s. Ein zweiter Vorteil eines FIFO besteht darin, dass der Computer nur etwa 8 bis 12 % so viele Interrupts bedienen muss, was mehr CPU-Zeit für die Aktualisierung des Bildschirms oder andere Aufgaben ermöglicht. Dadurch werden sich auch die Reaktionen des Computers verbessern.

Siehe auch

Verweise

Weiterlesen

  • Serieller Port komplett: COM-Ports, virtuelle USB-COM-Ports und Ports für eingebettete Systeme ; 2. Auflage; Jan Axelson; Lakeview-Forschung; 380 Seiten; 2007; ISBN  978-1-931-44806-2 .
  • Serieller Port komplett: Programmierung und Schaltungen für RS-232- und RS-485-Verbindungen und -Netzwerke ; 1. Auflage; Jan Axelson; Lakeview-Forschung; 306 Seiten; 1998; ISBN  978-0-965-08192-4 .
  • Serielle Schnittstelle und Mikrocontroller: Prinzipien, Schaltungen und Quellcodes ; 1. Auflage; Grzegorz Niemirowski; CreateSpace; 414 Seiten; 2013; ISBN  978-1-481-90897-9 .
  • Serielle Programmierung (Wikibook) .

Externe Links