| 4.7 Bausteine für asynchrone, serielle Schnittstellen |  | 4.9 Bausteine zur Analog/Digital- und Digital/Analog-Wandlung |

## 4.8 Bausteine für synchrone, serielle Schnittstellen

Bei der synchronen seriellen Datenübertragung kann man die folgenden Typen unterscheiden:

- Übertragung von Datenblöcken nach festgelegtem Protokoll; diese Form der Übertragung wird in Weitverkehrsnetzen oder Lokalen Netzen benutzt und kann weiter unterteilt werden in:
  - die zeichenorientierte Übertragung (Character Oriented Protocol - COP),
  - die bitorientierte Übertragung (Bit Oriented Protocol - BOP).
- Übertragung von Einzeldaten ohne Protokoll; hierbei werden unstrukturierte Daten (Bits, Bytes, Wörter...) zwischen einem Prozessor und seinen Peripheriekomponenten bzw. zwischen Prozessoren ausgetauscht.

Die letztgenannte Übertragungsart unterscheidet sich von der im letzten Abschnitt beschriebenen asynchronen Übertragung hauptsächlich durch die Form der Synchronisierung zwischen Sender und Empfänger; in Funktion und Einsatz gleicht sie der asynchrone Übertragung jedoch sehr. Wir werden sie am Ende dieses Abschnitt ausführlich in einer Fallstudie beschreiben.

### 4.8.1 Zeichenorientierte Übertragung

Bei der zeichenorientierten Übertragung liegt die Information als Folge von Zeichen eines bestimmten Codes vor. Dabei handelt es sich meistens um den ASCII-Code. Jedoch können auch andere Codes mit 5 bis 8 Bits pro Zeichen benutzt werden. Zwischen den eigentlichen Daten werden Steuerzeichen eingefügt, die den Ablauf der Übertragung beeinflussen, für den Empfänger aber uninteressant sind. (Bei dem in Tabelle A1 im Anhang dargestellten ASCII-Code sind diese Steuerzeichen in den ersten beiden Spalten aufgeführt.) International genormte, zeichenorientierte Übertragungsverfahren sind die Basic Mode Control Procedures for Data Communication Systems (BDC), kurz Basic Mode Procedures oder Byte Control Procedures (BCP) genannt. Auf sie gehen wir hier nur soweit ein, wie es für die folgende Beschreibung der Schnittstellenbausteine nötig ist.
Im Bild 4.8-1 ist der prinzipielle Aufbau eines Übertragungsblockes für die zeichenorientierte Übertragung dargestellt.
Bild 4.8-1: Block der zeichenorientierten Übertragung
Die Übertragung beginnt zunächst mit dem Aussenden von einem oder mehreren Synchronisierzeichen SYNC (Synchronous Idle), die vom Empfänger benötigt werden, um sich mit dem Übertragungstakt des Senders gleichzuschalten. Das Steuerzeichen STX (Start of Text) kennzeichnet dann den Beginn der eigentlichen Datenübertragung. Diese wird durch das Zeichen ETX (End of Text) beendet. Zur Erkennung von Übertragungsfehlern wird dem Block ein Prüfzeichen BCC (Block Check Character) angefügt.
4.8.1.1 Bausteine für die zeichenorientierte Übertragung
Die Bausteine für die zeichenorientierte serielle Übertragung werden z.B. als

- Synchronous Serial Data Adapter (SSDA)

bezeichnet. Häufig kann jedoch ein und derselbe Baustein sowohl die asynchrone als auch die (zeichenorientierte) synchrone Übertragung durchführen. In diesem Fall spricht man von einem

- Universal Synchronous/Asynchronous Receiver/Transmitter (USART) oder von einem
- Programmable Communications Interface (PCI).

Ein Baustein für die synchrone, zeichenorientierte Übertragung ist im wesentlichen so aufgebaut wie die im letzten Abschnitt beschriebenen, asynchronen Schnittstellenbausteine. Im Bild 4.8-2 ist daher nur der prinzipielle Aufbau der Ausführungseinheit für die zeichenorientierte Übertragung dargestellt. Auf die übrigen Komponenten des Bausteins, also die Steuerung mit ihren Registern (Status-, Steuer-, Befehlsregister), die Interrupt- und die Modem-Steuerung brauchen wir hier nicht mehr einzugehen.

Bild 4.8-2: Die Ausführungseinheit für die zeichenorientierte Übertragung

Sowohl beim Sender als auch beim Empfänger ist das Datenregister (Transmitter Data Register - TDR bzw. Receiver Data Register - RDR) durch einen FIFO-Registersatz (First in, First out) ersetzt, der mehrere Zeichen aufnehmen kann, üblicherweise 3 bis 8 Zeichen. Diese Pufferung der Daten gewährt dem Prozessor eine größere Flexibilität beim Einschreiben oder Auslesen der Übertragungsdaten. Ähnlich wie beim ACIA-Baustein wird durch den Ausgang TxRDY (Transmitter Ready) der CPU angezeigt, daß wenigstens ein Register des FIFOs im Sender frei ist, die CPU also ein neues Datum dort einschreiben kann. Durch den Ausgang RxRDY (Receiver Ready) wird dem Prozessor mitgeteilt, daß im Empfangs-FIFO wenigstens ein Datum zur Abholung bereitsteht.
Zur Übertragung kann eine Zeichenlänge von 5 bis 8 bit gewählt werden. Bei Zeichen mit einer Länge von weniger als 8 bit werden die höchstwertigen Bits im FIFO-Register nicht benutzt, also als don't cares betrachtet. Dem Schieberegister TSR werden stets nur soviel Taktimpulse zur Parallel/Serien-Wandlung zugeführt, wie durch die Anzahl der Bits im Zeichen verlangt wird. Auf diese Weise wird die zeitvergeudende Übertragung der don't care-Bits vermieden. Auch im Empfänger-Schieberegister RSR wird zunächst jeweils genau ein übertragenes Zeichen zusammengesetzt und dann parallel in ein FIFO-Register übertragen. Bei einer Zeichenlänge unter 8 bit werden dabei die höherwertigen Registerzellen (z.B.) auf '0' gesetzt.
Im SYNC-Register (Synchronization Code) wird das vereinbarte Synchronisierzeichen abgelegt. Im Bild 4.8-2 ist gestrichelt angedeutet, daß einige Bausteine auch die Benutzung zweier (verschiedener) SYNC-Zeichen erlauben (Two Sync Character Mode, Bi-Sync Mode). Diese SYNC-Zeichen werden beim Senden vor dem ersten Datum des Blocks in das Schieberegister TSR (Transmitter Shift Register) übertragen und von dort auf den seriellen Ausgang TxD ausgegeben. Außerdem kann der Baustein so programmiert werden, daß er immer dann ununterbrochen SYNC-Zeichen ausgibt, wenn aktuell keine Daten zu übertragen sind.
Beim Empfang wird jedes Zeichen, das im Empfangs-Schieberegister RSR (Receiver Shift Register) parallelisiert wurde, durch den Komparator mit dem Inhalt des SYNC-Registers verglichen. Wird Gleichheit festgestellt (Sync Match), so wird ein bestimmtes Bit im Statusregister gesetzt und gegebenenfalls der Prozessor durch einen Interrupt davon unterrichtet. Häufig wird das Ergebnis des Vergleichs auch über eine spezielle Ausgangsleitung SYNDET (Sync Detected) angezeigt. Der µP stellt dadurch den Beginn eines Übertragungsblocks fest und kann die nachfolgenden Daten aus dem RDR-FIFO entnehmen. Das SYNC-Zeichen selbst wird nicht in das RDR-Register übernommen. (Im Two Sync Character Mode müssen natürlich zwei unmittelbar hintereinander folgende Zeichen mit den Inhalten der beiden SYNC-Register übereinstimmen.)
Alle anderen Steuerzeichen, z.B. die oben beschriebenen STX und ETX, sowie das Blockprüfzeichen BCC werden vom Prozessor wie normale Daten gesendet oder empfangen, ohne daß sie vom Schnittstellenbaustein ausgewertet werden. (Zur Erzeugung des BCC-Zeichens existieren Spezialbausteine, auf die im Rahmen dieses Kurses jedoch nicht eingegangen werden kann, da die zugrunde liegende Theorie nicht vorausgesetzt wird.)
Wie bei der asynchronen Übertragung kann auch hier ein Paritätsbit zur Sicherung der Übertragung benutzt werden. Da die meisten Bausteine für einen Vollduplex-Betrieb entwickelt sind, muß die Logik zur Berechnung des Paritätsbits doppelt vorhanden sein, also sowohl im Sender als auch im Empfänger. Dabei kann wahlweise eine gerade oder ungerade Parität festgelegt werden (Even/Odd Parity). Das Paritätsbit wird vom Parity Generator im Sender erzeugt und jedem abgeschickten Zeichen angefügt. Die SYNC-Zeichen werden gewöhnlich nicht durch ein Paritätsbit ergänzt.
Im Empfänger wird das Paritätsbit vom Parity (Generator and) Checker überprüft. Tritt ein Paritätsfehler auf, so wird ein spezielles Bit im Statusregister gesetzt, das vom Prozessor zur Feststellung des Übertragungsfehlers abgefragt werden kann.
Bausteine für die synchrone Übertragung besitzen häufig keinen integrierten Baudraten-Generator, wie er bei den asynchronen Schnittstellen beschrieben wurde. In diesem Fall müssen der Sender- und Empfängertakt dem Baustein über die Eingänge TCLK (Transmitter Clock) bzw. RCLK (Receiver Clock) von außen zugeführt werden. Üblich sind Übertragungsraten bis zu 4 Mbd (Megabaud).
4.8.1.1.1 Externe Synchronisation
Bei der bisher beschriebenen Übertragung geschieht die Synchronisation von Sender und Empfänger durch das SYNC-Zeichen. Durch ein bestimmtes Bit im Steuerregister des Bausteins kann man diese "interne" Synchronisierung ausschalten. In diesem Fall kann die Synchronisation extern durch den Empfängertakt RCLK geschehen. Dieser muß dazu mit dem Sendertakt schaltungsmäßig so synchronisiert werden, daß er durch das erste Bit des übertragenen Datenblockes gestartet wird und seine (positive) Flanke genau um eine halbe Bitzeit von derjenigen des Sendertaktes verschoben ist (vgl. Bild 4.7-1 unten). Diese Synchronisation erreicht man z.B. dadurch, daß man als Empfängertakt den invertierten Sendertakt nimmt und diesen durch das im Abschnitt 4.7.3 beschriebene Eingangssignal DCD (Data Carrier Detect) des Bausteins im richtigen Zeitpunkt aktiviert.
4.8.1.1 Das Programmiermodell zeichenorientierter Bausteine
Im Bild 4.8-3 sind mögliche Realisierungen des Statusregisters und der Steuerregister eines Bausteins für die zeichenorientierte Übertragung dargestellt. Die Funktion aller hell-grau unterlegten Bits ist bereits im letzten Abschnitt beschrieben worden und wird deshalb hier nicht wiederholt.
Bild 4.8-3: Status- und Steuerregister eines COP-Bausteins
4.8.1.2.1 Das Statusregister
Im Statusregister ist nur das UE-Bit neu hinzugekommen (Underrun Error, Underflow Error, "Unterlauf-Fehler"). Dieses Bit wird immer dann gesetzt, wenn während einer Blockübertragung das TSR-Schieberegister leer wird, im FIFO-Register aber noch kein weiteres Zeichen zur Übertragung bereitsteht. Der Baustein überträgt dann automatisch ein Füllzeichen, um die Synchronisation mit dem Empfänger aufrecht zu halten. Die Art dieses Füllzeichens wird durch ein Bit S/ des Steuerregisters (s.u.) vorgegeben: Wahlweise wird das im SYNC-Register gespeicherte Synchronisierzeichen oder ein konstantes '1'-Signal (Mark Bit) ausgegeben. Einige Bausteine besitzen außerdem einen besonderen Ausgang, um diesen Unterlauf-Fehler dem Prozessor anzuzeigen.
4.8.1.2.2 Die Steuerregister

| Dieses Steuerbit wurde gerade eben beschrieben.
1/ | Durch dieses Bit wird festgelegt, ob ein Datenblock durch ein oder zwei Synchronisierzeichen begonnen wird (One/Two Sync Character Mode).
I/ | Dieses Bit bestimmt die Form der Übertragungssynchronisation: intern über die SYNC-Zeichen oder extern über den Empfängertakt RCLK.
EIE | Error Interrupt Enable) Dieses Bit bestimmt, ob durch eines der "Fehler"-Bits 0 bis 2 im Statusregister eine Interruptanforderung zum Prozessor übermittelt wird oder nicht.

### 4.8.2 Bitorientierte Übertragung

