Der C550 ist ein sogenannter calculator-on-a-chip, ein Mikrocontroller, der alle notwendigen Funktionen eines Taschenrechners enthält. Der Baustein wurde von General Instrument Microelectronics vertrieben und war auch im Epoxidgehäuse verfügbar. es finden sich leider nur sehr wenige Informationen zum C550.
Die obige Tabelle stammt aus dem Artikel "Understanding Calculator ICs" der im Magazin "Radio Electronics" im April 1974 abgedruckt wurde. Neben dem C500 ist dort ein C554 und ein CZL550 aufgeführt. Der CZL550 ist dem C550 sehr ähnlich blendet allerdings führende Nullen aus und kann die LEDs der Anzeige direkt treiben. Der C550 benötigt externe Treiber.
Das obige Bild der Science Museum Group zeigt, dass der C550 in dem Taschenrechner Sinclair Executive eingesetzt wurde. Die meisten Quellen ordnen dem Sinclair Executive lediglich den TMS1802 zu. Es kamen aber im Laufe der Zeit unterschiedliche Controller zum Einsatz.
Das Elektronisches Jahrbuch 1977 zeigt eine typische Anwendung des CZL550. Neben dem Controller selbst, der Spannungsversorgung und des Taktgenerators wird nur noch ein Segmenttreiber benötigt, der die vier Digit-Ausgänge auf vier Ziffern erweitert. Beim C550 sind zusätzlich noch Treiber für die LEDs zu integrieren.
Das Gehäuse weist einige interessante Eigenheiten auf. In einer Keramikmasse sind der Chipträger und die Pins eingelassen. Darüber befindet sich eine Metallabdeckung und ein weiteres Metallplättchen, das den Raum abschließt, in dem sich der integrierte Schaltkreis befindet. Die Pins besitzen ungewöhnliche Einkerbungen. Vielleicht sorgen sie dafür, dass sich der Leadframe während der Produktion besser in Form biegen lässt.
Das Die ist 3,4mm x 3,3mm groß. Die obigen beiden Bilder können im Großformat geladen werden (76MB und 84MB).
Mittlerweile ist der C550 auch in einer deutlich höheren Auflösung verfügbar: 217MB
An der unteren Kante des Dies finden sich einige interessante Informationen. Das Design stammt demnach aus dem Jahr 1972. Anscheinend kamen fünf Masken einer Revision G zum Einsatz. Ganz rechts findet sich ein GI, das für General Instrument steht. 76251 ist eine interne Projektbezeichnung.
Sehr interessant ist die Bezeichnung PICO1. Der PICO1 war einer der ersten Single-Chip-Taschenrechner und damit auch einer der ersten Mikrocontroller. Der PICO1 wurde von Pico Electronics entwickelt, eine Ausgründung von General Instrument. Das Symbol ganz links könnte passen dazu ein P und ein E darstellen.
General Instrument hat den PICO1 unter der Bezeichnung GI250 vertrieben. Diese Variante war auf eine Anzeige mit nur vier Digits ausgelegt. Es existiert eine alternative Metalllage, durch die der PICO1 acht Digits bedienen konnte, wie es auch hier der Fall ist. Controller mit dieser Metalllage tragen die Bezeichnung 251, was zur Zahlenfolge 76251 passen würde.
Der PICO1 wurde laut Wikipedia noch per Hand mit einem Vergrößerungsfaktor von 500 gezeichnet. Das entspricht einer Fläche von 1,75m x 1,75m.
Weitere Informationen zum PICO1 finden sich auf der Seite http://www.spingal.plus.com/micro/ (abrufbar über archive.org). Dort ist auch ein Bild des Dies eingebettet. Die Auflösung ist zwar sehr niedrig, dennoch ist gut zu erkennen, dass sich die Strukturen extrem ähnlich sind. In dieser Detaillierung finden sich tatsächlich keine Unterschiede.
Die Beschriftung des PICO1 ist auf http://www.spingal.plus.com/micro/ etwas höher aufgelöst abgebildet. Im Flickr-Account von Jamo Spingal findet sich der Bereich noch etwas größer.
Es ist das Jahr 1971 und die Maskenrevision E abgebildet. Die Zahlenfolge im rechten Bereich lautet 76250. Das passt zur Bezeichnung GI250, der ersten GI-Variante des PICO1 der in den 4-Digit-Taschenrechnern eingesetzt wurde.
In allen vier Ecken sind Strukturen integriert, die es vereinfachen die Ausrichtung der Masken gegeneinander und die Qualität der Herstellungsprozesse zu überprüfen.
An der linken Kante des Dies ist eine Teststruktur integriert. Das linke Testpad kontaktiert das Substrat. Die eigentliche Teststruktur scheint aus zwei Transistoren zu bestehen. Das Substrat dient als Source-Kontakt. Links handelt es sich um einen normalen MOSFET, bei dem die Metalllage die Gateelektrode darstellt. Das dünne Gateoxid erzeugt eine Vertiefung in der Metalllage.
Rechts scheint sich ein MOSFET zu befinden, bei dem die Gateelektrode auf der dicke Siliziumoxidschicht aufliegt, wie sie auch auf dem Rest des Dies zu finden ist. Die Threshold-Spannung eines solchen MOSFETs ist üblicherweise so hoch, dass man den Transistortyp nicht innerhalb der Schaltung nutzen kann. Diese Eigenschaft ist aber gleichzeitig wünschenswert, da das elektrische Feld der Metalllage so nicht ungewollt Leitungen im Silizium überbrückt. Außerdem werden solche Transistoren oft als ESD-Schutz an den Eingängen genutzt.
Mit dem obigen Schaltplan des CZL550 kann man auch die Bondpads des C550 ihren Funktionen zuordnen. Ungenutzt ist beim CZL550 der Kontakt UD_EN. Das Signal KB_EN aktiviert das Auslesen der Tastatur. LD_EN (Lower Digit Enable) weist die aktuelle Ausgabe den unteren vier Digits der Anzeige zu. UD_EN (Upper Digit Enable) bietet einen Eingang und einen Ausgang. Dieser Pin kann die oberen vier Digits aktivieren. In Taschenrechnern mit nur vier Digits wird der Pin in auf eine Taste gelegt, über die sich der Benutzer dann die oberen vier Digits anzeigen lassen kann.
Eine vom Bondpad UD_EN abgehende Leitung wurde unterbrochen. Es handelt sich um den Eingang, der damit wohl deaktiviert werden sollte. Der Eingang wird beim C550 nicht benötigt, da er darauf ausgelegt ist in Systemen mit acht Digits eingesetzt zu werden. UD_EN aktiviert dort entweder die unteren vier Digits oder wird gar nicht genutzt. Im Detail betrachtet zeigt sich, dass die Metalllage nicht vollständig unterbrochen ist.
Das Potential des Uss-Pins kontaktiert das Die nicht direkt, sondern wird zuerst zum Trägerblech geführt.
Unter den Bondpads befindet sich eine Schutzstruktur (rot), die am oberen Ende des Bondpads kontaktiert wird (grün). Der ganze Aufbau stellt einen MOSFET mit einem dicken Gateoxid dar. Bei einem problematischen Spannungsimpuls wird die Struktur leitend, verbindet das Bondpad mit dem Uss-Potential und leitet so den Impuls ab.
Im Magazin "Radio Electronics" findet sich außerdem ein Blockschaltbild, das zeigt, wie ein Taschenrechner dieser Generation aufgebaut ist. Kern des Mikrocontrollers ist die ALU, die arithmetisch-logische Einheit, die Additionen, Subtraktionen und Schiebeoperationen ausführen kann. Komplexere Berechnungen wie Multiplikationen und Divisionen müssen auf diese Operationen heruntergebrochen werden.
Ein ROM enthält den zur Steuerung notwendigen Code. Ein RAM bietet den notwendigen Speicher, um die aktuell eingegebene Zahl, eine Konstante, ein Zwischenergebnis und ein Ergebnis abzulegen.
Ausgegeben werden die Daten über einen BCD/7-Segment Decoder.
Ein Teil der Schaltung, der sich sehr gut analysieren lässt, ist der BCD/7-Segment Decoder. Er besteht aus zwei Blöcken. Dem rechten Block werden von oben die vier BCD-Signale differenziell zugeführt. In der Matrix darunter sorgt die Verteilung der Gateoxid-Bereiche dafür, dass abhängig von den BCD-Signalen eine der horizontal verlaufenden Leitungen aktiv wird. Jede Leitung steht für eine Zahl.
Im linken Block sind in den horizontal verlaufenden Leiterbahnen die Gateoxid-Bereiche so verteilt, dass jede der Zahlen die passenden Segmente der Anzeige aktiviert (A-G).
Jede Segment-Steuerleitung ist an eine Pull-Up-Struktur angebunden und führt dann zu einer Treiberstufe. Wie es hier gut zu sehen ist, beziehen einige Treiber ihr Uss-Potential direkt aus der Rahmenstruktur.
Im oberen rechten Bereich des Dies befindet sich der ROM, der die Steuerungslogik enthält und sehr viel Fläche einnimmt. Auffällig ist, dass der Speicher nicht quadratisch ausgeführt wurde. Man hat die Steuerbefehle so angeordnet, dass sich im linken unteren Bereich keine aktiven Zellen befinden. So war es möglich diesen Bereich für andere Schaltungsteile zu verwenden.
Die Verteilung der Gateoxid-Bereiche stellt die programmierte Logik dar.
Der obere Bereich des ROMs enthält die Spaltenauswahl, die mit sieben differentiellen Steuersignalen eine der 72 Spalten aktiviert. Jede Spalte stellt einen Befehl dar, der einige Steuerleitungen aktiviert, die nach links aus dem ROM herausgeführt werden.
In den oberen 14 Zeilen des ROMs befinden sich zwei verschiedene Adressen. Eine der Adressen wird zur Spaltenauswahl zurückgekoppelt und aktiviert dort den nächsten Befehl.
Unter den Adressen befindet sich in den Spalten jeweils ein Steuerbefehl und ein Testbefehl. Das Ergebnis des Tests definiert welche der zwei Adressen der Spalte für den nächsten Schritt herangezogen wird. Die Auswahl dieser Adresse erfolgt direkt links neben dem Adress-Speicherbereich.
Den ganz links angeordneten Befehlen stehen neben den zwei Adressen nur 13 Steuersignale zur Verfügung. Ganz rechts kann ein Befehl mit jeder beliebigen der insgesamt 49 Steuerleitung verknüpft werden.
Mit den Bildern des C550 war es Dunkelwind (aka bITmASTER) möglich die Firmware zu extrahieren und eine Auflistung der Befehle zu erstellen. Aus seiner Analyse stammt auch die Erkenntnis, dass die ROM-Spalten neben den Steuerbefehlen auch Testbefehle enthalten.
Die bereits erwähnte Zeitschrift "Radio Electronics" Juli 1974 zeigt den typischen Aufbau des RAM-Speichers. Demnach handelt es sich üblicherweise um vier Schieberegister, die die vier BCD-Signale aufnehmen. Jede Spalte in diesen vier Schieberegistern stellt eine Zahl dar. Dazu kommen noch Stellen für zusätzliche Informationen wie Vorzeichen und Überlauf.
Die Daten durchlaufen die Schieberegister fortwährend. Das ist notwendig, da es sich um DRAM handelt, der zyklisch aktualisiert werden muss, damit die Daten nicht verloren gehen.
Der RAM besteht aus dreizehn Spalten. Dreimal vier Spalten bilden die drei Register A, B und C ab. Es handelt sich um die Zwischenspeicher für Eingabe, die Zwischensumme und das Ergebnis. Jeweils vier Speicherzellen stellen eine BCD-Zahl dar. Für die 8 Stellen, mit denen der Taschenrechner rechnet, sind entsprechend acht Zeilen im RAM vorgesehen. Die Guard-Zellen signalisieren einen Überlauf. Die obersten zwei Zeilen enthalten den Exponenten, der im 10er-Komplement abgelegt ist.
Das kleinere Register DP wird für mehrere Funktionen genutzt. Es dient als Zähler für Multiplikationen, es dient aber auch als Speicher für die Verortung des Dezimalpunkts.
Bei den einzelnen Speicherzellen handelt es sich um 3T1C-Zellen, die mit drei Transistoren und einem Kondensator aufgebaut sind. Der Kondensator ist lediglich eine etwas breitere Leitung im Silizium. Er steuert den Transistor T_cell. Im Gegensatz zu einem 1T1C-RAM wie dem U2164 hat ein 3T1C-RAM den Vorteil, dass ein Lesevorgang den Speicherinhalt nicht löscht.
In der Konfiguration als Schieberegister hat die 3T1C-Konfiguration noch einen weiteren Vorteil. Für die Funktion als Speicher wäre es ausreichend den Transistor T_Rd mit dem Udd-Potential zu verbinden. Stattdessen ist der Transistor an die Write Bitline angebunden. Da das ausgelesene Signal im Gegensatz zu einem 1T1C-RAM belastbar ist, kann man es direkt in die nächste Zelle einspeisen. So reicht ein Zyklus, um Informationen von einer Zelle zu Zelle zu übertragen.
Auf Basis der Bilder des C550 war es Dunkelwind (aka bITmASTER) möglich einen Emulator zu programmieren.