在 Σ-Δ ADC 中,“转折频率(Corner Frequency / Cutoff Frequency)”通常指的是数字低通滤波器或噪声整形函数的频率响应中,从通带过渡到阻带的临界频率,它是频率响应设计中一个非常重要的参数。
转折频率是数字滤波器中,频率响应首次下降到最大值的 -3 dB 位置,表示信号带宽的临界点。
Σ-Δ 调制器输出是高频的 bitstream,其中量化噪声经 NTF(Noise Transfer Function)被推向高频。因此必须用数字低通滤波器(如 Sinc/FIR)去除高频噪声,保留有效信号带宽。
通带 过渡带 阻带
│ │ │
dB ___ / \
| \ / \
| \__/ \_________
|
└────┬────────────┬────────────▶ f
│ │
转折频率 阻带起点
对于数字滤波器:
(即点)
对于 sinc 滤波器(如 Sinc3):
因此,转折频率也可以理解为“系统的信号带宽”
所以我们常说的 OSR:
若调制器工作频率为 ,OSR = 64
此频率是有效信号的最高频率(Nyquist 对应),超过这个频率的信号和噪声都会被滤掉。
频率响应对比
不同转折频率下的 FIR 滤波器 与 Sinc3 滤波器 的频率响应对比:
彩色实线(FIR):
分别表示转折频率为 0.05 / 0.1 / 0.2 / 0.3(归一化,fs=1)的 FIR 滤波器,随着转折频率提高,滤波器通带变宽,阻带边界也向右移动
黑色虚线(Sinc3):表示典型的 3 阶 Sinc 滤波器频响;拥有更陡峭的衰减特性(~60 dB/decade),但零点位置固定,过渡带较长
FIR 滤波器设计灵活、可控性高、抑制效果好,适用于高精度数字实现,而 Sinc3 滤波器结构简单、资源占用少、适合硬件级实现但灵活性和抑制能力较低。
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import freqz, firwin
# 设置模拟参数
fs = 1.0 # 归一化频率(Nyquist = 0.5)
numtaps = 101 # FIR 滤波器阶数 = 100
# 定义不同转折频率(归一化)对应的 FIR 滤波器
corner_freqs = [0.05, 0.1, 0.2, 0.3]
filters = [firwin(numtaps, cf) for cf in corner_freqs]
# Sinc3 滤波器频响(简单建模为 (sin(x)/x)^3)
def sinc3_response(f):
x = np.pi * f
return (np.sinc(f))**3 # sinc(f) = sin(πf)/(πf)
# 绘图
fig, ax = plt.subplots(figsize=(10, 6))
# 绘制 FIR 滤波器频响
for cf, h in zip(corner_freqs, filters):
w, response = freqz(h, worN=2048, fs=fs)
ax.plot(w, 20 * np.log10(np.abs(response) + 1e-12), label=f'FIR Cutoff = {cf:.2f}')
# 绘制 Sinc3 理论频响(归一化频率)
f_sinc = np.linspace(1e-4, 0.5, 1000)
sinc3 = 20 * np.log10(sinc3_response(f_sinc))
ax.plot(f_sinc, sinc3, '--', label='Sinc3', color='black')
# 图形属性
ax.set_title("FIR vs. Sinc3 Frequency Response (Different Cutoff Frequencies)")
ax.set_xlabel("Normalized Frequency (×fs)")
ax.set_ylabel("Magnitude (dB)")
ax.set_ylim([-100, 5])
ax.grid(True)
ax.legend()
plt.tight_layout()
plt.show()