系数的量化方法及其对滤波性能的影响分析
根据MATLAB的FIR滤波器设计原理,无论滤波器长度多长,滤波器通带内增益均为1(0 dB),滤波器系数为带小数的浮点数。由于FPGA只能处理二进制数据,MATLAB设计出的滤波器系数需要转换成二进制数据才能完成FPGA电路实现。
滤波器系数是带符号的数据,FPGA实现时需要用二进制补码格式表示。设滤波器系数的量化位宽为Q,则系数C的表示范围为-2^Q-1≤C≤(2Q-1-1),又由于FIR滤波器系数的严格对称特性,实际范围为(1-2Q-1)≤C≤(2Q-1-1)。
传统的滤波器系数量化方法可分解为3个步骤:(1)找出滤波器系数中最大的绝对值数M;(2)以M为基准,对所有滤波系数进行归一化处理,即对所有系数除以M;(3)对所有滤波器系数乘以(2Q-1-1),并对处理后的系数取整形成整数系数;(4)将整数滤波器系数转换成二进制补码数据。图3为不同量化位宽情况下的滤波器幅频响应图。