梳状滤波器CIC精加工

 2024-02-11 05:02:26  阅读 0

多采样率数字信号处理系统经常使用采样率转换,例如插值和抽取。 从傅里叶变换的性质可知,信号在时域的提取会导致频谱的周期性平移展宽。 当信号中存在高频成分时,可能会出现频谱混叠。 因此,在抗频谱混叠中需要进行滤波操作来滤除高频成分。 梳状滤波器(CIC,-comb)结构简单,只有乘法和加法单元。 它可以实现多速率下变频并滤除高频成分。 为了使过渡带陡峭并抑制旁瓣,滤波器的带内容差不宜太大。 当扫频带宽一定时,CIC滤波器常用于第一级采样率下采样,以满足较大的采样率和较小的下采样因子,以减小带内容差。 梳状滤波器传递函数的表达式和实现结构如下:

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

可以看出,单级旁瓣衰减约为13.46dB; 级联后,CIC滤波器旁瓣衰减与级联数成正比,为N*13.46dB,即每增加一级级联,旁瓣抑制就会增加。 13.46分贝; CIC滤波器的相位是线性的。 其他参考书:

杜勇. 数字调制解调技术及FPGA实现:/版[M]. 北京:电子工业出版社,2015。

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

%%%%%%%%%%%%%%%%%%%%%%%

% 绘制M阶CIC的光谱特征

%%%%%%%%%%%%%%%%%%%%%%%

CLC

清除

关闭所有

Len = 1024*300;%绘制数据点的数量

fs = 2*1e5;

D = 16;% 回撤倍数

N = [1,3,5]; %CIC级联数

w = 0.01:1/fs:(Len-1)/fs;

H_abs = 零((N),(w))';

对于 ii = 1:(N)

对于 jj = 1:(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)=角度(H(jj,ii));

结尾

结尾

%绘制幅频特性曲线

绘图(w'/max(w),20*log10(H_abs(:,1) / max(H_abs(:,1)) ),'k','',2);

网格上

title('幅频特性');('归一化频率');('幅度(dB)');

('N=1','N=3','N=5','','最佳');

坚持,稍等

绘图(w'/max(w),20*log10(H_abs(:,2) / max(H_abs(:,2)) ),'k--','',2);

绘图(w'/max(w),20*log10(H_abs(:,3) / max(H_abs(:,3)) ),'k','',3);

推迟;

网格开启;

title('幅频特性');('归一化频率');('幅度(dB)');

('N=1','N=3','N=5','','最佳');

axis([0 1 -200 0]);%绘制相频特性曲线

绘图(w'/max(w),H_ang(:,1),'k','',2);网格;

title('相频特性');('归一化频率');('相位(rad)');

('N=1','','最佳');

轴([0 1 -pi pi]);

-------------------------------------------------- -----cic的m文件---------------------------------------- - ------

下面是一个时序示例

= (,div)

%------------------------------------------------- -----------------------

% 功能:该函数实现3级级联梳状滤波器,抽取倍数为div

% 输入输出:

%:要滤波和下采样的信号

% div: 回撤倍数

%------------------------------------------------- -----------------------

%CIC 和 div

x = 零((),1);

x(1) = (1);

%整合过程

对于 ii = 1:()-1

x(ii+1) = x(ii) + (ii+1);

结尾

y = 零((),1);

y(1) = x(1);

对于 ii = 1:()-1

y(ii+1) = y(ii) + x(ii+1);

结尾

z = 零((),1);

z(1) = y(1);

对于 ii = 1:()-1

z(ii+1) = z(ii) + y(ii+1);

结尾

数据 = z(1:div:div*floor(()/div));%

%微分过程

x = 零((数据),1);

x(1) = 数据(1);

对于 ii = 1:(数据)-1

x(ii+1) = 数据(ii+1) - 数据(ii);

结尾

y = 零((数据),1);

y(1) = x(1);

对于 ii = 1:(数据)-1

y(ii+1) = x(ii+1) - x(ii);

结尾

z = 零((数据),1);

z(1) = y(1);

对于 ii = 1:(数据)-1

z(ii+1) = y(ii+1) - y(ii);

结尾

= (z/div^3);

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

以官网提供的cic IP核手册为例,需要注意每一级位宽的增加。

例如:梳状滤波器CIC下采样R=5倍,N=3级级联,延迟节拍M=1,输入数据=16,输出=+N*log2(R),向上舍入,输出全精度就是一个23位定点数=floor(16+3*log2(5))+1。 (有一次面试官问到CIC中间数据位宽的计算,当时一脸困惑,都是IP核做的,谁管这个。后来……唉)

标签: 滤波 绘制 高频

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码