Theorie Digitaltechnik

(Hinweis: Dieses Dokument enthält nur Teilgebiete aus der Digitaltechnik und entspricht den Bedürfnissen von IT-Lernenden → M114/M117)

Inhalt

1. Massvorsätze
1.1 SI-Präfixe
1.2 IEC-Präfixe

2. Zahlensysteme
2.1 Das Dezimalsystem
2.2 Das Binärsystem
2.3 Das Hexadezimalsystem
2.4 Die Fortlaufende Division
2.5 Umrechnung Hexadezimal zu Binär
2.6 Die HEX-Tabelle
2.7 Binäres Rechnen und Datenüberlauf
2.8 Das 2-er Komplement - Negative Zahlen im Binärsystem

3. Bit und Byte
3.1 Einführung
3.2 Die Anzahl Bit-Kombinationen ermitteln
3.3 Bitmap-Bilder und Vektorgrafik
3.4 Kombinatorik
3.5 Parallele und serielle Datenübertragung
3.6 Adress- und Datenbus → Speicherberechnung

4. Analog / Digital
4.1 Die Anzeige von Werten in analoger oder digitaler Darstellung
4.2 Die Analog-Digitalwandlung
4.3 Das Abtasttheorem

5. Ein vereinfachtes Computermodell
5.1 Die Bestandteile
5.2 Maschinencode-Beispiel → Zwei Zahlen addieren
5.3 Maschinencode-Beispiel → Einfacher +/- Taschenrechner
5.4 Der Maschinen-Befehlssatz
5.5 Unterschied zu realem Mikroprozessorsystem


1. Massvorsätze

1.1 SI-Präfixe

Mit SI-Präfixe («Système international d’unités») sind Massvorsätze gemeint. Diese wenden wird ganz selbstverständlich auf z.B. Basisgrössen wie Länge in Kilometer «km» oder Masse in Kilogramm «kg» an. Diese Präfixe kommen allerdings auch in der Informatik vor, wie z.B. bei «MB/s» für Megabyte pro Sekunde oder «kb/s» für Kilobit pro Sekunde. Wenn also eine Sache «MegaCool» ist, heisst das, dass sie eine Million Mal «Cooler» ist als nur «Cool».

  • [Y] → Yotta → 1024 → 1'000'000'000'000'000'000'000'000 → Quadrillion
  • [Z] → Zetta → 1021 → 1'000'000'000'000'000'000'000 → Trilliarde
  • [E] → Exa → 1018 → 1'000'000'000'000'000'000 → Trillion
  • [P] → Peta → 1015 → 1'000'000'000'000'000 → Billiarde
  • [T] → Tera → 1012 → 1'000'000'000'000 → Billion
  • [G] → Giga → 109 → 1'000'000'000 → Milliarde
  • [M] → Mega → 106 → 1'000'000 → Million
  • [k] → kilo → 103 → 1'000 → Tausend
  • [-] → 100 → 1 → Eins
  • [m] → milli → 10-3 → 0.001 → Tausendstel
  • [µ] → mikro → 10-6 → 0.000'001 → Millionstel
  • [n] → nano → 10-9 → 0.000'000'001 → Milliardstel
  • [p] → piko → 10-12 → 0.000'000'000'001 → Billionstel
  • [f] → femto → 10-15 → 0.000'000'000'000'001 → Billiardstel
  • [a] → atto → 10-18 → 0.000'000'000'000'000'001 → Trillionstel

Beispiele:

  • 1km = 1‘000 Meter
  • 1kg =1‘000 Gramm
  • 1kb = 1‘000 Bit (kleines b!!!)
  • 1MB = 1‘000‘000 Byte (grosses B!!)
  • Übrigens: 1Byte entspricht 8 Bit (1B = 8b)

1.2 IEC-Präfixe

Die folgenden IEC-Präfixe «International Electrotechnical Commission» werden für Kapazitätsangaben bei Speichermedien verwendet. Grund: Für Datenspeicher mit binärer Adressierung ergeben sich Speicherkapazitäten von 2n Byte, d. h. Zweierpotenzen.

  • [Yi] → Yobi → 280 → 1'208'925'819'614'629'174'706.176
  • [Zi] → Zebi → 270 → 1'180'591'620'717'411'303'424
  • [Ei] → Exbi → 260 → 1'152'921'504'606'846'976
  • [Pi] → Pebi → 250 → 1'125'899'906'842'624
  • [Ti] → Tebi → 240 → 1'099'511'627'776
  • [Gi] → Gibi → 230 → 1'073'741.824
  • [Mi] → Mebi → 220 → 1'048'576
  • [ki] → Kibi → 210 → 1'024

Beispiele:

  • 512 MiB (Mebibyte) = 512 * 220 Byte = 536'870'912 Byte
  • 256 kib (Kibibit) = 256 * 210 Bit = 262'144 Bit
  • Übrigens: 1Byte entspricht 8 Bit (1B = 8b)

2. Zahlensysteme

Im Folgenden werden die für Informatiker wichtigsten positionellen bzw. Stellenwert-Zahlensysteme behandelt: 2-er, 10-er und 16-er System

2.1 Das Dezimalsystem

Damit eine Dezimalzahl von einer Binär- oder Hexadezimalzahl unterschieden werden kann, soll sie am Ende mit einer tiefergestellten «D» (Tiefstellung/Subskript) gekennzeichnet werden. Bsp.: 5238D, 1000D

2.2 Das Binärsystem

Damit eine Binärzahl von einer Dezimal- oder Hexadezimalzahl unterschieden werden kann, soll sie am Ende mit einer tiefergestellten «B» (Tiefstellung/Subskript) gekennzeichnet werden. Bsp.: 1101B
In vielen Fällen werden sogenannte führende Nullen angegeben. Die Dezimalzahl 5D sieht als 4-Bit-Zahl demzufolge so aus: 0101B, als 8-Bit-Zahl: 0000'0101B und als 16-Bit-Zahl: 0000'00000'0000'0101B

2.3 Das Hexadezimalsystem

Damit eine Hexadezimalzahl von einer Binär- oder Dezimalzahl unterschieden werden kann, soll sie am Ende mit einer tiefergestellten «H» (Tiefstellung/Subskript) gekennzeichnet werden. Bsp.: 1A3BH , 1426H, 1001H

2.4 Die Fortlaufende Division

Wird verwendet zur Umrechnung von Dezimal zu Binär oder Dezimal zu Hexadezimal.

2.5 Umrechnung Hexadezimal zu Binär

  • Binär > Hex: Binärzahl vom LSB in Richtung MSB in 4-er Gruppen unterteilen
  • Hex > Binär: Eine Hex-Ziffer entsprechen 4 Bit’s

2.6 Die HEX-Tabelle

2.7 Binäres Rechnen und Datenüberlauf

0 + 0 = 0
0 + 1 = 1
1 + 1 = 10 (Übertrag von 1 auf die nächsthöhere Stelle)
1 + 1 + 1 = 11 (Übertrag von 1 auf die nächsthöhere Stelle)

Beispiel Wertebereich von Integer:

Der Integer ist aktuell eine 32 Bit-Ganzzahl. (Früher 16 Bit)
232 ergibt 4'294'967'296 Kombinationen.

Ein vorzeichenloser Integer (Unsigned Int) hat einen Wertebereich von 0 bis 4'294'967'295
Ein  normaler Integer mit Vorzeichen hat einen Wertebereich von -2'147'483'648 bis +2'147'483'647

2.8 Das 2-er Komplement - Negative Zahlen im Binärsystem

Bisher betrachtete wir nur den positiven Ganzzahlenbereich im Sinne von «Unsigned Integer». Schnell wird aber das Bedürfnis aufkommen, den Wertebereich in den negativen Zahlenbereich «Integer» zu erweitern. Dazu werden wir uns nun ein paar Gedanken machen.

Wie wir nun gesehen haben, würde die Komplementbildung mit dem 1-er Komplement funktionieren, ausser es entsteht ein Übertrag oder eine Nulldurchschreitung. Mit einem Korrekturwert könnte dieser Mangel behoben werden. Allerdings bleibt der Nachteil, dass der Wert «0» zweimal vorhanden ist. Besser wird das 2-er Komplement funktionieren, wie wir nun sofort erkennen werden.


3. Bit und Byte

3.1 Einführung

Der Begriff Bit (engl. Binary Digit) dient als Masseinheit für die Datenmenge digital gespeicherter oder übertragener Daten. Der Computer kennt nur 0 und 1. Das bedeutet soviel wie «Strom ein», «Strom aus». Das heisst, dass die Daten in der PC-Elektronik binär verarbeitet werden. Ein guter Grund also, sich mit dem Binärsystem oder 2-er System auseinanderzusetzen. In der Informatik ebenfalls wichig ist das Hexadezimalsystem oder 16-er System, weil z.B. Speicheradressen in Hex angegeben werden, aber auch MAC-Adressen oder sogar die neuen IPv6-Adressen.

  • 1 bedeutet: Logisch WAHR oder TRUE / eine Spannung vorhanden / Licht an / On / Schalter geschlossen
  • 0 bedeutet: Logisch FALSCH oder FALSE / keine Spannung vorhanden / Licht aus / Off / Schalter offen

In der Rechnerarchitektur wird für die Datenbehandlung eine übergeordnete Einheit gebildet. Man fasst 8 Bit zur nächst grösseren Einheit, dem Byte zusammen. Zwei Bytes, also 16 Bit werden Word genannt und ein halbes Byte bzw. 4 Bit's sind ein Nibble.

  • Kleiner als 1 Bit geht nicht! (z.B. existiert kein 1/2 Bit)
  • Das Kurzzeichen für Byte ist das grosse «B» (z.B. 100MB)
  • Das Kurzzeichen für Bit ist das kleine «b» (z.B. 100b)
  • 1 Byte beinhaltet 8 Bit
  • 1 Byte entspricht zwei HEX-Ziffern (z.B. 1011'0100 = B4)
  • 1 Byte hat 256 Bitkombinationen
  • Speichergrössen von z.B. SSD's oder Harddisks werden üblicherweise in Byte angegeben (z.B. 1TB) Siehe auch IEC-Präfixe.
  • Datenübertragungsraten von z.B. Modems werden üblicherweise in Bit/Sekunde angegeben (z.B. 800kb/sec)

3.2 Die Anzahl Bit-Kombinationen ermitteln

Wie aus obiger Tabelle ersichtlich ist, verdoppelt sich die Anzahl Bitkombinationen mit jedem weiteren Bit:

  • 1 Bit ergibt 2 Kombinationen (0 1)
  • 2 Bit ergibt 4 Kombinationen (00 01 10 11)
  • 3 Bit ergibt 8 Kombinationen (000 001 010 011 100 101 110 111)
  • 4 Bit ergibt 16 Kombinationen (siehe obige Tabelle)
  • 5 Bit ergibt 32 Kombinationen
  • 6 Bit ergibt 64 Kombinationen
  • 7 Bit ergibt 128 Kombinationen
  • 8 Bit ergibt 256 Kombinationen
  • und so weiter...

Beachten sie, dass z.B. 256 Kombinationen bei positiven Dezimalzahlen der Bereich von 0 bis 255 bedeutet.

Die Anzahl Kombinationen lassen sich auch direkt mit dieser Formel berechnen:
«Anzahl Bitkombinationen» = 2 hoch «Anzahl Bitstellen»
(hoch = Exponentialfunktion)

Zahlenbeispiel:
16 Bit ergeben wieviele Kombinationen? Die Berechnung dazu lautet...
«Anzahl Bitkombinationen» = 2 hoch «Anzahl Bitstellen»
«Anzahl Bitkombinationen» = 2 hoch 16
«Anzahl Bitkombinationen» = 65'536

Der umgekehrte Weg ist ebenfalls häufig gefragt, wenn die Anzahl benötigten Bits verlangt sind, um z.B. bei einer A/D-Wandlung 100 analoge Werte unterscheiden zu können. Man könnte nun in der obigen Auflistung nachschauen, wieviel Bits nötig werden. Es geht aber auch hier mit einer einfachen Berechnung:

«Anzahl Bit» = AUFRUNDEN von (LOG «Anzahl Bitkombinationen» / LOG 2)
(LOG = Zehnerlogarithmus)

Zahlenbeispiel:
1000 Kombinationen sind verlangt. Die Berechnung dazu lautet...
«Anzahl Bit» = AUFRUNDEN von (LOG 1000 / LOG 2)
«Anzahl Bit» = AUFRUNDEN von (3 / 0.301)
«Anzahl Bit» = AUFRUNDEN von (9.966)
«Anzahl Bit» = 10
Kontrolle: 2 hoch 10 = 1024
Da aber «nur» 1000 Kombinationen verlangt sind, wurde um 24 Kombinationen über das Ziel hinausgeschossen. Die nächstkleiner Bitanzahl wäre 9. Dies würde allerdings nur 512 Kombinationen ergeben, was definitiv zu wenig wäre.

3.3 Bitmap-Bilder und Vektorgrafik

Unter Bitmap versteht man eine Raster- oder Pixelgrafik. Diese besteht aus einer Anzahl von Pixeln (Picture Elements). Eine Bitmapgrafik lässt sich problemlos in der Auflösung verkleinern. Das Vergrössern wird allerdings zum Problem, weil dadurch die Pixelgrenzen zur Vorschein treten. Typische Vertreter von Bitmapgrafiken sind JPG, TIF, PNG und GIF.

Im Gegensatz dazu existieren die sogenannten Vektrografiken. Bei diesen wird das Bild aus grafischen Primitiven wie Linien, Kreisen, Polygonen oder allgemeinen Kurven (Splines) beschrieben und sind daher verlustlos skalierbar (In der Grösse veränderbar). Die Schrifttypen (Fonts) bestehen zum Beispiel aus Vektrografiken.

3.4 Kombinatorik

Mit Kombinatorik ist hier die Verknüpfung zweier Aussagen oder Aussagefunktionen gemeint.

3.5 Parallele und serielle Datenübertragung

Die Benutzung eines Taktsignals (Takt, Clock Signalclock) ist ein Verfahren, den richtigen zeitlichen Ablauf beim Betrieb einer elektronischen Schaltung sicherzustellen. Insbesondere benötigen viele digitale Schaltungen ein entsprechendes Signal zur zeitlichen Koordination bzw. Synchronisation der Aktionen mehrerer Schaltkreise (insbesondere der von Flipflops bzw. Speicherzellen) innerhalb komplexer digitaler Systeme.

Das Taktsignal ist ein periodisches Signal, das durch seine Frequenz (Taktfrequenz, Taktrate) bzw. deren Kehrwert (Periodendauer) charakterisiert ist. Es wechselt dabei zwischen zwei Logikpegeln High (1) und Low (0) ab. Prominentes Beispiel eines Taktsignals ist der Systemtakt (System Clock) in einem Computer, der die Arbeitsgeschwindigkeit vieler Komponenten, insbesondere des Mikroprozessors, bestimmt.

Die Einheit der Taktfrequenz ist Hertz (Hz). Ein Hertz entspricht einem Takt pro Sekunde.

3.6 Adress- und Datenbus → Speicherberechnung


4. Analog / Digital

Der Mikroprozessor im PC versteht nur "Digital". (Einmal abgesehen von spezialisierten Mikrokontrollern mit integrierten A/D- und D/A Wandlern.)

4.1 Die Anzeige von Werten in analoger oder digitaler Darstellung

  • Ein Vorteil der analogen Anzeige besteht darin, dass innerhalb des Anzeigebereichs viele beliebige Werte kontinuierlich angezeigt werden können.
  • Ein Nachteil der analogen Anzeige ist aber, dass Werte je nach Sicht auf die Zeigernadel, ungenau abgelesen werden. (Ablesefehler)
  • Für eine digitale Anzeige spricht, dass keine Ablesefehler gemacht werden können.
  • Allerdings werden bei der digitalen Anzeige die Werte nicht kontinuierlich, sondern zeitdiskret angezeigt. Je nach Samplingrate kann da ein kurzer Ausschlag übersehen werden. Ausserdem können bei obiger digitaler Anzeige nur Werte von 00.0 bis 99.9, also 1000 verschiedene Werte, angezeigt werden.

4.2 Die Analog-Digitalwandlung

Soll eine analoge Grösse wie z.B. ein Spannungswert von einem Rechner bearbeitet werden, muss dieser zuerst in seine digitale Form umgewandelt werden.

Ein digitale Signal kann aus einem Analogsignal, welches den zeitlich kontinuierlichen Verlauf einer physikalischen Grösse beschreibt, durch die Quantisierung und eine Abtastung/Sampling, welche zu definierten Zeitpunkten erfolgt, gebildet werden. Die digitalen Werte sind üblicherweise als Binärzahlen/Dualcode kodiert, so dass ihre Quantisierung in Bits angegeben wird. Analog-Digitalwandlung eines Audiosignals:

Die Digitalisierung eines analogen Signals hat immer zur Folge, dass das originale analoge Signal nicht mehr verlustlos rekonstruiert werden kann. Je nach Abtastrate und Auflösung kann man aber das digitale Signal in ein qualitativ befriedigendes analoges Signal zurückverwandeln. Der von der Digitalisierung herführende Treppeneffekt bzw. die dadurch entstehenden Oberwellen beim zurückverwandelten Analogsignal können mit entsprechenden analogen Filtern unterdrückt werden.

Beispiel MusicCD:

Bei der MusicCD wird das analoge Signal mit einer Samplingrate von 44.1kHz bei einer Auflösung von 16 Bit (65'536 verschiedene Analogwerte) abgetastet.

4.3 Das Abtasttheorem

Das Abtasttheorem besagt, dass ein Signal exakt rekonstruiert werden kann, wenn es mit mindestens der doppelten oberen Grenzfrequenz des analogen Signals abgetastet wurde. Bei der MusicCD mit Audio im hörbaren Bereich von 20Hz bis 20kHz bedeutet dies eine Abtastfrequenz von mindestens 40kHz.


5. Ein vereinfachtes Computermodell

Mikroprozessoren sind aus den komplexen Anforderungen an elektronische Schaltkreise entstanden. Durch immer höhere Integrationsdichten wurde es möglich ein komplettes Steuer- und Rechenwerk auf einem Chip zusammenzufassen – dem Mikroprozessor. Kern des Mikroprozessors, die eigentliche Recheneinheit ist der zentrale Prozessor, die CPU (Central Processing Unit). Um Aufgaben auszuführen, benötigt die CPU den Steuerbus oder Control Bus. Das Rechenwerk ist unter den Bezeichnungen arithmetisch-logische Einheit oder ALU  (engl. Arithmetic Logical Unit) bekannt. Es ist der Teil eines Computers, der arithmetische (Addition, Subtraktion, Multiplikation, Division) und logische (UND-, ODER-, NICHT-Verknüpfung) Operationen ausführt. Damit daraus ein funktionsfähiger Rechner entsteht, werden zusätzliche Komponenten benötigt:

  • Um Daten und Programme zu speichern werden Speicherbausteine eingesetzt. Diese sind als überschreibbare Speicher (RAM) oder als Festwertspeicher (ROM, PROM, EPROM, EEPROM, Flash-PROM) realisierbar. Wenn die Programme nicht mehr geändert werden, können diese auch in einem sogenannten Festwertspeicher untergebracht werden. Der Datenspeicherbereich  muss immer änderbar sein und wird deshalb immer in einem überschreibbaren Speicher liegen.
    Der Programmspeicher und der Datenspeicher müssen nicht zwingend im selben Speicherblock vereint sein. Es ist möglich, Programme und Daten in separaten Speicherblöcken unterzubringen. Je nach Art der Speicherverwaltung unterscheidet man zwischen zwei verschiedenen grundsätzlichen Architekturen eines Prozessors: der Architektur nach «von Neumann» und derjenigen nach «Harvard».
  • Der «Von Neumann-Rechner» arbeitet sequentiell, d.h. Befehle (Instruktionen) werden nacheinander abgeholt, interpretiert und ausgeführt und das Resultat wird anschliessend abgespeichert.
  • Bei der Harvard-Architektur sind Instruktionen und Daten in getrennten Speichern untergebracht. Der Prozessor besitzt getrennte Busse für Instruktions- und Datenzugriffe, dadurch kann ein überlappender Betrieb durchgeführt werden.
    Die nächste Instruktion kann bereits abgeholt werden, während noch Daten in den Speicher geschrieben werden. Der Aufwand für die Realisierung einer Harvard Architektur ist beträchtlich. Zahlreiche Pin-Anschlüsse (Kontakte) am Prozessor werden zusätzlich benötigt. Oft wird eine reine Harvard Architektur intern im Chip realisiert, nach aussen wir der gemeinsame Datenbus geführt.
  • Um mit der Aussenwelt zu kommunizieren, sind Peripheriebausteine nötig, die Signale erfassen und ausgeben können: Ein- und Ausgabeeinheiten.
  • Ein Taktgenerator (Clock-Generator) ermöglicht den Ablauf eines Programms in einem Mikrocomputer. Er dient auch als Zeitbasis für verschiedene andere Funktionen. Der Taktgeber teilt dem entsprechenden Gerät mit, dass es bei jedem Takt (Puls) eine weitere Funktion auszuführen hat. Der Taktgeber bestimmt damit z.B. wie schnell ein Programm abgearbeitet wird. Je schneller die Taktfolge, also je höher die Takt-frequenz, umso schneller wird ausgeführt.

5.1 Die Bestandteile

Die Hauptfunktion jedes Rechnersystems basiert auf dem EVA-Prinzip: Eingabe, Verarbeitung und Ausgabe. Die Verarbeitung findet in der  CPU (Central Processing Unit) statt und besteht aus Rechenwerk, Steuer-/Leitwerk und Speicher für Programme und Daten (Von-Neumann-Architektur).

  • CPU: Der Programm Counter verweist auf den aktuellen Programmschritt.
    Nach jeder Befehlsausführung wird der Programm Counter um 1 erhöht. Es ist aber auch möglich, durch einen Befehl den Programm Counter neu zu setzen.
    Im 8 Bit-Feld Instruktion/Adresse steht der anliegende Maschinenbefehl inkl. Adresse. Akkumulator/Register ist der unmittelbare Speicher, in den die CPU Resultate lädt und speichert. Die CPU arbeitet in zwei Takten:
    Fetch: (1. Takt)
    Der abzuarbeitende Maschinenbefehl wird vom RAM in die CPU geladen.
    Execute: (2. Takt)
    Die CPU führt die Instruktion (Maschinenbefehl) aus.
    Diese CPU kennt 10 unterschiedliche Befehle (Instruktionssatz)
  • RAM: Besteht aus 16 x 8 Bit bzw. 128 Bit oder 16 Byte. Die einzelne Speicherstelle wird über einen 4 Bit Adressbus angesprochen.
    Es ist immer nur eine Zeile aufs Mal betroffen. Die CPU „befiehlt“, welche Zeile es ist. Je nach CPU-Befehl werden Daten vom RAM gelesen oder dorthin gespeichert.
  • I/O: Wenn die CPU eine Eingabe oder Ausgabe von der Peripherie verlangt, ist das I/O betroffen. (I/O = Input/Output)

5.2 Maschinencode-Beispiel → Zwei Zahlen addieren

Das folgende Beispiel zeigt ein Programmablauf, bei dem zwei Werte aus dem Speicher gelesen, danach addiert und wieder in den Speicher zurückgeschrieben werden:

5.3 Maschinencode-Beispiel → Einfacher +/- Taschenrechner

Das folgende Beispiel zeigt einen kleinen Taschenrechner mit einer Additions/Subtraktions-Funktion. Dazu werden zwei Werte und die gewählte Operation +/- aus dem I/O gelesen, verarbeitet und wieder in das I/O zurückgeschrieben:

5.4 Der Maschinen-Befehlssatz

5.5 Unterschied zu realem Mikroprozessorsystem

Was unterscheidet nun unser "vereinfachter Micro-Computer zu Studienzwecken" von aktuellen Mikroprozessorsystemen?

  • Mehr RAM-Speicherplatz. Bedingt breiteren Adress- und Datenbus!
  • Mehrere Register in der CPU. Damit könnte man Werte auch im Register belassen anstatt sie sofort wieder ins RAM zurückschreiben zu müssen.
  • Mehrere I/O’s, damit gelichzeitig Werte anliegen dürfen.
  • Grösserer Instruktionssatz bzw. Maschinenbefehle. Unsere jetzige Maschine besitzt eigentlich nur zwei mathematische Operationen. Binäre Operatoren (AND, OR, Inverter etc.) fehlen gänzlich. Ebenfalls die sehr nützliche Bit-Shift-Funktion, die unbedingt auch mit an Bord sein müsste.
  • Ein System zum Unterbrechen eines laufenden Prozesses. (Interrupt, Multitasking)