||
UE和基站保持时间和频率的同步是两者相互传输数据的前提。UE通过检测基站发送的同步信号,来完成时间和频率的同步。本节主要介绍UE检测同步信号的基本原理,包括同步信号序列的产生原理、序列的自相关特性、同步信号调制方式以及如何检测出同步信号来获取时间同步。
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
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-24 05:29
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社