Edit online

SINC 滤波器

24 Feb 2025
Read time: 4 minute(s)
SDFM 内置下列两套 SINC 滤波器,即 PSINC 和 SSINC:
  • PSINC,Primary SINC 滤波器,用于精确数据计算
  • SSINC,Secondary SINC 滤波器,用于数据比较

SINC 滤波器实现的功能框图如下:



  • N:SINC 滤波器阶数,可通过寄存器配置为 1/2/3
  • OSR:过采样率,可通过寄存器配置
  • PSINC:配置 N = 1/2/3,OSR = 1/2/3/…/256
  • SSINC:配置 N = 1/2/3,OSR = 1/2/3/…/32

滤波延迟

SINC 滤波器的延迟时间的计算公式如下:

T_latency = (N * OSR) / R_mod

  • N:SINC 滤波器阶数,可通过寄存器配置为 1/2/3
  • OSR:过采样率,可通过寄存器配置
  • R_mod:串行输入调制数据的速率

假设 SINC 滤波器的阶数 N = 3,过采样率 OSR = 128,输入信号的速率为 20 MHz,则 T_lantency = 19.2 us,表示 SINC 滤波器的输出延迟为 19.2 us。

PSINC 输出

PSINC 输入输出具有以下特点:
  • 低电平输入代表 -1
  • 高电平输入代表 +1
  • 采用互补的二进制格式
下表展示了 SINC1/ 2/ 3 在不同 OSR 模式下滤波器计算过程中的数据范围,其中:
  • 输出最大的是 SINC3 滤波器和 OSR = 256 的情况下,需要 25 bits 的有符号整型数,数据范围是 -224 ~ +224
OSR SINC1 SINC2 SINC3
x -x ~ x -x2 ~ x2 -x3 ~ x3
4 -4 ~ 4 -16 ~ 16 -64 ~ 64
8 -8 ~ 8 -64 ~ 64 -512 ~ 512
16 -16 ~ 16 -256 ~ 256 -4096 ~ 4096
32 -32 ~ 32 -1024 ~ 1024 -32768 ~ 32768
64 -64 ~ 64 -4096 ~ 4096 -262144 ~ 262144
128 -128 ~ 128 -16384 ~ 16384 -2097152 ~ 2097152
256 -256 ~ 256 -65536 ~ 65536 -16777216 ~ 16777216
PSINC 的输出支持配置以下输出场景:
  • 32-bit 输出:无需对过程结果数据进行任何操作,因为 32-bit 位宽完全满足过程数据最大 25-bit 的需求。
  • 16-bit 输出:由于过程数据输出的范围可能超过 16-bit 可表示的范围,即超过 -215~(215-1),所以需要对过程数据进行右移,从而保证输出结果有效。推荐的数据右移配置如下表所示:
    OSR SINC1 SINC2 SINC3
    1~31 0 0 0
    32~40 0 0 1
    41~50 0 0 2
    51~63 0 0 3
    64~80 0 0 4
    81~101 0 0 5
    102~127 0 0 6
    128~161 0 0 7
    162~181 0 0 8
    182~203 0 1 8
    204~255 0 1 9
    256 0 2 9

PSINC 同步

SDFM 模块的 PSINC 滤波器支持同步信号。当同步信号生效,SINC 滤波器重新开始进行计算。同步机制,可以保证两个或多个 SDFM 的 PSINC 同步开始计算,达到数据处理的时刻对齐。

基于 SINC 的工作原理,在 SINC 使能开始工作的时刻以及同步信号生效的时刻,SINC 输出存在若干个不正确的数据点。具体如下:

  • SINC1(N=1)滤波器,任何时刻都无错误数据输出。

  • SINC2(N=2)滤波器,输出的起始存在第一个数据点错误。

  • SINC3(N=3)滤波器,输出的起始存在前两个数据点错误。

由于 SDFM 输出数据时,会自动丢弃起始的错误数据点,因此在上述 N=2 和 N=3 的情况下,输出延迟会相应的增加所丢弃的数据点的转换时间。

SSINC 输出

SSINC 输出具有以下特点:
  • 低输入代表 0
  • 高输入代表 1
  • 采用 16-bit 无符号数据表示

下表展示了 SINC1/ 2/ 3 在不同 OSR 模式下滤波器计算过程中的数据范围:

OSR SINC1 SINC2 SINC3
x 0 ~ x 0 ~ x^2 0 ~ x^3
4 0 ~ 4 0 ~ 16 0 ~ 64
8 0 ~ 8 0 ~ 64 0 ~ 512
16 0 ~ 16 0 ~ 256 0 ~ 4096
32 0 ~ 32 0 ~ 1024 0 ~ 32768

SSINC 高低阈值比较

SSINC 的输出可以进行高低阈值的比较,高低阈值可以通过寄存器设置。如下图所所示:
  • 对于高位比较器:
    • 当 SSINC 滤波器的输出结果大于高阈值 HLT 时,高位比较器的输出信号 COMP_H 则为高电平。
    • 当 SSINC 滤波器的输出结果低于高阈值 HLT 时,高位比较器的输出信号 COMP_H 则为低电平。
  • 对于低位比较器:
    • 当 SSINC 滤波器的输出结果小于低阈值 LLT 时,低位比较器的输出信号 COMP_L 则为高电平。
    • 当 SSINC 滤波器的输出结果高于低阈值 LLT 时,低位比较器的输出信号 COMP_L 则为低电平。
  • 输出信号 COMP_H 和 COMP_L 可以作为触发 EPWM 保护的信号或者产生中断的信号。


如需监控电压,可分别设置高低阈值 HLT 和 LLT,对输入电压进行过压以及欠压检测。