1.DSB調製過程
DSB訊號是一種雙邊帶調幅調製訊號,又叫雙邊帶調幅,透過改變載波的振幅來實現基帶資料的傳輸。
其函式表示式如下:
其中:
m(t)
:表示基帶訊號。
\(cos(2\pi ft + \varphi )\):表示載波訊號。
2.DSB的數字正交解調
以下介紹的正交解調法將消除頻差或者相差帶來的誤差,增加其解碼正確率。
透過正交的方式即可解調出基帶訊號,其數學推導如下:
假設基帶訊號為\(m(t)\),調製的載波頻率為\(f_1\),解調的載波頻率為\(f_2\),相位為\(\varphi\),LPF為低通濾波器,則:
I路:
根據三角函式公式:
同理:Q路:
對於解調系統來說:當\(f_1=f_2,\varphi=0\)時,
這時,就可以完美還原基帶訊號,但是此方法嚴格要求發射載波與接收載波頻率相同,而且相位保持一致,相位誤差與載波頻率誤差將嚴格限制解調系統的精確度,所以一下將使用其他解調方法來規避,相位差與頻率差帶來的解調誤差。
為了計算方便假設:
則:
根據三角函式公式:
注:\(arctan\)函式有作用域\((-\pi/2\space\space\space\space\pi/2)\)要求,所以將使用其他函式替代。
以下將是重要的地方:
向量旋轉,將一個向量\((cos(\theta_1),sin(\theta_2))\),逆時針旋轉\(\theta_2\),旋轉後的座標為\((cos(\theta_1-\theta_2),sin(\theta_2-\theta_2))\)。將I和Q看著一個向量,將其逆時針旋轉\(arctan(\frac{-Q(t)}{I(t)})\),那麼:
這樣就消除了相位差和頻率差帶來的誤差,\(I'(t)\)就是我們解調的結果。其結果與頻率差與相位差無關。
3.MATLAB解調
以下只展示解調過程的模擬,不展示下變頻,濾波等操作:
close all;
%% 係數
figure
time = 5;
fs = 100E6; % 取樣率 (Hz)
len = 1E3; % 訊號序列點數
f_base = 3E6;%基帶訊號頻率
f_carr_1 = 40E6;%調製載波頻率
f_carr_2 = 42E6;%解調載波頻率
fi = 0.1;%解調載波初始相位
t = 0:1/fs:(len-1)/fs; % 時間向量
mt = cos(2*pi*f_base*t);
I = mt.*cos(2*pi*(f_carr_1-f_carr_2)*t-fi)/2;
Q = -mt.*sin(2*pi*(f_carr_1-f_carr_2)*t-fi)/2;
%% 向量旋轉
theta = atan2(Q./(-mt),I./(mt));
It = I.*cos(theta) - Q.*sin(theta);
Qt = Q.*cos(theta) + I.*sin(theta);
subplot(time,1,1);
plot(mt);
title('基帶訊號');
subplot(time,1,2);
plot(I);
title('I路');
subplot(time,1,3);
plot(Q);
title('Q路');
subplot(time,1,4);
plot(It);
title('解調訊號');
subplot(time,1,5);
plot(theta);
title('相位差');
結果:
5.FPGA解調
有空補齊FPGA解調部分程式碼。