积分梳状滤波器CIC原理与实现

       CIC(Cascade Intergrator Comb):级联积分梳状滤波器,是由积分器和梳状滤波器级联而得。滤波器系数为1,无需对系数进行存储,只有加法器、积分器和寄存器,资源消耗少,运算速率高,实现简单,可实现高速滤波,常用在输入采样率最高的第一级。

(1)应用背景

CIC滤波器是一种数字信号处理中常用的滤波器结构,主要用于降低采样率。它在应用中有一些特定的背景和优势:

降低采样率: CIC滤波器的主要应用是在数字信号处理系统中降低采样率。通过级联积分器和组合器,CIC滤波器可以有效地实现高通滤波和降采样,从而减少数据量和系统复杂度。

通信系统: 在通信系统中,CIC滤波器通常用于数字解调器和调制器之间,以及数字前端和后端之间,以满足不同模块之间的采样率不匹配问题。

无线通信: CIC滤波器在无线通信系统中也得到广泛应用,特别是在射频接收端,用于滤除不需要的高频信号,并减小信号带宽,从而降低后续处理的计算复杂度。

医疗信号处理: 在医疗领域,CIC滤波器可用于生物传感器和医学图像处理等应用,有助于降低采样率并提高系统效率。

雷达系统: 在雷达系统中,CIC滤波器可以用于对接收到的雷达信号进行预处理,滤除不需要的频率成分,以便后续目标检测和跟踪。

例如,在数字信号处理硬件设计时,如果后级硬件如FPGA的处理速度无法跟上前级ADC的采样速度,则需要对ADC的采样数据进行降速处理,即对采样数据进行抽取(简单的抽取描述就是对其中连续几个点取一个点进行处理)。抽取操作相当于对时域进行压缩,因此在频域会造成频谱做扩展。此外采样信号都是离散的,因此反映在频谱上会产生折叠,可能导致失真和信息丢失。因此需要在抽取前加一级低通抗混叠滤波器,以防止混叠现象的产生。

     抗混叠滤波器一般为低通滤波器,硬件实现时需占用乘法器和加法器资源。而CIC滤波器提供了一种更简单方便的实现方式。

(2)CIC结构

CIC滤波器由两部分组成:积分器和梳状滤波器。

①积分器

积分器是一种用于对信号进行积分操作的电路或数字滤波器。在时域上,积分器的作用类似于对信号进行累积,它对输入信号的样本进行累积,从而生成输出信号。在离散时间中,积分器可以通过差分方程来表示。离散时间积分器的差分方程通常具有以下形式:

y(n)=y(n-1)+x(n)

其中,y(n)是输出信号,x(n)是输入信号,n是离散时间的样本索引。这表示输出信号是输入信号的当前样本值与前一时刻输出信号值的累积和。对于离散时间,积分器的系统响(传递函数)应为(z变换推导):

H_1(z)=1/(1-z^{-1})

积分器在信号处理中有多种应用,包括:

滤波: 积分器可以用作滤波器,特别是对于低频信号的滤波,因为它对高频信号具有较强的响应。

信号处理: 积分器可用于对信号进行平滑处理,从而去除高频噪声。

控制系统: 在控制系统中,积分器经常用于实现积分控制,帮助系统对持续误差进行调整。

②梳状滤波器

梳状滤波器(Comb Filter)是一种常见的滤波器结构,其主要特征是在频域上呈现周期性的谱线,形状类似梳子,因此得名。梳状滤波器通常用于处理信号中的周期性成分,对特定频率的信号进行增强或抑制。梳状滤波器方程具有以下形式:

y(n)=x(n)-x(n-D)

其中,y(n) 是滤波器的输出,x(n)是输入信号的当前样本,D 是延迟因子,一般等于抽取或内插的倍数。梳状滤波器的系统响应为:

H_2(z)=1-z^{-D}

梳状滤波器在信号处理中有多种应用,包括:

降采样: 梳状滤波器在CIC结构中通常用于降低采样率。通过引入梳状滤波器,CIC滤波器能够实现有效的降采样操作,从而减小信号的数据量,提高系统的效率。

频谱整形: 梳状滤波器的设计使其在频域上呈现出梳状的响应。这种响应有助于调整信号的频谱特性,对特定频率进行增强或抑制,以满足滤波器设计的要求。

抑制高频噪声: 梳状滤波器的特性使其对高频噪声有一定的抑制作用。在CIC滤波器中,这有助于去除在降采样过程中可能引入的高频噪声成分。

差分运算: 梳状滤波器的实现通常涉及对输入信号进行差分运算,这有助于调整频谱,并对特定频率进行处理。

③CIC滤波器

CIC滤波器是将积分器与梳状滤波器进行级联,因此,CIC滤波器的系统响应可以表示为:

H(z)=H_1(z)*H_2(z)=(1-z^{-D})/(1-z^{-1})

将 z 替换为e^{j\omega},得到CIC滤波器的频域响应为:

|H(e^{j\omega)}|=|\frac{sin(\omega D/2)}{sin(\omega /2)}|

D=16的频响如下图所示

从图中可以看出,CIC滤波器的频谱特性像一把逐渐衰减的梳子。当抽取或内插的倍数远大于1时,第一旁瓣电平相对于主瓣电平的差值几乎是固定的13.46dB。这样小的阻带衰减远不能够满足低通滤波器要求。解决这一问题的方法是对滤波器进行级联,每增加一级滤波器,则旁瓣电平衰减增加13,46dB。

|H(e^{j\omega)}|=|\frac{sin(\omega D/2)}{sin(\omega /2)}|^N

采用5级CIC滤波器级联的频响如下所示:

增加滤波器级联数目可以解决旁瓣电平衰减小的问题,但是会带来通带衰减大的问题,并且在实现时会消耗更多的资源。 在CIC滤波器实现的设计过程中,通过对参数D和N的选择来在指定频率范围提供足够的通带特性。

④CIC滤波器补偿

CIC滤波器的优点明显,然而多级CIC的通带比较窄,为了克服这个缺点,一般有两种解决方法,
1)使用CIC进行初步降低,后续在使用半带滤波器或FIR滤波器进行级联使用。
2)利用补偿滤波器对通带内进行补偿,补偿滤波器的设计方法就是设计一个在通带内频率响应为CIC滤波器频率响应倒数的滤波器,将两个滤波器级联后,可以实现通带内频率响应平稳。

(3)升采样与降采样

升采样是在原两个采样点之间插入零(内插),然后进行低通滤波。采样率的增加使信号频谱周期性延拓的周期也增加,因此出现了多余的镜像信号,低通滤波器的作用是滤除镜像信号。下图是二级CIC升采样滤波器。

降采样是先进行低通滤波,然后再进行抽取。抽取后信号频谱的周期延拓的周期将减少,如果过渡抽取将导致无法满足奈奎斯特采样定律,出现频谱混叠,或者干扰进入带内,低通滤波器的加入是为了避免出现频谱混叠及干扰。下图是二级CIC降采样滤波器。

(4)CIC滤波器设计

设计CIC滤波器时需要考虑多个因素,以确保滤波器能够满足特定应用的需求。以下是设计CIC滤波器时的一些重要考虑因素:

降采样因子(Decimation Factor): 降采样因子决定了CIC滤波器用于降低采样率的程度。选择适当的降采样因子需要考虑系统的信号特性和要求。

梳状滤波器的延迟因子: CIC滤波器中的梳状滤波器引入了延迟因子,通常表示为 �M。选择合适的延迟因子影响着滤波器的频率响应和性能。

积分器的阶数: CIC滤波器包括级联的积分器和梳状滤波器。积分器的阶数会影响滤波器的频率响应,更高阶的积分器通常能够提供更陡峭的滤波特性。

