基於Matlab的載波同步建模與仿真(科斯塔斯環)——超全原理講解,超全代碼和圖(這篇終於看懂了!)

1 設計原理

1.1 載波同步的原理

載波同步又稱載波恢復( carrier restoration),即在接收設備中產生一個和接收信號的載波同頻同相的本地振盪( local oscillation),供給解調器作相干解調用。當接收信號中包含離散的載頻分量時,在接收端需要從信號中分離出信號載波作爲本地相干載波;這樣分離出的本地相干載波頻率必然與接收信號載波頻率相同,但爲了使相位也相同,可能需要對分離出的載波相位作適當的調整。若接收信號中沒有離散載波分量,例如在2PSK信號中(“1”和“0”以等 概率出現時),則接收端需要用較複雜的方法從信號中提取載波。因此,在這些接收設備中需要有載波同步電路,以提供相干解調所需要的相干載波,相干載波必須與接收信號的載波嚴格地同頻同相。

造成載波不同步的原因有:

  • ·任何兩個獨立的振盪器都是不同步的;
  • ·即便發射機和接收機使用的兩個獨立振盪器是同步的,電磁波在信道中的傳播也會引起對接收機來說是未知的相位變化。比如電磁波的行程相位(一個波長的距離對應2π相移),繞射、反射、散射引起的附加相移等,另外多普勒現象也會引起頻率抖動。通常θ(t)\theta (t)相對於信息信號是緩慢變化的,因此經常寫成 的形式。這裏雖然 θ\theta 不爲0,但卻是固定的,如果接收端已知其數值,則這兩個載波在實質上是同步的。不過做相干解調時,需要對本地載波做相移以消除這個 θ\theta

載波提取的目的
要在接收端建立一個和發送信號完全一致(同頻同相)的本地載波(稱此爲相干載波或同步載波)。

提取載波的方法
一般分爲兩類:
一類是不專門發送導頻,而在接收端直接從發送信號中提取載波,這類方法稱爲直接法,也稱爲自同步法;
另一類是在發送有用信號的同時,在適當的頻率位置上,插入一個(或多個)稱作導頻的正弦波,接收端就利用導頻提取出載波,這類方法稱爲插入導頻法,也稱爲外同步法。

本篇報告主要介紹直接法提取載波中的平方環法和科斯塔斯環(Costas環)法提取相干載波的原理,並利用MATLAB程序仿真實現科斯塔斯環(Costas環)法分別對2PSK信號和DSB信號進行載波提取並解調出原始信號。

1.1.1 平方環載波同步法原理

設調製信號爲m(t)m(t)m(t)m(t)中無直流分量,則抑制載波的雙邊帶信號爲
s(t)=m(t)cosωct(1.1)\text{s}(t)=m(t)*\cos {{\omega }_{c}}t \tag {1.1}
接收端將該信號進行平方變換,即經過一個平方律部件後就得到
e(t)=m2(t)cos2ωct=12m2(t)+12m2(t)cos2ωct(1.2)e(t)={{m}^{2}}(t)*{{\cos }^{2}}{{\omega }_{c}}t=\frac{1}{2}{{m}^{2}}(t)+\frac{1}{2}{{m}^{2}}(t)\cos 2{{\omega }_{c}}t \tag {1.2}

由上式可以看出,雖然前面假設m(t)m(t)中無直流分量,但 卻一定有直流分量,這是因爲m2(t){{m}^{2}}(t)必爲大於等於0的數,因此,m2(t){{m}^{2}}(t)的均值必大於0,而這個均值就是直流分量,這樣e(t)e(t)的第二項中就包含2fc2{{f}_{c}}頻率的分量。例如,對於2PSK信號,爲雙極性矩形脈衝序列,設 =±1,那麼m2(t){{m}^{2}}(t)=1,這樣經過平方率部件後可以得到
e(t)=m2(t)cos2ωct=12+12cos2ωct(1.3)e(t)={{m}^{2}}(t)*{{\cos }^{2}}{{\omega }_{c}}t=\frac{1}{2}+\frac{1}{2}\cos 2{{\omega }_{c}}t\tag {1.3}
由上式可知,通過2fc2{{f}_{c}}窄帶濾波器從中很容易取出2fc2{{f}_{c}}頻率分量。經過一個二分頻器就可以得到2fc2{{f}_{c}}的頻率成分,這就是所需要的同步載波。因而,利用圖1-1所示的方框圖就可以提取出載波。
圖1-1 平方變換法提取載波原理框圖

