Computer-Basiswissen 1         

von Otmar Feger              

Elektronik-Labor
 Literatur  Projekte  Lernpakete  Basiswissen



Einleitung

Das folgende Bild zeigt das bekannte prinzipielle Schema. Mittels Programm führt der Computer das Programm aus und leistet das beabsichtigte Ergebnis. Die Programm besteht aus eine Liste einzelner Anweisungen (Befehlen) die der Reihe abgearbeitet werden. Das bedeutet, dass jede Aufgabe in einzelne nacheinander auszuführende Anweisungen zerlegt werden müssen. Man spricht dabei von Programmen bzw. von Programmsprachen. Im Abschnitt Software wir noch ausführlicher darauf eingegangen In der Menschensprache reihen sich Wörter nacheinander und sind auch meistens auch verständlich wenn ein Wort fehlt oder verstümmelt ist, In einer Programmsprache werden solche Fehler nicht toleriert. Syntaxfehler werden zwar erkannt und sind zu korrigieren. Weitere redundante Verfahren  sind künftigen Entwicklungen vorbehalten.



Soll zum Beispiel aus einer Zahlenreihe die Größte ausgesucht werden so ist die erst Zahl in der Liste mit der zweiten zu vergleichen, dazu benötigt man schon mehrer Befehle – erste Zahl aus dem ersten Platz in der ZahlenReihe holen, Abfrage ob der nächste Reihenplatz schon mit dem Ende der Reihe identisch ist, wenn ja Programmende und Fehlermeldung, dass die Liste nur aus einer Zahl besteht. Sonst nächste Zahl aus der Reihe holen, vergleichen mit der vorher reservierten Zahl, ist sie größer, dann reservieren, sonst das das Spiel so lange wiederholen bis das Reihen-Ende erreicht ist. Das Beispiel soll nur zeigen, dass Aufgabe, die ein Programm leisten muss vorher in einzelne Schritte zerlegt werden soll.

Literatur über Computer bezieht sich meistens auf Eigenschaften und Handhabung von Programmen sowie auf Leistung der Hardware. Was einen Computer befähigt Programme zu verarbeiten und wie Programme aufgebaut sind ist Inhalt dieses Beitrags.


Hardware

Mikrocontroller sind Computer die vollständig auf einem Siliziumscheibchen (Chip) integriert sind und überwiegend für Steuerungen aber auch für Applikationen wie Datalogger oder Wetterstationen eingesetzt werden. Prinzipiell unterscheiden sie sich jedoch nicht von PC oder Großcomputer. An Mikrocontroller lassem sich  die Grundlagen jedoch einfacher darzustellen.



Grundlage eines Computers ist der Schalter (Bild 3). Jeder kennt einen Lichtschalter. Dieser hat die Funktion einen Stromkreis zu schließen und den Zustand halten (speichern) bist er wieder betätigt wird.

Es ist oft wünschenswert einen Schalter nicht mechanisch sondern elektrisch zu Aktivieren. Die ersten Produkte dazu gab es schon vor mehr als 100 Jahren. Das Relais. Man schickt Strom durch eine Spule. Das dadurch entstehende Magnetfeld zog eine Metallzunge an die den Kontakt schloss. Relais werden auch Heute noch vielfach in industriellen Produkten eingesetzt.

Ohne Mechanik kommt die Elektronikröhre aus. Sie verstärkt ein Signal und ermöglicht dadurch die Schalfunktion. Entsprechendes gilt für den auf Halbleiterbasis arbeitenden Transistor. Transistoren werden inzwischen in großer Zahl (bis zu mehreren Milliarden) auf einem Silizium-Chip integriert.
Relais und Elektronikröhren spielten in der Computertechnik nur am Anfang eine Rolle. Röhren und Transistoren können Signale verstärken was z. B. den Bau von Verstärker, Rundfunksender und –empfänger ermöglichte.

Die wichtigsten Schaltungen sind die logische Verknüpfungen zweier oder mehrerer Signal zur UND- (englisch AND) und ODER- Funktion  (englisch OR). Bild 4 zeigt beiden Bausteintypen in symbolischer Darstellung. Praktisch war es gelegentlich auch nützlich invertierte Signalausgänge herauszuführen (NAND und NOR). Am Symbolausgang markierte dies ein Punkt.



