KR100215570B1 - 고화질 텔레비젼용 리드 솔로몬 디코더 - Google Patents

고화질 텔레비젼용 리드 솔로몬 디코더 Download PDF

Info

Publication number
KR100215570B1
KR100215570B1 KR1019960051202A KR19960051202A KR100215570B1 KR 100215570 B1 KR100215570 B1 KR 100215570B1 KR 1019960051202 A KR1019960051202 A KR 1019960051202A KR 19960051202 A KR19960051202 A KR 19960051202A KR 100215570 B1 KR100215570 B1 KR 100215570B1
Authority
KR
South Korea
Prior art keywords
output
value
error
symbol
signal
Prior art date
Application number
KR1019960051202A
Other languages
English (en)
Other versions
KR19980031644A (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 KR1019960051202A priority Critical patent/KR100215570B1/ko
Priority to GB9722792A priority patent/GB2318954B/en
Priority to IT002426 priority patent/IT1295890B1/it
Priority to CNB971259739A priority patent/CN1222169C/zh
Priority to JP29757897A priority patent/JP4012997B2/ja
Priority to US08/960,232 priority patent/US6031875A/en
Priority to DE1997147774 priority patent/DE19747774B4/de
Priority to FR9713577A priority patent/FR2756991B1/fr
Publication of KR19980031644A publication Critical patent/KR19980031644A/ko
Application granted granted Critical
Publication of KR100215570B1 publication Critical patent/KR100215570B1/ko

Links

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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/1733Controllable logic circuits
    • H03K19/1737Controllable logic circuits using multiplexers
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/015High-definition television systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

본 발명은 고화질 텔레비젼에 적용된 리드 솔로몬 코드를 복호화시킬 수 있는 리드 솔로몬 디코더에 관한 것으로, 심볼 클럭의 10배 빠른 RS클럭을 발생하는 클럭 발생 수단(1)과; 리드 솔로몬 부호화된 수신 심볼을 입력받는 입력수단(2); 수신 심볼(r(x))을 소정 지연 후 출력하는 선입선출수단(3); 상기 입력 수단(2)으로 부터 출력된 코드 워드의 모든 심볼이 입력 되었을 때, 계산된 신드롬(Si)을 출력하는 신드롬 계산수단(4); 신드롬 선택수단(6); 상기 신드롬(Si)을 입력받아 에러 위치 다항식(σ(X))을 계산하여 계수(σ_COEF)및, 차수(L)를 출력하는 에러 위치 다항식 계산수단(7); 상기 신드롬(Si)과 에러 위치다항식의 계수(σ_COEF)를 입력받아 발생된 에러를 정정하여 에러 정정 신호를 출력함과 동시에, 상기 에러 위치 다항식의 차수(L)를 입력받아 정정된 신호가 정확한지를 판단하여 복원 실패 신호를 출력하는 에러 정정수단(8) 및; 상기 선입선출수단(3)과, 상기 신드롬 계산수단(4), 상기 신드롬 선택수단(6), 에러 위치 다항식 계산수단(7) 및, 상기 에러 정정수단(8)을 제어하는 제어수단(10)로 구성되는 ATV용 리드 솔로몬 디코더를 VLSI로 구현할 수 있는 효과가 있는 것이다.

Description

고화질 텔레비젼용 리드 솔로몬 디코더 (A Reed-Solomon Decoder of advaned television)
본 발명은 에러 정정 부호화(error correcting coding, error control coding : 이하 ECC라 칭함)되어 전송된 디지털 데이터를 에러 정정 복호화하는 리드 솔로몬 디코더에 관한 것으로, 특히 고화질 텔레비젼(Advanced TeleVision : 이하 ATV 라 함)에 적용된 리드 솔로몬 부호를 복호화시킬 수 있는 리드 솔로몬 디코더에 관한 것이다.
일반적으로, 디지털 데이터를 통신 채널을 통해 전송하거나 저장 매체에 저장 시에 발생되는 에러를 검출·정정하기 위해 검사 데이터를 부가하여 부호화하게 된다.
이것을 에러 정정 부호화(ECC)라 하며, 그 종류로는 정보 시퀀스를 몇개의 심볼로 이루어진 블록으로 구분한 다음 블록 단위로 부호화하는 블록 코드(block code)와, 정보 시퀀스의 입력순서에 따라 부호화하는 난블록 코드(nonblock code)로 나누어진다.
블록 코드의 대표적인 예로는 BCH 코드(Bose and Ray-Chaudhuri and Hocquenghem code)를 들수 있으며, 지금 까지 알려진 가장 유효한 랜덤 에러 정정 코드로서 간주된 BCH 최적 코드로서 리드 솔로몬 코드(Reed Solomon code)를 들 수 있다.
리드 솔로몬 코드는 K개의 정보 심볼 및 N-K(=2t)개의 검사 심볼로 구성된 코드로서, 여기서, N개의 심볼들은 갈로아체 필드(Galois field) GF(2m)라 불리는 유한계의 2m개 원소들이다.
여기서, 갈로아체 필드 GF(2m)는 2m개의 원소를 갖는 수체계(number system)로서, 이러한 수체계를 하드웨어로 구현하게 되면 각 원소들이 모두 m개의 바이너리 디지트(binary digit)로 표현될 수 있기 때문에 디지탈 구조에 효과적일 뿐만 아니라 오버 플로워도 발생하지 않는 장점을 가지고 있다.
리드 솔로몬 코드의 갈로아체 필드 상의 코드 발생 다항식 g(x)이 연속하는 2t 개의 근을 가진다면 t 개 까지의 에러를 정정할 수 있는 능력을 가진다. 그리고,코드 발생 다항식은 일반적으로 하기 수학식 1a 또는 수학식 1b 와 같이 나타낸다.
[수학식 1a]
[수학식 1b]
상기 수학식 1 에서, α는 갈로아체 필드 GF(2m)의 원소이며, 코드 발생다항식이 정해지면 피드백 시프트 레지스터를 이용하여 코드를 부호화하고, 그 부호어는 t개까지의 에러를 정정할수 있게 된다.
따라서, 리드 솔로몬 코드는 통신 및 컴퓨터 기억 시스템 등에 폭 넓게 사용될 뿐만 아니라 재밍(jamming)에 대항하기 위한 방법으로서 비밀 통신 시스템에서 사용되기도 한다.
상기와 같이 갈로아체 필드 GF(2m) 상의 코드를 가지는 리드 솔로몬 코드는 정보와 패리티(parity)가 섞이지 않는 계통적 코드(systematic code)와 정보와 패리티(parity)가 섞이는 비계통적 코드(nonsystematic code)로 분류된다.
상기 계통적 코드는 정보와 패리티가 섞이지 않도록 우선 정보를 상위 바이트로 이동시킨 다음 에러 정정용 코드를 구하여 더한 것으로, 수학식 2로부터 구해진다.
[수학식 2]
상기 수학식 2에 있어서, 상기 c(x)는 송신 코드워드 다항식이고, i(x)는 정보 다항식이며, t(x)는 에러 정정용 패리티의 다항식이다. 즉, 정보와 패리티를 섞이지 않게 정보 신호i(x)를차만큼 상위 바이트로 이동시킨 다음,를 만족하는 패리티 t(x)를 구한다.
여기서,을 만족하는 패리티 t(x)는 수학식 3 으로부터 구할 수 있다.
[수학식 3]
상기에 있어서는 코드워드 다항식 c(x)를 코드 발생 다항식 g(x)로 나눈 나머지 값을 의미한다.
즉, 상기 패리티 t(x)를 구하기 위해서는를 코드 발생 다항식 g(x)로 나누는 과정을 수행하여야 하며, 이러한 과정은 시프트레지스터를 코드 발생 다항식 g(x)에 따라 연결하여 구현할 수 있다.
그리고, 상기 비계통적 코드는 수학식 4 와 같이 단순히 정보 i(x)에 코드 발생 다항식 g(x)을 곱해 주므로써 정보와 패리티가 섞여 코드화를 이룬다.
[수학식 4]
상기 수학식 4에서 c(x)는 N-1 차의 코드워드 다항식이고, i(x)는 K-1 차의 정보 다항식, g(x)는 N-K 차의 코드 발생 다항식이다.
상기 코드 발생 다항식 g(x)은 코드워드 다항식 c(x)를 만들어 내기 위해 정보 다 항식 i(x)에 곱해지는 것으로, 이러한 코드 발생 다항식 g(x)을 수학식 5 와 같이 연속적인 2t개의 근을 가지도록 정하면 t개의 에러를 정정할 수 있다.
[수학식 5]
상기와 같은 방법으로 리드 솔로몬 부호화된 디지털 데이터를 리드 솔로몬 복호화하는 방법은 크게 주파수 영역 복호화와 시간 영역 복호화로 나누어지며, 상기 시간 영역에서 리드 솔로몬 복호화하는 과정은 다음과 같이 크게 3 단계로 이루어진다.
(1) 신드롬 계산
수신 코드워드 다항식 r(x)는 수학식 6 과 같이 코드워드 다항식 c(x)과 전송 중에 발생된 에러 다항식 e(x)를 더한 값으로 표현될 수 있다.
[수학식 6]
따라서, 하기 수학식 7a 과 같이 수신 코드워드 다항식 r(x)에 코드 발생 다항식 g(x)의 근 α0∼α2t-1을 차례대로 대입함으로써 전송 중에 에러가 발생되었는지를 알 수 있는 것이다.
[수학식 7a]
또한, 상기 수학식 7a의 신드롬 계산식은 하기 수학식 7b와 같이 리커시브한 형태로 표현될 수 있다.
[수학식 7b]
상기 수학식 7에서 수신 코드워드 r(x)에 코드 발생 다항식 g(x)의 근 αi을 대입하여 구한 신드롬은, 에러가 발생되지 않았다면, 나머지가 남지 않게 되고, 에러가 발생되었다면, e(αi)값에서 나머지가 존재하게 된다.
즉, 신드롬을 이용하여 에러 위치 및 에러값을 구할 수 있게 되는 것이다.
(2) 에러 위치 다항식 계산(finding error location)
Berlekamp-Massey 알고리즘 또는 Euclid 알고리즘으로부터 에러 위치 다항식의 계수를 계산한다. 상기 알고리즘에 의해 구해진 에러 위치 다항식을 σ(X)라 하면 에러 정정 능력이 t인 리드 솔로몬 코드에서는 수학식 8 과 같이 최고 t차 이하의 다항식을 얻게 된다.
[수학식 8]
상기 수학식 8의 에러 위치 다항식의 최고차 는 에러가 발생한 심볼의 개수를 의미하는 것으로서, 만약 최고차가 5라면 5개의 심볼에서 에러가 발생했다는 것을 의미한다.
(3)에러값 계산 및 정정
(3-1) 에러 평가 다항식 Ω(X)의 계수를 하기 수학식 9a 를 이용하여 계산한다.
[수학식 9a]
상기 수학식 9a에 있어서, σ(X)는 에러 위치 다항식이고, S(X)는 신드롬 다항식이다.
상기 수학식 9a를 통해 구해진 계수를 갖는 에러 평가 다항식은 하기 수학식 9b와 같이 최고차 t차 이하의 다항식이 얻어진다.
[수학식 9b]
(3-2) 평가 진행(evaluation procedure)
GF(2m)의 원소를 α0, α1, …, α(N-1)을 에러 평가 다항식 Ω(X), 에러 위치 다항식 σ(X), 에러 위치 다항식을 미분한 에러 위치 미분 다항식 σ'(X)에 각각 대입하여 그 평가값을 구하며, 그 평가값들을 구하는 과정을 평가 진행 이라 한다.
(3-3) 상기 (3-2)과정에서 얻어진 평가값들을 이용하여 하기 수학식 10 과 같이 에러값 ei(x)을 계산한다.
[수학식 10]
상기 수학식 10은 포니 알고리듬(Forney algorithm)을 이용하여 얻어진 것이다.
(3-4) 에러 정정
상기와 같이 에러값 e(x)을 구한 다음 하기 수학식 11 을 이용하여 원래의 송신 코드워드 다항식 c(x)를 구하는 것이다.
[수학식 11]
갈로아체 특성상 같은 값을 더하면 e(x) + e(x) = 0 이 되는 것이다.
한편, ATV에서 정의한 리드 솔로몬 코드의 스펙은 다음과 같다.
1). RS(207, 187) 에러 정정 가능한 심벌 수 t=10 (=80비트)
2). 갈로아체 필드 GF(28)의 일부 원소를 사용한 리드 솔로몬 코드
3). 필드 생성 다항식
4). 코드 생성 다항식
5). 정보 데이터만 리드 솔로몬 부호화 시킨 후, 동기 바이트를 첨가 시킴.
상기와 같은 특성을 갖는 ATV용 리드 솔로몬 디코더에 대해서 실제 하드웨어 구조에 대해 구체적으로 공개되어 있지 않은 문제점이 있었다.
이에, 본 발명은 상기와 같은 문제점을 해결하기 위하여 안출된 것으로, ATV 스펙에 적합한 에러 정정 복호화 과정을 수행하도록 된 ATV용 리드 솔로몬 디코더를 제공하는 데 그 목적이 있다.
상기와 같은 목적을 달성하기 위하여 본 발명은,
심볼 클럭보다 10배 빠른 RS클럭을 발생하는 클럭 발생 수단과;
리드 솔로몬 부호화된 수신 신호 r(x)를 심볼 단위로 입력받아 출력하는 입력수단;
상기 입력수단으로부터 출력된 수신 심볼 R_SYM을 소정 지연 후, 순서대로 출력하는 선입선출수단;
상기 입력수단으로부터 출력된 수신 심볼 R_SYM 을 차례로 입력받아 신드롬의 중간값 계산을 진행하면서 모든 코드 워드(R_206∼R_0)가 입력 되었을 때, 최종 신드롬 SYND을 생성하는 신드롬 계산수단;
상기 신드롬 계산수단에서 생성된 신드롬을 선택적으로 출력하는 신드롬 선택수단;
상기 신드롬 SYND을 입력받아 에러 위치 다항식 σ(X)을 계산하여 에러 위치 다항식의 계수 σ_COEF 및 에러 위치 다항식의 차수 L 를 출력하는 에러 위치 다항식 계산수단;
상기 신드롬 SYND 과 에러 위치 다항식의 계수 σ_COEF 를 입력받아 에러값 ei을 구하여 발생된 에러를 정정한 복원 심볼 C_SYM을 출력함과 동시에, 상기 에러 위치 다항식의 차수 L 을 입력받아 상기 복원 심볼의 에러 정정이 정확한지 아닌지를 판단하여 복원 실패 신호(UNRCVR_FLAG)를 출력하는 에러 정정수단 및;
상기 선입선출수단과, 상기 신드롬 계산수단, 신드롬 선택수단, 에러 위치 다항식 계산수단 및, 상기 에러 정정수단을 각각 제어하는 제어수단을 포함하여 구성된 것을 특징으로 한다.
도 1은 본 발명에 따른 ATV스펙을 지원하는 리드 솔로몬 디코더의 구성도,
도 2는 도 1의 제어부의 기능을 설명하기위한 입력신호와 출력신호를 나타낸 블럭도,
도 3은 도 1의 신드롬 계산부에 대한 구성도,
도 4는 도 3의 신드롬 계산셀에 대한 1실시 회로도,
도 5는 도 1의 에러 위치 다항식 계산부에 대한 구성도,
도 6은 도 5의 디스크레펀시 계산부에 대한 1실시 회로도,
도 7은 도 1의 에러 정정부에 대한 구성도,
도 8은 도 7의 공통원소 저장부에 대한 1실시 회로도,
도 9는 도 7의 에러 평가 다항식 계산부에 대한 1실시 회로도,
도 10은 도 7의 에러 평가 다항식 평가부에 대한 1실시 회로도,
도 11은 도 7의 에러 위치 다항식 평가부에 대한 1실시 회로도,
도 12는 도 7의 에러값 계산 및 정정부에 대한 1실시 회로도,
도 13은 도 7의 복원 실패 판단부에 대한 1실시 회로도이다.
* 도면의 주요 부분에 대한 부호의 설명 *
1 : 클럭 발생 수단 2 : 입력버퍼
3 : 선입 선출 수단 4 : 신드롬 계산 수단
5: 롬 6 : 신드롬 선택수단
7: 에러 위치 다항식 계산 수단 8 : 에러 정정 수단
9 : BER 모니터 10 : 제어 수단
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명하기로 한다.
도 1 은 본 발명에 따른 ATV스펙을 수용하는 리드 솔로몬 디코더에 대한 구성도로서, 본 발명의 리드 솔로몬 디코더는 클럭 발생부(1)와, 입력버퍼(2), 선입선출버퍼(3), 신드롬 계산부(4), 0x00이 저장된 롬(5), 신드롬 선택부(6), 에러 위치 다항식 계산부(7), 에러 정정부(8), BER 모니터(9), 및 제어부(8)로 구성되어 있다.
상기 클럭 발생부(1)는 심볼 클럭보다 10배 빠른 RS클럭(RS_CLK)을 발생하여, 각 블럭 시스템의 클럭을 제공한다.
상기 입력버퍼(2)는 8개 D플립플롭이 병렬로 8비트 데이터 버스에 연결되어서 RS클럭에 따라 리드 솔로몬 부호화된 수신 심볼 R_SYM를 래치한다.
상기 선입선출버퍼(3)는 상기 입력버퍼(2)로부터 출력된 수신 심볼 R_SYM을 RS클럭에 동기되어 입력받아 소정의 지연 후, 입력된 순서대로 상기 에러 정정부(8) 및 BER 모니터(9)로 출력한다.
상기 신드롬 계산부(4)는 상기 입력버퍼(2)로부터 출력된 수신 심볼 R_SYM 을 차례로 입력받아 신드롬 계산을 진행하여 코드 워드의 모든 심볼(R_206∼R_0)이 입력 되었을 때 최종 신드롬 SYND을 생성한다.
상기 신드롬 출력부(6)는 상기 제어부(10)의 신드롬 패스신호(SYND_PASS)에 따라 상기 신드롬 계산부(4)의 신드롬 SYND 혹은 상기 롬(5)의 0x00값을 선택하여 상기 에러 위치 다항식 계산부(7), 및 에러 정정부(8)로 출력한다.
상기 에러 위치 다항식 계산부(7)는 상기 신드롬 SYND을 입력받아 에러 위치 다항식 σ(X)을 계산하여 에러 위치 다항식의 계수 σ_COEF 및 에러 위치 다항식의 최고차수 L 를 출력한다.
상기 에러 정정부(8)는 상기 신드롬 SYND과 에러 위치 다항식의 계수 σ_COEF 를 입력받아 에러값 ei을 구하고, 상기 선입선출버퍼(2)에서 출력된 수신 심볼 R_SYM에 상기 에러값 ei을 더해 발생된 에러를 정정한 복원 심볼 C_SYM을 출력함과 동시에, 상기 에러 위치 다항식의 차수 L 을 입력받아 상기 복원 심볼의 에러 정정이 이 정확한지 아닌지를 판단하여 복원 실패 신호 UNRCVR_FLAG를 출력한다.
상기 BER 모니터(9)는 상기 수신 심볼과 복원 심볼을 비교하여 비트에러율(BER)을 측정한다.
상기 제어부(10)는 상기 신드롬 계산부(4)와, 상기 신드롬 선택부(6), 상기 에러 위치 다항식 계산부(7), 상기 에러 정정부(8), 및 상기 BER 모니터(9)를 각각 제어한다.
이어서, 상기와 같이 구성되는 본 발명의 실시예에 대한 도면을 참조하여 작용을 자세히 설명하기로 한다.
도 2는 도 1의 제어부의 기능을 설명하기 위한 각각의 입출력 신호를 도시한 블럭도이다.
도 2에서 보여지는 바와같이, 입력신호는 외부로부터 제공되는 리셋신호(RST), 인에이블 신호(ENA), 심볼 동기 신호(SSYN) 및 클럭 발생기(1)로 부터 제공되는 RS클럭(RS_CLK)이다.
출력신호중에서 상기 신드롬 계산부(4)로 제공되는 제어신호는 코드워드의 시작을 알리는 코드워드 시작신호(CW_START)와, 심볼 인에이블 신호(SCLK_ENA), 제 1 종료신호(CW_END1),제 2 종료신호(CW_END2), 신드롬 선택신호(SYND_SEL)이다.
출력 신호중에서 상기 신드롬 출력부(6)로 제공되는 제어신호는 신드롬 패스 신호(SYND_PASS)이다.
출력 신호중에서 상기 에러 위치 다항식 계산부(7)로 제공되는 제어신호는 제 1 종료신호(CW_END1)와, 디 제로신호(D0_FLAG), 디 앤드신호(D_END), 씨그마 인에이블 신호(σ_ENA), 디비 인에이블 신호(DB_ENA), 및 위치 계수 선택신호(σ_COEF_SEL)이다.
출력 신호중에서 상기 에러 정정부(8)로 제공되는 제어 신호는 심볼 넘버신호(N0_SYM)와, 계산 초기 신호(CAL_FIRST), 계산 인에이블 신호(CAL_ENA), 평가 시작 신호(EVAL_INIT), 심볼 리셋신호(RST_SUM), 초기근 선택신호(EVAL_IALPHA_SEL), 갱신근 선택신호(EVAL_ALPHA_SEL)이다.
출력 신호중에서 상기 BER모니터(9)로 제공되는 제어 신호는 검사 주기 신호(CHK_PERIOD), 코드워드 시작 신호(DCW_START), 평가 시작 신호(EVAL_INIT)이다.
이어서, 도 3은 도 1의 신드롬 계산부에 대한 구성도이다.
도 3 에서 보는 바와 같이, 신드롬 계산부(4)는 제 1 카운터(30)와, 반전 게이트(31), 제 1 신드롬 계산셀(32), 제 1 롬(32a∼32j), 제 1 멀티플렉서(33), 제 2 신드롬 계산셀(34), 제 2 롬(34a∼34j), -10이 저장된 롬(35), 가산기(36), 제 2 멀티플렉서(37), 비교기(38), 및 제 3 멀티플렉서(39)로 구성되어 있다.
상기 제 1 카운터(30)는 4비트 카운터로서, RS클럭에 동기 되어 카운팅하면서 그 값을 알파 선택신호(ALPHA_SEL)로 출력하고, 상기 반전 게이트(31)는 심볼 인에이블 신호(SCLK_ENA)를 반전시켜 상기 제 1 카운터(30)를 매 심볼 마다 클리어 시킨다.
상기 제 1 신드롬 계산셀(32)은 RS클럭에 동기되어 동작하면서, 수신 심볼 R_SYM을 입력받아 상기 알파 선택신호(ALPHA_SEL)에 따라 상기 제 1 롬(32a∼32j)에 저장된 알파근(αi)을 이용하여 신드롬 계산을 진행하여 신드롬 S[0]부터 S[9]를 병렬로 출력한다.
상기 제 1 멀티플렉서(33)는 신드롬 선택신호(SYND_SEL)에 따라 상기 제 1 신드롬 계산셀(32)로부터 계산된 신드롬을 차례대로 선택하여 출력한다.
상기 제 2 신드롬 계산셀(34)은 RS클럭에 동기되어 동작하면서, 수신 심볼 R_SYM을 입력받아 상기 알파 선택신호(ALPHA_SEL)에 따라 상기 제 2 롬(34a∼34j)에 저장된 알파근(αi)을 이용하여 신드롬 계산을 진행하여 신드롬 S[10]부터 S[19]를 병렬로 출력한다.
상기 가산기(36)는 상기 신드롬 선택신호(SYND_SEL)값으로 부터 롬(35)의 -10값을 가산 연산한다.
상기 제 2 멀티플렉서(37)는 상기 가산기(36)의 출력에 따라 상기 제 2 신드롬 계산셀(34)로부터 계산된 신드롬을 차례대로 선택하여 출력한다.
상기 비교기(38)는 상기 신드롬 선택신호(SYND_SEL)를 소정의 기준신호 9와 비교하여 9보다 크면 0을 출력하고, 9이하 이면 1을 출력한다.
상기 제 3 멀티플렉서(39)는 상기 비교기(38)의 출력이 1이면, 상기 제 1 멀티플렉서(33)의 출력을 선택하고, 비교기(38)의 출력이 0이면, 상기 제 2 멀티플렉서(34)의 출력을 선택한다.
즉, 상기 신드롬 선택신호(SYND_SEL)에 따라 신드롬 S[0]부터 신드롬 S[19]까지 차례대로 출력되는 것이다.
도 3에서 보여지는 제 1 신드롬 계산셀(32)과 제 2 신드롬 계산셀(34)의 구조는 완전히 동일하며, 그 상세한 회로도를 도 4 에 도시하였다.
도 4는 도 3의 제 1 신드롬 계산셀(32)에 대한 회로도로서, 신드롬 계산셀(32)은 제어신호 발생부(41)와, 중간값용 시프트레지스터(42), 신드롬용 시프트레지스터(43), 항 선택부(44), 신드롬 항 연산부(45)로 구성되어 있다.
상기 제어신호 발생부(41)는 상기 제어부(10)로부터 제 1 종료신호(CW_END1)와, 제 2 종료신호(CW_END2) 및 코드 워드 시작신호(CW_START)를 입력받고, 외부로부터 리셋신호(RST) 및 인에이블 신호(ENA)를 입력받아 상기 신호들을 논리 조합하여 상기 중간값용 시프트레지스터(42)와 상기 신드롬용 시프트레지스터(43)를 인에이블(ENA)시키고, 리세트(RST)시키는 시프트레지스터의 동작을 제어한다.
여기서, 수신 심볼은 부호화되지 않은 동기바이트(SYNC BYTE)가 수신된 이후 최고차 심볼 R_206부터 최저차심볼 R_0까지 차례로 수신되어 1코드워드를 이루게 된다. 이때, 상기 코드워드 작신호(CW_START)는 동기 바이트가 수신되는 심볼 클럭 주기동안 '하이'로 발생되고, 상기 제 1 종료 신호(CW_END1)는 마지막 심볼 R_0이 수신되는 심볼 클럭 주기동안 '하이'로 발생되고, 상기 제 2 종료 신호(CW_END2)는 마지막 두번째 심볼 R_1이 수신되는 심볼 클럭 주기 동안 '하이'로 발생되는 제어 신호이다.
즉, 상기 중간값용 시프트레지스터(42)의 리셋 제어신호(RST)는, 제 1 반전 게이트(41c)를 통해 제 1 종료신호(CW_END1)를 반전시키고, 외부로부터 제공된 리셋신호(RST)와 제 2 논리곱 게이트(41c)를 통해 논리곱 연산하여 제공된다.
그리고, 상기 중간값용 시프트 레지스터(42)의 인에이블 제어신호(ENA)는, 제 2 반전 게이트(41e)를 통해 반전된 코드 워드 시작 신호(CW_START)와, 외부로부터 제공된 인에이블 신호(ENA)를 상기 제 3 논리곱 게이트(41f)를 통해 논리곱 연산된 신호를 선택하여 출력한다.
그리고, 상기 신드롬용 시프트레지스터(43)의 인에이블 제어신호(ENA)는, 제 1 논리합 게이트(41a)를 통해 상기 제 1 종료신호(CW_END1)와 제 2 종료신호(CW_END2)를 논리합 연산한 신호와, 외부의 인에이블 신호(ENA)를 제 1 논리곱 게이트(41b)를 통해 논리곱 신호가 제공되며, 리셋 제어신호(RST)는 외부에서 제공된 리셋신호(RST)에 의해 제공된다.
상기 중간값용 시프트레지스터(42)는 10개의 신드롬을 저장하는 레지스터로서, 8비트 데이터 버스에 연결되어져 있으며, 코드워드의 첫번째 심볼 R_206 부터 마지막 두번째 심볼 R_1이 입력되는 동안 인에이블 상태가 되어서, 상기 신드롬 항 계산부(45)로부터 출력된 중간값용 신드롬을 RS 클럭단위로 입력받아 시프트하여 상기 항 선택부(44)로 출력한다.
상기 신드롬용 시프터레지스터(43)는 10개의 신드롬을 저장하는 레지스터로서, 코드워드의 마지막에서 두번째 심벌 R_1이 입력될 때부터 마지막 심벌 R_0이 입력되는 동안에 인에이블 상태가 되어서, 상기 신드롬 항 계산부(45)로부터 출력된 신드롬을 입력받아 RS클럭단위로 시프트하여 상기 항 선택부(44)로 출력하는 한편, 마지막 심볼 R_0까지 계산되어 최종 신드롬값 S[0]∼S[9]을 병렬로 출력한다.
상기 항 선택부(44)는 제 1 종료신호(CW_END1)에 따라 선택하는 제 2 멀티플렉서(34)로서, 코드워드의 첫번째 심볼 R_206부터 마지막에서 두번째 심볼 R_1이 입력되는 동안까지는 상기 중간값용 신드롬 시프트레지스터(42)의 출력값을 선택하여 출력하고, 마지막 심볼 R_0이 입력되는 동안에는 상기 신드롬용 시프트 레지스터(43)의 출력값을 선택하여 상기 신드롬 항 연산부(45)로 출력한다.
상기 신드롬 항 연산부(45)는 코드 생성 다항식 g(x)의 근을 알파근 선택신호(ALPHA_SEL)에 따라 차례대로 선택하여 출력하는 제 5 멀티플렉서(45-1), 상기 제 5 멀티플렉서(45-1)로부터 출력된 근과 상기 항 선택부(44)로부터 출력된 중간 신드롬값을 입력받아 RS클럭단위로 갈로아체 곱셈연산하여 출력하는 갈로아체 곱셈기(45-2), 상기 갈로아체 곱셈기(45-2)로부터 출력된 값과 심볼 단위로 입력되는 수신 심볼 R_SYM 을 입력받아 RS클럭 단위로 갈로아체 덧셈연산하여 출력하는 갈로아체 덧셈기(45-3)로 구성되어 있다.
상기와 같이 구성된 신드롬 계산셀(32, 34)의 구체적인 동작을 설명하면 다음과 같다.
리드 솔로몬 부호화 되지 않은 동기 바이트(SYNC BYTE)에 대해서는 신드롬 계산진행을 하지 않도록 하기 위해서 코드워드 시작신호(CW_START)가 하이 레벨값인 동안에는 상기 중간값용 시프트 레지스터(42)를 동작시키지 않도록 해야한다.
따라서, 상기 제 3 논리곱 게이트(41f)의 출력신호인 반전된 코드워드 시작 신호(CW_START)와 인에이블 신호(ENA)를 논리곱 처리한 신호로 상기 중간값용 시프트레지스터(42)를 인에이블 시킨다.
즉, 동기 바이트(SYNC BYTE)가 입력되는 동안에는 상기 중간값용 시프트 레지스터(42)는 로우 인에이블 신호(ENA)에 의해 동작하지 않으므로써, 동기 신호에 대해서는 신드롬 계산을 하지 않는다.
이제, 리드 솔로몬 부호화된 수신 심볼 R_206∼R_0 에 대한 신드롬 계산의 과정은 다음과 같다.
코드워드의 마지막 심볼을 알리는 제 1 코드워드 종료신호(CW_END1)의 레벨값은 첫번째 심볼 R_206에서 마지막 두번째 심볼 R_1이 입력되는 동안에는 로우이므로, 상기 제 4 멀티플렉서(44)는 상기 중간값용 시프트레지스터(42)의 값을 선택하여 상기 항연산부(45)의 상기 갈로아체 곱셈기(45-2)로 출력한다.
상기 갈로아체 곱셈기(45-2)에서는 RS클럭단위로 동작하면서 상기 중간값용 시프트레지스터(42)의 초기값 0,0,…,0과 상기 알파근 α0∼α9`을 순서대로 곱하여 0,0,…,0을 상기 갈로아체 덧셈기(45-3)로 출력한다.
한편, 상기 갈로아체 덧셈기(45-3)에서는 첫번째 수신 심볼 R_206을 입력받고, 상기 갈로아체 곱셈기(45-2)로부터 RS클럭단위로 출력되는 0,0,…,0 값을 갈로아체 덧셈하여 상기 중간값용 시프트 레지스터(42)로 출력한다.
결국, 상기 중간값용 시프트레지스터(42)에는 첫번째 심볼 클럭 동안에 각 10개의 레지스터에 R_206, R_206,…, R_206 값이 저장되어진다.
계속해서, 두번째 심볼 R_205이 상기 갈로아체 덧셈기(45-3)로 입력되고, 상기 갈로아체 덧셈기(45-3)에서는 심볼 R_205을 심볼 클럭 주기 동안 유지하면서, 상기 갈로아체 곱셈기(45-2)의 출력값 R_206×α0, R_206×α1, …, R_206×α9과 갈로아체 덧셈 연산하여 상기 중간값용 시프트레지스터(42)로 출력한다.
결국, 상기 중간값용 시프트 레지스터(42)에는 두번째 심볼 클럭 동안, R_206×α0+R_205, R_206×α1+R_205, R_206×α2+R_205, …, R_206×α9+R_205값이 저장된다.
마찬가지 동작으로 인해 세번째 심볼 R_204 이 입력되는 세번째 심볼 클럭 동안, 상기 중간값용 시프트 레지스터(42)에는 (R_206α0+R_205)α0+R_204, (R_206α1+R_205)α1+R_204, …, (R_206α9+R_205)α9+R_204 값이 저장된다.
이와 같이 중간 신드롬값을 업데이트해나가는 과정은 상기 중간값용 레지스터(42)가 리셋되기 전까지, 즉 코드워드의 마지막 두번째 심볼 R_1에 대해서 까지 계속 업데이트 되는 것이다.
한편, 코드워드의 마지막 두번째 심볼 R_1이 입력될 때부터, 상기 신드롬용 시프트레지스터(43)가 인에이블 상태가 된다.
따라서, 상기 신드롬용 시프트 레지스터(43)에는 상기 갈로아체 덧셈기(45-3)로부터 출력되는 중간 신드롬값을 입력받아 시프트시키므로써 수신심볼 R_206 에서 R_1 까지 계산된 중간 신드롬값이 저장된다.
이제, 상기 제 4 멀티플렉서(44)는 코드워드의 마지막 심볼 R_0 이 입력되는 동안 하이인 제 1 종료신호(CW_END1)에 따라 상기 신드롬용 시프트레지스터(43)의 중간 신드롬값을 선택하여 상기 갈로아체 곱셈기(45-2)로 출력한다. 상기 갈로아체 곱셈기(45-2)는 상기 신드롬용 시프트레지스터(43)의 중간 신드롬값에 상기 롬의 근 α0∼α9을 순서대로 곱하여 상기 갈로아체 덧셈기(45-3)로 출력하고, 상기 갈로아체 덧셈기(45-3)에서는 마지막 수신 심볼 R_0과 상기 갈로아체 곱셈기(45-2)로부터 출력된 중간 신드롬값을 순서대로 덧셈하여 상기 신드롬용 시프트레지스터(43)로 출력한다. 따라서, 상기 신드롬용 시프트레지스터(43)에는 수신 심볼 R_206 에서 R_0까지 계산된 최종 신드롬값이 저장된다.
이때, 상기 중간값용 시프트레지스터(42)는 다음 코드워드에 대한 중간 신드롬을 저장하기위해 리세트되어 진다.
즉, 마지막 심볼까지 모두 입력되면, 상기 신드롬용 시프트레지스터(43)에 저장된 1 코드 워드에 대한 신드롬값 S[0], S[1], … ,S[9] 은 하기 수학식 12와 같게 되는 것이다.
[수학식 12]
이어서, 도 5는 에러 위치 다항식 계산부(7)에 대한 실시 회로도이다.
우선, 에러 위치 다항식 계산부(7)에 대한 이해를 돕고저 본 실시예를 적용시킨 Recursive Berlekamp 알고리즘에 대해 설명하고자 한다.
t개의 에러 정정 능력을 갖고 있는 리드 솔로몬 코드의 경우에는 t개 이하의 근을 갖고 있으므로, Berlekamp 알고리즘은 하기 수학식 13 과 같은 에러 위치 다항식을 구하는 것이 목적이다.
[수학식 13]
Recursive Berlekamp 알고리즘은 Berlekamp 알고리즘을 순환적으로 반복시키는 하기 4단계와 같고, Recursive Berlekamp 알고리즘을 적용하여 구현한 하드웨어는 Berlekamp 알고리즘을 적용하여 구현한 하드웨어에 비해 더 간단히 제작될 수 있다.
(1)단계 : 초기 조건 설정
에러 위치 다항식 σ(X)의 초기값인 σ0(X)는 1이고, 중간값(intermediate value) B(X)의 초기값인 B0(X)는 1이며, 실제적인 에러 위치 다항식σ(X)의 차수인 L의 초기값 L0은 0이고, 변수 X의 차수인 k의 초기값인 k0는 0이며, 지연 디스크레펀시(late discrepancy) b의 초기값인 b0는 1이다.
이때, t개의 에러 정정 능력을 갖고 있는 리드 솔로몬 코드의 경우에 에러 위치 다항식 σ(X)은 t개의 근을 가지고 있어야 하므로 에러 위치 다항식 σ(X)의 계수를 담기 위한 레지스터의 수는 상수항을 포함하여 t+1개의 레지스터가 필요하다.
그리고, 상기 실제적인 에러 위치 다항식 σ(X)의 차수인 L은 에러 위치 다항식 σ(X)를 업데이트(update)할 때 차수의 증가가 필요한 경우에 하나씩 증가하고, 차수의 증가가 필요없는 경우에는 증가하지 않는다.
또한, 상기 B(X), k, b 역시 상기 에러 위치 다항식σ(X)을 업데이트하기 위해 사용되는 값이다.
(2)단계 : 디스크레펀시(discrepancy) 계산
(N, N-2t) 코드에서는 2t번 dN을 계산한다.
이때, 디스크레펀시의 초기값 d0는 신드롬 S0과 같으며, 초기값을 제외한 나머지 디스크레펀시는 하기 수학식 14을 통해 구하게 된다.
[수학식 14]
상기 수학식 14 에 있어서, dN은 디스크레펀시이고, σi는 신드롬 다항식의 계수이며, SN, SN-i는 신드롬이다.
(3)단계 : 업데이트(update) 수행
다음과 같은 조건을 만족하는 경우에 따라 3가지 경우로 업데이트를 수행한다.
case1 :
→ k를 1 증가시킴
case2 :
case3 :,
→ k를 1 증가시킴
(4)단계 : 상기 제 2 단계 수행.
N=2t가 될 때까지 상기 제 2 단계를 반복 수행한다.
상기와 같은 4단계로 구성된 RBA을 하드웨어로 구현한 본 발명에 따른 리드 솔로몬 복호기의 에러 위치 다항식 계산장치의 1실시예는 도 5에 도시된 바와 같이, 디스크레펀시 계산부(51)와, 변수 생성 프로세서(52), 룩업 테이블(53), 제 1 갈로아체 곱셈기(54), 중간값용 시프트레지스터(55), 선택부(56), 제 2 갈로아체 곱셈기(57), 제 1 갈로아체 덧셈기(58), 반전 게이트(59a), 및 논리곱 게이트(59b)로 구성되어 있다.
그리고, 상기 선택부(56)는 제 1 논리합 게이트(56a)와, 제 2 논리합 게이트(56b), 0x00이 저장된 롬(56-1), 제 1 멀티플렉서(56-2), 및 제 2 멀티플렉서(56-3)로 구성된다.
상기와 같이 구성된 에러 위치 다항식 계산 장치에서 사용되는 제어 신호를 정의하면 다음과 같다.
D0_FLAG는 첫 번째 디스크레펀시 d0를 계산하는 경우에 하이인 신호이고, D_ZERO는 계산된 디스크레펀시가 0일 경우에 하이인 신호이며, CASE3_FLAG는 업데이트시 제 3 케이스 즉,인 경우에 하이인 신호이다.
상기와 같은 에러 위치 다항식 계산 장치에 있어서, 상기 디스크레펀시 계산부(51)는 신드롬(SYND) 및 업데이트된 에러 위치 다항식(σ_IN)을 입력받아 디스크레펀시(d)를 계산하여 출력함과 더불어 상기 디스크레펀시(d)가 0이면 D_ZERO를 출력하는 한편, 상기 업데이트된 에러 위치 다항식(σ_IN)을 지연시킨 에러 위치 다항식(σ_OUT)을 출력함과 더불어 마지막으로 업데이트된 에러 위치 다항식(σ_OUT)을 에러 위치 다항식σ(X)로 출력하도록 되어 있다.
상기 변수 생성 프로세서(52)는 상기 D_ZERO신호와 D0_FLAG신호 및 디스크레펀시(d)를 입력받아 지연 디스크레펀시(b)의 인덱스(N)를 출력하는 한편, 케이스를 판단하여 제 3 케이스이면 CASE3_FLAG를 출력하고, 에러 위치 다항식의 최고 차수 L 을 출력하도록 되어 있다.
상기 룩업 테이블(53)은 상기 변수 생성 프로세서(52)에서 출력된 지연 디스크레펀시(b)의 인덱스(N)를 입력받아 역수(b-1)를 출력하도록 되어 있고, 상기 제 1 갈로아체 곱셈기(54)는 상기 디스크레펀시 계산부(51)에서 출력된 디스크레펀시(d)와 상기 룩업 테이블(53)에서 출력된 지연 디스크레펀시(b)의 역수(b-1)를 곱하여 출력하도록 되어 있다.
상기 선택부(56)의 제 1 논리합 게이트(56a)는 D0_FLAG신호와 CASE3_FLAG신호를 조합하여 제 2 선택신호(SEL2)를 출력하고, 제 2 논리합 게이트(56b)는 D_ZERO 신호와 상기 제 2 선택신호(SEL2)를 조합하여 제 1 선택신호(SEL1)를 출력한다.
그리고, 상기 제 1 멀티플렉서(56-2)는 상기 제 1 선택신호(SEL1)에 따라 상기 디스크레펀시 계산부(51)에서 출력된 에러 위치 다항식(σ_OUT) 또는 상기 롬의 0x00 선택적으로 출력하고, 상기 제 2 멀티플렉서(56-3)는 상기 제 2 선택신호(SEL2)에 따라 상기 제 1 멀티플렉서(56-2)의 출력 또는 상기 중간값용 시프트레지스터(55)의 출력을 선택하여 출력한다.
상기 중간값용 시프트레지스터(55)는 XkB(X)값을 구하여 σ(X)를 업데이트하는 데 이용하는 중간값 저장용 레지스터로서, 상기 선택부(56)의 제 2 멀티플렉서(56-3)로부터 출력된 값을 RS클럭(RS_CLK)에 따라 시프트시켜 출력함과 동시에 피드백 입력한다.
상기 제 2 갈로아체 곱셈기(57)는 상기 제 1 갈로아체 곱셈기(54)에서 출력된 값과 상기 시프트레지스터부(55)에서 출력된 값을 곱하여 출력한다.
상기 제 1 갈로아체 덧셈기(58)는 상기 제 2 갈로아체 곱셈기(57)에서 출력된 값과 상기 디스크레펀시 계산부(51)에서 출력된 에러 위치 다항식(σ_OUT)을 더한 값을 업데이트된 에러 위치 다항식(σ_IN)으로하여 상기 디스크레펀시 계산부(51)로 피드백시키도록 되어 있다.
상기 반전 게이트(59a)는 제 1 코드워드 종료신호(CW_END1)를 반전 시키고, 상기 논리곱 게이트(59b)는 외부에서 입력된 리셋신호와 상기 반전 게이트(59a)의 출력신호를 논리곱하여 상기 시프트레지스터(56)의 리셋신호(RST)로서 제공한다.
여기서, 상기 디스크레펀시 계산부(51)는 도 6 에 도시된 바와 같이, 계수용 시프트 레지스터(61)와, 제 2 반전 게이트(61a), 제 2 논리곱 게이트(61b), 제 3 멀티플렉서(62), 제 3 갈로아체 곱셈기(63), 제 2 갈로아체 덧셈기(64), 피드백용 벡터 레지스터(65), 제 3 반전 게이트(65a), 제 3 논리곱 게이트(65b), 출력용 벡터 레지스터(66), 판단부(67), 및 계수 출력부(68)로 구성되어 있다.
그리고, 상기 계수 출력부(68)는 먹스 프로세서(68-1)와, 제 4 멀티플렉서(68-2), 0x00이 저장된 롬(68-3), 및 제 5 멀티플렉서(68-4)로 구성되어 있다.
상기 계수용 시프트레지스터(61)는 11개(=t+1개)의 레지스터가 직렬로 연결되어 도 5에 도시된 상기 제 1 갈로아체 덧셈기(58)에서 업데이트되어 출력된 에러 위치 다항식(σ_IN)을 RS클럭(RS_CLK)에 따라 시프트시켜 직렬 출력함과 더불어, 마지막으로 업데이트된 1단에서 10단까지의 값을 병렬로 출력한다. 이때 출력된 값은 에러 위치 다항식 σ(X)의 계수에 해당된다.
상기 제 3 멀티플렉서(62)는 D0_FLAG에 따라 도 5에 도시된 제 1 갈로아체 덧셈기(58)에서 출력된 에러 위치 다항식(σ_IN) 또는 상기 계수용 시프트레지스터(61)에서 시프트되어 출력된 에러 위치 다항식(σ_OUT)을 선택적으로 출력하도록 되어 있다.
상기 제 3 갈로아체 곱셈기(63)는 신드롬(SYND)과 상기 제 3 멀티플렉서(63)에서 출력된 값을 갈로아체 곱셈하여 출력하고, 상기 제 2 갈로아체 덧셈기(64)는 상기 제 3 갈로아체 곱셈기(63)에서 출력된 값과 피드백된 값을 더하여 출력한다.
상기 피드백용 벡터 레지스터(65)는 상기 제 2 갈로아체 덧셈기(64)에서 출력된 값을 RS클럭(RS_CLK)에 따라 래치하여 상기 제 2 갈로아체 덧셈기(64)로 피드백시키도록 되어 있다.
상기 제 3 반전 게이트(65a)는 D_END신호를 반전시키고, 상기 제 3 논리곱 게이트(65b)는 외부 리셋신호(RST)와 상기 제 3 반전 게이트(65a)의 출력신호를 논리곱연산하여 상기 피트백용 백터 레지스터(65)의 리셋신호로 제공한다.
상기 출력용 벡터 레지스터(66)는 상기 제 2 갈로아체 덧셈기(64)에서 출력된 값을 래치하여 디스크레펀시(d)로 출력하며, 상기 판단부(67)는 상기 출력용 벡터 레지스터(66)에서 출력된 디스크레펀시(d)가 0인지를 판단하여 0이면 하이의 D_ZERO 신호를 출력하도록 되어 있다.
상기 계수 출력부(68)의 먹스 프로세스(68-1)는 계수 선택신호(σ_COEF_SEL)를 입력받아 멀티플렉서의 선택제어신호(SEL4, SEL5)를 생성하여 출력하고, 상기 제 4 멀티플렉서(68-2)는 상기 선택신호(SEL4)에 따라 상기 시프트레지스터(61)로부터 병렬 출력된 10개 값중에서 하나를 선택하여 출력하고, 상기 제 5 멀티플렉서(68-4)는 상기 선택신호(SEL5)에 따라 상기 제 4 멀티플렉서(68-2)로부터 출력된 값 또는 상기 롬(68-3)의 0x00을 선택하여 에러 위치 다항식의 계수(σ_COEF)를 출력한다.
상기와 같이 구성된 에러 위치 다항식의 작용을 도 5 및 도 6 을 통해 상세히 설명하면 다음과 같다.
우선, 도 6의 상기 디스크레펀시 계산부(51)는 제 (2)단계의 계산식을 수행하는 것으로서, d0부터 d19까지의 20개의 d를 구한다.
즉, 신드롬(SYND) 및 제 1 갈로아체 덧셈기(58)에서 업데이트되어 출력된 에러 위치 다항식(σ_IN)을 입력받아 디스크레펀시(d)를 계산하여 출력한다.
이때, 계산된 상기 디스크레펀시(d)는 판단부(67)를 통해서 0이면 디스크레펀시 계산이 끝났음알리는 제어 신호인 D_ZERO를 출력되고, 또한, 상기 제 1 갈로아체 덧셈기(58)에서 업데이트되어 출력된 에러 위치 다항식(σ_IN)을 상기 계수용 시프트 레지스터(61)를 통해 지연시키면서 에러 위치 다항식(σ_OUT)을 출력한다.
그리고, 계수 출력부(68)를 통해 상기 계수용 시프트레지스터(61)에 저장되어 있는 마지막으로 업데이트되어서 에러 위치 다항식 계산이 완료된 에러 위치 다항식의 계수(σ_COEF)가 출력된다.
즉, 상기 제 3 멀티플렉서(62)는 첫 번째 디스크레펀시 d0를 계산하는 경우에 해당하는 하이 D0_FLAG 일때, 상기 계수용 시프트 레지스터부(61)에서 시프트되어 출력된 에러 위치 다항식(σ_OUT)을 선택하여 출력한다. 그리고나서, 나머지 디스크레펀시 d1내지 d19를 계산하는 경우에 로우 D0_FLAG 일때, 업데이트되어 출력된 에러 위치 다항식(σ_IN)을 선택하여 상기 제 3 갈로아체 곱셈기(63)로 출력하는 것이다.
이제, 제 3 갈로아체 곱셈기(63)는 신드롬(SYND)과 상기 제 3 멀티플렉서(62)에서 출력된 값을 곱하여 제 2 갈로아체 덧셈기(64)로 출력하며, 제 2 갈로아체 덧셈기(64)는 상기 제 3 갈로아체 곱셈기(63)에서 출력된 값과 피드백용 벡터 레지스터(65)에서 출력된 값을 더하여 피드백용 벡터 레지스터(65), 및 출력용 벡터 레지스터(66)으로 출력한다.
상기 출력용 벡터 레지스터(66)는 D_END신호에 의해 인에이블 되어, RS클럭에 동기되어 상기 제 2 갈로아체 덧셈기(34)에서 출력된 값을 래치하여 최종 디스크레펀시(d)로 출력한다.
그리고, 판단부(67)는 상기 출력용 벡터 레지스터(66)에서 출력된 디스크레펀시(d)가 0인지를 판단하여 0이면 하이인 D_ZERO를 출력하여, 다음 (3)단계의 케이스를 구분하는데 이용한다.
한편, 도 5의 변수 생성 프로세서(52)는 이미 기술한 (3)단계의 3가지 케이스에 대한 조건을 판단하여 각 케이스에 해당하는 동작을 수행할 수 있도록 명령하는 프로세서로서, 실제 명령출력신호는 제 3 케이스를 알리는 CASE3_FLAG신호와 에러 위치 다항식의 실제적인 차수를 나타내는 L값, 및 지연 디스크레펀시의 역수를 출력하기 위한 인덱스(INDEX)를 출력하도록 되어 있다.
상기 룩업 테이블(60)은 상기(INDEX)에 따라 지연 디스크레펀시의 역수(b-I)를 출력하고, 제 1 갈로아체 곱셈기(54)는 상기 디스크레펀시 계산부(51)에서 출력된 디스크레펀시(d)와 상기 룩업 테이블(53)에서 출력된 지연 디스크레펀시의 역수(b-i)를 곱하여 제 2 갈로아체 곱셈기(57)로 출력한다.
한편, 선택부(56)에서는 상기 CASE3_FLAG 신호와, D0_FLAG신호, 및 D_ZERO신호에 따라 3케이스에 적합한 수행을 하게 된다.
즉, 제 1 케이스(case1)에 해당될 때에는 상기 롬의 0x00값을 선택하여 상기 중간값용 시프트레지스터(55)에 입력하여 시프트시키고, 제 2 케이스(case2)에 해당될 때는 상기 디스크레펀시의 출력(σ_OUT)을 선택하여 상기 중간값용 시프트레지스터(55)에 입력하여 시프트시키고, 제 3 케이스(case3)에 해당될 때는 상기 중간값용 시프트레지스터(55)의 10번째단의 내용을 피드백입력받아 시프트시킨다.
따라서, 상기 중간값용 시프트레지스터(55)는 RS클럭에 따라 시프트하는데 있어서, 제 2 케이스에 해당되는 경우에만 실제적으로 업데이트 되는 것이다.
결국, 상기와 같은 동작을 통해서 제 1 케이스(case1)의 경우에는 중간값용 시프트 레지스터(55)만 하나 시프트하고, 제 2 케이스(case2)의 경우에는 계수용 시프트레지스터(61)와, 중간값용 시프트레지스터(55), 차수 L, 지연 디스크레펀시 b 모두를 업데이트하고, 제 3 케이스(case3)의 경우에는 계수용 시프트레지스터(61)만을 업데이트하고, 중간값용 시프트 레지스터(55)는 하나 시프트하는 동작을 수행하면 되는 것이다.
이어서, 도 7은 에러 정정부(8)의 구성도로서, 에러 정정부(8)는 공통원소 저장부(70)와, 에러 평가 다항식 계산부(71), 에러 평가 다항식 평가부(72), 에러 위치 다항식 평가부(73), 에러값 계산 및 정정부(74), 및 복원 실패 판단부(75)로 구성되어 있다.
여기서, 상기 에러 정정부(8)는 상기 제어부(10)의 제어 신호에 따라 동기 바이트가 입력되는 동안에는 디제이블(disable) 상태가 되어지는데, 그 이유는 동기 바이트는 원래 정보 데이터와 상관없기 때문에 고려하지 않아도 무관하다.
따라서, ATV 스펙의 경우는 리드 솔로몬 부호화 되지 않은 동기 바이트(SYNC BYTE)에 대한 평가 진행을 하지 않는다.
이제, 상기 에러 정정부(8)의 구성 요소에 대한 기능을 설명하면 다음과 같다.
상기 공통원소 저장부(70)는 리드 솔로몬 코드의 최고차부터 평가 진행하기위한 갈로아체 필드 원소의 역수에 해당하는 초기근(α-N×i)과 다음 심볼을 위해 차수를 갱신 하기위한 갈로아체 필드 원소에 해당하는 갱신근(αi)을 저장하고 있으면서, 상기 에러 평가 다항식과 에러 위치 다항식을 평가 진행하도록 근값을 제공하는 기능을 한다.
상기 에러 평가 다항식 계산부(71)는 신드롬(SYND), 및 에러 위치 다항식의 계수(σ_COEF)를 입력받아 두 값을 곱셈하여 에러 평가 다항식의 계수(Ω_COEF)를 출력한다.
상기 에러 평가 다항식 평가부(72)는 상기 에러 평가 다항식의 계수(Ω_COEF)를 입력받아 상기 공통원소 저장부(70)로부터 입력받은 초기근α-N×i과 갈로아체 필드의 원소인 갱신근 αi를 이용해서, 상기 에러 평가 다항식의 계수(Ω_COEF)를 입력받아서 에러 평가 다항식(Ω(X))을 평가한 에러 평가값(Ω_VAL)을 출력한다.
상기 에러 위치 다항식 평가부(73)는 상기 에러 위치 다항식의 계수(σ_COEF)를 입력받아 상기 공통원소 저장부(70)로부터 입력받은 초기근 α-N*i과 갈로아체 필드의 원소인 갱신근 αi를 이용해서, 에러 위치 다항식(σ(X))을 평가하여 에러 위치 신호(ERR_FLAG)를 출력함과 동시에, 에러 위치 다항식(σ(X))의 미분치인 미분 다항식(σ'(X))을 평가한 미분 평가값(σp_VAL)을 출력한다.
상기 에러값 계산 및 정정부(74)는 상기 미분 평가값(σp_VAL)과 에러 평가값 (Ω_VAL)을 입력받아 포니 알고리즘을 적용하여 에러값 ei을 계산하여 출력함과 동시에, 에러 발생 신호(ERR_FLAG)에 따라 수신 심볼 R_SYM 에 상기 에러값 ei을 더하여 에러 정정된 심볼 C_SYM 을 출력한다.
상기 복원 실패 판단부(75)는 상기 에러 정정된 심볼 C_SYM 이 정확한지 아닌지를 판단하여 복원 실패 신호(UNRCVR_FRAG)를 출력한다.
이어서, 도 4의 각 블럭에 대한 1실시 회로도를 도 8내지 도 13에 도시하였으며, 각각에 대한 작용 및 효과를 자세히 설명하기로 한다.
도 8 은 도 7 의 공통 원소 저장부(70)에 대한 1실시 회로도이다.
도 8에서 보는 바와 같이, 상기 공통원소 저장부(70)는 평가 진행 초기화를 위한 초기근(IALPHA) 을 저장하는 롬(80-1∼80-10)과; 초기근선택신호(EIA_SEL)에 따라 상기 롬값(80-1∼80-10)을 차례대로 선택하여 출력하는 제 1 멀티플렉서(80-11); 차수 갱신을 위한 갈로아체 원소를 저장하는 롬(80-12∼80-21); 및 갱신근선택신호(EA_SEL)에 따라 상기 롬값(80-12∼80-21)을 차례대로 선택하여 출력하는 제 2 멀티플렉서(80-22)로 구성되어 있다.
이어서, 도 9는 도 4의 에러 평가 다항식 계산부(71)에 대한 실시 회로도로서, 에러 평가 다항식 계산부(71)는 갈로아체 곱셈기(91)와, 갈로아체 덧셈기(92), 멀티플렉서(93),및 시프트레지스터(94)로 구성되어 있다.
상기 갈로아체 곱셈기(91)는 에러 위치 다항식의 계수σ_COEF와 신드롬 SYND을 입력받아 갈로아체 곱셈하여 출력하고, 상기 갈로아체 덧셈기(92)는 상기 갈로아체 곱셈기의 출력값과 상기 시프트레지스터의 출력값을 갈로아체 덧셈하여 출력한다.
상기 멀티플렉서(93)는 초기화 신호(FIRST_FLAG)에 따라 상기 에러 위치 다항식의 계수 σ_COEF 또는 상기 갈로아체 덧셈기(92)의 출력을 선택적으로 출력한다.
상기 시프트레지스터(94)는 10개의 레지스터가 직렬로 연결된 구조로 되어 있으면서 에러 평가 다항식의 계수 Ω1∼Ω10 을 저장하는 기능을 하는 것으로써, RS클럭(RS_CLK)에 동기되어 상기 멀티플렉서(93)의 출력을 시프트시켜서 상기 갈로아체 덧셈기(92)로 피드백입력한다.
실제로 계산되는 에러 평가 다항식의 계수값은 수학식 9a 와 수학식 9b에서 보여준 바와 같으며, 표 1 로 나타내었다.
Ω0 = 1
Ω1 = S1+σ1
Ω2 = S2+σ1·S1+σ2
Ω3 = S3+σ1·S2+σ2·S1+σ3
Ω4 = S4+σ1·S3+σ2·S2+σ3·S1+σ4
Ω5 = S5+σ1·S4+σ2·S3+σ3·S2+σ4·S1+σ5
Ω6 = S6+σ1·S5+σ2·S4+σ3·S3+σ4·S2+σ5·S1+σ6
Ω7 = S7+σ1·S6+σ2·S5+σ3·S4+σ4·S3+σ5·S2+σ6·S1+σ7
Ω8 = S8+σ1·S7+σ2·S6+σ3·S5+σ4·S4+σ5·S3+σ6·S2+σ7·S1+σ8
Ω9 = S9+σ1·S8+σ2·S7+σ3·S6+σ4·S5+σ5·S4+σ6·S3+σ7·S2+σ8·S1+σ8
Ω10=S10+σ1·S9+σ2·S8+σ3·S7+σ4·S6+σ5·S5+σ6·S4+σ7·S3+σ8·S2+ σ9·S1+σ10
표 1 에서 보는 바와 같이, 에러 평가 다항식의 0차 계수는 항상 1 이므로 레지스터에 저장해둘 필요가 없으므로, 계수를 저장하는 10개의 레지스터가 필요하다. 여기서, 주의할 것은 신드롬은 1차신드롬 S1 부터 10차 신드롬 S10 까지만 사용한다는 것이다.
도 9에 도시된 에러 평가 다항식 계산부의 작용을 자세히 설명하면 다음과 같다.
1번째 심볼 클럭동안, 상기 에러 위치 다항식 계산부(7)로부터 계산된 에러 위치 다항식의 1차 계수(σ1)부터 10차계수(σ10)가 심볼 클럭을 10분주한 RS클럭에 따라 입력된다.
그러면, 제어부(10)의 초기화 신호(FIRST_FLAG)에 따라 상기 멀티플렉서(93)는 상기 입력된 에러 위치 다항식의 1차내지 10차계수를 선택하여 상기 시프트레지스터(94)로 저장되는 것이다.
2번째 심볼 클럭동안, 상기 갈로아체 곱셈기(91)의 인자로는 에러 위치 다항식의 0차 계수(σ0 =1)가 심볼 클럭동안 유지되고 있으면서, 다른 인자로는 RS클럭에 따라 S1, S2, S3, S4, S5, S6, S7, S8, S9, S10차 신드롬이 입력되어 곱셈연산 되고, 갈로아체 덧셈기(92)에서는 상기 곱셈기(91)의 출력과 시프트레지스터(94)의 중간값이 덧셈연산되어 진다.
상기 멀티플렉서(93)는 상기 갈로아체 덧셈기(92)의 출력을 선택하여 상기 시프트레지스터(94)로 저장하여 결국, 시프트레지스터(94)의 값은 S1+σ1, S2+σ2, S3+σ3, …, S9+σ9, S10+σ10 이 된다.
3번째 심볼 클럭동안, 상기 갈로아체 곱셈기(91)의 인자로는 에러 위치 다항식의 1차 계수(σ1)가 심볼 클럭동안 유지되고 있으면서, 다른 인자로는 RS클럭에 따라 0, S1, S2, S3, S4, S5, S6, S7, S8, S9 차 신드롬이 입력되어 진다.
상기 멀티플렉서(93)는 상기 갈로아체 덧셈기(92)의 출력을 선택하여 상기 시프트레지스터(94)로 저장하여 결국, 시프트레지스터(94)의 값은 S1+σ1, S2+σ1·S1+ σ2, S3+σ1·S2+σ3, …, S9+σ1·S8+σ9, S10+σ1·S9+σ10 이 된다.
4번째 심볼 클럭동안 에러 위치 다항식의 2차 계수(σ2)가 유지되면서, RS클럭에 따라 0, 0, S1, S2, S3, S4, S5, S6, S7, S8 차 신드롬이 입력된다.
시프트레지스터(94)의 값은 S1+σ1, S2+σ1·S1+σ2, S3+σ1·S2+σ2·S1+σ3, …, S9+σ1·S8+σ2·S7+σ9, S10+σ1·S9+σ2·S8+σ10 이 된다.
계속해서, 마지막 11번째 심볼 클럭동안 에러 위치 다항식의 10차 계수(σ10)가 유지되면서, RS클럭에 따라 0, 0, 0, 0, 0, 0, 0, 0, 0, S1차 신드롬이 입력되고, 이제, 시프트레지스터(94)의 값은 상기 표 1에서 보인 에러 평가 다항식의 계수값이 되는 것이다.
여기서, 신드롬값의 입력제어는 제어부(10)의 신드롬 패스(SYND_PASS)신호에 따라 선택부(6)를 통해 해당되는 신드롬(Si) 또는 0x00을 선택하여 출력하게 된다.
즉, 초기화 신호(FIRST_FLAG)에 따라 에러 위치 다항식의 계수(σ_COEF:σ1∼σ10)로 상기 시프트레지스터(94)를 초기화한 후, 상기 에러 위치 다항식의 계수(σ_COEF)와 신드롬(SYND)을 곱하고, 그 이전에 시프트레지스터(94)에 저장되어 있던 중간값과 더하여 에러 평가 다항식의 계수(Ω_COEF)를 업데이트해나가는 것이다.
이어서, 도 10은 도 7의 에러 평가 다항식 평가부(72)에 대한 실시 회로도로서, 에러 평가 다항식 평가부(72)는 초기화부(100)와, 항 선택부(110), 차수 갱신부(120), 항 연산부(130), 및 에러 평가값 출력부(140)로 구성되어 있다.
상기 초기화부(100)는 제 1 갈로아체 곱셈기(100)로서, 상기 공통원소 저장부(70)로부터 RS클럭단위로 출력된 초기근(IALPHA)을 입력 받고, 상기 에러 평가 다항식 계산부(71)로부터 심볼 클럭단위로 출력된 에러 평가 다항식의 계수(Ω_COEF)를 입력받아 갈로아체 곱셈하여 초기항값(INITIAL)을 출력한다.
그리고, 상기 항 선택부(110)는 제 1 멀티플렉서(110)로서, 초기화 신호(INIT_FLAG)에 따라 상기 제 1 갈로아체 곱셈기(100)의 초기항값(INITIAL) 또는 상기 차수 갱신부(120)의 중간항값(MEDIAN)을 선택하여 출력한다.
그리고, 상기 차수 갱신부(120)는 시프트레지스터(121)와, 제 2 갈로아체 곱셈기(122)로 구성되어 있다. 상기 시프트레지스터(121)는 10개의 레지스터가 직렬로 연결되어 있으면서, 상기 항 선택부(110)로부터 출력된 항 값을 RS클럭에 따라 시프트시켜 출력한다. 상기 제 2 갈로아체 곱셈기(122)는 상기 시프트레지스터(121)의 출력값과 상기 공통원소 저장부(70)로부터 RS클럭단위로 출력된 차수 갱신을 위한 갱신근(ALPHA)를 입력 받아 갈로아체 곱셈하여 상기 항 연산부(130), 및 상기 항 선택부(110)로 출력한다.
그리고, 상기 항 연산부(130)는 제 1 갈로아체 덧셈기(131)와, 0x00이 저장된 롬(132), 반전 게이트(133), 논리곱 게이트(134), 제 2 멀티플렉서(135), 및 제 1 합 레지스터(136)로 구성되어 있다.
상기 제 1 갈로아체 덧셈기(131)는 상기 제 2 갈로아체 곱셈기(122)로부터 출력된 값과 피드백 입력된 값을 덧셈하여 출력한다.
상기 반전 게이트(133)는 심볼단위마다 발생하는 심볼리셋신호(RST_SUM)를 반전시킨다.
상기 논리곱게이트(134)는 외부로부터 제공되는 리셋신호(RST)와 상기 반전된 심볼리셋신호(RST_SUM)를 논리곱하여 출력한다.
상기 제 2 멀티플렉서(135)는 상기 논리곱게이트(134)의 출력신호에 따라 상기 제 1 갈로아체 덧셈기(131)의 출력값 또는 상기 롬값(0x00)을 선택하여 출력한다.
상기 제 1 합 레지스터(136)는 상기 제 2 멀티플렉서(135)의 출력값을 래치하여 다시 상기 제 1 갈로아체 덧셈기(131)로 피드백 입력함과 동시에, 상기 논리곱 게이트(134)의 출력신호의 액티브 로우에서 리셋된다.
그리고, 상기 에러 평가값 출력부(140)는 제 2 합 레지스터(141)와, 에러 평가 다항식의 0차 계수값인 0x01이 저장된 롬(142), 및 제 2 갈로아체 덧셈기(143)로 구성되어있다.
상기 제 2 합 레지스터(141)는 심볼단위마다 발생하는 상기 심볼리셋신호(RST_SUM)에 의해 인에이블되어 RS클럭에 따라 상기 제 1 갈로아체 덧셈기(131)로부터 출력된 항값을 래치하여 출력한다.
상기 제 2 갈로아체 덧셈기(143)는 상기 제 2 합레지스터(141)로부터 출력된 항값과 상기 롬(142)의 0차 항값(0x01)을 로드하여 갈로아체 덧셈한 에러 평가값(Ω_VAL)을 출력한다.
이제, 상기 공통원소 저장부(70)의 출력에 따른 에러 평가 다항식 평가부(72)의 작용을 설명하고자 한다.
상기 제 1 갈로아체 곱셈기(100)의 한 인자는 상기 공통 원소 저장부(70)의 제 1 멀티플렉서(80-11)의 출력으로서, 최고차 수신 심볼부터 평가하기 위한 초기근을 초기근선택신호(EIA_SEL)에 따라 RS클럭단위로 차례대로 선택되어 입력된다. 또한, 다른 인자는 상기 에러 평가 다항식 계산부(71)로부터 에러 평가 다항식 계수들(Ω_COEF)이 순서대로 입력된다.
그러면, 상기 제 1 갈로아체 곱셈기(100)는 두 값을 곱하여초기항값 (INITIAL) Ω1α-207, Ω2α-207*2, Ω3α-207*34α-207*45α-207*56α-207*6, Ω7α-207*7, Ω8α-207*8Ω9α-207*9, Ω10α-207*10 을 순서대로 상기 제 3 멀티플렉서(110)로 입력한다.
상기 제 3 멀티플렉서(110)는 초기화 신호(INIT_FLAG)에 따라 상기 초기항값(INITIAL)을 선택하여 상기 차수 갱신부(120)의 10개의 시프트레지스터(121)로 출력한다.
상기 10개의 시프트레지스터(121)는 상기 초기항값(INITIAL)을 RS클럭에 따라 시프트시켜서 최종단의 레지스터값을 제 2 갈로아체 곱셈기(122)로 출력한다.
한편, 공통 원소 저장부(70)의 제 2 멀티플렉서(80-22)는 갱신근선택신호(EIA_SEL)에 따라 각 롬(80-12∼80-21)에 저장된 α12345678910값을 순서대로 선택하여 제 2 갈로아체 곱셈기(122)로 출력한다.
상기 제 2 갈로아체 곱셈기(122)는 상기 시프트레지스터(121)의 항 값과 상기 차수 갱신을 위한 롬값을 순서대로 곱하여 RS클럭에 따라 그 결과값Ω1α-206, Ω2α-206*2, Ω3α-206*3, Ω4α-206*45α-206*56α-206*67α-206*78α-206*8, Ω9α-206*910α-206*10을 출력한다.
상기 항 연산부(130)의 제 1 갈로아체 덧셈기(131)에서는 상기 제 2 갈로아체 곱셈기(122)로부터 출력된 항값과 상기 제 1 합레지스터(136)에서 피드백된 값을 합하여 제 2 멀티플렉서(135)로 출력한다.
상기 제 1 합레지스터(136)는 상기 제 2 멀티플렉서(135)로부터 출력된 값을 래치하여 상기 제 1 갈로아체 덧셈기(131)로 피드백시킨다.
이렇게 하여, 상기 항 연산부(130)를 통해서 206차 심볼(R_206)에 대한 에러 평가 다항식의 1차항에서 8차항까지의 합값 (SUM1 = Ω1α-2062α-206*23α-206*3+ Ω4α-206*45α-206*56α-206*67α-206*78α-206*89α-206*910α-206*10)이 출력된다.
상기 에러 평가값 출력부(140)의 제 2 합레지스터(141)는 심볼마다 발생하는 심볼 리셋신호(RST_SUM)에 의해 인에이블 상태가 되어서 상기 제 1 갈로아체 덧셈기(131)로부터 출력된 상기 합값(SUM1)을 래치하여 상기 제 2 갈로아체 덧셈기(143)로 출력한다.
상기 제 2 갈로아체 덧셈기(143)는 상기 합값(SUM1)과 상기 롬(142)으로부터 로드한 0차계수(Ω0)에 해당하는 0x01값을 더하여 수신 심볼 R_206에 대한 에러 평가 진행을 수행한 Ω(α-206)값을 에러 평가 다항식의 평가값(Ω_VAL)으로 출력한다.
수신 심볼 R_205 에 대한 에러 평가 진행은 상기 차수 갱신부(120)의 제 2 갈로아체 곱셈기(122)로부터 출력된 값 Ω1α-206*1, Ω2α-206*23α-206*3, Ω4α-206*45α-206*5, Ω6α-206*6, Ω7α-206*7, Ω8α-206*8, Ω9α-206*9, Ω10α-206*10이 항 선택부(110)를 통해 선택되어져서 상기 시프트 레지스터(121)로 출력된다.
상기 10개의 시프트 레지스터(121)는 RS 클럭에 따라 우측으로 시프트시켜 상기 제 2 갈로아체 곱셈기(122)로 출력하고, 상기 제 2 갈로아체 곱셈기(122)에서는 상기 공통 원소 저장부(70)의 제 2 멀티플렉서(80-22)로부터 출력된 차수 갱신을 위한 원소들과 곱셈하여 출력한다.
그러면, 상기 제 2 갈로아체 곱셈기(122)로부터 출력된 Ω1α-205*1, Ω2α-205*2, Ω3α-205*3, Ω4α-205*4, Ω5α-205*5, Ω6α-205*6, Ω7α-205*7, Ω8α-205*8, Ω9α-205*9, Ω10α-205*10값이 항 연산부(130)및 항 선택부(110) 로 입력되어 차수가 갱신되고, 상기 항 연산부(130)와 항 선택부(110)는 상기에 설명한 동작을 반복하는 에러 평가 진행을 수행하므로써, 상기 에러 평가 출력부(140)를 통해 에러 평가값 (Ω(α-205))이 구해지는 것이다.
계속해서, 코드워드 마지막 심볼 R_0까지 상기 수신 심볼 R_205와 동일한 동작으로 에러 평가 진행이 수행되는 것이다.
이어서, 도 11 은 도 7 의 에러 위치 다항식 평가부(73)의 실시 회로도로서, 에러 위치 다항식 평가부(73)는 에러 위치 다항식(σ(X))을 평가하여 에러 위치 신호(ERR_FLAG)를 출력하고, 에러 위치 미분 다항식(σ'(X))을 평가하여 미분 평가값(σp_VAL)을 출력한다.
도 11의 본 발명의 구성요소를 역할에 따라 크게 항값을 갱신하는 부분과, 에러 위치 다항식을 평가 진행하는 부분, 미분 다항식을 평가 진행하는 3 부분으로 구분된다.
도 11 에서 보는 바와 같이, 에러 위치 다항식 평가부(73)는 항값을 갱신하는 부분에 해당하는 초기화부(200)와, 항 선택부(210), 및 제 1 차수 갱신부(220); 에러 위치 다항식(σ(X))을 평가 진행하는 부분에 해당하는 제 1 다항 연산부(230), 제 2 다항 연산부(240) 및 에러 판단부(250); 에러 위치 미분 다항식(σ'(X))을 평가진행하는 부분에 해당하는 홀수차항 선택부(260)와, 제 2 차수 갱신부(270), 제 3 다항 연산부(280), 및 미분 평가값 출력부(290)로 구성되어 있다.
① 항값을 갱신하는 부분
상기 초기화부(200)는 제 1 갈로아체 곱셈기(200)로 구성되며, 상기 공통 원소 저장부(70)로부터 RS클럭단위로 출력된 초기근(IALPHA)을 입력 받고, 심볼 클럭단위로 출력된 에러 위치 다항식의 계수(σ_COEF)를 입력받아 갈로아체 곱셈하여 초기항값(INITIAL)을 출력한다.
그리고, 상기 항 선택부는(210)는 초기화 신호(INIT_FLAG)에 따라 상기 제 1 갈로아체 곱셈기(200)의 초기항값(INITIAL) 또는 상기 차수 갱신부(220)의 중간항값(MEDIAN)을 선택하여 출력하는 제 1 멀티플렉서(210)로 구성되어 있다.
그리고, 상기 차수 갱신부(220)는 시프트레지스터(221)와, 제 2 갈로아체 곱셈기(222)로 구성되어 있다.
상기 시프트레지스터(221)는 10개의 레지스터가 직렬로 연결되어 있으면서, 상기 항 선택부(210)로부터 출력된 항 값을 RS클럭에 따라 시프트시켜 출력한다.
상기 제 2 갈로아체 곱셈기(222)는 상기 시프트레지스터(221)의 출력값과 상기 공통 원소 저장부(70)로부터 RS클럭 단위로 출력된 갱신근(ALPHA)을 갈로아체 곱셈하여 상기 항 연산부(230), 및 상기 항 선택부(210)로 출력한다.
②에러 위치 다항식 평가 진행하는 부분
상기 항 연산부(230)는 제 1 갈로아체 덧셈기(231)와, 0x00이 저장된 롬(232), 반전 게이트(233), 논리곱 게이트(234), 제 2 멀티플렉서(235), 및 제 1 합 레지스터(236)로 구성되어 있다.
상기 제 1 갈로아체 덧셈기(231)는 상기 제 2 갈로아체 곱셈기(222)로부터 출력된 값과 피드백 입력된 값을 덧셈하여 출력한다.
상기 반전 게이트(233)는 심볼단위마다 발생하는 심볼리셋신호(RST_SUM)를 반전시킨다.
상기 논리곱게이트(234)는 외부로부터 제공되는 리셋신호(RST)와 상기 반전된 심볼리셋신호(RST_SUM)를 논리곱하여 출력한다.
상기 제 2 멀티플렉서(235)는 상기 논리곱게이트(234)의 출력신호에 따라 상기 제 1 갈로아체 덧셈기(231)의 출력값 또는 상기 롬값(0x00)을 선택하여 출력한다.
상기 제 1 합 레지스터(236)는 상기 제 6 멀티플렉서(235)의 출려값을 래치하여 다시 상기 제 1 갈로아체 덧셈기(231)로 피드백 입력함과 동시에, 상기 논리곱 게이트(234)의 출력신호의 액티브 로우에서 리셋된다.
그리고, 상기 제 2 다항 연산부(240)는 제 2 합 레지스터(241)와, 에러 평가 다항식의 0차 계수값인 0x01이 저장된 롬(242), 및 제 2 갈로아체 덧셈기(243)로 구성되어있다.
상기 제 2 합 레지스터(241)는 심볼단위마다 발생하는 상기 심볼리셋신호(RST_SUM)에 의해 인에이블되어서 RS클럭에 따라 상기 제 1 갈로아체 덧셈기(231)로부터 출력된 항값을 래치하여 출력한다.
상기 제 2 갈로아체 덧셈기(243)는 상기 제 2 합레지스터(241)로부터 출력된 항값과 0차 계수(σ0)에 해당하는 상기 롬(242)의 0x01 을 입력받아 갈로아체 덧셈하여 위치 평가값(σ_VAL)을 출력한다.
그리고, 상기 에러 판단부(250)는 상기 제 2 갈로아체 덧셈기(253)로부터 출력된 에러 위치 다항식의 평가값(σ_VAL)이 0인지 판단하여 0이면 에러 위치 신호(ERR_FLAG)를 '하이'로 출력하는 비교기(250)이다.
③에러 미분 다항식 평가 진행하는 부분
상기 홀수차항 선택부(260)는 0x00이 저장된 롬(261)과, 갱신근선택신호의 최하위비트(EA_SEL0)에 따라 상기 제 1 차수 갱신부(220)로부터 출력된 항값 또는 상기 0x00 값을 선택적으로 출력하는 제 3 멀티플렉서(262)로 구성되어 있다.
그리고, 상기 제 2 차수 갱신부(270)는 반전 게이트(271)와, α206이 저장된 롬(272), 레지스터(273), 차수를 갱신하기 위한 α-1이 저장된 롬(274), 제 3 갈로아체 곱셈기(275)로 구성되어 있다.
상기 반전 게이트(271)는 평가 시작을 알리는 초기화 신호(INIT_FLAG)를 반전시켜 상기 레지스터(273)를 셋트시킨다.
상기 레지스터(273)는 상기 롬 값(α206)을 로드하여 출력한 이후, 심볼단위 마다 발생하는 심볼리셋신호(RST_SUM)에의해 인에이블되어서 피드백 입력된 값 αi을 래치하여 계속해서 출력한다.
상기 제 3 갈로아체 곱셈기(275)는 상기 레지스터(273)로부터 출력된 값 αi에 α-1를 곱한 값을 다시 상기 레지스터(274)로 피드백 입력시킨다.
그리고, 상기 제 3 다항 연산부(280)는 제 4 갈로아체 곱셈기(281)와, 제 3 갈로아체 덧셈기(282), 및 제 2 합 레지스터(283)로 구성되어 있다.
상기 제 4 갈로아체 곱셈기(281)는 상기 제 3 멀티플렉서(262)로부터 출력된 홀수차항(odd) 또는 0x00과, 상기 제 1 레지스터(273)로부터 출력된 값 αi을 곱하여 상기 제 3 갈로아체 덧셈기(282)로 출력한다.
상기 제 3 갈로아체 덧셈기(282)는 상기 제 4 갈로아체 곱셈기(281)로부터 출력된 값과 상기 제 2 합 레지스터(283)로부터 피드백 입력된 합값을 더하여 출력한다.
상기 제 2 합 레지스터(283)는 상기 제 3 갈로아체 덧셈기(282)에서 출력된 값을 RS클럭에 따라 래치하여 상기 제 3 갈로아체 덧셈기(282)로 피드백 입력 시키는 한편, 심볼단위마다 발생하는 심볼리셋신호(RST_SUM)에 의해 리셋된다.
그리고, 상기 미분 평가값 출력부(290)는 심볼단위마다 발생하는 상기 심볼리셋신호(RST_SUM)에 의해 인에이블되어서, 상기 제 3 갈로아체 덧셈기(282)로부터 출력된 미분 평가값(σp_VAL)을 RS클럭에 따라 래치하여 미분 평가값(σp_VAL)을 최종 출력하는 D플립플롭(290)으로 구성되어 있다.
이어서, 상기와 같은 구성을 갖는 에러 위치 다항식 평가부(73)의 구체적인 동작을 3 단계의 과정으로 구분하여 설명하면 다음과 같다.
(1). 초기화 과정
상기 제 1 갈로아체 곱셈기(200)의 한 인자는 도 8의 제 1 멀티플렉서(80-11)의 출력으로서, RS 클럭(RS_CLK)단위로 발생하는 초기근 선택신호(EIA_SEL)에 따라 갈로아체 필드의 역수(IALPHA)값들인 α-207*1, α-207*2-207*3, α-207*4-207*5, α-207*6, α-207*7-207*8, α-207*9-207*10을 차례대로 선택되어 입력되어 진다. 또다른 인자는 에러 위치 다항식 계산부(71)로부터 계산되어진 에러 위치 다항식의 계수들 (σ_COEF : σ12... σ10)이 순서대로 상기 제 1 갈로아체 곱셈기(200)로 입력된다.
이제, 상기 제 1 갈로아체 곱셈기(200)는 RS클럭단위로 동작하여 σ1α-207*1, σ2α-207*2, σ3α-207*3, σ4α-207*45α-207*5, σ6α-207*6, σ7α-207*7, σ8α-207*8, σ9α-207*9, σ10α-207*10으로 초기화된 값(INITIAL)을 순서대로 상기 항 선택부(210)인 제 1 멀티플렉서(210)로 출력한다.
상기 제 1 멀티플렉서(210)는 초기화 신호(INIT_FLAG)에 따라 상기 초기화값(INITIAL)을 선택하여 상기 10개의 시프트레지스터(221)로 출력한다.
상기 10개의 시프트레지스터(221)는 상기 제 1 멀티플렉서(210)에서 출력된 초기화값(INITIAL)을 RS 클럭(RS_CLK)에 따라 시프트시켜 제 2 갈로아체 곱셈기(222)로 출력한다.
한편, 상기 공통 원소 저장부(70)의 제 2 멀티플렉서(80-22)는 RS클럭단위로 발생하는 갱신근선택신호(EA_SEL)에 따라 롬(80-12∼80-21)으로부터 α12,α345678910값을 순서대로 선택하여 제 2 갈로아체 곱셈기(222)로 출력한다.
상기 제 2 갈로아체 곱셈기(222)에서는 상기 시프트레지스터(221)로부터 입력된 초기화값(INITIAL)과 상기 갱신근(ALPHA)를 RS클럭단위로 각각 곱하여 σ1α-206*1, σ2α-206*2, σ3α-206*3, σ4α-206*4, σ5α-206*5, σ6α-206*6, σ7α-206*7, σ8α-206*8, σ9α-206*910α-206*10을 차례대로 출력한다.
상기 제 2 갈로아체 곱셈기(222)로부터 출력된 항값은 3가지로 분기되어 각각 출력되는데, 상기 출력된 항값들을 더하여 에러 위치 신호(ERR_FLAG)를 발생하는 부분과, 출력된 항값들중 홀수차항만을 선택하여 미분 평가값(σp_VAL)을 출력하는 부분 및, 상기 레지스터부의 항값들을 갱신(UP_DATE)하기 위한 부분으로 분기한다.
(2). 에러 위치 신호(ERR_FLAG)를 발생하는 평가 진행
상기 제 1 다항연산부(230)의 제 1 갈로아체 덧셈기(231)에서는 상기 제 2 갈로아체 곱셈기(222)로부터 출력된 항값과 상기 제 1 합 레지스터(236)에서 피드백된 값을 합하여 상기 제 2 멀티플렉서(235)로 출력한다.
상기 제 2 멀티플렉서(235)는 리셋신호(RST)와 반전된 심볼리셋신호(RST_SUM)를 논리곱하여 출력된 신호에 따라 상기 제 1 갈로아체 덧셈기(231)로부터 출력된 값 또는 롬(232)의 0x00을 선택하여 제 1 합 레지스터(236)로 출력한다.
상기 제 1 합 레지스터(236)는 상기 제 2 멀티플렉서(235)로부터 출력된 값을 RS클럭에 따라 래치하여 상기 제 1 갈로아체 덧셈기(231)로 피드백시킴과 더불어 리셋신호(RST)와 반전된 심볼리셋신호(RST_SUM)를 논리곱하여 출력된 신호에 의해 리셋된다.
이렇게하여, 상기 제 1 다항연산부(230)를 통해서 에러 위치 다항식(σ(X)) 의 1차에서 10차까지의 항 합값(SUM1=σ1α-206*12α-206*23α-206*34α-206*4+ σ5α-206*56α-206*67α-206*78α-206*89α-206*910α-206*10) 이 계산되어 진다.
이제, 상기 제 2 다항 연산부(240)의 제 2 합 레지스터(241)에서는 심볼클럭 단위로 발생하는 상기 심볼리셋신호(RST_SUM)에 의해 인에이블 되어 상기 제 1 다항 연산부(230)에서 출력된 합값(SUM1)을 래치하여 상기 제 2 갈로아체 덧셈기(243)로 출력한다.
상기 제 2 갈로아체 덧셈기(243)는 상기 합값(SUM1)과 상기 롬(242)으로부터 입력된 0차 계수(σ0)에 해당하는 0x01값을 더하여 에러 위치 다항식의 평가값 (σ_VAL)을 구한다.
상기 판단부(250)는 상기 위치 평가값(σ_VAL)을 입력받아 평가값이 0임이 판단되면, 에러가 발생했음을 알리는 에러 위치 신호(ERR_FLAG)를 1로 발생하고, 평가값이 0이 아니면, 에러가 발생하지 않았음을 알리는 에러 위치 신호(ERR_FLAG)를 0으로 발생한다.
지금까지의 평가 진행은 수신심볼 R_206차 에 대한 에러 발생 위치를 판단하는 진행과정을 보인 것이며, 나머지 수신 심볼에 대한 에러 위치 신호(ERR_FLAG)도 같은 과정으로 발생된다.
(3). 미분 평가값을 출력하는 평가 진행
상기 홀수차항 선택부(260)의 제 3 멀티플렉서(262)는 상기 갱신근선택신호(EA_SEL)의 최하위 비트를 선택신호(EA_SEL0)로 사용한다.
상기 제 3 멀티플렉서(262)는 제 2 갈로아체 곱셈기(222)로부터 출력된 항값과 상기 롬(261)으로부터 출력된 0x00값을 입력받아 σ1α-206*1,0x00 , σ3α-206*3,0x00 , σ5α-206*5, 0x00 , σ7α-206*7,0x00, σ9α-206*9,0x00을 차례대로 선택하여 상기 제 3 다항 연산부(280)의 제 4 갈로아체 곱셈기(281)로 출력한다.
한편, 상기 제 2 차수 갱신부(270)의 상기 레지스터(273)는 초기화 신호(INIT_FLAG)를 반전시킨 신호에 의해 세트(set)되고, 심볼클럭단위로 발생하는 심볼리셋신호(RST_SUM)에 의해 인에이블 상태가 되며, RS클럭(RS_CLK)으로 클럭신호(clk)를 받아 레지스터의 값을 출력한다.
그리고, 상기 레지스터(273)는 상기 롬(272)에 저장된 α206값을 로드하여 상기 제 3 다항 연산부(280)의 상기 제 4 갈로아체 곱셈기(281) 및, 상기 제 3 갈로아체 곱셈기(275)로 출력한다.
여기서, 상기 제 3 갈로아체 곱셈기(275)는 상기 롬(274)에 저장된 α-1값과 상기 레지스터(273)로부터 출력된 값을 곱하여, 그 값을 다시 상기 레지스터(273)로 피드백 입력시킨다.
상기 제 3 다항 연산부(280)의 상기 제 4 갈로아체 곱셈기(281)에서는 상기 레지스터(273)로부터 출력된 α206을 입력받고, 상기 홀수차항 선택부(260)로부터 출력된 값을 입력받아 곱하여 σ1α-206*1α206, 0x00 , σ3α-206*3α206,0x00 , σ5α-205*5α206, 0x00 , σ7α-206*7α206,0x00, σ9α-206*9α206,0x00 값을 RS클럭에 따라 순서대로 출력하여 제 3 갈로아체 덧셈기(282)로 입력시킨다.
상기 제 3 갈로아체 덧셈기(282)는 상기 제 4 갈로아체 곱셈기(281)로부터 출력된 값과 상기 제 2 합 레지스터(283)로부터 출력된 값을 더하여 다시, 상기 제 2 합 레지스터(283)로 피드백 입력한다.
상기 제 2 합 레지스터(283)는 RS클럭에 따라 상기 제 3 갈로아체 덧셈기(282)로부터 출력되는 값을 피드백 입력받고, 심볼클럭단위로 발생하는 심볼 리셋신호(RST_SUM)에 의해 리셋된다.
또한, 상기 미분 평가값 출력부(290)는 심볼클럭단위로 발생되는 심볼리셋신호(RST_SUM)에 의해 인에이블상태가 되어, 상기 제 3 갈로아체 덧셈기(282)로부터 출력된 값 즉, 미분 평가값(σp_VAL)을 래치하여 수신 심벌에 대한 미분 평가값 (σp_VAL)을 출력한다.
즉, 수신심볼 R_206에 대한 미분 평가값은 σ1α-206*1α2063α-206*3α206+ σ5α-206*5α2067α-206*7α20669α-206*9α206206odd(σ(α-206))으로 출력되며, 나머지 수신심볼에 대해서도 제 2 차수 갱신부(270)의 αi차수가 1씩 감소되어 홀수차항에 곱해지면서 동일한 동작을 통해 미분 평가값(σp_VAL)이 구해지는 것이다.
이어서, 도 12 는 에러값 계산 및 정정부(74)에 대한 실시 회로도로서, 에러값 계산 및 정정부(74)는 역수 룩업테이블(300)과, 제 1 갈로아체 곱셈기(310), 프라임 룩업테이블(320), 제 2 갈로아체 곱셈기(330),0x00이 저장된 롬(340), 멀티플렉서(350), 갈로아체 덧셈기(360)로 구성되어 있다.
상기 역수 룩업테이블(300)은 상기 미분 평가값(σp_VAL)을 입력받아 미분 평가값(σ'(α-i))의 역수(1/σ'(α-i))를 로드하여 출력한다.
상기 제 1 갈로아체 곱셈기(310)는 에러 평가값 (Ω_VAL)과 상기 역수 미분 평가값(1/σ'(α-i))을 곱셈 연산한다.
상기 프라임 룩업 테이블(320)은 상기 제어부(10)로부터 제공된 심볼 넘버신호(NO_SYM)에 따라 심볼 차수에 맞는 갈로아체 필드의 원소 αi를 출력한다.
상기 제 2 갈로아체 곱셈기(330)는 상기 제 1 갈로아체 곱셈기(310)의 출력값과 상기 갈로아체 필드 원소 αi을 곱셈 연산하여 에러값 ei을 계산한다.
상기 멀티플렉서(350)는 상기 에러 위치 신호(ERR_FLAG)에 따라 상기 롬(340)의 값 0x00 혹은 상기 제 2 갈로아체 곱셈기(330)의 에러값 ei을 선택하여 출력한다.
상기 갈로아체 덧셈기(360)는 수신 심볼 R_SYM 과 상기 멀티플렉서(350)의 출력값을 갈로아체 덧셈 연산하여 에러 정정 심볼 C_SYM 을 출력한다.
즉, 상기와 같은 구성으로 상기 수학식 10과 같이 포니 알고리즘에 의해 에러값 (eiiΩ(α-i)/ σ'(α-i))을 구하여 에러가 발생했다는 에러 위치 신호(ERR_FLAG)에 따라 에러가 발생된 수신 심볼에 상기 계산된 에러값을 더하므로써 에러 정정을 수행하는 것이다.
이어서, 도 13은 복원 실패 판단부(75)에 대한 실시 회로도로서, 복원 실패 판단부(75)는 카운터(400)와, 논리곱 게이트(410), 논리합 게이트(420), 반전 게이트(430), 비교기(440), 및 D플립플롭(450)로 구성되어 있다.
상기 카운터(400)는 에러 비트가 발생됨을 알리는 상기 에러 위치 신호(ERR_FLAG)를 카운팅하여 에러가 발생된 심볼의 갯수를 출력한다.
상기 논리곱 게이트(410)는 심볼 단위로 평가하도록 제어부(10)로부터 심볼 클럭 단위마다 발생하는 평가 요청 신호(UNRCVR_FLAG_RST)와 상기 에러 위치 다항식 평가부로부터 출력된 에러 발생 신호(ERR_FLAG)를 논리곱 연산 한다.
상기 논리합 게이트(420)는 상기 논리곱 게이트(410)의 출력과 상기 에러 정정 실패 요청 신호(UNRCVR_FLAG_RST)를 논리합하여 상기 카운터(400)를 인에이블 시킨다.
상기 반전 게이트(430)는 상기 제어부(10)로부터 제공된 에러 정정 실패 요청 신호(UNRCVR_FLAG_RST)를 반전 시켜 상기 카운터(400)를 클리어 시킨다.
상기 비교기(440)는 상기 카운터(400)의 에러 심볼 개수(cnt)와 상기 에러 위치 다항식 계산부(73)로부터 출력된 에러 위치 다항식의 최고차수 L 를 비교하여 두 값이 동일하면 로우 신호를 출력하고, 동일하지 않으면 하이 신호를 출력한다.
상기 D플립플롭(450)은 상기 비교기(440)의 출력신호를 입력받아 에러 정정 실패 신호(UNRCVR_FLAG)를 출력한다.
즉, 상기 복원 실패 판단부(74)에서는 상기 에러 위치 다항식 계산부로부터 출력되는 에러 위치 다항식의 최고차수 L 이 10차 이하이고, 상기 카운터(400)의 에러 발생 심볼 수가 L 값과 동일했을 때, 상기 에러 정정된 심볼이 정확히 복원됐음을 의미하므로 두 값을 비교기를 이용하여 비교하게 되면 에러 정정의 성공과 실패를 판단할 수 있는 것이다.
이상에서 살펴본 바와 같이, 본 발명에 따른 하드웨어를 VLSI화 하므로써 ATV에서 채택한 (207, 187)리드 솔로몬 코드를 복원하는 디코더를 효율적으로 구현하는 효과가 있는 것이다.

Claims (30)

  1. 에러 정정능력이 t인 리드 솔로몬 코드를 수신하여 에러 정정된 신호로 복호화 시키는 데 있어서,
    심볼 클럭보다 t배 빠른 RS클럭(RS_CLK)을 발생하는 클럭 발생 수단(1)과;
    리드 솔로몬 부호화된 수신 신호(r(X))를 심볼 단위로 입력받아 출력하는 입력수단(2);
    상기 입력수단으로부터 출력된 수신 심볼(R_SYM)을 소정 지연 후, 순서대로 출력하는 선입 선출 수단(3);
    상기 입력수단으로부터 출력된 수신 심볼(R_SYM)을 차례로 입력받아 신드롬의 중간값 계산을 진행하면서 코드 워드가 입력 되었을 때, 최종 신드롬(SYND)을 생성하는 신드롬 계산수단(4);
    상기 신드롬 계산수단에서 생성된 신드롬을 선택적으로 출력하는 신드롬 선택수단(6);
    상기 신드롬(SYND)을 입력받아 에러 위치 다항식(σ(X))을 계산하여 에러 위치 다항식의 계수(σ_COEF) 및 에러 위치 다항식의 차수(L)를 출력하는 에러 위치 다항식 계산수단(7);
    상기 신드롬(SYND)과 에러 위치 다항식의 계수(σ_COEF)를 입력받아 에러값(ei)을 구하여 발생된 에러를 정정한 복원 심볼(C_SYM)을 출력함과 동시에, 상기 에러 위치 다항식의 차수(L)를 입력받아 상기 복원 심볼의 에러 정정이 정확한지 아닌지를 판단하여 복원 실패 신호(UNRCVR_FLAG)를 출력하는 에러 정정수단(8) 및;
    상기 선입선출수단(3)과, 상기 신드롬 계산수단(4), 신드롬 선택수단(6), 에러 위치 다항식 계산수단(7) 및, 상기 에러 정정수단(8)을 각각 제어하는 제어수단(10)을 포함하여 구성구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  2. 제 1 항에 있어서, 실제 발생된 에러 비트수를 측정하는 BER 모니터(9)가 추가로 구비되는 것을 특징으로 하는 고화질 텔레비젼용 리드솔로몬 디코더.
  3. 제 1 항에 있어서, 상기 신드롬 선택수단(6)은 상기 제어수단(10)의 제어신호(SYND_PASS)에 따라 상기 신드롬 계산수단(4)으로부터 계산된 신드롬(SYND 혹은 롬(5)의 0x00값을 선택하여 출력하는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  4. 제 1 항에 있어서, 상기 신드롬 계산 수단(4)은, RS클럭에 동기 되어 카운팅하면서 그 값을 알파 선택신호(ALPHA_SEL)로 출력하는 제 1 카운터(30)와;
    심볼 인에이블 신호(SCLK_ENA)를 반전시켜 상기 제 1 카운터(30)를 매 심볼 마다 클리어 시키는 반전 게이트(31);
    코드 발생 다항식(g(X))의 알파근 αi(0≤i≤9)이 저장된 제 1 롬(32a∼32j);
    RS클럭에 동기되어 동작하면서, 수신 심볼(R_SYM)을 입력받아 상기 알파 선택신호(ALPHA_SEL)에 따라 상기 제 1 롬(32a∼32j)에 저장된 알파근(αi)을 이용하여 신드롬 계산을 진행하여 신드롬 S[0]부터 S[9]를 병렬로 출력하는 제 1 신드롬 계산셀(32);
    신드롬 선택신호(SYND_SEL)에 따라 상기 제 1 신드롬 계산셀(32)로부터 계산된 신드롬을 차례대로 선택하여 출력하는 제 1 멀티플렉서(33);
    코드 발생 다항식(g(X))의 알파근 αi(10≤i≤19)이 저장된 제 2 롬(34a∼34j);
    RS클럭에 동기되어 동작하면서, 수신 심볼(R_SYM)을 입력받아 상기 알파 선택신호(ALPHA_SEL)에 따라 상기 제 2 롬(34a∼34j)에 저장된 알파근(αi)을 이용하여 신드롬 계산을 진행하여 신드롬 S[10]부터 S[19]를 병렬로 출력하는 제 2 신드롬 계산셀(34);
    -10이 저장된 롬(35);
    상기 신드롬 선택신호(SYND_SEL)값으로 부터 상기 롬(35)의 -10값을 가산 연산하는 가산기(36);
    상기 가산기(35)의 출력에 따라 상기 제 2 신드롬 계산셀(34)로부터 계산된 신드롬을 차례대로 선택하여 출력하는 제 2 멀티플렉서(37);
    상기 신드롬 선택신호(SYND_SEL)를 소정의 기준신호(9)와 비교하여 기준보다 크면 제 1 레벨(0)을 출력하고, 기준이하이면 제 2 레벨(1)을 출력하는 비교기(38);
    상기 비교기(38)의 출력신호에 따라 상기 제 1 멀티플렉서(33)의 출력 또는 상기 제 2 멀티플렉서(34)의 출력을 선택적으로 출력하는 제 3 멀티플렉서(39)을 포함 하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  5. 제 4 항에 있어서, 상기 신드롬 계산셀(32, 34)은
    RS클럭에 동기되어 동작하면서, 코드워드의 첫번째 심볼(R_206)부터 마지막 두번째 심볼(R_1)까지 계산되어 지는 중간 신드롬을 저장하는 다수개(10개)의 레지스터로 구성된 중간값용 시프트레지스터(42)와;
    RS클럭에 동기되어 동작하면서, 코드 워드의 첫번째 심볼(R_206)부터 마지막 심볼 (R_0)까지 계산된 최종 신드롬을 저장하는 다수개(10개)의 레지스터로 구성된 신드롬용 시프트레지스터(43);
    상기 시프트레지스터(42, 43)의 인에이블(디제이블) 동작을 제어하는 제어신호 발생부(41);
    코드워드의 첫번째 심볼(R_206)부터 마지막에서 두번째 심볼(R_1)이 입력되는 동안까지는 상기 중간값용 신드롬 시프트레지스터(42)의 출력값을 선택하여 출력하고, 마지막 심볼(R_0)이 입력되는 동안에는 상기 신드롬용 시프트레지스터(43)의 출력값을 선택하여 출력하는 항 선택부(44);
    코드 생성 다항식 g(x)의 근을 알파근 선택신호(ALPHA_SEL)에 따라 차례대로 선택하여 출력하는 제 5 멀티플렉서(45-1), 상기 제 5 멀티플렉서(45-1)로부터 출력된 근과 상기 항 선택부(44)로부터 출력된 중간 신드롬값을 입력받아 RS클럭단위로 갈로아체 곱셈연산하여 출력하는 갈로아체 곱셈기(45-2), 상기 갈로아체 곱셈기(45-2)로부터 출력된 값과 심볼 단위로 입력되는 수신 심볼(R_SYM)을 입력받아 RS클럭 단위로 갈로아체 덧셈연산하여 출력하는 갈로아체 덧셈기(45-3)로 구성되는 신드롬 항 연산부(45)를 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  6. 제 5 항에 있어서, 상기 제어신호 발생부(41)는, 코드워드의 마지막 심볼(R_0)이 수신되는 심볼 클럭 주기동안 '하이'로 발생되는 제 1 종료 신호(CW_END1)를 반전 시키는 제 1 반전 게이트(41c)와;
    상기 제 1 반전 게이트(41c)의 출력과 외부로부터 제공된 리셋 신호(RST)를 논리곱 연산하여 상기 중간값용 시프트레지스터(42)의 리셋 제어신호(RST)를 제공하는 제 2 논리곱 게이트(41d);
    동기 바이트(SYNC_BYTE)가 수신되는 심볼 클럭 주기동안 '하이'로 발생되는 코드워드 시작신호(CW_START)를 반전 시키는 제 2 반전 게이트(41e);
    상기 제 2 반전 게이트(41e)의 출력과 외부로부터 입력된 인에이블신호(ENA)를 논리곱 연산하여 상기 중간값용 시프트 레지스터(42)의 인에이블 제어신호(ENA)를 제공하는 제 3 논리곱 게이트(41f);
    코드워드 마지막 심볼(R_0)이 수신되는 심볼 클럭 주기동안 '하이'로 발생되는 제 1 종료 신호(CW_END1)와 마지막 두번째 심볼(R_1)이 수신되는 심볼 클럭 주기 동안 '하이'로 발생되는 제 2 종료 신호(CW_END2)를 논리합 연산하는 논리합 게이트(41a);
    상기 논리합 게이트(41a)의 출력과 외부로부터 입력된 인에이블 신호(EAN)를 논리곱 연산하여 상기 신드롬용 레지스터(43)의 인에이블 신호로 제공하는 제 1 논리곱게이트(41b)를 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  7. 제 1 항에 있어서, 상기 에러 위치 다항식 계산 수단(7)은,
    신드롬(SYND) 및 업데이트된 에러 위치 다항식(σ_IN)을 입력받아 디스크레펀시(d)를 계산하여 출력함과 더불어, 상기 디스크레펀시(d)가 0임을 알리는 제어 신호(D_ZERO)를 출력하는 한편, 상기 업데이트된 에러 위치 다항식(σ_IN)을 지연시킨 에러 위치 다항식(σ_OUT)을 출력함과 더불어, 마지막으로 업데이트된 에러 위치 다항식(σ_OUT)을 에러 위치 다항식(σ(X))으로 출력하는 디스크레펀시 계산부(51)와;
    상기 디스트레펀시 계산부(51)로부터 출력된 제어신호(D_ZERO)와, 디스크레펀시(d) 및, 첫 번째 디스크레펀시(d0)를 계산하도록 하는 제어신호(D0_FLAG)를 입력받아서,
    디스크레펀시(b)의 인덱스(INDEX:N)를 출력하고, 에러 위치 다항식의 최고차수(L)를 출력함과 동시에,임을 판단하여 제어 신호(CASE3_FLAG)를 출력하는 변수 생성 프로세서(52);
    상기 지연 디스크레펀시(b)의 인덱스(INDEX)에 따라 지연 디스크레펀시의 역수(b-i)를 출력하는 룩업 테이블(53);
    상기 디스크레펀시 계산부(51)에서 출력된 디스크레펀시(d)와, 상기 룩업 테이블(53)에서 출력된 지연 디스크레펀시(b)의 역수(b-1)를 곱하여 출력하는 제 1 갈로아체 곱셈기(54);
    RS클럭에 동기되어 동작하면서,에러 위치 다항식(σ(X))를 업데이트하는 데 이용하는 중간값(XkB(X))을 업데이트하기위한 중간값용 시프트레지스터(55);
    상기 디스크레펀시 계산부(51)로부터 에러 위치 다항식(σ_OUT) 또는 상기 중간값용 시프트레지스터(55)의 출력을 선택하여 다시 상기 중간값용 시프트레지스터(55)로 피드백 입력하는 선택부(56);
    상기 제 1 갈로아체 곱셈기(54)에서 출력된 값과 상기 중간값용 시프트레지스터(55)에서 출력된 값을 곱하여 출력하는 제 2 갈로아체 곱셈기(57);
    상기 제 2 갈로아체 곱셈기(57)에서 출력된 값과 상기 디스크레펀시 계산부(51)에서 출력된 에러 위치 다항식(σ_OUT)을 더한 값을, 업데이트된 에러 위치 다항식(σ_IN)으로하여 상기 디스크레펀시 계산부(51)로 피드백시키도록 되어 있는 제 1 갈로아체 덧셈기(58);
    코드워드의 마지막 심볼(R_0)이 수신되는 심볼 클럭 주기동안 '하이'로 발생되는 제 1 종료 신호(CW_END1)를 반전 시키는 반전 게이트(59a); 및
    외부에서 입력된 리셋신호와 상기 반전 게이트(59a)의 출력신호를 논리곱하여 상기 시프트레지스터(56)의 리셋신호(RST)로서 제공하는 논리곱 게이트(59b)를 포함 하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  8. 제 7 항에 있어서, 상기 선택부(56)는 상기 제어 신호(D0_FLAG)와, 상기 제어 신호 (CASE3_FLAG)를 논리합하여 제 2 선택신호(SEL2)를 출력하는 제 1 논리합 게이트(56a)와;
    상기 제어신호(D_ZERO)와 상기 제 2 선택신호(SEL2)를 조합하여 제 1 선택신호(SEL1)를 출력하는 제 2 논리합 게이트(56b);
    0x00이 저장된 롬(56-1);
    상기 제 1 선택신호(SEL1)에 따라 상기 디스크레펀시 계산부(51)에서 출력된 에러 위치 다항식(σ_OUT) 또는 상기 롬의 0x00 선택적으로 출력하는 제 1 멀티플렉서(56-2); 및
    상기 제 2 선택신호(SEL2)에 따라 상기 제 1 멀티플렉서(56-2)의 출력 또는 상기 중간값용 시프트레지스터(55)의 출력을 선택하여 출력하는 제 2 멀티플렉서(56-3)를 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  9. 제 7 항에 있어서, 상기 디스크레펀시 계산부(51)는
    RS클럭에 동기되어 동작하면서 상기 에러 위치 다항식(σ_IN)을 시프트시켜 직렬 출력함과 더불어, 마지막으로 업데이트된 에러 위치 다항식(σ(X))의 1차부터 10차까지의 계수를 병렬 출력하는 계수용 시프트레지스터(61)와;
    코드워드의 마지막 심볼(R_0)이 수신되는 심볼 클럭 주기동안 '하이'로 발생되는 제 1 종료 신호(CW_END1)를 반전시키는 제 2 반전 게이트(61a);
    상기 제 2 반전 게이트(61a)의 출력과 외부의 리셋신호(RST)를 논리곱연산하여 상기 계수용 시프트레지스터(61)의 리셋제어 신호로 제공하는 제 2 논리곱 게이트(61b);
    상기 제어신호(D0_FLAG)에 따라 상기 에러 위치 다항식(σ_IN) 또는 상기 계수용 시프트레지스터(61)에서 시프트되어 출력된 에러 위치 다항식(σ_OUT)을 선택적으로 출력하는 제 3 멀티플렉서(62);
    신드롬(SYND)과 상기 제 3 멀티플렉서(62)에서 출력된 값을 갈로아체 곱셈하여 출력하는 제 3 갈로아체 곱셈기(63);
    상기 제 3 갈로아체 곱셈기(63)에서 출력된 값과 피드백된 값을 더하여 출력하는 제 2 갈로아체 덧셈기(64);
    상기 제 2 갈로아체 덧셈기(64)에서 출력된 값을 RS클럭(RS_CLK)에 따라 래치하여 상기 제 2 갈로아체 덧셈기(64)로 피드백시키는 피드백용 벡터 레지스터(65);
    상기 제어신호(D_END)를 반전시키는 제 3 반전 게이트(65a);
    외부 리셋신호(RST)와 상기 제 3 반전 게이트(65a)의 출력신호를 논리곱연산하여 상기 피트백용 백터 레지스터(65)의 리셋신호로 제공하는 제 3 논리곱 게이트(65b);
    상기 제 2 갈로아체 덧셈기(64)에서 출력된 값을 래치하여 디스크레펀시(d)로 출력하는 출력용 벡터 레지스터(66);
    상기 출력용 벡터 레지스터(66)에서 출력된 디스크레펀시(d)가 0인지를 판단하여 0이면 하이의 제어 신호(D_ZERO)신호를 출력하도록 되어 있는 판단부(67); 및 계수 선택 신호(σ_COEF_SEL)에 따라 상기 계수용 시프트레지스터(61)의 에러 위치 다항식의 계수(σ_COEF)를 선택적으로 출력하는 계수 출력부(68)을 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼의 리드 솔로몬 디코더.
  10. 제 9 항에 있어서, 상기 계수 출력부(68)는 상기 계수 선택신호(σ_COEF_SEL)를 입력받아 선택제어신호(SEL4, SEL5)를 생성하여 출력하는 먹스 프로세서(68-1)와;
    상기 선택신호(SEL4)에 따라 상기 계수용 시프트레지스(61)로부터 병렬 출력된 1차 계수부터 10차 계수중 하나를 선택하여 출력하는 제 4 멀티플렉서(68-2);
    0x00이 저장된 롬(68-3); 및
    상기 선택신호(SEL5)에 따라 상기 제 4 멀티플렉서(68-2)로부터 출력된 값 또는 상기 롬(68-3)의 0x00을 선택하여 에러 위치 다항식의 계수(σ_COEF)를 출력하는 제 5 멀티플렉서(68-4)를 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  11. 제 1 항에 있어서, 상기 에러 정정부(8)는
    리드 솔로몬 코드의 최고차부터 평가 진행하기위한 갈로아체 필드 원소의 역수에 해당하는 초기근(α-N*i)과 다음 심볼을 위해 차수를 갱신 하기위한 갈로아체 필드 원소에 해당하는 갱신근(αi)을 저장하고 있는 공통원소 저장부(70)와;
    신드롬(SYND), 및 에러 위치 다항식의 계수(σ_COEF)를 입력받아 두 값을 곱셈하여 에러 평가 다항식의 계수(Ω_COEF)를 출력하는 에러 평가 다항식 계산부(71);
    상기 에러 평가 다항식의 계수(Ω_COEF)를 입력받아 상기 공통원소 저장부(70)로부터 입력받은 초기근(IALPAH)과 갈로아체 필드의 원소인 갱신근(ALPHA)를 이용해서, 상기 에러 평가 다항식의 계수(Ω_COEF)를 입력받아 에러 평가 다항식(Ω(X))을 평가한 에러 평가값(Ω_VAL)을 출력하는 에러 평가 다항식 평가부(72);
    상기 에러 위치 다항식의 계수(σ_COEF)를 입력받아 상기 공통원소 저장부(70)로부터 입력받은 초기근(IALPHA)과 갈로아체 필드의 원소인 갱신근(ALPHA)를 이용해서, 에러 위치 다항식(σ(X))을 평가하여 에러 위치 신호(ERR_FLAG)를 출력함과 동시에, 에러 위치 다항식(σ(X))의 미분치인 미분 다항식(σ'(X))을 평가한 미분 평가값(σp_VAL)을 출력하는 에러 위치 다항식 평가부(73);
    상기 미분 평가값(σp_VAL)과 에러 평가값(Ω_VAL)을 입력받아 포니 알고리즘을 적용하여 에러값(ei)을 계산하여 출력함과 동시에, 에러 발생 신호(ERR_FLAG)에 따라 수신 심볼(R_SYM)에 상기 에러값(ei)을 더하여 복원 심볼(C_SYM)을 출력하는 에러값 계산 및 정정부(74); 및
    상기 복원심볼(C_SYM)이 정확한지 아닌지를 판단하여 복원 실패 신호(UNRCVR_FRAG)를 출력하는 복원 실패 판단부(75)를 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  12. 제 11 항에 있어서, 상기 공통원소 저장부(70)는 평가 진행 초기화를 위한 초기근(IALPHA)을 저장하는 롬(80-1∼80-10)과;
    초기근선택신호(EIA_SEL)에 따라 상기 롬값(80-1∼80-10)을 차례대로 선택하여 출력하는 제 1 멀티플렉서(80-11);
    차수 갱신을 위한 갈로아체 원소를 저장하는 롬(80-12∼80-21); 및 갱신근선택신호(EA_SEL)에 따라 상기 롬값(80-12∼80-21)을 차례대로 선택하여 출력하는 제 2 멀티플렉서(80-22)을 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  13. 제 11 항에 있어서, 상기 에러 평가 다항식 계산부(71)는
    에러 위치 다항식의 계수(σ_COEF)와 신드롬(SYND)을 입력받아 갈로아체 곱셈하여 출력하는 갈로아체 곱셈기(91)와;
    상기 갈로아체 덧셈기(92)는 상기 갈로아체 곱셈기(91)의 출력값과 피드백 입력된 값을 갈로아체 덧셈하여 출력하는 갈로아체 덧셈기(92);
    초기화 신호(FIRST_FLAG)에 따라 상기 에러 위치 다항식의 계수(σ_COEF) 또는 상기 갈로아체 덧셈기(92)의 출력을 선택적으로 출력하는 멀티플렉서(93); 및
    RS클럭(RS_CLK)에 동기되어 상기 멀티플렉서(93)의 출력을 시프트시키면서 에러 평가 다항식의 계수(Ω1∼Ω10)을 저장함과 동시에, 상기 갈로아체 덧셈기(92)로 피드백입력하는 시프트레지스터(94)를 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  14. 제 11 항에 있어서, 상기 에러 평가 다항식 평가부(72)는
    상기 공통원소 저장부(70)로부터 RS클럭단위로 출력된 초기근(IALPHA)을 입력 받고, 상기 심볼 클럭단위로 출력된 에러 평가 다항식의 계수(Ω_COEF)를 입력받아 갈로아체 곱셈하여 초기항값(INITIAL)을 출력하는 제 1 갈로아체 곱셈기(100)로 구성된 초기화부(100)와;
    상기 초기화 신호(INIT_FLAG)에 따라 상기 제 1 갈로아체 곱셈기(100)의 초기항값(INITIAL) 또는 중간항값(MEDIAN)을 선택하여 출력하는 제 3 멀티플렉서(110)로 구성된 항 선택부(110);
    상기 항 선택부(110)로부터 출력된 항값들을 입력받아 다음 수신 심볼을 위한 에러 위치 다항식의 항값을 갱신하여 새로 갱신된 항값을 출력하는 차수 갱신부(120);
    심볼 클럭동안 상기 차수 갱신부(120)로부터 출력된 항값들을 입력받아 합한 값(SUM1)을 출력하는 항 연산부(130);
    상기 항 연산부(130)로부터 출력된 합한 값을 입력받아 에러 위치 다항식의 0차 계수(0x01)를 합하여 최종 에러 평가 평가값(Ω_VAL)을 출력하는 평가값 출력부(140)를 포함하여 구성되는 것을 특징으로하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  15. 제 14항에 있어서, 상기 차수 갱신부(120)는
    상기 항 선택부(110)로부터 출력된 항 값을 RS클럭에 따라 시프트시키는 다수개(10개)의 레지스터로 구성된 시프트레지스터(121)와;
    상기 시프트레지스터(121)의 출력값과 상기 갱신근(ALPHA)를 입력 받아 갈로아체 곱셈하여 출력하는 제 2 갈로아체 곱셈기(122)를 포함하여 구성되는 것을 특징으로하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  16. 제 14항에 있어서, 상기 항 연산부(130)는
    상기 차수 갱신부(120)로부터 출력된 값과 피드백 입력된 값을 덧셈하여 출력하는 제 1 갈로아체 덧셈기(131)와;
    0x00이 저장된 롬(132);
    심볼단위마다 발생하는 심볼리셋신호(RST_SUM)를 반전시키는 반전 게이트(133);
    외부로부터 제공되는 리셋신호(RST)와 상기 반전된 심볼리셋신호(RST_SUM)를 논리곱하여 출력하는 논리곱 게이트(134);
    상기 논리곱게이트(134)의 출력신호에 따라 상기 제 1 갈로아체 덧셈기(131)의 출력값 또는 상기 롬값(0x00)을 선택하여 출력하는 제 2 멀티플렉서(135); 및
    상기 멀티플렉서(135)의 출려값을 래치하여 다시 상기 제 1 갈로아체 덧셈기(131)로 피드백 입력함과 동시에, 상기 논리곱 게이트(134)의 출력신호의 액티브 로우에서 리셋되는 제 1 합 레지스터(136)를 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드솔로몬 디코더.
  17. 제 14항에 있어서, 상기 에러 평가값 출력부(140)는
    심볼단위마다 발생하는 상기 심볼리셋신호(RST_SUM)에 의해 인에이블되어 RS클럭에 따라 상기 항 연산부(130)로부터 출력된 항값을 래치하여 출력하는 제 2 합 레지스터(141)와;
    에러 평가 다항식의 0차 계수값인 0x01이 저장된 롬(142); 및
    상기 제 2 합레지스터(141)로부터 출력된 항값과 상기 롬(142)의 0차 항값(0x01)을 로드하여 갈로아체 덧셈한 에러 평가값(Ω_VAL)을 출력하는 제 2 갈로아체 덧셈기(143)를 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼의 리드 솔로몬 디코더.
  18. 제 11 항에 있어서, 상기 에러 위치 다항식 평가부(73)는
    상기 에러 위치 다항식의 계수(σ_COEF)와 상기 초기근(IALPHA)을 입력받아 최고차 심볼부터 평가 진행하도록 초기항(INITIAL)을 출력하는 초기화부(200)와;
    선택신호에 따라 상기 초기화부(200)로부터 입력받은 초기항값(INITIAL) 또는 다음 차수의 수신심볼을 검사하기위해 갱신된 중간항값(MEDIAN)을 선택적으로 출력하는 항 선택부(210);
    상기 항 선택부(210)로부터 출력된 항값들을 입력받아 다음 수신 심볼을 위한 에러 위치 다항식의 항값을 갱신하여 새로 갱신된 항값을 출력하는 제 1 차수 갱신부(220);
    심볼 클럭동안 상기 차수 갱신부(220)로부터 출력된 항값들을 입력받아 합한 값(SUM1)을 출력하는 제 1 항 연산부(230);
    상기 제 1 항 연산부(230)로부터 출력된 합한 값을 입력받아 에러 위치 다항식의 0차 계수(0x01)를 합하여 최종 에러 위치 평가값(σ_VAL)을 출력하는 제 2 항 연산부(240);
    상기 에러 위치 평가값(σ_VAL)을 입력받아 에러가 발생했는지를 알리는 에러 위치 신호(ERR_FLAG)를 출력하는 에러 판단부(250);
    상기 제 1 차수 갱신부(220)로부터 출력된 항값을 입력받아 에러 위치 다항식 중에서 홀수차 항()에 해당하는 항값만을 선택하여 출력하는 홀수차항 선택부(260);
    최고차심볼부터 평가하기위해 α206부터 다음 심볼을 위해 -1차씩 알파값을 갱신하여 출력하는 제 2 차수 갱신부(270);
    상기 홀수차항 선택부(260)로부터 출력된 홀수차항 및 상기 제 2 차수 갱신부(270)로부터 출력된 갈로아체 필드의 원소(αi)를 입력받아, 상기 에러 미분 위치 다항식에 해당하는 홀수차항들을 합한 값에 상기 갈로아체 필드의 원소를 곱하여 미분 다항식의 평가값(σp_VAL)을 구하여 출력하는 제 3 다항식 연산부(280);
    상기 제 3 다항식 연산부(280)로부터 출력된 미분 다항식의 평가값(σp_VAL)을 래치하여 출력하는 미분 평가값 출력부(290)를 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  19. 제 18 항에 있어서, 상기 초기화부(200)는
    RS클럭단위로 출력된 초기근(IALPHA)을 입력 받고, 심볼 클럭단위로 출력된 에러 위치 다항식의 계수(σ_COEF)를 입력받아 갈로아체 곱셈하여 초기항값(INITIAL)을 출력하는 제 1 갈로아체 곱셈기(200)로 구성되는 것을 특징으로 하는 고화질 텔레비젼의 리드 솔로몬 디코더.
  20. 제 18 항에 있어서, 상기 항 선택부는(210)는
    초기화 신호(INIT_FLAG)에 따라 상기 제 1 갈로아체 곱셈기(200)의 초기항값(INITIAL) 또는 상기 차수 갱신부(220)의 중간항값(MEDIAN)을 선택하여 출력하는 제 1 멀티플렉서(210)로 구성되는 것을 특징으로 하는 고화질 텔레비젼의 리드 솔로몬 디코더.
  21. 제 18 항에 있어서, 상기 차수 갱신부(220)는 다수개(10개)의 레지스터가 직렬로 연결되어 있으면서, 상기 항 선택부(210)로부터 출력된 항 값을 RS클럭에 따라 시프트시켜 출력하는 시프트레지스터(221)와;
    상기 시프트레지스터(221)의 출력값과 RS클럭 단위로 출력된 갱신근(ALPHA)을 갈로아체 곱셈하여 출력하는 제 2 갈로아체 곱셈기(222)를 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  22. 제 18 항에 있어서, 상기 항 연산부(230)는
    상기 제 2 갈로아체 곱셈기(222)로부터 출력된 값과 피드백 입력된 값을 덧셈하여 출력하는 제 1 갈로아체 덧셈기(231)와;
    0x00이 저장된 롬(232);
    심볼단위마다 발생하는 심볼리셋신호(RST_SUM)를 반전시키는 반전 게이트(233);
    외부로부터 제공되는 리셋신호(RST)와 상기 반전된 심볼리셋신호(RST_SUM)를 논리곱하여 출력하는 논리곱 게이트(234);
    상기 논리곱게이트(234)의 출력신호에 따라 상기 제 1 갈로아체 덧셈기(231)의 출력값 또는 상기 롬값(0x00)을 선택하여 출력하는 제 2 멀티플렉서(235); 및
    상기 제 2 멀티플렉서(235)의 출려값을 래치하여 다시 상기 제 1 갈로아체 덧셈기(231)로 피드백 입력함과 동시에, 상기 논리곱 게이트(234)의 출력신호의 액티브 로우에서 리셋되는 제 1 합 레지스터(236)를 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼의 리드 솔로몬 디코더.
  23. 제 18 항에 있어서, 상기 제 2 다항 연산부(240)는
    심볼단위마다 발생하는 상기 심볼리셋신호(RST_SUM)에 의해 인에이블되어 RS클럭에 따라 상기 제 1 갈로아체 덧셈기(231)로부터 출력된 항값을 래치하여 출력하는 제 2 합 레지스터(241)와;
    에러 평가 다항식의 0차 계수값인 0x01이 저장된 롬(242); 및
    상기 제 2 합레지스터(241)로부터 출력된 항값과 0차 계수(σ0)에 해당하는 상기 롬(242)의 0x01 을 입력받아 갈로아체 덧셈하여 위치 평가값(σ_VAL)을 출력하는 제 2 갈로아체 덧셈기(243)를 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  24. 제 18항에 있어서, 상기 에러 판단부(250)는 상기 제 2 갈로아체 덧셈기(253)로부터 출력된 에러 위치 다항식의 평가값(σ_VAL)이 0인지 판단하여 0이면 에러 위치 신호(ERR_FLAG)를 '하이'로 출력하는 비교기(250)를 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  25. 제 18항에 있어서, 상기 홀수차항 선택부(260)는 0x00이 저장된 롬(261)과;
    갱신근선택신호(SEL5)의 최하위비트(EA_SEL0)에 따라 상기 제 1 차수 갱신부(220)로부터 출력된 항값 또는 상기 0x00 값을 선택적으로 출력하는 제 3 멀티플렉서(262)를 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  26. 제 18항에 있어서, 상기 제 2 차수 갱신부(270)는
    평가 시작을 알리는 초기화 신호(INIT_FLAG)를 반전시켜 상기 레지스터(273)를 셋트시키는 반전 게이트(271)와;
    α206이 저장된 롬(272);
    상기 롬 값(α206)을 로드하여 출력한 이후, 심볼단위 마다 발생하는 심볼리셋신호(RST_SUM)에의해 인에이블되어서 피드백 입력된 값 αi을 래치하여 계속해서 출력하는 레지스터(273);
    차수를 갱신하기 위한 α-1이 저장된 롬(274);
    상기 레지스터(273)로부터 출력된 값 αi에 상기 롬(274)의 α-1를 곱한 값을 다시 상기 레지스터(273)로 피드백 입력시키는 제 3 갈로아체 곱셈기(275)를 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  27. 제 18 항에 있어서, 상기 제 3 다항 연산부(280)는
    상기 제 3 멀티플렉서(262)로부터 출력된 홀수차항(odd) 또는 0x00과, 상기 제 2차수 갱신부(270)로부터 출력된 값(αi)을 곱하여 출력하는 제 4 갈로아체 곱셈기(281)와;
    상기 제 4 갈로아체 곱셈기(281)로부터 출력된 값과 피드백 입력된 합값을 더하여 출력하는 제 3 갈로아체 덧셈기(282); 및
    상기 제 3 갈로아체 덧셈기(282)에서 출력된 값을 RS클럭에 따라 래치하여 다시 상기 제 3 갈로아체 덧셈기(282)로 피드백 입력 시키고, 심볼단위마다 발생하는 심볼리셋신호(RST_SUM)에 의해 리셋되는 제 2 합 레지스터(283)를 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  28. 제 18항에 있어서, 상기 미분 평가값 출력부(290)는 심볼단위마다 발생하는 상기 심볼리셋신호(RST_SUM)에 의해 인에이블되어서, 상기 제 3 다항연산부(280)로부터 출력된 미분 평가값(σp_VAL)을 RS클럭에 따라 래치하여 미분 평가값(σp_VAL)을 최종 출력하는 D플립플롭(290)을 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  29. 제 11 항에 있어서, 상기 에러값 계산 및 정정부(74)는
    상기 미분 평가값(σp_VAL)을 입력받아 미분 평가값(σ'(α-i))의 역수(1/σ'(α-i))를 로드하여 출력하는 역수 룩업테이블(300)과;
    에러 평가값 (Ω_VAL)과 상기 역수 미분 평가값(1/σ'(α-i))을 곱셈 연산하는 제 1 갈로아체 곱셈기(310);
    심볼 넘버신호(NO_SYM)에 따라 심볼 차수에 맞는 갈로아체 필드의 원소(αi)를 출력하는 프라임 룩업테이블(320);
    상기 제 1 갈로아체 곱셈기(310)의 출력값과 상기 갈로아체 필드 원소(αi)를 곱셈연산하여 에러값(ei)을 계산하는 제 2 갈로아체 곱셈기(330);
    0x00이 저장된 롬(340);
    상기 에러 위치 신호(ERR_FLAG)에 따라 상기 롬(340)의 값 0x00 혹은 상기 제 2 갈로아체 곱셈기(330)의 에러값 (ei)을 선택하여 출력하는 멀티플렉서(350);
    수신 심볼(R_SYM)과 상기 멀티플렉서(350)의 출력값을 갈로아체 덧셈 연산하여 에러 정정 심볼(C_SYM)을 출력하는 갈로아체 덧셈기(360)를 포함하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
  30. 제 11 항에 있어서, 상기 복원 실패 판단부(75)는
    에러 비트가 발생됨을 알리는 상기 에러 위치 신호(ERR_FLAG)를 카운팅하여 에러가 발생된 심볼의 갯수를 출력하는 카운터(400)와;
    심볼 단위로 평가하도록 심볼 클럭 단위마다 발생하는 평가 요청 신호(UNRCVR_FLAG_RST)와 상기 에러 발생 신호(ERR_FLAG)를 논리곱 연산하는 논리곱 게이트(410);
    상기논리곱게이트(410)의 출력과 상기 에러 정정 실패 요청 신호(UNRCVR_FLAG_RST)를 논리합하여 상기 카운터(400)를 인에이블 시키는 논리합 게이트(420);
    상기 에러 정정 실패 요청 신호(UNRCVR_FLAG_RST)를 반전 시켜 상기 카운터(400)를 클리어 시키는 반전 게이트(430);
    상기 카운터(400)의 에러 심볼 개수(cnt)와 상기 에러 위치 다항식 계산부로부터 출력된 에러 위치 다항식의 최고차수(L)를 비교하여 두 값이 동일하면 제 1 레벨(로우)신호를 출력하고, 동일하지 않으면 제 2 레벨(하이)신호를 출력하는 비교기(440); 및
    상기 비교기(440)의 출력신호를 입력받아 에러 정정 실패 신호(UNRCVR_FLAG)를 출력하는 D플립플롭(450)을 포함 하여 구성되는 것을 특징으로 하는 고화질 텔레비젼용 리드 솔로몬 디코더.
KR1019960051202A 1996-10-29 1996-10-31 고화질 텔레비젼용 리드 솔로몬 디코더 KR100215570B1 (ko)

Priority Applications (8)

Application Number Priority Date Filing Date Title
KR1019960051202A KR100215570B1 (ko) 1996-10-31 1996-10-31 고화질 텔레비젼용 리드 솔로몬 디코더
GB9722792A GB2318954B (en) 1996-10-29 1997-10-28 Reed-solomon decoder for use in advanced television
IT002426 IT1295890B1 (it) 1996-10-29 1997-10-29 Decodificatore di reed-solomon per uso nella televisione avanzata
CNB971259739A CN1222169C (zh) 1996-10-29 1997-10-29 在高级电视中使用的里德-所罗门解码器
JP29757897A JP4012997B2 (ja) 1996-10-29 1997-10-29 高画質テレビにおけるリードソロモンデコーダ
US08/960,232 US6031875A (en) 1996-10-29 1997-10-29 Reed-Solomon decoder for use in advanced television
DE1997147774 DE19747774B4 (de) 1996-10-29 1997-10-29 Reed-Solomon-Decoder zur Verwendung beim verbesserten Fernsehen (ATV)
FR9713577A FR2756991B1 (fr) 1996-10-29 1997-10-29 Decodeur reed - solomon destine a etre utilise en television avancee

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019960051202A KR100215570B1 (ko) 1996-10-31 1996-10-31 고화질 텔레비젼용 리드 솔로몬 디코더

Publications (2)

Publication Number Publication Date
KR19980031644A KR19980031644A (ko) 1998-07-25
KR100215570B1 true KR100215570B1 (ko) 1999-08-16

Family

ID=19480371

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960051202A KR100215570B1 (ko) 1996-10-29 1996-10-31 고화질 텔레비젼용 리드 솔로몬 디코더

Country Status (1)

Country Link
KR (1) KR100215570B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100803129B1 (ko) * 2006-03-07 2008-02-14 엘지전자 주식회사 디지털 방송 수신 시스템에서의 오류 정정 방법
KR102623504B1 (ko) 2021-08-13 2024-01-09 현대트랜시스 주식회사 리턴스프링 오조립 방지 구조

Also Published As

Publication number Publication date
KR19980031644A (ko) 1998-07-25

Similar Documents

Publication Publication Date Title
US6031875A (en) Reed-Solomon decoder for use in advanced television
US6467063B1 (en) Reed Solomon coding apparatus and Reed Solomon coding method
JPH10135846A (ja) リードソロモン復号器
JP3834122B2 (ja) 誤り位置検出多項式計算装置
JP3305525B2 (ja) 復号器、誤りロケータシーケンス生成器および復号方法
KR970004515B1 (ko) 리드-솔로몬 복호기의 오류위치다항식 연산방법 및 장치
JPH0879094A (ja) リード−ソロモン・デコーダ
US6263471B1 (en) Method and apparatus for decoding an error correction code
KR100215570B1 (ko) 고화질 텔레비젼용 리드 솔로몬 디코더
KR100192804B1 (ko) 리드 솔로몬 복호화기에서의 다항식 평가 장치
KR100195739B1 (ko) 리드솔로몬 복호기의 에러 위치 다항식 평가 장치
EP0793352B1 (en) Apparatus for determining the error evaluator polynomial for use in a Reed-Solomon decoder
KR100192802B1 (ko) 리드 솔로몬 디코더의 에러값 계산 및 정정 장치
KR100195749B1 (ko) 리드 솔로몬 복호기
KR100202945B1 (ko) 리드 솔로몬 복호기의 비트 에러율 측정 장치
KR100192800B1 (ko) 리드 솔로몬 디코더의 다항식 평가 시스템 및 그 방법
KR100202949B1 (ko) 리드 솔로몬 디코더의 에러 정정 시스템
KR100192803B1 (ko) 에러 정정 신드롬 계산 장치
KR100212825B1 (ko) 리드 솔로몬 복호기의 신드롬 계산장치
KR100192792B1 (ko) 리드 솔로몬 복호기의 다항식 평가 장치
KR100192788B1 (ko) 리드 솔로몬 복호기에서의 에러 평가 다항식의 계수계산장치
KR100212830B1 (ko) 리드 솔로몬 복호기의 신드롬 계산장치
KR100212827B1 (ko) 리드 솔로몬 복호기의 다황식 평가 장치
KR100192790B1 (ko) 리드 솔로몬 복호기에서의 에러 평가 다항식의 계수계산장치
KR100212824B1 (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
LAPS Lapse due to unpaid annual fee