在数字信号处理(DSP)中,延迟单元(Delay Unit) 是实现信号时序处理的核心元件,其本质是存储前一时刻的信号值,使当前处理能够访问历史数据。在IIR滤波器的前向路径和反馈路径中,延迟单元的具体作用和形式如下:
一、延迟单元的本质
延迟单元的核心功能是对输入信号进行单位延迟(即延迟一个采样周期 Ts)。在离散时间系统中,单位延迟用算子 z−1 表示,其数学含义为:
z−1⋅x(n)=x(n−1)
即,输入 x(n) 经过一个延迟单元后,输出为前一时刻的信号 x(n−1)。
二、前向路径中的延迟单元
前向路径(输入到输出的直接信号流)的延迟单元用于存储输入信号的历史值,为当前输出的计算提供过去时刻的输入数据。
具体作用
向路径的延迟单元将当前输入 x(n) 延迟1个、2个…直到 M 个采样周期(M 为前向阶数),生成 x(n−1),x(n−2),...,x(n−M),这些历史值与前向系数 b1,b2,...,bM 相乘后,参与当前输出 y(n) 的计算。
三、反馈路径中的延迟单元
反馈路径(输出到自身的信号流)的延迟单元用于存储输出信号的历史值,为当前输出的计算提供过去时刻的输出数据(因IIR滤波器的反馈特性)。
具体作用
反馈路径的延迟单元将当前输出 y(n) 延迟1个、2个…直到 N 个采样周期(N 为反馈阶数),生成 y(n−1),y(n−2),...,y(n−N),这些历史值与反馈系数 −a1,−a2,...,−aN 相乘后,参与当前输出 y(n) 的计算。
四、延迟单元的硬件实现
在实际硬件(如FPGA、DSP芯片)中,延迟单元通常用寄存器(Register) 实现。每个寄存器在一个时钟周期内存储当前输入,并在下一个时钟周期输出该值(即延迟一个周期)。例如:
-
一个8位寄存器接收输入 x(n),在时钟上升沿将 x(n) 存入内部触发器,下一时钟周期输出 x(n)(即 x(n−1) 对下一周期而言)。
五、延迟单元的软件实现
在软件(如C语言)中,延迟单元通过变量保存历史值来模拟。例如,计算二阶IIR滤波器时,需要保存前两时刻的输入 x1,x2 和前两时刻的输出 y1,y2,每次迭代时更新这些变量:
// 软件模拟延迟单元(二阶IIR)
float x1 = 0.0f; // 存储 x(n-1)(前一时刻的输入)
float x2 = 0.0f; // 存储 x(n-2)(前前时刻的输入)
float y1 = 0.0f; // 存储 y(n-1)(前一时刻的输出)
float y2 = 0.0f; // 存储 y(n-2)(前前时刻的输出)
// 当前输入为 x,计算当前输出 y
float y = b0*x + b1*x1 + b2*x2 - a1*y1 - a2*y2;
// 更新延迟单元(为下一时刻准备)
x2 = x1; // x(n-2) = 原 x(n-1)
x1 = x; // x(n-1) = 当前 x(n)
y2 = y1; // y(n-2) = 原 y(n-1)
y1 = y; // y(n-1) = 当前 y(n)
六、延迟单元的关键作用
延迟单元是IIR滤波器实现“无限脉冲响应”的核心:
-
前向路径的延迟单元让滤波器能利用过去的输入信息;
-
反馈路径的延迟单元让滤波器能利用过去的输出信息(反馈),从而产生无限长的脉冲响应(理论上永不衰减)。
* 前向路径的延迟单元:存储过去的输入,让滤波器利用历史输入信息,生成初始的响应分量;
* 反馈路径的延迟单元:存储过去的输出,将历史输出反馈回系统,导致响应递归依赖,形成无限延续的特性;
* 数学本质:反馈引入的递归关系使得脉冲响应无法在有限时间内终止,从而产生无限长的理论响应(实际中因阻尼衰减)。
总结
延迟单元是数字滤波器中存储历史信号的元件,在IIR滤波器中:
-
前向路径的延迟单元存储输入信号的历史值(x(n−1),x(n−2),...);
-
反馈路径的延迟单元存储输出信号的历史值(y(n−1),y(n−2),...);
-
硬件中用寄存器实现,软件中用变量保存历史值,最终目的是让滤波器能基于过去和当前的输入/输出计算当前输出。