当前位置: 首页 > news >正文

基于ZC序列的帧同步

Zadoff-Chu序列是一种特殊的序列,具有良好的自相关性和很低的互相关性,这种性能可以被用来产生同步信号,作为对时间和频率的相关运算在TD-LTE系统中,Zadoff-Chu(ZC)序列主要应用于上行RS序列生成、PRACH前导序列生成以及主同步信号生成等,它在整个TD-LTE系统中扮演着重要的角色,是建立上下行链路同步以及信道估计中不可或缺的一部分

ZC序列有以下性质:

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

2. 理想的周期自相关。

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

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

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

我们知道无线电波在空中传输,会存在时延,而且还会存在多径衰落,因此每两次传输之间都会存在保护间隔,避免上一次传输影响到下一次,两者间出现尾头重叠现象。OFDM符号,巧妙的把每一个符号尾巴复制一部分,放到前面保护间隔位置,形成循环前缀CP。

这样即使接收端收到的OFDM符号有一定的时延,但只要时延不超过CP长度,OFDM符号仍然保持正交性, IFFT变换后仍然可以恢复数据。

ZC序列循环移位N后,原序列只与移位后的序列得良好的相关峰值,其它位置的序列相关峰值为0。除此之外,两个根如果是互质的,生成的序列相关峰值几乎为零。我们知道一个根序列的长度是有限度的(139或者839),每移位NCS位就许配给一个UE,那由一个根生成的ZC序列很快用完,需要用到其它根来生成preamble,这个时候两个根生成的序列之间的互相关性就显得重要,它们要长得不“像”,即互相关几乎为0,否则基站区别不出它们。

前述我们知道,ZC序列循环移位后,原序列和移位后的相关峰值出现在移位大小的位置。PRACH序列就是利用这个性质求时间偏移的大小。基站采用原序列与接收到的序列做相关,由于OFDM符号是首尾相连的,如果有时延,则相关峰值就会出现移位,不出现在起始位置。接收的数据存放是按照采样时间顺序存放在buffer里面的,只要统计移位的样点数,就可以知道时间延时大小了。因为终端的时间是以基站侧为基准的,终端发送的上行信号当然的也会以上行子帧或者slot或者符号为基准,当基站发现接收到终端上行数据有时延,当然就会通知终端:下次早点来。
 

ZC序列仿真如下:

% 利用zc序列进行简单的帧同步
clc;close all;clear;
snr = 10;
zc = zadoffChuSeq(25,139)';
data = randi([0,1],1,1000);
pre = randn(1, 100);
tx = [zc data];
rx_idel = [pre tx];
rx_noise = awgn(rx_idel,snr,'measured'); % 创造接收数据,在头加了一些数字来模拟噪声ax(1) = subplot(3,1,1);
plot(tx)
ylabel('Tx')
axis tightax(2) = subplot(3,1,2);
plot(rx_idel)
ylabel('Rx')
axis tight
xlabel('Samples')ax(2) = subplot(3,1,3);
plot(rx_noise)
ylabel('Rx-add noise')
axis tight
xlabel('Samples')[ref,lag] = xcorr(rx_noise, tx);%计算rx,tx信号之间的互相关性
ref = ref/max(ref);%归一化[M,I] = max(ref);
t = lag(I);
figure
plot(lag,ref,[t t],[-0.5 1],'r:')
text(t+100,0.5,['Lag: ' int2str(t)])
axis tight
title('Cross-Correlations')

显而易见,接收机接收到的信号相对发射信号而言延迟了100个采样点。因此我们只需要将Rx前100个样本点去掉即可完成帧同步。 

http://www.lryc.cn/news/59580.html

相关文章:

  • 配置NFS服务器-debian
  • 正点原子STEMWIN死机
  • PMP考试中的固定答题套路
  • STM32 学习笔记_2 下载,GPIO 介绍
  • Centos搭建k8s
  • Flutter Flex(Row Column,Expanded, Stack) 组件
  • 《深入探讨:AI在绘画领域的应用与生成对抗网络》
  • al文章生成-文章生成工具
  • 【云原生之Docker实战】使用docker部署webterminal堡垒机
  • 《低代码PaaS驱动集团企业数字化创新白皮书》-IDC观点
  • LoRA 指南之 LyCORIS 模型使用
  • [C#]IDisposable
  • ROS开发之如何使用RPLidar A1二维激光雷达?
  • 【谷粒商城之JSR303数据校验和集中异常处理】
  • 限流算法(计数器、滑动时间窗口、漏斗、令牌)原理以及代码实现
  • C++回溯算法---图的m着色问题01
  • ESP32 分区表
  • JJJ-2 init_IRQ
  • 【NLP实战】基于Bert和双向LSTM的情感分类【下篇】
  • 程序设计方法学
  • Hadoop之Yarn篇
  • Spring Cloud Nacos使用总结
  • 目标检测框架yolov5环境搭建
  • Vulnhub:Digitalworld.local (JOY)靶机
  • STL源码剖析-六大部件, 部件的关系,复杂度, 区间表示
  • 总有一个可用的连接,metaIPC1.2进入智能连接新时代
  • 棋盘问题c
  • 华纳云:Linux系统下怎么创建普通用户并更改用户组
  • 「她时代」背后的欧拉力量
  • kubespray v2.21.0 在线部署 kubernetes v1.24.0 集群【2】