DE68925322T2 - Universaler asynchroner Sender/Empfänger - Google Patents
Universaler asynchroner Sender/EmpfängerInfo
- Publication number
- DE68925322T2 DE68925322T2 DE68925322T DE68925322T DE68925322T2 DE 68925322 T2 DE68925322 T2 DE 68925322T2 DE 68925322 T DE68925322 T DE 68925322T DE 68925322 T DE68925322 T DE 68925322T DE 68925322 T2 DE68925322 T2 DE 68925322T2
- Authority
- DE
- Germany
- Prior art keywords
- data
- communication device
- station
- fifo
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012546 transfer Methods 0.000 claims description 85
- 238000004891 communication Methods 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 25
- 238000000034 method Methods 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 10
- 238000013500 data storage Methods 0.000 claims 2
- 238000006243 chemical reaction Methods 0.000 claims 1
- 108091006146 Channels Proteins 0.000 description 46
- 230000002093 peripheral effect Effects 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 11
- 230000015654 memory Effects 0.000 description 9
- 230000008859 change Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 102100034223 Golgi apparatus protein 1 Human genes 0.000 description 5
- 101100449731 Homo sapiens GLG1 gene Proteins 0.000 description 5
- 101100439271 Schizosaccharomyces pombe (strain 972 / ATCC 24843) cfr1 gene Proteins 0.000 description 5
- 230000009471 action Effects 0.000 description 5
- 230000007547 defect Effects 0.000 description 5
- 101100464782 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CMP2 gene Proteins 0.000 description 4
- 238000010304 firing Methods 0.000 description 4
- 101150025253 AFR1 gene Proteins 0.000 description 3
- 101100496169 Arabidopsis thaliana CLH1 gene Proteins 0.000 description 3
- 101150047265 COR2 gene Proteins 0.000 description 3
- 101100044057 Mesocricetus auratus SYCP3 gene Proteins 0.000 description 3
- 101100467189 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) QCR2 gene Proteins 0.000 description 3
- 101100099943 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) TOP2 gene Proteins 0.000 description 3
- 101100080600 Schizosaccharomyces pombe (strain 972 / ATCC 24843) nse6 gene Proteins 0.000 description 3
- 101150037250 Zhx2 gene Proteins 0.000 description 3
- 102100025093 Zinc fingers and homeoboxes protein 2 Human genes 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 101150111293 cor-1 gene Proteins 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 101001003233 Homo sapiens Immediate early response gene 2 protein Proteins 0.000 description 2
- 101001106523 Homo sapiens Regulator of G-protein signaling 1 Proteins 0.000 description 2
- 102100020702 Immediate early response gene 2 protein Human genes 0.000 description 2
- 102100021269 Regulator of G-protein signaling 1 Human genes 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 101100440695 Dictyostelium discoideum corB gene Proteins 0.000 description 1
- 101100134922 Gallus gallus COR5 gene Proteins 0.000 description 1
- 101100281675 Gibberella fujikuroi (strain CBS 195.34 / IMI 58289 / NRRL A-6831) fsr4 gene Proteins 0.000 description 1
- 101100281676 Gibberella fujikuroi (strain CBS 195.34 / IMI 58289 / NRRL A-6831) fsr5 gene Proteins 0.000 description 1
- 101001003310 Homo sapiens Immediate early response gene 5 protein Proteins 0.000 description 1
- 101000999079 Homo sapiens Radiation-inducible immediate-early gene IEX-1 Proteins 0.000 description 1
- 102100020688 Immediate early response gene 5 protein Human genes 0.000 description 1
- 102100036900 Radiation-inducible immediate-early gene IEX-1 Human genes 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 101150049389 tor2 gene Proteins 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Systems (AREA)
Description
- Die vorliegende Erfindung bezieht sich auf die Datenkommunikationen zwischen einem Datenverarbeitungssystem und seinen zugeordneten Peripheriegeräten und im einzelnen auf ein verbessertes universelles asynchrones Empfänger/Sender-Gerät (UART = universal asynchronous receiver/transmitter).
- Datenkommunikation ist ein breiter Ausdruck, der verwendet wird, um die Übertragung von Daten von einem Punkt zu einem anderen zu definieren.
- Um kohärente Datenkommunikation zwischen zwei oder mehr Punkten sicherzustellen, beispielsweise zwischen einem Datenverarbeitungssystem und einem seiner Peripheriegeräte, ist ein Schnittstellenstandard etabliert worden, um die Charakteristiken der Kommunikationsverbindung zu definieren.
- Der populärste Schnittstellenstandard für Datenübertragung ist asynchrone Kommunikation. Dieser Standard spezifiziert, daß jedem Datenzeichen, das zu übertragen ist, ein "Start"-Bit vorangeht und ihm ein oder mehr "Stop"-Bits folgen. Zwischen Zeichen wird eine Markierungsbedingung kontinuierlich aufrechterhalten. Da jedes übertragene Zeichen von diesen "Start"- und "Stop"-Bits umrahmt ist, wird der Empfänger bei jeder Übertragung neu synchronisiert, was ungleiche Intervalle zwischen Zeichen ermöglicht.
- Ein üblicherweise verwendetes asynchrones Datenkommunikationsgerät ist der universelle asynchrone Empfänger/Sender oder UART. Ein konventionelles UART beruht auf zwei getrennten seriellen Schieberegistern, jedes mit seinem eigenen seriellen Eingang und Takt zum Empfang von Daten von und Übertragen von Daten zu einem Modem oder Peripheriegerät in Reaktion auf Steuersignale von dem zugeordneten Datenverarbeitungssystem. Diese Architektur ermöglicht, daß Daten gleichzeitig gesandt und empfangen werden können durch das UART bei unterschiedlichen Daten raten.
- Zum Senden von Daten von ihrem zugeordneten Datenverarbeitungssystem zu einem ausgewählten Modem oder Peripheriegerät kann ein UART den parallelen Transfer von Daten (typischerweise ein 8-Bit-Zeichen oder Byte, das auf den Systemdatenbus plaziert wird) in das UART-Senderhalteregister anfordern. Das Sendehalteregister transferiert dann die Daten zu einem Senderschieberegister, das seriell jedes Datenbit zu dem Peripheriegerät überträgt. Zu Beginn, wenn das Senderhaltegerister leer ist, signalisiert das UART der CPU, daß es bereit ist für den Empfang von Daten. Daten werden transferiert, wenn ein Datenabtasteingang von dem System zu dem UART entsprechend gepulst wird.
- Da das Senderhalteregister "leer" ist, sobald der Paralleltransfer von Daten zu dem Senderschieberegister erfolgt, selbst dann, wenn das tatsächliche serielle Verschieben von Daten durch das Schieberegister nicht vollständig ist, kann das UART dem Datenverarbeitungssystem anzeigen, daß ein neues Datenzeichen in das Halteregister geladen werden kann. Wenn die neuen Daten in das Halteregister geladen werden, während das serielle Senderschieberegister noch nicht frei ist, dann werden die Daten in dem Halteregister gehalten, bis das serielle Verschieben der Ursprungsdaten beendet ist. Der Transfer der neuen Daten in das Schieberegister darf dann erfolgen.
- Demgemäß kann ein konventionelles UART ein Maximum an zwei Datenzeichen halten für die Übertragung von seinem zugeordneten Datenverarbeitungssystem. Wenn die vollständige Übertragung den Transfer von mehr als zwei Zeichen erfordert, muß dann das Datenverarbeitungssystem, das Daten viel schneller transferieren kann als das UART-Senderschieberegister, entweder warten, bis das Schieberegister seinen seriellen Transfer beendet hat, oder andere Aufgaben unternehmen und dann auf mehrere Interrupts von dem UART reagieren, um die Übertragung zu beenden. Beiden Alternativen stellen einen extrem ineffizienten Gebrauch der Datenverarbeitungszeit dar.
- Empfang von Daten durch das Datenverarbeitungssystem von einem Modem oder anderen Peripheriegerät über das UART unterliegt derselben zeitlichen Ineffizienz wie die Datensendung. Das heißt, der Prozessor wird durch die Betriebsrate und Datenkapazität des UART-Empfangsabschnitts belegt. Wie bei der Datensendung verwendet für den Datenempfang das UART ein Schieberegister und ein Halteregister. Ein Datenzeichen wird seriell von dem Modem oder dem Peripheriegerät in ein Seriell-nach- Parallel-Empfangerschieberegister geschoben. Wenn das vollständige Datenzeichen in dem Schieberegister versammelt worden ist, wird es zu einem Empfängerhalteregister transferiert, womit das Empfängerschieberegister freigemacht wird für den Empfang des nächsten Zeichens von der Übertragungsleitung. Das UART zeigt dem Prozessorsystem an, daß es Daten empfangen hat, bereit zum Transfer, und plaziert die Daten auf dem Systembus für Paralleltransfer, wenn die entsprechende Abtastung von dem System empfangen wird.
- UARTs können entweder in einem Interruptmodus oder in einer Abfragekonfiguration verwendet werden. In der Interruptkonfiguration sendet das UART einen Interrupt zu dem Datenverarbeitungssystem, das es bedient, indem entweder Daten auf dem Systembus plaziert werden oder Daten von dem Systembus entnommen werden. Da ein konventionelles UART nur ein einziges Datenzeichen in jedem seiner Empfänger und Senderhalteregister halten kann, sind mehrere Interrupts erforderlich, wenn viele Datenbytes zu senden oder zu empfangen sind.
- Zum Verringern des Interruptübermaßes des Prozessors hat eine jüngere UART-Konstruktion die Einzelbyteempfänger und -senderhalteregister mit Multiple-Bytes-zuerst-eingegeben-zuerst-ausgegeben-Speicher (FIFO) ersetzt. Das NS16550A UART von National Semiconductor Corporation verwendet zwei benutzerwählbare 16-Byte-FIFO-Speicher als Sender- und Empfängerpuffer. Diese Sender- und Empfänger-FIFOs ermöglichen die Akkumulation von Datenzeichen innerhalb des UART, was das Erfordernis für mehrere Interrupts zu dem Prozessor während Sendung und Empfang von Daten eliminiert. Ein UART dieses Typs ist beschrieben in US-Patent 4,823,312.
- Obwohl das NS16550A UART ein sehr fortschrittlicher Baustein ist, basieren seine Statusindikationen primär auf Einzelbytefehlerindikationen.
- In der weit überwiegenden Mehrzahl der Fälle sind Daten, die von dem UART empfangen worden sind, fehlerfrei. Konventionelle Statusindikationen haben jedoch nicht dem Datenverarbeitungssystem ermöglicht, die Anzahl von aufeinanderfolgenden fehlerfreien Datenbytes in dem Empfänger-FIFO zu erkennen. Dies verhindert das Entnehmen von aufeinanderfolgenden Datenbytes durch das Datenverarbeitungssystem, bis der Status für jedes Byte zunächst gelesen worden ist. Da der Status von fehlerfreien Daten unkonsequent ist, wird ein erheblicher Teil der Zugriffszeit des Datenverarbeitungssystems verschwendet, d.h. zwei Taktzugriffe für jedes Datenbyte, das zu lesen ist im Falle von fehlerfreien Daten.
- Es sind auch UARTs verfügbar, die mehrere Kanäle für asynchrone Kommunikation zwischen einem Datenverarbeitungssystem und einer Anzahl von zugeordneten Peripheriegeräten ermöglichen. Jeder UART-Kanal umfaßt seinen eigenen Registersatz, identisch mit dem Registersatz jedes der anderen Kanäle. Dieser Registersatz speichert Information, die den Kanal relativ zu seinem Betrieb charakterisiert. Typischerweise wird der Registersatz jedes Kanals mit der entsprechenden digitalen Information bei Initialisierung des UART geladen. Diese Information kann dann dynamisch modifiziert werden, um eine Anpassung an sich ändernde Betriebserfordernisse zu ermöglichen. Ein Problem, das bei konventionellen Mehrkanal-UARTs inhärent ist, ist, daß es zwar wünschenswert sein mag, identische Information in entsprechende Register jedes Kanals zu laden, diese Information jedoch sequentiell in die Register individueller Kanäle geladen werden muß. Demgemäß verschwendet das Laden der Register mit identischer Information sowohl bei Initialisierung als auch bei dynamischer Modifikation wertvolle Verarbeitungszeit.
- Der Transfer von Daten in einem Datenverarbeitungssystem kann generell als einer von drei Grundtypen bezeichnet werden: I/O-gebündelt, speichergebündelt oder direkter Speicherzugriff (DMA). I/O-gebündelte und speichergebündelte Transfers erfordern den Prozessoreingriff, womit der Prozessor während der Zeit belegt ist, in der Datentransfers ausgeführt werden. Bei DMA-Transfers zwischen einem Peripheriegerät und einem Systemspeicher ist ein Pfad vorgesehen für direkten Datentransfer ohne Eingriff des Prozessors. Demgemäß kann unter Verwendung dieses Pfades das Peripheriegerät Daten direkt zu dem Speicher oder von dem Speicher transferieren mit hoher Geschwindigkeit, während der Prozessor freigegeben ist, um andere Aufgaben während des Transfers zu erfüllen.
- Leider ermöglichen die DMA-Kapazitäten von konventionellen UARTs es nicht, Steuerzeichen, Fehler oder sich ändernde Mengen von durch das UART empfangenen Daten während DMA zu steuern, während entweder interne oder externe FIFOs eingesetzt werden. Konventionelle UARTs unterscheiden nicht zwischen Steuerzeichen, Fehlern oder sich ändernden Mengen an gültigen Daten, bevor ein DMA-Transfer gefordert wird. Demgemäß muß das Datenverarbeitungssystem entweder alle exzeptionellen Datenfälle lösen oder den DMA-Transfer von empfangenen Daten verhindern. Da, wie oben erwähnt, jedoch die meisten der empfangenen Daten gültig sind und ohne Ausnahme, braucht das UART nur Prozessorzeit für Datentransfers anzufordern, wenn es ein exzeptionelles Datenbyte erkennt.
- Die Erfindung ist in den unabhängigen Ansprüchen 1 und 2 ausgeführt. Bestimmte Ausführungsformen der Erfindung sind in den abhängigen Ansprüchen wiedergebeben.
- Andere Merkmale und Vorteile der vorliegenden Erfindung ergeben sich unter Bezugnahme auf die detaillierte, unten wiedergegebene Beschreibung der Erfindung, die in Verbindung mit den beigefügten Zeichnungen zu lesen ist.
- Fig. 1 ist eine schematische Wiedergabe eines verbesserten Registersatzes eines UART gemäß der vorliegenden Erfindung.
- Fig. 2 ist ein Blockdiagramm zur Illustration der Architektur eines UART gemäß der vorliegenden Erfindung.
- Fig. 3 ist eine schematische Wiedergabe von Rx FIFO und Tx FIFO Datentransfers in einem UART gemäß der vorliegenden Erfindung.
- Fig. 4 ist eine schematische Wiedergabe des Formates von Daten, Bytestatus, Kanalstatus und Kanalausnahmeregistern des verbesserten Registersatzes eines UART gemäß der vorliegenden Erfindung.
- Fig. 5 ist eine schematische Wiedergabe des Formats von Steuer-, Kanal-I/O-, Tx CNT- und Rx CNT-Registern des verbesserten Registersatzes eines UART gemäß der vorliegenden Erfindung.
- Fig. 6 ist eine schematische Wiedergabe des Formats von Divisor-, Initialisations-, Vergleichsregistern 0-3 und Vergleichsregistern 4-7 des alternativen Registersatzes eines UART gemäß der vorliegenden Erfindung.
- Fig. 7 ist ein Flußdiagramm zur Illustration der Prozedur für das Aufrechterhalten eines internen und/oder externen Sender-FIFO in Verbindung mit einer System-DMA-Einheit.
- Fig. 8 ist ein Flußdiagramm zur Illustration der Prozedur für das Halten eines internen und/oder externen Empfänger-FIFO in Verbindung mit einer System-DMA-Einheit.
- Gemäß Fig. 1 besteht der verbesserte Registersatz A eines universellen asynchronen Empfänger/Senders (UART) gemäß der vorliegenden Erfindung aus acht 32-Bit-breiten Registern einschließlich fünf Registern (Adressen 00000 bis 10000) für Standardserienkanalbetrieb, DMA-Betrieb und automatischer Sende-Tx-Fluß-Steuerung, einem Register (Adresse 10100) für Modem- oder Allgemeinzweck I/O Merkmale und zwei Registern (Adressen 11000 und 11100) für externe FIFO-Steuerung.
- Zusätzlich zu dem verbesserten Registersatz A ist ein alternativer Registersatz B, der acht 32-Bit Register hat, zugreifbar durch Setzen eines Alternativregisterbits. Der alternative Registersatz B wird primär verwendet während der UART-Initialisierung. Empfangsdatenvergleichsregister, ein Baudratenteiler und ein I/O-Datenrichtungsregister (zugegriffen unter Adressen, wie in Fig. 1 angegeben) sind alle zugreifbar, wenn das Alternativregisterbit gesetzt ist.
- Gemäß Fig. 2 werden fünf Adreßbits A0-A4 verwendet, um die internen Register zu wählen. Identische Registersätze sind bei jedem von vier seriellen Kanälen verfügbar in der unten beschriebenen UART-Ausführungsform; Kanalwählpins sind vorgesehen für den Zugriff auf die Registersätze bei jedem seriellen Kanal.
- Alle vier UART-Kanäle werden auf einen Kompatibilitätsmodus rückgesetzt Zwei Bits in einem Kompatibilitätsmodusregistersatz, wiedergegeben in Fig. 1, ermöglichen die Auswahl von 8, 16, 32 Bit Busbreite oder Kompatibilitätsmodusbetrieb. Diese beiden Bits sind IER6 und IER7 in dem Interrupt-Entsperr-Register (IER), das in weiteren Einzelheiten unten diskutiert wird. Wenn IER6,7 auf 00, 01, 10 bis 11 gesetzt werden, dann sind die UART-Moden Kompatibilität 8, 6 bzw. 32 Bit.
- Indem erneut auf Fig. 1 eingegangen wird, ist ein Datenregister (Adresse 00000) als 4, 2 oder 1 Byte breite Felder organisiert, abhängig von der programmierten Busbreite. In Fig. 2 repräsentiert das Datenregister den Speicherplatz an der Oberseite des FIFO im Falle von sowohl dem Empfänger als auch dem Senderteil des UART und wird verwendet zum Lesen von Daten aus einem Empfänger Rx FIFO 12 oder zum Schreiben von Daten in einen Sender Tx FIFO 14. (Jede Bezugnahme in der nachfolgenden Beschreibung auf "Rx FIFO" oder "Tx FIFO" bezieht sich auf die internen UART FIFOs 12 bzw. 14. (Jeglicher Bezugnahme auf ein externes Tx FIFO oder ein extern Rx FIFO wird das Wort "extern" vorangehen).
- Die Rx und Tx FIFOs 12 bzw. 14 sind von konstanter Länge unabhängig von der Busbreite. Das bedeutet, daß eine Hälfte der Zahl von Zugriffen erforderlich ist für den Transfer von Daten zu/von diesen FIFOs im 16-Bit-Modus im Vergleich mit dem 8-Bit-Modus und ein Viertel der Anzahl von Zugriffen erforderlich ist für den Transfer von Daten zu/von diesen FIFOs im 32-Bit-Modus, verglichen mit dem 8-Bit-Modus.
- Wie in Fig. 3 wiedergegeben, wird beim Transfer von mehreren Byts von Rx FIFO 12 durch einen Datenbuspuffer 10 während eines einzigen Zugriffs (16-Bit- oder 32-Bit-Modus) das niedrigststellige Byte auf dem CPU-Bus das Byte sein, das früher empfangen wurde als die anderen Bytes; wenn mehrere Bytes zu Tx FIFO 14 durch Datenbuspuffer 10 während eines einzigen Zugriffs (16-Bit- oder 32-Bit-Modus) transferiert werden, ist das niedrigstellige Byte auf dem CPU-Bus das erste Byte, das auf der seriellen Leitung ausgesandt wird.
- Das Bytestatusregister (BSR) 16 liefert den zugeordneten Leitungsstatus und die Byteanpaßinformation für jedes Byte, das die CPU vom Rx FIFO 12 liest. Wie in Fig. 1 gezeigt, enthält BSR 16 (Adresse 00100) 4, 2 oder 1 Byte weite Felder, abhängig von der programmierten Busbreite. Der Typ an Information, geliefert von BSR 16 für jedes empfangene Datenbyte ist Überschrieb-, Paritäts- und Rahmenfehler; Bruchindikation, Byteanpassung und Byteanpassung ID. Individueller Bytestatus bleibt in BSR 16, bis die zugeordneten Daten von Rx FIFO 12 gelesen worden sind. BSR 16 wird aufgefrischt mit dem Status für die nächste Gruppe von Datenbytes, sobald diese Bytes von dem Rx FIFO 12 gelesen werden können. In dem Blockmodus, der in größeren Einzelheiten unten beschrieben wird, akkumuliert BSR 16 den Status von jedem Byte, bis es gelesen wird. Wenn es weniger Datenbyts gibt als die volle Busbreite, die während des Datenlesens zu geben ist, werden die Statusbytes in BSR 16 der Position der Datenbytes entsprechen, die vom Rx FIFO 12 gelesen werden können.
- Ein Kanalstatusregister (CSR) liefert die Statusindikation für alle Interruptbedingungen. Wie in Fig. 1 gezeigt, enthält CSR (Adresse 01000) zwei Byte breite Felder mit der Bezeichnung Interrupt-Identifikation (hR) bzw. Bytes bis auf Ausnahme (BTE) und zwei Byte breite Reservefelder.
- Die Bits des IIR-Feldes werden gesetzt, wenn ihre zugeordnete Interruptbedingung aktiv ist. Das entsprechende Bit im IER muß gesetzt werden, bevor irgendeine Indikation in dem IIR das externe Interruptsignal aktivieren kann. Das IIR-Bit wird jedoch gesetzt, wenn es eine aktive Interrupt-Bedingung gibt, unabhängig von dem Setzen des Interrupt- Entsperrbits.
- Die folgenden Interruptbedingungen setzen jeweils ein IIR Bit:
- 1. Erreichen eines programmierten Empfängertriggerpegels oder einer aktiven Empfänger-Auszeitbedingung setzt Bit IIR7.
- 2. Eine Anpassung in irgendeinem der Vergleichsregister (unten beschrieben) setzt das Bit IIR6.
- 3. Ein Leitungszustand Fehlerbedingung (Parität, Rahmen, Überschrieb, Bruch) setzt das Bit IIR5.
- 4. Eine Änderung in irgendeinem Eingangsstatusindikator von den Allgemeinzweck-I/O-Leitungen, programmiert als Eingänge in das Datenrichtungsregister (unten beschrieben), setzt Bit IIR4.
- 5. Eine Anpassung in einem der Vergleichs-Tx-Flußsteuerregister setzt Bit IIR3.
- 6. Eine Tx FIFO Leer-(TFE)-Bedingung oder Abschluß einer vorprogrammierten Anzahl von Sendertransfers über DMA setzt Bit IIR2. Die TFE-Bedingung wird gelöscht, nachdem das Senderentsperrbit rückgesetzt wird oder ein Byte in das Tx FIFO 14 geladen wird.
- 7. Beendigung einer vorprogrammierten Anzahl von Empfängertransfers über DMA setzt IIR1.
- IRR-Bit 0 (TEMPT) wird gesetzt, wenn der Sender vollständig leer ist. Das Setzen dieses Bits kann keinen Interrupt zum Auftreten bringen, ist jedoch in diesem Register enthalten für zweckmäßiges Überprüfen des Senders während Halbduplexbetrieb.
- Indem erneut auf Fig. 2 eingegangen wird, indiziert gemäß einem Aspekt der vorliegenden Erfindung das Bytes-bis-auf-Ausnahme-Register (BTE) 18, wieviele Bits in Rx FIFO 12 bleiben, bis auf eine Ausnahme gestoßen wird. Eine Ausnahme wird in diesem Kontext definiert als alles außer gültigen Daten, beispielsweise ein leeres Rx FIFO 12, ein Leitungsstatusfehler oder eine Vergleichsregisteranpassung. Die BTE-Zählung ist der Statusindikator, den das System am häufigsten verwenden wird, da üblicherweise von dem UART Daten fehlerlos empfangen werden. Der Zählstand im BTE 18 wird nach jedem Lesen des Rx FIFO 12 durch die CPU aufgefrischt.
- BTE 18 eliminiert die Notwendigkeit, den Status bei jedem Byte zu überprüfen, da die CPU nun dem UART ermöglichen kann, die Funktion auszuführen. Das UART liefert dann den Zählstand von aufeinanderfolgenden gültigen Datenbytes von der Oberseite des Rx FIFO 12 bis zu der ersten Ausnahme. Die CPU verwendet diesen variablen Zählstand zum Bestimmen der Anzahl von Bytes, die aus dem Rx FIFO 12 in einem Lesezugriff zu extrahieren sind.
- In dem 16-Bit-Modus wird auf den Kanalstatus zugegriffen über ein 16-Bit breites Register; in dem 8-Bit breiten Modus wird auf den Kanalstatus zugegriffen über die zwei Byte breiten Register IIR und BTE.
- Gemäß Fig. 1 enthält das Kanalausnahmeregister (CER) (Adresse 01100) zwei Byte breite Felder mit dem Namen Interrupt-Entsperrung (IER) bzw. FIFO Status (FSR) und zwei Byte breite Reservefelder.
- Das IER-Feld hält die Interrupt-Entsperrdaten. Die acht möglichen Interrupts sind:
- 1. Empfänger-FIFO-Triggerpegel (RDT) oder Empfängerzählstand (RCR);
- 2. Anpassung (MCH);
- 3. Leitungsstatus (LSI);
- 4. Eingangsstatus (ISI);
- 5. Sender-FIFO-Flußsteuerung (TFC);
- 6. Sender-FIFO leer (TFE) oder Senderzählstand (TCR); und
- 7. Empfänger-Auszeit (RTO).
- Die RFT- und RCR-Interrupts sind einander gegenseitig ausschließende Arbeitsgänge in dem UART, ebenso wie TFE- und TCR-Interrupts. Alle Interruptprioritäten werden vom Anwender bestimmt.
- Das FSR-Feld indiziert die Anzahl von leeren Räumen in Tx FIFO 14, gleichgültig ob es dort eine Anpassung gibt oder ein Fehler erkannt wurde, irgendwo im Rx FIFO 12, und unabhängig davon, welche Bytes in dem Datenregister gültige serielle Empfängerdaten sind. Die Bits FSR7, 6 indizieren die Anzahl von Leerräumen in Tx FIFO 14 entsprechend dem folgende Code: Tx FIFO Status leer halbvoll 1 Raum leer voll.
- Bit FSR5 indiziert, daß zumindest ein Byte in Rx FIFO 12 geladen ist, das an ein Byte in Vergleichsregistern 2-7 angepaßt ist. Dieses Bit wird als ein Vorwärtssignal verwendet, daß es ein zu verarbeitendes Steuerzeichen gibt.
- Bit FSR4 indiziert, daß es zumindest eine Leitungsstatusindikation gibt in Verbindung mit einem Datenbyte in Rx FIFO 12. Dieses Bit wird als ein Voraussignal verwendet, daß ein Fehler oder Bruch aufgetreten ist.
- Bits FSR3-0 indizieren die Bytepositionen an der Oberseite von Rx FIFO 12, welche gültige Daten enthalten. Dies wird von der CPU nur dann benötigt, wenn es weniger als eine ganzzahlige Anzahl von Datenbytes gibt, die während eines 16- oder 32-Bit breiten Lesevorgangs präsentiert werden. Wenn es weniger Bytes von gültigen Empfängerdaten im Datenregister gibt als der Datenbus breit ist, dann werden die Bits FSR3-0 in dem FSR-Feld gesetzt zur Anzeige der gültigen Datenbytepositionen. Nur die aufeinanderfolgenden Datenbytes, die zu dem Zeitpunkt gültig sind, zu welchem das FSR-Feld gelesen wird, werden zu der CPU während des nächsten Lesevorgangs des Datenregisters übertragen. Demgemäß kann durch Vergleichen der Bits, die in dem FSR gesetzt sind, mit den vom Datenregister empfangenen Bytes der Benutzer bestimmen, welche Bytes gültig sind. Diese Technik bedeutet, daß das UART nicht zusätzliche Daten in die Oberseite des FIFO verschiebt, bis die CPU das Datenregister liest. Deshalb sollte die CPU das Datenregister so schnell wie möglich nach dem Lesen des FSR lesen, um irgendwelchen unbenutzten Raum in der Oberseite des FIFO "freizumachen". Bytes werden immer noch in den offenen Raum aufgenommen, der nicht in der Oberseite des FIFO während dieser Zeit enthalten ist.
- Bei Verwendung eines 32-Bit breiten CPU-Datenbus wird das folgende Beispiel gegeben. Die CPU liest das FSR-Feld, wenn es nur drei aufeinanderfolgende gültige Datenbytes in Rx FIFO 12 und keine anderen Daten gibt. Demgemäß hat das FSR die drei niedrigststelligen Bits gesetzt. Wenn die CPU dann das Datenregister liest, wird das UART nur drei gültige Datenbytes in die niedrigsten Bytepositionen ausgeben und ein OD-Zeichen in die höchste Byteposition. Dies ist der Fall selbst dann, wenn ein gültiges Datenbyte in Fx FIFO 12 zwischen dem Zeitpunkt des Lesens durch die CPU des FSR-Feldes und dem Zeitpunkt, wo sie das Datenregister liest, gelangt. Zu allen anderen Zeitpunkten sind die Daten, die dem CPU-Bus präsentiert werden, ebenso breit wie der Bus.
- Bei einem 16-Bit breiten CPU-Datenbus wird das folgende Beispiel gegeben. Die CPU liest das FSR-Feld, wenn es nur ein gültiges Datenbyte im Rx FIFO 12 gibt und keine anderen Daten. Demgemäß hat das FSR-Feld das Bit niedrigster Ordnung gesetzt. Wenn die CPU dann das Datenregister liest, wird das UART nur ein gültiges Datenbyte in die niedrigsten Bytepositionen eingeben und ein 00-Zeichen in die höchste Byteposition. Dies ist der Fall selbst dann, wenn ein gültiges Datenbyte in Rx FIFO 12 gelangt zwischen dem Zeitpunkt, zu dem die CPU das FSR-Feld liest, und dem Zeitpunkt, wo sie das Datenregister liest. Zu allen anderen Zeiten werden die Daten, die dem CPU-Bus präsentiert werden, ebenso breit sein wie der Bus.
- Das Steuerregister (Adrese 10000) ist das Herz der UART-Operationen. Es enthält vier Byte breite Felder, die in Fig. 1 und 2 als Kanalformat (CFR), Kanaloperation (COR), Senderoperation (TOR) bzw. Empfängeroperation (ROR) identifiziert sind.
- Das CFR-Feld steuert das UART-Blockmodusentsperr- und serielle Datenformat. Der Blockmodus bestimmt, ob Empfängerfehler in BSR 16 akkumuliert werden oder nicht. Wenn der Blockmodus entsperrt ist, akkumuliert BSR 16 alle Fehler, Brüche und Anpaßinformation in Verbindung mit Daten, die durch die Oberseite des Rx FIFO 12 laufen. Die Resultate dieser Akkumulation werden indiziert durch das LSI- und Anpaßbit in dem IIR-Feld. Nachden die CPU BSR 16 gelesen hat, werden alle Statusbits gelöscht einschließlich der zugeordneten IIR-Bits. Das Setzen des Bits CFR6 entsperrt den Blockmodus.
- Die serielle Datenformatspezifikation umfaßt Datenlängen (5-8 Bits), Stopbits (1, 1-1/2, 2) und Parität. Wenn Bit CFRS 0 ist, wird ein Stopbit ausgesandt mit allen Datenkombinationen. Wenn Bit CFRS 1 ist, werden zwei Stopbits ausgesandt mit allen Kombinationen von Daten mit Ausnahme von 5-Bit-Daten, die mit 1,5 Stopbits ausgesandt werden. Das Setzen von Bit CFR5 beeinflußt den Empfänger nicht. Es überprüft nur für ein Stopbit. Bits CFR4,3 wählen die Anzahl von Datenbits, die in jedem Zeichen ausgsandt oder empfangen werden. Wenn Bits CFR4,3 00, 01, 10 bzw. 11 sind, dann werden 5, 6, 7 bzw. 8 Bits seriell ausgesandt bzw. empfangen. Das Setzen von CFR2 entsperrt die Paritätsaussendung und -empfang. Wenn die Parität entsperrt ist, wird geradzahlig Parität ausgewählt durch Setzen des Bits CFR1. Das Löschen von Bit CFR1 bei entsperrter Parität resultiert in ungeradzahliger Parität. Das Setzen von Bit CFR0 entsperrt die Mark-Space-Parität, wenn das Paritätsentsperrbit CFR2 gesetzt ist. Wenn die Bits CFR2 und CFR0 gesetzt sind, dann bestimmt CFR1, ob Mark-(CFR1=0)- oder Space-(CFR1=1)-Parität ausgesandt und empfangen wird.
- Das Bit CFR7 ist Reserve. Wenn beschrieben, sollte dieses Bit auf 0 gesetzt sein, und beim Lesen soll es immer 0 indizieren.
- Das COR-Feld steuert die Altenativregisterauswahl, die Empfängerkopplung, die Datenbuszugriffsbreite, die DMA-Modusauswahl, die Sender-DMA-Entsperrung und Empfänger-DMA-Entsperrung. Das alternative Register (Baudrateteiler, Alternativfunktionsregister, Datenrichtungsregister und die Vergleichsregister) sind zugreifbar, wenn Bit COR7 gesetzt worden ist. Wie oben erwähnt, werden diese alternativen Register primär verwendet während der Initialisierung zum Etablieren der Basis-Hardware- Konfiguration des seriellen Kanals.
- Zwei Bits werden verwendet zum Bestimmen der Empfängerkopplung (00 = normal, 01 = lokale Schleifenrückführung, 10 = entfernte Schleifenrückführung und 11 = Echomodus). Das Auswählen des Normalmodus (Versagen) transferiert alle Daten, die der Empfänger empfängt, zu Rx FIFO 12. Auswählen des Lokalrückschleifenmodus bewirkt, daß die zu dem Sender zu transferierenden Daten intern zu dem Empfänger gesandt werden. Auswählen des Fernrückschleifenmodus bewirkt, daß der Sender jedes Byte, das der Empfänger empfängt, sendet, ohne diese Bytes in Rx FIFO 12 einzugeben. Auswählen des Echomodus bewirkt, daß der Sender ein Duplikat jedes gültigen Datenbytes sendet, das sich in der Oberseite von Rx FIFO befindet. Keine Bytes, die Ausnahmen bewirken (d.h. eine LSI-Bedingung oder eine Anpaßbedingung) werden echobehandelt. Wenn das nächste dem Echo zu unterwerfende Byte ein Byte mit einer Ausnahme ist, wird der Echomodus automatisch gesperrt durch Setzen von COR6,5 auf 00 (Normalmodus). Zu diesem Zeitpunkt sollte die CPU auf die Ausnahme reagieren und das angemessene Echo geben. Die CPU wird den Echomodus erneut entsperren, nachdem die Ausnahme verarbeitet worden ist.
- Die Verwendung der Vergleichsregister in Verbindung mit dem Echomodus und Rx DMA erfordert den CPU-Eingriff nur während des Empfangs von Steuerzeichen oder korrumpierten Daten. Da es viele Steuerzeichen in dem ASCII gibt, gesetzt unter 1F hex, die nicht dem Echobetrieb unterworfen werden, hat das Vergleichsregister 2 eine zusätzliche Fähigkeit. Es kann anpassen mit irgendeinem in das Rx FIFO gelangenden Byte, das weniger oder gleich seinem programmierten Wert ist, wenn die "Wenigerals-oder-gleich-mit-"-Option spezifiziert wird durch Setzen von TOR5. Wenn TOR5 = 0, arbeitet das Vergleichsregister 2 nur auf einer "Gleichmit"-Basis. Demgemäß kann im Falle von automatischer Echobehandlung von ASCII-Zeichen die CPU:
- 1. TOR5 setzen;
- 2. 1F hex in CMP2 laden;
- 3. 7F hex in CMP3 laden; bzw.
- 4. COR6,5 auf 11 setzen.
- Alle Zeichen, die zwischen dem Wert 20 und 7E hex empfangenen werden, werden automatisch von der UART echobehandelt. Alle anderen Werte würden Ausnahmen erzeugen und damit der CPU signalisieren sowie den Echomodus sperren.
- Die Bits COR4,3 bestimmen die Datenbusbreite. Der Datenbus kann entweder 8, 16 oder 32 Bit breit sein. Der 8-Bit breite Bus hat zwei Betriebsmoden: Kompatibilitätsmodus oder 8-Bit-Modus. Wenn Bits COR4,3 gleich 00, 01, 10 bzw. 11 sind, dann sind die Betriebsmoden Kompatibilitätsmodus, 8-Bit-Modus, 16-Bit-Modus bzw. 32-Bit-Modus.
- Die Bits COR2,1,0 steuern Tx und Rx DMA. Bit COR2 bestimmt den DMA-Modus; die beiden Optionen sind Einzeltransfer (Bit COR2=0) und Multitransfer (Bit CDR2=1). Das Setzen von Bit COR1 entsperrt die Sender- DMA; das Setzen von Bit COR0 entsperrt Empfänger-DMA. Wenn eine dieser Optionen gesperrt ist, ist ihr Ausgangssignal (DMA-Anforderung) inaktiv (hoch).
- Das TOR-Feld steuert die Sender- und Vergleichsregisteroperationen. Durch dieses Byte kann die CPU:
- 1. den Sender entsperren oder sperren;
- 2. Tx FIFO 14 löschen;
- 3. einen Senderbruch programmieren;
- 4. die Sendersteuerung über /CTS entsperren;
- 5. CMP2 entsperren zum Anpassen an entweder eine Weniger-als- oder Gleich-mit-Bedingung;
- 6. die Senderflußsteuerung durch die Vergleichsregister entsperren;
- 7. die Vergleichsregister löschen; und
- das Senderentsperrbit ermöglicht der CPU, den Sender direkt zu steuern und auch, irgendwelche automatische Flußsteueränderungen zu dominieren, die den Senderentsperrzustand beeinflußt haben. Das Löschen von TxFIFO 14 ist brauchbar, wenn eine Wiederaussendung von Daten erforderlich ist. Das Senderbruchbit (TOR2) setzt das SOUT-Signal hoch, solange es gleich 1 ist. /CTS-Tx-Flußsteuerung entsperrt oder sperrt den Sender, wenn das Allgemeinzweck-I/O-Bit 0 sich von aktiv auf inaktiv ändert. Die Vergleichs-Tx-Flußsteuerung entsperrt oder sperrt den Sender, wenn die Vergleichsregister 0 und 1 die einlaufenden Daten anpassen. Diese letzten beiden Sendersteueroptionen setzen und löschen automatisch das Senderentsperrbit. Wie oben erwähnt, entsperrt das Bit TOR5 die Weniger-als- oder Gleich-mit-Option für das Vergleichsregister 2. Wenn TOR5 = 0, wird CMP2 nur anpassen, wenn das in Rx FIFO 12 gelangende Bit seinem programmierten Wert gleichkommt. Wenn TOR5 = 1, wird CMP2 anpassen, wenn das in Rx FIFO 12 gelangende Bit kleiner als oder gleich mit dem programmierten Wert ist. Bit TOR6 entsperrt die Allgemeinzweckvergleichsregister (COMPO-7). Von diesen Registern sind jene, die mit Daten nach einem Rücksetzen oder Vergleichsregisterlöschung geladen werden, jene, die gerade mit den einlaufenden Datenbytes verglichen werden. TOR6 wird verwendet, um die Vergleichsregister ohne Rücksetzen des UART zu löschen. Dieses Bit ist selbstlöschend. Dieses Merkmal kann brauchbar sein beim Laden der Vergleichsregister mit einem neuen Datensatz, der weniger Bytes enthält als der vorhergehende Satz.
- Das ROR-Feld steuert die Empfänger-Rx-Operationen. Durch dieses Byte kann der Benutzer das Einfügen eines Flußsteuerzeichens in den Senderdatenstrom, die Empfängertaktquelle, die Anzahl von verzögerten Empfangszeichenzeiten, bis eine Empfängerauszeit ausgegeben wird, das Aufbauen des Empfängertriggerpegels und das Löschen des Rx FIFO 12 steuern.
- Einschreiben in ROR7 veranlaßt das UART, das Byte, programmiert im Vergleichsregister 1 (d.h. XOFF) in Tx-Schieberegister 20 einzusetzen, sobald das gegenwärtige Zeichen im Tx-Schieberegister 20 ausgesandt worden ist.
- Der Empfängertakt (RCLK) für jeden der vier UART-Kanäle kann unabhängig abgeleitet werden von irgendeiner von vier Quellen. Setzen der Bits ROR6,5 auf 00, 01, 10 bzw. 11 wählt die RCLK-Quelle, um gleich dem Baudratengeneratorausgang zu werden, einem halben Baudratengeneratorausgang, einem vierten Baudratengeneratorausgang bzw. dem Signal an dem RCLK-Pin. Nach Rücksetzen ist der Defektwert von Bits ROR6,5 gleich 00. Diese Optionen sind primär vorgesehen zum Ermöglichen der Hochgeschwindigkeitssendung von Daten zu einem Peripheriegerät, was nur Niedergeschwindigkeitstastenfeld oder Flußsteuerdaten zu der CPU zurück bereitstellt. Sekundär erfordert es weniger Pins für den Support eines UART mit mehreren Empfängern. Der Sender ist unbeeinflußt durch diese Auswahl und wird immer von dem Baudratengeneratorausgang angesteuert.
- Ein Empfänger-Auszeit-Interrupt wird von jedem seriellen Kanal des UART verwendet zum Anzeigen, daß Daten in seinem Rx FIFO 12 vorhanden sind und daß keine CPU oder Seriell-Kanal-Aktivität während einer spezifizierten Zeitperiode aufgetreten ist. Dieses Merkmal wird aktiviert, wenn sich Daten im Rx FIFO 12 befinden, die den Interrupt-Triggerpegel nicht erreichen können. Es stellt sicher, daß die CPU einen Interrupt erhält zur Anzeige des Vorhandenseins von Empfängerdaten. Die Verzögerungsgröße, bevor ein Auszeitinterrupt ausgegeben wird, ist programmierbar unter Verwendung von Bits 4 und 3 des ROR-Feldes. Die Verzögerung basiert auf dem Empfängertakt und ist gleich einem ganzzahligen Vielfachen von Empfangszeichenzeiten. Wenn die Bits ROR4, 3 gleich 00, 01, 10 bzw. 11 sind, dann ist die Anzahl von Empfangszeichenzeiten verzögert vor einem Auszeitinterrupt 1, 2, 3 bzw. 4 Empfangszeichenzeiten. Ein Erinnerungsauszeitinterrupt wird ausgegeben, wenn die folgenden Bedingungen erfolgt sind:
- 1. Daten befinden sich in Rx FIFO 12;
- 2. Die CPU hat nicht auf Rx FIFO 12 während der Auszeitperiode zugegriffen; und
- 3. Keine neue serielle Zahl ist in Rx FIFO 12 während der Auszeitperiode gelangt.
- Der Empfängerauszeitinterruptzeitgeber wird immer dann rückgesetzt, wenn ein CPU-Zugriff erfolgt oder wenn ein Byte dem Rx FIFO 12 addiert wird. Er wird gesteuert, wenn es ein Byte im Rx FIFO 12 gibt.
- Bits ROR2,1 bestimmen die Anzahl von Bytes, die im Rx FIFO 12 sein müssen, bevor ein Empfängerinterrupt ausgegeben wird. Setzen der Bits ROR2,1 auf 00, 01, 10, 11 führt zu einem Empfängerinterrupt, der ausgegeben wird, wenn es 1, 4, 8 bzw. 15 Bytes im Rx FIFO 12 gibt.
- Das Löschen von Rx FIFO 12 ist brauchbar, wenn es einen Fehler im FIFO gibt und es nicht gewünscht wird, jedes Byte individuell zu extrahieren, bevor eine erneute Sendung erfolgt.
- Im 16-Bit-Modus wird auf das Steuerregister zugegriffen durch zwei 16-Bit breite Register, als Kanal bzw. Tx/Rx-Betrieb bezeichnet. Im 8-Bit-Modus wird auf das Steuerregister zugegriffen durch die vier Byte breiten Register CRF, COR, TOR und ROR.
- Gemäß Fig. 1 und 2 steuert das Kanal-I/O-Register (Adresse 10100) alle acht UART I/O-Stifte, die für eine Modem-Schnittstelle oder als Allgemeinzweck I/O verwendet werden können. Die Modem-Schnittstelle wird automatisch konfiguriert nach Rücksetzen und liefert alle Standardeingänge (/CTS, /DSR, /DCD, /RI) und gibt (/RTS, /DTR) aus. Das Kanal- I/O-Register enthält vier Byte breite Felder: SET I/O (SIO), Löscht I/O (COR), I/O-Register (IOR) und Delta-Eingang (DIR).
- Das Set-I/O-Feld wird verwendet zum Setzen individueller Ausgangspins. Entsprechende Ausgangspins werden auf der Abfallflanke des Schreibabtastpulses gesetzt, wenn deren Bits in diesem Feld mit Einsen beschrieben worden sind. Diese acht Bits sind nur Schreiben.
- Das Lösch-I/O-Feld wird verwendet zum Löschen einzelner Ausgangspins. Entsprechende Ausgangspins werden gelöscht auf der Abfallflanke des Leseabtastimpulses, wenn deren Bits in diesem Feld mit Einsen beschrieben sind. Diese acht Bits sind nur geschrieben.
- Gleichzeitiges Schreiben von Bits in sowohl das Setz- als auch das Lösch-I/O-Feld entsprechend demselben Ausgangspin führen zu keiner Änderung am Ausgangspin. Gleichzeitiges Setzen und Löschen unterschiedlicher Ausgangspins über diese Felder ist zulässig. Das Setzen oder Löschen von Eingangspins setzt oder löscht nur die entsprechende Ausgangslatchschaltung.
- Das IOR-Feld bestimmt den Status der abgehenden I/O-Leitungen. Einschreiben einer 1 in irgendeines dieser IOR-Bits setzt den entsprechenden Ausgangspin hoch. Das Schreiben einer Null setzt ihn niedrig. Alle Schreibvorgänge in das IOR-Feld erfolgen auf einer Byte breiten Basis. Wenn der entsprechende Pin ein Eingang ist, wird die 1 in die Ausgangslatchschaltung geschrieben, beinflußt jedoch nicht den Pin. Bits dieses Feldes werden sowohl gelesen als auch geschrieben. Beim Lesen von Bits, die zugeteilte Ausgänge sind, wird der Wert der Ausgangslatchschaltung zurückgeführt. Das Lesen von Bits, die Eingängen zugeordnet sind, liefert den Status der Pins.
- Das DIR-Feld liefert Eingangsstatusinformation für irgendeinen der IO-Pins, programmiert als Eingänge (eine Änderung in irgendeinem der Eingangsleitungen setzt das entsprechende Bit in diesem Register. Das Setzen irgendeines Delta-Bits in dem DIR-Feld kann eine Interruptausgabe an die CPU bewirken, wenn ISI-Interrupts in dem IER-Feld entsperrt sind. Diese Statusbits werden nur gelesen, das Schreiben in sie bewirkt nichts. Wenn das /CTS-Tx-Flußsteuerbit in dem DIR-Feld entsperrt ist, wird das I/O-Bit 0 automatisch wie ein Eingang aussehend gemacht. Die Leitung wird die /CTS-Eingangsleitung, welche den Sender entsperrt und sperrt.
- Nach Rücksetzen werden die IOR-, DIR- und DDR-Felder automatisch initialisiert auf einen Zustand, der annimmt, daß das UART mit einem Modem oder einer Schnittstelle gemäß Electronic Industries Associations (EIA) verbunden ist.
- In dieser Konfiguration werden alle Bits auf 1 programmiert, zugeordnet spezifischen Funktionen (d.h. /CTS, /RTS usw.) und haben eine vorbestimmte Richtung, etabliert in dem DDR 22. Da dies im wesentlichen ein Allgemeinzweck-I/O-Eingang ist, der verschiedene Konfigurationen zuläßt, werden der Defektpin und die Bitzuordnung verwendet bei der Kommunikation mit einem Modem oder einer EIA-Schnittstelle, um die Systemkompatibilität aufrechtzuerhalten. Die Defektzuordnungen für die Bits sind wie folgt: (Delta) Eingang Ausgang
- Die Abfallflanke des /RI-(Ringindikator)-Signals setzt das Statusbit in dem DIR-Feld.
- Im 16-Bit-Modus wird auf das I/O-Register zugegriffen durch zwei 16-Bit breite Register, die als Setz/Lösch- bzw. IOR/DIR-Register bezeichnet werden. Im 8-Bit-Modus wird auf die I/O-Felder zugegriffen durch die vier Byte breiten Register SIO, CIO, IOR und DIR.
- Bezugnehmend auf Fig. 1 und 2 enthalten die TCR- bzw. RCR-Registe 24 bzw. 26 vier Byte breite Felder, von denen drei als Tx-Zählstand (TCR) bzw. Rx-Zählstand (RCR) bezeichnet sind. Diese Register zusammen mit der DMA-Möglichkeit des UART können verwendet werden zum Erzeugen und Steuern externer FIFOs für die Daten, wi ein größeren Einzelheiten unten beschrieben.
- Das TCR-Register 24 (Adresse 11000) ist ein programmierbarer Zähler, verwendet zum Verfolgen der Anzahl von Bytes, die in Tx FIFO 14 über DMA geladen werden. Die Anzahl von Bytes, die zu dem Tx FIFO 14 über DMA zu transferieren sind, bevor ein TCR-Interrupt durch das UART ausgegeben wird, ist programmiert. Der TCR-Zähler 24 dekrementiert für jedes Byte, transferiert zu Tx FIFO 14. Wenn der Nullzählstand erreicht ist, werden Sender-DMAS gesperrt, und das TCR-Bit in dem IER-Feld wird gesetzt. Wenn das TCR-Bit in dem IER-Feld entsperrt ist, dann geht der Interruptpin auf aktiv niedrig. Wenn das TCR-Bit in dem IER-Feld nicht entsperrt ist, wird nur das TCR-Bit in dem IIR-Feld gesetzt. Die Aktionen in Verbindung mit dem TCR-Zähler 24 erfolgen nur, wenn Sender-DMA entsperrt ist und der Zähler 24 mit einem von null abweichenden Wert geladen ist. Wenn der TCR-Zähler 24 nach dem Rücksetzen nicht geladen wird oder mit einem Wert von null geladen wird, dann erfolgen die Aktionen in Verbindung mit diesem Zähler nicht. Dieser DMA-Prozeß kann zu irgendeinem Zeitpunkt beendet werden durch Sperren von Sender-DMA oder durch Laden des Zählers 24 mit null.
- Das RCR-Register 26 (Adresse 111) ist ein programmierbarer Zähler, verwendet zum Verfolgen der Anzahl von Bytes, die in Systemspeicher (RAM) über DMA geladen werden. Die Anzahl von Bytes, die von Rx FIFO 12 über DMA zu transferieren sind, bevor ein Empfänger-DMA-Interrupt durch das UART erzeugt wird, ist programmiert. Der RCR-Zähler 26 dekrementiert für jedes Byte, transferiert vom Rx FIFO 12. Wenn der Nullzählstand erreicht ist, sperrt das UART die Empfänger-DMAS. Das Rx-DMA-Bit in dem IIR-Feld wird gesetzt, und die UART-INTR-Leitung geht auf aktiv niedrig, wenn sie in dem IER-Feld entsperrt ist. Die Aktionen in Verbindung mit Zähler 26 erfolgen nur, wenn Empfänger-DMA entsperrt ist und Zähler 26 mit einem von null abweichenden Wert geladen ist. Wenn der Zähler 26 nach dem Rücksetzen nicht geladen ist oder mit einem Wert von null geladen wird, dann erfolgen die Aktionen in Verbindung mit dem Zähler 26 nicht. Dieser DMA-Prozeß kann zu irgendeinem Zeitpunkt durch Sperren von Empfänger-DMA oder durch Laden des Zählers 26 mit null beendet werden.
- Indem erneut auf Fig. 1 und 2 eingegangen wird, enthält das Baudrateteilerregister (Adresse 00000 in dem alternativen Registersatz) zwei Byte breite Felder, bezeichnet Hochdivisor (HDR) und Niedrigdivisor (LDR), und zwei Byte breite Reservefelder. Die HDR- und LDR-Felder halten den 16-Bit breiten Divisor für den Kanalbaudrategenerator 24. Das HDR-Feld enthält das hohe Byte des Divisors und das LDR-Feld enthält das niedrige Byte. Dieses Register setzt auf 000C hex zurück. Dies ist der Divisor für 9600 Baud, falls XIN mit einem 1.8432 MHz-Takteingang verbunden ist.
- Das Initialisierungsregister (Adresse 00100 in dem alternativen Registersatz) enthält zwei Byte breite Felder mit den Bezeichnungen Alternativfunktion (AFR) bzw. Datenrichtung (DDR) und zwei Reservefelder. Das AFR-Feld enthält drei aktive Bits. Gemäß einem zweiten Aspekt der vorliegenden Erfindung ermöglicht das Setzen von Bit AFR0 in irgendeinem der vier UART-Kanäle der CPU, gleichzeitig zu demselben ausgewählten Register in jedem Kanalregistersatz zu schreiben. Diese Funktion reduziert die Initialisierungszeit für alle gemeinsamen Parameter, die in jedes Kanairegister geladen werden. Die CPU kann Bit AFR0 setzen oder löschen durch Zugriff auf irgendeinen Kanalregistersatz. Wenn Bit AFR0 gesetzt ist, bestimmen noch immer die Kanalwählpins, welcher Kanal zugegriffen wird während der Leseoperationen. Das Setzen oder Löschen von Bit AFR0 hat keine Wirkung auf Leseoperationen.
- Bit AFR1 bestimmt die Funktion des /MF-Pins. Wenn AFR1=0 (der Defektzustand), dann wird der /MF-Pin die normale Ringindikatorfunktion bereitstellen (das Signal Ringindikator wird normalerweise durch ein Modem aktiviert, das einen einlaufenden Telefonanruf erfaßt wenn. Wenn AFR1=1, wird der /MF-Pin den Ausgang für das BAUDOUT-Signal des betreffenden Kanals liefern.
- Das Setzen des Bits AFR7 setzt den zugeordneten Kanal zurück. Dies ist ein Anwenderrücksetzen, das für den Kanal spezifisch ist im Gegensatz zu dem Rücksetzen, das alle Kanäle zurücksetzt.
- Das DDR-Feld etabliert die Datenrichtung für den Allgemeinzweck-I/O. Das Setzen irgendeines Bits auf 1 in dem DDR-Feld bewirkt, daß das entsprechende I/O-Bit ein Ausgang wird. Auf dieses Feld wird immer auf einer Byte breiten Basis zugegriffen. Nach Rücksetzen wird das DDR-Feld automatisch initialisiert zu der Modem-Defektkonfiguration. Die sechs niedrigeren Bits in dem DDR-Feld werden in der Modem-Schnittstelle verwendet und arbeiten wie vorstehend beschrieben, und die beiden oberen Schnitts werden als Eingänge programmiert. Das DDR-Feld setzt auf 0C zurück, was die Richtung für das Standardmodem und EIA-Schnittstellensignalzuordnungen etabliert.
- Die Vergleichsregister (Adressen 01000 und 01100 in dem alternativen Registersatz) sind bytebreite Register, die mit den Bytes im Rx FIFO 12 für eine Anpassung verglichen werden. Beide Register bestehen aus vier bytebreiten Felder mit den Bezeichnungen Vergleich 0 (CP0) bis Vergleich 3 (CP3) und Vergleich 4 (CP4) bis Vergleich 7 (CP7). Diese Register werden während der Initialisierung mit den Daten programmiert (typischerweise hex-Repräsentationssteuerzeichen), die während des Empfangsbetriebes anzupassen sind. Einmal entsperrt durch Setzen von Bit COR5, werden sie verglichen mit den empfangenen Daten, wenn sie in Rx FIFO 12 gelangen. Immer dann, wenn eine Übereinstimmung mit einem empfangenen Byte auftritt, wird das Bit 6 in dem IIR-Feld gesetzt, wenn das angepaßte Byte an der Oberseite des Rx FIFO 12 ist. Ein Interrupt wird an die CPU ausgegeben, wenn er in dem IIR-Feld entsperrt ist. Das Abgleichstatusbit in BSR 16 in Verbindung mit dem abgeglichenen Datenbyte wird gesetzt, so daß das abgeglichene Byte identifiziert werden kann. Auch werden die Bits im Vergleichsregister ID in dem entsprechenden BSR 16 gesetzt. Nur Vergleichsregister, die von der CPU geladen worden sind seit dem Rücksetzen oder seit der Aktivierung des Vergleichsregisterlöschbits, werden verglichen mit dem empfangenen Datenstrom.
- Die Flußsteuerung des ausgesandten Datenstroms kann durch das UART direkt gesteuert werden. Dies erfolgt mittels Programmieren der Vergleichsregister 0 und I mit Flußstart- bzw. -stopzeichen. Wenn eines dieser programmierten Start- oder Stopflußsteuerzeichen im Rx FIFO 12 abgeglichen wird, entsperrt bzw. sperrt das UART automatisch den Sender. Der Sender wird das Senden irgendeines Bytes in seinem Tx-Schieberegister 20 beenden, wenn die Flußsteuerung den Zeichentransfer von Tx FIFO 14 zum Schieberegister 20 stoppt. Diese Flußsteuervergleichsregister entsperren bzw. sperren den Sender durch Änderung des Status des Senderentsperrbits. Die Flußsteuerzeichen werden auf der SIN-Leitung zum Rx- Schieberegister 26 empfangen und können acht Byte-Zeichen sein. Das Merkmal der automatischen Flußsteuerung kann übersteuert werden zu jeder Zeit durch die DPU über das Senderentsperrbit. Dieses Merkmal kann gesperrt werden über das automatische Flußsteuerbit zum Ermöglichen eines binären Pfeiltransfers. Nach Rücksetzen werden die Vergleichsregister und I automatisch mit dem XON-Zeichen (11 hex) bzw. dem XOFF-Zeichen (13 hex) geladen. Wenn das Vergleichsflußsteuerbit entsperrt ist, werden die abgeglichenen Zeichen nicht in Rx FIFO 12 gegeben, und das TFC-Statusbit in dem IIR wird unmittelbar gesetzt. Wenn das Vergleichsflußsteuerbit nicht entsperrt ist, dann werden die abgeglichenen Zeichen in Rx FIFO 12 eingegeben, und wenn sie die Spitze des FIFO 12 erreichen, setzen sie das TFC-Statusbit in dem IIR.
- Automatische Flußsteuerung ist auch verfügbar durch den /CTS- Pin. Wenn entsperrt, startet und stoppt dieses Merkmal Transfers zu dem Tx-Schiebe register 20, wenn /CTS aktiv bzw. inaktiv ist. Die Senderflußsteuerung über /CTS wird ausgeführt durch Setzen bzw. Löschen des Senderentsperrbits. Die Senderflußsteuerung über sowohl die Vergleichsregister als auch /CTS ist zulässig. Wenn dies der gewählte Betriebsmodus ist, dann überwiegt der jüngste Eingang zu dem Senderentsperrbit von den Vergleichsregistern, dem /CTS-Pin oder der CPU.
- Im 16-Bit-Modus wird gleichzeitig auf zwei Vergleichsregister zugegriffen. Im 8-Bit-Modus wird auf die Vergleichsregister jeweils einzeln zugegriffen.
- Jeder der vier seriellen Kanäle des UART kann sowohl interne als auch externe FIFOs steuern für den UART-Sender. Das interene Tx FIFO 14 für jeden Kanal ist 16 Bytes tief. Basierend auf 24 Bit breiten Registern können externe FIFOs bis zu 16.777216 Mbytes tief sein.
- In einem internen Tx-FIFO-Transfer schreibt die CPU Daten in busbreiten Gruppen in Tx FIFO 14. Wie oben festgehalten, werden die Daten seriell von dem Sender ausgesandt mit dem niedrigstelligen Byte als erstem. Der Sender sendet alle Daten in Tx FIFO 14, solange Fx FIFO 14 entsperrt ist. Wenn Tx FIFO 14 gesperrt wird, während ein Byte ausgeschoben wird, wird das betreffende Byte beendet, aber keine weiteren Bytes werden zu Tx-Schieberegister 20 mehr transferiert.
- Wenn die Anzahl von Datenbytes, die zu dem Tx FIFO 14 zu transferieren sind, kleiner ist als eine Busbreite, wird die CPU eine Vorabnachricht an das UART senden. Wie oben erwähnt, erfolgt dies durch Aktivieren der /HBE- und A0-Eingangssignale. Daten im Tx FIFO 14 werden immer in konsekutiven Bytestellen gespeichert unabhängig von der Anzahl von Bytes in jedem CPU-Transfer.
- Die CPU muß die Bits 2 und 1 des Kanalbetriebsregisters (COR2,1) für den DMA-Modus bzw. Tx-DMA-Entsperrung programmieren. Transfers zum Tx FIFO 14, ausgeführt durch DMA, werden gestartet, wenn Tx FIFO leer ist. Im DMA-Modus 0, deaktiviert der Transferanforderungspin nach dem ersten Transfer von Daten in Tx FIFO 14. Im DMA-Modus 1 deaktiviert der Transferanforderungspin, wenn Tx FIFO 14 voll ist. Alle Sender-DMA-Datentransfers müssen die volle Breite des Busses sein, oder die /HEB- und A0-Bussignale müssen einen bytebreiten Transfer anzeigen.
- Das UART sorgt auch für das Aufrechterhalten eines externen Tx FIFO in Verbindung mit einer System-DMA-Einheit. Dies erfolgt, um erhöhte Sender-FIFO-Längen zu ermöglichen, ohne signifikant die UART-Chipgröße zu erhöhen.
- Um gemäß Fig. 7 ein externes Tx FIFO zu halten, fordert DMA- Steuerschaltung DMA-Transfers und benachrichtigt die CPU, wenn eine vorgewählte Anzahl von Bytes von dem Systemspeicher über DMA zu transferieren ist. Ein zusätzliches Register ist fir die Extern-FIFO-Steuerung vorgesehen. Dies ist das Tx-DMA-Zählerregister. Es verfolgt die Anzahl die Bytes, die von dem Speicher über DMA transferiert worden ist. Die CPU programmiert diesen Zähler mit der Anzahl von zu transferierenden Bytes. Der Zähler dekrementiert für jedes Byte, das während Tx DMA transferiert worden ist. Wenn der Zähler null erreicht, wird das Tx-Zählerbit in dem IIR-Feld gesetzt, und weitere Tx-DMA-Anforderungen werden automatisch gesperrt durch Löschen des Tx-DMA-Entsperrbits (COR1). Falls entsperrt, d.h. Bit IER2 gesetzt, wird ein Interrupt zu der CPU gesandt. Die CPU reagiert auf diesen Interrupt durch:
- 2. Überprüfen des CSR zum Bestimmen des Interrupts;
- 2. Überprüfen des Tx-DMA-Zählers, um den Interrupt zu sperren;
- 3. Neustarten des System-DMA für einen anderen Tx-Transfer; und
- 4. Setzen des Tx-DMA-Entsperrbits (COR1), um weitere Tx-DMA- Anforderungen durch das UART fortzusetzen.
- Der Tx-DMA-Zähler 24 wird automatisch neugeladen, nachdem das Tx-DMA-Entsperrbit gesetzt ist. Die CPU kann den DMA-Zähler 24 jederzeit umprogrammieren. Wenn der DMA-Zähler 24 auf 0 umprogrammiert wird oder wenn er nach einem Rücksetzen nicht programmiert worden ist, ist dann die externe FIFO-Steuerung nicht aktiv.
- Wenn die Anzahl der über Tx DMA zu transferierenden Bytes kleiner ist als eine ganze Anzahl von Busbreiten, steht eine von zwei Optionen zur Verfügung.
- 1. Wenn der System-DMA ausgeklügelt genug ist, um den Transfer von Daten mit weniger als der Busbreite zu dem UART zu erkennen und zu signalisieren, dann kann er den Transfer selbst über IHBE- und A0-Eingänge ausführen;
- 2. Wenn der DMA diesen Transfer nicht ausführen kann, muß die CPU den letzten Transfer übernehmen.
- Jeder serielle Kanal des UART kann auch interne und externe FIFOs für den Empfänger steuern. Das interne Rx FIFO 12 für jeden Kanal ist 16 Byte tief. Externe Rx-FIFOs können bis zu 16.777216 Mbytes tief sein.
- In einem Rx-FIFO-Transfer ohne DMA werden die Bits 2 und 1 in dem ROR-Feld gesetzt, um die Anzahl von Bits in dem Rx FIFO 12 zu bestimmen, bevor ein Interrupt getriggert wird (00=1 Zeichen, 0,1=1/4 voll, 10=1/2 voll, 11=1/8 voll). Setzen des Bits 7 im IER-Feld ermöglicht, einen Interrupt abzugeben, wenn Rx FIFO 12 bis zu dem vorbestimmten Triggerpegel sich füllt. Bits 4 und 3 des ROR-Feldes bestimmen die Dauer, ausgedrückt in Zeichenzeiten, während welcher ein Datenbyte im Rx FIFO 12 warten muß, bis ein Auszeitinterrupt an die CPU gegeben wird. Dieser Interrupt, falls entsperrt, wird abgegeben, wenn zumindest ein Datenbyte im Rx FIFO 12 gewesen ist für die Anzahl von Zeichenzeiten, die spezifiziert sind, und kein CPU-Zugriff erfolgte oder serielle Daten Rx FIFO 12 während dieser Zeit erreichten. Das Setzen von Bit IER1 entsperrt Auszeitinterrupts.
- Die CPU wird bei Empfang eines Interrupts das IER-Feld lesen und jedes Bit für einen anhängigen Interrupt überprüfen. Das Auffinden des gesetzten Bit 7 zeigt, daß Rx FIFO 12 an seinem Triggerpegel ist oder ein Auszeitinterrupt anhängig ist. Die CPU liest die Bytes bis auf Ausnahmeregister (BTE) 18, um den Zählstand der Zahl gültiger Bytes zu erhalten, die sie dem Rx FIFO 12 entnehmen kann. Dann liest sie diese Bytes von dem Datenregister, bis dieser Zählstand erreicht ist.
- Da der CPU-Datenbus breiter sein kann als ein Byte und die seriellen Daten immer in Ein-Byte-Inkrementen empfangen werden, ist es möglich, weniger Bytes im Rx FIFO 12 zu haben, als der Bus breit ist. Diese Möglichkeit wird nur auftreten während des letzten Zugriffs durch die CPU vor dem Erreichen des Zählstandes null des BTE 18. Wenn beispielsweise der Datenbus zwei Byte breit ist und 15 Bytes aus dem Rx FIFO 12 zu entnehmen sind, wie durch BTE 18 angedeutet, kann die CPU sieben aufeinanderfolgende 2 Byte breite Lesevorgänge vornehmen, ohne irgendeine andere Notwendigkeit, den Datenstatus zu überprüfen. Vor dem letzten Lesen des Datenregisters liest die CPU das FSR-Feld zum Erhalten der gültigen Bytepositionen. Sie liest dann das Datenregister ein letztes Mal zum Extrahieren der verbleibenden Datenbytes.
- Wenn ein anderes Byte in Rx FIFO 12 gelangt, nachdem die CPU das FSR-Feld gelesen hat, jedoch bevor sie das Datenregister gelesen hat, wird das neue Byte nicht an der Spitze des Rx FIFO 12 plaziert. Es wird nicht den Daten addiert, die die CPU vom Rx FIFO 12 lesen könnte, sondern erst nach dem Beenden des Lesens des Datenregisters.
- DMA-Transfers unter Verwendung nur von Rx FIFO 12 werden vorbereitet durch Ausführen der folgenden Initialisierungsschritte. Die Rx-FIFO-Triggerpegelbits in dem ROR-Feld (ROR3,2) und die Auszeitverzögerungsbits ROR5,4 werden auf den erforderlichen Pegel gesetzt. Das Rx- DMA-Modus-Auswählbit (COR2) wird programmiert für entweder einzelnen oder mehrfachen DMA-Transfer (0 bzw. 1). Mit der Annahme, daß DMA-Modus 1 gewählt wurde und Rx DMA entsperrt ist (COR2,0 gesetzt), erfolgt das folgende.
- Automatische DMA-Anforderungen für den Transfer von Daten von dem UART beginnen immer dann, wenn die Daten den Triggerpegel erreichen. Alle aufeinanderfolgenden gültigen Daten werden transferiert, bis entweder eine Ausnahme angetroffen wird oder bis die Anzahl von gültigen Datenbytes, die hinterlassen werden, weniger als eine Busbreite sind. Wenn die erste angetroffene Ausnahme ein leeres Rx FIFO 12 ist, werden die DMA-Anforderungen gestoppt, bis der Triggerpegel erreicht ist.
- Wenn die erste Ausnahme ein Leitungsstatusfehler ist, werden DMA-Transfers gestoppt, wenn dieses Byte unter jenen ist, die als nächste zu transferieren sind. Das/die entsprechende(n) Leitungsstatusfehlerbit(s) wird gesetzt in dem IIR-Feld und in BSR 16. Falls entsperrt, wird der CPU ein Interrupt übermittelt. An dieser Stelle reagiert die CPU wie folgt:
- 1. Lesen des CSR-Feldes zum Bestimmten des Typs des/der Interrupt(s);
- 2. Lesen des FSR-Feldes zum Bestimmen der Position von gültigen Daten;
- 3. Lesen von BSR 16 zum Ermitteln der spezifischen Natur der Ausnahme und Löschen des/der Interrupt(s);
- 4. Ausführen der Serviceroutine für das spezifische LSI; und
- 5. Löschen von Rx FIFO 12 und Ausführen der Reinigungsroutine zum Eliminieren der verbleibenden einlaufenden Daten in Verbindung mit jenem Block, danach Anfordern von erneuter Sendung der Daten.
- Automatische Rx-DMA-Transfers beginnen erneut, nachdem der Triggerpegel erreicht ist oder eine Auszeit erfolgt.
- Wenn die erste Ausnahme eine Vergleichsregisteranpassung ist, werden die entsprechenden Bits in dem IIR-Feld und BSR 16 gesetzt. Wenn entsperrt, wird ein Interrupt an die CPU ausgegeben. An dieser Stelle reagiert die CPU wie folgt:
- 1. Lesen des CSR-Feldes zum Bestimmen des Typs von Interrupt(s);
- 2. Lesen des FSR-Feldes zum Bestimmen der Positionen gültiger Datenbytes;
- 3. Lesen von BSR 16 zum Identifizieren der angepaßten Bytes;
- 4. Lesen des Datenregisters, Verwerfen der angepaßten Bytes und Beibehalten der Datenbytes; und
- 5. Ausführen der entsprechenden Steuerzeichen-Serviceroutine.
- Wenn die Anzahl aufeinanderfolgender gültiger Datenbytes an der Spitze von Rx FIFO 12 weniger breit ist als eine Datenbusbreite (z.B. 3, 2 oder 1 Byte bei einem 32-Bit-Zugriffsmodus; 1 im 16-Bit-Zugriffsmodus), dann werden die DMA-Anforderungen abgestoppt, und das UART wartet auf das Eintreffen genügender Bytes zum Erreichen des Triggerpegels oder bis eine Auszeit auftritt. Wenn eine Auszeit auftritt, wird die CPU angefordert, die verbleibenden gültigen Datenbytes zu entnehmen und das Rx-DMA-Entsperrbit zu setzen, um die Rx-DMA-Anforderungen erneut zu starten. Prozeduren für die Handhabung von weniger als ein Datenbus breiten Daten sind die folgenden:
- 1. Überprüfen des CSR-Feldes zum Bestimmen des Interrupts und konsekutiver gültiger Daten;
- 2. Lesen des Rx FIFO 12 zum Extrahieren aller verbleibender Bytes (Überprüfung des FSR-Feldes, wenn angemessen);
- 3. Vorbereiten des System-DMA für den nächsten Transfer; und
- 4. Setzen des Rx-DMA-Ensperrbits zum Ermöglichen der Fortsetzung von DMA-Transfers.
- DMA-Modus-0-Betrieb wird in derselben Weise gehandhabt wie Modus 1 mit der Ausnahme, daß die DMA-Anforderungen gestartet werden, sobald eine Datenbusbreite von gültigen Daten akkumuliert worden ist (4 Bytes im 32-Bit-Modus, 2 im 16-Bit-Modus). Automatische DMA-Anforderung endet für irgendwelche Ausnahmen, wie für DMA-Modus 1 erwähnt. DMA- Transfers werden erneut gestartet (entsprechend dem Modus-0-Kriterium, nachdem irgendwelche Ausnahmen, Auszeiten oder ungenügend gültige Datenbreitebedingungen gelöscht worden sind und das Rx-DMA-Entsperrbit gesetzt worden ist.
- Das UART sorgt auch für das Halten eines externen Rx FIFO in Verbindung mit einer System-DMA-Einheit. Dies wird gemacht, um eine erhöhte Rx-FIFO-Länge zu erreichen, ohne signifikant die Chipgröße des UART zu erhöhen. Um dies gemäß Fig. 8 zu tun, sind Steuerschaltungen vorgesehen, welche DMA-Transfers anfordern und die CPU benachrichtigen, wenn eine vorgewählte Anzahl von Bytes transferiert worden ist. Ein zusätzliches Register ist vorgesehen für die externe Rx-FIFO-Steuerung. Dies ist das Rx-CNT-Zählregister 26. Es verfolgt die Anzahl von Bytes, die vom Rx FIFO 12 über DMA transferiert werden. Die CPU programmiert diesen Zähler mit der Anzahl von zu transferierenden Bytes. Der Zähler dekrementiert mit jedem transferierten gültigen Byte. Wenn er 0 erreicht, wird das Rx-CNT-Bit in dem IIR-Feld gesetzt und, falls entsperrt (IER7 gesetzt), wird ein Interrupt ausgegeben. Das Rx-DMA-Bit in dem Steuerregisetr (CORO) wird zu diesem Zeitpunkt gelöscht, was weiteren Rx DMA sperrt. Der UART-Betrieb kehrt zu dem Nicht-DMA-Transfermodus zurück, bis die CPU das Rx-DMA-Entsperrbit wieder setzt. Die CPU reagiert auf den Rx-CNT-Interrupt mit:
- 1. Lesen des CSR-Feldes zum Bestimmen des Interrupts;
- 2. Lesen des Rx-CNT-Registers zum Löschen des Interrupts;
- 3. Verarbeiten der in dem externen Rx FIFO gespeicherten Bytes;
- 4. Vorbereiten des System-DMA für nachfolgende Transfers; und
- 5. Setzen des Rx-DMA-Entsperrbits in dem Kanalbetriebsregister zum Ermöglichen nachfolgender DMA-Transfers.
- Im Modus 1 startet das Erreichen des DMA-Triggerpegels von Rx FIFO 12 den Transfer zu dem externen Rx FIFO. Der Transfer setzt sich fort, bis alle konsekutiven gültigen Datenbytes im Rx FIFO transferiert worden ist und es einen Leitungsstatuszustand gibt oder bis eine Byteanpaßbedingung auftritt an der Spitze des Rx FIFO 12. Wenn der Zähler nicht bei 0 ist und es weniger als eine Busbreite von aufeinanderfolgenden gültigen Daten an der Spitze des Rx FIFD 12 gibt, dann wird das UART auf das Eintreffen von genug Bytes warten, um den Triggerpegel zu erreichen und mit einem DMA-Transfer mit voller Busbreite fortzufahren. Wenn nicht genug Bytes eintreffen, wird ein Auszeitinterrupt zu der CPU ausgegeben. Die CPU-Reaktion auf einen Auszeitinterrupt ist:
- 1. Überprüfen des CSR-Feldes zum Bestimmen des Interrupts und konsekutiver gültiger Daten;
- 2. Überprüfen des RCR zum Löschen des Interrupts und Bestimmen der Anzahl von Bytes in dem externen Rx FIFO, die zu verarbeiten sind;
- 3. Lesen von Rx FIFO 12 zum Extrahieren aller verbleibenden Bytes (Überprüfen des FSR-Feldes, wenn angemessen);
- 4. Verarbeiten der in dem externen Rx FIFO gespeicherten Bytes; und
- 5. Starten einer Routine zum Handhaben der verbleibenden einlaufenden Bytes in diesem Block.
- Der Rx-DMA-Zähler 26 wird erneut auf den vorprogrammierten Wert geladen, nachdem das Rx-DMA-Entsperrbit gesetzt worden ist. Der entsperrte Rx-DMA-Transfer startet erneut, sobald der Triggerpegel erreicht ist. Im DMA-Modus 0 beginnt der Transfer, sobald genug Daten gesammelt sind, um einen Transfer in vollständiger Busbreite auszuführen.
- Die CPU kann den DMA-Zähler jederzeit umprogrammieren. Wenn der DMA-Zähler umprogrammiert wird auf 0 oder er nicht nach einem Chiprücksetzen programmiert ist, dann ist die Steuerung des externen Rx FIFO nicht aktiv. Leitungsstatus- oder Byteanpassungsbedingungen werden in derselben Weise gehandhabt wie bei dem internen Rx FIFO-Modus.
- Es gibt acht Typen von Interrupts, welche die CPU über das IER-Feld entsperren kann. Zwei vermitteln den Empfängerstatus, drei vermitteln den Senderstatus und die anderen drei vermitteln Eingangsstatus, Leitungsstatus bzw. Vergleichsregisteranpassungen.
- Das Setzen des Bits IER7 ermöglicht einem Rx FIFO 12 bei Triggerpegelindikation (IIR7), den Interrupt zu akivieren. Wenn dieser Interrupt anhängig ist, besteht die Reaktion der CPU aus:
- 1. Überprüfen des IIR-Feldes zum Bestimmen des Interrupts;
- 2. Überprüfen des Registers Bytes-bis-auf-Ausnahme 4 zum Bestimmen der Anzahl von Bytes bis zu einer Ausnahme.
- 3. Extrahieren aller konsekutiven gültigen Datenbytes bis zu einer Ausnahme (Bit IIR7 wird gelöscht, wenn die Daten unter den Triggerpegel fallen); und
- 4. Lesen des FSR- und BSR-Feldes und Extrahieren irgendwelcher verbleibender gültigen Datenbytes zusammen mit irgendwelchen pertinenten Leitungszustands- oder Anpaßinformationen bezüglich ungültiger Datenbytes.
- Das Setzen des Bits IER7, wenn die externen Rx FIFOs in Gebrauch sind, ermöglicht der RCR-(IIR1)-Anzeige, das Interruptsignal zu aktivieren. Die RCR-Indikation IIR1 wird gesetzt, wenn das RCR 0 erreicht.
- Ein anderer Rx-Interrupt, entsperrt durch Setzen des Bits IER1, ist das Auszeitinterrupt. Diese Indikation wird aktiv, wenn ein interner Zeitgeber null erreicht. Die Indikation bedeutet, daß Daten im Rx FIFO 12 länger verharrt haben als eine vorprogrammierte Grenze, ohne daß die CPU eine Aktion unternommen hat oder zusätzliche Daten eintrafen. Dieser Auszeitinterrupt verhindert, daß Daten, die den Triggerpegel nicht erreichen können, auf unbegrenzte Zeit in dem FIFO feststecken. Er triggert dieselbe Indikation (IIR7) wie RFT, weil die CPU-Reaktion dieselbe für Auszeit ist wie für die RFT-Indikation.
- Der interne Zeitgeber für die Auszeitindikation wird gestartet, wenn das erste Byte in Rx FIFO 12 gelangt, und wird gestoppt, wenn das letzte Byte aus Rx FIFO entnommen wurde. Der Zeitgeber wird automatisch neugestartet immer dann, wenn die CPU ein Byte von Rx FIFO 12 entnimmt oder jedesmal dann, wenn das Rx-Schieberegister 27 ein Byte 27 vom Rx FIFO 12 lädt, oder jedesmal dann, wenn das Rx-Schieberegister ein Byte in es lädt. Die Dauer des Zeitgebers wird programmiert durch Setzen von Bits 4 und 3 in dem ROR. Alle Zeitgeberdauern sind Inkremente von 1 Zeichenzeit (00=1 Zeichen, 01=2 Zeichen, 1=3 Zeichen, 11=4 Zeichen). Wenn die programmierte Dauer des Zeitgebers abläuft, bevor die CPU auf Rx FIFO 12 zugreift oder ein anderes entnommendes Bytes in Rx FIFO 12 geladen wird, dann wird die Auszeitindikation (IIR7) gesetzt.
- Ein externes Rx FIFD wird als in Betrieb befindlich angesehen, wenn sowohl das Rx-DMA-Entsperrbit gesetzt ist als auch das RCR 26 geladen ist. Die Rx-Auszeitoperation bei Benutzung des externen Rx FIFO ist identisch mit der, die oben für Rx FIFO 12 aufgelistet wurde mit Ausnahme von zwei Aspekten.
- 1. Die Auszeitdauer wird um das Hundertfache verlängert. Dies deshalb, weil angenommen wird, daß das System Files empfängt, anstatt Eingänge von einem Benutzerterminal zu akzeptieren, und deshalb die Auszeitdauern viel länger sein sollten. Im einzelnen sind, wenn das File bei 9600 Baud unter Verwendung von 8 Daten, 1 Stop und ohne Parität transferiert wird, die Rx-Auszeitverzögerungen, die für den Anwender verfügbar sind, etwa 100, 200, 300, 400 ms.
- 2. Einmal gestartet, wird der Auszeitzeitgeber nur gesperrt, wenn sowohl Rx FIFO 12 leer ist als auch RCR 26 = 0. Dies ermöglicht dem Zeitgeber, Zeitverzögerungen für interne wie auch externe Rx FIFIOS zu überwachen. Dies ist brauchbar, weil Daten möglicherweise entweder im internen, externen oder beiden Rx FIFOs festsitzen könnten.
- Das Setzen des Bits IER6 ermöglicht dem Anpaßvergleichsregister die Anzeige der Ausgabe eines Interrupts. Die Vergleichsanpassung erfolgt, wenn das Vergleichsregisterentsperrbit TOR6 gesetzt ist und ein Datenbyte an der oberen Seite von Rx FIFO ein Byte trifft, geladen in ein Vergleichsregister. In Reaktion auf den Interrupt wird die CPU:
- 2. das IIR-Feld lesen zum Bestimmen des Interrupts;
- 2. das FSR-Feld lesen zum Bestimmen, ob es gültige Daten an der Oberseite von Rx FIFO 12 gibt;
- 3. BSR 16 lesen zum Bestimmen des Bytes, das paßte, und was es war (dies löscht den Interrupt); und
- 4. das Datenregister lesen.
- Das Setzen von IER5 ermöglicht den Leitungsstatusanzeigen (LSI), einen Interrupt zu aktivieren, wenn die Bytes an der Oberseite von Rx FIFO 12 ankommen. Dies erfolgt infolge entweder einem Übersteuerungsfehler (OE), Paritätsfehler (PE), Rahmenbildungsfehler (FE) oder einer Bruchindikation (BI). Die spezifische Indikation wird dem Byte zugeordnet, das sie im BSR 16 verursachte. Der OE wird jedoch angezeigt, sobald das UART diese Bedingung erkennt. In Reaktion auf ein LSI wird die CPU:
- 1. das IIR-Feld überprüfen zum Bestimmen des Interrupts;
- 2. das FSR-Feld überprüfen zum Bestimmen, ob es gültige Daten an der Oberseite von Rx FIFO 12 gibt;
- 3. BSR 16 überprüfen zum Bestimmen des/der Byte(s), das/die den LSI verursachten (dies löscht den Interrupt); und
- 4. das Datenregister 10 lesen.
- Das Setzen des Bits IER4 ermöglicht der Eingangsstatusindikation (ISI), einen Interrupt zu aktivieren. Ein ISI tritt auf, wenn irgendeine der Allgemeinzweckeingangsleitungen sich ändert. Wenn Bit IER4 gesetzt ist, dann wird diese Indikation einen Interrupt aktivieren. Die CPU-Reaktion auf diesen Interrupt ist:
- 1. Lesen des IIR-Feldes zum Bestimmen des Interrupts;
- 2. Lesen des DIR-Feldes (dies löscht den Interrupt).
- Das Setzen von Bit IER3 ermöglicht der Fx-Flußsteuerindikation (TFC), einen Interrupt zu aktivieren. Die TFC-Indikation tritt auf, wenn eine Änderung in dem Tx-Entsperrbit gemacht worden ist infolge einer Anpassung in Rx FIFO 12 mit dem Vergleichsregister 0 oder 1 oder infolge einer Änderung auf dem /CTS-Pin. Dies nimmt an, daß diese Flußsteueroptionen entsperrt sind. Die Tx-Flußsteuerung besteht aus dem automatischen Starten oder Stoppen des Senders, wenn vom Benutzer bestimmte Bytes, wie ein XON oder XOFF in dem Datenstrom erkannt werden. Lesen des TOR-Feldes zum Überprüfen des Tx-Entsperrzustands löscht den Interrupt. Sein Zweck ist, die CPU zu informieren, daß eine Statusänderung an dem Tx-Entsperrbit erfolgt ist. Die CPU kann ein automatisches Setzen des Tx-Entsperrbits jederzeit übersteuern durch einfaches Einschreiben in es. Dieser Interrupt tritt unmittelbar auf bei einer Anpassung, wenn TOR3 gesetzt ist. Wenn TOR3 0 ist und eine Anpassung erfolgt, dann wird der Interrupt aktiv, wenn das Flußsteuerzeichen die Oberseite des FIFD erreicht. Wenn TOR3 gesetzt ist, werden keine Flußsteuerzeichen in das FIFO eingegeben.
- Setzen von Bit IER2 ermöglicht dem Tx FIFO Leerindikation oder der Tx-DMA-Zählung=0-Indikation, einen Interrupt zu aktivieren. Wenn Tx FIFO 14 leer ist, wird eine Indikation durch Bit IIR2 gegeben. Die CPU reagiert auf diesen Interrupt mit:
- 1. Lesen des IIR-Feldes zum Bestimmen des Interrupts; und
- 2. Entweder Laden von Daten in Tx FIFO 14 oder, wenn es sich um den Start von Tx DMA handelt, Entsperren des Tx-DMA-Bits (dies löscht den Interrupt). Wenn es keine auszusendenden Daten gibt, kann die CPU das Tx-Entsperrbit löschen zum Löschen des Interrupts.
- Wenn ein externes Tx FIFO in Benutzung ist, dann wird die IIR2-Indikation aktiviert, wenn der Tx-DMA-Zähler seinen Nullzählstand erreicht.
- Sobald die Vergleichsregister programmiert und entsperrt worden sind, wird jedes in Rx FIFO gelagende Byte bezüglich einer Anpassung überprüft. Das UART enthält acht Vergleichsregister, und nur jene, die explizit von der CPU geladen werden, werden aktiv verglichen. Deshalb kann irgendeine Anzahl von Steuerzeichen bis zu 8 in Gebrauch sein. Eine Anpassung mit irgendeinem Vergleichsregister mit Ausnahme der Vergleichsregister 0 und 1 wird angezeigt durch Bit IIR6, und die entsprechenden BSR-Bits, wenn sie sich unter den nächsten von der Oberseite von Rx FIFO zu entnehmenden Daten befindet. Angenommen, ein aktiver Interrupt würde hervorgerufen durch eine Vergleichsregisteranpassung, so wird die CPU:
- 1. das IIR-Feld lesen zum Bestimmen des Interrupts;
- 2. das FSR-Feld lesen zum Bestimmen der gültigen Daten an der Oberseite von Rx FIFO 12;
- 3. BSR 16 lesen zum Bestimmen, welches Byte paßte, und was es war; und
- 4. das Datenregister 10 lesen zum Extrahieren der Bytes von dem Rx FIFO 12.
- Die CPU entnimmt die gültigen Daten unter deren Sortierung von dem/den Steuerzeichen. Eine Anpassung mit den Vergleichsregistern, welche die Flußsteuerung (0 und 1) handhaben, wird durch IIR3 angezeigt.
- Der Transfer von bytebreiten seriellen Daten zu einem wortbreiten (das heißt 16-Bit) parallellen Datenbus und umgekehrt erfordert eine zusätzliche Beschränkung, d.h. nicht vorhandene Speicher/CPU-Austauschvorgänge. In der Theorie kann die CPU auf jeden seriellen Kanal in irgendeiner von drei Weisen zugreifen: Ungeradzahliges Byte, geradzahliges Byte oder Worttransfers. Da die Daten von jedem Kanal immer Byte-um- Byte geordnet sind, müssen sie der CPU mit der ursprünglichen Reihenfolge beibehalten repräsentiert werden. Zwei Signale, ausgegeben von der CPU, steuern typischerweise die Art, in der die Daten transferiert werden. Die /HBE- und /A0-Eingangssignale zu dem UART, die zur Steuerung von Bytetransfers verwendet werden, indizieren die Anzahl von Bytes, und welcher Teil des 16-Bit-CPU-Bus verwendet wird, nicht auf welche Bytes in den UART-FIFOs zugegriffen werden wird. Das Nachfolgende beschreibt typische 16-Bit-Bustransfers zu einem Peripheriegerät und dann die 16-Bit-Bustransfers zu dem UART.
- Wie oben erwähnt, ermöglicht ein 16 Bit breiter Datenbus der CPU, Daten zu einem Peripheriegerät oder von diesem auf drei unterschiedliche Weisen zu transferieren. Die untenstehende Tabelle 1 führt die Art aus, in der das UART den Datenbus entsperrt für gegebene Status von /HBE und A0. Während konventioneller Transfers etabliert die CPU die Steuersignale /HBE und A0 und transferiert die Daten unter Anwendung normaler Transferprozeduren. Die Daten, wenn sie ausgesandt werden, haben eine vorbestimmte Stelle, auf die zu gehen ist, basierend auf der Adresse und der Datenposition auf dem Datenbus. Dies trifft zu für jeden der drei Arten von Transfers. Wenn die Daten von der CPU empfangen werden, werden sie außerdem von der CPU verarbeitet basierend auf der Adresse und den Datenpositionen auf dem Datenbus.
- Wenn gleichzeitig von der CPU zu dem UART 16 Datenbits transferiert werden, die seriell zu senden sind, hängt die vorbestimmte Datenposition in dem UART-FIFO ab von der Adresse und der Datenbyteposition auf dem Datenbus. Wenn jedoch nur 8 Datenbits zu der UART für serielle Aussendung übertragen werden, dann hängt die vorbestimmte Position in dem UART-FIFO ab von der Adresse und der Anzahl von Bytes, die ausgesandt werden, nicht von der Byteposition auf dem Datenbus.
- Wenn die transferierten Daten seriell von dem UART empfangen worden sind und über einen 16-Bit-Bus zu der CPU transferiert werden, muß die "Datenempfangsreihenfolge" während des 16-Bit-Datenbustransfers beibehalten werden. Während eines 16 Bit breiten Datentransfers wird diese Reihenfolge beibehalten mit konventionellen Beschränkungen bezüglich Adresse und Datenbusposition. Während eines 8-Bit-Transfers jedoch wird das nächste Byte, das in dem UART-FIFO verfügbar ist, zu dem Datenbus transferiert, unabhängig von der Position auf jenem Bus, die sie einnehmen, mit anderen Worten, unabhängig davon, ob es sich um eine hohe Byteposition oder niedrige Byteposition handelt. TABELLLE 1 TRANSFERTYP BUSAKTIVITÄT Geradzahliges Wort ungeradzahliges Byte Geradzahliges Byte
- Wie oben erwähnt, bestimmen die ungeradzahligen bzw. geradzahligen Bytetransfers, auf welchem Teil des Busses das nächste Byte in dem Rx-FIFO 12 plaziert werden wird. Die Daten- und Statusregister arbeiten in derselben Weise. Der Status muß gelesen werden vor den Daten, um das Statusbyte mit dem richtigen Datenbyte zu assoziieren.
- Schreiben in das Datenregister lädt Daten in Tx FIFO 14. Daten können in das Datenregister eingeschrieben werden unter Verwendung irgendeiner /HBE- und A0-Kombination. Während Einzelbytetransfers wird das Datenbyte in den nächstverfügbaren Raum im Tx FIFO 14 positioniert werden, unabhängig von seiner Position auf dem CPU-Bus (D15-D8 oder D7-D0). Wortbreite Daten werden in Tx FIFO 14 geladen unter der Annahme, daß das Datenbyte auf D7-D0 unmittelbar vor den Daten auf D15-D8 übertragen werden sollte.
- Alle anderen Register neben Daten- und Statusregister können auf einer Byte-um-Byte-Basis unter Verwendung von /HBE und A0 adressiert werden. Wenn beispielsweise in dem 16-Bit-Zugriffsmodus auf das Register unter Adresse 5 mit /HBE=D und A0=1 zugegriffen wird, dann werden die Registerinhalte auf D15-D8 plaziert. Schreiben in ungeradzahlige und geradzahlige bytebreite Register erfolgt in ähnlicher Weise unter Verwendung dieser Abtastpulse, wie wortbreite Abtastimpulse.
Claims (12)
1. Eine Datenkommunikationseinrichtung, die eine
Seriell-Parallel-Umsetzung an digitalen Datenzeichen vornimmt, die durch die
Datenkommunikationeinrichtung von einer ersten Station zwecks Transfer zu
einer zweiten Station empfangen werden, verbunden mit der
Datenkommunikationseinrichtung in Reaktion auf eine Lesezugriffsanforderung,
ausgegeben von der zweiten Station, welche Datenkommunikationseinrichtung
umfaßt:
(a) ein Empfängerschieberegister (21), angeschlossen zum
Empfang von seriell von der ersten Station transferierten Datenzeichen;
(b) Empfängerspeichermittel (12), angeschlossen an das
Empfängerschieberregister für das Abspeichern einer Mehrzahl von Datenzeichen,
empfangen von dem Empfängerschieberegister für den Transfer zu der
zweiten Station;
(c) Aussonderungsmittel (16), die auf von der
Datenkommunikationseinrichtung von der ersten Station empfangene Datenzeichen
reagieren, für das Identifizieren, ob ein von der
Datenkommunikationseinrichtung empfangenes Datenzeichen eine Aussonderung auslöst, wenn es zu der
zweiten Station übertragen wird, oder ob das empfangene Datenzeichen ein
gültiges Datenzeichen ist;
(d) Zählermittel (26), verbunden mit den Aussonderungsmitteln
und mit den Empfängerspeichermitteln, für das Indizieren einer Anzahl
von aufeinanderfolgenden gültigen Datenzeichen, die in den
Empfängerspeichermitteln abgespeichert sind, welche für den Transfer zu der
zweiten Station verfügbar sind; und
(e) Transfermittel (10), verbunden mit den
Empfängerspeichermitteln und auf eine Lesezugriffsanforderung von der zweiten Station
reagierend, für den Transfer der Anzahl von aufeinanderfolgenden
gültigen Datenzeichen von den Empfängerspeichermitteln zu der zweiten
Station.
2. Eine Datenkommunikationseinrichtung nach Anspruch 1, bei
der die Aussonderungsmittel Vergleichsmittel umfassen für das
Vergleichen
von von der ersten Station durch die Datenkommunikationseinrichtung
empfangenen Datenzeichen mit vorgewählter Vergleichsinformation.
3. Eine Datenkommunikationseinrichtung nach Anspruch 2 und
ferner Mittel, angeschlossen an die Aussonderungsmittel für das Ändern
der vorgewählten Vergleichsinformation, umfassend.
4. Eine Datenkommunikationseinrichtung nach Anspruch 1, bei
der die zweite Station eine zentrale Verarbeitungseinheit umfaßt,
Datenspeichermittel in Verbindung mit der zentralen Verarbeitungseinrichtung
umfaßt und Mittel für den Transfer der aufeinanderfolgenden gültigen
Datenzeichen direkt von der Datenkommunikationseinrichtung zu den
Datenspeichermitteln umfaßt.
5. Eine Datenkommunikationseinrichtung nach Anspruch 1, bei
der die Aussonderungsmittel Mittel für die Identifikation von
Leitungsstatusfehlern in von der ersten Station empfangenen Datenzeichen
umfassen.
6. Eine Datenkommunikationseinrichtung nach Anspruch 1, bei
der die Aussonderungsmittel Mittel für die Identifikation umfassen, daß
ein von der Datenkommunikationseinrichtung empfangenes Datenzeichen das
jüngste von der Datenkommunikationseinrichtung empfangene Datenzeichen
ist.
7. Ein Verfahren für das Auslesen einer Mehrzahl von
Datenzeichen von einer Datenkommunikationseinrichtung, die angeschlossen ist zum
Empfangen von Datenzeichen von einer ersten Station, und zum
Transferieren der empfangenen Datenzeichen zu einer zweiten Station in Reaktion
auf eine Lesezugriffsanforderung, ausgegeben von der zweiten Station,
welches Verfahren umfaßt:
(a) Abspeichern einer Mehrzahl von Datenzeichen, empfangen
durch die Datenkommunikationseinrichtung von der ersten Station in der
Datenkommunikationseinrichtung;
(b) Bestimmen, ob jedes von der Datenkommunikationseinrichtung
empfangene Datenzeichen ein gültiges Datenzeichen ist;
(c) Aufrechterhalten einer Zählung der Anzahl von
aufeinanderfolgenden gültigen von der Datenkommunikationseinrichtung empfangenen
Datenzeichen; und
(d) Transferieren der Anzahl von aufeinanderfolgenden gültigen
Datenzeichen von der Datenkommunikationseinrichtung zu der zweiten
Station in Reaktion auf die Lesezugriffsanforderung.
8. Ein Verfahren nach Anspruch 7, bei dem der Schritt des
Bestimmens, ob jedes empfangene Datenzeichen ein gültiges Datenzeichen
ist, den Schritt des Vergleichens jedes von der
Datenkommunikationseinrichtung empfangenen Datenzeichens mit vorgewählter
Vergleichsinformation derart umfaßt, daß eine Anpassung zwischen dem empfangenen
Datenzeichen und der vorgewählten Vergleichsinformation darin resultiert, daß
Datenzeichen, die als nicht ein gültiges Datenzeichen darstellendes
Datenzeichen bestimmt wurden, sondern als ein Datenzeichen, das eine
Aussonderung auslösen würde, wenn es zur zweiten Station transferiert
würde.
9. Ein Verfahren nach Anspruch 8 und ferner umfassend den
Schritt der Änderung der vorgewählten Vergleichsinformation.
10. Ein Verfahren nach Anspruch 7, bei dem die zweite Station
eine zentrale Verarbeitungseinheit und
Zentralverarbeitungseinheit-Speichermittel in Verbindung mit der zentralen Verarbeitungseinheit umfaßt,
wobei das Verfahren ferner den Schritt des Transfers der
aufeinanderfolgenden gültigen Datenzeichen direkt zu den Speichermitteln
der zentralen Verarbeitungseinheit umfaßt.
11. Ein Verfahren nach Anspruch 7, bei dem der Schritt der
Bestimmung, ob jedes empfangene Datenzeichen ein gültiges Datenzeichen
ist, den Schritt der Feststellung umfaßt, ob ein von der
Datenkommunikationseinrichtung empfangenes Datenzeichen einen Leitungsstatusfehler
umfaßt, wobei der Transfer zur zweiten Station eines Datenzeichens
einschließlich eines Leitungsstatusfehlers eine Aussonderung auslöst.
12. Ein Verfahren nach Anspruch 7, bei dem der Schritt der
Bestimmung, ob ein von der Datenkommunikationseinrichtung empfangenes
Datenzeichen eine Aussonderung auslösen wird, den Schritt der Feststellung
umfaßt, ob ein empfangenes Datenzeichen das jüngste abgespeicherte
Datenzeichen ist, wobei der Transfer zur zweiten Station des jüngsten
abgespeicherten Datenzeichens eine Aussonderung auslöst.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/244,920 US5140679A (en) | 1988-09-14 | 1988-09-14 | Universal asynchronous receiver/transmitter |
Publications (2)
Publication Number | Publication Date |
---|---|
DE68925322D1 DE68925322D1 (de) | 1996-02-15 |
DE68925322T2 true DE68925322T2 (de) | 1996-09-05 |
Family
ID=22924623
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE68929099T Expired - Fee Related DE68929099T2 (de) | 1988-09-14 | 1989-09-08 | Universeller asynchroner Sender/Empfänger |
DE68925322T Expired - Fee Related DE68925322T2 (de) | 1988-09-14 | 1989-09-08 | Universaler asynchroner Sender/Empfänger |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE68929099T Expired - Fee Related DE68929099T2 (de) | 1988-09-14 | 1989-09-08 | Universeller asynchroner Sender/Empfänger |
Country Status (5)
Country | Link |
---|---|
US (1) | US5140679A (de) |
EP (3) | EP0359137B1 (de) |
JP (1) | JP3247365B2 (de) |
KR (1) | KR0129000B1 (de) |
DE (2) | DE68929099T2 (de) |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5278956A (en) * | 1990-01-22 | 1994-01-11 | Vlsi Technology, Inc. | Variable sized FIFO memory and programmable trigger level therefor for use in a UART or the like |
JP2778222B2 (ja) * | 1990-08-15 | 1998-07-23 | 日本電気株式会社 | 半導体集積回路装置 |
US5247617A (en) * | 1991-02-26 | 1993-09-21 | Digi International, Inc. | Method for supplying data to a buffered uart |
DE59109187D1 (de) * | 1991-09-09 | 2000-06-08 | Siemens Nixdorf Inf Syst | Steuereinrichtung zur Steuerung der Datenübertragung zwischen einem von mehreren Ein-/Ausgabemodulen und dem Arbeitsspeicher einer Datenverarbeitungsanlage |
US6067408A (en) * | 1993-05-27 | 2000-05-23 | Advanced Micro Devices, Inc. | Full duplex buffer management and apparatus |
US5550989A (en) * | 1993-05-28 | 1996-08-27 | International Business Machines Corporation | Bridge circuit that can eliminate invalid data during information transfer between buses of different bitwidths |
DE69430793T2 (de) * | 1994-01-27 | 2003-02-20 | Sun Microsystems, Inc. | Asynchrone serielle kommunickationsschaltung |
AU2279095A (en) * | 1994-06-03 | 1996-01-04 | Motorola, Inc. | A dual function interface for pcmcia compatible peripheral cards and method of use therein |
US5649122A (en) * | 1994-06-24 | 1997-07-15 | Startech Semiconductor, Inc. | Universal asynchronous receiver/transmitter with programmable xon/xoff characters |
US5604870A (en) * | 1994-08-01 | 1997-02-18 | Moss; Barry | UART emulator card |
US5717870A (en) * | 1994-10-26 | 1998-02-10 | Hayes Microcomputer Products, Inc. | Serial port controller for preventing repetitive interrupt signals |
US5794021A (en) * | 1994-11-02 | 1998-08-11 | Advanced Micro Devices, Inc. | Variable frequency clock generation circuit using aperiodic patterns |
US5675808A (en) * | 1994-11-02 | 1997-10-07 | Advanced Micro Devices, Inc. | Power control of circuit modules within an integrated circuit |
US5589830A (en) * | 1994-11-02 | 1996-12-31 | Advanced Micro Devices, Inc. | Stereo audio codec |
US5528181A (en) * | 1994-11-02 | 1996-06-18 | Advanced Micro Devices, Inc. | Hazard-free divider circuit |
US5809466A (en) * | 1994-11-02 | 1998-09-15 | Advanced Micro Devices, Inc. | Audio processing chip with external serial port |
US6272465B1 (en) | 1994-11-02 | 2001-08-07 | Legerity, Inc. | Monolithic PC audio circuit |
US5606671A (en) * | 1994-11-04 | 1997-02-25 | Canon Information Systems, Inc. | Serial port using non-maskable interrupt terminal of a microprocessor |
US5628026A (en) * | 1994-12-05 | 1997-05-06 | Motorola, Inc. | Multi-dimensional data transfer in a data processing system and method therefor |
US5689643A (en) * | 1994-12-09 | 1997-11-18 | O'hanlan; Thomas B. | Communication device for transmitting asynchronous formatted data synchronously |
US5623449A (en) * | 1995-08-11 | 1997-04-22 | Lucent Technologies Inc. | Flag detection for first-in-first-out memories |
US5812820A (en) * | 1995-09-29 | 1998-09-22 | Pacific Commware, Inc. | Virtual UART |
WO1997015011A1 (en) * | 1995-10-18 | 1997-04-24 | Sierra Semiconductor Corporation | Method and apparatus for interfacing devices used in asynchronous communications |
US5784559A (en) * | 1995-11-06 | 1998-07-21 | Sun Microsystems, Inc. | Full duplex flow control for ethernet networks |
US5822548A (en) * | 1996-01-16 | 1998-10-13 | Vlsi Technology, Inc. | Programming interface for a universal asynchronous receiver/transmitter |
US6519268B1 (en) | 1996-03-07 | 2003-02-11 | Sony Corporation | Asynchronous data pipe for automatically managing asynchronous data transfers between an application and a bus structure |
US5918024A (en) * | 1996-05-08 | 1999-06-29 | Ericsson, Inc. | Method and apparatus for providing single channel communications |
KR100393959B1 (ko) * | 1996-06-04 | 2003-10-10 | 주식회사 하이닉스반도체 | 비동기식송신및수신장치(uart) |
EP0817085A1 (de) * | 1996-06-25 | 1998-01-07 | Motorola, Inc. | Anordnung und Verfahren zur Adressierung |
US5949787A (en) * | 1997-09-04 | 1999-09-07 | Exar Corporation | Multi-function FIFO counter status register |
US6157689A (en) * | 1998-03-16 | 2000-12-05 | Ericsson Inc. | Automatic speed detection for asynchronous serial communications |
US6163815A (en) * | 1998-05-27 | 2000-12-19 | International Business Machines Corporation | Dynamic disablement of a transaction ordering in response to an error |
US6266715B1 (en) | 1998-06-01 | 2001-07-24 | Advanced Micro Devices, Inc. | Universal serial bus controller with a direct memory access mode |
US6332173B2 (en) * | 1998-10-31 | 2001-12-18 | Advanced Micro Devices, Inc. | UART automatic parity support for frames with address bits |
EP1135732A1 (de) * | 1998-12-08 | 2001-09-26 | AlliedSignal Inc. | Verbesserte uart-schnittstelle in einem satcom-system |
US6615052B1 (en) | 1998-12-08 | 2003-09-02 | Honeywell International Inc. | Radio frequency power control algorithm |
US8346971B2 (en) | 1999-05-04 | 2013-01-01 | At&T Intellectual Property I, Lp | Data transfer, synchronising applications, and low latency networks |
GB2349717A (en) * | 1999-05-04 | 2000-11-08 | At & T Lab Cambridge Ltd | Low latency network |
US6865626B1 (en) * | 2000-03-17 | 2005-03-08 | Exar Corporation | UART automatic half-duplex direction control with programmable delay |
US6947999B1 (en) * | 2000-03-17 | 2005-09-20 | Exar Corporation | UART with compressed user accessible interrupt codes |
KR100347753B1 (ko) * | 2000-08-18 | 2002-08-09 | 주식회사 하이닉스반도체 | 범용 비동기 송수신 방식 직렬 정합 장치 및 방법 |
KR100703450B1 (ko) * | 2000-09-15 | 2007-04-03 | 삼성전자주식회사 | 씨.피.유의 로드를 줄이는 무선 단말기의 범용 입/출력부제어장치 및 방법 |
US6820145B2 (en) * | 2001-05-31 | 2004-11-16 | Koninklijke Philips Electronics N.V. | Circuit arrangement and method for improving data management in a data communications circuit |
US6766396B2 (en) * | 2001-06-07 | 2004-07-20 | Lucent Technologies Inc. | PC16550D UART line status register data ready bit filter and latch |
GB0129614D0 (en) * | 2001-12-11 | 2002-01-30 | Nokia Corp | Asynchronous serial data interface |
US7899956B2 (en) * | 2004-10-07 | 2011-03-01 | Broadcom Corporation | System and method of reducing the rate of interrupts generated by a device in microprocessor based systems |
JP4908017B2 (ja) * | 2006-02-28 | 2012-04-04 | 富士通株式会社 | Dmaデータ転送装置及びdmaデータ転送方法 |
US20110142074A1 (en) * | 2009-12-16 | 2011-06-16 | William Henry Lueckenbach | Serial communication module with multiple receiver/transmitters |
US9723384B2 (en) | 2015-08-21 | 2017-08-01 | King Abdulaziz City For Science And Technology | Single synchronous FIFO in a universal asynchronous receiver/transmitter system |
KR102585215B1 (ko) | 2016-12-22 | 2023-10-05 | 삼성전자주식회사 | 타 장치와 단일 와이어를 통해 연결되는 장치 및 이를 포함하는 시스템의 동작 방법 |
RU2733923C1 (ru) * | 2020-02-20 | 2020-10-08 | Федеральное государственное бюджетное образовательное учреждение высшего образования "Сибирский государственный университет телекоммуникаций и информатики" (СибГУТИ) | Метод приема синхронных данных старт-стопным интерфейсом |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3673576A (en) * | 1970-07-13 | 1972-06-27 | Eg & G Inc | Programmable computer-peripheral interface |
US4368512A (en) * | 1978-06-30 | 1983-01-11 | Motorola, Inc. | Advanced data link controller having a plurality of multi-bit status registers |
US4346440A (en) * | 1978-06-30 | 1982-08-24 | Motorola, Inc. | Advanced data link controller |
US4298959A (en) * | 1979-11-23 | 1981-11-03 | United Technologies Corporation | Digital information transfer system (DITS) receiver |
US4534011A (en) * | 1982-02-02 | 1985-08-06 | International Business Machines Corporation | Peripheral attachment interface for I/O controller having cycle steal and off-line modes |
DE3272517D1 (en) * | 1982-03-24 | 1986-09-18 | Ibm | Method and device for the exchange of information between terminals and a central control unit |
US4628446A (en) * | 1982-12-06 | 1986-12-09 | At&T Bell Laboratories | Multichannel interface |
US4571671A (en) * | 1983-05-13 | 1986-02-18 | International Business Machines Corporation | Data processor having multiple-buffer adapter between a system channel and an input/output bus |
US4545055A (en) * | 1983-07-20 | 1985-10-01 | Loral Corporation | Error analyzer for data communicated by bus protocol |
US4647926A (en) * | 1984-07-27 | 1987-03-03 | Allied Corporation | Warning system for microwave landing system airborne receiver |
US4751634A (en) * | 1985-06-14 | 1988-06-14 | International Business Machines Corporation | Multiple port communications adapter apparatus |
US4829471A (en) * | 1986-02-07 | 1989-05-09 | Advanced Micro Devices, Inc. | Data load sequencer for multiple data line serializer |
US4751572A (en) * | 1986-12-30 | 1988-06-14 | The United States Of America As Represented By The United States Department Of Energy | High speed data compactor |
US4800562A (en) * | 1987-04-27 | 1989-01-24 | Northern Telecom Limited | Circuit and method for monitoring the quality of data in a data stream |
-
1988
- 1988-09-14 US US07/244,920 patent/US5140679A/en not_active Expired - Lifetime
-
1989
- 1989-09-07 KR KR1019890012919A patent/KR0129000B1/ko not_active IP Right Cessation
- 1989-09-08 DE DE68929099T patent/DE68929099T2/de not_active Expired - Fee Related
- 1989-09-08 EP EP89116585A patent/EP0359137B1/de not_active Expired - Lifetime
- 1989-09-08 EP EP94115267A patent/EP0634722A3/de not_active Withdrawn
- 1989-09-08 EP EP94115236A patent/EP0632391B1/de not_active Expired - Lifetime
- 1989-09-08 DE DE68925322T patent/DE68925322T2/de not_active Expired - Fee Related
- 1989-09-14 JP JP23743489A patent/JP3247365B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0632391A2 (de) | 1995-01-04 |
DE68929099D1 (de) | 1999-12-16 |
DE68929099T2 (de) | 2000-07-20 |
EP0634722A3 (de) | 1996-01-10 |
EP0632391A3 (de) | 1996-01-10 |
JPH02257242A (ja) | 1990-10-18 |
EP0632391B1 (de) | 1999-11-10 |
KR0129000B1 (ko) | 1998-04-15 |
EP0359137A2 (de) | 1990-03-21 |
KR900005305A (ko) | 1990-04-14 |
EP0359137A3 (de) | 1991-11-06 |
EP0359137B1 (de) | 1996-01-03 |
EP0634722A2 (de) | 1995-01-18 |
US5140679A (en) | 1992-08-18 |
JP3247365B2 (ja) | 2002-01-15 |
DE68925322D1 (de) | 1996-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE68925322T2 (de) | Universaler asynchroner Sender/Empfänger | |
DE69131436T2 (de) | Netzanpassungseinrichtung mit als logische FIFOs gestalteten Speichern zur Übertragung und Empfang von Datenpaketen | |
DE69329607T2 (de) | Programmierte Ethernetanpassungseinrichtung mit frühzeitiger Unterbrechung für Beschleunigung von Datenübertragung | |
DE69323290T2 (de) | Netzwerkanpassungseinrichtung mit Hauptrechnerindikationoptimierung | |
DE69326429T2 (de) | Netzwerkschnittstelle mit unabhängiger pufferverwaltung | |
DE69131477T2 (de) | Netzwerkanpassungseinrichtung | |
DE3889142T2 (de) | Asynchrone Schnittstelle und Verfahren zur Datenkopplung zwischen einem Datenmodul und einem seriellen, asynchronen Pheripheriegerät. | |
DE69430793T2 (de) | Asynchrone serielle kommunickationsschaltung | |
DE69329684T2 (de) | Vorrichtung mit hauptrechnerindikationssignalen | |
DE60217221T2 (de) | Ein-Chip System zur Paketverarbeitung | |
DE69128503T2 (de) | Schnittstellenschaltung für intelligentes Netzwerk | |
US5199105A (en) | Universal asynchronous receiver/transmitter | |
DE3751091T2 (de) | Übertragungsprotokoll zwischen Prozessoren. | |
DE69131971T2 (de) | Netzwerkanpassungseinrichtung mit Puffer und Mehrbeschreibungskreis | |
DE3586487T2 (de) | Kohaerentes interface mit zurueckgeschleiften sende- und empfangsspeichern. | |
DE2829550C2 (de) | ||
DE69022359T2 (de) | Einrichtung zur Dekodierung von über eine Datenverbindung transportierten Rahmen. | |
DE69232613T2 (de) | Hochgeschwindigkeitschnittstelle für eine Duplex-Datenverbindung | |
DE69636280T2 (de) | Fensterkomparator | |
DE3687355T2 (de) | Universalprotokoll-datenempfaenger. | |
US5228130A (en) | Multi-channel peripheral interface using selectively flaggable channel register sets for concurrent write in response to any selected channel register write instruction | |
DE69527110T2 (de) | Verfahren und Vorrichtung zum Routen von nach einem asynchronen Transfermodus einkommenden verschachelten Zellen mit reduzierter Vermittlung | |
DE102013113262B4 (de) | Auslöser-Leitwegeinheit | |
DE69330399T2 (de) | HDLC-Empfänger | |
DE69803276T2 (de) | Verfahren und gerät zur von den empfangenen daten abhängigen steuerung der informationsübertragungsauslösung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |