信道编码 简易版一 LONG TERM中信道编码的一般流程 物理信道从上层接收到的传输块 TB(transportblock),每个子帧最多传输一个TB,如图Figure 5.2.2-1其编码的步骤为: - TB添加CRC校验 - 码块分段及码块CRC校验添加 - 数据和控制信息的信道编码 - 速度匹配 - 码块级联 - 数据和控制信息复用 - 信道交织 Figure 5.2.2-1:Transport channel processing 二 过程详解2.1 TB 添加CRC模块作用:接收时通过CRC校验,判断接收比特的对错,如果错了,可以请求重传。 相关模块:速率匹配,HARQ重传 标准CRC生成多项式如下表:
名称 生成多项式 简记式* 标准引用
CRC-4 x4+x+1 3 ITU G.704
CRC-8 x8+x5+x4+1 0x31
CRC-8 x8+x2+x1+1 0x07
CRC-8 x8+x6+x4+x3+x2+x1 0x5E
CRC-12 x12+x11+x3+x+1 80F
CRC-16 x16+x15+x2+1 8005 IBMSDLC
CRC16-CCITT x16+x12+x5+1 1021 ISO HDLC, ITU X.25,V.34/V.41/V.42 I、基本算法(人工笔算,一般写代码不用这种方法):
1)以CRC16-CCITT为例进行说明,CRC校验码为16位,生成多项式17位。假如数据流为4字节(32位):BYTE[3]、BYTE[2]、BYTE[1]、BYTE[0];
2)数据流左移16位,相当于扩大256×256倍(左移一位扩大2倍),再除以生成多项式0x11021(这也就是为什么生成多项式第一位必须为1的原因,否则如果最高位是几个0,除法得不到16bits的余数),做不借位的除法运算,所得的余数就是CRC校验码。(不借位除法相当于异或?怎样异或?)
3)发送时的数据流为6字节:BYTE[3]、BYTE[2]、BYTE[1]、BYTE[0]、CRC[1]、CRC[0];
II、计算机算法1(比特型算法):
1)将扩大后的数据流(6字节)高16位(BYTE[3]、BYTE[2])放入一个长度为16的寄存器;
2)如果寄存器的首位为1,将寄存器左移1位(寄存器的最低位从下一个字节获得),再与生成多项式的简记式异或;
否则仅将寄存器左移1位(寄存器的最低位从下一个字节获得);
3)重复第2步,直到数据流(6字节)全部移入寄存器;
4)寄存器中的值则为CRC校验码CRC[1]、CRC[0]。 2. 2 码块分段及CRC添加码块分段分两种情况:一种是大于6144码块,一种是小于6144的码块,小于6144的码块很简单,直接加F个null比特到码块前面即可。F由一大段公式求出,见标准。
大于6144的码块会被分为两种长度的码段,K+和K-,其中K+>K-,K+长度的码段数量为C+,K-长度的码段数量为C-。
于是总共有C- + C+个码块,输入比特先放C-个长度为K-的码段,其中第一个码段前面要加上F个空比特,每个码段都要加上CRC校验的尾巴。尾巴包含在长度K-内。
输入比特再放C+个长度为K+的码段,不需要添加F个空比特了,但是每个码段也要加上CRC校验的尾巴。尾巴包含在长度K+内。
2.3 信道编码(咬尾卷积码)模块作用:对控制信息和广播信道进行信道编码,增强鲁棒性。
相关模块:速率匹配
咬尾卷积码优缺点:克服了码率损失的问题,并且适合迭代译码,但是译码复杂度增加了。
这里有两个概念,constraint length-约束长度;coding rate-编码速率。 约束长度百度上搜下,先容为: 1,约束长度(constraintlength)= 寄存器个数(N)+1; 上面是通解,在Lin Shu 的《error controlcoding》书里是这么表达的。 2,但是在sklar的《digital comm》一书里面,约束长度=N 以上2种写法之所以不同,是因为他们寄存器的意义不同,但是实际上是表达的是一个意思。约束长度就是,能输出信号到加法器的点的和。 编码速率和卷积码有关,先容如下:
若以(k,n,m)来描述卷积码,其中k为每次输入到卷积编码器的bit数,n为每个k元组码字对应的卷积码输出n元组码字,m称为约束长度,编码速率k/n。
也很好理解。下面是标准中的卷积码生成图:
其中D从左到右分别对应标准上的S0,S1,。。。S5。
初始化时,S0=Ck-1,S1=Ck-2,。。。S5=Ck-6。 //initialization
输入第一个比特C0,d0=C0^Ck-2^Ck-3^Ck-5^Ck-6, //^代表异或
d1,d2也是依样画葫芦生成。 //
当输入第二个比特C1时,寄存器右移一位,最末位抛弃,即S5抛弃,第一位变为输入位,即S0=C0。 //registered update
当最后的比特Ck-1进行编码完成后,寄存器又回到了初始状态,就像一条蛇咬住了自己的尾巴,这就是tailbiting的由来。因此,这个卷积码也叫做咬尾卷积码。
G0,G1,G2是生成公式,与输入比特异或的寄存器为1,不异或的寄存器为0,因此,第一个输出d0的生成公式是011011,同CRC的生成公式一样,最高位要置1,因此生成公式为1011011,写成八进制就是133.
2.4 速率匹配速度匹配作用: 在信道编码后,如果一个码字codeword在一个TTI(子帧 1ms)内使用的RB数目、symbol数目确定以后,该信道的物理资源承载能力,即能够传输的 bit数 就确定了,如果码字的长度超过信道的承载能力,则需要进行速度匹配,删除一些冗余。 速率匹配的作用是确保在传输信道复用后总的比特率与所分配的专用物理信道的总比特率是相同的。 传输信道中的比特数在不同的传送时间间隔内可能会发生变化,当在不同的传送时间间隔内所传输的比特数改变时,比特将被删除,以确保在TrCH 复用后总的比特率与所分配的专用物理信道的总比特率是相同的。 G是可用于该codeword的物理资源承载能力,单位是比特数。RB数目和MCS决定了G的具体数目,概括性的计算方法就是:
1. 统计该codeword的RB数目;
2. 统计每个RB上用来传输数据的symbol数目,去除掉控制symbol,只留下用于数据传输的symbol;
3. 得到用于该codeword的总symbol数目;
4. 根据调制因子将symbol数目换算为比特数目G,这里的调制因子和调试方式相对应,即几个bit调制为一个symbol,例如QPSK的调制因子为2,而64QAM的调制因子为6。
Turbo码编码输出 , 其中 ,i表示输出编码流的索引号,r表示码块号, 表示每个码块的编码流的长度,码块的总数目为C。 再进行速度匹配,记经过速度匹配后的比特流表示为 ,r表示码块号, 表示速度匹配后的第r个码块的长度。 2.5 码块级联码块级联,将C个码块顺序拼接起来,构成长度为G的一个码字。其中若与控制信息复用,G不包括控制信息。 The input bitsequence for the code block concatenation and channel interleaving block arethe sequences , for and . The output bit sequence from the code block concatenationand channel interleaving block is the sequence for . The codeblock concatenation consists of sequentially concatenating the rate matchingoutputs for the different code blocks. Therefore, Set and while Set while end while end while The bitsinput to the code block concatenation block are denoted by for and where is the number of ratematched bits for the r-th code block. Code blockconcatenation is performed according to subclause 5.1.5. The bitsafter code block concatenation are denoted by , where G is thetotal number of coded bits for transmission excluding the bits used for controltransmission, when control information is multiplexed with the UL-SCHtransmission. 2.6 数据与控制信息复用控制信息复用使得HARQ-ACK应答信息在一个子帧中的两个时隙中存在,并将控制信息映射到解调参考信号的附近资源位置,此外还需要保证控制信息和数据映射到不同的调制符号上。 数据和控制复用单元的输入为:控制信息比特 ,数据比特 。记数据和控制信息的复用单元输出为 ,其中 , , , 是长度为 的列向量,H 是需要传输的总比特数。 每个子帧中用于传输的SC-FDMA符号数目为 控制信息和数据按如下方式进行复用: Set i, j,k to 0 while -- first place the control information end while while -- then place the data end while The controland data multiplexing is performed such that HARQ-ACK information is present onboth slots and is mapped to resources around the demodulation referencesignals. In addition, the multiplexing ensures that control and datainformation are mapped to different modulation symbols. The inputs tothe data and control multiplexing are the coded bits of the control informationdenoted by and the coded bits of the UL-SCHdenoted by . The output of the data and control multiplexing operationis denoted by , where and , and where , are column vectors oflength . H is the total number of coded bits allocated for UL-SCH dataand CQI/PMI information. The controlinformation and the data shall be multiplexed as follows: 2.7 信道交织这里描述的信道交织与TS36-211中描述的资源粒子映射联合使用,实现时间有限的调制符号到传输波形的映射,同时确保HARQ应答信息子一个子帧中的两个时隙都存在,并且映射到上行解调用参考信号附近。我认为信道交织通过一种放置方式将控制信息和其它信息按照一定顺序排列,再结合资源粒子的映射才实现的上述功能,具体怎么实现的还要两种结和起来看。 信道交织的输入比特有:从数据和控制复用输出的比特 ,秩指示信息 ,和自动重传信息 。 信道交织的方法: (1)设置矩阵的列数。 , 是在当前PUSCH传输子帧中的SC-FDMA符号的个数。 (2) 设置矩阵行数。 , , , , 是前面定义的参数。 (3) 放置RI信息。RI信息被放在表格中对应的列中,并且从最后一行向上添加。添加方式为 Set i, j to 0. Set r to . while i < endwhile Table 5.2.2.8-1:Column set for Insertion of rank information CP configuration | | Normal | | Extended | |
在表格中给出,其中j从0到3变化。比如j=0时在常规CP中 =1,j=1时在常规CP中 =2,以此类推。 (4)放置比特序列 ,从第一个位置开始一行行放置,其中跳过RI信息已经占用的位置,令 。最后生成的矩阵为 (5)放置ACK信息。利用与(3)相仿的计算公式,在下面表格中对应的列中,从最后一行开始向上添加ACK信息。这时可能会覆盖(4)中已经添加的数据。问题这样处理是什么道理 Set i, j to 0. Set r to while i < end while Table 5.2.2.8-2:Column set for Insertion of HARQ-ACK information CP configuration | | Normal | | Extended | |
(6)输出时是从矩阵中一列列读出来的,最后输出来的序列为
|