不知道有没有人发现,一开始的文章里面我计算带宽的时候是有带宽要乘 π/2”,其实是“等效噪声带宽 (Noise BandWidth, NBW)” 的核心概念。
理想低通:如果滤波器在 内增益=1,超过 立即=0,那么噪声带宽 = 截止频率 。
实际一阶 RC 滤波器:幅频响应不是砖墙,而是 。 它在高频仍有衰减,所以积分噪声时要考虑“尾巴”。
等效噪声带宽定义为:
对于一阶 RC:
积分:
所以:
一阶 RC 滤波器的“噪声积分效果”相当于一个理想低通滤波器,其带宽不是 ,而是更宽:
也就是说:虽然 RC 的 -3 dB 截止在 ,但因为高频尾巴贡献了额外噪声,总噪声能量相当于理想低通再放宽 57%。
在文档里,增益级写的 NBW = 4 MHz × π/2 ≈ 6.3 MHz,就是这个公式来的;同理,buffer 带宽 70 MHz → NBW = 70 × π/2 ≈ 110 MHz;ADC 内部的数字滤波/采样电路如果更高阶,NBW 公式会变化(但一阶最常见)。
噪声带宽比截止频率大 π/2 倍,是因为一阶 RC 滤波器在高频还有衰减“尾巴”,积分噪声能量时不能忽略,所以等效成一个“比 f_c 宽 57%”的理想低通。

图中直观地解释了 为什么一阶 RC 的噪声带宽 = :
,随频率逐渐衰减,形成“长尾”。
理想低通,截止在 ,积分面积 = 1.0(归一化计算)。
一阶 RC 的积分面积 ≈ 1.375(数值计算结果)。
解析解 = ,比理想低通大 **57%**。
对于噪声,重要的是 总能量 = ∫|H(f)|² df;RC 滤波器虽然在 后开始衰减,但高频尾巴仍然贡献额外噪声;所以它的“等效噪声带宽”比理想低通 宽 π/2 倍,这就是为什么文档里所有 NBW 都写成“带宽 × π/2”。
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
# 定义频率范围
f = np.linspace(0, 5, 1000) # 归一化频率,单位:fc 倍数
# 理想低通滤波器(brick-wall)
H_ideal = np.where(f <= 1, 1, 0)
# 一阶RC滤波器的幅频响应平方 |H(f)|^2
H_RC = 1 / (1 + f**2)
# 积分计算面积
df = f[1] - f[0]
area_ideal = np.sum(H_ideal) * df
area_RC = np.sum(H_RC) * df
# 理论值
area_RC_theory = np.pi/2
plt.figure(figsize=(8,5))
plt.plot(f, H_ideal, label="理想低通 |H(f)|² (截止=fc)", lw=2)
plt.plot(f, H_RC, label="一阶RC |H(f)|²", lw=2)
plt.fill_between(f, 0, H_ideal, color='lightblue', alpha=0.5)
plt.fill_between(f, 0, H_RC, color='lightgreen', alpha=0.5)
plt.axvline(1, color='k', linestyle='--', alpha=0.7, label="fc (-3 dB点)")
plt.title("理想低通 vs 一阶RC 的噪声积分面积")
plt.xlabel("频率 f/fc (归一化)")
plt.ylabel("|H(f)|²")
plt.legend()
plt.grid(True)
plt.show()
area_ideal, area_RC, area_RC_theory