LTE:上行定时提前(一)

2024-03-08 04:50
文章标签 提前 定时 lte 上行

本文主要是介绍LTE:上行定时提前(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://blog.sina.com.cn/s/blog_927cff010101cwju.html

上行定时提前(Uplink Timing Advance)


       本文将介绍LTE中的上行同步过程。主要涉及:1)为何需要上行同步;2)eNodeB如何测量上行定时提前量并下发Timing Advance Command;3)eNodeB和UE如何判断上行失步(eNodeB侧只会做一些原理性的介绍,不同厂家的实现可能不同)。

 

      上行传输的一个重要特征是不同UE在时频上正交多址接入(orthogonal multiple access),即来自同一小区的不同UE的上行传输之间互不干扰。

      为了保证上行传输的正交性,避免小区内(intra-cell)干扰,eNodeB要求来自同一子帧但不同频域资源(不同的RB)的不同UE的信号到达eNodeB的时间基本上是对齐的。eNodeB只要在CP(Cyclic Prefix)范围内接收到UE所发送的上行数据,就能够正确地解码上行数据,因此上行同步要求来自同一子帧的不同UE的信号到达eNodeB的时间都落在CP之内。

      为了保证接收侧(eNodeB侧)的时间同步,LTE提出了上行定时提前(Uplink Timing Advance)的机制。

      在UE侧看来,timing advance本质上是接收到下行子帧的起始时间与传输上行子帧的时间之间的一个负偏移(negative offset)。eNodeB通过适当地控制每个UE的偏移,可以控制来自不同UE的上行信号到达eNodeB的时间。对于离eNodeB较远的UE,由于有较大的传输延迟,就要比离eNodeB较近的UE提前发送上行数据。

 

LTE:上行定时提前(一)

 

图1:上行传输的timing对齐

 

      图1的(a)中指出了不进行上行定时提前所造成的影响。

      从图1的(b)中可以看出,eNodeB侧的上行子帧和下行子帧的timing是相同的,而UE侧的上行子帧和下行子帧的timing之间有偏移。

      同时可以看出:不同UE有各自不同的uplink timing advance,也即unlink timing advance是UE级的配置。

 

      前面介绍了为什么需要做uplink timing advance,接下来我们来介绍eNodeB如何测量上行信号以得到每个UE的上行定时提前量以及如何下发Timing Advance Command给UE。

      eNodeB通过两种方式给UE发送Timing Advance Command:

      1)在随机接入过程,eNodeB通过测量接收到preamble来确定timing advance值,并通过RAR的Timing Advance Command字段(共11 bit,对应TA索引值LTE:上行定时提前(一)的范围是0~1282)发送给UE。

 

LTE:上行定时提前(一)

图2:MAC RAR

 

      上行同步的粒度为LTE:上行定时提前(一)(0.52 ms)。对于随机接入而言,LTE:上行定时提前(一)值乘以LTE:上行定时提前(一),就得到相对于当前上行timing所需的实际调整值LTE:上行定时提前(一)(单位为LTE:上行定时提前(一))。关于LTE:上行定时提前(一),见36.211的第4章。

      上行timing的不确定性正比于小区半径,每1 km有大约6.7μs的传输延迟(6.7μs / km),LTE中小区最大半径为100 km,故最大传输延迟接近0.67 ms。上行同步的粒度为LTE:上行定时提前(一)(0.52 ms),故LTE:上行定时提前(一)的最大值约为(0.67 * 1000)/0.52 ≈1288。(LTE:上行定时提前(一)的最大值为1282,应该是更精确的计算,但计算方法就是这样的,当然还要将解码时间考虑在内)

      我称这个过程为“初始上行同步过程”。

 

      2)在RRC_CONNECTED态,eNodeB需要维护timing advance信息。

      虽然在随机接入过程中,UE与eNodeB取得了上行同步,但上行信号到达eNodeB的timing可能会随着时间发生变化:

·        高速移动中的UE,例如运行中的高铁上的UE,其与eNodeB的传输延迟会不断变化;

·        当前传输路径消失,切换到新的的传输路径。例如在建筑物密集的城市,走到建筑的转角时,这种情况就很可能发生;

·        UE的晶振偏移,长时间的偏移累积可能导致上行定时出错;

·        由于UE移动而导致的多普勒频移等。


      因此,UE需要不断地更新其上行定时提前量,以保持上行同步。LTE中,eNodeB使用一种闭环机制来调整上行定时提前量。

      eNodeB基于测量对应UE的上行传输来确定每个UE的timing advance值。因此,只要UE有上行传输, eNodeB就可以用来估计timing advance值。理论上,UE发送的任何信号(SRS/DMRS/CQI/ACK/NACK/PUSCH等)都可用于测量timing advance。

      如果某个特定UE需要校正,则eNodeB会发送一个Timing  Advance Command 给该UE,要求其调整上行传输timing。该Timing  Advance Command 是通过Timing  Advance Command  MAC control element发送给UE的。

      Timing  Advance Command  MAC control element由LCID值为11101(36.321Table 6.2.1-1)的MAC PDU subhead指示,且其结构如下(R表示预留bit,设为0):

 

LTE:上行定时提前(一)

 

图3:Timing Advance Command MAC control element

 

      可以看出,Timing Advance Command字段共6 bit,对应TA索引值LTE:上行定时提前(一)的范围是0~63。

      UE侧会保存最近一次timing advance调整值LTE:上行定时提前(一),当UE收到新的Timing Advance Command而得到LTE:上行定时提前(一)后,会计算出最新的timing advance调整值LTE:上行定时提前(一)(单位为LTE:上行定时提前(一))。

      我称这个过程为“上行同步更新过程”。

 

这篇关于LTE:上行定时提前(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/786061

相关文章

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

ActiveMQ—消息特性(延迟和定时消息投递)

ActiveMQ消息特性:延迟和定时消息投递(Delay and Schedule Message Delivery) 转自:http://blog.csdn.net/kimmking/article/details/8443872 有时候我们不希望消息马上被broker投递出去,而是想要消息60秒以后发给消费者,或者我们想让消息没隔一定时间投递一次,一共投递指定的次数。。。 类似

145-Linux权限维持Rootkit后门Strace监控Alias别名Cron定时任务

参考 【权限维持】Linux&Rootkit后门&Strace监控&Alias别名&Cron定时任务_alias ls='alerts(){ ls $* --color=auto;python -c "-CSDN博客 参考 FlowUs 息流 - 新一代生产力工具 权限维持-Linux-定时任务-Cron后门 利用系统的定时任务功能进行反弹Shell 1、编辑后门反弹shell脚本

环形定时任务 原理

业务背景 在稍微复杂点业务系统中,不可避免会碰到做定时任务的需求,比如淘宝的交易超时自动关闭订单、超时自动确认收货等等。对于一些定时作业比较多的系统,通常都会搭建专门的调度平台来管理,通过创建定时器来周期性执行任务。如刚才所说的场景,我们可以给订单创建一个专门的任务来处理交易状态,每秒轮询一次订单表,找出那些符合超时条件的订单然后标记状态。这是最简单粗暴的做法,但明显也很low,自己都下不去手写

Spring 创建定时任务

我们在编写Spring Boot应用中经常会遇到这样的场景,比如:我需要定时地发送一些短信、邮件之类的操作,也可能会定时地检查和监控一些标志、参数等。 创建定时任务 在Spring Boot中编写定时任务是非常简单的事,下面通过实例介绍如何在Spring Boot中创建定时任务,实现每过5秒输出一下当前时间。 在Spring Boot的主类中加入@EnableScheduling注解,启用定

定时任务的原理

在jdk自带的库中,有两种技术可以实现定时任务。一种是使用Timer,另外一个则是ScheduledThreadPoolExecutor。下面为大家分析一下这两个技术的底层实现原理以及各自的优缺点。 一、Timer 1. Timer的使用 class MyTask extends TimerTask{     @Override     public void run() {         S

linux定时监听ssh服务是否启动-------麒麟操作系统永久关闭swap

linux监听ssh服务是否启动 1、监听脚本2、定时任务3、麒麟操作系统,永久关闭swap 1、监听脚本 #在/usr/local/bin目录下新建脚本文件 cd /usr/local/bintouch check_sshd.sh#给可执行权限chmod +x /usr/local/bin/check_sshd.sh 脚本内容如下: #!/bin/bashs

分布式项目中使用雪花算法提前获取对象主键ID

hello,大家好,我是灰小猿! 在做分布式项目开发进行数据表结构设计时,有时候为了提高查询性能,在进行数据库表设计时,会使用自增ID来代替UUID作为数据的主键ID,但是这样就会有一个问题,数据的自增ID应该如何获取到下一个ID并且插入到库中呢? 如果你使用的是mybatisPlus,可以使用自带的自增注解加在id字段上即可,这样在数据入库时就可以自动给数据赋值自增的主键ID, 但是对于不