Spot the mistake in this design: built exercise #7 (draft)¶
Drafted 8 Oct 2026 for issue #227. Nothing has been posted. A BUILT exercise under the "Built exercises" rule in marketing-block-1.md: made up on purpose, ONE planted mistake, never presented as an AI's answer. Same style as #3, but from a MagicON RECEIVER budget: it tests what "undersampling" (sampling a high IF with a slow clock) asks of the clock.
Post 1 (midweek): the puzzle¶
Spot the mistake in this design. 🔎
A made-up teaching example. A 9.4 GHz marine radar receiver mixes down to a 1.128 GHz IF, 10 MHz wide, and samples it directly with a slow ADC clock (Nyquist zone 113). Take every figure as given. One sentence in the student's notes is wrong. Which one, and why?
Answer on Friday.
Image (figures and notes):
| Item | Figure |
|---|---|
| IF band to digitise | 1123 to 1133 MHz (1.128 GHz, 10 MHz wide) |
| ADC clock | 20.05333439 MHz, in Nyquist zone 113 |
| Clock source | a standard crystal, ±20 ppm |
Student's notes: "At 20.05333439 MHz the whole 1123–1133 MHz band fits inside Nyquist zone 113, so it is sampled without aliasing." (true) "A standard ±20 ppm crystal is accurate enough for that clock." (planted mistake)
Post 2 (Friday): the answer¶
The second sentence is wrong. In zone 113 the clock may only move inside a window 474.083 Hz wide: 20.053097345 to 20.053571429 MHz, which is ±11.82 ppm. A ±20 ppm crystal can be off by more than that, and then the band folds onto itself ("aliasing") and the echoes are garbled.
MagicON's receiver design asks for a TCXO (a temperature-compensated crystal oscillator) or better. The other fix is to sample in a lower Nyquist zone: a faster clock, but a wider window.
Lesson: undersampling saves clock speed but costs clock accuracy. Check the clock's window, not just "faster than twice the bandwidth".
Proof (MagicON result, for the answer image)¶
MagicON design_rf_receiver, run 2026-10-08 through the MagicON AI connector (live public
server). Inputs: rfFrequencyHz 9.4e9, bandwidthHz 10e6, application marine_radar,
requiredSnrDb 13; grounding caller_asserted (a made-up brief).
frequencyPlan: ifHz 1128000000 (ifSourceengine: the engine chose the IF), loHz 10528000000 (high side).- Assumption, verbatim: "ADC band inferred as the IF +/- half the bandwidth (1123.0-1133.0 MHz) because none was given".
adcInterface: sampleRateHz 20053334.39, nyquistZone 113.- Warning, verbatim: "Nyquist zone 113: the reported sample rate is CENTRED in the zone's legal window, which is 20.053097345-20.053571429 MHz (474.083 Hz wide). The clock must therefore hold +/-11.82 ppm; outside the window the signal aliases. An ordinary crystal (+/-20 to 50 ppm over temperature) cannot hold that; a TCXO or better is required. Digitising a lower Nyquist zone would relax this, at a higher sample rate inside a wider window."
- Parts (not shown in the post): limiter TGL2209-SM, LNA BFP840ESD, image filter B095MB1S, mixer CMD183C4, LO HMC530LP5, IF filter CBP2-1090C+, IF amp PHA-23LN+, step attenuator HMC1119.
The planted change: none of the figures; the ±20 ppm crystal is the brief's choice, picked from the "ordinary crystal" range the engine names, and the note calls it good enough.
Other things the result says (not used in the post)¶
- Clock JITTER (tiny timing wobble), not ADC resolution, limits this receiver: 63.0 dB SNR at 1.13 GHz with an ASSUMED 100 fs clock, below the chain's own 84.7 dB dynamic range; holding it needs ≤ 8.2 fs, and "a higher-resolution converter will not help". A later exercise could use this ("buy a 16-bit ADC"), but the 100 fs is the engine's assumption, so the brief would have to state a clock.
Before posting¶
- Every figure is the engine's except the ±20 ppm, which is the made-up brief's choice. The zone-113 window and ppm limit come straight from the warning above.
- MagicON
check_groundingon the post texts (2026-10-08) flags two figures only for how they are written: 20.05333439 MHz (the engine givessampleRateHz20053334.39, in Hz) and ±11.82 ppm (the engine writes "+/-11.82 ppm"). Re-checked in the engine's own form, both pass. A rounded window ("20.053571 MHz") was also flagged, so the post uses the full digits. - Images:
spot-the-mistake-built-07-puzzle.png,spot-the-mistake-built-07-answer.png, built bydocs/scripts/make-spot-the-mistake-built-07.py. - Check posted-log.md first; log both posts after posting.