Frequency Response, Bode Plots & Bandwidth

How gain and phase change with frequency. Learn transfer functions, poles and zeros, low-frequency response from coupling and bypass capacitors, midband gain, high-frequency response from device capacitances, corner frequencies and time constants, bandwidth and gain-bandwidth product, dominant-pole behaviour, cascaded poles, and drawing Bode magnitude and phase plots (slopes of ±20 dB/decade, phase contributions, decades and octaves) — with Python computing a bandpass amplifier's Bode magnitude, coupling-capacitor size and cascaded bandwidth.

Real amplifiers only amplify over a range of frequencies. Coupling capacitors cut low frequencies; transistor and parasitic capacitances cut high frequencies. The Bode plot captures both on one graph.

Bode plots are also the language of feedback stability, filters and op-amp specifications — reading them fluently is essential for every analog engineer.

An analogy

An amplifier's frequency response is like a stadium's audience: very slow chants (low frequencies) fade because nobody keeps them going, very fast ones (high frequencies) blur because people can't keep up — only the middle range gets the full roar.

Three frequency regions

Low frequencies: coupling and bypass capacitors have high reactance, reducing gain (high-pass behaviour). Midband: capacitors are effectively shorts/opens and gain is flat. High frequencies: device and parasitic capacitances shunt signals (low-pass behaviour). Bandwidth = f_H − f_L ≈ f_H for audio and wideband amplifiers.

Poles, zeros and Bode plots

Rules for sketching:

Low-frequency design

Each coupling capacitor forms a high-pass with the resistance it sees (source + input, or output + load); the emitter bypass capacitor often sets the dominant low corner because it sees the small resistance r_e + R_s/β. Choose one capacitor to set f_L and make the others' corners ~10× lower so they don't interact.

Gain-bandwidth trade-offs

For single-pole (dominant-pole) amplifiers, gain × bandwidth is constant: an op-amp with GBW = 10 MHz gives 100 kHz at gain 100. Cascading n identical stages multiplies gain but shrinks bandwidth by √(2^(1/n) − 1). Feedback trades gain for bandwidth (and stability). Rise time relates to bandwidth: t_r ≈ 0.35/f_H for a single pole.

Formulas

Worked example: Gain at 10× corner

Given: Single pole at 1 kHz, A = 60 dB

Find: Gain at 10 kHz.

Answer: ≈ 40 dB

Worked example: Bandwidth from GBW

Given: GBW 1 MHz op-amp, gain 50

Find: f_H.

Answer: 20 kHz

Worked example: Rise time

Given: f_H = 200 kHz

Find: t_r.

Answer: 1.75 µs

Bode-plot construction rules

|H| (dB)
  40 ┤          ________________________
     │        ╱ 20 Hz                   ╲ 200 kHz
  20 ┤      ╱  +20 dB/dec          −20 dB/dec ╲
   0 ┼────╱────────────────────────────────────╲────► f (log)
  Each pole: −20 dB/dec after its corner, phase −45° at the corner, −90° total
  Each zero: +20 dB/dec, phase +45° at the corner, +90° total
  At the corner the exact curve is 3 dB below the straight-line asymptote

Draw straight-line asymptotes: flat midband, slopes that change by 20 dB/decade at each corner. The true curve is 3 dB below the corner. Phase changes over roughly a decade either side of each corner.

Bode magnitude and bandwidth calculations

import math
# Bode magnitude of an amplifier with low-frequency (coupling) and high-frequency poles
A_mid, fL, fH = 100.0, 20.0, 200e3
def mag_db(f):
    lo = (f / fL) / math.sqrt(1 + (f / fL) ** 2)
    hi = 1 / math.sqrt(1 + (f / fH) ** 2)
    return 20 * math.log10(A_mid * lo * hi)
for f in (2, 20, 1e3, 200e3, 2e6):
    print(f"f = {f:>9.0f} Hz: {mag_db(f):6.2f} dB")
print(f"bandwidth {fH-fL:.0f} Hz; gain-bandwidth product {A_mid*fH/1e6:.0f} MHz")
# Coupling capacitor for fL = 20 Hz with Rin = 5 k
print(f"coupling C for 20 Hz with 5k input: {1/(2*math.pi*20*5e3)*1e6:.2f} uF")
# Two cascaded identical poles at 200 kHz: overall -3 dB point
print(f"two identical 200 kHz poles -> overall fH = {200e3*math.sqrt(2**0.5-1)/1e3:.0f} kHz")
# f =         2 Hz:  19.96 dB
# f =        20 Hz:  36.99 dB
# f =      1000 Hz:  40.00 dB
# f =    200000 Hz:  36.99 dB
# f =   2000000 Hz:  19.96 dB
# bandwidth 199980 Hz; gain-bandwidth product 20 MHz
# coupling C for 20 Hz with 5k input: 1.59 uF
# two identical 200 kHz poles -> overall fH = 129 kHz

The amplifier gives 40 dB in midband, 3 dB less at each corner, and falls 20 dB per decade beyond them. Cascading two stages with identical 200 kHz poles narrows the overall bandwidth to 129 kHz — cascades always shrink bandwidth.

Common mistakes

Applications

Key takeaways

Going further