CN105406940A - 一种基于关键变量的冗余纠错码防护方法 - Google Patents
一种基于关键变量的冗余纠错码防护方法 Download PDFInfo
- Publication number
- CN105406940A CN105406940A CN201510691038.2A CN201510691038A CN105406940A CN 105406940 A CN105406940 A CN 105406940A CN 201510691038 A CN201510691038 A CN 201510691038A CN 105406940 A CN105406940 A CN 105406940A
- Authority
- CN
- China
- Prior art keywords
- parity check
- variable
- code
- coding
- variables
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0061—Error detection codes
- H04L1/0063—Single parity check
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Detection And Correction Of Errors (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
本发明提供的一种基于关键变量的冗余纠错码防护方法,主要包括奇偶校验+反向码的编码、奇偶校验+反向码的解码和奇偶校验+反向码的码字刷新三个过程:通过冗余编码,可以纠正变量在生存周期内因为单粒子效应而产生的错误,保证了变量的可靠性。编码是基于重复码和奇偶校验码,编码及解码过程简单,运算量小,不会占用系统过多的资源;在变量生存周期内,对传输变量进行刷新,缩短变量的生存周期,对生存周期较长、粒子辐射严重的环境下,可以很好的保证关键变量的可靠性。
Description
技术领域
本发明属于通信编码技术领域,具体涉及一种基于关键变量的冗余纠错码防护方法,用于在程序中对关键变量进行检错和纠错,保证传输变量的正确性。
背景技术
DSP系统在太空运行的过程中,易发生单粒子效应,在DSP工程代码中,有些代码模块执行频率低,发生单粒子效应的概率相对较小,我们将这些模块称为非敏感区域;有些代码模块执行频率高,发生单粒子效应的概率相对较大,我们称这些模块为敏感区域。容易理解,执行频率越高,意味着数据读写次数较多,对程序执行过程影响较大,所以在对DSP系统进行软防护的过程中,敏感区域的防护至关重要。
关键变量主要是指程序的大循环控制变量、有限状态机控制变量、重要的全局指针、重要的全局标志等。
关键变量对信号处理流程起至关重要的控制作用,其正确性关系到DSP程序运行的总体进程,可能导致信号处理结果的大范围错误。这些关键变量,诸如循环变量、全局标志等,生存周期一般较长,而且读写的频率也比较高,其发生单粒子效应的概率相对较大。
发明内容
本发明针对DSP工程代码中的关键变量进行冗余纠错码防护,其主要目的是保证关键变量在生存周期内的正确性,提高系统的可靠性。
为达上述目的,本发明提供了一种基于关键变量的冗余纠错码防护方法,其执行主要包括奇偶校验+反向码的编码、奇偶校验+反向码的解码和奇偶校验+反向码的解码的码字刷新三个步骤:
(1)所述的奇偶校验+反向码的编码,其操作方法是,
对于关键变量I,如果关键变量I的数据长度为二进制的m位,将其记为(amam-1La1),对变量I进行奇偶校验,这里可以采用奇校验或者偶校验方式,在进行后续的校验中,保持一致即可满足,得到校验后的变量(amam-1La1C1),其中C1为校验位;
对关键变量I按位取反,得到变量将其记为(bmbm-1Lb1),对变量进行奇偶校验,这里可以采用奇校验或者偶校验方式,在进行后续的校验中,保持一致即可满足,得到奇偶校验后的变量(bmbm-1Lb1C2),其中C2为校验位;
将添加奇偶校验后的变量插入到添加奇校验后的变量I之后,构成传输变量,记作(amam-1La1C1bmbm-1Lb1C2);
(2)所述的奇偶校验+反向码的解码,主要包含以下几个步骤:
步骤1,检错,对于长度为L的传输变量,将其高L/2位和低L/2位分别取出;将高L/2位和低L/2位按位作同或运算,得到检错参量S,若检错参量S等于0或者1,则表明传输变量没有出现错误,通过编码取出变量;如果检错参量S不等于0且不等于1,则表明传输结果出错,执行步骤2;
步骤2,纠错,逐位检测S,S中除最末位外不为0的位则对应为出错的位;
步骤3,对高L/2位进行奇偶校验,如果校验出错,则说明高L/2位出错,通过步骤2中确定的出错位数纠正该位的错误,获取关键变量;如果高L/2位校验结果正确,则校验低L/2位,纠正错误位,获取关键变量;
(3)所述的奇偶校验+反向码的解码的码字刷新,定时执行上述(1)(2),直至变量不再有效。
上述一种基于关键变量的冗余纠错码防护方法,所述的步骤(1)奇偶校验+反向码的编码中,对关键变量I的奇偶校验可以是奇校验,也可以是偶校验。
上述一种基于关键变量的冗余纠错码防护方法,所述的步骤(1)奇偶校验+反向码的编码中,对变量的奇偶校验可以是奇校验,也可以是偶校验。
上述一种基于关键变量的冗余纠错码防护方法,所述的步骤(1)奇偶校验+反向码的编码中,也可以将进行奇偶校验之后的变量I插入到变量之后,构成传输变量。
本发明的优点是:通过冗余编码,可以纠正变量在生存周期内因为单粒子效应而产生的错误,保证了变量的可靠性。编码是基于重复码和奇偶校验码,编码及解码过程简单,运算量小,不会占用系统过多的资源;在变量生存周期内,对传输变量进行刷新,缩短变量的生存周期,对生存周期较长、粒子辐射严重的环境下,可以很好的保证关键变量的可靠性。
下面结合附图和实施例对本发明做详细说明。
附图说明
图1是编码函数伪代码设计示意图。
图2是解码函数伪代码设计示意图。
图3是码字刷新函数伪代码设计示意图。
图4a是不插入任何防护的循环流程图。
图4b是插入了冗余纠错码及码字刷新的循环流程图。
具体实施方式
本实施例针对DSP工程代码中关键变量进行冗余纠错码设计,即对关键变量进行编码,在关键变量的整个生存周期内,如果有数据位出现错误,可以对其进行纠正,保证了关键变量的正确性。
关键变量主要是指程序的大循环控制变量、有限状态机控制变量、重要的全局指针、重要的全局标志等,它的生存周期一般都比较长,操作也比较频繁,对这些变量进行编码解码的要求就相对较高。主要有以下几点:
(1)编解码尽可能简单;由于关键变量操作频率高,如果编解码过程过于复杂,系统需要耗费太多的资源进行编解码的额外计算,将严重干扰程序的执行流程;
(2)插入次数尽可能少;DSP以其流水线操作实现程序的并行,好的编程结构有利于DSP的流水线操作,如果在程序中过多插入其他代码,将可能破坏流水线操作,系统性能降低;
重复码是一种简单的信道编码方法,其实质是将每个要发送的字符重复发送。
我们知道,两次重复码具有检错功能,可以检测到哪一位出现错误,但是不具备纠错功能,其主要原因在于两次重复码间的编码距离为0,在码字出现错误时,不能区分是哪一次码字出错,从而无法纠错。
三次以上的重复码具有检错纠错能力,其实际是一种多模冗余的编码机制。
奇偶校验码是一种检错码,分为奇校验和偶检验,它是一种检错码,不具备纠错能力。
虽然重复码和奇偶校验码都不具备纠错能力,但是它们突出的优点就是编解码过程都非常简单,易于操作。
最常用的纠错码是汉明码,其相关的技术研究已经很成熟,它具有检错纠错能力,但是其主要的问题就是编解码过程较为复杂,涉及矩阵的相关运算,对于处理器而言,资源开销比较大。
针对这种情况,本发明提出了一种奇偶校验+反向码的编码方式(一种基于关键变量的冗余纠错码防护方法),其实质是奇偶校验码与重复码的组合。
奇偶校验+反向码的编码是一种简单、快速的编码方式,可根据变量的类型及纠正错误位数,确定冗余编码位的长度;纠正位数越高,编码冗余越长,编码效率越低。
奇偶校验+反向码的防护应用主要包括奇偶校验+反向码的编码、奇偶校验+反向码的解码和奇偶校验+反向码的码字刷新三个过程:
(1)奇偶校验+反向码的编码
对于关键变量I,如果关键变量I的数据长度为m位(二进制),我们将其记为(amam-1La1),对变量I进行奇校验(或者偶检验),得到奇校验后(或者偶检验)变量(amam-1La1C1),其中C1为校验位。对变量m取反,得到变量我们将其记为(bmbm-1Lb1),对变量进行奇校验(或者偶检验),得到奇校验(或者偶检验)后变量(bmbm-1Lb1C2),其中C2为校验位。将奇校验(或者偶检验)后的变量I插入到奇校验(或者偶检验)后的变量I之后,或者将奇校验(或者偶检验)后的变量I插入到奇校验(或者偶检验)后的变量之后,构成传输变量,记作(amam-1La1C1bmbm-1Lb1C2)。这样,传输变量实际是由原变量的奇校验(或者偶检验)和原变量的反码的奇校验(或者偶检验)构成。其执行主要包括三部分:
<1>对关键变量进行取按位反运算,得到反码;
<2>对关键变量及其反码进行奇校验(或者偶校验);
<3>合并得到传输变量;
反码计算及奇校验(或者偶校验)对于处理器而言,都是非常容易实现的,所以对于奇偶校验+反向码,其编码非常简单。
(2)奇偶校验+反向码的解码
由于传输变量是对关键变量进行了编码,其值已经不同于原变量,所以在每次使用之前,需要对传输变量进行解码,还原出关键变量。还原关键变量主要包含以下几步:
<1>检错
对于长度为L的传输变量,将其高L/2位和低L/2位分别取出;将高L/2位和低L/2位按位作同或运算,得到检错参量S。如果检错参量S等于0或者1,S等于0即高L/2位和低L/2数据位和校验位全部相反,此时则表明传输变量没有出现错误,而校验位有可能出错,但此时并不影响数据;如果S等于1即高L/2位和低L/2数据位相反,而校验位相同,此时则表明传输变量没有出现错误,而校验位有可能出错,但同样并不影响数据;如果检错参量S不等于0且不等于1,则表明高L/2位和低L/2的数据位中有位相同,存在传输错误;那么执行步骤<2>纠错。
<2>纠错
如果检错参量S不等于0且不等于,则表明传输变量出现错误,而S中除最后一位外不为0的位则对应为出错的位。但是,此时并不能判断是高L/2位出错还是低L/2位出错。
对高L/2位进行奇校验(或者偶校验,与编码保持一致),如果校验出错,则说明高L/2位出错,通过检错已经得到出错的位,从而可以纠正该位的错误。如果高L/2位校验结果正确,则校验低L/2位,纠正错误位,以保证传输数据的正确性。
<3>还原
取经过检错纠错后的传输的变量的高L/2位,去掉最后一位校验位即为关键变量。当然,如果在编码时,将变量I插入到I的后面构成传输变量,那么,取经过检错纠错后的传输的变量的低L/2位,去掉最后一位校验位即为关键变量。
(3)奇偶校验+反向码的解码的码字刷新
当关键变量的生存周期过长,而环境的单粒子辐射强度较大时,容易出现一次以上的数据位翻转,如果通过增加编码长度来提高纠错位,对于数据的冗余量就过大,而且解码过程就相对复杂。考虑到这种情况,我们在关键变量的生存周期内插入刷新函数,对编码码字进行刷新。
刷新的过程包括校验和纠错两个部分,即在一定的时间内,对传输变量进行一次检错与纠错(如果有错误)操作,其本质是通过人工干预,缩短编解码的周期,从而消除传输过程中可能出现的错误积累,以较小的代价换取关键变量更高的可靠性。
在工程应用中,实施本发明所提供的方法主要包括以下几个步骤:
(1)根据关键变量类型及需要的纠错位数,进行编码长度的计算;
对于关键变量I,根据其定义的数据类型确定其长度,比如对于一般的32位DSP而言,其数据类型长度位数对应如下表1-1所示:
表1-1数据类型及数据长度关系表
数据类型 | 数据长度 |
char | 8 |
int | 16/32 |
Long int | 32 |
float | 32 |
double | 64 |
在进行奇偶校验+反向码的编码运算中,我们需要传输原码、原码的反码、原码的校验位、反码的校验位,所以长度会增加原码长度的一倍以上。即对于长度为L的关键变量而言,编码之后的传输变量的长度为(2L+2)。
变量类型值可以根据设计者进行修改,例如,对于int型变量,如果处理器分配的是32位存储空间,那么理论上,编码之后长度将到达66位,即使是double型数据,也只有64位,是不够存储的。在这种情况下,用户可以选择以下方法来处理;
<1>将传输数据打包,构成一个数据序列,这种传输方式可以不用担心数据的长度,但是编解码的复杂度会变大;
<2>根据实际数据的大小进行位操作,也就是将数据的空闲位在编码的时候剔除掉,比如对于无符号的int型变量而言,如果系统是用32位数据空间对其进行存储,那么该变量最大值为4294967295。而实际上,除数值计算外,很少有变量会达到这个值,类似循环次数之类的变量,在几百到几千,所以存储位有很大的空间是浪费掉的,这些位没有用来存储有效数据,所以编码是没有意义的。用户可以在编码时将这些位剔除,从而保证编码的数据长度,减小编解码的运算量。
<3>将关键变量加校验的码字与反码加校验的码字分开传输,即将一个变量拆分成两个变量,在解码时直接调用两个变量进行运算。
(2)对关键变量进行编码;
对关键变量进行编码运算主要包括取反运算和校验运算,首先,需要获取关键变量的数据位,在设计时,用户可以进行实际位计算;然后对该变量进行取反运算;然后调用奇校验(或者偶校验)函数,对变量及其反码进行校验运算;最后将校验后的反码插入到原码的低位上。其编码的伪代码设计如图1-1所示。
(3)对关键变量进行解码;
对关键变量进行解码的操作主要包括检错、纠错、还原三个部分;首先将传输变量的高位和低位分开,按位进行同或操作,得到检错参量S。如果S=0或者S=1,则表明传输变量没有出错,如果S≠0且S≠1,则进行纠错运算。
如果S≠0且S≠1,则S中除最后一位外不为0的位则对应为出错的位。对传输的变量的高位进行奇校验,如果校验没有错误,则说明出错位在低位,纠正该位错误即可。
检错纠错完成后,取高位去掉最后一位,即可还原出关键变量。
对关键变量的解码的伪代码设计如图2所示。
(4)插入码字刷新;
对于生存周期过长、环境单粒子辐射较强的场所,在生存周期内定期插入刷新代码,对传输变量出现的错误进行纠正,可以很好的防止错误积累,保证整个防护过程的可靠性。插入码字刷新函数的伪代码设计如图3所示。
(5)插入位置;
循环变量在工程代码中就属于关键变量,我们以程序中的循环变量为例,阐述关键变量的冗余纠错码的编解码及码字刷新插入位置。相应的伪代码插入及实现流程图如图1-4所示,其中图1-4(a)是不插入任何防护的循环流程图,图1-4(b)是插入了冗余纠错码及码字刷新的循环流程图;编码插入在对循环变量进行操作之后,解码插入在对循环变量进行操作之前,即每次对变量进行更新后进行编码,使用之前进行解码,这样就保证在变量两次使用期间的可靠性。如果生存周期太长,可以将生存周期分成以T为周期的小块,每块内插入码字刷新,这样可以消除传输变量在传输过程中的错误积累,防止出现多位错误。如果变量在生存周期内出现不多于一位出错,通过解码可以纠正该位的错误。
以上例举仅仅是对本发明的举例说明,并不构成对本发明的保护范围的限制,凡是与本发明相同或相似的设计均属于本发明的保护范围之内。
Claims (4)
1.一种基于关键变量的冗余纠错码防护方法,其特征在于:包括奇偶校验+反向码的编码、奇偶校验+反向码的解码和奇偶校验+反向码的解码的码字刷新三个步骤:
(1)所述的奇偶校验+反向码的编码,其操作方法是,
对于关键变量I,如果关键变量I的数据长度为二进制的m位,将其记为(amam-1La1),对变量I进行奇偶校验,得到校验后的变量(amam-1La1C1),其中C1为校验位;
对关键变量I按位取反,得到变量将其记为(bmbm-1Lb1),对变量进行奇偶校验,得到奇偶校验后的变量(bmbm-1Lb1C2),其中C2为校验位;
将添加奇偶校验后的变量插入到添加奇校验后的变量I之后,构成传输变量,记作(amam-1La1C1bmbm-1Lb1C2);
(2)所述的奇偶校验+反向码的解码,主要包含以下几个步骤:
步骤1,检错,对于长度为L的传输变量,将其高L/2位和低L/2位分别取出;将高L/2位和低L/2位按位作同或运算,得到检错参量S,若检错参量S等于0或者1,则表明传输变量没有出现错误,通过编码取出变量;如果检错参量S不等于0且不等于1,则表明传输结果出错,执行步骤2;
步骤2,纠错,逐位检测S,S中除最末位外不为0的位则对应为出错的位;
步骤3,对高L/2位进行奇偶校验,如果校验出错,则说明高L/2位出错,通过步骤2中确定的出错位数纠正该位的错误,获取关键变量;如果高L/2位校验结果正确,则校验低L/2位,纠正错误位,获取关键变量;
(3)所述的奇偶校验+反向码的解码的码字刷新,定时执行上述(1)(2),直至变量不再有效。
2.根据权利要求1所述的一种基于关键变量的冗余纠错码防护方法,其特征在于:所述的步骤(1)奇偶校验+反向码的编码中,对关键变量I的奇偶校验可以是奇校验,也可以是偶校验。
3.根据权利要求1所述的一种基于关键变量的冗余纠错码防护方法,其特征在于:所述的步骤(1)奇偶校验+反向码的编码中,对变量的奇偶校验可以是奇校验,也可以是偶校验。
4.根据权利要求1或2所述的一种基于关键变量的冗余纠错码防护方法,其特征在于:所述的步骤(1)奇偶校验+反向码的编码中,也可以将进行奇偶校验之后的变量I插入到变量之后,构成传输变量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510691038.2A CN105406940B (zh) | 2015-10-22 | 2015-10-22 | 一种基于关键变量的冗余纠错码防护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510691038.2A CN105406940B (zh) | 2015-10-22 | 2015-10-22 | 一种基于关键变量的冗余纠错码防护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105406940A true CN105406940A (zh) | 2016-03-16 |
CN105406940B CN105406940B (zh) | 2018-09-28 |
Family
ID=55472212
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510691038.2A Active CN105406940B (zh) | 2015-10-22 | 2015-10-22 | 一种基于关键变量的冗余纠错码防护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105406940B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102915768A (zh) * | 2012-10-01 | 2013-02-06 | 中国科学院近代物理研究所 | 基于edac模块的三模冗余对存储器的容错装置及其方法 |
CN104035834A (zh) * | 2014-07-02 | 2014-09-10 | 东南大学 | 一种考虑防护措施的缓存可靠性分析方法 |
US8869010B1 (en) * | 2011-03-09 | 2014-10-21 | Marvell International Ltd. | Controlling decoder iterations based on measurements of physical variables |
-
2015
- 2015-10-22 CN CN201510691038.2A patent/CN105406940B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8869010B1 (en) * | 2011-03-09 | 2014-10-21 | Marvell International Ltd. | Controlling decoder iterations based on measurements of physical variables |
CN102915768A (zh) * | 2012-10-01 | 2013-02-06 | 中国科学院近代物理研究所 | 基于edac模块的三模冗余对存储器的容错装置及其方法 |
CN104035834A (zh) * | 2014-07-02 | 2014-09-10 | 东南大学 | 一种考虑防护措施的缓存可靠性分析方法 |
Non-Patent Citations (2)
Title |
---|
JANGWON PARK ET AL: "VL-ECC: Variable Data-Length Error Correction Code for Embedded Memory in DSP Applications", 《 IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS II: EXPRESS BRIEFS》 * |
郭向英; 赵雷; 沈沛: "面向单粒子效应的航天嵌入式软件软防护技术研究", 《质量与可靠性》 * |
Also Published As
Publication number | Publication date |
---|---|
CN105406940B (zh) | 2018-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9148176B2 (en) | Circuits, apparatuses, and methods for correcting data errors | |
Tshagharyan et al. | Experimental study on Hamming and Hsiao codes in the context of embedded applications | |
CN108874576B (zh) | 一种基于纠错编码的数据存储系统 | |
CN111143107B (zh) | 一种fpga单粒子反转校验电路和方法 | |
CN102915768A (zh) | 基于edac模块的三模冗余对存储器的容错装置及其方法 | |
US9654147B2 (en) | Concatenated error correction device | |
CN102017425A (zh) | 用于执行级联纠错的方法和系统 | |
CN103325425B (zh) | 存储器控制器 | |
US10423484B2 (en) | Memory controller, memory system, and control method | |
US10741212B2 (en) | Error correction code (ECC) encoders, ECC encoding methods capable of encoding for one clock cycle, and memory controllers including the ECC encoders | |
KR101482684B1 (ko) | 디코딩 방법 및 이를 포함하는 메모리 시스템의 동작 방법 | |
CN102298973B (zh) | 抗辐射故障保护型存储装置及其抗辐射故障保护方法 | |
CN107402860B (zh) | 用于执行内建式自我测试的独立磁盘冗余数组译码系统 | |
CN104598330B (zh) | 基于双备份的数据保存和校验方法 | |
RU164633U1 (ru) | Устройство хранения и передачи информации с обнаружением ошибок | |
CN104112479A (zh) | 编码器、译码器和包括其的半导体器件 | |
CN103151078A (zh) | 一种存储器检错纠错码生成方法 | |
CN109753369A (zh) | 一种寄存器及内存中顺序数组的数据编码及校验方法 | |
CN105406940A (zh) | 一种基于关键变量的冗余纠错码防护方法 | |
CN115269258A (zh) | 一种数据恢复的方法和系统 | |
CN202838976U (zh) | 基于edac模块的三模冗余对存储器的容错装置 | |
RU2637426C1 (ru) | Устройство хранения и передачи данных с обнаружением ошибок | |
RU51428U1 (ru) | Отказоустойчивый процессор повышенной достоверности функционирования | |
Faraj | ’Design Error Detection and Correction System based on Reed_Muller Matrix for Memory Protection’ | |
WO2014146488A1 (zh) | 用于将数据写入存储器的过程的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |