KR100212828B1 - 리드 솔로몬 복호기의 신드롬 계산장치 - Google Patents

리드 솔로몬 복호기의 신드롬 계산장치 Download PDF

Info

Publication number
KR100212828B1
KR100212828B1 KR1019960005445A KR19960005445A KR100212828B1 KR 100212828 B1 KR100212828 B1 KR 100212828B1 KR 1019960005445 A KR1019960005445 A KR 1019960005445A KR 19960005445 A KR19960005445 A KR 19960005445A KR 100212828 B1 KR100212828 B1 KR 100212828B1
Authority
KR
South Korea
Prior art keywords
syndrome
adder
code
multiplier
syndrome calculation
Prior art date
Application number
KR1019960005445A
Other languages
English (en)
Other versions
KR970063958A (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 KR1019960005445A priority Critical patent/KR100212828B1/ko
Priority to US08/755,580 priority patent/US5805617A/en
Priority to EP96308523A priority patent/EP0793351A1/en
Priority to CN96120992A priority patent/CN1158519A/zh
Priority to JP8324097A priority patent/JPH09247000A/ja
Publication of KR970063958A publication Critical patent/KR970063958A/ko
Application granted granted Critical
Publication of KR100212828B1 publication Critical patent/KR100212828B1/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
    • 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/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • 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/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6516Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields

Landscapes

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

Abstract

본 발명은 리드 솔로몬 복호기의 신드롬 계산장치에 관한 것으로, 레지스터(11)를 통해 입력되는 수신 심볼(ri)과 중간값과 차례대로 더하여 출력하는 갈로아체 덧셈기(30)와 : 한 심볼 클럭 기간 동안에 다수개의 코드 발생 다항식 g(x)의 근(a0~a7)을 차례대로 입력하는 근 입력부(40) : 상기 갈로아체 덧셈기(30)에서 출력된 신호와 상기 근 입력부(40)에서 입력된 다수개의 코드 발생 다항식 g(x)의 근(a0~a7)을 차례대로 곱하여 중간값을 상기 갈로아체 곱셈기(50) 및 : 상기 갈로아체 곱셈기(50)에서 출력된 중간값을 시프트시켜 상기 갈로아체 덧셈기(30)로 입력함과 더불어 신드롬(Si)으로서 출력하는 시프트레지스터부(70)를 포함하여 구성되어, 상기 갈로아체 곱셈기(50)에서 출력된 중간값이 시프트 레지스터부(70)를 통해 시프트되어 상기 갈로아체 덧셈기(30)로 입력됨으로써, 로컬 라우팅으로 구현됨에 따라 면적이 감소되어 초 대규모 집적회로(VLSI)로 구현하기 용이한 것이다.

Description

리드 솔로몬 복호기의 신드롬 계산장치
제1도는 일반적인 리드 솔로몬 복호기의 개략적인 구성도.
제2도는 종래의 신드롬 계산장치의 회로도.
제3도는 종래의 1실시예에 의한 신드롬 계산셀의 회로도.
제4도는 종래의 2실시예에 의한 신드롬 계산셀의 회로도.
제5도는 리드 솔로몬 복호기에 사용되는 심볼 클럭과 비트 클럭의 타이밍도.
제6도는 본 발명에 따른 리드 솔로몬 복호기의 신드롬 계산셀의 회로도이다.
* 도면의 주요부분에 대한 부호의 설명
1 : 선입 선출 버퍼 3 : 신드롬 계산부
5 : 에러 위치 다항식 계산부 7 : 에러 정정부
9 : 제어부 30 : 갈로아체 덧셈기
40 : 근 입력부 42 : 롬
44 : 제1다중화기 50 : 갈로아체 곱셈기
70 : 시프트레지스터부 70-1~70-8 : 레지스터
본 발명은 리드 솔로몬 부호기(Reed solomon encodor : RS encoder)에 의해 에러 정정 부호화(error correcting coding, error control coding : 이하 ECC라 칭함)된 디지털데이터를 에러 정정 복호화하는 리드 솔로몬 복호기에 관한 것으로, 특히 신드롬을 계산하는 신드롬 계산셀을 비트 클럭에 의해 동작되도록 구현함으로써 그 구조가 간단한 리드 솔로몬 복호기의 신드롬 계산장치에 관한 것이다.
일반적으로, 에러 정정 부호화(ECC)는 디지털 데이터를 통신 채널을 통해 전송하거나 저장 매체에 저장시에 발생되는 에러를 검출 정정하기 위해 디지털 데이터를 부호화하는 것으로, 에러를 검출하거나 정정하는데 사용되는 데이터를 부가함으로써, 데이터의 신뢰도를 높이게 되는 것이다.
이러한 에러 정정 코드(ECC)의 역사는 1948년 샤논(Claude Shannon)에서 부터 시작되었다. 샤논(Claude Shannon)은 1948년 모든 통신 채널은 C(bps)하는 고유의 전송 용량을 갖고 있으며 그 용량을 초과하지 않는 전송 속도 R(bps)로 데이터를 전송하는 통신 시스템을 구축하는 것은 에러 정정 부호를 이용하면 어떤 채널이고 가능하다는 것을 증명하였다. 즉, 아주 좋은 성능의 채널을 구현하는 것 보다 다소떨어지는 기존 채널을 사용하면서 에러 정정부호를 사용하는 것이 더 경제적이라는 것이다.
그러나, 샤논(Claude Shannon)은 단지 에러 정정 코드가 존재한다는 것만을 증명하였을 뿐이며 에러 정정 코드를 찾는 방법에 대해서는 언급하지 않았다.
이에 따라, 에러 정정 코드를 찾기 위한 노력이 현재까지 꾸준히 진행되고 있으며, 이러한 에러 정정 코드는 크게 블록 코드(bilck code)와 논블록 코드(nonblock code)로 나누어진다.
상기 블록 코드는 정보 시퀀스를 k개의 비트로 이루어진 블록으로 분리한 다음 블록 단위로 에러 정정 부호하며, 상기 논블록 코드는 정보 시퀀스에 전체에 대해 에러 정정 부호화한다. 상기와 같은 블록 코드의 대표적인 예로는 BCH코드(Bose and Ray-Chaudhui and Hocquenghem code)와 리드 솔로몬 코드(RS code)를 들 수 있고, 논블록 코드의 대표적인 예로는 길쌈 부호(convolutional code)를 들 수 있다.
상기 BCH코드는 사이클릭(cyclic code)로서 갈로아체 GF(2m)상에서 동작된다. 사이클릭 코드란 선형 코드(liner code)의 어떤 선형 벡터를 사이클릭 시프트시키더라도 사이클릭 시프트된 선형 벡터가 상기 선형 코드의 선형 벡터인 선형 코드를 말한다.
따라서, BCH 코드는 하기 제1식과 같이 코드 발생 다항식 g(x)이 정해지면 피드백 시프트 레지스터를 이용하여 코드를 부호화할 수 있다.
이때, 상기 BCH 코드는 발생 다항식 g(x)이 연속하는 2t개의 근을 가진다면 t개 까지의 에러는 정정할 수 있는 능력을 가진다.
한편, 리드 솔로몬 코드는 상기 BCH 코드의 최적 코드로서 코드 발생 다항식이 상기 제1식과 같이 정해지면 t개의 에러를 정정할 수 있다.
따라서, 현재 리드 솔로몬 코드는 통신 및 컴퓨터 기억 시스템 등에 폭 넓게 사용될 뿐만 아니라 재밍에 대항하기 위한 한 방법으로서 비밀 통신 시스템에서 사용되기도 한다.
이와 같은 상기 리드 솔로몬 코드는 상기 BCH 코드와 마찬가지로 갈로아체 GF(2m) 상에서 동작된다.
즉, 상기 갈로아체 GF(2m)는 2m개의 원소를 갖는 수체계(number system)로서, 이러한 수체계를 하드웨어로 구현하게 되면 각 원소들이 모두 m개의 바이너리 디저트(digit)로 표현될 수 있으므로 디지탈 구조에 효과적일 뿐만 아니라 오버 플로우(over flow)가 발생하지 않게 되는 것이다.
상기와 같이 갈로아체 GF(2m)상의 코드를 가지는 리드 솔로몬 코드는 정보와 패리티(parity)가 섞이지 않는 계통적 코드(systematic code)와 정보와 패리티(parity)가 섞이는 비계통적 코드(nonsystematic code)로 분류된다.
상기 계통적 코드는 정보와 패리티가 섞이지 않도록 우선 정보를 상위 바이트로 이동시킨 다음 에러 정정용 코드를 구하여 더한 것으로, 하기 제2식으로 부터 구해진다.
상기 제2식에 있어서, 상기 c(x)는 코드워드 다항식이고, i(x)는 정보 다항식이며, t(x)는 에러 정정용 패리티의 다항식이다.
즉, 정보와 패리티 섞이지 않게 정보 i(x)를 χN-K차 만큼 상위 바이트로 이동시킨 다음를 만족하는 패리티 t(x)를 구한다.
그리고,을 만족하는 패리티 t(x)를 하기 제3식으로부터 구할 수 있다.
상기에 있어서는 코드워드 다항식 c(x)를 코드 발생 다항식 g(x)로 나눈 나머지값을 의미한다.
즉, 상기 패리티 t(x)를 구하기 위해서는 χN-Kⅰ(χ)를 코드 발생 다항식 g(x)로 나누는 과정을 수행하여야 하며 이러한 과정은 시프트 레지스터를 코드 발생 다항식 g(x)에 따라 연결하여 구현할 수 있다.
그리고, 상기 비계통적 코드는 하기 제4식과 같이 단순히 정보에 코드 발생 다항식 g(x)을 곱해 줌에 따라 정보와 패리티가 섞이게 된다.
상기 제4식에서 c(x)는 n-1차의 코드워드 다항식이고, i(x)는 k-1차의 정보 다항식, g(x)는 n-k차의 코드 발생 다항식이다.
상기 코드 발생 다항식 g(x)은 코드워드 다항식 c(x)를 만들어 내기 위해 정보 다항식 i(x)에 곱하지는 것으로, 이러한 코드 발생 다항식 g(x)을 하기 제5식과 같이 연속적인 2t개의 근을 가지도록 정하면 t개의 에러를 정정할 수 있다.
상기와 같은 방법으로 리드 솔로몬 부호화된 디지털 데이터를 리드 솔로몬 복호화하는 방법은 크게 주파수 영역 복호화와 시간 영역 복호화로 나누어지며, 상기 시간 영역에서 리드 솔로몬 복호화하는 과정은 다음과 같이 크게 4단계로 이루어진다.
1)신드롬 계산
수신된 데이터 r(x)는 하기 제6식과 같이 코드워드 다항식 c(x)과 전송중에 발생된 에러 다항식 e(x)를 더한 값으로 표현될 수 있다.
따라서 , 하기 제7식과 같이 수신된 데이터 r(x)에 코드 발생 다항식 g(x)의 근 a0~a2t-1을 차례대로 대입함으로써 전송중에 에러가 발생되었는지를 알 수 있는 것이다.
즉, 수신된 데이터 r(x)에 코드 발생 다항식 g(x)의 근 ai을 대입하여 수신된 데이터 r(x)가 0이 되면 전송중에 에러가 발생되지 않았다는 것을 의미하며, 수신된 데이터 r(x)에 코드 발생 다항식의 근 ai을 대입하여 수신된 데이터 r(x)가 0이 되지 않으면 i번째 위치 또는 i차에 에러가 발생하였다는 것을 의미한다.
2) 에러 위치 다항식 계산(finding error location)
Berlekamp-Massey 알고리즘 또는 Euclid 알고리즘으로부터 에러 위치 다항식의 계수를 계산한다.
상기 알고리즘에 의해 구해진 에러 위치 다항식을 σ(X)라 하면 에러 정정 능력인 t인 리드 솔로몬 코드에서는 하기 제8식과 같이 최고 t차 이하의 다항식이 얻어진다.
3) 에러값 계산
상기 에러 위치 다항식 σ(X)에 a-t을 대입하면 에러의 위치를 찾는다.
즉, 에러 위치 다항식 σ(X)에 a-t을 대입하여 에러 위치 다항식 σ(X)이 0이 되면 i번째 위치 또는 i차에 에러가 발생된 것이다.
그리고, 에러 평가 다항식 Ω(X)은 하기 제9식으로부터 구할 수 있다.
상기 제6식에서 S(X)는 신드롬 다항식이다.
이와 같이 에러 평가 다항식 Ω(X)을 구한 다음 하기 제10식으로부터 에러값 ei을 계산한다.
상기 제10식에서는 σ'는 에러 위치 다항식 σ을 미분한 값이다.
4) 에러 정정
상기와 같이 에러값을 구한 다음 하기 제 11식을 이용하여 원래의 코드워드 다항식 c(x)를 구하는 것이다.
이때, 갈로아체 특성상 같은 값을 더하면 0이 되므로 e(x)+ e(x)=0 이되는 것이다.
한편, 상기와 같은 과정으로 이루어진 리드 솔로몬 복호화 방법을 하드웨어로 구현한 일반적인 리드 솔로몬 복호기는 제1도에 도시한 바와 같이, 리드 솔로몬 부호화된 수신 신호r(x)를 일시 저장하였다가 출력하는 선입선출버퍼(1)와 : 상기 리드 솔로몬 부호화된 수신 신호 r(x)로부터 신드롬 Si을 계산하여 출력하는 신드롬 계산부(3) : 상기 신드롬 Si을 입력받아 에러 위치 다항식 σ(X)을 계산하여 출력하는 에러 위치 다항식 계산부(5) : 상기 신드롬 Si및 에러 위치 다항식 σ(X)을 입력받아 에러 평가 다항식 Ω(X)을 구하는 한편 상기 에러 평가 다항식 Ω(X)으로부터 에러값 ei를 구하고, 상기 선입선출버퍼(1)에서 출력된 수신 신호 r(x)에 상기 에러값 ei을 더해 수신 신호r(x)에 발생된 에러를 정정하는 에러 정정부(7) 및 : 상기 신드롬 계산부(3)와 에러 위치 다항식 계산부(5) 및 상기 에러 정정부(7)를 각각 제어하는 제어부(9)를 포함하여 구성되어 있다.
상기 신드롬 계산부(3)는 수신 신호 r(x)를 입력받아 신드롬 Si을 계산하며, 이때 상기 신드롬 계산부(3)는 하나의 코드 워드 c(x)가 모두 입력되어야만 신드롬 계산이 완료된다.
그리고, 에러 위치 다항식 계산부(5)는 Berlekamp algorithm 이나 Euclid algorithm 등을 통하여 에러의 위치를 찾아낼 수 있는 다항식 즉 에러 위치 다항식 σ(X)을 계산하여 에러 정정부(7)로 출력한다.
그리고, 에러 정정부(7)는 상기 에러 위치 다항식 σ(X)과 상기 신드롬 계산부(3)에서 출력된 신드롬 Si으로부터 에러 평가 다항식 σ(X)을 구한 다음 상기 에러 평가 다항식 Ω(X)으로부터 에러값 ei을 구하여 상기 선입선출버퍼(1)에서 출력된 수신 신호 r(x)에 더해줌으로써 수신 신호 r(x)에 발생된 에러를 정정하여 에러 정정 복호화된 코드 워드 c(x)를 출력하는 것이다.
그리고, 상기 신드롬 계산부(3)는 제2도에 도시된 바와 같이, 리드 솔로몬복호화된 수신 신호 r(x)를 심볼 클럭(sym_clk)에 따라 래치시켜 수신 심볼(ri)을 차례대로 입력하는 레지스터(11)와, 상기 레지스터(11)를 통해 수신 심볼(ri)을 차례대로 입력받아 코드 발생 다항식 g(x)의 각 근(a0~a2t-1)에 대해 신드롬(S0~S2t-1)을 계산하는 다수개(2t개)의 신드롬 계산셀(13-2~13-2t)을 포함하여 구성되어 있다.
예를 들어, 리드 솔로몬 코드 (N, K)를 리드 솔로몬 복호화하는 리드 솔로몬 복호기에 사용되는 신드롬 계산부(3)에서는 N-K=2t개의 신드롬 계산셀(13-2~13-2t)이 필요하게 된다. 즉, N개의 심볼(한개의 코드 워드)을 입력받아 동시에 2t개의 신드롬(S0~S2t-1)을 각각 계산하는 것이다.
이때, 상기 각 신드롬 계산셀(13-2~13-2t)은 하기 제12식 같은 신드롬 계산 공식을 하드웨어적으로 구현한 것이다.
상기에서 rj는 수신 신호 r(x)가 심볼 클럭에 동기되어 입력된 수신 심볼을 의미한다.
상기 제12식을 하드웨어적으로 구현한 각 신드롬 계산셀(13-2~13-2t)은 제3도에 도시된 바와 같이, 수신 심볼(ri)과 중간값을 더하여 출력하는 갈로아체 덧셈기(21)와 : 코드 발생 다항식 g(x)의 근(ai)이 저장되어 있는 롬(23) : 상기 갈로아체 덧셈기(21)에서 출력된 신호와 상기 롬(23)에 저장되어 있는 코드 발생 다항식 g(x)의 근(ai)을 곱하여 중간값을 출력하는 갈로아체 곱셈기(25) 및 : 상기 갈로아체 곱셈기(25)에서 출력된 중간값을 심볼 클럭(sym_clk)에 따라 래치시켜 상기 갈로아체 덧셈기(21)로 입력함과 더불어 신드롬(Si)으로서 출력하는 레지스터(27)를 포함하여 구성되어 있다.
이때, 상기 롬(23)에 저장되어 있는 코드 발생 다항식 g(x)의 근(ai)은, 시드롬(Si)를 계산하기 위한 코드 발생 다항식의 근으로서, 상기 첨자 I는 0~2t-1의 값을 가진다.
즉, 신드롬(S0)을 계산하기 위한 신드롬 계산셀(31-1)의 롬(23)에는 0차의 근(a0)이 저장되며, 신드롬(Si)을 계산하기 위한 신드롬 계산셀(31-2)의 롬(23)에는 1차의 근(a1)이 저장되는 것이다.
그러나, 상기와 같은 종래의 신드롬 계산장치는, 2t개의 신드롬(S0~S2t-1)을 계산하기 위한 신드롬 계산셀(13-2~13-2t)이 2t개 필요하고, 상기 각 신드롬 계산셀(13-2~13-2t) 마다 갈로아체 덧셈기(21)와 갈로아체 곱셈기(25)가 필요하므로, 전체적으로 갈로아체 덧셈기(21)와 갈로아체 곱셈기(25)가 2t개 만큼 필요하게 된다.
따라서, 신드롬 계산장치의 구조가 복잡할 뿐만 아니라 신드롬 계산장치의 면적이 증가하여 초 대규모 집적회로(VLSI)로 구현하기 어려문 문제점이 있었다.
한편, 상기와 같은 문제점을 해소하기 위한 본 발명의 발명자에 의해 제안된 종래의 2실시예에 의한 신드롬 계산셀은 제4도에 도시된 바와 같이, 수신 심볼(ri)을 중간값과 차례대로 더하여 출력하는 갈로아체 덧셈기(30)와 : 한 심볼 클럭 기간 동안에 다수개의 코드 발생 다항식 g(x)의 근(a0~a7)을 차례대로 입력하는 근 입력부(40) : 상기 갈로아체 덧셈기(30)에서 출력된 신호와 상기 근 입력부(40)에서 입력된 다수개의 코드 발생 다항식 g(x)의 근(a0~a7)을 차례대로 곱하여 중간값을 출력하는 갈로아체 곱셈기(50) 및 : 상기 갈로아체 곱셈기(50)에서 출력된 중간값을 래치시켜 상기 갈로아체 덧셈기(30)로 입력하는 래치부(60)를 포함하여 구성되어 있다.
그리고, 상기 근 입력부(40)는, 코드 발생 다항식 g(x)의 근(a0~a7)이 저장되어 있는 롬(42) 및, 상기 롬(42)에 저장되어 있는 코드 발생 다항식 g(x)의 근(a0~a7)을 외부로부터 입력된 선택신호(81mux_se1)에 따라 다중화시켜 출력하는 제1다중화기(44)를 포함하여 구성되어 있다.
그리고, 상기 래치부(60)는, 상기 갈로아체 곱셈기(50)에서 출력된 중간값을 선택신호(81mux_se1)에 따라 역다중화하여 출력하는 역다중화기(62)와 : 상기 역다중화기(62)에서 역다중화되어 출력된 신호들을 비트 클럭(bit-c1k)에 따라 각각 래치시켜 출력하는 레지스터부(64) 및 : 상기 레지스터부(64)에서 출력된 신호를 외부로부터 입력된 선택신호(81mux_se1)에 따라 다중화시켜 중간값을 상기 갈로아체 덧셈기(30)로 입력하는 제2 다중화기(66)를 포함하여 구성되어 있다.
상기 제1 다중화기(44) 및 제2 다중화기(66)는 동일한 선택신호(81mux_se1)를 입력받도록 되어 있는 한편, 상기 레지스터부(64)는 상기 역다중화기(62)에서 출력된 신호들을 비트 클럭(bit_c1k)에 의해 각각 래치시켜 출력하는 8개의 레지스터(64-1~64-8)로 이루어져 있다. 이때, 상기 각 레지스터(64-1~64-8)는 8비트의 병렬 입출력 레지스터로 이루어지는 한편, 상기 각 레지스터(64-1~64-8)는 코드워드 종료신호(cw_end)를 리셋단자(rst)를 통해 입력받아 리셋되도록 되어 있다.
상기와 같이 구성된 종래의 2실시예에 의한 신드롬 계산셀에 있어서, 레지스터(11)는 수신신호 r(x)를 심볼클럭(sym_c1k)에 따라 래치시켜 수신 심볼(ri)을 차례대로 갈로아체 덧셈기(30)로 입력하고, 상기 갈로아체 덧셈기(30)는 상기 레지스터(11)를 통해 입력되는 수신 심볼(ri)을 래치부(60)의 제2 다중화기(66)를 통해 차례대로 입력되는 8개의 중간값과 차례대로 더하여 갈로아체 곱셈기(50)로 출력한다.
한편, 근 입력부(40)의 제1 다중화기(44)는 롬(42)에 저장되어 있는 8개의 코드 발생 다항식 g(x)의 근(a0~a7)을 외부로부터 입력된 선택신호(81mux_se1)에 따라 다중화시켜 상기 갈로아체 곱셈기(50)로 출력한다.
그리고, 상기 갈로아체 곱셈기(50)는 상기 제1 다중화기(44)를 통해 입력된코드 발생 다항식 g(x)의 근(a0~a7)과 상기 갈로아체 덧셈기(30)에서 출력된 신호를 차례대로 곱하여 래치부(60)의 역다중화기(62)로 출력하고, 상기 역다중화기(62)는 상기 갈로아체 곱셈기(50)에서 출력된 신호를 역다중화하여 레지스타부(64)의 각 레지스터(64-1~64-8)로 출력된다.
그리고, 상기 각 레지스터(64-1~64-8)는 비트 클럭(bit_c1k)에 의해 상기 역다중화기(62)에서 출력된 신호를 래치시켜 제2다중화기(66)로 출력한다. 이때, 상기 레지스터부(64)의 각 레지스터(64-1~64-8)는 한 코드워드 종료하였음을 뜻하는 코드워드 종료신호(cw_end)를 리셋단자(rst)를 통해 입력받아 리셋된다.
그리고, 상기 제2 다중화기(66)는 상기 각 레지스터(64-1~64-8)에서 출력된 신호를 외부로부터 입력된 선택신호(81mux_se1)에 따라 다중화시켜 상기 갈로아체 덧셈기(30)로 다시 입력한다. 즉, 심볼 클럭의 8배 빠르기인 사이클이 16.67nsec의 비트 클럭을 이용하여 8개의 신드롬을 동시에 계산함으로써 대기 시간을 대폭 줄일 수 있을 뿐만 아니라 신드롬 계산장치 전체에 필요한 신드롬 계산셀을 1/8로 줄일 수 있는 것이다.
그러나, 상기와 같은 종래의 2실시예의 의한 신드롬 계산장치는 중간값을 저장하는 각 레지스터(64-1~64-8)의 입출력을 제어하는 역다중화기(62) 및 제2 다중화기(66)를 사용함에 따라 글로벌 라우팅(global routing)이 발생되므로, 상기 각 레지스터(64-1~64-8) 와 상기 각 레지스터(64-1~64-8) 의 입출력을 제어하는 역다중화기(62) 및 다중화기(66) 사이의 라우팅(routing)이 큰 면적을 차지하는 문제점이 있을 뿐만 아니라 글로벌 라우팅(global routing)으로 인해 지연(relay) 등의 유해한 결과가 발생되는 문제점이 있었다.
따라서, 본 발명은 상기와 같은 종래의 제 문제점을 해소하기 위한 것으로, 갈로아체 곱셈기에서 출력된 중간값을 시프트 레지스터부를 사용하여 시프트시켜 갈로아체 덧셈기로 입력하도록 구현함으로써, 다중화기와 역다중화기를 사용함에 따라 발생되는 글로벌 라우팅(global routing)을 로컬 라우팅(local routing)으로 바꿀 수 있는 리드 솔로몬 복호기의 신드롬 계산장치를 제공하는데 그 목적이 있다.
이러한 목적을 달성하기 위한 본 발명에 따른 리드 솔로몬 복호기의 신드롬 계산장치는, 리드 솔로몬 복호화된 수신 신호r(x)를 심볼 클럭에 따라 래치시켜 수신 심볼을 차례대로 입력하는 레지스터와, 상기 레지스터를 통해 수신 심볼을 차례대로 입력받아 코드 발생 다항식의 각 근에 대해 신드롬을 계산하는 다수개의 신드롬 계산셀을 포함하여 구성된 신드롬 계산장치에 있어서, 상기 신드롬 계산셀이, 상기 레지스터를 통해 입력되는 수신 심볼을 중간값과 차례대로 더하여 출력하는 갈로아체 덧셈기와 : 한 심볼 클럭 기간 동안에 다수개의 코드 발생 다항식의 근을 차례대로 입력하는 근 입력부 : 상기 갈로아체 덧셈기에서 출력된신호와 상기 근 입력부에서 입력된 다수개의 코드 발생 다항식의 근을 차례대로 곱하여 중간값을 출력하는 갈로아체 곱셈기 및 : 상기 갈로아체 곱셈기에서 출력된 중간값을 시프트시켜 상기 갈로아체 덧셈기로 입력함과 더불어 신드롬으로서 출력하느 시프트레지스터부를 포함하여 구성된 것을 특징으로 한다.
따라서, 갈로아체 곱셈기에서 출력된 중간값을 시프트 레지스터부를 사용하여 시프트시켜 갈로아체 덧셈기로 입력하도록 구현함으로써, 다중화기와 역다중화기를 사용함에 따라 발생되는 글로벌 라우팅(global routing)을 로컬 라우팅(local routing)으로 바꿀수 있어, 면적이 감소하여 신드롬 계산장치를 초 대규모 집적회로(VLSI)로 구현하기 용이한 것이다.
이하,첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명한다.
유럽 위성 디지탈 방송 구격인 DVB 스펙(spec)에서는 전송율이 약 60Mbps에 이르는데, 이를 심볼 클럭으로 환산하면 1심볼이 8비트로 구성되므로 전송율이 7.5Mbps가 된다. 즉, 제4도에 도시된 바와같이, 한 심볼 클럭(symbol clock)의 사이클(cycle)은 133.3nsec이고, 비트 클럭(bit clock)의 사이클은 상기 심볼 클럭의 1/8 인 16.67nsec이다.
한편, 리드 솔로몬 복호기의 신드롬 계산장치는 리드 솔로몬 부호화된 수신 신호를 상기와 같은 심볼 클럭(symbol clock)에 동기시켜 입력받아 신드롬을 계산한다.
예를들어, 리드 솔로몬 코드 (N,K) 를 리드 솔로몬 디코딩하는 리드 솔로몬 디코더에서 쓰이는 신드롬 계산장치는 수신 신호를 심볼 클럭에 동시시켜 한 개의 코드 원드당 N개의 심볼로 입력 받아 2t개의 신드롬을 각각 계산하는 것이다. 이때, 신드롬을 계산하는 과정에서 시간적으로 가장 중요한 경로(critical path)는 갈로아체 GF(2m)곱셈인데, 갈로아체 곱셈을 비트 클럭 사이클(약 16,67nsec)동안에 동작시킬 수만 있다면 심볼 클럭 대신에 비트 클럭을 사용할 수 있는 것이다.
상기와 같은 조건을 만족하는 갈로아체 GF(2m) 곱셈기는 이미 제안되었으며, 그 일예로는 한국 특허 출원 번호 95-61391에 이미 제안된 갈로아체 GF(2m) 곱셈기를 들 수 있다.
따라서, 상기와 같이 연산 속도가 빠른 갈로아체 GF(2m) 곱셈기를 사용하게되면, 신드롬 계산시에 비트 클럭을 사용할 수 있는 것이다. 즉, 제6도는 본 발명에 따른 신드롬 계산셀의 회로도로서, 본 발명에 따른 신드롬 계산셀은, 리드 솔로몬 복호화된 수신 신호 r(x)를 심볼 클럭(sym_c1k)에 따라 래치시켜 수신 심볼(ri)을 차례대로 입력하는 레지스터(11)를 통해 차례대로입력되는 수신 심볼(ri)을 중간값과 차례대로 더하여 출력하는 갈로아체 덧셈기(30)와 : 한 심볼 클럭 사이클 동안에 다수개의 코드 발생 다항식 g(x)의 근(a0~a7)을 차례대로 입력하는 근 입력부(40) 및 : 상기 갈로아체 덧셈기(30)에서 출력된 신호와 상기 근 입력부(40)에서 입력된 다수개의 코드 발생 다항식 g(x)의 근(a0~a7)을 차례대로 곱하여 중간값을 출력하는 갈로아체 곱셈기(50) 및 : 상기 갈로아체 곱셈기(50)에서 출력된 중간값을 시프트시켜 상기 갈로아체 덧셈기(30)로 입력함과 더불어 신드롬(Si)으로서 출력하는 시프트레지스터부(70)를 포함하여 구성되어 있다.
상기 시프트 레지스터부(70)는, 다수개의 레지스터(70-1~70-8)가 ★로 연결된 구조로 되어 있다.
그리고 상기 시프트 레지스터부(70)의 각 레지스터(70-1~70-8)는, 비트 클럭(bit_c1k)에 따라 상기 갈로아체 곱셈기(50)에서 출력된 중간값을 시프트 ★출력하도록 되어 있다.
상기 근 입력부(40)는, 코드 발생 다항식 g(x)의 근(a0~a7)이 저장되어 있는 롬(42) 및, 상기 롬(31)에 저장되어 있는 코드 발생 다항식 g(x)의 근(a0~a7)을 외부로부터 입력된 선택신호(mux_se1)에 따라 다중화시켜 출력하는 제1 다중화기(84)를 포함하여 구성되어 있다.
상기와 같이 구성된 본 발명에 따른 리드 솔로몬 복호기의 신드롬 계산장치의 작용 및 효과를 상세히 설명하면 다음과 같다.
레지스터(11)는 수신신호 r(x)를 심볼 클럭(sym_c1k)에 따라 래치시켜, 수신 심볼 (ri)을 차례대로 갈로아체 덧셈기(30)로 입력하고, 상기 갈로아체 덧셈기(30)는 상기 레지스터(11)를 통해 입력되는 수신 심볼(ri)을 시프트 레지스터부(70)를 통해 차례대로 입력되는 8개의 중간값과 차례대로 더하여 갈로아체덧셈기(50)로 출력한다.
한편, 근 입력부(40)의 제1 다중화기(44)는 롬(42)에 저장되어 있는 ★코드 발생 다항식의 근(a0~a7)을 외부로부터 입력된 선택신호(81mux_se1)에 따라 다중화시켜 상기 갈로아체 곱셈기(50)로 출력한다.
그리고 상기 갈로아체 곱셈기(50)는 상기 제1 다중화기(44)를 통해 입력된 코드 발생 다항식 g(x)의 근(a0~a7)과 상기 갈로아체 덧셈기(30)에서 출력된 신호를 차례대로 곱하여 시프트 레지스터부(70)로 입력한다. 상기 시프트 레지스터부(70)는 상기 갈로아체 곱셈기(50)에서 출력된 중간값을 비트 클럭(bit_c1k)에 따라 시프트시켜 상기 갈로아체 덧셈기(30)로 입력한다.
즉, 첫 번째 비트 클럭(bit_c1k)에는 상기 시프트 레지스터부(70)의 레지스터(70-1)에 있는 값이 상기 갈로아체 덧셈기(30)로 입력되고, 두 번째 비트클럭 에는 레지스터(60-2)에 있는 값이 상기 갈로아체 덧셈기(30)로 입력되며, 이런식으로 8번째 비트 클럭에는 레지스터(70-8)에 저장되어 있는 값이 선택되어 출력되는 것이다. 그후, 다음 사이클에는 다시 레지스터?(70-1)에 있는 값이 선택되어 출력되는 것이다.
상기와 같은 본 발명의 1실시예에서는 1심볼 클럭 사이클이 8 비트 클럭사이클로 되는 비트 클럭을 이용하여 한 개의 신드롬 계산셀에서 8개의 신드롬(예컨대, S0~S7)을 계산하여 출력하는 구성에 대해서만 설명 및 도시화되어 있으나, 본 발명은 이에 한정되지 않고 1심볼 클럭의 사이클에 대해 2개 이상 비트 클럭 사이클 개수로 사용하기만 하면 된다.
예를 들어, 1심볼 클럭 사이클이 16비트 클럭 사이클로 되는 경우에는 제5도의 롬(42)에는 16개의 롬이 필요함과 더불어 레지스터부(70)의 레지스터가 16개 필요하게 되고, 1심볼 클럭 사이클이 36비트 클럭 사이클로 되는 경우에 제6도의 롬(42)에는 32개의 롬이 필요함과 더불어 레지스터부(70)의 레지스터가 32개 필요하게 되는 것이다.
상기와 같이, 1심볼 클럭 사이클이 되는 경우에는 필요한 신드롬 계산셀이(2t-1)/16개가 되고, 1심볼 클럭 사이클이 32비트 클럭 사이클이 되는 경우에는 필요한 신드롬 계산셀이(2t-1)/32개가 되는 것이다.
이때, 상기와 같이 신드롬 계산셀의 신드롬 계산 능력을 확장시키기 위해서는 갈로아체 곱셈기의 연산 속도가 상기 조건을 만족시킬수 있으면 된다.
따라서, 상기 1심볼 클럭 사이클에 해당하는 비트 클럭 사이클의 갯수는 상기와 같은 갈로아체 곱셈기의 연산 속도를 만족시키면서 수신 신호 r(x)에 따라 최적의 개수로 설계하면 된다.
이상에서 살펴본 바와 같이, 심볼클럭에 따라 입력되는 심볼을 비트클럭에 따라 연산되도록 하여 하드웨어 구조를 간단히 할 경우에 종래에는 다중화기와 역다중화기를 사용하여 코드 발생 다항식의 근과 이전 심볼에 대한 계산기 ★ 중간값)을 하나씩 선택하여 연산되도록 하였으나 본 발명의 신드롬 계산기는 시프트 레지스터를 이용하여 다중화기와 역다중화기를 제거하므로써 다중화기 및 역다중화기와 각 레지스터간에 요구되는 배선들을 간단하게 하여 반도체★로 구현시 공간을 적게 차지하도록 한 것이다.

