PLA (C64-Chip)
Die PLA ist ein Chip des C64, der die Ansteuerung des RAMs und weiterer Bausteine übernimmt. Die im C16 oder Plus/4 eingesetzten PLA-Chips sind zu C64-Boards nicht kompatibel. Dieser Artikel behandelt nur die PLA im C64.
Allgemeines[Bearbeiten | Quelltext bearbeiten]
Die PLA (Abkürzung für Programmable Logic Array, allgemein hardwareprogrammierbarer Logik-Chip, beim C64 aber bereits fertig programmiert verbaut, da damals günstiger als ein ASIC) ist beim C64 für die Ansteuerung bzw. Aktivierung fast aller weiterer Bausteine zuständig. Die PLA setzt insbesondere das sogenannte Bankswitching beim C64 um, über das die CPU auf die 64 KByte RAM, 20 KByte ROM, 512 Byte Farbram, die Register diverser Chips (CIA, SID, VIC) und ggf. weitere über den Expansionsport angeschlossene Hardware zugreifen kann, obwohl die CPU eigentlich nur 64K Adressen insgesamt ansprechen kann. Dafür kann die CPU mittels der PLA die zugrundeliegenden 64 KByte RAM von den ROMs und Chipregistern "überlagern" lassen: An Stelle des RAM "sieht" die CPU dann das jeweilige ROM bzw. die jeweiligen Chipregister.
Von BASIC aus lässt sich an der Speicherbelegung allerdings nicht viel ändern, da das Betriebssystem des C64 fest von seiner Standard-Speicherkonfiguration ausgeht und abstürzt, wenn sie geändert wird.
Auf der Hauptplatine mit der ASSY 250469 wurden die Funktionen der PLA aus Kostengründen in einen 64poligen Multifunktions-Chip integriert. Dieser ist zudem deutlich weniger anfällig für Defekte als die PLA der früheren Modelle.
Anschlüsse der PLA[Bearbeiten | Quelltext bearbeiten]
Ein- und Ausgänge[Bearbeiten | Quelltext bearbeiten]
Die PLA hat 16 Eingangsleitungen:
- Von der CPU: LORAM, HIRAM, CHAREN aus dem Prozessorport ($01), A12-A15 vom Adressbus, R/W
- Vom VIC: VA12, VA13 vom Adressbus, CAS, AEC, BA
- Von der CIA2: VA14
- Vom Expansionsport: GAME, EXROM
und 8 Ausgangsleitungen:
- Zum RAM: CASRAM
- Zu den ROMs: BASIC, KERNAL, CHAROM (zu den jeweiligen Enable-Pins)
- Zum Farbram: GR/W
- Zum SID, VIC und Farbram: I/O (steuert über Demultiplexer U15 die Enable-Pins der jeweiligen Chips an)
- Zum Expansionsport: ROML, ROMH
Zum Verständnis des C64-Speichermodells relevant sind dabei nur LORAM, HIRAM, CHAREN, die ROM-Leitungen und I/O.
Die genaue Beschaltung ist unter Hardware-Aufbau des C64 beschrieben.
Steckmodule[Bearbeiten | Quelltext bearbeiten]
Steckmodule am Expansionsport können über die Leitungen GAME und EXROM die Speicheraufteilung des C64 beeinflussen. Auf den Modulen vorhandene ROMs können direkt durch ROML und ROMH angesteuert werden.
Pinbelegung[Bearbeiten | Quelltext bearbeiten]
Funktion[Bearbeiten | Quelltext bearbeiten]
Die PLA legt fest, an welchen Adressen für die CPU des C64 welche Daten sichtbar sind. Dabei sind in den ersten vier KByte des C64-Adressraums immer RAM sichtbar. Ausnahme dabei sind die Speicherstellen $0000 und $0001, in denen immer Datenrichtungsregister und Prozessorport der CPU eingeblendet sind. Was in den restlichen Zonen sichtbar ist, hängt von den Einstellungen LORAM, HIRAM, CHAREN aus dem Prozessorport ($01) der CPU ab. Ferner können Steckmodule über die Leitungen GAME und EXROM Einfluss nehmen.
Weitere Erklärungen zur Belegung der einzelnen Bereiche finden sich unter Speicherbelegungsplan.
# | Leitungen | Adressraum | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Steckmodul | Prozessorport | 4096–32767 $1000–$7FFF |
32768–40959 $8000–$9FFF |
40960–49151 $A000–$BFFF |
49152–53247 $C000–$CFFF |
53248–57343 $D000–$DFFF |
57344–65535 $E000–$FFFF | ||||
GAME | EXROM | CHAREN Bit 2 | HIRAM Bit 1 | LORAM Bit 0 | |||||||
1 | 1 | 1 | 1 | 1 | 1 | Int. RAM | Int. RAM | BASIC ROM | Int. RAM | I/O | Kernal ROM |
2 | 1 | X | 1 | 1 | 0 | Int. RAM | Int. RAM | Int. RAM | Int. RAM | I/O | Kernal ROM |
3 | 1 | X | 1 | 0 | 1 | Int. RAM | Int. RAM | Int. RAM | Int. RAM | I/O | Int. RAM |
4 | 1 | X | X | 0 | 0 | Int. RAM | Int. RAM | Int. RAM | Int. RAM | Int. RAM | Int. RAM |
5 | 1 | 1 | 0 | 1 | 1 | Int. RAM | Int. RAM | BASIC ROM | Int. RAM | Charset ROM | Kernal ROM |
6 | 1 | X | 0 | 1 | 0 | Int. RAM | Int. RAM | Int. RAM | Int. RAM | Charset ROM | Kernal ROM |
7 | 1 | X | 0 | 0 | 1 | Int. RAM | Int. RAM | Int. RAM | Int. RAM | Charset ROM | Int. RAM |
8 | 1 | 0 | 1 | 1 | 1 | Int. RAM | Cart. Low | BASIC ROM | Int. RAM | I/O | Kernal ROM |
9 | 1 | 0 | 0 | 1 | 1 | Int. RAM | Cart. Low | BASIC ROM | Int. RAM | Charset ROM | Kernal ROM |
10 | 0 | 1 | X | X | X | Offen | Cart. Low | Offen | Offen | I/O | Cart. High |
11 | 0 | 0 | 1 | 1 | 1 | Int. RAM | Cart. Low | Cart. High | Int. RAM | I/O | Kernal ROM |
12 | 0 | 0 | 1 | 1 | 0 | Int. RAM | Int. RAM | Cart. High | Int. RAM | I/O | Kernal ROM |
13 | 0 | 0 | 1 | 0 | 1 | Int. RAM | Int. RAM | Int. RAM | Int. RAM | I/O | Int. RAM |
14 | 0 | 0 | X | 0 | 0 | Int. RAM | Int. RAM | Int. RAM | Int. RAM | Int. RAM | Int. RAM |
15 | 0 | 0 | 0 | 1 | 1 | Int. RAM | Cart. Low | Cart. High | Int. RAM | Charset ROM | Kernal ROM |
16 | 0 | 0 | 0 | 1 | 0 | Int. RAM | Int. RAM | Cart. High | Int. RAM | Charset ROM | Kernal ROM |
17 | 0 | 0 | 0 | 0 | 1 | Int. RAM | Int. RAM | Int. RAM | Int. RAM | Int. RAM | Int. RAM |
X: Wert spielt keine Rolle |
Der Strich über den Bezeichnungen der Leitungen-Spalten bedeutet, dass die Leitungen eine invertierte Bedeutung haben, also vom Typ Active-Low sind. Die jeweilige Funktion wird dann aktiv, wenn das Signal mit logischem Signalpegel 0 anliegt.
Offen in Konfiguration 10 bedeutet, dass kein Speicherbaustein oder Register eines IO-Chips angesprochen wird bzw. im Adressraum eingeblendet ist und somit der Adressraum quasi in der Luft hängt. Lesezugriffe liefern keinen definierten Wert.
Alternative Darstellungen:
- PLA-Signalmatrix und Erklärung (engl.) aus The Transactor Volume 6, Issue 05, S. 51ff.
Ultimax-Modus[Bearbeiten | Quelltext bearbeiten]
Der Kompatibilitätsmodus für Ultimax-Steckmodule (Konfiguration 10) ist eine Besonderheit. Da die Max Machine/Ultimax kein eigenes ROM hat, kann in diesem Modus das ROM des Moduls (sozusagen anstelle u.a. des KERNALs) für die CPU eingeblendet werden. In C64-Modulen wird dieser Modus häufig zur Implementierung von Freezern benutzt. Außerdem sind etliche Speicherbereiche in diesem Modus "offen", es können vom Modul also eigene im Steckmodul befindliche Bausteine in diesen Bereichen eingeblendet werden.
Eine weitere Besonderheit des Ultimax-Modus ist, dass der VIC (der in allen anderen Konfigurationen in den 4k-Blöcken ab $1000 und $9000 das Zeichensatz-ROM und ansonsten das C64-RAM sieht) hier bei $3xxx/$7xxx/$Bxxx/$Fxxx das Hi-ROM des Cartridges und ansonsten das C64-interne RAM sieht (Details siehe Hardware-Aufbau des C64). Dies ist also der einzige Modus, in dem dem VIC von einem Cartridge direkt Daten "zugespielt" werden können.
Versionen[Bearbeiten | Quelltext bearbeiten]
906114-01 und 251064-01 sind von den Logiktermen her baugleich, aber das Timing ist nicht ganz dasselbe. Die 251064-01 wurde von Fujitsu hergestellt, im Schaltplan zur 250407 wird sie auch als 'MB112A101' bezeichnet. MB ist das Herstellerkennzeichen von Fujitsu. Auch das Gehäuse dieses Chips ist eindeutig Fujitsu, wie man an der Längskerbe erkennen kann, die zur Markierung von Pin 1 dient.
Laut Schaltplan will die 251064-01 einen bestückten C204 mit 82pF haben. Das ist ein Kondensator zwischen GND und den CAS-Pins der RAMs (also nachdem CAS durch die PLA und R42 gelaufen ist). Die 906114-01 will hingegen einen C203 bestückt haben, 82 pF zwischen CAS am VIC und GND (also bevor CAS durch die PLA geht). Eine Ausnahme ist der 6569R3, dann darf C203 nicht bestückt sein.
Das CAS-Timing funktioniert bei einigen C64-PLA unterschiedlich. Das kann beim Einsatz von PLA-Ersatzschaltungen durchaus von Bedeutung sein, unter Umständen funktionieren diese nicht.
Ersatz der PLA[Bearbeiten | Quelltext bearbeiten]
Die PLA ist einer der anfälligeren Bausteine im C64 und bekannt für häufige Defekte. Eine Ausnahme bildet hier nur die höher integrierte PLA bei C64 Assy No. 250469.
Einfacher Ersatz der PLA ist mit einem EPROM und Anschlussadapter möglich, jedoch funktioniert das in längst nicht jedem Anwendungsfall und kann insbesondere im Zusammenspiel mit Steckmodulen Probleme machen (siehe Thema: Neues aus EPROMhausen auf Forum64.de und Thema: PLA > EPROM geht nicht mit EasyFlash auf Forum64.de). PLDs und EPROMs unterscheiden sich nämlich stark in ihrer internen Funktionsweise: Beim Zustandswechsel der Eingangsleitungen verhält sich ein EPROM - anders als ein PLD - vereinfacht ausgedrückt für kurze Zeit nicht deterministisch, was für undefinierte Zustände im C64 sorgt und so die angesteuerten Bausteine "verwirrt". Besonders kritisch ist dabei das CASRAM-Signal für das RAM, bei dem "Signalschwinger" einen Speicherzugriffszyklus starten können. Angeschlossene Steckmodule oder Erweiterungen, wie bspw. KERNAL-Umschalt-Platinen, können diese Probleme verstärken.
Über die Jahre wurden (und werden z.T. auch immer wieder) von verschiedener Stelle nicht-typisierte Ersatz-PLA vertrieben. Dabei handelte es sich meist um die erwähnten EPROM-"PLA", gebrannte PLD oder CPLD-Nachbauten (siehe Thema: Ersatz-PLA macht Cevi instabil? auf Forum64.de).
Dagegen existieren auch weitestgehend kompatible PLA-Ersatzschaltungen, die eigens entworfen und vertrieben wurden bzw. werden. Auch hier kann es unter verschiedenen Umständen aber durchaus mal zu Inkompatibilitäten kommen.
Bekannt sind vor allem folgende Entwicklungen:
- Die SuperPLA von Jens Schönfeld kann auch in einem C264-Rechner verwendet werden.
- Die realPLA von skoe.
- PLAnkton von e5frog.
- Die PLAdvanced+ kann auf zahlreichen verschiedenen Commodore-8-Bit-Rechnern eingesetzt werden.
- Die PLA20V8 von Daniël Mantione.
Der 64-polige Multifunktions-Chip auf 250269-Boards ist im Vergleich kaum defektanfällig. Daher wurde bisher keine Ersatzschaltung für diesen IC mit integrierter PLA entwickelt.
Weblinks[Bearbeiten | Quelltext bearbeiten]
- "The C64 PLA Dissected" - Dokument zum PLA Reverse Engineering von Thomas Giesel (skoe)
- pla.txt - PLA-Schaltungslogik für die alten 82S100-PLAs
- "Video PLA Austausch" "Troubleshooting a "back screen" C64" PLA Chip-Fehler feststellen & beheben von Adrian Black
- PLA20V8 Seite des Entwicklers zum PLA-Ersatz auf GAL20V8-Basis
Quellen[Bearbeiten | Quelltext bearbeiten]
Hardware-Aufbau des C64 · Hardware-Portalseite
Komponenten des C64: CPU · VIC · SID · CIA · PLA · RAM · ROM · Farb-RAM