Added pictures
All checks were successful
Build Typst PDFs (Docker) / build-typst (push) Successful in 35s

This commit is contained in:
alexander
2026-02-18 00:33:32 +01:00
parent ab5aba22d5
commit e549f26275
27 changed files with 460 additions and 368 deletions

View File

@@ -30,6 +30,8 @@
], ],
) )
#set text(11pt)
#let pTypeFill = rgb("#dd5959").lighten(10%); #let pTypeFill = rgb("#dd5959").lighten(10%);
#let nTypeFill = rgb("#5997dd").lighten(10%); #let nTypeFill = rgb("#5997dd").lighten(10%);
@@ -37,7 +39,7 @@
[Digitaltechnik] [Digitaltechnik]
)) ))
#let SeperatorLine = line(length: 100%, stroke: (paint: black, thickness: 0.3mm)) #let SeperatorLine = line(length: 100%, stroke: (paint: black, thickness: 0.2mm))
#let MathAlignLeft(e) = { #let MathAlignLeft(e) = {
align(left, block(e)) align(left, block(e))
} }
@@ -201,6 +203,7 @@
#bgBlock(fill: colorOptimierung)[ #bgBlock(fill: colorOptimierung)[
#subHeading(fill: colorOptimierung)[Quine McCluskey] #subHeading(fill: colorOptimierung)[Quine McCluskey]
=== Quine
1. KNF/DNF $->$ KKNF/KDNF 1. KNF/DNF $->$ KKNF/KDNF
2. Primiplikant Bestimme \ 2. Primiplikant Bestimme \
2.1. Terme nach positive Literal ($x_i$) soltieren\ 2.1. Terme nach positive Literal ($x_i$) soltieren\
@@ -208,28 +211,186 @@
Eine Literal unterschied, #raw("X") müssen matchen \ Eine Literal unterschied, #raw("X") müssen matchen \
2.3. Abhacken was absorbiert wurde \ 2.3. Abhacken was absorbiert wurde \
=== MacCluskyn #image("../images/digitaltechnik/qmc6.jpg", height: 3cm)
#SeperatorLine
=== McClusky
1. Überdeckungstabelle aufstellen 1. Überdeckungstabelle aufstellen
#image("../images/digitaltechnik/qmc1.jpg", height: 3cm)
#SeperatorLine
2. Kernprimimplikanten finden \ 2. Kernprimimplikanten finden \
(Splaten mit nur einem Eintrag) \ (Splaten mit nur einem Eintrag) \
und vom Kerprimiplaten übdeckte \ und vom Kerprimiplaten übdeckte \
NICHT Kernprimstplaten Streichen NICHT Kernprimstplaten Streichen
#image("../images/digitaltechnik/qmc3.jpg", height: 3cm)
#SeperatorLine
3. Splaten dominazen \ 3. Splaten dominazen \
(Dominierende Splate streichen) (Dominierte Spalte streichend)
#image("../images/digitaltechnik/qmc4.jpg", height: 3cm)
#SeperatorLine
4. Zeilen dominazen \ 4. Zeilen dominazen \
(Domenierete Zeile streiche) \ (Domenierete Zeile streiche) \
Kosten: D1 dominierte D2 \ Kosten: D1 dominierte D2 \
D1 $<=$ D2 $->$ NUR dann streichen \ D1 $<=$ D2 $->$ NUR dann streichen \
#image("../images/digitaltechnik/qmc5.jpg", height: 3cm)
#SeperatorLine
5. Wiederhole 3.-5. solange noch was geht 5. Wiederhole 3.-5. solange noch was geht
] ]
#bgBlock(fill: colorState)[
#subHeading(fill: colorState)[Latches, Flipflops und Register]
#image("../images/digitaltechnik/dlatch2.jpg", height: 6cm)
]
#bgBlock(fill: colorState)[
#subHeading(fill: colorState)[Pipeline/Parallele Verarbeitungseinheiten]
#image("../images/digitaltechnik/pipeline1.jpg")
#image("../images/digitaltechnik/pipeline2.jpg")
#image("../images/digitaltechnik/parallel.jpg", height: 3cm)
]
#bgBlock(fill: colorState)[
#subHeading(fill: colorState)[Zustandsautomaten]
]
]
#pagebreak()
#columns(2, gutter: 2mm)[
// Mosfet
#bgBlock(fill: colorRealsierung)[
#subHeading(fill: colorRealsierung)[FET/MOSFET Funktion]
#grid(columns: (1fr, 2fr),
image("../images/digitaltechnik/gateWidth.jpg", height: 3cm),
[
#grid(columns: (1fr, 1fr),
row-gutter: 2.5mm,
[$W$: Kanalweite], [$L$: Kanallänge],
[Löcherbeweglichkeit: $mu_"n/p"$],
[Oxdy Dicke: $t_"ox"$],
[Oxdy Dielektriukum: $epsilon_"ox"$],
[$mu_"n" = 1,6 mu_"p" "bis" 3,5 mu_"p"$],
)
$L$ wir immer so kleine wie möglich gewählt $= L_"min"$
$beta_"n/p" = (mu_"n/p" epsilon_0 epsilon_"ox")/(t_"ox") W/L = K'_"n/p" W/L$
$R_"on" = $
]
)
#table(columns: (1fr, 1fr),
fill: (x, y) => if (calc.rem(y, 2) == 1) { tableFillLow } else { tableFillHigh },
[*NMOS*], [*PMOS*],
image("../images/digitaltechnik/nmos3.jpg"),
image("../images/digitaltechnik/pmos3.jpg"),
[
- Source am *niedrigen* Potenzial (*GND*)
- Guter PULL-DOWN
],
[
- Source am *hohes* Potenzial (*$V_"DD"$*)
- Guter PULL-UP
],
align(center+horizon, scale(
x: 75%, y: 75%,
zap.circuit({
import cetz.draw : *
import zap : *
rect((1.5,0),(4-1.5, 0.1), fill: rgb("#535353"), stroke: none)
rect((0,0),(4,-1), fill: pTypeFill, stroke: none)
rect((0.5,-0),(1.5, -0.5), fill: nTypeFill, stroke: none)
rect((4 - 1.5,-0),(4-0.5, -0.5), fill: nTypeFill, stroke: none)
rect((1.5,-0),(2.5, -0.5), fill: none, stroke: (paint: black, dash: "dotted", thickness: 0.06))
line((3, 0.3), (3, 0))
line((1, 0.3), (1, 0))
line((2, 0.3), (2, 0.1))
cetz.decorations.brace((2.5,-0.6),(1.5,-0.6))
content((2, -1.3), "Channel")
content((3, -0.25), $"n"^+$)
content((1, -0.25), $"n"^+$)
content((0.5, -0.75), "p")
content((3, 0.5), "S")
content((1, 0.5), "D")
content((2, 0.5), "G")
})
)),
align(center+horizon,scale(
x: 75%, y: 75%,
zap.circuit({
import cetz.draw : *
import zap : *
rect((1.5,0),(4-1.5, 0.1), fill: rgb("#535353"), stroke: none)
rect((0,0),(4,-1), fill: nTypeFill, stroke: none)
rect((0.5,-0),(1.5, -0.5), fill: pTypeFill, stroke: none)
rect((4 - 1.5,-0),(4-0.5, -0.5), fill: pTypeFill, stroke: none)
rect((1.5,-0),(2.5, -0.5), fill: none, stroke: (paint: black, dash: "dotted", thickness: 0.06))
line((3, 0.3), (3, 0))
line((1, 0.3), (1, 0))
line((2, 0.3), (2, 0.1))
cetz.decorations.brace((2.5,-0.6),(1.5,-0.6))
content((2, -1.3), "Channel")
content((3, -0.25), $"p"^+$)
content((1, -0.25), $"p"^+$)
content((0.5, -0.75), "n")
content((3, 0.5), "S")
content((1, 0.5), "D")
content((2, 0.5), "G")
})
)),
block( inset: (top: 2mm, bottom: 2mm),$ I_"Dn" = cases(
gap: #0.6em,
0 & 0 < U_"GS" < U_t,
beta_n (U_"GS" - U_t - U_"DS" / 2) U_"DS" quad & cases(delim: #none, U_"GS" >= U_t, 0 < U_"DS" < U_"GS" - U_t),
beta_n/2 (U_"GS" - U_"th")^2 & cases(delim: #none, U_"GS" >= U_t, U_"DS" > U_"GS" - U_t)
)$),
block( inset: (top: 2mm, bottom: 2mm), $I_"Dp" = cases(
gap: #0.6em,
0 & 0 > U_"GS" > U_t,
beta_p (U_"GS" - U_t - U_"DS" / 2) U_"DS" quad & cases(delim: #none, U_"GS" <= U_t, 0 > U_"DS" > U_"GS" - U_t),
beta_p/2 (U_"GS" - U_"th")^2 & cases(delim: #none, U_"GS" <= U_t, U_"DS" < U_"GS" - U_t)
)$),
grid(
columns: (auto, auto),
column-gutter: 2mm,
image("../images/digitaltechnik/nmos1.jpg", height: 2.5cm),
image("../images/digitaltechnik/nmos2.jpg", height: 2.5cm),
),
grid(
columns: (auto, auto),
column-gutter: 2mm,
image("../images/digitaltechnik/pmos1.jpg", height: 2.5cm),
image("../images/digitaltechnik/pmos2.jpg", height: 2.5cm),
),
)
]
#colbreak()
#columns(2, gutter: 2mm)[
// Dotierung // Dotierung
#bgBlock(fill: colorRealsierung)[ #bgBlock(fill: colorRealsierung)[
#subHeading(fill: colorRealsierung)[Dotierung]
#table( #table(
columns: (auto, 1fr), columns: (auto, 1fr),
[N-Type], [N-Type],
@@ -246,14 +407,12 @@
] ]
) )
#zap.circuit({ #zap.circuit({
import cetz.draw : * import cetz.draw : *
import zap : * import zap : *
diode("A", (0,1.7), (3,1.7), fill: black, i: (content: $i_d$, anchor: "south")) diode("A", (0,1.7), (3,1.7), fill: black, i: (content: $i_d$, anchor: "south"))
rect((0,0),(1,1), fill: pTypeFill, stroke: none) rect((0,0),(1,1), fill: pTypeFill, stroke: none)
rect((2,0),(3,1), fill: nTypeFill, stroke: none) rect((2,0),(3,1), fill: nTypeFill, stroke: none)
rect((1,0), (1.5,1), fill: color.lighten(pTypeFill, 50%), stroke: none) rect((1,0), (1.5,1), fill: color.lighten(pTypeFill, 50%), stroke: none)
@@ -270,6 +429,7 @@
content((1.75, 0.5), "+") content((1.75, 0.5), "+")
}) })
/*
#grid( #grid(
columns: (1fr, 1fr), columns: (1fr, 1fr),
column-gutter: 6mm, column-gutter: 6mm,
@@ -348,27 +508,10 @@
}) })
), ),
) )
*/
*Drain Strom:*
NMOS: $I_"Dn" = cases(
gap: #0.6em,
0 & 0 < U_"GS" < U_t,
beta_n (U_"GS" - U_t - U_"DS" / 2) U_"DS" quad & cases(delim: #none, U_"GS" >= U_t, 0 < U_"DS" < U_"GS" - U_t),
beta_n/2 (U_"GS" - U_"th")^2 & cases(delim: #none, U_"GS" >= U_t, U_"DS" > U_"GS" - U_t)
)$
PMOS: $I_"Dp" = cases(
gap: #0.6em,
0 & 0 > U_"GS" > U_t,
beta_p (U_"GS" - U_t - U_"DS" / 2) U_"DS" quad & cases(delim: #none, U_"GS" <= U_t, 0 > U_"DS" > U_"GS" - U_t),
beta_p/2 (U_"GS" - U_"th")^2 & cases(delim: #none, U_"GS" <= U_t, U_"DS" < U_"GS" - U_t)
)
$
] ]
// CMOS Circits
// NMOS/PMOS
#bgBlock(fill: colorRealsierung)[ #bgBlock(fill: colorRealsierung)[
#subHeading(fill: colorRealsierung)[CMOS] #subHeading(fill: colorRealsierung)[CMOS]
$hat(=)$ Complemntary MOS $hat(=)$ Complemntary MOS
@@ -497,126 +640,11 @@
) )
] ]
// CMOS
#bgBlock(fill: colorRealsierung)[
#subHeading(fill: colorRealsierung)[CMOS Verzögerung]
*Inverter*\
$t_("p"/"nLH") ~ (C_"L" t_"ox" L_"p/n")/(W_"p/n" mu_"p/n" epsilon(V_"DD" - abs(V_"Tpn"))) $
#grid(
columns: (1fr, 1fr),
[
*Steigend mit*
- Last $C_L$
- Oxyddicke $T_"ox"$
- Kandlalänge $L_"p/n"$
- Schwellspannung $V_"Tp/n"$
],
[
*Sinkend mit*
- Kanalweite
- Landsträger Veweglichkeit $mu_"p/n"$
],
)
$t_p ~ C_L/(beta(V_"DD" - abs(V_"T")))$
$t_p ~ C_L/(W(V_"DD" - abs(V_"T")))$
]
#bgBlock(fill: colorState)[
#subHeading(fill: colorState)[Latches, Flipflops und Register]
]
#bgBlock(fill: colorState)[
#subHeading(fill: colorState)[Timing]
*Register Bedinungen*
#cetz.canvas(length: 0.5mm, {
import cetz.draw: *
let cycle_time = 38
let cycle_start = cycle_time*0.8
let cycle_end = cycle_time*4
let signal_hight = 10
let switch_offset = cycle_time/13
let signal_storke = (paint: rgb("#2e2e2e"), thickness: 0.3mm)
let t_c2q = 0.6
let t_setup = 0.6
let t_hold = 0.4
// clk1
line((1*cycle_time + switch_offset/2, signal_hight + 1), (1*cycle_time + switch_offset/2, -40), stroke: (paint: rgb("#0004ff"), thickness: 0.4mm, dash: "densely-dashed"))
// q change
line((cycle_time*(t_c2q + 1) + switch_offset/2, -15 + signal_hight + 1), (cycle_time*(t_c2q + 1) + switch_offset/2, -40), stroke: (paint: rgb("#0004ff"), thickness: 0.4mm, dash: "densely-dashed"))
// d change
line((cycle_time*(t_setup + 2) + switch_offset/2, -30 + signal_hight + 1), (cycle_time*(t_setup + 2) + switch_offset/2, -40), stroke: (paint: rgb("#0004ff"), thickness: 0.4mm, dash: "densely-dashed"))
// clk
line((cycle_time*3 + switch_offset/2, signal_hight + 1), (cycle_time*3 + switch_offset/2, -40), stroke: (paint: rgb("#0004ff"), thickness: 0.4mm, dash: "densely-dashed"))
// hold time
line((cycle_time*(3+t_hold) + switch_offset/2, -30 + signal_hight + 1), (cycle_time*(3+t_hold) + switch_offset/2, -40), stroke: (paint: rgb("#0004ff"), thickness: 0.4mm, dash: "densely-dashed"))
content(( cycle_start -7, 5), "clk")
line((cycle_start,0), (cycle_time,0), (cycle_time + switch_offset,signal_hight), (cycle_time*2, signal_hight), (cycle_time*2 + switch_offset, 0), (cycle_time*3, 0), (cycle_time*3 + switch_offset, 10), (cycle_end, signal_hight), stroke: signal_storke)
translate((0, -15))
content((cycle_start -7, 5), "Q")
line(
(cycle_start,0), (cycle_time*(t_c2q + 1), 0),
(cycle_time*(t_c2q + 1) + switch_offset, signal_hight),
(cycle_time*(t_c2q + 3),signal_hight), (cycle_time*(t_c2q + 3) + switch_offset, 0),
(cycle_end + switch_offset, 0),
stroke: signal_storke
)
line(
(cycle_start,signal_hight), (cycle_time*(t_c2q + 1), signal_hight),
(cycle_time*(t_c2q + 1) + switch_offset, 0),
(cycle_time*(t_c2q + 3),0), (cycle_time*(t_c2q + 3) + switch_offset, signal_hight),
(cycle_end + switch_offset, signal_hight),
stroke: signal_storke
)
translate((0, -15))
content((cycle_start -7, 5), "D")
line(
(cycle_start,0), (cycle_time*(t_setup + 2), 0),
(cycle_time*(t_setup + 2) + switch_offset, signal_hight), (cycle_end + switch_offset, signal_hight), stroke: signal_storke
)
line(
(cycle_start,signal_hight), (cycle_time*(t_setup + 2), signal_hight),
(cycle_time*(t_setup + 2) + switch_offset, 0), (cycle_end + switch_offset, 0), stroke: signal_storke
)
})
]
#bgBlock(fill: colorState)[
#subHeading(fill: colorState)[Pipeline/Parallele Verarbeitungseinheiten]
]
#bgBlock(fill: colorState)[
#subHeading(fill: colorState)[Zustandsautomaten]
]
#colbreak()
#bgBlock(fill: colorRealsierung)[ #bgBlock(fill: colorRealsierung)[
#subHeading(fill: colorRealsierung)[Verlustleistung/Verzögerung] #subHeading(fill: colorRealsierung)[Verlustleistung/Verzögerung]
#image("../images/digitaltechnik/cmosPower.jpg", height: 6cm)
$t_p ~ C_L / (V_"DD" - V_"Tn")$ $t_p ~ C_L / (V_"DD" - V_"Tn")$
$P_"stat" ~ e^(-V_T)$ $P_"stat" ~ e^(-V_T)$
@@ -668,31 +696,95 @@
- Gatestrom - Gatestrom
] ]
// CMOS
#bgBlock(fill: colorRealsierung)[
#subHeading(fill: colorRealsierung)[CMOS Verzögerung]
*Inverter*\
$t_("p"/"nLH") ~ (C_"L" t_"ox" L_"p/n")/(W_"p/n" mu_"p/n" epsilon(V_"DD" - abs(V_"Tpn"))) $
#grid(
columns: (1fr, 1fr),
[
*Steigend mit*
- Last $C_L$
- Oxyddicke $T_"ox"$
- Kandlalänge $L_"p/n"$
- Schwellspannung $V_"Tp/n"$
],
[
*Sinkend mit*
- Kanalweite
- Landsträger Veweglichkeit $mu_"p/n"$
],
)
$t_p ~ C_L/(beta(V_"DD" - abs(V_"T")))$
$t_p ~ C_L/(W(V_"DD" - abs(V_"T")))$
]
#linebreak()
#bgBlock(fill: colorRealsierung)[ #bgBlock(fill: colorRealsierung)[
#subHeading(fill: colorRealsierung)[Verlustleistung] #subHeading(fill: colorRealsierung)[Verlustleistung]
$"#Schaltvorgänge"$ : Ganzer High-Low Cycles eines Signals
#linebreak()
$"Energie pro Schaltvorgang:" \ "Lade Verlust" + "Geladene Energie" \
= E_"stored" + E_"heat" = C_L V_"DD"^2$ (unabhängig von $R_"on"$)
#linebreak()
$alpha = "#Schaltvorgänge"/"#Takte (#Clk Flanken)"$ $alpha = "#Schaltvorgänge"/"#Takte (#Clk Flanken)"$
$P_"cap" = alpha dot f_"clk" dot C dot U_"DD"$ $P_"cap" = alpha dot f_"clk" dot C dot U_"DD"^2$
] ]
#colbreak() #colbreak()
#SIPrefixesTable #SIPrefixesTable
]
#place(bottom, #colbreak()
truth-table( #bgBlock(fill: colorBoolscheLogic)[
#subHeading(fill: colorBoolscheLogic)[Logik Gatter]
#grid(columns: (auto, 1fr),
row-gutter: 2mm,
align(center, box(image("../images/digitaltechnik/logicGates.jpg", height: 6cm, fit: "cover"), clip: true, height: 6cm/4)),
align(center+horizon, [*AND* \ $and$]),
align(center, box(inset: (top: -6cm/4), image("../images/digitaltechnik/logicGates.jpg", height: 6cm, fit: "cover"), clip: true, height: 6cm/4)),
align(center+horizon, [*OR* \ $or$]),
align(center, box(inset: (top: -6cm/4 * 2), image("../images/digitaltechnik/logicGates.jpg", height: 6cm, fit: "cover"), clip: true, height: 6cm/4)),
align(center+horizon, [*XOR* \ $xor$]),
align(center, box(inset: (top: -6cm/4 *3), image("../images/digitaltechnik/logicGates.jpg", height: 6cm, fit: "cover"), clip: true, height: 6cm/4)),
align(center+horizon, [*NOT* \ $not$])
)
#truth-table(
outputs: (
("AND", (0, 0, 0, 1)),
("OR", (0, 1, 1, 1)),
("XOR", (0, 1, 1, 0)),
),
inputs: ("A", "B")
)
#truth-table(
outputs: ( outputs: (
("NAND", (1, 1, 1, 0)), ("NAND", (1, 1, 1, 0)),
("NOR", (1, 0, 0, 0)), ("NOR", (1, 0, 0, 0)),
("XNOR", (1, 0, 0, 1)), ("XNOR", (1, 0, 0, 1)),
("XOR", (0, 1, 1, 0)),
("AND", (0, 0, 0, 1)),
("OR", (0, 1, 1, 1)),
), ),
inputs: ("A", "B") inputs: ("A", "B")
),
float: true
) )
]
]
]

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB