-
Für die vorliegende Anmeldung besonders relevante
Patentbeschreibungen sind die US-Patente 4 635 255, 4 907 225, 4
852 088, 5 048 012 und 4 809 269.
-
Die vorliegende Erfindung betrifft die serielle
Datenfernübertragung und insbesondere eine universelle asynchrone
Empfänger-Sendereinrichtung mit First-in-First-out-Sende-
und -Empfangsregistern (FIFO) und Spezialzeichenerkennung,
die wahlweise in einem Synchronmodus betreibbar ist.
-
In der Telekommunikation ist das Übertragen von digitalen
Signalen über ein öffentliches "analoges" Telefonnetz ein
üblicher Vorgang. Üblicherweise wird ein serieller
Modulator-Demodulator (Modem) zusammen mit einer Vorrichtung, wie
einer universellen asynchronen Empfänger-Sendereinrichtung
(UART), verwendet, die eine parallel-zu-seriell- und
Seriell-zu-parallel-Umwandlung von über das Netzwerk
gesendeten und empfangenen digitalen Datensignalen durchführt.
-
Ein Industrienorm-UART ist das von der Western Digital
Corporation unter der Bezeichnung 8250 hergestellte
"Asynchronous Communications Element". Da dieses UART in zahlreichen
Anwendungsgebieten zu finden ist, existiert eine große Menge
an Software-Programmen, die von der internen Konfiguration
dieses UART abhängen. Diese Programme werden in einem
außerhalb des UART befindlichen Mikroprozessor abgearbeitet,
der die von dem UART ausgeführten Funktionen des UART
steuert. Wenn möglich sind daher jegliche Veränderungen der
Struktur des UART, die Veränderungen der Software erfordern
würden, zu vermeiden.
-
Seit der Zeit, in der das 8250 UART als Standard eingeführt
wurde, hat sich jedoch herausgestellt, daß einige erwünschte
Eigenschaften auf dem UART 8250 nicht verfügbar sind. Daher
besteht ein Bedürfnis nach einem verbesserten UART, das mit
dem Standard 8250 kompatibel ist.
-
Unter den Vorrichtungen von erwiesener Nützlichkeit befindet
sich ein mit dem 8250 kompatibles UART, das wahlweise in
einem Synchronmodus betreibbar ist. In einem Synchronmodus
besteht kein Notwendigkeit für Start- oder Stop-Bits und
Daten werden daher bei jedem Taktzyklus empfangen. Der
Asynchronbetrieb eines UART ist verhältnismäßig langsam, da er
Start-Stop-Bits erfordert, die einen zusätzlichen
Zeitaufwand bei der Übertragung bedeuten, und auch aufgrund der für
das "Handshaking" und das "Framing" erforderlichen Zeit. Bei
gleicher Bit-Geschwindigkeit werden bei der asynchronen
Übertragung ungefähr 33& weniger Zeichen übertragen als bei
der synchronen Übertragung.
-
Eine weitere Vorrichtung von erwiesener Nützlichkeit ist ein
8250-kompatibles UART mit als elastische Puffer verwendeten
First-in-First-out-Sende und -Empfangseinrichtungen (FIFO).
Ein empfangsseitiger elastischer Puffer kompensiert
Schwankungen der Geschwindigkeit, in der Daten von dem UART
empfangen werden, und der Geschwindigkeit, mit der die Daten zu
Verarbeitungsvorrichtungen und/oder Speichervorrichtungen
übertragen werden können. Bei bekannten UARTs muß der
Benutzer den Datenempfang sorgfältig überwachen und
sicherstellen, daß der Datenempfang die Übertragung und/oder
Speicherung der Daten nicht "überlief". Dieses Überwachen
verursachte zusätzlichen Programmier- und Zeitaufwand. In
ähnlicher Weise kompensiert ein sendeseitiger elastischer
Puffer Schwankungen der Geschwindigkeit, mit der Daten über das
Netzwerk gesendet werden können. Insbesondere bei der
asynchronen Übertragung erfordert das Senden von Daten ein
komplexes Protokoll-Handshakimg und Verzögerungen sind daher
unvermeidlich. Ist kein elastischer Puffer verfügbar, muß
der Empfang zu sendender Daten durch das UART überwacht
werden und die Programme müssen vor dem Senden das Beenden
der Datenverarbeitung bewirken. Dies hat eine unerwünschte
Komplexität der Software sowie zusätzlichen Zeitaufwand beim
Programmieren zur Folge.
-
Ein weiteres erwünschtes Merkmal eines 8250-kompatiblen UART
ist ein Mechanismus zum Identifizieren von über das Netzwerk
empfangenen Zeichen als "speziell", der nicht auf eine
umfangreiche Software-Überwachung der empfangenen Zeichen
angewiesen ist, wie dies bei den bekannten UARTs
erforderlich ist. Eine solche Überwachung ist zeitaufwendig und
erfordert die Erstellung spezieller Programme. Ein weiteres
erwünschtes Merkmal, das gegenwärtig mittels Software
erzielbar ist, ist das Erkennen von Paritätsfehlern in den
empfangenen Zeichen.
Zusammenfassung der Erfindung
-
Es wird ein mit dem Standard 8250 kompatibles UART
beschrieben, das wahlweise in einem Synchron- oder einem
Asynchronmodus betreibbar ist. Ein dem Bediener zugängliches Register
in dem verbesserten UART weist eine Bit-Position auf, die
von dem das UART steuernden Mikroprozessor zum Bestimmen des
Betriebsmodus gesetzt werden kann. Im Synchronmodus werden
Daten bei jedem Taktzyklus in ein Empfangsschieberegister
plaziert. Ferner kann das Taktsignal unter entweder einem
intern erzeugten Taktsignal oder einem von einer externen
Quelle an das UART angelegten Taktsignal gewählt werden.
Normalerweise würde beim Synchronbetrieb nur das letztere
Signal zum Datenempfang verwendet, das gleich und synchron
zu der Rate ist, mit der die Daten empfangen werden.
-
Zum Senden von Daten im Synchronmodus werden Daten von einem
Sendeschieberegister mit einer Rate gesendet, die entweder
von dem internen oder dem externen Taktsignal getaktet ist.
Die Daten werden als steter Bitstrom gesendet, wobei keine
Start- oder Stop-Raster- oder Rahmenbits erforderlich sind.
-
Das beschriebene verbesserte UART weist einen
empfangsseitigen elastischen First-in-First-out-Puffer (FIFO), der in der
Lage ist, vier Zehn-Bit-Wärter zu speichern. Jedes Zehn-Bit-
Wort besteht aus einem Acht-Bit-Zeichenabschnitt, einer 1-
Bit-Paritätsfehlerflagge und einer
1-Bit-Spezialzeichenflagge besteht.
-
Das UART empfängt Daten mittels eines Seriell-zu-Parallel-
Schieberegisters und speichert sie in dem Empfangs-FIFO. Ein
Unterbrechungssignal wird erzeugt, wenn die Zahl der in dem
FIFO gespeicherten Zeichen eine durch ein
Benutzerzugriffsregister spezifizierte Schwelle erreicht. Daten werden aus
dem Empfangs-FIFO unter Steuerung durch den Mikroprozessor
ausgelesen.
-
Eine paritäts-, Spezialzeichen-, Rahmen- und
Unterbrechungsprüfeinrichtung überwacht die von dem UART empfangenen
Zeichen und setzt die paritätsfehler- und Spezialzeichenflaggen
entsprechend. Die Prüfeinrichtung verwendet einen in dem
verbesserten UART vorhandenen Direktzugriffsspeicher (RAM),
um festzustellen, ob empfangene Zeichen speziell sind, in
dem Sinne, daß der Benutzer über den Mikroprozessor an einem
Speicherplatz in dem RAM ein Acht-Bit-Muster gespeichert
hat, das als speziell zu kennzeichnen ist. Das Vorhandensein
eines Zeichens, das entweder einen Paritätsfehler aufweist
oder ein Spezialzeichen ist, wird in einem für den Benutzer
zugänglichen Register angezeigt, und ein
Unterbrechungssignal kann erzeugt werden, um dem Benutzer zu ermöglichen,
festzustellen, welches Zeichen die Unterbrechung verursacht
hat.
-
Das erfindungsgemäße UART verwendet einen sendeseitigen
FIFO-Puffer. Ein Parallel-zu-Seriell-Sende-Schieberegister
wird vom Sende-FIFO her geladen. Erreicht die Zahl der
Zeichen in dem FIFO eine in dem für den Benutzer zugänglichen
Register programmierte Schwellenzahl, kann ein
Unterbrechungssignal erzeugt werden.
-
Das beschriebene verbesserte UART weist den Synchronmodus,
Sende- und Empfangs-FIFOS, Paritäts- und
Spezialzeichenerkennung auf, während es mit dem Industrienorm- UART 8250
vollständig software-kompatibel ist. Zwölf für den Benutzer
zugängliche Register umfassen Register, die Bit-Positionen
aufweisen, die das Freigeben und Steuern dieser verbesserten
Funktionen ermöglichen, während die vollständige
Kompatibilität mit dem 8250 bestehen bleibt.
-
Es wird verwiesen auf "Electronic Design, vol. 33, no. 12,
May 1985, pages 157-168, Hasbrouck Heights, New Jersey, US;
J. Magill et al. : Fast data-comm controller speaks to all
protocols over two sets of channels", in dem eine
Datenübertragungssteuerungsvorrichtung beschrieben wird, die sich an
verschiedene zeichen- und bitorientierte Protokolle halten
kann.
-
Die vorliegende Erfindung schafft eine zur Verbindung mit
Vollduplexeinrichtungen konfigurierte universelle asynchrone
Empfänger-Sendervorrichtung zum seriellen Empfangen und
Übertragen von Datensignalen mit geringer Geschwindigkeit,
wobei die Vorrichtung einen internen Bus aufweist und
wahlweise in einem synchronen Modus betreibbar ist, wobei die
Vorrichtung aufweist:
- eine Einrichtung zum Erzeugen eines asynchronen
Taktsignals;
-
- eine Empfangstakt-Multiplexereinrichtung zum Empfangen
eines synchronen Empfangstaktsignals und des asynchronen
Taktsignals und zum Erzeugen eines Empfangstaktsignals in
Reaktion auf die Auswahl eines
Asynchron/Synchron-Empfangsmodus;
- eine
Seriell-zu-parallel-Empfangsschieberegistereinrichtung zum Empfangen serieller Eingangsdatensignale und des
Empfangstaktsignals und-zum Erzeugen der die seriellen
Eingangsdatensignale repräsentierenden parallelen
Eingangsdatensignale;
- eine First-in-First-out-Empfangsregistereinrichtung zum
sukzessiven Empfangen der parallelen Eingangsdatensignale,
zum Speichern mehrerer der parallelen Eingangsdatensignale
und zum sukzessiven Aufgeben paralleler Empfangssignale auf
den internen Bus, wobei jedes der sukzessiven parallelen
Empfangssignale jeweils das am frühesten empfangene, in der
First-in-First-out-Empfangsregistereinrichtung existierende
parallele Eingangsdatensignal wiedergibt;
- wobei die First-in-First-out-Empfangsregistereinrichtung
zum Definieren einer Eingangsschwellenanzahl der parallelen
Eingangsdatensignale programmierbar ist, welche die mehreren
parallelen Eingangsdatensignale umfaßt;
- eine Sendetakt-Multiplexereinrichtung zum Empfangen des
synchronen Empfangstaktsignals und des asynchronen
Taktsignals und zum Erzeugen eines Sendetaktsignals in Reaktion
auf die Auswahl eines Asynchron/Synchron-Sendemodus;
- eine First-in-First-out-Sendeeinrichtung zum sukzessiven
Empfangen paralleler Ausgangsdatensignale von dem internen
Bus, zum Speichern mehrerer der parallelen
Ausgangsdatensignale und zum sukzessiven Anlegen paralleler Sendesignale
an einen FIFO-Senderegisterausgang, wobei jedes der
sukzessiven
parallelen Sendesignale jeweils das am frühesten
empfangene, in der
First-in-First-out-Empfangsregistereinrichtung existierende parallele Ausgangsdatensignal wiedergibt;
- wobei die First-in-First-out-Senderegistereinrichtung zum
Definieren einer Ausgangsschwellenanzahl der parallelen
Ausgangsdatensignale programmierbar ist, welche die mehreren
parallelen Ausgangsdatensignale umfaßt;
- eine Parallel-zu-Seriell-Sendeschieberegistereinrichtung
zum Empfangen des Sendetaktsignals und des parallelen
Sendesignals und zum Erzeugen der die parallelen Sendesignale
repräsentierenden seriellen Ausgangsdatensignale.
Kurzbeschreibung der Zeichnungen
-
Fig. 1 zeigt ein illustratives Beispiel eines
erfindungsgemäßen ISDN-Protokoll-Controllers (IDPC) in einem
Terminaladapter (TA).
-
Fig. 2 ist ein Blockschaltbild des erfindungsgemäßen IDPC
10.
-
Fig. 3 ist ein Funktionsblockschaltbild des IDPC 10 unter
besonderer Berücksichtigung des Zusammenhangs
zwischen dem DLC 52 und den übrigen Bereichen des
IDPC.
-
Fig. 4 ist ein Blockschaltbild des Senderbereichs des DLC
52 des IDPC 10.
-
Fig. 5 zeigt die Struktur des Sende-First-in-First-out
(FIFO) 100 des DLC 52.
-
Fig. 6 zeigt das Seriell-zu-Parallel-Schieberegister 110
des Senderbereichs 102 des DLC 52.
-
Fig. 7A zeigt den Aufbau der Null-Bit-Einsetz-Einheit 124
des Senders 102 des DLC 52.
-
Fig. 7B zeigt den Aufbau der
Flaggen/Abbruch-Einsetz-Einheit 134 des Senderbereichs 102 des DLC 52.
-
Fig. 8 ist ein Blockschaltbild des Senderbereichs des
Seriellbusports 104.
-
Fig. 9 zeigt die Zeitsteuerung des Senderbereichs des SBP
104.
-
Fig. 10 ist ein Blockschaltbild des Empfängerbereichs des
DLC 52 des IDPC 10.
-
Fig. 11 ist ein Blockschaltbild des Empfängerbereichs des
Seriellbusports 104 des DLC 52.
-
Fig. 12 zeigt die Zeitsteuerung des Empfängerbereichs des
SBP 104.
-
Fig. 13 ist ein Blockschaltbild der
Flaggen/Abbruch-Erkennungseinheit 214 des Empfängerbereichs 108 des DLC
52.
-
Fig. 14 ist ein Blockschaltbild der Null-Bit-Löscheinheit
des Elements 218 des DLC-Empfängers 108.
-
Fig. 15 ist ein Blockschaltbild des
Kurz-Rahmen-Bytezählers 260 des Elements 218 des DLC-Empfängers 108.
-
Fig. 16 ist ein Blockschaltbild des Seriell-zu-Parallel-
Schieberegisters 208 und 210 und des zugehörigen
Elements des DLC-Empfängers 108.
-
Fig. 17 ist ein Blockschaltbild der
Adressenerkennungseinheit 226 des DLC-Empfängers 108.
-
Fig. 18 zeigt den Aufbau des Empfangs-FIFO 106 innerhalb
des DLC 52.
-
Fig. 19 zeigt ein Zustandsdiagramm des Betriebs des
Senderbereichs 102 des DLC 52.
-
Fig. 20 zeigt ein Zustandsdiagramm des Betriebs des
Empfängerbereichs 108 des DLC 52.
-
Fig. 21 ist ein Funktionsblockschaltbild des in dem
erfindungsgemäßen IDPC 10 verwendeten UART 54.
-
Fig. 22 zeigt ein Blockschaltbild der
Paritätsprüfeinrichtung und der Spezialzeichenerkennungseinrichtung
412 des in dem IDPC 10 verwendeten UART 54.
-
Fig. 23 zeigt ein Blockschaltbild der Verbindung der
Dualport-Zeitsteuerungseinrichtung (DPTC) 56 des IDPC
10 der vorliegenden Erfindung mit einem
Host-Prozessor und einem lokalen Prozessor.
-
Fig. 24 ist ein Funktionsschaltbild der DPTC 56 des IDPC
10 der vorliegenden Erfindung.
-
Fig. 25 ist ein Zeitsteuerungsdiagramm des
Zeitsteuerungszusammenhangs zwischen den von der DPTC 56
empfangenen und anschließend erzeugten Steuersignalen.
-
Fig. 26 zeigt das von dem erfindungsgemäßen IDPC 10
verwendete Prozessorverbindungsunterbrechungsschema.
-
Fig. 27 ist ein Diagramm der Vier-Stufen-Vorrichtung mit
"Statusverzögerung", die für das
Empfangsrahmenstatus-
und Empfangsbytezählregister und das
Empfangsverbindungsadreßbitfeld des
Unterbrechungsquellenregisters des DLC 52 verwendet wird.
Detaillierte Beschreibung eines bevorzugten Ausführungsbeispiels
-
In Fig. 1 ist ein Beispiel für die Verwendung eines
integrierten Datenprotokoll-Controllers (IDPC) 10 in einem
Terminaladapter (TA) dargestellt. Eine digitale Teilnehmer-
Steuervorrichtung (DSC) 12, wie sie in der verwandten,
bereits genannten mitanhängigen US-Patentanmeldung 034 822,
eingereicht am 3. April, 1987, mit dem Titel "Digital
subscriber Controller", welche auf Anmelderin dieser Anmeldung
übertragen wurde und durch Bezugnahme Teil des Gegenstands
der vorliegenden Anmeldung ist, ist gemäß Fig. 1 durch einen
bidirektionalen Bus 14 mit dem IDPC 10 verbunden, d. h., der
Seriellport des DSC 12 ist mit einem Seriellbusport des IDPC
10 verbunden. (Das neben dem Bus 14 dargestellte
Bezugszeichen "4" gibt an, daß auf dem Bus vier Signale parallel
geleitet werden; diese Art der Kennzeichnung wird im
folgenden in den verschiedenen zur Beschreibung der Erfindung
verwendeten Zeichnungen verwendet.) Wie in der verwandten
mitanhängigen Anmeldung beschrieben, verbindet die DSC 12
den TA an einer "S"-Schnittstelle mit Netzwerk-Endgeräten
(NT). Die verschiedenen D- und B-Kanäle werden von dem
Telekommunikationsnetzwerk demultiplext und an den TA
weitergeleitet, und umgekehrt werden die getrennten B- und D-Kanäle
zum Senden über das Netzwerk multiplext. Ein bidirektionaler
Datenbus 16 verbindet die DSC 12 und den IDPC 10: der
Datenbus 16 leitet B- und D-Kanal-Informationen zwischen diesen
Elementen sowie zwischen einem Mikroprozessor 18, einem
Festwertspeicher (ROM) 20 und einem Direktzugriffsspeicher
(RAM) 22.
-
Der Mikroprozessor 18 erzeugt Adressensignale der
niederwertigeren Bytes, die (mit den Datensignalen zeitmultiplext)
ebenfalls auf dem Bus 16 zu einem Adreßzwischenspeicher 24
geleitet werden, und erzeugt Adressensignale der
höherwertigen Bytes, die über einen Bus 26 an den Zwischenspeicher 24
geleitet werden. Der Zwischenspeicher überträgt dieses
Adressensignal sodann über einen Bus 28 an den IDPC 10, die
DSC 12, den ROM 20 und den RAM 22. Die von dem
Mikroprozessor 18 erzeugten Takt- (CLK), Chipauswähl- (CP), Lese- (RD)
und Schreibsignale (WR) werden jeweils über Signalleitungen
30, 32a-d, 34 und 36 an den IDPC, die DSC, des ROM und den
RAM geleitet. Ein von dem Mikroprozessor 18 erzeugtes
Adreßzwischenspeicherfreigabesignal (ALE) wird über eine
Signalleitung 36 an einen Freigabeanschluß (E) des
Adreßzwischenspeichers geleitet. Die Bedeutung und die Funktion dieser
Signale ist dem Fachmann bekannt und wird hierin nicht im
einzelnen beschrieben.
-
Schließlich werden ein
Datenverbindungssteuerungseinrichtungsunterbrechungssignal (DLCINT) und ein
Universal-Asynchron-Empfänger-Sendereinrichtungs (UART)
-Unterbrechungssignal (UARTINT) über Signalleitungen 38 bzw. 40 vom IDPC 10
den Anschlüssen INT0 und INT1 des Mikroprozessors 18
geleitet. Ihre Bedeutung und ihre Funktion wird im folgenden
beschrieben.
-
Gemäß der Darstellung sind zwei Leitungstreiber 42 und 44
mit dem IDPC 10 verbunden, die jeweils
Vollduplex-Serielldatenübertragungs- und Empfangsfunktionen ermöglichen und
mit dem UART-Bereich des IDPC 10 gekoppelt sind. Es ist
erforderlich, verschiedene Steuersignale zwischen den in
Fig. 1 dargestellten Elementen zu leiten, wie dem Fachmann
verständlich, jedoch aus Gründen der Übersichtlichkeit nicht
dargestellt.
-
Der IDPC 10 wird durch interne Status- und Steuerregister
gesteuert, die durch auf dem mit dem IDPC 10 verbundenen
Mikroprozessor 18 ("lokaler Prozessor") laufende Software
ausgelesen und eingeschrieben werden. Die IDPC-Register sind
in den Speicher 20 oder 22 oder in Eingabe-/Ausgabegeräte
ausgebbar. Die IDPC-Register belegen einen Block von 64
Bytes in dem Adressenspeicherplatz des Mikroprozessors 18.
Die Startadresse dieses Blocks wird durch eine außerhalb des
IDPC 10 gelegene Adreßdekodierlogik bestimmt, die zur
Erzeugung des IDPC-Chipauswählsignals verwendet wird.
-
Bei Systemen mit mehr als einem Mikroprozessor (z. B. einem
PC mit einer FPU ("Host-Prozessor") und einem lokalen
Prozessor) kann nur der lokale Prozessor auf die IDPC-Register
zugreifen. Obwohl der IDPC Busarbitartionshardware enthält,
um die gemeinsame Nutzung des RAM 22 auf dem IDCP-externen
Bus 16 durch zwei Prozessoren zu ermöglichen, besteht keine
entsprechende eingebaute Arbitration, die es einem anderen
als dem lokalen Prozessor ermöglicht, auf die IDCP-Register
zuzugreifen. Gleichermaßen sieht der IDCP keinen Mechanismus
für den lokalen Prozessor vor, der diesem den Zugriff auf
nicht mit dem IDPC-externen Bus 16 verbundene Vorrichtungen
(einschließlich des Host-RAM) ermöglicht.
-
Ein "Host"-Prozessor kann die IDPC-Operation jedoch indirekt
steuern, indem er Anforderungen an den lokalen Prozessor 18
richtet. Dies wird durch Busarbitrations- (gemeinsame
Speichernutzung) und
Prozessorverbindungsunterbrechungseinrichtungen erreicht, die durch den IDPC 10 gespeist werden.
Eine Beschreibung dieser Anordnung folgt in Zusammenhang mit
Fig. 23.
-
Kurz gesagt, schreibt der Host-Prozessor einen Befehl (z. B.
"Sende Daten auf dem B-Kanal") und zugehörige Parameter über
den IDCP-externen Bus 16 in eine Gruppe
nebeneinanderliegender Speicherplätze des RAM 22. Dieser (als "Mailbox"
bezeichnete Bereich des RAM 22, unterscheidet sich nicht vom
Rest des RAM auf dem IDCP-externen Bus 16, mit der Ausnahme,
daß die Software des lokalen Prozessors 18 "weiß", daß
Befehle vom Host-Prozessor an diese bestimmte Adresse zu
setzen sind. Die Operation der IDPC-Busarbitration, die jedem
der Prozessoren den Zugriff zur Mailbox ermöglicht, ist
vollständig software-transparent. Der Host-Prozessor
verwendet die
IDPC-Prozessorverbindungsunterbrechungseinrichtung, um dem lokalen Prozessor mitzuteilen, daß in der
Mailbox ein Befehl vorliegt. Der lokale Prozessor teilt dem
Host-Prozessor Befehlsergebnisse und Zustände auf ähnliche
Weise mit, wobei er in vorab angeordnete Speicherstellen im
RAM auf dem IDPC-externen Bus schreibt und den
Host-Prozessor unter Verwendung der
IDPC-Prozessorverbindungsunterbrechungseinrichtung unterbricht.
-
Die vier internen Hauptelemente des IDPC 10 sind in Fig. 2
dargestellt, und umfassen das Mikroprozessor-Interface (MPI)
50, eine Datenverbindungssteuereinrichtung (DLC) 52, eine
universellen asynchronen Empfänger-Sendereinrichtung (UART)
54 und eine Dualport-Zeitsteuerungseinrichtung (DPTC) 56.
Eine Signalleitung 57 leitet das vom MPI 50 erzeugte
Taktsignal an die DLC 52, die UART 54 und die DPTC 56.
Bidirektionale Busse 58, 60 und 62 verbinden alle Hauptblöcke des IDPC
10, nämlich die DLC 52, die UART 54 und die DPTC 56. Der Bus
58 leitet von dem MPI 50 auf einer
6-Leiter-Adressensignalleitung empfangene Adressensignale. Der Bus 60 leitet vom
MPI 50 über eine 8-Leiter-Datensignalleitung empfangene
Datensignale. Der Bus 62 leitet Steuersignale, die von dem
MPI 50 in Reaktion auf den Empfang von Chipauswähl- (CS),
Schreib- (WR), Lesesignalen (RD) sowie
Bereitschafts-/Rücksetzsignalen (PD, RESET) erzeugt werden. Eine ausführlichere
Beschreibung der UART 54 und der DPTC 56, einschließlich der
verschiedenen in Fig. 2 dargestellten Signalleitungen,
erfolgt in Verbindung mit den Fig. 21-25.
-
Das MPI 50 verbindet die DLC 52 und die UART 54 mit dem
externen Mikroprozessor 18. Das Design und der Aufbau des
MPI 50 entspricht dem Herkömmlichen und ist dem Fachmann
verständlich. Daher wird hierin nicht näher darauf
eingegangen. Wie im folgenden dargestellt, weisen die DLC, die UART
und die DPTC Benutzerzugriffsregister auf. Das MPI 50
unterteilt einen 64 Byte Adreßplatz in einen 31 Byte UART-Platz,
einen 32 Byte DLC-Platz und einen 1-Byte-DPTC-Platz. Die
Adreßdekodierung der einzelnen Plätze erfolgt intern in der
UART, der DLC und der DPTC. Der 64 Byte-Speicherplatz ist
wie folgt zugewiesen:
-
ADRESSE VERWENDUNG
-
00-31 DLC 52
-
32-62 UART 54
-
63 DPTC 56
-
Der DLC-Bereich 52 des IDPC 10 hat die Aufgabe, ein
Vollduplexinterface (gleichzeitiges Senden und Empfangen)
zwischen dem Seriellbusport (SBP) und drei internen parallelen
Bussen 58, 60 und 62 des IDPC zu bilden. Durch Verwendung
separater 16-Byte-Empfangs und -Sende-First-in-First-out-
Puffer FIFO und zweier externer Direktspeicherzugriffsignale
(DMA), bewirkt die DLC 52 die Bewegung von Daten zu und aus
dem externen Speicher 20 und 22 und dem SBP. Die DLC führt
bitorientierte Protokollverarbeitungen niederer Ordnung (ISO
layer 2-) dieser Daten durch. Die wichtigsten unterstützten
Protokolle sind SDLC, HDLC, LAPB (X.25) und LAPD.
-
Fig. 3 zeigt ein Funktionsblockschaltbild des IDPC 10 unter
besonderer Berücksichtigung der Hauptfunktionsblöcke der DLC
52. Wie dargestellt, verbindet das MPI 50 die externen
Daten- und Adreßbusse 16 und 28 (Fig. 1) sowie die
Steuerleitungen 30, 32a, 34, 36 und 38 mit den internen Bussen 58, 60
und 62 (Fig. 2). Die Bereiche DTPC 56 und UART 54 des IDPC
10 sind mit den Bussen 58, 60 und 62 verbunden. Der Bereich
DLC 52 des IDPC 10 weist gemäß der Darstellung in Fig. 3
fünf Hauptfunktionsblöcke auf. Ein Sende-First-in-First-out-
Register (XMIT FIFO) 100 ist mit den internen Bussen 58, 60
und 62 verbunden. Ein Sender 102 ist mit XMIT FIFO 100 und
den internen Bussen 58, 60 und 62 sowie mit dem
Seriellbusport (SBP) 104 verbunden. Ein Empfangs-First-in-First-out-
Register (RECV FIFO) 106 ist mit den internen Bussen 58, 60
und 62 verbunden. Ein Empfänger 108 ist mit RECV FIFO 106,
den internen Bussen 58, 60 und 62 und dem SBP 104 verbunden.
Der Sender 102 und der Empfänger 108 weisen jeweils Status-,
Befehls- und Steuerregister auf. Sämtliche programmierbaren
Register und ein Datenregister genannter Bereich der FIFOS
sind über die Busse 58, 60 und 62 zugänglich. Diese Register
werden direkt in dem Speicherplatz Mikroprozessors 18
abgebildet und werden später im einzelnen beschrieben.
-
Der Seriellbusport (SBP) 104 empfängt ein serielles
Taktsignal (SCLK), eine serielle Rahmensynchronisierung (SFS), die
mit einem Sendetakt (XMITCLK) zeitmultiplext ist, und
erzeugt ein Seriellbusausgangssignal (SBOUT). Die Beschreibung
der Funktionsweise der Sender- und Empfängerbereiche der DLC
52 erfordert das Verstehen von bitorientierten Protokollen
(BOP), wie SDLC, HDLC, IJAPB (X.25) und LAPD.
-
Bitorientierte Protokolle schaffen eine Anzahl von Regeln
und Verfahren, die das Übertragen von Daten über ein
Übertragungsnetzwerk vereinfachen. Die folgende Erörterung
betrifft nicht die Verarbeitung nach den oberen Leveln der
Protokolle-Sequenzzahlen, Bestätigungen und dergleichen -
da diese in den Bereich der Software des lokalen Prozessors
18 fallen. Die vorliegende Beschreibung konzentriert sich
auf die Beschreibung der Protokolle, die die Hardware der
DLC 52 beeinflussen.
-
Die BOPs erfordern das Senden von Daten in Paketen. Pakete
sind durch charakteristische Flaggenzeichen begrenzt und
enthalten eine Adresse, einige Steuerinformationen, die
Daten selbst und einen Fehlererkennungscode. Die Adresse
identifiziert den Sender oder den Empfänger der Daten. Die
Steuerinformationen werden von höheren Ebenen des Protokolls
zum Handhaben des Datenstroms verwendet. Die in dem
Informationsfeld enthaltenen Daten sind Benutzerinformationen. Zur
Protokollsteuerung verwendete Pakete verzichten oft auf das
Informationsfeld (welches das einzige optionale Feld ist).
Der Fehlererkennungscode ist eine zyklische Redundanzprüfung
(CRC) und die DLC 52 verwendet den CCITT-CRC-Code.
Zusätzlich zu Adressen, Steuerung, Daten und Fehlerprüfung,
verwenden die BOPs Mechanismen wie Flaggen, das Einsetzen von
Bits und Abbruchzeichen. Der folgende Abschnitt ist ein
Glossar der BOP-Termini und -Funktionen. Diese Ausdrücke
werden in der gesamten Beschreibung der DLC 52 verwendet.
-
In der bitorientierten Protokoll-Betriebsart werden Daten in
Rastern übertragen. Protokolle wie SDLC, HDLC, LAPB (X.25)
und LAPD haben dasselbe Grundformat:
RASTER FLAGGE ADRESSE STEUERUNG INFO PRÜFUNG FLAGGE (OPTIONAL) SEQUENZ Bytes
-
Das Acht-Bit-Flaggenzeichen ist bei allen genannten
Protokollen identisch. Es beträgt exakt 01111110. Sein Bitmuster
ist in einem Paket charakteristisch, da das verwendete
(später beschriebene) Verfahren des "Bit-Einsetzens" das
Vorhandensein von sechs aufeinanderfolgenden EINSen im
Paketbereich eines Rahmens nicht zuläßt. Das Flaggenzeichen kann
drei Funktionen erfüllen: es kann als Eröffnungsflagge, als
Schlußflagge oder als Füllzeichen zwischen Paketen dienen.
-
Die Eröffnungsflagge ist die letzte (vielleicht einzige)
Flagge vor einem Nicht-Flaggen-/Nicht-Abbruch-Zeichen. (Das
Abbruch-Zeichen wird später beschrieben.) Sämtliche gültigen
Pakete müssen mit einer Flagge beginnen. Die
Eröffnungsflagge zeigt den Beginn eines Pakets an. Wenn Flaggen als
Füllzeichen zwischen Rastern verwendet werden, muß ein Nicht-
Flaggen-/Nicht-Abbruch-Zeichen empfangen werden, bevor die
vorhergehende Flagge als Eröffnungsflagge identifiziert
werden kann.
-
Der Hauptunterschied zwischen den unteren Ebenen der
verschiedenen BOPs ist das Adreßfeld. Die Länge aller Adressen
beträgt eine ganzzahlige Anzahl von Bytes. Allgemein
ausgedrückt kann eine Adresse ein, zwei oder N Bytes lang sein.
-
Die Länge einer N Bytes langen Adresse ist durch den Wert
des geringstwertigen Bits jedes Bytes der Adresse bestimmt.
Dieses erweitertes Adreßbit (EA) genannte Bit identifiziert
das letzte Byte der Adresse. Sämtliche Bytes einer N Byte
langen Adresse weisen ein auf NULL gelöschtes EA-Bit auf,
ausgenommen das letzte Byte der Adresse. Das Vorhandensein
eines auf EINS gesetzten EA-Bits gibt an, daß das Byte das
letzte Byte der Adresse ist. Die Länge des Adreßfeldes
beeinflußt die Erkennung eines Kurzrahmens.
-
Bei einigen Protokollen wird das zweite Bit (Bit 1) des
ersten Bytes der Adresse verwendet, um anzugeben, ob das
Raster ein Befehl oder eine Antwort ist. Dieses
Befehl-/Antwortbit (C/R) genannte Bit kann entweder eine eins oder eine
NULL sein, ohne die Adresse ungültig zu machen.
-
Das Steuerfeld folgt unmittelbar auf das Adreßfeld. Die DLC
52 behandelt das Steuerfeld als Paketdaten. Das heißt, die
DLC wird nicht in Reaktion auf den Inhalt des Steuerfeldes
aktiv. Das Steuerfeld kann entweder ein oder zwei Bytes lang
sein. Die Länge des Steuerfeldes wirkt sich auf die
Erkennung eines Kurzrahmens aus.
-
Das Informationsfeld, wenn es vorhanden ist, folgt auf das
Steuerfeld und geht der Rahmenprüfsequenz voraus. Das
Informationsfeld enthält die Daten, die zwischen Benutzern
übertragen werden. Das Informationsfeld enthält eine ganzzahlige
Anzahl von Bytes und kann beim IDPC 10 bis zu 64 K-Bytes
lang sein (abzüglich der Adreß- und Steuerlänge).
-
Die Rahmenprüfsequenz (FCS) ist ein 16-Bit-Wort, das von
einem CRC-Generator erstellt und von einer
CRC-Prüfeinrichtung geprüft wird. Mathematisch ist es-das EINER-Komplement
der Summe [Modulo 2] des Folgenden:
-
Der Rest aus XK [X¹&sup5; + X¹&sup4; + X¹³ + . . . + X² + X + 1] geteilt
[Modulo 2] durch den polynomischen Generator X¹&sup6; + X¹² + X&sup5; +
1, wobei K die Zahl der Bits im Rahmen zwischen, jedoch
ausschließlich, dem letzten Bit der Eröffnungsflagge und dem
ersten Bit der FCS ist, wobei aus Gründen der Transparenz
eingefügte Bits ausgeschlossen sind.
-
-UND-
Der Rest nach der Multiplikation mit X¹&sup6; und dem Teilen
[Modulo 2] durch den polynomischen Generator X¹&sup6; + X¹² + X&sup5; + 1
des Inhalts des Rahmens zwischen, jedoch ausschließlich, dem
letzten Bit der Eröffnungsflagge und dem ersten Bit der FCS
ist, wobei aus Gründen der Transparenz eingefügte Bits
ausgeschlossen sind.
-
Die Schlußflagge ist das letzte Feld in dem Rahmen. Sie
zeigt das Ende des Rahmens an und gibt an, daß die FCS zu
prüfen ist.
-
Ein Paket ist ein Rahmen abzüglich der Eröffnungs- und der
Schlußflagge.
-
Wenn keine Rahmen über die von der DLC 52 geschaffene
Verbindung übertragen werden, wird die Verbindung als im
Bereitschaftszustand befindlich bezeichnet. Befindet sich die
Verbindung im Bereitschaftszustand kann der DLC-Sender 102
durch den Mikroprozessor 18 zum Senden eines
Nur-EINS-Musters programmiert werden. Dies wird als
Bereitschaft-Markierungszustand (MI) bezeichnet. Ein MI ist als wenigstens
15 aufeinanderfolgende EINSen definiert.
-
Vor und zwischen Rastern können inverse Flaggen über die
Verbindung übertragen werden. Dies wird als
Flaggen-Bereitschaftszustand (FI) bezeichnet und wird von der
Programmsteuerung des Mikroprozessors 18 gewählt.
-
Der DLC-Empfänger 108 wird als im Rahmen liegend bezeichnet,
wenn er freigegeben ist und das erste Nicht-Flaggen-/Nicht-
Abbruchzeichen nach dem Empfang wenigstens einer Flagge
empfangen wird. Der Im-Rahmen-Zustand ist gültig, bis die
Schlußflagge erkannt, ein Abbruchzeichen empfangen oder ein
Fehler erkannt wird. Der DLC-Sender 102 ist im Rahmen, von
dem Zeitpunkt, an dem er beginnt, eine Eröffnungsflagge zu
senden, bis zu dem Zeitpunkt, zu dem das letzte Bit der
Schlußflagge gesendet ist, vorausgesetzt, der Sender erhält
nicht den Befehl, eine Abbruchsequenz zu senden.
-
Der DLC-Empfänger 108 oder -Sender 102 gilt immer dann als
außerhalb des Rahmens befindlich, wenn er freigegeben und
nicht im Rahmen ist.
-
Jedes Muster aus wenigstens sieben aufeinanderfolgenden
EINS-Bits gilt als Abbruchzeichen. Ein Abbruchzeichen ist
eine physikalische Einheit, die nicht mit dem Abbruchzustand
zu verwechseln ist, bei dem es sich um einen Vorgang
handelt. Der Abbruchzustand, einfach Abbruch genannt, wird im
folgenden beschrieben. Es ist wichtig, darauf hinzuweisen,
daß ein geringfügiger Unterschied zwischen einem
Abbruchzeichen
und einem Bereitschaftsmarkierungszustand besteht.
Inverse Abbruchzeichen bilden nicht notwendigerweise einen
Bereitschaftsmarkierungszustand. Ein sich wiederholendes
Muster von sieben EINSen gefolgt von einer NULL (1111111011-
11111011111110 . . . ) ist eine Abfolge von Abbruchzeichen,
jedoch keine Bereitschaftsmarkierung. Wenn der Mikroprozessor
18 den Befehl zum Senden eines Abbruchs gibt, sendet die DLC
wenigstens ein "01111111".
-
Der Abbruchzustand ist ein Vorgang, der in Reaktion auf das
Erkennen eines Abbruchzeichens, bei im Rahmen befindlichem
DLC-Empfänger 108 stattfindet. Ein Abbruch bewirkt das
Beenden und Verwerfen des Pakets, das gerade empfangen wird.
Abbrüche sind insofern asynchrone Ereignisse, daß sie sowohl
an Bit-Grenzen als auch an Byte-Grenzen erkennbar sind.
-
Das oft als "Bit-Stuffing" bezeichnete Null-Bit-Einsetzen/-
Löschen ist ein Verfahren, das zur Schaffung von
Datentransparenz verwendet wird. Hiermit ist ein Verfahren gemeint,
durch das Paketdatenmuster daran gehindert werden, als
Flaggen, Abbrüche, oder Bereitschaftsmarkierungen aufzutreten,
wenn sie im Empfangsdatenstrom erscheinen. Flaggen, Abbrüche
und der Bereitschaftsmarkierungszustand bestehen sämtlich
aus sechs oder mehr aufeinanderfolgenden EINS-Bits. Das Bit-
Stuffing-Verfahren prüft den Inhalt eines von dem Sender 102
zu übertragenden Pakets auf einer Bit-für-Bit-Basis (vom
ersten Bit nach der Eröffnungsflagge bis zum letzten Bit des
FCS) und fügt eine NULL in den Bitstrom nach jedem Muster
aus fünf aufeinanderfolgenden EINSen ein, wodurch
sichergestellt ist, daß nicht sechs oder mehr EINSen im Datenstrom
erscheinen. Der Empfänger 108 untersucht seinerseits den
Datenstrom und entfernt die eingesetzten NULLen, die fünf
aufeinanderfolgenden EINS-Bits folgen. Dies impliziert, daß
auf der Netzwerkseite der Null-Einsetz- und -Löscheinheiten
eine Flaggen-, Abbruch- und
Bereitschaftsmarkierungserzeugung und- erkennung stattfinden muß.
-
Die BOPs geben Mindestlängen für gültige Pakete an. Diese
betragen üblicherweise vier, fünf oder sechs Bytes. Jedes
Raster, das mit weniger als dieser zulässigen Mindestzahl
von Bytes in dem Paket empfangen wird, wird als Kurzrahmen
bezeichnet und als zu verwerfender Fehler angesehen.
-
Theoretisch kann ein Rahmen jede Länge aufweisen, die größer
als das angegebene Minimum ist. Aus praktischen Gründen muß
jedoch eine maximale Paketlänge vorgegeben werden, um ein
Überlaufen der FIFO-Puffer 100 und 106 zu verhindern. Diese
Länge ist dynamisch und kann von Datenabruf zu Datenabruf
variieren. Jedes empfangene Raster, dessen Paket diese
maximale Länge überschreitet, wird als Langrahmen bezeichnet und
als Fehler angesehen. Die Erkennung eines Langrahmenfehlers
erfolgt, sobald die maximale zulässige Zahl von Bytes
überschritten wird, nicht wenn das gesamte Raster empfangen
wurde.
-
Wenn eine Schlußflagge erkannt wird und eine nicht
ganzzahlige Anzahl von Bytes empfangen wurde (d. h., daß das der
Flagge vorausgehende Zeichen weniger als acht Bits
beinhaltete), ist ein Nicht-Ganzzahlige-Bytezahl-Fehlerzustand
gegeben.
-
Die Bytes werden in auf steigender numerischer Ordnung
übertragen; innerhalb eines Bytes wird das geringstwertige Bit
(Bit 0) zuerst übertragen. Die FCS wird jedoch in zu dieser
Konvention umgekehrter Richtung numeriert und übertragen.
-
Wie in Fig. 3 dargestellt, liegen die Senderbereiche 100 und
102 der DLC 52 zwischen dem Off-Chip-Speicher 22 und dem
Seriellport 104 zum Datenübertragungsnetzwerk. Der unter
Software-Steuerung stehende Mikroprozessor 18 errichtet
einen Datenblock im Speicher 22, der die Adreß-, Steuer- und
informationsbereiche eines Pakets beinhaltet. Dieser
Datenblock wird byte-weise entweder über die DMA oder einen
programmierten I/O in den Sende-FIFO 100 bewegt. Der Sender 102
sendet die Eröffnungsflagge, überträgt den Datenblock,
erzeugt und sendet die FCS (falls gewählt) und sendet die
Schlußflagge. Die Polarität des Datenstroms kann, falls
gewünscht, während des Übertragens invertiert werden.
Zwischen Paketen kann der Sender 100 zur Ausgabe eines
ausschließlich aus EINSen bestehenden Musters
(Bereitschaftsmarkierung) oder von inversen Flaggen (Flaggenbereitschaft)
programmiert werden. Die Übertragung eines Pakets kann durch
Senden einer Abbruchsequenz in Reaktion auf das im
Befehls/Steuerregister gesetzte Sendeabbruchsbit (Bit 0)
abgebrochen werden.
-
In Fig. 4 ist ein Blockschaltbild der Senderabschnitte 100
und 102 der DLC 52 dargestellt, welches die Verbindung der
internen Busse 58, 60 und 62 und eines Parallel-zu-Seriell-
Schieberegisters 110 durch das 16 Byte XMIT FIFO 100 zeigt.
Die Status- und Steuerregister 112 in dem Sender 102 sind
mit den Bussen 58, 60 und 62 verbunden. Steuersignale werden
zu und von den verschiedenen Elementen des Senders 102 und
der Status- und Steuerregister 112 auf in Fig. 4 nicht
dargestellten Leitungen geleitet. Der Anhang A enthält eine
vollständige Beschreibung des DLC-Status- und
Steuerregisters.
-
Die von dem Schieberegister 110 erzeugten Datensignale
werden über die Leitung 114 einem 2 : 1-Multiplexer (MUX) 116
zugeführt, der über die Signalleitung 118 und über einen
invertierenden Verstärker 122 ferner Signale empfängt, die
von einem Generator 120 für einen zyklischen Redundanzcode
(CRC) erzeugt werden. Der CRC-Generator 120 empfängt die von
dem Schieberegister 110 erzeugten Datensignale auf der
Leitung 114. Die von dem 2 : 1-Multiplexer gewählten Signale
werden einer Null-Bit-Einsetzeinheit 124 über eine
Signalleitung 126 zugeführt. Die Null-Bit-Einsetzeinheit 124
erzeugt Schiebetaktsignale, die dem Schieberegister 110 und
dem CRC-Generator 120 über eine Signalleitung 128 zugeführt
werden.
-
Ein 2 : 1-Multiplexer (MUX) 130 empfängt die von der Null-Bit-
Einsetzeinheit 124 erzeugten Signale über die Signalleitung
132 und empfängt ein von einem Flaggen-/Abbruchgenerator 134
erzeugtes Signal über die Signalleitung 136. Das von dem
2 : 1-MUX 130 gewählte Signal wird über die Signalleitung 138
dem Seriellbusport 104 zugeführt. Der SBP 104 erzeugt
Zeitsteuerungssignale, die über die Signalleitung 140 zur Null-
Bit-Einsetzeinheit 124 und zum Flaggen-/Abbruchgenerator 134
geleitet werden.
-
Die Hauptelemente der Sender 100 und 102, die in Fig. 4 in
Blockform dargestellt sind, werden in Verbindung mit den
Fig. 5-9 genauer beschrieben. Wie in Fig. 5 dargestellt,
besteht das Sende-FIFO 100 aus einem FIFO-Puffer 150, einem
Sendebytezählregister 152, einem Sendebytezähler 154, einer
DMA-Datenanforderungserzeugungslogik 156 und einer
Schwellenwertvergleichslogik 158.
-
Das Sendebytezählerregister 152 ist ein
Schreib-/Leseregister und ist mit den internen Bussen 58, 60 und 62 verbunden
und empfängt ein von dem FIFO-Puffer 150 erzeugtes LOAD-
Signal ,über die Signalleitung 162. Es empfängt ferner ein
vom Flaggen-/Abbruchgenerator 134 erzeugtes
SEND-ABORT-Signal über die Signalleitung 164. Der Sendebytezähler 154
empfängt ebenfalls die Signale LOAD und SEND ABORT und ist
mit dem Register 152 über einen Bus 166 verbunden. Der
Zähler 154 empfängt ein von dem FIFO-Puffer 150 erzeugtes
Signal COUNT über die Signalleitung 168 und ein von dem Zähler
154 erzeugtes Signal SET TAG wird dem FIFO-Puffer 150 über
die Signalleitung 170 zugeführt. Ein Sendebytezähler-gleich-
Null-Signal (TBC = 0), das vom Zähler 154 erzeugt wird, wird
der Datenanforderungserzeugungslogik 156 über die Leitung
170 zugeführt und ein von dem Schwellenwertvergleichslogik
158 erzeugtes, das Erreichen des Schwellenwerts anzeigendes
Signal (THLD RCHD) wird der Logik 156 über die Leitung 172
zugeführt. Die Logik 158 ist mit dem FIFO-Puffer 150 über
die Signalleitung 174 und ebenfalls mit den internen Bussen
58, 60 und 62 verbunden.
-
Der FIFO-Puffer 150 ist 16 Bytes tief und 9 Bytes breit (8
Datenbits und ein Markierungsbit, das das "letzte Byte eines
Sendepakets" anzeigt). Daten werden am Boden, des als FIFO-
Datenregisters 160 bezeichneten und vom Mikroprozessor 18
programmierten Puffers über I/O oder DMA geladen. Daten
werden von dort zum höchsten ungefüllten Speicherplatz des
FIFO 150 mit einer vom Mikroprozessor 18 gelieferten
Taktrate bewegt.
-
Daten werden aus dem Puffer durch das Parallel-zu-Seriell-
Schieberegister 110 entnommen. Sowohl der Lade- als auch der
Entnahmevorgang sind asynchron zum Mikroprozessortakt. Der
Puffer 150 wird bei RESET gelöscht oder wenn ein Abbruch
gesendet wird. Mit dem Puffer 150 ist ein Signal verbunden,
das das Erreichen des Schwellenwerts angibt und von der
Schwellenwertvergleichslogik 158 erzeugt wird. Dieses Signal
ist immer dann aktiv, wenn die Zahl der Bytes in einem
Puffer den gleich dem oder geringer als der in einem FIFO-
Schwellenwertregister innerhalb der Status- und
Steuerregister 112 gespeicherter Schwellenwert ist. Das das
Erreichen des Schwellenwerts angebende Signal wird der
Datenanforderungserzeugungslogik 156 als Anzeige dafür zugeleitet,
daß der Puffer 150 neu geladen werden sollte. Das das
Erreichen des Schwellenwerts angebende Signal wird im Bit 2 in
dem FIFO-Statusregister gelistet. Die
Datenanforderungserzeugungslogik 156 erzeugt ein Datenanforderung-Eins(DRQ1)-
Unterbrechungssignal, wenn das Level im FIFO-Puffer 150 auf
das Schwellenlevel sinkt. DRQ1 wird einem externen Anschluß
des IDPC 10 zugeführt.
-
Ein für den Benutzer zugänglicher Speicherplatz des FIFO-
Puffers 150 ist als Datenregister 160 bezeichnet. Der Puffer
150 erzeugt ein Statussignal, das angibt, ob das
Datenregister leer (verfügbar) ist oder nicht. Dieses
Puffer-Verfügbar-Signal ist im Bit 3 des Sende-FIFO-Statusregisters
(Anhang A) aufgelistet. Das Bit wird immer dann gesetzt, wenn
das Datenregister leer ist, und wird gelöscht, wenn in das
Datenregister eingeschrieben wurde UND der
Pufferspeicherplatz direkt über dem Datenregister voll ist. Diese letzte
Voraussetzung für das Löschen des Puffer-Verfügbar-Bits
verhindert das Löschen des Bits, wobei es rückgesetzt wird,
wenn das Datenregister beim nächsten Taktzyklus geleert
wird.
-
Wenn das Parallel-zu-Seriell-Schieberegister 110 versucht,
ein Bit aus einem leeren Puffer zu entnehmen, besteht ein
Unterlaufzustand. Dies bewirkt, daß ein Fehler über das Bit
4 des Sende-FIFO-Statusregisters angezeigt wird. Durch das
Setzen dieses Bits wird eine maskierbare Unterbrechung
erzeugt. In Reaktion auf den Unterlauf wird an anderer Stelle
in der DLC 52 ein Abbruch erzeugt. Dies bewirkt ein
Rücksetzen des Sendebytezählregisters 152 und des Sendebytezählers
154 auf NULL sowie ein Löschen des FIFO-puffers 150.
-
Das Sendebytezählregister (TBCR) 152 hält die Länge des zu
sendenden Pakets (ausschließlich der Eröffnungsflagge, der
FCS und der Schlußflagge). Dieser Wert wird durch die
Software des Mikroprozessors 18 über die internen Busse 58, 60
und 62 in das TBCR 152 geladen. Das TBCR 152 wird gelöscht,
wenn die DLC 52 rückgesetzt oder ein Abbruch übertragen
wird. Wenn der DLC-Sender 102 außerhalb des Rahmens ist,
wird der Inhalt des TBCR zur selben Zeit, in der er in das
TBCR eingeschrieben wird, in den Sendebytezähler 154
geladen. Der Inhalt des TBCR wird ebenfalls in den
Sendebytezähler geladen, wenn das (als solches markierte) letzte Byte
eines Pakets aus dem FIFO-Puffer 150 entfernt wird. (Dies
stellt ebenfalls sicher, daß der korrekte Wert in den TBC
geladen wird, wenn das TBCR aufdatiert wird, wenn der Sender
im Rahmen ist). Das Laden des TBCR wird verzögert, wenn zu
diesem Zeitpunkt in das TBCR eingeschrieben wird.
-
Der Sendebytezähler (TBC) 154 dient zum Zählen der Anzahl
von Bytes, die für ein bestimmtes Paket in den Puffer 150
geladen werden. Der TBC 154 wird vom Sendebytezählregister
TBCR her geladen und-für jedes in den Puffer geladene Byte
einmal dekrementiert. Wenn der Inhalt des TBC 154 NULL
erreicht, wird das Byte, das das Erreichen von NULL im TBC
bewirkt hat, als das letzte Byte des Pakets markiert. Diese
Markierung wird durch Setzen der neunten Bitposition dieses
Bytes auf EINS erzeugt. Es sei daran erinnert, daß der
Puffer 159 neun Bits breit ist. Die neunte Bitposition dient
zum Halten dieser Markierung, die mit dem letzten Datenbyte
durch den Puffer läuft. Die Markierung dient zum Laden des
TBC vom TBCR, und zeigt der DLC das Ende eines Pakets an.
-
Die Datenanforderungserzeugungslogik 156 erzeugt das
Datenanforderungssignal (DRQ1). Im aktiven Zustand gibt DRQ1 der
DMA an, daß der Puffer 150 zum Laden von Daten verfügbar
ist. Das DRQ1-Signal wird aktiviert, wenn der TBC 154 nicht
NULL ist -UND- der FIFO-Puffer 150 kein markiertes Byte
enthält -UND- der Stand in dem Puffer 150 unter der
programmierten Schwelle (Bits 3-0 des FIFO-Schwellenregisters)
liegt. DRQ1 bleibt aktiv, bis das Signal TBC = 0 erzeugt wird
-ODER- der Puffer 150 voll wird. Wenn der Stand des Puffers
auf den Schwellenwert fällt und mehr Daten des Pakets in den
Puffer zu laden sind, wird DRQ1 aktiv. DRQ1 bleibt aktiv,
bis der Puffer vollständig gefüllt oder das letzte Byte des
Pakets in den Puffer geladen ist. Dies stellt sicher, daß zu
keiner Zeit Daten aus mehr als einem Paket in einem Puffer
sein können, da DRQ1 selbst wenn in das TBCR 152
eingeschrieben wird, bevor das letzte Byte des Pakets übertragen
wurde, inaktiv bleibt, bis das markierte Byte aus dem Puffer
entfernt ist. DRQ1 wird indirekt durch RESET inaktiviert, da
der TBC 154 bei RESET auf NULL gelöscht wird. DRQ1 wird in
diesem Fall aktiv sobald in das TBCR 152 eingeschrieben wird
(nicht NULL).
-
Wie in Fig. 6 dargestellt, werden Daten byte-weise aus dem
Sende-FIFO 100 zum Acht-Bit-Schieberegister 110 geleitet.
Jedes Byte wird durch den Empfang des von der
Null-Bit-Einsetzeinheit 124 gelieferten Schiebetakts seriell aus dem
Schieberegister 110 geschoben. Die von-dem Schieberegister
erzeugten Signale werden dem CRC-Generator 120 und dem 2 : 1-
Multiplexer 116 zugeführt.
-
Das Schieberegister 110 ist für das Erzeugen der
Ladesteuersignale verantwortlich, die das Bewegen der Daten aus dem
FIFO-Puffer 150 in das Schieberegister 110 bewirken. Das
erste Laden wird automatisch nach einem IDPC- oder DLC-RE-
SET, oder nachdem das (als solches gekennzeichnete) letzte
Byte eines Rahmens das Schieberegister 110 verlassen hat,
freigegeben. Das Laden erfolgt sobald ein Datenbyte den
oberen Bereich des FIFO-Puffers erreicht. Danach versucht
das Schieberegister 110 sich selbst alle acht
Schiebetaktzyklen zu laden, wobei es den durch acht teilenden Zähler 110a
verwendet, der ein dem Register 110 zugeführtes LOAD-Signal
erzeugt, bis das letzte Byte des Pakets geladen wurde.
-
Der Zähler 110a wird auf RESET gehalten, wenn die DLC sich
im RESET-Zustand befindet, der Sender in Bereitschaft ist,
ein Abbruch, eine Flagge oder die FCS übertragen wird. Wenn
das erste Byte eines Pakets den oberen Bereich des FIFO-
Puffers 150 erreicht, wird es automatisch in das
Schieberegister 110 geladen. Dieser Vorgang zeigt der
Null-Bit-Einsetzeinheit 124 an, daß der Schiebetakt zum Schieberegister
durchgelassen und die RE SET-Steuerung aus dem durch acht
teilenden Zähler 110a entfernt werden soll.
-
Daten werden bei der Abfallflanke des Schiebetakts aus dem
Schieberegister 110 geschoben. Der Schiebetakt wird von der
Null-Bit-Einsetzeinheit 124 erzeugt und läuft ungefähr mit
der Datenrate des Senders: die Null-Bit-Einsetzeinheit
vergrößert die Länge des Schiebetaktzyklus, der auf fünf
aufeinanderfolgende EINS-Bits folgt, um eine volle Bit-Zeit.
Dies ermöglicht das Einsetzen einer NULL in den Datenstrom
(das Einfügen findet nach dem
Seriell-zu-Parallel-Schieberegister 110 statt). Mit Ausnahme der Veränderung des
Arbeitszyklus eines gelegentlichen Schiebetaktzyklus, hat der Null-
Einsetzvorgang keine Auswirkung auf die Operation des
Schieberegisters 110. Der Schiebetakt ist synchron zu dem
Sendertakt (XMITCLK). Schiebt der Sender 102 keine Daten aus dem
Schieberegister hinaus (d. h. wenn der Sender entweder im
RESET- oder im Bereitschaftsmodus ist, eine Flagge, einen
Abbruch oder die FCS sendet), wird der Schiebetakt an der
Null-Bit-Einsetzeinheit blockiert.
-
Das Schieberegister wird durch ein RE SET oder einen Abbruch
gelöscht.
-
Wie in Fig. 4 dargestellt, erzeugt der CRC-Generator 120 ein
16-Bit-Wort, das als Rahmenprüfsequenz (FCS) bezeichnet
wird. Die diesen Vorgang beschreibende mathematische Formel
wurde zuvor beschrieben. Das Design und der Aufbau des CRC-
Generators 120 sind dem Fachmann bekannt und werden hierin
nicht weiter erläutert.
-
Die von dem Parallel-zu-Seriell-Schieberegister 110 und dem
CRC-Generator 120 erzeugten Signale werden der Null-Bit-
Einsetzeinheit 124 über den 2 : 1-Multiplexer 116 zugeführt.
Während des Datenbereichss eines Pakets, wobei das Adreß-,
das Steuerungs- und das Informationsfeld als die "Daten"
bezeichnet werden, gibt der Multiplexer 116 Daten vom
Schieberegister 110 weiter. Nachdem das letzte Bit des
Datenbereichs des Pakets aus dem Schieberegister 110 geschoben
wurde, wird die FCS aus dem CRC-Generator 120 bewegt, wenn
der CRC-Generator freigegeben ist.
-
Ein Steuersignal für den 2 : 1-MUX 116 veranlaßt den 2 : 1-MUX
116 den Datenpfad vom Parallel-zu-Seriell-Schieberegister
110 zu wählen, außer wenn gerade die FCS übertragen wird.
-
Um die Datentransparenz zu wahren, untersucht der DLC-Sender
102 des Rahmeninhalt zwischen der Eröffnungs- und der
Schlußflagge (einschließlich des Adreß-, des Steuerungs-,
des Informations- und des FCS-Felds) und veranlaßt die Null-
Bit-Einsetzeinheit 124, ein NULL-Bit nach allen Sequenzen
aus fünf aufeinanderfolgenden EINSen einzufügen. Dies
geschieht, um sicherzustellen, daß die Flaggen- und
Abbruchssequenzen nicht im Datenstrom simuliert werden. Zusätzlich
erzeugt die Null-Bit-Einsetzeinheit 124 den Schiebetakt, der
von dem parallel-zu-Seriell-Schieberegister 110, dem CRC-
Generator 120 und einem (nicht dargestellten)
MUX-Steuersignalgenerator verwendet wird. Wie in Fig. 7A dargestellt,
besteht die Null-Bit-Einsetzeinheit 124 aus einem Drei-Bit-
Zähler 176 und zugehöriger Logik.
-
Der Drei-Bit-Zähler 176 empfängt an einem
Zählfreigabeeingang den von dem 2 : 1-MUX 116 erzeugten Datenstrom auf der
Signalleitung 126. Das Sendetaktsignal (XMIT CLOCK) wird dem
Zähler 176 und einer Taktdehnschaltung 178 zugeführt. Das
sich ergebende Zählersignal wird von dem Zähler 176 auf der
Signalleitung 180 erzeugt, die das Signal zum Taktdehner
178, einem Eingang eines UND-Gatters 182 und einem
Komplementeingang eines ODER-Gatters 184 leitet. Das UND-Gatter
182 empfängt ferner den Datenstrom auf einer Signalleitung
126, wie das ODER-Gatter 184 den Datenstrom an einem
Komplement-Eingang empfängt. Das ODER-Gatter 184 erzeugt ein
Signal, das an ein Lade-auf-Null-Eingang des Zählers 126
angelegt wird. Das UND-Gatter 182 erzeugt ein auf der Leitung
132 dem 2 : 1-MUX 130 zugeführtes Signal.
-
Der Zähler wird automatisch auf Null gelöscht, wenn er
rückgesetzt wird. Während des Empfangs des Datenstroms auf der
Leitung 126 wird der Zähler 176 jedes Mal inkrementiert,
wenn ein EINS-Bit erkannt wird, und (auf NULL) rückgesetzt,
wenn ein NULL-Bit erkannt wird. Auf diese Weise zählt der
Zähler 176 nur bis fünf, wenn fünf aufeinanderfolgende EIN-
Sen erkannt werden. Wenn der Zähler 176 fünf erreicht,
werden drei Maßnahmen getroffen: der Dateneingang in den 2 : 1-
MUX 130 wird durch das UND-Gatter 182 für einen Zyklus des
Sendetakts zwangsweise auf LOW gesetzt, daß nächste
Schiebetaktzyklus wird durch den Taktdehner 178 um eine Zyklendauer
verlängert und der Zähler 176 wird rückgesetzt. (Es sei
darauf hingewiesen, daß aus Gründen der Beschreibung alle
Maßnahmen in bezug auf dieselbe Taktflanke dargestellt sind,
zum Beispiel taktet dieselbe Taktflanke, die das fünfte
EINS-Bit zur Null-Bit-Einsetzeinheit taktet, dieses in den
Zähler - wodurch offensichtlich Überlaufzustände erzeugt
werden. Diese können, wie dem Fachmann verständlich, in
geeigneten Fällen durch Verwenden verzögerter Takte
vermieden werden.) Indem der Dateneingang zwangsweise auf LOW
gesetzt wird, wird in den Datenstrom eine NULL eingesetzt,
da der Sendetakt noch läuft. Durch Dehnen des Schiebetakts
wird das Schieben des nächsten Datenbits (entweder aus dem
Parallel-zu-Seriell-Schieberegister oder dem CRC-Generator)
um eine Bit-Zeit verzögert - wodurch Platz für die
eingefügte NULL geschaffen wird. Der Zähler 176 wird immer dann im
RESET-Zustand gehalten, wenn der Sender Flaggen oder
Abbrüche sendet oder Bereitschaftsmarkierung vorliegt.
-
Der Taktdehner 178 empfängt ferner ein IN-FRAME-Signal von
einer nicht dargestellten Steuerung und das RESET-Signal.
Der Taktdehner 178 erzeugt den Schiebetakt, der eine
konditionierte Version des Sendetakts ist. Der Takt wird durch
den Taktdehner 178 auf zweierlei Arten konditioniert:
Erstens kann sein Arbeitszyklus wie gerade beschrieben
verändert werden, um ein Null-Bit-Einsetzen zu ermöglichen.
-
Zweitens wird der Schiebetakt EIN und AUS gegattert -
wodurch gewählt wird, wann Daten aus dem Parallel-zu-Seriell-
Register 1210 und dem CRC-Generator 120 zu schieben sind.
Der Schiebetakt ist EIN gegattert, wenn das erste Byte eines
neuen Pakets aus dem FIFO-Puffer in das Parallel-zu-Seriell-
Schieberegister geladen wird. (Dieses Laden erfolgt
automatisch und erzeugt ein Steuersignal für die
Null-Bit-Einsetzeinheit.) Der Takt bleibt EIN, bis das letzte Bit der FCS
gesendet ist, wie dies durch das den High-Pegel einnehmende
Steuersignal für den 2 : 1-MUX 116 angedeutet ist, oder, wenn
die CRC-Erzeugung nicht freigegeben ist (Bit 5 des
DLC-Befehls-/Steuerregisters), bis das letzte Datenbit gesendet
ist (der Zeitpunkt, zu dem die Daten-/FCS-MUX-Steuerung LOW
geworden wäre, wenn die CRC-Erzeugung freigegeben gewesen
wäre). Eine (nicht dargestellte) zum Parallel-zu-Seriell
Schieberegister 110 führende Steuerleitung, die den EIN-
oder AUS-Zustand des Schiebetakts angibt, ist zur Verwendung
durch den Ladezähler 110a vorgesehen ist.
-
Das von dem UND-Gatter 182 erzeugte Signal repräsentiert den
Ausgang der Null-Bit-Einsetzeinheit 124 und wird dem 2 : 1-MUX
130 zugeführt, der zwischen dem Senden von Daten oder
Flaggen/Abbrüchen wählt. Das Steuersignal für den MUX 130 wird
durch den Flaggen-/Abbruchgenerator 134 erzeugt. Das
Steuersignal bewirkt, daß der 2 : 1-MUX 130 eine
Paketdatenübertragung wählt, die von der Null-Bit-Einsetzeinheit 124 zwischen
dem Zeitpunkt nach dem letzten Bit der Eröffnungsflagge bis
zum ersten Bit der Schlußflagge erzeugt wurde. Der Multiplexer
130 wählt die von dem Flaggen-/Abbruchgenerator 134
erzeugten Signale, immer wenn eine Datenübertragung nicht
explizit gewählt ist.
-
Die in Fig. 7B dargestellte Flaggen-/Abbruch-Einsetzeinheit
134 erzeugt Flaggen- und Abbruchzeichen, die von dem 2 : 1-MUX
130 in den Datenstrom eingefügt werden. Die Einheit besteht
aus einem Schieberegister 186, das parallel entweder mit den
in den Registern 188 bzw. 190 gespeicherten Flaggen- (011
11110) oder den Abbruchzeichen (01111111), einem durch acht
teilenden Zähler und dem Logik-Lade-Schieberegister 192 und
der Steuerlogik 194, die das Steuersignal für den 2 :
1-Multiplexer 130 erzeugt.
-
Das Schieberegister 186 ist mit den Registern 188 und 190
verbunden und kann entweder mit einem Flaggen- oder einem
Abbruchzeichen geladen werden. Der Inhalt des Registers 186
wird durch die Abfallflanke des Sendetakts heraus geschoben,
wobei mit dem geringstwertigen Bit begonnen wird, und über
die Signalleitung 136 seriell zu einem Eingang des 2 : 1-MUX
130 geleitet.
-
Das Schieberegister 186 wird unmittelbar vor dem Übertragen
einer Flagge oder eines Abbruchs durch die Einheit 134
geladen. Flaggen werden immer dann invers übertragen, wenn der
Sender nicht entweder ein Paket (ausschließlich der
Eröffnungs- und Schlußflaggen) oder einen Abbruch sendet.
Abbrüche werden immer dann gesendet, wenn das Sendeabbruchsbit
gesetzt ist (Bit 0 im DLC-Befehls-/Steuerregister (Anhang
A)). Dieses Bit wird durch die Software gesetzt und
gelöscht. Ein Abbruchzeichen wird ebenfalls in Reaktion auf
einen Sende-FIFO-Unterlaufzustand gesendet.
-
Wenn ein Abbruch gefordert wird, wird er unverzüglich
übertragen. Wenn das Sendeabbruchsbit in der Mitte der
Übertragung eines Abbruchszeichens gelöscht wird, wird die
Übertragung des Abbruchszeichens beendet, bevor die Übertragung
von Flaggenzeichen beginnt. (Flaggen oder
Bereitschaftsmarkierungen folgen stets einem Abbruch. Da die
Bereitschaftsmarkierung nach dem 2 : 1-Ausgangsmultiplexer eingefügt wird,
wird die Flaggen-/Abbrucheinsetzeinheit auf das Senden von
Flaggen voreingestellt. Wenn Bereitschaftsmarkierung gewählt
ist (Bit 3 des Befehls-/Steuerregisters) wird der Ausgang
der DLC zwangsweise auf ein nur aus EINSen bestehendes
Muster gesetzt, wobei die von der
Flaggen-/Abbrucheinsetzeinheit kommenden Flaggen ignoriert werden).
-
Wenn kontinuierliche Flaggen oder Abbrüche übertragen
werden, wird das Schieberegister 186 nach dem Übertragen des
ersten Flagge/Abbruchs automatisch neu geladen. Dies
geschieht alle acht Bit-Zeiten. Ein durch acht teilender
Zähler innerhalb des Blocks 192 wird zu diesem Zweck zum Teilen
des Sendetakts verwendet.
-
Flaggen-/Abbrucheinsetzeinheit 134 enthält einen Drei-
Bit-Zähler, der einen vom Benutzer gelieferten Wert enthält,
welcher die Zahl der Restbits in einem Paket angibt. Dieser
Wert wird aus einem Restbitsteuerungs-/-Statusregister
(Anhang A) übertragen, und zwar beim letzten INFO-Byte eines
Pakets unmittelbar vor der FCS. Der Zähler wird mit dem
Herausschieben jedes einzelnen Bits aus dem Register 186
dekrementiert. Wenn der Inhalt des Zählers null erreicht, sind
alle Restbits übertragen und die FCS, falls diese
freigegeben ist, sowie die Schlußflagge können übertragen werden.
-
Die Flaggen-/Abbrucheinsetzeinheit 134 erzeugt ein
Steuersignal für den 2 : 1-Multiplexer 130, das angibt, ob Paketdaten
oder Flaggen/Abbrüche zu übertragen sind. Das Steuersignal
wählt den Flaggen-/Abbruchpfad, wenn der Sender keine
Paketdaten sendet Paketdaten werden vom Ende der
Eröffnungsflagge an, bis zum Beginn der Schlußflagge gesendet. Eine
Anforderung des Sendens eines Abbruchs (Sende-Abbruchsbit oder
FIFO-Unterlauf) bringt den Sender aus dem Rahmen heraus.
-
Der Seriellbusport (SBP) 104 empfängt das von dem 2 : 1-MUX
130 gewählte Signal. Der SBP führt verschiedene Funktionen
bezüglich der Zeitschlitzzuweisung, der Taktauswahl, der
Dateninvertierung, der Senderfreigabe und des
Rückschleifentests durch. Fig. 8 ist ein Blockschaltbild des SBP 104.
-
Das von dem Multiplexer 130 gewählte Signal wird durch einen
zeitschlitzmultiplexer (TSM) geleitet, in dem ihm einer von
einunddreißig Zeitschlitzen zugewiesen wird, oder es wird so
wie es ist übertragen (als nicht-multiplexter Modus
bezeichnet). Der SBP 104 ist derart ausgebildet, daß er direkt mit
dem SBP der DSC 12 (Fig. 1) verbindbar ist. Bis zu
einunddreißig Zeitschlitze bilden zusammen ein Rahmen, in dem
Daten während einer der in Fig. 9 dargestellten
8-Bit-Gruppen übertragen werden.
-
Eine Sendetaktsteuerung 198 empfängt ein
Seriellrahmensynchronisier-Signal (SFS) und ein Serielltaktsignal (SCLK),
die an Pins des IDPC angelegt werden.
-
Das Seriellrahmensynchronisier-Signal (SFS) (der SFS/XMIT-
CLOCK-Pin dient entweder als SFS-Eingang im multiplexten
Modus oder als Sendetakteingang im nicht-multiplexten Modus)
liefert eine Referenz, die den Platz der ersten acht Bits
des Rahmens angibt. Der Sender-Zeitschlitzmultiplexer 196
kann durch den Mikroprozessor 18 programmiert werden (in
Fig. 8 durch die Signalleitung "TIME SLOT SELECTION"
dargestellt), um Daten über die Bits 1 bis 5 des
SBP-Steuerregisters in jedem beliebigen der Zeitschlitze anzuordnen, wie
im folgenden im Anhang A beschrieben. Im multiplexten Modus
bildet ein am SCLK-Pin angelegtes Signal die
Sendetaktquelle. Diese Taktquelle wird von der Sendetaktsteuerung 198 mit
dem gewählten Zeitschlitz gegattert, um den Sendetakt zu
bilden. Wenn der Zeitschlitz 0 gewählt ist, werden Daten so
lange übertragen, wie das SFS-Signal aktiv ist, anstatt über
acht Bits auf einmal übertragen zu werden. Wenn der SFS-
Eingang in jedem Rahmen über 16 Bit-Zeiten, anstelle von 8,
aktiv gehalten wird, sendet der Sender 16 Bits pro Rahmen,
anstelle von 8. Hierdurch kann die DSC 12 die Daten auf
beide B-Kanäle (auf einer byteweise abwechselnden Basis)
einleiten, wodurch die Datenrate effektiv verdoppelt wird.
Im nicht-multiplexten Modus (Bits 1 bis 5 im
SBP-Steuerregister
auf EINS gesetzt) werden Daten kontinuierlich
übertragen. In diesem Modus wird der Sendetakt am SFS/XMITCLK-Pin
angelegt. Daten werden stets bei der Abfallflanke des
Sendetakts übertragen.
-
Nachdem die Daten den TSM 196 durchlaufen haben, werden sie
zu einem programmierbaren Inverter-XODER-Gatter 200
geleitet. Wenn das Bit 0 des SBP-Steuerregisters auf 1 gesetzt
ist, werden die Daten mittels eines von dem
Status-/Steuerregistern 112 zum XODER-Gatter 200 geleiteten Signals
INVERT DATA invertiert.
-
Immer wenn der Sender 102 freigegeben ist (Bit 1 des DLC-
Befehls-/Steuerregisters) und außerhalb des Rahmens liegt
(und die Schlußflagge oder ein Abbruch gesendet wurde) und
bei gewählter Bereitschaftsmarkierung (Bit 3 des
DLC-Befehls-/Steuerregisters), wird der Ausgang des Senders durch
ein XODER-Gatter 202, das das von dem programmierbaren
Dateninverter 200 erzeugte Signal und ein vom
Status-/Steuerregisterblock 112 erzeugtes Signal MARK IDLE empfängt,
zwangsweise auf HIGH gesetzt.
-
Der Sender 102 wird über das Bit 1 im
DLC-Befehls-/Steuerregister (Anhang A) freigegeben und gesperrt. Wenn der Sender
gesperrt ist, wird der SBOUT-Pin durch den Transistor 204,
der das von der programmierbaren
Bereitschaftsmarkierungseinsetzeinrichtung 202 erzeugte Signal empfängt, in Reaktion
auf das Anliegen eines Sendefreigabesignals (XMIT ENABLE) in
einen dreifachen Zustand versetzt. Das über den Transistor
204 geleitete Signal wird an einem
Seriellbusausgangsanschlußpin (SBOUT)des IDPC 10 erzeugt.
-
Die DLC 52 kann zu Testzwecken in eine
Lokal-Rückschleifenkonfiguration versetzt werden. Dies geschieht, indem das Bit
3 im SBP-Steuerregister auf 1 gesetzt wird. Die
Lokal-Rückschleife löst die Verbindung der Pins SBIN und SBOUT (SBOUT
ist im Dreifachzustand) und verbindet den Senderausgang mit
dem Empfängereingang. Der zuvor beschriebene gewählte
Sendertakt wird als Empfangstakt verwendet.
-
Die DLC 52 kann zu Testzwecken in eine
Fern-Rückschleifenkonfiguration versetzt werden. Dies geschieht durch Setzen
des Bits 4 des SBP-Steuerregisters auf 1. Die
Fern-Rückschleife sperrt den Sender und gibt jeglichen Empfang am
SBIN-Pin am SBOUT-Pin aus. Für eine vollständige
Beschreibung dieser Aspekte des IDPC 10 wird auf Anhang A verwiesen.
-
In Verbindung mit dem Sender 102 der DLC 52 sind mehrere für
den Anwender sichtbare Status- und Steuerregister
dargestellt. Diese im Funktionsblock 112 enthaltenen Register
sind im Anhang A näher beschrieben und dienen der
Konfiguration des DLC-Senders 102, dem Veranlassen bestimmter
Vorgänge, dem Berichten des Status und dem Erzeugen von
Unterbrechungen. All diese Register sind durch den Mikroprozessor
18 zugänglich. Keines der Register ist durch einen
Hostprozessor zugänglich.
-
Obwohl in Fig. 4 nicht dargestellt, verbinden verschiedene
Steuer- und Statussignalleitungen die dargestellten DLC-
Senderelemente mit dem Status- und Steuerregisterblock 112.
Da diese Signalleitungen herkömmlich sind und ihre Fähigkeit
zum Steuern der Elemente, mit denen sie verbunden sind, dem
Fachmann verständlich sind, werden weder das Design, noch
der Aufbau des Blocks 112 oder der anderen ähnlichen
Zustands- und Steuerblöcke, die von dem IDPC 10 verwendet
werden, beschrieben. Wie in Fig. 3 dargestellt, nehmen die
Empfangsbereiche 106 und 108 der DLC 52 serielle Daten vom
Seriellbusport (SBP) 104, verarbeiten diese und ermöglichen
deren Bewegung zum Off-Chip-Speicher 22. Zweckorientierte
Hardware-Module werden verwendet, um Bitebenenoperationen an
jedem Datenrahmen, so wie es empfange wurde, durchzuführen
(Bereitschaftsmarkierungserkennung, Dateninversion,
Flaggen/Abbruchserkennung,
Null-Bit-Löschung, CRC-Prüfung und
Adreßerkennung). Das 16 Bit tiefe Empfangs-FIFO 106 dient
als Puffer zwischen dieser von der Bit-Rate abhängigen
Verarbeitung und der Verarbeitung eines Pakets auf einmal, die
von dem Mikroprozessor 18 durchgeführt wird. Daten können
aus dem Empfangs-FIFO 106 zum Speicher 22 entweder durch DMA
oder unter Steuerung durch den Mikroprozessor 18 bewegt
werden.
-
Fig. 10 ist ein Blockschaltbild der Empfängerabschnitte 106
und 108 der DLC 52 und zeigt die Verbindung der internen
Busse 58, 60 und 62 mit drei Schieberegistern 208, 209 und
210 durch das 16-Byte-RECV-FIFO 106. Die Status- und
Steuerregister 212 im DLC-Empfänger 108 sind mit den Bussen 58,
60 und 62 verbunden. Die Status- und Steuersignale werden
über nicht in Fig. 10 dargestellte Leitungen von und zu den
verschiedenen Elementen des Empfängers 108 und den Status-
und Steuerregistern 212 geleitet.
-
Der Seriellbusport 104 empfängt Datensignale von einem
Seriellbuseingangsanschluß (SBIN), die einem Schieberegister
212 zugeführt werden. Eine
Flaggenerkennungs-/Abbruchserkennungseinheit 214 ist mit dem Schieberegister 212 verbunden.
Das Schieberegister 212 ist über die Signalleitung 216 mit
dem Schieberegister 210 zum Übertragen von Datensignalen
verbunden.
-
Ein vom SBP 104 erzeugtes wiedergewonnenes Signal DATA INPUT
CLOCK wird einer
Bit-Lösch-/Byte-Zähl-/Kurzrahmenfehlereinheit 218 über die Signalleitung 220 zugeführt, die ebenfalls
die Datensignale auf der Leitung 216 empfängt. Das
Schieberegister 212 empfängt ferner das wiedergewonnene Signal DATA
INPUT CLOCK auf der Leitung 220. Eine Zyklenredundanzcode
Prüfeinrichtung 222 (CRC) empfängt die Datensignale auf der
Leitung 216 sowie ein von der
Bit-Lösch-/Byte-Zähl-/Kurzrahmenfehlereinheit 218 erzeugtes Taktsignal über die
Signalleitung
224. Das Schieberegister 210 empfängt ebenfalls das
Taktsignal auf der Leitung 224. Eine Adreßerkennungseinheit
226 ist mit den Registern 208 und 210 verbunden.
-
Die Hauptelemente des in Fig. 10 in Blockschaltbildform
Empfängers 106 und 108 werden in Zusammenhang mit den Fig.
11-18 im einzelnen beschrieben. Die Hardwareblöcke des
Empfängers 108 werden unter Bezugnahme auf Fig. 11 in der
Reihenfolge des Datenflusses durch die Einheit, also vom
Seriellbusport 104 des Empfängerbereichs bis zum RECV FIFO
106 (siehe Fig. 10). Der Empfänger 102 muß Datenraten
zwischen DC und 2,084 MHz unterstützen. Aus diesem Grunde wurde
bei dem Design des Empfängers darauf geachtet, die Effekte
der Echtzeitereignisse auf die Software, die die empfangenen
Datenpakete verarbeitet, zu minimieren. Die DLC 52 der
vorliegenden Erfindung ist zum Empfang eines vollständigen
Pakets und zum Bewegen desselben zu einem Off-Chip-Speicher
22 ausgelegt, ohne daß ein Eingreifen des Mikroprozessors 18
erfolgt, wenn Direktspeicherzugriff (DMA) verwendet wird.
Paketzustandsinformationen werden Paket für Paket zu dem
Zeitpunkt angegeben, zu dem das Paket vollständig zum
Speicher 22 bewegt ist. Eine Beschreibung dieses verzögerten
Statusberichtsmechanismus folgt in Zusammenhang mit Fig. 27.
-
Der Empfängerabschnitt des Seriellbusports (SBP) 104
empfängt Serielldaten vom SBIN-Pin des IDPC 10 und erzeugt aus
diesen Signale an die Flaggen-/Abbrucherkennungseinheit 214
und die Null-Bit-Löscheinheit 218. Die Empfangsseite des SBP
führt drei Operationen an den Daten durch: die
Bereitschaftsmarkierungserkennung, die programmierbare
Dateninversion und das Zeitschlitzdemultiplexen. Fig. 11 zeigt ein
Blockschaltbild des empfangsseitigen Bereichs des SBP 104.
Die Daten werden durch die Anstiegsflanke eines an einen
Anschlußpin des IDPC 10 angelegten seriellen Taktsignals
(SCLK) in den empfangsseitigen SBP eingetaktet. Dieses
Signal wird einem Takteingangsanschluß (CLK) eines
Bereitschaftsmarkierungsdetektors
230 und einem
Takteingangsanschluß eines Zeitschlitzdemultiplexers (TSD) 232 zugeführt.
Ein Transistor 234 verbindet den SBIN-Anschluß und eine
Signalleitung 236, die mit einem
Zählfreigabeeingangsanschluß (CNT ENABLE) des Bereitschaftsmarkierungsdetektors
230 verbunden ist. Der Transistor 234 empfängt das Signal
RECEIVER ENABLE, das das Leiten der an den SBIN-Anschluß
angelegten Datensignale auf der Signalleitung 236 bewirkt.
Das Signal RECEIVER ENABLE wird durch das Status- und
Steuerregister 212 gemäß der Beschreibung im Anhang A erzeugt.
-
Der Bereitschaftsmarkierungsdetektor 230 empfängt ferner an
einem Komplementeingang ein IN-FRAME-Signal und an einem
Komplementeingang die auf der Leitung 236 geführten
Datensignale.
-
Immer wenn der Empfänger 108 außerhalb des Rahmens liegt,
untersucht der Bereitschaftsmarkierungsdetektor den über die
Leitung 236 empfangenen Datenstrom auf das Vorhandensein von
15 oder mehr aufeinanderfolgenden EINS-Bits. Die Erkennung
einer Bereitschaftsmarkierung muß erfolgen, nachdem der
Empfänger außerhalb des Rahmens gerät, da ein gültiges
Datenmuster von 15 oder mehr NULLen während eines Im-Rahmen-
Status auf einer invertierten Datenverbindng (sämtlich zu
EINS invertiert) den Bereitschaftsmarkierungszustand
simulieren würde. Die Bereitschaftsmarkierungserkennungseinheit
230 besteht aus einem Zähler, der durch das inaktive IN-
FRAME-Signal freigegeben wird, der jedes EINS-Bit bei seinem
Erscheinen zählt, der durch jedes erscheinende NULL-Bit
rückgesetzt wird, der ein
Bereitschaftsmarkierungsanzeigesignal erzeugt, wenn er 15 EINSen zählt und diese Anzeige
beibehält, bis eine NULL empfangen wird, der durch Hardware-
oder Software-Rücksetzen gelöscht wird, und der gelöscht und
gesperrt wird, wenn der Empfänger 108 beim Empfangen des IN-
FRAME-Signals in das Raster übergeht.
-
Die Erkennung eines Bereitschaftsmarkierungszustands setzt
das Bit 0 in einem Empfangsverbindungsstatusregister (Anhang
A). Wenn es freigegeben wird, wird in Reaktion auf einen
Negativ-zu-Positiv-Übergang dieses Bits eine Unterbrechung
erzeugt.
-
Ein programmierbarer Dateninvertierer mit dem XODER-Gatter
238 empfängt die Datensignale über die Signalleitung 236
sowie ein Signal INVERT DATA, dessen Empfang das Invertieren
jeweils eines Bits der empfangenen Daten auf einmal
verursacht. INVERT DATA wird ebenfalls durch das Status- und
Steuerregister 212 gemäß der Beschreibung im Anhang A
erzeugt. Diese Inversion wird durch das Setzen des Bits 0 in
einem SBP Steuerregister (Anhang A) bewirkt.
-
Der Zeitschlitzdemultiplexer 232 empfängt das an dem Ausgang
des XODER-Gatters 238 erzeugte Signal und ein
Seriellrahmensynchronisierersignal (SFS). Der Zeitschlitzdemultiplexer
(TSD) 232 kann in einem von zwei Modi arbeiten: entweder
multiplext oder nicht multiplext. Hierzu sei auf Fig. 12
verwiesen, die ein Zeitsteuerungsdiagramm des TSD 232
darstellt. Im multiplexten Modus (der durch die Bits 1 bis 5
des SBP-Steuerregisters (Anhang A) gewählt ist) sind die
eingehenden Daten während eines von bis zu 31 acht Bit
langen Zeitschlitzen eines 24 Bit langen Rahmens gültig. Der
Status-/Steuerregisterblock 212 erzeugt ein als "CHANNEL
SELECT" bezeichnetes Signal, das, wie im Anhang A
beschrieben, von dem TSD 232 auf der Basis der Bits 1 bis 5 des SBP-
Steuerregisters empfangen wird. Der
Seriellrahmensynchronisier-/Sendetaktpin (SFS/XMITCLK) des IDPC 10 empfängt den
Rahmensynchronisierimpuls (SFS), der während der ersten acht
Bitzeiten des Rahmens aktiv ist, wodurch die Rahmengrenzen
definiert sind. Der aktive Zeitschlitz wird durch die Bits 1
bis 5 des SBP-Steuerregisters ausgewählt. Der Zeitschlitz 0
wird als Sonderfall behandelt, in dem mehr als acht Bits auf
einmal an Daten empfangen werden können. Wenn der
Zeitschlitz
0 gewählt ist, werden Daten so lange empfangen, wie
SFS aktiv ist. Dies ermöglicht zum Beispiel das Empfangen
von 16 Datenbits pro Rahmen. Benutzt die DSC 12 beide B-
Kanäle zum Empfang von Daten desselben Pakets (wodurch die
Datenrate verdoppelt würde), so würde sie die Daten über
beide Kanäle 0 und 1 ihres SBP an den IDPC senden. Bei auf
16 Bitzeiten verlängertem SFS, würde das IDPC 10 alle 16
Bits (auf seinem Kanal 0) als Teil desselben Pakets
empfangen.
-
Im nicht multiplexten Modus werden die Daten vom TSD 232 als
kontinuierlicher Strom empfangen, der durch SCLK getaktet
ist. Die nicht multiplexte Operation wird gewählt, indem die
Bits 1 bis 5 des SBP-Steuerregisters (siehe Anhang A)
gesetzt werden. In diesem Modus wird der SFS/XMITCLK-Eingang
von dem Empfänger 108 nicht verwendet (er wird von dem
Sender als Sendetakteingang verwendet, wodurch sich separate
Empfangs- und Sendetakte ergeben).
-
Die vom TSD 232 erzeugten gewählten Datensignale werden an
einem DATA-Ausgangsanschluß des TSD 232 erzeugt und der
verwendete Takt, entweder SFS oder SCLK, wird an einem RE-
CEIVE-CLOCK-Ausgangsanschluß erzeugt.
-
Wie in Fig. 13 dargestellt, weist die
Flaggen-/Abbruchserkennungseinheit 214 ein Acht-Bit-Schieberegister 240 auf,
das mit dem Datenausgangsanschluß des TSD 232 verbunden ist.
Die seriellen Empfangsdaten werden bei der Anstiegsflanke
des vom Register 240 empfangenen SCLK geschoben. Der Inhalt
des Schieberegisters 240 wird durch Komparatoren 242 bzw.
244 auf das Vorhandensein entweder einer Flagge oder eines
Abbruchzeichens hin untersucht. Die Prüfung erfolgt bei
jedem Schieben eines Bits in das Schieberegister. Beim
Erkennen eines Abbruchs werden nur die ersten sieben Bits
getestet. Die Komparatoren 242 und 244 erzeugen ein Signal
auf den Leitungen 246 bzw. 248, das die Erkennung einer
Flagge oder eines Abbruchzeichens angibt. Die
Flaggen-/Abbruchserkennungseinheit 214 weist ferner mit dem
Schieberegister 240 verbundene Komparatoren 242 und 244 auf.
-
Die Flaggen-/Abbruchserkennungseinheit 214 erzeugt ein IN-
FRAME-Signal, das von der Empfangsseite und der Sendeseite
des SBP 104 der DLC sowie vom Kurzrahmen-Bytezähler 260
empfangen wird. Das IN-FRAME-Signal wird erzeugt, wenn ein
Flaggenzeichen im Schieberegister 240 vorliegt, acht
Bitzeiten verstreichen und dann weder ein Flaggen-, noch ein
Abbruchzeichen im Schieberegister 240 vorliegt.
-
Der Inhalt des Schieberegisters 240 wird auf der Leitung 216
der Null-Bit-Löscheinheit 218 zugeführt. Ein durch acht
teilender Zähler 250 dient zur Erzeugung eines
Bytegrenzensignals. Der Zähler 250 empfängt das SCLK-Signal, welches er
durch acht teilt, um das BYTE-BOUNDARY-Signal zu erzeugen.
Der Zähler 250 wird beim Empfang eines auf der Leitung 246
geführten Flaggenerkennungssignals rückgesetzt.
-
Beim Rücksetzen wird das Schieberegister 240 vollständig auf
NULL gesetzt, um eine falsche Flaggen- oder
Abbruchserkennung zu vermeiden.
-
Um das Erkennen gültiger Datenmuster als Flaggen oder
Abbrüche zu vermeiden, wird ein als Biteinfügung bezeichnetes
Verfahren verwendet. Der Sender prüft den Datenstrom
zwischen der Eröffnungs- und der Schlußflagge (ausschließlich
der Flaggen). Werden fünf aufeinanderfolgende EINS-Bits
erkannt, wird eine NULL nach der fünften EINS eingefügt. Die
Null-Bit-Löscheinheit im Empfänger entfernt diese eingefügte
NULL. Fig. 14 zeigt ein Blockschaltbild der
Null-Bit-Löscheinheit.
-
In Fig. 14 ist die Null-Bit-Löscheinheit 252 der Null-Bit-
Löschung-Bytezähl- und Kurzrahmen-Fehlereinheit 218
dargestellt.
Die vom Schieberegister 240 her empfangenen Daten
werden über die Signalleitung 216 der Null-Bit-Löscheinheit
252 zugeführt. Ein Drei-Bit-Zähler 254 empfängt die Daten
auf der Leitung 216 sowie das vom SBP 104 erzeugte Signal
RECEIVE CLOCK. Die Signalleitung 216 ist mit einem
Zählfreigabeeingangsanschluß (CNT ENAB) des Zählers 254 sowie einem
komplementären Lösch-Eingangsanschluß (CLR) desselben
verbunden. An einem Ausgang des Zählers 254 wird ein Signal
COUNT NOT EQUAL TO 5 (CNT ≠ 5) erzeugt, das einem UND-Gatter
256 sowie einem komplementären Löscheingeng (CLR) des
Zählers zugeführt wird. Das UND-Gatter 256 empfängt ebenfalls
das Signal RECEIVE CLOCK und, an einem Komplementeingang
das Signal RESET.
-
Der Zähler 254 erzeugt das Signal CNT ≠ 5 beim Vorhandensein
von fünf aufeinanderfolgenden EINSen in den auf der Leitung
216 empfangenen Daten. Tritt dieser Fall ein, wird das
nächste Bit (normalerweise eine NULL) aus dem Datenstrom
gelöscht. Das Löschen erfolgt durch Verlängern des
Empfangstakts in einem vom UND-Gatter 256 erzeugten
Empfangsschiebetaktsignal um einen Taktzyklus. Der Empfangsschiebetakt
wird von einem durch acht teilenden Zähler 258 empfangen,
der ebenfalls das Flaggensignal auf der Leitung 246 empfängt
und einen Empfangszeichentakt erzeugt (der mit dem Empfang
des Flaggenzeichens synchronisiert ist). Das
Empfangsschiebetakt- und das Empfangszeichentaktsignal werden dem
Seriell-zu-Parallel-Schieberegister 210, einem
Empfangsbytezählerbereich der Einheit 218 und der CRC-Prüfeinrichtung
222 über die Signalleitungen 224 zugeführt.
-
Wie in Fig. 15 dargestellt, weist der
Kurzrahmen-Bytezählerbereich 260 (SFBC) der Einheit 218 einen
Vier-Bit-Abwärtszähler 262 auf, der an einem Takteingang das Signal
RECEIVE SHIFT CLOCK empfängt und der die Zeichen zählt, die
das Seriell-zu-Parallel-Schieberegister 210 erreicht haben.
Der Vier-Bit-Abwärtszähler 262 weist ferner ein Register 264
auf, in dem ein Mindestpaketgrößenwert gespeichert ist,
welcher über die internen Busse 58, 60 und 62 empfangen
wurde. Der Inhalt des Registers 264 wird dem Abwärtszähler
262 zugeführt und an einen Ladeanschluß desselben angelegt.
Der Zähler 262 erzeugt ein Signal COUNT NOT EQUAL TO ZERO
(CNT ≠ 0), das einem UND-Gatter 266 zugeführt wird. Das UND-
Gatter 266 empfängt ferner ein Signal RECEIVE BYTE COUNT
GREATER THAN ZERO (RECV BYTE CNT ≠ 0), das von dem 16-Byte
Empfangs-FIFO 106 erzeugt wird, und ein IN-FRAM-Signal. Wenn
ein Rahmen mit einer Flagge endet UND die Zahl der
empfangenen Bytes geringer als der in dem Mindestpaketgrößenregister
gespeicherte Wert ist UND Daten in das FIFO gesetzt wurden
(Empfangsbytezähler 0), erzeugt das UND-Gatter 266 ein
Kurzrahmen-Fehlersignal.
-
Die CRC-Prüfeinrichtung 222 ist praktisch mit dem
CRC-Generator 120 des Senders identisch und wird daher nicht im
einzelnen beschrieben.
-
Fig. 16 zeigt die Verbindung zwischen den Seriell-zu-Parallel-
Schieberegistern 208, 209 und 210, dem RECV FIFO 106
und der Adressenerkennungseinheit 226. Der von der Null-Bit-
Löscheinheit 252 modifizierte Datenstrom wird einem 24-Bit-
Schieberegister zugeführt, das die 8.Bit Register 208, 209
und 210 aufweist und den seriellen Datenstrom in Bytes von
8-Bit umwandelt. Die 16-Bit-Inhalte der Schieberegister 209
und 210 werden zum Vergleich parallel der
Adressenerkennungseinheit 226 zugeführt. Bei Adressen aus einem Byte
werden nur die ersten acht Bits des Schieberegisters
(Register 210) verglichen. Die Inhalte der Schieberegister werden
byteweise parallel dem Empfangs-FIFO 106 zugeführt. Ein
Ladesteuerbereich 268 der
Seriell-zu-Parallel-Schieberegister 208, 209 und 210 erzeugt das Steuersignal LOAD, durch
welches die Daten in den FIFO-Puffer 106 eingeschrieben
werden.
-
Die seriellen Daten werden auf der Leitung 216 empfangen und
bei der Anstiegsflanke des Empfangsschiebetakts in die
Schieberegister 208, 209 und 210 getaktet. Der
Empfangsschiebetakt ist nur dann aktiv, wenn Daten in das
Schieberegister zu schieben sind. Die Schieberegister 208, 209 und
210 weisen drei Ausgangspfade zum RECV FIFO 106 auf. Der
erste Ausgangspfad 270 bewegt das niederwertigste (das
zuerst empfangene) Byte in das RECV FIFO. Alle Bytes eines
Pakets, mit Ausnahme des letzten Bytes, werden über diesen
Weg in das RECV FIFO bewegt. Ein zweiter Ausgangspfad 272
und ein dritter Ausgangspfad 273 dienen zum Bewegen der
letzten Bytes eines Pakets in das FIFO (einschließlich des
letzten Bytes der FCS, wenn die FCS in dem Paket enthalten
ist).
-
Die Ladesteuerung 268 empfängt das von dem SBP 104 erzeugte
Signal RECV CHAR CLOCK und erzeugt Ladesignale auf den
Leitungen 274 und 276, die den Schieberegistern 208, 209 und
210 sowie dem RECV FIFO-Puffer 106 zugeführt werden. Die
Ladesteuerung 268 erzeugt ferner ein Restbitzählsignal, das
von einem Resbitsteuer-/-statusregister (Anhang A)
empfangen wird. Das Bewegen von Daten aus den Schieberegistern
208, 209 und 210 zum RECV FIFO-Puffer 106 wird durch die
Anstiegsflanke des von dem durch acht teilenden Zähler 258
der Null-Bit-Löscheinheit 252 erzeugten
Empfangszeichentaktsignals freigegeben. Davon ausgehend, daß die Paketadresse
paßte oder die Adressenerkennung gesperrt ist (siehe Anhang
A), erfolgt das Laden bei der nächsten synchronisierten
Flanke des vom Mikroprozessor 18 her empfangenen Takts. Wenn
das oberste Byte des RECV FIFO-Puffers 106 zu dem Zeitpunkt,
zu dem das Laden stattfinden soll, nicht frei ist, wird das
Laden verzögert und bei jedem nachfolgenden Taktzyklus des
Mikroprozessors 18 erneut versucht. Erfolgt das Laden nicht
vor dem Empfang des nächsten RECEIVE SHIFT CLOCK, so tritt
ein Überlauffehler auf.
-
Endet ein Paket mit einer Flagge, einem Abbruch oder einem
Langrahmenfehler, wird das letzte Byte des Pakets direkt in
das RECV FIFO 106 bewegt. Zu dem Zeitpunkt, zu dem
beispielsweise die Schlußflagge erkannt wird, sind immer noch
zwei Datenbytes in den Schieberegistern 209 und 210
enthalten, und es befinden sich, wenn überhaupt, linksbündig
ausgerichtete Restbits (1 bis 8) im Schieberegister 208. Beim
Erkennen der Schlußflagge befindet sich die FCS in den
ersten 16 Bits der Schieberegister 209 und 210. Die Restbits
(1 bis 8) befinden sich in den letzten acht Bits des
Schieberegisters 208 (linksbündig ausgerichtet). Wird die
Schlußflagge erkannt, finden die folgenden Vorgänge statt:
-
Der Restbitzählerstand wird im
Restbitsteuer-/-Statusregister gespeichert;
-
die Daten in den letzten acht Bits des Schieberegisters
208 werden sodann verschoben, bis der Restbitzähler
acht erreicht;
-
wenn die FCS nicht in das RECV FIFO 106 bewegt werden
soll, wird der Inhalt der letzten acht Bits des
Schieberegisters 208 über den Pfad 273 in das FIFO geladen
und als das letzte Byte im Paket markiert; und
-
wenn die FCS in das RECV FIFO 106 bewegt werden soll,
werden die letzten acht Bits des Schieberegisters über
den Pfad 273 in das FIFO geladen, die beiden Bytes der
FCS werden über die Pfade 270 und 272 in das FIFO
bewegt, und das letzte Byte der FCS wird markiert.
-
Jedes Paket, das mit einer Flagge oder einem Abbruch endet,
bevor jegliche Daten in das FIFO geladen wurden, bewirkt,
daß der Inhalt des Bytezählers NULL ist, wie im folgenden
beschrieben, und in diesem Fall ist es nicht möglich, Daten
n das RECV FIFO 106 zu bewegen. Der Inhalt der
Schieberegister
208, 209 und 210 wird einfach ignoriert - er wird durch
die ersten 16 Bits des nächsten Pakets gelöscht.
-
Die Adressenerkennungseinheit 226 dient zur Identifizierung
von Paketen, die an den Empfänger 108 adressiert sind. Je
nach Programmierung über die Status-/Steuerregister 212 wird
das erste oder die beiden ersten Bytes jedes empfangenen
Pakets mit bis zu fünf Adreßregistern (von denen vier durch
den Benutzer programmierbar und eines allgemein ist). Wenn
das Adreßfeld des eingehenden Pakets zu einem der
Adreßregister paßt, wird das Paket empfangen, wenn das
Register freigegeben ist. Ist keine Übereinstimmung
feststellbar, wird das Paket verworfen und der Empfänger geht erneut
in einen Zustand über, in dem er eine Flagge sucht. Die
Zustände, die der Empfänger einnehmen kann, werden im
folgenden in Verbindung mit Fig. 20 beschrieben.
-
Die Adressenerkennungseinheit 226 ist in Fig. 17 dargestellt
und weist fünf Vergleichseinheiten 278, 280, 282, 284 und
286 auf. Die ersten vier Vergleichseinheiten 278-284 weisen
ein programmierbares 16-Bit-Adreßregister und einen Zwei-
Byte-Komparator auf. Die letzte (allgemeine)
Vergleichseinheit 286 besteht aus einem ausschließlich EINSen
aufweisenden Register und einem Zwei-Byte-Komparator. Ein
Steuerelement 288 empfängt das Signal RECV CHAR CLK und ist mit einem
Adreßsteuerregister innerhalb des Elements 212 verbunden.
Mit jeder Vergleichseinheit ist ein Freigabebit verbunden,
das diese bestimmte Erkennungseinheit ein- oder ausschaltet.
Diese Bits sind in dem Adreßsteuerregister (Anhang A)
enthalten. Wenn alle fünf Freigabebits gelöscht (gesperrt)
sind, akzeptiert der Empfänger 108 alle Pakete. Das Bit 5
des Adreßsteuerregisters wählt aus, ob die Adresse ein oder
zwei Bytes lang ist. Wenn das Ein-Byte-Adressieren gewählt
ist, werden entweder die acht niederwertigsten Bits der
Sechzehn-Bit-Adreßregister oder die höchstwertigen acht
Bits, wie durch das Bit 7 des Adreßsteuerregisters gewählt,
bei dem Vergleich verwendet. Ferner bewirkt das Bit 6 des
Adreßsteuerregisters das Ignorieren des zweiten Bits (Bit 1)
des ersten Bytes aller Adressen. Dies ist erforderlich, da
einige BOP diese Bitposition verwenden, um anzugeben, ob es
sich bei dem Paket um einen Befehl oder eine Antwort (C/R)
handelt. Wenn dieses Steuerbit zum Ignorieren des C/R-Bits
gesetzt ist, wird das Bit 1 des ersten Bytes aller Adressen
als irrelevant angesehen. Eine vollständige Beschreibung des
Adreßsteuerregisters findet sich im Anhang A.
-
Der Adressenvergleich erfolgt, wenn die Seriell-zu-Parallel-
Schieberegister 209 und 210 im Anschluß an die
Eröffnungsflagge 16 Bits empfangen haben. Die Identität des bestimmten
Komparators, der zu der eingehenden Adresse paßt, wird in
den Bits 0-2 des im Anhang A beschriebenen
Unterbrechungsquellenregisters angegeben. Dieser Zustand wird berichtet,
wenn das letzte Byte des Pakets aus dem RECV FIFO 106
ausgelesen wird.
-
Wie in Fig. 18 dargestellt, verbindet das Empfangs-FIFO 106
die Seriell-zu-Parallel-Schieberegister 208, 209 und 210 und
die internen Busse 58, 60 und 62 und besteht aus einem RECV
FIFO-Puffer 290, einem Empfangsbytezähler 292 und einer
vierstufigen Empfangsbytezähler- 294 und
Datenanforderungssteuerlogik 296.
-
Der Empfangsbytezähler 292 ist ein Lese-/Schreibregister und
ist mit den internen Bussen 58, 60 und 62 verbunden und
empfängt ein von der Schieberegisterladesteuerung 268
erzeugtes Signal LOAD.
-
Der vierstufige Empfangsbytezähler 294 ist ein
Nur-Leseregister und ist mit den internen Bussen 58, 60 und 62 verbunden
und empfängt das Signal END-OF-FRAME TAG von einem
Datenregisterbereich 298 des FIFO-Puffers 290.
-
Das Signal END-OF-FRAME TAG wird von dem vierstufigen
verzögerten Zustandsberichtmechanismus verwendet, der von dem
Empfangsbytezähler 294 gemäß der in Zusammenhang mit Fig. 27
erfolgenden Beschreibung verwendet wird.
-
Der Empfangs-FIFO-Puffer 290 ist ein 32 Byte tiefer Puffer,
der von "oben" durch die Seriell-zu-Parallel-Schieberegister
208 und 210 geladen und am unteren Ende durch den
Mikroprozessor 18 oder DMA über das Datenregister 298 entladen wird.
(Siehe Beschreibung der Datenbewegung in Zusammenhang mit
Fig. 16). Die Daten werden mit der vom Mikroprozessor 18
gelieferten Taktrate den Puffer hinab geschoben.
-
Das Vorhandensein von Daten im Datenregister 298 wird durch
das Setzen des Datenverfügbarkeitsbits (Bit 1) des FIFO-
Statusregisterbereichs (Anhang A) der Status- und
Steuerregister 212 angegeben. Dieses Bit wird gelöscht, wenn das
Datenregister 298 leer wird und der Speicherplatz in dem
unmittelbar über dem Datenregister 298 gelegenen FIFO-Puffer
290 leer ist.
-
Wenn der Empfänger 108 den Empfang eines Pakets (normal oder
abnormal) und Daten aus diesem Paket in den FIFO-Puffer 290
verbracht wurden. Wird das letzte Byte des Pakets markiert,
wenn es in den Puffer verbracht wird. Jeder FIFO-Puffer-
Speicherplatz weist ein neuntes Bit zur Aufnahme dieser
Markierung auf. Das Vorhandensein eines markierten Bits im
Puffer 290 bewirkt, daß die noch zu beschreibende
Datenanforderung aktiv wird.
-
Mit dem Empfangs-FIFO-Puffer 290 ist die
Datenanforderungslogik 296 verbunden, die ein Signal erzeugt, das das
Erreichen der Schwelle angibt. Die Datenanforderungslogik 296
empfängt ein Signal vom FIFO-Puffer 290, das die Zahl der in
dem Puffer gespeicherten Bytes angibt. Dieses Signal ist
immer dann aktiv, wenn die Zahl der Datenbytes im Puffer
höher ist als der durch Programmieren in einem
FIFO-Schwellenregister (Anhang A) gespeicherte Schwellenwert. Wenn das
das Erreichen der Schwelle anzeigende Signal aktiv ist, wird
das Bit 0 in einem Empfangs-FIFO-Statusregister auf 1
gesetzt. Eine maskierbare Unterbrechung wird erzeugt, wenn das
Schwelle-erreicht-Bit von NULL zu EINS übergeht, daß das
Erreichen der Schwelle angebende Signal wird ferner bei der
Erzeugung der Datenanforderung an die DMA verwendet.
-
Wenn der "obere" Speicherplatz im Empfangs-FIFO-Puffer 290
voll ist, wenn die
Seriell-zu-Parallel-Schieberegisterladesteuerung 292 ein Ladesignal für ein neues Datenbyte
erzeugt, entsteht ein Überlaufzustand. Dieser Fehler wird im
folgenden näher beschrieben.
-
Die Datenanforderungssteuerlogik 296 des FIFO 290 erzeugt
ein Datenanforderungssignal, das die Operation der DMA
steuert (falls dieser verwendet wird). Das aktive
Datenanforderungssignal informiert die DMA, daß er den FIFO-Puffer 290
leeren sollte. Das Datenanforderungssignal wird aktiv, wenn
das das Erreichen der Schwelle anzeigende Signal aktiv wird,
ODER ein als das Ende eines Pakets markiertes Byte in dem
FIFO-Puffer 290 vorliegt. Die Datenanforderung bleibt aktiv,
bis der Puffer 290 leer wird, ODER das markierte Byte
entfernt wurde.
-
Ein 16-Bit Empfangsbytezähler 292 ist in dem Empfangs-FIFO
106 vorgesehen, um eine Zählung der Bytes, die aus dem
gegenwärtig empfangenen Paket in den FIFO-Puffer 290
eingebracht wurden, durchzuführen. Wenn das (als solches
markierte) letzte Byte des Pakets aus dem FIFO-Puffer 290 entfernt
ist, wird der Inhalt des Empfangsbytezählers 292 einem
Empfangsbytezählregister 294 zugeführt. Dies ist ein
vierstufiges Register, das den Bericht über die Bytezahl verzögert,
bis das markierte Byte aus dem FIFO 290 ausgelesen ist -
dies er Vorgang des verzögerten Berichtens wird im folgenden
näher beschrieben. Der Empfangsbytezähler 292 wird gelöscht,
wenn sein Inhalt in das Empfangsbytezählregister 294 geladen
ist.
-
Das Empfangsbytezählregister 294 gibt die Länge des
Empfangspakets an die Software weiter. Dieses Nur-Leseregister
ist mit den internen Bussen 58, 60 und 62 verbunden. Eine
Beschreibung des verzögert berichtenden vierstufigen
Registers erfolgt im folgenden in Zusammenhang mit Fig. 27.
-
Mit dem Empfänger 108 der DLC 52 sind mehrere für den
Benutzer sichtbare Register verbunden. Diese Register, die im
einzelnen im folgenden beschrieben werden, dienen zum
Konfigurieren des Empfängers, zum Einleiten bestimmter
Vorgänge, zum Berichten des Status und zum Erzeugen von
Unterbrechungen. Sämtliche Register sind über die lokalen
Prozessoren zugänglich; keines der Register ist über einen Off-Chip-
Host-Prozessor zugänglich. Der Anhang A enthält eine
Beschreibung der verschiedenen Register der DLC 52.
-
Der normale Betrieb des sendeseitigen IDPC 10 wird im
folgenden in Zusammenhang mit Fig. 19 beschrieben, welche ein
sendeseitiges Zustandsdiagramm darstellt. Nach einem
Rücksetzen der Hardware des IDPC 10 oder bei einem Rücksetzen
des IDPC 10 durch den Mikroprozessor 18 (Bit 6 des
DLC-Befehls-/Steuerregisters innerhalb des Blocks 112), wird die
DLC 52 gesperrt und befindet sich im Zustand 0a - Senden der
Bereitschaftsmarkierung durch das in Fig. 19 mit 300
bezeichnete Element.
-
Der Mikroprozessor 18 initialisiert den DLC-Sender 102,
indem er Bits innerhalb der im Anhang A beschriebenen
Sender-Status-/Steuerregister 112 setzt, indem er
Dateninversion oder Daten-Nichtinversion (Bit 0 des Seriellbusport-
(SBP)-Steuerregisters), die SBP-Kanalkonfiguration (Bits 2-1
im SBP-Steuerregister), die Verwendung oder Nichtverwendung
der CRC-Erzeugung und entweder eine Flagge oder die
Bereitschaftsmarkierung wählt (Bit 3 des
DLC-Befehls-/Steuerregisters, wobei die Bereitschaftsmarkierung die Voreinstellung
ist).
-
Das Sendebytezählregister 152 (Anhang A) dient der Angabe
der Länge des zu übertragenden Pakets, ausschließlich der
FCS-Bytes, und wird nur dann programmiert, wenn die zu
übertragende Paketlänge von derjenigen des zuvor übertragenen
Pakets verschieden ist. Bytes werden im Sendebytezähler 154
des Sende-FIFO 100 gezählt, während sie in den Sende-FIFO-
Puffer 150 eingegeben werden. Ist der Zählerstand gleich dem
in dem Sendebytezählregister 152 programmierten Wert, wird
dieses Byte als letztes Nicht-FCS-Byte des Pakets markiert.
Die Dateninversion/Nichtinversion und die
SBP-Kanalkonfiguration beeinflussen die Operationsabfolge des Senders nicht.
Die Auswahl der Flaggenbereitschaft/Bereitschaftsmarkierung
beeinflußt die Operationsabfolge und wird im folgenden
beschrieben.
-
Nachdem der DLC-Sender 102 rückgesetzt ist (Bit 6 des DLC-
Befehls-/Steuerregisters oder Rücksetzen der Hardware), geht
der Sender in den Zustand 0a 300 über. Der Sender bleibt im
Zustand 0, bis Daten in den Sende-FIFO 100 eingebracht
wurden, und das erste Byte dieser Daten das obere Ende des FIFO
erreicht. Zu diesem Zeitpunkt geht der Sender in den Zustand
1 über (Element 302).
-
Mit dem Übergang in den Zustand 1 (302) wird der Sender 102
als "im Rahmen" liegend bezeichnet. Im Zustand 1 sendet der
Sender 102 die Eröffnungsflagge. Nach dem Senden dieser
Flagge geht der Sender in den Zustand 2 (304) über.
-
Im Zustand 2 werden Daten aus dem Sende-FIFO 150 in das
Acht-Bit-Parallel-zu-Seriell-Schieberegister 110 geladen.
Serielldaten werden über den 2 : 1-Multiplexer 116 aus dem
Schieberegister in die Null-Bit-Einsetzeinheit 124 getaktet.
Die Daten werden sodann in den Seriellbusport (SBP) 104
eingegeben, wo sie wahlweise invertiert werden, und an das
Datenübertragungsnetzwerk weitergegeben. Der Sender verläßt
den Zustand 2, wenn das letzte Byte des Pakets bis zum
ersten FCS-Byte aus dem Parallel-zu-Seriell-Schieberegister
110 geschoben ist.
-
Wenn die CRC-Erzeugung gewählt wurde (Bit 5 des
DLC-Befehls/Steuerregisters), geht der Sender in den Zustand 3 (306)
über. Wenn die CRC-Erzeugung gesperrt ist, erfolgt ein
direkter Übergang vom Zustand 2 in den Zustand 4 (308). Im
Zustand 3 wird der invertierte Inhalt des CRC-Generators 120
nach dem ursprünglichen (jetzt vollständigen)
Paket-Datenstrom in die Null-Bit-Einsetzeinheit 124 eingegeben. Das
Invertieren des Ausgangs des CRC-Generators 120 ist aufgrund
des CRC-Algorithmus erforderlich. Nachdem die 16 Bits der
FCS (invertierte Inhalt des CRC-Generators) übertragen sind,
wird das Bit "Gültiges Paket gesendet" gesetzt (Bit 4 im
Unterbrechungsquellenregister) und es erfolgt der Übergang
in den Zustand 4 (308). Die Anzeige "Gültiges Paket
gesendet" kann eine maskierbare Unterbrechung erzeugen.
-
Im Zustand 4 wird ein Flaggenzeichen (die Schlußflagge)
gesendet. Der Sender 102 geht entweder in den Zustand 0a
(300), 0b (310) oder 1 (302) über, wenn die Übertragung der
Flagge beendet ist. Wenn Daten im Sende-FIFO 100 vorliegen
(ein neues Paket), tritt der Sender in den Zustand 1 ein.
Liegen in dem FIFO keine Daten vor, geht der Sender in den
Zustand 0 über. Die Auswahl des Flaggenbereitschaft- oder
des Bereitschaftsmarkierungszwischenrahmenfüllbits (Bit 3
des DLC-Befehls-/Steuerregisters) bewirkt die Wahl zwischen
den Zuständen 0a und 0b.
-
Es gibt fünf Ausnahmen von dem zuvor beschriebenen normalen
Ablauf der Ereignisse; Abbruch; Lokal-Rückschleife; Fern-
Rückschleife; der Sender ist gesperrt, während er im Rahmen
liegt, und FIFO-Unterlauf. Von diesen ist nur der
FIFO-Unterlauf ein Fehlerzustand.
-
Der Benutzer kann die Übertragung eines Pakets unterbrechen,
indem er das Senden eines Abbruchs anfordert (Bit 0 des DLC-
Befehls-/Steuerregisters). Wenn der Sender eine Aufforderung
zum Sendeabbruch erhält, geht er in den Zustand 5 (312)
über, in dem der Sender 102 mit dem Senden von
Abbruchzeichen beginnt (01111111, wobei 1 dar niederwertigste Bit
ist). Dieser Vorgang findet an der nächsten Bitgrenze statt,
nachdem das Sendeabbruchsbit durch die Software gesetzt
wurde; das Sende-FIFO 100 wird gelöscht. Es werden weiterhin
Abbruchzeichen gesendet, bis dieses Bit gelöscht ist. Der
Sender verläßt das Raster, wenn die Übertragung des Abbruchs
beginnt. Wenn das Sendeabbruchsbit gelöscht ist, geht der
Sender in den Zustand 0b über, wenn Flaggenbereitschaft
gewählt ist oder Daten am oberen Ende des FIFO vorliegen (ein
neues Paket); ansonsten geht er in den Zustand 0a über. In
allen Fällen wird wenigstens ein Abbruchzeichen gesendet,
selbst wenn das Sendeabbruchsbit durch aufeinanderfolgende
Befehle der CPU gesetzt und gelöscht wird. (Der Abbruch
dient dazu, dem Empfänger am anderen Ende der Verbindung
anzugeben, daß das gegenwärtig empfangene Paket beendet und
verworfen werden soll). Obwohl das Senden eines Abbruchs bei
außerhalb des Rahmens liegendem Sender (es wird kein Paket
gesendet) bedeutungslos ist, wird der Anforderung Rechnung
getragen. Sie hat jedoch keine Bedeutung auf der
Empfängerseite, wenn der Empfänger außerhalb des Rahmens liegt.
-
Zu Testzwecken kann die DLC in einem
Lokal-Rückschleifenbetriebsmodus (Bit 3 des SBP-Steuerregisters (Anhang A))
betrieben werden. In diesem Modus ist der DLC-Sender 102 zu
demselben Zeitpunkt deaktiviert, zu dem das Sendefreigabebit
(Bit 1 des Befehls-/Steuerregisters) implementiert ist. Der
DLC-Empfänger 108 ist ebenfalls deaktiviert, um eine Störung
der Rückschleife durch eingehende Daten zu vermeiden. Der
Sender wird sodann mit dem Empfänger verbunden und der
Sendetakt wird als die Zeitsteuerungsreferenz für den Sender
und den Empfänger verwendet. Sodann können Pakete auf
normale Weise übertragen werden, mit der Ausnahme, das kein
Ausgang aus dem Teil erfolgt. Der Empfänger empfängt das Paket
als ob es von außerhalb des IDPC 10 stamme. Zum
Rückschleifenbetrieb wird auf Anhang A verwiesen.
-
Die durch Setzen des Bits 4 des SBP-Steuerregisters gewählte
Fern-Rückschleife bewirkt, daß jeglicher Vorgang am SBIN-
Eingang des Empfängers 108 am SBOUT-Ausgangspin
widergespiegelt wird. Der DLC-Sender 102 ist von dem SBOUT-Pin über den
Transistor 204 entkoppelt. Arbeitet der SBP im multiplexten
Kanalmodus, wird jedes Bit (durch SFS/XMITCLK konditioniert)
bei der nächsten Abstiegsflanke des Empfangstakts gesendet,
d. h., bei der Anstiegsflanke des SCLK am SBIN-Pin empfangene
Daten werden durch die nachfolgende Abstiegsflanke des SCLK
aus dem SBOUT-Pin ausgetaktet. Arbeitet der SBP 104 im
nicht-multiplexten Modus, werden über SBIN empfangene
Datenbits (die durch die positive Flanke des Empfängertakts
[SCLK] eingetaktet wurden) bitweise unter Verwendung der
negativen Flanke desselben Takts (SCLK) ausgetaktet. Der
DLC-Empfänger 108 kann in diesem Zustand immer noch Daten
empfangen.
-
Wenn versucht wird, den DLC-Sender 102 zu verwenden, während
dieser sich im Fern-Rückschleifenmodus befindet,
funktioniert der Sender normal, jedoch verlassen keine Daten den
IDPC 10.
-
Der DLC-Sender 102 ist deaktiviert, während er im Rahmen
ist. Der Sender fährt normal mit der Verarbeitung des
Rahmens fort und sperrt den SBOUT-Pin sobald die Schlußflagge
gesendet wurde. Sobald die Schlußflagge gesendet ist, führt
der Sender den Sender in den Zustand 0 zurück und entkoppelt
den SBOUT-Pin über den Transistor 204 (versetzt ihn in einen
offenen Drain-Zustand ohne die Fähigkeit, im Low-Zustand
betrieben zu werden).
-
Ein FIFO-Unterlauf tritt auf, wenn der Sender versucht,
während er im Rahmen ist, aus einem leeren Sende-FIFO 100
ein Datenbyte zu entnehmen. Dieser Zustand wird über das Bit
4 des FIFO-Statusregisters (Anhang A) mitgeteilt und es wird
eine maskierbare Unterbrechung erzeugt. Dies bewirkt, daß
das FIFO-Statusregisterbit in das
Unterbrechungsquellenregister (Anhang A) gesendet wird (wenn die
Unterlaufunterbrechung in dem FIFO-Statbsunterbrechungsfreigaberegister
freigegeben ist). Wird der FIFO-Unterlauf erkannt, geht der
DLC-Sender 102 in den Zustand 6 (314) über, in dem ein
Abbruchzeichen (01111111) gesendet wird, und der Sender geht
erneut in den Zustand 0 über.
-
Im folgenden wird der Normalbetrieb des DLC-Empfängers 108
in Zusammenhang mit Fig. 20 beschrieben, welche ein
empfangsseitiges Statusdiagramm darstellt. Nach dem Rücksetzen
der Hardware des IDPC 10 oder wenn 14 durch die Software
rückgesetzt wird (Bit 6 des DLC-Befehls-/Steuerregisters),
ist der DLC-Empfänger 108 deaktiviert und befindet sich im
Zustand 0 (316 in Fig. 20).
-
Wenn der Empfänger 108 deaktiviert wird (durch das Löschen
des Bits 2 des DLC-Befehls-/Steuerregisters), wird die
Verbindung zwischen dem SBIN-Pin und dem Empfänger über den
Transistor 234 unterbrochen. Dies ist die einzige
Auswirkung, die das Sperren des Empfängers auf den Rest der DLC 52
hat. Sämtliche anderen Empfängerfunktionen arbeiten auf
dieselbe Weise, wie im aktiven Zustand des Empfängers.
-
Der Bediener initialisiert den DLC-Empfänger 108 über die
auf dem Mikroprozessor 18 laufende Software durch: Wählen
der Dateninversion/Daten-Nichtinversion (Bit 0 des
SBP-Steuerregisters
(Anhang A)), Spezifizieren der
SBP-Kanalkonfiguration (Bits 1 und 2 des SBP-Steuerregisters), Freigeben der
CRC-Prüfung, falls gewünscht (Bit 4 des
DLC-Befehls-/Steuerregisters (Anhang A)), Wählen des gewünschten Adressiermodus
(Adreßsteuerregister (Anhang A)), Laden der zu erkennenden
Adresse(n) (Adreßregister), Angeben der Mindestpaketgröße
(Mindestpaketgrößenregister 264 (Anhang A)), Angeben der
maximalen Paketgröße (Maximal-Paketgrößenregister (Anhang
A)), und schließlich durch Freigeben des Empfängers 108 (Bit
2 im DLC-Befehls-/Steuerregister).
-
Der DLC-Empfänger 108 beginnt seinen Betrieb im Zustand 0
(316). Im Zustand 0 untersucht der Empfänger den eingehenden
Datenstrom (der vom SBIN-Pin her bei der Anstiegsflanke von
SCLK eingetaktet wird (SCLK-Pin)) Bit für Bit auf das
Vorhandensein eines Flaggenzeichens. Im Zustand 0 werden keine
Daten über die Flaggen-/Abbrucherkennungseinheit 214 hinaus
weitergeleitet. Die Erkennung einer Flagge bewirkt einen
Übergang in den Zustand 1 (318).
-
Im Zustand 1 wird der Datenstrom Zeichen für Zeichen auf das
Vorhandensein eines Nicht-Flagge-/Nicht-Abbruch-Zeichens hin
untersucht (Zeichengrenzen werden durch den Empfang einer
Flagge gebildet). Wenn das der Flagge folgende Zeichen eine
weitere Flagge ist, bleibt der Empfänger im Zustand 1. Wenn
das Zeichen ein Abbruchzeichen ist, geht der Empfänger
erneut in den Zustand 0 über. Wenn das Zeichen keine Flagge
oder ein Abbruch ist, gilt der Empfänger als im Rahmen
liegend und er geht in den Zustand 2 (320) über.
-
Im Zustand 2, werden Daten über den Flaggen-/Abbruchdetektor
214 hinaus zur Null-Bit-Erkennungseinheit 218 geleitet. Hier
wird das auf fünf beliebige zusammenhängende EINSen folgende
Bit gelöscht (dieses Bit sollte stets eine NULL sein und
wurde durch den Sender eingesetzt, um zu verhindern, daß
Datenmuster als Flaggen- oder Abbruchzeichen erkannt werden
- die jeweils sechs oder sieben aufeinanderfolgende EINS-
Bits aufweisen). Das erste oder die ersten beiden Zeichen,
die auf die Eröffnungsflagge des Pakets folgen, sind
normalerweise das Adreßfeld (während das Adreßfeld mehr als zwei
Bytes lang sein kann, kann der Empfänger nur die ersten
beiden Bytes einer jeglichen Adresse untersuchen - alle
weiteren Bytes werden als Daten behandelt). Wenn die
Adressenerkennung freigegeben ist (Bits 0-4 des
Adreßsteuerregisters), werden diese Zeichen von der Adreßerkennungseinheit
226 auf eine Übereinstimmung mit einer der fünf
freigegebenen vorprogrammierten Adressen (vier programmierbare
Adressen und die allgemeine Adresse) untersucht. Ist keine
Übereinstimmung festzustellen, kehrt der DLC-Empfänger 108 in
den Zustand 0 zurück (Suche nach Flaggen). Das gegenwärtig
gesendete Paket wird ignoriert und es wird kein
Zustandsbericht darüber abgegeben. Wenn jedoch eine
Adressenübereinstimmung gegeben ist (oder die Adreßerkennung deaktiviert
war, in welchem Fall alle Rahmen akzeptiert werden), wird
das Raster empfangen und byteweise (einschließlich des
Adreß-, Steuer-, Informations- und FCS-Felds) in das
Empfangs-FIFO 106 eingegeben. Jedes empfangene Zeichen wird in
das Empfangs-FIFO 108 geladen, wenn es die letzten acht Bits
des 16 Bit langen Seriell-zu-Parallel-Schieberegisters 208,
210 erreicht (ausgenommen das im folgenden behandelte letzte
Zeichen).
-
Der Eintritt in den Zustand 2 erfolgt normalerweise immer,
wenn der Flaggen-/Abbruchdetektor 214 ein Flaggenzeichen
empfängt. Wenn eine Flagge erkannt wird, geht der Empfänger
in den Zustand 1 über. (Inverse Pakete können gemeinsame
Eröffnungs- und Schlußflaggen haben.) Zum Zeitpunkt des
Erkennens der Flagge werden die beiden noch im 16 Bit langen
Seriell-zu-Parallel-Schieberegister 208, 210 befindlichen
vorhergehenden Zeichen unmittelbar in das Empfangs-FIFO 106
geladen und das zweite dieser beiden Bytes wird als das
letzte Zeichen in den Paket markiert. Die Markierung erfolgt
in Form eines an jedes Wort im FIFO angehängten neunten
Bits. Ist die CRC-Prüfung freigegeben (der Ausgang des CRC-
Komparators 222 ist zu diesem Zeitpunkt gültig), und ihr
Zustand (Fehler oder nicht) wird aufgezeichnet. Diese beiden
in das Empfangs-FIFO 106 geladenen letzten Zeichen sind die
Rahmenprüfsequenz (FCS), wenn die CRC-Prüfung freigegeben
ist.
-
Wenn ein Paket mit entweder einer Schlußflagge, einem
Abbruch oder einem Langrahmenfehler empfangen wurde, werden
seine Länge und sein Zustand zwischengespeichert. Diese
Informationen werden dem Benutzer angezeigt, wenn das (als
solches markierte) letzte Byte des Pakets aus dem Empfangs-
FIFO 106 (durch DMA oder programmiertes I/O) ausgelesen
wird. Eine (maskierbare) Unterbrechung, die den Empfang
eines Pakets und ihren Zustand anzeigt, werden zu diesem
Zeitpunkt erzeugt. Die Verzögerung des Berichts über den
Zustand ist erforderlich, da die Software des Benutzers auf
Paketebene arbeitet und das vollständige Paket nicht
erhalten hat, bis das letzte Byte aus dem Empfangs-FIFO 106 in
den Speicher 22 bewegt wurde. Im Normalbetrieb wird das
Empfangs-FIFO 106 automatisch durch die DMA entladen und der
Benutzer ist an dem Zustand eines Pakets nicht interessiert,
bis es vollständig in den Speicher übertragen ist.
-
Während des normalen Betriebsablaufs können sechs Fehler-
oder Ausnahmezustände auftreten. Dies sind: Empfang eines
Abbruchzeichens im Im-Rahmen-Zustand, ein CRC-Fehler, ein
Kurzrahmenfehler, ein Langrahmenfehler, ein Fehler durch
eine nicht ganzzahlige Byteanzahl und ein FIFO-Überlauf-
Fehler. Zusätzlich zu diesen sechs Fällen, kann der
Empfänger 108 in zwei Testmodi arbeiten: dem
Lokal-Rückschleifenmodus und dem Fern-Rückschleifenmodus.
-
Wird ein Abbruch empfangen während der Empfänger im Rahmen
ist (Zustand 2), wird das Paket beendet. Der Abbruch hat
gegenüber allen Empfangsfehlern Vorrang. Als Ergebnis dieses
Beendens werden mehrere Vorgänge durchgeführt: der Inhalt
des 16-Bit-Schieberegisters 208, 210 wird zum Empfangs-FIFO
106 bewegt; das letzte Byte wird als solches markiert,
während es in das FIFO verbracht wird; der DLC-Empfänger 108
kehrt zum Zustand 0 zurück; der Zustand, einschließlich des
Abbruch-Empfangen-Bits im Empfangsverbindungsstatusregister
(Anhang A), und die Bytezahl werden zwischengespeichert; und
wenn das letzte Byte des abgebrochenen Pakets aus dem
Empfangs-FIFO 106 ausgelesen ist, wird eine maskierbare
Unterbrechung erzeugt.
-
Wenn die Schlußflagge eines Pakets erkannt wird, hat die
CRC-Prüfeinheit 222 ihre Funktion beendet. Wenn die CRC-
Prüfung freigegeben ist (Bit 4 im Befehls-/Steuerregister),
wird der Ausgang der CRC-Prüfeinrichtung zu diesem Zeitpunkt
getestet. Wenn ein Fehler aufgetreten ist, wird dieser
Fehler aufgetreten ist, wird dieser Fehlerzustand zur
verzögerten Anzeige zwischengespeichert.
-
Wenn ein Paket, das (ausschließlich der Flaggen) weniger
Zeichen hat als in den Mindestempfangspaketgrößenregister
gespeichert und mehr als 16 Bits aufweist, (mit einer
Flagge) beendet wird, wird ein Kurzrahmenfehler angezeigt. Wenn
das Paket 16 oder weniger Bits hat, wird es ohne Mitteilung
an den Benutzer verworfen. Dies ist möglich, da zu diesem
Zeitpunkt keine Daten in das Empfangs-FIFO 106 eingegeben
waren. Wenn der Kurzrahmen mehr als 16 Bits enthält, wird
auf dieselbe Weise beendet wie ein normales Paket, mit der
Ausnahme, daß der Kurzrahmenfehler zur verzögerten
Berichtausgabe zwischengespeichert wird. Der Empfänger 108 kehrt
zum Zustand 1 zurück.
-
Der DLC-Empfänger 108 weist ein
Maximal-Empfangspaketgrößenregister (Anhang A) innerhalb des Blocks 212 auf, das zur
Angabe der maximalen zulässigen Paketlänge programmiert ist.
-
Ist die Zahl der empfangenen Bytes gleich dieser Zahl und es
wird zu diesem Zeitpunkt keine Flagge oder ein Abbruch
erkannt, ist ein Langrahmenfehler gegeben und das Paket wird
beendet. Dieses Beenden gleicht dem Beenden eines normalen
Rahmens, mit der Ausnahme, daß der Langrahmenfehlerzustand
zum Zwecke der verzögerten Berichterstattung
zwischengespeichert wird.
-
Wenn an einer Nicht-Bytegrenze eine Flagge erkannt wird
(wenn zwischen 1 und 7 Bits eines Zeichens empfangen
wurden), ist ein Fehler aufgrund einer nicht ganzzahligen
Bytezahl gegeben. Das Paket wird normal beendet, mit der
Ausnahme, daß das kurze Zeichen so wie es ist in das Empfangs-
FIFO 106 geladen wird (es wird als letztes Byte
gekennzeichnet), und der Nicht-Ganzzahlige-Bytezahl-Fehletzustand wird
zur verzögerten Berichterstattung zwischengespeichert. Es
sei darauf hingewiesen, daß bei einem alternativen
Ausführungsbeispiel des IDPC 10 die DLC Pakete, die eine nicht
ganzzahlige Anzahl von Bytes enthalten, empfangen und senden
kann.
-
Wenn ein Byte in die letzten acht Bitpositionen des 16-Bit
Schieberegisters 208, 210 geschoben wurde, wird es in das
Empfangs-FIFO 106 bewegt. Für die Ausführung dieses Vorgangs
steht eine Bitzeit zur Verfügung. Wenn der obere
Speicherplatz des Empfangs-FIFO-Puffers 106 beim Versuch dieses
Ladens gefüllt ist, wird das Laden blockiert. Wenn der
oberste Speicherplatz im Puffer nicht frei wird bevor das
nächste Bit in das Schieberegister geschoben werden soll, ist
ein FIFO-Überlaufzustand gegeben. Wenn dies geschieht, wird
das Paket beendet, das letzt Byte wird als das letzte Byte
des Pakets markiert, der Status wird einschließlich des
Überlaufstatusanzeigers für den verzögerten Bericht
zwischengespeichert und der Empfang kehrt zum Zustand 0 zurück
(wenn zur selben Zeit wie der Überlauf eine Flagge erkannt
wird, tritt der Empfang in den Zustand 1 ein).
-
Zu Testzwecken kann der Ausgang des DLC-Senders 102 zum
Empfänger 108 rückgeführt werden. Dieser Modus wird durch
Setzen des Bits 3 im SBP-Steuerregister (Anhang A) gewählt.
Im Rückschleifenmodus ist der Empfänger von seinem Eingang
(SBIN-Pin) durch den Transistor 234 isoliert.
-
Zu Testzwecken kann der Eingang des DLC-Empfängers 108
direkt dem Ausgangspin (SBOUT) des Senders zugeführt werden.
Dieser Modus wird gewählt, wenn das Bit 4 des
SBP-Steuerregisters gesetzt ist. Der Betrieb des Empfängers ist von
diesem Vorgang nicht betroffen.
-
Fig. 21 ist ein Funktions-Blockschaltbild des UART-Bereichs
54 des IDPC 10 der vorliegenden Erfindung. Der
erfindungsgemäße UART 54 ist mit dem Industrienorm-UART 8250
kompatibel, der auf den Seiten 357-371 des von Western Digital
Corporation, Copyright 1984, veröffentlichten
"Communications Products Handbook", beschrieben ist, wobei diese
Beschreibung durch Bezugnahme Teil des Offenbarungsgehalts
dieser Anmeldung ist, und der darüber hinaus einen Betrieb
im Synchronmodus und im Asynchronmodus ermöglicht. Der UART
54 weist ferner eine Spezialzeichenerkennungseinheit und
Sende- und Empfangs-in-First-out(FIFO)-Register auf.
-
Wie in Fig. 21 dargestellt, weist der UART 54 ein 10-Bit
Seriell-zu-Parallel-Empfangsschieberegister 400 auf, das
über eine Signalleitung mit einem
Empfangsdateneingangsanschluß des IDPC 10 verbunden ist. Das
Empfangsschieberegister 400 ist durch einen Bus 406 mit einem Empfangs-FIFO 404
verbunden. Datensignale werden durch das Register 400
empfangen und unter Steuerung durch Signale, die von einer
mehrere Status- und Steuerregister aufweisenden UART-Steuerung
408 her empfangen werden, in das FIFO 404
weitergeleitet. Das Empfangsschieberegister 400 und das Empfangs-FIFO
404 sind mit der Steuerung 408 verbunden. Das Empfangs-FIFO
404 enthält ein Empfangs-FIFO-Datenregister 404a, das am
"oberen Ende" des Empfangs-FIFO 404, d. h. an dem mit den
Bussen 58, 60 und 62 verbundenen Bereich des FIFO 404,
angeordnet ist.
-
Eine
Paritäts-/Spezialzeichen-/Rahmen-/Unterbrechungsprüfeinrichtung 412 ist mit dem Empfangsschieberegister 400, dem
Empfangs-FIFO 404 und der UART-Steuerung 408 verbunden. Die
Paritäts-/Spezialzeichen-/Rahmen-/Unterbrechungsprüfeinrichtung 412 weist einen Direktzugriffsspeicher 413 auf, wie in
Zusammenhang mit Fig. 22 im einzelnen beschrieben.
-
Ein mit der UART-Steuerung 408 verbundener
Empfangsmultiplexer 410 empfängt Empfangstaktsignale auf einer Signalleitung
409, die mit einem Eingangsanschluß des IDPC 10 verbunden
ist. Der Empfangstakt-MUX 410 weist einen mit dem
Empfangsschieberegister 400 verbundenen Ausgangsanschluß auf. Ein
Baud-Taktsignal, das von einer Baud-Ratenerzeugungseinheit
414 erzeugt wird, wird über eine Signalleitung 416 einem
zweiten Eingangsanschluß des Empfangstakt-MUX 410 sowie
einem ersten Eingang eines Sendetakt-MUX 418 zugeführt, der
ebenfalls des Empfangstakt über die Signalleitung 409
empfängt und mit der UART-Steuerung 408 verbunden ist. Der
Ausgangsanschluß des Sendetakt-MUX 418 ist mit einem
Parallel-zu-Seriell-Sendeschieberegister (XMIT) 420 verbunden.
-
Das XMIT-Schieberegister 420 empfängt über einen Bus 422
Signale von einem Sende-FIFO (XMIT) 424, das seinerseits mit
den Bussen 58, 60 und 62 verbunden ist. Das
XMIT-Schieberegister 420 ist wie das XMIT FIFO 424 mit der UART-Steuerung
408 verbunden und das
XMIT-Parallel-zu-Seriell-Schieberegister erzeugt Signale, die auf der Signalleitung 426 einem
XMIT-Datenanschluß des IDPC 10 zugeführt werden.
-
Das Sende-FIFO 424 weist ein Sende-FIFO-Datenregister 424a
auf, das am unteren Ende des Sende-FIFO 424, d. h. an dem mit
den Bussen 58, 60 und 62 verbundenen Bereich des FIFO 424,
angeordnet ist.
-
Eine Paritäts-/Rahmen-/Unterbrechungserzeugungseinheit 428
ist mit der UART-Steuerung 408 und dem XMIT-Schieberegister
420 und dem XMIT FIFO 424 verbunden.
-
Eine UART-Unterbrechungssteuerung 430 ist mit den Bussen 58,
60 und 62 verbunden und erzeugt über die Signalleitung 432
Signale an die UART-Steuerung 408. Die UART-Steuerung 408
empfängt die Signale "Bereit zum Senden" (CTS/), "Datensatz
bereit" (DSR/), "Ring-Indikator" (RI/) und
"Empfangsleitungssignalerkennung, (RLSD/), die von einem
Eingangsanschluß des IDPC 10 her zugeführt werden, und erzeugt die
Signale "Rückkehr zum Senden" (RTS) und "Datenanschluß
bereit" (DTS), die einem Ausgangsanschluß des IDPC 10
zugeführt werden.
-
Die zum Senden und Empfangen von Daten vom UART 54
verwendeten Takte kommen von einer von zwei Quellen: dem
Empfangstakteingang (RXCLK) oder dem Baudratengenerator 414. Die
Taktauswahl erfolgt über die Bits 0 und 1 in einem UART-
Steuerregister innerhalb des Status- und
Steuerregisterblocks 408. Der Anhang B enthält eine vollständige
Beschreibung des Registers innerhalb des UART-Blocks 408. Wie bei
den Status-/Steuerregistern werden zahlreiche Status- und
Steuersignale zwischen diesen Registern und den in Fig. 21
dargestellten UART-Elementen geleitet, was im einzelnen
nicht dargestellt ist.
-
Der Baudratengenerator 414 ist ein programmierbarer Teiler,
der ein an den UARTCLK-Pin angelegtes Signal über die
Leitung 414 empfängt. Der Generator 414 liefert einen Baud-Takt
an den Empfänger- und den Senderbereich des UART. Der über
die Leitung 414 empfangene Eingangstakt wird über einen
programinierbaren 16-Bit-Teiler (1-65536) geteilt. Der
programmierbare Teiler wird konfiguriert, indem das
Divisorzwischenspeicher-LSB und das Divisorzwischenspeicher-MSB-
Register (Anhang B) geladen werden. Der Zugriff auf diese
Register erfolgt durch Setzen des
Divisorzwischenspeicherzugriffsbits (DLAB), Bit 7 im Leitungssteuerregister (Anhang
B) der Steuerung 408, und durch anschließendes Schreiben der
UART-Adressen 0 und 1 (dies sind die DATA-Register- und
Unterbrechungsfreigaberegisteradressen wenn das DLAB-Bit
gelöscht ist).
-
Im Asynchronmodus wird der Baudratengenerator 414
aufähnliche Weise auf einen Wert programmiert, der dem 16-Fachen
der Empfangstaktrate entspricht.
-
Die Quellen des Sender- und des Empfängertakts sind
unabhängig über den Empfangstakt-MUX 410 bzw. den Sendetakt-MUX 418
wählbar. Zum Beispiel: wenn das Bit 0 im UART-Steuerregister
gesetzt ist, wählt der Empfangstakt-MUX 410 den Ausgang des
Baudratengenerators 414 für seinen Takt. Wenn das Bit 0
gelöscht ist, wird der EXCLK-Eingang verwendet. Das gleiche
gilt für den Sendetakt-MIX 418, mit der Ausnahme, daß in
diesem Fall das Bit 1 im UART-Steuerregister (Anhang B) die
Taktquelle angibt.
-
Der UART 54 hat zwei hauptsächliche Betriebsarten: asynchron
und synchron.
-
Im Asynchronmodus werden die Empfangs- und
Sendeschieberegister 400 und 420 mit einer Rate getaktet, die dem 16-Fachen
der Baudrate entspricht. Der Asynchronbetrieb ist über den
Mikroprozessor 18 durch Löschen des Bits 2 des
UART-Steuerregisters (Anhang B) der Steuerung 408 auf NULL wählbar. Wie
zuvor beschrieben, kann die Taktquelle entweder der interne
Baudratengenerator 414 oder ein externer Eingang
(Empfangstakteingang, RXCLK) sein. Die Wahl des Empfangstakts ist
durch das Bit 0 des UART-Steuerregisters bestimmt, während
die Wahl des Sendetakts durch das Bit 1 des
UART-Steuerregisters bestimmt ist.
-
Beim Synchronbetrieb wird das Empfangsschieberegister 400
mit derselben Rate getaktet wie die Daten. Das bedeutet, daß
die Daten und der Takt synchron miteinander sein müssen. Die
Daten werden bei der Anstiegsflanke des Takts in das
Empfangsschieberegister 400 gespeichert. Der Synchronbetrieb
wird durch Setzen des Bits 2 des UART-Steuerregisters
gewählt.
-
Der von dem Sendeschieberegister 420 verwendete Takt ist
auch die Datenrate. Die Daten werden bei der Abstiegsflanke
des Takts aus dem Schieberegister 420 geschoben. Der
Sendetakt kann entweder vom Baudratengenerator 414 oder dem
externen Empfangstakteingang (RXCLK) geliefert werden.
-
Die Daten werden als kontinuierlicher Bitstrom ohne
Rasterung (Start- und Stop-Bits) übertragen. Wenn das
Sendeschieberegister 420 geladen ist, wird sein Inhalt direkt
übertragen. Das folgende Datenbyte wird mit dem vorhergehenden
verbunden. Wenn das Schieberegister 420 und das FIFO 424
leer sind, wird die Leitung in einen Markierungszustand
(EINSen) versetzt.
-
Die Daten werden über die Leitung 402 als kontinuierlicher
Bitstrom ohne Rasterung und daher ohne Zeichengrenzen
empfangen. Wenn acht Bits im Empfangsschieberegister 400
empfangen sind, werden sie in das Empfangs-FIFO 404 geladen.
Wenn die Leitung 402 bereit ist (Markieren), empfängt das
Empfangsschieberegister 400 Bytes, die nur EINSen aufweisen
(und schiebt sie in das FIFO). Dieser Modus ist bei
synchronen Anwendungen mit geringen Geschwindigkeiten nützlich, da
die Verbindung von einem Ende zum anderen - IDPC 10 UART zu
ISDN, zu IDPC UART - erscheint den Benutzern an beiden Enden
als eine einteilige Leitung. Es werden Daten abgetastet und
übertragen so lange Empfangstaktimpulse empfangen werden.
-
Das Empfangsschieberegister 400 dient zum Umsetzen serieller
Daten in parallele Zeichen. Die seriellen Daten werden, je
nach Wahl durch den Takt-MUX 410, im Asynchronmodus durch
das Datenabtast-Strobesignal auf der Leitung 416 und im
Synchronmodus durch die Anstiegsflanke des Empfangstakts auf
der Leitung 412 in das Schieberegister getaktet.
-
Asynchrone Operation - Das Datenabtast-Strobesignal wird von
dem Baudratengenerator 414 auf folgende Weise erzeugt: Wenn
der UART-Empfänger kein Zeichen empfängt wird die
Anstiegsflanke des 16X-Takts zum Abtasten des
Empfangsdateneingangssignals (RXD) auf der Leitung 402 verwendet. Wenn RXD seit
der letzten Anstiegsflanke des 16X-Takts von High nach Low
übergegangen ist, wurde ein potentielles Start-Bit erkannt.
Bleibt die RXD-Signalleitung für wenigstens drei Taktzyklen
auf niedrigem Pegel, wird das Start-Bit als gültig
angesehen; wenn nicht, wird es ignoriert. Davon ausgehend, daß das
Start-Bit als gültig bestimmt wurde, wird die achte
Anstiegsflanke des Takts nach dem Übergang des RXD-Signals
(Beginn des Start-Bits) zum Synchronisieren eines durch 16
teilenden Zählers innerhalb des Baudratengenerators 414
verwendet, wobei der Zähler des 16X-Empfangstakt teilt, um das
Datenabtast-Strobesignal (Baudtakt) zu bilden. Sodann wird
das RXD-Signal auf der Leitung 402 durch den Baudtakt einmal
pro Bit in dem zu empfangenden Zeichen abgetastet.
-
Das Empfangsschieberegister 400 ist zehn Bits lang, wodurch
bis zu acht Datenbits, ein Paritätsbit und das Start-Bit
aufgenommen werden können. Wenn das vorhergehende Zeichen
aus dem Schieberegister 400 in das FIFO 404 bewegt ist, oder
beim Rücksetzen, wird das Schieberegister 400 ausschließlich
mit EINSen geladen. Daten werden zuerst in das
Schieberegisterstart-Bit geschoben (das Start-Bit ist eine NULL). Wenn
das Start-Bit das Ende des Schieberegisters erreicht
(Bitposition zehn Übergänge von High nach Low), ist das Zeichen
vollständig empfangen. Es sei darauf hingewiesen, daß bei
Zeichen von weniger als acht Bits (oder einem
Acht-Bit-Zeichen ohne Parität) die Daten an einer Bitposition in das
Schieberegister geladen werden, die der Bitposition
geringerer Ordnung näher ist, so daß das Start-Bit am Ende des
Zeichens an der letzten Bitposition auftritt. Dieses
Verfahren eliminiert die Notwendigkeit eines Zählers zum
Nachhalten der Zahl der empfangenen Bits.
-
Wenn das RXD-Signal bei der nächsten Bitzeit nach dem
Empfang des letzten Bits eines Zeichens mit niedrigem Pegel
abgetastet wird, liegt ein Rahmenfehler vor, der über das
Bit 3 des Leitungsstatusregisters berichtet wird. Das
Zeichen, das den Rahmenfehler aufweist wird nicht in das FIFO
404 geladen.
-
Wenn der UART 54 Zeichen empfängt, die weniger als acht
Datenbits aufweisen, werden die zusätzlichen Bits höherer
Ordnung in dem 8-Bit-Byte, das in das Empfangs-FIFO geladen
werden soll, werden auf NULL gesetzt.
-
Synchrone Operation - Im Synchronmodus wird das RXD-Signal
bei jeder Anstiegsflanke des über die Signalleitung 409
empfangenen 1X-Empfangstakts abgetastet. Daten werden in
jedem Taktzyklus in das Empfangsschieberegister 400
geschoben. In diesem Modus existieren keine Start- oder Stop-Bits.
Ein Datenbyte wird alle acht Bitzeiten empfangen und in das
Empfangs-FIFO 404 geladen.
-
Empfangene Daten werden in ein vier Byte tiefes Empfangs-
FIFO 404 geladen. Das Empfangs-FIFO 404 ist vorzugsweise vom
"Bubble-up" -Typ. Eine Unterbrechungsstatusflagge wird in dem
Unterbrechungsidentifizierungsregister (Bits 1-3) gesetzt,
wenn die Zahl der Zeichen in dem FIFO den in dem Empfangs-
FIFO-Schwellenfeld des UART-Steuerregisters (Bits 3 und 4)
spezifizierten Wert erreicht hat. Das Bit 3 im
UART-Statusregister wird gesetzt, wenn die Empfangs-FIFO-Schwelle
erreicht ist, und es wird gelöscht, wenn der Stand des FIFO
404 unter die Schwelle fällt. Es wird intern eine
Zeitabschaltung erzeugt, wenn die Zahl der empfangenen Zeichen
geringer ist als der FIFO-Schwellenwert (0) und während 1600
Baud-Taktzyklen im Asynchronmodus und 100 Taktzyklen im
Synchronmodus (ungefähr zehn Zeichenzeiten) keine Zeichen
empfangen wurden. Die Zeitabschaltung setzt das Bit 0 im
UART-Statusregister und erzeugt eine maskierbare
Unterbrechung.
-
Daten werden aus dem FIFO ausgelesen, und zwar durch den
Mikroprozessor 18 aus einem Empfangs-FIFO-Datenregister
404a, das mit den Bussen 58, 60 und 62 verbunden ist. Das
Vorhandensein gültiger Daten im Empfangs-FIFO-Datenregister
404a wird durch das (Empfangsdaten-verfügbar-) Bit 0 im
Leitungsstatusregister angegeben.
-
Wenn das Empfangs-FIFO 404 voll ist, wenn ein neu
empfangenes Zeichen in das FIFO geladen werden soll, wird über das
Bit 1 im Leitungsstatusregister ein Überlauffehler
angezeigt.
-
In Fig. 22 ist ein Paritätsprüf- 412a und ein RAM-Bereich
413 einer
Paritäts-/Spezialzeichen-/Rahmen-/Unterbrechungsprüfeinrichtung 412 dargestellt, die mit dem Empfangs-FIFO
404 verbunden ist, das 10 Bits breit ist, nämlich acht
Datenbits, eine Spezialzeichenflagge und eine
Paritätsfehlerflagge. Das Element 412 prüft die Paritäts-, Rahmen- und
Spezialzeichenzustände wenn Daten in das FIFO 404 geladen
werden. Insbesondere wird das Vorhandensein eines Zeichens,
das einen Paritätsfehler aufweist, durch den Paritätsprüfer
412a in dem Leitungsstatusregister angegeben, oder es wird
ein Spezialzeichen durch Vergleich mit dem RAM 413 in dem
Leitungsstatusregister angegeben. Die Paritätsfehlerflagge
und die Spezialzeichenflagge werden entsprechend gesetzt.
Unterbrechungen (falls freigegeben) werden erzeugt, wenn
einer der Zustände erkannt wird. Nur die Datenbits können
von dem Benutzer gelesen werden. Während Spezialzeichen- und
Paritätsfehlerunterbrechungen erzeugt werden, wenn das
Zeichen in das Empfangs-FIFO 404 geladen wird, werden die
Paritätsfehler-liegt-vor- und
Spezialzeichen-verfügbar-Statusbits (im UART-Statusregister) nicht gesetzt, bevor das
Zeichen am FIFO-Ausgang 404a vorliegt. Dies ermöglicht es dem
Benutzer zu erkennen, welches Zeichen die Unterbrechung
verursacht hat.
-
Wenn der UART 54 zum Empfangen von Zeichen mit weniger als
acht Bits programmiert ist, werden die unbenutzten
Bitpositionen mit NULLen gefüllt, während das Zeichen in das
Empfangs-FIFO 404 geladen wird.
-
Die Spezialzeichenerkennung erfolgt innerhalb des Elements
412, das mit dem Empfangsschieberegister 400 und dem
Empfangs-FIFO 404 verbunden ist. Wenn das Schieberegister 400
ein gültiges Zeichen empfangen hat, werden die unteren
sieben Bits seines Bitmusters als Verweis in den 128 Bit tiefen
RAM 413 verwendet. Bits in dem 128-Bit-RAM 413 werden durch
den Mikroprozessor 18 gesetzt und gelöscht. Wenn das von den
Daten adressierte RAM-Bit gesetzt ist (1), wird das Zeichen
durch das Setzen des Bits 7 in dem Leitungsstatusregister
als "speziell" gekennzeichnet. Dieser Test wird
durchgeführt, wenn das Zeichen in das Empfangs-FIFO 404 geladen
wird. Eine Unterbrechung wird nur dann erzeugt, wenn das
Spezialzeichenfreigabebit gesetzt ist (Bit 5 im
Unterbrechungsfreigaberegister) Das Spezialzeichen-empfangen-Bit
dient zum Anzeigen des Vorhandenseins eines
Unterbrechungszustands. Ein zweites Bit, das Bit 2 im UART-Statusregister,
wird verwendet, um anzugeben, welches Zeichen im FIFO ein
spezielles Zeichen ist. Dieses Bit wird nicht gesetzt, bis
das Zeichen am Ausgang des FIFO vorliegt.
-
Die Spezialzeichenerkennungseinheit 412 verwendet die
empfangenen Zeichen als Adressen in einem 128-Bit RAM 413. Der
128-Bit Ram ist aus der Sicht des Spezialzeichendetektors
als 128 · 1-Array und aus Sicht des Benutzers als 16 · 8-
Array organisiert. Der KAM 413 wird durch den Benutzer
geladen, indem in eines oder mehrere der 16 Register
eingeschrieben wird. Das erste Register, das sich an der
relativen Adresse 9 befindet, enthält die ersten acht Bits des
128-Bit-Speicherfelds. Das Bit 0 in dem Feld entspricht dem
Bit 0 im ersten Register. Die Bits 15-8 befinden sich im
zweiten Register (Adresse 10) und so weiter. Der Vorgabewert
beim Rücksetzen ist durchgehend NULL.
-
Das Paritätsprüfelement 412a prüft die Parität aller
empfangenen Zeichen während des Ladens in das Empfangs-FIFO 404.
Wenn eine Verletzung aufgetreten ist und die Parität
aktiviert ist (Bit 3 des Leitungssteuerregisters (Anhang B)),
wird das Paritätsfehlerbit gesetzt (Bit 2 des
Leitungsstatusregisters (Anhang B)). Wenn die
Empfängerleitungsstatusunterbrechung freigegeben ist (Bit 2 des
Unterbrechungsfreigaberegisters (Anhang B)), wird eine Unterbrechung erzeugt.
Ein zweites Statusbit, das Bit 1 im UART-Statusregister
(Anhang B)) wird gesetzt, wenn das Zeichen, das den
Paritätsfehler aufweist, den Ausgang des Empfangs-FIFO 404
erreicht. Dies ermöglicht es dem Benutzer festzustellen,
welches Zeichen in dem FIFO 404 den Fehler enthält. Die Auswahl
der geradzahligen oder der ungeradzahligen Parität erfolgt
über das Bit 4 des Leitungsstatussteuerregisters. Der UART
54 kann in einem Testmodus betrieben werden, der das
Erzeugen des Paritätsbits erzwingt und sodann im dem
programmierten Zustand (geradzahlig oder ungeradzahlig)
entgegengesetzten Zustand erkennt. Dieser Stick-Paritätsmodus wird durch
Setzen des Bits 5 im Leitungssteuerregister initiiert.
-
Rahmenfehler werden durch das Element 412 ermittelt. Die
Rasterung ist nur im asynchronen Betriebsmodus gültig. Im
Synchronmodus wird die Rasterung nicht geprüft.
-
Das Bit 3 des Leitungsstatusregisters wird gesetzt, wenn das
empfangene Zeichen kein gültiges Stop-Bit aufweist und kein
Unterbrechungszustand gegeben ist. Eine Unterbrechung wird
erzeugt, wenn das Leitungsstatusunterbrechungsfreigabebit
gesetzt ist (Bit 2 des Unterbrechungsfreigaberegisters)
-
Die Unterbrechungserkennung erfolgt im Element 412. Die
Unterbrechungserkennung ist nur im Asynchronmodus gültig. Im
Synchronmodus findet keine Unterbrechungserkennung statt.
Das Bit 4 im Leitungsstatusregister wird gesetzt, wenn der
Empfangsdateneingang für mehr als eine volle Zeichenzeit
(Start-Bit+ Datenbits + Paritätsbit + Stop-Bits) Leerstellen
(0) erzeugt. Zur Erzeugung einer Unterbrechung muß die
Empfangsleitungsstatusunterbrechung freigegeben sein.
-
Daten, die durch den Mikroprozessor 18 über die Busse 58, 60
und 62 in das Sende-FIFO 424 übertragen wurden, werden in
das Parallel-zu-Seriell-Sendeschieberegister 420 geladen und
durch den von dem Sendetakt-MUX 418 gewählten Sendetakt
synchronisiert herausgeschoben. Parität kann erzeugt und an die
Daten angefügt werden. Die Zeichenlänge und die Zahl der
Stop-Bits sind über den Mikroprozessor 18 programmierbar.
Unterbrechungsanzeigen können durch den UART-Sender erzeugt
werden.
-
Der an das Sendeschieberegister 420 angelegte
Schieberegistertakt kann, je nach Wahl durch den Sendetakt-MUX 418,
entweder vom Baudratengenerator 414 her kommen oder der vom
Eingangspin empfangenen Eingangstakt sein. Die
Taktquellenwahl erfolgt über die Sendetaktwahl (Bit 2) im
UART-Steuerregister. Die Eingabequelle für den Schieberegistertakt
beträgt im Asynchronmodus das 16-Fache der Datenrate und im
Synchronmodus das Einfache der Datenrate. Der
Synchronbetrieb wird über das Bit 2 im UART-Steuerregister gewählt.
(Nur) im Asynchronmodus teilt die Sendelogik automatisch den
Takt durch 16. Daten werden bei der Abstiegsflanke des Takts
aus dem Schieberegister 420 geschoben.
-
Bit 6 des Leitungsstatusregisters wird gesetzt, wenn das
Sende-FIFO 424 leer ist und das letzte Bit aus dem
Schieberegister 420 geschoben ist. Durch diesen Zustand kann eine
Unterbrechung erzeugt werden.
-
Von dem UART 54 zu sendende Daten werden durch den
Mikroprozessor 18 in das Sende-FIFO 424 geladen. Während das
Sendeschieberegister 420 leer wird, wird es aus dem FIFO 424
geladen. Wenn die Zahl der Bytes in dem FIFO 424 gleich
einer oder kleiner als eine programmierbare Schwelle ist,
wird das Sende-FIFO-Schwelle-Erreicht-Bit (5) im
Leitungsstatusregister (Anhang B) gesetzt. Eine Unterbrechung wird
erzeugt (falls freigegeben), wenn der FIFO-Stand auf den
prograininierten Schwellenwert sinkt (der Übergang erzeugt die
Unterbrechung, nicht die Tatsache, daß der Stand des FIFO
auf oder unter dem Wert liegt). Die Schwelle wird über die
Bits 5 und 6 des UART-Steuerregisters programmiert. Die
Parität, falls gewählt, wird durch das mit dem XMIT FIFO 424
und dem XMIT-Schieberegister 420 verbundene Element 428
erzeugt, während die Daten aus dem FIFO in das
Schieberegister bewegt werden.
-
Die Rahmenerzeugung durch das Element 428 erfolgt nur im
Asynchronbetriebsmodus. Die Zahl der Stop-Bits und die
Zeichenlänge werden in den UART-Sender einprogrammiert. Diese
Parameter gelten ebenfalls für den Empfänger. Die Zahl der
Stop-Bits wird in das Leitungssteuerregisterbit 2
einprograminiert. Die Zeichenlänge wird durch die Bits 0 und 1 des
Leitungssteuerregisters programmiert.
-
Die Unterbrechungserzeugung erfolgt ebenfalls durch das
Element 428. Unter Steuerung durch den Mikroprozessor 18
überträgt der UART 54 ein nur aus NULLen bestehendes
"Unterbrechungsmuster", bis das Unterbrechungsbit von dem
Mikroprozessor 18 rückgesetzt wird. Das
Unterbrechungsanforderungsbit ist das Bit 6 in dem Leitungssteuerregister. Der
UART 54 wartet, bis ein beliebiges gegenwärtig übertragenes
Zeichen vollständig ist, bevor er eine Unterbrechung
überträgt. (Ein Minimum von zehn aufeinanderfolgenden NULL-Bits
wird stets gesendet, wenn eine Unterbrechung angefordert
wird.) Der UART-Sender geht für mindestens eine Bitzeit nach
dem Senden einer Unterbrechung auf HIGH zurück, bevor ein
neues Zeichen gesendet wird. Dies ermöglicht das Erkennen
des Start-Bits des neuen Zeichens.
-
Die UART-Steuerung 408 liefert Handshake-Signale zur
Verwendung beim Steuern der Kommunikation zwischen dem IDPC 10
und einem externen Anschluß. Diese Signale sind: RTS/, CTS/,
DSR/ und DTR/. RTS/ und DTR/ sind Ausgänge an den Anschluß.
Sie werden von der CPU über die Bits 1 bzw. 0 im
Modemsteuerregister (Anhang B) gesteuert. CTS/ und DSR/ sind Eingänge
vom Anschluß. Ihr Status kann an den Modemstatusregisterbits
4 bzw. 5 abgelesen werden. Die Eingänge CTS/ und DSR/
erzeugen eine Modemstatusunterbrechung, wenn sie sich seit dem
letzten Auslesen des Modemstatusregisters verändert haben.
Diese Unterbrechung wird über das
Unterbrechungsfreigaberegisterbit 3 freigegeben. Die Bits Delta CTS und Delta DSR im
Modemstatusregister (0, 1) geben die Tatsache wieder, daß
sich der Status von CTS/ oder DSR/ seit dem letzten Lesen
des Modemstatusregisters verändert hat. Das Auslesen des
Registers löscht diese Bits.
-
Der UART 54 weist zusätzlich zu den von dem IDPC verwendeten
Leitungen vier Handshake-Leitungen auf. Diese sind: Ring-
Indikator (RI/), Empfangsleitungssignalerkennung (RLSD/),
Ausgang 1 und Ausgang 2. RI/ und RLSD/ sind Eingänge in den
UART. Ihr Status wird durch die Bits 6 bzw. 7 des
Modemstatusregisters angegeben. Beim Erkennen der Rückflanke von RI/
(RI/ wird inaktiv - high) wird eine Unterbrechung erzeugt.
Dies wird über das Bit 2 im Modemstatusregister angegeben.
Eine Unterbrechung wird erzeugt, wenn sich RLSD/ seit dem
letzten Auslesen des Modemstatusregisters verändert hat.
Diese Angabe Delta RLSD/ wird über das Bit 3 im
Modemstatusregister angegeben. Die Signale Ausgang 1 und 2 sind
Allzweckausgänge. Sie werden jeweils durch Setzen und Löschen
der Bits 2 und 3 im Modemsteuerregister gesteuert.
-
In Fig. 2 ist eine Dualport-Zeitsteuerungseinrichtung (DPTC)
56 dargestellt, die mit dem MPI 50 über eine Steuerleitung
57 und mit den internen IDPC-Bussen 58, 60 und 62 verbunden
ist. In Fig. 2 sind ferner mit der DPTC 56 verbundene
Signalleitungen dargestellt, die Signale zu und von Extern-
Anschlußpins des IDPC 10 leiten. Diese umfassen
Busarbitrationssteueranschlüsse: einen
Lokal-Prozessorbusanforderungseingangsanschluß (LREQ/), einen
Lokal-Datensende-/-empfangseingangsanschluß (LDT-R/), einen lokalen
Bereitschaftsausgangsanschluß (LRDY), einen Host-Prozessorbusanforderungs
eingangsanschluß (HREQ), einen
Host-Datensende-/-empfangseingangsanschluß (HDT-R), einen
Host-Beereitschaftsausgangsanschluß (HRDY), einen
Host-Unterbrechungs-Ein-Eingangsanschluß (HINTIN), einen
Host-Unterbrechungsbestätigungseingangsanschluß (HINTACK), einen
Host-Unterbrechungs-Aus-Ausgangsanschluß (HINTOUT), einen
Lokal-Unterbrechungs-Aus-Ausgangsanschluß (LINTOUT). Ferner ist eine Gruppe aus vier
Host-Port-Ausgangssteuerleitungen (HPORT), eine Gruppe aus
drei RAM-Ausgangssteuerleitungen und vier
Lokal-Port-Ausgangssteuerleitungen (LPORT) vorgesehen. Die
HPORT-Ölleitungen weisen eine
Host-Datenzwischenspeicherfreigabeausgangsleitung (HDLE), eine Host-Datenbusfreigabeausgangsleitung
(HDBE/), eine Host-Adressenbusfreigabeausgangsleitung (HA-
BE/) und eine
Host-Datenzwischenspeicherausgangsfreigabeausgangsleitung (HDLOE/) auf. Die RAM-Steuerleitungen
bestehen aus einer RAM-Chipwählausgangsleitung (RAMCS/),
einer RAM-Schreibfreigabeausgangsleitung (RAMWE/) und einer
RAM-Ausgangsfreigabeausgangsleitung (RAMOE/). Die LPORT-
Ausgangsleitungen bestehen aus einer
Lokal-Adressenbusfreigabeausgangsleitung (LABE/), einer
Lokal-Datenzwischenspeicherfreigabeausgangsleitung (LDLE) und einer
Lokal-Datenzwischenspeicherausgangsfreigabeausgangsleitung (LDLOE/).
-
Die Signale auf den verschiedenen mit der DPTC 56
verbundenen Leitungen werden im folgenden näher erläutert.
-
Der Eingangspin wird als Richtungssteuerung für den DPTC-
Bereich 56 des IDPC verwendet, wenn der lokale Prozessor 18
auf einen gemeinsam genutzten RAM zugreift, der im folgenden
in Zusammenhang mit Fig. 23 beschrieben werden wird. Wenn
dieser Pin den High-Pegel annimmt, ist dadurch angegeben,
daß gerade ein Zyklus des Schreibens in den gemeinsam
genutzten RAM abläuft. Die Tatsache, daß LDT-R den High-Pegel
einnimmt, bewirkt, daß RAMWE/ und LDBE/ aktiviert werden
(low). Wenn LDT-R low wird, zeigt dies an, daß gerade ein
Zyklus des Lesens aus dem RAM abläuft. Zu diesem Zeitpunkt
werden KAMOE/, LDLE/ und LDLOE aktiviert (low). LDT-R wird
bei der nächsten Abstiegsflanke des CLK in den inaktiven
Zustand zurückgeführt.
-
HDT-R funktioniert genau wie LDT-R, mit der Ausnahme, daß es
die Richtungssteuerung ist, die zugeführt wird, wenn ein
entfernter Host auf den gemeinsam genutzten KAM zugreift.
-
Das LREQ/ ist ein vom lokalen Prozessor 18 her kommender
aktiver Low-Eingang in den IDPC, durch den Zugriff auf den
gemeinsam genutzten KAM gefordert wird. LREQ/ wird bei der
negativen Flanke jedes IDPC-Taktzyklus abgetastet. LREQ/ ist
normalerweise während zweier IDPC-Taktzyklen aktiv. Wenn es
aktiv abgetastet wird, treibt LREQ/ RAMCS/ und LABE/ aktiv
(low). LREQ/ muß zu dem Takt synchron sein.
-
Das Signal HREQ funktioniert genau wie LREQ/, mit der
Ausnahme, daß es von einem entfernten Host-Prozessor her kommt,
der Zugriff auf den gemeinsam genutzten RAM fordert, und daß
es aktiv high ist. HREQ ist in bezug auf den IDPC-Takt ein
asynchroner Eingang.
-
LRDY ist ein aktiver High-Ausgang des IDPC 10, der von dem
lokalen Prozessor 18 zur Vervollständigung des
Speicherzyklus des gemeinsam genutzten RAM verwendet wird.
Normalerweise ist LRDY high. Es wird auf low gesteuert, wenn von dem
lokalen Prozessor 18 her eine Anforderung nach einem Zugriff
auf den gemeinsam genutzten RAM (LREQ/) empfangen wird und
der Host-Prozessor gegenwärtig auf den gemeinsam genutzten
RAM zugreift.
-
Das Signal HRDY führt dieselben Funktionen aus wie das
Signal LRDY, mit der Ausnahme, daß es von dem Host-Prozessor
verwendet wird.
-
Im aktivierten Zustand ist das Signal LINTOUT dazu
vorgesehen, ein Unterbrechungssignal an den lokalen Prozessor 18 zu
erzeugen. LINTOUT wird aktiv (high), wenn das Bit 1 im
Semaphorregister auf 1 gesetzt ist. LINTOUT wird in den
inaktiven Zustand zurückgeführt, wenn das Bit 1 des
Semaphorregisters auf 0 gelöscht wird.
-
Der HINTOUT-Pin funktioniert ähnlich wie der LINTOUT-Pin,
jedoch dient er zur Unterbrechung des Host-Prozessors. HIN-
TOUT wird aktiviert, indem der lokale Prozessor 18 die
Information "Ausgeführt" in das Bit 0 des Semaphorregisters
schreibt. HINTOUT soll mit eine Unterbrechungseingang am
Host-Prozessor verbunden werden. HINTOUT wird durch den Host
deaktiviert, der den HINTACK-Pin pulst, welcher das Bit 0
des Semaphorregisters löscht und HINTOUT deaktiviert.
-
HINTIN ist ein aktiver High-Eingang, der vom Host-Prozessor
zur Erzeugung eines Unterbrechungssignals an den lokalen
Prozessor 18 (LINTOUT) verwendet wird. Wenn HINTIN aktiv
wird, veranlaßt dies das Setzen des Bits 1 des
Semaphorregisters auf eins, wodurch wiederum ein LINTOUT-Aus erzeugt
wird. Dieser Mechanismus ist erforderlich, da der Host nicht
in das Semaphorregister schreiben bzw. aus diesem aus lesen
kann.
-
Der aktive HINTACK-High-Eingang in den IDPC löscht das Bit 0
des Semaphorregisters auf null. HINTACK wird von dem Host-
Prozessor in Reaktion auf den Empfang eines vom IDPC
kommenden HINTOUT-Unterbrechungssignals ausgegeben.
-
LABE/ wird durch den IDPC infolge des Empfangs eines vom
lokalen Prozessor 18 her kommenden LREQ/ aktiv low gesteuert
und dient dem Freigeben der vom lokalen Prozessor 19
kommenden Adreßleitungen. LABE/ bleibt bis zum Schluß des
Speicherzyklus aktiv.
-
HABE/ funktioniert genau wie LABE/, mit der Ausnahme, daß es
Adreßleitungen von den Host-Adreßzwischenspeichern zum
Speicherbus freigibt und daß es durch HREQ aktiviert wird.
-
LDBE/ ist ein aktiver Low-Ausgang, der zum Freigeben der vom
lokalen Prozessor 18 zum gemeinsam genutzten RAM-Datenbus
führenden Leitungen verwendet wird. LDBE/ wird aktiv
gesteuert, wenn LDT-R/ auf high gesteuert wird (Schreibzyklus). Es
bleibt bis zum Ende des Speicherzyklus high.
-
HDBE/ funktioniert genau wie LDBE/, mit der Ausnahme, daß es
den Übergang von Daten vom Host-Bus auf den gemeinsam
genutzten RAM-Bus freigibt und daß es durch den Übergang von
HDT-R/ zu High aktiviert wird.
-
Der aktive LDLE-High-Ausgang dient dem Zwischenspeichern von
Daten aus dem gemeinsam genutzten KAM in den lokalen
Prozessor 18. LDLE wird low gesteuert (der Zwischenspeicher wird
transparent), wenn LDT-R/ low wird (Lesezyklus). Es wird am
Ende des Speicherzyklus erneut aktiv (high).
-
HDLE funktioniert genau wie LDLE, mit der Ausnahme, daß es
Daten vom gemeinsam genutzten RAM zum Host-Prozessordatenbus
speichert und daß es aktiviert wird, wenn HDT-R low wird
(Lesezyklus).
-
LDLOE/ ist ein aktiver Low-Eingang vom IDPC, der vom lokalen
Prozessor 18 zum Freigeben des Ausgangs der Datenbusspeicher
zurück zum lokalen Prozessor verwendet wird. LDLOE/ wird
aktiv gesteuert (low), wenn LDT-R/ low gesteuert wird
(Lesezyklus). Es wird gelöscht (high), wenn LREQ/ inaktiv wird.
-
HDLOE/ funktioniert genau wie LDLOE/, mit der Ausnahme, daß
es zum Freigeben der Datenausgabe auf den Host-Datenbus
Verwendet und durch das low werdende HDT-R/ aktiviert (low)
wird (Lesezyklus). Es wird gelöscht (high), wenn HREQ
inaktiv wird.
-
RAMCS/ ist ein aktiver Low-Ausgang des IDPC, der vom
gemeinsam genutzten KAM als sein Chipwählfreigabesignal verwendet
wird. Es wird aktiv (low) gesteuert, wenn entweder LREQ/
oder HREQ aktiv abgetastet werden. RAMCS/ bleibt bis zum
Ende des Speicherzyklus aktiv.
-
RAMWE/ ist ein aktiver Low-Ausgang vom IDPC, der vom
gemeinsam genutzten KAM als Schreib-Strobesignal verwendet wird.
Es wird aktiviert, wenn entweder LDT-R/ oder HDT-R high wird
(Schreibzyklus). Es wird am Ende des Speicherzyklus
deaktiviert.
-
RAMOE/ ist ein aktives Low-Ausgangssignal, das von dem
gemeinsam genutzten KAM zum Freigeben seiner Ausgangstreiber
verwendet wird. Es wird aktiv gesteuert, wenn entweder LDT-
R/ oder HDT-R/ low gesteuert wird (Lesezyklus). Es wird am
Ende des Speicherzyklus gelöscht (high).
-
Wie in der Fig. 23 dargestellt, kann der IDPC 10 in
Host-Systemen verwendet werden, in denen der "lokale"
Mikroprozessor 18 und ein externer "Host" miteinander über einen
gemeinsam genutzten Speicher 22a (Dualport-KAM) in Verbindung
stehen. Dieser Speicher ist ein externer gemeinsam genutzter
KAM (SRAM), auf den entweder der Mikroprozessor 18 oder der
Host zugreifen kann. Die Dualport-Zeitsteuerungseinrichtung
(DPTC) 56 des IDPC 10 liefert die Steuerfunktionen, die für
die Funktion eines normalen SRAM 220 als Dualporteinrichtung
erforderlich sind. Diese Funktionen sind:
Speicherzykluszeitsteuerungserzeugung, Steuerung der zum Isolieren des
Host-Systembus 500 vom lokalen Bus des Mikroprozessors 18
erforderlichen Puffer und Zwischenspeicher und das Erzeugen
der zum Host und zum lokalen Prozessor zurückgeführten
Bereit-Steuersignale.
-
Zusätzlich zum Arbitrieren der Zugriffe auf den gemeinsam
genutzten KAM 22a, bietet der DPTC 10 einen
Semaphormechanismus (bidirektional Interprozessor-Unterbrechungen), der
zum Koordinieren der Weiterleitung von Nachrichten höherer
Ebene zu und von dem lokalen Mikroprozessor 18 und dem Host.
Der SKAM 22a ist mit den Daten- und Adreßbussen 26 und 28
verbunden und empfängt die von der DPTC 56 des IDPC 10
erzeugten KAMCS/ (am Anschluß CS/), KAMOE/ (an einem
OE/-Anschluß) und KAMWE/ (an einem WE/-Anschluß) sowie WE/.
-
In Fig. 23 sind verschiedene Busisoliervorrichtungen
dargestellt. Ein Zwischenspeicher 502 ist in dem Datenbus 26
zwischen dem SKAM 22a und dem IDPC 10 angeordnet. Der
Zwischenspeicher 502 empfängt von der DPTC 56 des IDPC 10 das
LDLE an einem OE/-Eingang und LDLE an einem E-Eingang. Ein
Zwischenspeicher 504 ist in dem Datenbus 26 zwischen dem
IDPC 10 und dem SKAM 22a angeordnet und empfängt das LDBE/
von der DPTC 56 an einem OE/-Eingang. Ein Zwischenspeicher
506 ist in dem Adreßbus 28 zwischen dem IDPC 10 und dem SRAM
22a angeordnet und empfängt das Signal LABE/ an einem OE-
Eingang. Ein Zwischenspeicher 508 ist im Anschluß an den
Zwischenspeicher 506 in dem Adreßbus 28 zwischen dem Host-
Systembus 500 und dein SKAM 22a angeordnet und empfängt das
von der DPTC 56 erzeugte Signal HABEA an einem OE-Eingang.
Ein Zwischenspeicher 510 ist in dem Datenbus 26 im Anschluß
an die Zwischenspeicher 562 und 504 zwischen dem
Host-Systembus 500 und dem SKAM 22a angeordnet und empfängt das von
der DPTC 56 erzeugte Signal HDBE/ an einem OE-Eingang. Ein
Zwischenspeicher 512 ist in dem Datenbus 26 im Anschluß an
die Zwischenspeicher 502 und 504 zwischen dem Host-Systembus
500 und dem SKAM 22a angeordnet und empfängt die von der
DPTC 56 erzeugten Signale HDLOE/ bzw. HDLE an einem
OE-Eingang bzw. an einem E-Eingang.
-
Schließlich überträgt der IDPC 10 die Signale HINTOUT, HIN-
TIN, HINTACK, HRDY, HDT-R/ und HREQ zu und von dem
Host-Systembus 500 sowie die Signale LINTOUT, LREQ/, LRDY und LDT-
R/, die zu den Anschlüssen MCSO, SRDY und SI/ des lokalen
Prozessors 18 geleitet werden.
-
Das in Fig. 24 dargestellte Funktionsblockschaltbild der
DPTC 56 des IDPC 10 zeigt den Empfang und die Erzeugung der
zuvor in Zusammenhang mit Fig. 2 beschriebenen verschiedenen
Steuersignale. Der Betrieb der DPTC 56 wird in Zusammenhang
mit den in Fig. 24 dargestellten sieben
Hauptfunktionsblökken erläutert.
-
Ein Synchronisierblock (SYNC) 520 empfängt das
Master-Taktsignal (CLK) vom lokalen Prozessor 18 sowie das HREQ-Signal
vom Host über den Bus 500. Der Synchronisierblock 520
erzeugt ein Host-Anforderungssignal, das mit dem lokalen Takt
synchronisiert ist und einem Zyklenarbitrationsblock 522 für
miteinander in Konflikt stehende Anforderungen zugeführt
wird, der ferner das Signal LREQ vom lokalen Prozessor 18
und das CLK-Signal empfängt. Der Zyklenarbitrationsblock 522
erzeugt daraus ein Lokalzyklussignal (LCYCLE) und ein
Hostzyklussignal (HCYCLE), die von den anderen Funktionsblöcken
innerhalb der DPTC 56 verwendet werden. Der
Zyklenarbitrationsblock 522 erzeugt ferner ein GO-Signal, das von einem
RAM-Zyklenzeitsteuerungsblock 524 empfangen wird. Der KAM-
Zyklenzeitsteuerungsblock 524 empfängt ferner das CLK-Signal
und die Signale LDT-R/ und HDT-R/ und erzeugt daraus die
Signale TAMOE/, RAMCS/ und RAMWE/ sowie ein STOP-Signal.
-
Eine Lokalportzyklensteuereinrichtung 526 empfängt das von
dem RAM-Zyklenzeitsteuerungsblock 524 erzeugte STOP-Signal,
das CLK-Signal, das Signal LCYCLE und das Signal LDT-R/ und
erzeugt daraus die Signale LDLE, LDLOE/, LDBE/ und LABE/.
-
Eine Hostportzyklensteuereinrichtung 528 empfängt das STOP-
Signal, das CLK-Signal, das Signal HCYCLE und das Signal
HDT-R/ und erzeugt daraus die Signale HDLE, HDLOE/, HDBE/
und HABE/.
-
Eine Lokalportbereitschaftssteuereinrichtung (LRDY) 530
empfängt das Signal LREQ, das Signal CLK, das Signal HCYCLE
und das Signal LCYCLE und erzeugt daraus das Signal LRDY.
-
Eine Hostportbereitschaftssteuereinrichtung (HRDY) 532
empfängt das Signal HREQ, das Signal CLK, das Signal HCYCLE und
das Signal LCYCLE und erzeugt daraus das Signal HRDY.
-
Das Design und der Aufbau der verschiedenen in Fig. 24
dargestellten Blöcke sind für den Fachmann auf diesem Gebiet
verständlich, wenn die vorhergehende Beschreibung zusammen
mit der nachfolgend in Zusammenhang mit dem
DPTC-Zeitsteuerungsdiagramm
der Fig. 25 dargelegten weiteren Beschreibung
ihrer Funktionen betrachtet wird.
-
Die DPTC 56 erzeugt die Zyklenzeitsteuerung für alle
Zugriffe auf den gemeinsam genutzten KAM 22a. Die Länge jedes
Zyklus ist festgelegt und ist unabhängig von den
Zyklenzeiten des lokalen Prozessors 18 oder des Host. Speicherzyklen
werden in Reaktion auf eine Anforderung entweder des lokalen
Prozessors 18 oder des Host erzeugt. Bei miteinander in
Konflikt stehenden Anforderungen vermittelt die DPTC 56 in
dem Konflikt und gewährt den ersten Zyklus einem der
Anfordernden, während der andere zurückgehalten wird (über die
geeignete Bereitschaftsleitung LRDY oder HRDY). Die DPTC 56
vermittelt stets zugunsten des lokalen Prozessors 18 (der
als L-Port bezeichnet wird). Wenn, wie in dem
Zeitsteuerungsdiagramm gemäß Fig. 25 dargestellt, eine Anforderung
des L-Port (über den LREQ/-Eingang) zu dem mit 540
bezeichneten Zeitpunkt anhängig ist, zu dem der
Zyklenarbitrationsblock 522 bereit ist, den nächsten Speicherzyklus zu
beginnen, wird dem L-Port der Zyklus gewährt werden, ungeachtet
der Anforderung durch den Host (H-Port). Liegt eine
Anforderung durch den Host (HREQ-Eingangspin) vor, oder wird eine
solche während der Zyklendauer (L-Zyklus) 542 angelegt, wird
der nächste Zyklus als Hostzeit (H-Zyklus) 544 gewährt. Dies
erfolgt implizit, da die DPTC 56 den nächsten Zyklus
beginnt, bevor der lokale Prozessor 18 eine weitere Zyklenzeit
546 anfordern kann. Wird in der Mitte eines H-Zyklus eine L-
Anforderung empfangen, wird der lokale Prozessor (über die
LRDY-Leitung) zurückgehalten, bis der H-Zyklus beendet ist
(Zeit 548 bis Zeit 550).
-
L-Zyklusanforderungen sind synchron mit dem IDPC-Takt. Dies
ist kein Problem, da der IDPC-Takt gleich dem Takt des
lokalen Prozessors ist und die Speicherzyklenzeitsteuerung aus
dem IDPC-Takt erzeugt wird. H-Zyklusanforderungen werden als
asynchron zu dem IDPC-Takt angenommen und daher in dem
SYNCH-Block 520 intern mit der DPTC synchronisiert.
-
Wie in Fig. 25 dargestellt, beträgt die Länge des
Speicherzyklus des SKAM 22a zwei IDPC-Taktzeiten (CLK), wobei
wenigstens eine CLK-Taktzeit als Leerraum zwischen jeweils zwei
KAM-Zyklen vorgesehen ist.
-
Während der SKAM 22a in Bereitschaft ist, tastet der
Zyklenarbitrationsblock 522 der DPTC 56 LREQ/ und die
synchronisierten HREQ-Signale bei der Abstiegsflanke jedes
IDPC-Taktzyklus ab. Wenn eine Anforderung vorliegt, wird ein Zyklus
begonnen und ein GO-Signal an die KAM-Zyklenzeitsteuerung
524 erzeugt. Der Beginn eines Zyklus verursacht die
folgenden Vorgänge: KAMCS/ wird durch die RAM-Zyklensteuerung 524
(Zeit 552) aktiviert (low) und entweder LABE/ oder HABE/
wird aktiviert (low) (Zeiten 554 bzw. 556), je nachdem, ob
LREQ/ oder HREQ/ abgetastet wurde.
-
RAMCS/ liefert den Chipwählsteuerausgang an den SKAM 22a.
Sowohl das Signal RAMCS/, als auch entweder das Signal LABE/
oder das Signal HABE/ bleibt bis zum Emde der
Speicherzyklenzeiten 558 bzw. 560 aktiv.
-
Bei der nächsten Abstiegsflanke des IDPC-Takts (CLK) wird
die Eingangssteuerleitung (LDT-R/ oder HDT-R/) des aktiven
Ports durch die KAM-Zyklenzeitsteuerung 524 abgetastet
(Zeiten 562 bzw. 564). Dieses Signal bestimmt, ob der Zyklus ein
Lese- oder ein Schreibzyklus ist. Wird die
Richtungssteuerung high abgetastet (Schreiben). finden die folgenden
Vorgänge statt: KAMWE/ wird durch die RAM-Zyklenzeitsteuerung
524 aktiviert (low) (Zeit 566) und entweder LDBE/ oder HDBE/
wird aktiviert (low) (Zeit 568 bzw. 570), je nachdem, ob
LDT-R/ oder HDT-R/ abgetastet wurde.
-
RAMWE/ ist das Schreib-Strobesignal des SKAM 22a. Es wird am
Ende des Zyklus (Zeit 572) in seinen inaktiven (high)
Zustand zurückgeführt. LDBE/ und HDBE/ sind die
Datenpuffersteuerungssignale, die die in den SRAM 22a einzuschreibenden
Daten auf den Speicherbus bringen. Auch sie werden am Ende
des Zyklus (Zeit 574 bzw. 576) in ihren inaktiven (high)
Zustand zurückversetzt.
-
Wenn die Richtungssteuerleitung LDT-R/ im Low-Zustand
(Lesen) abgetastet wird, geschieht folgendes: KAMOE/ wird durch
die RAM-Zyklenzeitsteuerung 524 aktiviert (low) (Zeit 578);
LDLE oder HDLE wird aktiviert (low) (Zeiten 580, wobei die
Zeit für HDLE aus Gründen der Übersichtlichkeit weggelassen
wurde), und LDLOE/ oder HDLOE/ wird aktiviert (low) (Zeit
582, wobei die Zeit für HDLOE aus Gründen der
Übersichtlichkeit weggelassen wurde).
-
KAMOE/ gibt die Ausgangstreiber des SKAM 22a frei. LDLE und
HDLE versetzen den geeigneten Datenbuszwischenspeicher 502
bzw. 512 in den transparenten Zustand. LDLOE/ und HDLOE/
geben die Ausgänge der Datenbuszwischenspeicher 502 oder 512
zurück zum Lokal- oder Host-Systembus frei. KAMOE/, LDLE und
HDLE werden am Ende des Zyklus gelöscht (Zeiten 584 bzw.
586, wobei die Zeit für HDLE aus Gründen der Klarheit
weggelassen wurde). LDLOE/ (Zeit 588) und HDLOE/ (Zeit aus
Gründen der Klarheit weggelassen) werden gelöscht, wenn die
Zyklusanforderung (LREQ/ oder HREQ) entfernt wird (Zeit
590).
-
Der Speicherzyklus endet bei der nächsten Abstiegsflanke des
IDPC-Takts (CLK) (Zeit 592).
-
Die Eingänge LREQ/ und HREQ werden von dem
Zyklenarbitrationsblock 522 bei jeder aufeinanderfolgenden Abstiegsflanke
des IDPC-Takts (CLK) abgetastet, um festzustellen, ob ein
neuer Zyklus begonnen werden soll.
-
Der LCYCLE- und der HCYCLE-Steuerblock 526 und 528 erzeugen
die verschiedenen in Zusammenhang mit Fig. 24 beschriebenen
Zeitsteuerungssignale LDLE, LDLOE/, LDBE/, LABE und HDLE,
HDLOE/, HDBE/ und HABE.
-
Wenn der L-Port einen Zyklus anfordert, während ein H-Zyklus
abläuft, oder der H-Port einen Zyklus anfordert, während
entweder ein L-Zyklus abläuft oder eine L-Portanforderung
vorliegt, entsteht ein Konflikt. Der Zyklenarbitrationsblock
522 der DPTC 56 vermittelt stets zugunsten des L-Ports.
-
Wenn LREQ/ aktiv wird, während ein H-Zyklus abläuft, wird
LRDY von der LRDY-Steuerung 530 deaktiviert (low). Dies
erfolgt unmittelbar. LRDY wird zu Beginn des nächsten
Speicherzyklus (der ein L-Zyklus sein wird) wieder in den
aktiven Zustand versetzt.
-
Der Fall, in dem HREQ aktiviert wird, während ein L-Zyklus
abläuft, wird genau wie zuvor beschrieben gehandhabt, mit
der Ausnahme, daß HRDY anstelle von LRDY als Steuersignal
verwendet wird.
-
Wenn HREQ vor dem Beginn eines Zyklus aktiv ist und LREQ/
ebenfalls aktiv wird, wird HRDY deaktiviert (low) sobald
LREQ/ aktiv wird. (Wenn LREQ/ vor dem Beginn des L-Zyklus
bereits aktiv ist, wird HRDY deaktiviert sobald HREQ aktiv
wird.) HRDY wird wieder aktiviert sobald der H-Zyklus
beginnt.
-
Wie in Fig. 26 dargestellt, erfolgt die gesamte
Kommunikation zwischen dem lokalen Prozessor 18 und dem
Host-Prozessor 595 über "Mailboxes" im gemeinsam genutzten RAM 22a. Es
ist ein Mechanismus erforderlich, durch welchen der
Empfänger darüber informiert wird, daß eine Nachricht in seiner
Mailbox vorliegt. Für diese Aufgabe werden Unterbrechungen
verwendet.
-
Das Weiterleiten von Nachrichten erfolgt auf zweierlei Art:
der lokale Prozessor 18 sendet an den Host 595 und der Host
sendet an den lokalen Prozessor. Wenn der lokale Prozessor
eine Nachricht an den Host senden will, legt er zunächst die
Nachricht in der Mailbox des Hosts ab und erzeugt sodann
eine Unterbrechungsanforderung an den Host. Der Host liest
die Nachricht und löscht die Unterbrechungsanforderung Will
umgekehrt der Host eine Nachricht an den lokalen Prozessor
senden, legt er die Nachricht in der Mailbox des lokalen
Prozessors ab und erzeugt eine an den lokalen Prozessor
gerichtete Unterbrechungsanforderung. Der lokale Prozessor
liest die Nachricht und löscht die
Unterbrechungsanforderung. Die DPTC 56 weist ein Zwei-Bit-Semaphorregister 596
zur Erleichterung des Erzeugens und des Löschens dieser
Unterbrechungsanforderungen auf. Die niederwertige
Bitposition des Semaphorregisters 596 (Bit 0) enthält eine
Unterbrechung-an-Host-Prozessor-Flagge (ITHP) und die
höherwertige Bitposition (Bit 1) enthält eine Unterbrechung-an-lokal-
Prozessor-Flagge (ITLP).
-
Der ITLP-Bit-Teil des Semaphorregisters 596 ist (über einen
externen Pin des IDPC 10) durch eine Signalleitung 597, die
ein Signal LOCAL INT QUT leitet, mit dem lokalen Prozessor
18 verbunden. Der Host-Prozessor 595 ist (über einen
externen Pin des IDPC 10) durch eine Signalleitung 598, die ein
Signal HOST INT IN leitet, mit der ITLP-Bitposition
verbunden. Der lokale Prozessor 18 kann ein Signal LOCAL IN CLR in
das Bit 1 des Registers 596 und ein Signal HOST IN REQUEST
in das Bit 0 des Registers 596 über das MPI 50 einschreiben.
-
Der Host 595 ist mit der ITHP-Bitposition des
Semaphorregisters 596 (über einen externen Pin des IDPC 10) durch eine
Signalleitung 599a, die ein Signal HOST IN ACK leitet, und
(über einen externen Pin des IDPC 10) durch eine
Signalleitung 599b, die ein Signal HOST IN OUT leitet, verbunden.
-
Der lokale Prozessor (jedoch nicht der Host) kann das
Semaphorregister 596 lesen und in dieses einschreiben. Lokal-
Prozessor-an-Host-Unterbrechung - Der lokale Prozessor 18
erzeugt ein an den Host 595 gerichtetes
Unterbrechungssignal, indem er eine EINS in das Bit 0 des Semaphorregisters
596 einschreibt. Das Setzen dieses Bits aktiviert den Host-
Unterbrechungsausgang (HINTOUT-Pin). Der Host löscht das
Bit, und damit den HINTOUT-Pin, durch Pulsen des
Host-Unterbrechungsbestätigungseingangs (HINTACK-Pin).
-
Host-an-Lokal-Prozessor-Unterbrechung - Der Host 595 erzeugt
ein an den lokalen Prozessor 1- gerichtetes
Unterbrechungssignal, indem er den Host-Unterbrechungseingang (HINTIN-Pin)
pulst. Dies setzt das Bit 1 des Semaphorregisters 596 und
aktiviert den Lokal-Unterbrechungsausgang (LINTOUT-Pin). Der
lokale Prozessor löscht die (auf der LINTOUT-Leitung
erzeugte) Unterbrechungsanforderung durch Löschen des Bits 1 im
Semaphorregister.
-
Der erfindungsgemäße IDPC 10 weist eine Anzahl von Registern
auf, in die benutzerdefinierbare Daten eingeschrieben und/-
oder aus denen Daten gelesen werden können. Der Sender 102
der DLC 52 weist eine Gruppe von Status- und Steuerregistern
(112, Fig. 4) auf, der Empfänger 108 der DLC weist eine
Gruppe von Status- und Steuerregistern (212, Fig. 10) auf,
der UART 54 weist eine Gruppe von Status- und
Steuerregistern (408, Fig. 21) und eine Gruppe von Spezialzeichen-
Bitmap-Registern innerhalb des Elements 412 auf, und die
DPTC 56 weist ein einzelnes Semaphorregister auf. Diese
Register stehen mit verschiedenen Aspekten jedes der drei
Hauptfunktionsblöcke des IDPC 10 in Verbindung, wie im
folgenden beschrieben.
-
Der Benutzer greift auf die verschiedenen Status- und
Steuerregister und das Semaphorregister über den Mikroprozessor
18 zu, indem er entsprechend der folgenden
Speicheraufteilung eine Adresse an das MPI liefert:
-
Adresse Verwendung
00 - 31 DLC 52
-
32 - 62 UART 54
-
63 DPTC 56
-
Die in der nachfolgenden Tabelle 1 aufgeführten Status- und
Steuerregister sind in der DLC 52 in den Blöcken 112 und 212
enthalten und dienen der Herstellung der erforderlichen Modi
und Konfigurationen des Senders 102 und des Empfängers 108
der DLC sowie dem überwachen und Berichten des
erforderlichen Status der DLC 52 an den Benutzer. Die für die DLC
FIFOs 100 und 106 und den Seriellbusport (SBP) 104
verwendeten Status- und Steuerregister sind ebenfalls in der Tabelle
l aufgeführt. Diese Register belegen die ersten 29
Speicherplätze in einem 32-Byte-DLC-Adressenspeicherplatz. Dieser
Speicherplatz beginnt an der Stelle OO der internen
Speicherbelegung.
-
Vor der Erläuterung der Einzelheiten der in der Tabelle l
nachfolgend auf geführten einzelnen Register, beschreibt der
folgende Abschnitt zwei DLC-Register und ein Bitfeld in
einem dritten Register, das sich von den anderen für den
Benutzer zugänglichen DLC-Registern unterscheidet.
-
Das Empfangsrahmenstatusregister, das
Empfangsbytezählregister und das Empfangsverbindungsadreßbitfeld (Bits 0-2) des
Unterbrechungsquellenregisters unterstützen den Empfang
zahlreicher aufeinanderfolgender Rahmen (inverse Rahmen).
Diese beiden Register und das Bitfeld des dritten Registers
müssen eine "Geschichte" des Status (zulässiges oder
unzulässiges Raster) und der Bytezahl von bis zu zwei zuvor
empfangenen Rastern halten, während zu diesem Zeitpunkt ein
drittes Raster von der DLC 52 empfangen wird. Diese Register
und das Bitfeld sind vierstufige Register, die mehrere
Statusebenen aus von der DLC 52 empfangenen Rastern
unterstützen.
-
Sowohl das Empfangsrahmenstatusregister als auch das
Empfangsbytezählregister und das
Empfangsverbindungsadreßbitfeld besteht aus den folgenden vier Stufen: 1) Aktuell, 2)
Halten, 3) Master und 4) Slave. Eine typische vierstufige
"verzögerter Status"-Struktur, die für das
Empfangsrahmenstatusregister verwendet wird, ist in Fig 27 dargestellt.
Fig. 27 zeigt eine typische Verbindung wie sie im folgenden
beschrieben wird.
-
Wie in Fig. 27 dargestellt, ist der Flaggendetektor 214 des
DLC-Empfängers 108 ebenso wie das
Acht-Bit-Mindest-(Empfangs)-Paketgrößenregister 264 (beide bilden zusammen die
"Stufe 1") mit einem UND-Gatter 600 verbunden. (Obwohl nur
ein UND-Gatter in Fig. 27 dargestellt ist, werden acht
solcher Gatter, die parallel arbeiten und jeweils mit dem
Flaggendetektor verbunden sind, verwendet.) Die von den UND-
Gattern 600 erzeugten Signale werden einem
Acht-Bit-Zwischenspeicher 602 zugeführt, der an einem Rücksetzeingang
(R) das Signal IN-FRAME empfängt. Die Ausgänge des
Zwischenspeichers 602 werden einer Gruppe von (acht) UND-Gattern 604
zugeführt, die jeweils ebenfalls ein Signal OUT-OF-FRAME und
ein Signal EMPTY, das von einem Acht-Bit-Register 606
("Stufe 2") erzeugt wird. Das Register 606 empfängt die acht
parallel geleiteten Signale von den UND-Gattern 604.
-
Das Register 606 ist seinerseits an seinen Ausgängen mit
einer Gruppe von (acht) UND-Gattern 608 verbunden, von denen
jedes ebenfalls ein EMPTY-Signal empfängt, das von einem
Acht-Bit-Register 610 ("Stufe 3") erzeugt wird. Die Ausgänge
des Registers 610 sind wiederum mit einer Gruppe von (acht)
UND-Gattern 612 verbunden, von denen jedes ebenfalls ein
EMPTY-Signal empfängt, das von einem Acht-Bit-Register 614
("Stufe 4") erzeugt wird. Die Ausgänge des Registers 614
sind wiederum mit einer Gruppe von (acht) UND-Registern 616
verbunden, von denen jedes ein Signal vom Bit 5 eines
Empfangsrahmenstatusunterbrechungsfreigaberegisters empfängt
(typisch für andere Bitpositionen innerhalb des Registers).
Die Ausgänge der UND-Gatter 616 werden parallel zu einem
ODER-Gatter 618 geleitet. Der von dem ODER-Gatter 618
erzeugte einzelne Ausgang wird zur Bitposition fünf eines
Unterbrechungsquellenregisters 620 geleitet, dessen Ausgänge
wiederum mit einem UND-Gatter 622 verbunden sind. Auch das
UND-Gatter 622 empfängt ein Signal vom Bit 5 eines
Unterbrechungsquellenunterbrechungsfreigaberegisters. Das vom UND-
Gatter 622 erzeugte Signal erzeugt ein
DLC-Unterbrechungssignal.
-
Die Stufe 1 (602) enthält den aktuellen Status des gerade
von der DLC 52 empfangenen Rahmens. Diese Stufe wird beim
Auftreten von Veränderungen in Echtzeit mit dem aktuellen
DLC-Empfängerstatus aufdatiert. Der Inhalt der Stufe 1 wird
über die Gatter 604 in die Stufe 2 (606) übertragen, wenn
die Stufe 2 leer ist und der Fall eintritt, der, wie zuvor
in Zusammenhang mit Fig. 18 beschrieben, das Markieren eines
Bytes als das Ende-Des Rahmens-Byte (EOF) beim Eintritt in
das DLC-Empfangs-FIFO 106 bewirkt hat. Wenn die Stufe 2
nicht leer ist (d. h. der Inhalt ist noch nicht an die Stufe
3 weitergeleitet worden), verbleibt die Stufe 1 in ihrem
Status. Wenn der Inhalt der Stufe 1 in die Stufe 2
übertragen ist, ist die Stufe 1 frei, mit dem überwachen des
-
nächsten eingehenden Rahmens zu beginnen. Die Stufe 2 hält
sodann die Daten, bis die Stufe 3 leer ist. Die Daten werden
aus der Stufe 2 in die Stufe 3 übertragen, sobald die Stufe
3 leer ist. Dies wiederum ermöglicht die Übertragung von
Daten von der Stufe 1 in die Stufe 2 im EOF-Zustand.
-
Der Inhalt des Registers 610 der Stufe 3 wird in das
Register 614 der Stufe 4 (welches das für den Benutzer
zugängliche
Register ist) übertragen, wenn die Stufe 4 leer ist
und das EOF-markierte Byte (durch DMA oder den
Mikroprozessor 18) aus dem Empfangs-FIFO-Datenregister 298 gelesen
wird. Wenn die Stufe 4 nicht leer ist, verbleibt die Stufe 3
in ihrem Status. Die Stufe 4 wird gelöscht (¹¹geleert¹¹), wenn
sie von dem Mikroprozessor 18 gelesen wird oder ein
Rücksetzen der DLC 52 erfolgt.
-
Der Empfangsrahmenstatus kann sich ¹¹aufstauen¹¹. Wenn der
Mikroprozessor 18 die Stufe 4 nicht ausgelesen hat, wenn ein
Ereignis eintritt, das die Übertragung der Stufe 3 in die
Stufe 4 bewirken würde, wird die Stufe 3 nicht in die Stufe
4 übertragen. Es entstehen keine Schwierigkeiten, wenn die
Stufe 4 entleert wird, bevor ein Ereignis eintritt, das die
Übertragung der Stufe 1 in die Stufe 2 bewirken würde. In
diesem Fall wird die Stufe 3 in die Stufe 4 übertragen,
sobald die Stufe 4 geleert ist. Da jedoch die Stufen 2, 3
und 4 nicht leer sind, wenn ein Ereignis eintritt, das zu
einem Übertragen der Stufe 1 in die Stufe 2 führen würde,
werden die gegebenen Stufen 1, 2, 3 und 4 nicht
beeinträchtigt. Der DLC-Empfänger 108 beginnt damit, alle empfangenen
Verbindungsbytes zu ignorieren und fixiert die Stufe 1.
Daher sind jegliche Rahmen, die an den DLC-Empfänger
gesendet werden, verloren, bis die Stufe 4 durch den
Mikroprozessor 18 gelesen ist. Sobald die Stufe 4 durch Lesen seitens
des Mikroprozessors geleert ist, wird die Stufe 3 in die
Stufe 4 übertragen, die Stufe 2 wird in die Stufe 3
übertragen und die Stufe 1 wird in die Stufe 2 übertragen. Zu
diesem Zeitpunkt geht die DLC-Empfängerlogik 108 in den
Empfängerzustand 2 (Suche Flagge) über und der Rahmenempfang
kann erneut beginnen.
-
Die Bits (3, 5) für gültige und ungültige empfangene Pakete
des Unterbrechungsquellenregisters werden ebenfalls
verzögert angezeigt. Diese Bits können aus den anderen
verzögerten
Statuszuständen heraus erstellt werden und erfordern
selbst keinen vierstufigen Mechanismus.
-
Wenn das Empfangsrahmenstatusregister seit dem letzten
Auslesen des Unterbrechungsquellenregisters nicht ausgelesen
wurde und das niederwertigste Bit des
Empfangsbytezahlregisters gelesen wird, wird das Empfangsstatusregister
gelöscht. Auf diese Weise bleibt der vierstufige
Statusverzögerungs-Mechanismus synchronisiert, wenn ein gültiges
Datenpaket empfangen und das Empfangsstatusregister nicht
gelesen wird.
-
Die DLC 52 enthält eine Anzahl von Registern innerhalb des
Sender-Status und Steuerregisterblocks 112 (Fig. 4) und
des Empfänger-Status- und Steuerregisterblocks 212 (Fig.
10). Diese Register sind in der Tabelle 1 aufgelistet.
TABELLE I Status- und Steuerregister der DLC 52
-
IDPC Hex Länge
-
Adresse Register (Bytes)
-
00 Befehls-/Steuerregister 1
-
01 DLC-Adreßsteuerregister 1
-
02 Verbindungsadressenerkennungsregister 0 2
-
04 Verbindungsadressenerkennungsregister 1 2
-
06 Verbindungsadressenerkennungsregister 2 2
-
08 Verbindungsadressenerkennungsregister 3 2
-
0A Seriellbusport(SBP)-Steuerregister 1
-
0B Mindestempfangspaketgrößenregister 1
-
0C Höchstempfangspaketgrößenregister 2
-
0E Unterbrechungsquellenunterbrechungsfreigaberegister 1
-
0F Empfangsrahmenunterbrechungsfreigaberegister 1
-
10 Empfangsverbindungsunterbrechungsfreigaberegister 1
-
11 FIFO-Status-Unterbrechungsfreigaberegister 1
-
12 Sendebytezahlregister 2
-
14 FIFO-Schwellenregister 1
-
15 Unterbrechungsquellenregister 1
-
16 Empfangsbytezählregister 2
-
18 Empfangsrahmenstatusregister 1
-
19 Empfangsverbindungsstatusregister 1
-
1A FIFO-Statusregister 1
-
1B Empfangs-FIFO-Datenregister 1
-
1C Sende-FIFO-Datenregister 1
-
Der Anhang A enthält eine Beschreibung der in der Tabelle I
aufgelisteten DLC-Status- und -Steuerregister.
-
Die DLC-Register unterteilen sich in fünf Kategorien:
Befehls-/Steuerungs-, Status-, FIFO-Daten-,
Unterbrechungsidentifizierungs- und Unterbrechungsfreigaberegister.
-
DLC-Befehls-/Steuerregister - Die Befehls-/Steuerregister
dienen der Konfiguration der DLC und dem Anfordern
spezifischer Vorgänge. Diese umfassen:
-
DLC-Befehls-/Steuerregister;
-
Verbindungsadressensteuerregister (4);
-
SBP-Steuerregister;
-
Mindestempfangspaketgrößenregister;
-
Höchstempfangspaketgrößenregister;
-
FIFO-Schwellenregister; und
-
Sendebytezahlregister.
-
Das DLC-Befehls-/Steuerregister steuert die Operation der
gesamten DLC. Die anderen Register steuern jeweils die
Aktionen eines bestimmten Teils der DLC. Die Bitzuweisungen
sind bei diesen Registern nicht entscheidend.
-
DLC-Statusregister - Die DLC-Statusregister geben den Status
der DLC an den Benutzer weiter. Sie umfassen:
-
FIFO-Statusregister;
-
Empfangsbytezählregister;
-
Empfangsrahmenstatusregister;
-
Empfangsverbindungsstatusregister; und
-
Bereiche des Unterbrechungsquellenregisters.
-
Die Statusregister sind derart organisiert, daß sie
Statusinformationen nach deren Typ ordnen. Dies ist wichtig, da
dies üblicherweise die Art der Organisation von
Softwareunterbrechungshandhabungsroutinen ist. Zum Beispiel werden
Statusinformationen, die den Echtzeitzustand der
Übertragungsverbindung betreffen, von Informationen, die speziell
ein besonderes empfangenes Datenrahmen betreffen, getrennt
angegeben. Im allgemeinen beschäftigt sich die Software mit
dem Status von Paketen, nicht mit demjenigen von Teilen von
Paketen - dies ist der Schlüssel, die DLC berichtet dem
Benutzer über den Status erst nachdem das Paket vom IDPC in
den externen RAM bewegt wurde. In der Vergangenheit war der
Benutzer entweder in den Status der Daten Zeichen für
Zeichen oder durch mehrere Zeichen auf einmal, jedoch nicht
paketweise involviert. Diese Statusstruktur ist nur dem IDPC
eigen.
-
Die Bits in den verschiedenen Statusregistern sind derart
organisiert, daß sich der wahrscheinlichste Zustand in der
LSB-Position und der unwahrscheinlichste Zustand in der MSB-
Position befindet. Dies verringert den Softwareaufwand bei
der Identifizierung eines gegebenen Zustands. Ferner werden
die wahrscheinlichsten Statuszustände (und die
Identifizierung der mit dem betreffenden Paket verbundenen Adresse) in
dem Unterbrechungsquellenregister angegeben. Dies ist das
erste Register, das ein Benutzer nach dem Empfang einer
Unterbrechung lesen wird. Unter allen normalen Bedingungen
muß der Benutzer auf kein weiteres Register zugreifen, um
den Status der DLC festzustellen.
-
FIFO-Datenregister - Dies sind die Register, die der
Benutzer liest oder beschreibt, um Daten zu und aus der DLC (FI-
FOs) zu bewegen.
-
Unterbrechungsidentifizierungsregister - Das
Unterbrechungsquellenregister weist drei Bitfelder auf: das
Paketadressenidentifizierungsfeld, das Gültiges-Paket-Feld und das
Unterbrechungsquellenfeld. Die ersten beiden Felder wurden
bereits zuvor erläutert. Das Unterbrechungsquellenfeld weist
ein Bit für jedes der Statusregister auf. Wenn dieses Bit
gesetzt ist, weist das zugehörige Register den
Unterbrechungszustand
auf. Auf diese Weise kann der Benutzer den
Grund der Unterbrechung effizient feststellen.
-
Als Beispiel sei angeführt: Um zu erkennen, daß ein gültiges
Paket empfangen wurde, benötigt der IDPC lediglich einen
Lesebefehl an das Unterbrechungsquellenregister und einen
Schieben-nach-rechts- und -Test-Befehl - insgesamt also zwei
Befehle. Würde eine weniger optimale Organisation verwendet,
könnten bis zu 17 Befehle erforderlich sein.
-
Unterbrechungsfreigaberegister - Diese Register sind
Bitfür-Bit-Äquivalente der Statusregister. Dies sorgt für eine
benutzerfreundliche Organisation bei der
Unterbrechungsfreigabe. Durch diese Konfiguration sind zusätzliche Register
erforderlich, jedoch ist das Ergebnis für den Benutzer
klarer.
-
In der Tabelle II sind die für den Benutzer zugänglichen 12
Status- und Steuerregister in dem UART 54 plus einem Bitmap
von 128 Bit aufgelistet, der als 16 8-Bit-Register
entsprechend dem Direktzugriffsspeicher 413 der
Paritäts-/Spezialzeichen-/Rahmen-/Unterbrechungsprüfeinrichtung 412
adressiert wird. Die UART-Register sind in einem Speicherplatz
von 31 Byte angeordnet. Die beiden Baudratendivisorregister
überlagern die FIFO-Datenregister und die
Unterbrechungsfreigaberegisteradressen. Der Zugriff erfolgt durch Setzen
des Divisorzwischenspeicherzugriffsbits (DLAB) im
Leitungssteuerregister. Die Basisadresse des 31-Byte-Blocks ist in
der zuvor dargelegten Speicheraufteilung dargestellt.
TABELLE II Status- und Steuerregister des UART 54
-
Adresse Registername Typ
-
0 DLAB=0 EMPFANGS-FIFO-DATENREGISTER LESEN
-
0 DLAB=0 SENDE-FIFO-DATENREGISTER SCHREIBEN
-
O DLAB=1 BAUDRATENDIVISOR-LSB LESEN/SCHREIBEN
-
1 DLAB=0 UNTERBRECHUNGSFREIGABE LESEN/SCHREIBEN
-
1 DLAB=1 BAUDRATENDIVISOR-MSB LESEN/SCHREIBEN
-
2 UNTERBRECHUNGSIDENTIFIZIERUNG LESEN
-
3 LEITUNGSSTEUERUNG LESEN/SCHREIBEN
-
4 MODEMSTEUERUNG LESEN/SCHREIBEN
-
5 LEITUNGSSTATUS LESEN
-
6 MODEMSTATUS LESEN
-
7 UART-STATUS LESEN
-
8 UART-STEUERUNG LESEN/SCHREIBEN
-
9-24 ACHT-BIT-SPEZIALZEICHEN
BITMAP-REGISTER LESEN/SCHREIBEN
-
* Das DLAB-Bit ist im vorhergehenden definiert.
-
Der Anhang B enthält eine Beschreibung der in der Tabelle 11
aufgeführten UART-Status- und -Steuerregister.
-
UART-Register - Die UART-Register sind mit den für den 8250
definierten Registern identisch, mit Ausnahme der zur
Steuerung der zusätzlich zu dem 8250 vorgesehenen Elemente und
zur Angabe des Status derselben (Spezialzeichenerkennung,
FIFOs, Synchronbetrieb, etc.). Es kommt hierbei darauf an,
mit dem 8250 voll kompatibel zu sein und gleichzeitig die
neuen Möglichkeiten unbeeinträchtigt einsetzen zu können.
Die UART-Statusregister und die UART-Steuerregister sind zu
dem 8250 neu hinzugekommen. An ungenutzten Stellen der
bestehenden 8250-Register (im UART-Registerabschnitt des FPS
angegeben) wurden zusätzliche Bits vorgesehen. Die
Positionen
dieser hinzugefügten Bits ist zum Führen des
Unterbrechungsquellenvorgangs auf logische Weise erforderlich.
-
Die DPTC 56 weist ein benutzerzugängliches Register auf.
Dieses Register wird von dem lokalen Prozessor 18 zum
Steuern der Erzeugung und des Löschens der
Semaphor-Unterbrechungen zwischen dem lokalen Prozessor 18 und dem
Host-Prozessor verwendet. Dieses DPTC-Register wurde zuvor in
Zusammenhang mit der Fig. 26 beschrieben. Das DPTC-Register
(Semaphorregister 596) ist dezimal an der Adresse 63
abgebildet.
ANHANG A
Status-/Steuerregister (112, 212) der DLC 52
-
Das Befehls-/Steuerregister ist ein Acht-Bit-Register. Alle
Bits in diesem Register werden durch Software gesetzt und
gelöscht, außer wenn sie, wie im folgenden beschrieben,
infolge eines Rücksetzens der DLC oder, wie zuvor
beschrieben, des IDPC-Rücksetzpins auf Vorgabewerte initialisiert
sind. Der Mikroprozessor 18 kann in dieses Register
schreiben und aus diesem lesen.
DLC-BEFEHLS-/STEUERREGISTER
DLC-Rücksetzung CRC-Prüffreigabe Empfangsfreigabe Abbruch senden FCS Durchgangsfreigabe CRC-Erzeug.-freigabe Flaggen/Markierung bereit Sendefreigabe
Bit 0 Sende Abbruch (Voreinstellung = 0)
-
Wenn dieses Bit auf EINS gesetzt wird, ergeben sich daraus
unmittelbar die folgenden Vorgänge, die bestehen bleiben,
bis das Bit auf NULL gelöscht wird:
-
a) Die DLC-Sender-Flaggen-/Abbrucheinsetzeinheit 134 (Fig.
7B) überträgt Abbruchzeichen (Bitmuster 01111111 (LSB
rechts)).
-
Wenn der Benutzer dieses Bit über den Mikroprozessor 18 bei
zwei aufeinanderfolgenden Schreibvorgängen setzt und löscht,
überträgt die DLC ein "Abbruchzeichen".
-
b) Löschen des DLC-Sende-FIFO 100 (Fig. 4):
-
c) Löschen des DLC-Sendebytezählers 154 (Fig. 5).
-
d) Löschen des DLC-Sendebytezahlregisters 152 (Fig. 5).
Bit 1 Senderfreigabe (Voreinstellung = 0)
-
Wenn dieses Bit auf EINS gesetzt wird, ermöglicht es das
Herausschieben von Daten der DLC 52 nach SBOUT (Fig. 8)
unter Steuerung durch SCLK oder SFS/XMITCLK. Wenn dieses Bit
auf NULL gelöscht wird, befindet sich der SBOUT-Pin in einem
Dreifachzustand. Wenn dieses Bit zu NULL gelöscht wird und
der Sender "In-Frame" ist (Zustand 1 (302) der Fig. 19),
d. h. Daten sendet, wartet die DLC bis das gegenwärtige
Raster vollständig ist (d. h. der DLC-Sender ist
"out-of-frame"), bevor sie den SBOUT-Pin sperrt.
Bit 2 Empfängerfreigabe (Voreinstellung = 0)
-
Wenn dieses Bit auf EINS gesetzt ist, können Daten vom SBIN-
Pin in den Seriellbusport-Bereich (SBP) 104 der DLC 52
getaktet werden. Wenn es auf NULL gelöscht ist, blockiert
dieses Bit den Empfang jeglicher Daten in den SBP-Bereich
der DLC. Wird dieses Bit gelöscht, während der DLC-Empfänger
im In-Frame-Zustand ist, wartet die DLC 52, bis das
gegenwärtig empfangene Raster ordnungsgemäß beendet ist (d. h. die
Schlußflagge wird empfangen oder es tritt ein Abschlußfehler
auf), bevor die Verbindung unterbrochen wird.
Bit 3 Flaggenbereitschaft-Markierungsbereitschaft/ (Voreinstellung = 0)
-
Wenn dieses Bit auf EINS gesetzt wird, bewirkt es, daß der
DLC-Sender 102 kontinuierlich das Flaggenbereitschaftsmuster
sendet, wenn er nicht in-frame ist. Wird das Bit auf NULL
gelöscht, bewirkt es, daß der DLC-Sender kontinuierlich das
Markierungsbereitschaftsmuster sendet, wenn er nicht
inframe ist.
Bit 4 CRC-Prüfungsfreigabe (Voreinstellung = 1)
-
Wenn das Bit auf EINS gesetzt ist, ermöglicht es die
Übertragung des von der CRC-Prüfeinrichtung 222 erzeugten CRC-
Prüfergebnisses zum CRC-Fehlerbit (Bit 2) im
Empfangsrahmenstatusregister. Wenn dieses Bit auf NULL gelöscht wird, wird
das CRC-Fehlerbit in dem Empfangsrahmenstatusregister nicht
gesetzt.
Bit 5 CRC-Erzeugungsfreigabe (Voreinstellung = 1)
-
Wenn es auf Eins gesetzt ist, bewirkt dieses Bit die
Übertragung des von dem CRC-Generator 120 erzeugte Sende-CRC
(das stets berechnet wird) im Anschluß an die Übertragung
des als Ende des Rahmens (EOF) markierten Bytes im
DLC-Sende-FIFO 100 (Fig. 4). Wenn dieses Bit auf NULL gelöscht
wird, wird durch den Flaggen-/Abbrucheinsetzgenerator 134
eine Schlußflagge erzeugt und unmittelbar im Anschluß an das
als EOF markierte Byte gesendet und die FCS wird nicht
gesendet.
Bit 6 DLC-Rücksetzung (Voreinstellung = 0)
-
Wenn dieses Bit auf EINS gesetzt ist, setzt es die DLC-FIFOs
100 und 106 und die Logik der DLC 52 sowie des SBP 104
zurück. Alle Zwischenspeicher sowie Status- und Steuerbits in
den DLC-Status- und Steuerregistern 112, 212 werden
zwangsweise auf ihre Voreinstellungswerte rückgesetzt.
Bit 7 FCS-Durchgangsfreigabe (Voreinstellung = 0)
-
Wenn dieses Bit auf EINS gesetzt ist, ermöglicht es das
Laden der FCS-Bytes als Daten in das FIFO 106
(Empfangsseite). Wenn es auf NULL gelöscht wird, wird die FCS verworfen.
-
Das DLC-Adressensteuerregister ist ein Acht-Bit-Register.
Sämtliche Bits in diesem Register werden durch Software
gesetzt und gelöscht, außer wenn sie durch eine in
Zusammenhang mit dem DLC-Befehls-/Steuerregister oder dem
IDPC-Rücksetzpin beschriebene DLC-Rücksetzung auf die
Voreinstellungswerte rückgesetzt sind. Dieses Register kann durch den
Mikroprozessor 18 beschrieben und ausgelesen werden. Wenn
alle Verbindungsadressenfreigabebits (Bits 0-3) und das
Broadcast-Freigabebit (Bit 4) auf NULL gelöscht sind, führt
die DLC keine Adreßerkennung durch und gibt alle empfangenen
Rahmenbytes (davon ausgehend, daß mehr als zwei Rahmenbytes
empfangen wurden) an das DLC-Empfangs-FIFO 106 (Fig. 10)
weiter. In diesem Fall werden die Bits 5, 5 und 7 dieses
Registers ignoriert.
-
Wenn eines oder mehrere der Bits 0-4 auf EINS gesetzt ist,
muß ein erfolgreicher Verbindungsadressenvergleich, wie er
in Verbindung mit der Adressenerkennungseinheit 226 (Fig.
16) beschrieben ist, durchgeführt worden sein, bevor die
Rahmenbytes an das DLC-Empfangs-FIFO 106 übertragen werden
können.
DLC-ADRESSENSTEUERREGISTER
Adressenfreigabe Broadcast-Adressenfreigabe Freigabe Adreß-Reg. 2 Wahl des ersten/zweiten Bytes Adressengröße
-
Bit 0 Freigabe der Verbindungsadresse 0 (Voreinstellung = 0)
-
Bit 1 Freigabe der Verbindungsadresse 1 (Voreinstellung = 0)
-
Bit 2 Freigabe der Verbindungsadresse 2 (Voreinstellung = 0)
-
Bit 3 Freigabe der Verbindungsadresse 3 (Voreinstellung = 0)
-
Wenn die Bits 0-3 auf EINS gesetzt sind, ermöglichen sie
einen Vergleich einer empfangenen Rahmenadresse mit dem
Inhalt der jeweiligen
DLC-Verbindungsadressenerkennungsregister 0 bis 3 der Blöcke 278, 280, 282 und 284 (Fig. 17). Der
Inhalt eines bestimmten
Verbindungsadressenerkennungsregisters sollte von der Software eingeschrieben worden sein,
bevor die Software das entsprechende
Verbindungsadressenfreigabebit in diesem Register setzt. Der Vergleich einer
empfangenen Rahmenadresse mit dem Inhalt sämtlicher
freigegebenen Adressenerkennungsregister ist durch die Bits 5 und
6 dieses Registers gemäß der nachfolgenden Beschreibung
bestimmt.
Bit 4 Broadcast-Adressenfreigabe (Voreinstellung = 1)
-
Wenn das Bit auf EINS gesetzt ist, ermöglicht es den
Vergleich durch Komparatoren der Blöcke 278, 290, 282 und 284
einer empfangenen Rahmenadresse mit einer gänzlich aus EINSen
bestehenden Adresse. Der Vergleich ist wie nachfolgend
beschrieben durch die Bits 5 und 6 dieses Registers bedingt.
Wenn das Bit zusammen mit den Bits 0-3 dieses Registers auf
NULL gelöscht ist, führt die DLC keine Adressenerkennung
durch. Wenn es auf NULL gelöscht wird und eines oder mehrere
der Bits 0-3 auf EINS gesetzt sind, wird die sämtlich aus
EINSEN bestehende Musteradresse ignoriert.
Bit 5 Adressengröße 1-2 (Voreinstellung = 0)
-
Wenigstens eines der Bits 0-4 in diesem Register muß auf
EINS gesetzt sein, damit dieses Bit eine Wirkung auf die
DLC-Operation hat. Wenn dies der Fall ist, müssen, bei auf
NULL gelöschtem Bit 5, zwei Rahmenadreßbytes zur
Adressenerkennung im Block 226 verglichen werden. Wenn dieses Bit
auf EINS eingestellt ist, muß nur das erste Rahmenadreßbyte
zur Adressenerkennung durch die Adressenerkennungseinheit
226 verglichen werden. Das Bit 7 gibt an, ob das erste oder
das zweite Byte für den Vergleich verwendet wird.
Bit 6 C/R-Adressenfreigabe (Voreinstellung = 0)
-
Wenigstens eines der Bits 0-4 in diesem Register muß auf
EINS gesetzt sein, damit dieses Bit eine Wirkung auf die
DLC-Operation hat. Wenn dies der Fall ist, wird wenn das
Bit 6 auf NULL gelöscht wird, das Bit 1 des ersten
Adreßbytes jedes empfangenen Rahmens bei der Adressenerkennung
durch den Takt 226 ignoriert. Wenn das Bit auf EINS gesetzt
wird, muß das Bit 1 des ersten empfangenen Rahmenadreßbytes
zusammen mit den anderen Adreßbits zur Adressenerkennung
durch die Adressenerkennungseinheit 226 erfolgreich
verglichen werden.
Bit 7 Wahl des ersten/zweiten Bytes (Voreinstellung = 0)
-
Dieses Bit hat bei gewählter Ein-Byte-Adressierung nur dann
Wirkung. Wenn es auf EINS gesetzt ist, untersucht der
Adressenerkennungsblock 226 nur das zweite Byte der Adresse, d.
-
h. die ersten acht Bits werden ignoriert. Wenn das Bit auf
NULL gelöscht wird, wird nur das erste Byte untersucht.
-
Die Verbindungsadressenerkennungsregister in den Blöcken
278, 280, 282 und 284 (Fig. 17).
-
Verbindungsadressenerkennungsregister 0 (278)
(Voreinstellung = Hex 0000)
-
Verbindungsadressenerkennungsregister 1 (280)
(Voreinstellung = Hex 0000)
-
Verbindungsadressenerkennungsregister 2 (282)
(Voreinstellung = Hex 0000)
-
Verbindungsadressenerkennungsregister 3 (284)
(Voreinstellung = Hex 0000)
-
Sämtliche Bits in diesen Registern werden durch die Software
gesetzt und gelöscht, außer wenn sie durch eine
DLC-Rücksetzung oder den IDPC-Rücksetzpin auf die Voreinstellungswerte
initialisiert sind. Diese Register können durch den lokalen
Mikroprozessor 18 beschrieben und gelöscht werden.
-
Die Verbindungsadressenerkennung ist in Zusammenhang mit
Fig. 17 definiert. Jedes dieser vier Register weist ein
entsprechendes Freigabebit (Bits 0-3) in dem
DLC-Adressensteuerregister auf. Wenn das entsprechende Freigabebit
gesetzt ist, ist ein gegebenes
Verbindungsadressensteuerregister durch die Bits 5 und 6 des DLC-Adressensteuerregisters
konditioniert, wie zuvor beschrieben.
-
Das Seriellbusport(SBP)-Steuerregister ist ein
Ach-Bit-Register. Sämtliche Bits in diesen Registern werden durch die
Software gesetzt und gelöscht, außer wenn sie durch eine
DLC-Rücksetzung oder den IDPC-Rücksetzpin auf die
Voreinstellungswerte
initialisiert sind. Diese Register können
durch den lokalen Mikroprozessor 18 beschrieben und gelöscht
werden.
Bit 0 Invertieren (Voreinstellung = 0)
-
Wenn dieses Bit auf EINS gesetzt wird, wird der gesendete
serielle Bitstrom durch XODER 200 (Fig. 8) als letzter
Schritt nach allen anderen DLC-Senderverarbeitungsschritten,
jedoch vor dem SBP-Kanalmultiplexen (Block 196) (siehe Bits
1-2 im folgenden), invertiert. Die einzige Ausnahme dieser
Regel ist gegeben, wenn der DLC-Sender ein
Bereitschaftsmarkierungsdatenmuster sendet; in diesem Fall findet keine
Inversion statt, da die Bereitschaftsmarkierung durch das
ODER 202 hinter dem Inverter 200 eingesetzt wird.
-
Wenn dieses Bit auf EINS gesetzt wird, wird der empfangene
serielle Bitstrom durch XODER 238 (Fig. 11) als erster
Schritt nach dem Demultiplexen (Block 232) (siehe die Bits
1-2 im folgenden) und der Bereitschaftsmarkierungserkennung
invertiert. Wenn die Bereitschaftsmarkierung erkannt wird,
setzt sich die Inversion fort, jedoch gelangen keine Daten
in das DLC-Seriell-zu-Parallel-Empfangsschieberegister 212.
-
Wenn dieses Bit auf NULL gelöscht wird, findet weder in der
Sende- noch in der Empfangsrichtung eine Dateninversion
statt.
Bits 1-5 Kanalwahl (Voreinstellung = 00000)
-
Diese Bits wählen den SBP-Zeitschlitz zum Multiplexen des
gesendeten seriellen Bitstroms durch den
zeitschlitzmultiplexer 196 und zum Demultiplexen des gesendeten seriellen
Bitstroms durch den Zeitschlitzdemultiplexer 232.
Bit Wahl Kanal nicht multiplext - einzelner Kanal, wobei der Empfänger von dem SCLK-Pin und der Sender von dem SFS/XMIT-Taktpin getaktet ist.
-
Bei allen Bit-Einstellungen, außer der nicht multiplexten,
werden sowohl der Empfänger als auch der Sender durch den
SCLK-Pin getaktet.
-
* = in der parallelen Anmeldung mit dem Titel "Digitale
Teilnehmersteuerung" verwendete Terminologie.
Bit 6 Lokal-Rückschleifenfreigabe (Voreinstellung = 0)
-
Wenn dieses Bit auf EINS gesetzt ist, bewirkt es die interne
Verbindung des Sendedatenpfads (SBOUT) mit dem
Empfangsdatenpfad (SBIN). Der gewählte Sendetakt (entweder der Takt
SCLK oder SFS/XMITCLK) wird sowohl als Sendetakt als auch
als Empfangstakt verwendet. Der Lokal-Rückschleifenmodus
arbeitet, wenn er gewählt ist, ungeachtet der Einstellung
der Sendefreigabe und Empfangsfreigabebits (Bits 1 & 2 des
Befehls-/Steuerregisters) Das Setzen dieses Bits auf EINS
verhindert ferner das Anlegen von Daten an den SBOUT-Pin
oder das Empfangen eingehender Daten (Vom SBIN-Pin). Das
Löschen des Bits auf NULL deaktiviert die
Lokal-Rückschleife.
Bit 7 Fern-Rückschleifenfreigabe (Voreinstellung = 0)
-
Wenn dieses Bit auf EINS gesetzt ist, verbindet es den SBIN-
Pin mit dem SBOUT-Pin. Daher werden eingehende Daten
unmittelbar als Sendedaten an den SBOUT-Pin angelegt. Der
geeignete Empfangstakt ist in diesem Modus SCLK. Empfangsdaten
können je nach Einstellung des Empfangsfreigabebits an die
DLC-E
Empfangslogik angelegt werden oder nicht. Das Senden von
Daten der Sendelogik am Pin SBOUT wird in diesem Modus
verhindert. Das Löschen dieses Bits auf NULL deaktiviert die
Fern-Rückschleife.
-
Das Mindestempfangspaketgrößenregister ist ein Acht-Bit-
Register (264) (Fig. 15). Voreinstellung = Hex 5.
-
Die Bits 0-3 dieses Registers werden durch die Software
gesetzt und gelöscht, außer wenn sie durch eine
DLC-Rücksetzung oder den IDPC-Rücksetzpin auf den Voreinstellungswert 5
initialisiert sind. Die Bits 4-7 werden nicht verwendet.
Dieses Register kann durch den lokalen Mikroprozessor 18
beschrieben und gelöscht werden.
-
Dieses Register gibt die Mindestpaketlänge (ausschließlich
der Eröffnungs- und der Schlußflagge) an, die von der DLC
empfangen werden kann, ohne daß ein "Kurzrahmen-"Fehler im
Empfangsrahmenstatusregister erzeugt wird.
-
Zum Zeitpunkt der Erzeugung des
Kurzrahmenunterbrechungssignals gibt der Inhalt des Empfangsbytezahlregisters die
Zahl der Bytes im Kurzrahmen an.
-
Wert Zahl
-
1 0001
-
. .
-
. .
-
15 1111
-
16 0000
MINDESTEMPFANGSPAKETGRöSSENREGISTER
Nicht verwendet Mindestpaketgröße
-
Das Höchstempfangspaketgrößenregister ist ein
16-Bit-Register. Voreinstellung = Hex 0000.
-
Die 16 Bits dieses Registers werden durch die Software
gesetzt und gelöscht, außer wenn sie durch eine
DLC-Rücksetzung oder den IDPC-Rücksetzpin auf den Voreinstellungswert
initialisiert sind. Dieses Register kann durch den lokalen
Mikroprozessor 18 beschrieben und gelöscht werden.
-
Dieses Register gibt die Höchstpaketlänge (ausschließlich
der Eröffnungs- und der Schlußflagge) an, die von der DLC
empfangen werden kann, ohne daß ein "Langrahmen"-Fehler in
dem Empfangsrahmenstatusregister erzeugt würde. Beim Empfang
jedes der Paketbytes wird der Inhalt des
Höchstempfangspaketgrößenregisters mit dem Empfangsbytezähler 292 (Fig. 18)
verglichen. Wenn die maximale Paketgröße in dem
Empfangsbytezähler
überschritten wird, wird in dem
Empfangsrahmenstatusregister ein "Langrahmen"-Fehler erzeugt. Zu diesem
Zeitpunkt wird das empfangene Byte, das das Überschreiten
der maximalen Länge durch den Empfangsbytezähler 292
verursacht hat, als das Ende-des-Rahmens-Byte (EOF) markiert
und der DLC-Empfänger geht in den Empfängerzustand 0 (Suche
Flagge) über.
Wert Zahl HÖCHSTEMPFANGSPAKETGRÖSSENREGISTER niederwertigstes Byte höchstwertiges Byte
DLC-Unterbrechungsfreigaberegister:
-
Unterbrechungsquellenunterbrechungsfreigaberegister
(Voreinstellung = Hex 0000)
-
Empfangsrahmenunterbrechungsfreigaberegister (Voreinstellung
= Hex 0000)
-
Empfangsverbindungsunterbrechungsfreigaberegister
(Voreinstellung = Hex 0000)
-
FIFO-Statusunterbrechungsfreigaberegister (Voreinstellung =
Hex 0000)
-
Sämtliche Bits in diesen Registern werden durch die Software
gesetzt und gelöscht, außer wenn sie durch eine
DLC-Rücksetzung oder den IDPC-Rücksetzpin auf die Voreinstellungswerte
initialisiert sind. Diese Register können durch den lokalen
Mikroprozessor 18 beschrieben und gelöscht werden.
-
Die letzten drei Register sind Bit-für-Bit-Abbildungen des
entsprechenden Empfangsrahmenstatusregisters, des
Empfangsverbindungsstatusregisters bzw. des FIFO-Statusregisters,
die im folgenden beschrieben werden. Das
Unterbrechungsquellenunterbrechungsfreigaberegister ist ein Abbild des im
folgenden beschriebenen entsprechenden
Unterbrechungsquellenregisters, mit Ausnahme der Bits 0-2, mit denen keine
Unterbrechungen verbunden sind.
-
Die letzten drei Freigaberegister bilden die untere Ebene
eines Zwei-Ebenen-Unterbrechungsfreigabemechanismus, die für
die entsprechenden drei Statusregister verwendet wird. Die
drei Bits in dem
Unterbrechungsquellenunterbrechungsfreigaberegister, die diesen drei Registern entsprechen, bilden
die höhere Ebene des Zwei-Ebenen-Freigabemechanismus. Um zum
Beispiel die Kurzrahmenfehlerunterbrechung freizugeben, muß
das Kurzrahmenbit in dem
Empfangsrahmenunterbrechungsfreigaberegister (untere Freigabeebene) auf EINS gesetzt sein UND
das Empfangsrahmenstatusbit im
Unterbrechungsquellenunterbrechungsfreigaberegister muß auf EINS gesetzt sein (höhere
Freigabeebene).
-
Wenn ein Ereignis auftritt, das das Setzen eines Bits in
einem der drei Statusregister verursacht (siehe die
Beschreibung der drei Statusregister) und beide Ebenen der
Statusunterbrechungsfreigabe auf EINS gesetzt sind, wird die
DLC-Unterbrechung erzeugt und das Bit für dieses Register
wird im DLC-Unterbrechungsquellenregister auf EINS gesetzt.
Wenn das Statusregisterbit auf EINS gesetzt ist und keine
der beiden Unterbrechungsfreigabeebenen freigegeben ist,
wird keine Unterbrechung erzeugt und das
Unterbrechungsquellenregisterbit für dieses Statusregister wird nicht auf EINS
gesetzt. *Die Sendeschwelle-Erreicht-Unterbrechung, die in
Zusammenhang mit Fig. 5 beschrieben wurde (Bit 2 in den
FIFO-Status- und -Freigaberegistern), unterscheidet sich
hiervon wie folgt. Das Schwelle-Erreicht-Bit gibt den
aktuellen Echtzeitzustand des FIFO wieder (siehe zuvor; gleich
der Schwelle oder darunter). Die Unterbrechung wird jedoch
nur erzeugt, wenn der Stand des FIFO auf den Schwellenwert
fällt. Dies verhindert die Erzeugung einer Unterbrechung,
wenn das FIFO bei Nichtgebrauch des Senders leer ist.
-
Ein Software-Lesevorgang jedes beliebigen der drei
Statusregister löscht das Statusregister auf NULL und löscht den
Unterbrechungszustand, der durch das Setzen von Bits in
diesem Statusregister auf EINS bewirkt wurde. Eine
DLC-Rücksetzung oder das Aktivieren des IDPC-Rücksetzpins hat
ebenfalls diese Wirkung.
-
Im Gegensatz zu dem für die drei Statusregister verwendeten
Unterbrechungsfreigabemechanismus, können das
Gültiges-Paket-Empfangen- und das Gültiges-Paket-Gesendet-Bit in dem
Unterbrechungsquellenregister eine Unterbrechung über einen
Unterbrechungsfreigabemechanismus mit einer Ebene erzeugen.
Wenn ein Ereignis eintritt, das das Setzen eines dieser Bits
in dem Unterbrechungsquellenregister bewirkt, wird die DLC-
Unterbrechung erzeugt, falls das entsprechende
Unterbrechungsquellenunterbrechungsfreigaberegisterbit auf EINS
gesetzt ist. Wenn einer der beiden
Unterbrechungsquellenregisterbits auf EINS gesetzt ist und das entsprechende
Unterbrechungsfreigaberegisterbit nicht auf EINS gesetzt ist,
wird keine Unterbrechung erzeugt.
UNTERBRECHUNGSQUELLENUNTERSUCHUNGSFREIGABEREGISTER
Freigabe Empfangs-Verbindungs-Statusunter-Brechung Freigabe Empfangs-Rahmenunterbr. Freigabe Gültiges-Paket-Empfangen-Unterbr, Nicht verwendet Freigabe FIFO-Statusunterbr. Freigabe Gültiges-Paket-Gesendet-Unterbr.
EMPFANGSRahmenUNTERBRECHUNGSFREIGABEREGISTER
Nicht verwendet Freigabe Langrahmenfehlerunterbr. Freigabe CRC-Fehlerunterbr. Freigabe Abbruch-Empfangen-Unterbr. Freigabe Überlauffehlerunterbrechung Freigabe Kurzrahmenfehlerunterbr. Freigabe Nicht-Ganzzahlige-Bytes-Empfangen-Unterbrechung
EMPFANGSVERBINDUNGSUNTERBRECHUNGSFREIGABEREGISTER
Nicht verwendet Freigabe In-Frame-Unterbr. Freigabe Bereitschaftsmarkierung-Empfangen-Unterbr. Freigabe Flaggenbereitschaft-Empfangen-Unterbr.
FIFO-STATUSUNTERBRECHUNGSFREIGABEREGISTER
Nicht verwendet Freigabe Sendeunterlaufunterbrechung Freigabe Sendeschwelle-Erreicht-Unterbr. Freigabe Empfangsschwelle-Erreicht-Unterbr. EOP-im-Empfangs-FIFO-Unterbrechung Freigabe XMIT-Puffer-Verfügbar-Unterbr. Freigabe FIFO-DATEN-Verfügbar-Unterbr.
-
Das Sendebytezählregister (152) ist ein 16-Bit-Register.
Voreinstellung = 0.
-
Die Bits 0-15 in diesem Register werden durch die Software
gesetzt und gelöscht, außer wenn sie durch eine
DLC-Rücksetzung, den lDPC-Rücksetzpin oder durch die Ausgabe eines
Abbruchs durch die Flaggen-/Abbruchseinsetzeinheit 134 auf
der Signalleitung 164 (Fig. 5) auf den voreinstellungswert
initialisiert sind. Dieses Register kann durch den lokalen
Mikroprozessor 18 beschrieben und gelöscht werden.
-
Die Software schreibt die Zahl der zu sendenden Bytes in
jedem Rahmen in dieses Register, jedoch OHNE die
Eröffnungsflagge, die Schlußflagge und die FCS-(CRC)-Bytes. Die
Software schreibt jedoch nur in das Register ein, wenn die Zahl
der zu sendenden Bytes von der zu diesem Zeitpunkt in dem
Register gespeicherten Zahl verschieden ist.
-
Der Inhalt dieses Registers wird dem Sendebytezähler 154
(Fig. 5) jedes Mal zugeführt, wenn die Software in das
Register einschreibt (wenn der Sender außerhalb des Rahmens
liegt) oder wenn ein als Ende des Rahmens (EDF) markiertes
Byte vom Sende-FIFO 100 in das
Parallel-zu-Seriell-Schieberegister
110 geladen wird. Wenn die Software in das Register
schreibt, wenn das als EOF markierte Byte geladen ist, wird
die Übertragung zum Sendebytezähler verzögert, bis der
Schreibvorgang der Software beendet ist.
Wert Zahl SENDEBYTEZÄHLERREGISTER niederwertigstes Byte höchstwertiges Byte
-
Das FIFO-Schwellenregister ist ein Acht-Bit-Register. Die 8
Bits dieses Registers werden durch die Software gesetzt und
gelöscht, außer wenn sie durch eine DLC-Rücksetzung oder den
IDPC-Rücksetzpin auf den Voreinstellungswert initialisiert
sind. Dieses Register kann durch den Prozessor 18
beschrieben und gelöscht werden.
FIFO-SCHWELLENREGISTER
Empfangsschwelle Sendeschwelle
Bits 0-3 Sende-FIFO-Schwelle (Voreinstellung = Hex 8)
-
Beim Übertragen jedes Bytes eines empfangenen Pakets in das
DLC-Parallel-zu-Seriell-Sendeschieberegister 110 wird der
Inhalt des Sende-FIFO-Schwelle-Bitfelds durch die
Schwellenvergleichslogik 185 mit der noch in dem Sende-FIFO 150
vorhandenen Bytezahl verglichen. Die Ergebnisse dieses
Vergleichs und ihre Auswirkungen auf das
Sendeschwelle-Erreicht-Bit werden in folgenden in Verbindung mit dem FIFO-
Statusregister erläutert.
-
Das Sendeschwelle-Erreicht-Signal wird ebenfalls dazu
verwendet, das DLC-Sende-DMA-Datenanforderungssignal zu
konditionieren.
-
Wert Zahl
-
0 0000
. .
-
. .
-
. .
15 1111
Bits 4-7 Empfangs-FlFO-Schwelle (Voreinstellung = Hex 8)
-
Beim Übertragen jedes Bytes eines empfangenen Pakets vom
DLC-Seriell-zu-Parallel-Empfangsschieberegister 212 zum
Empfangs-FIFO 106 wird der Inhalt des
Empfangs-FIFO-Schwellenbitfelds von dem Block 296 (Fig. 18) mit der noch in dem
Empfangs-FIFO enthaltenen Bytezahl verglichen. Das Ergebnis
dieses Vergleichs und seine Auswirkungen auf das
Empfangsschwelle-Erreicht-Bit werden im folgenden in Verbindung mit
dem FIFO-Statusregister erörtert.
-
Der Empfangs-FIFO-Schwellenblock 296 zählt um jeweils zwei,
anstatt um jeweils eins, wie bei der Sende-FIFO-Schwelle.
Der Grund dafür ist, daß das Empfangs-FIFO 32 Bytes tief
ist, während das Schwellenbitfeld im Schwellenregister nur
vier Bits lang ist.
-
Wert Zahl
-
2 0001
-
. .
-
. .
-
. .
-
30 1111
-
32 0000
-
Das Unterbrechungsquellenregister (620) ist ein Acht-Bit-
Register. Das Unterbrechungsquellenregister enthält die für
den Benutzer während des Betriebs wichtigsten
Statusinformationen. Der Zweck dieses Registers ist es, die Ursache einer
DLC-Unterbrechung in so wenig Schritten wie möglich ein
zugrenzen. Dieses Register ist ein Festwertregister.
-
Dieses Register wird infolge einer DLC-Rücksetzung oder
eines Rücksetzens durch den IDPC-Rücksetzpin auf die im
folgenden für jedes einzelne Bit und jedes einzelne Bitfeld
dargelegten Voreinstellungswerte initialisiert.
-
Hinweis: Das Bit 3 und das Bit 5 sind Sonderheiten des
vierstufigen Statusberichtsmechanismus, der in Zusammenhang mit
Fig. 27 beschrieben wurde. Diese beiden Bits müssen nicht in
den Stufen 1, 2 und 3 verwendet werden; sie können
stattdessen wie folgt in der Stufe 4 aus anderen Bits der Stufe 4
erzeugt werden:
-
Das Bit 5 (Empfangsrahmenstatus) kann von der DLC-Hardware
als das logische ODER der sechs Bits des im folgenden
beschriebenen Empfangsrahmenstatusregisters der Stufe 4
aufdatiert werden. Das Bit 3 (Gültiges Paket Empfangen) kann
zur gleichen Zeit, zu der das Bit 5 aufdatiert wird, als das
logische NICHT des Bits 5 aufdatiert werden.
UNTERBRECHUNGSQUELLENREGISTER
Bits 0-2 Empfangsverbindungsadreßfeld (Voreinstellung = 110 mit LSB=0)
-
Das Empfangsverbindungsadreßbitfeld wird bei jedem
Rahmenempfang (mit oder ohne Fehler) durch die
DLC-Adressenerkennungseinheit 226 bestimmt. Dieses Bitfeld ist eine der in
Zusammenhang mit Fig. 27 beschriebenen einzigartigen Vier-
Stufen-Statusregister- und Bitfeld-Einheiten.
-
Dieses Bitfeld ist Hardware der Stufe 4 und wird daher nur
dann geladen (außer während der DLC- oder IDPC-Rücksetzung),
wenn beide der folgenden Ereignisse eingetreten sind:
-
1) Die Stufe 4 ist durch ein Software-Lesen dieses
Unterbrechungsquellenregisters gelöscht und
-
2) das als Ende des Rahmens (EOF) markierte Byte wird (durch
DMA oder Software) aus dem Empfangs-FIFO 290 ausgelesen.
-
Die folgende Tabelle gibt an, welcher Wert in das
Empfangsverbindungsadreßbitfeld geladen wird, wenn der Status der
Stufe 3 in die Stufe 4 geladen wird:
-
Bit
-
2 1 0 Bedeutung
-
0 0 0 Inhalt des Verbindungsadressenregisters 0 erkannt
-
0 0 1 Inhalt des Verbindungsadressenregisters 1 erkannt
-
0 1 0 Inhalt des Cerbindungsadressenregisters 2 erkannt
-
0 1 1 Inhalt des Verbindungsadressenregisters 3 erkannt
-
1 0 0 Broadcast-Verbindungsadresse (sämtlich 1) erkannt
-
1 0 1 Nicht verwendet
-
1 1 0 Voreinstellungswert - Kein Paket empfangen
-
1 1 1 Paket ohne freigegebene Adressenerkennung empfangen (d. h. die Bits 0-4 des DLC-Adressensteuerregisters sind sämtlich auf NULL gelöscht)
-
Das Empfangsverbindungsadreßbitfeld wird auf seinen
Voreinstellungswert zurückgesetzt, wenn eine DLC-Rücksetzung
erfolgt oder der ODPC-Rücksetzpin aktiviert wird.
Bit 3 Gültiges Paket empfangen (Voreinstellung = 0)
-
Das Gültiges-Paket-Empfangen-Bit wird durch das Empfangs-
FIFO 106 auf EINS gesetzt, wenn das als Ende des Rahmens
markierte Byte (EOF) aus dem Empfangs-FIFO-Datenregister 298
gelesen wird (d. h. wenn alle Paketbytes zum Speicher
übertragen sind) und keiner der in Zusammenhang mit Fig. 20
beschriebenen Empfangsfehler für dieses Paket erkannt wurde.
Dieses Bit wird gegattert, wenn der Status der Stufe 3
tatsächlich zur Stufe 4 der Vier-Stufen-Empfangsstatusregister
und des -Bitfeldes übertragen wird.
-
Dieses Bit wird auf NULL gelöscht, wenn dieses Register von
der Software gelesen wird, eine DLC-Rücksetzung erfolgt oder
der IDPC-Rücksetzpin aktiviert wird.
Bit 4 Gültiges Paket gesendet (Voreinstellung = 0)
-
Dieses Bit wird auf EINS gesetzt, wenn das letzte Bit vor
der Schlußflagge von dem DLC-Sender 102 übertragen wurde
(d. h. der Sendebytezähler ist gleich 0 und es existiert kein
Unterlauf oder ein Out-of-Frame-Zustand des Senders).
-
Dieses Bit wird auf NULL gelöscht, wenn dieses Register von
der Software gelesen wird, eine DLC-Rücksetzung erfolgt oder
der IDPC-Rücksetzpin aktiviert wird.
Bit 5 Empfangsrahmenstatus (Voreinstellung = 0)
-
Dieses Bit wird auf EINS gesetzt, wenn ein beliebiges Bit in
dem im folgenden beschriebenen Empfangsrahmenstatusregister
64 gesetzt ist und SOWOHL das entsprechende Bit im
Empfangsrahmenunterbrechungsfreigaberegister ALS AUCH das
Empfangsrahmenstatusbit im
Unterbrechungsquellenunterbrechungsfreigaberegister gesetzt ist.
-
Dieses Bit wird gegattert, wenn der Status der Stufe 3
tatsächlich in die Stufe 4 übertragen wird, wie in Fig. 27
dargestellt.
-
Dieses Bit wird auf NULL gelöscht, wenn das
Empfangsrahmenstatusregister von der Software gelesen wird, eine
DLC-Rücksetzung erfolgt oder der IDPC-Rücksetzpin aktiviert wird.
Bit 6 FIFO-Status (Voreinstellung = 0)
-
Dieses Bit wird auf EINS gesetzt, wenn ein beliebiges Bit in
dem im folgenden beschriebenen FIFO-Statusregister gesetzt
ist und SOWOHL das entsprechende Bit im
FIFO-Statusunterbrechungsfreigaberegister ALS AUCH das FIFO-Statusbit im
Unterbrechungsquellenunterbrechungsfreigaberegister gesetzt
ist.
-
Dieses Bit wird auf NULL gelöscht, wenn das
FIFO-Statusregister von der Software gelesen wird, eine DLC-Rücksetzung
erfolgt oder der IDPC-Rücksetzpin aktiviert wird.
Bit 7 FIFO-Status (Voreinstellung = 0)
-
Dieses Bit wird auf EINS gesetzt, wenn ein beliebiges Bit in
dem im folgenden beschriebenen
Empfangsverbindungsstatusregister gesetzt ist und SOWOHL das entsprechende Bit im
Empfangsverbindungsunterbrechungsfreigaberegi5ter ALS AUCH das
Empfangsverbindungsbit im
Unterbrechungsquellenunterbrechungsfreigaberegister gesetzt ist.
-
Dieses Bit wird auf NULL gelöscht, wenn das
Empfangsverbindungsstatusregister von der Software gelesen wird, eine DLC-
Rücksetzung erfolgt oder der IDPC-Rücksetzpin aktiviert
wird.
-
Das Empfangsbytezählregister (294) ist ein 16-Bit-Register.
Voreinstellung = 0.
-
Dieses 16-Bit-Register gibt die Zahl der empfangenen Bytes
in einem Paket an (d. h. die zwischen der Eröffnungs- und
der Schlußflagge gelegenen Bytes, ausschließlich dieser),
ungeachtet der Tatsache, ob das Paket fehlerhaft empfangen
wurde oder nicht. Der Empfangsbytezähler 292 wird
inkrementiert, wenn ein Datenbyte in das Empfangs-FIFO 290 geladen
wird. Der Empfangsbytezählerregister ist eines der
einzigartigen Vier-Stufen-Statusregister- und -Bitfeld-Einheiten,
die in Zusammenhang mit Fig. 27 beschrieben wurden. Dieses
Register ist ein Stufe-4-Register und wird daher nur dann
mit einer gültigen Bytezahl geladen, wenn beide der
folgenden Ereignisse eingetreten sind:
-
1) Die Stufe 4 wird durch ein Software-Lesen dieses
Empfangsbytezählregisters gelöscht und
-
2) das als Ende des Rahmens (EOF) markierte Byte wird (durch
DMA oder Software) aus dem Empfangs-FIFO 290 ausgelesen.
-
Dieses Register wird auf seinen Voreinstellungswert 0 durch
eine DLC-Rücksetzung oder durch Aktivieren des
IDPC-Rücksetzpins rückgesetzt. Dieses Register ist ein vom lokalen
Prozessor 18 gelesenes Festwertregister.
EMPFANGSBYTEZÄHLREGISTER
niederwertigstes Byte höchstwertiges Byte
-
Das Empfangsrahmenstatusregister ist ein Acht-Bit-Register.
Die Bits dieses Registers werden wie im folgenden
beschrieben auf EINS gesetzt. Die Bits 6 und 7 werden nicht
verwendet. Dieses Register ist ein Festwertregister für den
lokalen Prozessor 18.
-
Das Setzen eines beliebigen Bits im
Empfangsrahmenstatusregister setzt das Bit 5 des Unterbrechungsquellenregisters,
wenn das entsprechende Freigabebit im
Empfangsrahmenunterbrechungsfreigaberegister und das Empfangsrahmenstatusbit im
Unterbrechungsquellenunterbrechungsfreigaberegister so
gesetzt sind, wie im folgenden in Zusammenhang mit dem
Unterbrechungsquellenregister 620 beschrieben.
-
Die Bits des Empfangsrahmenstatusregisters werden sämtlich
auf NULL gelöscht (Voreingestellte Biteinstellungen), wenn
eine DLC-Rücksetzung erfolgt, der IDPC-Rücksetzpin aktiviert
wird oder das Register gelesen wird und der Hardwarezustand,
der das Bit setzte, nicht länger gegeben ist.
-
Das Register gibt an, welcher Fehler oder welcher
Ausnahmezustand während des Empfangs eines Rahmens aufgetreten ist.
Dieses Register ist eines der einzigartigen "Vier-Stufen-
Statusregister- und Bitfeld-Einheiten", die in Zusammenhang
mit Fig. 27 beschrieben wurden. Dieses Register ist ein
Register der Stufe 4 und wird daher (außer während einer
DLC- oder IDPC-Rücksetzung) nur geladen, wenn beide der
folgenden Ereignisse eingetreten sind:
-
1) Die Stufe 4 wird durch ein Software-Lesen dieses
Empfangsrahmenstatusregisters gelöscht und
-
2) das als Ende des Rahmens (EOF) markierte Byte wird (durch
DMA oder Software) aus dem Empfangs-FIFO 290 ausgelesen.
-
Das Empfangsrahmenunterbrechungsfreigaberegister ist ein
Bit-für-Bit-Abbild des Empfangsrahmenstatusregisters.
EMPFANGSRahmenSTATUSREGISTER
Nicht verwendet Langrahmenfehler CRC-Fehler Abbruchempfangen Überlauffehler Kurzrahmenfehler Nicht-Ganzzahlige-Bytes-Empfangen
-
Das Setzen eines Bits in dem Einpfangsrahmenstatusregister
wird in der Stufe 1 bewirkt und breitet sich bis in dieses
Stufe-4-Register aus. Die folgende Tabelle gibt die
Rangordnung der von diesem Register markierten verschiedenen
Fehler und Ausnahmezustände in absteigender Rangfolge an.
-
Bit Name
-
0 Abbruch empfangen
-
5 überlauf
-
3 Kurzrahmen
-
4 Langrahmen
-
1 nicht ganzzahlige Bytezahl
-
2 CRC-Fehler
-
Wenn im Anschluß an ein Lesen des
Unterbrechungsquellenregisters das Empfangsrahmenstatusregister nicht vor dem LSB des
Empfangsbytezählregisters gelesen wird, und es wird bei
einem gültigen Paket normalerweise nicht gelesen, löscht das
Lesen des Empfangsbytezählregisters das
Empfangsrahmensynchronisierregister. Dies bewahrt die Synchronisierung des
Registerstapels, d. h. der Stufen 1-4.
Bit 0 Abbruch empfangen (Voreinstellung = 0)
-
Dieses Bit wird in der Stufe 1 auf EINS gesetzt (und breitet
sich schließlich in die Stufe 4 aus) und zwar infolge des
Erkennens eines Abbruchzeichens (7 EINSen während des In-
Frame-Zustands) durch den DLC-Empfänger-Abbruchdetektor 214
während der DLC-Empfänger in-frame ist und wenigstens 3
Bytes empfangen wurden.
Bit 1 Nicht ganzzahlige Bytezahl empfangen (Voreinstellung = 0)
-
Dieses Bit wird auf EINS gesetzt, wenn der DLC-Empfänger-
Flaggendetektor 214 bei wenigstens drei empfangenen Bytes
ein Schlußflaggenzeichen erkennt, wenn eine nicht
ganzzahlige Bytezahl in einem Nicht-Kurzrahmen empfangen wurde
(d. h. wenigstens ein Bit weniger als acht Bits wurden nach
der Null-Bitlöschung in dem der Schlußflagge unmittelbar
vorausgehenden Byte empfangen).
Bit 2 CRC-Fehler (Voreinstellung = 0)
-
Dieses Bit wird auf EINS gesetzt, wenn die
DLC-CRC-Prüfeinrichtung 222 bei in dem DLC-Befehls-/Steuerregister
freigegebener CRC-Prüfung einen Fehler erkennt.
Bit 3 Kurzrahmenfehler (Voreinstellung = 0)
-
Dieses Bit wird auf EINS gesetzt, wenn der DLC-Empfänger
durch den Kurzrahmen-Bytezähler 260 einen Kurzrahmenfehler
erkennt.
Bit 4 Langrahmenfehler (Voreinstellung = 0)
-
Dieses Bit wird auf EINS gesetzt, wenn der DLC-Empfänger
durch den Empfangsbytezähler 292 ein Verbindung mit dem
zuvor beschriebenen Höchstempfangspaketgrößenregister einen
Langrahmenfehler erkennt.
Bit 5 Überlauffehler (Voreinstellung = 0)
-
Dieses Bit wird auf EINS gesetzt, wenn das DLC-Empfangs-FIFO
290 einen in Verbindung mit Fig. 16 beschriebenen
überlaufzustand erkennt, d. h. das Empfangs-FIFO 290 enthält 16
Bytes, wenn empfangene Daten von dem Seriell-zu-Parallel
Schieberegister in das FIFO bewegt werden sollen.
-
Das Empfangsverbindungsstatusregister jedes Bit in diesem
Register wird von der DLC einzeln auf EINS gesetzt oder auf
NULL gelöscht, um den Echtzeitzustand der verschiedenen
durch sie wiedergegebenen Statusbedingungen anzugeben. Die
Bits 3-7 werden nicht verwendet. Das Setzen eines beliebigen
Bits in diesem Register setzt das Bit 7 des
Unterbrechungsquellenregisters, wenn das entsprechende Freigabebit des
Empfangsverbindungsfreigaberegisters und das
Empfangsverbindungsstatusbit des
Unterbrechungsquellenunterbrechungsfreigaberegisters gesetzt ist. Beim Abschluß der DLC- oder
IDPC-Rücksetzung werden die Bits im
Empfangsverbindungsstatusregister infolge des Rücksetzens des DLC-Bereichs, den
sie überwachen, in ihren Voreinsteliungszustand
gesetzt/gelöscht.
-
Das zuvor beschriebene Empfangsverbindungsfreigaberegister
ist ein Bit-für-Bit-Abbild dieses Registers.
EMPFANGSVERBINDUNGSSTATURREGISTER
Nicht verwendet In-Frame Bereitschaftsmarkierung empfangen Flaggenbereitschaft empfangen
Bit 9 Bereitschaftsmarkierung (Voreinstellung = 0)
-
Dieses Bit wird auf EINS gesetzt, wenn der DLC-Empfänger-
Bereitschaftsmarkierungsdetektor ein
Bereitschaftsmarkierungsdatenmuster (15 EINSen) erkennt. Dieses Bit wird auf 0
gelöscht, wenn das erste Bit 0 an der
Empfangsdatenverbindung erkannt wird.
Bit 1 Flaggenbereitschaft (Voreinstellung = 0)
-
Dieses Bit wird auf EINS gesetzt, wenn der DLC-Empfänger-
Flaggen-/Abbruchdetektor 214 zwei oder mehr Flaggenzeichen
erkennt, wenn kein in-Frame-Zustand vorliegt. Es wird auf
NULL gelöscht, wenn das erste Nicht-Flaggenzeichen vom Block
214 erkannt wird.
Bit 2 In-Frame (Voreinstellung = 0)
-
Dieses Bit wird auf EINS gesetzt, wenn die
Flaggen-/Abbruchserkennungseinheit 214 des DLC-Empfängers 108 eine von
einem Nicht-Flagge/Nicht-Abbruch-Zeichen gefolgte
Eröffnungsflagge erkennt. Dieses Bit wird beim Empfang einer
Schlußflagge (während des In-Frame-Zustands empfangene
Flagge) oder jeden beliebigen Ausnahmezustand gelöscht, der das
Raster abnormal beendet.
-
Das FIFO-Statusregister. Jedes der Bits des
FIFO-Statusregisters wird von der DLC auf EINS gesetzt oder auf NULL
gelöscht, um den Echtzeitzustand der verschiedenen durch sie
wiedergegebenen Statusbedingungen anzugeben. Die Bits 5-7
werden nicht verwendet.
-
Beim Abschluß der DLC-Rücksetzung oder der Aktivierung des
IDPC-Rücksetzpins werden die Bits im
Empfangsverbindungsstatusregister infolge des Rücksetzens des DLC-Bereichs, den
sie überwachen, in ihren Voreinstellungszustand
gesetzt/gelöscht.
-
Das zuvor beschriebene
FIFO-Statusunterbrechungsfreigaberegister ist ein Bit-für-Bit-Abbild des FIFO-Statusregisters.
Das Setzen eines beliebigen Bits in diesem Register setzt
das Bit 6 des Unterbrechungsquellenregisters, wenn das
entsprechende Freigabebit des
FIFO-Statusunterbrechungsregisters und das FIFO-Statusbit des
Unterbrechungsquellenunterbrechungsfreigaberegisters gesetzt ist.
FIFO-STATUSREGISTER
Nicht verwendet Sendeunterlauf Sendeschwelle erreicht Empfangsschwelle erreicht EOP im Empfangs-FIFO Sende-FIFO-Puffer verfügbar Empfangs-FIFO-DATEN verfügbar
Bit 0 Empfangsschwelle erreicht (Voreinstellung = 0)
-
Dieses Bit wird auf EINS gesetzt, wenn die Bytezahl im DLC-
Empfangs-FIFO 290 größer oder gleich der Zahl im Empfangs-
FIFO-Schwellenbitfeld der DLC-FIFO-Schwelle-Erreicht-Logik
296 wird. Dieses Bit wird auf NULL gelöscht, wenn die
Bytezahl in dem Empfangs-FIFO kleiner wird als das Empfangs-
FIFO-Schwellenbitfeld.
Bit 1 Empfangs-FIFO-Daten verfügbar (Voreinstellung =
-
Dieses Bit wird auf EINS gesetzt, wenn ein Byte zum Lesen
aus dem DLC-Empfangs-FIFO-Datenregister 298, wie durch das
dadurch erzeugte Daten-Verfügbar-Signal angezeigt, verfügbar
ist. Dieses Bit wird auf NULL gelöscht, wenn ein Byte aus
dem Empfangs-FIFO-Datenregister 298 ausgelesen wir und der
FIFO-Speicherplatz unmittelbar über dem Datenregister leer
ist. Das Bit wird gelöscht, wenn das letzte Byte eines
Pakets aus dem Empfangs-FIFO 290 ausgelesen ist. Es wird nicht
erneut freigegeben, bis der Benutzer das LSB des
Empfangsbytezählregisters gelesen wird. Dies gibt an, wann das
letzte Byte eines Pakets ausgelesen wurde.
Bit 2 Sendeschwelle erreicht (Voreinstellung = 0)
-
Dieses Bit wird auf EINS gesetzt, wenn die von dem
Sendebytezähler überwachte Zahl der Bytes in dem DLC-Sende-FIFO 100
geringer oder gleich der Zahl in dem
Sende-FIFO-Schwellenbitfeld des DLC-FIFO-Schwellenregisters wird. Dieses Bit
wird auf NULL gelöscht, wenn die Bytezahl in dem Sende-FIFO
größer wird als das Sende-FIFO-Schwellenbitfeld.
Bit 3 FIFO-Puffer verfügbar (Voreinstellung = 1)
-
Dieses Bit wird auf EINS gesetzt, wenn das DLC-Sende-FIFO-
Datenregister leer ist (d. h. zum Einschreiben verfügbar
ist). Bei einem Schreibvorgang bleibt dieses Bit aktiv, wenn
der unmittelbar über dem Datenregister 160 gelegene
Speicherplatz des FIFO-Sendepuffers leer ist. Das Bit wird
gelöscht, wenn sich das letzte Byte eines Pakets im FIFO 150
befindet (EOP-Markierung). Dies verhindert, daß sich mehrere
Pakete gleichzeitig im FIFO befinden.
Bit 4 Senderunterlauf (Voreinstellung = 0)
-
Dieses Bit wird auf EINS gesetzt, wenn der
Ausgangsspeicherplatz des Sende-FIFO-Puffers 150 (dem FIFO-Datenregister 160
gegenüberliegendes Ende des FIFO) leer ist, wenn ein Versuch
eines Ladens des Parallel-zu-Seriell-Schieberegister 110
stattfindet. Der Sendebytezähler 154 bei einem Versuch
dieses Ladens implizit nicht null. Die Erläuterung in
Verbindung mit Fig. 5 betrifft das Sendebytezählregister 152.
Bit 5 EOP-Im-Empfangs-FIFO (Voreinstellung = 0)
-
Dieses Bit gibt an, wenn es auf EINS gesetzt ist, daß das
letzte Byte eines Pakets in das Empfangs-FIFO 290 geladen
wurde. Das Bit bleibt gesetzt, bis sich keine
EOP-Markierungen mehr in dem FIFO 290 befinden.
Bits 6-7 Nicht verwendet 4.4.1.15
-
DCL-FIFO-Datenregister:
-
DLC-Empfangs-FIFO-Datenregister 298
-
DLC-Sende-FIFO-Datenregister 160
-
Jedes dieser Register ist acht Bits lang.
-
Das Empfangs-FIFO-Datenregister 298 wird durch DMA oder
Software ausgelesen, um ein Byte aus dem Empfangs-FIFO 290
zu entfernen.
-
Das Sende-FIFO-Datenregister 160 wird durch DMA oder
Software beschrieben, um ein Byte in das Sende-FIFO 150 zu
laden.
EMPFANGS-FIFO-DATENREGISTER SENDE-FIFO-DATENREGISTER RESTBIT-STEUER-/STATUSREGISTER
Nicht verwendet Sender-Restbitzahl Empfangsrestbit
Bits 2-0
-
Die drei Empfangsbitrestbits bilden ein
Festwertspeicherfeld, das die Zahl der empfangenen Restbits in dem Paket
angibt. Die Voreinstellung beim Rücksetzen erfolgt für alle
auf NULL. Dieses Feld wird entweder beim Lesen des Registers
oder bei einem Lesen des LSB des Empfangsbytezählers
gelöscht.
-
Code Empfangene Bits
-
000 8
-
001 1
-
. .
-
. .
-
111 7
Bits 5-3
-
Das Senderestbitzählfeld ermöglicht es dem Benutzer, die in
dem letzten Byte des Pakets zu sendende Bitzahl zu bestimmen
(die Daten werden in Bytemengen in das Sende-FIFO geladen).
-
Dieses Feld ist ein Lese-/Schreibfeld, das durch Software
gelöscht und beim Rücksetzen vollständig auf die
Voreinstellung NULL gesetzt wird.
-
Code Gesendete Bits
-
000 8
-
001 1
-
. .
-
. .
111 7
ANHANG B
Status-/Steuerregister (406) des UART 54
-
Das Empfangs-FIFO-Datenregister 404a. Das
Empfangs-FIFO-Datenregister 404a (Fig. 21) (Festwert) ist die Ausgangsseite
des Empfangs-FIFO. Von dem UART 54
empfangene Daten werden
durch den Prozessor 18 aus dem Empfangs-FIFO 404 ausgelesen.
Das Register ist acht Bits breit. Das Bit 0 entspricht dem
geringstwertigen Datenbit, welches das erste zu empfangende
oder zu sendende Bit ist. Der Voreinstellungswert beim
Rücksetzen ist sämtlich NULL.
-
Das Sende-FIFO-Datenregister 424a. Das
Sende-FIFO-Datenregister 424a (Fig. 21) ist ein Nur-Schreib-Eingang in das
Sende-FIFO 424. In dieses acht Bit breite Register bewegte
Daten werden, mit dem geringstwertigen Bit (Bit 0)
beginnend, aus dem Sende-FIFO 424 gesendet. Der
Voreinstellungswert beim Rücksetzen ist sämtlich NULL.
-
Die Baudratendivisor-LSB- und -MSB-Register. Diese beiden
Acht-Bit-Register enthalten die acht Bits niederer bzw.
höherer Ordnung der Zahl, durch die der UART-Takteingang
(UARTCLK) von dem Baudratengenerator 414 zu teilen ist. Das
Bit 0 jedes Registers ist das geringstwertige Bit jedes
Bytes. Der Voreinstellungswert beim Rücksetzen ist sämtlich
NULL. Wenn die beiden Register kombiniert werden, lautet der
Divisor wie folgt
0000000000000001 = Teile durch 1
-
11111111111111111 = Teile durch 65535
-
0000000000000000 = Teile durch 65536
-
Das Teilen durch 1 läßt den UARTCLK unbeeinflußt durch. Dies
ermöglicht es dem Empfänger und dem Sender, von separaten
externen Taktsignalen gelöst zu arbeiten.
-
Jeder Schreibvorgang in das MSB- oder das
LSB-Divisorregister verursacht das Laden des Baudratengenerators 414 mit
dem in den Baudratendivisorregistern gespeicherten 16-Bit-
Wert.
-
Das Unterbrechungsfreigaberegister. Das
Unterbrechungsfreigaberegister ist ein Acht-Bit-Lese-/Schreibregister zur
Freigabe bestimmter unterbrechungsquellen. Das Setzen eines
spezifischen Bits auf EINS gibt den entsprechenden Eingang
frei. Der Voreinstellungswert beim Rücksetzen ist sämtlich
NULL. Das Rücksetzen eines Bits auf NULL deaktiviert den
Eingang und setzt den Unterbrechungspin zurück, wenn der
entsprechende Zustand gegeben ist.
Nicht verwendet MODEM STATUS
-
Bit Unterbrechungsquelle
-
0 Schwelle des Empfangs-FIFO 404 erreicht
-
1 Schwelle des Sende-FIFO 424 erreicht
-
2 Empfängerleitungsstatus: Überlauf, Parität, Unterbrechung, Rasterung (412)
-
3 Modemstatus: CTS, DSR
-
4 UART-Status: Empfangs-FIFO-Auszeit
-
5 UART-Status: Spezialzeichen empfangen (412)
-
6 Sendeleitungsstatus: Sendeschieberegister 420 leer
-
7 Nicht verwendet
-
* Nicht im 8250 vorhanden
-
Das Unterbrechungsidentifizierungsregister. Dies ist ein
Vier-Bit-Festwertregister, das verwendet wird, um das UART-
Statusregister zu identifizieren, welches einen
Unterbrechungszustand aufweist. Die unbenutzten Bitpositionen (7-4)
enthalten NULLen, wenn dieses Register gelesen wird.
Bits Nicht verwendet Unterbrechungsquelle Unterbrechung anstehend
-
Bit 0: Das Unterbrechung-Anstehend-Bit wird auf NULL
gelöscht, wenn eine beliebige Unterbrechung ansteht. Der
Voreinstellungswert beim Rücksetzen ist NULL.
-
Bits 3-1: Dieses Feld gibt die Unterbrechungsquelle an, die
von allen die höchste Priorität hat. Der Voreinstellungswert
beim Rücksetzen ist sämtlich NULL.
-
Bit Priorität Quelle Rücksetzung durch
321
-
0 0 0 Vierte CTS oder DSR Lesen des Modemsta- tusregisters
-
0 0 1 Dritte Schwelle des Lesen dieses Regi-
Sende-FIFO 424 sters UND int. Quel
erreicht le = 001
-
0 1 0 Zweite Schwelle des Lesen dieses Regi-
Empfangs-FIFO sters UND int. Quel-
404 erreicht le = 010
-
0 1 1 Erste ** Überlauf, Pa- Lesen des
Leitungsrität, Spezial- statusregisters
zeichen
empfangen, Rasterung,
oder Unterbrechung
-
1 0 0 Fünfte * Auszeit des Emp- Lesen des UART-
fangs-FIFO 404 Statusregisters
-
1 0 1 Sechste * Sendeschiebe- Lesen dieses
Regiregister 420 sters UND int.
leer Quelle = 101
Bits 7-4 Nicht verwendet = 0
-
* im 8250 nicht vorhanden
*
Gleichzeitiger Empfang eines Spezialzeichens oder eines
Zeichens mit einem Paritätsfehler und eines
Schwelle-Erreicht-Zustands muß die Erzeugung einer
Unterbrechungsanforderung wegen des Spezialzeichens oder des Paritätsfehlers
vor der Erzeugung der Schwelle-Erreicht-Unterbrechung
bewirken.
-
Das Leitungssteuerregister. Das
Acht-Bit-Leitungssteuerregister ermöglicht es dem Mikroprozessor 18, die
Seriellinterfaceparameter zu programmieren sowie die Übertragung
eines Unterbrechungszustands anzufordern. Der
Voreinstellungswert beim Rücksetzen ist sämtlich NULL.
BREAK STICK PARITY ENABLE STOP BITS CHARaCACTER LENGTH
-
Bit: 1, 0 Bits 0 und 1 geben die Zeichenlänge an.
-
BIT 1 0 LÄNGE
-
00 5
-
01 6
-
10 7
-
11 8
-
2 Bit 2 gibt die Zahl der Stop-Bits an. Eine 0 wählt ein
Stop-Bit, eine 1 wählt entweder 1,5 Stop-Bits für fünf
Bitzeichen oder 2 Stop-Bits für sechs, sieben oder acht
Bitzeichen.
-
3 Bit 3 gibt im gesetzten Zustand die Paritätserzeugung
und -prüfung frei.
-
4 Bit 4 wählt zwischen geradzahliger und ungeradzahliger
Parität, wobei im gesetzten Zustand die geradzahlige
Parität gewählt ist.
-
5 Wenn die Bits 5 und 3 gesetzt sind, wird die Parität in
dem der Angabe durch Bit 4 entgegengesetzten Zustand
übertragen.
-
6 Das Bit 6 wird zum Anfordern des Sendens eines
Unterbrechungszustands verwendet. Der UART sendet das
Unterbrechungsmuster immer wenn das Bit 6 gesetzt ist (es
wird gesendet, nachdem das aktuelle Zeichen gesendet
wurde). Die Inhalte des Schieberegisters und des Sende-
FIFOs werden ebenfalls verworfen. Die Leitung kehrt zum
Normalbetrieb zurück, wenn das Bit gelöscht wird.
-
7 Das Divisorzwischenspeicherzugriffsbit muß gesetzt
sein, um auf die Baudratendivisorregister zugreifen zu
können und es muß gelöscht sein, um auf die Empfangs-
und Sende-FIFO-Datenregister und das
Unterbrechungsfreigaberegister zugreifen zu können.
-
Das Modemsteuerregister. Das Fünf-Bit-Modemsteuerregister
ermöglicht es der CPU, die Verbindungs-Handshake-Signale zu
verändern. Ferner kann der UART zu Testzwecken in einem
Rückschleifenmodus betrieben werden. Die unbenutzten Bits
(5-7) sollten NULL sein, wenn das Register gelesen wird. Der
Voreinstellungswert beim Rücksetzen ist sämtlich NULL
Nicht verw. LOOP OUT
-
Bit Funktion
-
0 Bringt DTR/ in den aktiven Zustand (low), wenn
es gesetzt ist
-
1 Bringt RTS/ in den aktiven Zustand (low), wenn
es gesetzt ist
-
2 Bringt Ausgang 1/ in den aktiven Zustand (low),
wenn es gesetzt ist. Dies ist ein
Allzwecksteuerpin.
-
3 Bringt Ausgang2/ in den aktiven Zustand (low),
wenn es gesetzt ist. Dies ist ein
Allzwecksteuerpin.
-
4 Bringt den UART in einen Lokal-Rückschleifenzu
stand.
-
5 Nicht verwendet = 0
-
6 Nicht verwendet = 0
-
7 Nicht verwendet = 0
-
* Diese Bits können gelesen und in den IDPC geschrieben
werden, beeinflussen jedoch nicht den Status irgendeines
Pins. Sie müssen in dem IDPC-Datenblatt als "RESERVIERT"
gekennzeichnet sein, da sie keinem Pin zugeordnet sind.
-
Das Leitungsstatusregister. Das
Acht-Bit-Leitungsstatusregister enthält Flaggenbits, die im gesetzten Zustand das
Vorhandensein eines Zustands anzeigen, der, wenn eine
UND-Verknüpfung mit den geeigneten Unterbrechungsfreigabebits des
Unterbrechungsidentifizierungsregisters erfolgt, eine
Leitungsstatusunterbrechung erzeugen kann. Die Bits 1, 2, 3, 4
und 7 werden durch Lesen des Leitungsstatusregisters
gelöscht. Das Bit 5 wird gelöscht, wenn der Zustand aufgehoben
ist, jedoch wird die Unterbrechung durch Lesen des
Unterbrechungsidentifizierungsregisters gelöscht (wenn das
Identifizierungsregester diese Unterbrechung angibt). Das Bit 0
und das Bit 6 werden gelöscht, wenn der verursachende
Zustand nicht länger vorliegt. Die Voreinstellungswerte beim
Rücksetzen sind im folgenden angegeben.
BREAK FRAME ERROR PARITY DATA
-
Bit Funktion
-
0 Empfangsdaten im Empfangs-FIFO-Datenregister
404a verfügbar. wird gelöscht, wenn Empfangs-
FIFO 404 leer. Voreinstellung = 0
-
1 Überlauffehler vom Empfangs-FIFO 404 (empfangene
Daten verloren). Voreinstellung = 0
-
2 Empfangsparitätsfehler von Block 412 erkannt.
Voreinstellung = 0
-
3 Rahmenfehler (ungültiges Stop-Bit) vom Block 412
erkannt. Zeichen mit Rahmenfehler wird nicht in
das Empfangs-FIFO 404 geladen. Voreinstellung =
0
-
4 Unterbrechungszustand durch Block 412 erkannt.
Voreinstellung = 0
-
5 Schwelle des sende-FIFO 424 erreicht. wird
gelöscht, wenn der FIFO-Stand über die Schwelle
ansteigt. Voreinstellung = 1
-
6 Sendeschieberegister 420 leer (letztes Zeichen
gesendet). wird gelöscht, wenn das FIFO 424 und
das Schieberegister 420 nicht länger leer sind.
Voreinstellung = 0
-
7 Empfang eines Spezialzeichens durch Block 412
erkannt. Wird gesetzt, wenn ein Spezialzeichen
in das FIFO 404 geladen wird, und wird gelöscht,
wenn das Leitungsstatusregister gelesen wird.
Voreinstellung = 0
-
* im 8250 nicht vorhanden
-
Das Modemstatusregister. Das Acht-Bit-Modemstatusregister
gibt den Zustand der Verbindungs-Handshake-Eingangssignale
sowie das Vorhandensein einer Veränderung in deren Status
an. Die Bits 3-0 gehen beim Rücksetzen auf 0, die Bits 7-4
geben den Eingangsstatus wieder.
STATUS TRAIL DELTA
-
Bit Funktion
-
0 Gesetzt, wenn sich CTS/ seit dem letzten Lesen
dieses Registers verändert hat.
-
1 Gesetzt, wenn sich DSR/ seit dem letzten Lesen
dieses Registers verändert hat.
-
2 Durch die Rückflanke des Ringanzeigesignals
gesetzt (Übergang des RI/ von ein zu aus)
-
3 Gesetzt, wenn sich
Empfangsleitungssignalerkennung seit dem letzten Lesen dieses Registers
verändert hat.
-
4 Status der CTS/-Leitung (gesetzt, wenn aktiv -
low)
-
5 Status der DSR/-Leitung (gesetzt, wenn aktiv -
low)
-
6 Status der RI/-Leitung (gesetzt, wenn aktiv =
low)
-
7 Status der RLSD/-Leitung (gesetzt, wenn aktiv =
low)
-
* Darf in der Hardware im IDPC nicht angesteuert sein. Diese
Bits müssen im IDPC-Datenblatt als "RESERVIERT"
gekennzeichnet sein, da sie keinem Pin zugeordnet sind.
-
Das UART-Steuerregister. Das Acht-Bit-UART-Steuerregister
dient der Steuerung von Funktionen, die nicht denjenigen des
8250 gleich sind. Darüber hinaus ist hier das UART-Software-
Rücksetzbit vorgesehen.
RESET TRANSMIT FIFO THRESHOLD RECEIVE SELECT CLOCK SOURCE
-
Bit Funktion
-
0 Auswahl des Empfangstakt-MUX 410: gesetzt für
internen Baudratengenerator 414, gelöscht für
externen (RYCLK). Voreinstellung beim Rücksetzen
=0
-
1 Auswahl des Sendetakt-MUX 418: gesetzt für
internen Baudratengenerator 414, gelöscht für
externen (RYCLK). Voreinstellung beim Rücksetzen
=0
-
2 Sync-Auswahl: gesetzt für synchron, gelöscht für
asynchron. Voreinstellung beim Rücksetzen = 0
-
3, 4 Schwelle-des-Empfänger-FIFO-404-Erreicht wird
gesetzt, wenn die Zahl der Bytes in dem FIFO
gleich oder größer ist als diese Schwelle.
Voreinstellung beim Rücksetzen = 11
01 = 1
-
10 = 2
-
11 = 3
-
00 = 4
-
5, 6 Schwelle-des-Sende-FIFO-424-Erreicht wird
gesetzt, wenn die Zahl der Bytes in dem FIFO
gleich oder geringer ist als diese Schwelle.
Voreinstellung beim Rücksetzen = 00
-
00 = 0
-
01 = 1 -
10 = 2
-
11 = 3
-
7 Der UART 54 wird auf seinen
Voreinstellungszustand rückgesetzt, wenn dieses Bit durch die
Software gesetzt wird. Der Rücksetzvorgang ist
mit einem Hardware-Rücksetzvorgang durch den
RST-Pin identisch. Dieses Bit wird durch den
Rücksetzvorgang gelöscht. Voreinstellung = 0.
-
Das UART-Statusregister. Das Fünf-Bit-UART-Statusregister
gibt Statusbedingungen an, die in einem UART des 8250 nicht
auftreten. Ferner befindet sich das Bit
"Zeichen-mit-Paritätsfehler-verfügbar" in diesem Register. Der
Voreinstellungswert beim Rücksetzen ist sämtlich NULL, mit Ausnahme
des Bits 4, das EINS ist. Das Bit 0 wird gelöscht, wenn das
Register gelesen wird. Die Bits 1-4 werden gelöscht, wenn
der entsprechende Zustand nicht länger gegeben ist.
Nicht verw. AVAIL FIFO SPECIAL CHAR AVAIL PARITY AVAIL FIFO TIMOOUT
-
Bit Funktion
-
0 Auszeit des Empfangs-FIFO 404 ist eingetreten;
gelöscht, wenn das Register gelesen wird
-
1 Vom Block 412 erkanntes Zeichen mit
Paritätsfehler ist verfügbar; gesetzt, wenn ein Zeichen
mit Paritätsfehler des Ausgang des Empfangs-FIFO
404a erreicht; gelöscht, wenn ein Zeichen aus
dem FIFO gelesen wird
-
2 Vom Block 412 erkanntes Spezialzeichen ist
verfügbar; gesetzt, wenn ein Spezialzeichen am
Ausgang des FIFO 404a vorliegt; gelöscht, wenn
das Zeichen aus dem FIFO gelesen wird
-
3 Schwelle des Empfangs-FIFO 404 erreicht.
Gelöscht, wenn die Zahl der Bytes im Empfangs-FIFO
unter den Schwellenwert sinkt
-
4 Dieses Bit wird gesetzt, wenn das Sende-FIFO-
Datenregister 424a leer ist. Dieser Zustand
erzeugt keine Unterbrechung. Voreinstellung = 1
-
5-7 Nicht verwendet