Busoperationen

Nächstes Kapitel Nächstes Kapitel
2.1.3.1.2
Vorheriges Kapitel Vorheriges Kapitel

Dynamische Busanpassung

Die MC 68020 Architektur unterstützt Byte-, Wort- und Langwort-Operanden, die es erlauben, auf einen 8-, 16- oder 32 Bit-Datenport zuzugreifen, unter Berücksichtigung der Signale DSACK0\ und DSACK1\ zur Transfer- und Portgröße-Rückmeldung. Die DSACKx\ Signale werden von den adressierten Bausteinen gesetzt und haben zum einen die Funktion den erfolgten Datentransfer anzuzeigen, wie das Signal DTACK\ bei anderen Prozessoren, zum anderen teilt der Baustein dem Prozessor die Datenbusbreite mit, mit der er bedient werden kann. Sie zeigen dem Prozessor im Falle eines Schreibzyklus an, daß ein adressierter Peripheriebaustein bereit ist, Daten zu empfangen. Im Falle eines Lesezyklus wird dem Prozessor die Gültigkeit der Daten auf den Datenleitungen mitgeteilt.

Führt der Prozessor zum Beispiel einen Lesebefehl aus, der einen 32 Bit-Datentransfer vorsieht, so wird er zunächst versuchen, die 32 Bit in einem Zyklus zu lesen. Wenn der adressierte Baustein einen 32 Bit-Port meldet, liest der Prozessor alle 32 Bit ein und fährt mit dem nächsten Befehl fort. Wenn ein 16 Bit-Port gemeldet wird, liest er nur die höherwertigen 16 Bit ein und beginnt einen neuen Lesezyklus für die restlichen 16 Bit. Ein 8 Bit-Port wird auf die gleiche Weise behandelt, nur daß hier 4 Lesezyklen, beginnend mit dem höchstwertigen Byte (MSByte), durchgeführt werden.

Je nach Beschaltung von DSACK0\ und DSACK1\ wird dem Prozessor ein Byte-, Wort- oder Langwort-Transfer angezeigt, oder er wird veranlaßt, Wartezyklen einzufügen. Die Codierung dieser beiden Eingänge wird in Tabelle 2 verdeutlicht.

DSACK1\ DSACK0\ Funktion
1 1 Wartezyklen
1 0 8 Bit Port
0 1 16 Bit Port
0 0 32 Bit Port

Tabelle 2: Bedeutung der DSACK-Signale

Die Codierung der Signale DSACK0\ und DSACK1\ wird auf der Karte durch GAL 3 übernommen (Tabelle 3). Je nachdem welcher Baustein ein DSACK\ sendet, werden die Leitungen DSACK0\ und DSACK1\ entsprechend der möglichen Transfergöße beschaltet. Im einzelnen sind das: 8 Bit-Transfer für die Bausteine PI/T 680230, DUART 68681 und Dual-Port RAM, sowie 32 Bit-Transfer für den Serien-Parallelwandler, die EPROM- und die RAM-Bänke. Für den Anschluß externer Baugruppen stehen die Signale DTEXT0\ und DTEXT1\ auf der VG-Leiste (CON4) zur Verfügung. Sie entsprechen in ihrer Funktion den Signalen DSACK0\ und DSACK1\, müssen also entsprechend kodiert werden.

Während die Bausteine MC68230 und MC68681 ihr eigenes DSACK\ erzeugen, muß es bei den RAMs, EPROMs, dem Dual-Port RAM und dem Serien/Parallel-Wandler durch eine verzögerte Rückführung des CS\-Signals erzeugt werden.

 

Data Strobe
Acknowledge
von Baustein
Signal Portbreite (Bit) DSACK1\ DSACK0\
PI/T 68230 DT230\ 8 1 0
Dual Port RAM DT-DPR\ 8 1 0
DUART 68681 DT681\ 8 1 0
S/P-Wandler DT-SP\ 32 0 0
EPROM DTEPR\ 32 0 0
RAM DTRAM\ 32 0 0
Extern DTEXT0\ x - DTEXT0\
Extern DTEXT1\ x DTEXT1\ -

Tabelle 3: DSACKx\ Codierung durch GAL 3

Es ist wichtig zu unterscheiden, daß die DSACKx\ Signale die Portgöße und nicht die Transfergröße anzeigen. Ein 32 Bit-Baustein zum Beispiel antwortet immer mit einem DSACK\ für 32 Bit, unabhängig davon ob ein Byte-, Wort- oder Langwort-Transferzyklus durchgeführt wird.

Bild 10 zeigt die Benutzung der Datenleitungen des MC68020 in Abhängigkeit von den unterschiedlichen Portbreiten. Ein 32 Bit-Port befindet sich an den Datenleitungen D0 - D31, ein 16 Bit-Port an den Datenleitungen D16 - D31 und ein 8 Bit-Port an den Datenleitungen D24 - D31. Das MSByte befindet sich beim 16 Bit und 32 Bit-Port an den Datenleitungen D24 - D31, das MSBit ist an allen Portgrößen D31.

MC68020 Datenbus-Struktur

Bild 10: MC68020 Datenbus-Struktur

Neben dieser Möglichkeit den Datentransfer zu steuern, besitzt der Prozessor mit den Signalen SIZE0 und SIZE1 eine weitere, den Datentransfer dynamisch anzupassen. Die SIZEx Signale sind Ausgänge am Prozessor, die anzeigen, wieviele Byte im nächsten Zyklus übertragen werden sollen.

SIZE1\ SIZE0\ Übertragungsgröße
0 1 Byte
1 0 Wort
1 1 3 Byte
0 0 Langwort

Tabelle 4: Decodierung der SIZE-Signale

Zusammen mit den Adressen A0 und A1 kann der Prozessor zum Beispiel auf jedes Byte in einem 32 Bit breiten Speicher zugreifen. Die Adressen A2 - A31 bestimmen hierbei die Langwort Basis Adresse, während die Adressen A0 und A1 den positiven Offset zur Basis bestimmen (Tabelle 5), mit dem der Prozessor auf eine bestimmte Speicherzelle zugreifen kann. Somit kann der Prozessor beginnend bei einem beliebigen Byte im Speicher seine Daten in Form von einem Byte, einem Wort, 3 Byte, oder einem Langwort ablegen.

A1 A0 Offset
0 0 0 Byte
0 1 1 Byte
1 0 2 Byte
1 1 3 Byte

Tabelle 5: Decodierung des Adressen Offset

Durch entsprechende logische Zusammenschaltung der Adressen A0 und A1, sowie der Signale SIZE0 und SIZE1, können Signale zur Zugriffssteuerung für jedes einzelne Byte eines 32 Bit-Port generiert werden. Auf diese Weise werden mit den so erzeugten Signalen LLD (Lower Lower Data), LMD (Lower Middle Data), UMD (Upper Middle Data) und UUD (Upper Upper Data) die einzelnen Speicherbausteine einer 32 Bit-Speicherbank angesprochen. Diese Generierung der Bytesteuersignale wird auf der Karte durch GAL 4 sowohl für die RAMs als auch für die EPROMs realisiert.

Die logischen Zusammenhänge der Ausgangssignale A0, A1, SIZE0 und SIZE1 und der daraus generierten Byte Auswahlsignale zeigt Bild 11.

Nachbildung der Byte/Wort-Zugriffe

Bild 11: Nachbildung der Byte/Wort-Zugriffe

Lesezyklus

Das folgende Flußdiagramm (Bild 12) soll den Ablauf eines Prozessor-Lesezyklus verdeutlichen. Dargestellt ist ein Langworttransfer über einen 32 Bit-Port. Datentransfers mit anderen Portgrößen erfolgen auf die gleiche Art und Weise, mit der Ausnahme, daß im Falle einer kleineren Portgröße als die Anzahl der zu übertragenden Bytes, die Prozedur wiederholt wird, bis alle Daten übertragen sind.

MC68020 Lesezyklus Flußdiagramm

Bild 12: MC68020 Lesezyklus Flußdiagramm

Schreibzyklus

Das folgende Flußdiagramm (Bild 13) zeigt den prinzipiellen Verlauf eines Prozessor-Schreibzyklus. Auch hier gilt, daß der Vorgang wiederholt wird, wenn der Port kleiner ist als die zu übertragenden Datenstruktur.

MC68020 Schreibzyklus Flußdiagramm

Bild 13: MC68020 Schreibzyklus Flußdiagramm

Interrupt Operation

Der MC68020 besitzt 7 Interrupt Level, die mit Hilfe der Leitungen IPL0\, IPL1\ und IPL2\ kodiert werden. Der Interrupt Level 1 besitzt die niedrigste Priorität, Level 7 die höchste (NMI), wobei IPL0\ das niederwertige Bit ist und IPL2\ das höchstwertige. Der Interrupt Level 0 bedeutet, daß kein Interrupt vorliegt.

Interrupt Level IPL2\ IPL1\ IPL0\
7 0 0 0
6 0 0 1
5 0 1 0
4 0 1 1
3 1 0 0
2 1 0 1
1 1 1 0
0 1 1 1

Tabelle 6: Interrupt Level Codierung

Der Prozessor vergleicht den eingehenden Interrupt Level mit dem momentanen Wert der Interruptmaske im Statusregister, und gibt eine Bestätigung (Interrupt Acknowledge) an den anfordernden Baustein aus, wenn sein ausgelöster Interrupt eine höhere Priorität hat. Gleichzeitig wird beim Baustein ein Interruptvektor angefordert, der bestimmt, welche Interrupt Routine durchlaufen wird. Der anfordernde Baustein muß hierzu den Interruptvektor auf das niederwertigste Byte des Datenbus legen, und die dem Datenformat entsprechende Kombination der Signale DSACK0\ und DSACK1\ setzen. Für Bausteine, die keinen Interruptvektor generieren können, muß nach der Interruptanforderung das Signal AVEC\ (Auto Vector) auf "low" gesetzt werden, was bei Anforderung durch den Serien/Parallel-Wandler der Fall ist. Dieses Signal veranlaßt den Prozessor dazu, selbst einen Interrupt Vektor zu erzeugen, der dann die entsprechende Interrupt Routine bestimmt.

Die Bestätigung des Interrupts (IACK\) an den anfordernden Baustein erfolgt codiert über die Adreßleitungen A1 - A3, wobei die Codierung auf die gleiche Art vorgenommen wird wie bei der Interruptanforderung. Um anzuzeigen, daß es sich bei der angelegten Adresse um einen Interrupt Acknowledge (IACK\) handelt, werden zusätzlich die Funktions-Code-Signale FC0 - FC2 auf "high" gesetzt (CPU Space).

Das folgende Flußdiagramm (Bild 14) zeigt die Kommunikation zwischen dem Prozessor und einem Peripheriebaustein, an Hand der einzelnen Signale, die vom Prozessor während der Interruptbestätigung gesendet werden und der Signale, die er vom Peripheriebaustein erwartet.

 

MC68020 Flußdiagramm Interrupt Anforderung und Bestätigung

Bild 14: MC68020 Flußdiagramm Interrupt Anforderung und Bestätigung

Busvergabe

Die Busvergabe ist ein Verfahren, bei dem ein busmasterfähiger Baustein den Bus anfordert, zugewiesen bekommt und anschließend seine Funktion als neuer Busmaster bestätigt. In seiner einfachsten Form ist der Ablauf wie folgt:

  • Ein externer Baustein fordert den Bus beim Prozessor MC68020 mit Bus Request (BR\) an.
  • Der Prozessor setzt das Signal Bus Grant (BG\) um anzuzeigen, daß der Bus nach Beendigung des laufenden Buszyklus zur Verfügung steht.
  • Der anfordernde Baustein bestätigt seine Funktion als neuer Bus Master, durch Setzen des Signals Bus Grant Acknowledge (BGACK\).

Das folgende Flußdiagramm (Bild 15) zeigt den genauen Ablauf einer einmaligen Busvergabe.

MC68020 Busvergabe Flußdiagramm

Bild 15: MC68020 Busvergabe Flußdiagramm

Anforderung

Ein externer Baustein fordert den Bus durch Setzen des Signals Bus Request (BR\) an. Der Prozessor hat grundsätzlich eine geringere Priorität als ein anfordernder Baustein und gibt den Bus, nach Beendigung des laufenden Buszyklus, ab.

Wenn vom anfordernden Baustein keine Bestätigung gesendet wird, bevor das Signal BR\ negiert wird, so setzt der Prozessor seine Arbeit fort. Dadurch ist sichergestellt, daß der Prozessor in seiner Arbeit nicht unterbrochen wird, wenn der externe Baustein den Bus nicht mehr benötigt oder das Signal versehentlich durch Einstreuungen gesetzt wird.

Zuweisung

Der Prozessor setzt das Signal Bus Grant (BG\) so früh wie möglich nach Erhalt der Busanforderung. Normalerweise ist das beim nächsten Taktzyklus der Fall, mit einer Ausnahme. Während eines laufenden Read Modify Write Zyklus wird der Bus erst nach Ablauf dieses Zyklus vergeben. Während einer solchen Operation zeigt das Signal RMC\ an, daß der Bus gesperrt ist.

Bestätigung als Master

Nach Erkennung des Signals BG\ wartet der anfordernde Baustein die Negierung der Signale AS\, DSACKx\ und BGACK\ ab, bevor er seine eigene Bestätigung durch BGACK\ anzeigt. Die Negierung von AS\ zeigt an, daß der vorherige Bus Master seinen Zyklus beendet hat; die Negierung von BGACK\ zeigt an, daß der vorherige Bus Master den Bus freigegeben hat. Die Negierung von DSACKx\ zeigt, daß ein vorher angesprochener Baustein seine Verbindung zum vorherigen Bus Master beendet hat. Wurde das Signal BGACK\ gesetzt, so ist der Baustein solange Bus Master, bis er BGACK\ wieder negiert.

Nächstes Kapitel Nächstes Kapitel
2.1.3.1.2
Vorheriges Kapitel Vorheriges Kapitel