云计算百科
云计算领域专业知识百科平台

QPSK开环频偏估计:4次方+FFT频偏检测与校正原理及Matlab仿真

QPSK开环频偏估计:4次方+FFT频偏检测与校正原理及Matlab仿真

摘要

QPSK通信系统中,晶振偏差、多普勒效应会引入载波频偏。频偏较大时Costas闭环载波同步会超出捕获范围,出现无法锁相、星座持续旋转问题。本文讲解基于4次方运算+FFT的开环频偏估计算法,对定时同步后的基带复信号做4次方运算消除调制信息,通过FFT频谱峰值搜索得到粗频偏估计;利用估计值对接收信号完成预校正,将残余频偏压缩到Costas环捕获范围内,再交由闭环环路做精细相位跟踪。算法可直接接入现有QPSK接收机链路,附带完整Matlab仿真实现。

一、前言

前面系列文章完成QPSK接收机:定时同步、载波同步、集中导频消除相位模糊。

但Costas环属于闭环跟踪,优点是噪声条件下相位跟踪精度高,但存在固有短板:捕获范围有限。当实际载波频偏大于环路最大捕获频偏时,环路无法入锁,星座一直旋转,解调完全失效。

工程接收机常用组合架构:

开环粗频偏估计 → 频偏预校正 → Costas闭环精细载波同步

开环算法负责把大频偏压缩变小,闭环环路负责高精度相位跟踪。针对QPSK调制,主流方案就是4次方+FFT频偏估计。BPSK使用2次方,M‑PSK通用M次方。

二、数学原理

经过定时同步采样之后的复基带接收信号:

r(k)=A⋅s(k)⋅ej(2πΔf⋅kTs+θ)+n(k)r(k)=A\\cdot s(k)\\cdot e^{j(2\\pi\\Delta f \\cdot k T_s+\\theta)}+n(k)r(k)=As(k)ej(2πΔfkTs+θ)+n(k)

  • s(k)s(k)s(k):QPSK发送符号,取值{±1±j}\\{\\pm1\\pm j\\}{±1±j}
  • Δf\\Delta fΔf:待估计载波频偏
  • TsT_sTs:符号周期
  • θ\\thetaθ:初始载波相偏
  • n(k)n(k)n(k):复高斯噪声

QPSK符号满足:s4(k)=(±1±j)4=−4s^4(k)=\\big(\\pm1\\pm j\\big)^4=-4s4(k)=(±1±j)4=4,符号信息经过4次方运算之后变成常数,调制信息被消除。

对接收信号做4次方:

r4(k)=A4⋅s4(k)⋅ej4(2πΔf⋅kTs+θ)+n′(k)=C⋅ej(2π⋅4Δf⋅kTs+4θ)+n′(k) r^4(k)=A^4 \\cdot s^4(k) \\cdot e^{j4(2\\pi\\Delta f \\cdot k T_s+\\theta)}+n'(k) = C \\cdot e^{j\\left(2\\pi \\cdot 4\\Delta f \\cdot k T_s +4\\theta\\right)}+n'(k)r4(k)=A4s4(k)ej4(2πΔfkTs+θ)+n(k)=Cej(2πfkTs+4θ)+n(k)

关键现象:

  • 原始调制符号s(k)​s(k)​s(k)消失,变为常数C;
  • 频偏被放大4倍,频谱上出现单根谱线,频率位置等于4Δf4\\Delta ff
  • 相偏同时放大4倍;
  • 噪声项被放大。
  • r4(k)r^4(k)r4(k)做FFT,寻找频谱幅度最大值对应的频率点fpeakf_{peak}fpeak,则:

    Δf^=fpeak4\\hat{\\Delta f}= \\frac{f_{peak}}{4}Δf^=4fpeak

    即可得到原始载波频偏的粗估计值。

    从上式的公式中可以看到,频偏估计的精度受FFT计算的最大值对应频率点fpeakf_{peak}fpeak影响,其受数据长度限制,存在栅栏效应。

    三、频偏校正

    得到频偏估计Δf^\\hat{\\Delta f}Δf^之后,对原始接收基带信号做频偏补偿,乘以补偿旋转因子:

    rcomp(k)=r(k)⋅e−j⋅2πΔf^⋅kTsr_{\\text{comp}}(k)=r(k)\\cdot e^{-j\\cdot 2\\pi \\hat{\\Delta f}\\cdot k T_s}rcomp(k)=r(k)ej2πΔf^kTs

    经过校正之后,信号只剩下残余小频偏与固定相偏,残余频偏一般落入Costas环捕获范围,后续送入Costas环做精细相位跟踪。

    四、Matlab核心仿真代码

    完整代码放在下面链接了:
    https://download.csdn.net/download/wobiaosha2753/93394687

    %% 频偏估计加纠正
    N_fft = 512; % FFT点数
    r4 = rx_ds(1:N_fft).^4; % 取前N_fft点做4次方运算
    fft_r4 = fftshift(fft(r4,N_fft));
    [~,max_idx] = max(abs(fft_r4)); % 寻找频谱峰值位置
    % figure,plot(abs(fft_r4));
    % FFT频率轴
    f_axis = (N_fft/2:N_fft/21)/N_fft * data_rata;
    f4_peak = f_axis(max_idx);
    delta_f_hat = f4_peak / 4; % 恢复真实频偏估计值

    %频偏预校正
    k = 1:length(rx_ds);
    rx_post_fw = rx_ds .* exp(1i*2*pi*delta_f_hat*k/data_rata);

    五、仿真结果分析

    仿真环境为:符号速率1M的传输信号,信道过程中添加了50k频偏,

    无频偏纠正结果:

    请添加图片描述

    可以看到,频偏超过锁相环的跟踪范围后,锁相环实现,星座图一直旋转,解调失败。

    有频偏纠正结果:

    在这里插入图片描述

    可以看到,当前置的频偏纠正模块把较大频偏纠正后,细小频偏和相偏可通过锁相环跟踪。最终星座图正确。

    频偏估计误差:

    正模块把较大频偏纠正后,细小频偏和相偏可通过锁相环跟踪。最终星座图正确。

    频偏估计误差:

    在这里插入图片描述

    数学原理部分也已说明频偏估计的精度受FFT长度影响,本文仿真中设定使用512点FFT,分辨率为符号速率除以FFT长度即:1e6/512=1.9e3​1e6/512=1.9e3​1e6/512=1.9e3​,结果表示估计的频偏与真实频偏的误差小于1.9k/2。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » QPSK开环频偏估计:4次方+FFT频偏检测与校正原理及Matlab仿真
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!