β: This English translation is in beta — the Traditional-Chinese original is the authoritative version.
Lab 07 — 1/f Noise Upconversion and ISF Symmetry
This lab answers the most profitable question in oscillator design: why do some oscillators have terrible close-in phase noise (a steep ) while others are clean? The answer lies not in the noise source but in the waveform's symmetry — specifically, in the ISF's DC Fourier coefficient .
Physical intuition (conclusion first): the device's (flicker) noise is concentrated at very low frequencies (near DC). Whether it can "upconvert" (get moved next to the carrier and become phase noise) depends on whether the ISF has a DC component. The ISF's DC value is . If the waveform is perfectly symmetric (rise and fall mirror-symmetric), : near-DC noise, multiplied by an ISF that "averages to zero", cancels and does not upconvert; if the waveform is asymmetric, : the near-DC noise survives, and the integrator then colors it into a steep, tall . Symmetry is a free lunch: making the waveform symmetric cuts phase noise for free.
1. Learning objectives
- Understand how device noise "upconverts" into close-in phase noise.
- Compare, by simulation, the close-in behavior of a symmetric ISF () and an asymmetric ISF ().
- Confirm with your own eyes: → close-in suppressed; → a steep appears.
- Connect this phenomenon to [P1] Eq.(23) (the expression) and Eq.(24) (the corner).
2. Mathematical model
The one-sided PSD of device flicker current noise has a shape ([P1] Eq.(22), p.185):
- Meaning: is the device's corner (corner frequency); below it the noise goes as , above it the noise approaches white.
- Units: is Hz; is dimensionless, so the whole expression is still Hz ✓.
Feeding this noise into the ISF's DC channel and integrating gives the close-in phase noise ([P1] Eq.(23), p.185):
- Where the slope comes from: (integrator, dB/dec) ( noise source, dB/dec) , i.e. ( dB/dec).
- is the switch: the whole expression is multiplied by . → this term vanishes (is suppressed), and close-in falls back to white-noise-dominated ; → appears with height proportional to .
The corner frequency where the and segments intersect ([P1] Eq.(24), p.185):
- Design implication: shrink (waveform asymmetry) and the corner moves left — the close-in region narrows.
- Notation trap: is a Fourier coefficient; the ISF's DC value is (see notation).
In this lab's toy formulation, the asymmetric ISF is
gamma_asym = cos(theta) + 0.5, DC value , corresponding to ; the symmetric ISF isgamma_sym = cos(theta), DC value , . Usingcosinstead of the LC's simply makes the "symmetric basis + DC shift" contrast more intuitive; both are toys.
3. Block diagram
4. Core Python code
Verbatim from simulations/lab_07_flicker_noise.py: the same flicker-noise record passes separately through the symmetric and asymmetric ISFs,
then each is integrated and its PSD estimated. Note that phase_from_isf is exactly "ISF weighting → cumsum integration".
def phase_from_isf(i_n, gamma_vals, q_max, fs):
g = gamma_vals * i_n / q_max
phi = np.cumsum(g) / fs
return phi - np.mean(phi)
def main():
f0 = 1.0
fs = 256.0
n = 2 ** 20
t = np.arange(n) / fs
q_max = 1.0
theta = 2 * np.pi * f0 * t
gamma_sym = np.cos(theta) # c0 = 0
gamma_asym = np.cos(theta) + 0.5 # c0 = 1.0 (DC = 0.5)
i_flicker = flicker_noise(n, fs, k_flicker=1e-4, rng=RNG)
phi_sym = phase_from_isf(i_flicker, gamma_sym, q_max, fs)
phi_asym = phase_from_isf(i_flicker, gamma_asym, q_max, fs)
f, S_sym = estimate_psd(phi_sym, fs, nperseg=2 ** 16)
_, S_asym = estimate_psd(phi_asym, fs, nperseg=2 ** 16)
- The only difference between the two ISFs is that
+ 0.5(DC shift). Everything else is identical — so any difference between the two output PSDs can only come from . This turns "is the switch for ?" into a controlled experiment.
5. Full script path
simulations/lab_07_flicker_noise.py
(Dependencies: flicker_noise and estimate_psd from simulations/common/noise_utils.py.
flicker_noise uses frequency-domain shaping: white noise → rFFT → multiply by → irFFT, producing .)
How to run: python scripts/run_all_sims.py.
6. Parameter table
| Parameter | Variable | Value | Notes |
|---|---|---|---|
| Oscillation frequency | f0 | (normalized) | normalization |
| Sampling rate | fs | 256 points per period | |
| Number of samples | n | about 4096 periods, sufficient low-frequency resolution | |
| Maximum charge swing | q_max | normalization | |
| Flicker strength | k_flicker | ||
| Symmetric ISF | gamma_sym | , DC | |
| Asymmetric ISF | gamma_asym | , DC | |
| Random seed | RNG | default_rng(7) | reproducible results |
7. Units table
| Quantity | Symbol | Unit |
|---|---|---|
| Flicker current-noise PSD | A²/Hz | |
| Device 1/f corner | rad/s | |
| ISF DC coefficient | dimensionless | |
| ISF 1st harmonic | dimensionless | |
| ISF rms | dimensionless | |
| Phase PSD | rad²/Hz | |
| Offset frequency | Hz (normalized) | |
| 1/f³ corner | rad/s |
8. Simulation figure

9. How to read the figure
- Red line (asymmetric, ): in the close-in (low-offset) region a tall, steep curve appears, with slope near dB/dec (). The black dotted line is a pure slope reference; the red line hugs it.
- Green line (symmetric, ): clearly much lower in the close-in region, with a gentler slope (near , gray dashed reference). is suppressed — visual proof that "waveform symmetry cuts close-in noise for free".
- The two lines converge at higher offsets: far from the carrier, the gap between and shrinks, because flicker noise itself is already weak at high frequency.
- Key point: the only difference between the two ISFs is . The huge close-in gap between red and green is caused entirely by . As , the red line collapses onto the green one.
10. Corresponding paper equations/figures
- Flicker noise source: [P1] Eq.(22), p.185, .
- close-in: [P1] Eq.(23), p.185; the prefactor is exactly this lab's switch.
- corner: [P1] Eq.(24), p.185, .
- Concept-figure source: paper_001 Eqs (23),(24); the symmetry argument of paper_002. Corresponding site figure
flicker_upconversion_symmetric_vs_asymmetric.png. For the geometric meaning of see alsosymmetric_vs_asymmetric_isf_c0.pngin lab_05.
11. Limitations and approximations
- Pedagogical toy model, not transistor-level: the two ISFs (
cos,cos+0.5) are teaching toys, not extracted from real circuits. The+0.5is an artificially set , purely for a controlled comparison. - Normalized units: , ,
k_flickeron an arbitrary scale — no absolute dBc/Hz. The relative shape of the curves (slopes, red–green gap) is the teaching point. - Flicker generation is approximate:
flicker_noiseuses frequency-domain shaping and relies onf_lowto tame the divergent DC bin; accuracy at very low frequency is limited byf_lowand the total record length. - Stationary-noise assumption: real flicker upconversion also involves cyclostationary modulation (the device leaks noise only while conducting); the full treatment uses (see effective_isf); this lab demonstrates only the mechanism.
- Welch low-frequency scatter: the close-in region has few points and large statistical scatter; the plot shows only the trustworthy segment .
Key takeaways
- Device noise is concentrated near DC; whether it upconverts into phase noise is determined by the ISF's DC component ().
- → close-in ( dB/dec); → suppressed, falls back to .
- The height is proportional to ; the corner .
- Design lesson: making the waveform symmetric (suppressing ) is a free way to lower close-in phase noise.
Further reading
- Full theory derivation: flicker_noise_upconversion
- Fourier geometry of : lab_05_fourier_isf
- Previous lab (white noise → 1/f²): lab_06_white_noise_phase_noise
- Use in design/theory: make the waveform symmetric (suppress ) to lower close-in → symmetry