PUINS
低速ADC采样实现高阶FIR滤波器资源优化实现

低速ADC采样实现高阶FIR滤波器资源优化实现

2026-10-18

代码实现说明 :

1)如果ADC采样时钟100KHz,系统时钟100MHz,滤波器系数是1001阶,滤波器系数存储在rom中,因为系数的对称性,系数rom的深度只需要501。输入的ADC值存放在一个深度为10001的双口ram中,每次输入一个数,rom内的系数可以从低地址到高地址依次读出,同时,ADC ram中的值是循环存储的,ADC ram的值分两个方向,一个从最新的数据往前一个到的数据方向读取,一个前1001个数据向第1000个数据读取。因为滤波器的对称性,这两个ADC数据与同一个系数数据相乘,每一边的相乘同时进行累加。因为奇对称问题,有一乘法器需要比另一个多做一次乘法,状态机会完成这个步骤,完成后把两边的累加值累加,既可得到一次滤波计算的值。

2)一次ADC数据的使能,

可配置选项以及资源的复用问题:

模块的COFF_NUM定义了滤波器的阶数。若多路adc是同步的,系数的rom还可以复用。

代码需求可联系我们