圖1-1 平方變換法提取載波原理框圖


爲了改善平方變換的性能,可以在平方變換法的基礎上,把窄帶濾波器用鎖相環替代,構成如圖1-2所示框圖,這樣就實現了平方環法提取載波。由於鎖相環具有良好的跟蹤、窄帶濾波和記憶性能,因此平方環法比一般的平方變換法具有更好的性能,因而得到廣泛的應用。
圖1-2 平方環法提取載波原理框圖

圖1-2 平方環法提取載波原理框圖

1.1.2 科斯塔斯環載波同步法原理

科斯塔斯(Costas)環法又稱同相正交環法或邊環法。相比於平方環法,它仍然利用鎖相環提取載頻,但是不需要對接收信號作平方運算就能得到載頻輸出。在載波頻率上進行平方運算後,由於頻率倍增,使後面的鎖相環工作頻率加倍,實現的難度增大。科斯塔斯環則用相乘器和較簡單的低通濾波器取代平方器;這是它的主要優點。它和平方環法的性能在理論上是一樣的。
圖1-2中示出了其原理方框圖。圖中,接收信號s(t)s(t)被送入二路相乘器,兩相乘器輸入的a點和b點的壓控振盪電壓分別爲
va=cos(ωct+φ)(1.4){{v}_{a}}=\cos ({{\omega }_{c}}t+\varphi )\tag {1.4}va=sin(ωct+φ)(1.5){{v}_{a}}=\sin ({{\omega }_{c}}t+\varphi )\tag {1.5}
圖1-3  科斯塔斯環法提取載波原理框圖

圖1-3 科斯塔斯環法提取載波原理框圖


它們和接收信號電壓相乘後,得到c點和d點的電壓爲
vc=m(t)cos(ωct+θ)cos(ωct+φ)=12m(t)[cos(φθ)+cos(2ωct+φ+θ)](1.6) \begin{aligned} {{v}_{c}}&=m(t)\cos ({{\omega }_{c}}t+\theta )\cos ({{\omega }_{c}}t+\varphi )\\ & =\frac{1}{2}m(t)[\cos (\varphi -\theta )+\cos (2{{\omega }_{c}}t+\varphi +\theta )]\tag {1.6} \end{aligned}

vd=m(t)cos(ωct+θ)sin(ωct+φ)=12m(t)[sin(φθ)+sin(2ωct+φ+θ)](1.7) \begin{aligned} {{v}_{d}}& = m(t)\cos ({{\omega }_{c}}t+\theta )\sin ({{\omega }_{c}}t+\varphi )\\ & = \frac{1}{2}m(t)[\sin (\varphi -\theta )+\sin (2{{\omega }_{c}}t+\varphi +\theta )]\tag {1.7} \end{aligned}

這兩個電壓經過低通濾波器後,變成
ve=12m(t)cos(φθ)(1.8){{v}_{e}}=\frac{1}{2}m(t)\cos (\varphi -\theta )\tag {1.8}vf=12m(t)sin(φθ)(1.9){{v}_{f}}=\frac{1}{2}m(t)\sin (\varphi -\theta )\tag {1.9}

上面這兩個電壓相乘後,得到在g點的窄帶濾波器輸入電壓:
vg=vevf=18m2(t)sin2(φθ)(1.10){{v}_{g}}={{v}_{e}}{{v}_{f}}=\frac{1}{8}{{m}^{2}}(t)\sin 2(\varphi -\theta )\tag {1.10}

式中:(φθ)(\varphi -\theta )爲壓控振盪電壓和接收信號載波相位之差。
m(t)=±1m(t)=\pm 1代入式(1-9),並考慮到當(φθ)(\varphi -\theta )很小時,sin(φθ)(φθ)\sin (\varphi -\theta )\approx (\varphi -\theta ),則式(1-10)變爲
vg=14(φθ)(1.11){{v}_{g}}=\frac{1}{4}(\varphi -\theta )\tag {1.11}

