数字基带之相移键控PSK

1 相移键控定义

相移键控是指用载波的相移位变化来传递信号,不改变载波的幅度和频率,可用下面的公式表示。

S_{k}(t)=A(cosw_{0}t+\Theta _{k})=A(cos\Theta _{k}cosw_{0}t-sin\Theta _{k}sinw_{0}t)

 A是载波的幅度,w_{0}是载波的角频率,w_{0}t+\Theta _{k}是载波的瞬时相位,\Theta _{k}是载波的初始相位。如果需要调制的信号为1bit的二进制数,则k=0和1两种情况,\Theta _{0}表示0相位,\Theta _{1}表示\pi相位。

其实相移键控可以用MPSK表示,M代表了k的取值范围,即k的取值范围是0,1,2,……,M-1,M为2的n次幂,n为非零整数,表示输入码元的bit数,对应的PSK为MPSK。如果输入码元为1bit,则对应2PSK,如果输入码元为2bit,则对应为4PSK,以此类推。又可以理解为将2\pi等分成M个等份,每个等份的\Theta =\frac{2\pi }{M}=\frac{2\pi }{2^{n}},如果初相\Theta _{0}为0,则\Theta _{1}=\Theta\Theta _{2}=2\Theta;如果\Theta _{0}=\Theta,则\Theta _{1}=2\Theta。基础为2PSK,常用到的有4PSK,4PSK又称QPSK。下面简单介绍一下2PSK和QPSK。

2 2PSK

2PSK中2表示的是将2\pi分成相等的两份,即相位0和相位\pi,发送信号0时对应的相位为0,发送1时对应的相位为\pi,则2PSK的信号表示如下所示:

S_{0}(t)=A(cosw_{0}t+\Theta _{0})=A(cosw_{0}t)

S_{1}(t)=A(cosw_{0}t+\Theta _{1})=A(cosw_{0}t+\pi )=-A(cosw_{0}t)

同一时刻只能表示1bit数据,要么是0,要么是1。如果有一组待发送的码元均是1bit为0 1 1 0 0 0 1 1,则对应的2PSK调制后的波形如下图所示:

1

注:这里输入的码元s(t)是二进制不归零双极性码,关于不同码型的介绍在后续笔记中介绍。

2PSK的调制方式可以用以下两种方式,第一种可以理解为相干调制,第二种方法为键控法。

相干调制

键控法

2PSK的解调方法如下图所示,这也叫做相干解调。

由于在解调过程中需要用到与调制时相同的载波,即指载波的频率和相位相同。由于2PSK的载波恢复存在180^{o}的相位模糊问题,会导致解调出来的信号存在“倒\pi现象”。为解决“倒\pi现象”提出了DPSK(差分相移键控),这个在后续笔记中介绍。

关于相位模糊的介绍详见后续笔记。

关于载波恢复(也可叫做载波提取)的介绍也在后面整理的笔记中介绍。

3 QPSK

QPSK又是4PSK,按照定义来说是将2\pi等分成4份,则包含\Theta _{0}\Theta _{1}\Theta _{2}\Theta _{3}四个相位,这四个相位可以取0,\frac{\pi }{2}\pi\frac{3\pi }{2},也可以取\frac{\pi }{4}\frac{3\pi }{4}\frac{5\pi }{4}\frac{7\pi }{4},当然也可以取其它的,需要满足相邻相位差为\frac{\pi }{2}。QPSK对应的是2bit的码元,如00,10,11,01这样的码元序列。按0,\frac{\pi }{2}\pi\frac{3\pi }{2}相位表示,则他们对应的信号表示如下所示:

S_{00}(t)=A(cosw_{0}t)

S_{01}(t)=A(cosw_{0}t+\frac{\pi }{2})=-Asinw_{0}t

S_{10}(t)=A(cosw_{0}t+\pi )=-A(cosw_{0}t)

S_{11}(t)=A(cosw_{0}t+\frac{3\pi }{2})=Asinw_{0}t

波形表示如下所示:

以上的码型对应的相位是按照常规的码型方式来处理的,当然也可以按照格雷码的形式来调制,也就是00,01,11,10分别对应了0,\frac{\pi }{2}\pi\frac{3\pi }{2}相位(这样的对应关系不是固定的,只要满足相邻相位差为\frac{\pi }{2}即可)。采用格雷码的方式可以使总的误比特率降低(后面有时间再补充)。

QPSK调制框图如下所示:

上面的串并转换只是将串行输入的1bit信号转换成并行的两bit,转换后的两bit的时间长度和串行两bit的时间长度相等,即并行后的码元速率为串行码元的一半,如下图所示,每个序号均表示1bit信号。输入的1bit信号为二进制不归零双极性码,普通二进制码对应的不归零双极性码如下:

二进制码元1——>双极性码+1

二进制码元0——>双极性码-1

如果要实现将串行输入信号按格雷码进行调制,则可以在串行转换模块后加一个码型变换模块实现将普通二进制码转换成格雷码,结构框图如下图所示。

QPSK解调框图如下所示:

4 四分之π相移QPSK

该调制方式是由两个相差\frac{\pi}{4}的QPSK交替产生的,下图给出两个相差\frac{\pi}{4}的QPSK的矢量图和星座图,如果第一个图为第一个、第三个码元的星座图,第二个图为第二个、第四个码元的星座图,根据码元顺序以此类推,则可以给出码元11 11 01 01 10 10 00 10 11对应的码元相位为:\pi\pi+\frac{\pi}{4}\frac{3\pi}{2}\frac{3\pi}{2}+\frac{\pi}{4}\frac{\pi}{2}\frac{\pi}{2}+\frac{\pi}{4}、0、\frac{\pi}{2}+\frac{\pi}{4}\pi

 两个相差\frac{\pi}{4}的QPSK的矢量图

         

两个相差\frac{\pi}{4}的QPSK的星座图

5 PSK的隐含条件和几点理解

(1)每个码元中应该包含整数个载波周期,这样初始相位相同的相邻码元的瞬时相位才会在码元边界处连续。因为在码元边界处相位不连续会导致信号的频谱展宽,包络出现起伏。(这个后面补充波形)

(2)根据MPSK的表达式S_{k}(t)=A(cosw_{0}t+\Theta _{k})=A(cos\Theta _{k}cosw_{0}t-sin\Theta _{k}sinw_{0}t),令A=1,MPSK的调制框图都可以用下图表示,这里的a支路代表的是I路信号,即cos\Theta _{k},b支路代表的是Q路信号,即sin\Theta _{k}

(3)无论输入到调制电路的信号经过了什么样的处理,它始终都是0和1组成的二进制码流,无论这个二进制码流是否需要进行串并转换或者码型变换,都不能直接用于乘法电路和相干载波进行运算,用QPSK举例说明如下(按常规二进制码和相位0,\frac{\pi }{2}\pi\frac{3\pi }{2}的对应关系):

输入码流a支路b支路错误的s(t)正确的s(t)
00000cosw_{0}t
0101-sinw_{0}tsinw_{0}t
1010cosw_{0}t-cosw_{0}t
1111cosw_{0}t-sinw_{0}t-sinw_{0}t

所以a/b支路不是直接将输入bit流乘以载波,况且非QPSK时直接将bit流分到a/b支路是有问题的。正确的理解是:需要将输入bit流转换成相应的I/Q信号后再和载波相乘相加输出。

(4)二进制bit流对应的I/Q信号转换理论上可以从PSK公式上找到,下面用QPSK和8PSK作说明:

下表为QPSK,对应的相位矢量如下图: 

输入码元\Theta _{k}IQ
00010
01\frac{\pi}{2}0-1
10\pi-10
11\frac{3\pi}{2}01

 下表为8PSK,对应相位矢量如下图所示:

输入码元\Theta _{k}IQ
000010
001\frac{\pi}{4}\frac{sqrt(2)}{2}\frac{sqrt(2)}{2}
010\frac{2\pi}{4}01
011\frac{3\pi}{4}-\frac{sqrt(2)}{2}\frac{sqrt(2)}{2}
100\frac{4\pi}{4}-10
101\frac{5\pi}{4}-\frac{sqrt(2)}{2}-\frac{sqrt(2)}{2}
110\frac{6\pi}{4}0-1
111\frac{7\pi}{4}\frac{sqrt(2)}{2}-\frac{sqrt(2)}{2}

这点里提到的都是理论推理,但在实际数字硬件电路里怎么实现的还没搞明白,后续再补充吧……

笔记先整理在这里,后续再继续补充。欢迎各大网友发现笔记里理解不对的地方,帮忙批评指正,先谢过了……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1541601.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

链表(单向不带头非循环)

声明 链表题考的都是单向不带头非循环,所以在本专栏中只介绍这一种结构,实际中链表的结构非常多样,组合起来就有8种链表结构。 链表的实现 创建一个链表 注意:此处简单粗暴创建的链表只是为了初学者好上手。 public class MyS…

Spring(三)Spring事件+计划任务+条件注解+SpringAware

Application Event 事件 当一个Bean处理完一个任务之后,希望另一个Bean知道并做出相应的处理,这时需要让另外一个Bean监听当前Bean所发送的事件 自定义事件,集成ApplicationEvent自定义事件监听器,实现ApplicationListener使用容…

S-Clustr-Simple 飞机大战:骇入现实的建筑灯光游戏

项目地址:https://github.com/MartinxMax/S-Clustr/releases Video https://www.youtube.com/watch?vr3JIZY1olro 飞机大战 这是一个影子集群的游戏插件,可以将游戏画面映射到现实的设备,允许恶意控制来完成游戏。亦或者设备部署在某建筑物中,来控制…

电脑硬件-机械硬盘

简介 机械硬盘是电脑的主要存储媒介之一,通常用于存储一些文件资料或者学习视频笔记等比较大的内容。 结构 采用磁盘存储数据,使用温彻斯特的结构,特有四个特点: 1.磁头、盘片和运动机构安装在一个密封的腔体内。 2.盘片告诉旋…

AI大模型算法工程师经典面试题————为什么 Bert 的三个 Embedding 可以进行相加?

大模型算法工程师经典面试题————为什么 Bert 的三个 Embedding 可以进行相加? 为什么 Bert 的三个 Embedding 可以进行相加? Token Embedding、Segment Embedding、Position Embedding的意义我已经清楚了,但是这三个向量为什么可以相加…

数据中台系统产品原型RP原型Axure高保真交互原型 源文件分享

在数字化时代,数据已经成为企业最宝贵的资产之一。为了更好地管理和利用这些数据,这边为大家整理了一套数据中台Axure高保真原型。这套原型致力于为企业提供全方位的数据服务,助力企业实现数据驱动的创新发展。 下载及预览地址:h…

MATLAB智能优化算法-学习笔记(3)——大规模邻域搜索算法求解旅行商问题【过程+代码】

一、问题描述 旅行商问题(TSP, Traveling Salesman Problem)是组合优化中的经典问题之一。给定一组城市和每对城市之间的距离,要求找到一条最短的路径,使旅行商从某个城市出发,访问每个城市一次并最终回到出发点。TSP问题广泛应用于物流配送、工厂调度、芯片制造等领域。…

1、等保测评介绍

数据来源:等保测评基础知识学习(1.02.0)2024最新版_哔哩哔哩_bilibili 等级保护的定义: 对国家秘密信息、法人或其他组织及公民专有信息以及公开信息,按照其重要程度对信息系统实施分等级安全保护。这包括对使用的安全产品进行等级管理&…

基于协同过滤算法的商品推荐系统

系统展示 用户前台界面 管理员后台界面 商家后台界面 系统背景 随着互联网技术的飞速发展,用户每天面临的信息量呈爆炸式增长,如何有效地筛选出用户感兴趣的内容成为一大挑战。在此背景下,基于协同过滤算法的商品推荐系统应运而生。该系统通过…

AI Agent,将如何打破大模型的应用边界?

大语言模型的浪潮,推进了AlAgent落地 上个世纪50年代,阿兰图灵首次将"高度智能有机体"的概念提出。经过半个多世纪的发展,终于在2023年进入了一个新的高潮,并于今年进入了爆发阶段。 自2022年11月30日chatGPT发布以来…

linux下共享内存的3种使用方式

进程是资源封装的单位,内存就是进程所封装的资源的一种。一般情况下,进程间的内存是相互隔离的,也就是说一个进程不能访问另一个进程的内存。如果一个进程想要访问另一个进程的内存,那么必须要进过内核这个桥梁,这就是…

工业机器视觉中的常见需求

目录 学习目的 熟系 Halcon的原因 专业性强: 高性能: 丰富的功能库 学习 OpenCV 的原因 开源与免费: 灵活性与可扩展性: 广泛的应用: 学习资源丰富: 总结 学习背景 工业视觉检测中常见分类 一、定…

【我的 PWN 学习手札】tcache stash with fastbin double free —— tcache key 绕过

参考看雪课程:PWN 探索篇 前言 tcache key 的引入使得 tcache dup 利用出现了困难。除了简单利用 UAF 覆写 key 或者House Of Karui 之外,还可以利用 ptmalloc 中的其他机制进行绕过。 一、Tcache Stash with Fastbin Double Free 之前是 double free …

实景三维+耕地保护:构建耕地资源管理的全闭环新模式

在耕地资源日益珍贵的今天,如何高效、精准地实施耕地保护,成为了我国农业可持续发展与生态文明建设的关键课题。“实景三维耕地保护”的创新模式,能够为这一挑战提供突破性的解决方案,打造一个从前端监测到后端管理的全闭环耕地保…

【Delphi】Delphi 中的 LiveBindings 使用场景与概念

LiveBindings 是 Delphi 提供的一种数据绑定机制,用于将 UI 控件与数据源(如数据库字段、对象属性等)进行动态连接。LiveBindings 允许开发人员通过可视化的方式绑定数据,省去了大量的手动编写代码,使 UI 更新和数据同…

大数据实验2.Hadoop 集群搭建(单机/伪分布式/分布式)

实验二: Hadoop安装和使用 一、实验目的 实现hadoop的环境搭建和安装Hadoop的简单使用; 二、实验平台 操作系统:Linux(建议Ubuntu16.04或者18.04);Hadoop版本:3.1.3;JDK版本&…

Linux命令:用于创建新的用户组的命令行工具groupadd 详解

目录 一、概述 二、组标识符GID 1、定义 (1)标识符 (2)与UID的关系 2、GID的作用 (1)用户组管理 (2)文件权限控制 (3)用户权限管理 (4&…

爱心代码(简单免费可直接运行)

代码展示&#xff08;可私信了解更多&#xff09; #include<stdio.h > #include<stdlib.h > #include<windows.h> int main(int argc, char* argv[]) {float x, y, a;for (y 1.5; y > -1.5; y - 0.1) {for (x -1.5; x < 1.5; x 0.05){a x * x y…

61. 旋转链表【 力扣(LeetCode) 】

零、原题链接 61. 旋转链表 一、题目描述 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 二、测试用例 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2 输出&#xff1a;[4,5,1,2,3]示例 2&#xff1a; 输入…

ftrace - 几种tracer的打印例子

ftrace - Function Tracer — The Linux Kernel documentation【原创】Ftrace使用及实现机制 - 沐多 - 博客园 (cnblogs.com) latency format nop tracer和function tracer下&#xff0c;latency format的时间戳是相对开始trace的时间&#xff0c;non-latency format的时间戳是…