DE3887552T2 - Zeitsteuerung für Doppelanschluss. - Google Patents
Zeitsteuerung für Doppelanschluss.Info
- Publication number
- DE3887552T2 DE3887552T2 DE3887552T DE3887552T DE3887552T2 DE 3887552 T2 DE3887552 T2 DE 3887552T2 DE 3887552 T DE3887552 T DE 3887552T DE 3887552 T DE3887552 T DE 3887552T DE 3887552 T2 DE3887552 T2 DE 3887552T2
- Authority
- DE
- Germany
- Prior art keywords
- bit
- register
- data
- receive
- fifo
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 claims description 88
- 230000001360 synchronised effect Effects 0.000 claims description 31
- 230000009977 dual effect Effects 0.000 claims description 18
- 238000012546 transfer Methods 0.000 claims description 9
- 230000002457 bidirectional effect Effects 0.000 abstract description 6
- 239000000872 buffer Substances 0.000 description 84
- 238000001514 detection method Methods 0.000 description 68
- 238000010586 diagram Methods 0.000 description 33
- 230000007704 transition Effects 0.000 description 23
- 230000006870 function Effects 0.000 description 22
- 230000005540 biological transmission Effects 0.000 description 19
- 230000003111 delayed effect Effects 0.000 description 16
- 230000007246 mechanism Effects 0.000 description 14
- 230000004044 response Effects 0.000 description 13
- 238000012360 testing method Methods 0.000 description 13
- 238000000034 method Methods 0.000 description 12
- 230000000630 rising effect Effects 0.000 description 12
- 230000000694 effects Effects 0.000 description 10
- 206010000210 abortion Diseases 0.000 description 9
- 238000003780 insertion Methods 0.000 description 9
- 230000037431 insertion Effects 0.000 description 9
- 230000000295 complement effect Effects 0.000 description 8
- 230000009471 action Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 239000003550 marker Substances 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000009844 basic oxygen steelmaking Methods 0.000 description 5
- 230000001143 conditioned effect Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000009432 framing Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 125000004122 cyclic group Chemical group 0.000 description 2
- 239000000945 filler Substances 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- GUJDUXMBBAOBHN-UHFFFAOYSA-N 6-(dimethylamino)-n-(2h-tetrazol-5-yl)pyrazine-2-carboxamide Chemical compound CN(C)C1=CN=CC(C(=O)NC2=NNN=N2)=N1 GUJDUXMBBAOBHN-UHFFFAOYSA-N 0.000 description 1
- 102100024061 Integrator complex subunit 1 Human genes 0.000 description 1
- 101710092857 Integrator complex subunit 1 Proteins 0.000 description 1
- ZZLHPCSGGOGHFW-BUKSALPDSA-N S-Methylcysteine S-oxide Chemical compound CS(=O)C[C@H](N)C(O)=O ZZLHPCSGGOGHFW-BUKSALPDSA-N 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000001747 exhibiting effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- ZBNJXSZNWZUYCI-UHFFFAOYSA-N octadecyl 2-(trimethylazaniumyl)ethyl phosphate Chemical compound CCCCCCCCCCCCCCCCCCOP([O-])(=O)OCC[N+](C)(C)C ZBNJXSZNWZUYCI-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000009131 signaling function Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q11/00—Selecting arrangements for multiplex systems
- H04Q11/04—Selecting arrangements for multiplex systems for time-division multiplexing
- H04Q11/0428—Integrated services digital network, i.e. systems for transmission of different types of digitised signals, e.g. speech, data, telecentral, television signals
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Multi Processors (AREA)
- Communication Control (AREA)
- Use Of Switch Circuits For Exchanges And Methods Of Control Of Multiplex Exchanges (AREA)
- Paper (AREA)
- Interface Circuits In Exchanges (AREA)
Description
- Mitanhängige Patentanmeldungen von besonderem Interesse für die vorliegende Anmeldung sind die Europäische Patentanmeldung 210797 mit dem Titel "Digital Subscriber Control"; US- Anmeldung Nr. 034 822 (EP-A-285 330), eingereicht am 3. April 1987 durch D. Gulick, T. Lawell und C. Crowe, Titel: "Data Protocol Controller"; US-Anmeldung Nr. 035 817 (EP-A- 290 129), eingereicht am 3. April 1987 durch D. Gulick, T. Lawell und C. Crowe, Titel: "Packet-At-A-Time Reporting in a Data Link Controller"; US-Anmeldung Nr. 035 683 (EP-A-285 331), eingereicht am 3. April 1987 durch D. Gulick, T. Lawell und C. Crowe, Titel: "Data Link Controller with Flexible Multiplexer", und US-Anmeldung Nr. 035 684 (EP-A-285 334), eingereicht am 2. April 1987 durch D. Gulick, T. Lawell und C. Crowe, Titel: "Enhanced Universal Asynchronous Receiver Transmitter", die jeweils auf die Anmelderin dieser Anmeldung übertragen sind.
- Die vorliegende Erfindung betrifft die Steuerung von Elementen einer integrierten Schaltung und insbesondere den Zugriff auf einen von einem lokalen Prozessor und einem Host- Prozessor gemeinsam genutzten Speicher.
- Eine integrierte Schaltung (IC) kann einen externen "lokalen" Prozessor zur Steuerung verschiedener Elemente der IC verwenden. Die IC kann ferner ein externes Speicherelement zum Speichern von Daten, die von der IC kommen oder an diese gesendet werden, verwenden.
- Ein "Host"-Prozessor kann in Verbindung mit einem solchen lokalen System verwendet werden und es ist daher erwünscht, den externen Speicher gemeinsam durch den lokalen und den Host-Prozessor zu nutzen.
- Es ist erwünscht, aus Kostengründen einen herkömmlichen Direktzugriffsspeicher (RAM) als externes Speicherelement zu verwenden und die Kompatibilität mit dem rein lokalen System zu wahren.
- Es ist ferner erwünscht, unter Verwendung des gemeinsam genutzten RAM eine Interprozessorkommunikation zu bewerkstelligen.
- Im folgenden wird eine Dualport-Zeitsteuerungsvorrichtung (DPTC) beschrieben, die mit einem Interprozessorkommunikationsregister verwendbar ist und einen gemeinsam genutzten RAM (S-RAM) vorsieht, der zusammen mit einer IC-Integrierte- Dienste-Datenprotokollsteuerungsvorrichtung verwendet wird. Der Zugriff auf den S-RAM kann sowohl durch den lokalen Prozessor als auch durch den Host-Prozessor erfolgen. Die DPTC liefert Steuersignale, die das Betreiben eines herkömmlichen RAM als S-RAM ermöglichen. Diese Signale sind unter anderen: Speicherzykluszeitsteuerungssignale, Steuersignale für Puffer und Zwischenspeicher, die zum Isolieren des Systembus des Hosts von dem Systembus des lokalen Prozessors erforderlich sind, und die Erzeugung von Unterbrechungssignalen, die die Interprozessorkommunikation über das Semaphorregister ermöglichen.
- Im folgenden wird ferner das Arbitrieren des Zugriffs auf den S-RAM beschrieben, wobei die DPTC das Semaphorregister aufweist, das bidirektionale Prozessorunterbrechungen speichert und die Koordination der Weitergabe von Nachrichten hoher Wertigkeit zwischen dem lokalen Prozessor und dem Host-Prozessor ermöglicht.
- In US-A-4 594 657 ist eine Dualport-Zeitsteuerungsvorrichtung (verbessertes Semaphorregister 100) offenbart, die mit einer Taktsignalquelle (PC/SC) verbunden und die Steuersignale (PCS) von einem lokalen Prozessor (Peripherie-Prozessor 104) empfängt, wobei die Steuersignale ein Lokal-Datenübertragungs-/-empfangssignal (PR/W) umfassen, und die ferner Steuersignale (SCS) von einem Host-Prozessor (Supervisor-Prozessor 102) empfängt, die ein Host-Datenübertragungs/-empfangssignal (SR/W) umfassen, und die Signale an einen gemeinsam genutzten Speicher (gemeinsam genutzter Speicher (106) und an Bus-Arbitrationseinrichtungen (SD0-SD6 und PD0-PD6) erzeugt, mit
- einer mit der Taktsignalquelle verbundenen Einrichtung (202) zum Synchronisieren des Host-Datenübertragungs-/-empfangssignals (SR/W) mit den Taktsignalen und zum Erzeugen eines synchronen Signals (SWT/SRD),
- einer mit der Taktsignalquelle verbundenen und die Signale PR/W und SR/W empfangenden Einrichtung zum Erzeugen mehrerer Steuersignale (OWN, SEM), die dem RAM zugeführt werden. Jedoch betrifft US-A-4 594 657 eine Vorrichtung, die feststellt, welchem der beiden Prozessoren der Inhalt des gemeinsam genutzten Speichers "gehört".
- Die vorliegende Erfindung betrifft eine Vorrichtung, die die Zugriffsarbitration zwischen zwei Prozessoren betrifft, die beide zur gleichen Zeit auf einen normalerweise nicht gemeinsam genutzten RAM zugreifen wollen.
- Die vorliegende Erfindung schafft eine Dualport-Zeitsteuerungsvorrichtung DPTC zum Steuern des Zugriffs eines lokalen Prozessors oder eines Host-Prozessors auf einen gemeinsamen Speicher S-RAM über einen Bus, wobei die Dualport-Zeitsteuerungsvorrichtung aufweist:
- - eine Synchronisiereinrichtung, die zum Empfangen von Taktsignalen CLK und zum Empfangen von Host-Anfragesignalen HREQ des Host-Prozessors geschaltet ist, um dadurch die Host-Anfragesignale HREQ mit den Taktsignalen CLK zu synchronisieren, wobei das Host-Anfragesignal HREQ eine Anfrage des Host-Prozessors nach Zugriff auf den gemeinsamen Speicher S-RAM über den Bus angibt;
- - eine Zyklusarbitrationseinrichtung 522, die zum Empfangen der Taktsignale CLK, der synchronisierten Host- Anfragesignale HREQ und der lokalen Anfragesignale LREQ geschaltet ist und zum Erzeugen eines Speicherzugrifffreigabsignals GO, wobei das lokale Anfragesignal LREQ eine Anfrage des lokalen Prozessors nach Zugriff auf den gemeinsamen Speicher S-RAM über den Bus angibt;
- - wodurch die Dualport-Zeitsteuerungsvorrichtung DPTC feste Speicherzyklen erzeugt, während derer der Host- oder der lokale Prozessor über den Bus der Zugriff auf den gemeinsamen Speicher S-RAM möglich ist, und den Zugriff derart steuert, daß
- - dem lokalen Prozessor über den Bus Zugriff auf den gemeinsamen Speicher S-RAM gewährt wird, wenn zu dem Zeitpunkt, zu dem die Zyklenarbitrationseinrichtung 522 bereit ist, den nächsten Speicherzyklus zu beginnen, ein lokales Anfragesignal LREQ vorliegt;
- - dem Host-Prozessor über den Bus Zugriff auf den gemeinsamen Speicher S-RAM gewährt wird, wenn zu dem Zeitpunkt, zu dem die Zyklenarbitrationseinrichtung 522 bereit ist, den nächsten Speicherzyklus zu beginnen, ein Host-Anfragesignal HREQ vorliegt;
- - dem lokalen Prozessor Zugriff auf den gemeinsamen Speicher S-RAM zu Beginn des nächsten Speicherzyklus gewährt wird, wenn ein lokales Anfragesignal LREQ empfangen wird, während der Host-Prozessor auf den gemeinsamen Speicher S-RAM zugreift;
- - und daß die lokalen und die synchronisierten Host- Anfragesignale LREQ, HREQ am Ende jedes Speicherzyklus abgetastet werden, wenn weder der lokale, noch der Host-Prozessor auf den gemeinsamen Speicher S-RAM zugreift.
- Die bevorzugte Dualport-Zeitsteuerungsvorrichtung ist Teil einer Datenprotokollsteuerungsvorrichtung, die als einzelne integrierte Schaltung ausgeführt ist.
- 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.
- 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 Fign. 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, LAPB (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: FLAGGE ADRESSE STEUERUNG INFO (OPTIONAL) RASTER PRÜFUNG 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 Rahmen 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- Stüffing-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-Ganzahlige-Bytezahl-Fehlerzustand gegeben.
- Die Bytes werden in aufsteigender 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 Fign. 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 RESET-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 RESET 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 Datenbereichs 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, der 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.
- Die 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 Aspekten 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 Host- Prozessor 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 empfangen 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 Fign. 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 in 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öscheingang (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 Restbitsteuer-/-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 FIFO106 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. Das 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 - dieser 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 markierbare 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 das 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-Statusunterbrechungsfreigaberegister 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 ges endete 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-Fehlerzustand 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-First-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 programmierbaren 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 auf genommen 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-Schwe1le 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 RAM 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 programmierten 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 einprogrammiert. 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-Prozessorbusanforderungseingangsanschluß (HREQ), einen Host-Datensende-/-empfangseingangsanschluß (HDT-R), einen Host-Bereitschaftsausgangsanschluß (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-ÖLeitungen 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 RAMOE/, 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 RAM zugreift.
- Das LREQ/ ist ein vom lokalen Prozessor 18 her kommender aktiver Low-Eingang in den IDPC, durch den Zugriff auf den gemeinsam genutzten RAM 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 RAM 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 RAM 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 RAM 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 RAM 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-RAM) in Verbindung stehen. Dieser Speicher ist ein externer gemeinsam genutzter RAM (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 RAM 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 SRAM 22a ist mit den Daten- und Adreßbussen 26 und 28 verbunden und empfängt die von der DPTC 56 des IDPC 10 erzeugten RAMCS/ (am Anschluß CS/), RAMOE/ (an einem OE/-Anschluß) und RAMWE/ (an einem WE/-Anschluß) sowie WE/.
- In Fig. 23 sind verschiedene Busisoliervorrichtungen dargestellt. Ein Zwischenspeicher 502 ist in dem Datenbus 26 zwischen dem SRAM 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 SRAM 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 dem SRAM 22a angeordnet und empfängt das von der DPTC 56 erzeugte Signal HABE/ an einem OE-Eingang. Ein Zwischenspeicher 510 ist in dem Datenbus 26 im Anschluß an die Zwischenspeicher 502 und 504 zwischen dem Host-Systembus 500 und dem SRAM 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 SRAM 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 RAM- Zyklenzeitsteuerungsblock 524 empfängt ferner das CLK-Signal und die Signale LDT-R/ und HDT-R/ und erzeugt daraus die Signale RAMOE/, 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 RAM 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 SRAM 22a zwei IDPC-Taktzeiten (CLK), wobei wenigstens eine CLK-Taktzeit als Leerraum zwischen jeweils zwei RAM-Zyklen vorgesehen ist.
- Während der SRAM 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 RAM-Zyklenzeitsteuerung 524 erzeugt. Der Beginn eines Zyklus verursacht die folgenden Vorgänge: RAMCS/ 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 SRAM 22a. Sowohl das Signal RAMCS/, als auch entweder das Signal LABE/ oder das Signal HABE/ bleibt bis zum Ende 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 RAM-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: RAMWE/ 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 SRAM 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: RAMOE/ 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).
- RAMOE/ gibt die Ausgangstreiber des SRAM 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. RAMOE/, 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 OUT 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 18 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 1 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 1 nachfolgend aufgefü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 "auf stauen". 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 I 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 de 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 0 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 II 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.
- 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 FCS Durchgangsfreigabe DLC-Rücksetzung CRC-Erzeug.-freigabe CRC-Prüffreigabe Flaggen/Markierung bereit Empfangsfreigabe Sendefreigabe Abbruch senden
- 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).
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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 Wahl des ersten/zweiten Bytes Adressenfreigbe Adressengröße Broadcast-Adressenfreigabe Freigabe Adreß-Reg. 3
- 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.
- 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 EIN- Sen 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.
- 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.
- 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.
- 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. SERIELLBUSPORTSTEUERREGISTER Fern-Rückschleifenfreigabe Lokal-Rückschleifenfreigabe Kanalwahl Invertieren
- 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.
- Diese Bits wählen den SBP-Zeitschlitz zum Multiplexen des ges endeten seriellen Bitstroms durch den Zeitschlitzmultiplexer 196 und zum Demultiplexen des gesendeten seriellen Bitstroms durch den Zeitschlitzdemultiplexer 232.
- Bit 54321 Wahl 00000 Kanal 0 (Bd)*
- 00001 Kanal 1 (Be)*
- 00010 Kanal 2 (Bf)*
- 11110 Kanal 30
- 11111 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.
- 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ückschleltenmodus 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.
- 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-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 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. UNTERBRECHUNGSQUELLENUNTERBRECHUNGSFREIGABEREGISTER Freigabe Empfangs-Verbindungs-Statusunter-Brechung Freigabe Empfangs-Rahmen-unterbr. Gültiges-Paket-Empfangen-Unterbr. Nicht verwendet FIFO-Statusunterbr. Paket-Gesendet-Unterbr. EMPFANGSRAHMENUNTERBRECHUNGSFREIGABEREGISTER Nicht verwendet Freigabe Überlauffehlerunterbrechung Freigabe Langrahmenfehlerr-unterbr. Kurzrahmenfehlerunterbr. CRC-Fehlerunterbr. Nicht-Ganzzahlige-Bytes-Empfangen-Unterbrechung Abbruch-Empfangen-Unterbr. EMPFANGSVERBINDUNGSUNTERBRECHUNGSFREIGABEREGISTER Nicht verwendet Freigabe in-Frame-Unterbr. Flaggenbereitschaft-Empfangen-Unterbr. Bereitschaftsmarkierung-Empfangen-Unterbr. FIFO-STATUSUNTERBRECHUNGSFREIGABEREGISTER Nicht verwendet EOP-im-Empfangs-FIFO-Unterbrechung Freigabe Sendeunterlaufunterbrechung XMIT-Puffer-Verfügbar-Unterbr. Sendeschwelle-Erreicht-Unterbr. FIFO-Daten-Verfügbar-Unterbr. Empfangsschwelle-Erreicht-Unterbr.
- Das Sendebytezählregister (152) ist ein 16-Bit-Register. Voreinstellung = o.
- 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 IDPC-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. LWert Zahl SENDEBYTEZÄHLREGISTER niederwertigstes Byte höchstwertiges
- 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
- 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 im 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
- 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 einzugrenzen. 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 statt dessen 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 Empfangsverbindungsstatus FIFO-Status Empfangsrahmenstatus Gültiges Paket gesendet Gültiges Paketempf. Empfangsverbindungsadreßfeld
- 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 Verbindungsadressenregisters 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.
- 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.
- 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.
- 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.
- 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.
- Dieses Bit wird auf EINS gesetzt, wenn ein beliebiges Bit in dem im folgenden beschriebenen Empfangsverbindungsstatusregister gesetzt ist und SOWOHL das entsprechende Bit im Empfangsverbindungsunterbrechungsfreigaberegister 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
- 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 Überlauffehler Langrahmenfehler Kurzrahmenfehler CRRC-Fehler Nicht-Ganzzahlige-Bytes-Empfangen Abbruch empfangen
- Das setzen eines Bits in dem Empfangsrahmenstatusregister 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.
- 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.
- 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).
- 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.
- Dieses Bit wird auf EINS gesetzt, wenn der DLC-Empfänger durch den Kurzrahmen-Bytezähler 260 einen Kurzrahmenfehler erkennt.
- 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.
- 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 Voreinstellungszustand gesetzt/gelöscht.
- Das zuvor beschriebene Empfangsverbindungsfreigaberegister ist ein Bit-für-Bit-Abbild dieses Registers. EMPFANGSVERBINDUNGSSTATUSREGISTER Nicht verwendet In-Frame Flaggenbereitschaft empfangen Bereitschaftsmarkierung empfangen
- 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.
- 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.
- 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 EOP im Empfangs-FIFO Sendeunterlauf Sende-FIFO-Puffer verfügbar Sendeschwelle erreicht Empfangs-FIFO-DATEN verfügbar Empfangsschwelle erreicht
- 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.
- 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.
- Dieses Bit wird auf EINS gesetzt, wenn die von dem Sendebytezähler überwachte Zahl der Byte s 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.
- 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.
- 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.
- 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.
- DLC-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
- 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
- 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
- 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
- .
- .
- .
- 1111111111111111 = 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 XMIT* LINE STATUS SPCL* CHAR RECVD RRECV* FIFO TIME-OUT MODEM STATUS RECV LINE STATUS XMIT FIFO TR RECV FIFO TR
- 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 Vierte CTS oder DSR Lesen des Modemstatusregisters Dritte Schwelle des Sende-FIFO Lesen dieses Registers UND int. Quelle Zweite Schwelle des Empfangs-FIFO Erste** Überlauf, Parität, Spezialzeichen empfangen, Rasterung, oder Unterbrrechung Lesen des Leitungsstatusregisters Fünfte* Auszeit des Empfangs-FIFO Lesen des UART-Statusregisters Sechste* Sendeschieberegister leer Lesen dieses Registers UND int. Quelle
- * 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. DLAB BREAK STICK PARITY EVEN SET ENABLE OF STOP BITS CHARaCACTER LENGTH geben die Zeichenlänge an Bit Länge
- 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 OUT2/* RTS/ DTR/
- 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 Ausgang1/ 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ückschleifenzustand.
- 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 Unterbrechungsfreigabebiß 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 Identifizierungsregister 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. SPCL- CHAR RECV XMIT S.R. EMPTY FIFO TR BREAK FRAME ERROR PARITY RECV BUFF OVERRUN DATA AVAIL
- 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. RLSD/* RI/* DES/STATUS CTS/DELTA RLSD* RI TRAIL EDGE* DELTA DSR CTS
- 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 SYNC SELECT XMIT CLOCK SOURCE RECV
- 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. XMIT BUF AVAIL RECV FIFO TR SPECIAL CHAR CHAR W/PARITY TIME-OUT
- Bit Funktion
- 0 Aus zeit 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
Claims (5)
1. Dualport-Zeitsteuerungsvorrichtung (DPTC) zum Steuern des
Zugriffs eines lokalen Prozessors oder eines Host-Prozessors
auf einen gemeinsamen Speicher (S-RAM) über einen Bus, wobei
die Dualport-Zeitsteuerungsvorrichtung aufweist:
- eine Synchronisiereinrichtung (520), die zum
Empfangen von Taktsignalen (CLK) und zum Empfangen von Host-
Anfragesignalen (HREQ) des Host-Prozessors geschaltet
ist, um dadurch die Host-Anfragesignale (HREQ) mit den
Taktsignalen (CLK) zu synchronisieren, wobei das Host-
Anfragesignal (HREQ) eine Anfrage des Host-Prozessors
nach Zugriff auf den gemeinsamen Speicher (S-RAM) über
den Bus angibt;
- eine Zyklusarbitrationseinrichtung (522), die zum
Empfangen der Taktsignale (CLK), der synchronisierten
Host-Anfragesignale (HREQ) und der lokalen
Anfragesignale (LREQ) geschaltet ist und zum Erzeugen eines
Speicherzugrifffreigabsignals (GO), wobei das lokale
Anfragesignal (LREQ) eine Anfrage des lokalen
Prozessors nach Zugriff auf den gemeinsamen Speicher (S-RAM)
über den Bus angibt;
- wodurch die Dualport-Zeitsteuerungsvorrichtung (DPTC)
feste Speicherzyklen erzeugt, während derer der Host- oder
der lokale Prozessor über den Bus der Zugriff auf den
gemeinsamen Speicher (S-RAM) möglich ist, und den Zugriff
derart steuert, daß
- dem lokalen Prozessor über den Bus Zugriff auf den
gemeinsamen Speicher (S-RAM) gewährt wird, wenn zu dem
Zeitpunkt, zu dem die Zyklenarbitrationseinrichtung
(522) bereit ist, den nächsten Speicherzyklus zu
beginnen, ein lokales Anfragesignal (LREQ) vorliegt;
- dem Host-Prozessor über den Bus Zugriff auf den
gemeinsamen Speicher (S-RAM) gewährt wird, wenn zu dem
Zeitpunkt, zu dem die Zyklenarbitrationseinrichtung
(522) bereit ist, den nächsten Speicherzyklus zu
beginnen, ein Host-Anfragesignal (HREQ) vorliegt;
- dem lokalen Prozessor Zugriff auf den gemeinsamen
Speicher (S-RAM) zu Beginn des nächsten Speicherzyklus
gewährt wird, wenn ein lokales Anfragesignal (LREQ)
empfangen wird, während der Host-Prozessor auf den
gemeinsamen Speicher (S-RAM) zugreift;
- und daß die lokalen und die synchronisierten Host-
Anfragesignale (LREQ, HREQ) am Ende jedes
Speicherzyklus abgetastet werden, wenn weder der lokale, noch der
Host-Prozessor auf den gemeinsamen Speicher (S-RAM)
zugreift.
2. Dualport-Zeitsteuerungsvorrichtung nach Anspruch 1,
gekennzeichnet durch Einrichtungen (524), die mit der Quelle
der Taktsignale und zum Empfangen von
Richtungssteuersignalen (LDT-R und HDT-R) jeweils von dem lokalen und dem Host-
Prozessor geschaltet sind, zum Anzeigen, ob der jeweilige
Prozessor das Übertragen von Daten zu oder das Empfangen von
Daten von dem gemeinsamen Speicher (S-RAM) fordert, wobei
die Einrichtung (524) mehrere Steuersignale erzeugt, die dem
gemeinsamen Speicher (S-RAM) zugeführt werden, und zum
Erzeugen eines Speicherzugriffsperrsignals (STOP).
3. Dualport-Zeitsteuerungsvorrichtung nach Anspruch 1 oder
2, gekennzeichnet durch Einrichtungen (526, 528, 530, 532)
zum Empfangen eines Host-Speicherzykluszeitsteuerungssignals
(HCYCLE) und eines Lokal-Speicherzeitsteuerungssignals (LCY-
CLE) von der Zyklusarbitrationseinrichtung (552) sowie des
Speicherzugriffsperrsignals (STOP) und entweder des Host-
Datenübertragungsempfangssignals (HDT-R) oder des Lokal-
Datenübertragungsempfangssignals (LDT-R) zum Erzeugen
mehrerer Steuersignale zur Steuerung des Busses.
4. Dualport-Zeitsteuerungsvorrichtung nach einem der
vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die
Dualport-Zeitsteuerungsvorrichtung Teil einer als einzelne
integrierte Schaltung ausgebildete
Datenprotokollsteuerungsvorrichtung ist.
5. Dualport-Zeitsteuerungsvorrichtung nach Anspruch 4,
dadurch gekennzeichnet, daß:
- die von dem Host-Prozessor her empfangenen Steuersignale
ferner ein Host-Unterbrechungsanfragesignal (HINTIN) und ein
Host-Unterbrechungsbestätigungssignal (HINTACK) aufweisen
und die von dem lokalen Prozessor her empfangenen
Steuersignale ferner ein Lokal-Unterbrechungsanfragesignal (LINTIN)
und ein Lokal-Unterbrechungslöschsignal (LINTCLR) aufweisen;
- die Datenprotokollsteuerungsvorrichtung ferner eine
Interprozessor-Unterbrechungseinrichtung (IPI) (596) aufweist,
die mit dem Host-Prozessor und dem lokalen Prozessor
verbunden ist und die Signale HINTIN, HINTACK, LINTIN und
LINTCLR zum Erzeugen eines
Host-Unterbrechungsausschaltsignals (HINTOUT) und eines
Lokal-Unterbrechungsausschaltsignals (LINTOUT) empfängt,
- wodurch der lokale Prozessor und der Host-Prozessor in dem
gemeinsamen RAM befindliche Nachrichten durch eine
vorbestimmte Sequenz von Host-Unterbrechungssignalen und Lokal-
Unterbrechungssignalen übertragen.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/035,687 US4809269A (en) | 1987-04-02 | 1987-04-02 | Dual-port timing controller |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3887552D1 DE3887552D1 (de) | 1994-03-17 |
DE3887552T2 true DE3887552T2 (de) | 1994-08-11 |
Family
ID=21884214
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3887552T Expired - Fee Related DE3887552T2 (de) | 1987-04-02 | 1988-03-25 | Zeitsteuerung für Doppelanschluss. |
Country Status (5)
Country | Link |
---|---|
US (1) | US4809269A (de) |
EP (1) | EP0285329B1 (de) |
JP (1) | JP2717112B2 (de) |
AT (1) | ATE101292T1 (de) |
DE (1) | DE3887552T2 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10032256A1 (de) * | 2000-07-03 | 2002-01-24 | Infineon Technologies Ag | Chip-ID-Register-Anordnung |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4907186A (en) * | 1987-02-09 | 1990-03-06 | The United States Of America As Represented By The Secretary Of Commerce | Data direct ingest system |
EP0285330A3 (de) * | 1987-04-03 | 1989-09-06 | Advanced Micro Devices, Inc. | Daten-Protokoll-Steuerung |
JPS63310004A (ja) * | 1987-06-12 | 1988-12-19 | Omron Tateisi Electronics Co | プログラマブル・コントロ−ラ |
US5170470A (en) * | 1988-05-02 | 1992-12-08 | National Semiconductor Corp. | Integrated modem which employs a host processor as its controller |
FR2631183B1 (fr) * | 1988-05-06 | 1991-02-22 | Compex | Procede et dispositif de transmission asynchrone de donnees par paquets |
US5283869A (en) * | 1989-07-25 | 1994-02-01 | Allen-Bradley Company, Inc. | Interrupt structure for network interface circuit |
EP0489504B1 (de) * | 1990-11-30 | 1997-03-05 | International Business Machines Corporation | Bidirektionaler FIFO-Puffer zur Schnittstellenbildung zwischen zwei Bussen |
US5195089A (en) * | 1990-12-31 | 1993-03-16 | Sun Microsystems, Inc. | Apparatus and method for a synchronous, high speed, packet-switched bus |
US5301186A (en) * | 1991-06-28 | 1994-04-05 | Digital Equipment Corporation | High speed transmission line interface |
US5537654A (en) * | 1993-05-20 | 1996-07-16 | At&T Corp. | System for PCMCIA peripheral to execute instructions from shared memory where the system reset signal causes switching between modes of operation by alerting the starting address |
US5598579A (en) * | 1994-04-25 | 1997-01-28 | Compaq Computer Corporation | System fpr transferring data between two buses using control registers writable by host processor connected to system bus and local processor coupled to local bus |
US5832277A (en) * | 1996-03-08 | 1998-11-03 | 3 Com Corporation | System for arbitrating demand on memory during configuration of a computer add-on card |
US6185203B1 (en) | 1997-02-18 | 2001-02-06 | Vixel Corporation | Fibre channel switching fabric |
US6118776A (en) | 1997-02-18 | 2000-09-12 | Vixel Corporation | Methods and apparatus for fiber channel interconnection of private loop devices |
US6012121A (en) * | 1997-04-08 | 2000-01-04 | International Business Machines Corporation | Apparatus for flexible control of interrupts in multiprocessor systems |
US6201817B1 (en) * | 1998-05-28 | 2001-03-13 | 3Com Corporation | Memory based buffering for a UART or a parallel UART like interface |
US7206310B1 (en) * | 2001-12-28 | 2007-04-17 | Redback Networks Inc. | Method and apparatus for replicating packet data with a network element |
US7784062B2 (en) * | 2004-06-18 | 2010-08-24 | General Electric Company | Event based operating system, method, and apparatus for instrumentation and control systems |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3287705A (en) * | 1963-03-07 | 1966-11-22 | Rca Corp | Computer system |
US4290133A (en) * | 1977-10-25 | 1981-09-15 | Digital Equipment Corporation | System timing means for data processing system |
US4594657A (en) * | 1983-04-22 | 1986-06-10 | Motorola, Inc. | Semaphore for memory shared by two asynchronous microcomputers |
US4530093A (en) * | 1983-07-05 | 1985-07-16 | International Standard Electric Corporation | PCM Telecommunications system for voice and data |
JPS6143370A (ja) * | 1984-08-03 | 1986-03-01 | インタ−ナショナル・ビジネス・マシ−ンズ・コ−ポレ−ション | 多重処理システム |
US4692918A (en) * | 1984-12-17 | 1987-09-08 | At&T Bell Laboratories | Reliable local data network arrangement |
US4637015A (en) * | 1985-07-29 | 1987-01-13 | Northern Telecom Limited | Packet transmission and reception via a shared DMA channel |
EP0285330A3 (de) * | 1987-04-03 | 1989-09-06 | Advanced Micro Devices, Inc. | Daten-Protokoll-Steuerung |
-
1987
- 1987-04-02 US US07/035,687 patent/US4809269A/en not_active Expired - Lifetime
-
1988
- 1988-03-25 DE DE3887552T patent/DE3887552T2/de not_active Expired - Fee Related
- 1988-03-25 AT AT88302636T patent/ATE101292T1/de not_active IP Right Cessation
- 1988-03-25 EP EP88302636A patent/EP0285329B1/de not_active Expired - Lifetime
- 1988-04-01 JP JP63082136A patent/JP2717112B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10032256A1 (de) * | 2000-07-03 | 2002-01-24 | Infineon Technologies Ag | Chip-ID-Register-Anordnung |
Also Published As
Publication number | Publication date |
---|---|
ATE101292T1 (de) | 1994-02-15 |
JP2717112B2 (ja) | 1998-02-18 |
EP0285329B1 (de) | 1994-02-02 |
EP0285329A3 (en) | 1989-08-30 |
JPS63257049A (ja) | 1988-10-24 |
US4809269A (en) | 1989-02-28 |
DE3887552D1 (de) | 1994-03-17 |
EP0285329A2 (de) | 1988-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3887552T2 (de) | Zeitsteuerung für Doppelanschluss. | |
DE3856486T2 (de) | Einzelpaketmeldung in einer Datenverbindungssteuereinrichtung | |
DE3855630T2 (de) | Hybrider Übertragungsverbindungsadapter mit Ein-/Ausgabe- und Datenübertragungstechnologie | |
DE69131971T2 (de) | Netzwerkanpassungseinrichtung mit Puffer und Mehrbeschreibungskreis | |
DE2647241C2 (de) | Übertragungseinrichtung für die synchrone Datenübertragung | |
DE69128503T2 (de) | Schnittstellenschaltung für intelligentes Netzwerk | |
DE3689635T2 (de) | Netzwerk mit Tokenübergabe für industrielle Zwecke. | |
DE3546662C2 (en) | Operating communication bus network for processors | |
DE69131477T2 (de) | Netzwerkanpassungseinrichtung | |
DE69326429T2 (de) | Netzwerkschnittstelle mit unabhängiger pufferverwaltung | |
DE69029892T2 (de) | Datendarstellung und Protokoll | |
DE60219999T2 (de) | Taskverwaltungsverfahren für einen Router einer Paketvermittlungsstelle, die Teil eines gesicherten und Paketvermittelten Netzes ist | |
DE69430945T2 (de) | Schnelle Paketvermittlungsnetze | |
DE68916231T2 (de) | Verfahren und Vorrichtung zum Vielfachzugriff mit verteilten Warteschlangen in einem Kommunikationssystem. | |
DE69919114T2 (de) | Verfahren und Vorrichtung zur Netzwerküberlastkontrolle | |
DE3751091T2 (de) | Übertragungsprotokoll zwischen Prozessoren. | |
DE69429773T2 (de) | Zellenvermittlung und verfahren zur weglenkung von zellen durch diese vermittlung | |
DE69519117T2 (de) | Ein Rechnersystem | |
DE19758889B4 (de) | IEEE-1394-Protokoll-Steuereinheit | |
DE69431846T2 (de) | System für asynchronen datentransfer und steuerung des quellenverkehrs | |
DE69023447T2 (de) | Parallele Architektur zur schnellen Flag-Erkennung und Paketidentifizierung. | |
DE4023471A1 (de) | Kommunikationsschnittstellenschaltung in einem steuerungssystem | |
DE3586919T2 (de) | Verfahren zur steuerung von informationsuebertragung. | |
DE69429200T2 (de) | Datenwarteschlangenvorrichtung und ATM-Zellenvermittlung beruhend auf Schieben und Suchen | |
DE3635106C2 (de) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |