KR100900329B1 - 리드솔로몬 복호 방법 및 장치 - Google Patents

리드솔로몬 복호 방법 및 장치 Download PDF

Info

Publication number
KR100900329B1
KR100900329B1 KR1020070070726A KR20070070726A KR100900329B1 KR 100900329 B1 KR100900329 B1 KR 100900329B1 KR 1020070070726 A KR1020070070726 A KR 1020070070726A KR 20070070726 A KR20070070726 A KR 20070070726A KR 100900329 B1 KR100900329 B1 KR 100900329B1
Authority
KR
South Korea
Prior art keywords
polynomial
error
reed solomon
syndrome
code
Prior art date
Application number
KR1020070070726A
Other languages
English (en)
Other versions
KR20090007087A (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 한양대학교 산학협력단
Priority to KR1020070070726A priority Critical patent/KR100900329B1/ko
Publication of KR20090007087A publication Critical patent/KR20090007087A/ko
Application granted granted Critical
Publication of KR100900329B1 publication Critical patent/KR100900329B1/ko

Links

Images

Classifications

    • 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
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • 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
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1555Pipelined decoder implementations

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)

Abstract

리드솔로몬 복호 방법 및 장치가 개시된다. 본 발명의 일 측면에 따르면, 가변적인 삭제 리드솔로몬 부호를 위한 파이프라인 구조를 구비한 리드솔로몬 복호 장치가 제공된다. 따라서 본 발명에 의해 삭제 리드솔로몬 다항식의 부호화 연산을 고속으로 수행할 수 있고, 연산에 적은 클럭 사용이 가능하며, 칩 면적을 줄일 수 있다.
Figure R1020070070726
리드 솔로몬, 그룹 재귀적, 삭제 리드 솔로몬 부호, 단축 리드 솔로몬 부호

Description

