积分梳状滤波器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 扫描…

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 中每件物品的价值都是 唯一…

语义分割常用评价指标

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

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 …

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.设计模式 总结面向对象…

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

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

深度解析Oladance、韶音、南卡开放式耳机:选购指南与天花板级推荐

​随着开放式耳机在日常生活中越来越受欢迎,许多品牌纷纷降低材料品质以迎合大众需求,导致耳机的性能和音质严重下滑。这让消费者在选择优质开放式耳机时感到困惑。作为一名专业的耳机评测人员,我近期对多款热门开放式耳机进行了深入的测评&a…

Leetcode—92.反转链表II【中等】

2023每日刷题(八十一) Leetcode—92.反转链表II 算法思想 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), n…

kubernetes Pod 异常排查步骤

kubernetes Pod 异常排查步骤 详细排查图查看容器状态查看容器列表容器未启动成功排查容器启动成功排查pod状态对应原因 详细排查图 查看容器状态 查看容器列表 查看容器列表,最好在后面跟上命名空间,不跟上查询出来是默认的 kubectl get pods -n kubesphere-system单独查看某…

【Spring 篇】深入探讨MyBatis映射文件中的动态SQL

MyBatis,这个名字在Java开发者的世界中犹如一道光芒,照亮着持久层操作的道路。而在MyBatis的映射文件中,动态SQL则是一个让人爱-hate的存在。有时候,你感叹它的灵活性,有时候,你可能会为它的繁琐而头痛。但…

windows 11安装VMware 17 ,VMware安装Ubuntu 20.4

一、下载安装激活VMware 17 下载与激活:Vmware 17 下载地址、最新激活码 2024 _ 注意:安装路径自己选择,路径中尽可能避免中文或空格 二、下载Ubuntu 镜像 下载镜像地址:清华大学开源软件镜像站 点开下载镜像地址,找…

中科星图——Sentinel-2_MSI_L2A数据集

数据名称: Sentinel-2_MSI_L2A 数据来源: Copernicus 时空范围: 2022年10月-2023年1月 空间范围: 全国 数据简介: 哨兵2号(Sentinel-2)卫星是高分辨率多光谱成像卫星,携带一…

分布式一致性算法---Raft初探

读Raft论文也有一段时间了,但是自己总是以目前并没有完全掌握为由拖着这篇博客。今天先以目前的理解程度(做了6.824的lab2A和lab2B)对这篇论文做一个初步总结,之后有了更深入的理解之后再进行迭代,关于本文有任何疑问欢…

苹果眼镜(Vision Pro)的开发者指南(3)-【3D UI SwiftUI和RealityKit】介绍

为了更深入地理解SwiftUI和RealityKit,建议你参加专注于SwiftUI场景类型的系列会议。这些会议将帮助你掌握如何在窗口、卷和空间中构建出色的用户界面。同时,了解Model 3D API将为你提供更多关于如何为应用添加深度和维度的知识。此外,通过学习RealityView渲染3D内容,你将能…