积分梳状滤波器CIC原理与实现
CIC(Cascade Intergrator Comb):级联积分梳状滤波器,是由积分器和梳状滤波器级联而得。滤波器系数为1,无需对系数进行存储,只有加法器、积分器和寄存器,资源消耗少,运算速率高,实现简单,可实现高速滤波,常用在输入采样率最高的第一级。
(1)应用背景
CIC滤波器是一种数字信号处理中常用的滤波器结构,主要用于降低采样率。它在应用中有一些特定的背景和优势:
降低采样率: CIC滤波器的主要应用是在数字信号处理系统中降低采样率。通过级联积分器和组合器,CIC滤波器可以有效地实现高通滤波和降采样,从而减少数据量和系统复杂度。
通信系统: 在通信系统中,CIC滤波器通常用于数字解调器和调制器之间,以及数字前端和后端之间,以满足不同模块之间的采样率不匹配问题。
无线通信: CIC滤波器在无线通信系统中也得到广泛应用,特别是在射频接收端,用于滤除不需要的高频信号,并减小信号带宽,从而降低后续处理的计算复杂度。
医疗信号处理: 在医疗领域,CIC滤波器可用于生物传感器和医学图像处理等应用,有助于降低采样率并提高系统效率。
雷达系统: 在雷达系统中,CIC滤波器可以用于对接收到的雷达信号进行预处理,滤除不需要的频率成分,以便后续目标检测和跟踪。
例如,在数字信号处理硬件设计时,如果后级硬件如FPGA的处理速度无法跟上前级ADC的采样速度,则需要对ADC的采样数据进行降速处理,即对采样数据进行抽取(简单的抽取描述就是对其中连续几个点取一个点进行处理)。抽取操作相当于对时域进行压缩,因此在频域会造成频谱做扩展。此外采样信号都是离散的,因此反映在频谱上会产生折叠,可能导致失真和信息丢失。因此需要在抽取前加一级低通抗混叠滤波器,以防止混叠现象的产生。
抗混叠滤波器一般为低通滤波器,硬件实现时需占用乘法器和加法器资源。而CIC滤波器提供了一种更简单方便的实现方式。
(2)CIC结构
CIC滤波器由两部分组成:积分器和梳状滤波器。
①积分器
积分器是一种用于对信号进行积分操作的电路或数字滤波器。在时域上,积分器的作用类似于对信号进行累积,它对输入信号的样本进行累积,从而生成输出信号。在离散时间中,积分器可以通过差分方程来表示。离散时间积分器的差分方程通常具有以下形式:
其中,是输出信号,
是输入信号,n是离散时间的样本索引。这表示输出信号是输入信号的当前样本值与前一时刻输出信号值的累积和。对于离散时间,积分器的系统响(传递函数)应为(z变换推导):
积分器在信号处理中有多种应用,包括:
滤波: 积分器可以用作滤波器,特别是对于低频信号的滤波,因为它对高频信号具有较强的响应。
信号处理: 积分器可用于对信号进行平滑处理,从而去除高频噪声。
控制系统: 在控制系统中,积分器经常用于实现积分控制,帮助系统对持续误差进行调整。
②梳状滤波器
梳状滤波器(Comb Filter)是一种常见的滤波器结构,其主要特征是在频域上呈现周期性的谱线,形状类似梳子,因此得名。梳状滤波器通常用于处理信号中的周期性成分,对特定频率的信号进行增强或抑制。梳状滤波器方程具有以下形式:
其中, 是滤波器的输出,
是输入信号的当前样本,D 是延迟因子,一般等于抽取或内插的倍数。梳状滤波器的系统响应为:
梳状滤波器在信号处理中有多种应用,包括:
降采样: 梳状滤波器在CIC结构中通常用于降低采样率。通过引入梳状滤波器,CIC滤波器能够实现有效的降采样操作,从而减小信号的数据量,提高系统的效率。
频谱整形: 梳状滤波器的设计使其在频域上呈现出梳状的响应。这种响应有助于调整信号的频谱特性,对特定频率进行增强或抑制,以满足滤波器设计的要求。
抑制高频噪声: 梳状滤波器的特性使其对高频噪声有一定的抑制作用。在CIC滤波器中,这有助于去除在降采样过程中可能引入的高频噪声成分。
差分运算: 梳状滤波器的实现通常涉及对输入信号进行差分运算,这有助于调整频谱,并对特定频率进行处理。
③CIC滤波器
CIC滤波器是将积分器与梳状滤波器进行级联,因此,CIC滤波器的系统响应可以表示为:
将 z 替换为,得到CIC滤波器的频域响应为:
D=16的频响如下图所示
从图中可以看出,CIC滤波器的频谱特性像一把逐渐衰减的梳子。当抽取或内插的倍数远大于1时,第一旁瓣电平相对于主瓣电平的差值几乎是固定的13.46dB。这样小的阻带衰减远不能够满足低通滤波器要求。解决这一问题的方法是对滤波器进行级联,每增加一级滤波器,则旁瓣电平衰减增加13,46dB。
采用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滤波器用于实时系统,如通信系统,实时性能是关键考虑因素。低群延迟和高处理速度可能是设计时需要优化的指标。
相关文章:

积分梳状滤波器CIC原理与实现
CIC(Cascade Intergrator Comb):级联积分梳状滤波器,是由积分器和梳状滤波器级联而得。滤波器系数为1,无需对系数进行存储,只有加法器、积分器和寄存器,资源消耗少,运算速率高&#…...

【项目管理】CMMI-原因分析与解决过程(CAR)
概述: “原因分析与解决”通过预防缺陷或者问题的引入以及识别并适当纳入优秀过程性能的原因,改进质量与生产率。 目录 1、文档结构 2、原因分析与解决过程域包括如下活动 3、选择需要加以分析的结果(启动条件) 4、过程活动与实践对照表 5、实例 1、…...

【设计模式】文件目录管理是组合模式吗?
组合模式是什么? 组合模式是一种将对象组合成树形结构以表示"部分-整体"的层次结构的设计模式。它使得用户对单个对象和组合对象的使用具有一致性。 组合模式在什么情况下使用? 当你发现你需要在代码中实现树形数据结构,让整体-部…...

利用appium自动控制移动设备并提取数据
安装appium-python-client模块并启动已安装好的环境 安装appium-python-client模块 在window的虚拟环境下执行pip install appium-python-client 启动夜神模拟器,进入夜神模拟器所在的安装路径的bin目录下,进入cmd终端,使用adb命令建立adb…...

day22_236二叉树最近公共祖先_235二叉搜索树(最近公共祖先_701插入一个节点_450删除一个节点)
文章目录 [236 二叉树的最近公共祖先](https://programmercarl.com/0236.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE)[235 二叉搜索树的最近公共祖先](https://program…...

OpenSource - 工具管理器easy-manager-tool
文章目录 功能说明运行配置环境配置启动docker部署 项目安全UI展示 Easy-Manager-Tool 打造软件行业首款集成工具,不管你是程序员,测试,运维等都可以使用该软件来提升自己的工作效率。 Easy-Manager-Tool 的诞生是为了解决软件行业众多参与者…...

Laravel7 + easyWeChat 实现微信公众号支付功能
注册服务号,需进行微信认证,此时需缴费 300 元/年,必须是认证成功的服务号才能开通微信支付。 注册微信支付商户号 1、登录 https://pay.weixin.qq.com/index.php/core/home/login?return_urlhttps%3A%2F%2Fpay.weixin.qq.com%2Findex.php%…...

Linux环境下,针对QT软件工程搭建C++Test单元测试环境的操作指南
文章目录 前言一、安装QT二、安装CTest三、使用QT生成.bdf文件四、创建CTest工程注意事项 前言 CTest是Parasoft公司出品的一款可以针对C/C源代码进行静态分析、单元测试、集成测试的测试工具。本文主要讲解如何在Linux环境下,搭建QT插件版的CTest测试环境。 一、…...

16k+ start 一个开源的的监控系统部署教程
安装条件 Linux或macOS系统 4GB内存 开放 33014、33174、3183端口 1.安装 1、下载源码 首先使用 git 克隆源码到本地 git clone -b main https://github.com/SigNoz/signoz.git && cd signoz/deploy/ 方式1:运行 install.sh 脚本一键安装 ./install.s…...

Mermaid使用教程(绘制各种图)
Mermaid使用教程(绘制各种图) 文章目录 Mermaid使用教程(绘制各种图)简介饼状图简单的例子应用案例 序列图简单案例应用案例另一个应用案例 甘特图简单案例应用案例一个更为复杂的应用案例 Git图简单案例 总结 简介 本文将主要介…...

OpenAI/ChatGPT Plus 支持的虚拟卡有哪些
最近,有关 OpenAI/ChatGPT Plus 需要信用卡的讨论越来越多。在这篇文章中,我将分享一些我在绑定信用卡过程中得到的经验和教训,以及 OpenAI/ChatGPT Plus 支持的卡类型。 不支持的卡 根据 OpenAI 的地区限制,国内和香港的卡都不…...

ARM多核调度器DSU
1. 背景 从A75开始,ARM提出了一个新的多核心管理系统单元,叫做DSU(DynamIQ Shared Unit)。DSU的核心功能是控制CPU内核,使其成簇Cluster使用,簇内每一个核心可以单独开关、调整频率/电压,能效表现更佳,甚至…...

vue解决部署文件缓存方式
问题:系统上线后,除了bug。紧急修复后,发现安卓正常,ios上海市有问题。通过debug后发现,ios上缓存严重。于是想到了打包文件加时间戳的方式来去除缓存。 vue2 配置打包输出文件名方式: const baseUrl &qu…...
游戏开发中的噪声算法
一、噪声 噪声是游戏编程的常见技术,广泛应用于地形生成,图形学等多方面。 那么为什么要引入噪声这个概念呢?在程序中,我们经常使用直接使用最简单的rand()生成随机值,但它的问题在于生成的随机值太“随机”了…...

CodeReview 小工具
大家开发中有没有遇到一个版本开发的非常杂,开发很多个项目,改动几周后甚至已经忘了自己改了些什么,领导要对代码review的时候,理不清楚自己改过的代码,只能将主要改动的大功能过一遍。这样就很容易造成review遗漏&…...

UE5 C++ Slate独立程序的打包方法
在源码版安装目录内找到已编译通过的xxx.exe,(\Engine\Binaries\Win64\xxx.exe),在需要的位置新建文件夹,拷贝源码版Engine内的Binaries、Content、Shaders文件夹到目标文件夹内,将xxx.exe放入对应位置,删除…...
探索设计模式的魅力:一篇文章让你彻底搞懂建造者模式
建造者模式(Builder Pattern)是一种创建型设计模式,旨在将一个复杂对象的创建过程与其表示分离,使得同样的构建过程可以创建不同的表示形式。 主要角色: 产品(Product):表示正在构建…...

Facebook广告投放指南,如何运营多个Facebook广告账户不被封?
许多卖家做广告投放会选择 Facebook 作为主要的业务和产品推广平台。然而,要在这个竞争激烈的平台上脱颖而出并成功拓宽广告覆盖面并不容易,通常情况下大家会运营多个Facebook广告账号,但是很多人因此遭遇Facebook账号被封的情况,…...

音乐人声分离工具:极简的人声和背景音乐分离工具
项目地址:jianchang512/vocal-separate: an extremely simple tool for separating vocals and background music, completely localized for web operation, using 2stems/4stems/5stems models 这是一个极简的人声和背景音乐分离工具,本地化网页操作&a…...

Go语言基础快速上手
1、Go语言关键字 2、Go数据类型 3、特殊的操作 3.1、iota关键字 Go中没有明确意思上的enum(枚举)定义,不过可以借用iota标识符实现一组自增常亮值来实现枚举类型。 const (a iota // 0b // 1c 100 // 100d // 100 (与上一…...

Excel 根据日期按月汇总公式
Excel 根据日期按月汇总公式 数据透视表日期那一列右击,选择“组合”,步长选择“月” 参考 Excel 根据日期按月汇总公式Excel如何按着日期来做每月求和...

使用 crypto-js 进行 AES 加解密操作
在前端开发中,数据的加密和解密是为了保障用户隐私和数据的安全性而常见的任务。AES(Advanced Encryption Standard)是一种对称密钥加密算法,被广泛用于保护敏感信息的传输和存储。本文将介绍 AES 加解密的基本原理,并…...

Vue-30、Vue非单文件组件。
非单文件组件: 一个组件包含n个组件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>非单文件组件</title><script type"text/javascript" src"https://cdn.jsde…...

7-6 实验2_1_判断两数的大小
7-6 实验2_1_判断两数的大小 分数 100 全屏浏览题目 切换布局 作者 scs 单位 北京邮电大学 已知有两个整数,请使用if-else选择结构将它们中的较大数选择出来,存到max变量中;将较小数选择出来,存到min变量中,并将选…...

POKT Network (POKT) :进军百亿美元市场规模的人工智能推理市场
POKT Network(又称 Pocket Network)是一个去中心化的物理基础设施网络(DePIN),它能够协调并激励对任何开放数据源的访问,最初专注于向应用程序和服务提供商提供区块链数据。 自 2020 年主网上线以来&#x…...

【STM32】STM32学习笔记-I2C通信外设(34)
00. 目录 文章目录 00. 目录01. I2C简介02. I2C外设简介03. I2C框图04. I2C基本结构05. 主机发送06. 主机接收07. 软件/硬件波形对比08. 预留09. 附录 01. I2C简介 I2C(Inter-Integrated Circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式…...

从数据角度分析年龄与NBA球员赛场表现的关系【数据分析项目分享】
好久不见朋友们,今天给大家分享一个我自己很感兴趣的话题分析——NBA球员表现跟年龄关系到底大不大?数据来源于Kaggle,感兴趣的朋友可以点赞评论留言,我会将数据同代码一起发送给你。 目录 NBA球员表现的探索性数据分析导入Python…...

深入浅出Spring AOP
第1章:引言 大家好,我是小黑,咱们今天要聊的是Java中Spring框架的AOP(面向切面编程)。对于程序员来说,理解AOP对于掌握Spring框架来说是超级关键的。它像是魔法一样,能让咱们在不改变原有代码的…...

火速收藏!2024 新年微信红包封面领取全攻略
2024“龙”重登场!今年有哪些令人期待的红包封面? 前方大批精美红包封面来袭,全新品牌氛围红包封面上线,支持品牌定制特色氛围元素,沉浸感受浓浓年味儿,收获满满惊喜! 新年开好运,微…...

【RabbitMQ】RabbitMQ安装与使用详解以及Spring集成
🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《RabbitMQ实战》。🎯🎯 &am…...