TS38.212

发端编码

CRC attachment

[trBlkCrc, trBlkCrcLen] = pdschCrcEncode(data)

TB 和 CRC生成多项式进行二进制除法相除所得到的余数为CRC部分(没有进位,使用XOR来代替减法)。主要用来检测或校验数据传输后可能出现的错误。在CB级的CRC校验之后再对TB级的CRC进行验证,提高了正确率。

pdsch中用到的生成多项式:

gCRC24A (D)=[D24 +D23 +D18 +D17 +D14 +D11 +D10 +D7 +D6 +D5 +D4 +D3 +D+1]    L = 24; 

gCRC16 (D)=[D16 +D12 +D5 +1]    L =16;

     trBlkLen > 3824,生成多项式选用CRC24A,否则选用CRC16。

gCRC24B(D)=[D24 +D23 +D6 +D5 +D+1]   L=24; 

     codeblocksegement中每个CB进行CRC时使用多项式24B。

TB级CRC流程如下: 

LDPC编码设计

为了能支持IR-HARQ、以及适用于各种块大小和不同的码率,LDPC码在编码时需要可调节的设计。编码时,校验矩阵H会根据基本图BG(2个)和lifting size(Z 范围2~384)生成,这两个参数会根据码块大小、码率来选取。同一幅基本图多个Z值的设计使得编码可以适用于多种码长,并且这样的设计便于将计算分解为更多的较小的独立原子单元,因此,可以在硬件中更有效地实现更大的并行性。

校验矩阵生成方法:

The parity check matrix for NR structured LDPC codes can be defined by the base graph (BG), shift size Z, and shift coefficients ( Pij ), as follows: 1s and 0s in BG are replaced by a circularly-shifted Identity matrix and zero matrix of size Z x Z, respectively. The shift coefficients Pij are right cyclic shifts applied to the identity matrix for (i,j)-th element in BG. 

LDPC base graph selection

bgn = pdschLdpcBaseGraphSel(trblklen, R)

BG1适用于长码块高码率。BG2适用于短码块低码率。

BG1 (dimension 46 × 68, Kb = 22 systematic columns) is mainly designed for block-sizes within approximately 300 to 8448 bits, code-rates between approximately 8/9 and 1/3, and further lower rates via repetition. 

BG2 (dimension 42 × 52, Kb ∈{6,8,9,10} systematic columns) is mainly designed for block-sizes within 40 to 3840 bits, code-rates between approximately 2/3 and 1/5, and further lower rates via repetition.

基本图选择流程如下: 

想要达到高码率,基本图不可以过小。

对于一个给定的码长,基本图越小,Z的值越大,越有利于解码时的并行处理,这样可以减小延迟、增大吞吐量。

Code block segmentation and code block CRC attachment

blkSeg = pdschLdpcCodeBlockSegment(trBlkCrc, bgn) 

i) 确定码块可以达到的最大长度Kcb:

For LDPC base graph type 1 : Kcb = 8448

For LDPC base graph type 2 : Kcb = 3840

   过长的码块会被分割为多个码块,并对每个码块进行CRC。

ii) 确定码块个数

   if B (Transport blocksize) < Kcb

  L = 0

  C (number of codeblocks) = 1

  B' = B   // this mean 'No Segmentation'.

   else

  L = 24

  C = Ceiling(B/(Kcb - L))

  B' = B + C * L

iii) TB分到每个码块中的比特数

   K'(the number of bits in each code block) = B'/C

iv) 确定Kb

   For LDPC base graph type 1

Kb = 22

   For LDPC base graph type 2

if B (Transport blocksize) > 640

Kb = 10

else if B (Transport blocksize) > 560

Kb = 9   

else if B (Transport blocksize) > 192

Kb = 8

else 

Kb = 6

v) find the minimum value of  Zc such that (Kb * Zc) >= K’

   Zc=2^j *{2,3,5,7,9,11,13,15}  for  j = 0,1,2, 3, 4, 5 excluding those values exceeding Z = 384. 

vi) 确定码块长度K

   set K = 22 Zc for LDPC base graph 1

         K = 10 Zc for LDPC base graph 2

vii) perform segmentation and add CRC bits

   for k = K' to K-1  // Insertion of filler bis 

   Filler bits (or zero-padding) are appended to each CB before LDPC encoding, to match the information block-size to the encoder input size. 

