在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 828|回复: 0

[求助] 两阶1位SDM的零输入仿真频谱问题

[复制链接]
发表于 2024-9-5 18:07:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本人最近在用matlab设计一个原始2阶1位 SDM的模型,在输入小直流的情况下验证idle tone的问题,对量化器的输出做功率谱时发现加窗和不加窗区别很大,下面这张图是32768*16个点的FFT在不加窗和加beta=20的kaiser窗的FFT结果 1.png

红线对应不加窗,蓝线对应加窗。本人不太理解为什么不加窗的话在低频段功率谱就平了。本人一开始怀疑是10-2右侧的谱线泄露到低频段了,但是如果输入加入足够大幅度的正弦信号,加窗和不加窗的FFT结果又几乎不变,仿真的时候设定输入信号频率是整数周期采样,如下图。
2.png
这说明可能不是泄露过来了。本人做FFT的程序如下所示,请各位大佬看一下是否有什么问题。另外本人仿真小幅度DC输入下,功率谱似乎并不是完全的shaping形状,我尝试把第一张图x轴的log坐标变回等间隔坐标后,功率谱如下,可以看出在靠近fs/2的地方,功率谱又下去了,而对于大幅度正弦输入则没有这个问题,请问一下这是为什么呢?本人新手,求各位大佬解释,多谢!!!
3.png
%%%%%%%%%%%%%%%%%不加窗%%%%%%%%%%%%%   
u = data(end - points + 1: end);
    d_len = length(u);

    if(en_dc > 0.5)
        ;
    else
        u = u - mean(u);
    end

    %% 补零操作
%     uu = zeros(1, d_len*64);
%     for ix = 1: d_len
%
%         uu(ix) = u(ix);
%     end
%     u = uu;
%     d_len = length(u);
    %%

    pow = fft(u).*conj(fft(u));
    pow = pow/d_len;

    d_len_half = floor(d_len/2);

    pow = pow(1: d_len_half);


[size=13.3333px]%%%%%%%%%%%%%%%%%%加窗%%%%%%%%%%%%%   

[size=13.3333px]

beta = 20; % kaiser窗系数
width_mainlobe = 7;

u = data(end - points + 1: end);
d_len = length(u);

u = u'.*(kaiser(d_len, beta)');

    if(en_dc > 0.5)
        ;
    else
        u = u - mean(u);
    end
   
    %% 补零操作
%     uu = zeros(1, d_len*64);
%     for ix = 1: d_len
%
%         uu(ix) = u(ix);
%     end
%     u = uu;
%     d_len = length(u);
    %%

    pow = fft(u).*conj(fft(u));
    pow = pow/d_len;

    d_len_half = floor(d_len/2);

    pow = pow(1: d_len_half);









您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 06:49 , Processed in 0.015110 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表