过渡带宽度: 过渡带宽度是指在频率响应中从通带到阻带的过渡带的宽度。选择适当的过渡带宽度取决于对滤波器性能的要求,以及过渡带宽度与滤波器阶数的平衡。

折叠频率: CIC滤波器的设计需要考虑折叠频率,以确保在降采样过程中不引入不必要的频谱混叠。

硬件实现的复杂度: CIC滤波器通常在硬件中实现,因此设计时需要考虑硬件的复杂度和资源占用。较低的硬件复杂度有助于在嵌入式系统等资源受限的环境中使用。

幅度平坦度: 幅度平坦度表示在通带内滤波器对不同频率的响应是否保持平坦。在某些应用中,对于不同频率的信号需要保持一致的幅度响应。

实时性能: 如果CIC滤波器用于实时系统,如通信系统,实时性能是关键考虑因素。低群延迟和高处理速度可能是设计时需要优化的指标。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/641869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何基于 ESP32 芯片测试 WiFi 连接距离、获取连接的 AP 信号强度(RSSI)以及 WiFi吞吐测试

测试说明: 测试 WiFi 连接距离,是将 ESP32 作为 WiFi Station 模式来连接路由器,通过在开阔环境下进行拉距来测试。另外,可以通过增大 WiFi TX Power 来增大连接距离。 获取连接的 AP 信号强度,一般可以通过 WiFi 扫描…

C语言斐波那契数

题目:求第N个斐波那契数 斐波那契数列:斐波那契数列(Fibonacci sequence),又称黄金分割数列 ,因数学家莱昂纳多斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故…

24种设计模式之结构型模式-Java版

软件设计模式是前辈们代码设计经验的总结,可以反复使用。设计模式共分为3大类,创建者模式(6种)、结构型模式(7种)、行为型模式(11种),一共24种设计模式,软件设计一般需要满足7大基本原则。下面通过5章的学习一起来看看设计模式的魅…

Java应用崩溃的排查流程

目录 分析问题 hs_err_pid.log 上周排查了一个java应用的崩溃问题,在这里记录一下。 分析问题 首先是排查到/tmp目录下有很多的core文件,形式类似: core-18238-java-1705462412 1.3 GB 程序崩溃数据 2024-01-17 11:33:44 core-18108…

Leetcode28-合并相似的物品(2363)

1、题目 给你两个二维整数数组 items1 和 items2 ,表示两个物品集合。每个数组 items 有以下特质: items[i] [valuei, weighti] 其中 valuei 表示第 i 件物品的 价值 ,weighti 表示第 i 件物品的 重量 。 items 中每件物品的价值都是 唯一…

jasypt集成spring-boot原理解析

背景 每个应用都有很多配置项,有些配置项对外非常敏感,例如数据库连接密码、私钥等。使用明文存在泄露的风险,生产环境要配合加密算法。jasypt是一个方便、流行的加密工具,支持PBE、AEC和对称加密。它与spring-boot的集成度很高&…

语义分割常用评价指标

在图像处理领域中,语义分割是很重要的一个任务。在实际项目开发中,评估模型预测效果以及各指标的含义对于优化模型极为重要。 本文将主要评价指标的计算算法进行了详细说明,并加上注释解释每个指标的含义。这对理解各指标背后的数学原理以及能否在实践中应用或许有…

对接银行、第三方机构思考

对接银行、第三方机构思考 前置工作 1、产品对接(商务+产品) ①了解准入流程,需要签署哪些协议、合约场景、额度、费率等,估算内部准入流程需要时间判断是否对项目上线排期有影响 ②是否符合自己所要承接的业务场景,有哪些合适,有哪些不合适,不合适的地方对方是否有备…

GPS位置虚拟软件 AnyGo mac激活版

AnyGo for Mac是一款一键将iPhone的GPS位置更改为任何位置的强大软件!使用AnyGo在其iOS或Android设备上改变其GPS位置,并在任何想要的地方显示自己的位置。这对那些需要测试应用程序、游戏或其他依赖于地理位置信息的应用程序的开发人员来说非常有用&…

Python - SnowNLP 情感分析与自定义训练

目录 一.引言 二.SnowNLP 情感分析 1.安装 SnowNLP 2.测试 SnowNLP 三.SnowNLP 自定义训练 1.数据集准备 2.训练与保存 3.模型替换 4.模型测试 5.SnowNLP 原理 ◆ Bayes 公式 ◆ 先验概率 ◆ 后验概率 ◆ 情感模型 四.总结 一.引言 SnowNLP 是一个基于 Python …

网络安全产品之认识防毒墙

在互联网发展的初期,网络结构相对简单,病毒通常利用操作系统和软件程序的漏洞发起攻击,厂商们针对这些漏洞发布补丁程序。然而,并不是所有终端都能及时更新这些补丁,随着网络安全威胁的不断升级和互联网的普及&#xf…

Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心,Kotlin

Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心,Kotlin 在 Android双击图片放大移动图中双击点到ImageView区域中心,Kotlin-CSDN博客 基础上,这次使用ScaleGestureDetector检测两根手指的缩放动作&a…

Python如何叠加两张图片

我这里有如下两张图片,需要把他们叠加在一起,进行查看。这两张图片的大小都是300 300。不拼接在一起就不方便查看。需要把左边的小图,放到右边大图的中间。 一、拼接两个图片的代码 要解决这个问题,你可以使用fromarray()方法将…

JoyRL Actor-Critic算法

策略梯度算法的缺点 这里策略梯度算法特指蒙特卡洛策略梯度算法,即 REINFORCE 算法。 相比于 DQN 之类的基于价值的算法,策略梯度算法有以下优点。 适配连续动作空间。在将策略函数设计的时候我们已经展开过,这里不再赘述。适配随机策略。由…

MATLAB数据处理: 每种样本类型随机抽样

tn5;% 每种类型随机抽样数 indextrain[];% 训练样本序号集 for i1:typenumber index301 find(typemat i); n2length(index301); index302randperm(n2); index401index301(index302(1:tn)); indextrain[indextrain; index401]; end 该代码可以对大样…

java进阶

文章目录 一、Java进阶1.注解(Annotation)a.内置注解b.元注解c.自定义注解 2.对象克隆3. Java设计模式(Java design patterns)a.软件设计模式概念b.建模语言(UML)c.面向对象设计原则d.设计模式 总结面向对象…

从0开始学习mysql 第十六课:数据库锁及InnoDB锁机制

第十六课:数据库锁及InnoDB锁机制 学习目标 今天我们要深入学习以下内容: 理解数据库锁的作用及其对事务控制的重要性。详细了解InnoDB支持的锁类型:共享锁(S锁)、排他锁(X锁)。掌握意向锁&a…

分享一个C++下使用简单的反射实现的程序模块化的思路

分享一个C下使用简单的反射实现的程序模块化的思路 首先说一个基本问题,项目大了以后,一定要做模块化处理,每个模块处理各自的事情,各个模块之间尽量不要有太多的耦合,就是说模块A尽量不要依赖模块B,模块B…

栈的基本操作(c++题解)

题目描述 栈:插入元素和删除元素只能在线性表的一端进行,所以遵循“先进后出 (LIFO) ”原则,其中插入和删除的一端称为栈顶 (top)。我们可以把栈比喻成一个箱子,只能在箱子的开口处放入和取出物体,而且是后放入的物体…

项目工程下载与XML配置文件下载:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十)

XPCIE1032H功能简介 XPCIE1032H是一款基于PCI Express的EtherCAT总线运动控制卡,可选6-64轴运动控制,支持多路高速数字输入输出,可轻松实现多轴同步控制和高速数据传输。 XPCIE1032H集成了强大的运动控制功能,结合MotionRT7运动…