最近想起来,以前在做EMI整改的时候,出现过低频辐射超标,类似下面这种。
一般这种问题,我们都会说是时钟线引起的问题。我之前做的产品是摄像头,时钟线加十几根数据线。有一次处理完时钟线后还是超标,因为正好数据线上都串有电阻,我就将电阻都改成了磁珠,想消除因为数据线引起的辐射,改完之后发现还是超标,看不到有明显的改善。
从那时,我就知道了,辐射一般都是时钟线引起的,与数据线关系不大。不过那时,我一直都不明白为什么会如此。
因为在我看来,时钟线和数据线的上升沿都差不多,按说频率分量应该是一样的呀。虽然时钟线的高低电平交替变化会多一些,但是数据线有十几根了,难道加起来还比不上时钟线吗?
实际上数据加起来还真比不上时钟线。
关于这一点,理论可以这么解释:周期信号由于每个取样段的频谱都是一样的,所以他的频谱呈离散形,但在各个频点上比较大,通常成为窄带噪声。而非周期信号,由于其每个取样段的频谱不一样,所以其频谱很宽,而且强度较弱,通常被称为宽带噪声。然而在一般系统中,时钟信号为周期信号,而数据和地址线通常为非周期信号,因此造成系统辐射超标的通常为时钟信号。
不过呢,这一段话本身就是一个结论,说服力不强,也就有点不敢相信。下面还是来做个实验模拟下,我们会发现新东西。实验思路很简单,那就是分别得到时钟线和数据线的频谱,两者比较下就知道了。
构建时钟和数据信号
我们使用MATLAB来分析频谱,首先需要构建时钟和数据信号。
时钟信号很容易,就是高低电平交替变化。正常情况下,数据线都是不规律的,那就采用随机生成的方式。
构建时钟和数据信号如下图。
构建时钟CLK和10根数据线如上图。说明一下,为了减小运算量(软件运行时间),时钟频率设置为1Hz。
得到频谱
我们分别画出时钟的频谱,1根数据线的频谱,10根数据线频谱的叠加。
需要注意的是,因为数据线的数据是非周期的,我们尽量时间取长一点,下图分析的数据长度为Num_T=1000个时钟周期。
从图可以看出,周期性时钟信号的频谱是离散的,非常典型,这个相信大家已经见过多次了,而数据线的频谱是比较宽的。这与文章最前面说的是一致的。
并且,图中右下角有1根数据线和10根数据线相加的频谱。我们也可以看到,10根数据线相加之和,幅度最高的频谱分量幅度值大概是0.4左右,而时钟的基频分量最高为0.6,也就是说数据线加起来,确实抵不过CLK时钟信号。
一个问题猜测
前面的频谱分析有一个前提条件,那就是,取样的时间长度是Num_T=1000个时钟周期,即分析的数据长度是1000个时钟周期的数据。
我发现,如果把时间长度提升10倍,Num_T=10000。那么10根数据线相加的频谱幅度值就更低了,大概只有0.1左右,比原来要低不少,而时钟的频谱不变。
增加取样时间,数据线频谱幅度降低的原因。是因为我使用了Matalb里面的fft函数,这个函数是将信号看作周期函数来处理的,就是说假定取样时间长度为T,那么就默认这个信号是周期函数,周期长度为T。数据线信号本来是非周期的,如果用这个函数,那么其实就是让数据线信号的周期为采用时间长度,这也是为什么时间设得越短,幅度值越高。采用时间越短,其实不就是让数据线向周期信号靠拢吗。
所以,这个采样时间长度长一些,应该是更为准确的。
不过问题又来了。我突然想到,我们做辐射测试用的频谱分析仪,它工作的时候,我们可以在频谱上面看到各个频率对应的幅值。所以它肯定不是从开始扫描,到结束扫描,只记录一次数据然后最后分析一次。应该也是连续取一段时间数据,因为我们可以实时看到当前的频谱,并且它是变化的,所以会是取一段时间数据,分析出频谱,然后显示出来,再取下一段时间的数据进行分析。
当然,以上只是我的猜测。那么它到底一次分析多长的数据呢?这个我也没查到。
对于10Mhz的信号,如果取样10000个周期的数据,那么时间长度是1ms。这已经是一个很快的频次了。从上面看,此时10根数据线加起来的频谱幅度最大值才0.1,比时钟小不少。
责任编辑:pj
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)