发明内容
有鉴于此,本发明提供一种交织速率匹配和解交织解速率匹配方法,能够减少速率匹配时对缓存器的读写操作。
一种交织速率匹配方法,包括:
a、根据列交织模式P(j)和各个子块交织矩阵的头部填充比特数目ND确定各个子块交织矩阵的修正列交织模式P(j)′=(P(j)+Δ)modC;利用各个子块交织矩阵的修正列交织模式确定相应子块交织矩阵的交织算子;将编码输出的比特流写入各个子块交织矩阵,不进行比特填充;按照冗余版本确定本次传输数据的起始位置所在的子块交织后矩阵以及列编号i;其中,所述C为子块交织矩阵的列数,Δ=C-NDmodC;若确定的所述子块交织后矩阵对应信息子块交织矩阵,则执行步骤b,否则,执行步骤d;
b、确定与i对应的所述信息子块交织矩阵的有效行,依次将所述信息子块交织矩阵的第n行与所述信息子块交织矩阵的交织算子第i行的转置相乘,并依次输出相乘结果;其中,n由小到大依次取所述信息子块交织矩阵的有效行;直到所有输出的比特数满足速率匹配要求,或将得到的所有编码比特均输出;
c、判断第i行是否为交织算子的最后一行,若是,则令i=1,执行步骤d,否则将i自加,返回步骤b;
d、确定与i对应的各个校验子块交织矩阵的有效行;在各个校验子块交织矩阵中,选择第n行为与i对应的有效行的校验子块交织矩阵;判断选择出的各个校验子块交织矩阵的第P(i)′列是否为未填满的列,并根据判断结果排列选择出的各个校验子块交织矩阵,并按照该排列顺序,依次将选择出的校验子块交织矩阵中的第n行与相应校验子块交织矩阵的交织算子第i行的转置相乘,并依次输出相乘结果;直到所有输出的比特数满足速率匹配要求,或将得到的所有编码比特均输出;其中,n依次取1,2,...,N,N为各个校验子块交织矩阵的最大行数;
e、判断第i行是否为交织算子的最后一行,若是,则令i=1,执行步骤b,否则将i自加,返回步骤d。
较佳地,所述确定与i对应的所述信息子块交织矩阵的有效行为:判断P(i)′是否小于MmodC,若是,则将信息子块交织矩阵的第
行作为与i对应的所述信息子块交织矩阵的起始行,否则,将信息子块交织矩阵的第
行作为与i对应的所述信息子块交织矩阵的起始行;判断所述信息子块交织矩阵的第P(i)′列是否为未填满的列,若是,则将所述信息子块交织矩阵的倒数第二行作为与i对应的所述信息子块交织矩阵的结束行,否则,将所述信息子块交织矩阵的最后一行作为与i对应的所述信息子块交织矩阵的结束行;其中,当前码块CB为第一个CB时,所述M为码块分割时填充的比特数目,当前码块CB为非第一个CB时,所述M为0;
将信息子块交织矩阵中在与i对应的起始行同与i对应的结束行之间的行,作为与i对应的相应校验子块交织矩阵的有效行,且所述有效行包括所述起始行和结束行;
所述确定与i对应的各个校验子块交织矩阵的有效行为:
对于第一个校验子块交织矩阵,判断P(i)′是否小于MmodC,若是,则将第
行作为与i对应的所述第一个校验子块交织矩阵的起始行,否则,将第
行作为与i对应的所述第一个校验子块交织矩阵的起始行;判断所述第一个校验子块交织矩阵的第P(i)′列是否为未填满的列,若是,则将所述第一个校验子块交织矩阵的倒数第二行作为与i对应的所述第一个校验子块交织矩阵的结束行,否则,将所述第一个校验子块交织矩阵的最后一行作为与i对应的所述第一个校验子块交织矩阵的结束行;
对于其它校验子块交织矩阵中的任一校验子块交织矩阵,将所述任一校验子块交织矩阵的第一行作为与i对应的所述任一校验子块交织矩阵的起始行;判断所述任一校验子块交织矩阵的第P(i)′列是否为未填满的列,若是,则将所述任一校验子块交织矩阵的倒数第二行作为与i对应的所述任一校验子块交织矩阵的结束行,否则,将所述任一校验子块交织矩阵的最后一行作为与i对应的所述任一校验子块交织矩阵的结束行;
将各个校验子块交织矩阵中在与i对应的起始行同与i对应的结束行之间的行,作为与i对应的相应校验子块交织矩阵的有效行,且所述有效行包括所述起始行和结束行。
较佳地,所述根据判断结果排列选择出的各个校验子块交织矩阵为:将第P(i)′列为填满的列的校验子块交织矩阵排列在前,将第P(i)′列为未填满的列的校验子块交织矩阵排列在后;对于第P(i)′列为填满的列的各个校验子块交织,按照原顺序排列;对于第P(i)′列为未填满的列的各个校验子块交织,按照原顺序排列。
较佳地,步骤a中所述将编码输出的比特流写入各个子块交织矩阵包括:将编码输出的信息比特流写入信息子块交织矩阵,将编码输出的第一个校验比特流写入第一个校验子块交织矩阵,将编码输出的第二个校验比特流写入第二个校验子块交织矩阵。
较佳地,所述利用修正列交织模式确定交织算子为:交织算子为方阵,列数C与所述子块交织矩阵的列数相等,且交织算子第j行的第P(j)′列元素取值为1,第j行的其他元素全部取0,其中,j=1,2,...,C。
较佳地,各个交织算子的任一行和各个子块交织矩阵的任一行,均利用与机器字长相匹配的单元表示,其中所述单元的每个有效比特对应表示相应交织算子任一行中的每个元素或相应子块交织矩阵任一行的每个元素;
子块交织矩阵中的任一行与相应子块交织矩阵的交织算子的第i行转置的相乘操作为:用于表示子块交织矩阵中所述任一行的单元与用于表示所述相应子块交织矩阵的交织算子第i行的单元进行逻辑与操作。
一种解交织解速率匹配的方法,包括:
a、根据列交织模式P(j)和子块交织矩阵的头部填充比特数目ND确定修正列交织模式P(j)′=(P(j)+Δ)modC;按照冗余版本确定本次传输数据的起始位置所在的子块交织后矩阵以及列编号i;将确定的所述子块交织后矩阵对应的子块交织矩阵作为当前子块交织矩阵,将接收的第一个软比特作为当前软比特;
b、若所述当前子块交织矩阵为信息子块交织矩阵或第一个校验子块交织矩阵,则执行步骤c,否则,执行步骤e;
c、判断P(i)′是否小于MmodC,若是,则将第
行作为起始行,否则,将第
行作为起始行;判断当前子块交织矩阵的第P(i)′列是否为未填满的列,若是,则将第N-1行作为结束行,否则,将最后一行作为结束行;从当前软比特开始,依次读取软比特,写入当前子块交织矩阵的第P(i)′列的起始行到结束行;若已读取出所有接收的软比特,则将各个子块交织矩阵中的元素按行读出,并结束本流程,否则执行步骤d;其中,所述C为子块交织矩阵的列数;
d、判断i是否等于C,若是,则执行步骤g,否则将i自加,将下一个需要读取的软比特作为当前软比特,并返回步骤c;
e、将第一行作为起始行,判断前子块交织矩阵的第P(i)′列是否为未填满的列,若是,则将第N-1行作为结束行,否则,将最后一行作为结束行;从当前软比特开始,依次读取软比特,写入当前子块交织矩阵的第P(i)′列的起始行到结束行;若已读取出所有接收的软比特,则将各个子块交织矩阵中的元素按行读出,并结束本流程,否则执行步骤f;
f、判断i是否等于C,若是,则执行步骤g,否则将i自加,将下一个需要读取的软比特作为当前软比特,并返回步骤e;
g、令i=1,将下一个需要读取的软比特作为当前软比特,判断当前子块交织矩阵是否为最后一个子块交织矩阵,若是,则将第一个子块交织矩阵作为当前子块交织矩阵,并返回步骤b;否则,将下一个子块交织矩阵作为当前子块交织矩阵,并返回步骤b。
较佳地,将软比特写入当前子块交织矩阵的第P(i)′列的一行的操作为:
若所述第P(i)′列的一行为空,则直接将所述当前软比特保存在该行上;
若所述第P(i)′列的一行不为空,则将该行的值与所述软比特进行合并,将合并结果保存在该行上。
一种交织速率匹配方法,包括:
a、根据列交织模式P(j)和各个子块交织矩阵的头部填充比特数目ND确定各个子块交织矩阵对应的修正列交织模式P(j)′=(P(j)+Δ)modC;利用各个子块交织矩阵对应的修正列交织模式确定各个子块交织矩阵的交织算子;将编码输出的比特流写入各个子块交织矩阵,不进行比特填充,将所有子块交织矩阵按比特流顺序排列;其中,所述C为子块交织矩阵的列数,Δ=C-NDmodC;
b、对信息子块交织矩阵的交织算子的第i行执行如下步骤:
确定与i对应的所述信息子块交织矩阵的有效行,依次将所述信息子块交织矩阵的第n行与所述信息子块交织矩阵的交织算子第i行的转置相乘,并将相乘结果依次输出到循环缓存器中;其中,n由小到大依次取所述信息子块交织矩阵的有效行;
i依次取1,2,...,I,I为所述信息子块交织矩阵的交织算子的行数;
c、令i′=1;
d、确定与i′对应的各个校验子块交织矩阵的有效行;在各个校验子块交织矩阵中,选择第n′行为与i′对应的有效行的校验子块交织矩阵;判断选择出的各个校验子块交织矩阵的第P(i)′列是否为未填满的列,并根据判断结果排列选择出的各个校验子块交织矩阵,并按照该排列顺序,依次将选择出的校验子块交织矩阵中的第n′行与相应校验子块交织矩阵的交织算子第i′行的转置相乘,并将相乘结果依次输出到循环缓存器中;其中,n′依次取1,2,...,N′,N′为各个校验子块交织矩阵的最大行数;
e、判断各个校验子块交织的交织算子的第i′行是否为相应交织算子的最后一行,若是,则执行步骤e,否则将i′自加,返回步骤d;
f、根据冗余版本号从循环缓存器中输出符合速率匹配要求的比特。
较佳地,所述确定与i对应的所述信息子块交织矩阵的有效行为:判断P(i)′是否小于MmodC,若是,则将信息子块交织矩阵的第
行作为与i对应的所述信息子块交织矩阵的起始行,否则,将信息子块交织矩阵的第
行作为与i对应的所述信息子块交织矩阵的起始行;判断所述信息子块交织矩阵的第P(i)′列是否为未填满的列,若是,则将所述信息子块交织矩阵的倒数第二行作为与i对应的所述信息子块交织矩阵的结束行,否则,将所述信息子块交织矩阵的最后一行作为与i对应的所述信息子块交织矩阵的结束行;其中,当前码块CB为第一个CB时,所述M为码块分割时填充的比特数目,当前码块CB为非第一个CB时,所述M为0;
将信息子块交织矩阵中在与i对应的起始行同与i对应的结束行之间的行,作为与i对应的相应校验子块交织矩阵的有效行,且所述有效行包括所述起始行和结束行;
所述确定与i对应的各个校验子块交织矩阵的有效行为:
对于第一个校验子块交织矩阵,判断P(i′)′是否小于MmodC,若是,则将第
行作为与i′对应的所述第一个校验子块交织矩阵的起始行,否则,将第
行作为与i′对应的所述第一个校验子块交织矩阵的起始行;判断所述第一个校验子块交织矩阵的第P(i′)′列是否为未填满的列,若是,则将所述第一个校验子块交织矩阵的倒数第二行作为与i′对应的所述第一个校验子块交织矩阵的结束行,否则,将所述第一个校验子块交织矩阵的最后一行作为与i′对应的所述第一个校验子块交织矩阵的结束行;
对于其它校验子块交织矩阵中的任一校验子块交织矩阵,将所述任一校验子块交织矩阵的第一行作为与i′对应的所述任一校验子块交织矩阵的起始行;判断所述任一校验子块交织矩阵的第P(i′)′列是否为未填满的列,若是,则将所述任一校验子块交织矩阵的倒数第二行作为与i′对应的所述任一校验子块交织矩阵的结束行,否则,将所述任一校验子块交织矩阵的最后一行作为与i′对应的所述任一校验子块交织矩阵的结束行;
将各个校验子块交织矩阵中在与i对应的起始行同与i′对应的结束行之间的行,作为与i′对应的相应校验子块交织矩阵的有效行,且所述有效行包括所述起始行和结束行。
较佳地,所述根据判断结果排列选择出的各个校验子块交织矩阵为:将第P(i′)′列为填满的列的校验子块交织矩阵排列在前,将第P(i′)′列为未填满的列的校验子块交织矩阵排列在后;对于第P(i′)′列为填满的列的各个校验子块交织,按照原顺序排列;对于第P(i′)′列为未填满的列的各个校验子块交织,按照原顺序排列。
较佳地,步骤a中所述将编码输出的比特流写入各个子块交织矩阵包括:将编码输出的信息比特流写入信息子块交织矩阵,将编码输出的第一个校验比特流写入第一个校验子块交织矩阵,将编码输出的第二个校验比特流写入第二个校验子块交织矩阵;
所述校验子块交织矩阵的排列顺序为:所述第一个校验子块交织矩阵排列在前,所述第二个校验子块交织矩阵排列在后。
较佳地,所述利用修正列交织模式确定交织算子为:交织算子为方阵,列数C与所述子块交织矩阵的列数相等,且交织算子第j行的第P(j)′列元素取值为1,第j行的其他元素全部取0,其中,j=1,2,...,C。
较佳地,各个交织算子的任一行和各个子块交织矩阵的任一行,均利用与机器字长相匹配的单元表示,其中所述单元的每个有效比特对应表示相应交织算子任一行中的每个元素或相应子块交织矩阵任一行的每个元素;
子块交织矩阵中的任一行与相应子块交织矩阵的交织算子的第i行转置的相乘操作为:用于表示子块交织矩阵中所述任一行的单元与用于表示所述相应子块交织矩阵的交织算子第i行的单元进行逻辑与操作。
一种解交织解速率匹配的方法,包括:
a、根据列交织模式P(i)和子块交织矩阵的头部填充比特数目ND确定修正列交织模式P(i)′=(P(i)+Δ)modC;按照冗余版本确定本次传输数据的起始位置所在的子块交织后矩阵以及列编号i;将确定的所述子块交织后矩阵对应的子块交织矩阵作为当前子块交织矩阵,将接收的第一个软比特作为当前软比特;
b、若所述当前子块交织矩阵为信息子块交织矩阵或第一个校验子块交织矩阵,则执行步骤c,否则,执行步骤e;
c、判断P(i)′是否小于MmodC,若是,则将第
行作为起始行,否则,将第
行作为起始行;判断当前子块交织矩阵的第P(i)′列是否为未填满的列,若是,则将第N-1行作为结束行,否则,将最后一行作为结束行;从当前软比特开始,依次读取软比特,写入当前子块交织矩阵的第P(i)′列的起始行到结束行;若已读取出所有接收的软比特,则将各个子块交织矩阵中的元素按行读出,并结束本流程,否则执行步骤d;其中,所述C为子块交织矩阵的列数;
d、判断i是否等于C,若是,则执行步骤g,否则将i自加,将下一个需要读取的软比特作为当前软比特,并返回步骤c;
e、将第一行作为起始行,判断P(i)′是否大于C-1-ND且小于C,若是,则将第N-1行作为结束行,否则,将最后一行作为结束行;从当前软比特开始,依次读取软比特,写入当前子块交织矩阵的第P(i)′列的起始行到结束行;若已读取出所有接收的软比特,则将各个子块交织矩阵中的元素按行读出,并结束本流程,否则执行步骤f;
f、判断i是否等于C,若是,则执行步骤g,否则将i自加,将下一个需要读取的软比特作为当前软比特,并返回步骤e;
g、令i=1,将下一个需要读取的软比特作为当前软比特,判断当前子块交织矩阵是否为最后一个子块交织矩阵,若是,则将第一个子块交织矩阵作为当前子块交织矩阵,并返回步骤b;否则,将下一个子块交织矩阵作为当前子块交织矩阵,并返回步骤b。
较佳地,将软比特写入当前子块交织矩阵的第P(i)′列的一行的操作为:
若所述第P(i)′列的一行为空,则直接将所述当前软比特保存在该行上;
若所述第P(i)′列的一行不为空,则将该行的值与所述软比特进行合并,将合并结果保存在该行上。
由上述本发明的技术方案可见,本发明中,根据列交织模式和头部填充比特确定修正交织模式,并根据该修正交织模式确定交织算子,利用交织算子顺序对子块交织矩阵进行交织处理,一种方式可以根据冗余版本要求,利用交织算子对子块交织矩阵中需要输出的比特进行交织处理,在完成子块交织的同时,将按协议排序后的子块交织结果直接输出,直到达到相应的码率要求;另一种方式可以利用交织算子逐个对子块交织矩阵进行交织处理,在完成子块交织的同时,将按协议排序后的子块交织结果输出到循环缓存器中,再根据冗余版本要求输出相应的交织后比特。从而在速率匹配过程中,一方面大大减少了使用的缓存器以及对缓存器的读写操作,另一方面不需要进行子块交织矩阵的头部比特填充。
具体实施方式
为使本发明的目的、技术手段和优点更加清楚明白,以下结合附图对本发明做进一步详细说明。
本发明的基本思想是:将子块交织和速率匹配过程相结合,相应的,将解速率匹配和子块解交织过程相结合,联合简化其间所需的缓存器,从而减少对缓存器的读写。
首先对交织过程进行分析:
列交织过程可以理解为对交织矩阵(这里记为Y)做列初等变换。给定尺寸为Rsubblock TC×Csubblock TC的矩阵Y,交换Y的i,j两列相当于对Y右乘一个初等矩阵Eij:
Y′=Y×Eij (1)
其中Eij是由Csubblock TC阶单位矩阵交换其i,j列得到。根据矩阵列初等变换原理,设子块交织矩阵的行为Rxubblock TC,列为Csubblock TC;设输入比特序列为
按行写入子块交织矩阵后得到Rsubblock TC×Csubblock TC矩阵为:
假定列交织模式表示为P(k), 则按照该列交织模对矩阵Y进行列交织后的矩阵即可以表示为:
设交织算子POr为一个Csubblock TC×Csubblock TC矩阵,其中POr第i行第P(i)列取值为1,行内其它元素全部取0。图2为POr第j行的生成方式,
根据上述交织算子的形式以及前述矩阵Y和Y′的关系,则由矩阵Y和交织算子可以得到矩阵Y′,即:
Y′=Y×(POr)′ (2)
可见,利用交织算子可以实现子块交织的过程,相应的,利用交织算子也可以进行子块解交织,具体可表示为:
Y=Y′×(POr) (3)
其中Y′×(POr)=Y×(POr)′×(POr)=Y×E=Y
由上述对于子块交织的分析可见,利用交织算子能够实现子块交织和解交织过程。
本发明中,正是利用交织算子,依次对每个子块交织矩阵进行处理,并直接将交织结果以协议规定方式保存在循环缓存器中,而不需要中间的暂存单元;或者,按照协议规定方式,利用交织算子对子块交织矩阵中需要输出的比特进行交织处理,将符合速率要求和冗余版本规定的交织结果输出,不需要循环缓存器。
另外,背景技术中描述的交织速率匹配和解交织解速率匹配方法中,从编码器输出的比特流在写入子块交织矩阵时,存在比特流不能填满子块交织矩阵的情况,需要对未填满部分进行比特填充,通常在子块交织矩阵的头部进行比特填充,这些填充比特是无效比特,在交织速率匹配后,并不进行需要输出。但是,在头部出现的填充比特,仍然需要对其进行标记,以保证交织结果的正确。
在本发明的交织速率匹配和解交织解速率匹配方法中,在将编码比特流写入子块交织矩阵时,不需要进行比特填充,直接依次按照行优先顺序进行写入,而通过交织算子的设置,来考虑填充比特的位置,从而简化交织速率匹配过程的处理。
下面通过两个实施例说明本发明的具体实现方式。
实施例一:
在本实施例中,在利用交织算子进行子块交织处理后,直接根据冗余版本号,对需要输出的比特进行交织处理,并将交织后的比特流直接写入码块级联缓存,实现速率匹配。
具体的,本实施例中的速率匹配方法流程包括:
步骤101,根据列交织模式P(j)和各个子块交织矩阵的头部填充比特数目ND确定各个子块交织矩阵的修正列交织模式P(j)′。
本步骤中,根据各个子块交织矩阵的头部填充比特数,对各个子块交织矩阵的列交织模式进行修正,从而保证该修正的列交织模式能与不进行头部比特填充的各个子块交织矩阵相匹配。
如前所述,本发明中,直接将编码比特流写入各个子块交织矩阵,而不进行比特填充,从最终形成的子块交织矩阵来看,与背景技术中形成的子块交织矩阵相比,差别在于头部填充比特不存在了,而对于子块交织矩阵尾部进行的比特填充则可以不予考虑。系统给出的列交织模式P(j),是与进行比特填充后形成的子块交织矩阵相匹配的,因此,本发明中未在子块交织矩阵头部填充比特,则对应的列交织模式也需要进行修正,以与本发明形成的子块交织矩阵相匹配。
具体的,不进行头部比特填充,相当于将进行头部比特填充的子块交织矩阵的第j列移到第(j+Δ)modC列,因此,列交织模式的修正方式为:P(j)′=(P(j)+Δ)modC,从而相应的,将子块交织矩阵的第P(j)列移到P(j)′列。这样,修正后的列交织模式能与不进行头部填充的子块交织矩阵匹配。其中,C为子块交织矩阵的列数,Δ=C-NDmodC。
由于各个子块交织矩阵的头部填充比特可能不同,因此,各个子块交织矩阵的修正列交织模式也可能不同。例如,在LTE系统中,信息比特流形成的信息子块交织矩阵和第一个校验比特流形成的第一个校验子块交织矩阵的修正列交织模式相同,但与第二个校验比特流形成的第二个校验子块交织矩阵的修正列交织模式则不同。
步骤102,利用各个子块交织矩阵的修正列交织模式生成相应子块交织矩阵的交织算子。
具体生成交织算子的方式如前所述,即交织算子POr为一个Csubblock TC×Csubblock TC矩阵,其中POr第j行第P(j)列取值为1,第j行内其它元素全部取0,j的取值为0,1,...Csubblock TC。由于各个子块交织矩阵的列交织模式可能不同,因此,各个子块交织矩阵的交织算子也可能不同。例如,在LTE系统中,信息子块交织矩阵和第一个校验子块交织矩阵的交织算子相同,但与第二个校验子块交织矩阵的交织算子则不同。
步骤103,将编码输出的比特流写入各个子块交织矩阵,不进行比特填充。
从编码器输出的n个比特流dk (0),dk (1),......dk (n),按行优先的顺序写入固定列宽的子块交织矩阵,并且不进行比特填充。具体进行比特填充和不进行比特填充下形成的子块交织矩阵示意图如图3所示。子块交织矩阵的行数应选择能容纳相应比特流长度的最小值。
对于采用不同的列交织模式的比特流,表现为对应子块交织矩阵的排列顺序和交织算子的差别。在3GPP LTE系统中,将编码输出的信息比特流写入信息子块交织矩阵,并将输出的第一个校验比特流写入第一个校验子块交织矩阵,将输出的第二个校验比特流写入第二个校验子块交织矩阵,且第一个校验子块交织矩阵排列在前,第二个校验子块交织矩阵排列在后。
步骤104,根据冗余版本号,确定本次传输数据的起始位置所在的子块交织后矩阵A以及列编号i。
对于不同的冗余版本号,传输数据的起始位置会有所差异,在本实施例中,仅对本次需要传输的数据进行子块交织,因此,需要在进行交织前,确定此次需要传输数据的起始位置。每个子块交织矩阵进行子块交织后会形成相应的子块交织后矩阵。根据冗余版本号确定的数据传输起始位置指的是在进行子块交织后得到的交织后比特流中的起始位置,也就是在子块交织后矩阵中的位置。而每个子块交织后矩阵对应一个子块交织矩阵,由子块交织后矩阵的起始位置能够推出对应子块交织矩阵中的相应位置,则可以直接从该位置起进行交织处理,那么得到的输出比特即为本次传输数据的起始比特,于是可以将其直接输出到码块级联缓存,并顺次将后续产生的交织后比特输出,直到输出的比特数满足速率匹配要求,从而实现了子块交织和速率匹配的联合简化,避免了在此过程中缓存器的引入,也由于不需要进行起始位置前比特的子块交织处理,从而节省了处理时间。
步骤105,判断子块交织后矩阵A对应的子块交织矩阵是信息子块交织矩阵还是校验子块交织矩阵,若是前者,则执行步骤106,否则,执行步骤109。
从本步骤开始进行子块交织操作。如前所述,该子块交织操作从确定的起始位置开始。由于需要对子块交织矩阵进行交织处理,因此具体的交织处理从子块交织后矩阵A对应的子块交织矩阵开始进行。
在现有协议下,信息比特形成的子块交织矩阵独自进行交织,形成一个完整的信息比特数据块;校验比特可能形成多个校验子块交织矩阵,这些校验子块交织矩阵以行为单位间隔排列,所有校验子块交织矩阵作为一个整体进行交织,当按列顺序读出交织后的校验子块交织矩阵中的比特时,即依次读取各个校验子块交织矩阵的相应比特。
根据现有协议的上述特点,本发明中在进行交织并顺序输出交织后比特时,需要针对信息子块交织矩阵和校验子块交织矩阵的不同特点进行交织处理。具体的,对于信息子块交织矩阵,可以单独对该信息子块交织矩阵进行交织处理,并输出交织后结果;而对于校验子块交织矩阵,需要对由各个校验子块交织矩阵的相应列构成的整体进行交织处理,并输出交织后结果。
因此,需要根据进行交织处理的子块交织矩阵为信息子块交织还是校验子块交织矩阵进行不同的处理。
步骤106,确定与i对应的信息子块交织矩阵的有效行。
如前所述,本发明中未对子块交织矩阵进行比特填充,因此对于某些列来说,可能该列中并非所有的行均为填满的状态(对应原本应当填充比特的列不会被填满),因此在进行交织后比特输出时,需要判断输出的结束行位置。
同时,对于第一个编码块(CB),还存在进行码块分割时的填充比特,该填充比特在输出的信息比特流和第一个校验比特流中存在,也就是在信息子块交织矩阵和第一个校验子块交织矩阵中存在,且位于子块交织矩阵的头部。但是,该码块分割时的填充比特是不参与交织及其后的速率匹配的,因此,这些码块分割时的填充比特会影响子块交织矩阵中进行交织处理时的起始行。那么在进行交织和比特输出时,对于信息比特流和第一个校验比特流,还需要考虑是否存在这些码块分割时的填充比特。
本发明中,在任一子块交织矩阵中的任一列,均需要确定与该列对应的起始行和结束行,其中,将从起始行开始到结束行为止的行,作为所述任一子块交织矩阵中任一列的有效行。同时,子块交织矩阵的任一列均对应交织算子的某一行,因此,也将上述任一子块交织矩阵中任一列的有效行称为该子块交织矩阵与交织算子的当前行i对应的有效行。
具体地,对于信息子块交织矩阵,确定其与i对应的有效行的方式为:
判断P(i)′是否小于MmodC,若是,则将信息子块交织矩阵的第
行作为与i对应的信息子块交织矩阵的起始行,否则,将信息子块交织矩阵的第
行作为与i对应的信息子块交织矩阵的起始行;其中,当前码块CB为第一个CB时,所述M为码块分割时填充的比特数目,当前码块CB为非第一个CB时,所述M为0;
判断信息子块交织矩阵的第P(i)′列是否为未填满的列,若是,则表明第P(i)′列对应原本应当存在填充比特的列,那么该列的最后一行一定不存在编码比特,就将信息子块交织矩阵的倒数第二行作为与i对应的信息子块交织矩阵的结束行,否则,将信息子块交织矩阵的最后一行作为与i对应的信息子块交织矩阵的结束行。
其中,判断子块交织矩阵的第P(i)′列是否为未填满的列的方式为:判断P(i)′是否大于C-ND,若是,则确定第P(i)′列为未填满的列,否则,确定第P(i)′列为填满的列。
步骤107,从步骤106确定的起始行开始,到步骤106确定的结束行为止,依次将信息子块交织矩阵的每一行与信息子块交织矩阵的交织算子第i行的转置相乘,并依次输出相乘结果,直到所有输出的比特数满足速率匹配要求,或将得到的所有编码比特均输出。
如前所述,将任一子块交织矩阵的某一行与交织算子的第i行转置相乘,即能够实现读取该子块交织矩阵中第P(i)′列的目的。
本步骤,在进行子块交织矩阵中第P(i)′列读取时,仅读取该矩阵中第P(i)′列的有效行,而不会读取除有效行外的其他元素,因为这些元素要么是码块分割时的填充比特,要么是末尾未填满的位置。
通过本步骤,即可以实现将子块交织矩阵中第P(i)′列的所有有效行读出的目的。
进一步的,通过合理的硬件设计,可以大大简化相乘操作的实现复杂度。具体的,可以将交织算子的任一行和子块交织矩阵的任一行,均利用与机器字长相匹配的单元表示,这些单元的每个有效比特对应表示交织算子任一行中的每个元素或子块交织矩阵任一行的每个元素。其中,与机器字长相匹配的单元通常为机器进行运算的基本单位或其整数倍,例如8位的字节、16位的字、32位的双字等等。具体利用单元表示交织算子的任一行、子块交织矩阵的任一行的方式,可以考虑如下几种情况:
(1)若子块交织矩阵的列数刚好与上述单元相等时,则将交织算子的任一行的每个元素、子块交织矩阵的任一行的每个元素,对应利用相应单元的每个比特表示,则单元的每个比特均为有效比特;
(2)若子块交织矩阵的列数刚好是上述单元所包括比特数的N(N为大于1的整数)倍时,例如,8位的处理系统、子块交织矩阵为32列的情况;则可以将子块交织矩阵的任一行、交织算子的任一行均等分为N份,利用N个单元表示子块交织矩阵的任一行、交织算子的任一行,每个比特对应表示任一行中的每个元素,则单元的每个比特均为有效比特;
(3)若子块交织矩阵的列数M少于相应单元所包括的比特数,则仍然利用单元表示子块交织矩阵的任一行、交织算子的任一行,但其中的前M个比特对应表示子块交织矩阵的任一行、交织算子的任一行的每个元素,后面的比特标识为无效,只是为了凑齐机器处理的字长数。因此,将表示元素的前M个比特称为有效比特,其他的比特为无效比特。
(4)对于子块交织矩阵的列数是上述单元所包括比特数的非整数倍的情况,可以将其看作一个整数倍加上(3)中情况的组合,这样,一方面将子块交织矩阵分块表示,另一方面进行填充表示,从而利用整数倍的单元来表示子块交织矩阵的任一行、交织算子的任一行任一行。例如,在16位的处理系统中,子块交织矩阵为18列,则可以利用一个两个16位的字来表示子块交织矩阵的任一行、交织算子的任一行和掩码矩阵的任一行,其中,第一个16位的字表示子块交织矩阵的任一行、交织算子的任一行的前16个元素,第二个16位的字的前2个比特表示子块交织矩阵的任一行、交织算子的任一行和掩码矩阵的任一行的第17和18个元素。
举个具体的例子,在LTE系统中,子块交织矩阵为32列,则在32位或64位的处理系统中,交织算子的任一行和子块交织矩阵的任一行,都可以利用32位的双字来表示,其中,双字的每个比特表示交织算子任一行中的每个元素或子块交织矩阵任一行的每个元素。因此,本步骤中任一子块交织矩阵中的任一行c与交织算子的任一行b转置的相乘操作也可以转换为:用于表示该任一子块交织矩阵中任一行c的双字与用于表示相应交织算子该任一行b的双字进行逻辑与操作。这样,大大简化了两个相乘操作。或者,如果在8位或16位的处理系统中,则可以将LTE系统中的交织算子的任一行和子块交织矩阵的任一行,利用4个字节或两个字来表示。
步骤108,判断第i行是否为交织算子的最后一行,若是,则令i=1,执行步骤109,否则将i自加,返回步骤106。
通过步骤107~108的反复循环,即可以实现将信息子块交织矩阵中的待输出的比特进行交织以及输出交织结果的过程。在此过程中,若输出的所有比特已达到速率匹配要求或已将所有子块交织矩阵的编码比特输出,则结束本流程。若未达到,则进入步骤109,进行各个校验子块交织矩阵的交织处理和比特输出。
步骤109,确定与i对应的各个校验子块交织矩阵的有效行。
如前所述,对于各个校验子块交织矩阵,可能存在未填满的列,因此需要确定进行比特输出时各个列的结束行。
对于第一个校验子块交织矩阵,与前述信息子块交织矩阵相同,还需要考虑是否存在码块分割时的填充比特,确定各个列的起始行。而对于其他校验子块交织矩阵,则各个列的起始行均为第一行。
具体地,对于第一个校验子块交织矩阵,确定与i对应的有效行的方式与前述信息子块校验矩阵相同,这里就不再赘述。
对于其他校验子块交织矩阵,确定与i对应的结束行的方式与前述信息子块交织矩阵相同,这里就不再赘述;且均确定第一行为与i对应的起始行。
步骤110,令n=1。
以下开始对各个校验子块交织矩阵进行交织和比特输出。
步骤111,在各个校验子块交织矩阵中,选择第n行为与i对应的有效行的校验子块交织矩阵。
对于各个校验子块交织矩阵,与i对应的有效行可能各不相同,对于非有效行的元素,不需要输出,因此也不对其进行处理,只选择第n行为与i对应的有效行的校验子块交织矩阵,以在本次循环中,仅读取这些校验子块交织矩阵的第P(i)′列第n行比特。
步骤112,判断选择出的各个校验子块交织矩阵的第P(i)′列是否为未填满的列,并根据判断结果排列选择出的各个校验子块交织矩阵,并按照该排列顺序,依次将选择出的校验子块交织矩阵中的第n行与相应校验子块交织矩阵的交织算子第i行的转置相乘,并将相乘结果依次输出;直到所有输出的比特数满足速率匹配要求,或将得到的所有编码比特均输出;。
对于各个校验子块交织矩阵,可能对应的头部填充比特数目不同,即修正列交织模式不同,在读取校验子块交织矩阵时,读取的顺序也可能不同。因此,需要将选择出的校验子块交织矩阵进行排列。
具体地,将第P(i)′列为填满的列的校验子块交织矩阵排列在前,将第P(i)′列为未填满的列的校验子块交织矩阵排列在后;对于第P(i)′列为填满的列的各个校验子块交织,按照原顺序排列;对于第P(i)′列为未填满的列的各个校验子块交织,按照原顺序排列。其中原顺序指的是:在将校验比特流写入校验子块交织矩阵时,各个校验子块交织矩阵的排列顺序。
例如,如前所述,在LTE系统中存在两个顺序排列的校验子块交织矩阵,该第一个校验子块交织矩阵排列在前,第二个校验子块交织矩阵排列在后,这个顺序即原顺序;若两个校验子块交织矩阵的第P(i)′列均为未填满的列,或者,两个校验子块交织矩阵的第P(i)′列均为填满的列,则将第一个校验子块交织矩阵排在前,将第二个校验子块交织矩阵排列在后;若两个校验子块交织矩阵中,其中一个校验子块交织矩阵的第P(i)′列为未填满的列,另一个校验子块交织矩阵的第P(i)′列为填满的列,则将填满的列的校验子块交织矩阵排列在前,将未填满的列的校验子块交织矩阵排列在后。
在将选择出的校验子块交织矩阵排列好后,按照排列顺序,依次读出这些校验子块交织矩阵中的第P(i)′列的第n行,从而能够保证输出的比特与协议规定的比特输出顺序一致。
步骤113,判断n是否等于各个校验子块交织矩阵的最大行数,若是,则执行步骤114,否则,返回步骤112。
通过步骤112~113的循环,即能够将各个校验子块交织矩阵中,第P(i)′列的各有效比特读出,并依照协议规定顺序输出。
步骤114,判断第i行是否为交织算子的最后一行,若是,则令i=1,执行步骤106,否则将i自加,返回步骤109。
通过步骤109~114的反复循环,即可以实现将各个校验子块交织矩阵中的待输出的比特进行交织、并按照协议规定顺序输出交织结果的过程。在此过程中,若输出的所有比特已达到速率匹配要求或已将所有子块交织矩阵的编码比特输出,则结束本流程。若未达到,则进入步骤106,进行信息子块交织矩阵的交织处理和比特输出。
至此,本实施例中的交织速率匹配方法流程结束。由上述流程可见,本实施例中,仅对需要输出的部分进行交织处理,且在交织处理后可以直接输出到码块级联缓存。通过上述方式,将子块交织和速率匹配过程联合简化,减少了在此过程中缓存器的个数以及对于缓存器的读写。
解速率匹配的过程是速率匹配的逆过程,但是解速率匹配的处理对象不是比特信息,而是解调后的软比特信息。与上述速率匹配方法相应的解交织解速率匹配方法流程包括:
步骤201,根据编码参数确定各个子块交织矩阵的大小和头部填充比特数目,根据列交织模式P(i)和子块交织矩阵的头部填充比特数目ND确定修正列交织模式P(i)′。
在进行解速率匹配时,首先需要确定各个子块交织矩阵的大小和头部填充比特数目。本领域技术人员可知,这些可以根据编码参数确定。同时,根据列交织模式P(i)和子块交织矩阵的头部填充比特数目ND就可以依照前述交织速率匹配方法中步骤101的方式确定修正列交织模式P(i)′。
在接收端存在一个比特软合并缓存器,用于保存每个编码比特的软比特值(即该比特取值的概率信息)。具体地,该比特软合并缓存器可以利用形同子块交织矩阵的矩阵来保存各个软比特信息。
步骤202,按照冗余版本确定本次传输数据的起始位置所在的子块交织后矩阵以及列编号i。
本步骤的操作与本实施例速率匹配方法中步骤104的操作相同,这里就不再赘述。
步骤203,将步骤202中确定的子块交织后矩阵对应的子块交织矩阵作为当前子块交织矩阵,将接收的第一个软比特作为当前软比特。
接收端经过前置的各个单元的处理,能够得到一个软比特流,其中软比特流中软比特信息的排序与发送端经过交织和速率匹配后的比特流的顺序相同。
从本步骤开始进行子块解交织操作。如前所述,子块交织操作从确定的起始位置开始,相应的,子块解交织操作也从确定的数据传输的起始位置开始。
步骤204,判断当前子块交织矩阵的类型,若若当前子块交织矩阵为信息子块交织矩阵或第一个校验子块交织矩阵,则执行步骤205,否则,执行步骤207。
在前述交织速率匹配方法流程中提到,各个子块交织矩阵中可能存在未填满的列以及不需要参与交织速率匹配的分割码块时的填充比特,因此,需要对各个子块交织矩阵中的每一列确定对应的有效行。在本解交织解速率匹配方法流程中,同样也需要相同的操作,以保证在保存软比特信息时,将相应软比特保存在各个列的有效行上。
其中,如前所述,对于信息子块交织矩阵和第一个校验子块交织矩阵,需要考虑分割码块时填充比特的影响,从而其各个列中起始行是可能变化的;这使得对于信息子块交织矩阵和第一个校验子块交织矩阵而言,其具体处理与其他校验子块交织矩阵将会有所不同。因此,需要根据当前子块交织矩阵的类型,进行不同的处理。
步骤205,判断P(i)′是否小于MmodC,若是,则将第
行作为起始行,否则,将第
行作为起始行;判断当前子块交织矩阵的第P(i)′列是否为未填满的列,若是,则将第N-1行作为结束行,否则,将最后一行作为结束行;从当前软比特开始,依次读取软比特,写入软比特合并缓存器中当前子块交织矩阵的第P(i)′列的起始行到结束行。若已读取出所有接收的软比特,则将各个子块交织矩阵中的元素按行读出,并结束本流程,否则执行步骤206。
其中,C为子块交织矩阵的列数。
本步骤确定信息子块交织矩阵或第一个校验子块交织矩阵的有效行,即确定作为当前子块交织矩阵的信息子块交织矩阵或第一个校验子块交织矩阵中第P(i)′列的起始行和结束行,具体确定起始行和结束行的方式与交织速率匹配方法流程中步骤106的方式相同,这里就不再另加解释。
在确定起始行和结束行之后,从当前软比特开始,依次读取软比特,写入软比特合并缓存器中,具体保存在其中当前子块交织矩阵的第P(i)′列的起始行到结束行,这里,保存位置包括起始行和结束行。
另外,对于不同冗余版本的数据传输,传输的编码比特可能有重叠,则在第一次接收到编码比特的软比特后,直接保存在比特软合并缓存器中当前子块交织矩阵与该比特相应的位置上,在接收到后续重传的数据时,将相应编码比特的软比特与比特软合并缓存器中与该编码比特相应位置上所保存的软比特进行合并后保存在该相应位置上。
基于上述考虑,在进行软比特信息保存时,需要根据当前相应保存位置上的状态不同,进行不同的处理。具体的,若软比特合并缓存器中当前子块交织矩阵第P(i)′列的一行为空,则表明该位置的编码比特为首次传输,就直接将当前软比特保存在该行上;若软比特合并缓存器中当前子块交织矩阵第P(i)′列的一行不为空,则表明在此之前,该编码比特被传输过,就将该行的值与当前软比特进行合并,再将合并结果保存在该行上。
在上述过程中,一旦所有的软比特均输出,即从软比特合并缓存中按行读取各个子块交织矩阵中已写入的软比特信息,并结束本流程,否则在第P(i)′列的位置都判断完成后,进行下一列的判断,进入下一个步骤。
步骤206,判断i是否等于当前子块交织矩阵的列数C,若是,则执行步骤209,否则将i自加,返回步骤205。
在当前子块交织矩阵为信息子块交织矩阵或第一个校验子块交织矩阵时,通过步骤205,已经将子块交织后矩阵中的第i列对应的软比特进行解交织并输出了,接下来,进行下一列的输出。如果第i列是子块交织后矩阵中的最后一列,则需要对下一个子块交织后矩阵对应的软比特进行输出,并且输出到下一个子块交织矩阵对应的保存位置上;如果第i列不是子块交织后矩阵中的最后一列,则继续对下一列对应的软比特进行输出,同样输出到当前子块交织矩阵对应的保存位置上。
步骤207,将第一行作为起始行,前子块交织矩阵的第P(i)′列是否为未填满的列,若是,则将第N-1行作为结束行,否则,将最后一行作为结束行;从当前软比特开始,依次读取软比特,写入当前子块交织矩阵的第P(i)′列的起始行到结束行;若已读取出所有接收的软比特,则将各个子块交织矩阵中的元素按行读出,并结束本流程,否则执行步骤208。
本步骤,对于其他校验子块交织矩阵确定第P(i)′列的有效行,即起始行和结束行。具体确定方式与前述交织速率匹配方法步骤109中除第一个校验子块交织矩阵之外的其它子块校验矩阵的方式相同,这里就不再另加解释。
接下来,将当前软比特进行读取和保存,具体的保存位置和保存方式的确定与前述步骤205中相同,这里就不再赘述。当所有软比特均已读出,则与前述步骤205中相同进行软比特信息的输出。
步骤208,断i是否等于C,若是,则执行步骤209,否则将i自加,将下一个需要读取的软比特作为当前软比特,并返回步骤207。
在当前子块交织矩阵为其他校验子块交织矩阵时,通过步骤207,已经将子块交织后矩阵中的第i列对应的软比特进行解交织并输出了,接下来,进行下一列的输出。如果第i列是子块交织后矩阵中的最后一列,则需要对下一个子块交织后矩阵对应的软比特进行输出,并且输出到下一个子块交织矩阵对应的保存位置上;如果第i列不是子块交织后矩阵中的最后一列,则继续对下一列对应的软比特进行输出,同样输出到当前子块交织矩阵对应的保存位置上。
步骤209,令i=1,将下一个需要读取的软比特作为当前软比特,判断当前子块交织矩阵是否为最后一个子块交织矩阵,若是,则将第一个子块交织矩阵作为当前子块交织矩阵,并返回步骤204;否则,将下一个子块交织矩阵作为当前子块交织矩阵,并返回步骤204。
通过步骤205~206和步骤207~208,分别完成了一个子块交织后矩阵对应的软比特信息的解交织和输出。从本步骤开始,对下一个子块交织后矩阵对应的软比特信息进行解交织和输出。则若当前子块交织后矩阵对应的当前子块交织是最后一个子块交织矩阵,则需要循环到第一个子块交织矩阵进行接下来的软比特信息解交织和输出;若当前子块交织后矩阵对应的当前子块交织不是最后一个子块交织矩阵,则需要对下一个子块交织矩阵的软比特信息解交织和输出。
至此,本实施例中的解交织解速率匹配流程结束。由上述流程可见,本实施例中,依次将接收的软比特信息保存在比特软合并缓存器中的相应位置上,不需要先将其保存为子块交织后矩阵,再依照列交织模式逐个转换为子块交织矩阵进行保存。节省了处理过程,减少了缓存器的使用和对缓存器的读写次数。
下面通过一个具体的例子说明本实施例中的交织速率匹配和解交织解速率匹配方法。
在本例中,给出LTE Turbo编码传输信道速率匹配过程。这一过程包括组织数据阶段和利用速率匹配运算单元进行速率匹配两个阶段。
组织数据阶段包括生成并在内存中存放交织算子POr和交织矩阵Y;根据LTE协议,子块交织矩阵为32列,在32位的处理系统中,每行利用一个32比特的双字表示,根据设定的列交织模式P(j)确定修正列交织模式P(j)′,再利用该修正列交织模式生成交织算子POr,其中,利用一个32比特的双字表示交织算子的任一行,共32个双字表示交织算子。生成方法参考图2所示。
对于Turbo编码器输出比特流Y,在LTE系统中,输出3个比特流分别为sys、P1和P2,按顺序写入内存。在进行输出时,sys交织后形成一个交织后矩阵,P1和P2各自形成一个交织后矩阵,并将P1和P2的交织后矩阵隔行排列,作为一个整体按列进行交织并输出。
利用速率匹配运算单元进行速率匹配的过程如下:先根据当前指定的冗余版本号,此处设为rvindex,确定当前编码后读出比特的起始位置,在LTE Turbo编码传输信道的速率匹配过程中,rvindex=0对应子块交织矩阵sys交织后形成的子块交织后矩阵的第3列第1行,rvindex=1对应子块交织矩阵sys交织后形成的子块交织后矩阵的第27列第1行,rvindex=2对应子块交织矩阵P1和P2交织后形成的子块交织后矩阵的第10列第1行,rvindex=3对应子块交织矩阵P1和P2交织后形成的子块交织后矩阵的第22列第1行。
从rvindex确定的列起始位置开始,逐列读出sys、P1和P2块中的比特;例如:要读取sys交织后的第j列时,先确定sys第P(j)′的有效行,从交织算子POr中取其第j行POrj,用POrj与sys块中的有效行逐行相乘(也可逻辑与AND),并依次输出所有相应的比特信息;要读取P1和P2块交织后的第j列时,先确定P1和P2块第P(j)′的有效行,并确定P1和P2块的排列顺序,再从交织算子POr中取其第j行POrj,按照确定的排列顺序,用POrj与P1和P2块中的有效行逐行相乘(也可逻辑与AND),并依次输出所有相应的比特信息。
根据速率匹配的参数设置,将读出的信息比特直接写入当前传输块对应的码块级联缓存器中分配给当前编码块的相应地址。若一个传输块被分为多个编码块,每个编码块的速率匹配过程可根据以上步骤并行进行。
接下来,给出实现LTE Turbo译码传输信道解交织解速率匹配的过程。这一过程包括计算软比特写入地址和比特软合并两个阶段。
计算软比特写入地址阶段中,查询当前软比特对应的有效掩码,以及计算软比特写入地址三个子过程。
根据冗余版本号rvindex,确定当前编码块输出比特的起始位置,从rvindex确定的起始位置开始,根据修正列交织模式,逐列确定当前子块交织矩阵的有效行。
由于比特软合并缓存器中软比特是按交织矩阵中行优先顺序写入,因此可以由子块交织矩阵中的行列坐标很容易地计算出当前软比特应写入的比特软合并缓存器中的地址。
比特软合并阶段过程如下:根据计算得到的当前软比特对应的比特软合并模块的地址,读出比特软合并模块对应位置原有的软值,与当前软值进行软合并处理,再将得到的结果写回比特软合并模块对应位置。
在比特软合并模块初始化时,可以根据当前码块参数设定好比特软合并模块的初值。以便完成当前码块解速率匹配和软合并过程后,直接送往译码模块进行译码处理。
上述即为本实施例中交织速率匹配方法和解交织解速率匹配方法的实现流程以及实例。
实施例二:
在本实施例中,利用交织算子,依次对每个子块交织矩阵进行处理,并直接将交织结果以协议规定方式保存在循环缓存器中,而不需要中间的暂存单元。在输出时,根据冗余版本需要,从循环缓存器中输出交织后的比特。
具体的,本实施例中的速率匹配方法流程包括:
步骤301~303,根据列交织模式P(j)和各个子块交织矩阵的头部填充比特数目ND确定各个子块交织矩阵的修正列交织模式P(j)′;利用各个子块交织矩阵的修正列交织模式生成相应子块交织矩阵的交织算子;将编码输出的比特流写入各个子块交织矩阵,不进行比特填充。
步骤301~303的操作与实施例一中步骤101~103相同,这里就不再赘述。
接下来,从信息子块交织矩阵开始,对各个子块交织矩阵进行交织处理,并将交织后比特按照协议规定方式全部输出到循环缓存器中。
步骤304,令i=1。
从信息子块交织矩阵的交织算子的第一行开始,到最后一行为止,利用交织算子的每一行按照交织后的顺序依次读取信息子块交织矩阵中的每一列。
步骤305,确定与i对应的信息子块交织矩阵的有效行。
具体确定信息子块交织矩阵中与i对应的有效行的方式与实施例一中步骤106相同,这里就不再赘述。
步骤306,从步骤305确定的起始行开始,到步骤305确定的结束行为止,依次将信息子块交织矩阵的每一行与信息子块交织矩阵的交织算子第i行的转置相乘,并将相乘结果依次输出到循环缓存器中。
如前所述,将任一子块交织矩阵的某一行与交织算子的第i行转置相乘,即能够实现读取该子块交织矩阵中第P(i)′列的目的。
本步骤,在进行子块交织矩阵中第P(i)′列读取时,仅读取该矩阵中第P(i)′列的有效行,而不会读取除有效行外的其他元素,因为这些元素要么是码块分割时的填充比特,要么是末尾未填满的位置。
步骤307,判断第i行是否为交织算子的最后一行,若是,则令i=1,执行步骤308,否则将i自加,返回步骤305。
通过步骤305~307的反复循环,即可以实现将信息子块交织矩阵中的比特信息进行交织以及输出交织结果的过程。待信息子块交织矩阵中的所有比特进行交织处理并输出交织结果后,则开始通过下面的步骤对各个校验子块交织矩阵进行交织处理和交织后结果的输出。
步骤308,令i′=1。
步骤309,确定与i′对应的各个校验子块交织矩阵的有效行。
具体确定与i′对应的各个校验子块交织矩阵有效行的方式,与实施例一中步骤109相同,这里就不再赘述。
步骤310,令n=1。
步骤311,在各个校验子块交织矩阵中,选择第n行为与i′对应的有效行的校验子块交织矩阵。
对于各个校验子块交织矩阵,与i′对应的有效行可能各不相同,对于非有效行的元素,不需要输出,因此也不对其进行处理,只选择第n行为与i′对应的有效行的校验子块交织矩阵,以在本次循环中,仅读取这些校验子块交织矩阵的第P(i′)′列第n行比特。
步骤312,判断选择出的各个校验子块交织矩阵的第P(i′)′列是否为未填满的列,并根据判断结果排列选择出的各个校验子块交织矩阵,并按照该排列顺序,依次将选择出的校验子块交织矩阵中的第n行与相应校验子块交织矩阵的交织算子第i′行的转置相乘,并将相乘结果依次输出到循环缓存器中。
步骤313,判断n是否等于各个校验子块交织矩阵的最大行数,若是,则执行步骤314,否则,返回步骤312。
通过步骤310~313的循环,即能够将各个校验子块交织矩阵中,第P(i′)′列的各有效比特读出,并依照协议规定顺序输出。
步骤314,判断第i′行是否为交织算子的最后一行,若是,则执行步骤315,否则将i′自加,返回步骤309。
通过步骤308~314的反复循环,即可以实现将各个校验子块交织矩阵中的比特进行交织、并按照协议规定顺序输出交织结果的过程。在此过程中,对于读出各校验子块交织矩阵的每一列时,首先都需要确定相应列的有效行和各个校验子块交织矩阵排列顺序,并按照该排列顺序,依次读出这些校验子块交织矩阵中的第P(i′)′列的第n行,从而能够保证输出的比特与协议规定的比特输出顺序一致。
步骤315,根据冗余版本号从循环缓存器中输出符合速率匹配要求的比特。
通过上述步骤304~314的操作,已经所有交织结果输入到循环缓存器中。本步骤只需要根据冗余版本号从循环缓存器中输出符合速率匹配要求的比特即可。
至此,本实施例中的速率匹配流程结束。与实施例一中的流程类似,可以利用与机器字长相匹配的单元来表示交织算子的任一行、信息子块交织矩阵和校验子块矩阵的任一行,从而将相乘操作转换为逻辑与操作进行。例如,在LTE系统中,如果为32位或64位的处理系统,则交织算子的任一行、信息子块交织矩阵和校验子块矩阵的任一行,都可以利用32位的双字来表示,其中,双字的每个比特表示交织算子任一行中的每个元素、信息或校验子块交织矩阵任一行的每个元素。或者,如果在8位或16位的处理系统中,则可以将LTE系统中的交织算子的任一行、子块交织矩阵的任一行和掩码矩阵的任一行,利用4个字节或两个字来表示。从而可以将子块交织矩阵中某一行与交织算子某一行转置的相乘操作转换为逻辑与操作,从而大大简化了处理流程。
本实施例中,对各个子块交织矩阵全部进行交织处理,并将交织处理后的结果按照协议规定首先输出到循环缓存器中,然后再根据冗余版本要求,从循环缓存器中输出符合速率匹配要求的比特信息。该方式相对于背景技术中描述的交织速率匹配方法,不需要对中间数据进行缓存,而直接将交织结果输出到循环缓存器,因此减少了对缓存器的读写次数;但相对于实施例一中的交织速率匹配方式,仍然需要保留循环缓存器,因此二者相比,实施例一中交织速率匹配方法的性能更优。
与上述交织速率匹配方法相应的解交织解速率匹配方法流程与实施例一中的解交织解速率匹配方法流程相同,这里就不再赘述。
上述即为本发明的交织速率匹配和解交织解速率匹配方法的两种具体实施方式。在上述两种方式,通过引入交织算子实现交织和速率匹配过程的简化结合,不需要利用三个矩阵保存各个子块交织矩阵的交织结果,而能够直接输出交织结果到循环缓存器或码块级联缓存中,从而大大节省了交织匹配过程中所需要的存储空间,减少了对缓存器的读写操作。在解交织解速率匹配流程中相类似的,也大大节省了交织匹配过程中所需要的存储空间,减少了对缓存器的读写操作。并且,通过合理的硬件设计,可以将交织算子和交织矩阵以适当的方式(即与机器字长相匹配的单元)保存,从而可以利用交织算子与交织矩阵的逻辑与操作实现交织,能够进一步简化交织处理操作。
以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。