LTE -DCI0

DCI的全称为Downlink Control Information,是在PDCCH信道中传输的内容。DCI有多种格式,根据不同的目的和场景采用不同的格式。截至目前为止,我们已经详细的介绍了DCI1A、DCI1C、DCI2、DCI2A的使用,本文继续介绍用于上行RB动态调度的DCI0格式。DCI0格式包含的字段如图1所示。

LTE -DCI0_第1张图片

(图1 DCI0格式内容)

下面详细介绍各个字段的含义:

(1)DCI0/DCI1A格式指示位(Flag for format0/format1A differentiation),固定占1bit。当该bit值=0时,表示当前使用DCI0格式;当该bit值=1时,表示当前使用是DCI1A格式。DCI0和DCI1A的码流长度相同是为了减少UE侧盲检的次数,这里增加一个bit的指示位,用于区分这两种不同的格式。如果在某些带宽下,计算得到的DCI0和DCI1A码流的有效长度不相等,则需要在码流的末尾添加填充0补齐至相等。

(2)跳频指示位(Frequency hopping flag),固定占1bit。当该bit值=0时,表示后续的RB资源分配字段不采用PUSCH跳频;当该bit值=1时,表示资源分配采用PUSCH跳频。

(3)RB资源分配(Resource block assignment and hopping resource allocation),固定占ceil( log2( N_UL_RB * (N_UL_RB + 1 ) / 2 ) ) bit。比如上行10MHz带宽,N_UL_RB=50,则本字段占用的bit位= ceil( log2 (50 * 51 / 2) ) = 11 bits。

如果PUSCH采用跳频,那么本字段将携带2个信息:高位N_UL_hop个比特的跳频信息和低位[ ceil(log2[N_UL_RB * (N_UL_RB + 1) / 2 ])- N_UL_hop ]个比特的RIV资源指示字段。具体怎么解析这2个信息,博文《PUSCH上行跳频(1)-Type1频率跳频》和《PUSCH上行跳频(2)-Type2频率跳频》已经有了详细的介绍,这里不再重复。

如果PUSCH不采用跳频,那么本字段只携带 ceil(log2[N_UL_RB * (N_UL_RB + 1) / 2 ])个bit的RIV资源指示字段,从这个RIV中可以解码得到ULRB的起始位置和长度。具体怎么将ULRB的起始位置rb_start和长度rb_length编码成RIV字段,《LTE-TDD随机接入过程(4)-RIV的解析和Preamble资源的选择》里已有介绍。而从RIV反向解码rb_start和rb_length的方法,则可以通过下面这个简单的公式得到(N_UL_RB表示上行带宽,更准确的公式请参考《LTE -UL_grant中RIV的编码和解码》):

rb_start = RIV mod N_UL_RBrb_length = floor(RIV / N_UL_RB) + 1

比如当前是20MHz带宽,RIV=1000,那么rb_start=1000mod100=0,rb_length=floor(1000/100)+1=11;再比如RIV=4906,那么rb_start=4906mod100=6,rb_length=floor(4906/100)+1=50。

(4)MCS和RV字段(Modulation and coding scheme and redundancy version),固定占5bit。这个字段用于编码上行的MCS和RV。MCS的范围是0~31,对于上行来说,29/30/31这三个值用于自适应的重传,此时冗余版本rv分别是1/2/3。如图2所示,表中第一列I_MCS的值就是本字段5bit的值,rv_idx列就是对应的rv冗余版本号。比如DCI0中本字段值为1,那么I_MCS=1,查这个表就可以知道当前的rv_idx=0。

LTE -DCI0_第2张图片

(图2 上行MCS和RV对应关系)

图2的进一步说明如下:

(a)如果UE支持64QAM的PUSCH传输,并且RRC没有配置“仅使用QPSK和16QAM”,那么当前的调制方式Qm就使用图2中第二列Qm'对应的值。UE是否支持64QAM跟UE的能力等级有关,CAT1~CAT4能力的UE不支持上行64QAM,而CAT5支持上行64QAM。PUSCH-ConfigCommon信元里的enable64QAM用于规定UE能否使用上行64QAM,如图3所示,TRUE表示UE能够使用64QAM调制方式,FALSE表示不能使用64QAM调制方式。

LTE -DCI0_第3张图片

(图3)

(b)如果UE支持64QAM的PUSCH传输,或者RRC配置了“仅使用QPSK和16QAM”,那么当前的调制方式Qm=min(4,Qm')

(c)当MCS的值等于29/30/31这三个值的时候,表示当前是自适应重传,对应的Qm值应该等于上一次的Qm值,但有一种情况例外:如果I_MCS=29,且CQI_request字段等于1,且分配的RB个数小于或等于4,那么调制方式Qm固定等于2。之所以这么规定,初衷是希望如果DCI0中的RB个数小于或等于4且MCS=29、cqi_req=1时,UE就需要在指定时序的PUSCH中上传CQI-only(即不携带PMI等)参数。从另一个角度来解析这句话,就是如果希望UE从PUSCH信道中仅携带非周期的CQI-only而不包括PMI等控制参数,那么建议eNB在第一次上行自适应重传(MCS=29,RV=1)的时候就配置给UE。

(5)NDI字段(New data indicator),固定占1bit。通过NDI参数是否发生反转(toggled)来判断当前的数据是新传还是重传:若eNB为某个上行HARQ进程分配的DCI0中的NDI参数,与上次的相比发生了反转,则表示UE本次可以进行上行新传;如果NDI参数与上次的相同,那么UE需要执行上行自适应重传。所谓NDI反转,是指NDI的值从上次的0变成本次的1,或者从1变成0。

由于上行HARQ执行同步操作,所以不需要harq-id,可以通过子帧号就可以判断是否属于同一个HARQ进程。

(6)PUSCH的TPC命令(TPC command for scheduled PUSCH),固定占2bit。这个字段用来调整指定时序PUSCH信道上的发送功率,范围是0~3,表示的含义如图4所示。

从图4的表格中可以看到,TPC值有两种不同的解读,分别表示累加值 (accumulated)和绝对值(absolute)。如果RRC将UplinkPowerControlDedicated信元中的accumulationEnabled字段设置为TRUE,则表示DCI0中的TPC字段使用累加值的含义,否则使用绝对值的含义。如果accumulationEnabled=1,TPC=2,则表示指定时序的PUSCH发送功率需要增加1dB。

LTE -DCI0_第4张图片

LTE -DCI0_第5张图片

(图4)

(7)DM RS循环偏移(Cyclic shift for DMRS),固定占3bit。DM RS的全称是Demodulation Reference Signal,即解调参考信号。UE在生成解调参考信号序列的时候,需要用到一个名为n(2)_DMRS的参数,这个参数就是通过本字段获取的,如图5所示。如果本字段值=1,则表示UE生成DMRS解调参考信号序列的时候,参数n(2)_DMRS=6。

LTE -DCI0_第6张图片

(图5)

(8)UL index 字段,固定占2bit。这是个条件字段,只有当前是LTE-TDD制式且上下行子帧配置为0的时候才存在这个字段。这个字段用于计算PUSCH的时序是采用(n+k)的规则还是采用(n+7)的规则。博文《LTE-TDD HARQ(1)-上行HARQ时序》已经有非常详细的说明,简而言之就是:

若UL_index的高比特(MSB)=1、低比特(LSB)=0,表示DCI0和PUSCH的时序使用(n+k)的规则;
若UL_index的高比特(MSB)=0、低比特(LSB)=1,表示DCI0和PUSCH的时序使用(n+7)的规则;
若UL_index的高比特(MSB)=1、低比特(LSB)=1,表示DCI0和PUSCH的时序使用(n+k)以及(n+7)的规则,此时就是1个DCI0同时调度2个PUSCH的资源。

(9)下行分配索引DAI字段,固定占2bit。这也是个条件字段,刚好与UL index字段不同的是,DAI字段只在LTE-TDD制式且上下行子帧配置为1~6的时候才存在(因为子帧配置0的时候每个下行子帧的反馈都对应到不同的上行子帧中,不会出现1个上行子帧反馈多个下行子帧的情况)。这个字段也被称作V_UL_DAI字段,而DCI1A/2/2A等下行调度相关DCI中的DAI字段则被称作V_DL_DAI,这两种DAI都是UE侧用于检测是否有“PDSCH子帧”丢失。这里所说的“PDSCH子帧”,包括了携带有DCI的PDSCH子帧,也包括没有携带DCI的DL SPS子帧。

正如《LTE下行物理层传输机制(5)-DCI格式的选择和DCI1A》里介绍的,网侧在发出DCI之后,并不清楚终端有没有接收到这个DCI信息,或者说终端并不知道自己有没有漏掉DCI。如果UE没有检测到DCI,那么相应的数据肯定会被丢失。引入DAI字段(包括V_UL_DAI和V_DL_DAI),UE就可以用来判断当前是否有哪个PDSCH子帧丢失了。比如UE先后解码到了同个HARQ进程的2个DAI,值分别是1和3,那么就可以知道,这个HARQ进程的DAI=2的那个DCI没有被检测到。

可能这里有的同学会有疑问,DCI1A等下行DCI中的V_DL_DAI可以用来检测PDSCH子帧有没有丢失,那为什么还要在DCI0中增加这个V_UL_DAI字段呢?这是因为,如果UE收到的都是DCI1A等下行分配,那么反馈的ACK/NACK需要在PUCCH中发送,而如果希望UE也可以在PUSCH中发送ACK/NACK,那么必然需要在DCI0中增加DAI字段。

(10)CQI请求字段,固定占1bit。这个字段用于通知UE是否在指定时序的PUSCH中,执行一次非周期的CQI、PMI和RI上报过程,值等于1表示执行,值等于0表示不执行。关于非周期的CQI、PMI和RI上报过程,以后有时间再单独整理。

参考:
(1)3GPP TS 36.212 V9.4.0 (2011-09) Multiplexing and channel coding

(2)3GPP TS 36.213 V9.3.0 (2010-09) Physical layer procedures

(3)3GPP TS 36.211 V9.1.0 (2010-03) Physical Channels and Modulation 

(4)3GPP TS 36.306 V9.9.0 (2013-12) User Equipment (UE) radio access capabilities

(5)3GPP TS 36.331 V9.18.0 (2014-06) Radio Resource Control (RRC)

你可能感兴趣的:(LTE,LTE协议总结和分享)