CN105406940A - 一种基于关键变量的冗余纠错码防护方法 - Google Patents

一种基于关键变量的冗余纠错码防护方法 Download PDF

Info

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
Application number
CN201510691038.2A
Other languages
English (en)
Other versions
CN105406940B (zh
Inventor
闫允一
郭宝龙
宁伟康
王健
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN201510691038.2A priority Critical patent/CN105406940B/zh
Publication of CN105406940A publication Critical patent/CN105406940A/zh
Application granted granted Critical
Publication of CN105406940B publication Critical patent/CN105406940B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • H04L1/0063Single 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插入到变量之后,构成传输变量。
CN201510691038.2A 2015-10-22 2015-10-22 一种基于关键变量的冗余纠错码防护方法 Active CN105406940B (zh)

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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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