第六篇:多速率信号处理——抽取、插值与半带滤波器

1. 为什么需要多速率信号处理?

在直接射频采样SDR中,ADC以数GSps的速率采样,而基带信号带宽可能仅为数十MHz。若在整个处理链路中保持GSps级采样率,后续的滤波、解调等模块将承受巨大的计算负担,功耗和资源消耗难以接受。

多速率信号处理通过在链路中适时降低(抽取)或提高(插值)采样率,使各模块工作在最优速率下,实现计算效率的最大化。

2. 抽取:降低采样率

2.1 抽取的数学模型

抽取因子为M的降采样操作定义为:y[n] = x[Mn],即每M个样本保留一个,丢弃其余M-1个。

从频域看,抽取会使频谱在频率轴上扩展M倍。原始信号中高于f_s/(2M)的频率分量会混叠到基带(0 ~ f_s/(2M)),产生不可恢复的失真。因此,抽取前必须使用抗混叠滤波器滤除这些高频分量。

2.2 多相分解------高效抽取的实现

直接实现抽取(先滤波、后降采样)是计算浪费的------滤波器计算出的M-1个样本随后被丢弃。多相分解将滤波器系数按相位分为M组,每组对应一个降采样相位,每次只计算被保留的那个相位的输出。

数学上,将滤波器H(z)分解为M个子滤波器:

H(z) = E0(z^M) + z^(-1)·E1(z^M) + ... + z^(-(M-1))·E(M-1)(z^M)

其中Ek(z)为第k相子滤波器。抽取时,只需计算与降采样相位k对应的子滤波器输出,计算量降为原来的1/M。

3. 插值:提高采样率

3.1 插值的数学模型

插值因子为L的上采样操作定义为:在每两个样本之间插入L-1个零值,即y[n] = x[n/L](当n为L的整数倍),否则yn=0。

上采样会在频谱中产生L-1个镜像,位于f_s/L、2f_s/L、...、(L-1)f_s/L处。这些镜像需要通过镜像抑制滤波器(低通)滤除,以恢复平滑波形。

3.2 多相分解在插值中的应用

与抽取类似,插值也可用多相分解实现高效计算。将滤波器系数按相位分组,每个输出样本仅需与一个子滤波器卷积,计算量降为原来的1/L。

4. 半带滤波器------多速率处理的主力

4.1 半带滤波器的特性

半带滤波器是抽取/插值系统中应用最广泛的滤波器类型,具有以下特性:

  • 通带与阻带对称:通带边缘f_p与阻带边缘f_s满足f_p + f_s = f_s/2

  • 约一半系数为零:除中心系数外,每隔一个系数为零,大幅降低乘法器需求

  • 系数对称:线性相位,群延迟恒定

  • 幅度响应在f_s/4处为-6dB:这是半带滤波器的定义性特征

4.2 半带滤波器的幅频响应分析

半带滤波器的幅频响应具有如下对称性:|H(e^(j(π-ω)))| = 1 - |H(e^(jω))|。这意味着在通带边缘f_p处,阻带衰减恰好等于通带纹波(以线性刻度计)。

设计半带滤波器时,需在以下参数间权衡:

  • 过渡带宽度:越窄所需的滤波器阶数越高

  • 通带纹波:越小所需的阶数越高

  • 阻带衰减:越大所需的阶数越高

对于2倍抽取/插值,半带滤波器是最优选择。对于4倍、8倍等更高的抽取/插值因子,可采用半带滤波器级联实现。

4.3 多级半带级联的频响累积效应

当多级半带滤波器级联时,总通带纹波是各级纹波之和(以dB计),总群延迟是各级群延迟之和。例如,三级半带级联(8倍抽取),若每级通带纹波为0.1dB,总纹波可达0.3dB;若信号带宽接近通带边缘,这一累积效应可能导致带内平坦度超标。因此,在多级设计中需将各级指标分配得更严格,或适当放宽总指标。

5. CIC滤波器------大倍数抽取/插值的低成本方案

5.1 CIC滤波器结构

级联积分梳状(CIC)滤波器由积分器级和梳状器级级联而成,其传递函数为:

H(z) = [(1 - z^(-RM)) / (1 - z^(-1))]^N

其中R为抽取/插值因子,M为差分延迟(通常为1或2),N为级联级数。

CIC滤波器的核心优势是无需乘法器------积分器和梳状器仅由加法器和寄存器构成。这使得CIC非常适合在采样率最高的位置(DDC的第一级或DUC的最后一级)实现大倍数(如40倍)速率变化。

5.2 CIC的幅频响应与补偿

CIC滤波器的幅频响应呈sinc^N形状,在通带内存在明显的"下垂"。以N=4、R=40为例,在通带边缘(f = f_s/(2R))处,衰减可达3~5dB。对于宽带信号,这种下垂会严重恶化带内平坦度。

补偿方法:在CIC后级联一个FIR补偿滤波器,其频率响应为CIC响应的倒数。补偿滤波器的阶数通常较低(10~20阶),资源开销小。

6. 抽取/插值链的设计实例

以100MHz带宽信号、ADC采样率5GSps、目标基带采样率250MHz为例(总抽取因子20):

方案A:单级抽取

  • 滤波器阶数:约300阶

  • 计算量:300 × 250MHz = 75GMAC/s

方案B:三级级联(4×5)

  • 第一级:4倍抽取,采样率5GSps→1.25GSps,滤波器阶数80阶,计算量80×1.25G=100GMAC/s

  • 第二级:5倍抽取,采样率1.25GSps→250MHz,滤波器阶数120阶,计算量120×250M=30GMAC/s

  • 总计算量:130GMAC/s(高于单级?需要优化)

方案C:四级级联(2×2×5)

  • 第一级:2倍抽取,半带滤波器,阶数20阶,计算量20×2.5G=50GMAC/s

  • 第二级:2倍抽取,半带滤波器,阶数20阶,计算量20×1.25G=25GMAC/s

  • 第三级:5倍抽取,可采用CIC+补偿FIR,CIC无乘法器,补偿FIR约30阶,计算量30×250M=7.5GMAC/s

  • 总计算量:约82.5GMAC/s,优于单级方案

结论:通过合理的级联分解和CIC使用,可将计算量降低30%以上,同时减少DSP切片占用。

7. 多速率处理在多通道系统中的应用

在数字阵列系统中,多速率处理面临额外的挑战:所有通道的抽取/插值滤波器需保持相同的群延迟,否则会引入通道间相位误差。对于级联滤波器结构,各级的群延迟是累加的,需精确计算并确保各通道一致。

同步策略:所有通道的抽取/插值滤波器在同一SYSREF边沿复位,确保滤波器状态从同一初始值开始累积。对于无限长冲激响应(IIR)类滤波器(如CIC),需额外关注状态初始化。

8. 小结

多速率信号处理是连接高速ADC/DAC与低速基带处理的桥梁。理解抽取与插值的频域特性、多相分解的高效实现、半带滤波器的对称优势、以及CIC滤波器的无乘法器结构,有助于设计高计算效率的DDC/DUC链路。下一篇文章将深入讲解数字滤波器的FPGA实现,包括FIR/IIR的选择、定点数量化、以及DSP48E2的高效映射。

相关推荐
坏孩子的诺亚方舟14 天前
FPGA系统架构设计实践15_高云Arora V系列时钟体系
fpga开发·系统架构
FPGA小徐14 天前
入门 CNN 结构全解析|从流程图理论到 FPGA Verilog 硬件实现(含习题带讲解)
fpga开发
FPGA小徐14 天前
FPGA 数字信号处理:并行 FIR 与串行滤波器设计原理、对比与完整 Verilog 实现
fpga开发
Saniffer_SH15 天前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试
zlinear数据采集卡15 天前
双核架构深度解析:ARM+FPGA如何让数据采集卡实现500Ksps高性能?
arm开发·fpga开发·架构
9527华安15 天前
FPGA实现GTH Transceivers Wizard传输2路视频,基于aurora 8b10b编解码架构,提供4套工程源码和技术支持
fpga开发·gth·aurora 8b10b·transceivers
奔袭的算法工程师15 天前
论文解读--Sparse4D v3: Advancing End-to-End 3D Detection and Tracking
人工智能·目标检测·计算机视觉·自动驾驶·信号处理
江畔柳前堤16 天前
github实战指南01-账号配置与 SSH 密钥
运维·人工智能·深度学习·ssh·github·pyqt·信号处理
江畔柳前堤16 天前
github实战指南02-仓库管理与 Issue
人工智能·深度学习·github·信号处理·caffe·wps·issue
FPGA小徐16 天前
FPGA 数字信号处理(二):并行 FIR 滤波器的 Verilog 全流程设计与实现
fpga开发