Wie Transistoren zum Speichern des Schaltzustands zu bewegen sind zeigt Bild 4. Durch gegenseitige Rückkopplung erreicht man, dass die beiden Ausgänge (Q und Q-quer) immer unterschiedliche Signale aufweisen, NULL und EINS bzw. 0 und 1, die sich durch entsprechende Eingangssignale kippen lassen. Diese Schaltung nennt man Flip-Flop. Die symbolische Darstellung zeigt ebenfalls Bild 4. Durch eine Schaltungserweiterung kann man ein Flip-Flop auch zum Schwingen bringen. So einen Generator erzeugt Rechtecksignale. Um stabilere Frequenzen zu erzeugen  eignet sich besser eine Transistorschaltung mit einem Quarz. Ein Taktgenerator ist das Herz des Computers. Er bestimmt die Verarbeitungsgeschwindigkeit und den Ablauf der internen Komponenten. Der Taktgenerator ist integriert, lediglich der Quarz wird extern angeschlossen.

Anfang der 60 Jahren wurden hunderte Halbleiterbausteine mit den verschiedensten Eigenschaften entwickelt. Die bekanntesten ist die 74xxx-Serie. Außer den Logik-Bausteinen und Flip-Flops gibt es viele Schaltungsvarienten wie Arithmetikeinheiten, Speicher, Zähler, Multiplexe und Demultiplexer und viele andere mehr. Damit wurden Maschinensteuerungen aber auch die ersten Groß- und Kleincomputer entwickelt.



Da die 74XXX-Serie (auch TTL genannt) die Vorläufer der Mikrocontroller waren und damit auch solche aufgebaut wurden, sei noch kurz darauf eingegangen. In Bild 5 sind zwei TTL-Bausteine dargestellt der 74HC00 enthält 4 NAND-Schaltungen. Über dem Symbol die Abbildung des Bausteins in zwei Bausteinformen. „HC“ im Nahmen bedeutet HIGH CMOS, eine schnellere Variante der CMOS Technologie.

Daneben, der 74HC74 enthält zwei Flip-Flops. Außer den zwei Ein- und Ausgängen gibt es noch einen Lösch- (Clear-) und Setz-Anschluss (PR\ = Pre Set). So kann man den Inhalt unabhängig vom momentanen Zustand löschen oder setzen. Die Eingänge sind mit Takt (Clock) und Daten (Data) bezeichnet. Mit dem Takt-Signal wird der Signalpegel am Data-Eingang übernommen.




Bild 6 zeigt den 74HC193, ein 4 bit Vorwärts und Rückwärts-Binär-Zähler. Die vier Flip-Flops können auch gleichzeitig mit einem 4-Bit-Wort geladen oder gelöscht wer-den. Durch die zwei Ausgänge für den Über- oder Unterlauf  sind 74HC193 beliebig hintereinander zu schalten. Übrigens der 74HC192 hat gleiche Eigenschaften, nur zählt er bis 10 statt der 74HC193, der bis 16 zählt



Zuletzt noch ein etwas komplexeres Beispiel. Der 74HC138 ist eine 3 zu 8 Multiplexer (Bild 7). Das bedeutet 3 Signaleingänge adressieren 8 Ausgänge. Das Eingangssignal wird auf immer auf den Ausgang durchgeleitet, der durch die Signaleingänge adressiert ist.



In Computer spielen Register eine große Rolle, beispielsweise für die Ein-/Ausgabe. Deshalb zeigt Bild 8 ein bidirektionales 8-bit-Register das mit dem 74HC245 realisiert ist.

Mit zunehmender Integrationsdichte brachte man einen Computerkern auf einem Chip. Diese Bausteine nannte man Mikroprozessoren. Mikroprozessoren benötigen noch externe Bausteine, wie Speicher und Taktgeneratoren. Der englische Begriff Controller bedeutet nicht Kontrollieren sondern Steuern.
Daten werden meistens paarweise übertragen. Dabei ist die kleinste Einheit einer Verbindung ein bit. Damit sind die Zustände 0 oder 1 zu übertragen. Mit vier parallelen Leitungen lassen sie die Zahlen 0 bis 16 darstellen.

0000 = 0
0001 = 1
0010 = 2
0011 = 3
.......
1111 = 15 (0 ist auch eine Zahl)

