5G NR R16 SPS ---- 半持续调度

一 简介

今天给大家介绍一个R16的小topic:SPS——Semi-persistent Scheduling(半持续调度),与传统的Dynamic Scheduling(动态调度)相对应。

首先解释什么是SPS,我们知道目前常用的调度方式是动态调度,也就是一个DCI指示一个PDSCH或PUSCH。UE先检测到一个DCI,然后根据这个DCI的指示,进行PDSCH的接收或者PUSCH的发送,然后再去检测下一个DCI…

而半持续调度顾名思义就是一个DCI或者RRCreconfiguration消息可以指示若干个(持续的)PDSCH或PUSCH。一旦UE收到特定的DCI或RRCreconfiguration消息,则开始周期性的进行PDSCH的接收或PUSCH的发送,直到这种持续性的调度停止。在这段持续性的调度期间,UE不需要再进行DCI的检测,这就是所谓的半持续调度。与动态调度相比,无疑减少了DCI的盲检次数,所以对于UE来说降低了时延和功耗。

本文涉及到的协议内容主要来自于38321、38213、38214和38331:

  • 38321为MAC层协议,其中主要介绍到了SPS的MAC层收发过程,即:Transmission and reception without dynamic scheduling;
  • 38213和38214为物理层过程,其中会介绍到SPS的激活和物理层收发过程等内容;
  • 38331为RRC协议,其中包含SPS的配置等内容。

二 SPS的配置

了解了什么是SPS后,我们首先通过DL为例来介绍SPS的配置。SPS是通过RRCReconfiguration消息当中携带的BWP-DownlinkDedicated IE来进行配置,该配置是一个BWP级别的配置。

我们可以看到信元BWP-DownlinkDedicated会包含sps-Config。值得注意的是多个SPS进程可以同时激活,也就是sps-ConfigToAddModList中可以配置多个sps-Config,并且多个sps-Config可以同时存在,甚至同时处于激活态。

每个sps-Config当中要包含如下一些参数,如:

  • nrofHARQ-Processes: SPS的HARQ进程数
  • harq-ProcID-Offset: SPS的HARQ进程的ID的offset
  • periodicity: SPS的周期,等等…

也就是说SPS PDSCH相关的配置都在SPS-Config当中,而不是在PDSCH-Config中。这两个IE有类似的部分,因为这两个IE都是在对PDSCH进行配置,只不过一个是动态调度的PDSCH,一个是半持续调度的PDSCH。

上行SPS的配置同理,除了类似于PUSCH-config的配置外,还会对SPS PUSCH进行其他方面的配置,比如周期,UL SPS的Type等等。这里需要说明一下什么是UL SPS的Type,UL SPS分为两种类型,Type 1是RRCreconfiguration消息配置并且同时激活,Type 2是RRCreconfiguration消息只用于UL SPS的配置,不用于UL SPS的激活,后续再通过PDCCH来激活。DL SPS只有Type 2,没有Type 1。并且对于Type 1和Type 2,UL SPS的配置会略有不同,这里不详细描述到底哪里不同,但无外乎与Tpye 1和Type 2的区别相关,比如Type 1不需要PDCCH激活,所以原本DCI中的一些资源指示参数可能需要在RRC消息中,还比如只有Type 1支持CG-SDT,所以CG-SDT中涉及到的参数需要在RRC消息中,等等。

一旦SPS被release了,那么上述这些配置的参数也会被UE release,而不是继续保存在UE内。

三 SPS的激活和去激活

上面介绍了SPS的配置,那么配置好的SPS怎么激活、去激活?通过介绍我们已经知道了SPS分为两种类型:Type 1和Type 2,且激活方式与类型有关:

  • UL SPS既可以是Type 1也可以是Type 2,Type 1通过RRCreconfiguration消息激活,即在UE收到RRC配置的同时就已经激活了,Type 2是先配置,再通过PDCCH来激活;
  • DL SPS只有Type 2,即只能通过先RRC配置,后PDCCH激活的方式进行激活。

也就是说需要用到PDCCH来激活的是UL SPS的Type 2和DL SPS。这里展开说一下这两种情况下的PDCCH validation,包括以下方面:

  • 首先PDCCH由CS-RNTI加扰,与动态调度的C-RNTI不同
  • 其次NDI(new data indicator)和DFI(downlink feedback information)都置为0;
  • 时域资源分配,与动态调度相同;
  • 以及可能存在的PDSCH-to-HARQ_feedback timing indicator。

前面也提到过,不论上下行都可以有多个SPS同时激活。当只配置一个SPS时,用于激活/去激活SPS的PDCCH validation要遵循下面表格(一个用于激活,一个用于去激活):

Special fields for single SPS activation PDCCH

DCI format 0_0/0_1/0_2

DCI format 1_0/1_2/4_1

DCI format 1_1/4_2

HARQ process number

set to all '0's

set to all '0's

set to all '0's

Redundancy version

set to all '0's

set to all '0's

For the enabled transport block: set to all '0's

Special fields for single SPS release PDCCH

DCI format 0_0/0_1/0_2

DCI format 1_0/1_1/1_2/4_1/4_2

HARQ process number

set to all '0's

set to all '0's

Redundancy version

set to all '0's

set to all '0's

Modulation and coding scheme

set to all '1's

set to all '1's

Frequency domain resource assignment

set to all '0's for FDRA Type 2 with μ=1

set to all '1's, otherwise

set to all '0's for FDRA Type 0 or for dynamicSwitch

set to all '1's for FDRA Type 1

可以看到表格中对SPS激活/去激活的PDCCH中的HARQ进程数、RV和MCS等的值做出了规定。

当配置多个SPS时,原本的HARQ process number这个field就会被用于指示其中某一个SPSactivation,具体哪一个取决于HARQ process number的值,该值与被激活的SPS的ConfiguredGrantConfigIndexsps-ConfigIndex相同。而RV的值遵循下表:

Special fields for a single SPS activation PDCCH when a UE is provided multiple SPS

DCI format 0_0/0_1/0_2

DCI format 1_0/1_2/4_1

DCI format 1_1/4_2

Redundancy version

set to all '0's

set to all '0's

For the enabled transport block: set to all '0's

当配置多个SPS时,原本的HARQ process number也可以用于指示某一个或多个SPSrelease。当配置了参数ConfiguredGrantConfigType2DeactivationStateListsps-ConfigDeactivationStateList时,就是在指示多个SPS的release,当没有配置这两个参数时,就是在指示某一个的release,还是由HARQ process number的值决定具体release哪一个。其他DCI参数遵循下表:

Special fields for a single or multiple SPS release PDCCH when a UE is provided multiple SPS

DCI format 0_0/0_1/0_2

DCI format 1_0/1_1/1_2/4_1/4_2

Redundancy version

set to all '0's

set to all '0's

Modulation and coding scheme

set to all '1's

set to all '1's

Frequency domain resource assignment

set to all '0's for FDRA Type 2 with μ=1

set to all '1's, otherwise

set to all '0's for FDRA Type 0 or for dynamicSwitch

set to all '1's for FDRA Type 1

另外如果DCI validation没通过的话,该DCI将会被UE删除,即UE不会对该DCI内的信息做任何行动。

对上述内容,即通过PDCCH激活/去激活SPS,做个总结的话情况无非分为4种:

  • 配置单个SPS,如何激活/去激活;
  • 配置多个SPS,如何激活其中的某一个;
  • 配置多个SPS,如何去激活其中的某一个或多个;

可以看到协议当中并没有规定配置多个SPS时,如何同时激活多个SPS,所以应该是不能同时激活多个SPS,可以先后一个一个的激活,最终多个SPS可以同时处于激活态。

UE需要在收到SPS release的PDCCH的N个symbol后,回一个HARQ-ACK给网络。N的具体取值可以参考38213 10.2,这里不进行赘述。

当UL SPS被release时,UE会向网络发送MAC CE,确认UL SPS的去激活。

此外,对于Type 2 SPS,在配置了SCG的时候,多个Serving Cell中SPS的激活和去激活是各不相干的,因为前面也提到过,不论是上行还是下行,SPS是BWP级别的配置。如果多个小区之间是帧不对齐的,则SPS调度的位置也是各自用各自的SFN计算。

对于UL SPS,同一个BWP内,Type 1和Type 2是可以同时存在的。

还需要注意的一点是,对于上行,只有Type 1可以用于CG-SDT,且CG-SDT只能配置在初始BWP(initial BWP)中。这里SDT是Small Data Transmission,可以实现UE在不进入连接态的情况下进行一些小数据包的传输,改天可以给大家单独写一篇来介绍(这里可以先忽略这一条,不影响对SPS的整体理解)。

四 SPS的接收和发送

我们已经知道SPS既可以是PDSCH,也可以是PUSCH。对于下行而言,我们可以称之为SPS PDSCH的接收,对于上行而言,我们可以称之为SPS PUSCH的发送。在SPS激活后,下面介绍SPS的收发过程。

1     Downlink

对于下行,第N个SPS PDSCH所在的slot由下式确定:

                                      (numberOfSlotsPerFrame × SFN + slot number in the frame) =
[(numberOfSlotsPerFrame × SFNstart + slotstart) + N × periodicity × numberOfSlotsPerFrame / 10]
                                                        modulo (1024 × numberOfSlotsPerFrame)

其中SFNstart和slotstart分别是SPS起始的SFN和slot。

另外38214 5.1节中有详细的SPS PDSCH时频域资源的介绍,比如UE不期望接收DCI调度的normal PDSCH与SPS PDSCH在时域上有重叠,除非DCI的结束符号位置距离SPS PDSCH的起始位置大于等于14个符号。

此外还有冲突处理等内容,即当Slot内存在多个SPS PDSCH的时候,首先将落在UL符号上的SPS PDSCH处理掉,然后通过下列步骤处理冲突:

Step 0 – 设j=0,j为选出来的需要进行解码的SPS PDSCH的个数,Q为所有激活的SPS PDSCH组成的set;

Step 1 – UE从Q中选择sps-ConfigIndex最小的SPS PDSCH,为“幸存PDSCH”,然后j = j + 1;

Step 2 – “幸存PDSCH”自然是可以被解码的,然后删除剩余SPS PDSCH中所有与“幸存PDSCH”重叠的PDSCH;

Step 3 - 重复Step 1和Step 2,直到Q为空或者j达到UE可以支持的slot内最大 PDSCH个数。

2     Uplink

对于上行,Type 1,第N个SPS PUSCH的起始symbol由下式确定:

                                            [(SFN × numberOfSlotsPerFrame × numberOfSymbolsPerSlot)
                      + (slot number in the frame × numberOfSymbolsPerSlot) + symbol number in the slot] =
                                 (timeReferenceSFN × numberOfSlotsPerFrame × numberOfSymbolsPerSlot
                                     + timeDomainOffset × numberOfSymbolsPerSlot + S + N × periodicity)
                                     modulo (1024 × numberOfSlotsPerFrame × numberOfSymbolsPerSlot)

可以看到与DL最大的不同在于UL以Symbol为单位,式中timeDomainOffset, timeReferenceSFN, 和S为计算起始symbol要用到的参数。S是由SLIV计算出来或者直接由参数startSymbol指示。另外本文不包含SPS用于SDT情况下的收发过程的描述。

Type 2,第N个SPS PUSCH的起始symbol由下式确定:

                                            [(SFN × numberOfSlotsPerFrame × numberOfSymbolsPerSlot)
                      + (slot number in the frame × numberOfSymbolsPerSlot) + symbol number in the slot] =
                                           [(SFNstart× numberOfSlotsPerFrame × numberOfSymbolsPerSlot
                                       + slotstart× numberOfSymbolsPerSlot + symbolstart) + N × periodicity]
                                     modulo (1024 × numberOfSlotsPerFrame × numberOfSymbolsPerSlot)

其中,SFNstart, slotstart和symbolstart 分别是SPS PUSCH的初始传输时机。

具体的时频域resource allocation和动态调度的略有不同,感兴趣的可以详细看看38214 6.1.2.3,这里不展开。

  • 6
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我就是你们要打的张小贱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值