Goal
Build a tunable digital chain that shifts a radio signal to a band near zero.
Prerequisites: Parts 02–05.
Future lessons
- Real mixer: sum and difference frequencies. Complex mixer: a shift of the spectrum.
- NCO — numerically controlled oscillator; DDS — direct digital synthesis. Phase accumulator, tuning word and sin/cos table; CORDIC as a later option.
- Frequency tuning step and spurious spectral components caused by limited phase precision.
- DDC — digital down-conversion: mixer → low-pass filter → decimation → I/Q near zero.
Lab plan
- At 96 kS/s, multiply cosines at 12 and 10 kHz, see 2 and 22 kHz, and extract 2 kHz.
- Do the experiment again with a complex tone and explain the difference.
- Build a DDC 192 → 12 kS/s and give reasons for the useful band and the filter.
- Compare an ideal oscillator with a model with finite word lengths in the phase accumulator and the lookup table.
We do the experiments in Python with NumPy, SciPy and Matplotlib. We keep the parameters, units and plots. The base models use float64 and complex128; we add bit-depth limits in separate experiments.
Completion criteria
- I can predict the sign of the shift and the positions of the wanted and image components.
- I can tell the difference between a model near zero or at an intermediate frequency and direct sampling of the radio frequency; I give reasons for the sample rate.
Result for the main project
A tunable DDC with points to measure the spectra.