電壓vg{{v}_{g}}通過環路窄帶低通濾波器,控制壓控振盪器的振盪頻率。此窄帶低通濾油器的截止頻率很低,只允許電壓vg{{v}_{g}}中近似直流的電壓分量通過。這個電壓控制壓控振盪哭的輸出電壓相位,使(φθ)(\varphi -\theta )儘可能地小。

φ=θ\varphi \text{=}\theta 時,vg=0{{v}_{g}}\text{=}0ve=12m(t)cos(φθ)=12m(t){{v}_{e}}=\frac{1}{2}m(t)\cos (\varphi -\theta )\text{=}\frac{1}{2}m(t)。壓控振盪器的輸出電壓va{{v}_{a}},就是科斯塔斯環提取出的載波,它可以用來作爲相干接收的本地載波。ve{{v}_{e}}就可以作爲解調信號的輸出。

此外,由式(1-8)可見,當(φθ)(\varphi -\theta )很小時,除了差一個常數因子外,電壓ve{{v}_{e}}就近似等於解調輸出電壓m(t)m(t)。所以科斯塔斯環本身就同時兼有提取相干載波和相干解調的功能。

爲了得到科斯塔斯環法在理論上給出的性能,要求兩路低通濾波器的性能完全相同。雖然用硬件模擬電路很難做到這一點,但是若用數字濾波器則不難做到。此外,由鎖相環原理可知,鎖相環在(φθ)(\varphi -\theta )值接近0的穩定點有兩個,在(φθ)(\varphi -\theta ) = 0 和 π 處。所以,科斯塔斯環法提取出的載頻也存在相位模糊性。

1.2 二進制移相鍵控(2PSK)的原理

移相鍵控是利用載波的相位變化來傳遞數字信息,而振幅和頻率保持不變。在2PSK中,通常用初始相位0和π分別表示進制“0”和“1”。因此,2PSK的時域表達式爲
e2PSK=Acos(ωct+φn)(1.12){{e}_{2PSK}}=A\cos ({{\omega }_{c}}t+{{\varphi }_{n}})\tag {1.12}