Claims (2)

  1. 리드 솔로몬 부호화된 수신신호 r(x)의 수신심볼(ri)을 심볼클럭에 따라 순차적으로 입력받는 레지스터(11)와, 상기 레지스터(11)를 통해 입력된 수신 심볼 (ri)과 코드 발생 다항식 g(x)의 근(ai)을 연산하여 신드롬(Si)으 계산하는 다수개의 신드롬 계산셀(13)을 포함하여 구성된 리드 솔로몬 복호기의신드롬 계산장치에있어서, 상기 신드롬 계산셀(13)이, 상기 레지스터(11)를 통해 입력된 수신 심볼(ri)을 중간값과 비트 클럭 단위로 더하는 갈로아체 덧셈기(30)와 : 한 심볼 클럭 기간 동안에 다수개의 코드 발생 다항식 g(x)의 근(a0~a7)을 선택신호에 따라 출력하는 근 입력부(40) : 상기 갈로아체 덧셈기(30)의 출력과 상기 근 입력부(40)의 출력을 비트클럭단위로 곱하는 갈로아체 곱셈기(50) 및 : 상기 갈로아체 곱셈기(50)의 출력을 비트클럭에 따라 시프트하여 상기 갈로아체 덧셈기(30)로 제공하는 시프트 레지스터부(70)를 포함하여 구성된 것을 특징으로 하는 리드솔로몬 복호기의 신드롬 계산장치
  2. 제1항에 있어서, 상기 시프트 레지스터부(70)는, 다수개의 레지스터(70-1~70-8)가 직렬로 연결된 구조로 된 것을 특징으로 하는 리드 솔로몬 복호기의 신드롬 계산장치
