Systembus Ein Mikroprozessor kommuniziert über den Systembus mit Speicher und I/O Der Ablauf erfolgt in zwei Schritten: o Anlegen von Adressen und Schreib/LeseRichtung o Schreiben bzw. Lesen der Daten AB R/W DB Benötigt wird daher ein Zeitraster, d.h. ein Takt.
Zeitverhalten Festes Zeitraster : Synchroner Systembus Problem: Beim Anschluß unterschiedlich schneller Bausteine bestimmt der langsamste den Takt des Busses Variables Zeitraster : Asynchroner Systembus Zusätzliche Steuersignale bestimmen das Zeitverhalten Address Strobe : /AS (Prozessor) Data Strobe : /DS (Prozessor) Data Transfer Acknowledge : /DTACK (Speicher) AB /AS R/W /DS DB /DTACK variabel
Anschluß von Speicherbausteinen an einen Mikroprozessor Mikroprozessor: Adressbus A0 A23 Datenbus Asynchroner Systembus 1. Beispiel: 1 Speicherbaustein 16M x 8 CPU Speicher /DTACK Verz /AS A0A23 $FFFFFE $FFFFFE $FFFFFD Adressraum (24 Leitungen) Der Adressraum des Prozessors ist vollständig belegt $000002 $000001 $000000 7 0
2. Beispiel: 1 Speicherbaustein 4M x 8 Adressraum $C00000 $800000 Nur ¼ Adressraum des Prozessors ist belegt $400000 $000000 7 0 CPU Speicher /DTACK Verz /AS A23 A22 A0A21 Der Speicherbaustein erscheint 4 mal im Adressraum, er wird gespiegelt
3. Beispiel: 1 Speicherbaustein 4M x 8 Adressraum $C00000 $800000 Nur ¼ Adressraum des Prozessors ist belegt $400000 $000000 7 0 CPU Speicher /DTACK Verz /AS A23 A22 CS Logik A0A21 Der Speicherbaustein erscheint nur einmal im Adressraum, wenn nur bei der Kombination A22 = 0 und A23= 0 den Wert 0 hat. = /AS + A23 + A22
Weitere Kombinationen $C00000 $800000 Speicherbaustein liegt ab der Adresse $400000 im Adressraum $400000 = % 01 00 0000 0000 0000 0000 0000 $400000 = /AS + A23 +!A22 $000000 7 0 $C00000 Speicherbaustein liegt ab der Adresse $80000 im Adressraum $800000 $800000 = % 10 00 0000 0000 0000 0000 0000 $400000 = /AS +!A23 + A22 $000000 7 0 $C00000 $800000 $400000 Speicherbaustein liegt ab der Adresse $C00000 im Adressraum $C00000 = % 11 00 0000 0000 0000 0000 0000 = /AS +!A23 +!A22 $000000 7 0
Regel: Zur vollständigen Dekodierung einer Bausteinadresse werden alle niederwertigen Adressleitungen zum Baustein geführt, alle restlichen höherwertigen Adressleitungen werden in der ChipSelectLogik zur Ermittlung des ChipSelectSignals verwendet.
Bussystem des M68000 16 Bit Datenbus DB0 DB15 asynchrones Busprotokoll /AS = Addressstrobe /DTACK = Data Transfer Acknowledge 24 Bit AdressBus Adressraum 16 Mbyte variable Busbreite d.h. es sind Wortzugriffe mit 16BitDatenwort und Bytezugriffe mit 8 Bit Datenwort möglich (move.b und move.w ) Die Adresse des 68000 bezieht sich auf Byte. D.h. beim wortweisen Zugriff werden zwei Bytes gleichzeitig gelesen. Zum Zugriff auf das nächste Wort muss daher die Adresse um 2 erhöht werden. Realisierung: Statt der Adressleitung A0 verwendet der M68000 zwei Datastrobe Leitungen /UDS = Upper Data Strobe /LDS = Lower Data Strobe
8Mx8 8Mx8 SA22 SA22 68000 A23 A1 /UDS /LDS Adressleitung A1 A23 werden mit den Adressleitungen der beiden Speichermodule SA22 verbunden. Mit /UDS wird der Speicherblock bei geraden ByteAdressen aktiviert, mit /LDS der Speicherblock für ungerade Byte Adressen. /UDS und /LDS sind gleichzeitig aktiv bei Wortzugriffen. Beispiele: Zugriff auf 16Bit Wort MOVE.W #$AABB, $1000 ; /UDS = 0 und /LDS = 0 $AABB wird an die Adressen $1000 und $1001 kopiert $1000 $AA $1001 $BB Zugriff auf gerade Byteadresse MOVE.B #$CC, $1010 ; /UDS = 0 und /LDS = 1 $CC wird an die Adresse $1011 kopiert $1010 $CC $1011
Zugriff auf ungerade Byteadresse MOVE.B #$CC, $1011 ; /UDS = 1 und /LDS = 0 $1010 $1011 $DD $DD wird an die Adresse $1011 kopiert
Übungsaufgabe: Anschluß von Speicher an den 68000 An einen 68000 Prozessor wird ein 256 KByte SRAMSpeicher angeschlossen, verwendet werden 128KByte Speicherbausteine. Der SRAMBereich beginnt bei Adresse $F00000. Wieviele Speicherbausteine sind nötig? Antwort: 2 Skizze: 68000 /LDS Decoder SRAM 128Kx8 128Kx8 A23 A1 /UDS /AS A23A18 2 1 A17A1 SA16 SA16 Die logischen Gleichungen der Chipselectsignale lauten: 1 =!A23 +!A22 +!A21 +!A20 + A19 + A18 + /UDS + /AS 2 =!A23 +!A22 +!A21 +!A20 + A19 + A18 + /LDS + /AS
Statt 128Kx8 werden nun 64Kx8 verwendet. Wie sieht nun die Anschlußskizze aus und wie lauten die Gleichungen Benötigt werden nun 4 Bausteine 64Kx8 64Kx8 4 SA15 SA15 Decoder SRAM A23 A1 68000 /LDS /UDS /AS A23A17 4 3 2 1 A16A1 64Kx8 SA15 3 A16A1 64Kx8 SA15 Die logischen Gleichungen der Chipselectsignale lauten: 1 =!A23 +!A22 +!A21 +!A20 + A19 + A18 + A17 + /UDS + /AS 2 =!A23 +!A22 +!A21 +!A20 + A19 + A18 +!A17 + /UDS + /AS 3 =!A23 +!A22 +!A21 +!A20 + A19 + A18 + A17 + /LDS + /AS 4 =!A23 +!A22 +!A21 +!A20 + A19 + A18 +!A17 + /LDS + /AS
Statt 128Kx8 werden nun 128Kx4 verwendet. 68000 /LDS Decoder SRAM 128Kx4 128Kx4 128Kx4 128Kx4 A23 A1 /UDS /AS A23A18 2 1 A17A1 SA16 D12 SA16 D11 SA16 D4 SA16 D3 Die logischen Gleichungen der Chipselectsignale lauten: 1 =!A23 +!A22 +!A21 +!A20 + A19 + A18 + /UDS + /AS 2 =!A23 +!A22 +!A21 +!A20 + A19 + A18 + /LDS + /AS