lixingwang81的个人博客分享 http://blog.sciencenet.cn/u/lixingwang81

博文

[转载]5G NR同步(1)——同步原理

已有 5441 次阅读 2022-5-21 12:09 |系统分类:科研笔记|文章来源:转载

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






https://blog.sciencenet.cn/blog-812827-1339552.html

上一篇:电子通信中的脉冲整形
下一篇:[转载]拉格朗日对偶(Lagrange duality)、KKT条件
收藏 IP: 115.56.77.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-24 03:44

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部