你的位置:首頁 > RF/微波 > 正文

為何時鐘信號比數(shù)據(jù)信號更容易引起輻射超標?

發(fā)布時間:2021-01-25 責任編輯:lina

【導讀】一般這種問題,我們都會說是時鐘線引起的問題。我之前做的產(chǎn)品是攝像頭,時鐘線加十幾根數(shù)據(jù)線。有一次處理完時鐘線后還是超標,因為正好數(shù)據(jù)線上都串有電阻,我就將電阻都改成了磁珠,想消除因為數(shù)據(jù)線引起的輻射,改完之后發(fā)現(xiàn)還是超標,看不到有明顯的改善。
 
最近想起來,以前在做EMI整改的時候,出現(xiàn)過低頻輻射超標,類似下面這種。
 
為何時鐘信號比數(shù)據(jù)信號更容易引起輻射超標?

一般這種問題,我們都會說是時鐘線引起的問題。我之前做的產(chǎn)品是攝像頭,時鐘線加十幾根數(shù)據(jù)線。有一次處理完時鐘線后還是超標,因為正好數(shù)據(jù)線上都串有電阻,我就將電阻都改成了磁珠,想消除因為數(shù)據(jù)線引起的輻射,改完之后發(fā)現(xiàn)還是超標,看不到有明顯的改善。
 
從那時,我就知道了,輻射一般都是時鐘線引起的,與數(shù)據(jù)線關(guān)系不大。不過那時,我一直都不明白為什么會如此。
 
因為在我看來,時鐘線和數(shù)據(jù)線的上升沿都差不多,按說頻率分量應(yīng)該是一樣的呀。雖然時鐘線的高低電平交替變化會多一些,但是數(shù)據(jù)線有十幾根了,難道加起來還比不上時鐘線嗎?
 
實際上數(shù)據(jù)加起來還真比不上時鐘線。
 
關(guān)于這一點,理論可以這么解釋:周期信號由于每個取樣段的頻譜都是一樣的,所以他的頻譜呈離散形,但在各個頻點上比較大,通常成為窄帶噪聲。而非周期信號,由于其每個取樣段的頻譜不一樣,所以其頻譜很寬,而且強度較弱,通常被稱為寬帶噪聲。然而在一般系統(tǒng)中,時鐘信號為周期信號,而數(shù)據(jù)和地址線通常為非周期信號,因此造成系統(tǒng)輻射超標的通常為時鐘信號。
 
不過呢,這一段話本身就是一個結(jié)論,說服力不強,也就有點不敢相信。下面還是來做個實驗?zāi)M下,我們會發(fā)現(xiàn)新東西。實驗思路很簡單,那就是分別得到時鐘線和數(shù)據(jù)線的頻譜,兩者比較下就知道了。
 
構(gòu)建時鐘和數(shù)據(jù)信號
 
我們使用MATLAB來分析頻譜,首先需要構(gòu)建時鐘和數(shù)據(jù)信號。
 
時鐘信號很容易,就是高低電平交替變化。正常情況下,數(shù)據(jù)線都是不規(guī)律的,那就采用隨機生成的方式。
 
構(gòu)建時鐘和數(shù)據(jù)信號如下圖。
 
為何時鐘信號比數(shù)據(jù)信號更容易引起輻射超標?
 
構(gòu)建時鐘CLK和10根數(shù)據(jù)線如上圖。說明一下,為了減小運算量(軟件運行時間),時鐘頻率設(shè)置為1Hz。
 
得到頻譜
 
我們分別畫出時鐘的頻譜,1根數(shù)據(jù)線的頻譜,10根數(shù)據(jù)線頻譜的疊加。
 
需要注意的是,因為數(shù)據(jù)線的數(shù)據(jù)是非周期的,我們盡量時間取長一點,下圖分析的數(shù)據(jù)長度為Num_T=1000個時鐘周期。
 
為何時鐘信號比數(shù)據(jù)信號更容易引起輻射超標?
 
從圖可以看出,周期性時鐘信號的頻譜是離散的,非常典型,這個相信大家已經(jīng)見過多次了,而數(shù)據(jù)線的頻譜是比較寬的。這與文章最前面說的是一致的。
 
并且,圖中右下角有1根數(shù)據(jù)線和10根數(shù)據(jù)線相加的頻譜。我們也可以看到,10根數(shù)據(jù)線相加之和,幅度最高的頻譜分量幅度值大概是0.4左右,而時鐘的基頻分量最高為0.6,也就是說數(shù)據(jù)線加起來,確實抵不過CLK時鐘信號。
 
一個問題猜測
 
前面的頻譜分析有一個前提條件,那就是,取樣的時間長度是Num_T=1000個時鐘周期,即分析的數(shù)據(jù)長度是1000個時鐘周期的數(shù)據(jù)。
 
我發(fā)現(xiàn),如果把時間長度提升10倍,Num_T=10000。那么10根數(shù)據(jù)線相加的頻譜幅度值就更低了,大概只有0.1左右,比原來要低不少,而時鐘的頻譜不變。
 
為何時鐘信號比數(shù)據(jù)信號更容易引起輻射超標?
 
增加取樣時間,數(shù)據(jù)線頻譜幅度降低的原因。是因為我使用了Matalb里面的fft函數(shù),這個函數(shù)是將信號看作周期函數(shù)來處理的,就是說假定取樣時間長度為T,那么就默認這個信號是周期函數(shù),周期長度為T。數(shù)據(jù)線信號本來是非周期的,如果用這個函數(shù),那么其實就是讓數(shù)據(jù)線信號的周期為采用時間長度,這也是為什么時間設(shè)得越短,幅度值越高。采用時間越短,其實不就是讓數(shù)據(jù)線向周期信號靠攏嗎。
 
所以,這個采樣時間長度長一些,應(yīng)該是更為準確的。
 
不過問題又來了。我突然想到,我們做輻射測試用的頻譜分析儀,它工作的時候,我們可以在頻譜上面看到各個頻率對應(yīng)的幅值。所以它肯定不是從開始掃描,到結(jié)束掃描,只記錄一次數(shù)據(jù)然后最后分析一次。應(yīng)該也是連續(xù)取一段時間數(shù)據(jù),因為我們可以實時看到當前的頻譜,并且它是變化的,所以會是取一段時間數(shù)據(jù),分析出頻譜,然后顯示出來,再取下一段時間的數(shù)據(jù)進行分析。
 
當然,以上只是我的猜測。那么它到底一次分析多長的數(shù)據(jù)呢?這個我也沒查到。
 
對于10Mhz的信號,如果取樣10000個周期的數(shù)據(jù),那么時間長度是1ms。這已經(jīng)是一個很快的頻次了。從上面看,此時10根數(shù)據(jù)線加起來的頻譜幅度最大值才0.1,比時鐘小不少。
 
實驗源碼
 
下面分享下matlab源碼,可以修改里面采樣的信號時間長度Num_T,體驗一下。
 
注:Matlab可以在線執(zhí)行的,沒安裝的同學可以網(wǎng)頁上面執(zhí)行,下面是網(wǎng)頁鏈接,我先前也出了一個簡易的教程,有興趣可以看看。

https://ww2.mathworks.cn/products/matlab-online.html

Fclk=1;    %時鐘頻率為1Hz
Num_T=1000; %信號長度為1000個時鐘周期
Num_Data=10;  %數(shù)據(jù)線的個數(shù)10個

%%%%%%%%%%%%%%%%%%%%%%%%  fft采樣設(shè)置
Fs=100;  %采樣率為Fs 
L=(Fs/Fclk)*Num_T;   %信號長度(采樣總點數(shù)):Num_T個周期的信號,長度越長,fft精度越高,但是執(zhí)行時間越長
T=1/Fs;    %采樣周期
t=(1:L)*T; %時間長度

