第4章:载波同步与锁相环仿真(2)

上一讲《载波同步与数字锁相环仿真(1)》主要讲解了一下锁相环的基本原理及其MATLAB实现,观察锁相环是如何跟踪信号相位,并且最终可以和接收到的信号同频同相

其中,二阶锁相环的核心代码需要你扎实学习与掌握。

理解了锁相环的基本原理后,仍然有一些问题需要我们去解决,比如:

1、如何用数字锁相环对有多普勒频偏的2psk信号进行相干解调?

2、锁相环进入同步状态的时间要多久呢?能否调整呢?锁相环会不会跟不上信号的相位变化呢?

3、如果接收到的信号包含噪声,锁相环能否正常工作呢?或者说锁相环正常工作条件是什么呢?

一、用二阶锁相环对有多普勒频偏和载波随机相位的psk信号进行相干解调

我刚开始好不容易搞懂了二阶锁相环的MATLAB实现,写在了《数字锁相环的MATLAB实现》,而如何将其运用到有多普勒频偏的2psk信号的相干解调,调试代码与整理思路又花了好些天时间。

在写有多普勒频偏的2psk信号的相干解调时,我便充分认识到自己对于锁相环理论知识的欠缺。检查很多遍代码后,发现代码框架没有大问题,但就是死活不出来正确结果,这样的心情真是很磨人

于是我从图书馆借出来西电郑继禹的《锁相技术》和杜勇的《锁相环原理及FPGA实现》,进行学习。然而理论知识太多,我还未融会贯通。

回到有多普勒频偏的2psk信号的相干解调,上一讲《载波同步与数字锁相环仿真(1)》的代码中,进入锁相环的信号还没有乘以双极性序列,即没有对基带信号进行调制

我在《BPSK调制解调器仿真》的第三点“如何保证仿真正确性”中讲过:测试每个模块的正确后,再加入到大程序仿真中。

即当我们写一个大的程序时,为了避免总程序出错不知道从什么地方开始找,我们在最开始写每个程序模块的时候,先对其进行测试,测试正确后,加入到大程序后,来减少程序调试的错误

这次将双极性序列乘以有多普勒频偏的载波进行测试。

注意到,由于发送端乘以 cos ⁡ w t \cos wt coswt ,接收端乘以 cos ⁡ w t \cos wt coswt +低通滤波,会把2w的频率滤除,只剩下有多普勒频偏的基带频率。因此,直接乘 cos ⁡ ( 2 p i ⋅ f d o p ⋅ t + p h i 0 ) \cos \left( {2pi \cdot {f_{dop}} \cdot t + phi0} \right) cos(2pifdopt+phi0) ,验证程序正确后,之后再乘以 cos ⁡ ( 2 p i ⋅ ( f d o p + f c ) ⋅ t + p h i 0 ) \cos \left( {2pi \cdot \left( {{f_{dop}} + {f_c}} \right) \cdot t + phi0} \right) cos(2pi(fdop+fc)t+phi0) ,后面的程序将看到这个过程。

img

图1 相差随时间变化图

img

图2 频差随时间变化图

在上面的代码中,有极性鉴相器松尾环鉴相器,这部分内容可以参考知网论文《卫星定时接收机的关键技术研究》,里面对捕获和跟踪有介绍,值得仔细阅读。

在《载波同步与数字锁相环仿真(1)》和《数字锁相环的MATLAB实现》的代码中,我们得出结论:噪声带宽值增加,捕获速度会加快,但是抖动会增加

为了在一个符号内锁相环能迅速捕获并跟踪到信号,后续的抖动便会增加。对应到上面second_loopfilter_sim4.m 文件,读者可调整Bn也可进行验证。

有了多普勒频偏,怎么来设置相应的Bn?有没有什么规律呢?这个问题我还在思考中。

接下来,说一下噪声对锁相环路的影响。

详细内容可以看张厥盛的《锁相技术》第三章,本文不加证明的直接摘录书中一些重要结论,方便后续的代码实现。

锁相环的噪声与干扰主要是两个来源:一类是与信号一起进入环路的输入噪声与谐波干扰;另一类是环路部件产生的内部噪声与谐波干扰,以及压控振荡器控制端感应的寄生干扰等,其中压控振荡器内部噪声是主要的噪声源。

想一想,说这两类噪声与干扰有什么用呢?

在解决问题时,为了达到所有的优化目标往往是不可能的,常常需要trade-off。减小环路噪声等效带宽,可以有效滤除第一类噪声,但是压控振荡器的相位噪声主要集中在低频部分,所以这会使得压控振荡器的相位噪声大量通过。

就我个人认为,因为在仿真的过程中,我们不涉及压控振荡器的相位噪声仿真,所考虑的噪声只有第一类,也就是对信号加上的高斯白噪声。

如果这样的话,我们是不是可以使得环路噪声等效带宽设置尽可能小呢?

当然不行,因为等效噪声带宽又会影响捕获带和抖动情况。

有了上面的这段代码,我们怎么知道解调是否正确呢?

与理论的误码率曲线进行对比,是不错的方法,因此将实验所得的误码率与berawgn函数进行对比。

通过上面的代码,已经验证过锁相环可以用于有多普勒频偏的2psk信号的相干解调。读者也可继续测试不同的 E b / N 0 {E_b}/{N_0} Eb/N0 下,得到的误码率。

上面的代码,没有基带成型、匹配滤波、上载波、捕获、下载波、信道编解码等过程。结合《第1章:BPSK调制解调器仿真》和《第2章:线性分组码》,便可以把代码补充完整。

至此,用锁相环进行载波同步的过程已经介绍完毕。

那么多普勒频偏达到多少,锁相环便会跟不上呢?即锁相环无法进入锁定状态。

举个例子来说,假如多普勒频偏10Hz,锁相环可以快速跟上,但是几百Hz频偏,锁相环便不能快速跟上了,需要的时间可能会很长。

在卫星通信中,由于卫星相对地面终端的移动速度特别快,多普勒频偏便会很大。

那有没有办法,让进入锁相环的信号频偏比较小呢?

在进入锁相环之前,可对信号进行初步的频偏补偿。举个例子,假如频偏是220Hz,我们用0-100Hz,100-200Hz,200-300Hz这样一段一段的频率去扫描。然后惊奇发现,频偏范围是属于200-300区间的,于是先补偿200Hz给信号,再进入锁相环,对信号进行跟踪。

那怎么判断出来频偏范围是200-300Hz这个区间的呢?

就是看信号频率离谁越近,就认为是落在哪个区间。因此,本质是最大似然估计的思想。

以上的用0-100Hz,100-200Hz,200-300Hz这样一段一段的频率去扫描的过程,其实信号捕获中频偏粗估计的过程。

值得注意的是,信号捕获和锁相环里面的捕获不是一个概念,信号捕获是指接收端判断信号有没有来了,来了的话,就是捕获成功,没来的话,就是捕获失败。

二、总结

从我个人调试代码的过程中发现,锁相环虽然好用,但是参数设置比较麻烦,理论分析又需要非常非常非常扎实的理论功底,而我目前还没有这么强的扎实功底。

因此,我是结合上述书籍与材料中的理论分析,然后不断的调整参数,比如环路噪声等效带宽Bn,环路增益等,来使得锁相环满足跟踪频率和解调信号的要求。这也再一次体现“理论指导实践,实践印证理论”的过程。

锁相环的内容很丰富,但是本科一般都不学习,确实比较难。在自学这部分的内容时,我对阅读又有了两点体会:

1、读经典材料

我现在越来越明白为什么大家说要读经典书籍和论文了,经得起时间考验的东西就是不太一样。比如我在上面提到的张厥盛的《锁相技术》,这可能会比你随便找一本锁相理论的书阅读起来舒服。

2、相互印证

读书籍或者论文,也别只读一本。最好是相同的知识点,看不同的书籍怎么讲,谁讲的对,谁讲的好,高下立判。虽然多花了一些时间,好像在阅读相同的材料,但是不同的人讲解知识的角度、侧重点,这也会让我有所收获,学习便也扎实了些。

特别感谢微信公众号“通信工程师专辑”的蔡凡博士,本人虽学习兴趣浓厚,但能力有限,且缺少大型工程项目实践,不足甚至错误之处,真的在所难免,欢迎你批评指正。

也欢迎读者朋友就以上讲到的相关技术问题与我交流,一起学习,共同进步。请你也别忘了把这篇文章分享给你身边正在学习通信专业的同学们,也许能够帮到Ta。这是《陈老湿·通信MATLAB》仿真的第4章,期待下次更新见!

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
数字滤波器是一种用于信号处理的工具,可以用来去除信号中的噪声或其他干扰。MATLAB是一款强大的数值计算和仿真软件,可以用来设计和实现数字滤波器。 在第4中,我们将学习载波同步锁相环仿真载波同步是指在数字通信系统中,接收端需要根据发送端的载波信号来恢复接收信号的相位和频率。锁相环是一种常用的方法,用于实现载波同步。 在MATLAB中,我们可以使用信号处理工具箱的相关函数来进行数字滤波器的设计和仿真。首先,我们需要根据具体的需求选择合适的滤波器类型,例如低通滤波器、高通滤波器或带通滤波器。 然后,我们可以使用MATLAB中的fir1函数或fdesign函数来设计滤波器。这些函数可以根据给定的参数,如滤波器类型、截止频率等,生成滤波器的系数。 接下来,我们可以使用filter函数来应用滤波器。该函数需要输入滤波器的系数和待滤波的信号,然后返回滤波后的信号。 在载波同步锁相环仿真中,我们可以使用MATLAB中的Phase Locked Loop (PLL)模块。该模块可以模拟锁相环的行为,包括相位和频率跟踪、相位修正等。我们可以根据实际情况来设置PLL的参数,如带宽、增益等。 最后,我们可以通过观察滤波后信号的频谱、时域波形等来评估数字滤波器的性能。我们可以使用MATLAB中的fft函数来计算信号的频谱,使用plot函数来绘制波形图。 综上所述,数字滤波器的MATLAB仿真涉及滤波器的设计、滤波器的应用以及锁相环的模拟。通过合理选择滤波器类型和参数,并根据需求进行仿真和评估,我们可以得到满足要求的数字滤波器设计和性能评估结果。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值