式中:φn{{\varphi }_{n}}表示第n個符號的絕對相位,即
φ={0"0"π"1"(1.13) \varphi =\left\{ \begin{aligned} 0 & & {發送"0"時}\\ π & & {發送"1"時}\\ \end{aligned} \right.\tag {1.13}

因此,式(1-11)可以該寫爲
e2PSK={Acos(ωct+φn)PAcos(ωct+φn)1P(1.14) {{e}_{2PSK}}=\left\{ \begin{array}{rcl} A\cos ({{\omega }_{c}}t+{{\varphi }_{n}}) & & {概率爲P}\\ -A\cos ({{\omega }_{c}}t+{{\varphi }_{n}}) & & {概率爲1-P}\\ \end{array} \right.\tag {1.14}

由於表示信號的兩種碼元的波形相同,極性相反,故2PSK信號一般可以表述爲一個雙極性( bipolarity )全佔空( 100% duty ratio) 矩形脈衝序列與一個 正弦載波的相乘,即
e2PSK=s(t)cosωct(1.15){{e}_{2PSK}}=s(t)\cos {{\omega }_{c}}t\tag {1.15}

其中,
s(t)=nang(tnTn)(1.16)s(t)\text{=}\sum\limits_{n}{{{a}_{n}}g(t-n{{T}_{n}})}\tag {1.16}

這裏,g(t)g(t)爲脈寬爲Tn{{T}_{n}}的單個矩形脈衝,an{{a}_{n}}的統計特性爲
an={1P11P(1.17) {{a}_{n}}\text=\left\{ \begin{array}{rcl} 1 & & {概率爲P}\\ -1 & & {概率爲1-P}\\ \end{array} \right.\tag {1.17}

即發送二進制符號“0”時an{{a}_{n}}=1,e2PSK{{e}_{2PSK}}取0相位;發送二進制符號“1”時an=1{{a}_{n}}\text{=}-1e2PSK{{e}_{2PSK}}取π相位。這種以載波的不同相位直接去表示相應二進制數字信號的調製方式,稱爲二進制絕對相移方式。

2PSK信號的解調通常採用相干解調法,解調器原理框圖如圖1-4所示。在相干解調中,如何得到與接收的2PSK信號同頻同相的相干載波就需要用到載波同步的實現方法。
圖1-4  2PSK信號的解調原理框圖

圖1-4 2PSK信號的解調原理框圖


2PSK信號相干解調時,假設相干載波的基準相位與2PSK信號的調製載波的基準相位一致( 通常默認爲0相位)。但是,由於在2PSK信號的載波恢復過程中存在着180°的相位模糊( phase ambiguity),即恢復的本地載波與所需的相干載波可能同相,也可能反相,這種相位關係的不確定性將會造成解調出的數字基帶信號與發送的數字基帶信號正好相反,即“1”變爲“0”,“0”變爲“1”,判決器輸出數字信號全部出錯。這種現象稱爲2PSK方式的“倒π”現象。

1.3 覆信號

信號是信息的載體,實際的信號總是實的,但在實際應用中採用覆信號卻可以帶來很大好處,由於實信號具有共軛對稱的頻譜,從信息的角度來看,其負頻譜部分是冗餘的,將實信號的負頻譜部分去掉,只保留正頻譜部分的信號,其頻譜不存在共軛對稱性,所對應的時域信號應爲覆信號。

通信一般具有載波,早期通信的載波爲正弦波,通過調製傳輸信息,發射和接收的都是實信號,接收後要把調製信號從載波里提取出來,通常的做法是將載頻變頻到零中頻。通常的變頻相當於將載頻下移,早期的調幅接收機將下移到較低的中頻,其目的是方便選擇信號和放大,然後通過包絡檢波得到所需的低頻信號,現代通信信號有各種調製方式,爲便於處理,需要將頻帶內的信號的譜結構原封不動的下移到零中頻(統稱爲基帶信號)。很顯然,將接收到的實信號直接變到零中頻是不行的,因爲實信號存在共軛對稱的雙邊譜,隨着載頻的下移,正、負相互接近,到中頻小於信號頻帶一半時,兩部分譜就會發生混疊,當中頻爲零時混疊最嚴重,使原信號無法恢復,這時應在變頻中注意避免正、負譜分量的混疊,正確的獲取基帶信號。

構造複數變量使用實部和虛部兩個分量,所以覆信號必須用實部和虛部兩路信號來表示它,兩路信號傳輸會帶來麻煩,實際信號的傳輸總是用實信號,而在信號處理中則用覆信號。

假設我們信號處理要用的基帶實信號爲
x(t)=a(t)cos(2πf0t)(1.18)x(t)=a(t)\cos (2\pi {{f}_{0}}t)\tag {1.18}

首先必須明確:實信號x(t)x(t)的正頻率分量所對應的信號z(t)z(t)是一個覆信號,z(t)z(t)實部爲原信號x(t)x(t),而其虛部爲x^(t)\hat{x}(t)(原信號x(t)x(t)的希爾伯特(Hilbert)變換)。z(t)z(t)被稱爲x(t)x(t)的解析表示,同時把z(t)z(t)的實部稱爲x(t)x(t)的同相分量,而把z(t)z(t)的虛部稱爲x(t)x(t)的正交分量。那麼這個解析信號也就是我們常說的IQ信號。上述信號對應的解析信號是
z(t)=a(t)cos(2πf0t)ja(t)sin(2πf0t)(1.19)z(t)=a(t)\cos (2\pi {{f}_{0}}t)-ja(t)\sin (2\pi {{f}_{0}}t)\tag {1.19}

解析信號的實部和虛部是正交的,是希爾伯特變換對,實部就是原信號或者說是實際存在的信號。用覆信號表示信號,構造解析信號減少一半頻帶是一個優點;用來表示實信號時,運算簡便也是一個很重要的優點。
對於窄帶信號s(t)=a(t)cos(ωt+φ(t))s(t)=a(t)\cos (\omega t+\varphi (t)),正交形式爲s(t)=sI(t)cosωt+sQ(t)sinωts(t)={{s}_{I}}(t)\cos \omega t+{{s}_{Q}}(t)\sin \omega t,式中sI(t)=a(t)cosϕ(t){{s}_{I}}(t)=a(t)\cos \phi (t)sQ(t)=ja(t)sinϕ(t){{s}_{Q}}(t)=ja(t)\sin \phi (t)sI(t){{s}_{I}}(t)稱爲基帶同相分量,sQ(t){{s}_{Q}}(t)稱爲基帶正交分量。信號s(t)的指數形式和解析信號形式就可寫爲a(t)exp(j(ωt+φ(t)))a(t)\exp (j*(\omega t+\varphi (t)))

2 仿真實現

2.1 2PSK信號載波提取及解調仿真設計流程及原理

圖2-1  數字基帶信號調製解調原理框圖

圖2-1 數字基帶信號調製解調原理框圖

圖2-2  Costas環處理流程框圖

圖2-2 Costas環處理流程框圖

2.1.1 產生數字基帶信號

%構造數字基帶信號
I_Data=(randi(2,L,1)-2)*2+1; 
Q_Data=zeros(L,1,1);
Signal_Source=I_Data + j*Q_Data; 

利用randi函數產生雙極性不歸零數字基帶信號,並且爲數字基帶信號和下面兩路正交載波調製做準備,所以採用覆信號的形式表示,實部爲產生的數字基帶信號,虛部爲同型的零矩陣。用Signal_Source表示原信號的覆信號形式。

2.1.2 產生載波信號

%載波信號 
Freq_Sample=2400;                       %採樣率,Hz 
Delta_Freq=60;                          %載波頻率 
Time_Sample=1/Freq_Sample;              %採樣間隔
Delta_Phase=rand(1)*2*pi;               %隨機初相,rad 
Carrier=exp(j*(Delta_Freq*Time_Sample*(1:L)+Delta_Phase));      %構造載波信號

用覆信號的形式表示兩路正交載波,那麼在調製及解調時,就可用數字基帶信號的覆信號形式和載波的覆信號形式相乘來表示兩路信號執行的同類運算操作,更加簡便。

2.1.3 調製產生2PSK信號

%調製處理 
Signal_Channel=Signal_Source.*Carrier'; 

用Signal_Channel表示已調信號的覆信號形式。點乘代表各採樣點對應項相乘。

2.1.4 鎖相環參數清零及初始化

%參數清零及初始化
Signal_PLL=zeros(L,1);                  %鎖相環鎖定及穩定後的數據
NCO_Phase = zeros(L,1);                 %鎖定的相位
Discriminator_Out=zeros(L,1);           %鑑相器輸出
Freq_Control=zeros(L,1);                %頻率控制
PLL_Phase_Part=zeros(L,1);              %鎖相環相位響應函數
PLL_Freq_Part=zeros(L,1);               %鎖相環頻率響應函數
I_PLL = zeros(L,1); 
Q_PLL = zeros(L,1); 
%環路處理 
C1=0.022013;                    %環路濾波器係數C1
C2=0.00024722;                  %環路濾波器係數C2  

鎖相環處理過程中涉及到的參數有:

① 已調信號在兩路上最開始分別經過的相乘器的兩個輸入信號Signal_PLL,相當於鑑相器的輸入;
② 壓控振盪器的調整相位NCO_Phase;
③ 鑑相器的輸出Discriminator_Out;
④ 壓控振盪器的頻率控制Freq_Control;
⑤ 鎖相環的頻率響應PLL_Phase_Part和相位響應PLL_Freq_Part
⑥ 環路濾波器前的相乘器的兩路正交的輸入信號I_PLL和Q_PLL;

2.1.5 科斯塔斯環的正式處理過程

for i=2:L 
    Signal_PLL(i)=Signal_Channel(i)*exp(-j*mod(NCO_Phase(i-1),2*pi));   %得到環路濾波器前的相乘器的輸入
    I_PLL(i)=real(Signal_PLL(i));                                       %環路濾波器前的相乘器的I路輸入信息數據
    Q_PLL(i)=imag(Signal_PLL(i));                                       %環路濾波器前的相乘器的Q路輸入信息數據
    Discriminator_Out(i)=sign(I_PLL(i))*Q_PLL(i)/abs(Signal_PLL(i));    %鑑相器的輸出誤差電壓信號
    PLL_Phase_Part(i)=Discriminator_Out(i)*C1;                          %環路濾波器對鑑相器輸出的誤差電壓信號處理後得到鎖相環相位響應函數
    Freq_Control(i)=PLL_Phase_Part(i)+PLL_Freq_Part(i-1);               %控制壓控振盪器的輸出信號頻率
    PLL_Freq_Part(i)=Discriminator_Out(i)*C2+PLL_Freq_Part(i-1);        %環路濾波器對鑑相器輸出的誤差電壓信號處理後得到鎖相環頻率響應函數
    NCO_Phase(i)=NCO_Phase(i-1)+Freq_Control(i);                        %壓控振盪器進行相位調整
end 

已調信號進入Costas環後,兩路上都要首先分部經過一個相乘器,此相乘器起到鑑定相位的作用。在每個相乘器中,另外一路輸入信號分別是壓控振盪器的輸出信號和壓控振盪器的輸出經90°移相後的信號,實現跟蹤已調信號中的載波頻率和相位調整的功能。
然後經過低通濾波器濾除高頻分量後兩路輸出仍包含有調製信號,將這兩路輸出用I_PLL和Q_PLL來表示,二者相乘以後可以消除調製信號的影響,得到相當於鑑相器的輸出誤差電壓信號。

然後將鑑相器的輸出誤差電壓信號再經環路濾波器濾除誤差電壓信號中的高頻分量和噪聲,可得到僅與壓控振盪器輸出和理想載波之間相位差有關的控制電壓,從而準確地對壓控振盪器進行調整,恢復出原始的載波信號。

2.1.6 原始載波與提取載波

當鎖相環達到穩定後,壓控振盪器的輸出信號va{{v}_{a}}就是科斯塔斯環提取出的載波,它可以用來作爲相干接收的載波。

plot(cos(NCO_Phase),'r');grid on        %鎖相環提取的載波
hold on 
plot(real(Carrier))                     %發射載波
legend('鎖相環提取的載波','發射載波')

2.1.7 調製信號與解調信號

當鎖相環達到穩定後,ve{{v}_{e}}就可以作爲解調信號的輸出。

plot(I_Data(Show_D:Show_U)); grid on; 
title('I路信息數據(調製信號)'); 
axis([1 Show_Length -2 2]); 
subplot(2,2,2) 
plot(Q_Data(Show_D:Show_U)); grid on; 
title('Q路信息數據'); 
axis([1 Show_Length -2 2]); 
subplot(2,2,3) 
plot(I_PLL(Show_D:Show_U)); grid on; 
title('鎖相環輸出I路信息數據(解調信號)'); 
axis([1 Show_Length -2 2]); 
subplot(2,2,4) 
plot(Q_PLL(Show_D:Show_U)); grid on; 
title('鎖相環輸出Q路信息數據'); 
axis([1 Show_Length -2 2]); 

2.2 DSB信號載波提取及解調仿真設計流程及原理

圖2-3  正弦波模擬信號調製解調原理框圖

圖2-3 正弦波模擬信號調製解調原理框圖

圖2-4  Costas環處理流程框圖

圖2-4 Costas環處理流程框圖

2.2.1 產生正弦波模擬信號

%--調製信號
Am =1;                      %--歸一化幅值
fm =0.1e6;                  %--調製信號的頻率, 這裏取 fm = 0.1MHz
sm = Am*cos(2*pi*fm*t);     %--產生調製信號

定義調製信號幅度Am,調製信號頻率0.1MHz,產生正弦波模擬信號。

2.2.2 產生載波信號

%--載波信號
Ac =1;                                  %--歸一化幅值
fc =1e6;                                %--載波頻率, 一般 fc > fm, 這裏取 fc = 1 MHz
Delta_Phase=rand(1)*2*pi;               %隨機初相,rad 
sc = Ac*cos(2*pi*fc*t+Delta_Phase);     %--構造同相載波信號
sc1 = Ac*sin(2*pi*fc*t+Delta_Phase);    %--構造正交載波信號

2.2.3 調製產生DSB信號

Signal_Channel = s_am_DSB + j * s_am_DSB_1;%用覆信號形式表示

用Signal_Channel表示已調信號的覆信號形式。此處是通過將實信號和虛信號分別調製後構造成覆信號。

2.2.4 鎖相環參數清零及初始化

%鎖相環參數清零和初始化
Signal_PLL=zeros(1,Sample_Length);
I_PLL=zeros(1,Sample_Length);
Q_PLL=zeros(1,Sample_Length);
NCO_Phase = zeros(1,Sample_Length);
Discriminator_Out=zeros(1,Sample_Length);
Freq_Control=zeros(1,Sample_Length);
PLL_Phase_Part=zeros(1,Sample_Length);
PLL_Freq_Part=zeros(1,Sample_Length);

Ko=1;                           %壓控振盪器增益               
Kd=1;                           %鑑相器增益  
K=Ko*Kd;                        %總增益
sigma=0.707;                    %環路阻尼係數,一般設爲0.707
BL=0.98*symbol_rate;            %環路等效噪聲帶寬
Wn=8*sigma*BL/(1+4*sigma^2);    %環路自由震盪角頻率
T_nco=Ts*decimator;             %壓控振盪器NCO頻率字更新週期
K1=(2*sigma*Wn*T_nco)/(K);      %環路濾波器係數K1
K2=((T_nco*Wn)^2)/(K);          %環路濾波器係數K2  

本程序詳細配置了鎖相環中鑑相器和壓控振盪器的增益及環路濾波器的參數等。

2.2.5 科斯塔斯環的正式處理過程

for i=2:Sample_Length
        Signal_PLL(i)=Signal_Channel(i)*exp(-j*mod(NCO_Phase(i-1),2*pi));  %得到環路濾波器前的相乘器的輸入
        I_PLL(i)=real(Signal_PLL(i));                                      %鑑相器的I路輸入信息數據
        Q_PLL(i)=imag(Signal_PLL(i));                                      %鑑相器的Q路輸入信息數據
        
        Discriminator_Out(i)=sign(I_PLL(i))*Q_PLL(i)/abs(Signal_PLL(i));   %鑑相器的輸出誤差電壓信號
        PLL_Phase_Part(i)=Discriminator_Out(i)*K1;                         %環路濾波器對鑑相器輸出的誤差電壓信號處理後得到鎖相環相位響應函數
        Freq_Control(i)=PLL_Phase_Part(i)+PLL_Freq_Part(i-1);              %控制壓控振盪器的輸出信號頻率
        PLL_Freq_Part(i)=Discriminator_Out(i)*K2+PLL_Freq_Part(i-1);       %環路濾波器對鑑相器輸出的誤差電壓信號處理後得到鎖相環頻率響應函數
        NCO_Phase(i)=NCO_Phase(i-1)+Freq_Control(i);                       %壓控振盪器進行相位調整
end

2.2.6 原始載波與提取載波

當鎖相環達到穩定後,壓控振盪器的輸出信號va{{v}_{a}}就是科斯塔斯環提取出的載波,它可以用來作爲相干接收的載波。

%畫出鎖相環提取的載波和發射載波
figure(1)
plot(cos(NCO_Phase),'r');grid on        %鎖相環提取的載波
hold on 
plot(sc)                                %發射載波
axis([0 500 -2 2]);
legend('鎖相環提取的載波','發射載波')

2.2.7 調製信號與解調信號

當鎖相環達到穩定後,ve{{v}_{e}}就可以作爲解調信號的輸出。

%畫出調製信號(調製信號)和解調後輸出的信號
figure(3)
%設定顯示範圍
Show_D=0;       %起始位置
Show_U=4000;    %終止位置
subplot(4,1,1)
plot(I_data1);axis([Show_D Show_U -2 2]);grid on;
title('I路信息數據');
subplot(4,1,2)
plot(2*I_PLL);axis([Show_D/decimator Show_U/decimator -2 2]);grid on;
title('鎖相環輸出I路信息數據');
subplot(4,1,3)
plot(Q_data1);axis([Show_D Show_U -2 2]);grid on;
title('Q路信息數據');
subplot(4,1,4)
plot(2*Q_PLL);axis([Show_D/decimator Show_U/decimator -2 2]); grid on;
title('鎖相環輸出Q路信息數據');

2.3 2PSK信號載波同步及解調仿真結果

將程序在Matlab軟件內仿真,得到結果如下圖:
圖2-5  Costas環提取載波圖

圖2-5 Costas環提取載波圖

圖2-6  鎖相環頻率響應、相位響應曲線圖

圖2-6 鎖相環頻率響應、相位響應曲線圖

圖2-7  數字基帶信號、解調輸出信號對比圖

圖2-7 數字基帶信號、解調輸出信號對比圖

2.4 DSB信號載波同步及解調仿真結果

將程序在Matlab軟件內仿真,得到結果如下圖:
Costas環提取載波圖

圖2-8 Costas環提取載波圖

圖2-9  鎖相環頻率響應、相位響應曲線圖

圖2-9 鎖相環頻率響應、相位響應曲線圖

圖2-10  正弦波模擬信號、解調輸出信號對比圖

圖2-10 正弦波模擬信號、解調輸出信號對比圖

2.5 仿真結果分析

開始一段較短時間內,鎖相環未達到穩定狀態,通過不斷調整相位差使其逐漸趨於0,最終鎖定在一個穩定平衡點上達到平衡狀態。
環路正常穩定後,ve=12m(t)cos(φθ)=12m(t)(1.20){{v}_{e}}=\frac{1}{2}m(t)\cos (\varphi -\theta )\text{=}\frac{1}{2}m(t)\tag {1.20}vf=12m(t)sin(φθ)=0(1.21){{v}_{f}}=\frac{1}{2}m(t)\sin (\varphi -\theta )\text{=}0\tag {1.21}鎖相環輸出I路信號ve{{v}_{e}}就可直接作爲解調信號輸出,而此時鎖相環輸出的Q路信號vf{{v}_{f}}就近似爲0。壓控振盪器的輸出信號va{{v}_{a}}就是科斯塔斯環提取出的載波,它可以用來作爲相干接收的載波。

另外,鎖相環穩定時,θ0φ{{\theta }_{0}}-\varphi 可能取值爲0,也可能取值爲 π,意味着恢復出的載波可能與理想載波同相,也可能反相,這種相位關係的不確定性,就是相位模糊。

3 心得體會

本次的載波同步建模仿真課程設計,我查閱了大量相關的資料文獻,並結合曾經老師課上所講的有關載波同步的相關思想,吸收知識並加以推廣,完成了整個仿真設計的設計構思。此外,我學會了更多關於通信原理的相關知識,在課本內容的理論基礎之上實現了具有實際應用價值的載波同步仿真。

本次設計是在充分學習了老師上課所講內容的基礎上,進行新領域知識的延伸。在這期間,我對載波同步的原理和實現方法有了更加深入的學習,也學習了實現本次設計仿真所需要掌握的鎖相環的原理及其內部鑑相器、環路濾波器、壓控振盪器的原理和功能,這些在之前的課上學習中都只停留在基礎原理,未對各模塊的結構和實現原理進行學習,而在本次利用MATLAB語言進行仿真時,需要明白各模塊的參數設置和運作機制,因此本次綜合課程設計對我來說學習了很多關於載波同步的知識和鎖相環的新知識。

本次針對科斯塔斯環中的兩路信號,利用覆信號的形式實現,使我充分理解了覆信號、解析信號和IQ信號的定義和它們之間的聯繫,利用IQ兩路正交信號構造覆信號簡便地實現了科斯塔斯環中經過兩路信號的相乘器、低通濾波器等操作,認識到進行通信信號處理時一般採用覆信號而實際傳送信號則爲實信號的原因和優勢。

在研究的過程中,我針對查詢的資料形成了自己對仿真流程的一些思考,嘗試用自己的一些想法編寫代碼,最終經過重重嘗試,運行成功了整個程序。同時,我也更加熟練地掌握了MATLAB語言的語法知識及對MATLAB軟件的操作。我在本次綜合課程設計中經歷了從基礎原理、新知識的拓展、設計構思、編寫程序和仿真實現等階段,使我受益匪淺。

4 參考文獻

[1] 張水英,徐偉強.通信原理及MATLAB/Simulink仿真[M] .北京:人民郵電出版社,2012.
[2] 田耘,徐文波.無線通信FPGA設計[M] .北京:電子工業出版社,2008.
[3] 杜勇,數字同步技術的MATLAB與FPGA實現[M] .北京:電子工業出版社,2008.
[4] 樊昌信,曹麗娜.通信原理(第 7版)[M]. 北京:國防工業出版社, 2018.

5 資源鏈接

MATLAB代碼和仿真圖片資源鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章