%SIG_DATA=round(rand(Num_Data,2*Num_T));   %產(chǎn)生數(shù)據(jù)信號:0,1隨機分布
SIG_DATA=round(rand(Num_Data,Num_T));   %產(chǎn)生數(shù)據(jù)信號:0,1隨機分布
SIG_CLK=rand(1,2*Num_T);                  %產(chǎn)生時鐘信號
for i = 1:length(SIG_CLK)
    if mod(i,2)
        SIG_CLK(i)=1;
    else
        SIG_CLK(i)=0;
    end
end

N=length(t);
LEN_CLK=zeros(1,N);  %定義時鐘信號采樣序列
LEN_DATA=zeros(Num_Data,N); %定義數(shù)據(jù)信號采樣序列
for i=1:N
        LEN_CLK(i)=SIG_CLK(ceil(i/((Fs/Fclk)/2)));    %時鐘信號的采樣序列
        for j=1:Num_Data
%             LEN_DATA(j,i)=SIG_DATA(j,ceil(i/((Fs/Fclk)/2)));   %數(shù)據(jù)信號的采樣序列
            LEN_DATA(j,i)=SIG_DATA(j,ceil(i/(Fs/Fclk)));   %數(shù)據(jù)信號的采樣序列
        end
end

figure;
subplot(2,2,[1 2]);
plot(t,LEN_CLK+1.5*Num_Data,''''r'''');      %畫出30個時鐘周期時鐘信號
set(gca,''''XLim'''',[0 30]);%x軸的數(shù)據(jù)顯示范圍,0-30

set(gca,''''ytick'''',[]);
grid on;
hold on
for j=1:Num_Data
    plot(t,LEN_DATA(j,:)+(j-1)*1.5,''''k'''');
    hold on
end

X_LEN_CLK=abs(fft(LEN_CLK));
subplot(2,2,3);
semilogx(Fs*(0:(L/2))/L,X_LEN_CLK(1:L/2+1)*2/L); 
set(gca,''''XLim'''',[0.1 10000]);%x軸的數(shù)據(jù)顯示范圍
set(gca, ''''XTickLabel'''' ,{''''0.1'''',''''1'''',''''10'''',''''100'''',''''10K'''',''''100K''''}); %x軸頻率數(shù)據(jù)
title(''''時鐘頻譜'''');
set(gca,''''YLim'''',[-0.1 1]);
xlabel(''''f (Hz)'''');
ylabel(''''幅度'''');

X1_LEN_DATA= abs(fft(LEN_DATA(1,:)));
X_LEN_DATA = abs(fft(LEN_DATA(1,:)));
for j=2:Num_Data
    X_LEN_DATA = abs(fft(LEN_DATA(j,:)))+X_LEN_DATA;
end

subplot(2,2,4);
semilogx(Fs*(0:(L/2))/L,X_LEN_DATA(1:L/2+1)*2/L,Fs*(0:(L/2))/L,X1_LEN_DATA(1:L/2+1)*2/L); 
legend(['''''''',num2str(Num_Data),''''根-數(shù)據(jù)線''''],['''' 1根-數(shù)據(jù)線'''']);
set(gca,''''XLim'''',[0.1 10000]);%x軸的數(shù)據(jù)顯示范圍
set(gca, ''''XTickLabel'''' ,{''''0.1'''',''''1'''',''''10'''',''''100'''',''''10K'''',''''100K''''}); %x軸頻率數(shù)據(jù)
title(['''''''',num2str(Num_Data),''''數(shù)據(jù)線頻譜'''']);
set(gca,''''YLim'''',[-0.1 1]);
xlabel(''''f (Hz)'''');
ylabel(''''幅度'''');
(來源:硬件工程師煉成之路)
 
免責聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請電話或者郵箱聯(lián)系小編進行侵刪。
 
 
推薦閱讀:
全包圍柵極結(jié)構(gòu)將取代FinFET
非蜂窩也有春天:LoRa/WiFi/藍牙的2020年
年終盤點 | 2020年的新零售打了哪些翻身仗?
DDR5信號完整性基礎(chǔ)
什么叫地磁傳感器?
要采購傳感器么,點這里了解一下價格!
特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索
?

關(guān)閉

?

關(guān)閉