RETRODREAMSAMIGA & SPECTRUM
Menü

← Alle Chips

ula.chip

DIP-40 · 6C001E-7 · Zeichnung, kein Foto

SinclairFerranti (para a Sinclair)

1981

ULA da Ferranti

Ein „unverdrahteter“ Chip, den Sinclair zum Rest des Rechners machte.

Die ULA (Uncommitted Logic Array) von Ferranti ist eine Matrix aus Logikgattern, die erst im letzten Fertigungsschritt nach Maß verdrahtet wird. Im ZX81 ersetzte sie 18 Chips des ZX80; im Spectrum erzeugt sie das Farbbild, liest die Tastatur, kümmert sich um Kassette und Ton und entscheidet, wann der Prozessor an den Speicher darf.

Bit Bus
8

Eine unverdrahtete Matrix

Eine ULA ist ein vorab gefertigter Chip mit tausenden noch unverbundenen Transistoren. Erst die letzten Metallschichten, auf Bestellung gefertigt, verbinden diese Transistoren zu Logikgattern und Flipflops, und das legt fest, was der Chip tut. Das ist viel billiger und schneller zu entwickeln als ein von Grund auf entworfener Chip, der sich nur bei riesigen Stückzahlen lohnt.

Ferranti aus Manchester, dieselbe Firma, die 1951 den Ferranti Mark 1 fertiggestellt hatte, war in Großbritannien Pionier dieser Matrizen in Bipolartechnik. Laut Chris Smith, der jahrelang die ULA des Spectrum untersucht hat, stammt die 6C001E vermutlich aus der Serie 6000 der Ferranti-Matrizen, nach den Serien 1000, 2000 und 5000 in CML-Logik. Ferranti baute auch ULAs für den BBC Micro und den Acorn Electron.

1982 verkaufte Ferranti sogar den ULA Designer, eine Entwurfsstation für 46.500 Pfund, und versprach rund 5.000 Pfund pro Projekt und 1 bis 2 Pfund pro Chip bei großen Stückzahlen, gegenüber 15.000 Pfund, wenn Ferranti den Entwurf selbst machte. Die Mikroelektronik-Sparte wurde im November 1987 an Plessey verkauft.

Die ULA des ZX81

Jim Westwood, Chefingenieur bei Sinclair, bekam die Aufgabe, die Kosten des ZX80 zu senken, und fasste 18 seiner Chips in einer einzigen ULA zusammen. Der ZX81 kam mit vier Hauptchips aus: Prozessor, ULA, ROM und Speicher. Das Handbuch nannte die ULA den „dogsbody“ des Systems, das Mädchen für alles.

Sie erzeugt den Takt mit 6,5 MHz (aus dem der Prozessortakt mit 3,25 MHz kommt), synchronisiert das Bild, liest die Tastatur, schreibt und liest die Kassette, wählt, wann ROM und RAM sprechen, und steuert das Timing von allem. Weil derselbe Pin für Video und Kassettenausgang dient, erscheinen bei LOAD und SAVE die Zickzackstreifen auf dem Bildschirm.

Es gab drei Hauptversionen: 2C158E, 2C184E und 2C210E. Die ersten beiden erzeugen ein Videosignal ohne die „back porch“, eine kurze Lücke im Signal, die Fernseher als Referenz nutzen, und auf vielen Farbfernsehern wird das Bild sehr dunkel, das Weiß wirkt grau. Die 2C210E hat sie schon. Der Timex Sinclair 1000 nutzt die 2C210E.

Die ULA des Spectrum

Richard Altwasser entwarf die Hardware des Spectrum und damit auch seine ULA. Der Grafikmodus sollte in weniger als 7 KB passen: 6.144 Bytes für die 256 × 192 Pixel und 768 Bytes Attribute, eines pro 8 × 8-Block, insgesamt 6.912 Bytes. Jedes Attribut hat 3 Bits für die Farbe der Tinte, 3 für die des Papiers, eins für die Helligkeit und eins für FLASH, das die beiden Farben alle 0,64 Sekunden tauscht.