리드솔로몬 복호 방법 및 장치{Method and Apparatus for Reed Solomon decoding}
본 발명은 리드솔로몬 복호에 관한 것으로, 특히 가변적인 삭제 리드솔로몬 부호를 위한 파이프라인 구조를 구비한 리드솔로몬 복호 방법 및 장치에 관한 것이다.
리드솔로몬(Reed-Solomon) 부호는 고정형 WiMAX, DMB(Digital Multimedia Broadcasting), 케이블 모뎀, 위성 및 이동통신 등의 다양한 통신 시스템 및 디지털 저장 장치에서 순방향 에러를 정정하는 기술(FEC: Forward Error Correction)로 폭넓게 사용되고 있다.
파이프라인 구조의 리드솔로몬 복호기에서는 연산을 위해 수정 유클리드 알고리즘을 사용한다. 종래에는 수정 유클리드 알고리즘의 연산을 위해 기본 블록(processing element)을 Systolic Array 구조로 고속병렬 처리하거나, 기본 블록을 재귀형 구조로 설계하여 자원 효율을 높일 수 있다. 그러나 Systolic Array 구 조의 경우에는 수정 유클리드 알고리즘 연산을 완료하는데 적은 클럭 사용의 장점에도 불구하고, 병렬처리과정을 수행하기 때문에 지나치게 많은 면적이 소모된다. 재귀형 구조의 경우 매우 적은 면적이 소모되나 수정 유클리드 알고리즘 연산을 완료하기 위한 동작 클럭 수가 크게 증가하는 문제를 가지고 있다. 또한 기존의 수정 유클리드 알고리즘 연산 회로는 삭제 리드솔로몬 복호기에 직접 적용하기에는 어려움이 있다.
삭제 리드솔로몬 부호의 연산을 위해 수정 유클리드 알고리즘을 이용해 에러 크기 다항식과 에러 위치 다항식을 산출하게 되는데, 수정 에러 위치 다항식을 구하기 위해 산출된 에러 위치 다항식과 삭제 위치 다항식은 추가적인 연산을 거쳐야 하기 때문에, 삭제 리드솔로몬 부호의 복호화시에는 추가 연산에서 지연 시간이 발생하는 문제가 발생한다.
따라서, 상술한 문제점을 해결하기 위한 본 발명은 4단계 파이프라인으로 동작하는 기본 연산 블록의 4단 재귀적 동작을 통해 고속으로 연산을 수행할 수 있는 리드솔로몬 복호 방법 및 장치를 제공하기 위한 것이다.
또한, 본 발명은 기본 연산 블록의 4단 재귀적 동작을 통해 삭제 리드솔로몬 부호 처리를 위한 수정 유클리드 알고리즘 연산에 적은 클럭 사용이 가능하며, 칩 면적을 줄일 수 있는 리드솔로몬 복호 방법 및 장치를 제공하기 위한 것이다.
또한, 본 발명은 삭제 리드솔로몬에서 수정 유클리드 알고리즘 연산 결과 값인 에러 크기 다항식 및 에러 위치 다항식의 출력 시 차수 순서의 출력이 아닌 해당 다항식의 최고 차 항부터 출력하게 하는 방식을 통하여 수정 에러 위치 다항식 연산으로 인한 지연 시간의 최소화시킬 수 있는 리드솔로몬 복호 방법 및 장치를 제공하기 위한 것이다.
이외의 본 발명의 목적들은 하기의 실시예에 대한 설명을 통해 쉽게 이해될 수 있을 것이다.
본 발명의 일 측면에 따르면, 리드 솔로몬 복호 장치에 있어서, 삭제 리드솔로몬 부호의 삭제 심볼의 길이만큼 차수를 낮춘 삭제 위치 다항식을 산출하는 삭제 위치 다항식 연산 블록; 상기 삭제 위치 다항식 및 입력되는 신드롬을 이용하여 미리 정해진 방법에 따라 수정 신드롬 다항식을 산출하는 신드롬 다항식 연산 블록; 상기 수정 신드롬 다항식을 미리 설정된 수정 유클리드 알고리즘을 적용하여 에러 크기 다항식 및 에러 위치 다항식을 산출하는 수정 유클리드 알고리즘 연산 블록; 및 상기 에러 크기 다항식, 상기 에러 위치 다항식 및 상기 삭제 위치 다항식을 이용하여 수정 에러 위치 다항식을 산출하여 각각 출력하는 에러 위치 다항식 연산 블록을 포함하되, 상기 수정 유클리드 알고리즘 연산 블록은 상기 에러 크기 다항식 및 상기 에러 위치 다항식을 각각 최고차항부터 출력하는 것을 특징으로 하는 리드 솔로몬 복호 장치가 제공된다.
상기 삭제 심볼은 리드솔로몬 부호에서 에러 정정을 위한 데이터 중에서 상기 삭제 리드 솔로몬 부호를 구성하기 위해 삭제된 데이터일 수 있다.
상기 삭제 위치 다항식은 하기 수학식을 통해 산출되되,
Figure 112009006941799-pat00216
는 삭제 위치 다항식이고,
Figure 112009006941799-pat00217
는 삭제 심벌의 길이이며,
Figure 112009006941799-pat00218
는 코드생성 다항식의 근이고,
Figure 112009006941799-pat00219
는 삭제 심벌의 위치일 수 있다.
Figure 112007051269228-pat00005
수신 부호를 입력 받아 신드롬을 생성하는 신드롬 연산 블록을 더 포함할 수 있다.
상기 에러 크기 다항식과 상기 수정 에러 위치 다항식을 입력 받아 미리 정해진 연산을 통해 리드솔로몬 부호의 오류값을 산출하는 오류값 산출 블록; 상기 에러 위치 다항식을 입력 받아 리드솔로몬 부호의 에러 위치값을 산출하는 에러 위치 산출 블록; 및 상기 리드솔로몬 부호의 오류값, 에러 위치값을 입력 받아 메모리에 저장된 수신 부호의 에러를 정정하는 에러 정정 블록을 더 포함할 수 있다.
상기 수정 신드롬 다항식은 하기 수학식을 이용하여 산출되되,
Figure 112007051269228-pat00006
는 리드솔로몬 부호에서 에러 정정 가능한 바이트의 수이고,
Figure 112007051269228-pat00007
는 신드롬 다항식이며,
Figure 112007051269228-pat00008
는 삭제 위치 다항식이고,
Figure 112007051269228-pat00009
는 수정 신드롬 다항식일 수 잇다.
Figure 112007051269228-pat00010
상기 수정 에러 위치 다항식은 하기 수학식을 이용하여 산출되되,
Figure 112007051269228-pat00011
는 수정 에러 위치 다항식,
Figure 112007051269228-pat00012
는 에러 위치다항식,
Figure 112007051269228-pat00013
는 삭제 위치 다항식일 수 있다.
Figure 112007051269228-pat00014
상기 수정 유클리드 알고리즘 연산 블록은 상기 수정 신드롬 다항식을 상기 에러 크기 다항식과 상기 에러 위치 다항식으로 산출하기 위한 연산을 하는 하나 이상의 기본 연산 블록을 포함하되, 상기 수정 유클리드 알고리즘 연산 블록은 상기 기본 연산 블록의 하나 이상의 상기 기본 연산 블록을 연결시킨 후 재귀적으로 반복되어 연산을 수행할 수 있다.
본 발명의 다른 측면에 따르면, 리드 솔로몬 복호 장치가 리드솔로몬 부호를 복호하는 방법에 있어서, (a) 삭제 리드 솔로몬 부호의 삭제 심볼의 길이만큼 차수를 낮춘 삭제 위치 다항식을 출력하는 단계; (b) 입력된 신드롬 및 삭제 위치 다항식을 이용하여 수정 신드롬 다항식을 산출하는 단계; (c) 상기 수정 신드롬 다항식을 미리 설정된 수정 유클리드 알고리즘을 적용하여 에러 크기 다항식과 에러 위치 다항식을 산출하는 단계; 및 (d) 상기 에러 위치 다항식과 상기 삭제 위치 다항식을 이용하여 상기 삭제 리드솔로몬 부호의 오류 위치를 나타내도록 상기 에러 크기 다항식을 변환하여 수정 에러 위치 다항식을 산출하는 단계를 포함하되, 상기 에러 위치 다항식 및 상기 삭제 위치 다항식을 이용하여 수정 에러 위치 다항식을 산출 하며, 상기 수정 에러 위치 다항식 및 상기 에러 크기 다항식을 병렬로 출력하는 것을 특징으로 하는 리드솔로몬 복호 방법이 제공된다.
상기 삭제 심볼은 리드솔로몬 부호에서 에러 정정을 위한 데이터 중에서 상기 삭제 리드 솔로몬 부호를 구성하기 위해 삭제된 데이터일 수 있다.
상기 삭제 위치 다항식은 하기 수학식을 통해 산출되되,
Figure 112009006941799-pat00220
는 삭제 위치 다항식이고,
Figure 112009006941799-pat00221
는 삭제 심벌의 길이이며,
Figure 112009006941799-pat00222
는 코드생성 다항식의 근이고,
Figure 112009006941799-pat00223
는 삭제 심벌의 위치일 수 있다.
Figure 112007051269228-pat00019
상기 수정 신드롬 다항식은 하기 수학식을 이용하여 산출되되,
Figure 112007051269228-pat00020
는 리드솔로몬 부호에서 에러 정정 가능한 바이트의 수이고,
Figure 112007051269228-pat00021
는 신드롬 다항식이며,
Figure 112007051269228-pat00022
는 삭제 위치 다항식이고,
Figure 112007051269228-pat00023
는 수정 신드롬 다항식일 수 있다.
Figure 112007051269228-pat00024
상기 수정 에러 위치 다항식은 하기 수학식을 이용하여 산출되되,
Figure 112009006941799-pat00224
는 수정 에러 위치 다항식이고,
Figure 112009006941799-pat00225
는 에러 위치다항식이며,
Figure 112009006941799-pat00226
는 삭제 위치 다항식일 수 있다.
Figure 112009006941799-pat00227
상기 (a)단계 이전에 수신 부호를 입력 받아 신드롬을 생성하는 단계를 더 포함할 수 있다.
상기 (d)단계 이후에 상기 에러 크기 다항식과 상기 수정 에러 위치 다항식을 입력 받아 미리 정해진 연산을 통해 리드솔로몬 부호의 오류값을 산출하는 단계; 상기 에러 위치 다항식을 입력 받아 리드솔로몬 부호의 에러 위치값을 산출하는 단계; 및 상기 리드솔로몬 부호의 오류값, 에러 위치값을 입력 받아 메모리에 저장된 수신 부호의 에러를 정정하는 단계를 더 포함할 수 있다.
본 발명에 따른 리드솔로몬 복호 방법 및 장치를 제공함으로써, 4단계 파이프라인으로 동작하는 기본 연산 블록의 4단 재귀적 동작을 통해 고속으로 연산을 수행할 수 있는 효과가 있다.
또한, 본 발명은 기본 연산 블록의 4단 재귀적 동작을 통해 삭제 리드솔로몬 부호 처리를 위한 수정 유클리드 알고리즘 연산에 적은 클럭 사용이 가능하며, 칩 면적을 줄일 수 있는 효과도 있다.
또한, 본 발명은 삭제 리드솔로몬에서 수정 유클리드 알고리즘 연산 결과 값인 에러 크기 다항식 및 에러 위치 다항식의 출력 시 차수 순서의 출력이 아닌 해당 다항식의 최고 차 항부터 출력하게 하는 방식을 통하여 수정 에러 위치 다항식 연산으로 인한 지연 시간의 최소화시킬 수 있는 효과도 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
이하, 본 발명의 실시예를 첨부한 도면들을 참조하여 상세히 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 수정 유클리드 알고리즘을 사용한 삭제 리드솔로몬 복호 장치의 구성도이고, 도 3의 (a)는 종래의 수정 유클리드 알고리즘을 이용한 상태에서 다항식이 출력되는 것을 도시한 타임라인을 예시한 도면이고, 도 3의 (b)는 본 발명의 일 실시예에 따른 개선된 수정 유클리드 알고리즘을 이용한 상태에서 다항식이 출력되는 것을 도시한 타임라인을 예시한 도면이며, 도 4는 본 발명의 일 실시예에 따른 기본 연산 블록이 4단으로 연결되어 구성된 수정 유클리드 알고리즘 연산 블록의 구성도이다.
우선 이해와 설명의 편의를 위해 리드솔로몬 부호에 대해 간략하게 설명하기로 한다. 리드솔로몬 부호는 비이진 순회부호의 일종으로 I.S. Reed와 G. Solomon에 의해 1960년에 제안된 에러정정부호로써, 통상의 에러정정 부호가 비트 단위로 정정하는 것에 비해 리드솔로몬 부호는 복수 비트 단위로 정정하는 바이트 구조의 부호로 임의의 위치 t(임의의 자연수)바이트 이하의 에러정정을 하기 위해서 2t바이트의 검사 바이트를 부가한다. 8비트를 하나의 심볼 길이로 하기 때문에 28-1=255바이트가 부호길이가 되며, 255바이트에서 에러정정을 위한 2t바이트를 제외한 최대 239바이트의 유효정보를 보낼 수 있다. 리드솔로몬 부호는 이처럼 신호전송 효율이 높으며, 바이트 단위로 데이터를 다루는 경우나 에러가 집중하여 발생할 경우 등 의 군집오류에 적합한 에러정정 부호이다.
리드솔로몬 부호는 일반적인 리드솔로몬 부호 이외에도 다양한 통신 환경에 적합하게 변형된 단축 리드솔로몬 부호와 삭제 리드솔로몬 부호가 존재한다.
단축 리드솔로몬 부호에서는 일반 리드솔로몬 부호의 유효정보 바이트의 일부분을 삭제한 구조를 가진다. 단축 리드솔로몬 부호의 에러정정을 위한 검사 바이트는 2t바이트로 일반 리드솔로몬 부호와 같은 크기로 구성된다.
삭제 리드솔로몬 부호에서는 일반 리드솔로몬 부호의 검사 바이트 중 일부를 삭제한 구조를 가진다. 삭제 리드솔로몬 부호의 부호화시 일반 리드솔로몬 코드에서 삭제한 검사 바이트인 삭제 심벌을 0으로 대입하는 De-Puncturing을 수행하기 때문에 삭제 위치 다항식의 차수는 삭제 심벌의 길이만큼 늘어나게 된다.
도 1을 참조하면, 본 발명에 따른 삭제 리드솔로몬 복호기(1)는 신드롬 연산 블록(10), 삭제 위치 다항식 연산 블록(20), 신드롬 다항식 연산 블록(30), 수정 유클리드 알고리즘 연산 블록(40), 에러 위치 다항식 연산 블록(50), 오류값 산출 블록(60), 에러 위치 산출 블록(70), 에러 정정 블록(80) 및 메모리(90)을 포함하여 구성된다.
신드롬 연산 블록(10)은 수신 부호(
Figure 112007051269228-pat00028
)를 입력 받고, 해당 입력된 수신 부호(
Figure 112007051269228-pat00029
)에 미리 설정된 코드 생성 다항식의 근
Figure 112007051269228-pat00030
을 대입하여 신드롬을 생성하여 신드롬 다항식 연산 블록(30)으로 출력한다. 수신 부호(
Figure 112007051269228-pat00031
)는 De- puncturing을 수행하지 않는 경우,
Figure 112007051269228-pat00032
로 나타낼 수 있으며, 예를 들어, 수학식1을 이용하여 산출될 수 있다.
Figure 112007051269228-pat00033
또한, 코드 생성 다항식은 수학식 2와 같으며,
Figure 112007051269228-pat00034
Figure 112007051269228-pat00035
로 표현되고,
Figure 112007051269228-pat00036
Figure 112007051269228-pat00037
로 표현될 수 있다. 따라서,
Figure 112007051269228-pat00038
Figure 112007051269228-pat00039
Figure 112007051269228-pat00040
Figure 112007051269228-pat00041
로 나타내면, 각각 수학식 3 및 수학식 4와 같다.
Figure 112007051269228-pat00042
Figure 112007051269228-pat00043
Figure 112007051269228-pat00044
여기서, 수학식 3 및 수학식 4를 이용하면 신드롬은 하기 수학식 5와 같이 정리된다.
Figure 112007051269228-pat00045
Figure 112009006941799-pat00046
는 신드롬이고,
Figure 112009006941799-pat00228
는 에러 심벌의 크기를 나타내고,
Figure 112009006941799-pat00229
는 에러 심벌의 위치를 나타내며,
Figure 112009006941799-pat00230
는 삭제 심벌의 크기를 나타내고,
Figure 112009006941799-pat00231
는 삭제 심벌의 위치를 나타낸다. 그리고,
Figure 112009006941799-pat00232
는 삭제 리드솔로몬 부호에서 정정 가능한 바이트수를 나타내며,
Figure 112009006941799-pat00233
는 코드생성 다항식의 근을 나타내고
Figure 112009006941799-pat00234
는 삭제 심벌의 길이를 나타낸다. 또한,
Figure 112009006941799-pat00235
는 정수이다.
삭제 위치 다항식 연산 블록(20)은 미리 정해진 방식으로 삭제 위치 다항식(
Figure 112007051269228-pat00055
)을 생성하여 신드롬 다항식 연산 블록(30)으로 출력한다. 여기서, 삭제 위치 다항식은 삭제 심벌의 삭제 위치를 결정하기 위해 이용되며, 예를 들어 수학식 6과 같이 정의된다.
Figure 112007051269228-pat00056
Figure 112009006941799-pat00057
는 삭제 위치 다항식을 나타내고,
Figure 112009006941799-pat00236
는 삭제 심벌의 길이를 나타내며,
Figure 112009006941799-pat00237
는 코드생성 다항식의 근을 나타내고,
Figure 112009006941799-pat00238
는 삭제 심벌의 위치를 나타낸다. 단, 삭제 심벌의 위치와 삭제 심벌의 길이는 미리 지정된 값으로, 경우에 따라 다르게 지정될 수 있다.
삭제 위치 다항식은
Figure 112007051269228-pat00061
의 역수를 근으로 하는 다항식으로,
Figure 112007051269228-pat00062
에 Cyclic Shift Property를 적용하여
Figure 112007051269228-pat00063
로 표현 시 수학식 6과 같이 나타난다. Cyclic Shift Property에 대해서는 하기에서 상세히 설명하기로 한다.
신드롬 다항식 연산 블록(30)은 삭제 위치 다항식 연산 블록(20)으로부터 삭제 위치 다항식(
Figure 112007051269228-pat00064
)을 입력 받고, 신드롬 연산 블록(10)으로부터 신드롬을 입력 받아 미리 정해진 방법에 따라 수정 신드롬 다항식(
Figure 112007051269228-pat00065
)을 생성하여 수정 유클리드 알고리즘 연산 블록(40)으로 출력한다.
예를 들어, 신드롬 다항식 연산 블록(30)은 신드롬 연산 블록(10)으로부터 입력된 신드롬을 이용하여 신드롬 다항식을 생성할 수 있다. 신드롬 다항식 연산 블록(30)은 예를 들어, 하기 수학식 7에 신드롬을 계수로 대입하여 신드롬 다항식을 생성할 수 있다.
Figure 112007051269228-pat00066
여기서,
Figure 112009006941799-pat00239
는 리드솔로몬 부호에서 에러 정정 가능한 바이트의 수이며,
Figure 112009006941799-pat00240
는 리드솔로몬 부호에서 에러 정정 가능한 바이트의 수이고,
Figure 112009006941799-pat00241
는 에러 심벌의 크기이며,
Figure 112009006941799-pat00242
는 에러 심벌의 위치이고,
Figure 112009006941799-pat00243
는 코드생성 다항식의 근을 나타내며,
Figure 112009006941799-pat00244
는 삭제 심벌의 길이를 나타낸다. 또한,
Figure 112009006941799-pat00245
는 임의의 정수이다.
기존 리드솔로몬 부호를 복호화하기 위해서는 신드롬 다항식이 필요하지만 삭제 리드솔로몬 부호의 에러 정정을 하기 위해서는 삭제 리드솔로몬의 검사 바이트수에 맞게 신드롬 다항식을 변경시켜야 한다. 이 신드롬 다항식을 변경시킨 것이 수정 신드롬 다항식이다.
신드롬 다항식 연산 블록(30)은 삭제 위치 다항식 연산 블록(20)으로부터 입력된 삭제 위치 다항식 및 생성된 신드롬 다항식을 이용하여 수정 신드롬 다항식을 생성할 수 있다. 예를 들어, 수정 신드롬 다항식은 수학식 8에 의해 생성될 수 있다.
Figure 112007051269228-pat00074
여기서,
Figure 112007051269228-pat00075
는 신드롬 다항식이고,
Figure 112007051269228-pat00076
는 삭제 위치 다항식이며,
Figure 112007051269228-pat00077
는 수정 신드롬 다항식이다.
수정 유클리드 알고리즘 연산 블록(40)은 신드롬 다항식 연산 블록(30)으로부터 수정 신드롬 다항식을 입력 받아 수정 유클리드 알고리즘에 따라 미리 정해진 연산을 수행하여 에러 크기 다항식(
Figure 112007051269228-pat00078
) 및 에러 위치 다항식(
Figure 112007051269228-pat00079
)을 생성하여 에러 위치 다항식 연산 블록(50)으로 출력한다.
또한, 수정 유클리드 알고리즘 연산 블록(40)은 생성된 에러 크기 다항식 및 에러 위치 다항식을 에러 위치 다항식 연산 블록(50)으로 출력함에 있어 각 다항식의 최고차항부터 출력하도록 제어한다.
이해의 편의를 도모하기 위해, 도 3를 참조하여 수정 유클리드 알고리즘 연산 블록(40)이 각 다항식의 최고차항부터 에러 위치 다항식 연산 블록(50)으로 출력하는 것에 대해 간략하게 설명하기로 한다.
도 3에서 도시된 타임라인의 상단 숫자는 특정 시각에 출력되고 있는 에러 크기 다항식과 에러 위치 다항식의 차수를 의미한다. 예를 들어, 도 3에 도시된 것과 같이 에러 크기 다항식(
Figure 112007051269228-pat00080
)이 11차 다항식이고, 에러 위치 다항식(
Figure 112007051269228-pat00081
)이 4차 다항식이라고 가정하자.
도 3의 (b)를 참조하면, 수정 유클리드 알고리즘 연산 블록(40)는 각각의 다항식의 최고차항부터 순차적으로 출력하도록 제어할 수 있다. 이로 인해, 에러 위치 다항식의 경우 상대적으로 차수가 높은 에러 크기 다항식이 7차항을 출력하는 시점에 출력이 완료됨을 알 수 있다. 이로 인해, 에러 크기 다항식의 출력이 종료된 시점부터 에러 위치 다항식 연산 블록(50)의 연산을 시작할 수 있기 때문에 수정 에러 위치 다항식 연산으로 인한 지연 시간을 감소 시킬 수 있는 이점이 있다.
종래에는 도 3의 (a)를 참조하면, 각각의 다항식이 차수의 순서대로 순차적 으로 출력되는 것을 알 수 있다. 이로 인해, 도 3의 (a)를 보면, 11차 내지 5차항을 출력할 시에는 에러 크기 다항식만 출력을 하고, 4차항부터 출력의 종료까지 에러 크기 다항식과 에러 위치 다항식이 동시에 출력된다. 이후 에러 위치 다항식 연산 블록(50)에서 수정 에러 위치 다항식을 연산할 시에 에러 위치 다항식이 늦게 출력이 되기 때문에 지연 시간이 발생하게 되는 문제점이 있었다.
이하, 수정 유클리드 알고리즘 블록(40)이 에러 위치 다항식 및 에러 크기 다항식을 생성하는 방법에 대해서는 하기에서 도 4를 참조하여 상세히 설명하기로 한다.
다시 도 1을 참조하면, 에러 위치 다항식 연산 블록(50)은 수정 유클리드 알고리즘 연산 블록(40)으로부터 에러 위치 다항식을 입력 받고, 삭제 위치 다항식 연산 블록(20)으로부터 삭제 위치 다항식을 입력 받으며, 해당 에러 위치 다항식 및 삭제 위치 다항식을 이용하여 수정 에러 위치 다항식을 생성하여 오류값 산출 블록(60) 및 에러 위치 산출 블록(70)으로 출력한다.
기존 리드솔로몬 부호를 복호화하기 위해서는 에러 위치 다항식과 에러 크기 다항식을 이용해 복호할 데이터의 에러를 정정하였으나, 기존 리드솔로몬 부호와 검사 바이트수가 다른 삭제 리드솔로몬 부호에서는 검사 바이트수에 적합한 에러 위치 다항식을 산출하여야 한다.
예를 들어, 에러 위치 다항식 연산 블록(50)은 에러 위치 다항식 및 삭제 위치 다항식을 곱하여 수정 에러 위치 다항식을 생성할 수 있다. 즉, 수정 에러 위치 다항식은 하기의 수학식 9를 이용하여 생성될 수 있다.
Figure 112007051269228-pat00082
Figure 112007051269228-pat00083
는 수정 에러 위치 다항식이고,
Figure 112007051269228-pat00084
는 에러 위치다항식이며,
Figure 112007051269228-pat00085
는 삭제 위치 다항식이다.
또한, 에러 위치 다항식 연산 블록(50)은 수정 유클리드 알고리즘 연산 블록(40)에서 출력된 에러 크기 위치 다항식을 입력 받아 버퍼에 저장하였다가 병렬로 출력한다.
오류값 산출 블록(60)은 에러 위치 다항식 연산 블록(50)으로부터 에러 크기 다항식과 수정 에러 위치 다항식을 입력 받아 Fomey's 알고리즘에 따라 미리 정해진 연산을 수행하여 오류값을 산출한 후 에러 정정 블록(80)으로 출력한다. 여기서, Fomey's 알고리즘은 당업자에게 자명한 알고리즘이므로 자세한 설명은 생략하기로 한다.
에러 위치 산출 블록(70)은 수정 에러 위치 다항식 연산 블록(50)로부터 수정 에러 위치 다항식을 입력 받아 Chien Search 알고리즘에 따라 미리 정해진 연산을 수행하여 에러 위치 값을 산출한 후 에러 정정 블록(80)으로 출력한다. 여기서, Chien Search 알고리즘은 당업자에게 자명한 알고리즘이므로 자세한 설명은 생략하기로 한다.
에러 정정 블록(80)은 오류값 산출 블록(60)으로부터 오류값을 입력 받고, 에러 위치 산출 블록(70)으로부터 에러 위치값을 입력 받으며, 메모리(90)로부터 수신 부호(R(x))를 입력 받는다. 그리고, 에러 정정 블록(80)은 해당 입력된 오류값, 에러 위치값 및 수신 부호를 이용하여 미리 정해진 방법에 따라 오류를 정정하여 정정된 코드를 출력하는 기능을 수행한다. 오류를 정정하는 방법은 당업자에게 자명한 내용이므로 설명을 생략하기로 한다.
메모리(90)는 입력된 수신 부호(
Figure 112007051269228-pat00086
)를 일시적으로 저장한 후 제어부(미도시)의 제어에 의해 에러 정정 블록(80)으로 출력하는 기능을 수행한다. 예를 들어, 메모리(90)는 제어부의 제어에 의해 선입선출(FIFO:first input first output) 방식으로 수신 부호(R(x))를 출력할 수 있다.
이하에서는 Cyclic Shift Property를 이용하여 삭제 위치 다항식의 차수를 낮추는 방법에 대해 설명한다.
Cyclic Shift Property를 적용하여 삭제 심벌의 길이
Figure 112007051269228-pat00087
만큼 삭제 위치 다항식의 차수를 낮출 경우 삭제 위치 다항식의 차수는
Figure 112007051269228-pat00088
로 나타나며, Cyclic Shift Property를 적용한 부호의 특성에 따라
Figure 112007051269228-pat00089
이므로
Figure 112007051269228-pat00090
로 나타낼 수 있다. 이런 과정을 거치면 리드솔로몬 연산이 삭제 위치 다항식의 차수를 낮추어 삭제 리드솔로몬 부호의 복호화시에 수신 부호(
Figure 112007051269228-pat00091
)의 삭제한 검사 바이트에 '0'을 대입하는 De-Puncturing 없이 연산이 가능하게 된다.
De-Puncturing된 값은 수신 부호 (
Figure 112007051269228-pat00092
)보다 길이가 증가하게 되므로, 신드롬 연산 과정에서 추가적인 사이클이 필요하게 된다. 이 문제를 해결하기 위해 Cyclic Shift Property를 이용한 De-puncturing 없는 연산을 하면 추가적인 사이클이 없어진다.
도 4는 본 발명의 일 실시예에 따른 4단으로 연결된 기본 연산 블록의 그룹 재귀적 구성도이다.
기본 연산 블록(Processing Element:PE)은 수정 유클리드 알고리즘 연산을 하는 기본 구성 요소로 수정 신드롬 다항식에서 추출된 정보를 이용하여 수정 신드롬 다항식의 차수를 감소시키면서 계수를 연산한다.
수정 유클리드 알고리즘 연산을 위하여 기본 연산 블록은 기존의 시스톨릭 배열(Systolic Array)을 이용한 구조 또는 재귀형 구조로 구성될 수 있다. 시스톨릭 배열 이용한 구조는 하나 이상의 기본 연산 블록을 연결하는 구조로 수정 유클리드 알고리즘의 고속 동작이 가능하나 많은 면적을 소모하여야 한다. 재귀형 구조는 하나의 기본 연산 블록을 재귀적 실행하는 구조로 매우 적은 면적을 차지하는 이점이 있으나 수정 유클리드 알고리즘 연산을 위한 동작 클럭이 단축 및 삭제 리드솔로몬 부호의 길이보다 큰 경우 연속적인 부호화의 동작이 어려워 지고, 다수의 지연 레지스터가 요구되는 문제가 발생한다.
본 발명에서는 도 4에 도시된 것과 같이 기본 연산 블록 4개를 하나의 그룹 으로 연결하여 그룹 재귀적 구조로 수정 유클리드 알고리즘 연산 블록(40)을 구성한다. 그룹 재귀적 구조는 일반적인 리드솔로몬 연산과 단축 및 삭제 리드솔로몬 연산을 가능하게 하며, 연산 지연을 감소시키고, 적은 면적으로 구현이 가능하다.
도 4를 참조하면, 수정 유클리드 알고리즘 연산 블록(40)은 입력부(510), 제1 기본 연산 블록(PE:Processing Element)(520), 제2 기본 연산 블록(530), 제3 기본 연산 블록(540), 제4 기본 연산 블록(550) 및 출력부(560)를 포함한다. 도 4에 도시된 바와 같이, 수정 유클리드 알고리즘 연산 블록(40)는 4개의 기본 연산부(511)가 파이프라인 구조로서 재귀적 구조로 구성된다.
입력부(510)는 신드롬 다항식 연산 블록(30)으로부터 수정 신드롬 다항식을 입력 받고 다항식의 차수 연산을 위한
Figure 112007051269228-pat00093
Figure 112007051269228-pat00094
의 차수값, 수정 유클리드 알고리즘 연산 과정에 필요한
Figure 112007051269228-pat00095
,
Figure 112007051269228-pat00096
,
Figure 112007051269228-pat00097
Figure 112007051269228-pat00098
신호를 생성하고 그 초기값을 지정한다. 추후 도 5을 참조하여 수정 신드롬 다항식의 차수 연산 과정을 설명하는 부분과 도 6을 참조하여 수정 신드롬 다항식의 계수 연산 과정을 설명하는 부분에서 위의 신호들의 초기값을 지정하는 방법에 대해 상세히 설명하도록 한다.
제1 기본 연산 블록(520)은 입력부(510)로부터 상술한 신호들을 입력 받아 내부 제어신호 제1 바이패스, 제2 바이패스 및 제3 바이패스에 따라 미리 정해진 연산을 수행한 후 그 결과값을 다음 기본 연산 블록으로 출력한다. 제1 바이패스, 제2 바이패스 및 제3 바이패스는 하나 이상의 플래그 값을 갖고, 이에 따라 기본 연산 블록의 연산 중에 일어나는 분기의 방향이 결정된다.
여기서, 제1 바이패스, 제2 바이패스 및 제3 바이패스는 초기값(예를 들어, "0")으로 설정되어 있는 것을 가정하여 설명하기로 한다. 기본 연산 블록의 연산 과정은 차수 연산과 계수 연산으로 이루어 지며, 추후 도 5을 참조하여 수정 신드롬 다항식의 차수 연산 과정을 설명하고, 도 6을 참조하여 수정 신드롬 다항식의 계수 연산 과정을 상세히 설명하도록 한다.
제2 기본 연산 블록(530) 내지 제4 기본 연산 블록(550)의 동작은 제1 기본 연산 블록(520)과 동일하므로 이에 대한 설명은 생략하기로 한다.
출력부(560)는 미리 정해진 검사 바이트의 개수(즉, 삭제 리드솔로몬 부호에서 삭제되는 검사 바이트의 개수)만큼 기본 연산 블록의 연산이 수행되면, 미리 정해진 방법을 통하여 에러 크기 다항식 및 에러 위치 다항식을 산출하고 에러 위치 다항식 연산 블록(50)으로 출력한다. 그러나 만일 기본 연산 블록의 연산이 해당 검사 바이트의 개수만큼 수행되지 않은 경우, 출력부(560)는 제4 기본 연산 블록(550)으로부터 입력된
Figure 112007051269228-pat00099
,
Figure 112007051269228-pat00100
,
Figure 112007051269228-pat00101
,
Figure 112007051269228-pat00102
을 입력부(510)로 출력한다.
도 4를 참조하여 설명한 수정 유클리드 알고리즘 연산 블록은 기본 연산 블록이 4개가 연결되어 있다. 이는 모드에 따른 6개의 삭제 리드솔로몬 부호의 검사 바이트가 4의 배수로 이루어졌기 때문이다. 이에 대해 하기에서 도 2을 참조하여 모드에 따른 6개의 단축 및 삭제 리드솔로몬 부호의 구성과 수정 유클리드 알고리즘 연산 블록을 4개의 기본 연산 블록으로 구성하는 것에 대해 설명한다.
도 2는 각 모드에 따른 단축 및 삭제 리드솔로몬 부호의 구성에 대한 표이다.
모드는 6가지의 미리 정해진 단축 리드 솔로몬 부호 또는 삭제 리드 솔로몬 부호의 유효 정보 비트와 검사 바이트의 구성을 대표하는 값이다. 예를 들어 모드가 1은 단축 리드솔로몬 부호가 유효 정보 바이트를 215비트 단축시켜 실제 24바이트의 유효 정보 바이트와 16바이트의 검사 바이트로 구성되는 것을 나타내고, 삭제 리드솔로몬 부호가 239바이트의 유효 정보 바이트와 검사 바이트를 8비트 삭제한 8바이트의 검사 바이트로 구성되는 것을 나타낸다.
여기서 도 2에 도시되어 있는 6개의 모드들의 삭제될 검사 바이트는 모두 4의 배수로 나타나 있다. 기본 연산 블록 하나는 한번의 연산으로 삭제될 검사 바이트를 한 바이트씩 처리한다. 예를 들어, 모드 5의 리드솔로몬 부호를 처리할 때 12바이트의 검사 비트를 처리 하여야 한다. 이 때 기본 연산 블록이 5개로 수정 유클리드 알고리즘 연산 블록이 이루어졌다고 가정하면, 검사 바이트를 처리하기 위해, 5개의 기본 연산 블록의 처리가 2번 반복된다. 2번 반복이 되면 10바이트의 검사 바이트를 처리하고 2바이트의 처리가 남아 있는데, 이를 처리하기 위해 5개의 기본 연산 블록이 수행되어야 한다. 즉 마지막 2바이트의 검사 바이트를 처리하기 위해 5개의 기본 연산 블록이 사용되며 그 중 2개의 기본 연산 블록만이 실제로 그 기능을 수행한다. 따라서, 본 발명에 따른 수정 유클리드 알고리즘 연산 블록(40)은 기 본 연산 블록 4개를 하나의 그룹으로 연결하여 4의 배수로 구성된 검사 바이트를 처리할 때 기능을 수행하지 않는 기본 연산 블록이 없이 효율적인 연산이 가능하다.
상술한 수정 유클리드 알고리즘 연산 블록(40)에서 수행되는 연산은 차수 연산과 계수 연산으로 나누어 처리된다. 이하에서 도 4 및 도 5을 참조하여 차수 연산, 도 6을 참조하여 계수 연산을 상세히 설명하기로 한다.
이 때, 차수 연산과 계수 연산에서는 제1 바이패스, 제2 바이패스, 제3 바이패스를 사용한다. 이는 차수 연산 과정에서 조건을 처리하기 위해 사용되는 변수이다.
도 5은 본 발명의 일 실시예에 따른 수정 유클리드 알고리즘에서 사용하는 수정 신드롬 다항식의 차수 연산 과정을 도시한 순서도이다.
단계 610에서 수정 유클리드 알고리즘 연산 블록(40)은
Figure 112007051269228-pat00103
,
Figure 112007051269228-pat00104
에 각각 2
Figure 112007051269228-pat00105
, 2
Figure 112007051269228-pat00106
-1으로 초기값을 설정한다. 단,
Figure 112007051269228-pat00107
는 리드솔로몬 부호에서 에러 정정 가능한 바이트의 수이다. 그리고, 수정 유클리드 알고리즘 연산 블록(40)은 사이클 횟수의 값을 초기값(예를 들어, "0")으로 설정한다.
단계 620에서 수정 유클리드 알고리즘 연산 블록(40)은 사이클 횟수를 정해진 크기만큼(예를 들어, "1") 증가시켜 갱신한다.
단계 630에서 수정 유클리드 알고리즘 연산 블록(40)은
Figure 112007051269228-pat00108
의 차수 및
Figure 112007051269228-pat00109
의 차수를 비교하여
Figure 112007051269228-pat00110
의 차수가 작으면, 미리 설정된 제3 바이패스를 제1 플래그값(예를 들어, "1")로 설정한다.
단계 640에서 수정 유클리드 알고리즘 연산 블록(40)은 제1 바이패스가 제1 플래그값(예를 들어, 1)인지 여부를 판단한다.
만일 제1 바이패스가 제1 플래그값(예를 들어, "1")이면, 단계 670에서 수정 유클리드 알고리즘 연산 블록(40)은
Figure 112007051269228-pat00111
의 차수를 미리 정해진 크기만큼 감산하여
Figure 112007051269228-pat00112
의 차수로 설정한다.
예를 들어, 수정 유클리드 알고리즘 연산 블록(40)은
Figure 112007051269228-pat00113
의 차수를 "1"만큼 감산하여
Figure 112007051269228-pat00114
의 차수로 설정할 수 있다.
그러나 만일 제1 바이패스가 제1 플래그값이 아니면, 단계 650에서 수정 유클리드 알고리즘 연산 블록(40)은 제2 바이패스가 제1 플래그값(예를 들어, 1)인지 여부를 판단한다.
만약 제2 바이패스가 제1 플래그값(예를 들어, 1)이면 단계 690에서 수정 유클리드 알고리즘 연산 블록(40)은
Figure 112007051269228-pat00115
의 차수값을
Figure 112007051269228-pat00116
의 미리 지정된 크기만큼 감산한 값으로 지정한다.
만약 제2 바이패스가 제1 플래그값(예를 들어, 1)이 아니면 단계 660에서 수 정 유클리드 알고리즘 연산 블록(40)은 제3 바이패스의 값이 제1 플래그값(예를 들어, 1)인지 판단한다.
만약 제3 바이패스의 값이 1이면 상술한 단계 670을 수행한다.
만약 제3 바이패스의 값이 1이 아니면, 단계 680에서 수정 유클리드 알고리즘 연산 블록(40)은
Figure 112007051269228-pat00117
의 차수값을
Figure 112007051269228-pat00118
의 미리 지정된 크기만큼 감산한 값으로 지정한다.
단계 695에서 수정 유클리드 알고리즘 연산 블록(40)은 사이클 횟수가 미리 지정된 수 미만인지 판단한다.
만일 미리 지정된 수 미만일 경우, 단계 620을 수행한다.
미리 지정된 수 이상일 경우, 차수 연산 과정을 종료한다.
상술한 제1 바이패스 및 제2 바이패스의 값은 도 7을 참조하여 설명하는 계수 연산 과정에서 지정한다. 이에 대해서는 하기에서 설명하기로 한다.
도 6은 본 발명의 일 실시예에 따른 수정 유클리드 알고리즘에서 사용하는 수정 신드롬 다항식과
Figure 112007051269228-pat00119
,
Figure 112007051269228-pat00120
,
Figure 112007051269228-pat00121
,
Figure 112007051269228-pat00122
신호를 이용한 계수 연산을 도시한 순서도이다.
단계 710에서 수정 유클리드 알고리즘 연산 블록(40)은
Figure 112007051269228-pat00123
,
Figure 112007051269228-pat00124
,
Figure 112007051269228-pat00125
,
Figure 112007051269228-pat00126
을 미리 정해진 초기값으로 설정한다.
예를 들어, 수정 유클리드 알고리즘 연산 블록(40)은
Figure 112007051269228-pat00127
의 초기값을
Figure 112007051269228-pat00128
으로 설정하고,
Figure 112007051269228-pat00129
Figure 112007051269228-pat00130
의 초기값을 "0"으로 설정하며,
Figure 112007051269228-pat00131
의 초기값을
Figure 112007051269228-pat00132
으로 설정할 수 있다.
단계 720에서 수정 유클리드 알고리즘 연산 블록(40)은 사이클 횟수를 정해진 크기만큼(예를 들어, "1") 증가시켜 갱신한다.
단계 730에서 수정 유클리드 알고리즘 연산 블록(40)은
Figure 112007051269228-pat00133
가 0일 경우 제1 바이패스의 값을 제1 플래그(예를 들어 "1"),
Figure 112007051269228-pat00134
가 0일 경우 제2 바이패스의 값을 제1 플래그(예를 들어 1)로 지정한다.
단계 740에서 수정 유클리드 알고리즘 연산 블록(40)은 제1 바이패스가 1인지 판단한다.
만약 제1 바이패스의 값이 1이면, 단계 750에서 수정 유클리드 알고리즘 연산 블록(40)은 수학식 10를 통해
Figure 112007051269228-pat00135
,
Figure 112007051269228-pat00136
,
Figure 112007051269228-pat00137
,
Figure 112007051269228-pat00138
의 값을 대입한다.
Figure 112007051269228-pat00139
만약 제1 바이패스의 값이 1이 아니면 단계 742에서 수정 유클리드 알고리즘 연산 블록(40)은 제2 바이패스가 1인지 판단한다.
만약 제2 바이패스의 값이 1이면 단계 752에서 수정 유클리드 알고리즘 연산 블록(40)은 수학식 11을 통해
Figure 112007051269228-pat00140
,
Figure 112007051269228-pat00141
,
Figure 112007051269228-pat00142
,
Figure 112007051269228-pat00143
의 값을 대입한다.
Figure 112007051269228-pat00144
만약 제2 바이패스의 값이 1이 아니면 단계 744에서 수정 유클리드 알고리즘 연산 블록(40)은 제3 바이패스의 값이 1인지 판단한다.
만약 제3 바이패스의 값이 1이면 단계 754에서 수정 유클리드 알고리즘 연산 블록(40)은
Figure 112007051269228-pat00145
Figure 112007051269228-pat00146
를 대입하고
Figure 112007051269228-pat00147
Figure 112007051269228-pat00148
를 대입한다.
만약 제3 바이패스의 값이 1이 아니면 단계 756에서 수정 유클리드 알고리즘 연산 블록(40)은
Figure 112007051269228-pat00149
Figure 112007051269228-pat00150
를 대입하고
Figure 112007051269228-pat00151
Figure 112007051269228-pat00152
를 대입한다.
단계 758에서 수정 유클리드 알고리즘 연산 블록(40)은 수학식 12을 통해
Figure 112007051269228-pat00153
,
Figure 112007051269228-pat00154
를 산출한다.
Figure 112007051269228-pat00155
단계 760에서 수정 유클리드 알고리즘 연산 블록(40)은 수학식 13을 통해
Figure 112007051269228-pat00156
Figure 112007051269228-pat00157
의 값을 산출한다.
Figure 112007051269228-pat00158
단계 770에서 수정 유클리드 알고리즘 연산 블록(40)은 사이클 횟수가 미리 지정된 수 미만인지 판단한다.
만일 미리 지정된 수 미만일 경우, 단계 720을 수행한다.
미리 지정된 수 이상일 경우, 단계 780을 수행한다.
단계 780에서 수정 유클리드 알고리즘 연산 블록(40)은 에러크기다항식(
Figure 112007051269228-pat00159
)와 에러위치다항식(
Figure 112007051269228-pat00160
)을
Figure 112007051269228-pat00161
Figure 112007051269228-pat00162
을 이용하여 수학식 14를 통해 연산한다.
Figure 112007051269228-pat00163
Figure 112007051269228-pat00164
,
Figure 112007051269228-pat00165
,
Figure 112007051269228-pat00166
Figure 112007051269228-pat00167
는 수정 유클리드 알고리즘 연산 중 사 용되는 다항식이고,
Figure 112007051269228-pat00168
Figure 112007051269228-pat00169
의 2
Figure 112007051269228-pat00170
-1차항의 계수이고,
Figure 112007051269228-pat00171
Figure 112007051269228-pat00172
의 2
Figure 112007051269228-pat00173
-1차항의 계수이고,
Figure 112007051269228-pat00174
는 에러 크기 다항식이고,
Figure 112007051269228-pat00175
에러 위치 다항식이다. 또한
Figure 112007051269228-pat00176
는 리드솔로몬 부호에서 에러 정정 가능한 바이트의 수이고,
Figure 112007051269228-pat00177
는 리드솔로몬 부호에서 에러 정정 가능한 바이트의 수이고, i는 정수이다.
도 5을 참조하여 상술한 차수값 연산 과정과 도 6을 참조하여 설명한 계수 연산 과정을 구분하여 설명하였으나, 수정 유클리드 알고리즘 연산 블록(40)에서 동시에 이루어지며 차수값 연산 과정에서 지정되는 제3 바이패스값은 계수 연산 과정에서도 사용되며, 계수 연산 과정에서 지정되는 제1 바이패스와 제2 바이패스는 차수값 연산 과정에서도 사용된다.
도 7는 본 발명의 일 실시예에 따른 리드솔로몬 복호 과정을 나타낸 순서도 이다.
단계 910에서 신드롬 연산 블록(10)은 수신 부호(
Figure 112007051269228-pat00178
)를 입력 받아 미리 정해진 연산을 수행하여 신드롬을 생성하여 신드롬 다항식 연산 블록(30)으로 출력한다.
예를 들어, 신드롬 연산 블록(30)은 수학식 5를 이용하여 신드롬을 생성할 수 있다.
단계 920에서 신드롬 다항식 연산 블록(30)은 신드롬 연산 블록(10)으로부터 입력 받은 신드롬과 삭제 위치 다항식 연산 블록(20)으로부터 입력 받은 삭제 위치 다항식을 미리 정해진 연산을 수행하여 수정 신드롬 다항식을 산출하여 수정 유클리드 알고리즘 연산 블록(40)으로 출력한다.
예를 들어, 신드롬 다항식 연산 블록(30)은 수학식 8을 이용하여 수정 신드롬 다항식을 생성할 수 있다.
단계 930에서 수정 유클리드 알고리즘 연산 블록(40)은 신드롬 다항식 연산 블록(30)으로부터 수정 신드롬 다항식을 입력 받아 미리 정해진 연산을 통해 에러 크기 다항식과 에러 위치 다항식을 산출하여 에러 위치 다항식 연산 블록(50)으로 출력한다.
예를 들어, 도 4 및 도 5을 참조하여 상술한 차수 연산과, 도 4 및 도 6을 참조하여 상술한 계수 연산을 통해 에러 크기 다항식과 에러 위치 다항식을 생성할 수 있다..
단계 940에서 에러 위치 다항식 연산 블록(50)은 수정 유클리드 알고리즘 연산 블록(40)으로부터 에러 크기 다항식과 에러 위치 다항식을 입력 받고, 삭제 위치 다항식 연산 블록(20)으로부터 삭제 위치 다항식을 입력 받아 미리 정해진 연산을 통해 수정 에러 위치 다항식을 산출하고, 오류값 산출 블록(60)으로는 에러 크기 다항식과 수정 에러 위치 다항식을 출력하고, 에러 위치 산출 블록(70)으로 수정 에러 위치 다항식을 출력한다.
예를 들어, 에러 위치 다항식 연산 블록(50)은 수학식 9를 이용하여 수정 에러 위치 다항식을 생성할 수 있다.
단계 950에서 오류값 산출 블록(60)은 에러 위치 다항식연산 블록(50)으로 에러 크기 다항식을 입력 받아 Fomey's 알고리즘에 따른 미리 정해진 연산을 통해 오류값을 산출하여 에러 정정 블록(80)으로 출력한다.
단계 960에서 에러 위치 산출 블록(70)은 에러 위치 다항식 연산 블록(50)으로부터 수정 에러 위치 다항식을 입력 받아 Chien Search 알고리즘에 따른 미리 정해진 연산을 통해 에러 위치를 산출하여 에러 정정 블록으로 출력한다.
단계 970은 에러 정정 블록(80)이 오류값 산출 블록(60)으로부터 산출된 오류값, 에러 위치 산출 블록(70)으로부터 에러 위치값, 메모리(90)으로부터 리드솔로몬 수신 부호를 입력 받아 에러 위치값이 나타내는 위치에 오류값만큼의 오류를 정정한 코드를 출력한다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 수정 유클리드 알고리즘을 사용한 삭제 리드솔로몬 복호 장치의 구성도.
도 2는 모드에 따른 단축 및 삭제 리드솔로몬 부호의 구성을 나타낸 표.
도 3의 (a)는 종래의 수정 유클리드 알고리즘을 이용한 상태에서 다항식이 출력되는 것을 도시한 타임라인을 예시한 도면.
도 3의 (b)는 본 발명의 일 실시예에 따른 개선된 수정 유클리드 알고리즘을 이용한 상태에서 다항식이 출력되는 것을 도시한 타임라인을 예시한 도면.
도 4는 본 발명의 일 실시예에 따른 4단으로 연결된 기본 연산 블록의 그룹 재귀적 구성도.
도 5은 본 발명의 일 실시예에 따른 수정 유클리드 알고리즘에서 사용하는 차수 연산 과정을 도시한 순서도.
도 6은 본 발명의 일 실시예에 따른 수정 유클리드 알고리즘에서 사용하는 수정 신드롬 다항식과
Figure 112007051269228-pat00205
,
Figure 112007051269228-pat00206
,
Figure 112007051269228-pat00207
,
Figure 112007051269228-pat00208
신호를 이용한 계수 연산을 도시한 순서도.
도 7는 발명의 일 실시예에 따른 리드솔로몬 복호 과정을 나타낸 순서도.
<도면의 주요부분에 대한 부호의 설명>
10: 신드롬 연산 블록
20: 삭제 위치 다항식 연산 블록
30: 신드롬 다항식 연산 블록
40: 수정 유클리드 알고리즘 연산 블록
50: 에러 위치 다항식 연산 블록
60: 오류값 산출 블록
70: 에러 위치 산출 블록
80: 에러 정정 블록
90: 메모리

Claims (15)

  1. 리드 솔로몬 복호 장치에 있어서,
    삭제 리드솔로몬 부호의 삭제 심볼의 길이만큼 차수를 낮춘 삭제 위치 다항식을 산출하는 삭제 위치 다항식 연산 블록;
    상기 삭제 위치 다항식 및 입력되는 신드롬을 이용하여 미리 정해진 방법에 따라 수정 신드롬 다항식을 산출하는 신드롬 다항식 연산 블록;
    상기 수정 신드롬 다항식을 미리 설정된 수정 유클리드 알고리즘을 적용하여 에러 크기 다항식 및 에러 위치 다항식을 산출하는 수정 유클리드 알고리즘 연산 블록; 및
    상기 에러 크기 다항식, 상기 에러 위치 다항식 및 상기 삭제 위치 다항식을 이용하여 수정 에러 위치 다항식을 산출하여 각각 출력하는 에러 위치 다항식 연산 블록을 포함하되,
    상기 수정 유클리드 알고리즘 연산 블록은 상기 에러 크기 다항식 및 상기 에러 위치 다항식을 각각 최고차항부터 출력하며, 재귀적으로 반복되어 연산을 수행하는 복수의 기본 연산 블록을 포함하고, 상기 기본 연산 블록에 의해 상기 에러 크기 다항식 및 상기 에러 위치 다항식이 산출되며,
    상기 에러 위치 다항식 연산 블록은 상기 수정 유클리드 알고리즘 연산 블록으로부터 상기 에러 크기 다항식의 출력이 종료되는 시점부터 상기 수정 에러 위치 다항식의 연산을 수행하는 것을 특징으로 하는 리드 솔로몬 복호 장치.
  2. 제1 항에 있어서,
    상기 삭제 심볼은 리드솔로몬 부호에서 에러 정정을 위한 데이터 중에서 상 기 삭제 리드 솔로몬 부호를 구성하기 위해 삭제된 데이터인 것을 특징으로 하는 리드 솔로몬 복호 장치.
  3. 제1 항에 있어서,
    상기 삭제 위치 다항식은 하기 수학식을 통해 산출되되,
    Figure 112009006941799-pat00246
    는 삭제 위치 다항식이고,
    Figure 112009006941799-pat00247
    는 삭제 심벌의 길이이며,
    Figure 112009006941799-pat00248
    는 코드생성 다항식의 근이고,
    Figure 112009006941799-pat00249
    는 삭제 심벌의 위치인 것을 특징으로 하는 리드솔로몬 복호 장치.
    Figure 112009006941799-pat00250
  4. 제1 항에 있어서,
    수신 부호를 입력 받아 신드롬을 생성하는 신드롬 연산 블록을 더 포함하는 것을 특징으로 하는 리드솔로몬 복호 장치.
  5. 제1 항에 있어서,
    상기 에러 크기 다항식과 상기 수정 에러 위치 다항식을 입력 받아 미리 정해진 연산을 통해 리드솔로몬 부호의 오류값을 산출하는 오류값 산출 블록;
    상기 에러 위치 다항식을 입력 받아 리드솔로몬 부호의 에러 위치값을 산출하는 에러 위치 산출 블록; 및
    상기 리드솔로몬 부호의 오류값, 에러 위치값을 입력 받아 메모리에 저장된 수신 부호의 에러를 정정하는 에러 정정 블록을 더 포함하는 것을 특징으로 하는 리드솔로몬 부호 장치.
  6. 제1 항에 있어서,
    상기 수정 신드롬 다항식은 하기 수학식을 이용하여 산출되되,
    Figure 112007051269228-pat00184
    는 리드솔로몬 부호에서 에러 정정 가능한 바이트의 수이고,
    Figure 112007051269228-pat00185
    는 신드롬 다항식이며,
    Figure 112007051269228-pat00186
    는 삭제 위치 다항식이고,
    Figure 112007051269228-pat00187
    는 수정 신드롬 다항식인 것을 특징으로 하는 리드솔로몬 복호 장치.
    Figure 112007051269228-pat00188
  7. 제1 항에 있어서,
    상기 수정 에러 위치 다항식은 하기 수학식을 이용하여 산출되되,
    Figure 112009006941799-pat00251
    는 수정 에러 위치 다항식,
    Figure 112009006941799-pat00252
    는 에러 위치다항식,
    Figure 112009006941799-pat00253
    는 삭제 위치 다항식인 것을 특징으로 하는 리드솔로몬 복호 장치.
    Figure 112009006941799-pat00254
  8. 삭제
  9. 리드 솔로몬 복호 장치가 리드솔로몬 부호를 복호하는 방법에 있어서,
    (a) 삭제 리드 솔로몬 부호의 삭제 심볼의 길이만큼 차수를 낮춘 삭제 위치 다항식을 출력하는 단계;
    (b) 입력된 신드롬 및 삭제 위치 다항식을 이용하여 수정 신드롬 다항식을 산출하는 단계;
    (c) 상기 수정 신드롬 다항식을 미리 설정된 수정 유클리드 알고리즘을 적용하여 에러 크기 다항식과 에러 위치 다항식을 산출하여 각각 최고차항부터 출력하는 단계; 및
    (d) 상기 에러 위치 다항식과 상기 삭제 위치 다항식을 이용하여 상기 삭제 리드솔로몬 부호의 오류 위치를 나타내도록 상기 에러 크기 다항식을 변환하여 수정 에러 위치 다항식을 산출하는 단계를 포함하되,
    상기 에러 위치 다항식 및 상기 삭제 위치 다항식을 이용하여 수정 에러 위치 다항식을 산출하며, 상기 수정 에러 위치 다항식 및 상기 에러 크기 다항식을 병렬로 출력하는 것을 특징으로 하는 리드솔로몬 복호 방법.
  10. 제9 항에 있어서,
    상기 삭제 심볼은 리드솔로몬 부호에서 에러 정정을 위한 데이터 중에서 상기 삭제 리드 솔로몬 부호를 구성하기 위해 삭제된 데이터인 것을 특징으로 하는 리드솔로몬 복호 방법.
  11. 제9 항에 있어서,
    상기 삭제 위치 다항식은 하기 수학식을 통해 산출되되,
    Figure 112009006941799-pat00255
    는 삭제 위치 다항식이고,
    Figure 112009006941799-pat00256
    는 삭제 심벌의 길이이며,
    Figure 112009006941799-pat00257
    는 코드생성 다항식의 근이고,
    Figure 112009006941799-pat00258
    는 삭제 심벌의 위치인 것을 특징으로 하는 리드솔로몬 복호 방법.
    Figure 112009006941799-pat00259
  12. 제9 항에 있어서,
    상기 수정 신드롬 다항식은 하기 수학식을 이용하여 산출되되,
    Figure 112007051269228-pat00197
    는 리드솔로몬 부호에서 에러 정정 가능한 바이트의 수이고,
    Figure 112007051269228-pat00198
    는 신드롬 다항식이며,
    Figure 112007051269228-pat00199
    는 삭제 위치 다항식이고,
    Figure 112007051269228-pat00200
    는 수정 신드롬 다항식인 것을 특징으로 하는 리드솔로몬 복호 방법.
    Figure 112007051269228-pat00201
  13. 제9 항에 있어서,
    상기 수정 에러 위치 다항식은 하기 수학식을 이용하여 산출되되,
    Figure 112009006941799-pat00260
    는 수정 에러 위치 다항식이고,
    Figure 112009006941799-pat00261
    는 에러 위치다항식이며,
    Figure 112009006941799-pat00262
    는 삭제 위치 다항식인 것을 특징으로 하는 리드솔로몬 복호 방법.
    Figure 112009006941799-pat00263
  14. 제9 항에 있어서,
    상기 (a)단계 이전에 수신 부호를 입력 받아 신드롬을 생성하는 단계를 더 포함하는 것을 특징으로 하는 리드솔로몬 복호 방법.
  15. 제9 항에 있어서,
    상기 (d)단계 이후에
    상기 에러 크기 다항식과 상기 수정 에러 위치 다항식을 입력 받아 미리 정해진 연산을 통해 리드솔로몬 부호의 오류값을 산출하는 단계;
    상기 에러 위치 다항식을 입력 받아 리드솔로몬 부호의 에러 위치값을 산출하는 단계; 및
    상기 리드솔로몬 부호의 오류값, 에러 위치값을 입력 받아 메모리에 저장된 수신 부호의 에러를 정정하는 단계를 더 포함하는 것을 특징으로 하는 리드솔로몬 부호 방법.
KR1020070070726A 2007-07-13 2007-07-13 리드솔로몬 복호 방법 및 장치 KR100900329B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070070726A KR100900329B1 (ko) 2007-07-13 2007-07-13 리드솔로몬 복호 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070070726A KR100900329B1 (ko) 2007-07-13 2007-07-13 리드솔로몬 복호 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20090007087A KR20090007087A (ko) 2009-01-16
KR100900329B1 true KR100900329B1 (ko) 2009-06-02

Family

ID=40488074

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070070726A KR100900329B1 (ko) 2007-07-13 2007-07-13 리드솔로몬 복호 방법 및 장치

Country Status (1)

Country Link
KR (1) KR100900329B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990021748A (ko) * 1997-08-30 1999-03-25 김영환 직렬화된 리드 솔리몬 복호장치
KR19990031804A (ko) * 1997-10-14 1999-05-06 윤종용 새로운 다항식 배열 구조를 채용한 리드-솔로몬(rs) 복호기와 그 복호방법
KR20040050536A (ko) * 2002-12-10 2004-06-16 삼성전자주식회사 하드웨어 효율을 극대화한 새로운 파이프라인 리드 솔로몬디코딩 방법
KR20070049836A (ko) * 2005-11-09 2007-05-14 한국전자통신연구원 높은 오류 정정 능력을 가지는 리드-솔로몬 복호화 장치 및그 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990021748A (ko) * 1997-08-30 1999-03-25 김영환 직렬화된 리드 솔리몬 복호장치
KR19990031804A (ko) * 1997-10-14 1999-05-06 윤종용 새로운 다항식 배열 구조를 채용한 리드-솔로몬(rs) 복호기와 그 복호방법
KR20040050536A (ko) * 2002-12-10 2004-06-16 삼성전자주식회사 하드웨어 효율을 극대화한 새로운 파이프라인 리드 솔로몬디코딩 방법
KR20070049836A (ko) * 2005-11-09 2007-05-14 한국전자통신연구원 높은 오류 정정 능력을 가지는 리드-솔로몬 복호화 장치 및그 방법

Also Published As

Publication number Publication date
KR20090007087A (ko) 2009-01-16

Similar Documents

Publication Publication Date Title
US6347389B1 (en) Pipelined high speed reed-solomon error/erasure decoder
US7246294B2 (en) Method for iterative hard-decision forward error correction decoding
WO2008003094A2 (en) Efficient representation of symbol-based transformations with application to encoding and decoding of forward error correction codes
JP2000209102A (ja) リ―ドソロモン符号器/復号器装置
US8700971B2 (en) Parallel residue arithmetic operation unit and parallel residue arithmetic operating method
JPH07202715A (ja) 時間定義域代数エンコーダ/デコーダ
US7231575B2 (en) Apparatus for iterative hard-decision forward error correction decoding
US20100031127A1 (en) Scheme for erasure locator polynomial calculation in error-and-erasure decoder
EP0836285A2 (en) Reed-Solomon decoder with general-purpose processing unit and dedicated circuits
KR100970223B1 (ko) 리드-솔로몬 코드의 소프트-결정 디코딩 방법, 리드-솔로몬 코드워드 디코더 및 컴퓨터 프로그램 제품
CN101483442A (zh) 根据Nand Flash多余空间来配置纠错能力的BCH解码器
KR20030036826A (ko) 선형 블록 코드의 인코딩 방법 및 장치
US7266760B1 (en) Method and apparatus for calculating cyclic redundancy checks for variable length packets
US6370671B1 (en) Configurable decoder and method for decoding a reed-solomon codeword
US20090089649A1 (en) Programmable compute unit with internal register and bit FIFO for executing Viterbi code
KR100258951B1 (ko) 리드-솔로몬(rs) 복호기와 그 복호방법
US6415413B1 (en) Configurable Reed-Solomon controller and method
US9236890B1 (en) Decoding a super-code using joint decoding of underlying component codes
KR100900329B1 (ko) 리드솔로몬 복호 방법 및 장치
JP3343857B2 (ja) 復号装置、演算装置およびこれらの方法
US7178090B2 (en) Error correction code decoding device
KR100747487B1 (ko) 리드-솔로몬 복호 장치 및 수정된 유클리드 알고리즘연산회로
KR100594002B1 (ko) 가변 처리가 가능한 파이프라인 구조의 리드 솔로몬 복호기
US8181096B2 (en) Configurable Reed-Solomon decoder based on modified Forney syndromes
KR101149110B1 (ko) 디지털 통신 시스템의 rs 복호기

Legal Events

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

Payment date: 20120406

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130410

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee