Ein Buch von Codes & Logik

Page 1

S A 0

!

C

Q1 A 3 ND

Q2

F

mo nr

A 4 ND

0 xF

A

O ML IT HT ON M

S

x0

A

r0

S

nl

!

B

mo

S

S

!

A

ry

A

Ad

S

mo

B

S

Me

S

A

C

B

r0

S

C

B

CH

!

! S

A

C

Ad

S

!

B

N BE R O ST IT TE ON M

S

S

!

A

C

B

S

!

!

t bi 0 8 21 x 43 6 65 25 7

B

S

A

C

B

S

S

S A 1

C !

P e AL or c

C

D

A 2 ND

A 1 ND

R

S B 1

D

cl

k

S A 1

1

1 S A 1

1

S B 0

S B 1

ADD

1

1 S A 0

1

ASCII CODE Schalter SA SB S C SD 1or0 1or0 1or0 1or0 SE 1or

D DFF C Q

Ein Buch von Codes & Logik 1

S A 0

1

S B 0

0

t3

t2

t1

H

1

0

1

0

1

0

1

t7

t6

t5

t4

clk

A SF S G LP 0 1or0 1or 0

cl

0

1

0

1

Ct

re

In Re stru gi ct st io er n re gi st er Ct 1x rl 8 cl

k

re

0

Co

rl

Re

gi

gi

st

st

er

er

8x

s

8

cl

k

Me Re mory gi st Add er re re ss gi cl st k er Ct 1x rl 8 ct cl

k

al

u8

Ct

rl

k

rl

Ct

L

AD

R

cl

k

_u

ni

rl

25 6 76 x 8 54 32 bit 10 Me mo ry Ad r 00 0

t8 cl

k_

