KR100256250B1 - 직렬화된 리드 솔리몬 복호장치 - Google Patents

직렬화된 리드 솔리몬 복호장치 Download PDF

Info

Publication number
KR100256250B1
KR100256250B1 KR1019970045322A KR19970045322A KR100256250B1 KR 100256250 B1 KR100256250 B1 KR 100256250B1 KR 1019970045322 A KR1019970045322 A KR 1019970045322A KR 19970045322 A KR19970045322 A KR 19970045322A KR 100256250 B1 KR100256250 B1 KR 100256250B1
Authority
KR
South Korea
Prior art keywords
polynomial
value
error
bit
syndrome
Prior art date
Application number
KR1019970045322A
Other languages
English (en)
Other versions
KR19990021748A (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 KR1019970045322A priority Critical patent/KR100256250B1/ko
Priority to US09/143,346 priority patent/US6145113A/en
Priority to JP24636698A priority patent/JP3253278B2/ja
Priority to FR9810881A priority patent/FR2769435B1/fr
Publication of KR19990021748A publication Critical patent/KR19990021748A/ko
Application granted granted Critical
Publication of KR100256250B1 publication Critical patent/KR100256250B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • 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

Landscapes

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

Abstract

1. 청구범위에 기재된 발명이 속한 기술분야
직렬화된 리드 솔로몬 복호장치.
2. 발명이 해결하려고 하는 기술적 과제
바이트 클럭으로 동작하는 복호기를 비트 클럭에 동기시켜 동작되도록 하여 복호기 칩의 면적을 줄이고자 함.
3. 발명의 해결방법의 요지
신드롬 계산부는, 입력된 부호 데이타열을 홀수번째와 짝수번째 비트 데이타로 구분하여 각각에 대해 비트 클럭에 동기시켜 직렬로 각 비트별 신드롬 다항식의 계수값을 계산하고, 에러위치 및 추정 다항식 계산부는, 각각의 다항식별로 짝수번째 비트 데이타와 홀수번째 비트 데이타로 구분하여 비트 클럭에 동기시켜 에러값 다항식과 에러위치값 다항식을 계산하며, 상기 에러위치 다항식의 근과 에러치 계산부는, 비트 클럭에 동기시켜 비트별로 에러위치 다항식과 에러값 다항식에 근을 대입하고, 이를 누적하여 바이트 클럭에 동기시켜 블럭 단위의 에러정정을 위한 에러값을 출력한다.
4. 발명의 중요한 용도
전송시스템의 수신기에 이용됨.

Description

직렬화된 리드 솔로몬 복호장치
본 발명은 직렬화된 리드 솔로몬(Reed Solomon) 복호장치에 관한 것으로, 특히 비트 클럭에 의해 복호장치가 동작되도록 하여 장치의 크기를 감소시킨 리드 솔로몬 복호장치에 관한 것이다.
일반적으로 디지탈 전송 시스템에서 신호의 전송시 발생되는 에러를 정정하기 위해 리드 솔로몬 복호기가 많이 사용되고 있다. 예를 들어, 최근 서비스를 실시한 디지탈 위상 방송 시스템은 DVB(Digital Video Broadcasting) 등에서 리드 솔로몬 복호기는 사용된다.
리드 솔로몬 복호기는 에러 정정을 위해 블럭 단위로 부호화된 데이타를 복호한다. 여기서, 블럭 단위의 부호화란 연속적으로 입력되는 데이타를 소정의 블럭 단위로 나누어 부호화한 후, 부호화된 각 블럭의 맨 마지막 단에 에러 정정을 위한 더미(Dummy) 바이트를 각각 덧붙이는 것을 말한다. 이와 같은 블럭 단위의 부호화는 더미 바이트를 추가하여 복호단에서 전송신호의 에러를 정정할 수 있지만, 별도의 더미 바이트의 부가는 채널폭 측면에서는 채널폭이 커지는 결과를 초래한다. 하지만, 상기 블럭 단위의 부호화 및 복호화는 연속적인 착오에 대한 에러 정정 능력이 좋아 많이 사용되고 있다.
도1은 일반적인 블럭 단위의 부호하 및 복호화 동작을 설명하기 위한 도면이다.
리드 솔로몬 부호/복호기에서 사용되는 블럭 단위의 부호화 데이타는 데이타 188 바이트와 더미 16 바이트(이하, "검사 바이트"라 함.)로 이루어진다. 따라서, 본 발명의 이하 설명에서는 204 바이트의 블럭 데이타를 예로 든다.
전형적인 리드 솔로몬 부호화 및 복호화 동작을 설명하면 아래와 같다.
우선, 소스(source) 부호화 데이타(a)는 채널 부호화 되기에 앞서 소정의 바이트(188바이트)를 기준으로 화는 블럭 단위로 나누어진다. 그리고, 채널 부호화 데이타는 상기 블럭 단위로 나누어진 데이타의 각각에 16바이트의 검사 바이트를 부가되어 204 바이트의 크기를 갖는데, 이를 도1의 (b)에 도시하였다. 여기에서 알 수 있듯이 블럭 단위로 부호화됨으로써, 204/188의 채널 확장이 발생된다.
일반적으로 리드 솔로몬 부호화/복호화 방식은 갈로이스 필드(Galore field)상에서 모듈러(modular) 연산을 수행한다. 블럭화된 데이타 M(x)는 그 순서에 따라 수학식 1과 같이 나타낼 수 있다.
Figure kpo00001
상기와 같이 부호화될 블럭 데이타는 각 바이트 마다 고유의 차수를 갖는 187차 다항식 M(x)로 표현된다. 즉, "차수+1"의 단위로 블럭화됨 알 수 있다. 이와 같은 블럭 데이타 M(x)에 생성 다항식 16차의 G(x)를 곱해서 얻은 데이타가 바로 채널 부호화 데이타 C(x)이다. 즉, 블럭 데이타 187차와 생성 다항식 16차를 곱하여 203차의 다항식을 갖는 채널 부호화 데이타 C(x)를 얻을 수 있으며, 여기서 블럭 데이타 M(x)의 계수와 채널 부호화 데이타 C(x)의 203차에서 16차까지의 계수는 동일하다. 그리고, 채널 부호화 데이타 C(x)의 15차에서 0차까지의 계수가 바로 검사 바이트이며, 이 검사 바이트를 이용해 전송 데이타의 에러를 정정할 수 있다.
이를 수학식으로 표현하면 수학힉 2과 같다.
Figure kpo00002
이와 같이 생성된 채널 부호화 데이타 C(x)는 전송 채널을 통해 수신단의 복호기로 전달되어지는데, 이때 전송 데이타에는 어느 정도의 잡음이 포함되게 된다. 그러므로, 복호기로 입력되는 데이타는 채널 부호화 데이타 C(x)와는 다른 잡음의 포함된 수신 데이타 R(x)를 입력받는다.
이를 수학식으로 나타내면 수학식 3과 같다.
Figure kpo00003
상기 수신 데이타 R(x)는 도1 (c)에 도시된 바와 같이 x로 표시된 에러 데이타 E(x)를 포함하며, 이 에러 데이타 E(x)의 값은 랜덤(random)한 값이다. 전술한 바와 같이 16 바이트의 검사 바이트가 부가된 부호 데이타는 일반적으로 8개의 바이트 에러를 정정할 수 있다.
다음, 수신 데이타 R(x)로부터 에러가 있는 8개의 바이트를 정정하는 동작에 대해 살펴본다.
도2는 일반적인 리드 솔로몬 복호기의 구성도를 나타낸다.
리드 솔로몬 복호기는 입력된 블럭 단위의 데이타를 에러값이 계산될 때가지 임시 저장하는 레지스터(21)와, 입력된 블럭 단위의 데이타로부터 에러 유무를 판단하기 위해 신드롬 다항식을 계산하는 신드롬 계산부(22)와, 신드롬 계산부(22)에 의해 계산된 신드롬 다항식으로부터 유클리드 알고리즘을 이용해 에러 위치 다항식의 계수들을 결정하여 에러 위치 및 추정 다항식을 계산하는 계산부(23)와, 에러위치 및 추정 다항식 계산부(23)에 의해 계산된 에러 위치 다항식의 근을 계산하고, 에러치를 계산하는 계산부(24)와, 상기 각 계산부(22 내지 24)의 동작을 제어하는 제어신호 발생부(26), 그리고 상기 레지스터에 저장된 블럭 데이타에 상기 에러위치 다항식의 근과 에러치 계산부(24)에 의해 계산된 에러치를 더하여 수신 데이타의 에러를 정정하는 가산기(25)를 구비한다.
이와 같이 구성되는 리드 솔로몬 복호기의 동작을 보다 상세히 설펴보면 다음과 같다.
리드 솔로몬 복호기에 입력되는 데이타 R(x)로부터 에러 위치나 에러 값을 구하기 위해서는 이의 정보들을 포함하고 있는 신드롬 다항식 S(x)를 구하여야 한다. 신드롬 다항식 S(x)는 수학식4와 같이 계산될 수 있다.
Figure kpo00004
여기서, Sk는 신드롬 다항식 계수값을 나타내고, 수학식의 기본값인 α 값은 갈로이스 필드(Galore field) 상에서 주어지는 값이다. 신드롬 다항식은 검사 바이트의 갯수와 동일한 16개의 계수로 이루어진다. 즉, 신드롬 다항식은 15차수의 다항식이다. 이때, 각 신드롬 계수는 블럭 단위로 계산되어지고 한 블럭 데이타에 하나의 신드롬 다항식이 계산되어 진다. 그러므로, 신드롬 계산부(22)는 입력에서 출력가지의 지연시간인 레이턴시(latency)가 204 바이트이고, 처리량(Throuhgput) 또한 204 바이트 이다.
이렇게 구해진 신드롬 다항식은 에러위치 및 추정 다항식 계산부(23)에 입력되고, 여기에서는 에러의 위치와 값들을 유추해낼 수 있는 에러 위치 다항식 σ(x)와 에러값 다항식 ω(x)를 유클리드 알고리즘을 이용해 계산한다.
유클리드 알고리즘을 수학식으로 나타내면 수학식5와 같다.
Figure kpo00005
여기서, R0(χ)는 자체내에서 주어지는 기준 다항식을 나타내며, Q0(χ)는 신드롬 다항식의 입력인 수정 신드롬 다항식을 나타낸다. 또한 λ0(χ)는 기준 다항식을 나타내며, μ0(χ)는 삭제 위치자 다항식을 나타낸다.
유클리드 알고리즘의 최종 목표는 신드롬 다항식에 해당하는 에러위치 다항식과 에러값 다항식을 결정하는 것이다. 에러위치 및 추정 다항식 계산부(23)는 유클리드 알고리즘에서 사용되는 기준 다항식 R(x)의 치수가 8이하일 때, 종료된 이와 같은 과정을 통해 구해진 에러위치 다항식과 에러값 다항식으로부터 각 블럭내의 바이트에 에러가 존재하는 경우 그 에러를 정정할 수 있는 알고리즘이 첸(chien)의 검색 알고리즘이다. 즉, 유클리드 알고리즘을 이용해 계산된 에러위치 다항식과 에러값 다항식에 각 바이트에 해당하는 근을 대입해서 에러값이 존재하는지 아닌지를 검사하고, 에러값이 존재한다면 어떠한 값을 갖는지 계산한다.
이를 수학식으로 나타내면 수학식6과 같다.
Figure kpo00006
통상적으로 리드 솔로몬 복호기의 입력 데이타는 바이트 클럭에 따라 바이트 단위로 입력된다. 그러므로, 이와 같은 리드 솔로몬 복호기를 구현하는데 있어, 종래에는 바이트 클럭에 따라 동작이 수행되며, 각 계산부마다 각각의 셀(cell)로 구현되었기 때문에 많은 면적을 차지하는 문제점이 있었다.
따라서, 상기와 같은 종래 기술의 문제점을 해결하기 위하여 안출된 본 발명은, 비트클럭에 따라 입력된 부호 신호의 복호 동작이 직렬로 수행되도록 하고, 각 계산부를 하나의 셀(cell)로 구현하여 리드 솔로몬 복호장치의 전체 면적을 줄일 수 있으며, 아울러 전력 소모도 감소시킬 수 있는 리드 솔로몬 복호장치를 제공하는데 그 목적이 있다.
제1도는 일반적인 블럭 단위의 부호화 및 복호화 동작을 설명하기 위한 도면.
제2도는 일반적인 리드 솔로몬 복호장치의 블럭 구성도.
제3도는 본 발명에 따른 신드롬 계산부의 일실시 예시도.
제4도는 본 발명에 따른 신드롬 계산부의 동작 타이밍도.
제5도는 본 발명에 따른 에러위치 및 추정다항식 계산부의 일실시 예시도.
제6도는 본 발명에 따른 에러위치 및 다항식의 근과 에러치 계산부의 일실시 예시도.
〈도면의 주요부분에 대한 부호의 설명〉
21 : 레지스터 22 : 신드롬 계산부
23 : 에러위치 및 추정 다항식 계산부
24 : 에러위치 다항식의 근과 에러치 계산부
25 : 가산기 26 : 제어신호 발생부
상기 목적을 달성하기 위한 본 발명의 리드 솔로몬 복호 장치는, 입력된 부호 데이타의 신드롬 다항식을 계산하는 신드롬 계산부와, 상기 신드롬 계산부에 의해 계산된 신드롬 다항식을 이용하여 에러값 다항식과 에러위치값 다항식을 계산하는 에러위치 및 추정 다항식 계산부와, 상기 에러위치 다항식과 에러값 다항식을 이용하여 에러값을 계산하는 에러위치 다항식의 근과 에러치 계산부를 구비한 리드 솔로몬 복호장치에 있어서, 상기 신드롬 계산부는, 입력된 부호 데이타열을 홀수번째와 짝수번째 비트 데이타로 구분하여 각각에 대해 비트 클럭에 동기시켜 직렬로 각 비트별 신드롬 다항식의 계수값을 계산하고, 상기 에러위치 및 추정 다항식 계산부는, 초기 신드롬 다항식, 수정 신드롬 다항식, 초기 삭제 위치자 다항식, 삭제 위치자 다항식별로 각각 짝수번째 비트 데이타와 홀수번째 비트 데이타로 구분하여 비트 클럭에 동기시켜 에러값 다항식과 에러위치값 다항식을 계산하며, 상기 에러 위치 다항식의 근과 에러치 계산부는, 비트 클럭에 동기시켜 비트별로 에러위치 다항식과 에러값 다항식에 근을 대입하고, 이를 누적하여 바이트 클럭에 동기시켜 블럭 단위의 에러정정을 위한 에러값을 출력하는 것을 특징으로 한다.
또한, 본 발명의 리드 솔로몬 복호 방법은, 입력된 부호 데이타의 신드롬 다항식을 계산하는 신드롬 계산부와, 상기 신드롬 계산부에 의해 계산된 신드롬 다항식을 이용하여 에러값 다항식과 에러위치값 다항식을 계산하는 에러위치 및 추정 다항식 계산부와, 상기 에러위치 다항식과 에러값 다항식을 이용하여 에러값을 계산하는 에러위치 다항식의 근과 에러치 계산부를 구비한 리드 솔로몬 복호 방법에 있어서, 입력된 부호 데이타열을 홀수번째 비트데이타와 짝수번째 비트 데이타로 구분하는 제1과정; 상기 제1과정에서 구분된 비트 데이터 각각에 대해 비트 클럭에 동기시켜 상기 신드롬 계산부에서 직렬로 각 비트별 신드롬 다항식의 계수값을 계산하는 제2과정; 초기 신드롬 다항식, 수정 신드롬 다항식, 초기 삭제 위치자 다항식, 삭제 위치자 다항식별로 각각 짝수번째 비트 데이타와 홀수번째 비트 데이타로 구분하는 제3과정; 상기 제3과정에서 구분된 각 비트 데이터를 비트 클럭에 동기시켜 상기 에러위치 및 추정 다항식 계산부에서 에러값 다항식과 에러위치값 다항식을 계산하는 제4과정; 및 상기 에러위치 다항식의 근과 에러치 계산부에서, 비트 클럭에 동기시켜 비트별로 상기 에러위치 다항식과 상기 에러값 다항식에 근을 대입하고, 이를 누적하여 바이트 클럭에 동기시켜 블럭 단위의 에러정정을 위한 에러값을 출력하는 제5과정을 포함하여 이루어진다.
먼저, 본 발명의 기본적인 원리에 대해 설명한다.
통상적으로 전송시스템 수신단의 복조부는 리드 솔로몬 복조 기능을 수행하기 이전에는 비트 단위로 동작된다. 그러므로, 리드 솔로몬 복호기도 비트 클럭으로 동작될 수 있으며, 이런 경우에는 기존의 바이트 클럭에 따라 동작되던 리드 솔로몬 복호기의 모든 기능 블럭들의 동작은 시분할을 수행하여 한개의 블럭으로 8번의 반복 동작을 통해 이루어진다. 상기와 같이 복호기를 구현할 경우 각 프로세서는 1/8의 면적으로 구현될 수 있다. 또한, 8번의 시분할을 위해 각 데이타를 일시 저장할 레지스터들이 요구되는데, 이는 8사이클 지연되는 시프트레지스터를 하나의 칩내에 배치하여 제작 비용을 줄일 수 있다.
이러한 결과로 인해 전체적인 레이턴시(letency)는 감소하기 때문에 복호시 사용되는 지연용 램(RAM)의 크기도 줄어든다. 즉, 만약 기존의 리드 솔로몬 복호기가 입력된 부호 데이타를 400사이클 지연시켰다면 본 발명은 242사이클만 입력된 부호 데이타를 지연시키면 되므로 사용된 램(RAM)의 크기가 242/400만큼 줄어든다.
이하, 첨부된 도3 내지 도6을 참조하여 본 발명의 실시예를 상세히 설명하기로 한다.
도3은 본 발명에 따른 신드롬 계산부의 상세 구성도이고, 도4는 신드롬 계산부의 동작 타이밍도이다. 도3에서 "31"은 역다중화기(DEMUX), "32a, 32b"는 가산기, "33a, 33b, 34a, 34b"는 승산기, "35a, 35b"는 레지스터, "36a, 36b"는 논리곱게이트, "37a, 37b"는 샤프트 레지스터를 각각 나타낸다.
신드롬 계산부는 일반적으로 잘 알려진 회로로서, 본 발명에서도 그와 같은 공지의 회로를 이용하고, 다만 짝수와 홀수 데이타로 구분하여 신드롬 다항식 값을 계산하기 위한 구성과, 입력된 부호 데이타를 비트 클럭에 따라 직렬로 처리하기 위한 구성을 가지고 있음이 다르다.
먼저, 본 발명의 원리를 수학식을 통해 살펴본다.
신드롬 다항식을 계산하기 위해 신드롬 다항식 계수값 Sκ를 수학식7과 같이 표현할 수 있다.
Figure kpo00007
수학식7을 모듈성에 근거한 수학식으로 변형하면 수학식8과 같다.
Figure kpo00008
그러므로, 신드롬 계산부에서 각 신드롬 다항식의 계수값 Sκ를 구하기 위한 회로는 병렬로 구현되고, 입력 데이타열 rn이 직렬로 입력되므로 한 처리기로 구현되면 된다. 또한, 매 바이트 사이클마다 입력되는 입력 데이타열의 신드롬 계수값 Sκ(0〈k〈16)를 계산하기 위해서 16개의 프로세서를 사용하지 않고, 짝수와 홀수 데이타로 구분하여 각각의 신드롬 계수값을 계산하므로 2개의 프로세서로 구현될 수 있다. 이의 회로가 도3에 도시된 바와 같다. 이러한 본 발명의 신드롬 계산부는 레이턴시 204사이클이고, 매 204 사이클마다 해당하는 블럭 다항식에 대한 신드롬 다항식을 한 사이클 동안에만 출력시킨다.
짝수와 홀수에 대한 신드롬 다항식 계산식은 동일하므로 이하 설명에서는 짝수에 대한 신드롬 다항식을 계산하는 과정만 설명한다.
먼저, 신드롬 계수값 Sκ는 수학식9와 같이 구해질 수 있다.
Figure kpo00009
상기 수학식9에 나타낸 바와 같이 신드롬 계수값들은 각각의 신드롬 계수값에 서로 다른 고정 상수 α의 값을 순차적으로 곱함으로써 계산된다.
이를 시분할 방식으로 묶어서 수학식으로 표현하면 수학식10과 같다.
Figure kpo00010
상기 수학식10에서 알 수 있는 바와 같이 매 n의 변수에서 t는 0에서 7까지 8사이클을 순환한다. 매 t에 해당하는 신드롬 다항식의 계수값은 일시 시프트레지스터에 저장된다. 이 시프트레지스터는 비트 단위로 계산된 신드롬 계수값을 8사이클동안 지연시키는 역할을 한다.
도3 및 도4를 참조하여 보다 구체적으로 신드롬 계산부의 동작을 살펴본다.
바이트 클럭에 따라 바이트 단위로 입력되는 부호 데이타열은 역다중화기(31)에 의해 순차적으로 홀수번째 데이타와 짝수번째 데이타로 나누어져 각각에 대한 신드롬 계수값을 계산하기 위해 각각 가산기(33a, 33b)로 입력된다.
고정 상수 α값은 미리 계산되어 메모리(도시되지 않음)에 저장된 후, 제1승산기(34a, 34b)로 제공된다. 제1 승산기(34a, 34b)는 메모리(도시되지 않음)로부터 제공된 고정 상수 α와 이전 비트 클럭 주기에 출력된 고정 상수 α를 곱셈한다. 이 제1 승산기(34a, 34b)의 출력은 1비트 레지스터(35a, 35b)에 저장된다. 레지스터(35a, 35b)는 최상위 비트를 나타내는 신호 msbCk에 의해 초기화되고, 제1 승산기(34a, 34b)로부터 인가된 고정상수를 일시(1비트) 저장한 후, 제1 승산기(34a, 34b)와 제2 승산기(33a, 33b)로 출력한다.
8비트 시프트 레지스터(37a, 37b)는 가산기(32a, 32b)에 의해 계산된 비트 단위의 신드롬 계수값을 입력받아 8비트 시프트시켜 출력한다. 시프트 레지스터(37a, 37b)로 입력되는 프레임의 초기 신드롬 계수값은 0이다. 시프트 레지스터(37a, 37b)에 의해 8비트 시프트된 계수값은 논리곱 게이트(36a, 36b)에 의해 한 프레임의 유효 입력 주기를 나타내는 프레임 신호와 논리곱 된다. 여기서, 프레임 신호는 반전된 신호로 논리곱 게이트(36a, 36b)로 인가된다.
제2 승산기(33a, 33b)는 논리곱 게이트(36a, 36b)로부터 인가된 지연된 한 바이트 이전의 계수값과 레지스터(35a, 35b)로부터 인가된 고정 상수를 곱하여 각 비트 데이타의 계수값을 계산한다. 이렇게 계산된 계수값과 입력되는 부호 데이타 열의 비트 데이타가 가산기(32a, 32b)에 의해 가산됨으로써, 한 블럭 데이타에 해당하는 신드롬 다항식이 계산된다. 이와 같은 신드롬 다항식은 각 블럭 데이타마다 한번씩 한 바이트 클럭에서(8사이클의 비트 클럭에서) 신드롬 다항식 인에이블 신호 Syndsig에 동기되어 짝수 및 홀수 데이타열 각각에 대해 출력된다.
상기와 같은 동작을 통해 계산된 신드롬 다항식의 계수값으로부터 에러 위치 다항식과 에러값 다항식을 구해내기 위해 일반적으로 유클리드 알고리즘이 이용되는데, 본 발명에서는 이를 직렬화하여 하나의 프로세서로 구현하였다. 또한, 전체적인 리드 솔로몬 복호기의 레이턴시를 최소화하기 위해 바이트 클럭이 아닌 비트 클럭에 동기시켜 동작되도록 하였다.
도5는 이와 같은 유클리드 알고리즘을 이용한 에러위치 및 추정 다항식 계산부의 회로도로서, 도면에서 "51a, 51b"는 크로스바 스위치, "52a, 52b, 53a, 53b"는 승산기, "54a, 54b"는 가산기, "55a 내지 55d"는 역다중화기(DEMUX), "56a 내지 56f"는 시프트 레지스터, "57a 내지 55d"는 다중화기(MUX)를 각각 나타낸다.
본 발명에 따른 에러위치 및 추정 다항식 계산부의 회로 또한 일반적인 기존의 회로와 거의 유사하며, 단지 짝수와 홀수 부분으로 나누어 에러값과 에러위치값을 각각 계산하고, 직렬 처리를 위해 시프트 레지스터들을 구비한다.
직렬 처리를 위해 유클리드 알고리즘을 변형하면 수학식11과 같이 나타낼 수 있다.
Figure kpo00011
이와 같은 수학식11을 바탕으로 구현한 회로가 도5에 도시되어 있으며, 도5를 참조하여 에러위치 및 추정 다항식 계산부의 동작을 살펴본다.
먼저, 도면에서 R(x)는 초기 신드롬 다항식, Q(x)는 신드롬 다항식을 재처리한 수정 신드롬 다항식, λ(x)는 초기 삭제 위치자 다항식, μ(x)는 삭제 위치자 다항식을 각각 나타내며, A계수 및 B계수는 블럭마다 별도의 연산기를 통해 계산되어 제공된다. A계수 및 B계수의 계산 과정에 대해서는 이미 잘 알려진 기술이므로 본 발명의 설명에서는 생략하기로 한다. 또한, 수정 신드롬 다항식 Q(x)와 삭제위치자 다항식 μ(x)는 신드롬 계산부로부터 제공되며, 초기 다항식들 R(x) 및 λ(x)는 자체내의 연산기(도시되지 않음)로부터 제공된다.
에러위치 및 추정 다항식 계산부는 에러값과 에러위치값을 계산하기 위한 연산기를 별도 구비하며, 또한 각각의 다항식들에 대응하고, 짝수 및 홀수로 구분하여 연산하기 위해 총 8개의 시프트 레지스터를 필요로 한다.
크로스바 스위치(51a, 51b)는 일반적인 회로와 마찬가지로 제어신호 발생부(도2의 26)로부터 인가된 제어신호에 따라 초기 신드롬 다항식 R(x)와 수정 신드롬 다항식 Q(x) 또는 초기 삭제 위치자 다항식 λ(x)와 삭제 위치자 다항식 μ(x)를 상호 교차시켜 출력한다.
제1 승산기(52a, 52b)는 크로스바 스위치(51a, 51b)로부터 인가된 일출력과 B계수를 곱셈한다. 제2 승산기(53a, 53b)는 크로스바 스위치(51a, 51b)로부터 인가된 타출력과 A계수를 곱셈한다. 가산기(54a, 54b)는 제1 승산기(52a, 52b)의 출력과 제2 승산기(53a, 53b)의 출력을 가산한다. 가산기(54a, 54b)의 출력신호는 역다중화기 55a, 55c에 의해 짝수 데이타와 홀수 데이타로 구분되어 각각의 시프트 레지스터(56a, 56b), (56e, 56f)로 인가된다. 또한, 크로스바 스위치 51a, 51b의 타출력은 역다중화기 55b, 55d에 의해 짝수 데이타와 홀수 데이타로 구분되어 각각의 시프트 레지스터(56c, 56d), (56g, 56h)로 인가된다. 각각의 시프트 레지스트들(56a 내지 56h)은 입력된 신호를 8비트 시프트시켜 출력하며, 각각의 다항식에 대응하는 짝수와 홀수 데이타를 저장하는 한 쌍의 시프트 레지스터의 출력은 각각의 다중화기(57a 내지 57d)에 의해 다중화되어 출력된다. 여기서, 각 다중화기(57a, 57b)의 출력은 크로스바 스위치(51a, 51b)로 궤환되고, 에러값 다항식과 에러 위치 다항식으로 각각 에러위치 다항식의 근과 에러치 계산부(도2의 24)로 인가된다.
상기와 같이 계산된 에러 위치 다항식과 에러값 다항식을 이용하여 에러위치 다항식의 근과 에러치 계산부(도2의 24)는 에러값과 에러 위치를 구하기 위해 첸(chien)의 검색 알고리즘을 사용한다. 즉, 에러위치 다항식의 근과 에러치 계산부(도2의 24)는 각 에러 위치에 해당하는 근을 에러 위치 다항식에 대입하여 그 구한 근이 에러위치 다항식의 근인지를 판별한다. 그리고, 만약 에러위치 다항식의 근이라면 이때의 값을 에러값 다항식에 대입하여 에러값을 구한다.
이러한 본 발명의 에러위치 다항식의 근과 에러치 계산부(도2의 24)는 각 차수에 해당되는 근인지를 판별하기 위해 직렬화하여 대입하는 방법을 사용하고, 에러 정정시에는 바이트 클럭에 동기시켜 수행한다. 이와 같이 에러 정정시에는 바이트 클럭에 동기시켜 수행하는 이유는 정정해야할 데이타가 바이트 단위이기 때문이다. 에러값을 정정하는 에러위치 다항식의 근과 에러치 계산부(도2의 24)의 동작을 수학식으로 표현하면 수학식12 및 수학식 13과 같다.
Figure kpo00012
Figure kpo00013
이와 같은 수학식을 초기로 구성한 에러위치 다항식의 근과 에러치 계산회로가 도6에 도시되어 있다.
도6에서 "61a, 61b"는 초기값 발생기, "62a, 62b"는 승산기, "63a, 63b"는 다중화기(MUX), "64a, 64b"는 8비트 시프트 레지스터, "65"는 홀수값 추출기, "66a 내지 66c"는 누산기, "67"은 제로(0)값 검출기, "68"은 롬(ROM), "69"는 가산기, "70"은 논리곱 게이트를 각각 나타낸다.
초기값 발생기 61a, 61b는 각각 입력된 에러 위치값 다항식(σ(x))과 에러값 다항식(ω(x))을 256 바이트로 보상하는 기능을 수행한다.
다중화기 63a, 63b는 초기값 발생기 61a, 61b로부터 인가된 데이타를 선택하여 출력한 후, 각 비트별 값을 승산기 62a, 62b를 통해 계산하기 위해 8비트 동안 승산기 62a, 62b의 출력을 선택하여 출력한다.
다중화기 63a, 63b의 출력은 8비트 시프트 레지스터 64a, 64b로 인가된다. 8비트 시프트 레지스터(64a, 64b)는 입력된 데이타를 8비트 시프트시켜 순차적으로 승산기(62a, 62b)로 제공한다. 승산기(62a, 62b)는 고정된 소정의 계수값과 시프트된 데이타를 곱셈한다. 이러한 과정을 통해 각 비트별로 근을 계산하기 위한 대입 과정이 수행된다.
상기와 같이 에러위치 값을 계산하기 위한 동작과 에러값을 계산하기 위한 동작이 별도로 수행된 후, 에러위치 계산과정의 출력인 다중화기 63a의 출력은 홀수값 추출기(65)와 누산기 66a로 인가된다. 홀수값 추출기(65)는 다중화기 63a으로부터 출력된 데이타 중 홀수 값만을 추출하고, 이 추출된 홀수값은 누산기 66b에 의해 바이트 단위로 누적된다. 한편, 누산기 66a도 입력된 데이타를 바이트 단위로 누적한다. 마찬가지로, 에러값 계산을 과정의 출력인 다중화기 63b의 출력은 누산기 66c에 의해 바이트 단위로 누적된다. 이러한 누산기들은 레지스터와 가산기로 구성된다.
제로(0) 검출기(67)는 누산기 66a로부터 출력된 바이트 단위의 데이타 중 '0'의 값을 검출하며, 롬(ROM; 68)은 누산기 66b의 출력 데이타를 반전시켜 저장한다. 여기서, 롬(68)은 분수 계산을 위해 256×8 크기를 갖는다.
롬(68)의 출력값과 에러값 계산과정에서 누적된 누산기 66c의 출력은 가산기(69)에 의해 가산된다. 그리고, 제로(0) 검출기(67)의 출력과 가산기(69)의 출력은 논리곱 게이트(70)에 의해 논리곱되어 에러값이 출력된다.
이와 같은 리드 솔로몬 복호기에서 정정한 에러의 개수를 파악하는데 8개 이하인 경우에는 정확히 및 개인지를 찾을 수 있으나, 8개 이상의 에러가 발생한 경우에는 프레임 에러 신호가 출력된다.
이렇게 직렬 알고리즘으로 변형된 첸의 알고리즘에 있어서, 시간에 따른 데이타의 변화를 표1에 나타내었다.
이상에서 설명한 본 발명은 본 발명이 속하는 기술분야에서 통상의 지식을 가진자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위내에서 여러가지 치환, 변형 및 변경이 가능하므로, 전술한 실시예 및 도면에 한정되는 것이 아니다.
상기와 같이 이루어지는 본 발명은 복호기의 전체 칩 면적을 줄이면서 전력 소모를 감소시킬 수 있는 효과가 있다.

Claims (16)

  1. 입력된 부호 데이타의 신드롬 다항식을 계산하는 신드롬 계산부와, 상기 신드롬 계산부에 의해 계산된 신드롬 다항식을 이용하여 에러값 다항식과 에러위치값 다항식을 계산하는 에러위치 및 추정 다항식 계산부와, 상기 에러위치 다항식과 에러값 다항식을 이용하여 에러값을 계산하는 에러위치 다항식의 근과 에러치 계산부를 구비한 리드 솔로몬 복호장치에 있어서, 상기 신드롬 계산부는, 입력된 부호 데이타열을 홀수번째와 짝수번째 비트 데이타로 구분하여 각각에 대해 비트 클럭에 동기시켜 직렬로 각 비트별 신드롬 다항식의 계수값을 계산하고, 상기 에러위치 및 추정 다항식 계산부는, 초기 신드롬 다항식, 수정 신드롬 다항식, 초기 삭제 위치자 다항식, 삭제 위치자 다항식별로 각각 짝수번째 비트 데이타와 홀수번째 비트 데이타로 구분하여 비트 클럭에 동기시켜 에러값 다항식과 에러위치값 다항식을 계산하며, 상기 에러위치 다항식의 근과 에러치 계산부는, 비트 클럭에 동기시켜 비트별로 에러위치 다항식과 에러값 다항식에 근을 대입하고, 이를 누적하여 바이트 클럭에 동기시켜 블럭 단위의 에러정정을 위한 에러값을 출력하는 리드 솔로몬 복호장치.
  2. 제1항에 있어서, 상기 신드롬 계산부는, 입력되는 부호 데이타열을 짝수번째 데이타와 홀수번째 데이타로 구분하기 위해 역다중화하는 역다중화수단; 신드롬 계수값과 상기 역다중화수단의 출력을 가산하여 신드롬 다항식을 각각 계산하는 연산수단; 및 상기 연산수단에 의해 계산된 신드롬 계수값을 비트 클럭에 동기되어 순차적으로 지연된 계수값을 상기 연산수단으로 각각 제공하는 지연수단;을 구비한 리드 솔로몬 복호장치.
  3. 제2항에 있어서, 상기 각각의 지연수단은, 시프트 레지스터인 것을 특징으로 하는 리드 솔로몬 복호장치.
  4. 제2항에 있어서, 상기 각각의 연산수단은, 상기 지연수단의 출력신호와 외부의 반전된 프레임 신호를 논리곱하는 수단; 바이트별로 각 비트의 고정 상수값을 제공하는 상수값 연산수단; 상기 논리곱 수단의 출력과 상기 상수값 연산수단의 출력을 승산하는 수단; 및 상기 승산수단의 출력과 상기 역다중화수단의 출력을 가산하는 가산수단을 구비한 리드 솔로몬 복호장치.
  5. 제1항에 있어서, 상기 에러위치 및 추정 다항식 계산부는, 에러값 다항식을 계산하는 제1 연산수단과, 에러위치값 다항식을 계산하는 제2 연산수단을 구비하되, 상기 제1 및 제2 연산수단 각각은, 초기 다항식과 상기 신드롬 계산부로부터입력된 다항식에 대응하여 계산된 에러값 또는 에러위치값 다항식의 계수값을 짝수번째와 홀수번째 비트 데이타별로 비트 클럭에 따라 순차적으로 지연시키는 다수개의 지연수단을 구비한 리드 솔로몬 복호장치.
  6. 제5항에 있어서, 상기 다수개의 지연수단은, 8개의 지연수단을 포함한 것을 특징으로 하는 리드 솔로몬 복호장치.
  7. 제5항 또는 제6항에 있어서, 상기 지연수단은, 8비트 시프트 레지스터인 것을 특징으로 하는 리드 솔로몬 복호장치.
  8. 제1항에 있어서, 상기 에러위치 다항식의 근과 에러치 계산부는, 에러위치값 다항식을 이용해 에러위치의 근을 계산하는 제1 연산수단과, 에러값 다항식을 이용해 에러값을 계산하는 제2 연산수단을 구비하되, 제1 및 제2 연산수단은 비트 클럭에 동기되어 각 비트별로 계수를 대입하도록 데이타를 순차적으로 지연시키는 지연수단을 포함한 리드 솔로몬 복호장치.
  9. 제8항에 있어서, 상기 제1 연산수단은, 에러위치 다항식의 값을 256바이트로 보상하기 위한 초기값을 발생하는 수단; 상기 초기값 발생수단의 출력과 각 비트별 에러위치에 대한 대입값을 입력받아 둘 중 하나를 선택하는 수단; 상기 선택수단의 출력을 비트 클럭에 따라 순차적으로 지연시키는 지연수단; 상기 지연수단의 출력과 고정된 계수를 곱셈하여 상기 선택수단으로 제공하는 승산수단; 상기 선택수단의 출력중 홀수값을 추출하는 수단; 상기 홀수값 추출수단의 출력을 누적하여 바이트 단위로 출력하는 제1 누적 수단; 상기 선택수단의 출력을 누적하여 바이트 단위로 출력하는 제2 누적수단; 상기 제2 누적수단의 출력 데이타들 중 논리 '0'의 값을 검출하는 '0'검출수단; 상기 제1 누적수단의 출력 데이타들을 반전시켜 저장하는 저장수단; 상기 제2 연산수단에 의해 계산된 에러값과 상기 저장수단의 출력값을 가산하는 가산수단; 및 상기 가산수단의 출려과 상기 '0'검출수단의 출력을 조합하여 에러값을 출력하는 논리곱수단을 구비한 리드 솔로몬 복호장치.
  10. 제8항 또는 제9항에 있어서, 상기 지연수단은, 8비트 시프트 레지스터인 것을 특징으로 하는 리드 솔로몬 복호장치.
  11. 제9항에 있어서, 상기 저장수단은, 256×8의 크기를 갖는 메모리인 것을 특징으로 하는 리드 솔로몬 복호장치.
  12. 제10항에 있어서, 상기 누적수단은, 새로 입력되는 데이타와 이전 데이타를 가산하는 가산기; 및 상기 가산기의 출력을 일시 저장하는 레지스터를 구비한 리드 솔로몬 복호장치.
  13. 제8항에 있어서, 에러 다항식의 값을 256바이트로 보상하기 위한 초기값을 발생하는 수단; 상기 초기값 발생수단의 출력과 각 비트별 에러값을 입력받아 둘 중 하나를 선택하는 수단; 상기 선택수단의 출력을 비트 클럭에 따라 순차적으로 지연시키는 지연수단; 상기 지연수단의 출력과 고정된 계수를 곱셈하여 상기 선택수단으로 제공하는 승산수단; 및 상기 선택수단의 출력을 누적하여 바이트 단위로 출력하는 누적수단을 구비한 리드 솔로몬 복호장치.
  14. 제13항에 있어서, 상기 지연수단은, 8비트 시프트 레지스터인 것을 특징으로 하는 리드 솔로몬 복호장치.
  15. 제13항에 있어서, 상기 누적수단은, 상기 선택수단의 출력과 이전 데이타를 가산하는 가산기; 및 상기 가산기의 출력을 일시 저장하는 레지스터를 구비한 리드 솔로몬 복호장치.
  16. 입력된 부호 데이타의 신드롬 다항식을 계산하는 신드롬 계산부와, 상기 신드롬 계산부에 의해 계산된 신드롬 다항식을 이용하여 에러값 다항식과 에러위치값 다항식을 계산하는 에러위치 및 추정 다항식 계산부와, 상기 에러위치 다항식과 에러값 다항식을 이용하여 에러값을 계산하는 에러위치 다항식의 근과 에러치 계산부를 구비한 리드 솔로몬 복호 방법에 있어서, 입력된 부호 데이타열을 홀수번째 비트데이타와 짝수번째 비트 데이타로 구분하는 제1과정; 상기 제1과정에서 구분된 비트 데이터 각각에 대해 비트 클럭에 동기시켜 상기 신드롬 계산부에서 직렬로 각 비트별 신드롬 다항식의 계수값을 계산하는 제2과정; 초기 신드롬 다항식, 수정 신드롬 다항식, 초기 삭체 위치자 다항식, 삭제 위치자 다항식별로 각각 짝수번째 비트 데이타와 홀수번째 비트 데이타로 구분하는 제3과정; 상기 제3과정에서 구분된 각 비트 데이터를 비트 클럭에 동기시켜 상기 에러위치 및 추정 다항식 계산부에서 에러값 다항식과 에러위치값 다항식을 계산하는 제4과정; 및 상기 에러위치 다항식의 근과 에러치 계산부에서, 비트 클럭에 동기시켜 비트별로 상기 에러위치 다항식과 상기 에러값 다항식에 근을 대입하고, 이를 누적하여 바이트 클럭에 동기시켜 블럭 단위의 에러정정을 위한 에러값을 출력하는 제5과정;을 포함하여 이루어진 리드 솔로몬 복호 방법.
KR1019970045322A 1997-08-30 1997-08-30 직렬화된 리드 솔리몬 복호장치 KR100256250B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1019970045322A KR100256250B1 (ko) 1997-08-30 1997-08-30 직렬화된 리드 솔리몬 복호장치
US09/143,346 US6145113A (en) 1997-08-30 1998-08-28 Series reed-solomon decoder synchronized with bit clock signal
JP24636698A JP3253278B2 (ja) 1997-08-30 1998-08-31 直列化されたリードソロモン復号装置
FR9810881A FR2769435B1 (fr) 1997-08-30 1998-08-31 Decodeur serie de reed-solomon synchronise avec un signal d'horloge de bits

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970045322A KR100256250B1 (ko) 1997-08-30 1997-08-30 직렬화된 리드 솔리몬 복호장치

Publications (2)

Publication Number Publication Date
KR19990021748A KR19990021748A (ko) 1999-03-25
KR100256250B1 true KR100256250B1 (ko) 2000-05-15

Family

ID=19520627

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970045322A KR100256250B1 (ko) 1997-08-30 1997-08-30 직렬화된 리드 솔리몬 복호장치

Country Status (4)

Country Link
US (1) US6145113A (ko)
JP (1) JP3253278B2 (ko)
KR (1) KR100256250B1 (ko)
FR (1) FR2769435B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6370671B1 (en) * 1998-06-18 2002-04-09 Globespan, Inc. Configurable decoder and method for decoding a reed-solomon codeword
US7228490B2 (en) * 2004-02-19 2007-06-05 Quantum Corporation Error correction decoder using cells with partial syndrome generation
US7661057B2 (en) * 2006-02-01 2010-02-09 Broadcom Corporation Clocking Chien searching at different frequency than other Reed-Solomon (RS) ECC decoding functions
KR100900329B1 (ko) * 2007-07-13 2009-06-02 한양대학교 산학협력단 리드솔로몬 복호 방법 및 장치

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4782490A (en) * 1987-03-16 1988-11-01 Cythera Corporation Method and a system for multiple error detection and correction
US4873688A (en) * 1987-10-05 1989-10-10 Idaho Research Foundation High-speed real-time Reed-Solomon decoder
US5280488A (en) * 1990-11-08 1994-01-18 Neal Glover Reed-Solomon code system employing k-bit serial techniques for encoding and burst error trapping

Also Published As

Publication number Publication date
KR19990021748A (ko) 1999-03-25
US6145113A (en) 2000-11-07
FR2769435B1 (fr) 2001-08-31
JPH11215011A (ja) 1999-08-06
JP3253278B2 (ja) 2002-02-04
FR2769435A1 (fr) 1999-04-09

Similar Documents

Publication Publication Date Title
US6694476B1 (en) Reed-solomon encoder and decoder
US5185711A (en) Apparatus for dividing elements of a finite galois field and decoding error correction codes
Lee High-speed VLSI architecture for parallel Reed-Solomon decoder
JP3970337B2 (ja) 大規模データ・ブロックのためのハードウェア最適化リード・ソロモン・デコーダ
EP0158510B1 (en) Error detection and correction in digital communication systems
EP0840461A2 (en) Galois field multiplier for Reed-Solomon decoder
US4697248A (en) Arithmetic circuit for obtaining the vector product of two vectors
KR100256250B1 (ko) 직렬화된 리드 솔리몬 복호장치
JP3447053B2 (ja) 組み合わせ回路、該組み合わせ回路を使用する符号化装置、復号装置、および半導体デバイス
JP2002335167A (ja) 復号回路、該復号回路を用いる復号装置、復号方法および半導体デバイス
US6880121B2 (en) Parallel processing syndrome calculating circuit and reed-solomon decoding circuit
EP0913949A2 (en) Device and method for carrying out Reed-Solomon encoding
US5408476A (en) One bit error correction method having actual data reproduction function
US6859905B2 (en) Parallel processing Reed-Solomon encoding circuit and method
US7281196B2 (en) Single error Reed-Solomon decoder
US5031137A (en) Two input bit-serial multiplier
KR100212825B1 (ko) 리드 솔로몬 복호기의 신드롬 계산장치
US7185258B2 (en) Signal processing method, signal processing system, program for signal processing, and computer-readable storage medium on which this program is recorded
KR100226837B1 (ko) 디지털 티브이의 에러 정정 장치
KR100192792B1 (ko) 리드 솔로몬 복호기의 다항식 평가 장치
JP2566929B2 (ja) 符号化・復号回路
KR100212827B1 (ko) 리드 솔로몬 복호기의 다황식 평가 장치
KR0175274B1 (ko) 리드 솔로몬 복호기의 체인즈 검출 장치
KR100192790B1 (ko) 리드 솔로몬 복호기에서의 에러 평가 다항식의 계수계산장치
JPS623619B2 (ko)

Legal Events

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

Payment date: 20060124

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee