目录
- 滤波器设置(3步实现滤波器设计)
- 数据分析与使用
- pyfda功能界面
- 数字滤波器数学表示
- 线性相位
- 线性相位的定义
- 线性相位的特性
- 冲击响应
- quartus数据加载
- CG
滤波器设置(3步实现滤波器设计)
-
pip install pyfda #安装python依赖,详见https://pyfda.readthedocs.io/en/latest/manual/index.html
-
pyfdax #运行pyfdax桌面程序
-
- 设置参数,点击“DESIGN FILTER”:
- N (滤波器阶数):滤波器最终点的个数
- F P B F_{PB} FPB(拐角频率、截止频率): 显著衰减频率点,一般对应极点,信号的功率衰减到其最大值的一半,幅度-3dB、每十倍频程(如从1 kHz 到 10 kHz)-20dB幅度变化和-0到-90°相位变化。
- F S B F_{SB} FSB(阻带区间频率)
-
F
P
B
F_{PB}
FPB&
F
S
B
F_{SB}
FSB(波动权重) : ripple weights(通带和阻带的波动权重)是指用于控制滤波器在通带(Passband)和阻带(Stopband)内允许的最大波动量或误差的标准。这些权重通常出现在优化问题中,用来平衡通带和阻带之间的性能要求,确保滤波器满足特定的应用需求。
数据分析与使用
pyfda功能界面
数字滤波器数学表示
数字滤波器通常用差分方程来表示,而这个差分方程可以通过Z变换转换成更易于分析的形式。一个常见的线性时不变(LTI)数字滤波器可以用下面的差分方程来描述:
y [ n ] = ∑ k = 0 M b k x [ n − k ] − ∑ k = 1 N a k y [ n − k ] y[n] = \sum_{k=0}^{M} b_k x[n-k] - \sum_{k=1}^{N} a_k y[n-k] y[n]=k=0∑Mbkx[n−k]−k=1∑Naky[n−k]
其中:
- y [ n ] y[n] y[n] 是输出信号在时间点 n n n的值。
- x [ n ] x[n] x[n] 是输入信号在时间点 n n n的值。
- b k b_k bk 和 a k a_k ak 分别是滤波器的前向路径系数和反馈路径系数。
- M M M 和 N N N 分别是前向路径和反馈路径的最大延迟(阶数)。
该差分方程也可以通过Z变换表示为传递函数的形式:
H ( z ) = ∑ k = 0 M b k z − k 1 + ∑ k = 1 N a k z − k H(z) = \frac{\sum_{k=0}^{M} b_k z^{-k}}{1 + \sum_{k=1}^{N} a_k z^{-k}} H(z)=1+∑k=1Nakz−k∑k=0Mbkz−k
线性相位
线性相位的定义
一个系统或滤波器如果具有线性相位特性,则其相频响应 ϕ ( ω ) \phi(\omega) ϕ(ω)可以表示为:
ϕ ( ω ) = − τ ω + constant \phi(\omega) = -\tau \omega + \text{constant} ϕ(ω)=−τω+constant
其中:
-
ω \omega ω是角频率。
-
τ \tau τ是常数,代表群延迟(Group Delay),即所有频率成分经历的相同时间延迟。
-
“constant” 是一个与频率无关的相移量,通常可以忽略不计,因为它不会影响群延迟。
线性相位的特性
-
保持波形形状:线性相位确保不同频率成分以相同的速度传播,从而避免了相位失真。这对于脉冲信号、调制信号和语音信号尤为重要,因为这些信号的波形形状携带了重要信息。
-
最小化相位失真:非线性相位会导致不同频率成分之间的相对时间延迟发生变化,进而引起相位失真。线性相位滤波器可以有效避免这种情况。
冲击响应
quartus数据加载
- FIR(有限脉冲响应)滤波器:只包含前向路径,没有反馈路径,因此它的差分方程只包含输入项,即 y [ n ] = ∑ k = 0 M b k x [ n − k ] y[n] = \sum_{k=0}^{M} b_k x[n-k] y[n]=∑k=0Mbkx[n−k],滤波器系数只有 b k b_k bk。
- 保存的csv文件是竖向排列的,为方便quartus加载转为一行:
-0.008714744830464442,-0.054112502607988215,-0.03324360937210303,0.02861503411936945,0.14232499893478073,0.2530416744141692,0.29926671053557363,0.2530416744141692,0.14232499893478073,0.02861503411936945,-0.03324360937210303,-0.054112502607988215,-0.00871474483
- 加载之后quartus会自动量化转换
CG
- 相关工具:MATLAB的滤波器设计工具箱filterDesigner(fdatool),支持导出C头文件、XILINX参数文件(COE)等功能