DSB的數字正交解調

超级大咸鱼發表於2024-12-03

1.DSB調製過程

​ DSB訊號是一種雙邊帶調幅調製訊號,又叫雙邊帶調幅,透過改變載波的振幅來實現基帶資料的傳輸。

其函式表示式如下:

\[s(t) = m(t)*cos(2\pi ft + \varphi) \]

其中:
m(t):表示基帶訊號。
\(cos(2\pi ft + \varphi )\):表示載波訊號。

image-20241203211922799

2.DSB的數字正交解調

​ 以下介紹的正交解調法將消除頻差或者相差帶來的誤差,增加其解碼正確率。

image-20241203213448984

透過正交的方式即可解調出基帶訊號,其數學推導如下:

​ 假設基帶訊號為\(m(t)\),調製的載波頻率為\(f_1\),解調的載波頻率為\(f_2\),相位為\(\varphi\),LPF為低通濾波器,則:

I路:

\[I(t) = LPF(s(t)*cos(2\pi f_2t + \varphi)) = LPF(m(t)*cos(2\pi f_1t) *cos(2\pi f_2t + \varphi)) \]

根據三角函式公式:

\[\begin{split} I(t) &= LPF(m(t)*cos(2\pi f_1t) *cos(2\pi f_2t + \varphi))\\ &= LPF(\frac{1}{2}m(t)*[cos(2\pi (f_1 + f_2)t+\varphi) + cos(2\pi (f_1 - f_2 )+ \varphi)]) \\ &= \frac{1}{2}m(t)*cos(2\pi (f_1 - f_2 )+ \varphi)) \\ \end{split} \]

同理:Q路:

\[\begin{split} Q(t) &= LPF(m(t)*cos(2\pi f_1t) *sin(2\pi f_2t + \varphi))\\ &= LPF(\frac{1}{2}m(t)*[cos(2\pi (f_1 + f_2)t+\varphi) - sin(2\pi (f_1 - f_2 )+ \varphi)]) \\ &= -\frac{1}{2}m(t)*sin(2\pi (f_1 - f_2 )+ \varphi)) \\ \end{split} \]

對於解調系統來說:當\(f_1=f_2,\varphi=0\)時,

\[\begin{split} & I(t) = \frac{1}{2}m(t) \\ & Q(t) = 0 \\ \end{split} \]

​ 這時,就可以完美還原基帶訊號,但是此方法嚴格要求發射載波與接收載波頻率相同,而且相位保持一致,相位誤差與載波頻率誤差將嚴格限制解調系統的精確度,所以一下將使用其他解調方法來規避,相位差與頻率差帶來的解調誤差。

​ 為了計算方便假設:

\[K=2\pi (f_1 - f_2 )+ \varphi \]

則:

\[\begin{split} & I(t) = \frac{1}{2}m(t)*cos(K) \\ & Q(t) = -\frac{1}{2}m(t)*sin(K) \end{split} \]

根據三角函式公式:

\[K = arctan(\frac{-Q(t)}{I(t)}) \]

注:\(arctan\)函式有作用域\((-\pi/2\space\space\space\space\pi/2)\)要求,所以將使用其他函式替代。

\[\begin{split} & I(t) = \frac{1}{2}m(t)*cos(arctan(\frac{-Q(t)}{I(t)})) \\ & Q(t) = -\frac{1}{2}m(t)*sin(arctan(\frac{-Q(t)}{I(t)})) \end{split} \]

以下將是重要的地方:

向量旋轉,將一個向量\((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)})\),那麼:

\[\begin{split} & I'(t) = \frac{1}{2}m(t)*cos(arctan(\frac{-Q(t)}{I(t)}) - arctan(\frac{-Q(t)}{I(t)})) =\frac{1}{2}m(t)\\ & Q'(t) = -\frac{1}{2}m(t)*sin(arctan(\frac{-Q(t)}{I(t)}) - arctan(\frac{-Q(t)}{I(t)})) = 0 \end{split} \]

這樣就消除了相位差和頻率差帶來的誤差,\(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('相位差');

結果:

image-20241203221714154

5.FPGA解調

有空補齊FPGA解調部分程式碼。

相關文章