clear close all
r=2;
hm = mfilt.cicinterp(r);
fs=48000;%采样频率
Delta_f=1;%频率间隔
T=1/fs;%采样间隔
L=1/Delta_f;%时间长度
N=floor(fs/Delta_f);%采样点数
t=0:T:L-T;%时间轴
freq=0:Delta_f:fs-Delta_f;%频率轴
y=sin(2*pi*1000*t)';%原始信号
figure Y_t_hanning=hanning(N).*y;%加窗
F_w=fft(Y_t_hanning,N)+eps;%计算频谱
mag=abs(F_w);
dB=20*log10(mag);
plot(freq,dB);
title('原始信号频谱');
y_f = filter(hm,y);
y1=double(y_f) ;
y1=y1/max(abs(y1));
fs1=fs*r;%采样频率
Delta_f=1;%频率间隔
T1=1/fs1;%采样间隔
L=1/Delta_f;%时间长度
N1=floor(fs1/Delta_f);%采样点数
t1=0:T1:L-T1;%时间轴
freq1=0:Delta_f:fs1-Delta_f;%频率轴
figure Y_t_hanning=hanning(N1).*y1;%加窗
F_w=fft(Y_t_hanning,N1)+eps;%计算频谱
mag=abs(F_w);
dB1=20*log10(mag);
plot(freq1,dB1);
title('经过CIC滤波器插值后的信号频谱')
figure stem(t(1:48),y(1:48),'filled');
hold on stem(t1(1:48*r),y1(1:48*r),'r');
legend('原始信号','插值后的信号')
我的问题是:为什么滤波器前和滤波后的波形没有对齐;为什么滤波后的信号频谱会出现杂散,就是有很多谐波。请大虾给指点一下,顺便请教一下有没有谁有CIC插值的verilog的例子供我借鉴一下呢?
共10条
1/1 1 跳转至页
5楼
挨个回答吧。
1. 为什么滤波器前和滤波后的波形没有对齐?
滤波器有相频特性的,也就是有相移,所以没对齐。
2. 为什么滤波后的信号频谱会出现杂散,就是有很多谐波?
CIC插值是定点数的,所以会有很多“毛”,但那些“毛刺”的功率和信号相比都在-100dBc以下了,可以不用考虑。实际上你是做不到这么高信噪比的。
3. 顺便请教一下有没有谁有CIC插值的例子供我借鉴一下呢?
你的这个就可以了,可以在末尾加上 hvt=fvtool( hm,1, 'ShowReference', 'off');, 看看滤波器的特性
8楼
谢谢你的回答~~~~就是,我想问下大家有没有verilog的例子,嘿嘿~我也在网上找了,但是没有我满意的,就是能把我用Matlab仿真的这个效果做出来的就行
10楼
Quantus。
我想请问一下,我写了两个模块,梳状模块和积分模块。
如果我想做插值的话,梳状模块的时钟应该比积分模块的时钟快,想要做几倍插值,时钟就快几倍,是这样理解吗?
反之,我要是想做抽取,那么积分模块的时候就应该比梳状模块的时钟快
请高手指点下,用verilog硬件语言描述的时候,是这样的思路吗?
我想请问一下,我写了两个模块,梳状模块和积分模块。
如果我想做插值的话,梳状模块的时钟应该比积分模块的时钟快,想要做几倍插值,时钟就快几倍,是这样理解吗?
反之,我要是想做抽取,那么积分模块的时候就应该比梳状模块的时钟快
请高手指点下,用verilog硬件语言描述的时候,是这样的思路吗?
共10条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |