diff --git a/src/cheatsheets/Digitaltechnik.typ b/src/cheatsheets/Digitaltechnik.typ new file mode 100644 index 0000000..0c3bc3e --- /dev/null +++ b/src/cheatsheets/Digitaltechnik.typ @@ -0,0 +1,176 @@ +#import "../lib/common_rewrite.typ" : * +#import "@preview/mannot:0.3.1" + +#show math.integral: it => math.limits(math.integral) +#show math.sum: it => math.limits(math.sum) + +#set page( + paper: "a4", + margin: ( + bottom: 10mm, + top: 5mm, + left: 5mm, + right: 5mm + ), + flipped:true, + footer: context [ + #grid( + align: center, + columns: (1fr, 1fr, 1fr), + [#align(left, datetime.today().display("[day].[month].[year]"))], + [#align(center, counter(page).display("- 1 -"))], + [#align(right, image("../images/cc0.png", height: 5mm,))] + ) + ], +) + +#place(top+center, scope: "parent", float: true, heading( + [Digitaltechnik] +)) + +#let SeperatorLine = line(length: 100%, stroke: (paint: black, thickness: 0.3mm)) +#let MathAlignLeft(e) = { + align(left, block(e)) +} + +#let colorBoolscheLogic = color.hsl(105.13deg, 92.13%, 75.1%) +#let colorFolgen = color.hsl(202.05deg, 92.13%, 75.1%) +#let colorReihen = color.hsl(280deg, 92.13%, 75.1%) +#let colorAbleitung = color.hsl(356.92deg, 92.13%, 75.1%) +#let colorIntegral = color.hsl(34.87deg, 92.13%, 75.1%) + +#let LNot(x) = math.op($overline(#x)$) + +#columns(4, gutter: 2mm)[ + #bgBlock(fill: colorBoolscheLogic)[ + #subHeading(fill: colorBoolscheLogic)[Allgemein] + *Moorsches Gesetz:* 2x der Anzahl der Transistoren pro Fläche (in 2 Jahren) + + Flächenskalierung eines Transistors: $1/sqrt(2)$ + + *Kombinatorisch:* Kein Gedächtnis + + *Fan-In:* Anzahl der Inputs eines Gatters + + *Fan-Out:* Anzahl der Output Verbindungen eines Gatters + ] + + #bgBlock(fill: colorBoolscheLogic)[ + #subHeading(fill: colorBoolscheLogic)[Boolsche Algebra] + + *Dualität* + $LNot(0) = 1$, $LNot(1) = 0$ + + *Äquivalenz* $LNot((LNot(A)))=A$\ + $A dot A = A$, $A + 0 = A$ \ + + *Konstanz* + $A dot 1 = A$ $A + 1 = 1$ + + *Komplementärgesetz* \ + $A dot LNot(A) = 0$, $A + LNot(A) = 1$ + + *Kommutativgesetz* \ + $A dot B = B dot A$, $A + B = B + A$ + + *Assoziativgesetz*\ + $A dot (B dot C) = (A dot B) dot C$\ + $A + (B + C) = (A + B) + C$ + + *Distributivgesetz*\ + $A dot (B + C) = A dot B + A dot C$ \ + $A + (B dot C) = (A + B) dot (A + C)$ + + *De Morgan*\ + $LNot((A + B)) = LNot(A) dot LNot(B)$\ + $LNot((A dot B)) = LNot(A) + LNot(B)$ + + *Absorptionsgesetz*\ + $A + (A dot B) = A$\ + $A dot (A + B) = A$ + + *Resolutionsgesetz (allgemein)*\ + $X dot A + LNot(X) + B = X dot A + LNot(X) dot B + bold(A dot B)$ + + *Resolutionsgesetz (speziell)*\ + $X dot A + LNot(X) dot A = A$\ + $(X + A) dot (LNot(X) + A) = A$ + ] + + #bgBlock(fill: colorBoolscheLogic)[ + #subHeading(fill: colorBoolscheLogic)[Boolsche Funktionen] + + $f: {0,1}^n -> {0,1}$ + + Variablenmenge: ${x_0, x_1, ..., x_n}$\ + Literalmenge: ${x_0, ..., x_n, LNot(x_0), ... LNot(x_n)}$ \ + Einsmenge: $F = {underline(v) in {0,1}^n | f(underline(v)) = 1}$ + Nullmenge: $overline(F) = {underline(v) in {0,1}^n | f(underline(v)) = 0}$ + Don't-Care-Set: ${underline(v) in {0,1}^n | f(underline(v)) = *}$ + + Funktionsbündel: $underline(y) = underline(f)(underline(x))$ \ + $underline(f): {0,1}^n -> {0,1}^m$ + + *Kofaktoren* aka Bit $n$ fixen\ + $x_i : f_x_i = f(x_1, ..., 1, ..., x_n)$\ + $overline(x)_i : f_overline(x)_i = f(x_1, ..., 0, ..., x_n)$ + + *Substitutionsregel* + + $x_i dot f = x_i dot f_x_i$ + + $overline(x)_i dot f = overline(x)_i dot f_overline(x)_i$ + + $x_i + f = x_i + f_overline(x)_i$ + + $overline(x)_i + f = overline(x)_i + f_x_i$ + + *Boolsche Expansion*\ + $f(underline(x)) = x_i dot f_x_i + overline(x)_i dot f_overline(x)_i$ + + $f(underline(x)) = (x_i + f_overline(x)_i) dot (overline(x)_i + f_x_i)$ + + $overline(f(underline(x))) = overline(x)_i dot overline(f_overline(x)_i) + x_i dot overline(f_x_i)$ + + $overline(f(underline(x))) = (overline(x)_i + overline(f_x_i)) dot (x_i + overline(f_overline(x)_i)) $ + + *Eigentschaften:* + + tautologisch: $f(underline(x)) = 1, forall underline(x) in {0,1}^n$\ + kontradiktorisch: $f(underline(x)) = 0, forall underline(x) in {0,1}^n$\ + unabhängig von $x_i <=> f_x_i = f_overline(x)_i$\ + abhängig von $x_i <=> f_x_i != f_overline(x)_i$\ + ] + + #bgBlock(fill: colorBoolscheLogic)[ + #subHeading(fill: colorBoolscheLogic)[Hauptsatz der Schaltalgebra] + Jede $f(x_0, ...,x_n)$ kann als... + - *Minterme $m$:* $ = LNot(x)_0 dot x_1 dot ...$\ + VerODERungen von VerUNDungen\ + $f(underline(x)) = m_0 + m_1 + ... + m_n$ + + - *Maxterme $M$:* $ = LNot(x)_0 + x_1 ü ...$\ + VerUNDungen von VerODERungen\ + $f(underline(x)) = m_0 dot m_1 dot ... dot m_n$ + + ... dargestellt werden + + *DNF:* Disjunktive Normalform, *Minterme* + - Term $tilde.equiv$ $1$-Zeile + - $LNot(x)_0 dot x_1 + x_0 dot x_1 +...$\ + - $1 tilde.equiv x_0$, $0 tilde.equiv overline(x_0)$ + + *KNF:* Konjunktive Normalform, *Maxterme* + - Term $tilde.equiv$ $0$-Zeile + - $(LNot(x)_0 + LNot(x)_1) dot (x_0 + x_1) dot...$\ + - $1 tilde.equiv overline(x_0)$, $0 tilde.equiv x_0$ + + Kanonische: In jedem Term müssen alle enthalten sein. + + *KDNF:* Kanonische DNF\ + *KKNF:* Kanonische KNF + + $f(underline(x)) -->$ *KKNF* / *KDNF* mit Boolsche Expansion + + ] +] \ No newline at end of file