diff --git a/src/cheatsheets/Digitaltechnik.typ b/src/cheatsheets/Digitaltechnik.typ index 3fdd416..7a16d94 100644 --- a/src/cheatsheets/Digitaltechnik.typ +++ b/src/cheatsheets/Digitaltechnik.typ @@ -1,5 +1,6 @@ #import "../lib/common_rewrite.typ" : * #import "@preview/mannot:0.3.1" +#import "@preview/cetz:0.4.2" #show math.integral: it => math.limits(math.integral) #show math.sum: it => math.limits(math.sum) @@ -189,13 +190,87 @@ ] #bgBlock(fill: colorState)[ - #subHeading(fill: colorState)[Timing] + #subHeading(fill: colorState)[Latches, Flipflops und Register] ] #bgBlock(fill: colorState)[ - #subHeading(fill: colorState)[Latches und Register] + #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] ]