1、4、各子功能模块介绍4.1 信道编码4.1.1 信道编码综述4.1.1.1 信道编码的作用、分类以及 LTE 中采用的信道编码(1) 信道编码的作用:信道编码是为保证通信系统的传输可靠性,克服信道中的噪声和干扰而专门设计的一类抗干扰技术和方法。(2) 信道编码从功能上看有 3 类编码:a. 仅具有差错功能的检错码,如循环冗余校验 CRC 码、自动请求重传ARQ 等;b. 具有自动纠正差错功能的纠错码,如循环码中的 BCH、RS 码及卷积码、级联码、Turbo 码等;c. 具有既能检错又能纠错功能的信道编码,最典型的是混合 ARQ,又称为 HARQ。从结构和规律上分两类:a. 线性码:监督关系方
2、程是线性方程的信道编码称为线性码,目前大部分实用化的信道编码均属于线性码,如线性分组码、线性卷积码是经常采用的信道编码;b. 非线性码:一切监督关系方程不满足线性规律的信道编码均称为非线性码。(3)LTE 中采用的信道编码信道编码有 2 种:Turbo 、咬尾卷积码。(4)LTE 中不同的物理信道都唯一的对应于 Turbo 、咬尾卷积码中的一种,只要物理信道确定,则其编码方式唯一确定。4.1.1.2 LTE 中信道编码的一般流程物理信道从上层接收到的传输块 TB(transport block) ,每个子帧最多传输一个 TB,如图 Figure 5.2.2-1 其编码的步骤为: TB 添加 C
3、RC 校验 码块分段及码块 CRC 校验添加 数据和控制信息的信道编码 速度匹配 码块级联 数据和控制信息复用 信道交织Figure 5.2.2-1: Transport channel processing 说明:这是最复杂的编码流程、一般物理信道的编码流程都是它的简化版。4.1.1.3 Tail Biting 卷积码和 Turbo 编码是和物理信道一一对应关系Table 5.1.3-1: Usage of channel coding scheme and coding rate for TrCHsTrCH Coding scheme Coding rateUL-SCHDL-SCHPCHM
4、CHTurbo coding 1/3BCHTail biting convolutional coding咬尾卷积码1/3Table 5.1.3-2: Usage of channel coding scheme and coding rate for control informationControl Information Coding scheme Coding rateDCITail biting convolutional coding咬尾卷积码1/3CFI Block code块编码 1/16HI Repetition code重复编码 1/3Block code块编码 vari
5、ableUCI Tail biting convolutional coding咬尾卷积码1/34.1.2 TB 添加 CRC 校验1. 作用:错误检测原理:它 是 利 用 除 法 及 余 数 的 原 理 来 作 错 误 侦 测 ( Error Detecting) 的 。实 际 应 用 时 , 发 送 装 置 计 算 出 CRC 值 并 随 数 据 一 同 发 送 给 接 收 装 置 , 接 收装 置 对 收 到 的 数 据 重 新 计 算 CRC 并 与 收 到 的 CRC 相 比 较 , 若 两 个 CRC值 不 同 , 则 说 明 数 据 通 讯 出 现 错 误 。 即在传输块 TB
6、的尾部添加 24bit 校验位,24 位校验位是根据该传输块进行 CRC计算得到,在接收端可以将信息码和 CRC 码一起除以生成多项式,若余数不为零则传送错误。2. 具体过程:上行 TB 的错误检测是通过循环冗余校验实现的,整个 TB 被用于计算 CRC奇偶校验比特。记输入的 TB 传输块的比特流为 ,记奇偶校验比特为13210,.,Aaa。A 表示传输块(TB)的大小,L 表示校验位的数目。最低13210,.,Lpp信息位 a0 映射到传输块的最高有效位,具体描述见 Section 6.1.1 of 5。CRC 校验位产生的生成多项式为,这一步使用的是 L=24 的多项式gCRC24A(D)
7、:- gCRC24A(D) = D24 + D23 + D18 + D17 + D14 + D11 + D10 + D7 + D6 + D5 + D4 + D3 + D + 1 and;- gCRC24B(D) = D24 + D23 + D6 + D5 + D + 1 for a CRC length L = 24 and;- gCRC16(D) = D16 + D12 + D5 + 1 for a CRC length L = 16.- gCRC8(D) = D8 + D7 + D4 + D3 + D + 1 for a CRC length of L = 8.CRC 使用的是系统循环码,
8、其整体可表示为多项式: 231213024121230 . pDpDaDaAA 该多项式满足被对应 L=24 的多项式, gCRC24A(D) 或 gCRC24B(D)除之后,余数为为 0。 1541450161415 .AAyields a remainder equal to 0 when divided by gCRC16(D), and the polynomial: 7678670 . ppDaDyields a remainder equal to 0 when divided by gCRC8(D).添加 CRC 之后的比特流可表示为 , 其中 B = A+ L。 ak 和 bk
9、 13210,.,Bbb的关系为:for k = 0, 1, 2, , A-1kbfor k = A, A+1, A+2,., A+L-1.Ap传输块 TB 的 CRC 添加模块的输入参数为: ,比特流13210,.,Aaa gCRC24A(D) = D24 + D23 + D18 + D17 + D14 + D11 + D10 + D7 + D6 + D5 + D4 + D3 + D + 1生成多项式,已定传输块 TB 的 CRC 添加模块的输出参数为:,输出比特流231213024121230 . ppaaAA 4.1.3 码块分段及码块 CRC 校验添加如果传输块 TB 添加 24bit
10、s CRC 后,如果长度超过 6144 位,则需要分段,分成多个长度小于 6144 的码块,每个码块的长度根据协议重新定义(不一定长度相等) 。然后在对每个码块重新进行 CRC 计算添加 24bits 校验位,与上步不同的是使用的 CRC 生成多项式为gCRC24B(D) = D24 + D23 + D6 + D5 + D + 1 for a CRC length L = 24具体过程如下:记输入码块分段的比特流为 ,其中 B=L+A 是传输块添加13210,.,BbbCRC 后的总长。如果 B 的长度大于一个传输块的最大值 Z=6144,则码块必须分段,并对每一个分段后的码块进行 CRC 冗
11、余添加。在下列计算中如果填充比特 F 大于 0,则填充比特添加到第一个码块的开始端。如果 B 小于 40,填充比特添加到码块的开始位置。在编码器的输入端,填充比特将被设置为空。码块分段的过程如下:1. 传输块分段的块数 C 的计算if ZBL = 0Number of code blocks: 1CBelseL = 24Number of code blocks: . -向上取整,得到码块数LZBC/-码块分段后,还必须对每个码块添加 24 位 CRC,其最CB后的总长是 Bend if2. 确定每个码块的长度在得到需要分段的码块数后,即码块数 C 已经确定,接下就要确定每个码块的长度记码块编
12、号为 , 其中 r 是码块号,K r 是第 r 个码块13210,.,rKrrcc所包含的比特数目。则各个码块的长度计算过程如下:第一个码块的长度: = minimum K in table 5.1.3-3 such that BKC- 即满足 ,在表 5.1.3-3 中的最小的 K 的值,BC查表if -若 C=1,即码块的长度 K 等于传输块的长度(加 CRC1C后)the number of code blocks with length is =1, , C0KCelse if -若 C11第二个码块的长度: ,为表中满足 的最大的值,查表KKSecond segmentation s
13、ize: = maximum K in table 5.1.3-3 such that K-第一块和第二块的长度差值长度为 的码块的个数:Number of segments of size : .KKBC长度为 的码块的个数:KNumber of segments of size : .end if需要填充的比特数:Number of filler bits: BKCF填充在第 0 个编号的码块的的前 F 个位置,填充空符号for k = 0 to F-1 - Insertion of filler bitsNULcend for从第 0 个码块的第 F 个位置开始,按增序依次将数据填充到各
14、个分段后的码块(码块增序)码块顺序重排,先填充头 C_个码块,前 C_个码块的长度为 ,然后再是KC+个码块( 长度为 )K注意:每个码块的后 24 位必须预留给 CRC 校验位,数据不能占用。k = Fs = 0for r = 0 to C-1if Krelse rend if每个码块必须添加 CRC 校验位,位置在每个码块的后 24 位,生成多项式为 gCRC24B(D)while LKkrsbc1ksend whileif C 1 The sequence is used to calculate the CRC parity 13210,.,LKrrrccbits according
15、to subclause 5.1.1 with the generator 210,.,Lrpppolynomial gCRC24B(D). For CRC calculation it is assumed that filler bits, if present, have the value 0.while rKk)(Lrpc1kend whileend if0kend for这样之后,便形成了总数目为 C 的码块,分成两部分, ,码块C的编号的顺序为 0,1, -1, , + ,前 个码块的长度为 , K后 个码块的长度为 。CK出来的码块 ,其中 r 表示码块号,K r 表示该码块的
16、长度13210,.,rrrcc或者是 。K码块分段的输入参数: ,B=L+A,L=24,即 TB 添加 CRC 后的比特流,13210,.,Bbb,输出比特流23121302412 . pDpDaDaAA gCRC24B(D) = D24 + D23 + D6 + D5 + D + 1 for a CRC length L = 24 ,生成多项式码块分段的输出参数: ,r=0.C13210,.,LKrrrcc4.1.4 数据和控制信息的信道编码4.1.4.1 数据的信道编码( Turbo 编码和咬尾卷积码)4.1.4.1.1 Turbo 编码Turbo 码:并行级联卷积码,2 个 8 状态子编
17、码器 1 个 Turbo 码内交织器DDDDDDI n p u t T u r b o c o d e i n t e r n a l i n t e r l e a v e rO u t p u tO u t p u t1 s t c o n s t i t u e n t e n c o d e r2 n d c o n s t i t u e n t e n c o d e rkckkxkxzkzTurbo 编码器的 8 状态子编码器的传递函数为: G(D) = )(,10g,其中,g 0(D) = 1 + D2 + D3, g1(D) = 1 + D + D3. 编码开始时,8 状态子
18、编码器的移位寄存器的初始值置 0。Turbo 编码器的输出为如下三个比特流:kxd)0(z1k)2(尾比特是要在信息比特编码之后添加的,要获得尾比特 (作用:使编码器回到初始状态 0.)首先,第二个子编码器(RSC)禁用,第一个子编码器中的开关打到低端和虚线相连,在编码器的输入端依次 3 个比特,这时按照编码器中的反馈及相关的运算可以依次得到 6 比特的输出然后,第一个子编码器(RSC)禁用,第二个子编码器中的开关打到低端和虚线相连,在编码器的输入端依次 3 个比特,这时按照编码器中的反馈及相关的运算可以依次得到 6 比特的输出将得到的 12 个比特的输出按照协议中给定的顺序排列便可以得到最终
19、的尾比特输出。, , , Kxd)0( 1)0(KzKxd)0(21)0(3Kz, , , z11xz21x, , , )2(2)()()(3d具体过程:码块的下一步处理就是信道编码, ,r 表示码块数,13210,.,KrrccKr 表示码块的长度,码块总数为 C,每一个码块将进行 turbo 编码。经过编码器编码以后,比特流可以表示为 ,)(1)(32)(1,.,iDririrdd表示三个编码后的比特流, 表示第 i 个编码流的长度,2 and,10i rD。4rKDTurbo 编码过程为:1. Turbo 编码器上行共享信道 Turbo 编码器采用的是并行级联卷积编码,它使用的是两个8
20、状态子编码器和一个 Turbo 码内交织器, Turbo 码的编码效率是 1/3。Turbo 编码器的结构图如下:Turbo 编码器的 8 状态子编码器的传递函数为: G(D) = )(,10g,其中,g 0(D) = 1 + D2 + D3, g1(D) = 1 + D + D3. 编码开始时,8 状态子编码器的移位寄存器的初始值置 0。Turbo 编码器的输出为如下三个比特流:kxd)0(z1k)2(for .1,.0K如果输入的码块是第 0 个码块,又前面我们知道,第 0 个码块中可能存在F 个空填充比特。若存在,则将第 0 个码块的前 F 个比特置 0 输入到编码器,即 ck, = 0
21、, k = 0,(F-1)。同时其输出应该设置为 , k = 0,(F-1) 和NULdk)0(, k = 0,(F-1) 。 NULd)1(记输入到 Turbo 的编码器的比特流表示为 ,第一和第二个13210,.,Kcc编码器输出比特流可表示为, 和 。Turbo 内部3210,.,Kzz ,zz交织器输出表示为 ,交织器的输出比特送入第二个 8 状态的子编码器。10,.KcIf the code block to be encoded is the 0-th code block and the number of filler bits is greater than zero, i.
22、e., F 0, then the encoder shall set ck, = 0, k = 0,(F-1) at its input and shall set , k = 0,(F-1) and , k = 0,(F-1) at NULdk)0( NULd)1(its output. The bits input to the turbo encoder are denoted by , and the bits 13210,.,Kcoutput from the first and second 8-state constituent encoders are denoted by
23、and , respectively. The bits output from the turbo 13210,.,Kzz 13210,.,Kzzcode internal interleaver are denoted by , and these bits are to be the input 10.Kcto the second 8-state constituent encoder.DDDDDDI n p u t T u r b o c o d e i n t e r n a l i n t e r l e a v e rO u t p u tO u t p u t1 s t c
24、o n s t i t u e n t e n c o d e r2 n d c o n s t i t u e n t e n c o d e rkckckxkxzkzFigure 5.1.3-2: Structure of rate 1/3 turbo encoder (dotted lines apply for trellis termination only)2. turbo 码尾比特的添加当一个码块的所有信息位编码完成时,将移位寄存器的值反馈到编码器输入端继续进行编码,进行 3 次编码,3*4=12 位比特,得到的尾比特添加到信息位编码的后面。前三位尾比特用来结束第一个子编码器,如上图,将输入接口到虚线上,得到 2*3=6 位输出,在第一个子编码器进行尾比特编码时,第二个编码器停止工作。第一个编码器结束后,进行第二个编码器的尾比特生成,同样得到 6bits信息。这 12 位信息的最终在输出端可表示如下顺序:, , , Kxd)0( 1)0(KzKxd)0(21)0(3Kz, , , z11xz21x, , , )2(2)()()(3d3. Turbo 码交织器Turbo 码的内交织器输入比特可表示为 ,其中 K 是输入码块的比10,.Kc特的数目。Turbo 码内交织器的输出比特表示为 。10,.输入比特和输出比特之间的关系是: