CN115882876A - 一种数据编码校验方法、系统、设备、介质及电路 - Google Patents
一种数据编码校验方法、系统、设备、介质及电路 Download PDFInfo
- Publication number
- CN115882876A CN115882876A CN202310126750.2A CN202310126750A CN115882876A CN 115882876 A CN115882876 A CN 115882876A CN 202310126750 A CN202310126750 A CN 202310126750A CN 115882876 A CN115882876 A CN 115882876A
- Authority
- CN
- China
- Prior art keywords
- original data
- coded
- data
- check code
- fixed part
- 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
- 238000000034 method Methods 0.000 title claims abstract description 84
- 238000012795 verification Methods 0.000 title claims abstract description 23
- 238000004364 calculation method Methods 0.000 claims abstract description 54
- 230000004044 response Effects 0.000 claims description 24
- 238000004422 calculation algorithm Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 5
- 238000007781 pre-processing Methods 0.000 claims description 3
- 125000004122 cyclic group Chemical group 0.000 description 22
- 238000010586 diagram Methods 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 9
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 241000764238 Isis Species 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000002354 daily effect Effects 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 229940037201 oris Drugs 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
本发明属于计算机领域,具体涉及一种数据编码校验方法、系统、设备、介质及电路,其中方法包括:确定待编码的原始数据的可变部分和固定部分以及与所述待编码的原始数据的具有相同固定部分的已编码的原始数据及其对应的校验码;将所述待编码的原始数据的可变部分与已编码的原始数据对应的可变部分和校验码按照第一预定方式进行计算得到待编码的原始数据所对应的校验码。通过本发明提出的一种数据编码校验方法,只需以已有的数据进行两次异或计算即可实现对待编码数据的校验,有效提升系统带宽和计算效率。
Description
技术领域
本发明属于计算机领域,具体涉及一种数据编码校验方法、系统、设备、介质及电路。
背景技术
当今社会随着移动互联网与智能手机的快速发展,人们每时每刻都在产生大量的数据,数据已经渗入到每个人日常生活的方方面面。例如人们每天使用移动支付时产生的付款数据;浏览短视频时从互联网公司的服务器中接收的视频数据。以中国互联网信息中心发布的报告显示,2022年仅移动互联网接入流量就高达1241亿GB,如此海量的数据在介质(比如手机内存,电脑硬盘)中存储或是在无线信道中传输(例如手机到移动基站之间的信息传输)时都有可能因为噪声的干扰等外界因素发生信息传输错误。为了保证接收数据的正确性,通常需要在发送数据之后加入若干冗余数据作为数据校验信息。
但是,传统校验方法将校验数据放在原始数据之后浪费系统的传输带宽的缺点导致在计算校验码时存在大量的性能和带宽的浪费,以宏观视角看待,如此海量的数据通过种类繁多的终端设备实现数据校验在时间以及设备功耗的占用上消耗巨大。
因此,亟需一种有效的方案来解决上述问题。
发明内容
为解决上述问题,本发明提出一种数据编码校验方法,包括:
确定待编码的原始数据的可变部分和固定部分以及与所述待编码的原始数据的具有相同固定部分的已编码的原始数据及其对应的校验码;
将所述待编码的原始数据的可变部分与已编码的原始数据对应的可变部分和校验码按照第一预定方式进行计算得到待编码的原始数据所对应的校验码。
在本发明的一些实施方式中,方法还包括:
响应于获取到待编码的原始数据,判断所述原始数据的可变部分与已编码的原始数据的可变部分是否相同。
在本发明的一些实施方式中,方法还包括:
响应于所述判断结果为相同,判断所述待编码的原始数据的固定部分与所述已编码的原始数据的固定部分是否相同。
在本发明的一些实施方式中,方法还包括:
响应于所述判断皆相同,将所述已编码的原始数据的校验码作为所述待编码的原始数据的校验码。
在本发明的一些实施方式中,方法还包括:
响应于所述待编码的原始数据的固定部分与已编码的原始数据的固定部分不相同,获取所述待编码的原始数据的固定部分和所述已编码的原始数据的固定部分及校验码。
在本发明的一些实施方式中,方法还包括:
将所述待编码的原始数据的固定部分与所述已编码的原始数据的固定部分以及校验码,按照预定方式进行计算以得到所述待编码的原始数据所对应的校验码。
在本发明的一些实施方式中,方法还包括:
响应于获取到待编码的原始数据,判断是否存对应的已编码的原始数据;
响应于不存在所述已编码的原始数据,按照第二预定方式计算所述待编码的原始数据。
在本发明的一些实施方式中,方法还包括:
响应于通过计算获取到待编码的原始数据的校验码,将所述待编码的原始数据的固定部分及校验码进行保存。
在本发明的一些实施方式中,方法还包括:
响应于通过计算获取到待编码的原始数据的校验码,判断所述待编码的原始数据的固定部分及校验码是否已经保存。
在本发明的一些实施方式中,方法还包括:
响应于所述待编码的原始数据的固定部分及校验码已经保存,将所述待编码的原始数据清除。
在本发明的一些实施方式中,将所述待编码的原始数据的固定部分及校验码进行保存包括:
按照预定算法计算所述待编码的原始数据的固定部分的哈希值,并将所述哈希值与所述原始数据的校验码和可变部分作为键值对保存到第一预定列表。
在本发明的一些实施方式中,方法还包括:
响应于获取到新的待编码的原始数据,获取所述待编码的原始数据中的固定部分按照预定算法进行哈希计算得到对应的哈希值。
在本发明的一些实施方式中,方法还包括:
基于所述哈希值在所述第一预定列表中进行查找,响应于查找到对应得到键值对,则将所述键值对中的校验码以及可变部分返回并用于与所述待编码数据的可变部分按照第一预定方式进行计算。
在本发明的一些实施方式中,方法还包括:
响应于通过计算获取到待编码的原始数据的校验码,将所述待编码的原始数据的可变部分及校验码进行保存。
在本发明的一些实施方式中,将所述待编码的原始数据的可变部分及校验码进行保存包括:
按照预定算法计算所述待编码的原始数据的可变部分的哈希值,并将所述哈希值与所述原始数据的校验码和固定部分作为键值对保存到第二预定列表。
在本发明的一些实施方式中,方法还包括:
响应于获取到新的待编码的原始数据,获取所述待编码的原始数据中的可变部分按照预定算法进行哈希计算得到对应的哈希值。
在本发明的一些实施方式中,方法还包括:
基于所述哈希值在所述第二预定列表中进行查找,响应于查找到对应得到键值对,则将所述键值对中的固定部分以及校验码返回并用于与所述待编码数据的固定部分按照第一预定方式进行计算。
本发明的另一方面还提出一种数据编码校验系统,包括:
数据预处理模块,所述数据预处理模块配置用于,确定待编码的原始数据的可变部分和固定部分以及与所述待编码的原始数据的具有相同固定部分的已编码的原始数据及其对应的校验码;
数据编码模块,所述数据编码模块配置用于将所述待编码的原始数据的可变部分与已编码的原始数据对应的可变部分和校验码按照第一预定方式进行计算得到待编码的原始数据所对应的校验码。
本发明的又一方面还提出一种数据编码校验电路,其特征在于,包括:
判断模块,所述判断模块配置用于判断待编码的原始数据中的可变部分和/或固定部分是否与已知的已编码的原始数据中对应的可变部分和/或固定部分是否相同,并根据判断结果向选择模块发送选择信号。
第一计算模块,所述第一计算模块配置用于将所述待编码的原始数据中的可变部分和已编码的原始数据中的可变部分进行计算或将所述待编码的原始数据中的固定部分和已编码的原始数据中的部分进行计算,并将计算结果发送到第二计算模块;
第二计算模块,所述第二计算模块配置用于将第一计算模块计算结果和已编码的原始数据中所对应的校验码进行计算,并将计算结果发送到选择模块;
选择模块,所述选择模块配置用于,根据判断模块的选择信号,选择第二计算模块的结果或已编码的原始数据的校验码作为待编码的原始数据的校验码进行输出。
本发明的又一方面还提出一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现上述实施方式中任意一项所述方法的步骤。
本发明的再一方面还提出一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述实施方式中任意一项所述方法的步骤。
通过本发明提出的一种数据编码校验方法,只需以已有的数据进行两次异或计算即可实现对待编码数据的校验,有效提升系统带宽和计算效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据编码校验方法的流程示意图;
图2为本发明实施例提供的一种数据编码校验系统的结构示意图;
图3为本发明实施例提供的一种计算机设备的结构示意图;
图4为本发明实施例提供的一种计算机可读存储介质的结构示意图;
图5为本发明实施例提供的应用场景示意图;
图6为本发明实施例提供的传统的块编码原理示意图;
图7为本发明实施例提供的传统的卷积编码的示意图;
图8为本发明实施例提供的伽罗华域的乘法操作示意图;
图9为本发明实施例提供的传统的循环冗余编码的串联实施方式示意图;
图10为本发明实施例提供的传统的循环冗余编码的并联实施方式示意图;
图11为本发明实施例提供的传输数据格式示意图;
图12为本发明实施例提供的传输数据格式示意图;
图13为本发明实施例提供的部分循环冗余编码的电路示意图;
图14为本发明实施例提供的部分CRC解码电路的示意图;
图15为本发明实施例提出的一种数据编码校验电路的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
本发明旨在解决传统的数据校验时的性能和带宽的损耗问题。在传统的实现方式上,为保证数据安全,如图5所示是一个典型的数据传输通路,原始数据经过编码器编码之后经过信道发送到接收端,接收端接收到发送端传输的数据后进行解码操作,解码之后得到原始数据进行进一步的处理。编码器产生的数据校验位是根据发送原始数据经过一系列运算生成。
常用的编码方式包含以下几种:
由于位的编码数据仅仅由当前长度为/>的发送数据得到,与之前和之后的数据都没有关系,这样的编码器在硬件实现时可以仅仅使用组合逻辑(combinational logic)即可,不需要引入寄存器等时序逻辑。块编码的解码过程与编码相反,是经过组合逻辑直接将当前/>位编码数据译码为/>位原始数据。
2.卷积码(convolutional Code):如图7所示,卷积编码的生成方式与块编码类似,都是将的原始数据转化为/>位的编码数据。卷积编码器的输出不仅与当前的时刻的k位原始数据有关,而且与之前的/>位原始数据有关,卷积编码器生成的/>位数据称为卷积编码。卷积编码的硬件实现需要使用时序逻辑(sequential logic),实现的复杂的要远远高于块编码,但是由于卷积码的编码考虑到了不同时刻原始数据之间的相关性,因而在纠错能力方面要大于块编码。
块编码中包含许多种不同的编码方式,本专利主要讨论的是块编码的一个应用非常广泛的分支:循环冗余编码(Cyclic Redundancy code,CRC)该编码由于实现简单,检测错误效果好,因此在无线通信,网络,介质存储等系统中得到了广泛的应用。
首先介绍一些相关基础知识:伽罗华域:伽罗华域(Galois Field)定义了一组元素与元素之间的运算符号的结果,以编码中最常用的二进制伽罗华域(GF(2)={0,1})为例,其加法与乘法定义如下:
加法⊕ | 0 | 1 |
0 | 0 | 1 |
1 | 1 | 0 |
乘法⊙ | 0 | 1 |
0 | 0 | 0 |
1 | 0 | 1 |
从上表可以看出,GF(2)上的加法⊕可以看做两个元素进行异或(XOR)运算的结果。
GF(2)上的除法与普通除法不同的是GF(2)的除法没有“借位”操作,如图8所示,除法过程中发生的减法可以与GF(2)的加法相等同,可以看做每一位进行异或(XOR)。
多项式:GF(2)上的多项式定义如下:
上式所对应的多项式为:
从公式9可以得出,如果想要得到这个余数多项式,就必须先得到/>。在循环冗余编码中有一个特殊的多项式为生成多项式/>,/>的因子,即,可以证明所有的循环冗余编码都是这个生成多项式的倍数,因此可以用/>来得出所有的码字。
重新将上式组织:
下面利用一个例子来说明如何进行CRC计算:
原始数据: 1101011011;
生成多项式: 10011;
原始数据补0之后数据: 1101011011(0000);
下面进行计算:
11010110110000/10011 = 1100001010 (商)...1110(余数);
实际上我们并不在乎商的数值,CRC仅需要得到余数即可,将余数补到原始数据之后可以得到需要传输的数据为: 1101011011(1110)。
目前CRC算法主要分为软件实现与硬件实现两种类型,其中传统的硬件实现方法主要分为两种:
如图9所示,串行实现法:硬件直接实现方法是用硬件来模拟原始数据与相乘之后与/>相除取余数的操作,在实际中一般使用线性反馈移位寄存器(Linearfeedback shift register, LFSR)来实现,如图9所示,/>为生成多项式的系数,原始数据在每一个时钟周期将1比特数据放入最右边的寄存器,经过/>个时钟周期之后产生数据就是校验数据。
并行实现法:对串行实现法进行递推,可以得到校验数据的每一个比特与输入原始数据若各个比特之间的关系,一般来说,校验数据的某一个比特由输入数据的某几个比特异或产生,具体的对应关系可以使用成熟的在线循环冗余校验硬件代码生成工具得到。
如图10所示是并行实现法的硬件原理图,为原始数据的第/>位,/>为校验数据的第/>位。并行实现方法由于全部使用逻辑器件搭建,所以可以在一个时钟周期内输出校验值,但是缺点就是由于没有寄存器的加入,所以关键路径在数据长度很长的场景下会非常大,会造成芯片在布局布线时时序难以收敛。
传统CRC校验方法需要在原始数据之后增加若干位校验比特,所以会浪费一部分系统带宽用于传输校验数据。当原始数据较短而校验数据比较长时会浪费大量的系统带宽。在实际系统中,系统传输的数据宽度一般为一个固定值,所有处理的数据必须是/>长度的倍数,例如在10GHz以太网中,以太网数据必须以64比特边界,如果数据的宽度不是以64比特的整数倍,那么在最后的一个64比特中必须要将没有使用的位进行置0操作。
如图11所示,通常情况下填充数据是0,这样做就会浪费位的数据带宽。数据的实际利用效率为/>。可以看到当/>与/>长度差异不大时利用率会下降很多。这种情况多出现在若干个单个数据块的验证,例如常用的CRC32校验中,原始数据长度32,校验长度32,系统的带宽利用率只有50%。
如图1所示,为了克服填充数据与校验数据带来的系统带宽利用率降低的情况,本实施例提出了一种数据编码校验方法,包括:
步骤S1、确定待编码的原始数据的可变部分和固定部分以及与所述待编码的原始数据的具有相同固定部分的已编码的原始数据及其对应的校验码;
步骤S2、将所述待编码的原始数据的可变部分与已编码的原始数据对应的可变部分和校验码按照第一预定方式进行计算得到待编码的原始数据所对应的校验码。
在本发明的实施例中,待编码的原始数据是指由上游或其他模块产生的要发送的数据。如图11所示,经过编码后则形成由校验数据(即校验码)、填充数据和原始数据的形式发送。
进一步,如图12所示,根据CRC编码定义,原始数据又可以分为可变数据和固定数据。
因此,在步骤S1中,确定待编码的原始数据中的可变部分和固定部分的数据内容,同时根据该固定部分确定已编码的原始数据中与该固定部分相同的已经编码过得原始数据的校验码(图11和图12中的校验数据)、固定数据、可变数据(与之前相对的)。
具体的,以以太网应用场景下为例,已编码的原始数据类似于之前通过网络发出的数据,包含对应的可变部分、固定部分、校验码(校验数据)。当从系统内部再有数据产生发送来时,即为待编码的原始数据,在此种情况下,两次传输的固定数据一般不会变化。可变部分是由新产生的数据。因此在以太网应用场景下,需要确定上一次发送的已经编码的原始数据所对应的校验码和固定部分、可变部分和当前准备发送的未编码的原始数据的可变部分和固定部分。
在步骤S2中,将待编码的原始数据的可变部分与已编码的原始数据对应的可变部分和校验码依次进行两次异或即可得到待编码的原始数据对应的校验码。上述过程与传统的方式明显不同,传统的实现方式会根据待编码的原始数据的可变部分、固定部分按照循环冗余编码的计算方式重新计算该待编码的原始数据的校验码。即前文提到的串行和并行运算方式。
进一步,步骤S2中的计算方式之所以可以实现仅仅通过两次异或的原理如下:
以图12所示的数据格式为例:
原始数据的多项式可以写为:
将式公式14与式15相加可以得到:
对比式16)与式17)可以得到
设旧的校验和为:
从公式22可以看出想要得到新的校验和,就必须要计算新的可变数据的校验和/>与旧的可变数据的校验和/>。由于可变数据的长度通常远小于固定数据的长度,如图10所示,利用并行法可以推导出相应的CRC校验和的计算公式:
设为某循环冗余编码的生成多项式,其生成的一个码字多项式为/>, 另一个码为/>,被/>除之后得到的余数多项式为/>,/>被/>除之后得到的余数多项式为/>,则码字多项式/>被/>除之后得到的余数多项式为/>。
证明:
将上式相加可以得到:
其中Rem表示取余操作。由公式24可以看出新的原始数据的校验比特等于固定数据部分新旧数据之间进行异或后取余数,然后再和固定数据部分的校验数据进行异或,即可以得到新的原始数据的校验码。
也即通过将待编码的原始数据的可变部分与已编码的原始数据对应的可变部分和校验码依次进行两次异或即可得到待编码的原始数据对应的校验码。
在本发明的一些实施方式中,方法还包括:
响应于获取到待编码的原始数据,判断所述原始数据的可变部分与已编码的原始数据的可变部分是否相同。
在本发明的一些实施方式中,方法还包括:
响应于所述判断结果为相同,判断所述待编码的原始数据的固定部分与所述已编码的原始数据的固定部分是否相同。
在本发明的一些实施方式中,方法还包括:
响应于所述判断皆相同,将所述已编码的原始数据的校验码作为所述待编码的原始数据的校验码。
在本发明的一些实施方式中,在收到待编码的原始数据之后,解析出该待编码的原始数据中的可变部分是否与已保存的已编码的原始数据的可变部分相同,如果相同,则说明待编码的原始数据可能被编码过,此时需要再次判断待编码的原始数据的固定部分是否仍然与已编码的原始数据的固定部分相同,如果相同,则说明该待编码的原始数据已被编码过,只需将已编码的原始数据的校验码作为该待编码的原始数据的校验码即可。
在本发明的一些实施方式中,方法还包括:
响应于所述待编码的原始数据的固定部分与已编码的原始数据的固定部分不相同,获取所述待编码的原始数据的固定部分和所述已编码的原始数据的固定部分及校验码。
在本发明的一些实施方式中,方法还包括:
将所述待编码的原始数据的固定部分与所述已编码的原始数据的固定部分以及校验码,按照预定方式进行计算以得到所述待编码的原始数据所对应的校验码。
在本实施例中,当待编码的原始数据和已编码的原始数据的可变部分相同,但对应的固定部分不同时,则将对应的固定部分(包括待编码的固定部分和已编码的固定部分)以及已编码的原始数据的校验码进行异或运算,得到的结果作为待编码的原始数据的校验码。
在本发明的一些实施方式中,方法还包括:
响应于获取到待编码的原始数据,判断是否存对应的已编码的原始数据;
响应于不存在所述已编码的原始数据,按照第二预定方式计算所述待编码的原始数据。
在本实施例中,本发明的提出的简化循环冗余编码的计算方式可以通过软件实现,并且将已编码的原始数据及其对应的校验码保存,当接收到新的待编码的原始数据时,先根据可变部分和固定部分判断该待编码的原始数据中的全部内容或部分内容是否被编码过,如果部分内容(可变部分或固定部分)存在被编码过,则通过上述实施例中的编码方式,将待编码的可变部分和已编码的可变部分以及已编码的校验码进行异或,或者是将待编码的固定部分与已编码的固定部分以及已编码的校验码进行异或计算。
如果待编码的原始数据的可变部分和固定部分均未被编码过,则通过循环冗余代码的常规计算方式计算该待编码的原始数据。
在本发明的一些实施方式中,方法还包括:
响应于通过计算获取到待编码的原始数据的校验码,将所述待编码的原始数据的固定部分及校验码进行保存。
进一步,在本实施例中,无论是通过哪种方式计算得到一个原始数据的校验码都将其内容进行保存
在本发明的一些实施方式中,方法还包括:
响应于通过计算获取到待编码的原始数据的校验码,判断所述待编码的原始数据的固定部分及校验码是否已经保存。
在本发明的一些实施方式中,方法还包括:
响应于所述待编码的原始数据的固定部分及校验码已经保存,将所述待编码的原始数据清除。
在本发明的一些实施方式中,将所述待编码的原始数据的固定部分及校验码进行保存包括:
按照预定算法计算所述待编码的原始数据的固定部分的哈希值,并将所述哈希值与所述原始数据的校验码和可变部分作为键值对保存到第一预定列表。
在本发明的一些实施方式中,方法还包括:
响应于获取到新的待编码的原始数据,获取所述待编码的原始数据中的固定部分按照预定算法进行哈希计算得到对应的哈希值。
在本发明的一些实施方式中,方法还包括:
基于所述哈希值在所述第一预定列表中进行查找,响应于查找到对应得到键值对,则将所述键值对中的校验码以及可变部分返回并用于与所述待编码数据的可变部分按照第一预定方式进行计算。
在本发明的一些实施方式中,方法还包括:
响应于通过计算获取到待编码的原始数据的校验码,将所述待编码的原始数据的可变部分及校验码进行保存。
在本发明的一些实施方式中,将所述待编码的原始数据的可变部分及校验码进行保存包括:
按照预定算法计算所述待编码的原始数据的可变部分的哈希值,并将所述哈希值与所述原始数据的校验码和固定部分作为键值对保存到第二预定列表。
在本发明的一些实施方式中,方法还包括:
响应于获取到新的待编码的原始数据,获取所述待编码的原始数据中的可变部分按照预定算法进行哈希计算得到对应的哈希值。
在本发明的一些实施方式中,方法还包括:
基于所述哈希值在所述第二预定列表中进行查找,响应于查找到对应得到键值对,则将所述键值对中的固定部分以及校验码返回并用于与所述待编码数据的固定部分按照第一预定方式进行计算。
如图2所示,本发明的另一方面还提出一种数据编码校验系统,包括:
数据预处理模块1,所述数据预处理模块1配置用于确定待编码的原始数据的可变部分和固定部分以及与所述待编码的原始数据的具有相同固定部分的已编码的原始数据及其对应的校验码;
数据编码模块2,所述数据编码模块2配置用于将所述待编码的原始数据的可变部分与已编码的原始数据对应的可变部分和校验码按照第一预定方式进行计算得到待编码的原始数据所对应的校验码。
如图15所示,本发明的又一方面还提出一种数据编码校验电路,其特征在于,包括:
判断模块31,所述判断模块31配置用于判断待编码的原始数据中的可变部分和/或固定部分是否与已知的已编码的原始数据中对应的可变部分和/或固定部分是否相同,并根据判断结果向选择模块发送选择信号。
第一计算模块32,所述第一计算模块32配置用于将所述待编码的原始数据中的可变部分和已编码的原始数据中的可变部分进行计算或将所述待编码的原始数据中的固定部分和已编码的原始数据中的部分进行计算,并将计算结果发送到第二计算模块;
第二计算模块33,所述第二计算模块33配置用于将第一计算模块计算结果和已编码的原始数据中所对应的校验码进行计算,并将计算结果发送到选择模块;
选择模块34,所述选择模块34配置用于根据判断模块的选择信号,选择第二计算模块的结果或已编码的原始数据的校验码作为待编码的原始数据的校验码进行输出。
在本实施例中,具体电路连接关系如图13所示,图13为本法明所提出的部分CRC编码电路图,首先新的可变数据与旧的可变数据进行比较,如果两者一致则直接将旧的校验数据输出即可,否则新的可变数据与旧的可变数据进入异或求余单元,注意由于异或求余部分输入数据仅是可变数据,与传统CRC编码器相比大大降低了电路的复杂度。尤其是当可变数据长度远远小于固定数据长度的时,本发明提出的方法可以节省更多的芯片资源与面积。求余之后的结果与旧的校验数据进行异或后得到新的校验数据。最后新的可变数据,固定数据与新的校验数据组成新的发送数据。与编码器相对应的是解码器的设计如图14所示,在解码端首先将校验数据从接收数据中分离出来,随后将接收数据中的校验数据部分置0,然后经过求余操作即可得到数据的实际校验值,将实际校验值与之前的期望校验值进行比较,如果相同则说明数据传输过程中没有发生错误,否则将会触发CRC校验错误的逻辑,根据实际场景选择下一步的处理方案。
本发明利用原始数据中的填充数据(此填充数据通常为全0),当填充数据位宽大于校验位宽时将原本放置在原始数据之后的校验数据放置到填充数据中,极大的提高了系统的带宽利用效率,尤其是当填充数据的位宽比较大时,更是可以显著的提升系统的性能。当填充位宽小于校验位宽时,可以将校验数据进行截断后放入填充数据中。
本发明提出将原始数据根据其在系统中的变化情况分可变数据与固定数据,在循环冗余编码中充分利用旧数据的校验数据来生成新的校验数据。在编码过程中仅仅需要计算出新的可变数据与旧的可变数据的循环冗余编码,再将其与旧的校验数据进行异或后即可得到新的校验数据。此方法将原本需要编码的长度从整个原始数据长度降低到仅仅考虑可变数据长度,极大的降低了硬件实现的复杂度,减少了系统的资源。针对提出的编码方法,本发明还提出了相应的解码方法,首先将校验数据从原始数据的填充数据中分离出来,然后将填充数据置0,随后将数据送往求余器得到校验数据,最后将计算得出的校验数据与收到的校验数据进行比较,如果相同则说明传输正确,否则需要进一步对数据进行处理。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上所述的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
如图3所示,本发明的又一方面还提出一种计算机设备,包括:
至少一个处理器21;以及
存储器22,所述存储器22存储有可在所述处理器21上运行的计算机指令23,所述指令23由所述处理器21执行时实现上述实施方式中任意一项所述方法的步骤。
如图4所示,本发明的再一方面还提出一种计算机可读存储介质401,所述计算机可读存储介质401存储有计算机程序402,所述计算机程序402被处理器执行时实现上述实施方式中任意一项所述方法的步骤。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上所述的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (21)
1.一种数据编码校验方法,其特征在于,包括:
确定待编码的原始数据的可变部分和固定部分以及与所述待编码的原始数据的具有相同固定部分的已编码的原始数据及其对应的校验码;
将所述待编码的原始数据的可变部分与已编码的原始数据对应的可变部分和校验码按照第一预定方式进行计算得到待编码的原始数据所对应的校验码。
2.根据权利要求1所述的方法,其特征在于,还包括:
响应于获取到待编码的原始数据,判断所述原始数据的可变部分与已编码的原始数据的可变部分是否相同。
3.根据权利要求2所述的方法,其特征在于,还包括:
响应于所述判断结果为相同,判断所述待编码的原始数据的固定部分与所述已编码的原始数据的固定部分是否相同。
4.根据权利要求3所述的方法,其特征在于,还包括:
响应于所述判断皆相同,将所述已编码的原始数据的校验码作为所述待编码的原始数据的校验码。
5.根据权利要求4所述的方法,其特征在于,还包括:
响应于所述待编码的原始数据的固定部分与已编码的原始数据的固定部分不相同,获取所述待编码的原始数据的固定部分和所述已编码的原始数据的固定部分及校验码。
6.根据权利要求5所述的方法,其特征在于,还包括:
将所述待编码的原始数据的固定部分与所述已编码的原始数据的固定部分以及校验码,按照预定方式进行计算以得到所述待编码的原始数据所对应的校验码。
7.根据权利要求1所述的方法,其特征在于,还包括:
响应于获取到待编码的原始数据,判断是否存对应的已编码的原始数据;
响应于不存在所述已编码的原始数据,按照第二预定方式计算所述待编码的原始数据。
8.根据权利要求7所述的方法,其特征在于,还包括:
响应于通过计算获取到待编码的原始数据的校验码,将所述待编码的原始数据的固定部分及校验码进行保存。
9.根据权利要求8所述的方法,其特征在于,还包括:
响应于通过计算获取到待编码的原始数据的校验码,判断所述待编码的原始数据的固定部分及校验码是否已经保存。
10.根据权利要求9所述的方法,其特征在于,还包括:
响应于所述待编码的原始数据的固定部分及校验码已经保存,将所述待编码的原始数据清除。
11.根据权利要求8所述的方法,其特征在于,将所述待编码的原始数据的固定部分及校验码进行保存包括:
按照预定算法计算所述待编码的原始数据的固定部分的哈希值,并将所述哈希值与所述原始数据的校验码和可变部分作为键值对保存到第一预定列表。
12.根据权利要求11所述的方法,其特征在于,还包括:
响应于获取到新的待编码的原始数据,获取所述待编码的原始数据中的固定部分按照预定算法进行哈希计算得到对应的哈希值。
13.根据权利要求12所述的方法,其特征在于,还包括:
基于所述哈希值在所述第一预定列表中进行查找得到键值对,则将所述键值对中的校验码以及可变部分返回并用于与所述待编码数据的可变部分按照第一预定方式进行计算。
14.根据权利要求7所述的方法,其特征在于,还包括:
响应于通过计算获取到待编码的原始数据的校验码,将所述待编码的原始数据的可变部分及校验码进行保存。
15.根据权利要求14所述的方法,其特征在于,所述将所述待编码的原始数据的可变部分及校验码进行保存包括:
按照预定算法计算所述待编码的原始数据的可变部分的哈希值,并将所述哈希值与所述原始数据的校验码和固定部分作为键值对保存到第二预定列表。
16.根据权利要求15所述的方法,其特征在于,还包括:
响应于获取到新的待编码的原始数据,获取所述待编码的原始数据中的可变部分按照预定算法进行哈希计算得到对应的哈希值。
17.根据权利要求16所述的方法,其特征在于,还包括:
基于所述哈希值在所述第二预定列表中进行查找,响应于查找到对应得到键值对,则将所述键值对中的固定部分以及校验码返回并用于与所述待编码数据的固定部分按照第一预定方式进行计算。
18.一种数据编码校验系统,其特征在于,包括:
数据预处理模块,所述数据预处理模块配置用于,确定待编码的原始数据的可变部分和固定部分以及与所述待编码的原始数据的具有相同固定部分的已编码的原始数据及其对应的校验码;
数据编码模块,所述数据编码模块配置用于将所述待编码的原始数据的可变部分与已编码的原始数据对应的可变部分和校验码按照第一预定方式进行计算得到待编码的原始数据所对应的校验码。
19.一种计算机设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现权利要求1-17任意一项所述方法的步骤。
20.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-17任意一项所述方法的步骤。
21.一种数据编码校验电路,其特征在于,包括:
判断模块,所述判断模块配置用于判断待编码的原始数据中的可变部分和/或固定部分是否与已知的已编码的原始数据中对应的可变部分和/或固定部分是否相同,并根据判断结果向选择模块发送选择信号;
第一计算模块,所述第一计算模块配置用于将所述待编码的原始数据中的可变部分和已编码的原始数据中的可变部分进行计算或将所述待编码的原始数据中的固定部分和已编码的原始数据中的部分进行计算,并将计算结果发送到第二计算模块;
第二计算模块,所述第二计算模块配置用于将第一计算模块计算结果和已编码的原始数据中所对应的校验码进行计算,并将计算结果发送到选择模块;
选择模块,所述选择模块配置用于,根据判断模块的选择信号,选择第二计算模块的结果或已编码的原始数据的校验码作为待编码的原始数据的校验码进行输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310126750.2A CN115882876B (zh) | 2023-02-16 | 2023-02-16 | 一种数据编码校验方法、系统、设备、介质及电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310126750.2A CN115882876B (zh) | 2023-02-16 | 2023-02-16 | 一种数据编码校验方法、系统、设备、介质及电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115882876A true CN115882876A (zh) | 2023-03-31 |
CN115882876B CN115882876B (zh) | 2023-06-13 |
Family
ID=85761264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310126750.2A Active CN115882876B (zh) | 2023-02-16 | 2023-02-16 | 一种数据编码校验方法、系统、设备、介质及电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115882876B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116708590A (zh) * | 2023-06-27 | 2023-09-05 | 广州呗呗科技有限公司 | 一种基于can总线的稳定器控制系统及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1987006036A1 (en) * | 1986-03-28 | 1987-10-08 | Ampex Corporation | Digital data transmission with detection of errors, including word framing errors |
WO2016177385A1 (en) * | 2015-05-04 | 2016-11-10 | Telefonaktiebolaget Lm Ericsson (Publ) | Generating cryptographic checksums |
WO2017177926A1 (zh) * | 2016-04-13 | 2017-10-19 | 中兴通讯股份有限公司 | 一种数据传输处理方法和装置 |
CN111726622A (zh) * | 2019-03-20 | 2020-09-29 | 腾讯美国有限责任公司 | 视频解码的方法和装置 |
CN111884680A (zh) * | 2020-06-20 | 2020-11-03 | 青岛鼎信通讯股份有限公司 | 一种应用于电力线载波通信系统的rs编码方法 |
-
2023
- 2023-02-16 CN CN202310126750.2A patent/CN115882876B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1987006036A1 (en) * | 1986-03-28 | 1987-10-08 | Ampex Corporation | Digital data transmission with detection of errors, including word framing errors |
WO2016177385A1 (en) * | 2015-05-04 | 2016-11-10 | Telefonaktiebolaget Lm Ericsson (Publ) | Generating cryptographic checksums |
WO2017177926A1 (zh) * | 2016-04-13 | 2017-10-19 | 中兴通讯股份有限公司 | 一种数据传输处理方法和装置 |
CN111726622A (zh) * | 2019-03-20 | 2020-09-29 | 腾讯美国有限责任公司 | 视频解码的方法和装置 |
CN111884680A (zh) * | 2020-06-20 | 2020-11-03 | 青岛鼎信通讯股份有限公司 | 一种应用于电力线载波通信系统的rs编码方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116708590A (zh) * | 2023-06-27 | 2023-09-05 | 广州呗呗科技有限公司 | 一种基于can总线的稳定器控制系统及方法 |
CN116708590B (zh) * | 2023-06-27 | 2024-01-23 | 广州呗呗科技有限公司 | 一种基于can总线的稳定器控制系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115882876B (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0950300B1 (en) | Secondary channel using code violations | |
Hou et al. | BASIC codes: Low-complexity regenerating codes for distributed storage systems | |
US7219293B2 (en) | High performance CRC calculation method and system with a matrix transformation strategy | |
US9071275B2 (en) | Method and device for implementing cyclic redundancy check codes | |
US7206992B2 (en) | Decoding a received BCH encoded signal | |
US7502988B2 (en) | Decoding and error correction for algebraic geometric codes | |
Zhang et al. | High-speed architectures for parallel long BCH encoders | |
US7392461B2 (en) | Decoding for algebraic geometric code associated with a fiber product | |
WO2018133215A1 (zh) | 基于lsc-crc译码的分段极化码编译码方法及系统 | |
US8914698B2 (en) | Cyclic redundancy check circuit and communication system having the same for multi-channel communication | |
US20080040644A1 (en) | Method of correcting message errors using cyclic redundancy checks | |
WO2017121334A1 (zh) | 一种数据处理的方法和装置 | |
MXPA04007076A (es) | Mensajeria en bloque de componente intra-decodificador. | |
Van Waes et al. | Effectiveness of hamming single error correction codes under harsh electromagnetic disturbances | |
US7461329B2 (en) | Channel encoding adapted to error bursts | |
CN115882876A (zh) | 一种数据编码校验方法、系统、设备、介质及电路 | |
Xu et al. | Variable shortened-and-punctured Reed-Solomon codes for packet loss protection | |
Einarsson et al. | A note on soft decision decoding with successive erasures (corresp.) | |
MXPA04007075A (es) | Celda de busqueda chien para un decodificador de correccion de error. | |
US11184034B2 (en) | Method and device for decoding staircase code, and storage medium | |
US8132078B2 (en) | Decoding method for algebraic geometric codes and associated device | |
CN101848055A (zh) | 一种数据修正方法和装置 | |
US7181671B2 (en) | Parallelized CRC calculation method and system | |
Huang et al. | Hardware Decoding Accelerator of (73, 37, 13) QR Code for Power Line Carrier in UPIoT | |
Luo et al. | Optimized Algebraic Decoding Algorithm for (47, 24, 11) QR Code |
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 |