前言

最近在研究MSK,重新翻了几本教材,又在网上看了不少资料,总是感觉get不到要点。教材吧,公式太多,一不小心就陷入了推导公式的汪洋大海,看不了多久就让你重温上学期间努力学习通信原理的梦魇之中,眼里虽然是熟悉的中国字却不知道在讲些什么。网上的资料又良莠不齐,有的突兀的冒出一堆公式,有的给出的代码质量太差。

本系列文章本着深入浅出的原则试图将MSK给大家梳理一遍,同时会给出相应的参考资料和matlab代码。第一部分是概述,本着科普的原则,尽量不写公式,多上图。


一、从三个角度理解MSK

我们比较熟悉的调制方式有BPSK、QPSK、2FSK, 这类调制实现简单,但是缺点也很明显:在符号转换时,相位的跳变会导致频谱扩展。最小移频键控  (Minimum Shift Keying,MSK)调制技术是恒包络连续相位调制技术的一种,它具有恒定的包络、连续的相位和信号频谱旁瓣衰减快等优点。

上中学的时候做数学题总是讲究一题多解,就是要从不同角度去理解同一个问题,加深对该问题问题的理解。为了加深对MSK的理解,本文也试图从三个方面入手去分析:

  • 从最简单的2FSK入手,将MSK理解为一种特殊的2FSK信号;
  • 从我们熟悉的BPSK、QPSK、O-QPSK来理解MSK;
  • 从CPM入手,将MSK理解为调制系数为0.5的CPM。

1.从2FSK到MSK

对于新事物的学习,人们总是更习惯从自己熟悉和了解的事物出发,因此本文就从简单易懂的2FSK入手来学习MSK。频移键控FSK是利用载波频率的变化来传递数字信息。在2FSK中,载波的频率随二进制基带信号在f1和f2两个频率点间变化,如下图所示:

图 1  FSK波形图

2FSK的缺点有:

为了克服上述缺点,对2FSK信号进行改进,发展出MSK信号。MSK信号是一种相位连续、包络恒定,并且占用带宽最小的二进制正交2FSK信号。

下面,我们就要开始对FSK进行改造。

第一步就是先让二进制信号的两种码元互相正交。对于2FSK,两种码元对应不同频率的正弦波。根据正交的定义,就是要让两种频率信号的乘积在一个符号周期内的积分为0。推导还是比较简单,感兴趣的同学可以直接看教材,这里我们直接给出结论:保证正交的2FSK信号,两个信号对应的频率差是1/2Tb的整数倍;为了使占用的带宽最小,那就令两个信号的频率差是1/2Tb 。大家可以参考下面这个图:

图 2  2FSK频率图

第二步就是产生连续相位的2FSK信号了。

如果用二进制数字信号控制电开关,分别接入两个载波振荡器之一,这样产生的2FSK信号在符号边界相位是不连续的。

图 3 相位不连续2FSK信号的产生

而使用双极性二进制信号对单一的载频振荡器进行调频,则可以得到相位连续的2FSK信号。

图 4  利用vco作调频器产生连续相位2FSK信号

这样通过对2FSK进行改进,我们就得到了相位连续、包络恒定,并且占用带宽最小的二进制正交2FSK信号,即MSK信号。

2.BPSKQPSKO-QPSKMSK

为了方便理解,我们直接看一个例子。

a) 假设我们要传输8比特的信息序列,经过BPSK调制我们得到8个符号[+1, +1, -1, -1, -1, +1, +1 , +1],每个符号的持续时间为T。

b) 同样的信息序列,我们采用QPSK的方式进行调制,偶数比特通过同相支路进行传输,奇数比特则通过正交支路进行传输。为了保持信息速率不变,同相/正交支路上的符号率变成了2T。

图 5 BPSK和QPSK

c) QPSK的一个变种叫Offset-QPSK(O-QPSK),就是在QPSK的基础上在正交支路上引入延迟T。我们知道,如果相邻码元波形的相位不连续会导致信号的频谱展宽,QPSK的相邻码元最坏会有180°的跳变。而O-QPSK的好处就在于相邻码元之间的跳变只有90°,相对较小的相位跳变会让波形的频谱看上去更干净些。另外采用格雷编码也可以约束QPSK的相邻码元相位变化只有90°,有兴趣的同学可以自行查阅相关资料。

d) 前面介绍了QPSK、OQPSK,我们关注相邻码元波形的相位的变化。那么有没有办法让相邻码元相位变化为0呢,研究发现,如果将OQPSK里的矩形成型脉冲变成正余弦型成型脉冲,那么相邻码元相位变化就为0,这就是最小频移键控MSK。

图 6 O-QPSK和MSK

最后我们给出MSK、O-QPSK和QPSK的波形图,可以看到MSK相邻码元相位变化是连续的,O-QPSK相邻码元相位变化是90°,而QPSK相邻码元相位变化是可能是180°,也有可能是90°。

这一部分没有推导,主要是为了形象的给出MSK与我们熟悉的QPSK,O-QPSK之间的关系,详细的公式推导以及配套的matlab代码会在下一节给出。

3. BPSKQPSKO-QPSK到MSK

前面我们说到理解复杂的新事物要从我们熟悉的事物出发,比如从2FSK的角度来理解MSK,从QPSK、O-QPSK理解MSK。如果为了解释一个新事物,我们要从先理解一个更加复杂的概念,这显然不符合我们的认知规律。正确的方法应该是我们了解MSK以后,再从MSK出发去理解CPM。因此对于CPM(Continus Phase Modulation,连续相位调制)到MSK这条线路就不做过多的解释(其实最关键的原因是我也不懂),我们只要知道MSK是为调制系数为0.5的CPM就好了。不过在这里还是简单和大家复习一下什么是调制系数。在调频系统中,调制系数(modulation index)是指频偏和信号带宽的比值。根据下图我们就可以清晰的知道msk的调制系数是0.5了。

参考文献

《通信原理》周炯槃

《通信原理》(樊昌信第7版)

《MSK and Offset QPSK Modulation》

《Minimum shift keyinga spectrally efficient modulation》pasupathy1979


总结

下一步我们将结合matlab代码讲述如何生成MSK调制信号。

带你快速入门MSK(一)相关推荐

  1. 带你快速入门MSK(二)

    1 利用调频器产生MSK信号 我们可以通过调制指数为0.5的压控振荡器来产生MSK信号,如下图所示: 其中{} 是取值为±1 的二进制序列,而 就是矩形脉冲波形. 很多同学看到公式 可能就蒙圈了,所以 ...

  2. 【效率】超详细!手把手带你快速入门 GitHub!

    作者:Peter     编辑:JackTian 来源:公众号「杰哥的IT之旅」 快速入门GitHub GitHub在程序开发领域家喻户晓,现在几乎整个互联网的开发者都将版本管理工具GitHub作为版 ...

  3. 带你快速入门AXI4总线--AXI4-Stream篇(1)----AXI4-Stream总线

    写在前面 随着对XILINX器件使用的深入,发现越来越多的IP都选配了AXI4的接口.这使得只要学会了AXI4总线的使用,基本上就能对XILINX IP的使用做到简单的上手.所以学会AXI4总线,对X ...

  4. 一文带你快速入门【哈希表】

    最近开始学习哈希表,为此特写一遍文章介绍一下哈希表,带大家快速入门哈希表

  5. 手把手带你快速入门超越GAN的Normalizing Flow

    手把手带你快速入门超越GAN的Normalizing Flow 作者:Aryansh Omray,微软数据科学工程师,Medium技术博主 机器学习领域的一个基本问题就是如何学习复杂数据的表征是机器学 ...

  6. 四篇文章带你快速入门Jetpck(中)之ViewModel,DataBinding

    文章目录 四篇文章带你快速入门Jetpck(中)之ViewModel,DataBinding Jetpack 官方推荐架构 ViewModel 添加依赖 创建ViewModel 初始化ViewMode ...

  7. 带你快速入门AXI4总线--AXI4-Full篇(3)----XILINX AXI4-Full接口IP源码仿真分析(Master接口)

    写在前面 接slave接口篇,本文继续打包一个AXI4-Full-Master接口的IP,学习下源码,再仿真看看波形. 带你快速入门AXI4总线--AXI4-Full篇(2)----XILINX AX ...

  8. 带你快速入门AXI4总线--AXI4-Full篇(1)----AXI4-Full总线

    写在前面 AXI4系列链接:带你快速入门AXI4总线--汇总篇(直达链接) 1.什么是AXI4-Full? AXI 表示 Advanced eXtensible Interface(高级可扩展接口), ...

  9. python快速编程入门教程-半小时带你快速入门Python编程,Python快速入门教程

    1,Introduction to Python (Python入门) 2,Python是什么? Python 官方网站的描述 Python is a programming language tha ...

最新文章

  1. UFT开发实例:QTP调用OutLook自动发送邮件
  2. 反演控制 matlab,基于matlab的反演程序
  3. VB 更换设置桌面背景图片函数
  4. layui的table常用方法
  5. Zookeeper及客户端的基本操作
  6. [core java学习笔记][第十一章异常断言日志调试]
  7. IC卡读写器的应用有哪些?
  8. 微软超融合私有云测试05-Hyper-V故障转移群集部署
  9. Win32 绘制RGB三原色图案
  10. 飞线(jump wire)
  11. C++ - Copy Elision
  12. 2019年的最新的最全的ava常见的面试题
  13. invalidate()和postInvalidate() 的区别及使用
  14. Linux下的常见指令以及权限理解(下)
  15. 100道SEO问题解答汇总
  16. c# 关键字:using
  17. 沙巴克服务器占用,传奇怎么设置传奇服务端沙巴克自动攻城
  18. asp.net 2.0控件开发电子书 下载
  19. 思维挑战12:一个萝卜一个坑-一维数组
  20. WorkNC合作普达盛加工生产压铸模具

热门文章

  1. linux无线网卡monitor模式,ubuntu下开启无线网卡的monitor mode
  2. JIT引擎触发RowHammer可行性研究
  3. 软件著作权 python代码少_软件著作权源代码咋么整理?复制粘贴?out了,直接使用python啦...
  4. 从华为事件看云形态发展
  5. 使input文本框不可编辑的3种方法
  6. 函数指针的声明和使用
  7. 微型计算机显卡坞介绍,【宏碁 Veriton N 4640G 服务器外观展示】接口|显卡坞|光驱坞_摘要频道_什么值得买...
  8. 【20考研】寒假复习时间表
  9. java中elements_Java Element.elements方法代碼示例
  10. 电脑运行速度慢的各种原因及解决方法