Bei der bitorientierten Übertragung werden die Daten in einen Rahmen (Frame) mit festem Format eingebunden. Nur die Position der Bits in diesem Rahmen legt fest, ob es sich um Steuerinformation oder ein Datum handelt. Diese Steuerinformation wird von den Schnittstellenbausteinen interpretiert. Die Datenbits selber werden nicht ausgewertet. Sie können daher in einem beliebigen Code mit 1 bis 8 Bits/Zeichen übertragen werden.
Im Bild 4.8-4 ist der Übertragungsrahmen für eines der am häufigsten eingesetzten Übertragungsverfahren (Übertragungsprozedur) skizziert. Dieses wird als High Level Data Link Control (HDLC-Prozedur) bezeichnet. Andere Übertragungsverfahren, auf die wir jedoch nicht näher eingehen können, sind die SDLC-Prozedur (Synchronous Data-Link Control), die hauptsächlich in der "IBM-Welt" eingesetzt wird, sowie die ADCCP-Prozedur (Advanced Data Communications Control Procedure).
Bild 4.8-4: Übertragungsrahmen der HDLC-Prozedur
Der HDLC-Rahmen beginnt und endet stets mit einem Begrenzungszeichen, dem Flag. Dieses wird durch die Bitkombination '01111110' dargestellt. Ähnlich wie das oben beschriebene SYNC-Zeichen dient das Anfangs-Flag (Opening Flag) zur Synchronisation zwischen Sender und Empfänger. Es kann vom Sender auch in den Pausen zwischen den Übertragungen ausgesandt werden.
Natürlich kann auch unter den Datenbits diese Kombination auftreten, die dann fälschlicherweise als Begrenzungszeichen interpretiert wird. Um dies zu verhindern, sorgt der Sender dafür, daß außer in den Anfangs- und Ende-Begrenzungszeichen niemals 6 oder mehr '1'-Bits unmittelbar hintereinander folgen. Dazu fügt er nach fünf hintereinander übertragenen '1'-Datenbits stets ein '0'-Bit ein. Der Empfänger seinerseits entfernt zur Restaurierung der ursprünglichen Information jeweils das erste '0'-Bit, das auf fünf '1'-Bits folgt. Dieses Verfahren wurde bereits als Bit Stuffing ("Bitstopfen", oder Zero Insertion/Deletion) beschrieben.
Das zweite Bitfeld des Rahmens enthält stets die Empfängeradresse (Address Field). Diese hat natürlich nur dann eine Bedeutung, wenn mehrere potentielle Empfänger die Daten erhalten können, also an der gleichen Datenleitung hängen. Die Länge dieses Feldes ist abhängig von der Übertragungsprozedur und stets ein Vielfaches von 8. Im anschließenden Steuerfeld Control Field) können bestimmte Befehle, Rückmeldungen (Quittungen) oder aber auch Rahmennummern untergebracht werden.
Das nächste Feld (Information Field) enthält die zu übertragenen Daten. Es kann im Extremfall leer sein, nämlich dann, wenn (im Steuerfeld) lediglich ein Befehl übertragen werden soll. Die maximale Länge des Feldes muß zwischen den Kommunikationspartnern abgesprochen werden. Die aktuelle Länge kann der Empfänger jedoch anhand des abschließend übermittelten Ende-Flags (Closing Flag) feststellen.
Nach den Daten wird wiederum ein Prüfzeichen übertragen, das üblicherweise 16 bzw. 32 bit lang ist. Dieses wird mit Frame Check Sequence (FCS) bezeichnet. Das Verfahren zur Berechnung dieses Zeichens wird als zyklische Redundanzprüfung (Cyclic Redundancy Check - CRC) bezeichnet.
4.8.2.1 Bausteine für die bitorientierte Übertragung
Im Bild 4.8-5 ist die Ausführungseinheit eines Schnittstellenbausteins für die bitorientierte Übertragung skizziert. Diese Bausteine werden üblicherweise als Advanced Data-Link Controller (ADLC) bezeichnet. Es existieren jedoch auch Bausteine, die wahlweise die asynchrone sowie die synchrone, bit- oder zeichenorientierte Übertragung ausführen können. Übliche Namen dafür sind Datenkommunikationsbaustein, Serial Communications Controller (SCC) oder Multiprotocol Controller
Wie bei den Bausteinen der zeichenorientierten Schnittstellen sind auch hier Sender- und Empfänger-Datenregister durch FIFO-Register ersetzt, die jeweils 3 bis 8 Speicherzellen besitzen. Der Baustein kann wiederum Zeichen mit einer Länge zwischen 5 und 8 bit übertragen. Alle Zeichen, die kürzer als 8 bit sind, werden völlig analog zur zeichenorientierten Übertragung in den FIFO-Registern gespeichert und von den Schieberegistern (TSR, RSR) bearbeitet. Dabei müssen Zeichen mit einer Länge von weniger als 5 bit zunächst vom Prozessor so zusammengefaßt werden, daß sie wenigstens 5 bit lang sind. Auch die Funktion der Ausgänge TxRDY, RxRDY ist hier dieselbe wie bei den Bausteinen zur zeichenorientierten Übertragung. Jedes im FIFO-Register abgelegte Zeichen wird mit seinem niederstwertigen Bit voran auf den Datenausgang TxD gegeben bzw. auf dem Dateneingang RxD empfangen.
Bild 4.8-5: Die Ausführungseinheit für die bitorientierte Übertragung
Vor der Übertragung des ersten Zeichens (der Empfängeradresse) gibt die mit 'FLAG-Erzeugung' bezeichnete Komponente des Senders das Anfangs-Begrenzungszeichen auf den Datenausgang TxD. Bei dieser Komponente kann es sich zum Beispiel um ein Schieberegister handeln, das mit dem festen Flag-Wert '01111110' parallel geladen wird und diesen über einen Multiplexer seriell auf TxD legt.
Die mit 'FLAG-Erkennung' bezeichnete Komponente des Empfängers vergleicht den auf der Datenleitung RxD eintreffenden Datenstrom mit dem Flag-Zeichen. Sobald sie dieses Zeichen findet, synchronisiert sie ihren Empfangstakt mit dem Sendetakt und gibt das Meldesignal 'FLAG Detect' aus. Dieses Signal kann einerseits vom Prozessor an einem besonderen Bausteinausgang, andererseits aber durch ein spezielles Bit des Statusregisters (s.u.) abgefragt werden.
Das Flag wird nicht in das Empfangs-Schieberegister übernommen. Der Sender kann das Flag auch in den Übertragungspausen ununterbrochen ausgeben und dadurch für eine stetige Synchronisation des Empfängers sorgen.
Bei einer anderen Variante des im Bild 4.8-5 dargestellten Bausteins besitzt die Ausführungseinheit ein spezielles Adreßregister, in dem die Stationsadresse des Mikrorechners, wie sie im Adreßfeld des Datenrahmens angegeben wird, abgelegt ist. Nach dem Erkennen des Flags vergleicht der Empfänger hardwaremäßig das nachfolgende Adreßfeld im Datenrahmen mit dieser Adresse. Nur falls er eine Übereinstimmung feststellt, aktiviert er das Empfangs-Schieberegister RSR, informiert davon den Prozessor über eine zusätzliche Ausgangsleitung RxA (Receive Address) und fordert ihn dadurch zur Übernahme der Daten auf. Bei festgestellter Nichtübereinstimmung kann das RSR deaktiviert bleiben und auf den nächsten Übertragungsrahmen gewartet werden.
Die beiden Komponenten '0-Einfuegen' bzw. '0-Entfernen' übernehmen das oben beschriebene Bit Stuffing. Dazu untersuchen sie die durchlaufenden Bitströme auf fünf hintereinanderfolgende '1'-Bits. Die Komponente '0-Einfuegen' des Senders hängt an diese Bits ein '0'-Bit an, die Komponente '0-Entfernen' des Empfängers entfernt das erste '0'-Bit, das nach ihnen übertragen wird.
Die Komponente FCS Generator des Senders berechnet aus dem vorbeilaufenden Ausgangs-Bitstrom nach einem vorgegebenen Algorithmus das Rahmenprüfzeichen FCS und schickt es zum Abschluß der Datenübertragung auf den Ausgang TxD.
Auf der Empfängerseite wird in der Komponente FCS Checker das Prüfzeichen erneut berechnet und mit dem im Datenstrom übertragenen Zeichen verglichen. Dabei kann der Empfänger das (zwischengespeicherte) FCS-Zeichen nur durch seine Lage direkt vor dem Ende-Flag im Datenstrom erkennen. Wird eine Abweichung festgestellt, so wird im Statusregister ein Fehlerbit gesetzt (s.u.). In der Regel wird durch dieses Bit keine Interruptanforderung an den Prozessor gestellt. Der µP kann dann also nur durch die Abfrage des Statusregisters einen aufgetretenen Übertragungsfehler feststellen. Da die ADLC-Bausteine meistens für einen Vollduplex-Betrieb entwickelt sind, muß die Logik zur Berechnung des FCS-Zeichens doppelt vorhanden sein, also sowohl im Sender als auch im Empfänger. Das FCS-Zeichen wird ebenfalls nicht in das Empfangs-Schieberegister übernommen.
4.8.2.2 Das Programmiermodell bitorientierter Bausteine
Im Bild 4.8-6 sind mögliche Realisierungen von Status- und Steuerregister eines Bausteins für die bitorientierte Übertragung dargestellt. Alle Bits, die bereits in diesem oder dem vorhergehenden Abschnitt beschrieben wurden, sind wiederum hell-grau unterlegt und werden hier nicht mehr behandelt.
Bild 4.8-6: Status- und Steuerregister eines BOP-Bausteins
4.8.2.2.1 Die Statusregister

FD | (Flag Detected) Dieses Bit wird gesetzt, wenn in einem empfangenen Bitstrom das Flag-Zeichen '01111110' erkannt wurde. Sein Zustand stimmt mit dem des oben beschriebenen Ausgangs FLAG Detect überein. Durch die Abfrage dieses Bits kann der Prozessor den Beginn eines Übertragungsrahmens feststellen.
AP | (Address Present) Dieses Bit wird immer dann gesetzt, wenn ein Zeichen des Adreßfeldes im Datenrahmen empfangen wurde und im FIFO-Register des Empfängers bereitliegt. Durch dieses Bit wird der Prozessor aufgefordert festzustellen, ob eine übertragene Nachricht für ihn oder einen anderen Empfänger bestimmt ist. (Dieses Bit entfällt bei der oben erwähnten Variante mit Stations-Adreßregister).
FV | (Frame Valid) Dieses Bit zeigt an, daß ein fehlerfreier und vollständiger Rahmen mit Anfangs- und Ende-Flag empfangen wurde. Nachdem dieses Bit gesetzt wurde, unterbricht der Baustein solange den Empfang, bis der Prozessor das letzte Datum des Rahmens aus dem FIFO gelesen und das FV-Bit zurückgesetzt hat.
FCS | (Frame Check Sequence Error) Durch dieses Bit wird ein Übertragungsfehler angezeigt, der durch die Auswertung des FCS-Zeichens festgestellt wurde. Es wird nicht gesetzt, wenn ein unvollständiger Rahmen ohne FCS-Zeichen übertragen wurde. (Dieser wird durch das FV-Bit gekennzeichnet.)
OE | (Overrun Error) Hierdurch wird dem Prozessor ein Datenverlust mitgeteilt, der dadurch entsteht, daß ein neues Datum in das FIFO-Register des Empfängers eingetragen wird, obwohl dieses momentan keine freie Stelle besitzt. Dabei sorgt die FIFO-Steuerung dafür, daß immer nur die erste Stelle des FIFOs überschrieben wird.
UE | (Underrun Error) Dieses Bit wird gesetzt, wenn während der Übertragung eines Rahmens das TSR-Schieberegister geleert wird, der Prozessor aber nicht rechtzeitig ein neues Datum in das Sende-FIFO-Register schreibt. In diesem Fall wird die Übertragung des Rahmens automatisch abgebrochen und der Empfänger darüber durch das Aussenden eines Abbruch-Zeichens (Abort Character) aus wenigstens acht unmittelbar aufeinanderfolgenden '1'-Bits - also eine Verletzung der Bit-Stuffing-Regel - informiert.
AR | (Abort Received) Dieses Bit zeigt an, daß während des Empfangs eines Rahmens auf dem Dateneingang RxD ein Abbruch-Zeichen erkannt wurde. Das Setzen dieses Bits führt zu einer Unterbrechungsanforderung zum Prozessor.
IR | (Inactive Idle Received) Dieses Bit wird gesetzt, wenn auf der Empfangsleitung RxD keine Informationen übertragen werden, diese Leitung also konstant einen logischen '1'-Zustand hat. Auch das Setzen dieses Bits kann zu einer Unterbrechungsanforderung zum Prozessor führen.

4.8.2.2.2 Die Steuerregister

F/ | (Flag/Mark Idle Select) Dieses Bit legt fest, welches Zeichen der Sender zwischen zwei Übertragungsrahmen kontinuierlich auf den Datenausgang TxD geben soll: das FLAG-Zeichen '01111110' oder aber eine Folge von '1'-Bits (Mark Bits).
AEX | (Address Extend Mode) Durch dieses Bit wird die Länge des Adreßfeldes im Übertragungsrahmen bestimmt. Diese Länge kann entweder fest auf 8 bit eingestellt oder aber dynamisch verändert werden. Im zweiten Fall zeigt eine '0' im niederstwertigen Bit des jeweils übertragenen Adreßbytes an, daß ein weiteres Adreßbyte folgt. (Eine Ausnahme davon stellt lediglich die "Null"-Adresse dar, die aus acht '0'-Bits besteht.)
CEX | (Control Field Extension) Durch dieses Bit wird die Länge des Steuerfeldes (Control Field) im Rahmen auf 8 oder 16 bit festgelegt.
TxL | (Transmit Last Data) Durch das Setzen dieses Bits teilt der Prozessor dem Sender im Baustein mit, daß er das letzte Datum in das FIFO-Register übertragen hat. Dadurch wird der Sender zur Ausgabe des FCS-Zeichens und des Ende-Flags veranlaßt.
FF/ | (Double Flag/Single Flag) Zur Erhöhung der Übertragungsgeschwindigkeit kann der Baustein das Ende-Flag eines Rahmens als das Anfangs-Flag des unmittelbar folgenden Rahmens auffassen. Durch dieses Bit wird bestimmt, ob von dieser Möglichkeit Gebrauch gemacht werden soll oder aber jeder Rahmen durch eigene Flags eingeschlossen werden soll.
TA | (Transmit Abort) Der Prozessor benutzt dieses Bit, um die Übertragung eines Rahmens vorzeitig abzubrechen. Als Reaktion wird das oben beschriebene Abbruch-Zeichen (von wenigstens acht '1'-Bits) ausgesandt und dadurch der Empfänger über die Beendigung der Übertragung informiert.

4.8.2.2.3 LAN-Controller
In rapide steigendem Maß werden heutzutage immer mehr Mikrorechner miteinander vernetzt. Dies geschieht einerseits über öffentliche Weitverkehrsnetze (Wide Area Networks WAN), vor allem aber auch durch sogenannte Lokale Netze (Local Area Network - LAN).
Für die Kommunikation in LANs wird häufig die synchrone bitorientierte serielle Datenübertragung angewandt. Die Bausteine zur Steuerung dieser Kommunikation werden LAN-Controller genannt. Es handelt sich bei ihnen durchweg um hochkomplexe Schaltungen. Im Rahmen dieses Kurses können wir leider nicht auf sie eingehen, da die z.T. sehr komplizierte Übertragungsprotokolle benutzen.

### 4.8.3 Fallstudie: Synchrone, serielle Schnittstellen zur Bausteinkopplung

In diesem Unterabschnitt wollen wir nun eine synchrone serielle Schnittstelle beschreiben, wie sie häufig in DSPs und Mikrocontrollern integriert ist und die den kostengünstigen Anschluß von Peripheriebausteinen ermöglicht, die über dieselbe Schnittstelle verfügen. Zu diesen Bausteinen gehören insbesondere Analog/Digital- sowie Digital/Ananlog-Wandler und "serielle" EPROMs, aber auch komplexe Codierer/Decodierer (CODECs) für Stereo-Audiosignale. Wie bereits gesagt, werden über diese Schnittstelle keine strukturierte Datenpakete/Blöcke nach festem Protokoll, sondern einzelne Daten ausgetauscht. Die Beschreibung der synchronen, seriellen Schnittstellen in diesem Abschnitt orientiert sich an der DSP-Familie ADSP-218x der Firma Analog Devices, die sie Kapitel I.6 kennengelernt haben. Diese Schnittstellen werden mit Serial Ports (SPORT) bezeichnet.
4.8.3.1 Kopplung über die SPORTs
Neben dem Anschluß von Peripheriebausteinen können die SPORTs auch der Kopplung mehrerer Prozessoren dienen. Im Bild 4.8-7 sind beide genannten Kopplungsmöglichkeiten schematisch dargestellt.
Bild 4.8-7: Kopplung über die seriellen Schnittstellen
Die Schnittstelle besteht aus fünf Signalen. Im Bild 4.8-7 sind drei dieser Signale bidirektional dargestellt. Dies ist so zu verstehen, daß sich beide Kommunikationspartner bei der Initialisierung des Systems über die Übertragungsrichtungen dieser Signal verständigen müssen. Nachdem diese Wahl in den SPORTs getroffen wurde, ist sie gewöhnlich für die gesamte Betriebsdauer festgelegt. Im Bild 4.8-7 wird durch die gestrichelt gezeichneten Pfeile eine mögliche Richtungswahl angedeutet.

- Über die Leitung SCLK (Serial Clock) wird ein Taktsignal (mit einer maximalen Frequenz von 37 MHz) zur Steuerung der synchronen Übertragung ausgetauscht. (Im Bild 4.8-7 wird beispielhaft angenommen, daß dieses Signal vom "rechten" Kommunikationspartner erzeugt wird.)
- Über die Datenleitung DT (Data Transmit) werden die seriellen Daten ausgegeben.
- Über die Datenleitung DR (Data Receive) werden die seriellen Daten empfangen.
- Über die Steuerleitung TFS (Transmit Frame Sync) wird beim Aussenden eines einzelnen Datums oder eines Datenblocks ein Synchronisiersignal übertragen, das Beginn (und Ende) des Datums oder Datenblocks anzeigt (Rahmung - Framing, s.u.).
- Über die Steuerleitung RFS (Receive Frame Sync) wird dementsprechend beim Empfangen eines Datums oder Datenblocks ein Synchronisiersignal übertragen, das Beginn (und Ende) des Datums oder Datenblocks anzeigt (s.u.).

Die dargestellte Kopplung über die SPORTs erinnert sehr stark an die V.24-Schnittstelle, wie Sie sie in Abschnitt 4.7.4 kennengelernt haben. Auch hier ist eine Vollduplex-Übertragung möglich, für die Daten- und Steuersignale jeweils kreuzweise miteinander verbunden werden müssen. Die betrachteten SPORTs erlauben eine Übertragungsgeschwindigkeit von bis zu 37 Mbit/s - gleichzeitig in beiden Richtungen und abhängig von der Taktrate des Prozessors.
Vor der Benutzung einer seriellen Schnittstelle muß diese im Systemsteuerregister SCR aktiviert werden. Dieses Register ist im Bild 4.8-8 dargestellt. Zur Aktivierung der SPORTs dienen die Bits 11 und 12. (Die unterlegt grau gezeichneten Steuerbits werden in späteren Unterabschnitten beschrieben.)

Bild 4.8-8: Das Systemsteuerregister

4.8.3.2 Der innere Aufbau der SPORTs
Im Bild 4.8-9 ist der innere Aufbau einer seriellen Schnittstelle skizziert. Jeder ADSP-218x besitzt zwei (fast) identische serielle Schnittstellen, den SPORT0 und SPORT1. Jeder SPORT besteht aus einem Sender- und einem Empfängerteil. Alle Register des SPORTs können über den Datenbus DMD beschrieben und gelesen werden. Der Prozessorkern schreibt ein zu übertragendes Datum in das Sende-Datenregister TX (Transmit Register). Dabei können Wortlängen zwischen 3 und 16 bit gewählt werden. Sobald das Sende-Schieberegister TSR (Transmit Shift Register) leer ist, d.h. das "vorausgehende" Datum vollständig bearbeitet wurde, wird das Datum aus TX (parallel) dorthin übertragen und dann Bit für Bit - synchron zum Takt SCLK - auf die Ausgangsleitung DT gelegt.
Das höchstwertige Bit (MSB) wird zuerst ausgesendet. Sobald dieses Bit aus dem Register TSR herausgeschoben wurde, wird der DSP-Kern durch einen Interrupt (Transmit Interrupt) darüber informiert. Dazu muß in einem Register des Kerns, dem IMASK-Register (Interrupt Mask Register), dieser Interrupt aktiviert sein. Der DSP-Kern kann dann (typischerweise in der Interruptroutine) ein neues Datum ins Register TX schreiben.
Beim Empfang eines Datums wird dieses zunächst von der Eingangsleitung DR bitweise ins Empfangs-Schieberegister RSR (Receive Shift Register) übernommen. Erst wenn das Datum vollständig übertragen wurde, wird es (parallel) ins Empfangs-Datenregister RX (Receive Register) geschrieben. Gleichzeitig wird der DSP-Kern durch einen Interrupt (Receive Interrupt) informiert. Auch hier muß dazu dieser Interrupt im IMASK-Register aktiviert sein. Der DSP-Kern kann dann (typischerweise in der Interruptroutine) das Datum aus dem Register DX lesen.
Bild 4.8-9: Interner Aufbau der seriellen Schnittstellen
Dir Register TX und RX werden nicht unter Speicheradresse, sondern durch bestimmte Bitfelder im OpCode direkt angesprochen. Lesen und Schreiben der Register geschieht z.B. durch die Datentransferbefehle (Data Move Instructions).
Bei der digitalen Verarbeitung von analogen Audiosignalen werden diese häufig in einen (wenigstens) 13 bit langen Code umgesetzt. Zur Reduzierung des Übertragungsaufwandes für die so gewonnenen Zeichen können diese durch eine logarithmische Umcodierung in 8-bit-Zeichen umgesetzt werden, ohne daß die Qualität der Verarbeitung hörbar leidet. Die Umsetzung in diesen 8-bit-Code (Kompression - Compressing) bzw. die Rückwandlung in den 13-bit-Code (Dekompression - Expanding) wird von der im Bild 4.8-9 dargestellten Komprimier-/Dekomprimier-Logik vorgenommen. Diese Logik wird zusammenfassend mit dem Kunstwort Compand Logic bezeichnet. Die Logik entnimmt - sofern sie aktiviert wurde - die zu übertragenden bzw. empfangenen Daten den entsprechenden Registern TX bzw. RX, codiert sie entsprechend um und schreibt sie in die Register zurück. Da beide Register, TX und RX, sowohl beschrieben wie gelesen werden können, kann die De-/Codier-Logik auch nur intern, also ohne folgende oder vorausgehende Übertragung über die serielle Schnittstelle, zur Umwandlung von Daten durch Kompression bzw. Dekompression benutzt werden. Dabei muß jedoch beachten werden, daß die Umwandlung einen Taktzyklus benötigt, so daß u.U. ein NOP-Befehl eingefügt werden muß, bevor das Ergebnis vom SPORT abgeholt werden kann.
In jedem Zyklus können gleichzeitig eine Kompression wie eine Dekompression ausgeführt werden. Wegen der Komplexität der Codier-/Decodierschaltung ist sie nur einmal implementiert worden und muß bei Bedarf von beiden SPORTs gemeinsam benutzt werden. Treten dabei Zugriffskonflikte auf, so besitzt SPORT0 die höhere Priorität, und SPORT1 muß einen Zyklus warten.
Ausgelöst und überwacht werden alle möglichen Operationen der SPORTs durch die mit "Steuerung" bezeichnete Komponente. Sie enthält eine ganzen Satz von Steuerregistern (Configuration Registers), die unter hohen Adressen des internen Datenspeichers angesprochen werden können. Die Steuerung hat insbesondere die Aufgabe, Sender- und Empfängerteil des SPORTs mit den notwendigen Takt- und Steuersignalen zu versorgen. Dazu befindet sich in der Steuerung der Baudraten-Generator, der die Ableitung einer ganzen Reihe von Frequenzen des Schiebetaktes SCLK aus dem Systemtakt CLKOUT erlaubt. (Das Signal SCLK kann Frequenzen bis zu 0 Hz aufweisen.) Im Bild 4.8-10 sind die beiden Register dargestellt, die der Erzeugung des Schiebetaktes dienen.
Bild 4.8-10: Register zur Steuerung des Taktes SCLK
Die Frequenz des Schiebetaktes SCLK wird dadurch festgelegt, daß im Register SCLKDIV (Serial Clock Divide Modulus) ein Wert angegeben wird, durch den die Frequenz des Systemtaktes CLKOUT dividiert werden soll. Dabei gilt die folgende Formel:

Frequenz von SCLK = 0.5 * (Frequenz von CLKOUT) / (SCLKDIV + 1).

Das Register RFSDIV (RFS Divide) hat nur dann eine Bedeutung, wenn das Synchronisiersignal RFS (s.o.) intern erzeugt und vom Kommunikationspartner ausgewertet wird. Der Wert in RFSDIV legt fest, mit welcher Frequenz das Signal RFS auftreten und - dementsprechend - Datenwörter empfangen werden sollen. Diese Frequenz wird nach folgender Formel berechnet:

Frequenz von RFS = (Frequenz von SCLK) / (RFSDIV + 1).

Umrechnung der Formel zeigt, daß der Wert (RFSDIV + 1) angibt, wie viele Takte von SCLK zwischen zwei Aktivierungen des Signals RFS auftreten. Daraus folgt auch, daß die Eingabe von Werten, die kleiner als die Bitanzahl der Datenwörter ist, nicht zulässig ist.

Selbsttestaufgabe 4.8-1: (–> Lösungsvorschlag)
Berechnen Sie allgemein den Wert, den man ins Register SCLKDIV eintragen muß, um einen Schiebetakt der Frequenz SCLK zu bekommen. Geben Sie die Werte für SCLKDIV an, die man bei einem Systemtakt CLKOUT = 12,288 MHz für eine Schiebefrequenz von SCLK = 9600 Hz und SCLK = 2,048 MHz benötigt. Welchen Wert muß man ins Register RFSDIV eintragen, wenn bei einer Schiebefrequenz von SCLK = 2,048 MHz eine Wort-Übertragungsrate von 8 kHz (8000 Wörter pro Sekunde) erreicht werden soll ?

Wird das Taktsignal SCLK extern, also vom Kommunikationspartner erzeugt, so wird es direkt an die Schieberegister TSR, RSR des SPORTs durchgeschaltet, und der Baudraten-Generator ist abgeschaltet.
Wie bereits in Bild 4.8-8 angedeutet wurde, können die Schnittstellenleitungen des SPORT1 durch alternative Signale (Alternate Configuration) belegt werden. Das sind zwei Interrupteingänge IRQ0 und IRQ1 sowie die beiden unter Programmkontrolle ansprechbaren Signale FI (Flag In) und FO (Flag Out). Nur das Signal SCLK behält seine Funktion. Die Auswahl zwischen den Signalen der seriellen Schnittstelle und den alternativen Signalen geschieht durch Bit 11 des Systemsteuerregisters SCR (s. Bild 4.8-8).
Eine sehr nützliche Eigenschaft der SPORTs ist, daß die Erzeugung des Taktsignals SCLK - wie die Compand Logic - auch dann aktiv ist, wenn der zugehörige SPORT selbst deaktiviert ist. In diesem Fall kann der SPORT als "programmierbarer" Taktgenerator für externe Peripheriekomponenten benutzt werden.
4.8.3.3 Die verschiedenen Synchronisationsverfahren
Um Bausteine unterschiedlicher Hersteller mit verschiedenen Übertragungsverfahren an die SPORTs anschließen zu können, erlauben diese, eine Auswahl unter einer Reihe von Synchronisationsvarianten zu treffen. Bevor wir auf diese Varianten genauer eingehen, stellen wir im Bild 4.8-11 die Steuerregister der seriellen Schnittstellen dar, die wir mit SPCR0/1 (SPORT0/1 Control Register ) bezeichnen.
Bild 4.8-11: Die Steuerregister der seriellen Schnittstellen
Durch das Bit MCE (Multichannel Enable) im SPCR0 kann eine besondere Betriebsart der seriellen Schnittstelle SPORT0, die Mehrkanal-Übertragung, festgelegt werden, die im Unterabschnitt 4.8.3.5 ausführlich beschrieben wird. Im Steuerregister SCR1 von SPORT1 gibt das Nur-Lese-Bit 15 (Read Only) stets den aktuellen Zustand des Ausgangssignals FO (Flag Out) wieder, das unter Programmkontrolle beliebig geändert werden kann. Durch die Möglichkeit seiner Abfrage über Bit 15 kann auf die explizite Speicherung des Zustands verzichtet werden. Das Bit ISCLK (Internal Serial Clock Generation) legt fest, ob der Schiebetakt SCLK intern erzeugt wird (ISCLK = 1) oder vom Kommunikationspartner geliefert wird.
Das Bitfeld SLEN in den Steuerregistern SPCRi bestimmt die Länge der übertragenen Daten zwischen 3 und 16 bit. Dabei wird die Länge durch SLEN+1 gegeben, d.h. z.B. SLEN = 00102 = 2 entspricht einer Wortlänge von 3, SLEN = 11112 = 15 einer Länge von 16. (Die Werte SLEN = 0, SLEN = 1 sind nicht zulässig.) Da die Länge der übertragenen Wörter nicht mit der Länge 16 der internen Datenregister übereinstimmen muß, wird durch das Feld DTYPE (Data Format) festgelegt, wie empfangene Daten in den internen Registern abgelegt werden. Grundsätzlich geschieht die Ablage "rechtsbündig" (right justified), d.h. beginnend mit Bit 0. Durch DTYPE kann gewählt werden, ob die höherwertigen Bits (MSBs - Most Significant Bits) mit dem Wert 0 (Zero Fill) oder dem Vorzeichen des empfangenen Datums (Sign Extension) gefüllt werden. Außerdem wird durch das Feld DTYPE das Verfahren zur Daten-Kompression-/Dekompression (Companding) aktiviert, das bereits erwähnt wurde. Dabei kann zwischen zwei Algorithmen, dem sog. A-Law bzw. m -Law, gewählt werden. Empfangene Daten werden (nach der Dekomprimierung) rechtsbündig und vorzeichengerecht im Empfangsregister RXi zur Abholung durch den DSP-Kern bereitgestellt. Entsprechend werden ins Senderegister TXi geschriebene Daten (nach der Kompression) durch Auffüllen der MSBs mit dem Vorzeichen auf die programmierte Wortlänge erweitert und ausgegeben.
Die restlichen Bits der Register SPCRi dienen zur Steuerung der Datenübertragung, insbesondere zur Festlegung der oben beschriebenen Synchronisiersignale RFS und TFS. Für jedes Signal werden dazu vier Bits benötigt. Die grundlegenden Formen der Übertragung sind im Bild 4.8-12 skizziert.