Die ULA liest Tastatur und Kassetteneingang über den Port 0xFE, und über denselben Port bekommt sie die Rahmenfarbe (Bits 0 bis 2), den MIC-Ausgang (Bit 3) und den Beeper (Bit 4). Um das Rauschen der Kassetten zu säubern, baute das Team einen Schmitt-Trigger in die ULA.

Der Takt kommt von einem Quarz mit 14 MHz: Die ULA teilt ihn durch 2 für die 7 MHz der Pixel und durch 4 für die 3,5 MHz des Z80. Und etwa 50-mal pro Sekunde, zu Beginn jedes Bilds, gibt sie dem Prozessor den Interrupt, mit dem das ROM die Tastatur liest und die Zeit zählt.

Contended Memory: Die ULA hat das Sagen

ULA und Prozessor teilen sich die ersten 16 KB RAM (0x4000 bis 0x7FFF), in denen der Bildschirm liegt, und der Speicher kann nicht von beiden gleichzeitig gelesen werden. Die ULA hat Vorrang: Während sie den sichtbaren Teil des Bildschirms zeichnet, bremst sie den Z80, wenn er auf diesen Bereich zugreifen will, nach einem Muster von 6, 5, 4, 3, 2, 1, 0, 0 Zyklen. Im Rahmen und während der Strahlrückläufe gibt es keine Verzögerungen. Code in den oberen 32 KB läuft immer mit voller Geschwindigkeit.

Beim 48K dauert jede Zeile 224 Prozessorzyklen, und es gibt 312 Zeilen, das ergibt 69.888 Zyklen pro Bild. Effekte, die mitten im Bild die Farben wechseln, mehrstimmige Beeper-Musik oder Sprachsamples zählen diese Zyklen einzeln ab. Und weil die ULA die Attribute in jeder Pixelzeile neu liest, gibt es Programme, die die Attribute zwischen den Zeilen tauschen, um mehr Farben in einem 8 × 8-Block zu zeigen.

Liest der Prozessor einen Port, an dem nichts angeschlossen ist, erwischt er das Byte, das die ULA gerade aus dem Videospeicher holt, den sogenannten Floating Bus. Spiele wie Cobra, Short Circuit, Sidewize und Arkanoid nutzten das, um zu wissen, an welcher Stelle des Bildschirms der Strahl gerade war, und flimmerfrei zu zeichnen.

Revisionen: Kakerlaken und Spinnen

Die erste ULA des Spectrum, die 5C102E (Platinen Issue 1 und einige Issue 2), hatte einen Fehler bei der Contention der Ports, durch den das Lesen der Tastatur aus Maschinencode unzuverlässig wurde. Die Korrektur war die „dead cockroach“ (tote Kakerlake): ein Chip 74LS00, von Hand oben auf die Platine gelötet und mit losen Drähten verbunden.

Die 5C112E der Issue 2 behob den Fehler, bremste aber nun Ports, bei denen es nicht nötig war. Dann kam die „Spinne“ (spider): ein Transistor ZTX313, über dem Prozessor aufgelötet, mit einer Diode und einem Widerstand. Ab Issue 3 wurde dieser Transistor als TR6 Teil der Platine. ZTX war die Transistorreihe von Ferranti selbst.

Es folgte die Familie 6C001E. Die 6C001E-5 änderte das Timing, damit sie mit mehr Fernsehern funktionierte, um den Preis, dass das Bild um ein Zeichen nach links rückte, und das Bit des EAR-Eingangs floatete, bis die ULA warm wurde. Die 6C001E-6 kam in den meisten Issue 3 zum Einsatz, und die 6C001E-7 funktioniert in allen Platinen des 48K; die letzten tragen schon das Plessey-Logo. Die ULAs des ZX81 und des 48K haben 40 Pins.

