Microcontroller
– Arithmetic and Logic Unit
– Steuereinheit
– Speicher Ein/Ausgabe
– Erste Microcontroller IC
Programmierung
Pulse Code Modulation
Digitale Elektronik für den Mobilfunk
Microcontroller
Spätestens mit der Einführung des B-2 Netzes wurden die Mobiltelefone zu komplex, um sie mit einfacher digitaler Elektronik zu steuern. Was fehlte war eine Programmierbarkeit wie man sie bisher nur von Computern her kannte.
Ein Microcontroller besteht aus mehreren Element
- Der Arithmetic and Logic Unit (ALU)
- Der Steuereinheit (CU)
- Speicher Ein- und Ausgabe
Jeder Computer hat solche Einheiten.
Arithmetic and Logic Unit
In komplexen Geräten wie einem B-Netz Telefon müssen Werte abgefragt und anhand ihrer Größe Entscheidungen getroffen werden. Diese Entscheidungen können logische Entscheidungen sein wie z.B. das bereits diskutierte logische UND. Man hat zwei Größen, die man miteinander vergleicht und ein Ergebnis. Bei einer logischen Entscheidung ist das Ergebnis entweder RICHTIG oder FALSCH. Man kann aber auch andere Dinge mit zwei Werten machen. Etwa kann man zwei Werte miteinander addieren oder sie voneinander abziehen. Man will aber nicht für jede dieser Operationen eine eigene Elektronik haben. Vielmehr möchte man eine Einheit, deren Operationen einstellbar bzw. programmierbar ist.
Eine solche Einheit ist die ALU die Arithmetic and Logic Unit oder auf Deutsch das Rechenwerk.
Steuereinheit
Wer bestimmt nun was für Operationen in einer ALU durchgeführt werden. Dies ist die Steuereinheit oder auf englisch die Control Unit. Die Control Unit hat ein Eingabefeld, welches den „Befehl“ enthält. Der Befehl ist nichts anderes als eine Folge von 4, 8 (byte) oder 16 bits. Es interpretiert diesen Befehl und schaltet dadurch die ALU auf eine bestimmte Operation.
Die Befehle stehen in einem Speicher. Jedes Mal, wenn ein Befehl durchgeführt wurde wird der nächste Befehl geladen. Dazu verwendet man einen Zähler, der auf den entsprechenden Speicher zeigt, den Programmzähler. Nach jedem Befehl wird dieser Zähler hochgezählt.
Aber es gibt nicht nur Befehle, die die ALU setzten. Es gibt auch Befehle welche Daten hin und herschieben. Etwa von einem Speicher in die Eingabespeicher (Register) der ALU oder von dem Ergebnisregister der ALU in den Speicher.
Bedeutend sind weiterhin Befehle, die sich auf ein Ergebnis der ALU beziehen. So gibt es etwa einen Befehl, der den Programmzeiger auf einen speziellen Wert setzen kann, wenn das Ergebnis TRUE ist. Dadurch ist es möglich zu alternativen Programmstellen zu springen.
Speicher und Ein/Ausgabe
Wie bereits beschrieben braucht man einen Speicher in dem Daten und Programme gespeichert sind. Speicher brauchen zwei Leitungssysteme. Ein Leitungssystem ist für den Transport der Daten zuständig. Wenn z.B. ein Datum 8 bit lang ist (ein Byte) so benötigt es 8 Leitungen zum Transport der Daten. Weiterhin braucht man für einen Speicher eine Adresse. Diese beschreibt an welcher Stelle ein Wert gelesen oder geschrieben werden soll. Je nachdem wie groß der Speicher ist, braucht man viele Leitungen. Mit 8 Leitungen kann man 256 Werte adressieren. Mit 16 Leitungen bereits 65.536 Werte.
Es gibt Speicher, die nur gelesen werden. Dies sind typischerweise die Speicher, in denen das Programm steht. Solche Speicher nennt man Read Only Memory (ROM). Es gibt aber auch Speicher, welche man lesen und schreiben kann. Diese nennt man Random Access Memory (RAM).
Man kann über die Adressleitungen nicht nur Speicher abfragen oder beschreiben. Man kann auch Eingaben und Ausgaben erzeugen. Etwa Eingaben von Tasten oder Ausgabe von Ziffern über ein Display.
Erste Microcontroller ICs
Rechenwerke wie oben beschrieben, mit einer ALU einem Steuerwerk und einem Speicherwerk gab es schon seit den fünfziger Jahren in den ersten großen Computern. Dies waren aber enorm große Schränke und für elektronische Endgeräte wie ein Autotelefon völlig ungeeignet.
Der Durchbruch kam von einer Elektronikbranche welche einfache und praktische Lösungen für Rechner suchte. Am Anfang lediglich Addition, Subtraktion, Multiplikation und Division. Eine Addition oder Substraktion ist noch relativ einfach mit Logik herzustellen, aber wie wir aus der Schule wissen verlangt eine Multiplikation und eine Division eine Abfolge von Additionen und Substraktionen. Man brauchte also eine programmierbare Lösung.
Wie bereits erwähnt wurde 1968 wurde die Firma Intel gegründet. Die Gründer stammten von den berühmte verräterischen Acht von Fairchild. Intel war zunächst spezialisiert IC´s für Speicher zu bauen. Aber sie waren auch offen für Auftragsarbeit. Ein solcher Auftrag kam von einer japanischen Firma welche einen kleinen elektronischen Rechner bauen wollte. Hierfür benötigte sie ein effektives und kleines Rechenwerk. Dieses entstand somit bei Intel im Jahre 1971. Es trug den Namen Intel 4004. Intel kaufte später die Lizenz des 4004 von den Japanern und vertrieb den ersten einfachen Microcontroller bzw. Microprozessor der Welt. Es war nur ein 4 bit System, d.h. die Daten hatten eine breite von nur 4 bit. Und er war sehr langsam. Die Abfolge der Befehle (Taktfrequenz) war lediglich 500 kHz. Das Design enthielt lediglich 2300 Transistoren.

Der Intel 4004 blieb nicht der einzige Prozessor. Bald gab es auch Microprozessoren von Texas Instruments und von Motorola. Außerdem gab es bald einen Wechsel von 4 bit Prozessoren auf 8 bit Prozessoren.

Programmierung
In den späten Siebziger Jahren wurden mehr und mehr Mikroprozessoren in Mobiltelefone verbaut. Dies reduzierte dramatisch die Anzahl nötiger Bauteile und somit Größe und Stromverbrauch. Es brachte auch eine neue Spezies von Ingenieur in das Geschehen. Bisher gab es den gemeinen Elektroniker, später auch digital Elektroniker genannt und den Hochfrequenzingenieur, welcher für das Senden und Empfangen zuständig war. Nun kam der Programmierer hinzu welcher die verbauten Microcontroller programmierte.
Es gab einen Unterschied zwischen den „normalen“ Programmierern von Computern und solchen die einen Microcontroller programmierten. Die großen Computer hatten große Magnetspeicher, in welchen die Programme gespeichert wurden. Wenn ein Programm ausgeführt wurde, wurde das Programm in einen lokalen Speicher geladen. Microprozessoren hatten diesen Luxus nicht. Ihre Programme kommen eigentlich (wie bei Taschenrechnern) aus einem ROM also einem Read Only Memory in dem das Programm fest eingebrannt ist. Dieses wird einmal entworfen und dann als spezielles IC hergestellt und kann nicht verändert werden. Es ist aber praktisch unmöglich ein fehlerfreies Programm zu erstellen und ein ROM daraus zu machen, ohne dass es Fehler hat. Man kann nicht schnell ein neues ROM programmieren da die Produktion eines ROM mehrere Wochen dauert.
Hilfe kam von einer weiteren Erfindung von Intel, das EPROM. EPROM steht für Erasable Programmable Read Only Memory. In diese Bausteine konnten Programme (und/oder Daten) fest gespeichert werde. Mit speziellen Lesegeräten wurden die Programme, etwa von einem Entwicklungscomputer heruntergeladen und „eingebrannt“. Nun konnte man das Programm mit einem Microcontroller „ausprobieren“. Dabei treten natürlich Fehler auf, welche behoben werden müssen. Die besagten EPROMS hatten ein „Fenster“ zum Chip. Durch dieses Fenster konnte man UV-Strahlen einfallen lassen, was bewirkte das die vorher programmierten Daten gelöscht wurden. Nun konnte man das EPROM neu programmieren. Auf diese Weise programmierten die Ingenieure der siebziger und achtziger Jahre ihre Systeme.

