第4章:载波同步与锁相环仿真(1) | 您所在的位置:网站首页 › 追踪器的原理是什么呢图片 › 第4章:载波同步与锁相环仿真(1) |
错误更正 之前代码中出现了错误,现在已改成下面这个式子,运行正确。 Wn = 2*Bn/(damp+(1/(4*damp)));本人最近搞懂了锁相环MATLAB仿真的一些知识,于是先更新第4章,之后更新第3章——信号捕获。 第4章(1)内容如下: 一、二阶锁相环的MATLAB代码实现 二、锁相环经典书籍与材料 三、锁相环基本原理介绍,各参数对二阶锁相环的性能影响 四、总结 第4章(2)内容将集中: 用二阶数字锁相环对有多普勒频偏和载波随机相位的psk信号进行相干解调 下面开始第(1)部分内容: 一、二阶锁相环的MATLAB代码实现本科在学习通信原理的课程时,提到2PSK的相干解调,接收端需要一个和发送端同频同相的载波,才能进行相干解调。 书本上一般会考虑载波相位误差 ![]() 你可能会想了,接收端有没有什么办法能估计出这个误差相位 激动人心的时刻,锁相环表示他要出场了。 对,锁相环就是这么一种神奇的电路,能够产生出一个与到达接收端信号同频同相的载波信号。 注意,在这里你需要区分发送信号和到达接收端信号,这两者的频率和相位常常是不一样的。 这是为什么呢? 在无线通信,尤其是卫星通信中,是少不了多普勒频偏的。 奇怪的小问号来了,多普勒频偏是什么? 百度解释:多普勒频偏(Doppler Shift)是指当移动台以恒定的速率沿某一方向移动时,由于传播路程差的原因,会造成相位和频率的变化,通常将这种变化称为多普勒频偏。 通信协议中,会事先规定收发端的载波频率,比如发送端的载波频率是fc,若接收端采用相干解调,接收端的本原振荡器也会产生频率fc的载波。 上面我用的“到达接收端信号”这个词语,可能不是特别准确,我想表达的是接收端实际收到的信号,你结合多普勒频偏便可以理解了。 但是多普勒频偏 对于接收端来说,接收端认为收到的信号频率是 那你可能忍不住会问了,接收机就是不纠正多普勒频偏会带来什么后果呢?(这问题我想了也特别久) 后果便是:星座图的旋转,这将对接收端的解调和判决造成非常大的困扰。 思考几秒钟,为什么? 一个复信号,对其乘以
以QPSK为例,星座图将不是集中在4个点,而是随着时间不同,旋转角度不同,因此星座图会散。 那采用非相干解调,不就行了吗? 无论对于相干解调还是非相干解调都是要估计多普勒频偏的,原因同样是星座图的旋转。当然,这也与非相干解调算法的频偏容忍范围有关。非相干解调的MATLAB实现,我将在第六章解调算法中写。 既然上面已经说到了锁相环,我自己本科时候学习了《高频电子线路》课程,知道了模拟锁相环电路的工作原理,那到底在数字系统是如何实现锁相环的呢? 我在《数字锁相环的MATLAB实现》提供了初始版本的代码,后面我会将其应用于有多普勒频偏的2PSK相干解调。 二、锁相环经典书籍与材料在讲解锁相环MATLAB代码实现之前,我先列举一下我所知道的锁相环经典书籍: 1、Gardner的《锁相环技术》,英文名是《Phaselock Techniques》,锁相环领域世界权威级教科书 2、西电出版社,郑继禹、张厥盛的《锁相技术》 3、郑继禹的《同步理论与技术》 以上三本书我都没完整看过,但遇到问题时,常翻阅。接下来说说我看过的材料: 1、Tsui《Fundamentals of Global Positioning System Receivers》的第8章,中文版本的西电杨俊、武奇生《GPS基本原理及其仿真》第6章与前者内容将近一致。 2、CSDN上《二阶数字锁相环仿真(内附MATLAB代码)》,也是一份非常不错的材料。 3、杜勇的《锁相环技术原理及FPGA实现》,这书的写作形式是博客,娓娓道来,总是能把我心中想问的问号说出来,非常不错。 4、蔡凡博士的博士毕业论文《卫星定时接收机的关键技术研究》,知网上可以下载,关于捕获和跟踪的内容比较全,需慢慢消化。 以上材料中对锁相环的原理讲解不错,均缺少MATLAB代码实现。 我现在想通信问题,会常想怎么在代码中实现。结合蔡凡博士的微信公众号“通信工程师专辑”有MATLAB代码,我将思考明白的原理和代码讲解如下。 《Fundamentals of Global Positioning System Receivers》的第8章,锁相环电路包括三部分:鉴相器、环路滤波器和压控振荡器。 经典的锁相环时域和s域图如下: ![]()
在这里一定要注意的是,实际在用鉴相器时, 鉴相器的类型有很多种,之后结合代码讲解的时候会说到。 ![]() 压控振荡器(VCO),顾名思义,是用电压来控制振荡器输出信号的相位,有:
从图2中可以得出:
由以上三个式子,可以化简得到下面:
以上出现的“ 那我们怎么来衡量一个锁相环的工作性能好不好呢?一般会用三类信号对锁相环进行测试: (1) 相位阶跃信号: (2)频率阶跃信号: (3)频率斜升信号: ![]() 从图3可以看出,对于频率阶跃信号来说,一阶环的稳态误差不为0,因此一般不用一阶环路。三阶环路的复杂性比较高,不太好设计(我还没试过),所以综合来看,二阶环路用的比较多。 ![]() (这是郑继禹、张厥盛的《锁相技术》书籍中的图片,对于阶和型的命名,这张是正确的,读者明白就好了。)
由于RC积分滤波器、无源比例积分滤波器对于频率阶跃信号来说,稳态误差也不为0,因此常采用理想二阶环。 上面两图中出现了“阶”与“型”,这两个字是什么意思呢? “阶”是环路开环传递函数总极点的个数,“型”在原点的极点个数。 先记住:决定环路稳态相差的不是环路开环传递函数总极点的个数——阶,而是在原点处的极点个数——型。 本文后面的代码实现,都将以理想二阶环路为例。 《Fundamentals of Global Positioning System Receivers》的第8章说到二阶环路时,一上来就写:
我当时还想了想为什么? 然后看到杜勇的《锁相环技术原理及FPGA实现》及郑继禹、张厥盛的《锁相技术》,里面均详细介绍了RC积分滤波器,无源比例积分滤波器,理想二阶环的区别。因此,我们暂且先记住以上提到的部分结论即可。 有了
其中 环路噪声带宽如下:
这个Bn在锁相环的参数设置中,是非常重要的一个量。 看了这么久公式,我们可能已经一脸懵逼了,甚至有点困倦了,回过头去不经思考:我们到底在干吗来着??? 我们是要做锁相环的MATLAB代码实现,既然要实现数字系统,便就需要从连续域转到离散域。 那怎么从s域转到z域呢? 在本科的《数字信号处理》课程中,我们学习过IIR和FIR数字滤波器的设计方法,也伴随着有一些经典问题,比如IIR和FIR滤波器的区别?设计IIR滤波器,一般会讲脉冲响应不变法和双极性变换法,这两者的优缺点有哪些? 以上提到的问题,请读者思考几秒?(然后复习一下) 双极性变换法从s域到z域的映射公式如下:
其中
所以环路滤波器等效如下: ![]() 模拟电路中的压控振荡器,在数字中用NCO(数字频率合成器)代替,这是为什么呢? ![]() ![]() 注意到图片里面7-27,数字域NCO相当于相位累加器,代码实现中也可以观察到累加的过程。 有了 ![]() ![]() ![]() ![]() 假设你已经认真阅读过上面的公式后,为什么大概率还是没有写出可以实现的MATLAB代码呢? 这是由于z变换后,具体的程序是采用迭代来实现。 因此,我们需要将之前的表达式转换成迭代式子,方可让程序进行进行计算。 我将结合图与公式,将以上提到的材料转化成迭代表达式,便是我的一点点贡献了。 环路滤波器的z变换图上图所示,假设鉴相器的输入是
由材料中已经给出的N(Z)公式:
转化到时域,有: 即 令 以上这一段代码,是锁相环MATLAB代码的核心,后面都将以这段代码为基础进行仿真。 结合上面已经计算出来的:
其中
![]() 在上面的代码中,可以调整不同的等效噪声带宽 忍不住好奇问,那为什么 先来理解一下“锁相环为什么能跟踪相位?” ![]() ![]() ![]() 继续来说,为什么 ![]() 相位裕度和增益裕度,伯德图等相关概念,本科的《模拟电子线路》,也叫《低频电子线路》讲到过,请读者自行百度或者复习之前课本哦,这就不展开说啦。 《锁相环技术原理及FPGA实现》中讲到:工程上为确保环路稳定,要求增益裕度大于等于6dB,相位裕度30度到60度。 那么 ![]() 图片中的 上面的锁相环核心代码中,只用到了
因此,调整噪声带宽Bn便是相当于调整 上面讲到了NCO是相位累加器的作用,下面从相位误差来看,锁相环是如何锁相的。 ![]() ![]() 可以看到锁相环已经能够顺利对多普勒频偏进行补偿,产生同频同相的载波。 解释一下常见的一段代码: %%%%%%为了看到频差 if(k>200) &&(k |
CopyRight 2018-2019 实验室设备网 版权所有 |