KR20080052039A - 순환 중복 검사에 의한 정정 에러를 검사하는 방법 및 그장치 - Google Patents

순환 중복 검사에 의한 정정 에러를 검사하는 방법 및 그장치 Download PDF

Info

Publication number
KR20080052039A
KR20080052039A KR1020060124044A KR20060124044A KR20080052039A KR 20080052039 A KR20080052039 A KR 20080052039A KR 1020060124044 A KR1020060124044 A KR 1020060124044A KR 20060124044 A KR20060124044 A KR 20060124044A KR 20080052039 A KR20080052039 A KR 20080052039A
Authority
KR
South Korea
Prior art keywords
value
error
modular
syndrome
unit
Prior art date
Application number
KR1020060124044A
Other languages
English (en)
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 삼성전자주식회사
Priority to KR1020060124044A priority Critical patent/KR20080052039A/ko
Priority to US11/689,627 priority patent/US20080134001A1/en
Priority to PCT/KR2007/005679 priority patent/WO2008069465A1/en
Publication of KR20080052039A publication Critical patent/KR20080052039A/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
    • 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
    • H03M13/091Parallel or block-wise CRC computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

순환 중복 검사에 의한 정정 에러를 검사하는 방법 및 그 장치가 개시된다. 본 발명에 따른 순환 중복 검사에 의한 정정 에러를 검사하는 방법은, 수신어로부터 신드롬을 계산하여 저장하는 단계; 상기 수신어를 순환 중복 검사에 의하여 오류 정정하여 생성된 오류값을 비트별로 묶어서 출력하는 단계; 상기 비트별로 묶어서 출력되는 오류값을 제1 함수부와 제2 함수부로 분해하는 단계; 룩업 테이블을 이용하여 상기 제1 함수부를 모듈러시킨 제1 모듈러 값을 검출하는 단계; 상기 제2 함수부를 모듈러 연산시켜 제2 모듈러 값을 생성하는 단계; 상기 제1 모듈러 값과 상기 제2 모듈러 값을 연산하고 다시 모듈러 시켜 부분 신드롬 값을 생성하는 단계; 및 상기 부분 신드롬값을 누적하여 정정 에러 여부를 판단하는 단계를 포함함으로써, 트레이드 오프 관계에 있는 정정 에러를 검사하는 장치의 용량과 정정 에러 검사의 속도를 적절하게 제어할 수 있다.

Description

순환 중복 검사에 의한 정정 에러를 검사하는 방법 및 그 장치{Method for checking correcting errors correcting by cyclic redundancy checking and apparatus thereof}
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도1은 CRC 방법을 사용한 일반적인 저장장치 및 통신장치를 나타낸 도면이다.
도 2은 종래 기술에 따른 직렬계산 방식의 CRC 부호/복호화 장치(10)를 나타낸 도면이다.
도 3는 종래 기술에 따른 병렬계산 방식의 CRC 부호/복호화 장치(20)를 나타낸 도면이다.
도 4는 본 발명의 실시예에 따른 CRC 복호화 장치(100)이다.
도 5는 본 발명의 실시예에 따른 고속 모듈러부(110)를 확대한 도면이다.
도 6은 본 발명의 실시예에 따른 오류 정정의 에러 검사 방법을 나타내는 도면이다.
본 발명은 데이터 통신에서 사용되는 오류 정정 방법에 관한 것으로, 구체적으로는 순환 중복 검사(Cyclic Redundancy Checking, 이하 "CRC"라 함)에 의한 정정 에러를 검사하는 방법 및 그 장치 에 관한 것이다.
EDC(Error Detection Code, 오류 검출 부호)는 통신 또는 저장 시스템에서 수신 또는 읽기 신호가 오류를 포함하고 있을 때, 그 오류의 유무를 파악하는데 사용된다.
이때, 데이터 통신에서 전송되는 메시지에 발생될 수 있는 에러를 검출하기 위해서 패리티 검사(Parity check) 방법과 CRC 방법등이 사용되며, 이들 방법을 통하여 수신된 메시지에 포함되는 수신어에 발생되는 오류의 검출이 가능하다. 즉, 송신측에서는 원래의 메시지에 오류 체크를 위한 특정한 데이터를 덧붙여서 보내고, 수신측에서는 이를 기초로 하여 오류를 감지하게 된다. CRC 방법의 경우, 오류 체크를 위해 데이터가 덧붙여지고 채널에서 오류가 포함되었다면 수신 측에서 간단한 모듈러 연산을 통하여 오류의 유무를 알게 된다.
먼저 도 1은 CRC 방법을 사용한 일반적인 저장장치 및 통신장치를 나타낸 도면이다. 도 1에서 보는 바와 같이, 비트 스트림 형태로 정보어(Information Word)가 입력되면 비트 스트림에 패리티를 첨가하는 부호화 과정으로 부호어(Code Word)를 생성하게 된다. 즉, K 자리수의 비트 스트림을 다항식 형태로 나타내면 정보어를 I(x)=ik -1xk -1+...+i0x0 형태로 나타낼 수 있다. 이때, 정보어를 부호화하기 위해 원래의 정보어에 추가로 정보어를 모듈러 한 값을 패리티로 부가하면 (in -1xn -1+...+i0xn-k)+(in-1xn-1+...+i0xn-k) mod G(x) 형태를 갖는다. 이 연산 결과는 C(x)=cn -1xn-1+...+c0x0 형태의 n-1 차의 부호어가 된다.
이와 같이 생성된 부호어를 채널을 통해 전송하면, 수신부에서는 R(x)=rn -1xn -1+...+r0x0 형태의 수신어(Received Word)가 입력된다. 이때, 채널을 통하여 전송되는 과정에서 노이즈 E(x)=en -1xn -1+...+e0x0가 발생될 수 있다. 따라서 수신어는 (cn -1+en-1)xn-1+...+(c0+e0)x0와 같이 부호어와 노이즈의 합으로 표현될 수 있다. 만약, 수신어에 노이즈가 없다면 수신어가 부호어가 되고 복호화 과정으로 이를 G(x)로 모듈러를 취하면 아래 수학식 1과 같이 각 계수가 같은 비트 값끼리 서로 덧셈되어 나머지 값이 0이 된다.
C(x) mod G(x)
=(cn -1 xn -1+...+ c0x0) mod G(x)
={(ik -1xn -1 +...+ i0xn -k)+(ik -1xn -1 +...+ i0xn -k) mod G(x)} mod G(x)
= (ik -1xn -1 +...+ i0xn -k) mod G(x)+ (ik -1xn -1 +...+ i0xn -k) mod G(x)
= {(ik -1+ik -1)xn -1 +...+ (i0+i0)xn -k)} mod G(x)
= 0
그러나 노이즈가 있다면 수신어는 부호어와 노이즈의 합이고, 수신어에 G(x)로 모듈러를 취한 결과는 아래와 같이 부호어와 노이즈에 각각 모듈러를 취하고 각각의 나머지를 합하는 경우이다. 부호어에 모듈러를 취한 결과는 노이즈가 없는 경우와 마찬가지로 0이 되는 반면, 노이즈에 모듈러를 취한 결과는 0 이 되지 않으므로 나머지의 합은 0 이 되지 않는다. 이때, 수신어에 G(x)로 모듈러를 취한 나머지를 CRC 신드롬(CRC Syndrome)이라고 한다. 따라서, 수신어에 G(x)로 모듈러를 취하여 나머지가 0 인지 아닌지에 따라 수신어에 오류가 포함이 되어있는지 검출하도록 한다.
R(x) mod G(x)
= (rn -1xn -1 +...+ r0x0) mod G(x)
= {(cn -1+en -1)xn -1 +...+ (c0+e0)x0} mod G(x)
= (cn -1xn -1 +...+ c0x0) mod G(x)+ (en -1xn -1 +...+ e0x0) mod G(x)
= (en -1xn -1 +...+ e0x0) mod G(x)
이때, CRC 패리티/신드롬을 생성하는 CRC 부호/복호화 장치의 종래 방법으로 도 2과 같이 LFSR(Linear Feedback Shift Register)를 이용하는 방법과 도 3와 같이 XOR 배열을 이용하는 방법이 있다.
도 2는 종래 기술에 따른 직렬계산 방식의 CRC 부호/복호화 장치(10)를 나타낸 도면이다. 도 2에서 보는 바와 같이, 직렬계산 방식의 CRC 부호/복호화 장치(10)는 배타적 논리합(Exclusive OR; 11)과 지연소자(Delay Element; 12)로 구성되며, 1비트 단위로 계산이 수행된다. 특히 비트 단위의 정보어나 부호어가 고차항인 MSB(Most Significant Bit)부터 순차적으로 입력되거나, 저차항인 LSB(Least Significant Bit)부터 순차적으로 입력되는 경우, 쉬프트 레지스터를 이용하여 효율적으로 부호/복호화를 수행할 수 있다.
도 3는 종래 기술에 따른 병렬계산 방식의 CRC 부호/복호화 장치(20)를 나타낸 도면이다. 도 3에서 보는 바와 같이, 병렬 CRC 계산은 바이트(8비트) 또는 워드(16비트) 단위로 입력되는 병렬 데이터에 대해 레지스터(22)에 저장된 데이터와의 배타적인 논리합(Exclusive OR, 이하 "XOR"이라 함) 배열(23)에 의해 수행된다. 그러나 데이터의 전송 속도가 10Gbps급으로 향상되면서 입력되는 바이트나 워드 단위의 병렬 구조 적용에 있어 프로세서의 속도 및 제어부(21)의 작업 처리량에 제한을 받는다.
한편, CRC 부호/복호화 장치의 응용에 따라서 정보어/수신어의 MSB나 LSB로부터의 순차적 입력이 불가능하거나 비효율적인 경우가 발생한다. 통신 시스템의 경우에는 한 시스템에서 생성한 CRC 부호어를 수신한 다른 시스템이 일부의 데이터만을 변경하기도 한다. 이때, 변경된 부호어 전체에 대하여 CRC 부호를 계산하게 되면 매우 비효율적이고 속도가 떨어지므로, 변경된 데이터만을 이용하여 이전에 생성된 부호어의 패리티에 반영하는 것이 효율적이다. 저장 시스템의 경우, 읽기 신호의 수신어에 대해서 별도의 오류 정정 부호로 오류를 정정하고 추후로 CRC 부호를 사용하여 오류의 잔류 유무를 파악한다. 이와 같이, 오류 정정이 다 끝난 데이터를 대상으로 복호화하는 경우, 도 2의 방법을 사용하는 경우 구성상으로 간단하나 시간적으로도 비효율적이다. 따라서 오류 정정으로 변경된 일부 데이터 만을 복호화하는 것이 효율적이다.
따라서, 최근 고속 저장 시스템에서 오류 정정 후에 CRC 검사를 이용하는 경우 고속 처리가 어려워지므로, 오류를 포함한 수신어에 대해서 미리 CRC 복호를 수행하여 CRC 신드롬을 계산하고, 오류 정정시에 정정 정보만을 이용하여 동시에 미리 계산한 CRC 신드롬을 갱신하는 방식으로 CRC 부호의 복호화를 수행하는 것이 고려되고 있다. 이는 정정 정보가 비순차적인 입력의 성격을 가지며, 복호화 뿐만 아니라 비순차적인 입력을 갖는 CRC 부호의 패리티 부호화에도 응용될 수 있다.
이때, 정보어나 수신어가 비순차적으로 입력되는 경우에 CRC 부호/복호화하는 속도를 증가시키기 위한 여러 방법들이 제안되었다.
먼저, 도 1의 부호화/복호화 과정에서 나타낸 생성다항식 G(x)가 일반적으로 (x+1)과 더 이상 약분될 수 없는 기약 다항식 G'(x)의 곱으로 구성된다는 특징을 이용하여, 기약 다항식 G'(x)로 모듈러(modular) 연산을 취하면 대수학적으로 유한 체가 생성된다. 유한체로 표현되는 경우, 연산이 단순해진다는 것을 이용하여 연산을 수행하고, 이 결과를 생성다항식 G(x)을 이용한 결과로 복원을 할 수 있다. 이때, 간단해진 연산의 장점을 구현하기 위해 유한체 원소로의 변환이 필요한데 이를 위하여, 룩업 테이블(Look up Table)을 미리 설정해야한다.
이 방법을 이용할 경우 생성 다항식 G(x)의 차수가 낮은 경우에는 고속으로 부호/복호화를 수행할 수 있다. 그러나, 생성 다항식 G(x)의 차수가 높은 경우에는 룩업 테이블의 용량도 증가해야 하므로 한계가 있다는 문제점이 있다. 즉, 생성 다항식의 차수가 32차인 경우 룩업 테이블의 크기는 232가 필요하므로, 고차의 생성 다항식의 경우 적합하지 않다.
다른 방법은, 수신어를 아래와 같이 몇 개의 비트 단위로 묶여서 비순차적으로 입력되는 경우를 가정한다. 수학식 3에서 보여주듯이 각 비트-묶음 별로 G(x)로 모듈러를 취하고 이 나머지들을 누적하여도 같은 CRC 신드롬을 얻음을 알 수 있다. 더구나 부호어에 G(x)로 모듈러를 취하면 0이 되므로 각 비트-묶음 별로 오류값만 G(x)로 모듈러를 취하여 누적하여도 같은 결과를 얻는다.
이때, "비트-묶음별"이란 수학식 3과 같이, 고차식의 비트로 나타낸 수신어에 있어서, 복수의 비트에 대하여 하나의 인수로 묶어서 전개하여 나타내는 방식을 의미한다.
R(x) mod G(x)
= {(rn -1xn -1 +...)+...+(rqxq +...+rpxp)+...+(...+r0x0)} mod G(x)
= ...+(rqxq +...+rpxp) mod G(x)+...
= ...+{(cq+eq)xq +...+(cp+ep)xp} mod G(x)+...
= ...+{(cq+eq)xq +...+(cp+ep)xp} mod G(x)+...
= ...+(eqxq +...+epxp) mod G(x)+...
= ...+(eqxq -p +...+epx0) xp mod G(x)+...
= ...+E'(x) xp mod G(x)+...
위 수학식 3과 같이 비순차적으로 수신어가 입력될 때, 각 비트-묶음 별로 오류 성분만 G(x)로 모듈러를 취하여 얻은 나머지를 부분 신드롬이라고 부를 수 있다. 이를 누적하여 얻게 되는 값은 신드롬이 되는데, 수신어에서 오류 값만을 찾는 것을 일반적으로 오류 정정이라고 부른다. 따라서 오류 정정에 의해 얻어진 오류 성분을 모듈러한 결과가 신드롬이 된다.
위 사실에 바탕을 두어 비트-묶음 별로 입력되는 오류 값 E'(x) xp 에서 지수 p를 2048a+128b+8c로 바꿔 쓸 수가 있고 생성다항식 G(x)에 대한 모듈러 연산을 하게 되면 수학식 4과 같이 나타낼 수 있다.
E(x)modG(x)=(E'(x)modG(x))(x2048modG(x))a(x128modG(x))b(x8modG(x))c
이때, 룩업테이블을 사용하지 않으므로 부호/복호화 장치의 용량에 제한은 없으나, 반복 연산을 사용해야 하므로 고속으로 부호/복호화를 수행할 수 없다는 문제점이 있다.
본 발명이 이루고자 하는 기술적 과제는 CRC 방법에 관한 것으로, 비순차적으로 입력되는 정보어/수신어에서 검출된 오류의 정정에 있어서, 정정 에러를 고속으로 CRC 검사하는 방법 및 그 장치를 제공하는 것이다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 정정 에러 검사 방법은, 수신어로부터 신드롬을 계산하여 저장하는 단계; 상기 수신어를 순환 중복 검사에 의하여 오류 정정하여 생성된 오류값을 비트별로 묶어서 출력하는 단계; 상기 비트별로 묶어서 출력되는 오류값을 제1 함수부와 제2 함수부로 분해하는 단계; 룩업 테이블을 이용하여 상기 제1 함수부를 모듈러시킨 제1 모듈러 값을 검출하는 단계; 상기 제2 함수부를 모듈러 연산시켜 제2 모듈러 값을 생성하는 단계; 상기 제1 모듈러 값과 상기 제2 모듈러 값을 연산하고 다시 모듈러 시켜 부분 신드롬 값을 생 성하는 단계; 및 상기 부분 신드롬값을 누적하여 정정 에러 여부를 판단하는 단계를 포함하는 것을 특징으로 한다.
이때, 상기 비트별로 묶어서 출력되는 오류값이 비순차적으로 입력되는 것을 특징으로 한다.
이때, 상기 비트별로 묶어서 출력되는 오류값은
Figure 112006090877843-PAT00001
형태로 설정되고, 상기 제1 함수부는 E'(x)·xd 로, 상기 제2 함수부는
Figure 112006090877843-PAT00002
로 분해되는 것을 특징으로 한다.
이때, 상기 변수 t 값에 따라 상기 룩업 테이블의 용량과 상기 제2 모듈러 값을 생성하는 속도가 결정되는 것을 특징으로 한다.
이때, 상기 변수 t 값이 감소하면 상기 룩업 테이블의 용량이 증가하고 상기 제2 모듈러를 생성하는 속도가 증가하며, 상기 변수 t 값이 증가하면 상기 룩업 테이블의 용량이 감소하고 상기 제2 모듈러를 생성하는 속도가 감소하는 것을 특징으로 한다.
이때, 상기 누적된 부분 신드롬값을 저장된 신드롬값과 XOR 연산하여 상기 오류 정정의 에러 여부를 결정하는 것을 특징으로 한다.
이때, 상기 XOR 연산한 결과가 0이면 오류 정정에 에러가 발생하지 않은 것으로 판단하고, 0이 아니면 오류 정정에 에러가 발생한 것으로 판단하는 것을 특징으로 한다.
또한, 본 발명에 따른 본 발명에 따른 정정 에러 검사 장치는, 수신어를 순 환 중복 검사에 의하여 오류 정정하여 생성된 오류값을 비트별로 묶어서 출력하는 오류 정정부; 상기 비트별로 묶어서 출력되는 오류값을 제1 함수부와 제2 함수부로 분해하여, 상기 제1 함수부와 상기 제2 함수부를 각각 모듈러 연산하여 부분 신드롬 값을 생성하는 모듈러부; 상기 수신어로부터 계산된 신드롬을 저장하며, 상기 비트별로 묶어서 출력되는 오류값에 대한 각각의 부분 신드롬값들을 누적하여 저장하는 신드롬 저장부; 및 상기 저장된 신드롬값과 상기 부분 신드롬값을 연산하여 상기 오류 정정의 에러 여부를 결정하는 제1 논리 연산부를 포함하는 것을 특징으로 한다.
이때, 상기 모듈러부는, 상기 비트별로 묶어서 출력되는 오류값을 상기 제1 함수부와 상기 제2 함수부로 분해하는 제어부; 상기 제1 함수부에 대한 제1 모듈러 값을 저장하고 있는 룩업 테이블; 상기 제2 함수부를 모듈러 연산시켜 제2 모듈러 값을 생성하는 제1 모듈러기; 및 상기 제1 모듈러 값과 상기 제2 모듈러 값을 연산하고 다시 모듈러 시켜 신드롬 값을 출력하는 제2 모듈러기를 포함하는 것을 특징으로 한다.
이때, 상기 XOR 연산하여 누적된 신드롬값은 상기 신드롬 저장부에 저장되는 것을 특징으로 한다.
이때, 상기 수신어에 대하여 순환 중복 검사를 통하여 상기 신드롬을 계산하는 수신어 신드롬 계산부를 더 포함하는 것을 특징으로 한다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도 면 및 도면에 기재된 내용을 참조하여야 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
이하 도 4 및 도 5에서는, 본 발명의 실시예를 통하여 오류 정정의 에러 여부를 고속으로 판단하는 장치에 대하여 설명하기로 한다. 여기서 정정의 에러란 수신어에 대하여 전송과정에서 에러가 생겨 오류가 발생하였을 때, CRC에 의해 오류를 정정하는데 있어서 완전히 오류의 정정을 수행하지 못한 상태를 의미하며, 도 4 및 도 5를 통하여 오류의 정정 수행 여부를 판단할 수 있도록 한다.
도 4는 본 발명의 실시예에 따른 CRC 복호화 장치(100)이다. 도 4에서 보는 바와 같이, 수신어의 전체 오류값(E(x))에서 비트-묶음별로 오류값 E'(x)·xp을 비순차적으로 출력하는 오류 정정부(105), 비트-묶음별 오류값을 고속으로 모듈러 시켜 부분 신드롬을 생성하는 고속 모듈러부(110), 수신어 신드롬을 최초 저장하고 이후 정정으로 생기는 부분 신드롬들을 누적하는 신드롬 저장부(120), 배타적 논리합(XOR; 130) 및 오류 검출 이전에 수신어를 대상으로CRC 신드롬을 계산하는 수신어 신드롬 계산부(140)를 포함한다.
도 5는 본 발명의 실시예에 따른 고속 모듈러부(110)를 확대한 도면이다. 도 5에서 보는 바와 같이 고속 모듈러부(110)는 제어부(111), 룩업테이블(112), 제1 모듈러 연산기(114) 및 제2 모듈러 연산기(116)를 포함한다.
먼저, 도 4에서 보는 바와 같이 검출된 비트-묶음별 오류값 E'(x)·xp의 지수를 p=k·2t+d로 표현하고, 오류 정정부(105)에서 출력된 비트-묶음별 오류값은 고속 모듈러부(110)로 입력되어 오류의 정정이 제대로 되었는지 검사를 하게 된다. 고속 모듈러부(110)는 입력된 비트-묶음별 오류값인
Figure 112006090877843-PAT00003
을 모듈러 처리하여 부분 신드롬을 신드롬 저장부(120)로 전송하고, 신드롬 저장부(120)는 부분 신드롬을 지속적으로 누적하여 저장한다.
그리고, 배타적 논리합(XOR; 130)은 이전에 누적된 신드롬 값에 대하여 새로이 입력되는 부분 신드롬과 XOR 연산하여 그 결과를 신드롬 저장부(120)에 출력하며, 신드롬 저장부(120)에는 오류값(E(x))에 대한 신드롬 값이 저장하게 된다.
한편, 오류 정정 전에 수신어 신드롬 계산부(140)에서 생성하고 신드롬 저장부(120)에 저장한 값은 수학식 2에서 보였듯이 전체 오류 E(x)에 관한 것이다. 만약, 오류 정정부(105)에서 성공적으로 모든 오류값을 찾고 고속 모듈러부(110)에서 부분 신드롬들을 계산하여 누적하게 되면 수신어 신드롬 계산부(140)에서 생성한 값과 같게 되므로 신드롬 저장부(120)에 저장된 값은 0으로 변경된다. 따라서 만일 그 결과가 0이 아니면 오류의 정정이 제대로 수행되지 않은 것으로 판단하여 다시 부호어를 송신하도록 한다.
즉, 수신어에 대해 신드롬을 계산하여 저장하고 오류 정정을 통해서 비순차적으로 오류값이 입력될 때, 각각의 오류값에 대하여 모듈러를 수행하여 XOR 연산을 통해 누적한 뒤, 오류의 정정이 성공적으로 되었는지를 판단하게 된다.
이때, 도 5에서 보는 바와 같이, 제어부(111)는 고속 모듈러부(110)로 입력되는 비트-묶음별 오류값인
Figure 112006090877843-PAT00004
을 다시 E'(x),
Figure 112006090877843-PAT00005
및 xd 로 분해하여 각각 룩업 테이블(112)와 제1 모듈러 연산기(114)로 나누어 입력한다.
즉,
Figure 112006090877843-PAT00006
를 룩업 테이블(112)로 입력하여, 미리 설정된 룩업 테이블(112)에 의해
Figure 112006090877843-PAT00007
modG(x)의 값을 얻는다. 마찬가지로, E'(x) 및 xd 를 제1 모듈러 연산기(114)로 입력하면 E'(x)·xd mod(x) 값을 얻을 수 있다. 이와 같은 생성된
Figure 112006090877843-PAT00008
·modG(x)와 E'(x)·xd modG(x) 값이 다시 제2 모듈러 연산기(116)로 입력되면, 제2 모듈러 연산기(116)는 입력된 값을 곱셈한뒤 다시 모듈러를 수행하여 최종값인
Figure 112006090877843-PAT00009
modG(x)을 생성하고, 신드롬 저장부(120)로 출력한다.
따라서, 고속 모듈러부(110)는 기본적인 모듈러 연산 공식을 이용하여 다음의 수학식 5와 같이
Figure 112006090877843-PAT00010
modG(x)을 구하게 된다.
Figure 112006090877843-PAT00011
Figure 112006090877843-PAT00012
modG(x)= (modG(x))(E'(x)xd modG(x))modG(x)
따라서, 도 5와 같이 고속 모듈러부(110)의 제어부(111)는 비트-묶음별 오류값인
Figure 112006090877843-PAT00013
Figure 112006090877843-PAT00014
및 E'(x), xd 로 분해함으로써,
Figure 112006090877843-PAT00015
값에 대해서는 룩업 테이블(112)을 이용하여 모듈러 값을 얻고, E'(x), xd에 대해서는 종래의 LFSR 회로 방식을 응용하는 제1 모듈러 연산기(114)를 통해 모듈러를 수행한다.
이때, 룩업 테이블(112)에 입력되는 t 값을 이용하여 룩업 테이블(112)의 크기와 제1 모듈러 연산기(114)의 계산 속도를 조절할 수 있다.
즉, t 값이 작아지면 룩업 테이블(112)의 크기가 커지는 반면에 제1 모듈러 연산기(114)의 계산 속도는 증가한다. 반면, t 값이 커지면 룩업 테이블(112)의 크기는 작아지는 반면 제1 모듈러 연산기(114)의 회로는 커지고 계산 속도는 감소한다. 이와 같이 룩업 테이블(112)의 크기와 제1 모듈러 연산기(114)의 계산 속도는 서로 트레이드 오프(trade off) 관계에 있으므로, 원하는 속도에 따라 t 값을 조절하여 룩업 테이블(112)의 크기와 제1 모듈러 연산기(114)의 속도를 결정할 수 있다.
도 6은 본 발명의 실시예에 따른 오류 정정의 에러 검사 방법을 나타내는 도면이다.
먼저 수신어 신드롬 계산부(140)는 수신어로부터 신드롬 값을 계산 후 신드롬 저장부(120)에 저장한다(S10). 그리고 오류 정정부(105)는 수신어의 오류 정정을 통해서 비트-묶음별 오류값을 검출하여 고속 모듈러부(110)로 출력한다(S20). 고속 모듈러부(110)의 제어부(111)는 검출된 비트-묶음별 오류값을 분해한다(S30). 즉, 비트-묶음별 오류값
Figure 112006090877843-PAT00016
Figure 112006090877843-PAT00017
및 E'(x), xd 로 분해하여,
Figure 112006090877843-PAT00018
값에 대해서는 룩업 테이블(112)을 이용하여 모듈러 값을 검출하고(S40), E'(x)와 xd에 대해서는 제1 모듈러 연산기(114)를 통해 모듈러 곱셈 연산을 수행한다(S50).
그리고, 제2 모듈러 연산기(116)는 생성된
Figure 112006090877843-PAT00019
modG(x)와 E'(x)·xdmodG(x)값을 곱셈한뒤 다시 모듈러를 수행하여(S60), 부분 신드롬값을 생성하고(S70), 생성된 부분 신드롬값을 신드롬 저장부(120)에 저장된 값과 XOR 연산을 하여 연산된 결과값을 다시 신드롬 저장부에 저장한다(S80). 그리고, 모든 부분 신드롬값이 누적되어 새로운 신드롬 값이 생성되면, 그 결과에 따라 오류의 정정에 에러가 발생하였는지를 판단하게 된다.
이때, 앞서 설명한 바와 같이, 룩업 테이블(112)에 입력되는 t 값을 미리 설정하여 트레이드 오프 관계에 있는 룩업 테이블(112)의 크기와 제1 모듈러 연산기(114)의 계산 속도를 조절할 수 있다. 그리고 본 발명이 수신어의 복호의 오류 정정에서 오류 값의 비순차적 입력되는 조건으로 설명하였으나 부호화 과정에서 정보어가 비순차적으로 입력될 때CRC 패리티 생성, 복호화 과정에서 수신어가 비순차적으로 입력될 때 CRC 신드롬 생성에서도 용이하게 적용될 수 있다. 따라서 정보어/수신어/오류값에 대한 CRC 방법과 관련된 기술에 폭 넓게 적용될 수 있다.
한편, 본 발명에 따른 순환 중복 검사에 의한 정정 에러 검사 방법은 컴퓨터 프로그램으로 작성 가능하다. 상기 프로그램을 구성하는 코드들 및 코드 세그먼트들은 당해 분야의 컴퓨터 프로그래머에 의하여 용이하게 추론될 수 있다. 또한, 상기 프로그램은 컴퓨터가 읽을 수 있는 정보저장매체(computer readable media)에 의해 저장되고, 컴퓨터에 의하여 읽혀지고 실행됨으로써 순환 중복 검사에 의한 정정 에러 검사 방법을 구현한다. 상기 정보저장매체는 자기 기록 매체, 광 기록매체 및 캐리어 웨이브 매체를 포함한다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이 본 발명에 따른 CRC 방법에 의해 비순차적으로 입력되는 비트-묶음 별 오류값
Figure 112006090877843-PAT00020
의 t 값을 조절함으로써, 트레이드 오프 관계에 있는 정정 에러를 검사하는 장치의 용량과 정정 에러 검사의 속도를 적절하게 제어할 수 있다.

Claims (17)

  1. 수신어로부터 신드롬을 계산하여 저장하는 단계;
    상기 수신어를 순환 중복 검사에 의하여 오류 정정하여 생성된 오류값을 비트별로 묶어서 출력하는 단계;
    상기 비트별로 묶어서 출력되는 오류값을 제1 함수부와 제2 함수부로 분해하는 단계;
    룩업 테이블을 이용하여 상기 제1 함수부를 모듈러시킨 제1 모듈러 값을 검출하는 단계;
    상기 제2 함수부를 모듈러 연산시켜 제2 모듈러 값을 생성하는 단계;
    상기 제1 모듈러 값과 상기 제2 모듈러 값을 연산하고 다시 모듈러 시켜 부분 신드롬 값을 생성하는 단계; 및
    상기 부분 신드롬값을 누적하여 정정 에러 여부를 판단하는 단계를 포함하는 것을 특징으로 하는 정정 에러 검사 방법.
  2. 제1항에 있어서,
    상기 비트별로 묶어서 출력되는 오류값이 비순차적으로 입력되는 것을 특징으로 하는 정정 에러 검사 방법.
  3. 제2항에 있어서,
    상기 비트별로 묶어서 출력되는 오류값은
    Figure 112006090877843-PAT00021
    형태로 설정되고, 상기 제1 함수부는 E'(x)·xd 로, 상기 제2 함수부는
    Figure 112006090877843-PAT00022
    로 분해되는 것을 특징으로 하는 정정 에러 검사 방법.
  4. 제3항에 있어서,
    상기 변수 t 값에 따라 상기 룩업 테이블의 용량과 상기 제2 모듈러 값을 생성하는 속도가 결정되는 것을 특징으로 하는 정정 에러 검사 방법.
  5. 제4항에 있어서,
    상기 변수 t 값이 감소하면 상기 룩업 테이블의 용량이 증가하고 상기 제2 모듈러를 생성하는 속도가 증가하며, 상기 변수 t 값이 증가하면 상기 룩업 테이블의 용량이 감소하고 상기 제2 모듈러를 생성하는 속도가 감소하는 것을 특징으로 하는 정정 에러 검사 방법.
  6. 제1항에 있어서,
    상기 누적된 부분 신드롬값을 저장된 신드롬값과 XOR 연산하여 상기 오류 정정의 에러 여부를 결정하는 것을 특징으로 하는 정정 에러 검사 방법.
  7. 제6항에 있어서,
    상기 XOR 연산한 결과가 0이면 오류 정정에 에러가 발생하지 않은 것으로 판단하고, 0이 아니면 오류 정정에 에러가 발생한 것으로 판단하는 것을 특징으로 하는 정정 에러 검사 방법.
  8. 수신어를 순환 중복 검사에 의하여 오류 정정하여 생성된 오류값을 비트별로 묶어서 출력하는 오류 정정부;
    상기 비트별로 묶어서 출력되는 오류값을 제1 함수부와 제2 함수부로 분해하여, 상기 제1 함수부와 상기 제2 함수부를 각각 모듈러 연산하여 부분 신드롬 값을 생성하는 모듈러부;
    상기 수신어로부터 계산된 신드롬을 저장하며, 상기 비트별로 묶어서 출력되는 오류값에 대한 각각의 부분 신드롬값들을 누적하여 저장하는 신드롬 저장부; 및
    상기 저장된 신드롬값과 상기 부분 신드롬값을 연산하여 상기 오류 정정의 에러 여부를 결정하는 제1 논리 연산부를 포함하는 것을 특징으로 하는 정정 에러 검사 장치.
  9. 제8항에 있어서,
    상기 모듈러부는,
    상기 비트별로 묶어서 출력되는 오류값을 상기 제1 함수부와 상기 제2 함수부로 분해하는 제어부;
    상기 제1 함수부에 대한 제1 모듈러 값을 저장하고 있는 룩업 테이블;
    상기 제2 함수부를 모듈러 연산시켜 제2 모듈러 값을 생성하는 제1 모듈러기; 및
    상기 제1 모듈러 값과 상기 제2 모듈러 값을 연산하고 다시 모듈러 시켜 신드롬 값을 출력하는 제2 모듈러기를 포함하는 것을 특징으로 하는 정정 에러 검사 장치.
  10. 제9항에 있어서,
    상기 비트별로 묶어서 출력되는 오류값이 비순차적으로 입력되는 것을 특징으로 하는 정정 에러 검사 장치.
  11. 제10항에 있어서,
    상기 제어부는,
    상기 제1 함수부를 E'(x)·xd 로, 상기 제2 함수부를
    Figure 112006090877843-PAT00023
    로 설정하여, 상기 상기 비트별로 묶어서 출력되는 오류값을 분해시키는 것을 특징으로 하는 정정 에러 검사 장치.
  12. 제11항에 있어서,
    상기 변수 t 값에 따라 상기 룩업 테이블의 용량과 상기 제2 모듈러 값을 생성하는 속도가 결정되는 것을 특징으로 하는 정정 에러 검사 장치.
  13. 제8항에 있어서,
    상기 제1 논리 연산부는 XOR 게이트인 것을 특징으로 하는 정정 에러 검사 장치.
  14. 제13항에 있어서,
    상기 XOR 연산하여 누적된 신드롬값이 0이면 오류 정정에 에러가 발생하지 않은 것으로 판단하고, 0이 아니면 오류 정정에 에러가 발생한 것으로 판단하는 것을 특징으로 하는 정정 에러 검사 장치.
  15. 제14항에 있어서,
    상기 XOR 연산하여 누적된 신드롬값은 상기 신드롬 저장부에 저장되는 것을 특징으로 하는 정정 에러 검사 장치.
  16. 제8항에 있어서,
    상기 수신어에 대하여 순환 중복 검사를 통하여 상기 신드롬을 계산하는 수신어 신드롬 계산부를 더 포함하는 것을 특징으로 하는 정정 에러 검사 장치.
  17. 제1항 내지 제7항에 기록된 방법 중 하나를 컴퓨터에 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020060124044A 2006-12-04 2006-12-07 순환 중복 검사에 의한 정정 에러를 검사하는 방법 및 그장치 KR20080052039A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020060124044A KR20080052039A (ko) 2006-12-07 2006-12-07 순환 중복 검사에 의한 정정 에러를 검사하는 방법 및 그장치
US11/689,627 US20080134001A1 (en) 2006-12-04 2007-03-22 Method and apparatus for checking correction errors using cyclic redundancy check
PCT/KR2007/005679 WO2008069465A1 (en) 2006-12-07 2007-11-13 Method and apparatus for checking correction errors using cyclic redundancy check

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060124044A KR20080052039A (ko) 2006-12-07 2006-12-07 순환 중복 검사에 의한 정정 에러를 검사하는 방법 및 그장치

Publications (1)

Publication Number Publication Date
KR20080052039A true KR20080052039A (ko) 2008-06-11

Family

ID=39477296

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060124044A KR20080052039A (ko) 2006-12-04 2006-12-07 순환 중복 검사에 의한 정정 에러를 검사하는 방법 및 그장치

Country Status (3)

Country Link
US (1) US20080134001A1 (ko)
KR (1) KR20080052039A (ko)
WO (1) WO2008069465A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8949703B2 (en) * 2012-03-26 2015-02-03 Xilinx, Inc. Parallel encoding for non-binary linear block code
US10666297B2 (en) * 2017-04-14 2020-05-26 Kandou Labs, S.A. Pipelined forward error correction for vector signaling code channel
US10784989B2 (en) 2018-03-14 2020-09-22 Cypress Semiconductor Corporation Bit error correction for wireless retransmission communications systems

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6701479B2 (en) * 2001-05-15 2004-03-02 Network Elements, Inc. Fast cyclic redundancy check (CRC) generation
US6961893B1 (en) * 2002-03-28 2005-11-01 Adaptec, Inc. Separable cyclic redundancy check

Also Published As

Publication number Publication date
US20080134001A1 (en) 2008-06-05
WO2008069465A1 (en) 2008-06-12

Similar Documents

Publication Publication Date Title
US6615387B1 (en) Method and apparatus for error detection
JP5524287B2 (ja) さまざまな符号クラスの符号化および復号化への応用を有するインプレース変換
KR100594241B1 (ko) 순방향 치엔 서치 방식의 리드 솔로몬 디코더 회로
US10243589B2 (en) Multi-bit error correction method and apparatus based on a BCH code and memory system
US8176396B2 (en) System and method for implementing a Reed Solomon multiplication section from exclusive-OR logic
US9432057B1 (en) Forward error correcting code encoder and decoder method and apparatus
JPH0464211B2 (ko)
US8694872B2 (en) Extended bidirectional hamming code for double-error correction and triple-error detection
EP0944963B1 (en) Shortened fire code error-trapping decoding method and apparatus
US7039854B1 (en) Method and apparatus for performing syndrome computation in a decoder of a forward error correction (FEC) system
US7058876B1 (en) Method and apparatus for use in a decoder of a forward error correction (FEC) system for locating bit errors in a error locator polynomial
EP0753942A2 (en) Word-wise processing for reed-solomon codes
US7461329B2 (en) Channel encoding adapted to error bursts
KR101314232B1 (ko) 에러 정정 코드의 부호화 및 복호화 방법 그리고 코덱
US7096408B1 (en) Method and apparatus for computing the error locator polynomial in a decoder of a forward error correction (FEC) system
US5107506A (en) Error trapping decoding method and apparatus
US5446745A (en) Apparatus for correcting errors in optical disks
US8099655B1 (en) Galois field multiplier system and method
KR20080052039A (ko) 순환 중복 검사에 의한 정정 에러를 검사하는 방법 및 그장치
RU2314639C1 (ru) Устройство декодирования кодов рида-соломона
US8645807B2 (en) Apparatus and method of processing polynomials
KR102532623B1 (ko) Raid에 맞춤화된 bch 인코딩 및 디코딩 방법, 및 그 장치
US6735737B2 (en) Error correction structures and methods
US8347169B1 (en) System and method for encoding using common partial parity products
Qamar et al. An efficient encoding algorithm for (n, k) binary cyclic codes

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid