多采样速率的数字信号处理系统常常会用到采样速率的转换,如内插和抽取。由傅里叶变换性质可知,信号时域内的抽取会导致频谱周期性平移拓宽,当信号中有高频分量时,可能出现频谱混叠的现象。因此在抗频谱混叠中需要滤波操作,将高频分量滤除。梳状滤波器(CIC,Cascaded integrator–comb filter)结构简单,仅有乘、加单元,可以实现多倍速率下抽变换,并且能够滤除高频成分。为了使过渡带陡峭,抑制旁瓣,滤波器的带内容差不宜过大。当扫频的带宽一定时,CIC滤波器常用在采样率下抽的第一级,以满足较大的采样率和较小的下抽因子来降低带内容差。梳状滤波器传递函数的表达式和实现结构如下:

D为采样率下抽的倍数,N表示滤波器级联数,Z-1表示延迟一拍。由于梳状滤波器的零极点可以相互抵消,滤波器仍是稳定的因果系统。在MATLAB环境中绘制其幅频响应曲线和相频响应曲线如下:

可以看出,单级情况下旁瓣衰减约为13.46dB;级联之后,CIC滤波器旁瓣衰减与级联数成正比为N*13.46dB,即每增加一级级联旁瓣抑制将增加13.46dB;并且CIC滤波器的相位呈线性。另外的参考书本:

  1. 杜勇. 数字调制解调技术的MATLAB与FPGA实现:Altera/Verilog版[M]. 北京:电子工业出版社, 2015.

--------------------------------------------------------假装我是分割线--------------------------------------------------------

%%%%%%%%%%%%%%%%%%%%%%%%%
%  绘制M阶CIC的频谱特性
%%%%%%%%%%%%%%%%%%%%%%%%%
clc
clear 
close all

Len = 1024*300;%绘制数据点数
fs = 2*1e5;

D = 16;%下抽倍数
N = [1,3,5]; %CIC级联数
w = 0.01:1/fs:(Len-1)/fs;

H_abs = zeros(length(N),length(w))';
for ii = 1:length(N)
    for jj = 1:length(w)
        %H(jj,ii) = (abs(sin(w(jj)*D/2)/sin(w(jj)/2)))^N(ii);%幅度相应表达式
        H(jj,ii)=((1-exp(-1j*w(jj)*D))/(1-exp(-1j*w(jj))))^N(ii);
        H_abs(jj,ii)=abs(H(jj,ii));
        H_ang(jj,ii)=angle(H(jj,ii));
    end
end

%绘制幅频特性曲线
figure
plot(w'/max(w),20*log10(H_abs(:,1) / max(H_abs(:,1)) ),'k','Linewidth',2);
grid on
title('幅频特性');xlabel('归一化频率');ylabel('幅度(dB)');
legend('N=1','N=3','N=5','Location','best');

hold on
plot(w'/max(w),20*log10(H_abs(:,2) / max(H_abs(:,2)) ),'k--','Linewidth',2);
plot(w'/max(w),20*log10(H_abs(:,3) / max(H_abs(:,3)) ),'k','Linewidth',3);
hold off;
grid on;
title('幅频特性');xlabel('归一化频率');ylabel('幅度(dB)');
legend('N=1','N=3','N=5','Location','best');
axis([0 1 -200 0]);%绘制相频特性曲线
figure
plot(w'/max(w),H_ang(:,1),'k','Linewidth',2);grid on;
title('相频特性');xlabel('归一化频率');ylabel('相位(rad)');
legend('N=1','Location','best');
axis([0 1 -pi pi]);
-------------------------------------------------------cic的m文件------------------------------------------------

以下抽时举例

function signal_cic = cic_filter(signal,div)
%------------------------------------------------------------------------
% 功能:    函数实现3级级联的梳状滤波器,下抽倍数为div
% 输入输出:
% signal   :  待滤波及下抽的信号
% div        :  下抽的倍数
%------------------------------------------------------------------------
%CIC filter and downsample div
x = zeros(length(signal),1);
x(1) = signal(1);

%积分过程
for ii = 1:length(signal)-1
    x(ii+1) = x(ii) + signal(ii+1);
end

y = zeros(length(signal),1);
y(1) = x(1);
for ii = 1:length(signal)-1
    y(ii+1) = y(ii) + x(ii+1);
end

z = zeros(length(signal),1);
z(1) = y(1);
for ii = 1:length(signal)-1
    z(ii+1) = z(ii) + y(ii+1);
end

data = z(1:div:div*floor(length(signal)/div));%downsample

%差分过程
x = zeros(length(data),1);
x(1) = data(1);
for ii = 1:length(data)-1
    x(ii+1) =  data(ii+1) - data(ii);
end

y = zeros(length(data),1);
y(1) = x(1);
for ii = 1:length(data)-1
    y(ii+1) = x(ii+1) - x(ii);
end

z = zeros(length(data),1);
z(1) = y(1);
for ii = 1:length(data)-1
    z(ii+1) = y(ii+1) - y(ii);
end

signal_cic = (z/div^3);

--------------------------------------------------------CIC的FPGA设计------------------------------------------------

以Xilinx官网给的cic IP核手册为例,需要关注每一级的位宽增加。

如:梳状滤波器CIC下抽R=5倍,N=3级级联,延迟拍数M=1,输入数据Bit_in=16,输出Bit_out=Bit_in+N*log2(R),向上取整,输出全精度为23位定点数=floor(16+3*log2(5))+1。(有次面试官问了CIC中间数据位宽的计算,当时一脸懵逼,都是IP核搞定,谁管这些。后来…………哎)

梳状滤波器CIC整理相关推荐

  1. 2021-03-14 梳状滤波器学习整理

    梳状滤波器学习整理 目录 梳状滤波器学习整理 1. 梳状滤波器定义 2. 梳状滤波器仿真 (1)matlab函数:

  2. [寄存器]CIC梳状滤波器

    近期一直在做信号的处理部分的工作,上几篇讲到了多普勒超声波流量计的工作原理以及项目解决方案.这几天,准备优化一下,所以准备使用梳状滤波器(CIC,Cascaded integrator–comb fi ...

  3. 一种Δ-Σ模数转换器中梳状滤波器的设计

    Δ-Σ模数转换器是一种低速,高精度的过采样模数转换器广泛的应用于信号采集和处理.数字通信.自动检测.自动控制和多媒体技术等领域.作为Δ-Σ模数转换器首级的梳状滤波器的设计就显得非常重要,滤波器的设计直 ...

  4. 基于Δ-Σ模数转换器的梳状滤波器的设计与matlab仿真

    欢迎订阅<FPGA学习入门100例教程>.<MATLAB学习入门100例教程> 目录 一.理论基础 二.核心程序 三.测试结果 一.理论基础 Δ-Σ模数转换器是一种低速,高精度 ...

  5. 在Matlab中设计梳状滤波器

    梳状滤波器之所以被称为梳状滤波器,是因为它的幅频特性曲线状如梳子.这是一类典型的数字滤波器,主要用来对频谱中特定频率"定点清除".MATLAB中有专门梳状滤波器函数,编程很方便.这 ...

  6. 【梳状滤波器:浅析其基本概念、功能特点及与全通、最小相位滤波器的区别】

    文章目录 梳状滤波器 一.基本概念 二.分类 三.功能特点 四.与全通.最小相位滤波器的区别 此文为博主数字信号处理小作业. 梳状滤波器 一.基本概念 梳状滤波器,是一种由延时.加法器.减法器.带通滤 ...

  7. 去除杂波的梳状滤波器

    简 介: 本文分析了两种可以去除周期干扰信号的滤波器,一个是周期平滑滤波器,它可以彻底去除信号中周期信号,但滤波器同时对信号中高频分量与也有较大的衰减. 另一个是延迟相加滤波器,它比较接近于理想的梳状 ...

  8. 一种Δ-∑模数转换器中梳状滤波器的设计

    Δ-∑A/D转换器以其高精度和易于用标准数字CMOS 工艺实现的特点而被广泛应用.数字抽取滤波器是它的重要组成部分,通常采用多级结构来实现.由于梳状滤波器是一种结构简单的线性相位FIR滤波器,所以通常 ...

  9. FBCF反馈梳状滤波器设计

    FBCF的结构图 反馈梳状滤波器差分方程为 b0x(n)+y(n)b*z-M*(-aM)=y(n)=b0x(n)-aMy(n-M) 传输函数为 H(z)=b01+aMz-M 反馈梳状滤波器是IIR滤波 ...

最新文章

  1. Python 字典(Dictionary) copy()方法
  2. 利用SimpleHttpServer+urllib传文件
  3. 关于SDC沙盒源代码加密
  4. putty 配置导出
  5. hdu3786 找出直系亲属 水题
  6. 馒头,国庆节快乐啊!!~~~!
  7. [攻防世界 pwn]——Mary_Morton
  8. SpringSecurity 认证通过后显示当前认证用户名
  9. spring书籍调研
  10. linux修改挂载目录名字,linux下修改mount挂载目录名
  11. Linux下的设备管理、磁盘分区及分区类型的修改
  12. 关系代数操作应用、关系元组运算应用
  13. wget通过代理上网办法
  14. elasticsearch6.x.x logstash6.x.x kibana6.x.x Filebeat6.x 配置及安装 CentOS7.3或更高
  15. javascript去除空格
  16. 手把手教你做个人 app
  17. 电容 电阻0201/0402/0603/等封装长宽高定义
  18. 如何使用Lumion创建惊艳的渲染
  19. 科技大停滞--过去已逝,未来未来
  20. CSDN博客微信登录竟然强制扫码关注登录(又来了)

热门文章

  1. 组合数取模 - Lucas/exLucas - LibreOJ #181. 二项式系数
  2. 淘宝商品如何用工具实现一键上下架?
  3. 态度决定一切,细节决定成败!
  4. 【计网实验——prj4】广播网络实验
  5. linux qt 添加托盘图标,Qt 添加程序图标和系统托盘图标
  6. 本地音乐播放器(JavaFX-SoPlayer)
  7. 简易烟雾监测系统搭建(一) 烟雾传感原理篇
  8. 如何使夜游项目更具有参观性
  9. Android基础和运行机制
  10. Spring事务失效场景