CN103890732B - 数字错误校正 - Google Patents

数字错误校正 Download PDF

Info

Publication number
CN103890732B
CN103890732B CN201280052786.0A CN201280052786A CN103890732B CN 103890732 B CN103890732 B CN 103890732B CN 201280052786 A CN201280052786 A CN 201280052786A CN 103890732 B CN103890732 B CN 103890732B
Authority
CN
China
Prior art keywords
output
mistake
circuit
error
correction
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.)
Active
Application number
CN201280052786.0A
Other languages
English (en)
Other versions
CN103890732A (zh
Inventor
M·波拉卡帕拉姆贝尔
A·贾比尔
J·马修
D·K·普拉丹
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.)
Oxford Brookes University
Original Assignee
Oxford Brookes 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 Oxford Brookes University filed Critical Oxford Brookes University
Publication of CN103890732A publication Critical patent/CN103890732A/zh
Application granted granted Critical
Publication of CN103890732B publication Critical patent/CN103890732B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • 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/0057Block codes

Abstract

一种错误校正电路,包括:组件、错误检测器、校正发生器以及输出发生器,其中,所述组件布置成根据第一输入和第二输入产生第一输出;所述错误检测器布置成基于所述第一输出、所述第一输入和所述第二输入产生错误标记,所述错误标记指示在所述第一输出中是否已经检测到错误;所述校正发生器适合于基于所述第一输出、所述第一输入和所述第二输入,在起始于时序事件的第一时间周期之后产生校正输出;所述输出发生器布置成在起始于时序事件的第二时间周期之后产生错误校正电路的输出。如果所述错误标记指示在所述第一输出中已经检测到错误,则所述第二时间周期可能比所述第一时间周期长,否则所述第二时间周期可能不比所述第一时间周期长。如果所述错误标记指示在所述第一输出中已经检测到错误,则所述错误校正电路的输出可以包括所述第一输出和所述校正输出的组合,从而在所述第一输出中检测到的错误得以校正,否则所述错误校正电路的输出可能直接对应于所述第一输出。

Description

数字错误校正
技术领域
本发明涉及错误校正。其应用在容错电路的设计中,例如在用于执行算术运算的电路中,但也在其他类型的电路中。本发明的一些方面也应用在通信和存储器设计中的其他领域,比如错误校正。
背景技术
现代数字电路变得越来越大且复杂,并因此越来越易受出于各种各样的原因的错误的影响。例如,电路减小的规模,以及用于表示数据的降低的电压,常常增加了错误的可能性。可能会出现错误,例如,由于在使用的电路导致在电路中的位翻转的环境中的高能粒子,或者简单地由于制造错误。而且,刻意尝试的在电路中引入错误的利用高能粒子对电路的轰击越来越成为错误的来源,特别是在密码系统中。因此,在数字电路中的错误的检测和/或校正变得越来越重要。
作为一个实例,比如在伽罗瓦域(Galois fields)GF(2k)上的算术的有限域算术用于包括密码系统的诸多应用中。在密码系统中,例如,容错电路是合适的,尤其是因为可以在电路执行密码运算的同时通过在电路中引起故障来学习秘密信息。为了实现用于密码系统的容错电路,已经提出了具有并行错误检测以及校正能力的有限域乘法电路。然而,这些往往或者非常大,或者仅校正单个错误。
发明内容
根据一个方面,本发明提供了一种错误校正或容错电路,包括:组件、校正发生器以及组合器,其中,所述组件布置成根据第一输入和第二输入产生第一输出;所述校正发生器布置成基于第一输出、第一输入和第二输入产生适合于与所述第一输出进行组合的校正输出,以便校正其中的错误;所述组合器布置成将所述校正输出和所述第一输出进行组合,从而产生第二输出,其中已经校正在所述第一输出中的错误。所述校正发生器优选地布置成使用BCH解码产生所述校正输出。BCH编码和解码的使用为校正在布置成产生输出的电路组件中的多个错误的极其有效的方式。
可选择地,电路能够接收一个或更多个输入(例如,第一和第二输入),并且然后根据其产生与通过所述组件产生的第一结果并行的校正输出,从而通过所述组件引入所述第一结果的错误能够得以校正,尽管在接收时,一个或更多个输入并不具有与其相关联的错误校正数据。在一些情况中,电路“联机(on the fly)”产生校正数据,并且在一些实例中,电路能够在相同的时钟周期中校正第一结果,在所述相同的时钟周期中通过所述组件接收一个或更多个输入。
可选择地,电路进一步包括校验位发生器,所述校验位发生器布置成基于所述第一输入和所述第二输入产生至少一个校验位,并且所述校正发生器布置成基于所述第一结果和所述至少一个校验位产生所述校正输出。
可选择地,所述校验位发生器布置成根据所述第一输入和所述第二输入直接产生所述至少一个校验位,而不单独产生所述第一结果。这能够帮助简化所述校验位发生器的设计。
可选择地,所述错误检测器布置成基于所述第一结果和所述至少一个校验位产生所述错误标记,所述错误标记指示所述错误检测器是否已经检测到所述错误检测器布置成检测的多个不同错误中的任意一个,所述多个不同错误包括在所述第一输出中的错误和在所述至少一个校验位中的错误。
可选择地,所述校正发生器适合于基于所述第一输出和所述至少一个校验位产生校正输出,所述校正输出适合于校正多个不同错误中的任意一个,所述多个不同错误包括在所述第一输出中的错误和在所述至少一个校验位中的错误。
可选择地,所述校正发生器布置成通过产生错误位置多项式并接着搜索所述错误位置多项式的根来产生所述校正输出,其中所述校正发生器仅搜索对应于所述第一结果的根。这能够显著地帮助所述校正发生器大小的最小化。
可选择地,布置成产生所述第一输出的所述组件布置为通过对第一和第二输入执行算术运算而产生所述第一输出。
可选择地,所述算术运算为有限域算术运算,比如在伽罗瓦域GF(2k)上的乘法。
在另一个方面,本发明提供了一种错误校正电路,所述错误校正电路布置成接收时钟信号,包括:组件、错误检测器、校正发生器以及输出发生器,其中,所述组件布置成根据第一输入和第二输入产生第一输出;所述错误检测器布置成基于所述第一输出、所述第一输入和所述第二输入产生错误标记,所述错误标记指示在所述第一输出中是否已经检测到错误;所述校正发生器适合于基于所述第一输出、所述第一输入和所述第二输入,在起始于在时钟信号中的时序事件的第一时间周期之后产生校正输出;所述输出发生器布置成在始于在时钟信号中的时序事件的第二时间周期之后产生错误校正电路的输出。如果所述错误标记指示在所述第一输出中已经检测到错误,则所述第二时间周期可能比所述第一时间周期长。否则,所述第二时间周期可能不比所述第一时间周期长。如果所述错误标记指示在所述第一输出中已经检测到错误,则所述错误校正电路的输出可以包括所述第一输出和所述校正输出的组合,从而在所述第一输出中检测到的错误得以校正。否则,所述错误校正电路的输出可能直接对应于所述第一输出。
根据本发明的这个方面的电路能够用于通信、存储器和其他应用,以及容错电路设计。它们能够用于提高例如解密、通信或存储器系统处理数据的速率。
可选择地,所述输出发生器包括具有输出的输出寄存器,所述输出寄存器的输出为所述错误校正电路的输出,并且其中所述输出发生器布置成当所述错误标记指示在所述第一输出中已经检测到错误时,在更新其输出时对所述输出寄存器进行延迟,从而使得所述第二时间周期比所述第一时间周期长。
可选择地,所述输出发生器包括输出使能组件,所述输出使能组件布置成基于所述时钟信号和所述错误标记产生门控时钟,并且其中所述输出寄存器在其时钟输入处接收所述门控时钟,从而在所述错误标记指示在所述第一输出中已经检测到错误时,防止所述输出寄存器更新其输出。
例如,接收的时钟信号可以具有比所述第二时间周期短的恒定周期;所述门控时钟将具有与所述接收的时钟信号大致相同的周期,直到在所述第一输出中已经检测到错误,在该点处,所述门控时钟的至少一个周期被延伸,以允许额外的时间使所述校正发生器产生合适的校正输出。
可选择地,电路进一步包括校验位发生器,其中所述校验位发生器布置成基于所述第一输入和所述第二输入产生至少一个校验位,并且其中所述错误检测器和所述校正发生器布置成基于所述第一输出和所述至少一个校验位分别产生所述错误标记和所述校正输出。
可选择地,所述错误检测器布置成基于所述第一结果和所述至少一个校验位产生所述错误标记,所述错误标记指示所述错误检测器是否已经检测到所述错误检测器布置成检测的多个不同错误中的任意一个,所述多个不同错误包括在所述第一输出中的错误和在所述至少一个校验位中的错误。
相对于现有技术,有利的是,可以检测在所述校验位发生器中的错误。
可选择地,所述校正发生器适合于基于所述第一输出和所述至少一个校验位产生校正输出,所述校正输出适合于校正多个不同错误中的任意一个,所述多个不同错误包括在所述第一输出中的错误和在所述至少一个校验位中的错误。
相对于现有技术,有利的是,可以校正在所述校验位发生器中的错误。
可选择地,所述校验位发生器布置成根据所述第一输入和所述第二输入直接产生所述至少一个校验位,而不单独产生所述第一输出。
可选择地,所述校正发生器布置成通过产生错误位置多项式并接着搜索所述错误位置多项式的根来产生所述校正输出,其中所述校正发生器仅搜索对应于所述第一输出的根。
可选择地,布置成产生所述第一输出的所述组件布置为通过对第一和第二输入执行算术运算而产生所述第一输出。
可选择地,所述算术运算为有限域算术运算,比如在伽罗瓦域GF(2k)上的乘法。
在本发明的第一和第二方面的两者之一中,输出可以包括多个位,并且所述校正发生器可以布置成将输出位分配至第一组的集合并对所述第一组的集合的每一个执行第一错误检测步骤,将所述输出位分配至第二组的集合并对所述第二组的集合的每一个执行第二错误检测步骤,使用第一和第二错误检测步骤的结果来执行错误定位步骤以在所述输出中定位错误。
根据本发明的另一个方面,本发明提供了一种错误校正电路,布置成接收包括多个输出位的系统输出,所述错误校正电路将所述输出位分配至第一组的集合并对所述第一组的集合的每一个执行第一错误检测步骤,将所述输出位分配至第二组的集合并对所述第二组的集合的每一个执行第二错误检测步骤,使用第一和第二错误校正步骤的结果来执行错误定位步骤以在所述输出中定位错误,并且根据接收的输出和所述错误定位步骤的结果产生校正的输出。
根据本发明的这个方面的一些电路具有这样的好处:所述错误校正能够以相对低的空间开销合并到电路中,以及错误校正能够以通常有效的方式执行,并且能够校正相对大量的位错误。
可选择地,第一和第二组的集合布置成使得对于所述输出位的任意一个,来自其作为成员的第一集合的组的身份和来自其作为成员的第二集合的组的身份唯一识别所述输出位。
例如,如果所述输出位布置在行和列的矩形表格内,则所述第一组的集合可以包括行,并且所述第二组的集合可以包括列,反之亦然。然而,应当理解的是,在输出中的位能够以任意顺序分配到表格中的位置。
电路可以包括布置成执行每一个步骤的子电路,例如其可以包括以下中的任意一个或多个:分配子电路、第一错误检测子电路、第二错误检测子电路、错误定位子电路以及校正子电路。
所述错误检测步骤或子电路可每一个都布置成确定在相关组中位错误的数量。例如,它们可以布置成对于每一个组产生错误检测代码,例如奇偶校验码。
在第一集合中的组可以全部是相同的大小,或者可以是不同的大小。在第二集合中的组可以全部是相同的大小,或者可以是不同的大小。第一集合中的组与第二集合中的组可以是相同的大小,或者可以是不同的大小。
系统可以是功能电路,比如乘法器,在该情况下所述输出可以是对一个或多个输入执行功能的结果。在其他情况下,系统可以是在其上传输通信的通道,在该情况下所述输出可以是如从所述通道接收的通信。在其他情况下,系统可以是存储器电路,在该情况下所述输出可以是从所述存储器电路重新得到的数据。
附图说明
电路可以进一步包括任意组合的本发明的任意一个或多个优选实施方案的任意一个或多个特征,其将在现在仅通过实例的方式,参考所附附图进行描述,在所附附图中:
图1为根据第一实施方案的用于计算有限域乘法并具有并行错误校正能力的电路的示意性方框图;
图2为显示图1的校正发生器块的组件的示意性方框图;
图3为根据第二实施方案的用于计算有限域乘法并具有并行错误校正能力的电路的示意性方框图;以及
图4为显示图3的错误检测子电路的组件的示意性方框图;
图5为显示代表通过图3的电路的不同组件的各自传播延迟的一些时间同期的时间线;
图6为显示图3的电路的一些信号的时序图;
图7为根据本发明的第三实施方案的错误校正电路的示意性方框图;
图8为显示在图7的电路中产生的校验位的表格;
图9A、图9B、图9C和图9D为显示能够使用图7的电路进行校正的错误的组合的一些实例的表格;
图10为显示对于图7的实施方案的修改的能够进行校正的错误的组合的一些实例的表格;
图11为显示在本发明的进一步实施方案中能够检测的错误的组合的一些实例的表格;
图12为显示使用180nm和90nm技术的不同大小的乘法器电路的面积的图表;
图13为显示用于对位表格的每一行中的多个错误校正使用海明码的使用180nm和90nm技术的不同大小的乘法器的错误检测和校正电路的面积的图表;
图14为显示用于使用BCH码的使用180nm和90nm技术的不同大小的乘法器的错误检测和校正电路的面积的图表;以及
图15和图16显示了图13和图14的具有错误检测和校正的乘法器电路的功率消耗。
具体实施方式
参照图1,在本发明的第一实施方案中,电路100包括具有两个并行输入105a、105b以及并行输出105c的有限域乘法子电路105。乘法子电路105布置成在输出105c处产生乘积C。乘积C是将在两个并行输入105a、105b处接收的两个操作数A、B在伽罗瓦域GF(2k)(在该域中两个操作数为元素)上相乘的结果。两个并行输入105a、105b以及并行输出105c宽为k位,也即,每一个由k个位组成。
在其他实施方案中,有限域乘法子电路105可以由用于执行其他有限域算术(比如,乘法逆元(multiplicative inversion)或取幂(例如,平方)运算)的电路进行替代。例如,在一些实施方案中,有限域乘法子电路105可以由用于执行并非有限域算术的算术(比如,二进制补码的二进制算术)的电路进行替代。
在第一实施方案中,电路100还包括具有两个k位并行输入110a、110b以及n-k位并行输出110c的校验位发生器110,其在一些实施方案中可以为单位输出。
校验位发生器110布置成在接收相同的两个操作数A、B(其在乘法子电路105处接收),并且在并行输出110c处产生奇偶校验字P。在一些实施方案中,奇偶校验字P可以由奇偶校验位进行替代。
校验位发生器110包括逻辑电路以在并行输出110c处产生奇偶校验字P。通过执行对在两个并行输入110a、110b处接收的两个操作数A、B的BCH编码和有限域乘法的组合而产生奇偶校验字P。校验位发生器110的逻辑电路布置成直接从两个操作数A、B产生奇偶校验字P,而不是首先产生乘法结果,然后从该乘法结果产生奇偶校验字P,发明人发现这样更有效率(例如,更小的延迟和/或更少的逻辑门)。校验位发生器110并不输出对应于乘积C的乘法结果。
在该实施方案中,通过将在伽罗瓦域GF(2k)上定义乘法的常规表达式-通过有限域乘法子电路105执行的相同类型的乘法-代入定义二进制(n,k,t)BCH代码(其中k为在“消息”中的位的数量,例如,在两个操作数A、B的每一个中以及在乘积C中,t为电路100通常能够校正的错误的数量,无论它们在哪里发生(有时能够校正更大数量的错误,但不是在所有情况下),以及n-k为在奇偶校验字P中的位的数量)的奇偶校验位的常规表达式中来推导校验位发生器110的逻辑电路。
电路100进一步包括具有两个输入115a、115b以及输出115c的校正发生器115。两个输入115a、115b以相同的宽度分别连接到乘法子电路105的输出105c以及校验位发生器110的输出110c。输出115c为k位并行输出。
校正发生器115布置成在其两个输入115a、115b处接收乘积C和奇偶校验字P,并且在其输出115c处产生校正值E。在该实施方案中,校正发生器115包括逻辑电路以通过对乘积C和奇偶校验字P执行BCH解码来产生校正值E,如将在下面参照图2进行更加详细的描述。
电路100进一步包括具有两个k位并行输入120a、120b以及k位并行输出120c的组合子电路120,两个k位并行输入120a、120b分别连接到乘法子电路105的输出105c和校正发生器115的输出115c。
组合子电路120布置成接收乘积C和校正值E,并且在并行输出120c处产生校正的乘积C'。在该实施方案中,组合子电路120由多个XOR门(未示出)组成,对于并行输出120c的每一位都有各自的一个。乘积C的每一位经由异或运算(通过XOR门中各自的一个)与校正值E的相应位组合,这导致了乘积C的错误位在校正的乘积C'中被反转(即,逻辑0被转换为逻辑1,反之亦然),从而校正了乘积C的错误位。
参照图2,校正发生器115包括校验子发生器125和错误定位器130,并且在其输出115c处产生k位校正值E(在图2中单独显示为ek-1…e0)。
校验子发生器125具有两个输入125a、125b以及t位宽的并行输出125c。两个输入125a、125b以相同的宽度分别连接到校正发生器115的两个并行输入115a、115b。校验子发生器125布置成接收乘积C和奇偶校验字P,并且在其输出125c处产生错误位置多项式St…S1。校验子发生器125布置成使用众所周知的Peterson-Gorenstein-Zierler算法产生错误位置多项式St…S1,但是产生错误位置多项式St…S1的其它合适的方法对本领域技术人员来说将是很明显的,并且可以用在其他实施方案中。
错误定位器130具有t位宽的并行输入130a,并行输入130a连接到校验子发生器125的输出,并且具有连接到校正发生器115的输出115c的k位宽的并行输出130c。
错误定位器130布置成接收错误位置多项式St…S1,并且在其输出130c处产生校正值E,校正值E由k个错误定位器ek-1…e0组成。在该实施方案中,通过使用众所周知的Chien搜索算法找到错误位置多项式St…S1的根来产生错误定位器。有利地,错误定位器130并不搜索对应于奇偶校验字P的根(这是由于在该实施方案中并不想要奇偶校验字P的校正),如果搜索对应于奇偶校验字P的根,其趋于减少在错误定位器130中逻辑电路的量(与需要的量相比)。在其他实施方案中,错误定位器130可以搜索对应于奇偶校验字P的根。在这样的实施方案中,校正发生器的输出可以为t+k位宽,并且校正发生器可以布置成在其输出处产生适合于校正多个不同错误中任意一个的校正值,所述多个不同错误包括在奇偶校验字中的错误和在乘积中的错误。
参照图3,在本发明的第二实施方案中,电路200包括有限域乘法子电路205、校验位发生器210、校正发生器215以及组合子电路220。这些组件中的每一个都基本上与第一实施方案的相应组件(相同名字的组件)相同。乘法子电路205、校验位发生器210和校正发生器215以与在第一实施方案中相同的方式连接在一起;这些组件不需要进行进一步的描述。
电路200还包括错误检测子电路250、位掩码子电路255、输出使能子电路260以及输出寄存器265。
错误检测子电路250具有两个输入250a、250b以及一位输出250c。两个输入250a、250b以相同的宽度分别连接到乘法子电路205的输出205c以及校验位发生器210的输出210c。错误检测子电路250布置成检测在乘积C中的错误,并且检测在奇偶校验字P中的错误,而无论那些错误单独发生还是同时发生。因此,错误检测子电路250能够检测多个不同错误中的一个或多个。
由于错误检测子电路250连接到校验位发生器210,因此其并不需要直接从两个操作数A、B产生校验位。这可能被视为在错误检测子电路250和校正发生器215之间共享的有利资源,这是由于共用模块(校验位发生器210)被用于对于两者而非每一个(包括其自己的逻辑电路)产生奇偶校验字P,以便直接从两个操作数A、B推导奇偶校验字P。
参照图4,错误检测子电路250包括校验位发生模块251和比较模块252。
校验位发生模块251具有k位并行输入251a以及n-k位宽的并行输出251c,k位并行输入251a连接到错误检测子电路250的并行输入250a中的第一个。
校验位发生模块251布置成接收乘积C,并且在其输出251c处产生进一步的奇偶校验字P'。以对应于由校验位发生器210使用以产生奇偶校验字P的BCH编码的方式来产生进一步的奇偶校验字P'。因此,如果没有错误出现在奇偶校验字P中,并且没有错误出现在乘积C中,则进一步的奇偶校验字P'将等于奇偶校验字P。
比较模块252具有两个输入252a、252b以及连接到错误检测子电路250的输出250c的一位输出252c。两个输入252a、252b以相同的宽度分别连接到校验位发生模块251的输出251c以及错误检测子电路250的并行输入250b中的第二个。
比较模块252布置成接收进一步的奇偶校验字P'以及奇偶校验字P,并且在其输出252c处产生错误标记F。错误标记F指示是否已经检测到多个不同错误中的任意一个,所述多个不同错误包括在乘积C上的错误和在奇偶校验字P中的错误。
尽管可能有其他合适的布置,但在该实施方案中,比较模块252由异或模块253和评估模块254组成。
异或模块253具有两个并行输入253a、253b(每一个都为n-k位宽)以及相同宽度的并行输出253c,两个并行输入253a、253b分别连接到校验位发生模块251的输出251c以及错误检测子电路250的并行输入250b中的第二个。
异或模块253布置成接收奇偶校验字P和进一步的奇偶校验字P',并且通过对奇偶校验字P和进一步的奇偶校验字P'执行按位异或运算而在其输出253c处产生第三奇偶校验字P”。
评估模块254具有为n-k位宽的并行输入254a以及一位输出254c,并行输入254a连接到异或模块253的并行输出253c,一位输出254c连接到比较模块252的输出252c。
评估模块254布置成接收第三奇偶校验字P”,对其进行评估以便确定是否它的所有位都为逻辑0,并且在其输出254c处产生错误标记F。如果第三奇偶校验字P”的所有位都为零,则评估模块254将错误标记F的值设定为逻辑1,以指示在乘积C中或在奇偶校验字P中不存在错误,否则评估模块254将错误标记F的值设定为逻辑0,以指示已经检测到多个错误中的一个。
再次参照图3,位掩码子电路255具有两个输入255a、255b以及k位并行输出255c。两个输入255a、255b以相同的宽度分别连接到错误检测子电路250的输出250c以及校正发生器215的输出215c上。
位掩码子电路255布置成接收错误标记F和校正值E以及产物(produces),并且在其输出255c处产生掩码校正值E'。位掩码子电路255布置成如果将错误标记F设定为逻辑1(也即,如果没有检测到错误),则将掩码校正值E'的每一个位都设定成逻辑0,或者其设定每一个位的值,以便等于校正值E的各自的对应位。
应当理解,实际上,如果在例如乘积C中或在奇偶校验字P中没有检测到错误,则位掩码子电路255抑制校正值E。尽管可能有其他合适的布置,但是在该实施方案中,掩码校正值E'为对校正值E以及错误标记F的逻辑反转(也即,将逻辑1转换成逻辑0,反之亦然)执行按位AND运算的结果。
组合子电路220具有两个k位并行输入220a、220b以及k位并行输出220c,两个k位并行输入220a、220b分别连接到乘法子电路205的输出205c和位掩码子电路255的输出255c。
组合子电路220布置成接收掩码校正值E'和乘积C,并且在其输出220c处产生校正的乘积C'。尽管可能有其他合适的布置,但是在该实施方案中,组合子电路220由多个XOR门(未示出)组成,对于输出220c的每一个位有各自的一个。乘积C的每一位都经由XOR运算(通过各自的一个XOR门)与掩码校正值E'的对应位进行组合。
如果错误标记F被设定为逻辑0(也即,如果已经检测到错误),掩码校正值E'的值将等于校正值E的值。因此,对乘积C和掩码校正值E'执行的XOR运算能够使乘积C的错误位在校正的乘积C'内得到校正。
如果错误标记F被设定为逻辑1,则校正的乘积C'的值将与乘积C的值相同,这是因为掩码校正值E'的每一位将被设定为逻辑0。
输出使能子电路260具有两个一位输入260a、260b以及一位输出260c,两个一位输入260a、260b连接到电路的时钟并且连接到错误检测子电路250的输出250c。
输出使能子电路260布置成接收错误标记F和时钟信号CLK,并且在其输出260c处产生门控时钟信号ECLK。如果错误标记F被设定为逻辑0,则门控时钟信号ECLK将被设定为逻辑0。在该实施方案中,输出使能子电路260由AND门组成,其布置成在其输入260a、260b处接收错误标记F和时钟信号CLK,并且生成门控时钟信号ECLK作为其输出260c。
输出寄存器265具有k位输入265a、时钟输入265b以及k位输出265c,k位输入265a连接到组合子电路220的输出220c,时钟输入265b连接到输出使能子电路260的输出260c。
输出寄存器265布置成接收校正的乘积C'和门控时钟信号ECLK,并且响应于门控时钟信号ECLK的时序事件(例如,上升沿或下降沿)而在其输出265c处生成对应于校正的乘积C'的电路输出Cout。
参考图5的时间线500,在起始于时钟信号CLK的第一上升时钟沿(或者在时钟信号CLK中的任意其他时序事件,比如下降沿)的第一时间周期T检测之后,错误检测子电路250在其输出250c处生成错误标记F。在第一时间周期T检测结束之前,乘积子电路205将在其输出205c处已生成乘积C。
时钟信号CLK具有比第一时间周期T检测更长的时钟周期T时钟。
如果错误标记F被设定为逻辑1,则指示在乘积C中没有错误,在输出使能子电路260的输入260b处接收的时钟信号CLK中的上升沿(或者在时钟信号CLK中的任何其他时序事件)将使逻辑1值在输出使能子电路260的输出260c处产生,例如,其将在门控时钟信号ECLK中产生上升沿(或者对应于在时钟信号CLK中的时序事件的其他时序事件)。因此,如果错误标记F指示没有检测到错误时,则在大约等于时钟周期T时钟的周期之后,输出寄存器265将在其输出265c处产生对应于乘积C的电路输出Cout。
在起始于时钟信号CLK的上升时钟沿(或者在时钟信号CLK中的任何其他时序事件)的第二时间周期T校正之后,校正发生器215在其输出215c处产生校正输出E。第二时间周期T校正比第一时间周期T检测长,并且比时钟周期T时钟长。
在第二时间周期T校正的后面部分中,起始于当第一时间周期T检测结束时并且终止于当第二时间周期T校正结束时,乘法子电路205将在其输出205c处已产生乘积C,但是校正发生器215还没有在其输出215c处产生对应的校正输出E。因此,在乘积C中的任何错误都将不会在校正的乘积C'中进行校正,直到第二时间周期T校正之后,这是因为在此之前校正发生器215将不会产生对应的校正输出E。
输出使能子电路260布置成防止输出寄存器265产生对应于校正的乘积C'的电路输出Cout,直到在乘积C中检测到的错误已经在校正的乘积C'中被校正之后。在乘积C中的检测到的错误将导致在时钟周期T时钟结束之前错误标记F被设定为逻辑0,其反过来将门控时钟信号ECLK设定为逻辑0。因此,在时钟信号CLK中的接下来的上升沿(或者在时钟信号CLK中的其他时序事件)将不在输出使能子电路的输出260c处传播至门控时钟信号ECLK,其将保持在逻辑0,至少直到在时钟信号CLK中随后的上升沿(或者在时钟信号CLK中的其他时序事件)。这给了校正发生器215所需要的时间,以便在其输出215c处产生用于与乘积C进行组合的校正输出E,从而校正在其中检测到的错误。
因为时钟周期T时钟比第二时间周期T校正短,所以如果时钟周期T时钟与第二时间周期T校正相同或比第二时间周期T校正更长的话,则电路200有可能能够在给定的时间周期内产生比其本能够产生的更多的乘积结果。
本领域技术人员会期望时钟周期T时钟与第二时间周期T校正相同或比第二时间周期T校正更长,从而如果需要的话在任何时钟周期内,在乘积C中检测到的错误能够被校正。但是,通常错误相对稀少。通过使用比第二时间周期T校正更短的时钟周期T时钟,并且防止输出寄存器265在乘积C中已经检测到错误时更新其输出265c(为了允许产生校正输出E所需的额外时间),可以在给定的时间周期内产生更多的乘积结果。
通过实例的方式,将参照图6描述电路200的运算。
起初,在时钟信号clk的两个周期期间,电路200接收操作数A、B值(A1、B1和A2、B2),根据操作数A、B值产生乘积C的校正值(C1和C2)。在这两个周期期间,错误检测子电路250将标记F设定为逻辑0,以便指示没有检测到错误。
当在时钟信号clk的第三周期中乘积C的值(C3)是错误的时候,这是通过错误检测子电路250来检测的,错误检测子电路250将标记F设定为逻辑0。由于标记F被设定为逻辑0,因此输出使能子电路260将门控时钟eclk设定为逻辑0。
在时钟信号clk的接下来的上升沿处,做标记于第四周期的开始,标记F仍被设定为逻辑0,其防止了响应于时钟信号clk转变为逻辑1而门控时钟eclk被设定为逻辑1。其结果是,乘积C的错误的值(C3)没有在输出寄存器265的输出265c处产生。这为校正发生器215提供了其需要的时间以便产生合适的校正值E。随后,并且在第四周期结束之前,组合电路220接收对应的掩码校正值E',其与乘积C的错误的值(C3)进行组合以产生校正的乘积C'。
在时钟信号clk的接下来的(也即,第五)时钟周期,引入了操作数A、B的两个新值(A4、B4),其使得具有校正值(C4)的乘积C得以产生。由于在乘积C中已经检测出没有错误产生的时候,错误检测子电路250将标记F设定为逻辑1。由于时钟信号clk被设定为逻辑1,因此这导致门控时钟eclk变为逻辑1。门控时钟eclk从逻辑0到逻辑1的变化导致校正的乘积C'的值得以作为在输出寄存器265的输出265c处的电路输出Cout而产生。
在时钟信号clk的第六时钟周期处,乘积C的校正值(C4)作为在输出寄存器265的输出265c处的电路输出Cout而产生。
参照图7,根据本发明的第三实施方案的错误校正电路包括具有两个并行输入305a、305b以及输出305c的功能块或子电路305,两个并行输入305a、305b具有相等的宽度m,并且输出305c也具有相等的宽度m。功能块布置成在其输入305a、305b处接收各自的操作数A、B,并且对操作数执行功能以产生输出C。在该实施方案中,功能为相乘并且功能块305为乘法器,其与第一实施方案的相同。为了在功能块305的运算中检测并校正错误,电路进一步包括奇偶校验预测器子电路310和校正块或子电路315。奇偶校验预测器310具有两个并行输入310a、310b以及输出310c,两个并行输入310a、310b中的每一个具有与功能块的输入相同的宽度m,而输出310c的宽度为k。奇偶校验预测器310布置成在其输入处接收操作数A、B,并且根据它们产生奇偶校验码,其为应当作为对功能块305的输出执行的编码步骤的结果而得以产生的奇偶校验码的预测,如将在下面更加具体描述的。校正块315具有与功能块305的输出305c为相同宽度m的第一输入315a,以及与来自奇偶校验预测器310的输出为相同宽度k的第二输入315b,以及与功能块305的输出305c为相同宽度m的输出315c。校正块315布置成在其第一输入315a处接收通过功能块305输出的结果C,并且根据它产生奇偶校验码。奇偶校验预测器310布置成使得如果没有出现错误,则其产生的预测的奇偶校验码对于任意给定的操作数A、B将是一样的,正如在校正块315内所产生的。则校正块布置成将其从奇偶校验预测器310接收的奇偶校验码与其根据结果C产生的奇偶校验码进行比较,并且根据它们来在结果C中检测并定位错误,并且校正它们,从而产生校正的输出C'。
参照图8,现在将描述根据在校正块315内的功能块输出产生的并且通过奇偶校验预测器310预测的奇偶校验码。在该实施方案中,由功能块输出的结果C为包括20个位C0至C19的20位输出代码。一般地说,通过将结果位C0至C19分成第一组的集合(在这种情况下为四行,每一行有五位),并对于每一组或者行产生奇偶校验码,并且还将结果分为第二组的集合(在这种情况下为五列,每一列有四位),并对于每一组或者列产生奇偶校验码而生成奇偶校验码。能够以任何合适的方式生成对于每一个组的奇偶校验码,比如海明码或BCH码,其用于确定在组中错误的数量,而非在组中它们的位置。通过奇偶校验预测器输出的奇偶校验码包括奇偶校验码的集合,每一个都对应于对于在校正块315中位的组的其中一个产生的奇偶校验码的其中一个。通过将根据在校正块315内的输出C产生的奇偶校验码与在奇偶校验预测器310中产生的那些进行比较,校正块315能够确定在第一组的集合的每一个(也即,每一行)中错误的数量,以及在第二组的集合的每一个中(也即,在每一列中)错误的数量。根据这些数量,提供的错误的数量并不是非常大,错误的确切位置能够被确定。这是因为在输出中一行和一列的任何组合都唯一地识别一位。一旦已经定位了错误,则校正块布置成校正它们,以便产生校正的输出C'。
应当理解,校正块可以包括布置成执行已描述的每一个步骤的分开的子电路。在该实施方案中,它包括第一分配子电路315d、第二分配子电路315e、第一奇偶校验码产生子电路315f、第二奇偶校验码产生子电路315g、第一错误检测子电路315h、第二错误检测子电路315i、错误位置子电路315j以及错误检测子电路315k,其中,第一分配子电路315d布置成将输出位分配至第一组的集合,第二分配子电路315e布置成将输出位分配至第二组的集合,第一奇偶校验码产生子电路315f布置成产生用于第一组的集合的每一个的奇偶校验码,第二奇偶校验码产生子电路315g布置成产生用于第二组的集合的每一个的奇偶校验码,第一错误检测子电路315h布置成将第一奇偶校验码的集合与由奇偶校验预测器产生的对应的代码进行比较,并且确定在第一位组的集合的每一个中错误的数量,第二错误检测子电路315i布置成将第二奇偶校验码的集合与由奇偶校验预测器产生的对应的代码进行比较,并且确定在第二位组的集合的每一个中错误的数量,错误位置子电路315j布置成根据两个奇偶校验码的集合的比较识别在输出C中错误的位置,错误检测子电路315k布置成校正输出C以产生校正的输出C'。然而,应当理解,这些功能中的每一个可以不通过电路的分开的专用部分来执行,并且在其他实施方案中,子电路可以布置成以组合的形式执行这些功能中的两个或更多个。
此外,应当理解,当两个组的集合能够通过行和列的矩形表格而容易看出时,分配步骤仅需要将每个位分配至两个组:一个来自第一集合并且一个来自第二集合。例如,对于在图8中显示的分配,假设在输出中位C0至C19以数字顺序进行布置,则第一个五位能够分配至在第一集合中的第一组(对应于第一行),并且随后的五位的块能够分配至在第一集合中随后的组。然后,以第一位开始的每一个第五位能够分配至在第二集合中的第一组(对应于第一列),以第二位开始的每一个第五位能够分配至第二组等等。也应当理解,哪些位分配至哪些组并不是关键。考虑图8的表格格式,20位能够在表格的20个单元格中以任何方式布置,并且位仍然能够根据行和列而成组,尽管这可能与它们在输出中的位置没有规律的关系。
在该实施方案中,奇偶校验码利用简单的海明码和BCH码产生,所述海明码能够在每一列中检测两个错误,所述BCH码将在每一行中检测多达6个错误。为了更好地理解按行和按列编码,现在将以考虑到作为功能块的实例的20位的位并行有限域乘法器的实例电路更加详细地描述如通过校正块315执行的奇偶校验码过程。
使用海明码奇偶校验的错误检测
20位布置在如图8所示的四行和五列的表格中。输出C的20位以C0至C19的顺序进行识别,并且每一个都分配至如图8所示的表格中的位置。行利用海明码进行编码,并且具体地,每一行都以Ham(9,5)码编码。换言之,需要4位奇偶校验以在一行中检测两个错误(也即,至多两个位错误)。用于第一行的4个奇偶校验信息通过下面的表达式给出:
P1=C0·C2·C4 (1)
P2=C1·C2·C3·C4 (2)
P3=C0·C3·C4 (3)
P4=C1·C2·C4 (4)
类似地,每一行都单独地进行编码并且视为不同的码字,导致了四四-位的奇偶校验码,一个用于每一行,如图8所示。每一列都利用简单的奇偶校验进行编码。每两个位都通过产生列奇偶校验位CP来保护,如图8所示。第一列和第二列的列奇偶校验由如下面示出的等式来确定。其他三个列奇偶校验以与CP0至CP3完全相同的方式产生,如在下面中所表示的:
CP0=C0·C10 (5)
CP1=C5·C15 (6)
CP2=C1·C11 (7)
CP3=C6·C16 (8)
从等式(1)至等式(4)的等式集合(也即,用于行的错误检测代码)布置成检测多个错误的发生,在每一行中最多两个错误。类似地,对于每一列计算的等式(5)至等式(8)能够用于在每一列中检测最多两个错误的出现。根据用于列和行的错误检测代码,假如没有出现太多错误,则能够检测到错误的特定位或多个位。例如,如果在位C6中仅出现一个错误,则在一个列(列2)中将仅检测到一个错误,以及在一个行(行2)中检测到一个错误。既在行2又在列2的位因此能够被识别为错误的位,并且得以校正。这种行和列的使用,或者更一般地,两个不同组的集合在本文中是指如交叉奇偶校验误差校正。该技术能够校正的一些错误模式如图9所示。
奇偶校验预测器310可以简单地复制功能块305以及在校正块315中的子电路的结构,其将在输出中的位从功能块分配到两个组的集合,并且推导出用于那些组的奇偶校验码。然而,在该实施方案中,为了节省空间并简化电路,将奇偶校验预测器设计为根据系统输入A、B以最简单的方式推导奇偶校验码,而不推导作为中间步骤的结果C。由于结果C不需要具体地推导,因此这能够显著降低电路的大小。
多个错误的校正
以上说明解释了在第一组的集合(行)和第二组的集合(列)两者中是怎样检测错误的。但是当然,仅识别错误并不足以对它们进行校正。利用典型的错误校正代码,需要单独的进程(需要单独的电路子部分,通常称其为解码器)以便识别错误位的位置,并且对它们进行校正。
如上所述,在描述的系统中,可以利用相当简单的“交叉代码”而消除复杂的解码器,并且校正块包括简单的AND-XOR逻辑电路并且布置成使用简单的AND-XOR逻辑电路来执行校正。例如,参照图9A,其中在表格中位布置成与图8的位相同,假设位C0、C1、C5和C6是错误的。系统能够使用行1的海明码检测到在行1(C0和C2)中有两个错误的位,并且类似地,通过行2的海明码检测到在行2(C5和C6)中有两个错误。但是这些代码单独仅能够确定在行1和行2中的2位是错误的,并且不能确定它们的位置。为了找到在每一行中哪些位是错误的,将系统布置成使用列奇偶校验,如位C0由CP0进行保护,位C5由CP1进行保护。相似地,位C2和C7由CP2和CP3来进行保护。使用行和列奇偶校验两者的组合,将校正块315布置成确定哪些位是错误的。相似地,如果C3和C18是错误的,这两者能够通过该方法进行检测,如能够检测在位C12和C16中的错误。参照图9B、9C和9D,能够检测的其他组的位错误为:C1、C2、C5和C6;C11、C13和C17;C3,C7和C9;C2和C3;C6和C11;C12和C14;C0、C1、C2、C5、C6和C7;C12、C13、C14、C17、C18和C19。
参照图10,在进一步的实施方案中,功能块为64位有限域乘法器。在这种情况下,校正块布置成将表格定义为具有四行的16位。在该实施方案中,校正块布置成使用BCH码来检测在每一行中错误的数量(行错误检测),这是因为相较于海明码,其能够在每一行中检测更多数量的错误。图10显示了在64位有限域乘法器中错误的实例模式,其能够利用在每一行中的BCH解码以及在每一列中简单的奇偶校验编码进行定位。例如,利用BCH(3,1,16)码,我们能够在容易地在每一行检测多至6个错误,因此与简单的海明码相比明显地提高了被校正的位的数量。
使用BCH码奇偶校验进行错误检测
现在将解释用于如图8所示的相同的20位乘法器的基于位并行BCH码的多错误检测的基本原理和设计。本领域技术人员应当理解,原理能够扩展至64位乘法器。让我们考虑BCH(15,5,7)的简单例子,其中n=15并且k=5。在该实例中,我们考虑在GF(25)上的位并行PB乘法器。让我们考虑第一个五位的行作为BCH码。则,由于n=15并且k=5,获得了如下表达式:
M(x)=C4x4+C3x3+C2x2+C1x+C0(9)
xn-kM(x)=xn-k(C4x4+C3x3+C2x2+C1x+C0)
=C4x14+C3x13+C2x12+C1x11+C0x10 (10)
奇偶校验校验位通过以下生成:
P(x)=xn-kM(x)modg(x) (11)
让我们考虑生成多项式为g(x)=x10+x8+x5+x4+x2+x+1。则,用于针对6位检测的第一行的奇偶校验表达式将为:
P(x)=p9x9+p8x8+p7x7+p6x6+p5x5+p4x4+p3x3+p2x2+p1x1+p0(12)
如果我们考虑3位校正BCH码,其能够在单一码字中检测6位错误。因此为了在5位码中检测多个错误,我们需要十个奇偶校验位。十个奇偶校验位通过以下给出:
p0=c0+c2+c4, p0=d0+d2+d4+e0+e1+e2+e3,
p1=c0+c1+c2+c3+c4, p1=d0+d1+d2+d3+d4,
p2=c0+c1+c3, p2=d0+d1+d3+e1+e2+e3,
p3=c1+c2+c4, p3=d1+d2+d4+e0+e2+e3,
p4=c0+c3+c4, p4=d0+d3+d4+e0+e2,
p5=c0+c1+c2, p5=d0+d1+d2+e2,
p6=c1+c2+c3, p6=d1+d2+d3+e0+e3,
p7=c2+c3+c4, p7=d2+d3+d4+e1,
p8=c0+c2+c3, p8=d0+d2+d3+e0+e1+e3,
p9=c1+c3+c4, p9=d0+d3+d4+e0+e2,
其中,dx和ex为乘法器的内部乘积项,如在Reyhani-Masoleh和M.A.Hasan的“LowComplexity Bit Parallel Architectures for Polynomial Basis Multiplicationover GF(2m),”IEEE Trans.Computers,第53卷,第8期,第945–959页,2004中所定义的。
用于基于BCH码的交叉奇偶校验码的实例模式如图11所示。系统布置成在每一个16位行中使用6位错误可检测BCH码。在每一个4位列中,其布置成使用简单的奇偶校验码(比如在基于海明的方案的情况下)。因此,其能够在每一列中检测2个错误并且在每一行上检测6个错误。这意味着该技术能够校正多至某12位的错误。一些模式实例在图11中颜色被高亮。类似的模式指示在相同组中的多个错误。
在数字串行乘法器上的交叉代码
现在将针对更加实用的乘法器(比如字级乘法器或数字串行乘法器)考虑提出的交叉奇偶校验方案。出于试验的目的,我们已经考虑了163位数字串行乘法器,所述163位数字串行乘法器为用于确保通过NIST和FIPS设定的ECC运算的标准大小乘法器。这被认为是第一次尝试综合163位多错误可校正的数字串行乘法器。这是因为已知的错误可检测并可校正技术更适合于位并行乘法器,因为它们由于与实际乘法器逻辑电路并行运行的并行复杂误差检测、解码和校正部件而给出了巨大的面积开销。
参照图12,对于这样的数字串行乘法器结构评估提出的方案的复杂度,以便更好地理解对于10位、15位、20位、32位、48位、64位和90位乘法器大小的空间需求。
对于该试验的数字串行乘法电路利用单个累加器乘法器结构进行设计。乘法算法如下所示:
输入:A(x)=∑m-1
i=0ai.xi,B(x)=∑m-1
i=0bi.xi,P(x)。
输出:C(x)=A(x).B(x)modP(x)。步骤1:C=0。
步骤2:对于i=0到执行步骤3:C=Bi.A+C。
步骤4:A=A.áD
步骤5:结束
步骤6:返回(C mod P(x))
试验结果
基于海明和BCH的码的行为模型是利用VHDL来执行的,并且利用Modelsim仿真器针对它们的功能校正进行检查。针对包括10、15、20、32、48、64和90位乘法器结构的各种大小的位并行乘法器检查方案并进行验证。然后,该设计利用Synopsys设计编译器进行综合。这些设计在面积、功率上的变化使用180nm和90nm TSMC技术进行估计。
所提出的实施的面积和功率分析
图12显示了各种大小的位并行乘法器的空间消耗。图13和图14显示了在180nm和90nm两种技术中错误校正块(包括奇偶校验发生器)的面积。从图13来看明显的是,基于BCH的技术的空间消耗仅仅略高于基于海明的交叉码。这是因为这样的事实:两种代码的面积密集解码器部分被基于简单的交叉奇偶校验的错误检测器和校正器代替。
基于提出的交叉奇偶校验方法的面积开销在表格I中进行了描绘。对于试验分析观察到的是,针对基于BCH和海明的方案的面积开销是非常接近的。对于很简单的10位乘法器,面积开销仅仅为142%。随着乘法器大小的增加,面积开销的百分比因奇偶校验产生电路和校正逻辑电路而变得更小,并且对于能够校正多个错误的90位乘法器最终仅为101%。与仅基于单个错误校正代码的典型多错误校正方案相比这是非常小的。虽然设计并没有完全处理所有错误模式,但将发生在提出方案的范围之外的模式并因此不能得到校正是不太可能的。这是因为这样的事实:能够导致多个位翻转的辐射粒子干扰的概率例如为在1百万个时钟周期内仅仅为1。因此,提出的方案能够提供具有低至101%的面积开销的优异的错误掩码能力。
表格I
各种乘法器大小的面积开销的比较
位的数量 海明 BCH
10 142% 160%
15 123% 152%
20 121% 140%
32 108% 120%
48 105% 116%
64 104% 114%
90 101% 106%
表格II将我们的交叉奇偶校验码方法与在公开的文献中可得的其他错误校正方案进行比较,在该例子中为A.Reyhani-Masoleh和M.A.Hasan的“Low Complexity BitParallel Architectures for Polynomial Basis Multiplication over GF(2m),”IEEETrans.Computers,第53卷,第8期,第945–959页,2004;J.Mathew,J.Singh,A.M.Jabir,M.Hosseinabady,和D.K.Pradhan的“Fault Tolerant Bit Parallel Finite FieldMultipliers using LDPC Codes”Proceedings of the IEEE International Symposiumon Circuits and Systems,2008,第1684–1687页;以及M.Poolakkaparambil,J.Mathew,A.M.Jabir,D.K.Pradhan和S.P.Mohanty的“BCH Code Based Multiple Bit ErrorCorrection in Finite Field Multiplier Circuits,”Proceedings of the 12th IEEEInternational Symposium on Quality Electronic Design,2011,第615–620页。
为了进行公平的比较,我们已经使用32位乘法器。其显示了我们的方法与其他众所周知的设计相比,能够利用更少的面积开销校正更多数量的错误。
表格II
对于32位乘法器与其他方法的比较
特性 Masoleh等人 Mathew等人 BCH 交叉奇偶校验(海明) 交叉奇偶校验(BCH)
2004 2008[12]
已经分析了提出的方案的功率损耗。图15和图16比较了基于海明和BCH的设计的功率消耗。由于他们具有可比较的面积开销,因此在两个方案中功率损耗也大致相似。
当如上描述的图7至图16的实施方案与电路设计相关时,在其他实施方案中,系统为在其上传输通信的通道,并且输出是如从通道所接收的通信。奇偶校验预测器布置在通道的传输端,并且布置成在传输之前根据通信产生奇偶校验码,并且附上产生的奇偶校验码以利用通信进行传输。校正块布置在系统的接收器端,并且布置成接收在通道上的消息连同来自奇偶校验预测器的奇偶校验码。然后,校正块能够对接收到的消息执行以上描述的校正步骤。在其他情况下,系统可以为存储器电路,在这种情况下输出可以为从存储器电路中重新得到的数据,并且通过奇偶校验预测器产生的奇偶校验码可以存储在存储器中并利用数据重新得到,使得校正电路能够对重新得到的数据执行校正步骤。
前面的实施方案仅通过实例的方式进行了描述;本发明的范围由所附权利要求限定。

Claims (11)

1.一种错误校正电路,布置成接收时钟信号,包括:
组件,所述组件布置成根据第一输入和第二输入产生第一输出;
错误检测器,所述错误检测器布置成基于所述第一输出、所述第一输入和所述第二输入产生错误标记,所述错误标记指示在所述第一输出中是否已经检测到错误;
校正发生器,所述校正发生器适合于基于所述第一输出、所述第一输入和所述第二输入,在起始于在时钟信号中的时序事件的第一时间周期之后产生校正输出;以及
输出发生器,所述输出发生器布置成在起始于在时钟信号中的时序事件的第二时间周期之后产生错误校正电路的输出,
其中,如果所述错误标记指示在所述第一输出中已经检测到错误,则所述第二时间周期比所述第一时间周期长,或者如果所述错误标记指示在所述第一输出中没有检测到错误,则所述第二时间周期不比所述第一时间周期长,
并且其中,如果所述错误标记指示在所述第一输出中已经检测到错误,则所述错误校正电路的输出包括所述第一输出和所述校正输出的组合,从而在所述第一输出中检测到的错误得以校正,或者如果所述错误标记指示在所述第一输出中未检测到错误,则所述错误校正电路的输出直接对应于所述第一输出。
2.根据权利要求1所述的电路,其中所述输出发生器包括具有输出的输出寄存器,所述输出寄存器的输出为所述错误校正电路的输出,并且其中所述输出发生器布置成当所述错误标记指示在所述第一输出中已经检测到错误时,在更新其输出时对所述输出寄存器进行延迟,从而使得所述第二时间周期比所述第一时间周期长。
3.根据权利要求2所述的电路,其中所述输出发生器包括输出使能组件,所述输出使能组件布置成基于所述时钟信号和所述错误标记产生门控时钟,并且其中所述输出寄存器在其时钟输入处接收所述门控时钟,从而在所述错误标记指示在所述第一输出中已经检测到错误时,在更新其输出时对所述输出寄存器进行延迟。
4.根据权利要求1或权利要求2所述的电路,进一步包括校验位发生器,
其中所述校验位发生器布置成基于所述第一输入和所述第二输入产生至少一个校验位,以及
其中所述错误检测器和所述校正发生器布置成基于所述第一输出和所述至少一个校验位,分别产生所述错误标记和所述校正输出。
5.根据权利要求4所述的电路,其中所述错误检测器布置成基于第一输出和至少一个校验位产生所述错误标记,所述错误标记指示所述错误检测器是否已经检测到所述错误检测器布置成检测的多个不同错误中的任意一个,所述多个不同错误包括在所述第一输出中的错误和在所述至少一个校验位中的错误。
6.根据权利要求4所述的电路,其中所述校正发生器适合于基于所述第一输出和所述至少一个校验位产生校正输出,所述校正输出适合于校正多个不同错误中的任意一个,所述多个不同错误包括在所述第一输出中的错误和在所述至少一个校验位中的错误。
7.根据权利要求4所述的电路,其中所述校验位发生器布置成根据所述第一输入和所述第二输入直接产生所述至少一个校验位,而不单独产生所述第一输出。
8.根据权利要求1或权利要求2所述的电路,其中所述校正发生器布置成通过产生错误位置多项式并接着搜索所述错误位置多项式的根来产生所述校正输出,其中所述校正发生器仅搜索对应于所述第一输出的根。
9.根据权利要求1或权利要求2所述的电路,其中布置成产生所述第一输出的所述组件布置成通过对所述第一输入和所述第二输入执行算术运算而产生所述第一输出。
10.根据权利要求9所述的电路,其中所述算术运算为有限域算术运算。
11.根据权利要求9所述的电路,其中所述算术运算为在伽罗瓦域GF(2k)上的乘法,其中,k表示第一输入和第二输入的位的数量。
CN201280052786.0A 2011-08-26 2012-08-10 数字错误校正 Active CN103890732B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GBGB1114831.9A GB201114831D0 (en) 2011-08-26 2011-08-26 Circuit with error correction
GB1114831.9 2011-08-26
US201261608694P 2012-03-09 2012-03-09
US61/608,694 2012-03-09
PCT/GB2012/051953 WO2013030528A2 (en) 2011-08-26 2012-08-10 Digital error correction

Publications (2)

Publication Number Publication Date
CN103890732A CN103890732A (zh) 2014-06-25
CN103890732B true CN103890732B (zh) 2017-08-22

Family

ID=44838816

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280052786.0A Active CN103890732B (zh) 2011-08-26 2012-08-10 数字错误校正

Country Status (9)

Country Link
US (1) US9645886B2 (zh)
EP (2) EP2748707B1 (zh)
JP (2) JP2014525705A (zh)
KR (1) KR102015148B1 (zh)
CN (1) CN103890732B (zh)
CA (1) CA2846292C (zh)
ES (1) ES2552305T3 (zh)
GB (1) GB201114831D0 (zh)
WO (1) WO2013030528A2 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9319179B1 (en) * 2013-04-09 2016-04-19 Marvell International Ltd. Methods and apparatus for generating expanded code words to support error correction in a data communication system
DE102013219088B9 (de) * 2013-09-23 2018-07-19 Infineon Technologies Ag Schaltungsanordnung und Verfahren zur Realisierung von Prüfbitkompaktierung für Cross-Parity-Codes
US9800271B2 (en) * 2015-09-14 2017-10-24 Qualcomm Incorporated Error correction and decoding
KR101670615B1 (ko) * 2015-12-03 2016-10-28 한양대학교 산학협력단 블록 데이터 어레이를 이용한 오류 정정 장치 및 방법
EP3361637A1 (en) * 2017-02-09 2018-08-15 Nxp B.V. A method, and a synchronous digital circuit, for preventing propagation of set-up timing data errors
CN107423153B (zh) * 2017-07-24 2020-01-21 上海交通大学 一种用于错误检测与校正技术的校正电路
KR20200015999A (ko) * 2018-08-06 2020-02-14 에스케이하이닉스 주식회사 예측 오류 정정 장치, 이의 동작 방법 및 이를 이용하는 메모리 시스템
CN109361502B (zh) * 2018-12-07 2022-03-15 上海爱信诺航芯电子科技有限公司 一种抵御能量分析攻击的解密方法及解密电路
WO2023080892A1 (en) * 2021-11-04 2023-05-11 Pqsecure Technologies, Llc Method and architecture for computing extension field arithmetic in a cryptosystem

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1193883A (zh) * 1997-02-21 1998-09-23 松下电器产业株式会社 具有误差校正功能的差分检测器
CN1991801A (zh) * 2005-11-30 2007-07-04 株式会社东芝 访问控制设备、方法和存储器访问控制设备、方法
US20070198896A1 (en) * 2005-11-28 2007-08-23 Stmicroelectronics Sa Decoding with a concatenated error correcting code
CN101258471A (zh) * 2005-07-15 2008-09-03 Gsip有限责任公司 闪存纠错
CN101374217A (zh) * 2007-08-22 2009-02-25 联咏科技股份有限公司 具有错误校正装置的数据限幅器

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3771126A (en) * 1972-04-10 1973-11-06 Bell Telephone Labor Inc Error correction for self-synchronized scramblers
US4241446A (en) * 1978-10-16 1980-12-23 Honeywell Information Systems Inc. Apparatus for performing single error correction and double error detection
US4277844A (en) * 1979-07-26 1981-07-07 Storage Technology Corporation Method of detecting and correcting errors in digital data storage systems
JPS6276825A (ja) * 1985-09-30 1987-04-08 Hitachi Ltd 符号誤り訂正方法
JPS62234426A (ja) * 1986-04-04 1987-10-14 Sony Corp エラ−訂正方法
US4833678A (en) * 1987-07-22 1989-05-23 Cyclotomics, Inc. Hard-wired serial Galois field decoder
ATE216096T1 (de) * 1994-02-22 2002-04-15 Siemens Ag Flexible fehlerkorrekturcode/paritätsbit- architektur
US5774481A (en) * 1995-03-31 1998-06-30 International Business Machines Corporation Reduced gate error detection and correction circuit
US5790567A (en) * 1995-08-28 1998-08-04 California Institute Of Technology Parallel processing spacecraft communication system
KR100287018B1 (ko) * 1998-08-07 2001-04-16 윤종용 에러 정정 회로를 구비한 반도체 메모리 장치
US6637002B1 (en) * 1998-10-21 2003-10-21 Maxtor Corporation Decoder for error correcting block codes
KR100292788B1 (ko) * 1998-12-31 2001-06-15 장근호 에러검출 및 정정회로
US6738942B1 (en) * 2000-06-02 2004-05-18 Vitesse Semiconductor Corporation Product code based forward error correction system
JP3752995B2 (ja) * 2000-09-27 2006-03-08 日本ビクター株式会社 情報記録再生装置
US6732325B1 (en) * 2000-11-08 2004-05-04 Digeo, Inc. Error-correction with limited working storage
US20030041300A1 (en) * 2001-08-23 2003-02-27 Koninklijke Philips Electronics N.V. Universal device for processing Reed-Solomon forward error-correction encoded messages
US20030061558A1 (en) * 2001-09-25 2003-03-27 Fackenthal Richard E. Double error correcting code system
CN1647390A (zh) * 2002-04-18 2005-07-27 皇家飞利浦电子股份有限公司 用于编码的信号、存储介质、方法和设备,用于解码的方法和设备
US7266749B1 (en) * 2002-06-27 2007-09-04 Legend Silicon Corporation Trellis construction based on parity check matrix for BCH code
US7403964B2 (en) * 2002-10-22 2008-07-22 Broadcom Corporation Galois field multiplier array for use within a finite field arithmetic unit
US7278080B2 (en) 2003-03-20 2007-10-02 Arm Limited Error detection and recovery within processing stages of an integrated circuit
US8832523B2 (en) * 2006-03-03 2014-09-09 Ternarylogic Llc Multi-state symbol error correction in matrix based codes
US7546510B2 (en) * 2003-12-30 2009-06-09 Sandisk Il Ltd. Compact high-speed single-bit error-correction circuit
US20060256615A1 (en) 2005-05-10 2006-11-16 Larson Thane M Horizontal and vertical error correction coding (ECC) system and method
JP2007013806A (ja) 2005-07-01 2007-01-18 Sony Corp 誤り訂正処理装置
EP1934745A2 (en) * 2005-09-27 2008-06-25 Nxp B.V. Error detection / correction circuit as well as corresponding method
US8316277B2 (en) * 2007-12-06 2012-11-20 Fusion-Io, Inc. Apparatus, system, and method for ensuring data validity in a data storage process
JP2009301194A (ja) * 2008-06-11 2009-12-24 Toshiba Corp 半導体記憶装置の制御システム
US8464141B2 (en) * 2008-08-13 2013-06-11 Infineon Technologies Ag Programmable error correction capability for BCH codes
US8639960B2 (en) * 2011-05-27 2014-01-28 Arm Limited Verifying state integrity in state retention circuits

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1193883A (zh) * 1997-02-21 1998-09-23 松下电器产业株式会社 具有误差校正功能的差分检测器
CN101258471A (zh) * 2005-07-15 2008-09-03 Gsip有限责任公司 闪存纠错
US20070198896A1 (en) * 2005-11-28 2007-08-23 Stmicroelectronics Sa Decoding with a concatenated error correcting code
CN1991801A (zh) * 2005-11-30 2007-07-04 株式会社东芝 访问控制设备、方法和存储器访问控制设备、方法
CN101374217A (zh) * 2007-08-22 2009-02-25 联咏科技股份有限公司 具有错误校正装置的数据限幅器

Also Published As

Publication number Publication date
US20140229786A1 (en) 2014-08-14
ES2552305T3 (es) 2015-11-27
JP6259537B2 (ja) 2018-01-10
US9645886B2 (en) 2017-05-09
EP2975522A3 (en) 2016-03-02
GB201114831D0 (en) 2011-10-12
CA2846292A1 (en) 2013-03-07
WO2013030528A3 (en) 2013-08-29
EP2748707B1 (en) 2015-10-07
KR102015148B1 (ko) 2019-08-27
EP2748707A2 (en) 2014-07-02
KR20140074305A (ko) 2014-06-17
CN103890732A (zh) 2014-06-25
JP2014525705A (ja) 2014-09-29
CA2846292C (en) 2020-10-06
EP2975522A2 (en) 2016-01-20
WO2013030528A2 (en) 2013-03-07
JP2017118563A (ja) 2017-06-29

Similar Documents

Publication Publication Date Title
CN103890732B (zh) 数字错误校正
Tomashevich et al. Protecting cryptographic hardware against malicious attacks by nonlinear robust codes
Reviriego et al. A class of SEC-DED-DAEC codes derived from orthogonal latin square codes
Valinataj Fault-tolerant carry look-ahead adder architectures robust to multiple simultaneous errors
Namba et al. A single-bit and double-adjacent error correcting parallel decoder for multiple-bit error correcting BCH codes
Demirci et al. Implementing double error correction orthogonal Latin squares codes in SRAM-based FPGAs
Fu et al. Burst error detection hybrid ARQ with crosstalk-delay reduction for reliable on-chip interconnects
Dong et al. A universal, low-delay, SEC-DEC-TAEC code for state register protection
Gao et al. An efficient fault-tolerance design for integer parallel matrix–vector multiplications
Mădălin et al. Unidirectional error detection, localization and correction for DRAMs: Application to on-line DRAM repair strategies
Sundary et al. Multiple error detection and correction over GF (2 m) using novel cross parity code
Caplan et al. Trade-offs in execution signature compression for reliable processor systems
Liu et al. Fault secure encoder and decoder designs for matrix codes
Zhang et al. A Hybrid Fault Tolerant Approach for AES.
CN103853661A (zh) 基于加权Merkle树实现的空间抗辐照故障检测方法
Poolakkaparambil et al. A dynamically error correctable bit parallel Montgomery multiplier over binary extension fields
Bhanumathi et al. VLSI Architecture for Error Detection and Correction Based on XOR Against Multiple Cell Upsets with Reduced Redundant Bits
Mera et al. Area, throughput, and power trade-offs for FPGA-and ASIC-based execution stream compression
Sau et al. Correction of MEU errors in AES using multi bit errors correction technique
Asha et al. Implementation of Sha-3 for Security and Error Detection and Correction Mechanism to Enhance Memory Reliabilty
Srinivasan et al. Evaluation of error detection strategies for an fpga-based self-checking arithmetic and logic unit
Poolakkaparambil et al. A Low-Complexity Multiple Error Correcting Architecture Using Novel Cross Parity Codes Over GF $(2^{m}) $
Nabipour et al. High-Speed Area-Efficient Hardware Architecture for the Efficient Detection of Faults in a Bit-Parallel Multiplier Utilizing the Polynomial Basis of GF (2m)
Ahir Lightweight architectures for reliable and fault detection Simon and Speck cryptographic algorithms on FPGA
Ilayaranimangammal et al. Exposure and expulsion the soft errors in digital systems using redundancy techniques

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