前向纠错编码方法、前向纠错译码方法及其装置的制作方法

文档序号:7702761阅读:96来源:国知局

专利名称::前向纠错编码方法、前向纠错译码方法及其装置的制作方法
技术领域
:本发明实施例涉及通信技术,尤其涉及一种前向纠错编码方法、前向纠错译码方法及其装置。
背景技术
:在相关技术中,由于受到无线传输链路中的电磁干扰、电传输链路中的电流浪涌、光传输链路中的信号强弱的影响,非常容易造成数据链路中的报文发生突发性误码,突发性误码的典型特征是误码现象集中在某一段连续的数据中,并造成这一段数据很高的比特误码率。在严重时,突发性误码的比特误码率可达l(T3,也就是说,如果报文长度超过1000字节,则报文的平均错误率为100%,如此高的比特误码率会导致恶劣环境下的无线传输链路上的误码现象日趋严重,进一步使得网络通信无法正常进行。现有技术中,绝大部分的传输硬件对平均分布的误码具有很好的纠错能力,但是,在遇到集中突发式的误码情况时,由于传输硬件不能同时处理大规模的突发式误码,导致传统的纠错手段不再适用。因此,在低带宽、较大时延、高误码率的网络环境下引入了端对端的前向纠错(ForwardErrorCorrection;以下简称FEC),图1是现有技术中FEC架构的示意图,如图l所示,FEC是指报文在被传输之前预先对其按指定的格式进行编码,在接收端侧按规定的算法进行解码,以达到找出误码并纠正错误的一种纠错手段。具体地,发送端将报文发送到检、纠错码编码器中,检、纠错码编码器会对报文按照指定的格式进行编码,得到FEC编码,并将其发送到编码信道中,在编码信道中,会出现噪声源对FEC编码的干扰,从而出现了误码,在FEC编码发送到接收端的检、纠错码译码器后,检、5纠错码译码器会对FEC编码按照指定的格式进行译码,并将译码后得到的报文发送到接收端。在上述编译码过程中,可以运用里德-所罗门(Reed-Solomon;以下简称RS)编码以数据块为单位对报文进行数据冗余保护。目前,FEC已经是一种提高传输质量的重要手段。在实现本发明过程中,发明人发现现有技术中至少存在如下问题由于RS编码是一种定长运算,因此,每个参与运算的数据块都达到规定的相同长度才能进行冗余保护数据的生成运算。但是,在网络传输中,报文长度会随应用不同而变化。频繁交互的应用产生大量无规则变化的报文(例如,即时通讯系统),不适于RS编码的定长特性。如果将报文统一采用定长分组,报文必然需要填充填料(pad)至规定长度后再进行RS编码,但是,由于报文中填充有大量的填料,使得在报文传输过程中非常容易造成带宽的浪费。
发明内容本发明实施例提供一种前向纠错编码方法、前向纠错译码方法及其装置,用以解决现有技术中由于报文中填充有大量的填料而导致在报文传输过程中造成带宽的浪费的缺陷,减少不必要的带宽浪费。本发明实施例提供一种前向纠错编码方法,包括根据预先设置的编码规则在报文中填充填料,并将包含填料的报文划分为长度相等的数据块;根据编码规则和数据块生成冗余纠错块,并将填料从数据块中剔除;分别确定冗余纠错块、以及剔除填料的数据块的循环冗余校验值,并将循环冗余校验值添加在相应的冗余纠错块和剔除填料的数据块中;将添加循环冗余校验值的剔除填料的数据块和冗余纠错块构成前向纠错码,并根据前向纠错码构建数据帧,其中,数据帧包括帧头、前向纠错码、以及帧尾;将数据帧发送到接收端。本发明实施例还提供一种前向纠错译码方法,包括根据发送端发送的数据帧的帧头和帧尾接收数据帧,其中,数据帧包括帧头、前向纠错码、以及帧尾;根据前向纠错码中的循环冗余校验值确定在传输过程中前向纠错码中的预定数据块发生误码,其中,预定数据块的个数小于等于前向纠错码中冗余纠错块的个数;根据预先设置的编码规则将填料补充在前向纠错码中剔除填料的数据块中;根据冗余纠错块以及数据块计算发生误码的预定数据块;将填料从数据块中剔除,获取正确的报文。本发明实施例还提供一种前向纠错编码装置,包括填充模块,用于根据预先设置的编码规则在报文中填充填料;划分模块,用于将包含填料的报文划分为长度相等的数据块;生成模块,用于根据编码规则和数据块生成冗余纠错块;剔除模块,用于在生成模块生成冗余纠错块后,将填料从数据块中剔除;循环冗余校验模块,用于分别确定冗余纠错块、以及剔除填料的数据块的循环冗余校验值,并将循环冗余校验值添加在相应的冗余纠错块和剔除填料的数据块中;发送模块,用于将剔除填料的数据块和冗余纠错块构成前向纠错码,根据前向纠错码构建数据帧,并将数据帧发送到接收端,其中,数据帧包括帧头、前向纠错码、以及帧尾。本发明实施例还提供一种前向纠错译码装置,包括接收模块,用于根据发送端发送的数据帧的帧头和帧尾接收数据帧,其中,数据帧包括帧头、前向纠错码、以及帧尾;确定模块,用于根据前向纠错码中的循环冗余校验值确定在传输过程中前向纠错码中的预定数据块发生误码,其中,预定数据块的个数小于等于前向纠错码中冗余纠错块的个数;补充模块,用于根据预先设置的编码规则将填料补充在前向纠错码中剔除填料的数据块中;计算模块,用于根据冗余纠错块以及数据块计算发生误码的预定数据块;剔除模块,用于将填料从数据块中剔除,获取正确的报文。本发明实施例的前向纠错编码方法、前向纠错译码方法及其装置,通过在生成冗余纠错块后,将填充在数据块中的填料剔除,克服了现有技术中由于报文中填充有大量的填料而导致在报文传输过程中造成带宽的浪费的缺陷,节约了带宽资源。为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图l是现有技术中前向纠错架构的示意图2是本发明实施例的前向纠错编码方法的流程图3是本发明实施例的前向纠错编码方法的编码方案的示意图4是本发明实施例在情况一下报文接收的流程图5是本发明实施例在情况二下报文接收的流程图6是本发明实施例的前向纠错译码方法的流程图7是本发明实施例的前向纠错编码装置的示意图8是本发明实施例的前向纠错译码装置的示意图。具体实施例方式下面结合附图和具体实施例进一步说明本发明实施例的技术方案。根据本发明的实施例,提供了一种前向纠错编码方法,图2是本发明实施例的前向纠错编码方法的流程图,如图2所示,根据本发明实施例的前向纠错编码方法包括步骤201,发送端根据预先设置的编码规则在报文中填充填料,并将包含填料的报文划分为长度相等的数据块;其中,预先设置的编码规则包括数据块的个数、冗余纠错块的个数、数据块的长度、冗余纠错块的长度、添加循环冗余校验值的位置、循环冗余校验值的长度;需要说明的是,8数据块的长度等于冗余纠错块的长度。上述编码规则在接收端和发送端均预先设置。具体地,在步骤201中,根据预先设置的编码规则中数据块的个数和数据块的长度在报文的最后一个字节后面填充填料,使得包含填料的报文的长度除以数据块的长度等于数据块的个数或等于数据块的个数的整数倍;在填充完填料后,就可以根据预先设置的编码规则中数据块的个数和数据块的长度将包含填料的报文划分为规定个数的数据块。也就是说,本发明实施例将报文划分为数据块(DataSegment)和数据段(DataBlock)。每个数据段分为m个数据块,每个数据块包含k个字节。数据段内m个数据块必须长度相等。如果报文不是数据段长度的整数倍,则数据段中数据长度不足的有效数据块必须通过填充填料补齐后再参与运算。步骤202,根据预先设置的编码规则和上述填充填料后的数据块生成冗余纠错块,在生成冗余纠错块后,将填料从数据块中剔除;也就是说,根据预先设置的编码规则将报文以数据段为单位配备n(n6N且n《2)个冗余纠错块。具体地,在步骤202中,需要根据预先设置的编码规则中冗余纠错块的个数以及冗余纠错块的长度对数据块进行RS运算,生成冗余纠错块。具体地,冗余纠错块的个数n为2的情况下,生成冗余纠错块需要包括如下处理1、对每个数据块进行异或操作,生成第一冗余纠错块;2、对每个数据块进行伽罗华域(GaloisField;以下简称GF)运算,得到GF域运算结果,并对GF域运算结果进行异或运算,生成第二冗余纠错块。其中,GF域运算是RS编码在进行双位校验时用到的数学原理。GF包括加、减、乘、除四种运算,其中加、减运算和异或(XOR)运算的意义相同,表示为@;而乘运算的意义为乘以基数,表示为〇;同样,除运算定义为若A=C+B,贝'C=A〇B。在实际应用中,如果生成两个冗余纠错块,则每个数据段最大可容忍m个数据块中的任意两个数据块的误码。极限情况下,设111=5且发生误码的两个数据块均为全长误码,则最大纠错率将近30%,可以满足大部分链路的纠错需求。步骤203,分别确定冗余纠错块、以及剔除填料的数据块的循环冗余校验值,并将循环冗余校验值添加在相应的冗余纠错块和剔除填料的数据块中;具体地,本发明实施例中,采用检错和纠错两级编码。内码为检错编码,釆用循环冗余校验值,编码对象为数据块;外码为纠错编码,釆用RS运算生成冗余纠错块,编码对象为数据段。每个数据块均在块尾添加8位循环冗余校验值,以判断该数据块在传输过程中是否发生误码。设m=5,n=2,每个数据块长为IO个字节,则平均编码效率=5*10/7*11=65%。步骤204,将添加循环冗余校验值的剔除填料的数据块和冗余纠错块构成前向纠错码,并根据所述前向纠错码构建数据帧,其中,所述数据帧包括帧头、所述前向纠错码、以及帧尾。具体地,在步骤204中,为了保证接收端能够接收到完整的数据段,在将前向纠错码发送到接收端之前,需要根据前向纠错码构建数据帧,其中,数据帧包括帧头、前向纠错码、以及帧尾。步骤205,将数据帧发送到接收端。在步骤205之后,接收端根据帧头、和帧尾接收发送端发送的该数据帧,并根据其中的循环冗余校验值确定在传输过程中前向纠错码中的发生误码的数据块,即,预定数据块,需要说明的是,预定数据块的个数小于等于冗余纠错块的个数。随后,接收端根据预先设置的编码规则将填料补充在剔除填料的数据块中,并根据冗余纠错块以及数据块重新计算发生误码的预定数据块,最后,接收端将填料从数据块中剔除,获取正确的报文也就是说,一旦发生密集突发性误码,接收端会丟弃相应的数据块,并通过面向数据块的冗余纠错块重新计算出丟弃数据块的正确内容。在实际应用中,数据段内超过两个数据块发生密集突发误码的概率非常小,一旦出现则在上层协议当做丢包处理。在发送端的报文需要填充填料来参与冗余数据生成计算时,在运算逻辑上采用填料补齐后的含填料数据块参与运算,但在运算完成后,填充的填料并不参与最终的数据传输,提高了传输效率。以数据块为单位进行数据冗余恢复保证了恶劣误码环境下数据传输的进行。考虑到由于误码导致的重传报文的大量减少,本发明实施例的技术方案提高了带宽利用率,增加了数据的吞吐量。其在突发噪音式误码频繁发生的传输环境中可以保证报文的可靠传输,并且能够在冗余数据和带宽利用率之间取得很好的平衡。以下结合实例,对本发明实施例的上述技术方案进一步进行详细的说明。下面将以冗余纠错块的个数n=2的二维校验方式为例,对本发明的技术方案进行举例说明。需要说明的是,假设冗余纠错块1为P块,冗余纠错块2为Q块,其中,P为XOR校验码,由各个数据块参与比特级的异或运算产生;Q校验码采用伽罗华域运算,运用线性代数等比较复杂的算法生成。伽罗华域运算的相关技术细节已经很成熟,一些产品已经将其归纳为表格并固化,可以通过硬件查表来减少运算的开销。在传输过程中,无论误码发生在哪个数据块(包括冗余纠错块)或误码块是怎样的组合,只要发生误码的块数不超过冗余纠错块的个数,该编码方案都可以保证有效数据的完整恢复。目前,无论长短报文,只要不是定长出现,采用RS编码都会产生大量额外开销。对于短报文,需要填充填料(pad)至规定长度才能够进行冗余校验块的生成计算;对于长报文,如果其长度不能整除规定的长度,余数部分数据也需要填充pad至定长才能参与冗余纠错块运算。而大量的pad会造成带宽的严重浪费。的根本原因是生成冗余校验块(P+Q),在实际应用中并无其他用处。虛拟pad方案默认一个值(例如0),作为pad参与到冗余纠错块的生成运算。在冗余纠错块生成之后,向下层递交时并不包含所填充的pad,只是原始报文数据和冗余纠错块参与封装。如果传输过程中发生误码,则需要冗余纠错块和原始数据块共同参与纠错恢复。具体地,在运算前将虚拟pad填充在数据块的尾端至补齐,纠错运算结束后再将数据块尾端的pad剔除,恢复为原始未填充状态。需要说明的是,发送端和接收端需要统一pad的取值,例如,双方均默认pad为0。对于pad,可以进一步细分为两类第一类是针对有效数据长度不足构成规定长度的数据块而添加的pad;第二类是由于现有数据块不足编码方案的块数规定而添加的pad块。这两类pad最终都不参与数据传输,且都不参与循环冗余校验值的计算。本发明实施例要求发送端和接收端事先统一编解码方案来保证接收端对虛拟pad的还原。如果接收端通过循环冗余校验值发现传输过程中发生误码,则将数据添加pad至约定的长度,再通过纠错恢复运算还原误码数据。假设双方协商的编码方案为5个数据块,2个冗余纠错块,每个块长为IO个字节,每块在块尾附加1个字节CRC校验和。如果需要发送的报文为27个字节,如图3所示,则报文数据在该编码方案的分配为第一数据块、第二数据块由报文数据的前20个字节组成;第三数据块的前7个字节为报文数据,从第8个字节开始填充pad至数据块尾端;第四数据块、第五数据块全部由pad填充。5个数据块构建完成后,运用12RS编码算法计算生成2个冗余纠错块。至此,5个数据块和2个冗余纠错块均已生成。接下来需要剔除pad填料,计算各数据段的循环冗余校验值(数据块3只有7个字节的报文数据参与循环冗余校验值的计算),并将循环冗余校验值附加在相应的数据块尾。3个数据块(30字节)和2个冗余块(22字节)构成了即将发送的FEC码,每个块均包含1字节循环冗余校验值(全pad块除外)。判断在传输过程中是否发生误码,可以在接收端通过循环冗余校验值来验证。每个循环冗余校验值负责本数据块误码的验证。在实际传输过程中,存在误码命中了循环冗余校验值本身而导致接收端校验出的循环冗余校验值与该数据块的循环冗余校验值不一致的情况。对此,本发明实施例不采用其他手段进一步确定误码的命中对象而统一将该数据块完整恢复。在接收端,依次对每个块进行循环冗余校验,如果最后的计算得到的循环冗余校验值与数据块后面携带的循环冗余校验值一致,则说明在传输过程中该块未发生误码,反之则为该块被误码命中。如果在传输过程中发生误码,则在接收端将FEC编码恢复至pad填充状态,再利用RS编码对误码块进行恢复。由于底层传输链路的原因,发送端发送的一个报文,接收端接收报文时可能存在以下两种情况(l)报文分多次接收,每次接收报文的一部分;(2)—次接受一串长数据,其中包含多个报文。这两种情况都要求传输系统对报文的边界做明确清晰的定义,否则,一个报文的错误接收会导致接下来所有报文无法正确接收。所以,仅仅为原始数据块提供冗余纠错保护机制还不足以保证其在不可靠链路上的正确传输,必须提供额外的封装机制来保证编码后的前向纠错数据能被接收端正确接收。为了保证接收端对完整报文的识别,在发送端冗余纠错计算完毕后,本发明实施例为整个FEC编码构建数据帧。帧结构中包含帧头和帧尾,接收端通过记录帧头和帧尾,识别出数据流中的完整FEC编码。从收到帧头起,接收端开始将接收的数据存入緩存,并一直进行至接收到帧尾标识符为止。下面对两种传输情况分别进行说明情况一,报文分多次接收,每次接收一部分。图4是本发明实施例在情况一下报文接收的流程图,如图4所示,包括如下处理步骤l,接收端在未接收报文前处于初始化状态;步骤2,接收端接收到帧头标识符;步骤3,在接收到帧头标识符后,接收端开始将所接收到的数据存入緩存,如果在本次接收数据中未出现帧尾标识符,则保存緩存数据暂不解石马,置才妄*1欠标志^(立为acceptable。步骤4,如果在帧接收未完成状态下接收到帧头标识符,说明在传输过程中帧尾标识符丢失,清空緩存,向上层报告丢包。否则跳至步骤3。步骤5,如果在帧接收未完成状态下接收到新的数据,将所接收到的数据存入緩存,直至接收到帧尾标识符,将数据递交解码器,置接受标志位为完成。情况二,一次接受一串长数据,其中包含多个报文。图5是本发明实施例在情况二下报文接收的流程图,如图5所示,包括如下处理步骤l,接收端在未接收报文前处于初始化状态;步骤2,接收端接收到帧头标识符;步骤3,在接收到帧头标识符后,接收端开始将所接收到的数据存入緩存,在帧尾出现后,将完整的FEC编码送交解码器;步骤4,如果帧尾标识符的下一个数据不是帧头标识符,则将接收标志位置为flush,在搜索到帧头标识符之前不接收任何数据;步骤5,如果在接收到帧尾标识符后,搜索到帧头标识符,则执行步骤1。通过上述处理,以数据块为单位进行数据冗余恢复保证了恶劣误码环境下数据传输的进行。考虑到由于误码导致的重传报文的大量减少,本发明实施例的技术方案提高了带宽利用率,增加了数据的吞吐量。其在突发噪音式误码频繁发生的传输环境中可以保证报文的可靠传输,并且能够在冗余数据和带宽利用率之间取得很好的平衡。根据本发明的实施例,提供了一种前向纠错译码方法,图6是本发明实施例的前向纠错译码方法的流程图,如图6所示,根据本发明实施例的前向纠错译码方法包括步骤601,根据发送端发送的数据帧的帧头和帧尾接收该数据帧,其中,该数据帧种包括帧头、前向纠错码、以及帧尾;具体地,由于底层传输链路的原因,发送端发送的一个报文,接收端接收报文时可能存在以下两种情况(l)报文分多次接收,每次接收报文的一部分;(2)—次接受一串长数据,其中包含多个报文。这两种情况都要求传输系统对报文的边界做明确清晰的定义,否则,一个报文的错误接收会导致接下来所有报文无法正确接收。所以,仅仅为原始数据块提供冗余纠错保护机制还不足以保证其在不可靠链路上的正确传输,必须提供额外的封装机制来保证编码后的前向纠错数据能被接收端正确接收。为了保证接收端对完整报文的识别,在发送端计算完冗余纠错块后,还需要为整个FEC编码构建数据帧。帧结构中包含帧头和帧尾,接收端通过记录帧头和帧尾,识别出数据流中的完整FEC编码。从收到顿头起,接收端开始将接收的数据存入緩存,并一直进行至接收到帧尾标识符为止。其具体接收的处理过程可以参照图4、图5进行理解,在此不再赘述。步骤602,根据前向纠错码中的循环冗余校验值确定在传输过程中前向纠错码中的预定数据块发生误码,其中,所述预定数据块的个数小于等于所述前向纠错码中冗余纠错块的个数;具体地,判断在传输过程中是否发生误码,可以在接收端通过循环冗余校验值来验证。每个循环冗余校验值负责本数据块误码的验证。在实际传输过程中,存在误码命中了循环冗余校验值本身而导致接收端校验出的循环冗余校验值与该数据块的循环冗余校验值不一致的情况。对此,本发明实施例不采用其他手段进一步确定误码的命中对象而统一将该数据块完整恢复。在接收端,依次对每个数据块进行循环冗余校验,如果最后的计算得到的循环冗余校验值与数据块携带的循环冗余校验值一致,则说明在传输过程中该数据块未发生误码,反之则为该数据块被误码命中。步骤603,根据预先设置的编码规则将填料补充在所述前向纠错码中剔除填料的数据块中;需要说明的是,发送端和接收端需要统一pad的取值,例如,双方均默i人pad为0。具体地,对于填料(pad),可以进一步细分为两类第一类是针对有效数据长度不足构成规定长度的数据块而添加的pad;第二类是由于现有数据块不足编码方案的块数规定而添加的pad块。这两类pad最终都不参与数据传输。本发明实施例要求发送端和接收端事先统一编解码方案来保证接收端对虚拟pad的还原。如果接收端通过循环冗余校验值发现传输过程中发生误码,则将数据添加pad至约定的长度,再通过纠错恢复运算还原误码数据。步骤604,根据冗余纠错块以及数据块计算发生误码的预定数据块;具体地,在传输过程中,无论误码发生在哪个数据块(包括冗余纠错块)或误码块是怎样的组合,只要发生误码的块数不超过冗余纠错块的个数,该编码方案都可以保证有效数据的完整恢复。步骤605,将填料从所述数据块中剔除,获取正确的报文。通过上述处理,接收端可以正确、完整地接收到发送端发送的报文。根据本发明的实施例,提供了一种前向纠错编码装置,位于发送端,图7是本发明实施例的前向纠错编码装置的示意图,如图7所示,根据本发明实施例的前向纠错编码装置包括填充模块70、划分模块71、生成模块72、剔除模块73、循环冗余校验模块74、发送模块75。下面,对本发明实施例的前向纠错编码装置中的各个模块进行详细的说明。填充模块70用于根据预先设置的编码规则在报文中填充填料;其中,预先设置的编码规则包括数据块的个数、冗余纠错块的个数、数据块的长度、冗余纠错块的长度、添加循环冗余校验值的位置、循环冗余校验值的长度;需要说明的是,数据块的长度等于冗余纠错块的长度。具体地,填充模块70根据预先设置的编码规则中数据块的个数和数据块的长度在报文的最后一个字节后面填充填料,使得包含填料的报文的长度除以数据块的长度等于数据块的个数或等于数据块的个数的整数倍;也就是说,如果报文不是数据段长度的整数倍,则数据段中数据长度不足的有效数据块必须由填充模块70通过填充填料补齐后再参与运算。在填充完填料后,划分模块71就可以根据预先设置的编码规则中数据块的个数和数据块的长度将包含填料的报文划分为规定个数的数据块。随后,生成模块72根据编码规则和数据块生成冗余纠错块;具体地,生成模块72需要根据预先设置的编码规则中冗余纠错块的个数以及冗余纠错块的长度对数据块进行RS运算,生成冗余纠错块。在冗余纠错块的个数n为2的情况下,生成模块72生成冗余纠错块需要包括如下处理1、生成模块72对每个数据块进行异或操作,获取第一冗余纠错块;2、生成模块72对每个数据块进行GF运算,得到GF域运算结果,并对GF域运算结果进行异或运算,获取第二冗余纠错块。在生成模块72生成冗余纠错块后,剔除模块73将填料从数据块中剔除;随后,循环冗余校验模块74分别确定冗余纠错块、以及剔除填料的数据块的循环冗余校验值,并将循环冗余校验值添加在相应的冗余纠错块和剔除填料的数据块中;最后,发送模块75将添加循环冗余校验值的剔除填料的所述数据块和所述冗余纠错块构成前向纠错码,根据所述前向纠错码构建数据帧,并将所述数据帧发送到接收端,其中,所述数据帧包括帧头、所述前向纠错码、以及帧尾。具体地,为了保证接收端能够接收到完整的数据段,在将前向纠错码发送到接收端之前,发送模块75需要根据前向纠错码构建数据帧,其中,数据帧包括帧头、前向纠错码、以及帧尾,随后,发送模块75就可以将构建好的数据帧发送到接收端。通过上述处理,由于填充的填料并不参与最终的数据传输,从而可以提高传输效率。以数据块为单位进行数据冗余恢复保证了恶劣误码环境下数据传输的进行。考虑到由于误码导致的重传报文的大量减少,本发明实施例的技术方案提高了带宽利用率,增加了数据的吞吐量。其在突发噪音式误码频繁发生的传输环境中可以保证报文的可靠传输,并且能够在冗余数据和带宽利用率之间取得很好的平衡。根据本发明的另一实施例,提供了一种前向纠错译码装置,图8是本发明实施例的前向纠错译码装置的示意图,如图8所示,根据本发明实施例的前向纠错译码装置包括接收模块80、确定模块81、补充模块82、计算模块83、剔除模块84。下面将对本发明实施例的前向纠错译码装置中的各个模块进行详细说明。接收模块80根据发送端发送的数据帧的帧头和帧尾接收数据帧,其中,数据帧包括帧头、前向纠错码、以及帧尾;具体地,由于底层传输链路的原因,发送端发送的一个报文,接收端的接收模块80接收报文时可能存在以下两种情况(1)报文分多次接收,每次接收报文的一部分;(2)—次接受一串长数据,其中包含多个报文。这两种情况都要求传输系统对报文的边界做明确清晰的定义,否则,一个报文的错误接收会导致接下来所有报文无法正确接收。所以,仅仅为原始数据块提供冗余纠错保护机制还不足以保证其在不可靠链路上的正确传输,必须提供额外的封装机制来保证编码后的前向纠错数据能被接收端正确接收。18为了保证接收端对完整报文的识别,在发送端计算完冗余纠错块后,还需要为整个FEC编码构建数据帧。帧结构中包含帧头和帧尾,接收模块80通过记录帧头和帧尾,识别出数据流中的完整FEC编码。乂人收到帧头起,接收端开始将接收的数据存入緩存,并一直进行至接收到帧尾标识符为止。其具体接收的处理过程可以参照图4、图5进行理解,在此不再赘述。确定模块81用于根据前向纠错码中的循环冗余校验值确定在传输过程中前向纠错码中的预定数据块发生误码,其中,预定数据块的个数小于等于前向纠错码中冗余纠错块的个数;具体地,判断在传输过程中是否发生误码,确定模块81可以通过循环冗余校验值来验证。每个循环冗余校验值负责本数据块误码的验证。在实际传输过程中,存在误码命中了循环冗余校验值本身而导致接收端校验出的循环冗余校验值与该数据块的循环冗余校验值不一致的情况。对此,本发明实施例不采用其他手段进一步确定误码的命中对象而统一将该数据块完整恢复。在接收端,确定模块81依次对每个数据块进行循环冗余校验,如果最后的计算得到的循环冗余校验值与数据块携带的循环冗余校验值一致,则说明在传输过程中该数据块未发生误码,反之则为该数据块被误码命中。补充模块82用于根据预先设置的编码规则将填料补充在前向纠错码中剔除填料的数据块中;需要说明的是,发送端和接收端需要统一pad的取值,例如,双方均默i人pad为0。具体地,对于填料(pad),可以进一步细分为两类第一类是针对有效数据长度不足构成规定长度的数据块而添加的pad;第二类是由于现有数据块不足编码方案的块数规定而添加的pad块。这两类pad最终都不参与数据传输。本发明实施例要求发送端和接收端事先统一编解码方案来保证接收端对虚拟pad的还原。如果确定模块81过循环冗余校验值发现传输过程中发生误码,则补充模块82需要将数据添加pad至约定的长度,再通过纠错恢复运算还原误码数据。计算模块83用于根据冗余纠错块以及数据块计算发生误码的预定数据块;具体地,在传输过程中,无论误码发生在哪个数据块(包括冗余纠错块)或误码块是怎样的组合,只要发生误码的块数不超过冗余纠错块的个数,该编码方案都可以保证有效数据的完整恢复。最后,剔除模块84将填料从数据块中剔除,获取正确的报文。通过上述处理,接收端可以正确、完整地接收到发送端发送的报文。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动》兹盘、CD-ROM、或任意其它形式的存储介质中。综上所述,借助于本发明实施例的技术方案,以数据块为单位进行数据冗余恢复保证了恶劣误码环境下数据传输的进行。考虑到由于误码导致的重传报文的大量减少,本发明实施例的技术方案提高了带宽利用率,增加了数据的吞吐量。其在突发噪音式误码频繁发生的传输环境中可以保证报文的可靠传输,并且能够在冗余数据和带宽利用率之间取得很好的平衡。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。2权利要求1、一种前向纠错编码方法,其特征在于,包括根据预先设置的编码规则在报文中填充填料,并将包含填料的所述报文划分为长度相等的数据块;根据所述编码规则和所述数据块生成冗余纠错块,并将所述填料从所述数据块中剔除;分别确定所述冗余纠错块、以及剔除填料的所述数据块的循环冗余校验值,并将所述循环冗余校验值添加在相应的冗余纠错块和剔除填料的数据块中;将添加所述循环冗余校验值的剔除填料的所述数据块和所述冗余纠错块构成前向纠错码,并根据所述前向纠错码构建数据帧,其中,所述数据帧包括帧头、所述前向纠错码、以及帧尾;将所述数据帧发送到接收端。2、根据权利要求1所述的方法,其特征在于,所述编码规则包括所述数据块的个数、所述冗余纠错块的个数、所述数据块的长度、所述冗余纠错块的长度、添加所述循环冗余校验值的位置、所述循环冗余校验值的长度,其中,所述数据块的长度等于所述冗余纠错块的长度。3、根据权利要求2所述的方法,其特征在于,所述根据预先设置的编码规则在报文中填充填料,并将包含填料的所述报文划分为长度相等的数据块包括根据所述数据块的个数和所述数据块的长度在所述报文的最后一个字节后面填充填料,使得包含填料的所述报文的长度除以所述数据块的长度等于所述数据块的个数或等于所述数据块的个数的整数倍;为所述数据块。4、根据权利要求3所述的方法,其特征在于,所述根据所述编码规则和所述数据块生成冗余纠错块包括根据所述冗余纠错块的个数以及所述冗余纠错块的长度对所述数据块进行里德所罗门RS运算,生成所述冗余纠错块。5、根据权利要求4所述的方法,其特征在于,在所述冗余纠错块的个数为2的情况下,所述根据所述冗余纠错块的个数对所述数据块进行里德所罗门RS运算,生成所述冗余纠错块包括对每个数据块进行异或操作,生成第一冗余纠错块;对每个数据块进行伽罗华域GF运算,得到GF域运算结果,并对所述GF域运算结果进行异或运算,生成第二冗余纠错块。6、根据权利要求5所述的方法,其特征在于,所述将所述数据帧发送到所述接收端之后,还包括所述接收端根据所述帧头、和所述帧尾接收所述数据帧;中的预定数据块发生误码,其中,所述预定数据块的个数小于等于所述冗余纠错块的个数;所述接收端根据所述编码规则将所述填料补充在剔除填料的所述数据块中;所述接收端根据所述冗余纠错块以及所述数据块重新计算发生误码的所述预定数据块;所述接收端将所述填料从所述数据块中剔除,获取正确的所述报文。7、一种前向纠4脊译码方法,其特征在于,包括根据发送端发送的数据帧的帧头和帧尾接收所述数据帧,其中,所述数据帧包括所述帧头、前向纠错码、以及所述帧尾;根据所述前向纠错码中的循环冗余校验值确定在传输过程中所述前向纠错码中的预定数据块发生误码,其中,所述预定数据块的个数小于等于所述前向纠错码中冗余纠错块的个数;根据预先设置的编码规则将填料补充在所述前向纠错码中剔除填料的数据块中;根据所述冗余纠错块以及所述数据块计算发生误码的所述预定数据块;将所述填料从所述数据块中剔除,获取正确的报文。8、一种前向纠错编码装置,其特征在于,包括填充模块,用于根据预先设置的编码规则在报文中填充填料;划分模块,用于将包含填料的所述报文划分为长度相等的数据块;生成模块,用于根据所述编码规则和所述数据块生成冗余纠错块;剔除模块,用于在所述生成模块生成所述冗余纠错块后,将所述填料从所述翁:据块中剔除;循环冗余校验模块,用于分别确定所述冗余纠错块、以及剔除填料的所述数据块的循环冗余校验值,并将所述循环冗余校验值添加在相应的冗余纠错块和剔除填料的数据块中;发送模块,用于将剔除填料的所述数据块和所述冗余纠错块构成前向纠错码,根据所述前向纠错码构建数据帧,并将所述数据帧发送到接收端,其中,所述数据帧包括帧头、所述前向纠错码、以及帧尾。9、一种前向纠错译码装置,其特征在于,包括其中,所述数据帧包括所述帧头、前向纠错码、以及所述帧尾;确定模块,用于根据所述前向纠错码中的循环冗余校验值确定在传输过程中所述前向纠错码中的预定数据块发生误码,其中,所述预定数据块的个数小于等于所述前向纠错码中冗余纠错块的个数;补充模块,用于根据预先设置的编码规则将填料补充在所述前向纠错码中剔除填料的数据块中;计算模块,用于根据所述冗余纠错块以及所述数据块计算发生误码的所述预定数据块;剔除模块,用于将所述填料从所述数据块中剔除,获取正确的报文。全文摘要本发明提供一种前向纠错编码方法、前向纠错译码方法及其装置,该前向纠错编码方法包括根据预先设置的编码规则在报文中填充填料,并将包含填料的报文划分为长度相等的数据块;根据编码规则和数据块生成冗余纠错块,并将填料从数据块中剔除;分别确定冗余纠错块、以及剔除填料的数据块的循环冗余校验值,并将循环冗余校验值添加在相应的冗余纠错块和剔除填料的数据块中;将剔除填料的数据块和冗余纠错块构成前向纠错码,并根据所述前向纠错码构建数据帧,其中,所述数据帧包括帧头、所述前向纠错码、以及帧尾;将所述数据帧发送到接收端。通过上述处理,节约了带宽资源。文档编号H04L1/00GK101656593SQ200910092479公开日2010年2月24日申请日期2009年9月15日优先权日2009年9月15日发明者刘亚萍,廖海宁,张晓哲,宏王,王宝生,冰白,宁胡,苏金树,郦苏丹,琳陈,陈晓梅,静陶,陶孜谨,龚正虎申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1