一种用于通信系统的数据交织与解交织方法

文档序号:7508666阅读:125来源:国知局
专利名称:一种用于通信系统的数据交织与解交织方法
技术领域
本发明属于通信技术领域,特别是涉及一种数据交织及解交织方法。
背景技术
目前交织器/解交织器在通信系统中得到了广泛应用,在turbo码发现以前(1993年),交织器主要用在信道编码器与信道之间或级联码的外码(一般是RS码)与内码(一般是卷积码)之间,目的是把突发错误打乱以减小突发错误的长度。
一个简单的实现方法是矩阵交织方法,如附图1所示是一个大小为64的交织器/解交织器,交织时,首先把数据序列A=(A0,A1,...,A62,A63)按行逐个写入8*8的缓存矩阵,然后按列逐个读出,就得到数据序列B=(A0,A8,A16,...,A47,A55,A63)。解交织时,把数据序列B按列逐个写入8*8缓存矩阵,然后按行逐个读出,就得到数据序列A。假定由于信道突发噪声或其他原因使得数据序列B中出现了一个长度为12的突发错误图样,如图1阴影部分所示。不难看出,经过解交织之后,数据序列A中已经没有长度超过2的突发错误图样,这对于纠错码正确译码是很有利的。
在turbo码出现之后,交织器应用场合大为增加。这些新的应用场合主要包括并行级联卷积码(即所谓的turbo码),串行级联卷积码,turbo TCM,比特交织编码调制(BICM)系统,码片交织的CDMA系统等等。在这些新的应用场合,交织器的作用不单单是减少突发错误发生的概率,因而矩阵交织方法对应的交织器/解交织器的性能并不理想。
一般地,这些系统要求交织器具有随机交织器的特征。设交织前的数据序列是A=(A0,A1,...,AN-1),交织后的数据序列是B=(B0,B1,...,BN-1)。常用的实现伪随机交织器的方法有两种。一种方法是按照一定算法产生一个伪随机对应表,并把这个对应表存储起来,如下表所示

同时,交织器还需要一个大小为N的缓存器C。
交织时,首先按照上表的对应关系把数据序列A=(A0,A1,...,AN-1)依次写入缓存器C,即在时刻t把At写入缓存器C的第pt个位置,t=0,1,2,...,N-1;然后依次读出缓存器C中的数据,就得到了输出序列B=(B0,B1,...,BN-1)。解交织时的操作类似,此时输入数据序列是B=(B0,B1,...,BN-1)而输出序列是A=(A0,A1,...,AN-1)。这种方法的优点是不用实时计算序列的下标是如何对应的,缺点是需要存储下标的对应表,其存储复杂度是O(Nlog2N)比特。另一种方法是实时计算下标的对应关系,这种方法仅需要存储少量的计算参数,缺点是需要额外的计算开支。在有些系统中(如码片交织的CDMA系统),需要许多不同的伪随机交织器,这时上述两种方法都不实用。

发明内容
本发明的目的正是为了克服现有交织方法及解交织方法中,要不需要耗费很大的存储空间,要不需要很大的计算量这些不足,提供一种不需要过多的存储空间,而且计算量适中的用于通信系统的数据交织方法。
本发明的另一目的在于提供一种与之对应的数据解交织方法。
为了达到上述发明目的,本发明采用的技术方案为一种应用于通信系统中的数据交织方法,用于将数据序列A=(A0,A1,...,AN-1)交织成B=(B0,B1,...,BN-1),其特征在于设定与数据序列A=(A0,A1,...,AN-1)大小相等的三个矩阵,分别为写矩阵W、读矩阵R、以及缓存矩阵M,然后根据写矩阵W中元素取值的不同将数据序列A=(A0,A1,...,AN-1)打乱写入缓存矩阵M,再根据读矩阵R中元素取值的不同将缓存矩阵M中的数据打乱写成数据序列B=(B0,B1,...,BN-1)。
上述的数据交织方法中,所述写矩阵W和读矩阵R可通过伪随机法分配矩阵中元素的取值,特别地,写矩阵W和读矩阵R的元素取值可以设定为0或1。
本发明所述的数据交织方法,通过从左到右逐行扫描写矩阵W中元素的取值,根据元素取值的不同将数据序列A=(A0,A1,...,AN-1)打乱写入缓存矩阵M,再从上到下逐列扫描读矩阵R中元素的取值,根据元素取值的不同将缓存矩阵M中的值打乱写成数据序列B=(B0,B1,...,BN-1)。
一个可行的方案是所述根据写矩阵W中元素取值的不同将数据序列A=(A0,A1,...,AN-1)打乱写入缓存矩阵M具体如下设变量t、flag、i、j,其中i、j表示矩阵的元素下标,首先置t=0,flag=0,然后从第一行第一列,即i=0,j=0起,从左到右逐行检查写矩阵W,若Wij=0,则把数据序列A中当前的数据At写入Mij,并把t增加1,直到扫描完写矩阵W,设矩阵W中有Zw个0,则在检查过整个矩阵W之后,数据序列A中前Zw个数据依次序写入了缓存矩阵M中对应Wij=0的存储单元里,此时应该有t=Zw。;然后置flag=1,重新从第一行第一列,即i=0,j=0起,从左到右逐行再检查写矩阵W,若Wij=1,则把当前的数据At写入Mij,并把t增加1,直到扫描完写矩阵W;在检查过整个矩阵W之后,数据序列A中剩余的N-ZW个数据也依次序写入了缓存矩阵M中对应Wij=1的存储单元里。此时应该有t=N。
所述根据读矩阵R中元素取值的不同将缓存矩阵M中元素的值打乱写成数据序列B=(B0,B1,...,BN-1)具体如下首先置t=0,flag=0,从第一行第一列,即i=0,j=0起,从上到下逐列检查读矩阵R,若Rij=0,则把Mij中所存的数据读出并存入数据序列当前的位置Bt中,并把t增加1,直到扫描完整个读矩阵R;设矩阵R中有ZR个0,则在检查过整个矩阵R之后,缓存矩阵M中对应Rij=0的存储单元里的数据被读出并依次序存入了数据序列B中前ZR个位置。此时应该有t=ZR。然后置flag=1,重新从第一行第一列,即i=0,j=0起,从上到下逐列检查读矩阵R,若Rij=1,则把Mij中所存的数据读到当前的数据Bt中,并把t增加1直到扫描完整个读矩阵R。在检查过整个矩阵R之后,缓存矩阵M里剩余的N-ZR个数据也被读出并依次序存入了B的后N-ZR个位置。此时应该有t=N。
为了达到本发明的另一目的,采用的技术方案为一种用于通信系统的数据解交织方法,用于将交织后的数据序列B=(B0,B1,...,BN-1)还原成数据序列A=(A0,A1,...,AN-1),其特征在于先根据读矩阵R中元素取值的不同将数据序列B=(B0,B1,...,BN-1)打乱写入缓存矩阵M,再根据写矩阵W中元素值的不同,将缓存矩阵M的值还原成数据序列A=(A0,A1,...,AN-1)。
本发明所述的数据解交织方法,其写矩阵W和读矩阵R也同样可通过伪随机法分配矩阵中元素的取值;特别地,写矩阵W和读矩阵R的元素可以取值为0或1。
本发明的数据解交织方法,通过从上到下逐列扫描读矩阵R中元素的取值,根据元素取值的不同将数据序列B=(B0,B1,...,BN-1)打乱写入缓存矩阵M中,再从左到右逐行扫描写矩阵W中元素的取值,根据元素取值的不同将缓存矩阵M的值还原成数据序列A=(A0,A1,...,AN-1)。
一个可行的方案是根据读矩阵R中元素取值的不同将数据序列B=(B0,B1,...,BN-1)打乱写入缓存矩阵M具体包括设变量t、flag、i、j,其中i、j表示矩阵的元素下标,首先置t=0,flag=0,然后从第一行第一列,即i=0,j=0起,从上到下逐列检查读矩阵R,若Rij=0,则把当前的数据Bt写入Mij,并把t增加1,直到扫描完整个读矩阵R;设矩阵R中有ZR个0,则在检查过整个矩阵R之后,数据序列B中前ZR个数据依次序写入了缓存矩阵M中对应Rij=0的存储单元里。此时应该有t=ZR。然后,置flag=1,重新从第一行第一列,即i=0,j=0起,从上到下逐列检查矩阵R,若Rij=1,则把当前的数据Bt写入Mij,并把t增加1,直到扫描完整个读矩阵R;在检查过整个矩阵R之后,数据序列B中剩余的N-ZR个数据也依次序写入了缓存矩阵M中对应Rij=1的存储单元里。此时应该有t=N。
所述根据写矩阵W中元素值的不同,将缓存矩阵M中的数据还原成数据序列A=(A0,A1,...,AN-1)具体包括首先置t=0,flag=0,从第一行第一列,即i=0,j=0起,从左到右逐行检查写矩阵W,若Wij=0,则把Mij中所存的数据读出并存入当前的位置At中,并把t增加1,直到扫描完整个写矩阵W;设矩阵W中有ZW个0,则在检查过整个矩阵W之后,缓存矩阵M中对应Wij=0的存储单元里的数据被读出并依次序存入了数据序列A中前ZW个位置。此时应该有t=ZW。然后,置flag=1,重新从第一行第一列起,从左到右逐行检查矩阵W,若Wij=1,则把Mij中所存的数据读到当前的数据At中,并把t增加1,直到扫描完整个写矩阵W。在检查过整个矩阵W之后,缓存矩阵M里剩余的N-ZW个数据也被读出并依次序存入了A的后N-ZW个位置。此时应该有t=N。
本发明根据写矩阵W中元素的不同取值,将数据序列A=(A0,A1,...,AN-1)先写入缓存矩阵M,然后根据读矩阵R中元素的不同取值将缓存矩阵M中的数据读出,变成数据序列B=(B0,B1,...,BN-1),而解交织的步骤刚好相反。本发明所需要的额外存储空间很少,而且运算量不大,是值得推广使用的交织方法与解交织方法。


图1为现有矩阵交织器的一个例子;图2为本发明的交织方法的将数据阵列A写入缓存矩阵M的算法流程;图3为本发明的交织方法的将缓存矩阵M写入数据阵列B的算法流程;
图4为本发明的解交织方法的将数据阵列B写入缓存矩阵M的算法流程;图5为本发明的解交织方法的将缓存矩阵M还原成数据阵列A的算法流程;图6为本发明的流程图。
具体实施例方式
下面结合附图对本发明做进一步的说明。
本发明的流程图如附图6所示,先通过伪随机法给写矩阵W和读矩阵R赋值,然后再判断进行交织还是解交织,根据判断结果启动交织方法或解交织方法,交织方法通过循环扫描写矩阵W,根据W的取值把依次输入的序列A写入缓存矩阵M的相应位置,然后再循环扫描读矩阵R,根据读矩阵R的取值读出缓存矩阵M相应位置的数据,依次输入形成序列B;而解交织的方法为循环扫描读矩阵R,根据读矩阵R的取值把依次输入的序列B写入缓存矩阵M的相应位置,然后再循环扫描W,根据W的取值读出缓存矩阵M相应位置的数据,依次输出形成序列A。
设数据序列A=(A0,A1,...,AN-1)的长度N=S*T,设W,R是两个S行T列的矩阵,其中的元素是0或1,这两个矩阵可以按照预定的方法(比如产生伪随机序列的方法)产生并存储起来,其存储空间是2N比特,设M是缓存矩阵,其含有S行T列存储单元,每个存储单元可以存储一个数据At。本发明中,数据是一个很广的概念,可能对应实际系统中的二进制变量,有限域里的元素,实变量,复变量,向量等等。
本发明的交织方法如附图2、附图3所示,分为两个步骤第一个步骤如附图2所示,为将数据序列A写入缓存矩阵M的过程。开始时置t=0,flag=0,从第一行第一列(即i=0,j=0)起,从左到右逐行检查矩阵W,若Wij=0,则把当前的数据At写入Mij,并把t增加1,直到扫描完整个写矩阵W,然后,置flag=1,重新从第一行第一列(即i=0,j=0)起,从左到右逐行检查矩阵W,若Wij=1,则把当前的数据At写入Mij,并把t增加1,直到扫描完整个写矩阵W。
第二个步骤如附图3所示,为将缓存矩阵M中的数据读到数据序列B的过程。开始时置t=0,flag=0,从第一行第一列(即i=0,j=0)起,从上到下逐列检查矩阵R,若Rij=0,则把Mij中所存的数据读出并存入当前的位置Bt中,并把t增加1,直到扫描完整个读矩阵R,然后,置flag=1,重新从第一行第一列(即i=0,j=0)起,从上到下逐列检查矩阵R,若Rij=1,则把Mij中所存的数据读到当前的数据Bt中,并把t增加1,直到扫描完整个读矩阵R。
本发明的解交织方法如附图4、附图5所示,也分为两个步骤第一个步骤如附图4所示,为将数据阵列B写入缓存矩阵M的过程。开始时置t=0,flag=0,从第一行第一列(即i=0,j=0)起,从上到下逐列检查读矩阵R,若Rij=0,则把当前的数据Bt写入Mij,并把t增加1,直到扫描完整个读矩阵R。然后,置flag=1,重新从第一行第一列(即i=0,j=0)起,从上到下逐列检查矩阵R,若Rij=1,则把当前的数据Bt写入Mij,并把t增加1,直到扫描完整个读矩阵R。
第二个步骤如附图5所示,为将缓存矩阵M中的数据读出到数据阵列A的过程。开始时置t=0,flag=0,从第一行第一列(即i=0,j=0)起,从左到右逐行检查矩阵W,若Wij=0,则把Mij中所存的数据读出并存入当前的位置At中,并把t增加1,直到扫描完整个写矩阵W,然后,置flag=1,重新从第一行第一列(即i=0,j=0)起,从左到右逐行检查矩阵W,若Wij=1,则把Mij中所存的数据读到当前的数据At中,并把t增加1,直到扫描完整个写矩阵W。
下面给出一个具体例子。设写矩阵W,读矩阵R和缓存矩阵M如下表所示。写矩阵W为

