FPGA教程系列-Vivado IP核CIC与FIR解析

FPGA教程系列-Vivado IP核CIC与FIR解析

CIC滤波器

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

IP核配置

image

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 自动计算得出,确保硬件能正确地采样和处理数据。

image

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 滤波器。

image

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(零填充因子) :控制数据打包方式

image

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内部工作时钟频率

image

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(输出小数位) :定义输出数据的小数部分位数

image

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(空白输出):复位时将输出置为高阻态或无效状态

其他的选项默认即可。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值