LTC2500内置滤波器的群延迟

背景

公司一款产品用到了该32-Bit SAR ADC芯片,测试发现在输入信号剧烈变化(比如信号切断/接通)的情况下,FPGA读出来的前几个采样点是变化前的值。

当内置滤波器选择SSINC,DF(降采样系数)配置成16384时情况尤甚。

定位

群延迟

一开始以为是FPGA内部的DMA FIFO没清空,但FPGA同事说ADC采集逻辑没设置FIFO,收到转换完成(conversion complete)中断就立即将数据从ADC读走并写入CPU侧DDR。

后来FPGA同事阅读datasheet才知道可能是群延迟(Group Delay)的影响,贴上SSINC滤波器的群延迟

可以看到,当DF=16384时,群延迟高达73ms,于是尝试FPGA采集group delay长的时间后再上报数据,观察数据间的关系,可以得出映射函数

c 复制代码
uint32_t get_adc_group_delay(uint8_t filter, uint16_t df /*power, not exponent*/)
{
    uint32_t delay = 0; // unit us

    switch (filter) {
        case ADC_FILTER_SINC1:
            delay = (df + 2) / 2;
            break;
        case ADC_FILTER_SINC2:
            delay = (df * 2 + 1) / 2;
            break;
        case ADC_FILTER_SINC3:
            delay = (df * 3) / 2;
            break;
        case ADC_FILTER_SINC4:
            delay = (df * 4 - 1) / 2;
            break;
        case ADC_FILTER_SSINC:
            delay = (df * 9) / 2;
            break;
        case ADC_FILTER_FLAT:
            delay = (140 * (df / 4)) / 2;
            break;
        case ADC_FILTER_AVG:
            delay = df / 2;
            break;
        default:
            break;
    }
    return delay;
}

可以看出,SSINC滤波器是9个采样点滤出1个点,至于为啥要除以2,先不管。

实测发现问题有改善,但仍未彻底解决。

Settling Time

翻datasheet,发现图29

可以看到,模拟信号(最左侧的黑色粗实线)从0变成1时,不同滤波器的输出从0变成1所需要的采样点数是不一样的,SSINC至少需要7个,稳妥起见,我选择了9,相当于删掉了群延迟公式里的除以2

结果

将群延迟计算公式调整后,实测没再出现过问题。

猜测

除以2可能是因为群延迟的定义吧?

复制代码
Group delay of the digital filter is defined to be the delay to the center of the impulse response

center不是end

相关推荐
BSD_CGQ17 天前
FSR压力传感器的MCU采集方案与校准算法实现
人工智能·计算机视觉·目标跟踪·adc·压力传感器·fsr·深圳源头厂家
你是我的解忧王子1 个月前
10进制和16进制 超声波 FFT 变换分析筛选系统误差-ADC采样筛选工具
数据分析·adc·fft·系统误差
Deven_Huang1 个月前
STM32 ADC 使用经验总结与常见踩坑点
stm32·adc
大阳1232 个月前
ARM.8(ADC,SPI)
单片机·嵌入式硬件·adc·spi
perseverance523 个月前
STM32F405 ADC+DMA双缓冲规则组采集
stm32·adc
我在人间贩卖青春4 个月前
ADC采集
stm32·adc
青桔柠薯片4 个月前
ADC 接口技术总结:原理、寄存器配置与工程考量
arm开发·imx6ull·adc
somi74 个月前
ARM-10-I.MX6U ADC
arm开发·嵌入式硬件·adc·自用
dMing`5 个月前
基于FPGA的简易数据采集系统
fpga开发·fpga·adc·dac
ting_zh5 个月前
ESP8266和电流互感器实现交流电流检测
物联网·adc·esp8266·home assistant·电流互感器