拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

两台 P201Pro/PlutoSDR 构成 QPSK 无线收发链路|软件无线电接收端基础知识(2)--从混乱星座到QPSK点簇-Costas Loop载波同步实测

两台 P201Pro/PlutoSDR 构成 QPSK 无线收发链路|软件无线电接收端基础知识(2)--从混乱星座到QPSK点簇-Costas Loop载波同步实测 从混乱星座到 QPSK 点簇GNU Radio Costas Loop 载波同步实测本文从 GNU Radio 的真实接收结果出发匹配滤波后的星座为什么仍然混乱Gardner 为什么先把它整理成旋转圆环Costas Loop 又怎样让圆环停下来重新显现为 QPSK 四个点簇前言信号收到了为什么星座图还是乱的发射端和接收端使用各自独立的参考时钟即使设置了相同的载波频率实际本振之间仍然会有微小频差。这个频差在接收基带中表现为载波频率偏移Carrier Frequency OffsetCFO它会让 QPSK 星座随时间持续旋转。但在真实 GNU Radio 接收机中我们最先看到的通常还不是一个漂亮的旋转圆环而是一幅相当混乱的星座图。一、实验环境与接收参数发送端的模块信息参照首先从[[Gnuradio中数字调制一般方法]]这开始我们在这文章中写了一个一般的调制方法我们现在用这个来作为发射端的信号后面解调端就是来解这个信号。简单抽象如下运行效果为为了观察信号进入接收机后的变化先搭建一条最小接收链路运行后我们确实能从频谱中看到接收到的 QPSK 信号时域也出现了连续变化的 I/Q 波形然而星座图并不是理想的四个点而是一片带有过渡轨迹的混乱图形。这说明接收到信号不等于已经能够恢复符号。接收端还需要回答两个问题每个符号应该在什么时刻采样采样得到的星座为什么还在旋转它们分别对应符号同步和载波同步。本文的主角就是完成载波同步的 Costas Loop。本文使用两台 P201Pro/PlutoSDR 构成 QPSK 无线收发链路一台发射另一台接收。大致架构如下实验环境如下其中QPSK 每个符号携带 2 bit因此理论码率为二、匹配滤波以后我们看到了什么2.1 匹配滤波器的作用发射端使用根升余弦RRC滤波器完成脉冲成形接收端则使用相同参数的 RRC 作为匹配滤波器匹配滤波器的主要作用是在最佳采样时刻最大化信噪比并与发射端的成形滤波器共同形成接近升余弦的整体响应。关于脉冲成形、滤波器延迟和幅度归一化前文 [匹配滤波器] 已经介绍过本文不再展开。需要注意的是匹配滤波器只完成滤波输出仍然保持4 SPS。它不会自动告诉接收机“四个采样点中的哪一个才是符号中心”。三、为什么本文先做符号同步3.1 符号同步先解决“什么时候采样”在当前接收链中我们使用 Gardner Symbol SyncGardner 是一种非判决导向的定时误差检测方法。它不需要提前知道当前样本属于哪个 QPSK 符号因此即使载波尚未完全同步、星座仍在旋转它也可以先寻找符号的最佳采样时刻。Gardner完成两件事调整采样相位使输出尽量落在每个符号的中心将输入从 4 SPS 转换为 1 SPS。3.2 从混乱星座到旋转圆环当过渡采样点被排除每个输出样本都更接近真实的 QPSK 符号。此时载波频偏没有消失但星座的幅度结构已经清楚得多。于是我们看到了一种非常有辨识度的中间状态旋转圆环。这个圆环说明最佳符号采样点已经基本被提取QPSK符号的幅度开始形成稳定结构但符号相位仍随时间持续变化因此还不能稳定地按四个象限进行判决。这也是本文将 Symbol Sync 放在 Costas Loop 前面的原因先把正确的符号样本挑出来才能清楚观察 Costas 如何把圆环收敛成点簇。这里讨论的是本文采用的 Gardner 接收链和调试顺序并不是所有接收机必须遵守的绝对规则。若使用判决导向的 Mueller–Müller 定时同步或采用其他载波捕获结构模块顺序可能不同。四、从旋转圆环引出CFO为什么最佳采样点已经找到了QPSK仍然不是四个点在前文 [[发射端基础知识--晶振与频率合成6|晶振与频率合成6]] 中已经看到发射设备和接收设备具有各自独立的参考时钟。两边本振存在微小频差时下变频后的基带信号会留下残余CFO。符号同步后的接收信号可以简化表示为其中发送的 QPSK 符号载波频率偏移初始相位偏移噪声。相邻符号之间会多出一小段相位单个符号多转一点似乎并不明显但相位误差会随符号序号不断累积。观察时间足够长时原来的四个QPSK点沿单位圆不断转动最终在星座图上叠加成圆环。要让圆环重新变成四个点簇接收机必须估计这项持续增长的旋转相位并对信号进行反向旋转。这就是载波同步也是 Costas Loop 的任务。五、Costas Loop怎样让圆环停下来Costas Loop可以理解为一个不断测量残余相位误差、再反向修正的反馈环路它的校正过程可以写成其中 是Costas估计的载波相位。鉴相器判断当前点相对理想QPSK方向偏了多少环路滤波器平滑误差并持续更新频率和相位估计NCO产生反方向旋转将接收星座转回来。当估计的旋转速度跟上真实CFO时持续增长的相位被抵消星座不再转圈QPSK的四个点簇重新显现出来。六、GNU Radio实测圆环怎样变成四个点簇完整接收链如下前级增益、粗频偏处理和Symbol Sync已经完成基本调试本文只关注Costas Loop前后的变化。6.1 Costas Loop之前旋转圆环Costas前的星座已经不再是一片完全无结构的散点。Symbol Sync提取出的符号样本集中在一个较明确的半径附近但整个星座仍然持续旋转长时间显示后形成较宽圆环。此时定时同步已经发挥作用但载波相位仍未恢复。6.2 Costas Loop参数本文采用GNU Radio的QPSK Costas LoopOrder4对应QPSK的四重旋转对称性。Loop Bandwidth决定环路以多快的速度追踪相位变化也决定锁定后对噪声的平滑程度。6.3 打开Costas Loop恢复四个点簇打开Costas后星座变化非常直观旋转圆环 → 环逐渐收缩 → 四个象限结构出现 → 形成QPSK四个点簇圆环消失说明持续相位旋转已经被抑制四个点簇重新出现说明Costas已经恢复了QPSK载波参考。真实硬件中的点簇不会像理想仿真那样成为四个数学点。热噪声、残余相位误差、定时误差和射频链路非理想都会使点簇具有一定宽度。但“圆环变成四簇”已经清楚证明Costas Loop完成了基本载波同步。MATLAB把这三个阶段放在同一坐标尺度下可以更清楚地看到结构变化匹配滤波、符号同步和Costas载波同步后的星座变化。MATLAB采用已知残余CFO构造理想化对照GNU Radio实测图将在正文前述位置补充。七、Loop Bandwidth究竟控制什么在GNU Radio的Costas Loop中最直接的调节参数是 Loop Bandwidth。直观地说它决定Costas愿意以多快的速度追踪输入相位带宽较小估计更平滑、抗噪声更好但捕获和跟踪较慢带宽较大能够更快追踪CFO和相位变化但也会把更多噪声带进环路带宽适中在捕获速度和稳态点簇宽度之间取得折中。7.1 GRC暴露的参数和环路理论怎样对应GNU Radio 3.10的Costas Loop继承了一个通用二阶control_loop。GRC界面没有把所有理论参数都直接暴露出来而是只让我们设置最常用的三项这里的Order4不是说控制环本身是四阶环路。它只表示使用适合QPSK的四重对称鉴相器后面的频率与相位跟踪仍然是二阶环路。源码内部还有一些没有在GRC参数区直接显示的设置当用户改变Loop Bandwidth时源码按照下面的关系自动生成比例增益和积分增益随后每处理一个输入符号环路状态更新为主要完成较快的相位修正不断累积逐渐建立频率估计。因此增大Loop Bandwidth会同时增大和而在带宽较小时近似随增长这就是大带宽捕获频偏更快的源码原因。对本文使用的Loop Bandwidth0.015代入GNU Radio默认阻尼系数可得GNU Radio 3.10中GRC参数、QPSK鉴相器、二阶control_loop和NCO之间的对应关系。下方曲线给出Loop Bandwidth如何转化为、。源码还提供三个可选输出它们非常适合调试以上结构来自GNU Radio官方maint-3.10分支的[Costas逐样点实现]、[公共control_loop]和[GRC模块定义]。7.2 Loop Bandwidth对应哪个采样率本文的Costas Loop位于Symbol Sync之后此时输入已经从4 SPS变为1 SPS因此Loop Bandwidth相对于归一化而不是相对于前级的2.084 MS/s。为了帮助理解可以使用下面的频率尺度这里的用于建立直觉不等同于严格的3 dB噪声带宽。7.3 同一输入只改变Loop Bandwidth为了只观察Loop Bandwidth的作用MATLAB使用完全相同的QPSK符号序列521 kSym/s符号率600 Hz残余CFO32°初始相位16 dB信噪比。只将Loop Bandwidth设置为0.005 / 0.010 / 0.015 / 0.020不同Loop Bandwidth下的频率估计与残余相位误差。带宽增大后环路响应更快但锁定后的估计波动也更加明显上图的第一部分观察频率估计是否追上真实残余CFO第二部分观察相位误差是否进入稳定范围。两张曲线合起来才构成完整的“锁定”判断。7.4 捕获速度与稳态噪声的折中Loop Bandwidth的核心折中。左图用“频率估计首次达到真实CFO的90%”衡量响应速度右图表示锁定后的相位误差和频率估计波动。首次达到90%不等于已经稳定锁定大带宽还可能出现更明显的过冲。这也解释了GNU Radio调试中的一个典型现象增大Loop Bandwidth时圆环可能更快收成四簇但继续增大四簇未必更紧反而可能出现更明显的相位方向扩散。本文使用的0.015并不是一个脱离信号速率的固定答案。它是在当前符号率、残余CFO和信噪比条件下对捕获速度与稳态星座质量进行折中的结果。这里需要特别避免一个误解Loop Bandwidth并不直接等于一个固定的“最大可纠正频偏”。捕获能力还受到鉴相器、阻尼系数、初始相位、信噪比和允许锁定时间影响。八、总结从PlutoSDR Source输出的真实IQ信号开始接收星座经历了三个阶段符号同步回答的是应该在什么时候观察符号载波同步回答的是观察到的符号为什么还在旋转而GNU Radio中的Loop Bandwidth则决定Costas环如何在“更快追上旋转”和“锁定后更加平稳”之间进行选择。最终Costas Loop最直观的作用可以概括成一句话让正在旋转的QPSK星座停下来把圆环重新变成可以判决的四个点簇。
返回列表