This page is a self-testing ladder. Every problem sits inside a level (L1 easiest → L5 hardest), and every solution is hidden inside a collapsible callout so you can try first, then reveal. Nothing here uses a symbol the parent note didn't build — but let us re-anchor the three tools you will lean on so line one makes sense.
Everything below is just those facts, pushed harder.
Clock wiring is the whole test. Here each later flip-flop is clocked by the previous output, not by a shared master clock. That is the definition of an asynchronous (ripple) counter. The bits update one after another — they ripple from LSB to MSB.
Recall Solution L1·2
T0=1, constant. The LSB flips on every clock edge — that is what makes it the fastest, half-frequency bit. There is no lower bit to gate it, so nothing can ever stop it toggling.
Each flip-flop divides by 2, and n of them divide by 2n. We need 2n=32, so n=5 (since 25=32). The last flip-flop Q4 runs at f/25=f/32. See Frequency division.
Recall Solution L2·2
Delays add in series: tsettle=n⋅tpd=6×8=48 ns.
Maximum frequency is one count per settle window: fmax=1/48 ns≈20.8 MHz.
Any faster and the LSB starts a new count before the MSB finished the old one — the number is never valid.
Recall Solution L2·3
Synchronous delay does not scale with n: t=tpd+tAND=8+4=12 ns, so fmax=1/12 ns≈83.3 MHz.
Speed-up =48/12=4×. The bigger the counter, the bigger this gap grows — that is why wide counters go synchronous.
Going 7→8 means bits 0,1,2 must clear and bit 3 must set — but they do it in sequence, LSB first.
t=0: clock edge arrives at FF0. State still 0111.
t=5 ns: Q0:1→0. Its fall clocks FF1. State 0110 (decimal 6) — wrong.
t=10 ns: Q1:1→0. Its fall clocks FF2. State 0100 (decimal 4) — wrong.
t=15 ns: Q2:1→0. Its fall clocks FF3. State 0000 (decimal 0) — wrong.
t=20 ns: Q3:0→1. State 1000 (decimal 8) — correct at last.
The counter briefly displayed 6,4,0 — three decoding glitches — and only settled after 4×5=20 ns. These are real states, not bugs.
Recall Solution L3·2
With Q0=Q1=Q2=1,Q3=0:
T0=1 (always).
T1=Q0=1.
T2=Q0Q1=1.
T3=Q0Q1Q2=1.
All four T-inputs are 1, so on the shared clock edge all four bits toggle at once: 0111→1000. Because they move together, no intermediate wrong value ever appears — contrast L3·1.
Recall Solution L3·3
Bit 3 must flip only on a full carry out of the low three bits, i.e. exactly when they read 111. If we wrongly used T3=Q2, bit 3 would try to toggle every time Q2=1 — that includes states like 0100 (decimal 4), where no carry into bit 3 is happening. The AND of all lower bits is precisely the binary carry condition. See Carry lookahead.
We need a division ratio 48/1.5=32=25, so 5 flip-flops. Intermediate frequencies (each halves the previous):
Q0:24,Q1:12,Q2:6,Q3:3,Q4:1.5(all MHz).
The final output Q4 is the wanted 1.5 MHz.
Only the synchronous counter meets 40 MHz. This is the classic width-vs-speed trade forced by the ntpd term.
Recall Solution L4·3
To represent up to decimal 9 you need enough bits so that 2n>9: n=4 gives 24=16≥10. So 4 flip-flops.
A natural 4-bit counter would run 0→15; to stop at 9 we detect the first illegal state, decimal 10=1010, and use it to reset all flip-flops back to 0000. See Modulo-N counters. This is a "reset-on-N" design.
Reason at the edge: skew, degenerate cases, limits.
Recall Solution L5·1
This is clock skew — the same edge reaching different flip-flops at slightly different times (see Clock skew). Small skew is harmless. But if Δ approaches a flip-flop's tpd, an early flip-flop's new output can reach a late flip-flop before that late flip-flop has latched its old value — the counter can capture the wrong bit, exactly the kind of race a synchronous design was meant to avoid. So "synchronous" is an ideal; real chips fight skew to stay near it.
Recall Solution L5·2
Ripple: fmaxripple(n)=nt1. As n→∞, this →0 — a very wide ripple counter is hopelessly slow.
Sync (ideal / carry-lookahead): fmaxsync=t+g1, with no n in it — it stays flat regardless of width.
So the ratio fripplefsync=t+gnt grows linearly in n: the wider the counter, the more decisively synchronous wins.
Recall Solution L5·3
Ripple: fmax=1/(1⋅t)=1/t. Synchronous: fmax=1/(t+g).
With one flip-flop there is no lower bit to AND, so T0=1 needs no gate → g=0 → both give 1/t. Physically a single toggling flip-flop is neither "chained" nor "shared-clocked" — the two families only become distinguishable from two or more flip-flops onward. This is the boundary case where the whole distinction collapses.
Recall Solution L5·4
The transition 2m−1→2m forces m low bits to clear and bit m to set, all in sequence. Each of the m+1 toggles happens one tpd apart. The intermediate states (after each toggle except the last correct one) are the glitches: there are m of them, and the valid value arrives after (m+1)tpd.
For 0111→1000: m=3 → 3 glitches (0110,0100,0000), valid after 4tpd — matching the trace in L3·1. ✔