基于 FPGA 的四阶 IIR 数字滤波器设计:二阶节级联与流水线 MAC 实现

2017-08-18 74 0

本文介绍一种采用 FPGA 实现的四阶 IIR 数字滤波器,通过两个二阶节级联构成数字椭圆低通滤波器,通带内波纹小于 0.1 dB,阻带衰减大于 32 dB。

一、滤波器类型的选择

常用的数字滤波器有 FIR 数字滤波器和 IIR 数字滤波器。FIR 数字滤波器具有精确的线性相位特性,在信号处理方面应用极为广泛,而且可以采用事先设计调试好的 FIR 滤波器 IP Core 完成设计;但对于相同的设计指标,FIR 滤波器所要求的阶数比 IIR 滤波器高 5~10 倍,成本较高,信号的延迟也较大。IIR 滤波器所要求的阶数比 FIR 滤波器低,而且可以利用模拟滤波器的设计成果,设计工作量相对较小,采用 FPGA 实现同样具有多种优越性。

基于 FPGA 的四阶 IIR 数字滤波器设计:二阶节级联与流水线 MAC 实现

图 1 四阶 IIR 数字滤波器的实现结构

数字滤波器实际上是一个采用有限精度算法实现的线性非时变离散系统,其设计步骤为:首先根据实际需要确定性能指标,再求得系统函数,最后采用有限精度算法实现。本系统的设计指标为:模拟信号采样频率 2 MHz,每周期最少采样 20 点,即模拟信号的通带边缘频率 fp = 100 kHz,阻带边缘频率 fst = 1 MHz,通带波动不大于 0.1 dB,阻带衰减 As 不小于 32 dB。系统函数的计算借助 Matlab 软件完成较为方便。

二、FPGA 实现方法

本文采用折中的方法实现:乘加单元(MAC)中的乘法器采用阵列乘法器而不使用串行乘法器,以提高运算速度。需要注意的是,MAX+plus II 的 LPM 库中乘法运算为无符号数的阵列乘法,因此使用时需要先将两个补码乘数转换为无符号数相乘,再把乘积转换为补码输出。

每个二阶节完成一次运算共需要 6 个时钟周期。两级采用各自独立的 MAC 构成流水线结构后,单个数据经过两个二阶节输出共需 12 个时钟周期,而流水线填满之后每 6 个时钟周期即可输出一个结果,从而在提高吞吐率的同时兼顾了资源开销。

相关文章

压敏电阻的参数、特性与应用
基于 STC12C 与 SIM300 的智能家电防盗系统电路设计
基于 nRF24L01 与 DHT11 的无线温湿度测试系统电路设计
电冰箱电子温控器的原理与半自动除霜电路
基于 586-Engine 的无人机飞行控制器电路设计
三极管开关电路的改进接法:加速电容、图腾柱与驱动电路

发布评论