FPGA教程系列-Vivado IP核CIC与FIR解析
CIC滤波器
Cascaded Integrator-Comb(CIC)滤波器,又称 Hogenauer 滤波器,是一种多速率滤波器,常用于在数字系统中实现大幅度的采样率变换。它们通常用于那些采样率远高于所处理信号带宽的应用场景,例如数字下变频器(DDC)和数字上变频器(DUC) 。CIC 滤波器的实现结构仅使用加法器、减法器和延迟单元,这种结构使其在多速率滤波的硬件实现中具有极高的效率,因而备受青睐。
IP核配置

Filter Specification (滤波器规格)
Filter Type:选择CIC滤波器的工作模式。
- Interpolation (插值) :用于提高采样率。例如,输入1kHz信号,输出4kHz信号。
- Decimation (抽取) :用于降低采样率。例如,输入4kHz信号,输出1kHz信号。
Number Of Stages:设置CIC滤波器的级联阶数。阶数越高,滤波器的阻带衰减效果越好(能更有效地滤除杂波),但通带内的纹波会增大,并且消耗的硬件资源也越多。这是一个关键的性能权衡参数,通常取值在2到5之间。
Differential Delay:设置梳状部分的差分延迟(M值)。
- M=1:提供最平坦的通带响应,但阻带衰减较慢。
- M=2:阻带衰减速度更快(比M=1时快约6dB),但通带纹波会更大。
Number Of Channels:设置滤波器处理的并行通道数。如果需要同时处理多路独立的数据流(如音频的左声道和右声道),可以设置为大于1的值。
Sample Rate Change Specification (采样率变化规格)
Sample Rate:选择采样率变化的模式。
- Fixed (固定) :插值或抽取的倍率在生成IP核时就固定了,运行时不可更改。
- Programmable (可编程) :允许在运行时通过输入端口动态改变插值/抽取倍率,灵活性更高。
Fixed Or Initial Rate:设置固定的插值或抽取倍率(R值)。对于插值模式,表示输出采样率 = 输入采样率 × 4。对于抽取模式,表示输出采样率 = 输入采样率 ÷ 4。
Minimum Rate / Maximum Rate:设置可编程模式下的倍率范围。说明:只有在 Sample Rate 选择 Programmable 时,这两个选项才有效。
Hardware Oversampling Specification (硬件过采样规格)
Rate Specification:选择如何指定硬件时序关系。
- Frequency Specification (频率指定) :通过直接设置输入频率和时钟频率来定义时序。
- Period Specification (周期指定) :通过设置采样周期(时钟周期数)来定义时序。
Input Sample Frequency (MHz) :设置输入数据流的采样率。
Clock Frequency (MHz) :设置IP核工作的系统时钟频率。系统时钟频率必须远高于输入/输出采样率,以确保有足够的时钟周期来完成计算。
Sample Period (Clock Cycles) :显示每个输入样本点所占用的时钟周期数。计算逻辑:这个值由工具根据 Clock Frequency 和 Input Sample Frequency 自动计算得出,确保硬件能正确地采样和处理数据。

Numerical Precision (数值精度)
Input Data Width: 设置输入数据的位宽。位宽越大,能表示的数值范围越大,精度越高,但会消耗更多的硬件资源(特别是乘法器)。
Output Data Width: 这个值通常由工具根据输入位宽、系数位宽和滤波器阶数自动计算得出,也可以手动调整,但要确保不小于计算所需的最小位宽。
Quantization:选择系数的量化方式。
- Full Precision (全精度) :使用在
Filter Options中设计的系数的原始浮点精度进行计算,仅在最后一步输出时才进行量化。这种方式精度最高,但资源消耗最大。 - Truncate (截断) :在计算过程中,直接截断多余的低位。
Optional Features (可选功能)
Use DSP48 Slice:决定是否使用FPGA中的专用乘法器(DSP48)资源。
- 勾选:乘法运算将由DSP48硬核完成。这是强烈推荐的选项,因为DSP48是专门为高速乘法优化的,比使用通用逻辑(LUT)实现速度快得多,且占用更少的逻辑资源。
- 不勾选:乘法运算将由FPGA的查找表和触发器实现,会消耗大量逻辑资源,且性能较低。
Use Streaming Interface:决定是否使用AXI4-Stream流式接口。
- 勾选:IP核将使用AXI4-Stream接口(
TVALID,TREADY,TLAST等),这是一种无地址的、连续的数据流协议,非常适合与DMA、其他IP核(如FFT、CIC)直接级联,构建高效的数据处理流水线。 - 不勾选:IP核可能会使用传统的、非流式的接口,灵活性较低。
Control Options (控制选项)
ACLKEN:是否启用时钟使能信号。如果勾选,IP核会多出一个 ACLKEN 输入端口。当 ACLKEN 为高电平时,IP核正常工作;为低电平时,IP核暂停所有操作。这有助于降低功耗和系统级同步。
ARESETn:是否启用异步复位信号。如果勾选,IP核会多出一个 ARESETN 输入端口(低电平有效)。当该信号为低电平时,IP核内部的所有寄存器会被立即复位到初始状态。这是系统初始化和错误恢复的关键信号。
Output TREADY:决定输出端口是否包含 TREADY 信号。
- 勾选:输出接口变为完整的AXI4-Stream握手协议(
TVALID/TREADY),支持背压。当下游模块来不及接收数据时,可以通过拉低TREADY 信号通知FIR核暂停输出,从而保证数据不丢失。 - 不勾选:输出接口没有
TREADY信号,FIR核只管往外“推”数据,适用于简单的、不会发生拥塞的系统。
FIR滤波器
AMD LogiCORE™ IP FIR 编译器内核提供了一个通用接口,用于生成高度可参数化、面积效率高的高性能 FIR 滤波器。

Filter Coefficients
Select Source(选择来源): IP核支持两种FIR系数输入方式,以“Vector”的形式直接写入;或者以“COE File”的形式导入coe文件;
- Vector(向量) :直接在界面中输入系数值,适用于简单滤波器设计
- File(文件) :从外部COE文件加载系数,适用于复杂滤波器或需要重复使用的系数
Coefficient Vector(系数向量) :这些系数决定了滤波器的频率响应特性
Number of Coefficient Sets(系数组数量):表示有几路滤波通道, 多通道滤波器设计,如多路信号同时处理,可用于多载波通信系统
Number of Coefficients(每组系数数量) :滤波器阶数,影响滤波器的性能和资源消耗
Use Reloadable Coefficients(可重载系数)
- 未勾选:系数固定,适合静态滤波器
- 勾选:运行时可动态修改系数,适用于自适应滤波器
滤波器规格(Filter Specification)
Filter Type(滤波器类型)
- Single Rate(单速率) :输入输出采样率相同,适用于标准滤波
- Interpolation(插值) :输出采样率高于输入,用于上采样
- Decimation(抽取) :输出采样率低于输入,用于下采样
此外还支持希尔伯特变换(Hilbert)模式。
Inferred Coefficient Structure(推断系数结构)
- Symmetric(对称) :系数对称,可减少50%的乘法器资源
- Anti-Symmetric(反对称) :系数反对称,适用于某些特殊滤波器
- Non-Symmetric(非对称) :系数不对称,资源消耗最大
Rate Change Type(速率变化类型)
- Integer(整数倍) :插值/抽取因子为整数,实现简单
- Fractional(分数倍) :插值/抽取因子为分数,更灵活但复杂
Interpolation Rate Value(插值因子) :输出采样率 = 输入采样率 × 插值因子
Decimation Rate Value(抽取因子) :输出采样率 = 输入采样率 ÷ 抽取因子
Zero Pack Factor(零填充因子) :控制数据打包方式

Interleaved Channel Specification(交织通道规格)
Channel Sequence(通道序列)
- Basic:基本模式,适用于简单的单通道或少通道应用
- Advanced:高级模式,支持复杂的通道序列配置
Number of Channels(通道数量) :定义同时处理的独立通道数量
Select Sequence(选择序列)
- All:处理所有通道
- Custom:自定义通道选择
Sequence ID List(序列ID列表): 定义通道的处理顺序和标识
Parallel Channel Specification(并行通道规格)
Number of Paths(路径数量) :定义并行处理的路径数量
Hardware Oversampling Specification(硬件过采样规格)
Select Format(选择格式)
- Frequency Specification:频率规格模式,直接设置频率参数
- Sample Period:采样周期模式,设置时钟周期数
Sample Period (Clock Cycles)(采样周期) 每个采样点占用的时钟周期数
Input Sampling Frequency (MHz) (输入采样频率):输入信号的采样频率
Clock Frequency (MHz) (时钟频率) :FPGA内部工作时钟频率

Coefficient Options(系数选项)
Coefficient Type(系数类型) :定义系数值的符号类型
Quantization(量化方式): 决定系数的存储格式
- Integer Coefficients:系数以整数形式存储,实现简单
- Fractional Coefficients:系数以小数形式存储,精度更高
Coefficient Width(系数位宽) :决定系数的精度和资源占用
Best Precision Fraction Length(最佳精度小数长度): 自动优化系数的小数位数
Coefficient Fractional Bits(系数小数位) :定义系数的小数部分位数
Coefficient Structure(系数结构)
- 对称系数:可减少50%的乘法器资源
- 反对称系数:适用于某些特殊滤波器
- 非对称系数:资源消耗最大
Data Path Options(数据路径选项)
Input Data Type(输入数据类型): 定义输入数据的符号类型
- Signed:适用于音频、传感器等双极性信号
- Unsigned:适用于图像等单极性信号
Input Data Width(输入数据位宽) :决定输入信号的动态范围
Input Data Fractional Bits(输入数据小数位): 定义输入数据的小数部分位数
Output Rounding Mode(输出舍入模式): 决定输出结果的舍入方式
- Full Precision:保留所有计算精度,避免误差累积
- Truncation:截断多余位,简单但可能引入误差
- Round to Nearest:四舍五入,平衡精度和复杂度
Output Width(输出位宽): 决定输出结果的精度和范围,输入位宽 + 系数位宽 + log2(系数数量) = 最大输出位宽
Output Fractional Bits(输出小数位) :定义输出数据的小数部分位数

Data Channel Options(数据通道选项)
TLAST(最后一个数据包指示): 控制是否使用TLAST信号标识数据流的结束
Output TREADY(输出就绪信号): 控制是否使用TREADY信号进行背压控制
Input FIFO(输入FIFO缓冲): 在输入端添加FIFO缓冲区
TUSER(用户自定义字段选项):
-
Input TUSER(输入用户字段):控制是否在输入数据流中包含用户自定义信息
-
Output TUSER(输出用户字段):控制是否在输出数据流中包含用户自定义信息
-
User Field Width(用户字段位宽):定义用户自定义字段的位宽
Configuration Channel Options(配置通道选项)
-
Synchronization Mode(同步模式):定义配置数据的同步方式
On Vector:基于向量同步,适合批量配置
On Element:基于元素同步,适合逐个配置 -
Configuration Method(配置方法):定义配置数据的传输方式
Single:单通道配置,简单直接
Multiple:多通道配置,支持并行配置 -
Reload Channel Options(重载通道选项):定义可同时存储的滤波器系数组数量
Control Signals(控制信号选项)
-
ARESETn(异步复位,低电平有效):提供异步复位功能,必须保持至少2个时钟周期
-
ACLKEN(时钟使能):提供时钟门控功能
-
Reset Data Vector(复位数据向量):复位时将输出数据向量重置为预设值
-
Blank Output(空白输出):复位时将输出置为高阻态或无效状态
其他的选项默认即可。
3970

被折叠的 条评论
为什么被折叠?