OT*: N * _ c i _log ) = 1 0 ( T O N 0->1 | T(1) = 0 O N | 0 1-> *OR* : _ c i g o l _ ,0) = 0 0 ( R O | 00 -> 0 ) = 1 1 , 0 ( R O 01 -> 1 | (1,0) = 1 R O | 1 10 -> ,1) = 1 1 ( R O | 11 -> 1 D*: N A * _ c _logi (0,0) = D N A | 00 -> 0 ,1) = 0 ( D N A 01 -> 0 | (1,0) = D N A | 10 -> 0 ,1) = 1 ( D N A 11 -> 1 | DA

TA

BU

S

BU

S

cl

cl

Pr

k

Ad

B 0 B 1 B 2

0

1

2

3

4

5

6

7

c

8 co

t

og

sr

k

r

25

Ct

5

cl

k

Ct

St

co

rl

ac

un

k

te

Po

r8

un

rl

in

te

ra

te

m

r8

Co

un

te

r

r

0 0 0 1

Jurij Kostasenko


Prolog Dieses Buch ist ein besonderes Buch. Dieses Buch ist für Menschen geschrieben, die schon immer wissen und verstehen wollten, wie Logik Computer und das digitale Zeitalter entstehen lassen konnte. Logik ist eine universelle Sprache, die Menschen in sich selbst tragen ohne diese vielleicht wahrzunehmen. Logik und die Codes der Logik sind damit das zentrale Thema in diesem Buch. In diesem Buch wird Schritt für Schritt dargestellt, wie die digitale Logik aufgebaut ist und wie mit Logik Symbole und Codes entstehen können. Diese Symbole und Codes, aus denen auch dieses Buch besteht, sind ebenso ein Thema in diesem Buch. Aus diesen elementaren Bausteinen wird in diesem Buch ein kleiner Computer aus digitaler Logik gebaut. In diesem Buch wird auch gezeigt, wie ein solcher Computer von Grund auf programmiert wird. In diesem Buch wird auch dargestellt, wie eine so genannte Programmiersprache für einen Computer mit Logik beschrieben wird und wie ein solcher Computer mit seiner Programmiersprache programmiert wird. Dazu wird in diesem Buch ein kleiner Assembler und eine kleine allgemeine Programmiersprache "AL" im Source Code präsentiert und mit vielen Beispielen gezeigt, wie mit diesen Programmen der vorgestellte kleine Computer programmiert und simuliert wird. Die Simulation und die Verifikation eines Computers sind weitere interessante Themen in diesem Buch. Dieses Buch ist mit der Idee "Learning by doing" entstanden. Alle Source Codes und Programme die in diesem Buch vorgestellt werden, können von jedem Menschen nachvollzogen und selbst ausprobiert werden. Alles was dazu notwendig ist, ist auch in diesem Buch komplett enthalten und beschrieben. Hardware und Software sind die Bestandteile jedes Computers. In diesem Buch wird auch gezeigt, was der Unterschied zwischen der Hardware und Software ist, und es wird mit vielen Beispielen vorgeführt wie Hardware aus einer Software entstehen kann. Dieses Buch soll ein Leitfaden sein um Logik zu verstehen, und ein besseres Verständnis für die digitale Welt der Computer zu entwickeln. Die Source Codes und Programme in diesem Buch wurden nur speziell für dieses Buch geschrieben und enthalten viele Erfahrungen aus realen Projekten. Dieses Buch kann aber auch dazu dienen, um ein Selbststudium auf dem Gebiet der digitalen Logik, der formalen Sprachen, der Software und Hardware Beschreibung, der digitalen logischen Simulation und der digitalen logischen Synthese durchzuführen. Dieses Buch enthält dazu viele detaillierte Beispiele mit vielen Beschreibungen der Software, die für diese Beispiele verwendet wurde. Jede verwendete Software in diesem Buch ist Open Source und kann einfach unter den angegebenen "WWW-Links" (Quellen) heruntergeladen werden. Mit der beschriebenen Software, lassen sich alle Codes, die in diesem Buch beschrieben werden, bis ins kleinste Detail verstehen und nachvollziehen. Was ist Logik? Diese Antwort findet der interessierte Leser in diesem Buch.

Ein Buch von Codes & Logik 1 Wie funktioniert eigentlich Logik? 1.1 Formale-Sprachen und ihre Überprüfbarkeit 1.2 Digitale Logik, eine kleine Einführung 1.3 Digitale Symbole und digitale Codes 1.4 Computer Codes 1.5 Universal Codes der Computer 2 Codes von Codes 2.1 Code Umwandlung 2.2 Logische Gatter


2.3 Logische Speicher 2.4 Logische Synthese 2.5 Verilog 3 Zeitgesteuerte Logik. 3.1 Logik Zähler Beschreibung in Verilog 3.2 Logik Periode 3.3 Verilog Zähler 3.4 Verilog als Sprache für Simulation 4 Codierer und De-Codierer 4.1 Codierer mit Verilog 4.2 De-Codierer mit Verilog 5 Logik Codes beschreiben Computer 5.1 ALP: eng. A Logical Processor 5.2 ALP Architektur 5.3 ALP Module 5.4 ALP Befehlssatz 5.5 ALP Verilog Code 6 Verifikation von ALP 6.1 Logik überprüft Logik 6.2 Das erste ALP Programm 6.3 ALP Assembler 6.3.1 HTML/SVG mit Verilog 6.3.2 HTML Monitor 6.4 AL: ALP Language 6.5 Definition der AL Programmiersprache 7 Selbst-Überprüfung von ALP 7.1 Schleife als Hardware 7.2 Verifikation von Programmen 7.3 Programme erzeugen Programme 8 Validierung und Verifikation

Ein Buch von Codes & Logik 888888888888888888888888888888888888888888888888888888888888888

Wie funktioniert eigentlich Logik? Diese einfache Frage lässt sich nicht so einfach beantworten. Eine Antwort auf diese Frage zu finden, ist ein Versucht dieses Buches. In diesem Werk werden die Grundprinzipien der Logik und der Codes untersucht und mit nachvollziehbaren Beispielen aufgezeigt wie Logik an sich funktioniert. In diesem Buch wird auch ein kleiner Computer vorgestellt, erklärt und mit wenigen "Codezeilen" nachvollziehbar demonstriert, wie Computer selbst aus Codes und Logik entstehen und wie sie funktionieren. Die "Codes der Computer", die auch als Programmiersprachen bezeichnet werden, werden in diesem Buch beschrieben und mit Beispielen demonstriert. Mit Hilfe dieser "Computer Codes" wird im Verlauf des Buches ein kleiner universeller Computer entworfen und mittels Codes und Logik programmiert und simuliert. Wofür steht dieses Wort Logik überhaupt? Wenn man das Wort Logik in einem Wörterbuch wie zum Beispiel in einem alten englischen Wörterbuch "Merriam Webster" sucht, ☛ Merriam Webster : � https://www.merriam-webster.com/dictionary/logic � so findet man dort einen Eintrag, den man etwa so in die deutsche Sprache übersetzen könnte:


Logik ist eine Wissenschaft, die sich mit Prinzipien der Nachvollziehbarkeit von Schlussfolgerungen und Beweisen befasst. Logik ist eine Wissenschaft von formalen Prinzipien der Plausibilität. Logik, eine Wissenschaft der formalen Prinzipien des Denkens. Hier stellt sich jedoch die Frage, was sind diese "formalen Prinzipien", und wie können diese nachvollziehbar bewiesen werden? Logik ist nach dieser Beschreibung eine Wissenschaft, doch die Wissenschaft setzt Logik selbst voraus um etwas nachvollziehbar zu erklären. Ist Logik eine Wissenschaft die sich selbst erklären kann? Ist Logik damit nicht die Grundlage jeder Wissenschaft? Der Ursprung bzw. die Bedeutung des Wortes Logik, lässt sich aus der Alt-Griechischen Sprache erschließen. Wenn man z.B. im dem "Digitalen Wörterbuch der Deutschen Sprache" (DWDS) nachliest, ☛ die Logik : � https://www.dwds.de/wb/Logik � so ist die Herkunft des Wortes Logik etwa so beschrieben: Das Wort "die Logik" findet nur im Singular Verwendung, d.h. es gibt damit keine Mehrzahl des Wortes Logik. Viele "Logiken" kann es damit von der Definition des Wortes Logik nicht geben. Das altgriechische Wort mit Buchstaben der deutschen Sprache beschrieben lautet: "logike" oder "logikos" Das Wort "logikos" soll die Bedeutung haben: "das Wort, die Vernunft, das Denken betreffend". Den Menschen im alten Griechenland war bewusst, dass die Bedeutung des Wortes Logik eng mit dem Wort (Wörter) der Vernunft und dem Denken verknüpft sind. Das Wort, die Vernunft und das Denken haben damit eine wichtige Bedeutung für die Logik. Die Grundlage für jede Kommunikation bzw. den Austausch von Gedanken zwischen Menschen, ist die "Natürliche-Sprache". Als Natürliche-Sprache sind die Sprache und Schrift zu verstehen, die von Menschen für ihre Verständigung in Wort und Schreibschrift Verwendung finden. Dieses Buch ist in der natürlichen Sprache Deutsch mit Buchstaben und Sätzen der deutschen Sprache geschrieben. Die Natürliche-Sprache wird von Menschen einfach durch den Gebrauch der Sprache in seiner Umgebung erlernt, ohne dass wir uns selbst bewusst sind, oder dieses nachvollziehbar erklären können, wie der Lernvorgang einer Natürlichen-Sprache funktioniert. Wenn die Wissenschaft der Logik sich mit formalen Prinzipien der Nachvollziehbarkeit befasst, so kann das Lernen einer Natürlichen-Sprache nicht von dieser Wissenschaft erfasst werden, denn die Natürliche Sprache ist die Voraussetzung, dass Menschen in die Lage versetzt z.B. dieses Buch lesen zu können. Diese Erkenntnis oder Feststellung lässt die Schlussfolgerung zu, dass neben einer Natürlichen-Sprache eine "Formale-Sprache" mit Hilfe der Natürlichen-Sprache definiert werden kann, die es ermöglichen soll, eine Nachvollziehbarkeit innerhalb dieser "Formalen-Sprache" zu beschreiben.

Formale-Sprachen und ihre Überprüfbarkeit Überprüfbarkeit wird auch als Verifikation bezeichnet. Was kann man sich darunter vorstellen? Die theoretischen Grundlagen der Formalen-Sprachen sind durchaus interessant zu studieren, und Sprachwissenschaftler wie z.B. Noam Chomsky, haben eine ganze Hierarchie der Formalen-Sprachen definiert. In diesem Buch soll diese


Theorie nur am Rande erwähnt werden. Überprüfbarkeit bzw. Verifikation, diese Begriffe sind Leitgedanken der Logik selbst. Bedeuten diese Begriffe, dann eine "Formale Sprache" zu beschreiben, die es ermöglichen soll sich selbst zu erklären? Geht sowas überhaupt? Wie kann sowas funktionieren? Überprüfbarkeit ist eines der zentralen Themen in diesem Buch. Am Ende dieses Werkes wird an einem kleinen Computer demonstriert werden, wie eine Überprüfbarkeit in einer "Formalen Sprache" realisiert werden kann.

Digitale Logik, eine kleine Einführung Die Einfachheit der digitalen Logik für sich genommen ist faszinierend und interessant. Ohne digitale Logik gäbe es keine Computer. Und ohne Computer gäbe es kein Internet. Das Wort Internet hat sich in der Natürlichen-Sprache bei dem meisten Menschen durchgesetzt. Das Wort Internet, "als internationales Netz", ist sehr vieldeutig. Die Idee "Internet" ist jedoch in jedem "Link" einer Internet-Seite verankert. "WWW" (z.B. www.dwds.de) steht für "World Wide Web", also für eine Idee eine "Welt-Weite-Bibliothek" zu schaffen. WWW hat sogar das "Internetzeitalter" definiert und für die meisten Menschen ist dieses Internet so vertraut, wie ihre eigene Sprache, und für viele Menschen ist die Welt ohne Internet nicht mehr denkbar. Nur wenige Menschen nehmen es zur Kenntnis, dass das Internet nur eine reine Konstruktion der Logik ist, und sehr viele Rechenmaschinen (Computer) werden weltweit verwendet, um mit nachvollziehbarer Ausführung von Rechenoperationen dieses WWW in seiner Form zu realisieren. Diese unzähligen Rechenmaschinen (Computer) führen ununterbrochen auf der gesamten Welt eine Unzahl an Rechenoperationen in der Sekunde durch. Sie sind Tag und Nacht in Betrieb und ermöglichen einen schnellen Datenaustausch zwischen allen Benutzern auf dem gesamten Globus. Dieses WWW ist somit eine gigantische digitale Bibliothek der Menschen. Doch was bedeutet das Wort digital? Das Wort "digital" stammt aus der englischen Sprache. Wenn man das Wort "digit" im dem Merriam Webster Wörterbuch sucht, so findet man eine interessante Definition. "digit": Ist jede arabische Ziffer/Zahl/Nummer, also die Symbole (1,2,3,4,5,6,7,8,9,0) "digit" sind vereinfacht betrachtet Symbole. Und das Wort "digital" wird in diesem Wörterbuch an einer Stelle so definiert: digital: "... in Bezug auf die Finger ...". Was haben nun Finger und Symbole für eine Beziehung? Diese Beziehung ist einfach verständlich zu erklären. Menschen haben 10 Finger und als Kind benutzen die meisten Menschen unbewusst oder bewusst ihre Finger um etwas abzuzählen, wie z.B. die Anzahl der Äpfel in einem Obstkorb. Kinder erlernen das Zählen mit Fingern intuitiv das Zählen mit Fingern bis zehn. Vielen Menschen rechnen mit dieser Methode der zehn Finger ohne vielleicht sich bewusst zu sein, dass dieses Ziffer/Zahl/Nummer System nur damit begründet werden kann, dass Menschen nun mal zehn Finger haben, die wir dazu verwenden um etwas zu zählen oder um uns eine Zahl zu merken. Spinnen würden, scherzhaft gesagt, wahrscheinlich ein Zahlensystem mit nur 8 Symbolen verwenden, wenn sie eine Zählung definieren würden. Dieses Beispiel soll verdeutlichen, dass Zahlen in unserer natürlichen Sprache bereits Symbole


sind, die eine formale Anordnung auf natürlicher Weise (mit Fingern) festlegen. Die Schriftsprache verwendet statt der zehn Finger einfach zehn Symbole. Das sogenannte Dezimalsystem kommt mit zehn Symbolen aus, um jede beliebige Zahl darzustellen. Doch warum brauchen wir zehn Symbole um Zahlen zu beschreiben? Und was sind eigentlich Symbole? Das Wort Symbol ist wie auch wie das Wort Logik aus der Alt-Griechischen Sprache entnommen und bedeutet nach dem "digitalen Wörterbuch der deutschen Sprache" (DWDS) Bedeutung "Symbol": Merkmal oder Kennzeichen. Genau betrachtet ist jedes Zeichen (Buchstabe oder Zahl) einer Sprache ein Symbol. Was ein Zeichen oder Symbol bedeutet legt der Mensch fest, der ein bestimmtes Symbol verwendet. Ein Alphabet einer Sprache definiert eine bestimmte Anzahl von Symbolen (Buchstaben). Das englische Alphabet definiert z.B. 26 Buchstaben. Mit diesen 26 Symbolen kann die gesamte englische Sprache beschrieben werden. Doch warum werden gerade 26 Buchstaben gebraucht? Wäre es nicht sinnvoll eine Anzahl von Symbolen zu definieren, die Menschen mit ihren zehn Fingern besser abzählen können? Warum reichen nicht zehn Symbole oder zwanzig Symbole in der natürlichen Sprache aus? Diese Frage lässt sich nicht nachvollziehbar und damit auch nicht logisch heute klären. Eine interessante Frage bleibt jedoch, was ist die minimale Anzahl von Symbolen, die man braucht, um ein Merkmal zu beschreiben? Mit dieser Frage ist die Überleitung zum digitalen System, Computer, gegeben. Man benötigt nur zwei unterschiedliche Symbole, um jedes beliebige Merkmal zu definieren. Eine Beschreibung, die nur mit zwei Symbolen auskommt, wird als digital bezeichnet. Ein digitales System, z.B. ein Computer, kennt nur zwei unterschiedliche Symbole. Diesen zwei Symbolen kann man jeweils ein Merkmal zuordnen, z.B. hell oder dunkel, an oder aus, ja oder nein, plus oder minus, positiv oder negativ, hoch oder tief usw. Wie lässt sich nun "Alles" nur mit zwei Symbolen, beschreiben? Alle Buchstaben, alle Zahlen, alle Bücher, alle Bilder, alle Videos, ja das ganze WWW, soll nur aus zwei Symbolen definiert werden können? Ja, das gesamte Wissen der Menschen, kann nur mit zwei unterschiedlichen Symbolen beschrieben werden. Die Faszination der digitalen Daten ist vielleicht damit zu begründen, dass diese Computer-Daten nur aus zwei Symbolen bestehen.

Digitale Symbole und digitale Codes Mit digitaler Logik lassen sich Computer bauen, die in der Lage sind Rechenoperation durchzuführen. Auch die Beschreibung und die Definition der Computer und ihrer Rechenoperationen lassen sich nur mit zwei Symbolen beschreiben. In diesem Kapitel wird aufgezeigt, wie diese faszinierende Welt der digitalen Symbole funktioniert. Eine digitale Logik benötigt nur zwei Symbole. Man könnte einfach zwei unterschiedliche Buchstaben aus einem Alphabet der englischen Sprache nehmen. Z.B. "H" und "L". Wobei H für ein Merkmal "high" (hoch) und L "low" (niedrig) haben kann. Die Bedeutung der Symbole ist an dieser Stelle nicht so wichtig. Es reicht einfach nur die Unterscheidung zu machen, zwischen zwei unterschiedlichen Zuständen, wie z.B. das Licht ist an oder das Licht ist aus. In der Literatur über digitale Systeme werden die Symbole H und L oft verwendet, durchgesetzt haben sich in den meisten Fällen die Symbole 0 und 1.


Es sei an dieser Stelle angemerkt, dass die Symbole 0 und 1 keine Zahlen bedeuten sollen, sondern nur zwei unterschiedliche Symbole sind. An dieser Stelle könnte man eine erste "Codierung" vornehmen. H = 1 L = 0

Mit diesen zwei Symbolen lässt sich z.b. ein Zustand eines Lichtschalters eindeutig definieren. Meistens wird das Symbol "0" für den Zustand "AUS" definiert und entsprechend "1" für den Zustand "AN". "To Be or Not to Be"? Dieses Zitat von William Shakespeare aus seinem Werk Hamlet definiert genaugenommen auch nur zwei unterschiedliche Zustände "sein" oder "nicht sein". Man könnte diese Frage in der digitalen Logik, so schreiben: 1 or 0 ? In seinem Werk fragt Hamlet natürlich nicht ob ein Schalter an oder ein Schalter aus ist. Für diese philosophische Frage nach der Existenz, existieren viele Möglichkeiten der Interpretation innerhalb der Natürlichen Sprache, an dieser Stelle ist nur die logische Verknüpfung der beiden Symbole 1 und 0 in Betracht zu ziehen. Wenn das Symbol 1 "To be" bedeutet und das Symbol 0 "not to be" bedeutet, so kann man aus dieser Frage die Schlussfolgerung ziehen, dass ein Symbol 1 mit einer Verknüpfung "not" die gleiche Bedeutung hat wie das Symbol 0. Damit kann man das Symbol 0 auch mit "not" 1 umschreiben. Somit ist die erste digital logische Verknüpfung definiert. 1 ist gleich "not" 0 oder NOT 0 = 1

Auch in der natürlichen Sprache wird eine solche Operation sehr oft verwendet. Ein Beispiel für eine solche Aussage wäre: Mach bitte das Licht nicht aus, ich brauche das Licht zum Lesen. Licht "Nicht aus" ist gleichbedeutend mit lass das Licht bitte an. Ein Lichtschalter kennt nur zwei Zustände. Er kann an oder aus sein. Die folgende Abbildung zeigt vereinfacht die möglichen Zustände eines Lichtschalters (Schalter A = SA). Abbildung 1 : Schalter Zustände


SA 0 SA 1

In dieser Abbildung wird ein Schalter vereinfacht mit Kreis und Linien Symbolen "codiert". Eine geschlossene Linie zwischen zwei Kreisen symbolisiert hierbei einen geschlossenen Schalter (SA). Eine unterbrochene Linie zwischen zwei Kreisen symbolisiert hierbei einen offenen Schalter (SA). Diese Zustände werden in der Abbildung mit den Symbolen 0 (für offener Schalter) und 1 (für geschlossenen Schalter) zusätzlich "codiert". Man kann natürlich nur mit einem Lichtschalter das ganze Licht in einem Haus kontrolliert ein und ausschalten. In den meisten Fällen werden aus praktischen Gründen das Licht in einem Haus mit mehr als nur einem Schalter kontrolliert. Wenn man nun zwei einfache Lichtschalter betrachtet, so können diese zwei Lichtschalter nur zwei unterschiedliche Anordnungen haben. Die Lichtschalter können in Reihe oder Nebeneinander (parallel) funktionieren. Ein einfaches Beispiel für die Funktion einer Reihenschaltung wäre ein einfacher Wasserhahn. Jedes Waschbecken im Haushalt hat meistens zwei Hähne. Einen Hahn zum Hände waschen und einen Abstellhahn, der sich meistens unter dem Waschbecken befindet. Um das Wasser fließen zu lassen, müssen beide Hähne geöffnet sein, damit das Wasser fließen kann. Wenn nur eines der Hähne geschlossen wird fließt kein Wasser. Damit ist die Funktion einer Reihenschaltung von Schaltern auch eindeutig beschrieben. In der digitalen Logik wird diese Verknüpfung als eine "AND" Verknüpfung definiert. Für die Anordnung dieser Reihenschaltung bestehend aus zwei Schaltern, gibt es insgesamt vier unterschiedliche Möglichkeiten der Zustände. An dieser Stelle soll ein Begriff "Code" erklärt werden, da dieser bereits mehrfach in der Beschreibung benutzt wurde, ohne genau zu definieren, was eigentliche ein Code ist. Ein Code besteht aus einer Folge von Symbolen, die eine definierte Bedeutung besitzen. Als Beispiel: "01" ist ein Code der Länge 2 mit der Bedeutung z.B. "Zustand 2". Genau genommen ist das Symbol 1 bereits ein Code der Länge 1 mit der Bedeutung (Schalter AN) bei dieser Betrachtung der Code Definition. Mit Hilfe der Code Definition lassen sich nun die vier möglichen Zustände von zwei in Reihe geschalteten Schalter eindeutig nur mit zwei Symbolen beschreiben.


Man kann sich nun ein Wasserrohr mit zwei Schaltern bzw. Verschlüssen vorstellen. Auf der linken Seite des Wasserrohrs soll das Wasser rein fließen, und auf der rechten Seite wieder raus fließen. Das Fließen des Wassers lässt sich mit dem Symbol 1 "codieren". Das Symbol 0 kodiert entsprechend den Zustand, dass kein Wasser fließt. Auch die Zustände der Schalter bzw. der Hähne lassen sich nur mit den beiden Symbolen 1 für Schalter ist "offen" und Symbol 0 Schalter ist "zu", definieren. Die folgende Abbildung zeigt alle vier möglichen Zustände mit den Schaltern SA und SB. Eine offene Linie zwischen zwei Punkten symbolisiert in dieser vereinfachten Abbildung einen Wasserhahn der kein Wasser durchlässt oder einen Schalter der offen steht. Ein offener Schalter oder ein geschlossener Wasserhahn haben bei dieser Betrachtung den gleichen Code "0". Abbildung 2 : Schalter in Reihe

1 1 1

1

SA 1

SB 1

SA 0

SB 1

SA 1

SB 0

SA 0

SB 0

1 0 0

0

Nur wenn beide Schalter geschossen sind (SA = 1 , SB = 1) kann das Wasser durch die Wasserleitung fließen. Werden nun die Codes der Reihenschaltung in einer einfachen Tabelle zusammengefasst so entsteht eine Code-Tabelle der logischen AND Verknüpfung. Codes: AND |SA|SB|Wasser| | | |fluss | |--|--|------| |1 |1 | 1 | |0 |1 | 0 | |1 |0 | 0 | |0 |0 | 0 |

An dieser Stelle sei angemerkt, dass allein mit den zwei logischen Verknüpfungen AND und NOT, alle möglichen Zustände und Operationen eines digitalen Computers beschrieben werden können. Die zweite mögliche Anordnung der zwei Schalter ist die Parallelschaltung. Diese logische Verknüpfung wird als OR Operation bezeichnet. Wobei die


Begriffe Verknüpfung und Operation hierbei synonym, also gleichbedeutend verwendet werden. In einer Parallelschaltung existieren entsprechen zwei parallele Wasserleitungen mit jeweils einem Schalter bzw. Hahn in jeder Leitung. Nur wenn beide Wasserhähne geschlossen werden, fließt kein Wasser. Mit diesem Satz ist auch die Funktion einer Parallelschaltung eindeutig beschrieben. Solche Waschbecken mit zwei Wasserhähnen, existieren bis heute in manchem Haushalt. Üblicherweise kommt aus einem der Wasserhähne kaltes Wasser raus und aus dem anderen Wasserhahn warmes Wasser raus. Die folgende vereinfachte Abbildung zeigt alle möglichen Zustände dieser Parallelschaltung auf. Abbildung 3 : Schalter parallel

SA 1 1

SB 1

1

SA 1 1

SB 0

1

SA 0 1

SB 1

1

SA 0 1

SB 0

0

Werden nun die Codes der Parallelschaltung in einer einfachen Tabelle zusammengefasst so entsteht eine Code-Tabelle der logischen OR Verknüpfung. Codes: OR |SA|SB|Wasser| | | |fluss | |--|--|------| |1 |1 | 1 | |0 |1 | 1 |


|1 |0 | 1 |0 |0 | 0

| |

Damit sind nun alle möglichen Verknüpfungen und Operation der digitalen Logik eindeutig beschrieben und definiert. Man könnte die Codierung der logischen Verknüpfungen formal so beschreiben.

logic 0->1 1->0 logic 00 -> 01 -> 10 -> 11 -> logic 00 -> 01 -> 10 -> 11 ->

NOT: OR: 0 1 1 1 AND: 0 0 0 1

| NOT(0) = 1 | NOT(1) = 0 | | | |

OR(0,0) OR(0,1) OR(1,0) OR(1,1)

| | | |

AND(0,0) AND(0,1) AND(1,0) AND(1,1)

= = = =

0 1 1 1 = = = =

0 0 0 1

Mit dieser formalen Darstellung ist die Funktionsweise der digitalen Logik eindeutig definiert. Das Faszinierende der digitalen Logik ist, dass diese nur zwei Symbole benötigt um jeden möglichen Zustand eindeutig zu codieren. An dieser Stelle wird bewusst nun das Wort "Codieren" bzw. "Codierung" verwendet, damit die Unterscheidung zwischen der Natürlichen Sprache und einer "formalen Sprache" eindeutig gemacht werden kann. Eine formale Sprache kennt somit nur Codes, die Bedeutung der Codes und damit auch die Beschreibung erfolgt allein in der Natürlichen Sprache. Wie lässt sich nun aus einer Codierung von nur zwei Schaltern ein Computer bauen? Wie lassen sich all die Daten im WWW nur mit den Symbolen 0 und 1 beschreiben? Sind digitale Computer und die digitalen Daten, die durch die Computer verarbeitet werden, wirklich nur Symbole von 0 und 1, die nur die Operation AND, OR, NOT ausführen können? Ja, mit nur zwei Symbolen und nur zwei Operationen lässt sich die gesamte digitale Welt definieren. In dem nächsten Kapiteln werden nun systematisch Grundprinzipien der Codes und der Logik betrachtet, die es ermöglichen den Aufbau eines Computers besser zu verstehen. Auch, wenn ein Computer nur aus reinen Codes der Symbole 0 und 1 aufgebaut ist, und damit eine sehr einfache Grundstruktur besitzt, besteht dennoch ein Computer aus einer Vielzahl von solchen digitalen Codes, welche in der Gesamtheit von Menschen nicht mehr überblickt werden kann. Damit eine Nachvollziehbarkeit der Logik gewährleistet werden kann, benötigt die digitale Logik eine Möglichkeit bzw. ein Modell der Überprüfbarkeit bzw. der Verifikation.

Computer Codes Wie im letzten Kapitel beschrieben, bestehen Computer nur aus den Symbolen 0 und 1. Physikalisch betrachtet bestehen Computer aus vielen Schaltern, die nur die Operationen AND, OR, NOT kennen. Ein digitales System kennt nur Codes, also eine Folge von 0 und 1 mit einer definierten Länge.


Wie lässt sich nun ein Zahlensystem mit diesen Codes realisieren? Die digitale Logik kennt keine Zahlen. Jede Zahl wird einfach nur als eine Code Folge von den Symbolen 0 und 1 von Menschen festgelegt. In der digitalen Logik existiert keine Zahl Null. Die 0 ist nur ein Symbol welches einen Zustand z.B. Schalter ist aus definiert. Auch die 1 ist nur ein Symbol welches einen Zustand z.B. Schalter ist an definieren kann. Um Zahlen mit der digitalen Logik codieren zu können, werden somit mindestens zwei "Schalter" benötigt, um eine Null und eine Eins eindeutig codieren zu können. Mit 2 Schaltern lassen sich 4 unterschiedliche Codes realisieren. Die Zuordnung, also die Bedeutung der Codes erfolgt stets durch den Menschen. Die folgende Tabelle zeigt eine mögliche Codierung. |SA|SB|code | |--|--|------| |0 |0 | Null | |0 |1 | Eins | |1 |0 | -Eins| |1 |1 | NIL | undefiniert (not in life)

Eine weitere mögliche Codierung: |SA|SB|code | |--|--|------| |0 |0 | Null | |0 |1 | Eins | |1 |0 | Zwei | |1 |1 | Drei |

Diese zwei einfachen Beispiele sollen nur verdeutlichen, dass in einem Computer nur eine bestimmte Anzahl von möglichen definierten Zuständen realisiert werden kann. Es existieren keine Zahl wie "Null" und auch keine "Unendlichkeit" welche die Wissenschaft der Mathematik für ihre Modellbildung gebraucht. Eine Null und eine Unendlichkeit können in der digitalen Logik nur als Codes einer bestimmten Länge definiert werden. Wie lassen sich nun aus dieser Codierung eine Definition bzw. ein Modell z.B. für die Zahlen der Mathematik darstellen? Die einfache Antwort ist, durch die Verwendung von Code Folgen die der Reihe nach interpretiert werden. So wie Folge von Buchstaben ein Wort definieren und die Folgen von Wörtern einen Satz bilden, lassen sich nun aus nur zwei Symbolen und einer einfachen Codierung jede beliebige Zahl beschreiben. Dieses soll nun an einem kleinen Modell der digitalen Zahlen Codes demonstriert werden. Code Tabelle der digitalen Zahlen: |SA|SB|code | |--|--|------| |0 |0 | NULL | |0 |1 | ONE | |1 |0 | NONE | |1 |1 | INV |

Die Zahl 0 Die Zahl 1 Die Zahl -1 Unendlich

Mit diesen Codes lassen sich nun alle positiven und auch negativen Zahlen in dem Bereich NULL bis INV beschreiben. In der folgenden Tabelle sind ein paar Code Folgen und ihre Anordnung aufgezeigt, um das Prinzip der Code Folgen zu verdeutlichen. |Code |Folge

| decimal | Zahl

|Code |Folge

| decimal | Zahl


|--------------|-----|"00" | 0, NULL |"01" | 1 |"01","00" | 2 |"01","01" | 3 |"01","00","00"| 4 |"01","00","01"| 5 |"01","10","00"| 6 |"01","01","01"| 7 | .............| |"11" | Unendlich

|--------------|-----|"00" | 0, NULL |"10" | -1 |"10","00" | -2 |"10","10" | -3 |"10","00","00"| -4 |"10","00","10"| -5 |"10","10","00"| -6 |"10","10","10"| -7 | .............| |"11" | Unendlich

Ein solches Zahlen-Modell wird als binäres Zahlensystem zur Basis 2 bezeichnet. Ein binäres Zahlen-Modell kennt nur die Zahl 1 und 0. Mittels der NULL wird, wie auch im Dezimalzahlensystem die NULL als Stelle definiert, um eine nächst größere Zahl zu beschreiben. Das Prinzip ist sehr einfach beschrieben. Sind die Symbole für Zahlen alle verwendet, so wird mittels eines Symbols NULL eine neue Stelle bzw. Folge definiert. Das den meisten Menschen vertraute Dezimalsystem nutzt diese Definition, um alle Zahlen zu beschreiben. Ein Beispiel: 1,2,3,4,5,6,7,8,9 ist eine Zahlenfolge im Dezimal-Modell.

Das Symbol 9 ist das letzte Symbol an dieser Stelle. Durch ein Symbol 0 wird nun eine nächste Zahl mit 2 Stellen definiert. ...9, 10,11, ..., 19 ...19, 20,21, ... ,29

Genau betrachtet sind diese Zahlen nur Code Folgen, die Menschen als Zahlen interpretieren. Das binäre Zahlen-Modell kennt nur eine Zahl, demzufolge sind die Code Folgen deutlich länger um Zahlen zu beschreiben. Ein anders Beispiel für Code Folgen ist das DNA-Modell (Desoxyribonukleinsäure). Für das DNA-MODELL könnte man eine folgende digitale Tabelle definieren: Code Tabelle |Code | DNA |Folge | nucleotide bases |------|------------|"00" | A = adenine |"01" | C = cytosine |"10" | G = guanine |"11" | T = thymine

Mit nur zwei Symbolen, lässt sich somit auch die gesamte DNA des Menschen und auch aller anderen Lebewesen, durch die DNA Codes beschreiben. Was diese DNA Codes für eine Bedeutung haben, lässt sich nur durch den Menschen vermuten, denn das DNA-Modell definiert nur Code Folgen und eine Anordnung der Code Folgen wie in der Mathematik, existiert in diesem Modell nicht. Eine DNA ist eine Abfolge der Basen (adenine,cytosine,guanine,thymine). Damit lässt sich jede Folge der DNA als Symbole von 0 und 1 beschreiben. z.B. ATA ATG CGC wäre in einer digitalen Darstellung eine folgende Code Folge: A T A A T G C G C 00 11 00 00 11 10 01 10 01

Was diese Codes in diesem DNA-Modell bedeuten, ist eine pure Frage der Festlegung. In einem DNA-Modell könnten die Codes nur verglichen werden. Was eine bestimmte Code Folge für eine Bedeutung im Organismus eines Lebewesens haben könnte, ist damit nicht eindeutig geklärt.


Z.B. eine Code Folge von 00 11 00 00 11 10 01 10 01 ist mit einer Code Folge 00 11 10 01 10 01 00 11 00 zwar vergleichbar, da diese von der Anzahl der Basen gleich sind, jedoch können die Folge der DNA eine andere Codierung in diesem Modell besitzen. Folgende Codierung der Bedeutung wäre denkbar: 00 11 00 00 11 10 01 10 01 = Protein A 00 11 10 01 10 01 00 11 00 = Protein B

Ein DNA-Modell kann nur die Kombination dieser Code Folgen untersuchen, was diese Code Folgen für eine Bedeutung haben kann nur tabellarisch von Menschen aufgezählt und festgelegt werden. Ob eine bestimmte Code Folge auch die gleiche Funktion im Organismus des Lebewesens haben, ist in diesem Modell nicht zu klären. In den Steuerungen mit digitaler Logik, ist die Code Folgen jedoch sehr entscheidend, eine Code Folgen von 00 11 00 00 11 10 01 10 01 kann in einer Steuerung z.B. bedeuten, Lift nach oben bewegen. Und die Code Folgen: 00 11 10 01 10 01 00 11 00 kann in einer Steuerung z.B. bedeuten, Lift sofort stoppen. Doch auch dieses ist eine reine Festlegung durch den Erfinder der Lift-Steuerung. Auch die zeitliche Abfolge der Code Folgen kann in einer solchen Steuerung eine wichtige Rolle spielen, so können z.B. ein und er selben Code oder eine Code Folge 3 Mal hintereinander aufgeführt eine andre Bedeutung haben. Damit lassen sich bestimmte Code Folgen mehrfach verwenden. z.B. 0011_0011_0011 = öffne Lift Tür (hier wurde der CODE AT drei Mal hintereinander aufgeführt) 0011_0011_0011_0011 = schließe Lift Tür (hier wurde der CODE AT vier Mal hintereinander aufgeführt)

Was lässt sich aus diesen einfachen Betrachtungen der Code Folgen schließen? Zum einen, sind Codes und Code Folgen immer von dem jeweiligen Modell oder auch System abhängig. Zum anderen sind Codes und Code Folgen beliebig definierbar und können unterschiedliche Bedeutungen zugeordnet werden. Code Folgen können in jeder beliebigen Anzahl und Länge definiert werden. Die zeitliche Abfolge von einer bestimmten Code Folge kann eine andere Beschreibung und Bedeutung darstellen. Die zeitliche Abfolge einer Code Folge kann in einem Zeit Diagramm vereinfacht dargestellt werden. Im folgenden Zeitdiagramm ist die digitale Folge 101010101010 als Zeitdiagramm dargestellt. Symbole t1 bis t7 bedeuten hierbei ein Zeitintervall (z.B. 1 Sekunde) und H und L bedeuten, ob eine Linie oben oder unten gezeichnet wird. Abbildung 4 : Zeitdiagramm einer digitalen Code Folge


t1

t2

t3

t4

t5

t6

t7

H L

1

0

1

0

1

0

1

0

1

0

1

0

Ein Zeitdiagramm soll verdeutlichen, das eine Code Folge in einem Computersystem auch zeitabhängig sein können. Dieses bedeutet auch, dass auch ein Computer Modell oder System beliebige Code Folgen nur hintereinander interpretieren und ausführen kann. Genauso wie der Mensch beim Lesen eines einzelnen Zeichens, Buchstaben zum einem Wort zusammenstellen muss, um ein Text zu verstehen, so muss auch ein Computer jede Code Folge einzeln betrachten und einzeln interpretieren. Die Zeit spielt somit eine entscheidende Rolle in einem Computer Modell und auch beim Lesen der Natürlichen Sprache. Doch wie lassen sich nun universelle Computer aus solchen beliebig auftretenden Code Folgen konstruieren? Die einzige logische Antwort ist, durch eine genaue und eindeutige Definition, die von jedem Computer, der die Operationen AND, OR, NOT durchführen kann.

Universal Codes der Computer Im letzten Kapitel wurde aufgezeigt, dass es möglich ist mit nur zwei Schalterzuständen jedes beliebige Modell, wie das Zahlensystem der Mathematik oder das DNA-Modell mittels Code Folgen zu beschreiben. Diese Modelle müssen nicht der Logik genügen, doch mittels digitaler Logik lassen sich beliebige Modelle beschreiben. Auch alle Buchstaben einer natürlichen Sprache lassen sich durch eine Folge von nur zwei Schalterzuständen definieren. International hat sich jedoch eine andere Codierung durchgesetzt. Warum sich gerade ein Code der aus sieben Schalterzuständen besteht durchgesetzt hat, kann aus heutiger sich nicht logisch beantwortet werden. Für ein Verständnis der Funktionsweise von Computern ist jedoch diese Codierung von großer Bedeutung. Mit zwei einfachen Schaltern lassen sich 4 unterschiedliche Zustände einstellen bzw. Codes definieren. Mit drei Schaltern lassen sich 8 unterschiedliche Zustände einstellen bzw. Codes definieren. Mit vier Schaltern lassen sich 16 unterschiedliche Zustände einstellen bzw. Codes definieren. Mit fünf Schaltern lassen sich 32 unterschiedliche Zustände einstellen bzw. Codes definieren. Mit sechs Schaltern lassen sich 64 unterschiedliche Zustände einstellen bzw. Codes definieren. Mit sieben Schaltern lassen sich 128 unterschiedliche Zustände einstellen bzw. Codes definieren. In der folgenden Tabelle sind alle Codes von drei Schaltern als Beispiel aufgeführt. |SA|SB|SC|


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.