Update to 1.16.0 completed.

Please add any new defect you notice here!


Update auf 1.16.0 abgeschlossen.

Bitte neue Defekte hier vermerken!

PLA (C64-Chip)

Aus C64-Wiki

Wechseln zu: Navigation, Suche
Begriffsklärung Der Titel dieses Artikels ist mehrdeutig. PLA (Begriffsklärung).


PLA Chip von 1988, Commodore Nr. 906114-01

Die PLA ist der Chip des C64, der die Speicheransteuerung übernimmt.

Inhaltsverzeichnis

[Bearbeiten] Allgemeines

Die PLA (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. Hierzu kann die CPU mittels der PLA die zugrundeliegenden 64 KByte RAM von den ROMs und Chipregistern "überlagern" lassen: An Stelle des RAMs "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.

[Bearbeiten] Anschlüsse der PLA

[Bearbeiten] Ein- und Ausgänge

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

Die PLA hat 8 Ausgangsleitungen:

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.

[Bearbeiten] Steckmodule

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.

[Bearbeiten] Funktion

Der Adressraum des C64 lässt sich in folgende Zonen unterteilen:

Speicheradressen Größe Diese Zonen können folgendermaßen konfiguriert werden:
0–4095 / $0000–$0FFF 4 KByte Internes RAM: ein Teil der 64 KByte des C64-RAMs.
4096–32767 / $1000–$7FFF 28 KByte Internes RAM oder
"Offener" Adressraum: normalerweise unbelegt, aber von Steckmodulen nutzbar.
32768–40959 / $8000–$9FFF 8 KByte Steckmodul-ROM: ROML oder
Internes RAM.
40960–49151 / $A000–$BFFF 8 KByte BASIC ROM oder
Steckmodul-ROM: ROMH oder
"Offener" Adressraum.
49152–53247 / $C000–$CFFF 4 KByte Internes RAM oder
"Offener" Adressraum.
53248–57343 / $D000–$DFFF 4 KByte I/O: VIC, SID, CIA-Register und Farbram oder
CHAR ROM: zwei Standardzeichensätze umfassend.
57344–65535 / $E000–$FFFF 8 KByte KERNAL ROM oder
Steckmodul-ROM: ROMH.

Offener Adressraum 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. Da dieser Zustand nur von einem Steckmodul hervorgerufen werden kann, wäre dieses mit entsprechender Adressdekodierungslogik in der Lage, eigene, am Steckmodul befindliche Bausteine in diesen Bereichen einzublenden.

In den ersten vier KByte des C64-Adressraums ist immer RAM sichtbar. 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.

# Leitungen Adressraum
Prozessorport Steckmodul 4096–32767
$1000–$7FFF
32768–40960
$8000–$9FFF
40960–49151
$A000–$BFFF
49152–53247
$C000–$CFFF
53248–57343
$D000–$DFFF
57344–65535
$E000–$FFFF
CHAREN HIRAM LORAM GAME EXROM
1 1 1 1 1 1 Int. RAM Int. RAM BASIC ROM Int. RAM I/O Kernal ROM
2 0 1 1 1 1 Int. RAM Int. RAM BASIC ROM Int. RAM Charset ROM Kernal ROM
3 1 0 1 1 X Int. RAM Int. RAM Int. RAM Int. RAM I/O Int. RAM
1 0 1 0 0
4 0 0 1 1 X Int. RAM Int. RAM Int. RAM Int. RAM Charset ROM Int. RAM
5 0 0 1 0 0 Int. RAM Int. RAM Int. RAM Int. RAM Int. RAM Int. RAM
X 0 0 1 X
6 1 1 0 1 X Int. RAM Int. RAM Int. RAM Int. RAM I/O Kernal ROM
1 0 0 X 0
7 0 1 0 1 X Int. RAM Int. RAM Int. RAM Int. RAM Charset ROM Kernal ROM
0 0 0 X 0
8 1 1 1 1 0 Int. RAM Cart. ROM (L) BASIC ROM Int. RAM I/O Kernal ROM
9 0 1 1 1 0 Int. RAM Cart. ROM (L) BASIC ROM Int. RAM Charset ROM Kernal ROM
10 1 1 0 0 0 Int. RAM Int. RAM Cart. ROM (H) Int. RAM I/O Kernal ROM
11 0 1 0 0 0 Int. RAM Int. RAM Cart. ROM (H) Int. RAM Charset ROM Kernal ROM
12 1 1 1 0 0 Int. RAM Cart. ROM (L) Cart. ROM (H) Int. RAM I/O Kernal ROM
13 1 1 1 0 0 Int. RAM Cart. ROM (L) Cart. ROM (H) Int. RAM Charset ROM Kernal ROM
14 X X X 0 1 Offen Cart. ROM (L) Offen Offen I/O Cart. ROM (H)
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.

Alternative Darstellungen:


[Bearbeiten] Ersatz der PLA

Die PLA ist einer der anfälligeren Bausteine im C64. Einfacher Ersatz ist mit einem EPROM und Adapter möglich, jedoch muss das nicht immer gut funktionieren und kann insbesondere im Zusammenspiel mit Steckmodulen Probleme machen (siehe "Neues aus EPROMhausen" und PLA > EPROM geht nicht mit EasyFlash auf Forum64.de). Logikbausteine und Eproms haben einen grundsätzlich anderen internen Aufbau. Damit ist das gelingen eines Funktionsfähigen Adapters abhängig von der Implementierung des Eproms. Diese Implementierung kann auch noch zwischen den Geschwindigkeitsvarianten wechseln. Besonders empfindlich reagiert das Signal für das DRAM. Beim addressieren des Eproms wechseln die Ausgänge um irgendwann stabil anzuliegen. Diese Schwinger können dann im DRAM einen Speicherzugriffszyklus starten. Man kann bei einem defekten PLA auch nur die defekten Pins durch ein Huckepack angebrachtes Eprom ersetzen. Sind nur die "langsamen" Signale betroffen hat dieses Verfahren eine sehr hohe Erfolgsquote. Korrekt ist der Ersatz einer ausgefallenen PLA mit einem programmierten CPLD (siehe "Ersatz-PLA macht Cevi instabil?" auf Forum64.de).

[Bearbeiten] Weblinks

  • pla.txt Sprache:englisch - PLA-Schaltungslogik für die alten 82S100-PLAs
  • PLA-Ersatz Sprache:englisch lieferbar von FPGAArcade.com
  • PLA Sprache:deutsch bei Herwig Siebenhofer

Hardware-Aufbau des C64 · Hardware-Portalseite
Komponenten des C64: CPU · VIC · SID · CIA · PLA · RAM · ROM · Farbram

Schnittstellen des C64: Controlport · Expansionsport · Userport · Kassettenport · Netzbuchse · Audio-/Videobuchse · Antennenbuchse · Serielle Schnittstelle
Persönliche Werkzeuge
In anderen Sprachen