cic滤波器

时间:2024-08-21 23:05:32编辑:奇事君

CIC滤波器设计

CIC滤波器实现简单,资源消耗少(只需要加法器),成为变采样率系统中比较常用的滤波器,但也需要在合适的场景中使用,不然对信号质量会造成较大影响。

我们可以通过matlab的filter designer了解CIC滤波器的各种特性。通过图1和图2找到CIC滤波器设计窗口。

从幅频曲线中容易得出CIC滤器器通带平台性差,过渡带宽,带外抑制性能起伏较大。

带外抑制性能可以通过增加CIC级数(Number Of Sections)来提升,但这会对通带平坦性带来负面影响,具体设计CIC时需要折中该参数。

通常在C语言实现CIC时,可以将该参数设计为偶数,这样会使拖尾是一个整数,方便去掉数据首尾的无效值。更进一步,设计为2,4,8时,归一化可以直接通过移位实现。

当我们使用CIC时,需要保证 有用信号的fmax应足够小于fs/2/Mcic ,其中Mcic为内插倍数。这样才能保证在有效带宽内足够的平坦度,一般fmax相对于直流衰减不能超过0.5dB.

所以在变速率系统中,CIC一般作为最后数字滤波器的前端(靠近模拟域),如上采样系统中信号先经过限带成型滤波器(低通FIR),HB滤器组,最后经过CIC到DAC速率。

下图为8倍上采样的图示。

需要注意的是为了保证CIC前后信号时域采样点平均功率的一致性,在第一级CIC滤波器中没有做归一化,这部分增益正好可以补偿上采样插0带来采样点功率的损失。后续每一级都要做归一化,防止溢出。

clear;clc;close all;

%% load data symbols from RRC out,make sure fmax << fs/2/Mcic

load('zeroDataFilterOut.mat')  % 8x oversampling signal

symbPower = funCountPower(zeroDataFilterOut); % Power before filter

%% CIC filter for interpolate 8 times

Mcic = 8;

coefCic = ones(Mcic,1);

N = 4;      % number of CIC section

modDataZero8x = upsample(zeroDataFilterOut,Mcic);

txPower = funCountPower(modDataZero8x); % Power after zero insertion

%% filter

dataFilterTemp = conv(modDataZero8x,coefCic);  % First CIC section

for i = 1:N-1

    dataFilterTemp = conv(dataFilterTemp,coefCic)/Mcic;

end

tailLen = N*(Mcic-1)/2;

dataOut = dataFilterTemp(tailLen+1:end-tailLen);

outPower = funCountPower(dataOut);  % Power after filter


CIC滤波器

CIC滤波器是无线通信的常用模块,一般用于数字下变频(DDC)核数字上变频(DUC)系统。CIC滤波器结构简单,没有乘法器,只有加法器、积分器和寄存器,可以实现高速滤波,常用在输入采样率最高的第一级。

1.单级CICI滤波器

CIC滤波器包括两个基本组成部分:积分部分和梳妆部分,如图所示:

积分部分的积分器是单极点的IIR滤波器,并且反馈系数为1,状态方程为:

上述的积分器也可以看做是累加器。根据Z变换,积分器的传输函数为:

梳妆器是一份FIR滤波器,其状态方程为:

式中,D是设计参数,称为微分延迟,其传输函数为:

那么:单级CIC滤波器的传递函数为:



带入上式,可以得到传递函数的幅频响应为:




CIC滤波器的幅频响应特性如图所示,其中[0,2π/DM]为主瓣,其他的区间称为旁瓣。

从幅频响应特性可以看到,主瓣的最大值为DM(在 w=0时w=0时),旁瓣的最大值在 w=3π/DMw=3π/DM处 取得

它与主瓣电平的差值为:

根据在 θ在0~ 45°时, θ≈sinθ,可得:

可见单级CIC滤波器的旁瓣电平较大,阻带衰减较差。为降低旁瓣电平,可以采用多级CIC滤波器级联办法来实现。

2.多级CICI滤波器

一个N级CIC抽取滤波器系统传递函数为:

在N级级联时,阻带衰减为单级衰减的N倍,即13.46×N(dB)。


CIC的滤波器

CIC cascade imtegrator comb,积分梳状滤波器CIC滤波器最初由Hogenauer提出,因为它结构简单,没有乘法器,只用加法器、积分器和寄存器,适合工作在高采样率。而且,CIC滤波器是一种基于令吉电相消的FIR滤波器,已经被证明是在高速抽取或插值系统中非常有效的单元。CIC滤波器包括两个基本部分:积分部分和梳状部分。单级CIC抽取滤波器如图1所示:单级CIC插值滤波器如图2所示:

matlab里设计CIC滤波器该用哪个函数

matlab里设计cic滤波器的函数有以下两种:
1. fdesign.decimator
例如:设定好采样频率Fs, 信号带宽Fp, 阻带衰减As, 差分时延m及降采样比D就可以得到cic滤波器的传输函数
d1 = fdesign.decimator(D,'CIC',m,Fpass,As,Fs);
Hcic = design(d1);

2. mfilt.cicdecim (fixed-point CIC decimator, mfilt是matlab里专门用来设计多速率信号处理滤波器的一套函数)

hm = mfilt.cicdecim(decimation_factor,differential_delay,NumberofSections);
decimation_factor为降采样比,differential_delay同上为差分时延,NumberofSections为cic滤波器的节数,与第一个函数相比,这个函数没有规定采样滤波,通带宽度、阻带衰减等


上一篇:一月 英文

下一篇:安家立业