5G NR同步(1)——同步原理

UE和基站保持时间和频率的同步是两者相互传输数据的前提。UE通过检测基站发送的同步信号,来完成时间和频率的同步。本节主要介绍UE检测同步信号的基本原理,包括同步信号序列的产生原理、序列的自相关特性、同步信号调制方式以及如何检测出同步信号来获取时间同步。

1.5G NR 采用的同步序列

在无线通信中,往往采用相关同步法进行时间同步。常用的同步序列包括,最大长度序列(Maximum-Length Sequence,m序列)、Gold序列、Zadoff–Chu序列。

最大长度序列是长度为 的周期性二进制序列,其中n为产生m序列的生成多项式的阶数。m序列经过循环移位后仍然是m序列。通过不同的循环移位,一个n阶多项式共可产生 个长度为 的m序列,m序列的生成模型如图所示:

m序列通过多级移位寄存器,通过线性反馈产生的最长的码序列,下面给出基于matlab生成m序列的方式:
function y=mseq(coef)  
m=length(coef);%确定寄存器数目  
N=2^m-1;%确定周期  
%mback=0;%用于存放反馈值  
y=zeros(1,N);%用于存放输出序列  
registers=[1,1,1,0,1,1,0];%确定寄存器初始值  
for i=1:N  
y(i)=registers(m);  
mback=mod(sum(coef.*registers),2);  
registers=[mback registers(1:end-1)];  
end  
以4级的线性移位寄存器为例,假如给定初始序列为1000,本原多项式为:

则4级线性移位寄存器如下图所示,即a0和a3的模二和会作为序列右移以后新的最高位a3,序列最低位a0会作为输出。


初始序列1000经过每次序列移动后生成的序列如下:

1000---1100---1110---1111---0111---1011---0101---1010---1101---0110---0011---1001---0100---0010---0001---

1000开始新一轮的循环,经过长度为15的周期后,每次序列移位输出的序列最低位构成m序列,所以4级线性移位寄存器生成的m序列为:100110101111000。

m序列具有以下主要的伪随机噪声属性,简称PN属性:

平衡性:任何长度为 的PN序列包含 个“1”和 个“0”。

自相关:理想的归一化自相关函数为:


Gold序列是1967年R.Gold在m序列基础上提出并分析的一种特性较好的伪随机序列,它是由两个码长相等、码时钟速率相同的m序列优选对通过模2相加而构成的。

其产生的电路示意图如下图所示,通过设置m序列发生器B的不同初始状态,可以得到不同的Gold序列,由于共有m-1个不同的相对移位,加上原有的两个m序列,可以产生共m+1个Gold序列。


下面给出基于matlab生成Gold序列的方式:
m1 = mseq([0 0 1 0 0 0 1]);  
m2 = mseq([0 0 0 0 0 1 1]);  
Gold=xor(m1,m2);

通过生成两个m序列逐位模二加,生成的序列为Gold序列,同样Gold序列通过移位仍为Gold序列,和m序列具有相似的性质,但Gold序列具有尖锐的相关峰,且互相关值较小。

ZC(Zadoff –Chu)序列,由Zadoff 和Chu共同发现,ZC序列为欧拉复数序列,是复平面坐标上的单位圆上的点组成的序列 ,每个点对应一对(I, Q)的幅度值。

下面给出基于matlab生成ZC序列的方式:

ZC = zadoffChuSeq(R,N); 

其中输入参数是ZC序列的根索引,和上式的q和m相关,N是ZC序列的长度,q和N确定的情况下,生成长度根序列为25,长度为139的ZC序列:

ZC = zadoffChuSeq(25,139); 

ZC序列的点如下图所示:

ZC序列有以下性质:

1. 恒包络。任意长度的ZC序列的信号的幅值恒定,即功率恒定,因此射频器件无需改变能量。

2. 理想的周期自相关。

3. 良好的互相关。ZC序列循环移位N后,原序列只与移位后的序列得良好的相关峰值,其它位置的序列相关峰值为0,除此之外,两个根如果是互质的,生成的序列相关峰值几乎为零。

4. 傅立叶变换后仍是ZC序列。ZC序列既可以做时序相关检测,也可以做频域相关检测。

5. ZC序列峰均比低,由于ZC序列时频域都为ZC序列,且幅值恒定,有利于射频功放信号发挥最大的效率。

2. m序列和Gold序列的自相关特性

下面首先分析m序列的自相关特性,以长度为127的m序列为例。

通过七阶多项式生成:

设置初始值为[1,1,1,0,1,1,0],采用matlab 5G函数库生成m序列,并对生成的m序列做自相关和互相关,代码和仿真图如下:
%生成个固定小区ID的PSS信号函数
ncellid = 17;   
ncellid0 = 16;   
PSS = nrPSS(ncellid);  
PSS0 = nrPSS(ncellid0);  
XPSS=xcorr(PSS);  
XPSS0=xcorr(PSS,PSS0);  
subplot(1,2,1);  
plot(XPSS);  
title('m序列的自相关特性');  
subplot(1,2,2);  
plot(XPSS0);  
title('m序列的互相关特性'); 

仿真结果表明,只有当m序列与自身对齐时相关系数最大。因此,可以通过该特性实现无线数据帧的时间同步。

下面分析Gold序列的自相关特性:

通过七阶多项式生成m1:
初始值为[0,0,0,0,0,0,1]。

通过七阶多项式生成m2:
初始值为[0,0,0,0,0,0,1]。

使用matlab 5G函数库生成Gold序列,并对生成的Gold序列做自相关和互相关,代码和仿真图如下:
%生成个固定小区ID的SSS信号函数  
ncellid = 17;   
ncellid0 = 16;   
SSS = nrSSS(ncellid);  
SSS0 = nrSSS(ncellid0);  
XSSS=xcorr(SSS);  
XSSS0=xcorr(SSS,SSS0);  
subplot(1,2,1);  
plot(XSSS);  
title('Gold序列的自相关特性');  
subplot(1,2,2);  
plot(XSSS0);  
title('Gold序列的互相关特性');  

仿真结果表明,只有当m序列与自身对齐时相关系数最大。因此,可以通过该特性实现无线数据帧的时间同步。

3. 5G NR同步方法

在5G系统中,同步信号使用BPSK调制方式,在本小节中,将实现一个简化版的BPSK调制信号的同步检测matlab示例。在该示例中,我们将发送三个同步序列,使用BPSK调制,在接收端随机舍弃前n个数据,来模拟接收机落后于发送机启动的情况。通过相关的方式找到当前第一个完整的同步序列,并指示出该同步序列相对于接收序列的位置。示例代码如下所示,首先初始化3组m序列,并设置好载波、采样率等各项参数。
m_bin= zeros(3,127);  
m_bin(1,:) = mseq([0 0 0 0 0 1 1]); % 生成127位m序列
m_bin(2,:)  = mseq([0 0 0 1 0 0 1]); % 生成127位m序列  
m_bin(3,:)  = mseq([0 0 0 1 1 1 1]); % 生成127位m序列  
m_data = 2 * [m_bin(1,:) m_bin(2,:) m_bin(3,:)] -1; % 转换为±1,把三个m序列拼接在一起发送  
m_data = [m_data m_data]; % 重复两次  
N=length(m_data);   
Tc=1e-6;%码字周期   
f=2e6;%载波频率  
Fs=20;%载波周期点数  
N_c = Tc * f * N;     % 基带数据对应载波周期数  
先采用BPSK对发送的m序列进行调制,并在调制信号上叠加加性高斯白噪声,信噪比设置为为5dB。然后在接收端使用BPSK对信号进行解调,如图所示,可以看到调制后的数据及解调后的数据由于干扰比较大,其实很难在解调后的基带数据上进行逐次比较法确定同步序列。
% BPSK调制;  
tx_data= zeros(N_c * Fs,1);  
for i = 1: N  
    bit_idx = 1:1: Tc * f * Fs;  
    tx_data((i-1)*length(bit_idx) + bit_idx) = m_data(i) * cos(2 * pi / Fs * bit_idx);  
end  
channel_data = awgn(tx_data,-5, 'measured'); % 增加噪声,5dB  
% BPSK解调过程  
rx_data = zeros(N,1); 
for i=1:N  
    bit_idx = 1:1:Tc * f * Fs ;  
    %channel_data数据与cos(2f*pi*t)相乘  
    rx_data_with_4pift = channel_data((i-1)*length(bit_idx) + bit_idx) .* cos(2 * pi
 / Fs * bit_idx)';  
    %积分过滤出基带分量  
    rx_data(i) = sum(rx_data_with_4pift);  
end  


接下来,可以对接收到的数据,移位求相关系数,代码如下所下示。绘制三个序列对接收信号的相关系数如图所示。相关系数尖峰出现在第二个序列上,则说明接收到的数据中第一个完整的序列为序列2,尖峰所在位置的索引值即第二个序列在接收序列中的起始位置,从而实现了接收信号与发送信号的时间同步。
coef= zeros(3,127);  
for i=1:127  
     coef(1,i) = min(min(corrcoef(strip_data(i:i+126), m_bin(1,:) )));  
     coef(2,i) = min(min(corrcoef(strip_data(i:i+126), m_bin(2,:) )));  
     coef(3,i) = min(min(corrcoef(strip_data(i:i+126), m_bin(3,:) )));  
end  


以上阐述的内容有问题可以评论或私信我,欢迎交流~ 本文原发于5G NR同步(2)——NR下行同步机制 - 知乎 (zhihu.com)
全部评论
strip_data请问一下是啥 没有定义啊
点赞 回复 分享
发布于 2023-02-22 16:31 重庆

相关推荐

点赞 评论 收藏
分享
03-31 18:02
门头沟学院 Java
白日梦想家_等打包版:不要的哦佛给我
点赞 评论 收藏
分享
评论
1
5
分享

创作者周榜

更多
牛客网
牛客企业服务