INTERACTIVE EXAMPLES

TFE4188 Advanced Integrated Circuits · back to the course
SAMPLING
A pulse train multiplies a signal in time and copies its spectrum to every multiple of fs. Move the tone past Nyquist and watch it alias; turn the window off and watch the floor swallow the sidebands.
ex/dt.py, ex/sub.py · switched capacitor circuits
FIRST ORDER IIR
One line of feedback, one pole. Drag the pole from the unit circle inwards and watch the corner frequency, the DC gain and the measured spectrum move together with the algebra.
ex/iir.py · switched capacitor circuits
QUANTIZATION
Where SQNR = 6.02B + 1.76 dB comes from, and where it stops being true. One bit gives harmonics, four bits gives noise, ten bits gives whatever was already on the input.
ex/q.py, ex/quantization.py · data converters
BESSEL QUANTIZATION NOISE
The exact series behind quantization error: odd harmonics with Bessel amplitudes, not a white noise floor. Watch the formula and a measured FFT land on top of each other, and see when calling it noise becomes fair.
OVERSAMPLING
Quantization noise power is fixed; spread it wider and keep less of it. Three dB per octave, measured, against the ideal line.
ex/osr.py · data converters
NOISE SHAPING
A first-order sigma-delta loop in six lines, with the integrator state, the bitstream, the decoded output and nine dB per octave all on one screen.
ex/sd_1st.py · data converters
DIODE VS TEMPERATURE
ni(T) to IS(T) to VD(T), and the couple of millivolts of curvature that a first-order bandgap reference cannot correct.
ex/vd.py · diodes, references and bias
ANTENNA DIODE LEAKAGE
Diffusion and generation leakage from 200 K to 1000 K, with the plasma etch and deposition steps shaded — the temperatures where an antenna diode has to do its job.
ex/antenna_diode_leakage.py · diodes and ESD
PV CELL
A diode with a current source across it. I-V and P-V curves, the maximum power point, and why harvesting in a dim room is a current problem rather than a voltage one.
ex/pv.py, ex/pv_v.py · energy sources
BIQUAD
One denominator, five responses. Low-pass, band-pass, high-pass, notch and all-pass all share the same poles — switching between them only moves the zeros.
jupyter/biquad.ipynb · analog front end
BUCK CONVERTER
A PWM buck integrated one time step at a time. Watch the output settle on VDDH·D, and watch a cold start draw hundreds of times the current it will ever need.
jupyter/buck.ipynb · voltage regulators
PFM BUCK
The same power stage with no clock: a three-state machine that fires a fixed packet of charge whenever the output sags. Switching frequency tracks the load, which is the whole point.
jupyter/buck_pfm.ipynb · voltage regulators
VOLTAGE MODE BUCK
The closed loop the buck notebook stops just short of: a type 3 compensator placed by the K-factor method, then the switching converter run against a line step and a load step to see whether the design was right.
closed loop on jupyter/buck.ipynb · voltage regulators
PLL LOOP
A charge pump PLL as one open-loop gain: phase margin, closed-loop peaking, the step response, and which noise source each part of the spectrum belongs to.
sun_pll_sky130nm/jupyter/pll.ipynb · phase locked loops
CRYSTAL IMPEDANCE
Series and parallel resonance a few kilohertz apart on a ten megahertz part, the narrow inductive window an oscillator has to live in, and how little you can pull it.
jupyter/xosc.ipynb · oscillators
CICADC ↗
The full ADC visualiser: Nyquist, first and second order sigma-delta and leapfrog modulators, a real decimation filter, quantization noise and spectrum — with a car driving along the waveform.
wulffern/cicadc · a separate project

ABOUT THESE PAGES

Each page is an interactive version of one of the Python scripts in ex/ or one of the notebooks in jupyter/. 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.

They are plain HTML, CSS and JavaScript with no dependencies and no network access, so they work offline, on a phone, and from a local copy of the repository. If a page disagrees with the script it is a bug; the source for both is in the repo, and the reasoning is in the notes below each set of plots.

Four notebooks have no page here. jupyter/dt.ipynb and jupyter/diode_voltage.ipynb are the same models as ex/dt.py and ex/vd.py, so the sampling and diode pages already cover them. jupyter/circuits.ipynb and sun_pll_sky130nm/jupyter/pfd.ipynb plot real SPICE output rather than a model, so there is nothing to turn into a slider.