DIP-40 · 8520A-1 · Zeichnung, kein Foto
Amiga-ChipsCommodore (MOS / CSG)
1985
CIA 8520
Der Chip der Schnittstellen: Tastatur, Diskettenlaufwerk, Parallelport, LED und Timer. Jeder Amiga hat zwei.
Der CIA 8520 ist der Ein-/Ausgabe-Chip des Amiga, geerbt vom 6526 des Commodore 64. Jede Maschine hat zwei: CIA-A liest die Tastatur und den Parallelport, schaltet die LED und räumt beim Start das ROM aus dem Weg; CIA-B steuert das Diskettenlaufwerk und die Steuerleitungen der seriellen Schnittstelle. Jeder hat außerdem zwei Timer und einen Ereigniszähler.
- 8
Ein Chip des Commodore 64, der im Amiga blieb
CIA steht für Complex Interface Adapter. Der ursprüngliche Entwurf ist der 6526 von MOS Technology, der Schnittstellen-Chip des Commodore 64, der zwei davon trägt. Als Commodore den Amiga entwarf, baute man keinen Ein-/Ausgabe-Chip von Grund auf neu, sondern passte an, was schon da war: Der 8520 ist ein 6526 mit einem Unterschied, der Uhr. Im 6526 ist es eine echte Uhr mit Stunden, Minuten und Sekunden in BCD; im 8520 wurde daraus ein einfacher binärer 24-Bit-Zähler, der Impulse zählt. Ansonsten ist es derselbe Chip.
Commodores interne Spezifikation, die Zeichnung 318029, beschreibt ihn als Peripheriebaustein, kompatibel zum Bus der 65xx, im 40-poligen Gehäuse, und nennt die Einsatzorte: Amiga und das Diskettenlaufwerk 1581. Von den Commodore-Chips im Amiga ist er der einzige, der nicht für ihn entworfen wurde, und er spricht die Sprache der 65xx in einer 68000-Maschine: Der Prozessor hat für diese Peripherie einen eigenen Takt, den E-Takt, mit einem Zehntel seiner Geschwindigkeit, und darauf synchronisiert sich der CIA.
In jedem Amiga stecken zwei, vom A1000 bis zum A4000, und das System nennt sie CIA-A und CIA-B. Die Ausnahme ist der CD32: Der Akiko hat ihre Funktionen übernommen, und auf der Platine der Konsole gibt es keinen.
Zwei Chips, zwei Aufgaben
Jeder CIA hat 16 Ein-/Ausgabe-Pins in zwei 8-Bit-Ports, dazu ein serielles Schieberegister, einen Impuls-Pin und einen Eingang, der Flanken erkennt. Der Amiga verteilt die Aufgaben auf beide. CIA-A, an den ungeraden Adressen ab $BFE001, gibt seinen ganzen Port B an die 8 Datenbits des Parallelports, und sein Port A ist voller Einzelbits: OVL, das das ROM an Adresse null legt; die Power-LED, die leuchtet, wenn das Bit null ist; vier Statussignale des Diskettenlaufwerks (bereit, Spur null, schreibgeschützt, Diskette gewechselt); und die Feuerknöpfe der beiden Joystickports. Sein serielles Register empfängt die Tastatur.
CIA-B, an den geraden Adressen ab $BFD000, steuert mit seinem ganzen Port B das Diskettenlaufwerk: Motor, Auswahl eines von vier Laufwerken, Schritt, Richtung und Seite. Port A vereint die Flusskontrollleitungen der seriellen Schnittstelle (DTR, RTS, CTS, DSR, Trägererkennung) und die Steuerleitungen des Parallelports (BUSY, POUT, SEL). Sein Flankeneingang zählt die Indeximpulse der Diskette, einen pro Umdrehung. Das serielle Register des CIA-B wird für nichts verwendet.
Jeder spricht mit dem Prozessor auf einer eigenen Interrupt-Ebene: CIA-A auf Ebene 2, CIA-B auf Ebene 6. Und beide teilen eine Eigenheit des Entwurfs: CIA-A hängt an den unteren 8 Bits des Datenbusses, CIA-B an den oberen 8, weshalb die Adressen des einen ungerade und die des anderen gerade sind und man nur byteweise auf sie zugreifen kann.
- Tastatur
- Diskettenlaufwerk
- Parallelport
- Serielle Schnittstelle (Flusskontrolle)
- System: OVL und LED
- Feuerknöpfe der Joysticks
Jeder Pin der Ports A und B mit dem Signal, das der Amiga daran anschließt. Quelle: Amiga Hardware Reference Manual, Anhang F. Klicke auf ein Signal, um es auf der Platine des Amiga 500 rev 8A im Explorer leuchten zu sehen.
Wie eine Taste beim Prozessor ankommt
Die Amiga-Tastatur hat einen eigenen Mikrocontroller und hängt über vier Leitungen an der Maschine: Versorgung, Masse, KCLK (der Takt, nur von der Tastatur zum Rechner) und KDAT (die Daten, in beide Richtungen). Jede Taste erzeugt einen 7-Bit-Code, und das achte Bit sagt, ob sie gedrückt (0) oder losgelassen (1) wurde. Die Tastatur sendet die 8 Bits einzeln über KDAT, mit einem Impuls auf KCLK pro Bit, bei etwa 60 Mikrosekunden pro Bit: Eine Taste braucht eine halbe Millisekunde, bis sie ankommt.
Auf der Amiga-Seite empfängt das serielle Schieberegister des CIA-A: KDAT kommt am Pin SP herein, KCLK an CNT. Beim achten Impuls fällt das Byte ins Datenregister, und der CIA löst einen Interrupt aus. Die Software liest den Code und muss antworten: Sie zieht KDAT für 85 Mikrosekunden auf null, der Handschlag, der der Tastatur sagt, dass sie die nächste Taste senden darf.
Zwei Details zeigen die Sorgfalt des Entwurfs. Die Leitung ist aktiv auf null, die Bits kommen also invertiert an. Und das Byte geht rotiert hinaus: Zuerst wird Bit 6 gesendet, zuletzt Bit 7, das Bit für gedrückt oder losgelassen. Verlieren Tastatur und Rechner den Gleichtakt, sendet die Tastatur Einsen, bis sie den Handschlag bekommt, und ein Müllbyte voller Einsen liest sich als losgelassene Taste, was niemandem schadet. Dann warnt sie mit einem Sondercode ($F9) und wiederholt die verlorene Taste. Probier es in der Demonstration weiter unten.
Amiga 1000 · 1985Timer und Ereigniszähler
Jeder CIA hat zwei 16-Bit-Timer. Man lädt einen Wert, der Timer zählt im Takt des E-Takts des Prozessors herunter (709 379-mal pro Sekunde bei PAL, 715 909-mal bei NTSC, ein Zehntel des 68000-Takts) und löst bei null einen Interrupt aus und lädt sich neu. Sie lassen sich für 32-Bit-Zählungen verketten, externe Impulse am Pin CNT zählen oder ihren Ausgang auf einen Pin von Port B legen. Mit ihnen misst das AmigaOS die Zeit.
Der dritte Zähler ist der TOD, der im 6526 die Uhr war. Im Amiga bekam er zwei findige Verwendungen: Der des CIA-A zählt die 50- oder 60-Hz-Impulse jedes Bildes, der des CIA-B zählt die Bildschirmzeilen, 15 625 pro Sekunde bei PAL. Beide haben einen Alarm, der einen Interrupt auslöst, wenn der Zähler einen gewählten Wert erreicht. Da es 24-Bit-Zähler sind, läuft der des CIA-B alle 18 Minuten über, der des CIA-A nach fast vier Tagen.
Insgesamt hat jeder CIA fünf Interrupt-Quellen: die zwei Timer, den Alarm, das serielle Register und den Flankeneingang. Ein einziges Register, das ICR, sagt, welche ausgelöst hat, und das Lesen löscht es, weshalb der Leser alles abarbeiten muss, was darin stand. Unter AmigaOS fassen Programme die CIAs nicht direkt an: Sie bitten die cia.resource um Timer und Interrupts, und die verteilt, was da ist, zwischen dem System und wer sonst fragt.
Der erste, der aufwacht
Beim Einschalten gehört der CIA zu den ersten Chips, auf die es ankommt. Ein Reset macht alle Pins zu Eingängen, und weil sie Pull-up-Widerstände haben, lesen sie sich als eins. Das schließt OVL ein, Bit 0 von Port A des CIA-A: Auf eins erscheint das Kickstart-ROM an Adresse null, wo der 68000 seinen Stapelzeiger und seine Startadresse holt. Nur so kann der Prozessor überhaupt starten, denn an Adresse null liegt normalerweise das Chip-RAM. Sobald es läuft, konfiguriert das Kickstart die zwei Ausgangsbits (OVL und LED) und zieht OVL auf null: Das RAM kehrt an Adresse null zurück, und das ROM bleibt nur an seinem Platz, am oberen Ende des Speichers.
Dasselbe LED-Bit schaltet den Tiefpassfilter des Tons: Deshalb wird die Power-LED dunkler, wenn ein Spiel oder eine Demo den Filter abschaltet. Die Paula-Seite erklärt den Filter; hier ist der Schalter.
Das Gehäuse änderte sich über die Jahre. In A1000, A500, A2000 und A3000 ist der 8520 ein 40-poliges DIP, fast immer gesockelt. In A600, A1200 und A4000 ist er ein 44-poliges PLCC, auf die Platine gelötet. Der CD32 hat keinen. Innen war es immer derselbe Chip von 1985.
Wusstest du…
Die Adresse $BFE001 gehört zu den bekanntesten des Amiga: Es ist das Register, in das man schreibt, um die LED auszuschalten, den Tonfilter abzuschalten und das ROM zu verstecken.
Eine Taste braucht etwa eine halbe Millisekunde bis zum CIA: acht Bits zu je 60 Mikrosekunden, rund 17 kbit/s.
Die Tastatur sendet das Bit für gedrückt oder losgelassen absichtlich zuletzt: Geht der Gleichtakt verloren, liest sich der ankommende Müll als losgelassene Taste, und die ist harmlos.
Wer auf einem A1000 oder manchen A2000 Ctrl-Amiga-Amiga drückt, bekommt zuerst einen Warncode ($78): Die Tastatur kündigt an, dass sie zehn Sekunden später einen Reset auslöst.
Der Ereigniszähler des CIA-B zählt Bildschirmzeilen, 15 625 pro Sekunde bei PAL, und seine 24 Bits laufen alle 18 Minuten über.
Das serielle Register des CIA-B wird für nichts verwendet: In jedem Amiga schläft eine synchrone serielle Schnittstelle im Chip.
Caps Lock ist die einzige Taste, die nur beim Drücken einen Code sendet: Das Bit für gedrückt oder losgelassen sagt dann, ob die Leuchte an- oder ausging.
Taste für Taste über die Leitung
Die Amiga-Tastatur sendet jede Taste als 8 serielle Bits: 7 für den Code und 1, das zuletzt sagt, ob sie gedrückt oder losgelassen wurde. CIA-A nimmt sie in sein Schieberegister auf, und am Ende zieht der Amiga die Leitung KDAT für 85 µs auf null, der Handschlag, der die nächste Taste anfordert. Drück eine Taste auf deiner Tastatur oder eine von diesen.
Hier klicken und eine Taste drücken
Bits auf der Leitung, in der Reihenfolge 6-5-4-3-2-1-0-7 (Leitung aktiv auf null)
—
Protokoll und Codes: Amiga Hardware Reference Manual, Anhang G.
Störungen, an denen er beteiligt ist
Diagnoseanleitungen des Platinen-Explorers, die Signale dieses Chips messen, Platine für Platine.
Die Tastatur reagiert nicht
Das Gerät startet, aber die Tasten tun nichts. Die Tasten erreichen die CIA-A über eine serielle Daten- und eine Taktleitung.
Amiga 500 rev 8A →Amiga 600 rev 2A →Amiga 1200 rev 2B →Amiga 1200 rev 1D.1 →Amiga 4000 rev 2 →Amiga 4000 rev B →Amiga 4000T rev 4 →
Diskette wird nicht gelesen
Das interne Laufwerk dreht nicht, bewegt den Kopf nicht oder dreht, liest aber nicht. CIA-B gibt dem Laufwerk die Befehle, Paula empfängt die Daten.
Amiga 500 rev 8A →Amiga 600 rev 2A →Amiga 1200 rev 2B →Amiga 1200 rev 1D.1 →Amiga 4000 rev 2 →Amiga 4000 rev B →Amiga 4000T rev 4 →
Wo er steckt
Quellen
- [1]IC, LSI, Complex Interface Adapter 8520 — desenho 318029 rev. C (especificação interna) · Commodore · espelho funet dos documentos Commodore, 1987
- [2]Amiga Hardware Reference Manual, apêndice F: 8520 Complex Interface Adapters · Commodore-Amiga · Amiga Developer CD 2.1, 1991
- [3]Amiga Hardware Reference Manual, apêndice G: Keyboard Interface · Commodore-Amiga · Amiga Developer CD 2.1, 1991
- [4]MOS Technology CIA (6526 e 8520) · Wikipédia
- [5]CIA 8520 (números de peça e máquinas) · Big Book of Amiga Hardware







