这篇博客算是前言吧,最近在做IIR滤波器的多相结构设计,目的是解决在较低速率的情况下,完成对高频采样信号的滤波。采用FIR的多相滤波结构,会产生较长的滤波器延迟和浪费很多的乘法器资源,而对于小的FPGA来说,资源不够丰富。同时对于极端条件下的滤波(针对可变滤波参数设计),例如低通滤波的Fp相对于采样频率来说很低,这样的滤波器如何设计。另外,还要考虑到FPGA乘法器的运行速度,如何将一个包含有延迟乘法器的IIR滤波结构(主要是反馈部分需要解决延迟乘法器的问题)在FPGA中进行实现。本博客系列将对此进行展开讲解。
根据工程需要,我所设计的IIR多相滤波器,已经通过检验(matlab和FPGA交叉检验,以及示波器前端滤波器测试),所有的设计程序都是合理有效的。
对于第一篇,仅给出滤波器的设计要求,今天时间有限,先写到这了。
滤波器设计要求:
滤波器类型:LPF 或者HPF
-3dB带宽可变,即参数可变
滤波器类型:IIR滤波器
滤波器通带频点:Fp=50kHz~200MHz
滤波器阶数:一阶或二阶
信号采样率:400MHz
FPGA时钟速率:200MHz
AD采样率:800MHz
在每个FPGA时钟内,前端AD共送入4个采样点数据,要求FPGA最终能够给后级输出采样率为800MHz信号,(这里用低通滤波器为例子)低通滤波器参数可变,变化范围(50kHz~200MHz).
首先,这样的滤波器在200MHz主频的FPGA里面,采用简单的FIR滤波器设计,要保证-3dB点准确的话,滤波器的阶数是变化的,最长的滤波器阶数可能达到几千阶(matlab中FDAtool给出的设计),这个复杂度是我们不能够忍受的。因此直接采用了IIR结构的滤波器。采用cyclone III或者IV,以及spartan 6系列的FPGA,主频一般在200MHz左右,而其中的乘法器DSP48则需要3~4个时钟才能够给出稳定的输出,这对于带有反馈结构的IIR滤波器而言,是无法给出有效设计的。因此决定采用IIR滤波器的多相结构来进行设计。多相结构的IIR滤波器的研究比较少,在接下来的几篇博客里,将针对该问题,给出我自己的滤波器设计,该设计已经通过FPGA验证。