Bild 4.8-12: Die grundlegenden Synchronisationsverfahren der SPORTs

Dargestellt ist darin jeweils der Fall, daß die Synchronisiersignal (Framing Sync) intern, also nicht vom Kommunikationspartner erzeugt werden. Die Steuerbits RFSR (Internal Transmit Frame Sync Enable), TFSR, ITFS (Internal Transmit Frame Sync Enable) bzw. IRFS (Internal Receive Frame Sync Enable) sind dazu auf den Wert '1' zu setzen. Zur Vereinfachung der Darstellung wird von der Übertragung von 4-bit-Wörtern (B3, B2, B1, B0; SLEN = 3) ausgegangen. Grundsätzlich wird, wie bereits gesagt, durch die SPORTs das höchstwertige Bit B3 (MSB) zuerst ausgegeben.
Bei der normalen Rahmensynchronisation (Normal Frame Synchronous) wird ein Zyklus vor dem Beginn der Übertragung für eine halbe Taktdauer ein (positives) Synchronisiersignal ausgegeben. Es wird vom Kommunikationspartner während der fallenden Taktflanke erkannt. Danach wird das Signal bis zum Ende der Übertragung des Datums zurückgesetzt. (Im Kommunikationspartner wird das Signal während der folgenden Übertragung des Datums nicht mehr abgetastet und ausgewertet.)

- Beim Schreiben wird das (intern erzeugte) Signal auf der Leitung TFS ausgegeben. Mit jeder folgenden positiven Flanke des Taktes wird danach ein Bit des Datums gesendet. Das Bit TFSW (Transmit Frame Sync Width) muß auf den Wert 0 gesetzt sein.
- Beim Lesen wird das Signal auf der Leitung RFS erzeugt. Mit jeder folgenden negativen Flanke des Taktes wird danach ein Bit des Datums empfangen. Das Bit RFSW (Receive Frame Sync Width) muß auf den Wert 0 gesetzt sein.

Bei der alternierenden Rahmensynchronisation (Alternate Frame Synchronous) wird zu Beginn der Übertragung das (positive) Synchronisiersignal ausgegeben und erst nach dem Ende der Übertragung des Datums wieder zurückgenommen. (Im Kommunikationspartner wird auch hier das Signal während der folgenden Übertragung des Datums nicht mehr abgetastet und ausgewertet.) Gleichzeitig mit der Aktivierung des Signals wird bereits das erste Bit des Datums übertragen, wobei bzgl. des Schreibens und Lesens die beim normalen Verfahren gemachten Aussagen gelten. Die Bits RFSW bzw. TFSW müssen für dieses Verfahren auf den Wert '1' gesetzt sein. Da bei diesem Verfahren der Partner bereits während des Taktzyklus, in dem das Synchronisiersignal aktiviert wird, das erste Bit übertragen (senden oder empfangen) muß, verlangt es eine schnellere Reaktion.
Bei den bisher beschriebenen Übertragungen werden die Synchronisiersignale für jedes zu übertragende Wort neu generiert. Man spricht daher von der "gerahmten" Übertragung (Framed Transmission). Sie wird durch die Belegung der Bits TFSR (Transmit Frame Sync Required) bzw. RFSR (Receive Frame Sync Required) mit dem Wert '1' selektiert. Im Bild 4.8-13 wird dieser Rahmensynchronisation die Übertragung ohne Rahmung (Unframed Transmission) gegenübergestellt.

Bild 4.8-13: Gerahmte und ungerahmte Übertragung

Die "ungerahmte" Datenübertragung wird zwischen Kommunikationspartnern eingesetzt, die große Blöcke von Daten möglichst schnell und ohne Pausen übertragen wollen. Sender und Empfänger müssen sich vor der Übertragung über die Länge des Blockes verständigen. Hier wird nur vor dem Beginn der Übertragung eines Blocks das Synchronisiersignal erzeugt. Erst die Übertragung des nächsten Blocks wird wieder durch ein Rahmensignal angezeigt. Während der Blockübertragung wird das Rahmensignal vom Partner nicht abgetastet und ausgewertet. Die ungerahmte Übertragung wird selektiert durch RFSR = 0 bzw. TFSR = 0.
Im Bild 4.8-13 wird auch gezeigt, daß bei der normalen Rahmung durch vorzeitige Erzeugung des Synchronisiersignals - noch während der Übertragung des letzten Bits eines Datums - ebenfalls eine ununterbrochene Übertragung von Daten erreicht werden kann (Continuous Transfer without Break).
Zum Abschluß dieses Unterabschnitts soll noch darauf hingewiesen werden, daß der aktive Pegel (high oder low) der Rahmen-Synchronisiersignale frei gewählt werden kann. Dies geschieht durch die entsprechende Programmierung der Bits INVRFS (Invert Receive Frame Sync) bzw. INVTFS (Invert Transmit Frame Sync). Eine '0' selektiert dabei einen positiven, eine '1' einen negativen aktiven Pegel. (In den oben stehenden Bildern wurde er beispielhaft auf high gesetzt.)
4.8.3.4 Übertragung mit automatischer Pufferung
Zur Kommunikation mit Peripheriekomponenten, die ihre Daten blockweise anbieten oder verlangen, bieten die seriellen Schnittstellen eine besonders effiziente Möglichkeit der Datenübertragung mit automatischer Pufferung (Autobuffering).

