基于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代码和仿真图片资源链接

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