KR1019960005445A 1996-02-28 1996-02-29 리드 솔로몬 복호기의 신드롬 계산장치 KR100212828B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1019960005445A KR100212828B1 (ko) 1996-02-29 1996-02-29 리드 솔로몬 복호기의 신드롬 계산장치
US08/755,580 US5805617A (en) 1996-02-28 1996-11-25 Apparatus for computing error correction syndromes
EP96308523A EP0793351A1 (en) 1996-02-28 1996-11-26 Apparatus for computing error correction syndromes
CN96120992A CN1158519A (zh) 1996-02-28 1996-12-03 用于计算纠错校正子的装置
JP8324097A JPH09247000A (ja) 1996-02-28 1996-12-04 エラー訂正用シンドローム計算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019960005445A KR100212828B1 (ko) 1996-02-29 1996-02-29 리드 솔로몬 복호기의 신드롬 계산장치

Publications (2)

Publication Number Publication Date
KR970063958A KR970063958A (ko) 1997-09-12
KR100212828B1 true KR100212828B1 (ko) 1999-08-02

Family

ID=19452303

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960005445A KR100212828B1 (ko) 1996-02-28 1996-02-29 리드 솔로몬 복호기의 신드롬 계산장치

Country Status (1)

Country Link
KR (1) KR100212828B1 (ko)

Also Published As

Publication number Publication date
KR970063958A (ko) 1997-09-12

Similar Documents

Publication Publication Date Title
KR19980033277A (ko) 리드-솔로몬 디코더용 갈로아 필드 승산기
KR100192795B1 (ko) 리드 솔로몬 복호기의 에러 위치 다항식 계산 장치
JPH07202723A (ja) デコーダ、これに使用するエラー探知シーケンス・ジェネレータおよびデコーディング方法
US6263471B1 (en) Method and apparatus for decoding an error correction code
US9337869B2 (en) Encoding and syndrome computing co-design circuit for BCH code and method for deciding the same
KR100212828B1 (ko) 리드 솔로몬 복호기의 신드롬 계산장치
EP1175015B1 (en) Decoding circuit and decoding method thereof
KR100747487B1 (ko) 리드-솔로몬 복호 장치 및 수정된 유클리드 알고리즘연산회로
JP3343857B2 (ja) 復号装置、演算装置およびこれらの方法
KR100212825B1 (ko) 리드 솔로몬 복호기의 신드롬 계산장치
KR100212829B1 (ko) 리드 솔로몬 복호기의 신드롬 계산장치
WO2006120691A1 (en) Galois field arithmetic unit for error detection and correction in processors
JP3241851B2 (ja) 誤り訂正復号装置
KR100212830B1 (ko) 리드 솔로몬 복호기의 신드롬 계산장치
KR100195749B1 (ko) 리드 솔로몬 복호기
KR100192790B1 (ko) 리드 솔로몬 복호기에서의 에러 평가 다항식의 계수계산장치
CN110741562B (zh) 向量信令码信道的流水线式前向纠错
KR100212826B1 (ko) 리드 솔로몬 복호기의 신드롬 계산장치
JP3812983B2 (ja) エラー評価多項式係数計算装置
US20050033791A1 (en) Single error Reed-Solomon decoder
Khan et al. Hardware implementation of shortened (48, 38) Reed Solomon forward error correcting code
KR100195739B1 (ko) 리드솔로몬 복호기의 에러 위치 다항식 평가 장치
KR100192788B1 (ko) 리드 솔로몬 복호기에서의 에러 평가 다항식의 계수계산장치
Lee A VLSI design of a high-speed Reed-Solomon decoder
KR100202945B1 (ko) 리드 솔로몬 복호기의 비트 에러율 측정 장치

Legal Events

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