KR102015148B1 - 디지털 에러보정 - Google Patents

디지털 에러보정 Download PDF

Info

Publication number
KR102015148B1
KR102015148B1 KR1020147007752A KR20147007752A KR102015148B1 KR 102015148 B1 KR102015148 B1 KR 102015148B1 KR 1020147007752 A KR1020147007752 A KR 1020147007752A KR 20147007752 A KR20147007752 A KR 20147007752A KR 102015148 B1 KR102015148 B1 KR 102015148B1
Authority
KR
South Korea
Prior art keywords
output
error
correction
bit
input
Prior art date
Application number
KR1020147007752A
Other languages
English (en)
Other versions
KR20140074305A (ko
Inventor
마헤쉬 풀락카-파람빌
아부살레흐 자비르
짐슨 매튜
디라지 케이 프라드한
Original Assignee
옥스퍼드 브룩스 유니버시티
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 옥스퍼드 브룩스 유니버시티 filed Critical 옥스퍼드 브룩스 유니버시티
Publication of KR20140074305A publication Critical patent/KR20140074305A/ko
Application granted granted Critical
Publication of KR102015148B1 publication Critical patent/KR102015148B1/ko

Links

Images

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 클록신호를 수신하는 에러보정회로를 제공하는 바, 이 회로가 제1 입력과 제2 입력으로부터 제1 출력을 발생하는 구성요소; 제1 출력, 제1 입력 및 제2 입력에 기초하여, 제1 출력에서 에러가 검출되었는지의 여부를 나타내는 에러 플래그를 발생하는 에러검출기; 제1 출력, 제1 입력 및 제2 입력에 기초하여, 클록신호의 타이밍 이벤트로 시작하는 제1 시간대 이후에 보정출력을 발생하기에 적합한 보정발생기와; 클록신호의 타이밍 이벤트로 시작하는 제2 시간대 이후에 에러-보정출력을 발생하기에 적합한 출력발생기를 포함한다. 만약 에러 플래그가 제1 출력에서 에러가 검출되었음을 나타내는 경우 제2 시간대가 제1 시간대 보다 길 것이다. 그렇지 않으면, 제2 시간대는 제1 시간대 보다 길지 않다. 만약 에러 플래그가 제1 출력에서 에러가 검출되었음을 나타내는 경우 에러-보정회로의 출력은 제1 출력과 보정출력의 조합을 포함함으로서 제1 출력에서 검출된 에러가 보정된다. 그렇지 않으면, 에러-보정회로의 출력은 제1 출력과 직접 일치할 것이다.

Description

디지털 에러보정 {DIGITAL ERROR CORRECTION}
본 발명은 에러보정(error correction)에 관한 것이다. 본 발명은 예를 들어 산술연산(arthmetic operations)을 수행하기 위한 회로에서 에러내성회로(error tolerant circuit)의 설계에 적용되는 것이나 다른 형태의 회로에도 적용된다. 또한 본 발명의 일부 관점은 통신 및 메모리 디자인의 에러보정과 같은 다른 영역에도 적용된다.
근래의 디지털회로는 점점 대형화되고 복잡해지고 있어 다양한 이유에서 점점 에러에 영향을 받기 쉽게 된다. 예를 들어, 회로크기의 축소와 데이터를 표현하는데 사용되는 낮은 전압은 일반적으로 에러의 발생기회를 증가시킨다. 예를 들어 에러는 회로가 사용되는 환경에서 회로에서 비트-플립(bit-flips)의 원인이 되도록 하는 고에너지입자의 결과 또는 단순한 제조상 에러의 결과로서 발생할 수 있다. 회로에서 에러를 유도하기 위한 의도적인 시도로 회로에 대한 고에너지입자의 충격은 특히 암호화(cryptography)에서 점점 에러의 소스가 될 수 있다. 따라서 디지털회로에서 에러의 검출 및/또는 보정은 점점 중요하게 된다.
한 예로서, 갈로아필드(Galois fields) GF(2k) 에서의 연산과 같은 유한체 연산(finite field arithmetic)이 암호화를 포함하는 다양한 분야에 사용된다. 암호화에서, 예를 들어, 특히 회로에서 고장의 원인이 되는 비밀정보를 알 수 있는 반면에 암호화작업을 수행할 수 있게 때문에 폴트 톨러런트 회로(fault tolerant circuit)가 바람직하다. 암호화를 위한 폴트 톨러런스 회로를 얻기 위하여, 동시에러검출과 보정능력을 갖는 유한체 승산회로가 제안되었다. 그러나, 이들은 너무 크고 단일에러만을 보정할 수 있을 뿐이다.
한 관점에 따라서, 본 발명은 제1 입력 및 제2 입력으로부터 제1 출력을 발생하는 구성요소; 제1 출력, 제1 입력 및 제2 입력에 기초하여, 내부의 에러를 보정하기 위하여 제1 출력과 조합하기에 적합한 보정출력을 발생하는 보정발생기; 보정출력과 제1 출력을 조합하여 제1 출력내의 에러가 보정된 제2 출력을 생성하는 콤바이너(combiner)를 포함하는 에러보정, 또는 에러내성 회로를 제공한다. 보정발생기는 BCH 디코딩을 이용하여 보정출력을 발생토록 하는 것이 좋다. BCH 코딩 및 디코딩의 이용은 출력을 발생할 수 있도록 구성된 회로구성요소의 다중에러를 보정하는데 놀랍고도 효과적인 방법이다.
선택적으로, 회로가 하나 이상의 입력, 예를 들어 제1 및 제2 입력을 수신하고 이로부터 구성요소에 의한 제1 결과의 발생과 병행하여 보정출력을 발생할 수 있으며, 이로써 하나 이상의 입력이 이들이 수신시에 함께 결합되는 에러보정데이터를 가지지 않음에도 불구하고 구성요소에 의하여 제1 결과에 주입된 에러가 보정될 수 있다. 일부의 경우에 있어서, 회로는 '연동하여(on the fly)' 보정데이터를 발생하고, 일부의 예에서는 하나 이상의 입력이 구성요소에 의하여 수신되는 동일한 클록주기에서 제1 결과를 보정할 수 있다.
선택적으로, 회로는 체크-비트 발생기(chech-bit generator)를 더 포함하고, 이러한 체크-비트 발생기는 제1 입력과 제2입력에 기초하여 적어도 하나의 체크 비트를 발생할 수 있게 되어 있고, 보정발생기는 제1 결과와 상기 적어도 하나의 체크 비트에 기초하여 보정출력을 발생할 수 있게 되어 있다.
선택적으로, 체크-비트 발생기는 별도로 제1 결과를 발생함이 없이 직접 제1 입력과 제2 입력으로부터 상기 적어도 하나의 체크 비트를 발생할 수 있게 되어 있다. 이는 체크-비트 발생기의 설계를 단순화할 수 있도록 하는데 도움이 된다.
선택적으로, 에러 검출기는 제1 결과와 적어도 하나의 체크 비트에 기초하는 에러 플래그를 발생할 수 있게 되어 있고, 에러 플래그는 에러 검출기가 검출을 위하여 배치된 다수의 상이한 에러 중의 어느 하나를 검출하는 지의 여부를 나타내고, 다수의 상이한 에러는 제1 출력내의 에러와 적어도 하나의 체크 비트의 에러를 포함하는 다수의 상이한 에러 중의 어느 하나를 검출할 수 있게 되어 있다.
선택적으로, 보정발생기는 제1 출력과 적어도 하나의 체크 비트에 기초하여 보정출력을 발생하기에 적합하고, 보정출력은 다수의 상이한 에러 중에서 어느 하나를 보정하기에 적합하며, 다수의 상이한 에러는 제1 출력내의 에러와 적어도 하나의 체크 비트내의 에러를 포함한다.
선택적으로, 보정발생기는 에러위치다항식을 발생하고 이러한 에러위치다항식의 근을 검색하여 보정출력을 발생할 수 있도록 구성되고, 보정발생기는 제1 결과에 일치하는 근(roots) 만을 검색한다. 이는 보정발생기의 크기를 최소하는데 충분히 도움을 줄 것이다.
선택적으로, 제1 출력을 발생할 수 있게 된 구성요소는 제1 및 제2 입력에서 산술연산을 수행함으로서 제1출력을 발생할 수 있게 되어 있다.
선택적으로, 이러한 산술연산은 갈로아필드 GF (2 k ) 에서의 연산과 같은 유한체 연산이다.
다른 관점에서, 본 발명은 클록신호를 수신하는 에러보정회로를 제공하는 바, 이 회로가 제1 입력과 제2 입력으로부터 제1 출력을 발생하는 구성요소; 제1 출력, 제1 입력 및 제2 입력에 기초하여, 제1 출력에서 에러가 검출되었는지의 여부를 나타내는 에러 플래그를 발생하는 에러검출기; 제1 출력, 제1 입력 및 제2 입력에 기초하여, 클록신호의 타이밍 이벤트(timing event)로 시작하는 제1 시간대 이후에 보정출력을 발생하기에 적합한 보정발생기와; 클록신호의 타이밍 이벤트로 시작하는 제2 시간대 이후에 에러-보정출력을 발생하기에 적합한 출력발생기를 포함한다. 만약 에러 플래그가 제1 출력에서 에러가 검출되었음을 나타내는 경우 제2 시간대가 제1 시간대 보다 길 것이다. 그렇지 않으면, 제2 시간대는 제1 시간대 보다 길지 않다. 만약 에러 플래그가 제1 출력에서 에러가 검출되었음을 나타내는 경우 에러-보정회로의 출력은 제1 출력과 보정출력의 조합을 포함함으로서 제1 출력에서 검출된 에러가 보정된다. 그렇지 않으면, 에러-보정회로의 출력은 제1 출력과 직접 일치할 것이다.
본 발명의 이러한 관점에 따른 회로는 통신, 메모리 및 기타 에러내성회로 설계 등의 다른 분야에 사용될 수 있다. 이들은 예를 들어 암호, 통신 또는 메모리 시스템에 의하여 데이터가 처리되는 속도를 높이는데 사용될 수 있다.
선택적으로, 출력발생기는 출력을 갖는 출력레지스터를 포함하고, 출력레지스터의 출력은 에러-보정회로의 출력이며, 출력발생기는 에러 플래그가 제1출력에서 에러가 검출되었음을 나타낼 때 출력레지스터가 그 출력을 업데이트시키는 것을 지연할 수 있게 되어 있어 제2 시간대가 제1 시간대 보다 길어지도록 한다.
선택적으로, 출력발생기는 클록신호와 에러 플래그에 기초하여 게이트 클록(gated clock)을 발생하는 출력 인에이블 구성요소(output enable component)를 포함하고, 출력레지스터는 그 클록입력에서 게이트 클록을 수신함으로서 에러 플래그가 제1 출력에서 에러가 검출되었음을 나타낼 때 출력레지스터가 그 출력을 업데이트하는 것을 방지한다.
예를 들어, 수신된 클록신호는 제2 시간대 보다 작은 일정기간을 가지고, 게이트 클록은 제1 출력에서 에러가 검출될 때까지 수신된 클록신호와 거의 동일한 기간을 가질 것이며, 이러한 싯점에서 게이트 클록의 적어도 하나의 기간은 보정발생기에서 적당한 보정출력을 발생하기 위한 연장시간을 주기 위하여 연장된다.
선택적으로, 이 회로는 체크-비트 발생기를 더 포함하고, 이러한 체크-비트 발생기는 제1 입력 및 제2 입력에 기초하여 적어도 하나의 체크 비트를 발생하며, 에러검출기와 보정발생기는 제1 출력과 상기 적어도 하나의 체크 비트에 기초하여각각 에러 플래그와 보정출력을 발생할 수 있게 되어 있다.
선택적으로, 에러검출기는 제1 결과와 적어도 하나의 체크 비트에 기초하여 에러 플래그를 발생할 수 있게 되어 있고, 이 에러 플래그는 에러검출기가 이러한 에러검출기가 검출할 수 있게 된 다수의 상이한 에러 중에서 어느 하나를 검출하였는지의 여부를 나타내며, 다수의 상이한 에러는 제1 출력의 에러 및 적어도 하나의 체크 비트의 에러를 포함한다.
종래기술과는 대조적으로 체크-비트 발생기의 에러가 유리하게 검출될 수 있다.
선택적으로, 보정발생기는 제1 출력과 적어도 하나의 체크 비트에 기초하여 보정출력을 발생하는데 적합하고, 보정출력은 다수의 상이한 에러 중에서 어느 하나를 보정하기에 적합하며, 다수의 상이한 에러는 제1 출력의 에러와 적어도 하나의 체크 비트의 에러를 포함한다.
종래기술과는 대조적으로 체크-비트 발생기의 에러가 유리하게 보정될 수 있다.
선택적으로, 체크-비트 발생기는 별도로 제1 출력을 발생함이 없이 제1 입력과 제2 입력으로부터 직접 적어도 하나의 체크 비트를 발생한다.
선택적으로, 보정발생기는 에러위치다항식을 발생하고 이러한 에러위치다항식의 근을 검색하여 보정출력을 발생할 수 있도록 구성되고, 보정발생기는 제1 결과에 일치하는 근 만을 검색한다.
선택적으로, 제1 출력을 발생할 수 있게 된 구성요소는 제1 및 제2 입력에서 산술연산을 수행함으로서 제1출력을 발생할 수 있게 되어 있다.
선택적으로, 이러한 산술연산은 갈로아필드 GF (2 k ) 에서의 승산과 같은 유한체 연산이다.
본 발명의 이들 제1 및 제2 관점에서, 출력은 다수의 비트를 포함하고 보정발생기는 제1 셋트의 그룹에 출력비트를 할당하여 각 제1 셋트의 그룹에서 제1 에러검출단계를 수행하고, 제2 셋트의 그룹에 출력비트를 할당하여 각 제2 셋트의 그룹에서 제2 에러검출단계를 수행하며, 제1 및 제2 에러검출단계의 결과를 이용하여 출력에서 에러의 위치를 탐색하기 위한 에러위치탐색단계를 수행한다.
본 발명의 다른 관점에 따라서, 본 발명은 다수의 출력비트를 포함하는 시스템출력을 수신하고, 제1 셋트의 그룹에 출력비트를 할당하여 각 제1 셋트의 그룹에서 제1 에러검출단계를 수행하고, 제2 셋트의 그룹에 출력비트를 할당하여 각 제2 셋트의 그룹에서 제2 에러검출단계를 수행하며, 제1 및 제2 에러검출단계의 결과를 이용하여 출력에서 에러의 위치를 탐색하고 에러위치탐색단계를 수행하여 수신된 출력과 에러위치탐색단계의 결과로부터 보정된 출력을 발생하는 에러보정회로를 제공한다.
본 발명의 이러한 관점에 따른 일부의 회로는 에러보정이 일반적으로 효율적인 방식으로 수행될 수 있기 때문에 에러보정이 비교적 낮은 스페이스 오버헤드(space overhead)를 갖는 회로에 포함될 수 있고, 비교적 많은 수의 비트 에러를 보정할 수 있는 이점을 갖는다.
선택적으로 제1 및 제2 셋트의 그룹은 어떠한 출력비트를 위하여 그 구성원인 제1 셋트로부터 그룹의 동일성과 그 구성원인 제2 셋트로부터 그룹의 동일성이 출력비트를 독특하게 확인할 수 있게 되어 있다.
예를 들어, 만약 출력비트가 행(rows)과 열(columns)의 사가형 테이블에 배열되는 경우, 제1 셋트의 그룹은 행을 포함하고 제2 셋트의 그룹은 열을 포함하거나 그 반대일 수 있다. 그러나, 출력의 비트는 순서에 관계없이 테이블내의 위치에 할당될 수 있음을 알 수 있을 것이다.
회로는 각 단계를 수행하는 서브회로(sub-circuit)를 포함하는 바, 예를 들어, 이는 하나 이상의 할당 서브회로, 하나 이상의 제1 에러검출 서브회로, 하나 이상의 제2 에러검출 서브회로, 하나 이상의 에러위치탐색 서브회로와, 하나 이상의 보정 서브회로를 포함할 수 있다.
에러검출단계 또는 서브회로는 관련그룹에서 비트 에러의 수를 측정할 수 있게 되어 있다. 예를 들어 이들은 각 그룹에 대하여 예를 들어 패리티 코드(parity code)와 같은 에러검출코드를 발생할 수 있다.
제1 셋트의 그룹은 모두 동일한 크기이거나 상이한 크기일 수 있다. 제2 셋트의 그룹은 모두 동일한 크기이거나 상이한 크기일 수 있다. 제1 셋트의 그룹은 제2 셋트의 그룹의 크기와 동일한 크기이거나 또는 상이한 크기일 수 있다.
시스템은 승산기와 같은 기능회로일 수 있으며, 이와 같은 경우 출력은 하나 이상의 입력에서 수행된 기능의 결과일 수 있다. 다른 경우에 있어서, 시스템은 통신이 전달되는 채널일 수 있으며, 이와 같은 경우, 출력은 채널로부터 수신될 때 통신될 수 있다. 다른 경우에 있어서, 시스템은 메모리회로일 수 있는 바, 이와 같은 경우 출력은 메모리회로로부터 검색된 데이터일 수 있다.
또한 회로는 조합하여 이후 첨부된 도면으로 상세히 설명되는 본 발명의 하나 이상의 우선 실시형태의 하나 이상의 특징을 포함한다.
도 1은 유한체의 승산을 위한 것으로 동시에 에러보정역량을 갖는 제1 실시형태에 따른 회로의 개략 블록도.
도 2는 도 1의 보정발생기 블록의 구성요소를 보인 개략 블록도.
도 3은 유한체의 승산을 위한 것으로 동시에 에러보정역량을 갖는 제2 실시형태에 따른 회로의 개략 블록도.
도 4는 도 3의 에러검출 서브회로의 구성요소를 보인 개략 블록도.
도 5는 도 3에서 보인 회로의 여러 구성요소를 통한 각 전파지연(propagation delay)을 나타내는 일부 시간대를 보인 타임라인(timeline).
도 6은 도 3에서 보인 회로의 일부 신호를 보인 타이밍 다이아그램.
도 7은 본 발명의 제3 실시형태에 따른 에러보정회로의 개략 블록도.
도 8은 도 7의 회로에서 발생된 체크 비트를 보인 표.
도 9a, 도 9b, 도 9c 및 도 9d는 도 7의 회로를 이용하여 보정될 수 있는 에러의 조합의 일부 예를 보인 표.
도 10은 도 7의 실시형태의 수정형태에 관한 것으로 보정될 수 있는 에러조합의 일부 예를 보인 표.
도 11은 본 발명의 다른 실시형태에서 검출될 수 있는 에러조합의 일부 예를 보인 표.
도 12는 180nm 및 90nm 기술을 이용한 상이한 크기의 승산회로의 영역을 보인 그래프.
도 13은 비트 표의 각 행에서 다수의 에러보정을 위한 해밍코드(Hamming code)를 이용한 180nm 및 90nm 기술을 이용하는 상이한 크기의 승산기를 위한 에러검출 및 보정회로의 영역을 보인 그래프.
도 14는 BCH 코드를 이용한 180nm 및 90nm 기술을 이용하는 상이한 크기의 승산기를 위한 에러검출 및 보정회로의 영역을 보인 그래프.
도 15 및 도 16은 도 13 및 도 14의 에러검출 및 보정이 이루어지는 승산회로의 전력소비를 보인 그래프.
도 1에서 보인 본 발명의 제1 실시형태에서, 회로(100)는 두개의 병렬입력(105a, 105b)과 하나의 병렬출력(105c)을 갖는 유한체 승산서브회로(105)를 포함한다. 이러한 승산서브회로(105)는 출력(105c)에서 적(積, product) C를 발생한다. 이러한 적 C는 두개의 피연산자 A, B를 곱하여 얻은 결과인데, 이들 두 피연산자는 이들 두 피연산자가 요소인 갈로아필드 GF (2 k ) 를 통하여 두 병렬입력(105a, 105b)에 수신된 것이다. 두개의 병렬입력(105a, 105b)과 하나의 병렬출력(105c)은 k 비트폭으로서, 각각 k 비트로 구성된다.
다른 실시형태에서, 유한체 승산서브회로(105)는 승산역원(multiplicative inversion) 또는 멱승(예를 들어, 제곱)연산과 같은 다른 유한체 산술을 수행하기 위한 회로로 대체될 수 있다. 일부의 실시형태에서, 유한체 승산서브회로(105)는 예를 들어 2의 보수 2진 산술과 같은 다른 유한체 산술연산을 수행하기 위한 회로로 대체될 수 있다.
제1 실시형태에서, 회로(100)는 또한 일부의 실시형태에서는 단일-비트 출력일 수 있는 두개의 k-비트 병렬입력(110a, 110b)과 하나의 n-k 비트 병렬출력(110c)을 갖는 체크-비트 발생기(110)를 포함한다.
체크-비트 발생기(110)는 승산서브회로(105)에 수신되는 동일한 두개의 피연산자 A, B를 수신하고 병렬출력(110c)에서 패리티 워드(parity word) P를 발생할 수 있게 되어 있다. 어떤 실시형태에서는 이러한 패리티 워드 P가 패리트 비트로 대체될 수 있다.
체크-비트 발생기(110)는 병렬출력(110c)에서 패리티 워드 P를 발생하는 로직(logic)을 포함한다. 패리티 워드 P는 유한체 승산과 두개의 병렬입력(110a, 110b)에 수신된 두 피연산자(110)의 BCH 인코딩의 조합을 수행함으로서 발생된다. 체크-비트 발생기(110)의 로직은 먼저 승산결과를 발생하고 이러한 승산결과로부터 패리티 워드 P를 발생하는 것 보다는 두 피연산자 A, B로부터 직접 패리티 워드 P를 발생할 수 있게 되어 있는 바, 이는 본 발명자들이 보다 효율적인 것임을 확인하였다(예를 들어, 지연이 적고 논리 게이트가 적음). 체크-비트 발생기(110)는 적 C에 일치하는 승산결과를 출력하지 않는다.
이러한 실시형태에서, 체크-비트 발생기(110)의 로직은 유한체 승산서브회로(105)에 의하여 수행되는 동일한 형태의 승산인 갈로아필드 GF (2 k ) 를 통한 승산을 정의하는 통상적인 표현을 2진(n, k, t) BCH 코드의 패리티 비트를 정의하는 통상적인 표현으로 치환함으로서 유도되었다(여기에서 k는 '메시지', 예를 들어 각각 두개의 피연산자 A, B 및 적 C에서 비트의 수이고, t는 에러가 발생되는 회로 100이 항상 보정할 수 있는 에러의 수이고(대개는 더 많은 수의 에러가 보정될 수 있으나 전부가 그렇지는 않다), n-k는 패리티 워드 P에서 비트의 수이다).
또한 회로(100)는 두개의 입력(115a, 115b)과 하나의 출력(115c)을 갖는 보정발생기(115)를 포함한다. 두개의 입력(115a, 115b)은 승산서브회로(105)의 출력(105c)과 체크-비트 발생기(110)의 출력(110c)에 연결되고 이들과 폭이 동일하다. 출력(115c)는 k-비트 병렬출력이다.
보정발생기(115)는 그 두 입력(115a, 115b)에서 적 C와 배리티 워드 P를 수신하고 그 출력(115c)에서 보정값 E를 발생할 수 있게 되어 있다. 이러한 실시형태에서, 보정발생기(115)는 이후 도 2를 참조하여 상세히 설명되는 바와 같이 적 C와 패리티 워드 P에서 BCH 디코딩을 수행함으로서 보정값 E를 발생하는 로직을 포함한다.
또한 회로(100)는 각각 승산서브회로(105)의 출력(105c)과 보정발생기(115)의 출력(115c)에 연결되는 두개의 k-비트 병렬입력(120a, 120b)와, k-비트 병렬출력(120c)을 갖는 결합서브회로(120)를 포함한다.
결합서브회로(120)는 적 C와 보정값 E를 수신하고 병렬출력(120c)에서 보정된 적 C'를 발생할 수 있게 되어 있다. 이 실시형태에서, 결합서브회로(120)는 병렬출력(120c0의 각 비트에 대하여 하나씩 다수의 XOR 게이트(도시하지 않았음)로 구성된다. 적 C의 각 비트는 논리합연산(exclusive-or operation)(XOR 게이트의 각 하나에 의하여)을 통해 보정값 E의 해당 비트에 결합되어, 적 C의 에러비트가 보정된 적 C'로 전환되게 함(즉, 논리 0이 논리 1로 전환되거나 그 반대다 된다)으로서 적 C의 에러비트를 보정한다.
도 2에서, 보정발생기(115)는 신드롬발생기(syndrom generator)(125)와 에러위치탐색기(130)를 포함하고, 그 출력(115c)에서 k-비트 보정값 E를 발생한다(도 2에서 각각 e k -1 ... e 0 으로 보임).
신드롬발생기(125)은 두 입력(125a, 125b)과 k-비트폭의 병렬출력(125c)를 갖는다. 두 입력(125a, 125b)은 보정발생기(115)의 각 두 병렬입력(115a, 115b)에 연결되고 이들과 폭이 동일하다. 신드롬발생기(125)는 적 C와 패리티 워드 P를 수신하여 그 출력(125c)에서 에러위치다항식 St...S1을 발생한다. 신드롬발생기(125)는 잘 알려진 Peterson-Gorenstein-Zierler 알고리즘을 이용하여 에러위치다항식 St...S1을 발생할 수 있게 되어 있으나, 에러위치다항식 St...S1을 발생하는 다른 적당한 방법이 당해 기술분야의 전문가에게 명백할 것이며 다른 실시형태에 이용될 수 있을 것이다.
에러위치탐색기(130)는 신드롬발생기(125)에 연결된 t-비트폭의 병렬입력(130a)을 가지고, 보정발생기(115)의 출력(115c)에 연결된 k-비트폭의 병렬출력(130c)을 갖는다.
에러위치탐색기(130)는 에러위치다항식 St...S1을 수신하고 그 출력(130c)에서 k 에러 로케이터 e k -1 ... e 0 로 구성된 보전값 E을 발생할 수 있게 되어 있다. 이 실시형태에서, 에러 로케이터(error locators)는 잘 알려진 치엔검색알고리즘(Chien search algorithm)으로 이용하여 에러위치다항식 St...S1의 근을 찾으므로서 발생된다. 유리하게, 에러위치탐색기(130)는 패리티 워드 P에 해당하는 근을 찾지 않는 바(이 실시형태에서는 패리티 워드 P의 보정이 요구되지 않기 때문이다), 이는 패리티 워드 P에 해당하는 근을 찾아야 하였던 경우에 요구된 양과 비교하였을 때 에러위치탐색기(130)의 로직의 양이 감소될 수 있도록 한다. 다른 실시형태에서, 에러위치탐색기(130)는 패리티 워드 P에 해당하는 근을 검색할 수도 있다. 이러한 실시형태에서, 보정발생기의 출력은 t+k 비트폭이고, 보정발생기는 다수의 상이한 에러 들중에서 어느 하나를 보정하기에 적합한 보정값을 그 출력에서 발생할 수 있게 되어 있으며, 대다수는 패리터 워드의 에러 및 적(product)의 에러를 포함한다.
도 3은 본 발명의 제2 실시형태를 보인 것으로, 회로(200)는 유한체 승산서브회로(205), 체크-비트 발생기(210), 보정발생기(215) 및 결합서브회로(220)를 포함한다. 실질적으로 이들 각 구성요소는 제1 실시형태의 해당 구성요소(동일한 명칭의 구성요소)와 동일하다. 승산서브회로(205), 체크-비트 발생기(210) 및 보정발생기(215)는 제1 실시형태의 경우와 동일한 방식으로 함께 연결되는 바, 이들 구성요소에 대하여서는 추가로 설명할 필요는 없을 것이다.
또한, 회로(200)는 에러검출서브회로(250), 비트 마스크 서브회로(bit mask sub-circuit)(255), 출력인에이블 서브회로(260) 및 출력레지스터(265)를 포함한다.
에러검출서브회로(250)는 두개의 입력(250a, 250b)과 하나의 1-비트 출력(250c)을 갖는다. 두개의 입력(250a, 250b)은 승산서브회로(205)의 출력(205c)과 체크-비트 발생기(210)의 출력(210c)에 연결되고 이들과 폭이 동일하다. 에러검출서브회로(250)는 적 C에서 에러를 검출하고 패리티 워드 P에서 에러를 검출하여 이들 에러가 개별적으로 발생하였는지 또는 동시에 발생하였는지를 확인할 수 있게 되어 있다. 따라서, 에러검출서브회로(250)는 다수의 상이한 에러의 하나 이상을 검출할 수 있다.
에러검출서브회로(250)는 체크-비트 발생기(210)에 연결되어 있으므로, 두개의 피연산자 A, B 로부터 직접 체크 비트를 발생할 필요는 없다. 이는 두개의 피연산자 A, B 로부터 직접 패리티 워드 P를 얻기 위한 그 자신의 로직을 각각 포함하기 보다는 공동의 모듈(체크-비트 발생기 210)이 패리티 워드 P 를 발생하기 위하여 사용되므로 에러검출서브회로(250)와 보정발생기(215) 사이를 분할하는 유리한 자원인 것으로 보일 수 있다.
도 4에서, 에러검출서브회로(250)는 체크-비트 발생모듈(251)과 비교모듈(252)을 포함한다.
체크-비트 발생모듈(251)은 에러검출서브회로(250)의 병렬입력(250a)의 하나에 연결된 k-비트폭의 병렬입력(251a), n-k 비트폭의 병렬출력(251c)을 갖는다.
체크-비트 발생모듈(251)은 적 C를 수신하고 그 출력(251c)에서 다른 패리티 워드 P'를 발생할 수 있게 되어 있다. 다른 패리티 워드 P'는 패리티 워드 P를 발생하기 위하여 체크-비트 발생기(210)에 의하여 사용된 BCH 인코딩에 일치하는 방식으로 발생된다. 따라서, 패리티 워드 P에 에러가 존재하지 않고 적 C에 에러가 존재하지 않는 경우, 다른 패리티 워드 P'는 패리티 워드 P와 동일하게 될 것이다.
비교모듈(252)은 두개의 입력(252a, 252b)과 에러검출서브회로(250)의 출력(250c)에 연결된 하나의 1-비트 출력(252c)를 갖는다. 두 입력(252a, 252b)은 동일한 폭인 체크-비트 발생모듈(251)의 출력(251c)과 에러검출서브회로(250)의 병렬입력(250b)에 각각 연결된다.
비교모듈(252)은 다른 패리티 워드 P'를 수신하고 그 출력(252c)에서 에러 플래그 F를 발생할 수 있게 되어 있다. 에러 플래그 F는 다수의 상이한 에러 중의 어느 하나가 검출되었는 지의 여부를 나타내고, 대다수는 적 C의 에러 및 패리티 워드 P의 에러를 포함한다.
비록 다른 적당한 장치의 구성이 가능하나, 이 실시형태에서 비교모듈(252)배타적 논리합 모듈(253)과 평가모듈(254)를 포함한다.
배티적 논리합 모듈(253)은 각각 n-k 비트폭을 가지고 각각 체크-비트 발생모듈(251)의 출력(251c)과 에러검출서브회로(250)의 제2의 병렬입력(250b)에 연결된 두개의 병렬입력(253a, 253b)과, 동일한 폭의 병렬출력(253c)을 갖는다.
배티적 논리합 모듈(253)은 패리티 워드 P와 다른 패리티 워드 P'를 수신하고 이들 패리티 워드 P와 다른 패리티 워드 P'에서 비트단위의 배타적 논리합 연산을 수행함으로서 그 출력(253c)에서 제3의 패리티 워드 P"를 발생할 수 있다.
평가모듈(254)은 n-k 비트폭을 가지고 배타적 논리합 모듈(253)의 병렬출력(253c)에 연결된 병렬입력(254a)과 비교모듈(252)의 출력(252c)에 연결된 1-비트 출력(254c)에 연결된다.
평가모듈(254)은 제3 패리티 워드 P"를 수신하고 이를 평가하여 그 비트의 전부가 논리-0 인지를 결정하여 그 출력에 에러 플래그 F를 발생할 수 있게 되어 있다. 만약, 제3 패리티 워드 P"의 모든 비트가 0 이면 평가모듈(254)은 에러 플래그 F의 값을 적 C 또는 패리티 워드 P에 에러가 없음을 나타내는 논리-1로 설정하고 그렇지 않으면 평가모듈(254)은 에러 플래그 F의 값을 다수의 에러중의 하나가 검출되었음을 나타내는 논리-0으로 설정한다.
다시 도 3에서, 비트 마스크 서브회로(255)는 두개의 입력(255a, 255b)과 하나의 k-비트 병렬출력(255c)를 갖는다. 두개의 입력(255a, 255b)은 동일한 폭을 갖는 에러검출서브회로(250)의 출력(250c)과 보정발생기(215)의 출력(215c)에 각각 연결된다.
비트 마스크 서브회로(255)는 에러 플래그 F, 보정값 E 및 적을 수신하고 그 출력(255c)에서 마스크드 보정값(masked correcting value) E'를 발생할 수 있게 되어 있다. 비트 마스크 서브회로(255)는 에러 플래그 F가 논리-1로 설정된 경우(즉, 에러가 검출되지 않은 경우) 마스크드 보정값 E'의 모든 비트를 논리-0으로 설정하고, 그렇지 않으면 이는 보정값 E의 각 해당 비트와 같아지도록 모든 비트의 값을 설정한다,
실제로, 비트 마스크 서브회로(255)는 예를 들어 적 C 또는 패리티 워드 P에서 에러가 검출되지 않은 경우 보정값 E을 억제함을 알 수 있을 것이다. 비록 다른 적당한 구성이 가능할 수 있다 하여도, 이 실시형태에서 마스크드 보정값 E'는 보정값 E에서 수행된 비트단위의 AND 연산과 에러 플래그 F의 논리반전(즉 논리-1이 논리-0으로 변환되거나 그 반대로 변환된다)의 결과이다.
결합서브회로(220)는 승산서브회로(205)의 출력(205c)과 비트 마스크 서브회로(255)의 출력(255c)에 각각 연결된 k-비트 병렬입력(220a, 220b)과, k-비트의 병렬출력(220c)을 갖는다.
결합서브회로(220)는 마스크드 보정값 E'와 적 C을 수신하고 그 출력(220c)에서 보정된 적 C'를 발생한다. 비록 다른 적당한 구성이 가능하지만, 이 실시형태에서 결합서브회로(220)는 출력(220c)의 각 비트에 대하여 하나씩 다수의 XOR 게이트(도시하지 않았음)로 구성된다. 적 C 의 각 비트는 XOR 연산(XOR 게이트의 각 하나씩)을 통하여 마스크드 보정값 E'의 일치하는 비트와 결합된다.
만약 에러 플래그 F가 논리-0으로 설정되면(즉, 에러가 검출되지 않은 경우), 마스크드 보정값 E'의 값은 보정값 E의 값과 동일하게 될 것이다. 따라서 적 C와 마스크드 보정값 E'에서 수행되는 XOR 연산은 적 C의 오류성 비트가 보정된 적 C'에러 보정될 수 있도록 한다.
만약 에러 플래그 F가 논리-1로 설정되면, 마스크드 보정값 E'가 논리-0으로 설정될 것이므로 보정된 적 C'의 값은 적 C의 값과 같게 될 것이다.
출력인에이블 서브회로(260)는 회로클록과 에러검출서브회로(250)의 출력에 연결된 두개의 1-비트 입력(260a, 260b)과, 하나의 1-비트 출력(260c)를 갖는다.
출력인에이블 서브회로(260)는 에러 플래그 F와 클록신호 CLK를 수신하고 그 출력에서 게이트드 클록신호(gated clock signal) ECLK를 발생한다. 만약 에러 플래그 F가 논리-0 으로 설졍되면, 게이티드 클록신호 ECLK는 논리-0 으로 설정될 것이다. 이러한 실시형태에서, 출력인에이블 서브회로(260)는 그 입력(260a, 260b)에서 에러 플래그 F와 클록신호 CLK를 수신하고 그 출력(260c)에서 게이티드 클록신호 ECLK를 발생하는 AND-게이트로 구성된다.
출력레지스터(265)는 결합서브회로(220)의 출력(220c)에 연결된 k-비트 입력(265a), 출력인에이블 서브회로(260)의 출력(260c)에 연결된 클록입력(265b)와, k-비트 출력(265c)를 갖는다.
출력레지스터(265)는 보정된 적 C'와 게이티드 클록신호 ECLK를 수신하고, 게이티드 클록신호 ECLK의 타이밍 이벤트(예를 들어, 상승엣지 또는 하강엣지)에 응답하여 그 출력(265c)에서 보정된 적 C'와 일치하는 회로출력 Cout을 발생한다.
도 5의 타임라인(timeline)(500)에서, 에러검출서브회로(250)는 클록신호 CLK의 제1 상승클록엣지로부터 시작하여 제1 시간대 Tdetect 이후(또는 하강엣지와 같은 클록신호CLK의 다른 타이밍 이벤트)에 그 출력(250c)에서 에러 플래그 F를 발생한다.
클록신호 CLK는 제1 시간대 Tdetect 보다 긴 클록주기 Tclock을 갖는다.
만약 에러 플래그 F가 적 C에 에러가 없음을 나타내는 논리-1로 설정되는 경우, 출력인에이블 서브회로(260)의 입력(260b)에서 수신되는 클록신호 CLK의 상승엣지(또는 클록신호 CLK의 다른 타이밍 이벤트)는 출력인에이블 서브회로(260)의 출력(260c)에서 논리-1이 발생될 수 있도록 한다. 예를 들어, 이는 게이티드 클록신호 ECLK에서 상승엣지(또는 클록신호 CLK의 타이밍 이벤트와 일치하는 다른 타이밍 이벤트)가 되도록 할 것이다. 따라서, 만약 에러 플래그 F가 에러가 겁출되지 않았음을 나타내는 경우, 출력레지스터(265)는 클록주기 Tclock과 거의 같은 시간이후에 그 출력(265c)에서 적 C에 일치하는 회로출력 Cout을 발생할 것이다.
보정발생기(215)는 클록신호 CLK의 상승엣지로부터 시작하여 제2 시간대 Tcorrect 이후(또는 클록신호 CLK의 다른 타이밍 이벤트)에 그 출력(215c)에서 보정출력 E를 발생한다. 제2 시간대 Tcorrect는 제1 시간대 Tdetect 보다 길고 클록주기 Tclock 보다 길다.
제2 시간대 Tcorrect의 후단부에서, 제1 시간대 Tdetect가 종료할 때로부터 시작하고 제2 시간대 Tcorrect가 종료할 때 종료하여, 승산서브회로(205)는 그 출력(205c)에서 적 C을 발생할 것이나 보정회로(215)는 그 출력(215c)에서 아직 일치하는 보정출력 E를 발생하지는 않을 것이다. 따라서, 보정발생기(215)가 이전에 일치하는 보정출력을 발생하지 않을 것이므로 제2 시간대 Tcorrect 이후까지 적 C내의 어떠한 에러도 보정된 적 C'에서 보정되지 않을 것이다.
출력인에이블 서브회로(260)는 적 C에서 검출된 에러가 보정된 적 C'에서 보정된 후까지 출력레지스터(265)가 보정된 적 C'에 일치하는 회로출력 Cout을 방생하는 것을 방지할 수 있게 되어 있다. 적 C에서 검출된 에러는 에러 플래그 F가 클록주기 Tclock의 종료전에 논리-0으로 설정되게 하며 이어서 게이티드 클록신호 ECLK이 논리-0이 되게 설정할 것이다. 아울러, 클록신호 CLK의 다음 상승엣지(또는 클록신호 CLK의 다른 타이밍 이벤트)는 출력인에이블 서브회로의 출력(260c)에서 게이티드 클록신호 ECLK을 통하여 전파되지 않도록 하고, 적어도 클록신호 CLK의 연속하는 상승엣지(또는 클록신호 CLK의 다른 타이밍 이벤트) 까지 논리-0을 유지할 것이다. 이는 보정발생기(215)가 이를 필요로 하는 시간에 적 C에서 검출된 에러를 보정하기 위하여 이에 결합하기 위한 보정출력 E을 그 출력(215c)에서 발생토록 한다.
클록주기 Tclock은 제2 시간대 Tcorrect 보다 짧으므로, 회로(200)는 클록주기 Tclock가 제2 시간대 Tcorrect 보다 길거나 같은 경우에가능하였던 주어진 시간동안에 보다 많은 승산결과를 발생할 수 있을 것이다.
전문가라면 제2 시간대 Tcorrect 보다 길거나 같은 클록주기 Tclock을 예상할 수 있으므로 필요한 경우 어떠한 클록주기에서 적 C에서 검출된 에러가 보정될 수 있다. 그러나, 전형적으로, 에러는 비교적 드물다. 제2 시간대 Tcorrect 보다 짧은 클록주기 Tclock을 이용하고 에러가 적 C에서 검출될 때 출력레지스터(265)가 그 출력(265c)을 업데이트하는 것을 방지함으로서(보정출력 E을 발생하는데 요구되는 별도의 시간을 허용하기 위하여), 주어진 시간동안에 보다 많은 승산결과를 발생할 수 있다.
예를 들어, 회로(200)의 작동은 도 6을 참조하여 설명될 것이다.
초기에, 클록신호 CLK의 두 주기 중에, 회로(200)는 피연산자 A,B 값(A1,B1 및 A2,B2)을 수신하고 이로부터 적 C의 보정값(C1 및 C2)이 발생된다. 에러검출서브회로(250)는 이들 두 주기에서 에러가 없음을 나타내기 위하여 플래그 F를 논리-0으로 설정한다.
적 C의 값(C3)이 에러일 때에, 클록신호 CLK의 제3 주기에서 이러한 에러는 에러검출서브회로(250)에 의하여 검출되고 이 서브회로는 플래그 F를 논리-0으로 설정한다. 플래그 F가 논리-0으로 설정되었으므로, 출력인에이블 서브회로(260)는 게이티드 클록 ECLK을 논리-0으로 설정한다.
제4 주기의 시작을 표시한 클록신로 CLK의 다음 상승엣지에서, 플래그 F는 논리-0으로 설정된 상태를 유지하여 논리-1로 전환하는 클록신호 CLK에 응답하여 게이티드 클록 ECLK이 논리-1로 설정되는 것을 방지한다. 이로써, 적 C의 오류성 값(C3)은 출력레지스터(265)의 출력(265c)에서 발생되지 않는다. 이는 보정발생기(215)가 요구되는 시간에 적당한 보정값 E을 발생할 수 있도록 한다. 이어서, 제4 주기의 종료전에, 결합회로(220)가 일치하는 마스크드 보정값 E'을 수신하고 이러한 값은 보정된 적 C'을 발생하기 위하여 적 C의 오류성 값(C30과 결합한다.
다음으로, 즉, 클록신호 CLK의 제5 클록주기에서, 피연산자 A,B의 두 새로운 값(A4,B4)이 도입되어 보정값(C4)을 갖는 적 C가 발생될 수 있도록 한다. 이때에는 적 C에서 에러가 검출되지 않으므로, 에러검출서브회로(250)는 플래그 F를 논리-1로 설정한다. 이는 클록신호 CLK가 논리-1로 설정되었으므로 게이티드 클록 ECLK이 논리-1로 변경되도록 한다. 게이티드 클록 ECLK가 논리-0으로부터 논리-1로 변경됨으로서 출력레지스터(265)의 출력(265c)에서 회로출력 Cout으로서 보정된 적 C'의 값이 발생될 수 있도록 한다.
클록신호 CLK의 제6 클록주기에서 적 C의 보정된 값(C4)은 출력레지스터(265)의 출력(265c)에서 회로출력 Cout으로서 발생된다.
도 7에서, 본 발명의 제3 실시형태에 따른 에러보정회로는 동일한 폭 m을 갖는 두개의 병렬입력(305a, 305b)와 동일한 폭 m을 갖는 출력(305c)을 갖는 기능블록 또는 서브회로(305)를 포함한다. 이러한 기능블록은 그 입력(305a, 305b)에서 각 피연산자 A,B를 수신하고 출력 C를 발생하기 위하여 피연산자의 기능을 수행한다. 이 실시형태에서 기능은 다기능이고 기능블록(305)은 제1 실시형태의 경우와 동일한 승산기이다. 기능블록(305)의 작동에서 에러를 검출하고 보정하기 위하여, 이 회로는 추가로 패리티예측기 서브회로(310)와 보정블록 또는 서브회로(315)를 포함한다. 패리티예측기(310)는 각각 기능블록의 입력과 같은 동일한 폭 m을 갖는 두개의 병렬입력(310a, 310b)과 폭 k를 갖는 출력(310c)을 갖는다. 패리티예측기(310)는 그 입력에서 피연산자 A,B를 수신하고 이들로부터 패리티 코드를 발생할 수 있게 되어 있으며, 이는 이후 상세히 설명되는 바와 같이 기능블록(305)의 출력에서 수행되는 코딩단계(coding step)의 결과로서 발생되어야 하는 패리티 코드의 예측값이다. 보정블록(315)은 기능블록(305)의 출력(305c)와 동일한 폭 m의 제1 입력(315a), 패리티예측기(310)로부터의 출력과 동일한 폭 k를 갖는 제2 입력(315b)과, 기능블록(305)의 출력(305c)와 동일한 폭 m을 갖는 출력(315c)을 갖는다. 보정블록(315)은 그 제1 입력(315a)에서 기능블록(305)에 의하여 출력된 결과 C를 수신하여 이로부터 패리티 코드를 발생할 수 있게 되어 있다. 패리티예측기(310)는 이것이 발생하는 예측된 패리티 코드가 에러발생이 없는 경우 어느 주어진 피연산자 A,B에 대하여 보정블록(315)내에서 발생되는 것과 같이 동일하게 될 수 있도록 구성된다. 그리고 보정블록은 이것이 수신하는 패리티 코드를 결과 C로부터 이것이 발생하는 패리티 코드와 비교하고 이들로부터 결과 C의 에러를 검출하고 그 위치를 탐색하여 이들을 보정하며 이로써 보정된 출력 C'를 발생할 수 있게 되어 있다.
도 8에서, 이제 보정블록(315)내의 기능블록 출력으로부터 발생되고 패리티예측기(315)로부터 예측된 패리티 코드가 설명될 것이다. 이 실시형태에서 기능블록에 의하여 출력된 결과 C는 20 비트 C0~C19로 구성되는 20 비트 출력코드이다. 일반적으로, 패리티 코드는 결과비트 C0~C19를 5개 비트의 4개 행인 제1 셋트의 그룹으로 분할하고 각 그룹, 즉, 각 행에 대하여 패리티 코드를 발생하며, 또한 그 결과는 4개 비트의 5개 열의 제2 셋트의 그룹으로 분할하고 각 그룹, 즉, 각 열에 대하여 패리티 코드를 발생함으로서 발생된다. 각 그룹에 대한 패리티 코드는 그룹내에서 위치가 아닌 에러 수를 결정하는데 사용될 수 있는 해밍 코드(Hamming code) 또는 BCH 코드와 같은 적당한 방법으로 발생될 수 있다. 패리티예측기에 의하여 출력된 패리티 코드는 비트가 보정블록(315)내에 있는 경우 그룹의 하나에 대하여 발생된 패리티 코드의 하나에 각각 일치하는 한 셋트의 패리티 코드를 포함한다. 보정블록(315)내에서 출력 C으로부터 발생된 패리티 코드를 패리티예측기(310)에서 발생된 것과 비교함으로서, 보정블록(315)은 제1 셋트의 그룹 각각(즉, 각 행)에서 에러의 수와 제2 셋트의 그룹 각각(즉, 각 열)에서 에러의 수를 결정할 수 있다. 이들 수로부터, 에러의 수가 너무 크지 않으면, 에러흐이 정확한 위치가 결정될 수 있다. 그 이유는 한 행과 한 열의 어떠한 조합이 출력에서 하나의 비트를 독특하게 확인하기 때문이다. 에러의 위치가 탐색되었을 때, 보정블록은 이들을 보정하여 보정출력 C'를 발생한다.
보정블록은 상기 언급된 각 단계를 수행하기 위한 독립된 서브회로들을 포함할 수 있다. 이러한 실시형태에서, 이는 출력비트를 제1 셋트의 그룹으로 할당하는 제1 할당서브회로(315d), 출력비트를 제2 셋트의 그룹으로 할당하는 제2 할당서브회로(315e), 각 제1 셋트의 그룹에 대하여 패리티 코드를 발생하는 제1 패리티 코드 발생 서브회로(315f), 각 제2 셋트의 그룹에 대하여 패리티 코드를 발생하는 제2 패리티 코드 발생 서브회로(315g), 제1 셋트의 패리티 코드를 패리티예측기에 의하여 발생된 해당 코드와 비교하여 각 제1 셋트의 비트 그룹에서 에러의 수를 결정하는 제1 에러검출서브회로(315h), 제2 셋트의 패리티 코드를 패리티예측기에 의하여 발생된 해당 코드와 비교하여 각 제2 셋트의 비트 그룹에서 에러의 수를 결정하는 제1 에러검출서브회로(315i), 양 셋트의 패리티 코드의 비교로부터 출력 C내에서 에러위치를 확인하는 에러위치탐색 서브회로(315j)와, 보정출력 C'를 발생하기 위하여 출력 C를 보정하는 에러보정서브회로(315k)를 포함한다. 그러나, 이들 각 기능은 회로의 별도 전용부분에 의하여 수행되지 않고, 다른 실시형태에서는 서브회로가 조합하여 둘 이상의 이들 기능을 수행할 소 있음을 이해할 수 있을 것이다.
더욱이, 두 셋트의 그룹이 행열의 직사각형 테이블에 의하여 용이하게 볼 수 있으나, 할당단계는 각 비트를 두 그룹, 즉, 제1 셋트로부터의 하나와, 제2 셋트로부터의 하나씩 두 그룹으로 할당하는 것이 필요하다. 예를 들어, 도 8에서 보인 할당을 위하여, 비트 C0~C19가 출력에서 순서대로 배열되었다고 가정할 때, 처음의 5개 비트가 제1 셋트의 제1 그룹(제1 행에 일치함)에 할당될 수 있고 이후 5개 비트의 블록은 제1 셋트제1 셋트에서 후속 그룹에 할당될 수 있을 것이다. 그리고 제1 비트로부터 출발하여 매번 제5 비트가 제2 셋트의 제1 그룹(제1 열에 해당한다)에 할당될 수 있고, 제2 비트로부터 출발하여 매번 제5 비트는 제2 그룹 등에 할당될 수 있다. 비트가 할당되는 그룹은 중요한 것이 아님을 이해할 수 있을 것이다. 도 8에서 보인 표에서, 표의 20개 셀내에 20개 비트가 적당히 배열될 수 있으며, 이들 비트는 비록 출력에서 이들의 위치가 규칙적인 관계를 보이지는 않으나 행과 열에 따라 그룹으로 나눌 수 있는 것이다.
이 실시형태에서, 패리티 코드는 각 열에서 이중에러를 검출할 수 있는 간단한 해밍 코드와, 각 행에서 무려 6개의 에러를 검출할 BCH 코드를 이용하여 발생된다. 행-방향 및 열-방향 인코딩의 보다 나은 이해를 위하여, 보정블록(315)에 의하여 수행되는 바와 같은 패리티 코딩과정이 기능블록의 예로서 20-비트 비트병렬 유한체 승산기를 고려한 예시회로를 이용하여 보다 상세히 설명될 것이다.
해밍 코드 패리티를 이용한 에러검출
20개의 비트가 도 8에서 보인 바와 같이 4개의 행과 5개의 열로 이루어진 테이블에 배치된다. 출력 C의 20개 비트는 도 8에서 보인 바와 같은 테이블에서 C0 ~ C19의 순서로 확인되고 각각의 위치에 할당된다. 이들 행은 해빙 코드로 인코딩되고, 특히 각 행이 Ham(9,5) 코드로 인코딩된다. 환언컨데, 하나의 행에서 이중에러(즉, 2개 비트 에러 까지)를 검출하는데 요구된다. 제1 행에 대한 4 패리티 정보는 다음과 같이 표현된다.
P1 = C0 · C2 · C4 (1)
P2 = C1 · C2 · C3 · C4 (2)
P3 = C0 · C3 · C4 (3)
P4 = C1 · C2 · C4 (4)
유사한 방식으로, 각 행이 별도로 인코딩되고, 도 8에서 보인 바와 같이 각 행에 대하여 하나씩 상이한 코드 워드로서 처리되어 4개의 4-비트 패리트 코드를 얻는다. 각 열은 단순 패리티를 이용하여 인코딩된다. 매번 2개 비트가 도 8에서 보인 바와 같이 열 패리티 비트 CP를 발생하여 보호된다. 제1 및 제2 열의 열 패리티는 다음의 등식에서 보인 바와 같이 결정된다. 다른 3개의 열 패리티는 다음으로 표현되는 바와 같이 CP0 ~ CP3과 동일한 방식으로 정확히 발생된다.
CP0 = C0 · C10 (5)
CP1 = C5 · C15 (6)
CP2 = C1 · C11 (7)
CP3 = C6 · C16 (8)
일련의 등식(1)~(4), 즉, 행에 대한 에러검출코드는 각 행에서 2개의 에러까지 발생다중에러(occurrence multiple error)를 검출할 수 있도록 한다. 유사하게, 각 열에서 계산된 등식(5)~(8)은 각 열에서 2개 에러까지의 존재를 검출하는데 사용될 수 있다. 열과 행에 대한 에러검출코드로부터, 너무 많은 에러가 존재하지 않는 경우, 에러내에서 특정 비트 또는 비트들이 검출될 수 있다. 예를 들어, 비트 C6 내에 단 하나의 에러가 존재하는 경우, 단 하나의 에러가 하나의 열, 열 2에서 검출될 것이며, 하나의 에러가 하나의 행, 행 2에서 검출될 것이다. 따라서 이들 행 2 및 열 2에 있는 비트는 오류성 비트인 것으로 확인되고 보정될 수 있다. 이러한 행과 열의 이용, 특히 일반적으로 두개의 상이한 셋트의 그룹의 이용은 본문에서 교차 패리티 에러 보정으로 불린다. 이러한 기술이 보정할 수 있는 에러 패턴의 일부가 도 9에서 보이고 있다.
패리티예측기(310)는 기능블록(305)의 구조와 기능블록으로부터 2개 셋트의 그룹에 이르기까지 출력에 비트를 할당하고 이들 그룹에 대하여 패리티 코드를 유도해내는 보정블록(315)의 서브회로를 간단히 복제할 수 있다. 그러나, 이 실시형태에서, 공간을 절약하고 회로를 단순화하기 위하여, 패리티예측기는 중간단계로서 결과 C를 유도해냄이 없이 시스템 입력 A,B로부터 가장 간단한 방식으로 패리티 코드를 유도해낼 수 있도록 되어 있다. 결과 C가 특별히 유도될 필요가 없으므로 이는 회로의 크기를 현저히 줄일 수 있도록 한다.
다중에러보정
상기 내용은 제1 셋트의 그룹(행)과 제2 셋트의 그룹(열) 모두에서 에러가 검출되는 것을 설명하고 있다. 그러나 물론 에러를 확인하는 것만으로는 이들을 충분히 보정할 수는 없다. 고전적인 에러검출코드를 이용하여 오류성 비트위치를 확인하고 이들을 보정하기 위하여 별도의 공정(디코더라고 불리기도 하는 별도의 회로 서브-섹션을 필요로 한다)이 요구된다.
상기 언급된 바와 같이, 설명된 시스템에서 아주 간단한 '교차코드'를 이용하여 복잡한 디코더를 생략할 수 있으며 보정블록은 보정을 수행하기 위한 간단한 AND-XOR 로직을 포함하고 이를 이용할 수 있게 되어 있다. 예를 들어, 비트가 도 8의 테이블과 같은 테이블에 배열된 도 9a에서, 비트 C0, C1, C5 및 C6 가 에러인 것으로 추정한다. 이 시스템은 행 1의 해밍코드를 이용하여 행 1에서 두개의 오류성 비트(C0 및 C2)가 있다는 것을 검출할 수 있으며 유사하게 행 2에 두개의 에러(C5 및 C6)가 있다는 것이 행 2의 해밍코드에 의하여 검출된다. 그러나 이들 코드 만으로는 행 1 및 행 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; CO, C1, C2, C5, C6 및 C7; C12, C13, C14, C17, C18 및 C19 이다.
도 10을 참조하여, 다른 실시형태에서, 기능블록은 64-비트 유한체 승산기이다. 이 경우에 있어서, 보정블록은 16 비트의 4개 행을 갖는 테이블을 정의할 수 있도록 구성된다. 이러한 실시형태에서 보정블록은 각 행에서 해밍 코드 보다 더 많은 에러를 검출할 수 있는 BCH 코드를 사용하여 각 행에서 에러를 검출할 수 있도록 한다(행에러검출). 도 10은 각 행에서는 BCH 디코딩이 이루어지고 각 열에서는 단순패리팅의 코딩이 이루어지는 64-비트 유한체 승산기에서의 예시적인 에러패턴을 보이고 있다. 예를 들어 BCH(3,1,16) 코드를 이용하여, 단순 해밍 코드에 비하여 보정된 비트수가 명확히 증가하는 1 행당 6개 에러까지 용이하게 검출할 수 있다.
BCH 코드 패리티를 이용한 에러검출
비트-병렬 BCH 코드를 기반으로 하는 다중에러검출의 기본적인 원리와 구성이 도 8에서 보인 바와 같은 동일한 20 비트 승산기에 대하여 설명될 것이다. 전문가라면 이러한 원리가 64-비트 승산기에도 적용될 수 있음을 이해할 수 있을 것이다. BCH(15,5,7)의 간단한 경우를 고려한다. 여기에서 n= 15 이고 k= 5 이다. 이러한 예에서, GF(25)의 비트-병렬 PB 승산기를 고려한다. 처음의 5-비트 행이 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 + C0xl0. (10)
패리티 체크 비트는 다음에 의해 생성된다 :
P(x) = xn - kM(x)modg(x) (11)
발생기 다항식은 g(x) = x10 + x8 + x5 + x4 + x2 + x + 1 이라 한다. 그러면 6-비트 검출을 위한 제1 행의 패리티 표현식은 다음과 같다.
P(x) = p9x9 + p8x8 + p7x7 + p6x6 + p5x5 + p4x4 + p3x3 + p2x2 + p1x1 + p0 (12)
만약 3 비드 보정 BCH 코드를 고려한다면, 이는 단일 코드 워드에서 6개의 비드 에러를 검출할 것이다. 따라서 5 비트 코드에서 다중에러를 검출하기 위하여서는 10개의 패리티 비트가 필요하다. 이러한 10개의 패리티 비트는 다음과 같다.
pO = c0+c2+c4, pO = 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 and M. A. Hasan, "Low Complexity Bit Parallel Architectures for Polynomial Basis Multiplication over GF(2m)," IEEE Trans. Computers, vol. 53, no. 8, pp. 945-959, 2004 에 정의된 바와 같은 승산기의 내부의 적 항이다.
크로스 패리티 코드를 기반으로 하는 BCH 코드의 예시적인 패턴은 도 11에 도시되어 있다. 이 시스템은 각 16-비트 행에서 6 비트 에러 검출가능한 BCH 코드를 이용할 수 있도록 되어 있다. 각 4-비트 열에서 해밍기반방식의 경우와 같이 단순 패리티 코드를 이용할 수 있다. 따라서 각 열에서 2개의 에러와 각 행에서 6개의 에러를 검출할 수 있다. 이는 이러한 기술이 12 비트 에러까지 보정할 수 있음을 의미한다. 일부의 패턴의 예는 도 11에서 컬러로 강조되었다. 유사한 패턴은 동일 그룹에서 다중에러를 나타낸다.
디지트 시리얼 승산기의 크로스 코드
이제 제안된 크로스 패리티 방식이 워드 레벨 승산기 또는 디지트 시리얼 승산기와 같은 보다 실질적인 승산기에 대하여 고려될 것이다. 실험적인 목적으로 NIST 및 FIPS에 의해 설정된 보안 ECC 작업을 위한 표준 크기의 승산기인 163-비트 디지트 시리얼 승산기를 고려하였다. 이는 163-비트 다중에러 보정가능한 디지트 시리얼 승산기를 합성하기 위한 최초의 시도로 여겨진다. 그 이유는 이들이 실제의 승산기 로직에 대하여 평행하게 실행하는 평행한 복합오류검출, 디코딩 및 보정부분 때문에 거대영역 오버헤드를 제공하므로 알려진 에러검출 및 보정가능한 기술이 비트병렬승산기에 더 적합하기 때문이다.
도 12에서 제안된 방식의 복잡성은 10-비트, 15-비트, 20-비트, 32-비트, 48-비트, 64-비트 및 90-비트 승산기 크기의 공간조건을 보다 양호하게 이해하기 위하여 이러한 디지트 시리얼 승산기 구조에 대하여 평가된다.
이러한 실험을 위한 디지트 시리얼 승산회로가 단일 누산기 ㅅ긍산기 구조를 이용하여 디자인되었다. 승산알고리즘은 다음과 같다.
Input : A(x) = Σm-1
i=0 ai . x i , B(x) = Σm-1
i=0 bi . x i , P(x).
Output : C(x) = A (x).B(x) modP (x). Step 1: C = 0.
Step 2: for i = 0 to [m/ FD ] - 1 do Step 2: C= Bi .A+C
Step 4: A = A. a' D .
Step 5: end for
Step 6 : return (C mod P(x))
시험결과
해밍 및 BCH 기반의 코드의 행동모델이 VHDL을 이용하여 구현되었고 모델심 시뮬레이터(Modelsim simulator)를 이용하여 이들의 기능정확도에 대하여 체크되었다. 10, 15, 20, 32, 48, 64 및 90- 비트 승산기구조를 포함하는 다양한 크기의 비트병렬승산기에 대하여 방식이 체크되고 확인되었다. 그리고 시놉시스 디자인 컴파일러(Synopsys design compiler)를 이용하여 디자인들이 합성되었다. 영역의 변화, 이들 디자인의 파워가 180nm 및 90nm TSMC 기술을 이용하여 평가되었다.
제안된 구현의 영역 및 파워분석
도 12는 다양한 크기의 비트병렬승산기의 공간소비(space consumption)를 보이고 있다. 도 13 및 도 14는 180nm 및 90nm 기술에서 에러보정블록(패리티 발생기 포함)의 영역을 보이고 있다. 도 13으로부터 BCH기반기술의 공간소비가 해밍기반의 크로스 코드에 비하여 약간 큼을 알 수 있다. 그 이유는 양 코드의 영역집약적 디코더 섹션(area intensive decoder section)이 단순패리티기반의 에러 디코더 및 보정기로 대체되었기 때문이다.
제안된 크로스 패리티 기반의 방법의 영역 오버헤드가 표 1에서 설명된다. 실험적 분석으로 BCH 및 해밍기반의 방식이 매우 근접함을 알 수 있다. 매우 간단한 10-비트 승산기의 경우 영역 오버헤드는 단지 142 % 이다. 승산기 크기가 커지면 패리티 발생회로 및 보정로직에 의한 영역 오버헤드의 비율이 점점 작아져 마침내는 다중에러를 보정할 수 있는 90-비트 승산기의 경우 단지 101% 이다. 이는 단순히 단일에러보정코드에 기반을 둔 전형적인 다중에러보정방식에 비하여 매우 작은 것이다. 비록 디자인이 모든 에러 패턴에 대하여 완전히 이상적이지는 않지만, 예상밖으로 제안된 방식의 범위를 벗어나 보정될 수 없는 패턴이 나타날 것이다. 그 이유는 다중 비트 플립의 원인이 될 수 있는 방사선입자간섭의 확률이 예를 들어 1 백만분의 1 클록 사이클이기 때문이다. 따라서 제안된 방식은 영역 오버헤드가 가능한 한 101%로 낮은 탁월한 에러 마스킹 역량을 제공할 것이다.
여러 승산기 크기의 영역 오버헤드 비교
비트수 해밍 BCH
10 142% 160%
15 123% 152%
20 121% 140%
32 108% 120%
48 105% 116%
64 104% 114%
90 101% 106%
표 2는 본 발명의 크로스 패리티 코드 방식을 공개된 문헌의 다른 에러보정방식과 비교하여보인 것으로, 여기에서 공개된 문헌은 A. Reyhani-Masoleh and M. A. Hasan, "Low Complexity Bit Parallel Architectures for Polynomial Basis Multiplication over GF(2m)," IEEE Trans . Computers, vol. 53, no. 8, pp. 945-959, 2004; J. Mathew, J. Singh, A. M. Jabir, M. Hosseinabady, and D. K. Pradhan, "Fault Tolerant Bit Parallel Finite Field Multipliers using LDPC Codes," in Proceedings of the IEEE International Symposium on Circuits and Systems, 2008, pp. 1684-1687; and M. Poolakkaparambil, J. Mathew, A. M. Jabir, D. K. Pradhan, and S. P. Mohanty, "BCH Code Based Multiple Bit Error Correction in Finite Field Multiplier Circuits," in Proceedings of the 12 th IEEE International Symposium on Quality Electronic Design, 201 1 , pp. 615-620 이다.
공정한 비교를 위하여, 32-비트 승산기를 사용하였다. 본 발명의 방법은 다른 알려진 디자인에 비하여 보다 적은 영역 오버헤드에서 보다 많은 수의 에러를 보정할 수 있었음을 확인하였다.
32-비트 승산기에 대한 다른 방식과의 비교
특성 Masoleh 등 2004 Masoleh 등 2008[12] BCH 크로스 패리티 (Ham) 크로스 패리티
(BCH)
#에러보정 단일 단일 3 에러 6 에러까지 12 에러까지
코딩기술 해빙 LDPC 전형적 BCH 해밍+단순 패리티 BCH+단순 패리티
오버헤드 >100% >100% 150.4% 108% 120.4%
제안된 방식의 파워손실이 분석되었다. 도 15와 도 16은 해밍 및 BCH 기반의 디자인의 파워손실을 비교한 것이다. 이들은 비슷한 영역 오버헤드를 가짐으로서 파워손실이 두 방식에서 거의 유사하다.
상기 언급된 도 7 내지 도 16의 실시형태가 회로디자인에 관한 것이나, 다른 실시형태에서, 이 시스템은 통신이 전송되는 채널이고 출력이 이러한 채널로부터 수신되는 통신이다. 패리티예측기는 채널의 전송단에 배치되어 전송전에 통신으로부터 패리티 코드를 발생하여 통신과 함께 전송을 위하여 발생된 패리티 코드를 부착시킬 수 있게 되어 있다. 보정블록은 시스템의 수신기단에 배치되어 채널을 통하여 패리티예측기로부터의 패리티 코드와 함께 메시지를 수신할 수 있게 되어 있다. 그리고 보정블록은 수신된 메시지에서 상기 언급된 보정단계를 수행할 수 있다. 아른 경우에 있어서, 시스템은 메모리회로일 수 있으며, 이 경우에 출력은 메모리회로로부터 검색된 데이터일 수 있고, 패리티예측기로부터 발생된 패리티 코드는 메모리에 저장되어 데이터오하 함께 검색됨으로서, 보정회로가 검색된 데이터에서 보정단계를 수행할 수 있다.
상기 언급된 실시형태들은 단순히 예를 든 것이며, 본 발명의 범위는 다음의 청구범위에 의하여서 정의된다.
A, B: 피연산자, C: 적, P: 패리티 워드, St...S1: 에러위치다항식, E: 보정값, F: 에러 플래그, 100: 회로, 105: 유한체 승산서브회로, 105a, 105b: 병렬입력, 105c: 병렬출력, 110: 체크비트발생기, 110a, 110b: 병렬입력, 110c: 병렬출력, 115: 보정발생기, 115a, 115b: 병렬입력, 115c: 병렬출력, 120: 결합서브회로, 120a, 120b: 병렬입력, 120c: 병렬출력, 125: 신드롬발생기, 125a, 125b: 입력, 125c: t-비트 병렬출력, 130: 에러위치탐색기, 130c : 출력, 200: 회로, 205: 유항체 승산서브회로, 210: 체크비트발생기, 215: 보정발생기, 220: 결합서브회로, 220c: 출력, 250: 에러검출서브회로, 250a, 250b: 입력, 250c: 1비트 출력, 251: 체크비트발생모듈, 251a: k-비트 병렬입력, 251c: 병렬출력, 252: 비교모듈, 252a, 252b: 입력, 252c: 1-비트 출력, 253: 배타적 논리합 모듈, 253a, 253b: 병렬입력, 253c: 병렬출력, 254: 평가모듈, 254a: 병렬입력, 254c: 1-비트 출력, 255; 비트 마스크 서브회로, 255a, 255b: 입력, 255c: k-비트 출력, 260: 출력인에이블 서브회로, 260a, 260b: 1-비트 입력, 260c: 출력, 305: 기능블록 또는 서브회로, 305a, 305b: 병렬입력, 305c: 병렬출력, 310: 패리티예측서브회로, 310a, 210b: 병렬입력, 310c: 출력, 315: 보정블록 또는 서브회로, 315a, 315b: 입력, 315c: 출력, 315d, 315e: 할당서브회로, 315f, 315g:패리티 코드 발생회로, 315h, 315i:에러검출 서브회로, 315j: 에러위치탐색 서브회로, 315k: 에러보정서브회로.

Claims (27)

  1. 클록신호를 수신하는 에러보정회로에 있어서,
    제1 입력과 제2 입력으로부터 제1 출력을 발생하는 구성요소;
    상기 제1 출력, 제1 입력 및 제2 입력을 기반으로 상기 제1 출력에서 에러가 검출되었는지의 여부를 나타내는 에러 플래그를 발생하는 에러검출기;
    상기 제1 출력, 제1 입력 및 제2 입력을 기반으로 클록신호의 타이밍 이벤트로 시작하는 제1 시간대 이후에 보정출력을 발생하도록 된 보정발생기와;
    상기 클록신호의 타이밍 이벤트로 시작하는 제2 시간대 이후에 에러-보정회로의 출력을 발생하도록 된 출력발생기를 포함하고,
    상기 에러 플래그가 상기 제1 출력에서 에러가 검출되었음을 나타내는 경우 상기 제2 시간대는 상기 제1 시간대보다 더 길거나, 또는 상기 에러 플래그가 상기 제1 출력에서 에러가 검출되지 않았음을 나타내는 경우 상기 제2 시간대는 상기 제1 시간대보다 더 길지 않으며,
    상기 에러 플래그가 상기 제1 출력에서 에러가 검출되었음을 나타내는 경우 상기 에러-보정회로의 출력은 상기 제1 출력 및 보정출력의 조합을 포함함으로써 상기 제1 출력에서 검출된 에러가 보정되거나, 또는 상기 에러 플래그가 상기 제1 출력에서 에러가 검출되지 않았음을 나타내는 경우 상기 에러-보정회로의 출력은 상기 제1 출력과 직접 일치하는 것을 특징으로 하는 에러보정회로.
  2. 제1항에 있어서,
    상기 출력발생기는 출력을 갖는 출력레지스터를 포함하고, 상기 출력레지스터의 출력은 상기 에러-보정회로의 출력이며, 상기 출력발생기는 상기 에러 플래그가 상기 제1출력에서 에러가 검출되었음을 나타내면 상기 출력레지스터가 자신의 출력을 업데이트하는 것을 지연시키도록 구성됨으로써 상기 제2 시간대가 상기 제1 시간대보다 더 길어지도록 하는 것을 특징으로 하는 에러보정회로.
  3. 제1항 또는 제2항에 있어서,
    상기 출력발생기는 상기 클록신호와 에러 플래그를 기반으로 게이트 클록을 발생하는 출력인에이블 구성요소를 포함하고, 상기 출력레지스터는 자신의 클록 입력시 상기 게이트 클록을 수신함으로써 상기 에러 플래그가 상기 제1 출력에서 에러가 검출되었음을 나타내면 상기 출력레지스터가 자신의 출력을 업데이트하는 것을 지연시키는 것을 특징으로 하는 에러보정회로.
  4. 제1항 또는 제2항에 있어서,
    체크-비트 발생기를 더 포함하고,
    상기 체크-비트 발생기는 상기 제1 입력 및 제2 입력을 기반으로 하나 이상의 체크 비트를 발생하며,
    상기 에러검출기와 보정발생기는 상기 제1 출력 및 상기 하나 이상의 체크 비트를 기반으로 각각 상기 에러 플래그와 보정출력을 발생하도록 된 것을 특징으로 하는 에러보정회로.
  5. 제4항에 있어서,
    상기 에러검출기는 제1 결과와 하나 이상의 체크 비트를 기반으로 상기 에러 플래그를 발생하도록 되되, 상기 에러 플래그는 상기 에러검출기가 상기 에러검출기가 검출하도록 된 복수의 상이한 에러 중의 하나를 검출하였는지의 여부를 나타내고, 상기 복수의 상이한 에러는 상기 제1 출력의 에러 및 하나 이상의 체크 비트의 에러를 포함하는 것을 특징으로 하는 에러보정회로.
  6. 제4항에 있어서,
    상기 보정발생기는 상기 제1 출력 및 하나 이상의 체크 비트를 기반으로 상기 보정출력을 발생하도록 되고 상기 보정출력은 복수의 상이한 에러 중의 하나를 보정하도록 되며, 상기 복수의 상이한 에러는 상기 제1 출력의 에러 및 하나 이상의 체크 비트의 에러를 포함하는 것을 특징으로 하는 에러보정회로.
  7. 제4항에 있어서,
    상기 체크-비트 발생기는 별도로 상기 제1 출력을 발생함이 없이 상기 제1 입력 및 제2 입력으로부터 직접 상기 하나 이상의 체크 비트를 발생하도록 된 것을 특징으로 하는 에러보정회로.
  8. 제1항 또는 제2항에 있어서,
    상기 보정발생기는 에러위치다항식을 발생한 후 상기 에러위치다항식의 근을 검색함으로써 상기 보정출력을 발생하도록 되고, 상기 보정발생기는 상기 제1 출력에 일치하는 근만을 검색하는 것을 특징으로 하는 에러보정회로.
  9. 제1항 또는 제2항에 있어서,
    상기 제1 출력을 발생하도록 된 상기 구성요소는 상기 제1 입력 및 제2 입력에 산술연산을 수행함으로써 상기 제1출력을 발생하도록 된 것을 특징으로 하는 에러보정회로.
  10. 제9항에 있어서,
    상기 산술연산은 갈로아필드 GF(2k)를 통한 승산을 포함하는 유한체 연산인 것을 특징으로 하는 에러보정회로.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
KR1020147007752A 2011-08-26 2012-08-10 디지털 에러보정 KR102015148B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GB1114831.9 2011-08-26
GBGB1114831.9A GB201114831D0 (en) 2011-08-26 2011-08-26 Circuit with error correction
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
KR20140074305A KR20140074305A (ko) 2014-06-17
KR102015148B1 true KR102015148B1 (ko) 2019-08-27

Family

ID=44838816

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147007752A KR102015148B1 (ko) 2011-08-26 2012-08-10 디지털 에러보정

Country Status (9)

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

Families Citing this family (10)

* 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 上海爱信诺航芯电子科技有限公司 一种抵御能量分析攻击的解密方法及解密电路
US20220413959A1 (en) * 2021-06-25 2022-12-29 The Trustees Of Columbia University In The City Of New York Systems and methods for multi-use error correcting codes
WO2023080892A1 (en) * 2021-11-04 2023-05-11 Pqsecure Technologies, Llc Method and architecture for computing extension field arithmetic in a cryptosystem

Family Cites Families (35)

* 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
DE69526279T2 (de) * 1994-02-22 2002-10-02 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
JP3468657B2 (ja) * 1997-02-21 2003-11-17 松下電器産業株式会社 誤り訂正付遅延検波器
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
US7224296B2 (en) * 2002-04-18 2007-05-29 Koninklijke Philips Electronics N.V. Error-correcting binary run-length-limited product-code
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 誤り訂正処理装置
GB2428496A (en) * 2005-07-15 2007-01-31 Global Silicon Ltd Error correction for flash memory
US20080256415A1 (en) * 2005-09-27 2008-10-16 Nxp B.V. Error Detection/Correction Circuit as Well as Corresponding Method
US7810015B2 (en) * 2005-11-28 2010-10-05 Stmicroelectronics Sa Decoding with a concatenated error correcting code
CN100507878C (zh) * 2005-11-30 2009-07-01 株式会社东芝 访问控制设备、方法和存储器访问控制设备、方法
CN101374217B (zh) * 2007-08-22 2010-06-09 联咏科技股份有限公司 具有错误校正装置的数据限幅器
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

Also Published As

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

Similar Documents

Publication Publication Date Title
KR102015148B1 (ko) 디지털 에러보정
Guo et al. Enhanced memory reliability against multiple cell upsets using decimal matrix code
Rahman et al. Soft error tolerance using horizontal-vertical-double-bit diagonal parity method
Gul et al. Joint crosstalk aware burst error fault tolerance mechanism for reliable on-chip communication
Reviriego et al. A method to extend orthogonal Latin square codes
Samanta et al. Compact CA-based single byte error correcting codec
Poolakkaparambil et al. Low complexity cross parity codes for multiple and random bit error correction
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
Farheen et al. Error Detection and Correction Using RP SEC-DED
Khorasani et al. Analyzing area penalty of 32-Bit fault tolerant ALU using BCH code
Bhargavi et al. H-matrix based error correction codes for memory applications
Fu et al. Burst error detection hybrid ARQ with crosstalk-delay reduction for reliable on-chip interconnects
Mădălin et al. Unidirectional error detection, localization and correction for DRAMs: Application to on-line DRAM repair strategies
Samanta et al. Compact and high-speed Hsiao-based SEC-DED codec for cache memory
Sundary et al. Multiple error detection and correction over GF (2 m) using novel cross parity code
Saha Software implemented fault tolerance through data error recovery
US20140344652A1 (en) Method for generating a maximized linear correcting code, method and device for decoding such a code
Ayoob et al. Fault detection and correction in processing AES encryption algorithm
Asha et al. Implementation of Sha-3 for Security and Error Detection and Correction Mechanism to Enhance Memory Reliabilty
Abbas et al. Multiple cell upsets tolerant content-addressable memory
Zenki et al. Protection of Memory Using Code Redundancies: A Brief Study
Li et al. A method to design 5-bit burst error correction code against the multiple bit upset (MBU) in memories
Kurian et al. Performance comparison of an error correction technique in memory
Hao et al. A study on the hardware implementation of EDAC

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant