SPS:Semi-Persistent Scheduling半持续性调度,或Semi-staticScheduling半静态调度,与之对应的是持续调度(PSPersistent Scheduling)和动态调度(DynamicalShceduling)
持续调度:持续调度是电路域的思想,当一个信道分配后,长时间被一用户占用,例如专用信道。LTE中不使用
动态调度:终端要发送一次申请一次资源,再发送再申请
半持续调度:终端申请一次资源后,相应资源在一段时间内,周期性的分配给该用户。这里有终端是周期性!半持续调度在LTE中主要应用于VOLTE业务
简单地说,eNodeB在某个TTI使用SPSC-RNTI加扰的PDCCH指定UE所使用的无线资源(这里将其称为SPS资源),每过一个周期,UE就使用该SPS资源来收或发数据。eNodeB无需在该子帧(这里将其称为SPS子帧)下发PDCCH来指定分配的资源。
由于SPS有“一次分配,多次使用”的特点,不需要在每个TTI都为UE下发DCI(包括上行或下行的DCI),从而降低了对应的PDCCH开销。
SPS对数据包小,大小基本不变且周期性的业务很有用,如VoIP。这类业务的timing和所需的无线资源都是可预测的。 只有PCell支持SPS。这是因为SPS主要应用于低速业务,负载低,没有必要使用多个载波单元。
1.SPS不能与TTI BUNDLING同时使用
2.SPS的上行HARQ是异步的方式,上行使用的是同步的方式
3.UE激活了SPS后,仍然会监听用于动态调度的PDCCH。当在SPS子帧上检测到用于动态调度的PDCCH时,该PDCCH分配的资源会取代SPS调度分配的资源,即动态调度的优先级更高。动态调度的PDCCH只对该子帧有效,并不影响后续的SPS子帧
4. UE激活了SPS后,可能在之后的过程中由于码率变化等原因,需要重新配置SPS资源。例如当VoIP服务的码率升高,eNodeB需要重新下发一个新的使用SPS C-RNTI加扰的下行DCI或上行DCI(格式与SPS Activation的PDCCH相同),以便分配更大的SPS资源。重新分配的过程可以发生在任意子帧,此时SFNstart time和subframestart time也会更新,后续的SPS子帧将使用重新分配的SPS资源
SPS调度和释放配置可通过RRC重配置消息进行查看
-- ASN1START
SPS-Config ::= SEQUENCE {
semiPersistSchedC-RNTI C-RNTI OPTIONAL, -- Need OR
//半持续调度的SPS-C-RNTI
sps-ConfigDL SPS-ConfigDL OPTIONAL, -- Need ON
//SPS的下行配置
sps-ConfigUL SPS-ConfigUL OPTIONAL -- Need ON
//SPS的上行配置
}
SPS-ConfigDL ::= CHOICE{
//SPS下行配置方法,可以是释放和建立
release NULL, //SPS释放
setup SEQUENCE { //SPS建立,通过PDCCH的SPS-C-RNTI进行激活
semiPersistSchedIntervalDL ENUMERATED {
sf10, sf20, sf32, sf40, sf64, sf80,
sf128, sf160, sf320, sf640, spare6,
spare5, spare4, spare3, spare2,
spare1},
//SPS下行调度步长,sf10就是10个帧,32帧就是30帧,10的倍数向下取整INT[INTERVAL]*10
numberOfConfSPS-Processes INTEGER (1..8), //用于SPS的HARQ进程数
//上行HARQ使用同步的方式,因此并不需要指定HARQ process ID。并且对上行重传而言,可以使用SPS调度分配的资源,也可以使用SPS C-RNTI加扰的PDCCH重新指定资源。
n1PUCCH-AN-PersistentList N1PUCCH-AN-PersistentList,
...,
//用于反馈NACK/ACK的4个PUCCH资源索引 资源,应用在天线P0端口( Resource index for PUCCH formats1/1a/1b)
[[ twoAntennaPortActivated-r10 CHOICE { //天线端口P1上的配置,同端口P0配置
release NULL,
setup SEQUENCE {
n1PUCCH-AN-PersistentListP1-r10 N1PUCCH-AN-PersistentList
}
} OPTIONAL -- Need ON
]]
}
}
SPS-ConfigUL ::= CHOICE{
release NULL,
setup SEQUENCE {
semiPersistSchedIntervalUL ENUMERATED {
sf10, sf20, sf32, sf40, sf64, sf80,
sf128, sf160, sf320, sf640, spare6,
spare5, spare4, spare3, spare2,
spare1},
//SPS上行调度步长,sf10就是10个帧,32帧就是30帧,10的倍数向下取整INT[INTERVAL]*10
implicitReleaseAfter ENUMERATED {e2, e3, e4, e8},
//如果UE连续implicitReleaseAfter次发送的MAC PDU不包含MAC SDU,则上行SPS会自动释放。e2代表连续2次,依次类推
//如果UE在分配的上行SPS资源上,连续implicitReleaseAfter次发送的MAC PDU不包含MAC SDU,则会自动释放上行SPS并清除配置的UL grant。在清除了UL grant后,需要重传的SPS数据并不受影响
p0-Persistent SEQUENCE {
p0-NominalPUSCH-Persistent INTEGER (-126..24), //单位dBm,步长是1
p0-UE-PUSCH-Persistent INTEGER (-8..7) // ,单位dBm
//功率控制参数,
} OPTIONAL, -- Need OP
twoIntervalsConfig ENUMERATED{true} OPTIONAL, -- Cond TDD
...
//是否支持two-intervals-SPS,只存在于TDD的上行
}
}
N1PUCCH-AN-PersistentList::= SEQUENCE(SIZE (1..4)) OF INTEGER (0..2047)
-- ASN1STOP
UE配置了SPS后,还不能使用,必须使用SPSC-RNTI加扰的PDCCH进行激活。(详见36.213的9.2节) eNodeB通过SPSC-RNTI加扰的PDCCH来激活/释放UE的SPS。
SPS下行调度:
如果配置并激活了DLSPS,则UE会认为在满足下面公式的子帧里(称为SPS子帧)被分配了SPS下行资源(此时无需收到PDCCH):
(10 * SFN+ subframe) = [(10 * SFNstart time + subframestarttime) + N * semiPersistSchedIntervalDL] modulo 10240,for all N>0
上行SPSP调度:
如果配并激活了UL SPS,则UE会认为在满足下面公式的子帧里(称为SPS子帧)被分配了SPS上行资源(此时无需收到PDCCH):
(10 * SFN+ subframe) = [(10 * SFNstart time + subframestart time) + N *semiPersistSchedIntervalUL + Subframe_Offset * (N modulo 2)] modulo10240, for all N>0.
Subframe_Offset:如果是FDD或者TDD单层传输,则该值为0
如果是TDD双层传输在,则有一定的偏移
TDDUL/DL configuration |
Position of initial Semi-Persistent grant |
Subframe_Offset value (ms) |
0 |
N/A |
0 |
1 |
Subframes 2and 7 |
1 |
Subframes 3and 8 |
-1 |
|
2 |
Subframe2 |
5 |
Subframe7 |
-5 |
|
3 |
Subframes 2and 3 |
1 |
Subframe4 |
-2 |
|
4 |
Subframe2 |
1 |
Subframe3 |
-1 |
|
5 |
N/A |
0 |
6 |
N/A |
0 |
在RRC重配置消息中
sps-Config
{
semiPersistSchedC-RNTI '00000000 10010001'B,
sps-ConfigDL setup:
{
semiPersistSchedIntervalDL sf20,
numberOfConfSPS-Processes 2,
n1-PUCCH-AN-PersistentList
{
44,
45,
52,
53
}
},
sps-ConfigUL setup :
{
semiPersistSchedIntervalUL sf20,
implicitReleaseAftere4
}
},
上行的激活方式是通过PDCCH的DCI0加扰的SPSC-RNTI进行激活,授权上行SPS传输数据
0xB130 LTE LL1 PDCCH DecodingResult
然后在PUSCH上传送数据(0XB139)
下行方向也是类似,网络通过SPSC-RNTI加扰的PDCCH信道进行指示下行SPS数据传输 ,然后在PDSCH信道传输数据
0xB173 LTE PDSCH StatIndication
三、 参考资料
1.3GPP36.321
2.3GPP36.331
3.3GPP
4.LTE:SPS(一)_金辉_LTE_新浪博客
5.LTE:SPS(二)_金辉_LTE_新浪博客
6.[P1-12]LTE专题重点培训--SPS.pptx