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

news2024/9/22 9:40:05

       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.coloradmin.cn/o/1398322.html

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

相关文章

TypeScript语法总结

JavaScript 与 TypeScript 的区别 TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法,因此现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改,TypeScript 通过类型注解提供编译时的静态类型检查。 TypeScript 可处理已…

GitHub 13.7k star,一款让Windows和macOS瘦身减肥实用工具,免安装+开源+性能高

GitHub 13.7k star,一款让Windows和macOS瘦身减肥实用工具,免安装开源性能高 大家好!我是老码农。 今天给大家推荐一款:让Windows和macOS操作系统瘦身减肥的实用工具,czkawka。 这款工具主要干啥事呢?说…

Latex绘图

排查Latex报错 “Command \csubfigure already defined” 这个可以通过添加如下命令: \usepackage{subfig} \usepackage{subfloat} ..... \begin{figure*}[h] \centering \subfloat[subfloat title]{ \label{fig:subfig:a} \includegraphics[scale0.7]{Figs/.....…

MeterSphere本地化部署实践

项目结构 搭建本地环境 安装JDK11,配置好JDK环境,系统同时支持JDK8和JDK11安装IEAD,配置JDK环境配置maven环境,IDEA配置(解压可以直接使用)无限重置IDEA试用期配置redis环境(解压可以直接使用) 配置kafka环境 安装mysql-5.7环境&#xff…

九州金榜|在孩子家庭教育中放手不放任

家庭教育,是每个父母都要面临的事情,也是每个家庭都要经历的,但是在目前的家庭教育中,孩子都是由父母规划,在一定程度上会对孩子的成长产生影响,如何科学家庭教育,九州金榜家庭教育有以下观点&a…

论文阅读笔记AI篇 —— Transformer模型理论+实战 (三)

论文阅读笔记AI篇 —— Transformer模型理论实战 (三) 第三遍阅读(精读)3.1 Attention和Self-Attention的区别?3.2 Transformer是如何进行堆叠的?3.3 如何理解Positional Encoding?3.x 文章涉及…

【蓝桥杯EDA设计与开发】立创开源社区分享的关于蓝桥被EDA真题与仿真题的项目分析

立创开源社区内有几个项目分享了往年 EDA 设计题目与仿真题,对此展开了学习。 【本人非科班出身,以下对项目的学习仅在我的眼界范围内发表意见,如有错误,请指正。】 项目一 来源:第十四届蓝桥杯EDA赛模拟题一 - 嘉立…

1432 - 走出迷宫的最少步数-广度优先搜索BFS

代码 #include<bits/stdc.h> using namespace std; char a[51][51]; int r,c; int fx[4]{0,0,1,-1}; int fy[4]{1,-1,0,0}; int tx,ty; struct Node{int x,y,step; }; int bfs(int x,int y){a[x][y]#;queue<Node> q;q.push({x,y,1});while(!q.empty()){Node Curre…

宋仕强论道之再混华强北(三十五)

我是2012年重新回到华强北的&#xff0c;宋仕强说来深圳市第一份工作就在华强北担任一名工程师&#xff0c;和华强北有深厚的感情。我回来后经常混华强北的上层圈子跟老板老板娘们吹牛逼&#xff0c;最初大家看我穿的衣冠楚楚人模狗样的但态度吊儿郎当&#xff0c;理论一套一套…

Hadoop基础知识

Hadoop基础知识 1、Hadoop简介 广义上来说&#xff0c;Hadoop通常是指一个更广泛的概念——Hadoop生态圈。狭义上说&#xff0c;Hadoop指Apache这款开源框架&#xff0c;它的核心组件有&#xff1a; HDFS&#xff08;分布式文件系统&#xff09;&#xff1a;解决海量数据存储Y…

力扣-202. 快乐数解析-弗洛伊德循环查找算法

题目链接 public static void Happy(int n) {int sum 0;int digit 0;for (int i 0; i < 20; i) {while (n ! 0) {digit n%10;sum digit*digit;n/10;}System.out.print(sum " ");n sum;sum 0;}} 使用代码测试一下每一代数字 n 2 : 4 16 37 58 89 145 42 …

如何在Docker下部署MinIO存储服务通过Buckets实现文件的远程上传

&#x1f4d1;前言 本文主要是Linux下通过Docker部署MinIO存储服务实现远程上传的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#…

Vue3新特性defineModel()便捷的双向绑定数据

官网介绍 传送门 配置 要求&#xff1a; 版本&#xff1a; vue > 3.4(必须&#xff01;&#xff01;&#xff01;)配置&#xff1a;vite.config.js 使用场景和案例 使用场景&#xff1a;父子组件的数据双向绑定&#xff0c;不用emit和props的繁重代码 具体案例 代码实…

左侧交易 vs 右侧交易:哪种更适合新手投资者?

对于外汇市场的新手投资者&#xff0c;选择交易方式是个大课题。外汇市场上的交易方式多种多样&#xff0c;其中主要有两种&#xff1a;左侧交易和右侧交易。那么&#xff0c;这两种交易方式究竟如何呢&#xff1f;它们之间有何区别和优势&#xff1f;本文将为您一一解答。 一、…

MySQL进阶篇:索引(概述,结构,分类,语法,SQL性能分析,索引使用,设计原则)

目录 1.索引概述2.索引结构1.B树&#xff08;多路平衡查找树&#xff09;2.B树3.Hash1.特点2.存储引擎支持 4.选择B树作为InnoDB存储引擎索引结构的原因 3.索引分类1.聚集索引选取规则2.回表查询 4.索引语法1.创建索引2.查看索引3.删除索引 5.SQL性能分析1.SQL执行频率2.慢查询…

DiffMatch:扩散模型 + 图像配对 + 密集匹配,如何在一对图像之间建立像素级的对应关系?

DiffMatch&#xff1a;扩散模型 图像配对 密集匹配 提出背景效果检验密集匹配研究 网络结构如何使用概率方法来解决密集对应问题&#xff1f;去噪扩散模型如何生成或恢复数据&#xff1f;DiffMatch 如何找到两幅图像之间每个像素点的最佳匹配&#xff1f;如何寻找两个图像间最…

【论文阅读 SIGMOD18】Query-based Workload Forecasting for Self-Driving

Query-based Workload Forecasting for Self-Driving Database Management Systems My Summary ABSTRACT Autonomous DBMS的第一步就是能够建模并预测工作负载&#xff0c;以前的预测技术对查询的资源利用率进行建模。然而&#xff0c;当数据库的物理设计和硬件资源发生变化…

ssh: connect to host github.com port 22: Connection refused

ssh: connect to host github.com port 22: Connection refused 问题现象 本文以Windows系统为例进行说明&#xff0c;在个人电脑上使用Git命令来操作GitHub上的项目&#xff0c;本来都很正常&#xff0c;突然某一天开始&#xff0c;会提示如下错误ssh: connect to host gith…

【网站项目】基于ssm的青大校园预点餐系统

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

C++类与对象(四):再谈构造函数(详解初始化列表)、Static成员

上次把默认的成员函数部分梳理完毕了&#xff1a;C初阶类与对象&#xff08;三&#xff09;&#xff1a;详解复制构造函数和运算符重载 今天接着讲下面的内容&#xff1a; 文章目录 1.再谈构造函数1.1构造函数体赋值1.2初始化列表1.2.1格式和概念1.2.2由来情况1情况2 1.2.3特性…