Amiga Patent Story
II. Hardware2. Hardware Design: DMA und Custom-Chips (US-Patent 4,777,621)
Einige Worte zur Einstimmung: Es versteht sich, dass ein solcher Artikel fachspezifische Begriffe enthalten muss. Soweit eine Erläuterung für Nichtfachleute zweckdienlich erscheint, erfolgt dies beim jeweils ersten Auftauchen eines solchen Begriffes im Text. Wer keine Probleme mit dem Verständnis der Materie hat, kann die entsprechenden Textabschnitte einfach ignorieren. Desweiteren sollte bedacht werden, dass eine Technik auf dem Stand des Jahres 1985 beschrieben wird. Die Fachausdrücke entsprechen denen, die in der Patentschrift verwendet wurden und können von später eingeführten Bezeichnungen abweichen. Die Namen AGNUS, DENISE, PAULA, COPPER, BLITTER und Chip-RAM sind den entsprechenden Funktionseinheiten erläuternd zur Seite gestellt worden. Sie werden in der Patentschrift US 4,777,621 nicht verwendet. Tipp: Der Ausdruck der Patentzeichnungen (TIF-Format) erspart nervtötende Scrollorgien.
***************************************
Die Figuren 1 bis 3 der US 4,777,621
zeigen verschiedene herkömmliche Computerarchitekturen, die durch das Konzept der Erfindung nach Bild 1 (Fig. 4)
verbessert werden sollen. Ganz oben im Pflichtenheft steht dabei die Schaffung eines preiswerten Computersystems
mit hoher Grafikleistung. Dazu bedienen sich die Entwickler einer fortgeschrittenen DMA- und Custom-Chip-Technik. DMA- und Custom-Chip-Technik sind zu Beginn der Entwicklung 1982 an sich bekannt (siehe: Atari). Beim Amiga jedoch erfolgt eine besonders komplexe Verzahnung der in den Custom-Chips untergebrachten Funktionseinheiten durch eine Interrupt gesteuerte DMA-Technik. Register erfahren eine neuartige Verwendung. Zudem ist einem der Custom-Chips ein Coprozessor mit einem eigenen Befehlssatz zugeordnet, der den Mikroprozessor entlastet. Dies alles wird vollständig und transparent durch das Betriebssystem (Intuition) unterstützt.
Bild 1: Die Funktionseinheiten des Amiga High Resolution TIF Image ( 30,4kB )
Die Zeichnung nach Bild 1 (Fig. 4) zeigt die logischen Funktionseinheiten des Amiga ohne Berücksichtigung ihrer Aufteilung auf die Custom-Chips. Die Anordnung enthält einen Mikroprozessor 11, z.B. einen Motorola 68000 Mikroprozessor. Dieser Mikroprozessor 11 ist über Leitungen 15 mit einer Anzahl von Ports 13 verbunden, wodurch ein direkter Zugriff auf den Mikroprozessor 11 durch ein Peripheriegerät erfolgen kann. Das System umfasst Speicher 25, der als RAM-Speicher ausgelegt ist und eine Größe im Bereich von 128 kByte bis 512 kByte aufweist. DMA-Kanäle 23 verbinden den Speicher 25 mit dem Display-Generator 35. Der Display-Generator 35 seinerseits ist mit dem Video-Port 19 verbunden. Eine Audio-Generatorschaltung 37 treibt einen Audio-Port 39 und die Disk-Steuerlogik kommuniziert mit einem Disketten-Port 43. Die Schaltung enthält einen zweiten Mikroprozessor 45 (Coprozessor). Der zweite Mikroprozessor umfasst einen Befehlssatz, der wesentlich kleiner ist als der des Mikroprozessors 11. Dieser zweite Mikroprozessor 45 enthält einen fest verdrahteten Befehlssatz, der folgendes aufweist: WAIT UNTIL, MOVE DATA, SKIP IF und JUMP. Weiterhin enthält die Schaltung eine Busarchitektur und arbeitet mit DMA-Technik (DIRECT MEMORY ACCESS). Diese Technik gestattet eine Aufteilung des Buszyklus zwischen den verschiedenen Komponenten des Subsystems, wobei ein gemeinsamer Adress-Bus und ein gemeinsamer Daten-Bus genutzt wird und wobei der Speicherzugriff durch die verschiedenen Komponenten des Subsystems sequenziell erfolgt. Die Schaltung nach Bild 1 arbeitet im Bitmap-Modus. Dabei existiert eine feste Zuordnung eines jeden Pixels des
Bildschirmobjektes zu dem entsprechenden Bit im Abbild des Speichers 25. Um eine Anzeige zu erzeugen, wird dieses Bitmap
von Datenworten aus dem Speicher 25 zum Display-Generator 35 übertragen. Um ein Objekt auf dem
Bildschirm zu bewegen, werden einfach die korrespondierenden Daten des Objekts an eine andere Stelle des Speichers verschoben. Ein Bitmap-Image-Manipulator 47 (BLITTER) ist vorgesehen, um bestimmte logische Operationen wie AND, OR, EXCLUSIVE OR und SHIFT an den Bitmap-Daten im Speicher 25 vorzunehmen. Durch diese Bearbeitung werden die Daten des Speicherabbildes für eine kontinuierliche Bildschirmanzeige aufbereitet. Eine Busarchitektur wird benutzt, um sowohl Befehle als auch Daten zu übertragen. Alle Systemkomponenten wie der Mikroprozessor 11, der Coprozessor 45, (COPPER) Speicher 25, der Display-Generator 35, der Audio Generator 37, die Disk-Steuerlogik 41 und der Bitmap-Image-Manipulator 47 (BLITTER) sind mit der Busarchitektur verbunden. Eine Bus-Steuerlogik 49 steuert den Zugriff aller Komponenten auf die Busarchitektur. Diese Bus-Steuerlogik wird wiederum gesteuert von einer übergeordneten Prioritäts-Control-Logic 51. Die Prioritäts-Control-Logic 51 bezieht prioritätsabhängige Anforderungen vom Mikroprozessor 11, dem Coprozessor 45 (COPPER), dem Display-Generator 35, dem Bitmap-Image-Manipulator 47 (BLITTER), dem Audio-Generator 37 und dem Disk-Steuerlogik 41. Die Bus-Steuerlogik 49 steuert dabei die folgende Signaltransfers und den Zugriff auf die DMA-Kanäle 23:
***************************************
Bild 2 (Fig. 5) zeigt die Umsetzung der Funktionseinheiten nach Bild 1 in einer Chip-Architektur.
Der Motorola 68000 Mikroprozessor 11 kommuniziert mit dem Bus 53 zur Übertragung der neun
niederwertigen Bits und dem Bus 55 zur Übertragung der neun höherwertigen Bits
eines Adresswortes. Die Busse 53 und 55 sind mit dem Multiplexer 59 verbunden. Zusätzlich sind die niederwertigen acht Bit eines Adresswortes des Busses 53 zum
Tri-State-Buffer 57 geführt. Der Bus 55 zur Übertragung der neun höherwertigen
Bits eines Adresswortes ist zusätzlich zur Bus-Steuerlogik 49 (BUS CONTROL LOGIC)
geführt. Der Tri-State-Buffer 57 wertet die acht niederwertigen Bits eines Adresswortes aus, um die Custom-Chips 61, 63 und 65 zu adressieren, die in NMOS-Technik gefertigt und in 48-poligen Gehäusen untergebracht sind. Der erste dieser Custom-Chips 61 (AGNUS) enthält sowohl den Coprozessor 45 (COPPER) als auch die Bitmap-Manipulatorschaltung 47 (BLITTER) nach Bild 1. Der zweite Custom-Chip 63 (DENISE) beinhaltet den Display-Generator 35 nach Bild 1, während der dritte Custom-Chip 65 (PAULA) die Audio-Generator-Schaltung 37, den Disk-Steuerlogik 41 und weitere I/O-Schaltungen 13 nach Bild 1 enthält.
Bild 2: Die Systemarchitektur des Amiga High Resolution TIF Image ( 28,2kB )
Die Schaltungen, die in den Custom-Chips 61, 63 und 65 untergebracht sind, werden später ausführlich diskutiert werden. In diesem Kapitel geht es vorrangig um das Zusammenspiel der im Bild 1 darstellten Funktionseinheiten und deren Aufteilung auf die Custom-Chips. Der Zugriff zwischen dem Register-Adressbus 53 und dem ersten Custom-Chip 61 (AGNUS) ist bidirektional, d.h., dass einerseits der Bus 53 auf die Register des Custom-Chips 61 und andererseits die Register des Custom-Chips 61 auf den Register-Adress-Bus 53 zugreifen können. Der Zugriff des Register-Adress-Bus 53 hinsichtlich der Custom-Chips 63 und 65 (DENISE und PAULA) hingegen ist unidirektional, d.h., dass diese Chips keinen Zugriff auf den Register-Adress-Bus 53 haben. Der Custom-Chip 65 (PAULA) überträgt Audio-Signale zu den Audio-Ports 39 und hat eine bidirektionale Verbindung zu den Disketten-Ports 43. Weitere I/O-Ports 13 nach Bild 1 sind ein UART-Port 67 und ein Port 69 (Pot Port).
Die Signalübertragung zwischen dem Custom-Chip 65 (PAULA) und den Ports 67 und
69 ist bidirektional ausgelegt. Ein anderer Port, der zur Gruppe der Ports 13 nach Bild 1
gehört, ist der Maus-Port 71, der Signale zum zweiten Custom-Chip 63 (DENISE)
überträgt. Der Video-Port 19 ist ebenfalls mit dem zweiten Custom-Chip 63
(DENISE) verbunden, um von diesem Daten zu empfangen. Im ersten Custom-Chip 61 (AGNUS) sind die Prioritäts-Control-Logic für den Buszugriff 51, der Coprozessor 45 (COPPER), der Bitmap-Image-Manipulator 47 (BLITTER) und der vertikale Positions-Steuerlogik für bewegte Objekte (Sprites) untergebracht. Weiterhin enthält dieser Chip die Adress-Register für die DMA-Kanäle 23 nach Bild 1. Der Display-Generator 35 nach Bild 1 ist im zweiten Custom-Chip 63 (DENISE) untergebracht und umfasst den Bitplane-Register-Speicher zur Erzeugung einer Vielzahl verschiedener Playfields und fester Objekte. Weitere Funktionseinheiten im zweiten Custom-Chip 63 (DENISE) sind die Video-Farbauswahl-Register und der Display-Prioritäts-Steuerlogik. Die Display-Prioritäts-Steuerlogik überwacht die Priorität der Kollisionserkennung zwischen festen und bewegten Objekten (Sprites). Der Display-Generator 35 enthält auch eine horizontalen Positions-Steuerlogik für bewegte Objekte (Sprites), der Register für die horizontale Position und eine Vielzahl von Datenspeichern für bewegte Objekte (Sprites) aufweist, die mit der horizontalen Positions-Steuerlogik verbunden sind. Der Mikroprozessor 11 verarbeitet intern 32-Bit-Worte. Die Datenbusanbindung erfolgt über den
16-Bit-Datenbus 67. Über einen bidirektionalen Tri-State-Latch 69 ist der Mikroprozessor
11 sowohl mit den Dateneingängen des ersten Custom-Chips 61 (AGNUS), des zweiten Custom-Chips
63 (DENISE) und des dritten Custom-Chips 65 (PAULA) als auch mit dem RAM-Speicher 25
verbunden. Sowohl die Custom-Chips 61, 63 und 65 als auch der RAM-Speicher 25
sind bidirektional an den 16-Bit-Datenbus 67 angebunden. Der Systemtakt wird von der Oszillator-Schaltung 69 (?) erzeugt, die die Bus-Steuerlogik 49 (BUS CONTROL LOGIC) mit einem Taktsignal 71 (CLOCK PULSES) versorgt. Die Bus-Steuerlogik 49 leitet daraus das Taktsignal 73 (CLOCK) für den Mikroprozessor 11 ab. Der erste Custom-Chip 61 AGNUS erzeugt eine dynamische 18-Bit-RAM-Adresse, die gemultiplext über den 9-Bit-Bus 75 mit dem Multiplexer 59 verbunden ist. Der Multiplexer 59 wählt unter Maßgabe einer Zeitvorgabe die jeweiligen 9-Bit-Daten eines der 9-Bit-Busse 53, 55 und 75 aus, um den RAM-Speicher 25 über den 9-Bit-Bus 77 zu adressieren. Eine 2-Bit-Steuerleitung 79 verbindet die Bus-Steuerlogik 49 mit dem Multiplexer 59,
um dessen Zustand zu steuern. Der Multiplexer 59 wählt - gesteuert über die Steuerleitung
79 - die höherwertigen 9 Bit des Adress-Busses 55 und nachfolgend die
niederwertigen 9 Bit des Adress-Busses 53 aus, um die 18-Bit-Adresse des Mikroprozessors 11
an den RAM-Speicher 25 zu legen. Alternativ erfolgt die 18-Bit-Adressierung
des RAM-Speicher 25 , des sogenannten Chip-RAM, durch den ersten Custom-Chip 61 AGNUS
über den 9-Bit-Bus 75 durch das gemultiplexte DRA-Signal. Der Mikroprozessor 11 besitzt einen DTACK-Eingang, über den ihm mitgeteilt wird, wenn er Zugriff
auf den Datenbus 67 erhält. Dieses Signal wird von der Bus-Steuerlogik 49 über die
DTACK-Leitung 79 an den Mikroprozessor 11 gelegt. Zusätzlich existiert eine Verbindung 81
(ADDRESS STROBE SIGNAL) zwischen dem Mikroprozessor 11 und der Bus-Steuerlogik 49.
Desweiteren existiert die Verbindung R/W 83, die eine Lese-/Schreibanforderung vom Mikroprozessor 11
an die Bus-Steuerlogik 49 sendet. Wenn der Mikroprozessor 11 über die Adressbusse 53, 55 und den Datenbus 67 Zugriff auf den RAM-Speicher 25 hat, wird das Lese-/Schreibsignal R/W 83 von der Bus-Steuerlogik 49 an den RAM-Speicher 25 gelegt. Zusätztlich werden ein ROW ADDRESS STROBE (RAS)-Signal 85 und ein COLUMN ADDRESS STROBE
(CAS)-Signal 87 von der Bus-Steuerlogik 49 an den RAM-Speicher 25 gelegt. Eine
Datenquellenauswahl-Leitung 89, angesteuert durch die Bus-Steuerlogik 49, ist zuständig
für die Richtung der Datenübertragung des bidirektionalen Tri-State-Latch 69. Eine Busanforderungs-Leitung 93 für die Anforderung eines Bus-Zugriffs verbindet den ersten Custom-Chip 61 (AGNUS) mit der Bus-Steuerlogik 49 . Eine DMA-Anforderungs-Leitung 95 verbindet den Custom-Chip 65 (PAULA) mit der Bus-Steuerlogik 49 und zeigt dieser an, dass der erste Custom-Chip 61 (AGNUS) einen Buszugriff anfordert. Das Zusammenwirken des bidirektionalen Tri-State-Latch 69 und des Tri-State-Buffers 57 wird durch die Bus-Steuerlogik 49 gesteuert. Wenn der Mikroprozessor 11 Zugriff auf den Datenbus hat, bestimmt die Bus-Steuerlogik 49, ob einer der Custom-Chips 61, 63 und 65 oder aber der RAM-Speicher 25 angesprochen wird. Die neun höherwertigen Bits der 18-Bit-Adresse des Mikroprozessors 11 werden über den Bus 55 (HIGH BIT ADDRESS BUS) zur Bus-Steuerlogik 49 übertragen. Dort werden sie decodiert, um ein Register-Adress-Auswahl-Signal 91 (REGISTER ADDRESS SELECT) zur Steuerung des Tri-State-Buffer 57 zu erzeugen, der es dem 8-Bit-Adresswort des LOW BIT ADDRESS BUS über den Register-Adress-Bus 53 gestattet, zu den Custom-Chips 61, 63 und 65 durchgeschaltet zu werden. Die Adresse der niederwertigen Bits auf dem Bus 53 bestimmt dabei, welches Register welches Custom-Chips 61, 63 und 65 Daten vom Datenbus 67 empfängt. Alle Custom-Chips 61, 63 und 65 empfangen die Daten vom Datenbus gleichzeitig und enthalten einen Adress-Decoder für jedes Daten-Register. Wenn eine gültige Register-Adresse am Register-Adress-Bus 53 anliegt, können Daten vom Datenbus 67 in das zugehörige Register geschrieben oder aus diesem Register gelesen werden. Jedem Datenregister ist eine eindeutige Adresse zugeordnet. Das Bus-System überträgt sowohl Ziel- als auch Quelladressen. Mit wenige Ausnahmen ist dabei die RAM-Adressierung (DRA-Wort) des ersten Custom-Chip 61 (AGNUS) immer eine Quelladresse. Die Register-Adresse auf dem Register-Adress-Bus 53, die ebenfalls vom ersten Custom-Chip 61 (AGNUS) erzeugt wird, selektiert eine Ziel-Register-Adresse für die DMA-Daten, die über den Datenbus 67 übertragen werden. Die Verwendung von Speicher-Registern für die Ein-und Ausgänge von Schaltungen zur zeitweisen Speicherung von Adress-oder Datenworten ist den Enwicklern natürlich bekannt. Das betrifft auch die getaktete Abarbeitung von Signalen durch solche Speicher-Register. Die Art ihrer Benutzung sowie ihre Verwendung heben sich jedoch vom Bekannten, dem sogenannten Stand der Technik, ab. Während eines DMA-Datentransfers generiert der erste Custom-Chip 61 (AGNUS) eine Register-Adresse (RGA-Signal) auf dem Bus 53, welche die Richtung der Datenübertragung bestimmt. Gleichzeitig erzeugt er eine RAM-Adresse auf dem Bus 75, die den Ort der Daten im RAM-Speicher 25 auswählt. Der Bitmap-Image-Manulator 47 (BLITTER) kommuniziert bidirektional mit dem RAM-Speicher 25, um Zugriff auf dort abgelegte Bitmap-Informationen zu erhalten und diese mit logischen Operationen (AND, OR, SHIFT and EXCLUSIVE OR) zu bearbeiten. Die Mikroprozessoren beinflussen dies durch Steuersignale. Diese Steuersignale sind in den Steuer-Registern des ersten Custom-Chip 61 (AGNUS) gespeichert und werden durch den Datenbus 67 in Abhängigkeit vom Register-Adress-Wort auf dem Bus 53 geladen. Während einer Anzeige-Operation empfängt der Display-Generator 35 nach Bild 1, der im ersten Custom-Chip 61 (AGNUS) untergebracht ist, Bitmap-Daten aus dem RAM-Speicher 25 über den Datenbus 67. Dieser Vorgang wird durch Steuersignale beeinflusst, die in den Steuerregistern des zweiten Custom-Chip 63 (DENISE) gespeichert sind und ihre Daten vom Mikroprozessor 11 oder vom Coprozessor 45 beziehen, der ebenfalls im ersten Custom-Chip 61 (AGNUS) untergebracht ist. Der Buszyclus des Datenbus 67 wird gesteuert durch das DTACK-Signal 79 und das Signal 81 (ADDRESS STROBE SIGNAL). Diese spezifische Arbeitsweise gestattet dem Mikroprozessor 11, den Datenbus 67 nur etwa in der Häfte der zur Verfügung stehenden Zeit zu benutzen. In der übrigen Zeit haben die Custom-Chips 61, 63 und 65 Zugriff auf den Datenbus 67. Damit wird eine wesentliche Verbesserung in der Nutzung der Busarchitekur erreicht und zugleich der Schaltungsaufwand verringert. Möglichen Konflikten beim Zugriff auf den Datenbus 67 wird durch Verwendung einer Prioritätslogik 51 nach Bild 1 begegnet, die im ersten Custom-Chip 61 (AGNUS) untergebracht ist und die die Bus-Steuerlogik 49 ansteuert. Der Coprozessor 45 nach Bild 1 kann programmiert werden, um Display-Funktionen
auszuführen, die andernfalls der Mikroprozessor 11 bearbeiten müsste.
Der Coprozessor 45 ist wegen seines beschränkten Befehlssatzes kleiner als der
Mikroprozessor 11 und somit leichter zu implementieren. Durch seine Unterbringung
in einem LSI-Chip zusammen mit anderen Funktionseinheiten verringert sich der
Schaltungsaufwand dramatisch. Die Systemarchitektur nach Bild 2 ist realisiert durch die Aufteilung der in Bild 1 beschriebenen Funktionseinheiten auf drei LSI-Chips 61, 63 und 65, die jeweils in 48-poligen Gehäusen untergebracht sind. Vervollständigt wird das System durch handelsübliche Komponenten: einem Mikroprozessor 11, RAM-Speicher 25 und Tri-State-Buffer 57. Der bidirektionalen Tri-State-Latch 69, der Multiplexer 59 und die Bus-Steuerlogik 49 sind ebenfalls aus handelsübliche Komponenten aufgebaut. Der Mikroprozessor 11 ist ein 68000 der Motorola Corporation. Der Multiplexer 59 ist in Standard-TTL-Logik aufgebaut und besteht aus einem Oktal Latch 74F374 und einem Multiplexer 74F257. Als Tri-State-Buffer 57 wird ein Tri-State-Treiber 74LS244 verwendet. Der bidirektionale Tri-State-Latch 69 wird aufgebaut aus einem Tri-State-Treiber 74LS244 und einem Octal-Latch mit Tri-State-Ausgängen vom Typ 74LS273. Die Bus-Steuerlogik 49 ist in einem programmierbaren PAL-Schaltkreis vom Typ 16L8 untergebracht und wird von einer Anzahl von NAND-Gattern und Flip-Flops ergänzt. Der RAM-Speicher 25 wird aufgebaut mit dynamischen RAM-Schaltkreisen der Organisation 256k * 1, z.B. D41256 der NEC Corporation.
(Thomas Unger) Copyright © Thomas Unger 2000-2005. Alle Rechte vorbehalten.
Hinweise an:
kickstart@arcor.de |