The Python scripts in ex/ and the notebooks in jupyter/ also exist as interactive pages. The plots are the same plots; the difference is that the constants at the top of the script are sliders, so you can find out what happens when you change them without waiting for matplotlib. Each page says which source it came from and where it deviates from it.

Open the gallery

Switched capacitor circuits

  • Sampling — a pulse train multiplies in time and copies the spectrum to every multiple of the sample rate. Move the tone past Nyquist and watch it alias. ex/dt.py, ex/sub.py
  • First order IIR — one line of feedback, one pole, and the z-plane, the time domain and the spectrum side by side. ex/iir.py

Data converters

  • Quantization — where SQNR = 6.02B + 1.76 dB comes from, and where it stops being true. ex/q.py, ex/quantization.py
  • Oversampling — three dB per octave, measured, against the ideal line. ex/osr.py
  • Noise shaping — a first order sigma-delta loop, its integrator state, its bitstream, and nine dB per octave. ex/sd_1st.py

Filters, loops and oscillators

  • Biquad — one denominator, five responses. The poles never move; only the zeros do. jupyter/biquad.ipynb
  • PLL loop — a charge pump PLL as one open-loop gain: phase margin, peaking, settling, and where each noise source lands. sun_pll_sky130nm/jupyter/pll.ipynb
  • Crystal impedance — the narrow inductive window between series and parallel resonance, and how little you can pull it. jupyter/xosc.ipynb

Voltage regulators

  • Buck converter — a PWM buck integrated one time step at a time, including the cold start that draws hundreds of times the current it will ever need. jupyter/buck.ipynb
  • PFM buck — the same power stage with no clock, where the switching frequency tracks the load. jupyter/buck_pfm.ipynb
  • Voltage mode buck — type 3 compensation by the K-factor method, checked against line and load steps on the real switching converter. the closed loop jupyter/buck.ipynb describes but does not build

Diodes, references and energy sources

  • Diode vs temperature — ni(T) to IS(T) to VD(T), and the curvature a first-order bandgap cannot correct. ex/vd.py
  • Antenna diode leakage — diffusion and generation leakage from 200 K to 1000 K, with the plasma process steps shaded. ex/antenna_diode_leakage.py
  • PV cell — I-V and P-V curves, the maximum power point, and why harvesting is a current problem. ex/pv.py, ex/pv_v.py

Elsewhere

cicadc is the same idea taken further: a full ADC visualiser with second-order and leapfrog modulators, a decimation filter, and a car driving along the waveform.