Vom 128 bis zum Ende der ULA, und die Timex

Der 128 und der graue +2 nutzen die 7K010E5, später als Amstrad 40056 beschriftet, aber funktional gleich, mit 48 Pins und RGB-Ausgang. Ein einziger Quarz mit 17,7345 MHz liefert, geteilt durch 5, die 3,5469 MHz des Prozessors und, geteilt durch 4, die 4,43 MHz der PAL-Farbe. Jedes Bild hat nun 228 × 311 = 70.908 Zyklen, und deshalb ist der 128 etwas schneller als der 48K, was manche Timing-Tricks merken.

Wegen eines Fehlers in einem Logikchip für das Paging sind beim 128 und beim grauen +2 die Seiten 1, 3, 5 und 7 contended und nicht 4, 5, 6 und 7, wie es in der Dokumentation stand. Man merkt das zum Beispiel an der digitalisierten Stimme in Fantasy World Dizzy, die auf einem 128 schlecht und auf einem +2A gut klingt.

Beim +2A, +2B und +3 verschwindet die ULA: Amstrad setzte an ihre Stelle ein Gate Array, den 40077, in einem SMD-Gehäuse, der die Funktionen der ULA und der umgebenden Logik vereint. Die Contention wandert auf die Seiten 4 bis 7 und gilt nur noch für Speicherzugriffe, und Spiele, die auf den Floating Bus angewiesen waren, können hängen bleiben oder ruckeln.

Die Timex gingen einen anderen Weg: Im TS2068 übernimmt die Rolle der ULA der SCLD (Standard Cell Logic Device), ein Standardzellen-Chip, den Timex bei NCR bestellte, in einem Gehäuse mit 68 Pins. Er steckt auch im TS1500 und in den in Portugal gebauten TC2048 und TC2068, wo er die Modi mit 512 × 192 und Farbe in 8 × 1-Zellen ermöglicht. Im TS2068 arbeitet der Z80 mit 3,528 MHz, einem Viertel des SCLD-Takts von 14,112 MHz.

Wusstest du…

  1. Angeblich sollten nur 70 % der Gatter der ZX81-ULA genutzt werden, aber Sinclair nutzte sie alle, um mehr Funktionen unterzubringen, und der Rechner wurde heiß. Man erzählt, manche hätten ihn mit einer Packung kalter Milch auf dem Gehäuse gekühlt.

  2. Der Name „tote Kakerlake“ kommt angeblich vom Aussehen des 74LS00, der oben auf die Platine gelötet war, mit sichtbaren Beinchen und Drähten.

  3. Chris Smith entfernte die Abdeckung mehrerer ULAs 6C001E-7, um sie zu fotografieren, und zeichnete die Schaltung Transistor für Transistor neu: Der komplette Schaltplan misst auf Papier 210 × 196 cm.

  4. In der früheren Sowjetunion wurde ein zur Spectrum-ULA kompatibler Chip gebaut, der T34VG1.

  5. Beim 48K wechselt der Rahmen die Farbe über denselben Port, der den Beeper ertönen lässt, und genau dieser Port malt die bunten Streifen in den Rahmen, während eine Kassette lädt.

  6. Die ULA des 128 wurde nach dem Kauf von Sinclair als Amstrad 40056 beschriftet, funktioniert aber genau wie die 7K010E5 von Ferranti.

  7. Der SCLD der Timex ist keine ULA: Er ist ein Standardzellen-Chip, eine andere Semi-Custom-Technik.

RUN "DEMO"

Attribute Clash

Beim Spectrum speichert die ULA die Farbe pro Zelle von 8×8 Pixeln: nur eine Vordergrund- und eine Hintergrundfarbe pro Zelle. Wenn das gelbe Raumschiff in eine Zelle fliegt, wechselt alles, was dort gezeichnet ist, mit ihm die Farbe. Vergleiche mit Farbe pro Pixel.

Wo er steckt