FIR滤波器(VHDL实现)

逻辑主页

代码下载

FIR滤波器(顶层文件): fir_filter.vhd (3.3 KB)

数据类型(必须包含在项目中): types.vhd (1.8 KB)

特性

  • FIR滤波器组件的VHDL源代码
  • 可配置的数据输入位宽
  • 可配置的系数输入位宽
  • 可配置的抽头数量

概述

本文详述了用VHDL编写、适用于FPGA的FIR滤波器电路。该组件通过并行接口从用户逻辑读取数据流和滤波系数,并输出滤波结果。设计使用Quartus Prime 17.0.0版本完成。资源需求取决于具体实现方式。图1展示了集成到系统中的FIR滤波器典型实例。

1. 应用实例

背景知识

有限脉冲响应(FIR)滤波器的脉冲响应会在有限时间内衰减至零。它们具有固有稳定性,且无需反馈机制。

离散时间数字实现的输出是最近输入样本的加权和。其数学定义由卷积计算给出:

工作原理

FIR滤波器采用图2所示架构实现上述卷积函数运算。它会读取当前输入值(通过数据端口输入)及前N 个历史值(共N +1个抽头)。这些数值在每个系统时钟周期被移入,并通过数据流水线逐级移位。

FIR滤波器还会同步存储系数端口阵列输入的系数。这些系数决定了滤波器对各数据样本的加权比重。

每个系数都会与对应的数据样本相乘。滤波器将所有乘积结果相加,生成最终输出值。

2. 架构说明

FIR 滤波器配置

通过设置types.vhd文件中的常量参数来配置 FIR 滤波 器。表1列出了各参数说明。这些常量用于定义构成端口、内部流水线和内部数组的数据类型。

1. 常量描述

端口描述

表2描述了FIR滤波器的端口定义。

2. 端口描述

复位

reset_n 输入端口必须保持逻辑高电平,FIR滤波器组件才能正常工作。该端口低电平时将异步复位组件。复位期间,该组件会清空内部寄存器及输出结果端口。在reset_n 端口恢复高电平前,所有输入端口信号均被忽略。复位解除后,FIR滤波器立即恢复运行。由于内部数据流水线被清空,初始输出不会包含所有FIR滤波项,直到有足够的输入样本移入填满流水线。

结论

该FIR滤波器是可编程逻辑组件,执行离散卷积运算。输入数据大小、系数大小以及滤波器的抽头数量均可配置。