- Im sendenden Kommunikationspartner kann der Datenblock zunächst in einem Ringpuffer abgelegt und dann durch die Hardware der seriellen Schnittstelle automatisch, d.h. ohne Programmkontrolle, übertragen werden. Erst wenn der gesamte Datenblock ausgegeben wurde, wird ggf. der DSP-Kern darüber durch einen Interrupt informiert und zur Übergabe eines neuen Datenblocks aufgefordert.
- Im empfangenden Partner kann dementsprechend der gesamte Datenblock zunächst automatisch in einem Ringpuffer gesammelt werden, bevor der DSP-Kern evtl. durch einen Interrupt aufgefordert wird, den Block geeignet weiter zu verarbeiten.

Die Ablage eines Datums aus dem Register des SPORTs im Ringpuffer bzw. das Holen eines Datums daraus "kostet" jeweils nur einen Taktzyklus, für den der DSP-Kern auf das interne Bussystem verzichten muß. Dies ist sehr viel weniger Zeit, als bei der Übertragung unter Programmkontrolle verbraucht wird; denn die automatische Pufferung geschieht völlig transparent, asynchron zum Programmlauf und ohne "Prozeßumschaltung" zu einer Interruptroutine. Die angesprochenen Ringpuffer müssen im internen oder externen Datenspeicher - also nicht im Programmspeicher - angelegt werden. Dazu müssen die Daten-Adreßgeneratoren (DAG, siehe Kapitel über DSPs) geeignet programmiert werden.
Die Aktivierung der Betriebsart Autobuffering (fürs Senden oder Empfangen von Datenblöcken) sowie die Angabe der für die Ringpuffer benutzten DAG-Register geschieht in den sog. Autobuffer Control Registers. Ihr Aufbau ist im Bild 4.8-14 dargestellt. Die benötigten Indexregister können (durch Angabe ihrer 3-bit-Nummer) beliebig aus beiden Daten-Adreßgeneratoren gewählt werden. Da die Modifizier-Register aus dem gleichen Adreßgenerator genommen werden müssen, reichen zu ihrer Selektion zwei Bits im Steuerregister. Die Aktivierung des Autobuffering geschieht durch Einschreiben einer '1' in das der Übertragungsrichtung entsprechende Bit 1 oder 0.

Bild 4.8-14: Die Steuerregister für die automatische Pufferun

4.8.3.5 Mehrkanal-Übertragung
Die Möglichkeit der Kommunikation von Prozessoren und Peripheriekomponenten über die seriellen Schnittstellen ist nicht auf die Punkt-zu-Punkt-Verbindung beschränkt, die im Bild 4.8-7 skizziert ist. Grundsätzlich können an jeder Ausgangsleitung DT auch mehrere Eingänge DR angeschlossen sein, also eine stärker vermaschte Kopplung realisiert werden. Die Steuersignale TFS bzw. RFS sowie der Takt SCLK der beteiligten Partner müssen dabei natürlich entsprechend "verdrahtet" und programmiert werden. Im einfacheren Fall findet eine "Rundspruch"-Übertragung statt, bei der die gesendeten Daten von allen angeschlossenen Kommunikationspartnern empfangen werden (können).
Der SPORT0 kann aber auch im Zeit-Multiplexverfahren (Time Division Multiplexing - TDM) betrieben werden. Dabei wird die Übertragung in mehrere Zeitkanäle eingeteilt, die sich zyklisch wiederholen (Multichannel Operation). Jeder Zyklus wird durch ein Synchronisiersignal "eingerahmt". Wählbar sind 24 oder 32 Kanäle. Vor Beginn jeder Übertragung wird festgelegt, in welchen Kanälen ein bestimmter DSP oder Peripheriebaustein Daten aussenden darf und in welchen Kanälen er Daten empfängt. Dabei darf jeder SPORT in ein und demselben Kanal auch gleichzeitig senden und empfangen oder aber in diesem Kanal inaktiv sein. Natürlich muß die Vergabe der Senderechte konfliktfrei geschehen, d.h. es dürfen nicht zwei SPORTs gleichzeitig in einem Kanal Daten ausgeben. Die Länge der übertragenen Datenworte muß in allen beteiligten SPORTs auf denselben Wert (zwischen 3 und 16 bit) eingestellt werden. Im Bild 4.8-15 ist die Mehrkanal-Übertragung für 4-bit-Daten skizziert.

Bild 4.8-15: Zum Prinzip der Mehrkanal-Übertragung

Im Bild 4.8-15 empfängt die betrachtete serielle Schnittstelle Daten in den Kanälen 0, 2 und sendet Daten in den Kanälen 1, 2. Das Synchronisiersignal RFS (Receive Frame Sync) wird im Normalmodus von einer festgelegten seriellen Schnittstelle erzeugt und zeigt den Beginn eines Rahmens von Zeitkanälen an. Das Signal TFS (Transmit Frame Sync) wird von jeder der angeschlossenen seriellen Schnittstelle genau dann aktiviert, wenn sie ein Datum über die Leitung DT ausgibt. (Die TFS-Ausgänge verfügen dazu über die Open-Drain-Eigenschaft, vgl. Abschnitt 2.2.) Es zeigt somit das Vorliegen von gültigen Ausgabedaten an und wird deshalb im Mehrkanal-Betrieb mit TDV - Transmit Data Valid - bezeichnet.
Die Selektion des Mehrkanal-Betriebs für SPORT0 geschieht durch Setzen des MCE-Bits (Multichannel Enable) im Steuerregister SPCR0 zu SPORT0 (s.o.). Dort wird im Bit MCL (Multichannel Length) auch festgelegt, ob 24 (MCL = 0) oder 32 (MCL = 1) Kanäle benutzt werden sollen. Die Bits INVRFS bzw. INVTDV legen fest, ob die Synchronisiersignale RFS und TDV (TFS) im H- oder L-Pegel aktiv sind. Die Belegung der Bits MFD (Multichannel Frame Delay) gibt die Anzahl der Systemtakte an, um die Ausgabe des ersten Datenbits jedes Rahmens von Zeitkanälen gegenüber dem Synchronisiersignal RFS verzögert wird. Durch diese Verzögerung ist eine Anpassung an Kommunikationspartner mit unterschiedlichen Reaktionsgeschwindigkeiten möglich.
Die Zuordnung der Kanäle als Sende- oder Empfangskanäle zu den einzelnen Kommunikationspartnern geschieht durch die vier Register Multichannel Word Enables, die im Bild 4.8-16 dargestellt sind. Die Zuordnung eines Kanals i als Schreib- oder Lesekanal zu einer Schnittstelle geschieht durch den Eintrag einer '1' in der i-ten Bitposition des entsprechenden Registers.
Bild 4.8-16: Die Register zur Kanalzuteilung

| 4.7 Bausteine für asynchrone, serielle Schnittstellen |  | 4.9 Bausteine zur Analog/Digital- und Digital/Analog-Wandlung |