读矩阵R为

缓存矩阵M为

设A=(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)是待交织的数据序列。交织方法如下
第一步,从第一个元素开始,从左到右,逐行扫描矩阵W的值,遇到Wij=0时,则将A中的值写入缓存矩阵Mij,扫描完矩阵W后,A的前9个数据依次按行写入了缓存矩阵M,如下表所示。

然后再次扫描矩阵W,在对应Wij=1的存储单元单元里写入A的剩下内容,写矩阵W又被检查了一遍,此时A的后7个数据依次按行写入了缓存矩阵M,如下表所示

第二步,根据R矩阵将缓存矩阵M读出到B的过程。从第一个元素开始,从上到下,逐列读出矩阵R中对应Rij=0的存储单元里的内容,然后依序将缓存矩阵M中Mij的值写入B,读矩阵R被检查了一遍后,缓存矩阵M中的数据被按列读出了9个数据并依次存入了B的前9个位置,此时B=(9,12,10,5,15,2,13,3,8)。然后又依序读出对应Rij=1的存储单元的内容,将Mij的值写入B,读矩阵R又被检查了一遍,缓存矩阵中的元素又被按列读出了7个数据并依次存入了B的后7个位置,此时B=(9,12,10,5,15,2,13,3,8,4,6,1,0,7,1,14)。
解交织方法如下第一步,写入过程。首先从第一个元素开始,从上到下逐列扫描矩阵R,将B的内容写入对应Rij=0的Mij的单元里,读矩阵R被检查了一遍,此时B的前9个数据依次按列写入了M,如下表所示

再次扫描矩阵R,将B剩下的内容写入对应Rij=1的Mij单元里,读矩阵R又被检查了一遍,此时B的后7个数据依次按列写入了缓存矩阵M,如下表所示

第二步,读出过程。从第一个元素开始,从左到右逐行扫描矩阵W,读出对应Wij=0的Mij的内容,将Mij写入阵列A,矩阵W被检查了一遍,M中的元素被按行读出了9个数据并依次存入了A的前9个位置,此时A=(0,1,2,3,4,5,6,7,8)。然后又重新扫描矩阵W,读出对应Wij=1位置的Mij,写矩阵W又被检查了一遍,Mij的元素又被按行读出了7个数据并依次存入了A的后7个位置,此时A=(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)。
权利要求
1.一种应用于通信系统中的数据交织方法,用于将数据序列A=(A0,A1,...,AN-1)交织成B=(B0,B1,...,BN-1),其特征在于设定与数据序列A=(A0,A1,...,AN-1)大小相等的三个矩阵,分别为写矩阵W、读矩阵R、以及缓存矩阵M,然后根据写矩阵W中元素取值的不同将数据序列A=(A0,A1,...,AN-1)打乱写入缓存矩阵M,再根据读矩阵R中元素取值的不同将缓存矩阵M中的数据打乱写成数据序列B=(B0,B1,...,BN-1)。
2.根据权利要求1所述的数据交织方法,其特征在于所述写矩阵W和读矩阵R可以通过伪随机方法设定矩阵中元素的取值。
3.根据权利要求2所述的数据交织方法,其特征在于所述写矩阵W和读矩阵R的元素可以取值为0或1。
4.根据权利要求1或2或3所述的数据交织方法,其特征在于从左到右逐行扫描写矩阵W中元素的取值,根据元素取值的不同将数据序列A=(A0,A1,...,AN-1)打乱写入缓存矩阵M,再从上到下逐列扫描读矩阵R中元素的取值,根据元素取值的不同将缓存矩阵M中的数据打乱写成数据序列B=(B0,B1,...,BN-1)。
5.根据权利要求4所述的数据交织方法,其特征在于所述根据写矩阵W中元素取值的不同将数据序列A=(A0,A1,...,AN-1)打乱写入缓存矩阵M具体如下设变量t、flag、i、j,其中i、j表示矩阵元素的下标,首先置t=0,flag=0,然后从第一行第一列,即i=0,j=0起,从左到右逐行检查写矩阵W,若Wij=0,则把数据序列A中当前的数据At写入Mij,并把t增加1,直到扫描完写矩阵W;然后置flag=1,重新从第一行第一列,即i=0,j=0起,从左到右逐行再检查写矩阵W,若Wij=1,则把当前的数据At写入Mij,并把t增加1,直到扫描完写矩阵W;所述根据读矩阵R中元素取值的不同将缓存矩阵M中的数据打乱写成数据序列B=(B0,B1,...,BN-1)具体如下首先置t=0,flag=0,从第一行第一列,即i=0,j=0起,从上到下逐列检查读矩阵R,若Rij=0,则把Mij中所存的数据读出并存入数据序列当前的位置Bt中,并把t增加1,直到扫描完整个读矩阵R;然后置flag=1,重新从第一行第一列,即i=0,j=0起,从上到下逐列检查读矩阵R,若Rij=1,则把Mij中所存的数据读到当前的位置Bt中,并把t增加1直到扫描完整个读矩阵R。
6.一种用于通信系统的数据解交织方法,用于将权利要求1所述交织方法交织后的数据序列B=(B0,B1,...,BN-1)还原成数据序列A=(A0,A1,...,AN-1),其特征在于先根据读矩阵R中元素取值的不同将数据序列B=(B0,B1,...,BN-1)打乱写入缓存矩阵M,再根据写矩阵W中元素值的不同,将缓存矩阵M中的数据还原成数据序列A=(A0,A1,...,AN-1)。
7.根据权利要求6所述的数据解交织方法,其特征在于所述写矩阵W和读矩阵R可通过伪随机法设定矩阵中元素的取值。
8.根据权利要求7所述的数据解交织方法,其特征在于所述写矩阵W和读矩阵R的元素可以取值为0或1。
9.根据权利要求6或7或8所述的数据解交织方法,其特征在于从上到下逐列扫描读矩阵R中元素的取值,根据元素取值的不同将数据序列B=(B0,B1,...,BN-1)打乱写入缓存矩阵M中,再从左到右逐行扫描写矩阵W中元素的取值,根据元素取值的不同将缓存矩阵M中的数据还原成数据序列A=(A0,A1,...,AN-1)。
10.根据权利要求9所述的数据解交织方法,其特征在于所述根据读矩阵R中元素取值的不同将数据序列B=(B0,B1,...,BN-1)打乱写入缓存矩阵M具体如下设变量t、flag、i、j,其中i、j表示矩阵的元素下标,首先置t=0,flag=0,然后从第一行第一列,即i=0,j=0起,从上到下逐列检查读矩阵R,若Rij=0,则把当前的数据Bt写入Mij,并把t增加1,直到扫描完整个读矩阵R;然后,置flag=1,重新从第一行第一列,即i=0,j=0起,从上到下逐列检查矩阵R,若Rij=1,则把当前的数据Bt写入Mij,并把t增加1,直到扫描完整个读矩阵R;所述根据写矩阵W中元素值的不同将缓存矩阵M中的数据还原成数据序列A=(A0,A1,...,AN-1)具体如下首先置t=0,flag=0,从第一行第一列,即i=0,j=0起,从左到右逐行检查写矩阵W,若Wij=0,则把Mij中所存的数据读出并存入当前的位置At中,并把t增加1,直到扫描完整个写矩阵W;然后,置flag=1,重新从第一行第一列,即i=0,j=0起,从左到右逐行检查矩阵W,若Wij=1,则把Mij中所存的数据读到当前的位置At中,并把t增加1,直到扫描完整个写矩阵W。
全文摘要
本发明提供了一种数据交织方法及数据解交织方法。设定三个与数据序列A=(A
文档编号H03M13/00GK1702976SQ20051003544
公开日2005年11月30日 申请日期2005年6月22日 优先权日2005年6月22日
发明者马啸 申请人:中山大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1