8 bit parallel erlauben 256 Zeichen. Damit sind Zahlen oder das Alphabet oder andere Dinge darstellbar. Die Datenbreite von 8 bit nennt man Byte, die Einheit byte. Die ersten Mikrocontroller verarbeiteten 4 bit parallel. Diese wurden hauptsächlich in Quarzuhren und Taschenrechnern eingesetzt.
Nun die internen Funktionen eines Mikrocontrollers.



Reiht man Flip-Flops in Serie kann man damit einen Zähler realisieren. Die Flop-Flops werden getaktet und bei jedem Takt übernimmt das folgende Flip-Flop den Schaltzustand des Vorangegangenen. Die parallelen Ausgänge aller Flip-Flops ergeben dann binäre Zahlen, wie sie rechts des Zählers in Bild 9 dargestellt ist. Da die Digitaltechnik nur die Zustände AUS und EIN bzw. 0 und 1 kennt werden alle Daten (Ziffern und Buchstaben) zweiwertig (binär) dargestellt. Der Querstrich über einem Signalnamen bedeutet dass das Signal negiert ist. Auf der rechten Bildseite ist das Funktions-Diagramm des Bausteins abgebildet.

Der Mensch rechnet normalerweise im Zehnersystem das sich vermutlich wegen der zehn Finger entwickelt hat. Man kann jedoch Zahlensysteme auf Basis jeder Zahl bilden. Für die Computertechnik ist das System auf der Basis zwei, das Binär-System, wegen dem Aufbau auf Schaltern ideal.
Inzwischen gibt es Verarbeitungsbreiten mit 4 bit und 8, 16, 32, 64, bit. 8 bit hat die Einheit byte;  also 1, 2, 4, 8 und 16 byte. Unabhängig von der Bit-Zahl spricht man auch von Worten. Je mehr Byte gleichzeitig verarbeitet werden, umso einfacher und schneller ist es größere Zahlen und Datenmengen zu verarbeiten. Die Chipgrößen wurden dadurch immer größer und teurer. Mit der Zeit gelang es die Strukturen auf dem Silizium zu verkleinern so dass immer größere Verarbeitungsbreiten wirtschaftlich zu fertigen waren. Große Zahlen lassen sich auch mit 4-bit-Controller verarbeiten, Die Programme sind jedoch sehr viel länger was entsprechend mehr Rechenzeit und Speicherplatz erfordert. Spielt Rechenzeit und Speicherplatz eine untergeordnete Rolle, wie zum Beispiel beim Taschenrechner oder Quarzuhren, so kann man auch mit 4 bit Controllern nahezu alles berechnen.

Um binäre Daten in großen Mengen Speichern zu können hat man viele 1000 modifizierte Flip-Flops zu in rechteckigen Feldern (Arrays) angeordnet. Auf der linken Seite des Arrays (in 9 rechts) führt die aktuelle Zahl des Zählers in das das Array hinein und adressiert genau ein Wort. Auf der unteren Seite des Arrays lieg ein Wort das in die adressierte Speicherzelle abgelegt werden solle  oder aus im auszulesen ist. Es gibt  Speicher die sowohl Daten, Befehle als auch Programme, die den inneren Funktionsablauf des Controllers steuern, enthalten. 

Der steigende Leistungshunger an solche Systeme führte zu mehr Geschwindigkeit, Speicherplatz, Verarbeitungsbreite usw.. Man denke nur was Programme die inzwischen in Handys oder Digitalkameras arbeiten. In machen Autos gibt es inzwischen mehr als 50 Controller.

Die ersten leistungsfähigeren 8-bit- Mikrocontroller brachten Intel Ende  der 70er Jahren mit dem 8051 und Motorola mit dem 6800 mit heraus. Zusätzliche Schaltungserweiterungen sind für viele Anwendungen nützlich. Zähler, Speicher und serielle Schnittstellen. Sie wurden deshalb schon in die ersten Controllern  mit übernommen.



Den generellen Aufbau eines Mikrocomputers  zeigt Bild 10. Es gibt einen Befehls- und Datenspeicher, eine Einheit für die Ein- und Ausgabe, das Rechenwerk und das Steuerwerk mit der Programmablaufsteuerung.

Was aus dem Bild nicht hervor geht sind Register (Bild 8). Speicher um Daten für spezielle Aktionen abzulegen bzw. abzuholen. Beispielsweise gibt es in der Rechen- und der Ein-Ausgabeeinheit einzelne Register um Ergebnisse zwischenzuspeichern. Es gibt auch für die Software unsichtbare Register um unterschiedliche Signallaufzeiten der verschiedenen Signale zu synchronisieren. Dies ist auch erforderlich beim Auslesen von Speichern wenn einzelne, parallel verarbeitete bits, wegen unterschiedlicher Signallaufzeiten nicht ganz  genau gleichzeitig erscheinen. Der Maschinentakt sorgt dann dafür, dass alle Signale gleichzeitig in einem Register verfügbar sind.

Damit ein Computer Daten verarbeiten kann benötigt er ein Programm. Ein Programm besteht aus Befehlen. Es gibt meist über hundert verschiedene Befehlstypen die sich in einige Klassen unterteilen lassen. Transportbefehle sorgen dafür, dass Daten von der Eingabe zum Datenspeichern oder zur Recheneinheit hin und zurück transportiert werden. Es gibt die Arithmetik- und Logikbefehle (die Rechenoperationen + - / und *, AND, OR, >, <, =, Shift) sowie Befehle für den Programmablauf. Shiftbefehle (Schiebebefehle) verschieben den Inhalt eines Registers nach einem höheren oder niederen Wert (mathematisch ist das eine Multiplikation bzw. Division einer Binärzahl). Dazu später mehr. Eine Befehlsklasse sind Programmsteuerbefehle. Sie können den Inhalt des Befehlszählers verändern und damit den sequenzielle Programmablauf unterbrechen. Das leisten die Sprungbefehle. Der Programmablauf fährt in diesen Fällen nicht mit dem nächsten Befehl sondern an einer anderen Stelle im Programm fort. Unbedingte Sprungbefehle können beispielsweise für andere Zwecke belegte Speicherbereiche überspringen. Bedingte Sprungbefehle werden von bestimmten Ereignissen, z. B. dem Ergebnis einer Rechenoperation oder einem veränderten Eingangssignal ausgelöst.

Zudem gibt es die Sprünge in ein Unterprogramm und die Sprünge die von einem Interrupt ausgelöst werden. Der Software-Abschnitt geht ausführlicher darauf ein. Die Transport- und einige arithmetischen Befehle bestehen aus zwei Teilen. Dem Operations- und dem Adressteil. Der Operationsteil sagt was zu tun ist und der Adressteil verweist auf eine Speicheradresse, ein Register oder er enthält eine  Konstante. Adressteile können auch zwei Adressen beinhalten. Es gibt Befehle ohne Adressteil die sich nicht auf Speicher oder Register beziehen. Details beschreibt der SoftwareAbschnitt.

Nach dem Start eines Programms beginnt der Befehlszähler hochzuzählen, Er adressiert jeweils einen Befehl im Programmspeicher, liest ihn aus und führt ihn mit Hilfe der Programmablaufsteuerung aus. Zwangsläufig ergibt sich daraus, dass die Lösung von Aufgaben durch Befehle in einer aufeinander folgenden Reihe ausgeführt werden.

Befehle und Daten sind jeweils durch binäre Ausdrücke dargestellt. Um sich die mehr als 100 verschiedenen Befehle leicht merken zu können bezeichnet man den Befehls-Code durch textliche Kurzbezeichnungen. Beispielsweise MUL, DIV, ADD und SUB für Arithmetik-, OR, AND für Logik- Befehle, MOV für Transportbefehle usw. Mit diesen Bezeichnungen kann ein Programm geschrieben werde. Ein besonderes Programm (Assembler) übersetzt dieses dann in die internen erforderlichen Bitmuster. Dabei wird das Programm auf Schreib- und Logikfehler geprüft. Da die Bezeichnungen je nach Hersteller- oder Controller-Typ abweichen sind  jeweils angepasste Assembler erforderlich.

Der Software-Abschnitt geht ausführlicher auf dieses Thema ein. Von Anfang an integrierte man für häufig benötigte Funktionen zusätzliche Schaltungen auf den Computer Chip. Damit spart man externe Bauelemente. Das waren zuerst Zähler/Zeitgeber und eine serielle Schnittstelle. Im Laufe der Zeit stiegen die Anforderungen und es kamen immer mehr Schaltungskomponenten dazu. Bild 11 zeigt ein Beispiel.



weiter: Teil 2


Elektronik-Labor  Literatur  Projekte  Lernpakete  Basiswissen