(:requiretuid:)
Dieses Kapitel behandelt zunächst häufig verwendete Zahlensysteme und die Umrechnung zwischen diesen. Weiter geht es mit der Addition von Binärzahlen und der Darstellung von Negativen Zahlen in Rechensystemen. Außerdem beschäftigen wir uns mit Logikgattern und der Übertragung von Binärwerten zwischen diesen mittels Spannungen. Danach ist der Aufbau der Logikgatter aus Transistoren ein Thema und zum Schluss die Leistungsaufnahme elektronischer Schaltungen. Am Ende des Kapitels befindet sich ein kleiner Selbsttest, der es erlaubt zu überprüfen, wie sicher der Stoff des Kapitels bereits beherrscht wird.
Für die Berechnung von binären Zahlen ist es sehr sinnvoll, die Zweierpotenzen zu kennen:
Man batrachtet die binäre Zahl und beginnt an der kleinsten Stelle. Es ist ersichtlich, dass man eine 1 hat, keine 2, eine 4, eine 8 und eine 16. Durch Addition der Werte dieser Stellen erhält man die Dezimalzahl. Hier die 29.
Hier überlegt man, welche die höchste Zweierpotenz ist, die in 35 passt.
oder
Hierbei verwenden wir sukzessive die Division mit Rest. Das Ergebnis der vorherigen Division wird so lange erneut durch die Basis dividiert bis das Ergebnis der Division 0 ist. Da wir uns jedes mal den Rest notieren, müssen wir am Ende nur noch die Reste von unten nach oben lesen und erhalten so die gesuchte Zahl im anderen Zahlensystem. Wir teilen hier durch 2, da wir wissen wollen, was 35 zur Basis 2 ist. Wenn wir wissen wollen, was 35 zur Basis 3 ist, teilen wir demnach durch 3.
Unten steht das most significant bit, also folgt daraus
Als Hexadezimalzahlen bezeichnet man Zahlen im Zahlensystem mit Basis 16. Das Hexadezimalsystem verfügt zusätzlich zu den Ziffern 0 bis 9 noch über die Buchstaben A bis F, welche die Dezimalwerte 10 bis 15 repräsentieren.
Für Hexadezimalzahlen sind unter anderem zwei Schreibweisen gebräuchlich. Sie können entweder auf die mathematische Weise durch einen Index "16", z.B. geschrieben werden. Oder auf eine eher technische Schreibweise mit dem Präfix "0x
", z.B. 0x2A
. In beiden Fällen gilt natürlich: 0x2A
Bei hexadezimalen Zahlen hat jede Stelle eine 4 Bit Repräsentierung. Das macht die Umrechnung von hexadezimal nach binär oder umgekehrt sehr einfach.
Diese Abkürzungen sollte man kennen um technische Angaben lesen zu können.
Aber aufgepasst, hier gibt es eine Falle:
So kann man auch schnell Zweierpotenzen schätzen:
oder auch:
Wievele Werte kann ein 16b Variable annehmen?
Die Addition von binären Zahlen funktioniert wie mit "normalen Zahlen". Aber Achtung, binäre Zahlen können auf unterschiedliche Weisen dargestellt werden. Es ist wichtig, zu wissen in welcher Darstellung man sich bewegt. Wir betrachten zunächst vorzeichenlose Binärzahlen.
Bei diesem Beispiel tritt kein Überlauf auf, was in dem folgenden Beispiel aber passiert:
Da digitale Systeme mit einer festen Anzahl an Bits arbeiten wird die vorderste 1 abgeschnitten und es können Fehler auftreten, wenn unser System hier auf 4b beschränkt ist.
Das Problem bei dieser Darstellung ist, dass es zwei Repräsentationen für die Null gibt. Bei 4 Bitzahlen z.B. 0000
= und 1000
= . Der Wertebereich ist hierbei , wobei die Anzahl der Bits ist. Beispielsweise ist bei 4 Bitzahlen demzufolge 1111
= die kleinste und 0111
= die größte, darstellbare Zahl.
Bei dieser Art Darstellung schlägt die Addition, wenn negative Zahlen beteiligt sind, leider fehl:
Wir berechnen: :
Das Ergebnis ist offensichtlich nicht 0 und damit falsch.
Das Zweierkomplement (auch 2-Komplement, Zweikomplement, two's complement oder 2K-Darstellung) behebt Probleme der Vorzeichen/Betrag-Darstellung. Mit dem Zweierkomplement liefert die Addition ein korrektes Ergebnis und es gibt nur eine Null.
Auch hier kann man am msb das Vorzeichen ablesen:
Die größte, positive 4b Zahl ist . Die kleinste, negative 4b Zahl ist .
Dabei fällt schon auf, dass der Wertebereich leicht anders ist:
Annahme: Die umzuwandelnde Zahl liegt im Wertebereich.
Handelt es sich um eine positive Zahl, die man ins Zweierkomplement umwandeln will, so verwendet man einfach die normale Binärdarstellung und füllt die restlichen Bits bis einschließlich dem msb mit 0 auf.
Beispiel:
Jetzt wollen wir eine negative Zahl ins Zweierkomplement umwandeln. Das ist mit etwas mehr Aufwand verbunden:
Es gibt aber noch eine andere Möglichkeit negative Zweierkomplementzahlen zu berechnen:
Wir haben wieder 6b zur Verfügung und wollen auch hier die ins Zweierkomplement umwandeln
1
wird eine 0
und aus jeder 0
eine 1
. Damit erhält man 11
1010
1
und erhalten 11
1011
Wie wir sehen funktionieren beide Varianten. Man muss einfach selbst herausfinden, welche Methode einem besser liegt.
Diese Methode funktioniert natürlich auch anders herum. Wir wollen wissen, welche Zahl 11 1011
dezimal ist. Also invertieren wir die 11 1011
und addieren eine 1
darauf
Das lässt sich leicht ablesen. Das Ergebnis ist eine 5. Da wir vorher eine 1 als Vorzeichen hatten, haben wir jetzt eine -5.
Beides mal entsteht hier ein Überlauf. Dieser kann aber ignoriert werden, da wir positive und negative Zahlen gleicher Bitbreite miteinander addieren. Das Ergebnis kann so ja nicht mehr Bit "verbrauchen".
Bisher haben wir nur Zahlen gleicher Bitbreite verknüpft. Was aber ist zu beachten, wenn wir Zahlen mit unterschiedlichen Bitbreiten verknüpfen wollen? Wir müssen die Zahlen auf die gleiche Bitbreite bringen. Dafür gibt es zwei Möglichkeiten, die wir im Folgenden für Zahlen im 2-Komplement betrachten.
Das Vorzeichen wird so oft an das linke Ende der Zahl kopiert bis die gewünschte Bitbreite erreicht ist. Der Zahlenwert bleibt unverändert. Das gilt auch für negative Zahlen.
Nullen werden einfach links angehängt bis die gewünschte Bitbreite erreicht ist. Dies zerstört offensichtlich den Wert von negativen Zahlen. Bei positiven Zahlen bleibt der Wert aber unverändert.
Logikgatter (kurz Gatter, engl. logic gate) sind elektronische Bauelemente, die logische Funktionen berechnen. Zum Beispiel:
Die Anzahl der Eingänge von Gattern variiert:
Eine Wahrheitstabelle (auch Wahrheitstafel, engl. truth table) ist eine tabellarische Aufstellung des Wahrheitswertverlaufs einer logischen Funktion. Sie zeigt für jede mögliche Belegung der Eingangsvariablen den zugehörigen Wahrheitswert an, den die Funktion für diese Belegung ausgibt. Die linken Spalten enthalten die Belegungen der Eingangsvariablen. Die Spalte ganz rechts den entsprechenden Ausgabewert. Da Gatter logischen Operationen entsprechen, eignen sich Wahrheitstabellen gut, um das Verhalten von Gattern zu veranschaulichen. Mit Wahrheitstabellen lässt sich außerdem leicht die logische Äquivalenz zweier boolescher Ausdrücke zeigen, wobei bei komplizierteren Termen die Wahrheitswerte von Teiltermen mit in die Wahrheitstabelle aufgenommen werden sollten. Zu beachten ist, dass Wahrheitstabellen nur für Funktionen mit einer kleinen Anzahl an Eingangsvariablen geeignet sind, da für eine logische Operation mit Eingangsvariablen die zugehörige Wahrheitstabelle Einträge hat.
Wir betrachten als Beispiel die Und-Verknüpfung (AND). Auf der linken Seite stehen A und B. Dies sind hier die Eingänge. Y, der Ausgang, ist das Ergebnis der Verknüpfung. Es gibt also 2 Eingänge, die jeweils 2 Zustände (0 oder 1) annehmen können. Damit haben wir 22 = 4 unterschiedliche Möglichkeiten die Zustände zu belegen. Bei Gattern mit 3 Eingängen sind es demensprechend 23 = 8 unterschiedliche Zustände usw.
So liest man die Wahrheitswerttabelle:
Y nimmt also bei der Und-Verknüpfung nur dann den Wert 1 an, wenn beide Eingänge auf 1 geschaltet sind.
Liegt eine Hintereinanderschaltung mehrerer Gatter vor, wird mit dem Ausgangswert eines Gatters weitergerechnet. D.h. der Ausgangswert dieses Gatters liegt zugleich am Eingang eines weiteren Gatters an.
Unter den Schaltsymbolen der Gatter steht die in TGdI verwendete Schreibweise. Es gibt viele unterschiedliche Schreibweisen für die gleiche boolesche Funktion und je nach Fachgebiet ist eine andere gebräuchlicher. Zum besseren Verständnis sind daher auch jeweils die alternativen Schreibweisen aufgelistet.
In der Mathematikvorlesung wird NOT mit (Negation von ) dargestellt.
In der Mathematikvorlesung wird das AND mit (Konjunktion) und das OR mit (Disjunktion) bezeichnet.
Diese Gatter und ihre Wahrheittabellen sollte man kennen.
Eine Paritätsfunktion erkennt, ob eine gerade oder eine ungerade Anzahl von Eingängen den Wert 1 hat.
Das XOR ist eine ungerade Paritätsfunktion, da es nur genau dann eine 1 am Ausgang liefert, wenn eine ungerade Anzahl von Eingängen den Wert 1 haben.
In elektrischen Schaltungen liegt natürlich nicht einfach nur der Wert 1 oder 0 an einer Leitung an, sondern analoge Spannungswerte, die unsere bisherige digitale Konstruktion nicht kümmert. Unsere Gatter funktionieren aber nur mit diesen Werten. Also ist es nötiig Spannungspegel zu definieren, die den logischen Binärwerten entsprechen.
Einfach wäre:
Reale Schaltungen haben aber nicht immer den exakt gleichen Spannungspegel (Temperatur, Einstreuung, Schwankungen durch Auslastung des Netzes, Überschwinger beim Be-/Entladen von Transistoren usw.). Diese Spannungsschwankungen werden Rauschen genannt.
Was passiert also, wenn 4,99 V an einem Gatter anliegen? Ist das eine 0 oder eine 1? Was passiert bei dem Mittelwert 2,5 V? Wo wird dieser zugeordnet?
Als Rauschen bezeichnet man die Störung von Nutzsignalen. Dies entsteht durch:
Es kann also sein, dass ein Gatter (der Treiber, driver) 5 V ausgibt. Da aber der Empfänger erst am Ende einer langen Leitung hängt hat diese einen hohen Widerstand und es kommt zu einem Spannungsabfall von z.B. 0,5 V. Also kommen beim Empfänger (receiver) nur 4,5 V an. Diesen Spannungsabfall nennt man Rauschen.
Es ist also nicht sinnvoll einen einzelnen Spannungspegel für die Wert 0 und 1 anzunehmen. Stattdessen verwendet man Bereiche von Spannungspegeln für 0 und 1.
Um die Robustheit zu steigern, verwendet man unterschiedliche Bereiche für Eingänge und Ausgänge. Wenn aber ein gültiger Logikpegel am Eingang anliegt, muss auch der Ausgang einen gültigen Logikpegel liefern.
Es macht natürlich Sinn, dass man nur einen Satz Spannungsbereiche für Logikpegel in der gesamten Schaltung verwendet. Sonst muss man u.U. viele Ressourcen dafür verwenden, die Spannungspegel anzupassen bzw. die Schaltung funktioniert trotz richtiger Eingaben nicht.
Allerdings wird dies manchmal bewusst missachtet, um die Schaltung noch weiter zu verbessern. Optimiert wird hierbei z.B. der Platz, die Geschwindigkeit, Kosten oder der Energiebedarf. Dies erhöht die Komplexität des Systems und es ist wichtig hierbei mit Bedacht vorzugehen!!
Abkürzungserklärung:
Dabei gilt:
In den 70ern bis 80ern betrug die Versorgungsspannung 5 V. Da Chips mit immer höheren Taktfrequenzen hergestellt wurden, musste die Versorgungsspannung gesenkt werden, um dem Problem der Abwärme Herr zu werden.
Zu hohe Spannungen würden empfindliche Bauteile beschädigen, da sie zu warm werden könnten. Der Energiebedarf wurde reduziert, was auch geringe Betriebskosten zur Folge hat.
So entstanden Chips mit unterschiedlichen Versorgungsspannungen: 3.3 V, 2.5 V, 1.8 V, 1.5 V, 1.2 V, 1.0 V, ...
Bei der Kombination von Bauteilen mit unterschiedlicher Versorgungsspannung ist Vorsicht geboten.
Aus der Tabelle ist ersichtlich, welche Logikfamilien miteinander kompatibel sind:
Logikgatter werden üblicherweise aus Transistoren aufgebaut
Transistoren sind spannungsgesteuerte Schalter, bei denen zwei Anschlüsse in Abhängigkeit von der Spannung an einem dritten geschaltetet werden. Hierbei gibt es genau zwei Zustände: Die zwei Anschlüsse sind entweder verbunden oder getrennt. Beispiel: Die Verbindung zwischen d und s ist verbunden, genau dann wenn g = 1 und getrennt wenn g = 0.
Transistoren werden üblicherweise aus Silizium (Si, 4. Hauptgruppe im Periodensystem) gefertigt. Reines Silizium ist aber ein schlechter Leiter, da es keine freien Ladungsträger hat. Deswegen wird das Silizium dotiert. Das heißt, dass Fremdatome in eine Schicht oder in das Grundmaterial integriert werden. Dotiertes Silizium ist ein guter Leiter, da durch das dotieren freie Ladungsträger enthalten sind.
Dabei gibt es zwei Arten von dotiertem Silizium:
MOSFETs sind Metalloxid-Silizium (MOS) Transistoren
Drain und Source sind negativ dotiert.
Gate = 0 - ausgeschaltet, es besteht keine Verbindung zwischen Source und Drain
Gate = 1 - eingeschaltet, es gibt einen leitfähigen Kanal zwischen Source und Drain
Der pMOS Transistor verhält sich genau umgekehrt:
Drain und Source sind positiv dotiert.
Gate = 0 - eingeschaltet, es gibt einen leitfähigen Kanal zwischen Source und Drain
Gate = 1 - ausgeschaltet, es besteht keine Verbindung zwischen Source und Drain
nMOS Transistoren leiten 0'en gut zwischen S und D weiter während 1'en abgeschwächt werden S an GND anschließen
pMOS Transistoren leiten 1'en gut zwischen S und D weiter während 0'en abgeschwächt werden S an VDD anschließen
nMOS leiten 1'en schlecht weiter, während pMOS 0'en schlecht weiterleiten.
Ein Transimissionsgatter behebt diese Schwächen und leitet sowohl 0'en als auch 1'en gut weiter.
Wenn EN = 1 , so ist der Schalter AN:
Wenn EN = 0 , so ist er Schalter AUS:
Pseudo-nMOS Gatter ersetzen das Pull-Up Netz durch einen schwachen immer eingeschalteten pMOS Transistor. Schwach heißt hier, dass die 1 durch das Pull-Down Netz neutralisiert werden kann.
Pseudo-nMOS NOR4
Um eine lange Reihe von Transistoren zu vermeiden sind breite NORs nützlich, da sobald an einem der Eingänge eine 1 anliegt, der zugehörige nMOS den pMOS "übertönt" und somit VDD kurzgeschlossen wird. Dadurch ist Y an GND angeschlossen und Y = 0.
Durch einen Dauerkurzschluss bei Y = 0 verbraucht dieses Gatter mehr Energie, als die herkömmliche Variante.
Die Anzahl der verbauten Transistoren nimmt von Jahr zu Jahr weiter zu.
einmal im Jahr explodieren …" - Robert X. Cringely (Infoworld)
Leistung ist der Energieverbrauch pro Zeiteinheit. Dabei unterscheidet man zwei Arten von Leistungsaufnahme:
Die dynamische Leistungsaufnahme ist die Leistungsaufnahme, die durch Umladen der Gates der Transistoren entsteht. Diese verhalten sich dabei wie Kondensatoren.
Die benötigte Leistung, um einen Kondensator mit der Kapazität auf zu laden, beträgt
Eine Schaltung wird mit der Frequenz f betrieben. Das bedeutet, dass der Transistor f-mal pro Sekunde schaltet. Aber nicht alle Transistoren schalten jeden Takt von 0 nach 1 und wieder nach 0. Nehmen wir an, es würde jeden Takt nur entweder geladen oder entladen. Dann hätte man die halbe Energieaufnahme.
Demnach beträgt die dynamische Leistungsaufnahme:
Die statische Leistungsaufnahme ist der Leistungsbedarf der Schaltung, wenn kein Gatter schaltet. Diese wird verursacht, da es immer einen Leckstrom gibt. Dieser Leckstrom entsteht dadurch, dass die immer kleiner gewordenen Transistoren nicht mehr vollständig abschalten.
Die statische Leistungsaufnahme beträgt also:
In diesem Beispiel schätzen wir die Leistungsaufnahme eines Laptops ab. Dafür haben wir folgende Parameter gegeben:
Die Leistungsaufnahme berechnet sich mit: