Added a lot of shit
All checks were successful
Build Typst PDFs (Docker) / build-typst (push) Successful in 19s
All checks were successful
Build Typst PDFs (Docker) / build-typst (push) Successful in 19s
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
#import "@preview/mannot:0.3.1"
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "@preview/zap:0.5.0"
|
||||
#import "../lib/truthtable.typ" : *
|
||||
|
||||
#show math.integral: it => math.limits(math.integral)
|
||||
#show math.sum: it => math.limits(math.sum)
|
||||
@@ -21,6 +22,7 @@
|
||||
columns: (1fr, 1fr, 1fr),
|
||||
[#align(left, datetime.today().display("[day].[month].[year]"))],
|
||||
[#align(center, counter(page).display("- 1 -"))],
|
||||
[Thanks to Daniel for the circuit Symbols],
|
||||
[#align(right, image("../images/cc0.png", height: 5mm,))]
|
||||
)
|
||||
],
|
||||
@@ -205,6 +207,7 @@
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
#zap.circuit({
|
||||
import cetz.draw : *
|
||||
import zap : *
|
||||
@@ -228,56 +231,88 @@
|
||||
content((1.75, 0.5), "+")
|
||||
})
|
||||
|
||||
#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))
|
||||
#grid(
|
||||
columns: (1fr, 1fr),
|
||||
column-gutter: 6mm,
|
||||
align: center,
|
||||
[#align(center)[*PMOS*]], [#align(center)[*CMOS*]],
|
||||
grid.cell(inset: 2mm,
|
||||
align(center,
|
||||
zap.circuit({
|
||||
import "../lib/circuit.typ" : *
|
||||
|
||||
cetz.decorations.brace((2.5,-0.5),(1.5,-0.5))
|
||||
content((2, -1.3), "Channel")
|
||||
content((3, -0.25), "N")
|
||||
content((1, -0.25), "N")
|
||||
content((0.5, -0.75), "P")
|
||||
registerAllCustom();
|
||||
fet("T", (0,0), type: "P", scale: 150%);
|
||||
})
|
||||
)
|
||||
),
|
||||
grid.cell(inset: 2mm,
|
||||
align(center,
|
||||
zap.circuit({
|
||||
import "../lib/circuit.typ" : *
|
||||
|
||||
content((3, 0.5), "S")
|
||||
content((1, 0.5), "D")
|
||||
content((2, 0.5), "G")
|
||||
})
|
||||
registerAllCustom();
|
||||
fet("T", (0,0), type: "N", scale: 150%);
|
||||
}),
|
||||
)
|
||||
),
|
||||
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))
|
||||
|
||||
#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))
|
||||
|
||||
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")
|
||||
|
||||
cetz.decorations.brace((2.5,-0.5),(1.5,-0.5))
|
||||
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")
|
||||
})
|
||||
),
|
||||
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))
|
||||
|
||||
content((3, 0.5), "S")
|
||||
content((1, 0.5), "D")
|
||||
content((2, 0.5), "G")
|
||||
})
|
||||
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")
|
||||
})
|
||||
),
|
||||
|
||||
|
||||
)
|
||||
]
|
||||
|
||||
|
||||
// Quine McCluskey
|
||||
#bgBlock(fill: colorOptimierung)[
|
||||
#subHeading(fill: colorOptimierung)[Quine McCluskey]
|
||||
@@ -285,7 +320,131 @@ rect((1.5,-0),(2.5, -0.5), fill: none, stroke: (paint: black, dash: "dotted", th
|
||||
|
||||
// NMOS/PMOS
|
||||
#bgBlock(fill: colorRealsierung)[
|
||||
#subHeading(fill: colorRealsierung)[NMOS/PMOS]
|
||||
#subHeading(fill: colorRealsierung)[CMOS]
|
||||
$hat(=)$ Complemntary MOS
|
||||
|
||||
#table(
|
||||
columns: (1fr, 1fr),
|
||||
zap.circuit({
|
||||
import zap : *
|
||||
import cetz.draw : content
|
||||
import "../lib/circuit.typ" : *
|
||||
|
||||
set-style(wire: (stroke: (thickness: 0.025)))
|
||||
|
||||
registerAllCustom();
|
||||
fet("N0", (0,0), type: "N", angle: 90deg);
|
||||
fet("P0", (0,1), type: "P", angle: 90deg);
|
||||
wire("N0.G", (rel: (-0.1, 0)), (horizontal: (), vertical: "P0.G"), "P0.G")
|
||||
|
||||
node("outNode", (0,0.5))
|
||||
node("inNode", (-0.6,0.5))
|
||||
wire((-1, 0.5), "inNode")
|
||||
wire((0.2, 0.5), "outNode")
|
||||
|
||||
node("N2", (0,-0.5))
|
||||
node("N2", (0,1.5))
|
||||
|
||||
wire((-1, -0.5), (0.5, -0.5))
|
||||
wire((-1, 1.5), (0.5, 1.5))
|
||||
|
||||
content((-1, 0.5), scale($"X"$, 60%), anchor: "east")
|
||||
content((0.45, 0.5), scale($overline("X")$, 60%), anchor: "east")
|
||||
content((-0.9, 1.5), scale($"U"_"DD"$, 60%), anchor: "east")
|
||||
content((-0.9, -0.5), scale($"GND"$, 60%), anchor: "east")
|
||||
}),
|
||||
|
||||
[
|
||||
*Inverter*
|
||||
|
||||
$overline(X)$
|
||||
],
|
||||
|
||||
zap.circuit({
|
||||
import zap : *
|
||||
import cetz.draw : content
|
||||
import "../lib/circuit.typ" : *
|
||||
|
||||
set-style(wire: (stroke: (thickness: 0.025)))
|
||||
|
||||
registerAllCustom();
|
||||
fet("P0", (0.5,0.25), type: "P", angle: 90deg);
|
||||
fet("P1", (0.5,1.25), type: "P", angle: 90deg);
|
||||
fet("N0", (0,-1), type: "N", angle: 90deg);
|
||||
fet("N1", (1,-1), type: "N", angle: 90deg);
|
||||
|
||||
content((-0.7, 1.75), scale($"V"_"DD"$, 60%), anchor: "east")
|
||||
content((-0.7, -1.5), scale($"GND"$, 60%), anchor: "east")
|
||||
|
||||
content("N0.G", scale($"B"$, 60%), anchor: "east")
|
||||
content("P0.G", scale($"B"$, 60%), anchor: "east")
|
||||
content("N1.G", scale($"A"$, 60%), anchor: "east")
|
||||
content("P1.G", scale($"A"$, 60%), anchor: "east")
|
||||
|
||||
wire((-0.75, -1.5), (1.5, -1.5))
|
||||
wire((-0.75, 1.75), (1.5, 1.75))
|
||||
|
||||
wire("N0.S", "N1.S")
|
||||
node("N2", "P0.D")
|
||||
wire("N2", (horizontal: (), vertical: "N0.S"))
|
||||
node("N3", "N0.D")
|
||||
node("N4", "N1.D")
|
||||
node("N5", "P1.S")
|
||||
node("N6", (horizontal: (), vertical: "N0.S"))
|
||||
|
||||
wire("N2", (horizontal: (rel: (0.5, 0)), vertical: "N2"))
|
||||
|
||||
content((horizontal: (rel: (0.65, 0)), vertical: "N2"), scale($"Y"$, 60%))
|
||||
}),
|
||||
|
||||
[
|
||||
*NOR*
|
||||
|
||||
$overline(A +B) = Y$
|
||||
],
|
||||
|
||||
zap.circuit({
|
||||
import zap : *
|
||||
import cetz.draw : content
|
||||
import "../lib/circuit.typ" : *
|
||||
|
||||
set-style(wire: (stroke: (thickness: 0.025)))
|
||||
|
||||
registerAllCustom();
|
||||
content((-0.7, 0.5), scale($"V"_"DD"$, 60%), anchor: "east")
|
||||
content((-0.7, -2.75), scale($"GND"$, 60%), anchor: "east")
|
||||
|
||||
fet("P0", (0, 0), type: "P", angle: 90deg);
|
||||
fet("P1", (1, 0), type: "P", angle: 90deg);
|
||||
fet("N0", (0.5,-1.25), type: "N", angle: 90deg);
|
||||
fet("N1", (0.5,-2.25), type: "N", angle: 90deg);
|
||||
|
||||
wire((-0.75, 0.5), (1.5, 0.5))
|
||||
wire((-0.75, -2.75), (1.5, -2.75))
|
||||
wire("P0.D", "P1.D")
|
||||
|
||||
node("N2", (horizontal: "N1.D", vertical: "P0.D"))
|
||||
node("N3", "N0.S")
|
||||
wire("N2", "N3")
|
||||
wire("N3", (rel: (0.5, 0)))
|
||||
|
||||
content((horizontal: (rel: (0.65, 0)), vertical: "N3"), scale($"Z"$, 60%))
|
||||
node("4", "P0.S")
|
||||
node("4", "P1.S")
|
||||
node("4", "N1.D")
|
||||
|
||||
content("N0.G", scale($"B"$, 60%), anchor: "east")
|
||||
content("P0.G", scale($"B"$, 60%), anchor: "east")
|
||||
content("N1.G", scale($"A"$, 60%), anchor: "east")
|
||||
content("P1.G", scale($"A"$, 60%), anchor: "east")
|
||||
}),
|
||||
|
||||
[
|
||||
*NAND*
|
||||
|
||||
$overline(A dot B) = Y$
|
||||
],
|
||||
)
|
||||
]
|
||||
|
||||
// CMOS
|
||||
@@ -427,9 +586,6 @@ rect((1.5,-0),(2.5, -0.5), fill: none, stroke: (paint: black, dash: "dotted", th
|
||||
- Leckstom (weil Diode)
|
||||
- Gatestrom
|
||||
|
||||
|
||||
|
||||
|
||||
*Schaltrate*
|
||||
|
||||
$alpha_"clk" = 100%$
|
||||
@@ -437,4 +593,19 @@ rect((1.5,-0),(2.5, -0.5), fill: none, stroke: (paint: black, dash: "dotted", th
|
||||
$alpha_"logic" = 50%$
|
||||
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
#place(bottom,
|
||||
truth-table(
|
||||
outputs: (
|
||||
("NAND", (1, 1, 1, 0)),
|
||||
("NOR", (1, 0, 0, 0)),
|
||||
("XNOR", (1, 0, 0, 1)),
|
||||
("XOR", (0, 1, 1, 0)),
|
||||
("AND", (0, 0, 0, 1)),
|
||||
("OR", (0, 1, 1, 1)),
|
||||
),
|
||||
inputs: ("A", "B")
|
||||
),
|
||||
float: true
|
||||
)
|
||||
Reference in New Issue
Block a user