Initial commit :
Last change made - Inserted Flask API section
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
- [x] VL1: Einführung, Logik
|
||||
- [x] VL2: Beweise
|
||||
- [ ] Übungsblatt 1
|
||||
|
||||
- [x] VL3: Mengen
|
||||
- [x] Übungsblatt 2
|
||||
- [ ] Übungsblatt 3
|
||||
- [ ] VL4
|
||||
- [ ]
|
||||
@@ -0,0 +1,30 @@
|
||||
## Struktur von Program
|
||||
Programme sind hierarchisch aus Komponenten aufgebaut. Für jede
|
||||
Komponente geben wir Regeln an, wie sie aus anderen
|
||||
Komponenten zusammengesetzt sein können.
|
||||
|
||||
program = decl* stmt*
|
||||
decl = type name ( , name)*
|
||||
type = int
|
||||
|
||||
#### Statements
|
||||
stmt ::= ; | { stmt* } |
|
||||
name = expr; | name = read(); | write( expr ); |
|
||||
if ( cond ) stmt |
|
||||
if ( cond ) stmt else stmt |
|
||||
while ( cond ) stmt
|
||||
- Ein Statement ist entweder leer (d.h. gleich ;) oder eine
|
||||
geklammerte Folge von Statements;
|
||||
- Oder eine Zuweisung, eine Lese- oder Schreib-Operation;
|
||||
- Eine (einseitige oder zweiseitige) bedingte Verzweigung;
|
||||
- Oder eine Schleife.
|
||||
#### Expressions
|
||||
expr ::= number | name | ( expr ) |
|
||||
unop expr | expr binop expr
|
||||
unop ::= -
|
||||
binop ::= - | + | * | / | %
|
||||
- Ein Ausdruck ist eine Konstante, eine Variable oder ein geklammerter Ausdruck
|
||||
- Oder ein unärer Operator (unop), angewandt auf einen Ausdruck,
|
||||
- Oder ein binärer Operator(binop), angewandt auf zwei Argument-Ausdrücke.
|
||||
- Einziger unärer Operator ist (bisher) die Negation.
|
||||
- Mögliche binäre Operatoren sind Addition, Subtraktion, Multiplikation, (ganz-zahlige) Division und Modulo.
|
||||
@@ -0,0 +1,10 @@
|
||||
- [x] Folien: Einführung und Objektbasiertes Programmieren
|
||||
- [x] Folien: Testen
|
||||
- [x] Folien: Kontrollstrukturen und Felder
|
||||
- [x] Folien: Abstrakte Datentypen
|
||||
- [x] Folien: Objektorientierung
|
||||
- [x] Folien: Rekursion
|
||||
- [x] Folien: Fortgeschrittene Programmierkonstrukte
|
||||
- [x] Folien: Nebenläufigkeit
|
||||
- [x] Folien: GUIs
|
||||
- [x] Folien: Rekursion Revisited
|
||||
@@ -0,0 +1,49 @@
|
||||
- [x] Vorlesung 1: Einführung und Datendarstellungen
|
||||
- [x] Zentralübung 1: Zahlensysteme
|
||||
- [x] Übungsblatt 1: Zahlensysteme
|
||||
- [x] Vorlesung 2/3: Assemblersprachen
|
||||
- [x] Zentralübung 2: Einführung in RISC-V Assembly
|
||||
- [x] Übungsblatt 2: RISC-V Assembly
|
||||
- [x] Vorlesung 4/5: Assembler Beispiel und von Neumann Architektur
|
||||
- [x] Zentralübung 3: RISC-V Deep Dive
|
||||
- [x] Übungsblatt 3: RISC-V Teil 2 - Sprünge und Pointer
|
||||
- [x] Vorlesung 6: Andere ISAs zum Vergleich
|
||||
- [x] Vorlesung 7: Systemarchitektur
|
||||
- [x] Zentralübung 4: RISC-V Calling Convention and Rekursion
|
||||
- [x] Übungsblatt 4: RISC-V Teil 3 - Rekursion und Calling Convention
|
||||
- [x] Vorlesung 8/9: Speicherverwaltung und Caches
|
||||
- [x] Zentralübung 5: Caches
|
||||
- [x] Übungsblatt 5: Caches
|
||||
- [ ] Vorlesung 10: Boolesche Algebra
|
||||
- [x] Vorlesung 11: Addierer/Subtrahierer
|
||||
- [x] Zentralübung 6: Boolesche Algebra
|
||||
- [x] Übungsblatt 6: Kombinatorische Schaltungen
|
||||
- [ ] Vorlesung 12: Multiplizierer
|
||||
- [x] Vorlesung 13: Speicher
|
||||
- [x] Zentralübung 7: Sequenzielle Schaltungen
|
||||
- [x] Übungsblatt 7: Multiplizierer und Sequenzielle Logik
|
||||
- [x] Vorlesung 14/15: Single-Cycle Prozessor
|
||||
- [x] Zentralübung 8: Single-Cycle Prozessor
|
||||
- [ ] Übungsblatt 8: Single-Cycle Prozessor
|
||||
- [ ] Vorlesung 16: Endliche Automaten
|
||||
- [ ] Vorlesung 17: Multi-Cycle Prozessor
|
||||
- [ ] Zentralübung 9: Multi-Cycle Prozessor
|
||||
- [ ] Übungsblatt 9: Multi-Cycle Prozessor
|
||||
- [ ] Vorlesung 18/19: Moderne Systeme und Parallität
|
||||
- [ ] Zentralübung 10: Caches & Parallelität
|
||||
- [ ] Übungsblatt 10: Altklausur
|
||||
- [ ] Vorlesung 20: Das E/A Werk
|
||||
- [ ] Vorlesung 21: Implementierung auf das Physikalischen Schicht
|
||||
- [ ] Zentralübung 11: Modern RISC-V
|
||||
- [ ] Übungsblatt 11: Parallelisierung und Caches
|
||||
- [ ] Vorlesung 22/23: Pipelined Prozessor
|
||||
- [ ] Zentralübung 12: Pipelining
|
||||
- [ ] Übungsblatt 12: Pipelining
|
||||
- [x] Vorlesung 24: K-Maps
|
||||
- [x] Vorlesung 25: BDDs
|
||||
- [ ] Zentralübung 13: K-Maps und BDDs
|
||||
- [ ] Übungsblatt 13: K-Maps und BDDs
|
||||
- [ ] Vorlesung 26: SATs
|
||||
- [ ] Vorlesung 27: Physical Design
|
||||
- [ ] Zentralübung 14: SAT und Physical Design
|
||||
- [ ] Übungsblatt 14: SAT und Physical Design
|
||||
@@ -0,0 +1,37 @@
|
||||
# Datendarstellung
|
||||
#### Rechner arbeiten meistens im Binarsystem:
|
||||
- Beschreiben durch 0/1
|
||||
- "Strom an" / "Strom aus"
|
||||
#### Darstellung von Daten:
|
||||
- Reihen von "0" und "1"
|
||||
- Representierung von allen "Daten"
|
||||
- Eingaben/Ausgaben
|
||||
- Code
|
||||
# Zahlensysteme
|
||||
### Dezimalsystem:
|
||||
- $2019 = 2 * 10^3 + 0 * 10^2 + 1 * 10^1 + 9 * 10^0$
|
||||
- **10 Zahlensymbole:** 0,1, 2, 3, 4, 5, 6, 7 ,8 ,9, 0
|
||||
- Basis: 10
|
||||
### Andere Kulturen haben andere Basen
|
||||
- **Beispiel**: Maya - Basis: 20
|
||||
- **Konsequenz**: 20 Zahlensymbole
|
||||
## Systemen für Rechner
|
||||
### Binärsystem:
|
||||
- $1101\ 1001_2 = 1 * 2^7 + 1 * 2^6 + 0 * 2^5 + 1 * 2^4 + 1 * 2^3 + 0 * 2^0 + 0 * 2^2 + 0 * 2^1 + 1*2^0$
|
||||
- **Zahlensymbole**: 0, 1
|
||||
- Basis: 2
|
||||
**Beispiel**: 2019 = 111 1110 0011<sub>b</sub>
|
||||
### Hexadezimalsystem(Basis 16)
|
||||
- 217 = D9<sub>h</sub> = 13\*16<sup>1</sup> + 9\*16<sup>0</sup> =1101 1001<sub>b</sub>
|
||||
- **Zahlensymbole**: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
|
||||
- **!!! Vorteil**: 1 Hex-Symbol = 4 Binär-Symbole **!!!**
|
||||
## Binär- und Hexadezimal-Arithmetik
|
||||
### Addition:
|
||||
- Ähnlich zu Arithmetik im Dezimalsystem
|
||||
- Überlauf wird an die nächste Stelle weitergereicht
|
||||
- Beispiel:
|
||||
- System mit max. 5 Ziffern.
|
||||
- a = 01001<sub>2</sub> = 1 · 810 + 0 · 410 + 0 · 210 + 1 · 110 = 910
|
||||
- b = 00111<sub>2</sub> = 0 · 810 + 1 · 410 + 1 · 210 + 1 · 110 = 710
|
||||
- Ergebnis: 1610
|
||||
![[Pasted image 20260126042053.png]]
|
||||
@@ -0,0 +1,58 @@
|
||||
## Logiksynthese und -minimierung
|
||||
|
||||
- #### **Deduzierte Schaltungen lassen sich nicht effizient "von Hand entwickeln"**
|
||||
-> Wir brauchen Methodik für Schaltkreissynthese
|
||||
|
||||
- #### **Logiksynthese und -minimierung: Versuch, Logik der Schaltung:**
|
||||
- zu generieren bzw.
|
||||
- zu minimieren
|
||||
|
||||
- #### **Unterscheidung zwischen:**
|
||||
- **kombinatorischer Synthese** (Realisierung einer Booleschen Funktion)
|
||||
- **sequentieller Synthese** (Realisierung eines endlichen **Automaten**; kann als Boolesche Funktion repräsentiert werden)
|
||||
|
||||
- #### Ausgangspunkt: Funktionsbeschreibung (Wahrheitstabelle, Boolescher Ausdruck, ... )
|
||||
|
||||
## Wdhlg. : Synthese (simpel)
|
||||
|
||||
- #### Realisierung beliebiger Wahrheitstabellen durch **<font color="#00b0f0">Grundgatter</font> möglich
|
||||
- #### Vorgehen:
|
||||
- Für jede Zeile mit Ausgabewert 1:
|
||||
Und-Gatter mit passender Eingangsbeschaltung
|
||||
- Oder-Verknüpfung aller Und-Gatter
|
||||
|
||||
- ### Funktioniert für alle Tabellen, aber
|
||||
- <font color="#c00000">teuer</font>
|
||||
- <font color="#c00000">nicht skalierbar</font>
|
||||
![[20260119_kmaps_260129_183719.jpg]]
|
||||
|
||||
## Weitere Grundlagen
|
||||
|
||||
- #### Die Booleschen Ausdrücke <font color="#ff0000">x<sub>i</sub></font> und <font color="#ff0000">x<sub>i</sub>' </font>heißen <font color="#00b0f0">Literale</font>
|
||||
- x<sub>i</sub> ist <font color="#00b0f0">positives Literal</font>
|
||||
- x<sub>i</sub>' ist <font color="#00b0f0">negatives Literal</font>
|
||||
- #### Eine Konjunktion von Literalen heißt <font color="#00b0f0">Monom</font>, wenn:
|
||||
- jedes Literal kommt höchstens einmal vor
|
||||
- es kommt nicht sowohl das <font color="#00b0f0">positive</font> als auch das <font color="#00b0f0">negative</font> <font color="#00b0f0">Literal</font> einer Variable vor
|
||||
- Monome: **x<sub>1</sub>x<sub>2</sub>x<sub>3</sub>, x<sub>1</sub>x<sub>2</sub>x<sub>3</sub>'
|
||||
- #### Ein Monom heißt <font color="#00b0f0">vollständig</font> oder <font color="#00b0f0">Minterm</font>, wenn <font color="#ff0000">jede Variable</font> entweder als <font color="#00b0f0">positives</font> oder als <font color="#00b0f0">negatives</font> <font color="#00b0f0">Literal</font> vorkommt
|
||||
|
||||
- #### Eine Disjunktion von paarweise verschiedenen Monomen heißt <font color="#00b0f0">Polynom</font>. Sind alle <font color="#00b0f0">Monome</font> des <font color="#00b0f0">Polynoms</font> <font color="#00b0f0">vollständig</font>, so heißt das Polynom <font color="#00b0f0">vollständig</font>
|
||||
|
||||
- #### Eine Boolesche <font color="#00b0f0">Funktion</font> ist von ihrer Darstellung als Formel zu unterschieden
|
||||
- Die <font color="#00b0f0">Interpretationsfunktion</font> $\psi$ weist einer Formel die entsprechende Funktion zu
|
||||
- $f = (a+b) * c$ und $g = a * c + b * c$ sind unterschiedliche Formeln aber $\psi(f) = \psi(g)$
|
||||
## Logiktoptimierung
|
||||
|
||||
- #### Gegeben: Eine Boolesche Funktion $f$
|
||||
- #### Ziel: Darstellung von $f$ als <font color="#00b0f0">Minimalpolynom</font> $p$, das heißt ein Polynom sodass gilt:
|
||||
- $\psi(p) = f$
|
||||
- Die Anzahl an <font color="#00b0f0">Monomen</font> in $p$ ist **minimal**
|
||||
- Die Anzahl der <font color="#00b0f0">Literale</font> in $p$ ist **minimal**
|
||||
- #### Idee: $x_1x_2x_3 + x_1x_2\bar{x_3} = x_1x_2$
|
||||
- Die Belegung von $x_3$ hate keinen Einfluss auf den Wahrheitswert des Polynoms
|
||||
- $x_1x_2$ ist ein sogenannter <font color="#00b0f0">Implikant</font> von $x_1x_2x_3 + x_1x_2\bar{x_3}$
|
||||
- #### Allgemein: Ein Monom(!) $q$ ist ein Implikant der Funktion $f$ falls $\psi(q) \leq f$
|
||||
Das bedeutet das der Implikant kleiner oder optimierter als der Funktion ist
|
||||
- #### <font color="#00b0f0">Ein Primimplikant von f</font> ist ein maximaler Implikant $q$ von $f$, d.h. es gibt keinen Implikanten $s(s \neq q)$
|
||||
-
|
||||
Reference in New Issue
Block a user