LTE细说--速率匹配

来源:互联网 发布:教小孩学编程 编辑:程序博客网 时间:2024/04/30 10:08

本篇首先讲述速率匹配的具体过程, 然后讲述速率匹配的具体参数含义. (这里针对的是Turbo编码的速率匹配, 卷积码速率匹配过程较简单, 这里就不说了.)

如协议中速率匹配的原理图, dk是Turbo码的三路输出,分别经过子交织器后,得到三路vk, wk把三路vk串行收集在一起, 经过打孔或重复过程得到物理信道要传输的比特ek.

该过程是基于码块处理的, 多个码块需要多次处理后, 将输出串行级联.
码块大小为3*D, D是一路dk的大小. 子交织器有固定的32列, 行大小:
$R=\left\lceil D/32 \right\rceil  .
比特收集后的长度:
$W=3\times\text{32}\times\text{R}\ge\text{3}\times\text{D}

单个进程单个流的soft buffer大小为:
${{N}_{IR}}=\left\lfloor \frac{{{N}_{soft}}}{{{K}_{\text{MIMO}}}\cdot \min \left( {{M}_{\text{DL }\!\!\_\!\!\text{ HARQ}}},\ {{M}_{\text{limit}}} \right)} \right\rfloor

其中Nsoft代表UE能够处理的数据最大缓存,KMIMO是由流个数决定的参数可为1或2, 剩下的那个最小值是指有多少个HARQ进程, 因为每个HARQ进程都要分相同大小的soft buffer.
其中每一个码块的soft buffer大小为:
${{N}_{cb}}=\min \left( \left\lfloor \frac{{{N}_{IR}}}{C} \right\rfloor ,\text{W} \right)

这里C为码块个数.

G是根据分配的可用RB资源所能传输的总比特数. E是每个码块进行速率匹配后的输出长度.中间做的一些变换,是为了当G不能被C整除时, 保证每个码块的E都是整数.

比较复杂的是每次从循环buffer Ncb中取数的起点位置K0的确定.
${{k}_{0}}=R\cdot \left( 2\cdot \left\lceil {{N}_{cb}}/(8R) \right\rceil \cdot r{{v}_{idx}}+2 \right)

这里rvidx=0,1,2,3.决定了每次取数的起始位置. 假设Ncb=W=96*R, 那么每次的起始位置为2R, 26R, 50R, 74R, 也就是每次偏移1/4的buffer大小. 而第一次为什么2R的系统信息不发送呢, 这是为了提高高码率情况下的解码性能, 具体大家可以搜搜3gpp相关的提案.

最后就是每个码块打孔和重复的过程了:
while (k < E)
         // 下面的if条件是判断是否是交织时插入的Null比特, 如果是则跳过, 然后j++; 如果不是Null则输出, 然后k++, 再j++. 其中mod实现了循环buffer.

        if ${{w}_{({{k}_{0}}+j)\bmod {{N}_{cb}}}}\ne NULL

                ${{e}_{k}}={{w}_{({{k}_{0}}+j)\bmod {{N}_{cb}}}} ;

                k++

        end if
        j++
end while

好了, 大功告成, 大家看完这篇文章如果还没理解速率匹配过程, 那就是你是否仔细的原因了. 避免浮躁, 慢慢体会协议的用意.

0 0