CN109889309A - 前向纠错数据生成方法、装置及电子设备 - Google Patents
前向纠错数据生成方法、装置及电子设备 Download PDFInfo
- Publication number
- CN109889309A CN109889309A CN201910147061.3A CN201910147061A CN109889309A CN 109889309 A CN109889309 A CN 109889309A CN 201910147061 A CN201910147061 A CN 201910147061A CN 109889309 A CN109889309 A CN 109889309A
- Authority
- CN
- China
- Prior art keywords
- data
- data packet
- register
- sent
- row
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
本申请提供一种前向纠错数据生成方法、装置及电子设备,涉及数据传输技术领域。其中,所述方法通过在获取到每一个数据包后,根据其行号及列号将其存储到寄存器或将其与寄存器中存储的相应的寄存数据进行计算得到校验数据,并采用计算得到的校验数据对寄存器中存储的相应的寄存数据进行替换,直到每行或每列的最后一个数据包与寄存器中存储的对应的寄存数据进行计算得到该行或该列数据包所对应的前向纠错数据。通过该方法,可以使得每一个数据包可以在缓存后快速地输出至数据接收端,从而达到降低数据传输时延的效果。同时,通过该方法进行前向纠错数据计算,还可以免于对所有的原始数据包进行缓存,从而降低数据发送端对缓存空间大小的要求。
Description
技术领域
本申请涉及数据传输技术领域,具体而言,涉及一种前向纠错数据生成方法、装置及电子设备。
背景技术
前向纠错数据也叫前向纠错码(Forward Error Correction,简称FEC),是一种用于提高通信质量的数据。在数据远程传输过程中,通过在数据发送端增加由前向纠错数据构成的冗余包,并将该冗余包与原始数据包一同发送至数据接收端,可在原始数据包丢失或错误时通过该冗余包进行通信数据恢复。
然而,现有技术中在生成该前向纠错数据时,需要将所有的原始数据包写入预设的缓存矩阵后,才能进行前向纠错数据的计算以及原始数据包的输出。因此,现有技术中的数据传输方法对数据发送端的缓存空间大小有较高的要求,同时数据在进行传输的过程中时延也较高。
发明内容
有鉴于此,本申请提供一种前向纠错数据生成方法、装置及电子设备,以解决上述背景技术中的至少一个技术问题。
为了实现上述目的,本申请较佳实施例采用的技术方案如下:
第一方面,本申请实施例提供一种前向纠错数据生成方法,应用于电子设备,所述电子设备包括第一寄存器及第二寄存器,所述方法包括:
获取待发送的数据包;
根据预设的数据包缓存规则确定所述待发送的数据包所对应的行号及列号,并在所述待发送的数据包为所在行的第一个数据包时,将所述待发送的数据包存储在所述第一寄存器,在所述待发送的数据包为所在列的第一个数据包时,将所述待发送的数据包存储在所述第二寄存器;
将行号相同列号依次增加的数据包,依次与所述第一寄存器中存储的该行号下对应的寄存数据进行计算,得到行校验数据,并采用计算得到的行校验数据替换所述第一寄存器中存储的该行号下对应的寄存数据,直到该行号下最后一个数据包与所述第一寄存器中存储的该行号下对应的寄存数据进行计算,得到该行号下数据包的前向纠错数据;
将列号相同行号依次增加的数据包,依次与所述第二寄存器中存储的该列号下对应的寄存数据进列计算,得到列校验数据,并采用计算得到的列校验数据替换所述第二寄存器中存储的该列号下对应的寄存数据,直到该列号下最后一个数据包与所述第二寄存器中存储的该列号下对应的寄存数据进列计算,得到该列号下数据包的前向纠错数据。
可选地,在本申请实施例中,所述获取待发送的数据包的步骤,包括:
按照待发送的数据包写入缓存的缓存规则从缓存中依次获取待发送的数据包。
可选地,在本申请实施例中,所述方法还包括:
若所述待发送的数据包是所在行或列的第一个数据包,在将所述待发送的数据包存储到所述第一寄存器或第二寄存器后,将所述待发送的数据包发送给数据接收设备,并释放所述待发送的数据包所占用的缓存空间;
若所述待发送的数据包不是所在行或列的第一个数据包,在将所述数据包与所述第一寄存器中存储的该行号下对应的寄存数据或第二寄存器中存储的该列号下对应的寄存数据进行计算,得到行校验数据或列校验数据后,将所述待发送的数据包发送给数据接收设备,并释放所述待发送的数据包所占用的缓存空间。
可选地,在本申请实施例中,所述方法还包括:
在生成所述待发送的数据包所在行或所在列的前向纠错数据后,将该前向纠错数据发送给数据接收设备,并释放该前向纠错数据在第一寄存器或第二寄存器中所占用的存储空间。
可选地,在本申请实施例中,所述将行号相同列号依次增加的数据包,依次与所述第一寄存器中存储的该行号下对应的寄存数据进行计算的步骤,包括:
在所述数据包不是所在行的第一个数据包时,将所述数据包的净荷与所述第一寄存器中存储的该行号下对应的寄存数据的净荷按照对应位进行异或运算;
所述将列号相同行号依次增加的数据包,依次与所述第二寄存器中存储的该列号下对应的寄存数据进列计算的步骤,包括:
在所述数据包不是所在列的第一个数据包时,将所述数据包的净荷与所述第二寄存器中存储的该行号下对应的寄存数据的净荷按照对应位进行异或运算。
第二方面,本申请实施例提供一种前向纠错数据生成装置,应用于电子设备,所述电子设备包括第一寄存器及第二寄存器,所述装置包括:
获取模块,用于获取待发送的数据包;
确定模块,用于根据预设的数据包缓存规则确定所述待发送的数据包所对应的行号及列号,并在所述待发送的数据包为所在行的第一个数据包时,将所述待发送的数据包存储在所述第一寄存器,在所述待发送的数据包为所在列的第一个数据包时,将所述待发送的数据包存储在所述第二寄存器;
计算模块,用于将行号相同列号依次增加的数据包,依次与所述第一寄存器中存储的该行号下对应的寄存数据进行计算,得到行校验数据,并采用计算得到的行校验数据替换所述第一寄存器中存储的该行号下对应的寄存数据,直到该行号下最后一个数据包与所述第一寄存器中存储的该行号下对应的寄存数据进行计算,得到该行号下数据包的前向纠错数据;
将列号相同行号依次增加的数据包,依次与所述第二寄存器中存储的该列号下对应的寄存数据进列计算,得到列校验数据,并采用计算得到的列校验数据替换所述第二寄存器中存储的该列号下对应的寄存数据,直到该列号下最后一个数据包与所述第二寄存器中存储的该列号下对应的寄存数据进列计算,得到该列号下数据包的前向纠错数据。
可选地,在本申请实施例中,所述获取模块具体用于:
按照待发送的数据包写入缓存的缓存规则从缓存中依次获取待发送的数据包。
可选地,在本申请实施例中,所述装置还包括输出模块,所述输出模块用于:
在所述待发送的数据包为所在行或列的第一个数据包时,在将所述待发送的数据包存储到所述第一寄存器或第二寄存器后,将所述待发送的数据包发送给数据接收设备,并释放所述待发送的数据包所占用的缓存空间;
在所述待发送的数据包不是所在行或列的第一个数据包时,在将所述数据包与所述第一寄存器中存储的该行号下对应的寄存数据或第二寄存器中存储的该列号下对应的寄存数据进行计算,得到行校验数据或列校验数据后,将所述待发送的数据包发送给数据接收设备,并释放所述待发送的数据包所占用的缓存空间;以及,
在生成所述待发送的数据包所在行或所在列的前向纠错数据后,将该前向纠错数据发送给数据接收设备,并释放该前向纠错数据在第一寄存器或第二寄存器中所占用的存储空间。
可选地,在本申请实施例中,所述计算模块还具体用于:
在所述数据包不是所在行的第一个数据包时,将所述数据包的净荷与所述第一寄存器中存储的该行号下对应的寄存数据的净荷按照对应位进行异或运算;
在所述数据包不是所在列的第一个数据包时,将所述数据包的净荷与所述第二寄存器中存储的该行号下对应的寄存数据的净荷按照对应位进行异或运算。
第三方面,本申请实施例还提供一种电子设备,所述电子设备包括处理器及存储器;其中,所述存储器用于存储计算机程序,所述处理器用于加载执行所述计算机程序,以使所述电子设备执行如上所述的方法。
相对于现有技术而言,本申请具有以下有益效果:
本申请实施例提供的前向纠错数据生成方法,通过在获取到每一个数据包后,根据其行号及列号将其存储到寄存器或将其与寄存器中存储的相应的寄存数据进行计算得到校验数据,并采用计算得到的校验数据对寄存器中存储的相应的寄存数据进行替换,直到每行或每列的最后一个数据包与寄存器中存储的对应的寄存数据进行计算得到该行或该列数据包所对应的前向纠错数据。通过该方法,可以使得每一个数据包可以在缓存后快速地输出至数据接收端,从而达到降低数据传输时延的效果。同时,通过该方法进行前向纠错数据计算,还可以免于对所有的原始数据包进行缓存,因此,通过该方法还可以降低数据发送端对缓存空间大小的要求。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为现有技术中的前向纠错数据生成方法示意图;
图2为本申请实施例提供的电子设备的结构示意图;
图3为本申请实施例提供的前向纠错数据生成方法的步骤流程示意图一;
图4为本申请实施例提供的第一寄存器中各寄存数据的变化过程示意图;
图5为本申请实施例提供的第二寄存器中各寄存数据的变化过程示意图;
图6为本申请实施例提供的前向纠错数据生成方法的步骤流程示意图二;
图7为本申请实施例提供的前向纠错数据生成装置的模块示意图。
图标:100-电子设备;111-存储器;112-存储控制器;113-处理器;70-前向纠错数据生成装置;701-获取模块;702-确定模块;703-计算模块;704-输出模块。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本申请的描述中,需要说明的是,术语“第一”、“第二”等命名方式仅是为了区分本申请的不同特征,简化描述,而不是指示或暗示其相对重要性,因此不能理解为对本申请的限制。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
参照图1,为现有技术中的前向纠错数据的生成方法示意图,其中,Pkt-11至Pkt-mn为待发送的数据包。
在现有技术中,通常需要将所有待发送的数据包以图1所示的矩阵形式进行顺序存储(即按照数据包的输入顺序依次将其写入预设的缓存矩阵,每一行存储n个数据包),然后再根据缓存矩阵中每一行及每一列待发送的数据包分别计算出相应的前向纠错数据(第一行数据包对应FEC-R1、第m行数据包对应FEC-Rm、第一列数据包对应FEC-C1、第n列数据包对应FEC-Cn)。
采用该方法进行前向纠错数据的计算,由于需要对所有待发送的数据包进行缓存,因此,对数据发送端的缓存空间大小有较高的要求。
同时,该方法需要在所有待发送的数据包缓存完后才能开始前向纠错数据的计算,然后在前向纠错数据计算完成后才能将待发送的数据包输出至数据接收端,因此,采用该方法进行前向纠错数据计算还会导致数据传输过程产生较大的延时。
针对上述问题,本申请提供一种前向纠错数据生成方法、装置及电子设备100,以降低对数据发送端的缓存空间大小的要求,同时降低数据传输过程中产生的延时。
参照图2,为本申请实施例提供的电子设备100。所述电子设备100包括前向纠错数据生成装置70、存储器111、存储控制器112及处理器113。
其中,所述存储器111、存储控制器112及处理器113各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述前向纠错数据生成装置70可以包括至少一个可以软件或固件(firmware)的形式存储于所述存储器111中或固化在所述电子设备100的操作系统(operating system,OS)中的软件功能模块。所述处理器113用于执行所述存储器111中存储的可执行模块,例如所述前向纠错数据生成装置70所包括的软件功能模块及计算机程序等。
在所述电子设备100中,所述存储器111可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(Erasable ProgrammableRead-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable ProgrammableRead-Only Memory,EEPROM)等。所述存储器111用于存储程序,所述处理器113在接收到执行指令后,执行所述程序。所述处理器113以及其他可能的组件对存储器111的访问可在所述存储控制器112的控制下进行。
所述处理器113可能是一种集成电路芯片,具有信号的处理能力;也可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。
应当理解的是,图2所示的结构仅为示意图,所述电子设备100还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。图2中所示的各组件可以采用硬件、软件或其组合实现。
参照图3,为本申请实施例提供的前向纠错数据生成方法的步骤流程示意图。该方法可以应用于图2所示的电子设备100,为该电子设备100提供如下所述的前向纠错数据生成功能。
具体地,所述方法包括:
步骤S10,获取待发送的数据包。
在步骤S10中,所述待发送的数据包可以来源于其他设备,也可以是存储在本地存储介质中的数据。在本申请实施例中,所述待发送的数据包可以是,但不限于音频数据或视频数据。
在一种可能的实施方式中,所述电子设备100在接收到或从本地存储介质中读取到待发送的数据包后,可以将该待发送的数据包按照一定的缓存规则进行缓存(例如将第一个数据包写入预设缓存矩阵中的第一行第一列,将第二个数据包写入预设缓存矩阵中的第一行第二列,然后在第一行缓存的数据包达到预设数量后将数据包写入第二行第一列,之后的数据包以此类推),然后由CPU按照数据包写入缓存的缓存规则从缓存中依次获取待发送的数据包。
继续参照图3,在所述步骤S10之后,所述方法还包括:
步骤S20,根据预设的数据包缓存规则确定所述待发送的数据包所对应的行号及列号,并在所述待发送的数据包为所在行的第一个数据包时,将所述待发送的数据包存储在所述第一寄存器,在所述待发送的数据包为所在列的第一个数据包时,将所述待发送的数据包存储在所述第二寄存器。
在本申请实施例中,可以通过所述待发送的数据包所对应的序号以及预设的数据包缓存规则确定每一个待发送的数据包所对应的行号及列号。例如,某一个待发送的数据包为写入缓存的第11个数据包,而预设的缓存规则为每一行缓存10个数据包,则可以确定该数据包所对应的行号为2,列号为1(Pkt-21)(即存储于缓存矩阵中的第二行第一列)。
进一步地,在本申请实施例中,所述电子设备100包括第一寄存器及第二寄存器。为了降低缓存中缓存的数据包数量,同时减少数据包在缓存中存储的时间,通过在CPU检测到待发送的数据包为所在行的第一个数据包时,将其存储到所述第一寄存器,在CPU检测到待发送的数据包为所在列的第一个数据包时,将其存储到所述第二寄存器,以对所述待发送的数据包信息进行暂时存储,用于在后续过程中计算数据包所对应的前向纠错数据。
具体而言,即在本申请实施例中,当待发送的数据包所对应的列号为1时,将该待发送的数据包存储到所述第一寄存器,当待发送的数据包所对应的行号为1时,将该待发送的数据包存储到所述第二寄存器。需要说明的是,在本申请实施例中,当预设缓存矩阵为m行×n列时,所述第一寄存器中存储的与待发送的数据包所对应的寄存数据最多为m个(当该前向纠错数据的输出规则为在生成后立即输出时,则该第一寄存器中存储的与待发送的数据包所对应的寄存数据仅为1个),所述第二寄存器中存储的与待发送的数据包所对应的寄存数据最多为n个。
进一步地,继续参照图3,在所述步骤S20之后,所述方法还包括:
步骤S30,将行号相同列号依次增加的数据包,依次与所述第一寄存器中存储的该行号下对应的寄存数据进行计算,得到行校验数据,并采用计算得到的行校验数据替换所述第一寄存器中存储的该行号下对应的寄存数据,直到该行号下最后一个数据包与所述第一寄存器中存储的该行号下对应的寄存数据进行计算,得到该行号下数据包的前向纠错数据。
步骤S40,将列号相同行号依次增加的数据包,依次与所述第二寄存器中存储的该列号下对应的寄存数据进列计算,得到列校验数据,并采用计算得到的列校验数据替换所述第二寄存器中存储的该列号下对应的寄存数据,直到该列号下最后一个数据包与所述第二寄存器中存储的该列号下对应的寄存数据进列计算,得到该列号下数据包的前向纠错数据。
具体地,请参照图4,为本实施例中第一寄存器中各寄存数据的变化过程示意图,在所述待发送的数据包所对应的列号不是1时,则将其与所述第一寄存器中存储的对应行的寄存数据进行计算,得到该行所对应的行校验数据。例如,当检测到某一个数据包所对应的行号为1,列号为2(Pkt-12)时,则将其与第一寄存器中存储的第1行所对应的寄存数据(Pkt-11)进行计算,得到第一行所对应的行校验数据(FEC-R1.2),并将所述第一寄存器中存储的第一行所对应的寄存数据替换为该行校验数据(FEC-R1.2)。然后,在获取到该行所对应的下一个数据包(Pkt-13)时,则将该数据包(Pkt-13)与第一寄存器中当前存储的与第一行所对应的寄存数据(FEC-R1.2)进行计算,得到另一个行校验数据(FEC-R1.3),并将第一寄存器中存储的第一行所对应的寄存数据替换为计算得到的行校验数据(FEC-R1.3),以此类推,直到获取到第一行的最后一个数据包(Pkt-1n)时,将该最后一个数据包与第一寄存器中存储的第一行所对应的寄存数据进行计算,得到第一行数据包所对应的前向纠错数据(FEC-R1)。
同理地,当检测到某一个数据包所对应的行号为2,列号为2(Pkt-22)时,则将其与第一寄存器中存储的第2行所对应的寄存数据(Pkt-21)进行计算,得到第二行所对应的行校验数据(FEC-R2.2),并将所述第一寄存器中存储的第二行所对应的寄存数据替换为该行校验数据(FEC-R2.2)。然后,在获取到该行所对应的下一个数据包(Pkt-23)时,则将该数据包(Pkt-23)与第一寄存器中当前存储的与第二行所对应的寄存数据(FEC-R2.2)进行计算,得到另一个行校验数据(FEC-R2.3),并将第一寄存器中存储的第二行所对应的寄存数据替换为计算得到的行校验数据(FEC-R2.3),以此类推,直到获取到第二行的最后一个数据包(Pkt-2n)时,将该最后一个数据包与第一寄存器中存储的第二行所对应的寄存数据进行计算,得到第二行数据包所对应的前向纠错数据(FEC-R2)。
对于其它行的数据包,也可以采用与上述过程相同的方式进行处理,此处不再进行赘述。
参照图5,对于所对应的行号不是1的待发送的数据包,则将其与所述第二寄存器中存储的对应列的寄存数据进行计算,得到该列所对应的列校验数据。例如,当检测到某一个数据包所对应的列号为1,行号为2(Pkt-21)时,则将其与第二寄存器中存储的第1列所对应的寄存数据(Pkt-11)进行计算,得到第一列所对应的列校验数据(FEC-C1.2),并将所述第二寄存器中存储的第一列所对应的寄存数据替换为该列校验数据(FEC-C1.2)。然后,在获取到该列所对应的下一个数据包(Pkt-31)时,则将该数据包(Pkt-31)与第二寄存器中当前存储的与第一列所对应的寄存数据(FEC-C1.2)进行计算,得到另一个列校验数据(FEC-C1.3),并将第二寄存器中存储的第一列所对应的寄存数据替换为计算得到的列校验数据(FEC-C1.3),以此类推,直到获取到第一列的最后一个数据包(Pkt-m1)时,将该最后一个数据包与第二寄存器中存储的第一列所对应的寄存数据进行计算,得到第一列数据包所对应的前向纠错数据(FEC-C1)。
同理地,当检测到某一个数据包所对应的列号为2,行号为2(Pkt-22)时,则将其与第二寄存器中存储的第2列所对应的寄存数据(Pkt-12)进行计算,得到第二列所对应的列校验数据(FEC-C2.2),并将所述第二寄存器中存储的第二列所对应的寄存数据替换为该列校验数据(FEC-C2.2)。然后,在获取到该列所对应的下一个数据包(Pkt-32)时,则将该数据包(Pkt-32)与第二寄存器中当前存储的与第二列所对应的寄存数据(FEC-C2.2)进行计算,得到另一个列校验数据(FEC-C2.3),并将第二寄存器中存储的第二列所对应的寄存数据替换为计算得到的列校验数据(FEC-C2.3),以此类推,直到获取到第二列的最后一个数据包(Pkt-m2)时,将该最后一个数据包与第二寄存器中存储的第二列所对应的寄存数据进行计算,得到第二列数据包所对应的前向纠错数据(FEC-C2)。
对于其它列的数据包,也可以采用与上述过程相同的方式进行处理,此处也不再进行赘述。
具体地,在本实施例中,将所述待发送的数据包与第一寄存器中存储的对应行的寄存数据进行计算的过程可以包括:在所述待发送的数据包不是所在行的第一个数据包时,将所述数据包的净荷与所述第一寄存器中存储的该行号下对应的寄存数据的净荷按照对应位进行异或运算。其中,所述净荷即表示所述待发送的数据包及所述寄存数据中的有效数据。举例而言,当所述寄存数据的净荷为101101,所述待发送的数据包的净荷为100111,则按照对应位进行异或运算后得到的校验数据为001010。
同理地,将所述待发送的数据包与第二寄存器中存储的对应列的寄存数据进行计算的过程可以包括:在所述待发送的数据包不是所在列的第一个数据包时,将所述数据包的净荷与所述第二寄存器中存储的该列号下对应的寄存数据的净荷按照对应位进行异或运算,具体计算过程可以参照上述内容,此处不再进行赘述。
应当理解的是,图4和图5仅表示在本申请所提供的前向纠错数据生成方法实施过程中第一寄存器和第二寄存器存储的各寄存数据的变化过程,并非表示所示寄存数据同时存在于所述第一寄存器或第二寄存器中。
进一步地,请参照图6,在本申请实施例中,所述方法还可以包括:
步骤S50,若所述待发送的数据包是所在行或列的第一个数据包,在将所述待发送的数据包存储到所述第一寄存器或第二寄存器后,将所述待发送的数据包发送给数据接收设备,并释放所述待发送的数据包所占用的缓存空间。
步骤S60,若所述待发送的数据包不是所在行或列的第一个数据包,在将所述数据包与所述第一寄存器中存储的该行号下对应的寄存数据或第二寄存器中存储的该列号下对应的寄存数据进行计算,得到行校验数据或列校验数据后,将所述待发送的数据包发送给数据接收设备,并释放所述待发送的数据包所占用的缓存空间。
步骤S70,在生成所述待发送的数据包所在行或所在列的前向纠错数据后,将该前向纠错数据发送给数据接收设备,并释放该前向纠错数据在第一寄存器或第二寄存器中所占用的存储空间。
在本实施例中,可以配置相应的输出规则控制各个待发送的数据包以及计算得到的各个前向纠错数据的输出时机。
在一种可能的实施方式中,对于行号为1的数据包,可以在将其写入第二寄存器后立即将其输出;对于列号为1的数据包,可以在将其写入第一寄存器后立即将其输出;对于行号为1,列号不为1的数据包,可以在将其与第一寄存器中存储的第一行对应的寄存数据进行计算,得到第一行对应的行校验数据后将其输出;对于行号不为1,列号为1的数据包,可以在将其与第二寄存器中存储的第一列对应的寄存数据进行计算,得到第一列对应的列校验数据后将其输出;对于行号和列号均不为1的数据包,可以在将其与第一寄存器中存储的对应行的寄存数据进行计算,得到对应行的行校验数据,并在将其与第二寄存器中存储的对应列的寄存数据进行计算,得到对应列的列校验数据后将其输出,从而使得所述待发送的数据包在缓存中保留的时间大大缩短,进而降低了数据发送端对缓存空间大小的要求。
进一步地,在本申请实施例中,对于所述第一寄存器和第二寄存器中存储的寄存数据,可以在计算得到某一行数据包对应的前向纠错数据后,立即将其输出,发送至数据接收端,以释放该前向纠错数据在第一寄存器中所占用的存储空间。同理的,可以在计算得到某一列数据包对应的前向纠错数据后,立即将其输出,发送至数据接收端,以释放该前向纠错数据在第二寄存器中所占用的存储空间。
可替换地,在另一种可能的实施方式中,也可以在计算得到某一行或某一列数据包对应的前向纠错数据后,将其暂时保留,在将待发送的数据包写入第一寄存器或第二寄存器,或将其与第一寄存器或第二寄存器中存储的对应行或列的寄存数据进行计算,得到所在行或列的校验数据后,将待发送的数据包暂时保留,然后将该前向纠错数据以一定规则插入所述待发送的数据包之间再输出至数据接收端。
参照图7,为本申请实施例提供前向纠错数据生成装置70,该装置可以应用于图2所示的电子设备100,为所述电子设备100提供如上所述的前向纠错数据生成功能。具体地,所述电子设备100包括第一寄存器及第二寄存器,所述装置包括:
获取模块701,用于获取待发送的数据包;
确定模块702,用于根据预设的数据包缓存规则确定所述待发送的数据包所对应的行号及列号,并在所述待发送的数据包为所在行的第一个数据包时,将所述待发送的数据包存储在所述第一寄存器,在所述待发送的数据包为所在列的第一个数据包时,将所述待发送的数据包存储在所述第二寄存器;
计算模块703,用于将行号相同列号依次增加的数据包,依次与所述第一寄存器中存储的该行号下对应的寄存数据进行计算,得到行校验数据,并采用计算得到的行校验数据替换所述第一寄存器中存储的该行号下对应的寄存数据,直到该行号下最后一个数据包与所述第一寄存器中存储的该行号下对应的寄存数据进行计算,得到该行号下数据包的前向纠错数据;
将列号相同行号依次增加的数据包,依次与所述第二寄存器中存储的该列号下对应的寄存数据进列计算,得到列校验数据,并采用计算得到的列校验数据替换所述第二寄存器中存储的该列号下对应的寄存数据,直到该列号下最后一个数据包与所述第二寄存器中存储的该列号下对应的寄存数据进列计算,得到该列号下数据包的前向纠错数据。
在本申请实施例中,所述获取模块701具体用于:
按照待发送的数据包写入缓存的缓存规则从缓存中依次获取待发送的数据包。
进一步地,在本申请实施例中,所述装置还包括输出模块704,所述输出模块704用于:
在所述待发送的数据包为所在行或列的第一个数据包时,在将所述待发送的数据包存储到所述第一寄存器或第二寄存器后,将所述待发送的数据包发送给数据接收设备,并释放所述待发送的数据包所占用的缓存空间;
在所述待发送的数据包不是所在行或列的第一个数据包时,在将所述数据包与所述第一寄存器中存储的该行号下对应的寄存数据或第二寄存器中存储的该列号下对应的寄存数据进行计算,得到行校验数据或列校验数据后,将所述待发送的数据包发送给数据接收设备,并释放所述待发送的数据包所占用的缓存空间;以及,
在生成所述待发送的数据包所在行或所在列的前向纠错数据后,将该前向纠错数据发送给数据接收设备,并释放该前向纠错数据在第一寄存器或第二寄存器中所占用的存储空间。
在本申请实施例中,所述计算模块703还具体用于:
在所述数据包不是所在行的第一个数据包时,将所述数据包的净荷与所述第一寄存器中存储的该行号下对应的寄存数据的净荷按照对应位进行异或运算;
在所述数据包不是所在列的第一个数据包时,将所述数据包的净荷与所述第二寄存器中存储的该行号下对应的寄存数据的净荷按照对应位进行异或运算。
综上所述,本申请实施例提供一种前向纠错数据生成方法、装置及电子设备,其中,所述方法通过在获取到每一个数据包后,根据其行号及列号将其存储到寄存器或将其与寄存器中存储的相应的寄存数据进行计算得到相应的校验数据,并采用计算得到的校验数据对寄存器中存储的相应的寄存数据进行替换,直到每行或每列的最后一个数据包与寄存器中存储的对应的寄存数据进行计算得到该行或该列数据包所对应的前向纠错数据。通过该方法,可以使得每一个数据包在缓存后快速地输出至数据接收端,从而达到降低数据传输时延的效果。同时,通过该方法进行前向纠错数据计算,还可以免于对所有的原始数据包进行缓存,从而降低数据发送端对缓存空间大小的要求。此外,通过上述方法,还不需要频繁的读取DDR缓存数据,直接从寄存器中调用即可,不仅降低了对DDR读写性能的要求,还提高了数据的读取效率。
以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种前向纠错数据生成方法,其特征在于,应用于电子设备,所述电子设备包括第一寄存器及第二寄存器,所述方法包括:
获取待发送的数据包;
根据预设的数据包缓存规则确定所述待发送的数据包所对应的行号及列号,并在所述待发送的数据包为所在行的第一个数据包时,将所述待发送的数据包存储在所述第一寄存器,在所述待发送的数据包为所在列的第一个数据包时,将所述待发送的数据包存储在所述第二寄存器;
将行号相同列号依次增加的数据包,依次与所述第一寄存器中存储的该行号下对应的寄存数据进行计算,得到行校验数据,并采用计算得到的行校验数据替换所述第一寄存器中存储的该行号下对应的寄存数据,直到该行号下最后一个数据包与所述第一寄存器中存储的该行号下对应的寄存数据进行计算,得到该行号下数据包的前向纠错数据;
将列号相同行号依次增加的数据包,依次与所述第二寄存器中存储的该列号下对应的寄存数据进列计算,得到列校验数据,并采用计算得到的列校验数据替换所述第二寄存器中存储的该列号下对应的寄存数据,直到该列号下最后一个数据包与所述第二寄存器中存储的该列号下对应的寄存数据进列计算,得到该列号下数据包的前向纠错数据。
2.如权利要求1所述的方法,其特征在于,所述获取待发送的数据包的步骤,包括:
按照待发送的数据包写入缓存的缓存规则,从缓存中依次获取待发送的数据包。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
若所述待发送的数据包是所在行或列的第一个数据包,在将所述待发送的数据包存储到所述第一寄存器或第二寄存器后,将所述待发送的数据包发送给数据接收设备,并释放所述待发送的数据包所占用的缓存空间;
若所述待发送的数据包不是所在行或列的第一个数据包,在将所述数据包与所述第一寄存器中存储的该行号下对应的寄存数据或第二寄存器中存储的该列号下对应的寄存数据进行计算,得到行校验数据或列校验数据后,将所述待发送的数据包发送给数据接收设备,并释放所述待发送的数据包所占用的缓存空间。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:
在生成所述待发送的数据包所在行或所在列的前向纠错数据后,将该前向纠错数据发送给数据接收设备,并释放该前向纠错数据在第一寄存器或第二寄存器中所占用的存储空间。
5.如权利要求1-4中任一项所述的方法,其特征在于,所述将行号相同列号依次增加的数据包,依次与所述第一寄存器中存储的该行号下对应的寄存数据进行计算的步骤,包括:
在所述数据包不是所在行的第一个数据包时,将所述数据包的净荷与所述第一寄存器中存储的该行号下对应的寄存数据的净荷按照对应位进行异或运算;
所述将列号相同行号依次增加的数据包,依次与所述第二寄存器中存储的该列号下对应的寄存数据进列计算的步骤,包括:
在所述数据包不是所在列的第一个数据包时,将所述数据包的净荷与所述第二寄存器中存储的该行号下对应的寄存数据的净荷按照对应位进行异或运算。
6.一种前向纠错数据生成装置,其特征在于,应用于电子设备,所述电子设备包括第一寄存器及第二寄存器,所述装置包括:
获取模块,用于获取待发送的数据包;
确定模块,用于根据预设的数据包缓存规则确定所述待发送的数据包所对应的行号及列号,并在所述待发送的数据包为所在行的第一个数据包时,将所述待发送的数据包存储在所述第一寄存器,在所述待发送的数据包为所在列的第一个数据包时,将所述待发送的数据包存储在所述第二寄存器;
计算模块,用于将行号相同列号依次增加的数据包,依次与所述第一寄存器中存储的该行号下对应的寄存数据进行计算,得到行校验数据,并采用计算得到的行校验数据替换所述第一寄存器中存储的该行号下对应的寄存数据,直到该行号下最后一个数据包与所述第一寄存器中存储的该行号下对应的寄存数据进行计算,得到该行号下数据包的前向纠错数据;
将列号相同行号依次增加的数据包,依次与所述第二寄存器中存储的该列号下对应的寄存数据进列计算,得到列校验数据,并采用计算得到的列校验数据替换所述第二寄存器中存储的该列号下对应的寄存数据,直到该列号下最后一个数据包与所述第二寄存器中存储的该列号下对应的寄存数据进列计算,得到该列号下数据包的前向纠错数据。
7.如权利要求6所述的装置,其特征在于,所述获取模块具体用于:
按照待发送的数据包写入缓存的缓存规则,从缓存中依次获取待发送的数据包。
8.如权利要求7所述的装置,其特征在于,所述装置还包括输出模块,所述输出模块用于:
在所述待发送的数据包为所在行或列的第一个数据包时,在将所述待发送的数据包存储到所述第一寄存器或第二寄存器后,将所述待发送的数据包发送给数据接收设备,并释放所述待发送的数据包所占用的缓存空间;
在所述待发送的数据包不是所在行或列的第一个数据包时,在将所述数据包与所述第一寄存器中存储的该行号下对应的寄存数据或第二寄存器中存储的该列号下对应的寄存数据进行计算,得到行校验数据或列校验数据后,将所述待发送的数据包发送给数据接收设备,并释放所述待发送的数据包所占用的缓存空间;以及,
在生成所述待发送的数据包所在行或所在列的前向纠错数据后,将该前向纠错数据发送给数据接收设备,并释放该前向纠错数据在第一寄存器或第二寄存器中所占用的存储空间。
9.如权利要求6-8中任一项所述的装置,其特征在于,所述计算模块还具体用于:
在所述数据包不是所在行的第一个数据包时,将所述数据包的净荷与所述第一寄存器中存储的该行号下对应的寄存数据的净荷按照对应位进行异或运算;
在所述数据包不是所在列的第一个数据包时,将所述数据包的净荷与所述第二寄存器中存储的该行号下对应的寄存数据的净荷按照对应位进行异或运算。
10.一种电子设备,其特征在于,所述电子设备包括处理器及存储器;其中,所述存储器用于存储计算机程序,所述处理器用于加载执行所述计算机程序,以使所述电子设备执行如权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910147061.3A CN109889309B (zh) | 2019-02-27 | 2019-02-27 | 前向纠错数据生成方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910147061.3A CN109889309B (zh) | 2019-02-27 | 2019-02-27 | 前向纠错数据生成方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109889309A true CN109889309A (zh) | 2019-06-14 |
CN109889309B CN109889309B (zh) | 2021-03-16 |
Family
ID=66929711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910147061.3A Active CN109889309B (zh) | 2019-02-27 | 2019-02-27 | 前向纠错数据生成方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109889309B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115037416A (zh) * | 2022-06-07 | 2022-09-09 | 广州方硅信息技术有限公司 | 数据前向纠错处理方法、装置、电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1663130A (zh) * | 2002-06-21 | 2005-08-31 | 汤姆森特许公司 | 前向纠错的方法 |
US7467344B2 (en) * | 2005-12-23 | 2008-12-16 | Avnera Corporation | Devices and system for exchange of digital high-fidelity audio and voice through a wireless link |
US8751910B2 (en) * | 2011-04-13 | 2014-06-10 | Cortina Systems, Inc. | Staircase forward error correction coding |
CN103873071A (zh) * | 2012-12-10 | 2014-06-18 | 华为技术有限公司 | 一种前向纠错编码、译码方法和装置、通信设备及系统 |
US10211950B1 (en) * | 2016-05-20 | 2019-02-19 | Harmonic, Inc. | High bit rate media FEC recovery |
-
2019
- 2019-02-27 CN CN201910147061.3A patent/CN109889309B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1663130A (zh) * | 2002-06-21 | 2005-08-31 | 汤姆森特许公司 | 前向纠错的方法 |
US7467344B2 (en) * | 2005-12-23 | 2008-12-16 | Avnera Corporation | Devices and system for exchange of digital high-fidelity audio and voice through a wireless link |
US8751910B2 (en) * | 2011-04-13 | 2014-06-10 | Cortina Systems, Inc. | Staircase forward error correction coding |
CN103873071A (zh) * | 2012-12-10 | 2014-06-18 | 华为技术有限公司 | 一种前向纠错编码、译码方法和装置、通信设备及系统 |
US10211950B1 (en) * | 2016-05-20 | 2019-02-19 | Harmonic, Inc. | High bit rate media FEC recovery |
Non-Patent Citations (1)
Title |
---|
沈杨豪: "基于FPGA的前向纠错算法", 《国外电子元器件》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115037416A (zh) * | 2022-06-07 | 2022-09-09 | 广州方硅信息技术有限公司 | 数据前向纠错处理方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109889309B (zh) | 2021-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6256762B1 (en) | Semiconductor disk device | |
US7631244B2 (en) | Soft error correction method, memory control apparatus and memory system | |
CN102138129A (zh) | 用于数据处理系统中的统一高速缓存的错误检测方案 | |
US9166625B2 (en) | Circuits, integrated circuits, and methods for interleaved parity computation | |
JPH06105443B2 (ja) | スマート・メモリ・カード | |
CN111063379A (zh) | 存储器装置以及操作其以用于读取页面媒体流的方法 | |
CN114328316A (zh) | Dma控制器、soc系统及基于dma控制器的数据搬运方法 | |
CN104658609B (zh) | 用于存储器系统的纠错码分布的方法和系统 | |
EP0826153A1 (en) | Method and apparatus for storing and retrieving error check information | |
CN109889309A (zh) | 前向纠错数据生成方法、装置及电子设备 | |
EP2317439B1 (en) | Error Detection | |
US9122411B2 (en) | Signal order-preserving method and apparatus | |
CN116089346B (zh) | 一种嵌入式总线上错误数据重传方法、系统、介质及设备 | |
CN112349343A (zh) | 电路结构、芯片以及电子设备 | |
CN108664362A (zh) | 内存镜像的处理方法、内存控制器及用户设备 | |
JP2989669B2 (ja) | メモリを制御する方法およびデバイス | |
CN108028530B (zh) | 应用于数字集成电路的esd检测装置、集成电路及方法 | |
CN100361090C (zh) | 用于按序列存取多个存储数据单元的方法和装置 | |
CN108459876A (zh) | 用于缩减面积的控制寄存器电路的方法与装置 | |
US20210132909A1 (en) | Processing-in-memory (pim) devices and methods of testing the pim devices | |
CN1326345C (zh) | 丢弃错误的逻辑传输单元的方法与装置 | |
JP3265226B2 (ja) | バンクアクセス制御方式 | |
JPH0746323B2 (ja) | 部分書込みアクセスを圧縮する主記憶装置 | |
JP3302950B2 (ja) | Crc生成部およびcrc計算装置 | |
CN104348738A (zh) | 缓存器和路由器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |