
1. Begriffe
1.1. Speicher-Elemente
1.2. Output-Logik
1.3. Next-State Logik
2. Speichertechnologien
2.1. RAM (Random Access Memory)
2.1.1. SRAM (Statische RAM) - Flipflops - sehr schnell - verwendung: Level 2 Cache
2.1.1.1. Bipolarer SRAM - hohe Geschwindigkeit
2.1.1.2. NMOS-SRAM
2.1.1.3. CMOS-SRAM
2.1.2. DRAM (Dynamische RAM) - Transistor + Kondensator - hohe Speicherdichte - geringe Kosten - langsamer als SRAM - verwendung: Hauptspeicher
2.2. ROM (READ-ONLY MEMORY) - nichtflüchtiger Speicher - beschreiben heißt programmieren
2.2.1. Maskenprogrammierung (ROM) - irreversibel - beim Herstellungsprozess fehlende verbindungen - MOS
2.2.2. Elektrische Programmierung (PROM) - Können vom Anwender programmiert werden - beim Programmieren werden imPROM gezielt Sicherungen durch hohe Spannung zerstört
2.2.3. Löschbare, elektrische Programmierung (EPROM, EEPROM, Flash)
2.2.3.1. EPROM (Erasable Programmable ROM) - selbstsperrende Feldeffekttransistoren - können durch UV-Strahlen gelöscht werden
2.2.3.2. EEPROM (Electrically Erasable Programmable ROM) - kann elektrisch gelöscht werden - einzelne Speicherzellen können gelöscht werden
2.2.3.3. Flash (Flash-EEPROM) - arbeitet blockorientiert (mehrere Bytes)
3. Rechnerstruktur und Rechnerarchitektur
3.1. Addiernetze
3.1.1. Halbaddierer - addiert 2 bit - mit Übertrag
3.1.2. Volladdierer - addiert 2 bit - mit Übertrag
3.1.3. Ripple-Carry-Adder (asynchrones (Parallel-)Addiernetz) - berechnet mit VAs jede einzelne stelle (Ausnahme letztes: HA)
3.1.4. Carry-Bypass-Addiernetz - //TODO
3.1.5. Carry-Save-Addiernetz - //TODO
3.2. Addierwerke
3.2.1. Ripple-Carry-Addierer
3.2.2. Serien-Addierwerk
3.2.3. von Neumann-Addierwerk
3.3. Multiplikation
3.3.1. Carry-Save-Multiplikation
3.3.2. Wallace-Tree
3.4. CPU
3.4.1. Datenprozessor
3.4.1.1. ALU (arithmetic logic unit)
3.4.1.2. MBR (memory buffer register)
3.4.1.3. MR (Multiplikationsregister)
3.4.1.4. L (Link-Register)
3.4.1.5. A (Akkumulator)
3.4.2. Befehlsprozessor
3.4.2.1. Decodier Steuerwerk
3.4.2.2. IR (Instruktions Register)
3.4.2.3. MAR (memory address register)
3.4.2.4. PC (program counter)
3.4.3. Fetch/Execute-Zyklus
3.4.3.1. 1. Fetch-Phase
3.4.3.1.1. Inhalt von PC wird nach MAR gebracht. Inhalt von dieser Adresse aus dem Speicher über MBR nach IR gehohlt. Decoder decodiert Befehl PC wird incrementiert.
3.4.3.2. 2. Execute Phase Befehltsausführung, und initioation für den nächsten befehl.
3.5. Rechnerarchitektur
3.5.1. von Neumann-Rechner
3.5.1.1. Funktion
3.5.1.1.1. CPU führt genau 1 Befehl aus mit höchstens einem Datenwert
3.5.1.1.2. Daten und Programme auf dem selben Speicher
3.5.1.2. Speicherhirarchie
3.5.1.2.1. CPU
3.5.2. Harvard-Architektur
3.5.2.1. Funktion
3.5.2.1.1. Daten und Programme sind pysisch getrennt und werden über getrennte Busse angesteuert
3.5.2.1.2. Unabhängige Adressräume
3.5.3. Vergleich
3.5.3.1. pro von Neumann-Architektur
3.5.3.1.1. nichtbenötigter Datenspeicher nicht als Programmspeicher nutzbar und umgekert
3.5.3.2. pro Harvard-Architektur - verwendet in Digitalen Signalprozessoren
3.5.3.2.1. gleichzeitiges Laden von Befehlen und Daten => schneller
3.5.3.2.2. programmcode kann nicht versehentlich überschrieben werden => sicherer
3.5.3.2.3. Datenwortbreite und Befehlswortbreite unabhängig voneinander
4. MMIX
4.1. Register
4.1.1. Spezial-Register
4.2. Speicherorganisation
4.2.1. Wyde = 2 Bytes
4.2.2. Tetra = 2 Wydes
4.2.3. Octa = 2 Tetras
5. Elektrotechnische Grundlagen
5.1. Netzwerkanalyse
5.1.1. Knotenspannungsanalyse
5.1.1.1. 1. Spannungsquellen durch Stromquellen ersetzen, wobei die zu den Spannungsquellen in reihe geschalteten Widerstände nun parallel geschaltet werden. Iq=Uq/R 2. Bezugsknoten wählen und Knotenspannungen einzeichnen 3. Knotengleichungen aufstellen //TODO
5.1.2. k: Anzahl Knoten (Es gibt k-1 unabhängige Knotengleichungen) z: Anzahl Zweigströme m: benötigte Anzahl Maschen (m=z-k+1) 1. Gleichung für k-1 Knoten aufstellen 2. Gleichung für m Maschen aufstellen 3. Spannungen in Maschengleichungen durch R*I austauschen
5.1.2.1. Zweigstromanalyse
5.1.2.1.1. 4. Gleichungssystem aufstellen mit allen Zweigströmen (z Gleichungen)
5.1.2.2. Maschenstromanalyse
5.1.2.2.1. 4. Jeder Masche einen Maschenstrom zuweisen 5. Die Zweigströme in Abhängigkeit der Maschenströme angeben 6. Gleichungssystem mit m Maschenströmen aufstellen 7. Mit erhaltenen Maschenströmen die Zweigströme ausrechnen
6. Boolesche Funktionen
6.1. Normalformen
6.1.1. DNF
6.1.2. KNF
6.2. Graphen
6.2.1. DAG (Direct Acyclic Graph)
6.2.2. Schaltskizze
6.2.3. OBBDs (Geordnete Binäre Entscheidungs-Diagramme)
6.2.3.1. Vereinfachung 1. Verjüngung 2. Elimination
6.3. Fehlerdiagnose
6.3.1. 1. Für jeden gerissenen Draht eine eigene Funktion aufstellen 2. jede dieser Funktionen mit der ursprünglichen Funktion mit xor verknüpfen 3. Ist die Funktion von einem Draht überall 0, so lässt sich hier ein gerissener Draht nicht identifizieren. Haben zwei funktionen an den sleben stellen 1en und 0en, so lässt sich der gerissene draht nicht eindeutig identifizieren.
6.4. Vereinfachung
6.4.1. Karnaugh-Diagramme für n = 3, 4
6.4.1.1. Primimplikaten (alle möglichst vereinfachten Kreise)
6.4.1.1.1. Kernimplikanten sind die Kernimplikanten, mit denen sich die Funktion mit Möglicht wenig Variablen darstellen lässt
6.4.2. Quine-McCluskey-Verfahren
6.4.2.1. 1. Alle Minterme in Gruppen nach der Anzahl Negationen Zusammenfassen 2. Liste neu aufstellen, wobei in Gruppe 1 auf alle Terme mit denen aus Gruppe 2 die Eliminations-Regel angewendet wird. Ist dies nicht möglich, wird der Term normal aufgeschrieben 3. Schritt 2. Solange wiederholen, bis sich nichts mehr ändert 4. Implikationsmatrix aufstellen.
7. Spule & Kondensator
7.1. Spule
7.1.1. Formeln
7.1.1.1. L=N^2 * (μ*A)/l
7.1.1.2. U(t)=L*di(t)/dt
7.1.1.3. E=1/2 *L*I²
7.1.1.4. Φ=(L*I)/N
7.1.1.5. i=i_0 *(1-e^(-1/τ))
7.1.1.6. τ=L/R
7.2. Kondensator
7.2.1. Formeln
7.2.1.1. Q=C*U
7.2.1.2. C=ε*(A/d)
7.2.1.3. u(t)=1/C * ∫i(τ)dτ
7.2.1.4. W=1/2 *C*U²
7.2.1.5. U=U_0 * e^(-t/τ) (entladen)
7.2.1.6. U=U_0 * (1 - e^(-t/τ)) (laden)
7.2.1.7. τ=RC
7.2.1.7.1. Nach τ Sekunden ist ein Kondensator 63% ge- oder entladen
7.3. Frequenzfilter
7.3.1. Hochpass / Tiefpass
7.3.1.1. Hochpass lässt hohe Frequenzen durch
7.3.1.2. Tiefpass lässt tiefe Frequenzen durch
7.3.1.3. f_c=1/(2πτ)
7.3.2. Bandpass
7.3.2.1. f_m=1/(2π sqrt(LC))
8. Halbleiter
8.1. Transistor
8.1.1. Formel
8.1.1.1. B = I_C / I_B
8.1.1.2. Lastwiderstandsgerade: Ic=-1/R * Uce+(U_Vcc / R)
8.1.2. npn / pnp
8.1.2.1. npn
8.1.2.2. pnp
9. Digitale Speicherbausteine
9.1. SR-Latch
9.1.1. getaktetes SR-Latch - Clock
9.1.1.1. D-Latch - nur ein Eingang
9.1.1.1.1. D-Flipflop - Flankengesteuert (Pulsgenerator)
9.2. Pulsgenerator
10. Hardwaresynthese
10.1. MUX (Multiplexer) - Mehrere Eingänge, 1 Ausgang
10.1.1. Kann eine Funktion realisieren - z.B. Minterme
10.2. DEMUX - 1 Eingang, mehrere Ausgänge
10.3. Decoder - hat n Eingänge und 2^n ausgänge - Ausgang m_(i) wird 1, wenn (x1 x2, ...xn)_2 = i
10.4. Encoder - macht decoder rückgängig
10.5. PLDs (Programmable Logic Devices) CPLDs (Complex Programmable Logic D.)
10.5.1. Punkt-orientierte PLA
10.5.1.1. Darstellung
10.5.1.1.1. Es müssen links alle Variablen und ihr Negat eingegeben werden, um auf Negat-Multiplizierer zu verzichten
10.5.1.1.2. kein Punkt: Identer
10.5.1.1.3. Punkt in Oder-Ebene (unten) : Addierer
10.5.1.1.4. Punkt in Und-Ebene (oben): Multiplizierer
10.5.1.2. Faltung
10.5.1.2.1. Variablen können von rechts eingeleitet werden. Dann muss die Leitung in der Horizontalen aber an einer Stelle unterbrochen sein
10.5.1.3. PAL
10.5.1.3.1. Nur die Und-Ebene ist beschreibbar.
10.5.1.3.2. Nicht löschbar
10.5.2. Bausteintypen
10.5.2.1. Identer
10.5.2.2. Addierer
10.5.2.3. Multiplizierer
10.5.2.4. Negat-Multiplizierer
10.5.3. CPLDS - 50-200 Gates
10.5.3.1. FPGA (Field Programmable Gate Arrays) - 1,000,000+ gates
10.6. VHSIC (Very High Speed Integrated Circuit) Hardware Description Language
10.6.1. VHDL (VHSIC Hardware Description Language)
10.6.1.1. Aufbau
10.6.1.1.1. Entity - Black-Box Interface - Definiert Ein- und Ausgänge
10.6.1.1.2. Architecture - Implementierung der Funktionalität
10.6.1.1.3. Configuration - verbindet Entity mit Architecture
10.6.1.1.4. Package - globale Konstanten - Hilfsfunktionen...
11. Mikrocontroller (MCU)
11.1. I/O Register
11.1.1. Data Direction Register (DDR x)
11.1.1.1. lesen (0) / schreiben (1)
11.1.1.2. Legt für jedes Bit des betrachteten Ports fest, ob es ein Ein- oder Ausgangsbit ist
11.1.2. Port Register (PORT x)
11.1.2.1. Schreiben
11.1.2.2. Legt für Eingangspins fest, ob Pull-up Widerstände eingeschaltet sind (1)
11.1.3. Port Input Register (PIN x)
11.1.3.1. Nur Lesen!
11.1.3.2. Enthält Werte aller Pins
11.2. Interrupts
11.2.1. 1. Interrupt Requenst (IRQ) 2. momentan laufendes Programm wird unterbrochen, PC wird gesichert 3. MCU ruft ISR (Interrupt Service Routine) zur Behandlung des Ereignisses auf. 4. Rücksetzen des PC
11.2.2. 1. Global Interrupt Enable Bit = 1 2. Spezifisches Interrupt Enable Bit = 1 3. Interrupt Flag Bit = 1
11.3. Polling - periodische Prüfung auf Ereignisse
11.4. Counter - zählt externe Ereignisse
11.4.1. Timer - zählt Clock-Zyklen
11.4.1.1. Watchdog Timer (WD) - Zählt von einstellbarem Wert runter auf 0 - bei 0 wird der Mikrocontroller resettet -> Deadlock detection
12. AD / DA - Wandler
12.1. Digital-Analog Umwandlung
12.1.1. Multiplexen
12.1.2. Widerstandsnetz
12.1.2.1. Binär gewichtetes Widerstandsnetz
12.1.2.1.1. V_0=V_ref * (x / (2^n))
12.1.3. Pulsweitenmodulation (PWM)
12.2. Analog-Digital Umwandlung
12.2.1. Flash-Wandler
12.2.1.1. Mit Operationsverstärkern
12.2.2. Tracking-Wandler
12.2.2.1. DA-Wandler, Operationsverstärker und Up/Down Counter
12.2.3. Sukzessive Approximation
12.2.3.1. DA-Wandler, Operationsverstärker und SAR (Binäre Suche)
12.2.4. Einrampenverfahren
12.2.4.1. Comperatior vergleicht Sägezahnsignal mit gemessenem Signal. Mit Zeit bis zum Umspringen des Comperators den Wert berechnen.
13. Operationsverstärker
13.1. Darlington-Schaltung - hintereinander geschaltete Transistoren - Nachteil: schwankender Verstärkungsv.
13.2. Differenzverstärker
13.2.1. Operationsvertärker
13.3. Funktionen
13.3.1. Komparator
13.3.1.1. Welche Spannung ist größer
13.3.2. Verstärker
13.3.2.1. invertierender Verstärker
13.3.2.2. nichtinvertierender Versträrker
13.3.3. Impedanzwandler
13.3.4. Schmitt-Trigger
13.3.4.1. invertierender Schmitt-Trigger
13.3.4.2. nichtinvertierender Schmitt-Trigger
13.3.5. Addierer / Subtrahierer
13.3.6. Integrierer / Differenzierer