Pulse Code Modulation
Bis zum zweiten Weltkrieg gab es nur zwei Methoden zur Speicherung von analogen Signalen, speziell von Audiosignalen. Entweder mechanische Speicherung etwa auf Schallplatten oder magnetische Speicherung etwa auf Tonbändern.
In schon vor dem Krieg wurden Theorien entwickelt, wie man Signale „abtasten kann“. Die Idee ist, dass man zu einem bestimmten Zeitpunkt die Spannung eines Signals misst und den Wert dieser Messung speichert. Wenn die Messung in periodischen Zeitabständen erfolgt, erhält man somit eine Folge von Zahlen, welche das Signal präsentiert. Wenn man umgekehrt in periodischen Zeitabständen Spannungen erzeugen kann, die den gespeicherten Zahlen entsprechen, müsste man das gleiche oder zu mindestens ein ähnliches Signal rekonstruieren können. Obwohl man lange Zeit nicht in der Lage war, wirklich Signale abzutasten gab es Theorien mit welcher Frequenz man Signale abtasten musste. Hierbei war es vor allem ein Ingenieur namens Harry Nyquist der herausfand, dass die die Frequenz, mit der man ein Signal abtastet, doppelt so hoch sein muss wie die höchste Frequenz des abgetasteten Signals. Ist dies der Fall kann man das Signal aus der abgetasteten Zahlenfolge reproduzieren.

Analoge Signale lassen sich unter bestimmte Bedingungen in Zahlenfolgen umwandeln und umgekehrt. Dies ermöglicht Signale digital zu verarbeiten.
Sprache hat (in Telefonleitungen) eine Bandbreite von unter 4 kHz. Daher kann man Sprachsignale mit einer Frequenz von 8 kHz abtasten. Wie genau aber muss man jeden einzelnen Wert abtasten? Ein Signal kann ökonomisch nicht beliebig genau gemessen werden. Weicht der Messwert, der am Ende einer Zahl entspricht von dem tatsächlichen Wert ab stellt er sich als Rauschen da. Man stellte fest, dass eine 8 bit für die Messung ausreichend war. Das entstehende Rauschen entspricht in etwa dem Rauschen welche ohnehin bei Telefonübertragungen entsteht. Somit entstand 1972 ein Standard für die Abtastung von Telefonsignalen den man als Pulse Code Modulation bezeichnet. Lineare Abtastung mit 8 bit Genauigkeit und einer Abtastrate von 8 kHz. Dadurch entsteht eine Datenrate von 64 kbit/s.

Elemente die Signale abtasten und daraus Zahlenfolgen generiert bezeichnet man als Analog Digital Wandler (engl. Analog Digital Converter ADC). Umgekehrt erzeugt ein Digital Analog Wandler (Digital Analog Converter DAC) die analogen Signale wieder aus einer Zahlenfolge. ADC und DAC waren Ende Anfang der Achtziger Jahre bereits verfügbare Integrierte Schaltungen. Sie wurden vor allen von einem Hersteller namens Analog Devices gebaut und vertrieben.
