PHICH携带HARQ ACK/NACK信息,用来标识eNodeB是否已经在PUSCH上正确接收了一个传输。如果正确接收,HI(HARQ Indicator)指示设置为0标识ACK,否则设置为1标识NACK。该信息会在三个BPSK调制的符号上重复。
映射到相同RE(Resource Element)集合的PHICH组成一个PHICH组,同一组内不同的PHICH通过不同的正交Walsh序列来区分。Normal CP下,该序列的长度为4,可用来表示8个不同的用户;Extend CP下,该序列长度为2,可用来表示4个不同的用户。
PHICH物理信道的基本处理流程如下所示:
图1 PHICH物理信道处理流程
1 bit的PHICH数据假设为“0”,经过3倍的重复成为“000”,然后通过BPSK调制,形成3个符号,再经过正交码的扩频(扩频因子为4,因此最多可以承载8个用户)形成12个符号,由于每个REG可承载4个符号,所以产生的12个符号需要3个REG来承载,这3个REG在考虑时频分集的情况下以1/3的系统带宽间隔均匀分布。
FDD中,所有子帧中的PHICH组数N(group/PHICH)都是不变的,由如下定义:
其中,Ng是由高层提供,其取值为{1/6,1/2,1,2};n(group/PHICH)的取值范围为0~N(group/PHICH)-1;
TDD中,在不同子帧中PHICH的组数是变化的,每个子帧中的PHICH组数为mi*N(group/PHICH),其中N(group/PHICH)同样由上面的表达式提供,mi和上下行配置(Uplink-downlink configuration)都是由高层的subframeAssignment参数提供;n(group/PHICH)的取值范围为0~mi*N(group/PHICH)-1;mi的取值如下所示:
表1 TDD上下行不同配置及不同子帧对应的的取值
注意,看到该图后应该要思考2个问题:
1) 图中mi的取值是如何确定的?为什么有的位置是0有的位置是1?
2) 在上下行配置0时,为什么第0、5子帧中mi为2,而其它取值的位置都为1,有什么关系吗?
首先,mi不为0代表该子帧中携带有PHICH响应作为对其它上行子帧中上行数据的回复,也就是说mi不为0的地方,肯定是下行子帧(特殊子帧S可以携带下行数据),然而并不是所有的下行子帧中mi均不为0,这要结合UE侧的行为来看,UE在上行子帧中发送数据后,应该在哪个下行子帧接收PHICH,以获取eNodeB侧的接收情况。根据36213 9.1.2可知“For PUSCH transmissions scheduled from serving cell c in subframe n, the UE shall determine the corresponding PHICH resource of serving cell c in subframe n+K(PHICH)”,其中K(PHICH)的取值(TDD制式下,FDD中K(PHICH)值恒为0)见下表:
表2 TDD上下行不同配置及不同子帧对应的的取值
以TDD UL/DL Configuration 0为例,子帧2时对应K(PHICH)的为4,它代表在子帧2发送的上行数据的响应PHICH可以在子帧2+4=6中获取,同理子帧3中发送的上行数据的响应PHICH可以在3+7=10下一无线帧中的第0子帧中获取,更为直观的方式见下图(注,上图中所有标值的地方都是上行子帧,即“U”子帧):
图2 不同取值下PHICH的响应时机
在上图中给出了统计,即确定了mi取值的子帧,至于为什么在TDD-0情况下,子帧0和5中mi=2通过上图也可以看出,在Radio Frame N中子帧3和4对应的K(PHICH)分别为7和6,而3+7=10、4+6=10,即关于在Radio Frame N+1的0子帧中同时给出了Radio Frame N中子帧3和4上行数据的接收情况,同理Radio Frame N的子帧8和9也同时映射在了Radio Frame N+1的子帧5上,这就是为什么在TDD-0情况下,第0、5子帧中mi为2,而其它取值的位置都为1,因为第0、5子帧携带了两倍的数据量,所以其组数也比其它下行子帧多。
根据协议36211中6.9.3 7)可知,PHICH组中i = 0,1,2时(每个i对应4个符号),占用的REG分布的符号位置由如下规则给出:
(m’为PHICH组号)
其中,在normal PHICH duration情况下,li'=0,表示所有占用的REG均分布在第一个符号上;在extended PHICH duration情况下,MBSFN子帧和非MBSFN子帧情况下TDD制式的第1、6子帧符号分布相同,li'的取值为;其它情况下 li'= i。时域映射的具体情况请参考下面的例子。
协议36211中6.9.3 8)给出如下计算方式:
其中,N(cell/ID)为小区的ID号;n(li')为符号li'上未分配给PCFICH的REG的数量;m’为PHICH组号,取值范围为0~mi*N(group/PHICH)-1。该公式的化简方式和PCFICH的化简方式类似,化简后的最终形式为:
其中,表示符号li上剩余的REG的数量;
由此可以看出,N(cell/ID)部分仍是为了小区间偏移,m’是为了组间偏移;而N(PHICH/(REG,li))/3则表示PHICH占用的REG是按剩余系统带宽的1/3均匀分布的。频域映射的具体情况请参考下面的例子。
Normal PHICH duration情况下,下行系统带宽为3.0MHz,Ng = 1,mi = 1(TDD-3,子帧0上),此时 N(DL/RB)= 15,N(Total/(REG,li=0)) = 2* N(DL/RB)=30(符号0上REG的总数为30),N(Total/(REG,li=1/2)) = 3* N(DL/RB) =45(符号1和2上REG的总数为45); N(group/PHICH)= 2;此时PHICH占用的REG如下图所示:
图3 Normal PHICH duration下PHICH的资源映射
注意:PHICH分布时计算出来的频域上的序号,是去掉PCFICH占用的REG之后重新编号的符号,因此不会和PCFICH有冲突。
同样的配置在extend PHICH duration情况下的分布见下图:
图4 Extended PHICH duration情况下PHICH的资源映射
由上图可以看到,PHICH组中的三个REG是分别映射在三个符号上的,不同组之间存在一个偏移。
思考:在如下的公式中,为什么会除以n1?
由上图可以看到,第一个符号上由于小区参考信号占用了部分RE,导致每个N(RB/sc)只包含2个REG,而第二、三个符号上的RE由于没有被小区参考信号占用,每个N(RB/sc)包含3个REG,就形成了第一个符号和第二、三个符号不等长的现象,当REG的分布落在第二或三个符号上时,其实n(li')/n1就是1,由此得出结论,之所以除以n1是考虑到extend duration的情况,当REG分布在多个符号上时,要保证每个符号上的分布密度尽量保持一致。
确定接收时机,根据表2 UE即可知道在某个子帧发送上行数据后,应该在哪个子帧上接收PHICH响应。
确定自己PHICH占用的资源(n(group,PHICH), n(seq,PHICH)),根据如下公式:
其中,n(group,PHICH)表示PHICH组号,n(seq,PHICH)表示组内的正交序列号;N(PHICH/SF)为扩频因子,Normal CP情况下为4,Extend CP情况下为2;I(PHICH)在TDD-0配置子帧4或9情况下为1(同理见图2,针对4和9子帧的回复0和5中n(group,PHICH)组数会翻倍,因此计算接收的组数也要翻倍),其它情况下为0;I(PRB_RA)表示分配给UE的用于PUSCH传输的最小PRB的索引(在format 0分配);引入n(DMRS)的目的是为了解决冲突,举个例子如下:
先看去除n(DMRS)的情况:
假设PHICH的组数为3,;8个UE分配的PUSCH对应的PRB的起始位置分别是0,1,2,3,4,5,6,7;则其对应的(n(group,PHICH), n(seq,PHICH))分别为:(0,0)、(1,0)、(2,0)、(0,1)、(1,1)、(2,1)、(0,2)、(1,2);
然而有可能出现多个UE计算出的(n(group,PHICH), n(seq,PHICH))一样的情况,例如:UE1分配的PRB起始位置为0,UE2分配的PRB起始位置为24,则计算出的组号和索引号均为0,为了避免这种情况引入了n(DMRS);