一种数据传输方法及装置
技术领域
本发明涉及一种数据传输方法及装置。
背景技术
数据在网络/通信信道上被分割成数据包进行传输。为了提高数据传输的可靠性,通常需要利用网络协议或编码来提供纠错机制。例如,数据在因特网上传输时,需要利用传输控制协议(Transmission Control Protocol,简称TCP)提供的检错重发机制进行数据的可靠传输,即当检测到数据包丢失时通知发送方重新发送。
但是,在多媒体广播信道中传输数据时,由于使用单向信道,并且数据是采用一对多的广播/多播方式发送,不允许接收端向发送端反馈数据包丢失和出错信息,无法使用上述检错重发机制。在这种情况下,数据包在发送前需要进行前向纠错(FEC)编码。经典的应用层FEC包括RS(Reed-Solomon,里德.所罗门)码和数字喷泉码(Fountain codes)等。RS码的编译码复杂度较高,一般只适用于码长比较小的情况。LT(LubyTransform,陆柏变换)码和Raptor(瑞普特)码是两种可实际应用的数字喷泉码。LT码具有线性的编码和译码时间,相对于RS码有着本质的提高;而Raptor码由于采用了预编码技术,因此具有更高的译码效率。在3GPP(3rdGeneration Partnership Project,第三代合作伙伴计划)的组播广播多媒体业务(Multimedia Broadcast/Multicast Service,简称MBMS)以及数字视频广播(Digital Video Broadcasting,简称DVB)中都采用了Digital Fountain(数字喷泉)公司的Raptor码作为其FEC编码方案。
若编码后码字的前K位与信息位相同,则称该码为系统码。编码的过程就是由K个信息位生成N位码长的过程,通过增加N-K个校验位来达到检错和纠错的目的。LT码不支持系统码的编码方式,因此难以满足某些实际的FEC编码需求;Raptor码支持系统码,但是需要单独的预编码过程,即需要一个预编码矩阵,因此编码的复杂度较高。
由于上述编码方法的缺点,因此引入了LDGC(Low Density GeneratorMatrix Codes,低密度生成矩阵码)。LDGC是一种线性分组码,其生成矩阵(编码矩阵)中的非零元素通常是稀疏的,同时,LDGC码还是一种系统码。
图1是LDGC生成矩阵的示意图。如图1所示,LDGC的生成矩阵的转置G1dgcT中的前L行对应的方阵通常是一个上三角或下三角矩阵,该矩阵求逆可以通过迭代的方法完成。其中,图1中的x,y可以为0。
图2是译码时根据接收码字的擦除情况对LDGC生成矩阵进行相应的擦除操作的示意图。
如图2所示,若数据在传输时出现错误(称作数据被擦除),接收端在使用G1dgcT进行译码前需要对G1dgcT进行相应的擦除操作。即假设N比特长度的序列R(r0,r1,......rN-1)中的符号:{ri,ri+1,...,ri+X1}和{rj,rj+1,...,rj+X2}被信道擦除掉,则G1dgcT中的第{i,i+1,...i+X1}行和第{j,j+1,...j+X2}行也需要被擦除,得到擦除生成矩阵Ge。注意到,对于相同的数据丢失/差错情况,Ge是相同的。
现有技术中,使用LDGC等FEC编码、译码方法进行数据传输时,发送方对数据包进行FEC编码,接收方根据每一数据包的传输情况生成对应的擦除生成矩阵Ge,并使用Ge对该数据包进行译码。这种数据传输方法的效率较低,并且在数据包中数据差错过多时无法进行有效的译码,只能将整个数据包丢弃,在网络/信道条件较差时,数据的传输效率大大降低。
为了解决上述问题,提出了如图3所示的数据包联合编码传输方法:
a)将待发送数据依序分割成多个文件块,每个文件块中包含多个长度为Tb比特的信息文件片;其中,信息文件片的长度根据一个传输包的负荷大小确定;
对文件块进行FEC编码和传输时:
b)从文件块的各信息文件片中取相同位置的1个比特构成一个信息比特序列;因此一个文件块中包含了Tb个信息比特序列;
对各信息比特序列进行FEC编码,生成相应的校验比特序列,将校验比特序列放入校验文件片的相应位置;
c)将文件块中的各信息文件片和校验文件片封装在传输包中发送。
采用上述方法时,即使一个传输包/信息文件片在传输过程中出现大量错误,甚至丢失整个传输包/信息文件片,也不会造成接收端码字的大量信息丢失(擦除),译码的成功率、数据传输的可靠性大幅提高。
在上述方法中,信息比特序列的长度与文件块中包含的信息文件片的个数相同。当文件块包含的信息文件片的数量较少时,这种数据传输方法会使得信息比特序列的长度小于编码器的最佳编码长度,从而不能发挥出编码器的最佳性能。此外,由于传输包的负荷大小不能随意减小,因此通常无法通过减小信息文件片的长度Tb来增加文件块中包含的信息文件片的数量。
因此,当业务数据量较小,或待传输数据的最后一个或若干个文件块的数据量较小时,将造成文件块中的信息文件片个数较少,即信息比特序列的长度较短,编码和译码的性能较低。
发明内容
本发明所要解决的技术问题是,克服现有技术的不足,提出一种在文件块中包含的信息文件片数量较少时,可提高FEC编码、译码性能的数据传输方法及装置。
为了解决上述技术问题,本发明提供一种数据传输方法,包含如下步骤:
A:将待发送数据分割成长度为Tb比特的K个信息文件片;
B:对由Tb个数据比特序列中不同的P’个串联组成的信息比特序列进行FEC编码,生成Tb/P’个长度为Cb的校验比特序列;将校验比特序列的各比特依序放入校验文件片中与相应的数据比特序列相同的位置;
C:将各信息文件片和校验文件片封装在传输包中传输;
所述数据比特序列由K个信息文件片中相同位置的比特依序组成;P’>1,且Kopmin≤K×P’≤Kopmax;Kopmin和Kopmax分别为FEC编码器的最佳编码长度的最小值和最大值;Tb和Cb为P’的整数倍。
此外,第i个信息比特序列由第k×Tb/P’+i个数据比特序列依序组成,k=0,...,P’-1;
由第i个信息比特序列经过FEC编码生成的第i个校验比特序列的第j个比特位于第mod(j,M)个校验文件片的第
个比特位置;M=Cb/P;i=0,...,Tb/P’-1。
此外,第i个信息比特序列由第i×P’+k个数据比特序列依序组成,k=0,...,P’-1;
由第i个信息比特序列经过FEC编码生成的第i个校验比特序列的第j个比特位于第mod(j,M)个校验文件片的第
个比特位置;M=Cb/P;i=0,...,Tb/P’-1。
此外,所述FEC编码为系统码。
此外,所述FEC编码为LDGC。
此外,所述传输包中包含用于标识所述信息文件片或校验文件片的文件片序号字段,或包含所述文件片序号字段和标识所述信息文件片和校验文件片总数的文件片总数字段。
一种数据传输装置,包含数据包封装传输单元,该装置还包含:数据分割单元,存储器,FEC编码单元;其中:
所述数据分割单元用于将待发送数据分割成长度为Tb比特的K个信息文件片,并将信息文件片依序存储在所述存储器中;
所述FEC编码单元用于获取存储在所述存储器中的,由Tb个数据比特序列中不同的P’个组成的信息比特序列,并对其进行FEC编码,生成Tb/P’个长度为Cb的校验比特序列;将校验比特序列的各比特依序放入校验文件片中与相应的数据比特序列相同的位置;所述校验文件片存储在所述存储器中;
所述数据包封装传输单元用于将存储在存储器中的各信息文件片和校验文件片封装在传输包中依序传输;
所述数据比特序列由K个信息文件片中相同位置的比特依序组成;P’>1,且Kopmin≤K×P’≤Kopmax;Kopmin和Kopmax分别为FEC编码器的最佳编码长度的最小值和最大值;Tb和Cb为P’的整数倍。
此外,所述FEC编码单元获取的第i个信息比特序列由第k×Tb/P’+i个数据比特序列依序组成,k=0,...,P’-1;且
所述FEC编码单元将第i个信息比特序列进行FEC编码所生成的第i个校验比特序列的第j个比特存放在第mod(j,M)个校验文件片的第
个比特位置;M=Cb/P;i=0,...,Tb/P’-1。
此外,所述FEC编码单元获取的第i个信息比特序列由第i×P’+k个数据比特序列依序组成,k=0,...,P’-1;且
所述FEC编码单元将第i个信息比特序列进行FEC编码所生成的第i个校验比特序列的第j个比特存放在第mod(j,M)个校验文件片的第
个比特位置;M=Cb/P;i=0,...,Tb/P’-1。
此外,所述FEC编码单元采用系统码进行所述FEC编码。
此外,所述FEC编码单元采用LDGC进行所述FEC编码。
此外,所述传输包中包含用于标识所述信息文件片或校验文件片的文件片序号字段,或包含所述文件片序号字段和标识信息文件片和校验文件片总数的文件片总数字段。
由上可知,采用本发明的数据传输方法及装置,在文件块中包含的信息文件片数量较少,即数据比特序列的长度较短时,对由多个数据比特序列串联组成信息比特序列进行FEC编码,提高了FEC编码、译码的性能。
附图说明
图1是LDGC生成矩阵的示意图;
图2是译码时根据接收码字的擦除情况对LDGC生成矩阵进行相应的擦除操作的示意图;
图3是现有技术中的一种数据包联合编码传输方法示意图;
图4是本发明实施例数据传输方法流程图;
图5是本发明实施例信息比特序列的生成方式示意图;
图6是校验比特序列在各校验文件片中的位置示意图;
图7为本发明实施例数据传输装置的结构示意图。
具体实施方式
本发明的基本思路是,从文件块的各信息文件片中的多个相同位置取出多个比特构成一个信息比特序列,使该信息比特序列的长度为FEC编码器的最佳编码长度。
下面将结合附图和实施例对本发明进行详细描述。
图4是本发明实施例数据传输方法流程图。如图4所示,该方法包含如下步骤:
101:将待传输文件块连续分割成K个长度为Tb比特的信息文件片;
我们将由各信息文件片中的相同比特位置的比特依序组成的比特序列称为数据比特序列,第i个数据比特序列由各信息文件片的第i个比特依序组成,0≤i≤Tb-1。
102:根据FEC编码器的最佳编码长度依序将Tb个数据比特序列分为P’组;
设FEC编码器的最佳编码长度Kop(单位为比特)的取值范围为:Kopmin≤Kop≤Kopmax;
则数据比特序列的分组数P的取值范围为:
其中,
表示向上取整运算。
在P的取值范围内,任意选择一个能整除Tb的值P’,将P’确定为数据比特序列的分组数。
103:在每个数据比特序列组中取相同位置的一个数据比特序列依序串联组成
个信息比特序列,每个信息比特序列的长度K’=K×P’;
也就是说,每个数据比特序列组中包含
个数据比特序列,依序从各数据比特序列组中抽取第j个比特序列,组成第j个信息比特序列。
即,第j个信息比特序列Cj可以表示为:
Cj=[B(:,j),B(:,TbP′+j),B(:,2×TbP′+j),...,B(:,(P′-1)TbP′+j)],j=0,...,TbP′-1.]]>
上式中,B(:,t)表示文件块的第t个数据比特序列,0≤t≤Tb-1。
本发明实施例信息比特序列的生成方式如图5所示。
104:对信息比特序列进行FEC编码,生成校验比特序列,并将校验比特序列的各比特依序放入校验文件片中与相应的数据比特序列相同的位置;
设校验比特序列的长度Cb(单位为比特)为数据比特序列的分组数(即一个信息比特序列中包含的数据比特序列的个数)P’的整数倍,则校验比特序列可以分为P’个校验比特序列段,每个校验比特序列段与信息比特序列中的一个数据比特序列相对应,长度为Cb/P’比特。
因此,上述将校验比特序列的各比特依序放入校验文件片中与相应的数据比特序列相同的位置是指:将校验比特序列中的各校验比特序列段的Cb/P’个比特依序放入Cb/P’个校验信息文件片中与相应的数据比特序列相同的位置。
具体地说,对文件块的第i个信息比特序列进行FEC编码,生成第i个校验比特序列,将第i个校验比特序列的第j个比特放到第mod(j,M)个校验文件片的第
个比特位置。其中mod(·)表示求余数运算,
表示向下取整运算。上述i=0,...,TbP′-1;j=0,...,Cb-1;]]>M=Cb/P’是校验文件片的数量。
校验比特序列在各校验文件片中的位置示意图如图6所示。
105:依序将各信息文件片和校验文件片封装在传输包中传输;
传输包中包含信息文件片或校验文件片的文件片序号字段,该字段用于标识信息文件片或校验文件片;当接收端无法预先获知文件块中包含的信息文件片和校验文件片的总数时,传输包中还包含文件片总数字段。
例如,文件块中含有K=200个信息文件片,每个文件片的大小为512字节,因此该文件块中共有Tb=512×8=4096个数据比特序列。
设编码器合适的信息分组长度为4000到8192比特,即4000≤Kop≤8192,则数据比特序列分组数的取值范围是
即20≤P≤41。
取P’=32组,则每个数据比特序列组包含TbP′=409632=128]]>个数据比特序列。
将每个数据比特序列组中相同位置的数据比特序列按顺序串联组成输入FEC编码器的信息比特序列,例如,将各组中的第0个数据比特序列按照组顺序依次串联,构成编码器的第0个输入信息比特序列:
C0=[B(:,0),B(:,TbP′+0),B(:,2×TbP′+0),...,B(:,(P′-1)TbP′+0)]=[B(:,0),B(:,128),B(:,256),...,B(:,3968)]]]>
其中,B(:,t)表示文件块的第t个数据比特序列,0≤t≤Tb-1。一共有128个信息比特序列数据FEC编码器,每个信息比特序列均由32个数据比特序列组成。每个信息比特序列的长度为K’=200*32=6400比特。
采用LDGC作为FEC编码算法,设该文件块经过LDGC编码后生成M=40个校验文件片,即每个校验比特序列的长度Cb=M×P’=40×32=1280比特。
对索引为i=2的信息比特序列进行LDGC编码,将生成的校验比特序列的第j=397个比特放到第mod(j,M)=mod(397,40)=37个校验文件片的第
个比特位置。依此类推,将所有的校验比特放入校验文件片中。
由上可知,由于上述实施例中采用在文件块中每
个数据比特序列取一个的方式组成信息比特序列,使得一个传输包中的出现的连续差错可以分布在多个信息比特序列中,不会造成一个信息比特序列中出现大量的差错而出现数据无法正确解码的现象。
根据本发明的基本原理,上述实施例还可以进行多种变换,例如:
(一)在另一实施例中,如果不考虑数据包的连续差错对解码的影响,也可以在文件块中依序取相邻的P’(
且P’能整除Tb)个数据比特序列组成
个信息比特序列,对各信息比特序列进行FEC编码生成校验比特序列,将校验比特序列的各比特依序放入校验文件片中与相应的数据比特序列相同的位置。
也就是说,第i个信息比特序列Ci可以表示为:
Ci=[B(:,i×P′),B(:,i×P′+1),B(:,i×P′+2),...,B(:,i×P′+P′-1)];i=0,...,TbP′-1;]]>
在这种情况下,第i个校验比特序列的第j个比特放到第mod(j,M)个校验文件片的第
个比特位置。
当然,也可以采用发送端和接收端共同设定的任何一种选取方式,从文件块中选取P’个数据比特序列组成
个信息比特序列。
(二)除了LDGC以外,本发明的FEC编码方法还可以采用Raptor(瑞普特)码等系统码。
图7为本发明实施例数据传输装置的结构示意图。如图7所示,该装置包含:数据分割单元,存储器,FEC编码单元,数据包封装传输单元。其中,
数据分割单元,用于将待发送数据分割成长度为Tb比特的信息文件片,并将各信息文件片依序存储在存储器中。
FEC编码单元,用于对存储器中由Tb个数据比特序列中不同的P’个数据比特序列组成的信息比特序列进行FEC编码,生成Tb/P’个长度为Cb的校验比特序列;将校验比特序列的各比特依序放入校验文件片中与相应的数据比特序列相同的位置;校验文件片存储在存储器中;
本发明数据传输装置的第一实施例中,第i个信息比特序列由第k×Tb/P’+i个数据比特序列依序组成,k=0,...,P’-1;第i个校验比特序列的第j个比特位于第mod(j,M)个校验文件片的第
个比特位置;M=Cb/P;i=0,...,Tb/P’-1。
本发明数据传输装置的第二实施例中,第i个信息比特序列由第i×P’+k个数据比特序列依序组成,k=0,...,P’-1;第i个校验比特序列的第j个比特位于第mod(j,M)个校验文件片的第
个比特位置;M=Cb/P;i=0,...,Tb/P’-1。
优选地,FEC编码单元采用系统码,尤其是LDGC进行所述FEC编码。
数据包封装传输单元,用于将存储器中的各信息文件片和校验文件片封装在传输包中依序传输;
传输包中包含信息文件片或校验文件片的文件片序号字段;当接收端无法预先获知文件块中包含的信息文件片和校验文件片的总数时,传输包中还包含文件片总数字段。