Channel coding LDPC

codedBlk = pdschLdpcEncode(blkSeg, bgn)

for LDPC base graph 1:N = 66Z

for LDPC base graph 2:N = 50Zc

填充位改为0后再进行编码,输出时填充位还是NULL

对前2*Zc比特打孔可以在不改变码率的情况下使输出包含跟多的冗余比特,提高性能

Rate-matching and bit-selection

codeWord = pdschLdpcRateMatch(codedBlk, outlen, rv, mod, nLayers)

当不同TTI的数据比特发生改变时,为了匹配物理信道的承载能力,输入序列中的一些比特将被重发或者打孔,以确保在传输信道复用后总的比特率与所配置的物理信道承载能力相一致。

i)circular buffer length Ncb =min( N, Nref ) 

ii)determine Er

if ther -th coded block is not scheduled for transmission as indicated by CBGTI according to Subclause 5.1.7.2 for DL-SCH and 6.1.5.2 for UL-SCH in [6, TS 38.214] 

Er =0; 

else

Er is determined by

N L  is the number of transmission layers that the transport block is mapped onto; 

Qm is the modulation order;

G is the total number of coded bits available for transmission of the transport block; 

C’ 

iii)determine K0 by rv

iV)从K0开始,跳过填充比特,取Er个比特作为输出

关于Nref

通过限制buffer大小限制最低码率,从而限制延迟大小。

Typically, LDPC decoding latency depends on the number of edges in the base graph used for decoding. Thus, transmissions at higher code-rates (e.g. 1st transmission or higher MCS) can be decoded faster compared to the transmissions at lower rates (e.g. soft combined 1st and 2nd transmission or lower MCS). Thus, the decoding latency for large packets can be reduced by limiting (via LBRM) the lowest rate supported by such packets. This allows very high decoding throughput and lower latency. LBRM is thus an important factor that not only affects the UE complexity from the soft buffer perspective (or HARQ storage), but also facilitates decoding latency reduction. 

关于K0

rv3的开始位置靠后可以适应初传未收到的情况。

Defining the starting bit location of RV3 to be closer to the end of the LDPC codeword, allows more overlap with the systematic portion. Then, RV3 contains a part of the systematic bits as well as some extra parity bits which are not included in RV0. This results in RV3 being self-decodable up to a higher code-rate compared to the case it is defined uniformly. 

关于C’

C'=C if CBGTI is not present in the DCI scheduling the transport block and C'is the number of scheduled code blocks of the transport block if CBGTI is present in the DCI scheduling the transport block.

Bit-interleaving

A post rate-matching bit-interleaver is applied and it is limited to each code block individually. A row-column interleaver with number of rows equal to the modulation order, and row-wise write and column- wise read is included at the output of the rate-matching. This can improve the performance by enabling systematic bit priority ordering for the first redundancy version. 

CB内在速率匹配之后进行交织,将数据排列在行数为调制阶数的矩阵中,行写列读。

Code block concatenation 

直接将上一部分的输出相连


收端解码

Rate recovery

codedBlk = pdschLdpcRateRecover(codeWord, trBlkLen, codeRate, rv, modu, rank);

解速率匹配模块设计用来处理速率匹配的相反过程,将收到的比特恢复到原来的位置,用约定的0或1填充速率匹配时打掉的比特。

在解速率匹配的时候需要确定:

Ncb,K0,E    速率匹配

K,K’  确定填充比特位置

C,N  确定输出size 

i)根据E来进行码块的分割

ii)根据Qm来进行解交织,列写行读

iii)恢复(filler bits  K0起点  环形循环) 不知道的用0填充 

Channel decoding

blkSeg = pdschLdpcDecode(codedBlk, bgn);

i)由N求得Zc 进而得到K

ii)2*Zc打孔的恢复

iii)解码 输出整个CB

Code block desegment

[trBlkCrc, cbErr] = pdschLdpcCodeBlockDesegment(blkSeg, bgn, trBlkCrcLen);

i)确定K’

ii)每一块进行CRC校验

iii)结果直接连接

CRC decode

[trBlk, tbErr] = pdschCrcDecode(trBlkCrc);

输入trBlkCrc 和 CRC生成多项式进行二进制除法相除所得到的余数为0 则传输正确

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容