KR100212827B1 - 리드 솔로몬 복호기의 다황식 평가 장치 - Google Patents

리드 솔로몬 복호기의 다황식 평가 장치 Download PDF

Info

Publication number
KR100212827B1
KR100212827B1 KR1019960005443A KR19960005443A KR100212827B1 KR 100212827 B1 KR100212827 B1 KR 100212827B1 KR 1019960005443 A KR1019960005443 A KR 1019960005443A KR 19960005443 A KR19960005443 A KR 19960005443A KR 100212827 B1 KR100212827 B1 KR 100212827B1
Authority
KR
South Korea
Prior art keywords
polynomial
output
evaluation
register
multiplier
Prior art date
Application number
KR1019960005443A
Other languages
English (en)
Other versions
KR970063957A (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 KR1019960005443A priority Critical patent/KR100212827B1/ko
Priority to US08/755,581 priority patent/US5751732A/en
Priority to EP96308522A priority patent/EP0793350A1/en
Priority to CN96120991A priority patent/CN1158518A/zh
Priority to JP8322950A priority patent/JPH09246999A/ja
Publication of KR970063957A publication Critical patent/KR970063957A/ko
Application granted granted Critical
Publication of KR100212827B1 publication Critical patent/KR100212827B1/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/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)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

본 발명은 리드 솔로몬 복호기의 다항식 평가 장치에 관한 것으로, 이 장치는 소정의 제1클럭(bit_clk)에 따라 동작되는 T개 메모리로 구성되어 T개의 평가항을 선입선출 형태로 제공하기 위한 선입선출 버퍼(130); 상기 j=0인 0번째 단계를 처리할 경우에는 '1'을 제공하고 1 내지 N-1번째 단계에서는 제2다중화 선택신호(mux-se12)에 따라 상기 선입선출 버퍼(130)의 출력에 대응하는 상기 유한체 GF(2m)의 원소(α-i)를 제공하기 위한 근입력수단(100); 상기 근입력수단(100)의 출력과 상기 선입선출 버퍼(130)의 출력을 유한체 GF(2m)상에서 순차적으로 곱하여 평가항을 제공하기 위한 곱셈기(110); 상기 곱셈기(110)의 출력을 누적적으로 가산하여 T항까지 누적되면 출력하는 누산수단; 제1다중화 선택신호(mux-se11)에 따라 초기화 단계에서는 상기 다항식(P(X))의 계수값을 선택하여 출력하고, j=0 내지 j=N-1을 처리하는 단계에서는 상기 곱셈기(110)의 출력을 선택하여 상기 선입선출 버퍼(130)에 제공하는 선택수단; 및 상기 누산수단의 출력을 상기 다항식(P(X))의 0차 항과 가산하기 위한 덧셈기(160)가 구비되어 초기화 단계에서 상기 다항식의 계수를 입력받아 상기 선입선출 버퍼에 저장한 후 상기 j=0 번째 단계부터 N-1번째 단계까지 순차적으로 동작하여 평가결과를 단계에 따라 순차적으로 출력한다.

Description

리드 솔로몬 복호기의 다항식 평가 장치
본 발명은 리드 솔로몬 부호기(Reed solomon encoder : RS encoder)에 의해 에러 정정 부호화(error correcting coding, error control coding : 이하 ECC라 칭함)된 데이터를 에러 정정 복호화하는 리드 솔로몬 복호기에 관한 것으로, 특히 에러 평가 다항식, 에러 위치 다항식 등과 같은 다항식의 변수에 갈로아체상의 원소인 코드 발생 다항식의 근을 대입하여 그 결과를 구하는 리드 솔로몬 복호기의 다항식 평가 장치에 관한 것이다.
일반적으로, 에러 정정 부호화(ECC)는 데이터를 통신 채널로 전송하거나 저장 매체에 저장하는 경우에 수신된 혹은 재생된 데이터에 존재하는 에러를 검출한 후 이를 정정하기 위한 기술에 관한 것으로, 에러를 검출하거나 정정하는데 사용되는 검사 비트를 메시지 혹은 정보 비트에 부가하는 것이다.
이러한 에러 정정 코드(ECC)의 역사는 샤논(Claude Shannon)이 1984년에 '모든 통신 채널은 C(bps)라고 하는 고유의 전송 용량을 갖고 있으며, 그 용량을 초과하지 않는 전송 속도 R(bps)로 데이터를 전송하는 통신 시스템을 구축하는 것은 에러 정정 부호를 이용하면 어떤 채널이고 가능하다'는 것을 수학적으로 증명하면서부터 시작되었다.
즉, 아주 좋은 성능의 채널을 구현하는 것 보다 다소 성능이 떨어지는 기존 채널을 사용하면서 에러 정정 부호를 사용하는 것이 더 경제적이라는 것이다.
그러나, 샤논(Claude Shannon)은 단지 그러한 에러 정정 코드가 존재한다는 것만을 증명하였을 뿐이며, 에러 정정 코드를 찾는 방법에 대해서는 언급하지 않았다.
이에 따라 에러 정정 코드를 찾기 위한 노력이 계속 진행되고 있으며, 이러한 연구 결과로서 현재까지 알려진 에러 정정 코드는 크게 블록 코드(block code)와 논블록 코드(nonblock code)로 나누어진다.
상기 블록 코드는 정보 시퀀스를 k개의 비트로 이루어진 블록으로 분리한 다음 블록 단위로 에러 정정 부호화 하는 것이며, 상기 논블록 코드는 정보 시퀀스 전체에 대해 에러 정정 부호화하는 것이다.
상기와 같은 블록 코드의 대표적인 예로는 BCH 코드(Bose and Ray-Chaudhuri and Hocquenghem code)와 리드 솔로몬 코드(RS code)를 들 수 있고, 논블록 코드의 대표적인 예로는 길쌈 부호(convolutional code)를 들 수 있다.
상기 BCH 코드는 사이클릭 코드(cyclic code)로서 갈로아체 GF(2m) 상에서 동작 된다.
사이클릭 코드란 선형 코드(liner code)의 어떤 선형 벡터를 사이클릭 시프트시키더라도 사이클릭 시프트된 선형 벡터가 상기 선형 코드의 선형 벡터인 선형 코드를 말한다.
따라서, BCH 코드는 다음 수학식 1과 같이 코드 발생 다항식 g(x)이 정해지면 피드백 시프트 레지스터를 이용하여 코드를 부호화할 수 있다.
이때, 상기 BCH 코드는 코드 발생 다항식 g(x)이 연속하는 2t개의 근을 가진다면 t비트의 에러를 정정할 수 있는 능력을 가진다.
한편, 리드 솔로몬 코드는 상기 BCH 코드의 넌바이너리(nonbinary) 코드로서 코드 발생 다항식이 상기 수학식 1과 같이 정해지면 t 심볼(symbols)의 에러를 정정 할 수 있다.
따라서, 현재 리드 솔로몬 코드는 통신 및 컴퓨터 기억 시스템 등에 폭 넓게 사용될 뿐만 아니라 재밍에 대항하기 위한 한 방법으로서 비밀 통신 시스템에서 사용되기도 한다.
이와 같은 리드 솔로몬 코드는 상기 BCH 코드와 마찬가지로 갈로아체 GF(2m)상에서 동작된다.
즉, 상기 갈로아체 GF(2m)는 2m개의 원소를 갖는 수체계(number system)로서, 이러한 수체계를 하드웨어로 구현하게 되면, 각 원소들이 모두 m개의 바이너리 디지트(digit)로 표현될 수 있으므로 디지털 구조에 효과적일 뿐만 아니라 오버 플로우(over flow)가 발생하지 않게 되는 것이다.
상기와 같이 갈로아체 GF(2m) 상의 코드를 가지는 리드 솔로몬 코드는 정보와 패리티(paritu)가 섞이지 않는 계통적 코드(systematic code)와 정보와 패리티(parity)가 섞이는 비계통적 코드(nonsystematic code)로 분류된다.
상기 계통적 코드는 정보와 패리티가 섞이지 않도록 우선 정보를 상위 바이트로 이동시킨 다음 에러 정정용 코드를 구하여 더한 것으로, 다음 수학식 2로부터 구해 진다.
상기 수학식 2에 있어서, 상기 c(x) 코드워드 다항식이고, i(x)는 정보 다항식이며, t(x)는 에러 정정용 패리티의 다항식이다.
즉, 정보와 패리티를 섞이지 않게 정보 i(x)를 xN-K차 만큼 상위 바이트로 이동시킨 다음를 만족하는 패리티 t(x)를 구한다.
그리고,을 만족하는 패리티 t(x)를 다음 수학식 3으로부터 구할 수 있다.
상기 수학식 3에 있어서 Rg (χ)[c(χ)]는 코드워드 다항식 c(χ)를 코드 발생 다항식 g(x)로 나눈 나머지값을 의미한다.
즉, 상기 패리티 t(x)를 구하기 위해서는 χN-Ki(χ)를 코드 발생 다항식 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)의 근 α0~ α2t-1을 차례대로 대입함으로써 전송중에 에러가 발생되었는지를 알 수 있는 것이다.
즉, 수신된 데이터 r(x)에 코드 발생 다항식 g(x)의 근 αi을 대입하여 수신된 데이터 r(x)가 0이 되면 전송중에 에러가 발생되지 않았다는 것을 의미하며, 수신된 데이터 r(x)에 코드 발생 다항식의 근 αi을 대입하여 수신된 데이터 r(x)가 0이 되지 않으면 i번째 위치 또는 i차에 발생하였다는 것을 의미한다.
2) 에러 위치 다항식 계산(finding error location)
Berlekamp-Massey 알고리즘 또는 Euclid 알고리즘으로부터 에러 위치 다항식의 계수를 계산한다.
상기 알고리즘에 의해 구해진 에러 위치 다항식을(x)라 하면 에러 정정 능력이 t인 리드 솔로몬 코드에서는 다음 수학식 8과 같이 최고 t차 이하의 다항식이 얻어진다.
3) 에러값 계산
상기 에러 위치 다항식(X)에 α-t을 대입하면 에러의 위치를 찾는다.
즉, 에러 위치 다항식(X)에 α-t을 대입하여 에러 위치 다항식(X)이 0이 되면 i번째 위치 또는 i차 에러가 발생된 것이다.
그리고, 에러 평가 다항식(X)은 다음 수학식 9로부터 구할 수 있다.
상기 수학식 9에서 S(X)는 신드롬 다항식이다.
이와 같이 에러 평가 다항식(X)을 구한 다음 다음 수학식 10으로부터 에러값 ei을 계산한다.
상기 수학식 10에서'(X)는 에러 위치 다항식(X)을 미분한 1차 도함수이다.
4) 에러 정정
상기와 같이 에러값을 구한 다음 다음 수학식 11을 이용하여 원래의 코드워드 다항식 c(x)를 구하는 것이다.
이때, 갈로아체 특성상 같은 값을 더하면 0이 되므로 e(x) + e(x) = 0 이 되는 것이다.
이상에서와 같이 에러 정정 과정에서는 자주 다항식 평가가 수행되는데, 다항식 평가란 다항식의 변수 X에 유한체의 원소를 대치시키는 것으로 예컨대, α-j에 대한 다항식 평가는 다항식의 변수 X에 α-j를 대입하는 것이다.
즉, 에러 평가 다항식(X)에 대한 다항식 평가를 예로 들어 설명하면 다음과 같다. 에러 평가 다항식(X)의 차수를 t라 하면 에러 평가 다항식(X)는 다음 수학식 12와 같이 표현된다.
상기와 같은 에러 평가 다항식(X)를 평가하기 위해서는 상기 X 대신에 갈로아체(GF(2m))상의 원소인 코드 발생 다항식 g(x)의 근 α01,....αN-1을 차례로 대입 하는 것이다.
따라서, α-j(여기서, j=0~N-1의 정수)를 대입한다고 가정하면 상기 수학식 12는 다음 수학식 13과 같이 표현될 수 있다.
상기 수학식 13으로 표현되는 다항식 평가를 수행하기 위한 종래의 다항식 평가 장치가 t=8인 경우에 제1도에 도시되어 있다.
즉, 제1도에 도시된 다항식 평가 장치는 Shao가 1988년 Oh the VLSI Design of Pipeline Reed-Solomon Decoder Using Systolic Arrays이란 제목으로 제안한 것으로서, 각 코드 발생 다항식의 근의 역수(α18)에 대해 다항식 평가를 진행하는 다수개의 다항식 평가 셀(10-1~10-8)과, 다항식(X)의 0차 계수 0가 저장되어 있는 롬(18) 및, 상기 각 다항식 평가 셀(10-1~10-8)에서 출력된 값과 상기 롬(18)에 저장되어 있는 다항식(X)의 0차 계수 0
그리고, 상기 각 다항식 평가 셀(10-1~10-8)은, 코드 발생 다항식의 근의 역수(α-j)가 저장되어 있는 롬(12-1~12-8)과, 상기 롬(12-1~12-8)에 저장된 코드 발생 다항식의 근의 역수(α-j)와 피드백된 값을 곱하여 출력하는 갈로아체 곱셈기(14-1~14-8) 및, 상기 갈로아체 곱셈기(14-1~14-8)에서 출력된 값은 심볼클럭(sym_clk)에 따라 래치시켜 상기 갈로아체 곱셈기(14-1~14-8)로 피드백시키는 레지스터(16-1~16-8)로 구성되어 있다.
이와 같이 구성되는 평가장치는 α-j에 대한 평가 결과인-j)를 j=0에서 N-1 순서로 클럭(여기서는 심볼클럭)주기당 하나씩 출력한다.
이러한 평가장치의 동작을 설명하기에 앞서 이해하기 쉽도록 상기 수학식 13을 t=8(즉, i=0~8)일 때, j=0, j=1, j=2, j=3 일 경우에 풀어보면 다음 표 1과 같다.
상기 표1을 살펴보면, 모든 평가 결과항에 i=0일 경우에 0차항에 계수 혹은 상수항 0
그리고 j=0일 경우에는 평가 계수만 가산한 후 출력하고, j=1에서 N-1까지는 αi를 반복적으로 곱해준 후 가산하여 출력하면 되는 것을 알 수 있다.
따라서, 상기 각 레지스터(161-1~16-8)는 평가 동작이 시작되기 전에 다항식(X)의 계수 ( 1~ 8)를 초기치로 갖고 있으며, αi를 저장하고 있는 각 메모리(12-1~12-8)는 심볼클럭에 따라 j=0인 0번째 단계를 시작할 경우에 '1'을 출력한 후, 1번째에서 N-1번째 단계를 처리할 경우에는 코드 발생 다항식의 근의 역수(α-l-8)를 각각 제공한다.
이를 좀더 자세히 단계별로 설명하면,0)를 평가하기 위한 0번째 단계에서 각 레지스터(16-1~16-8)에 저장된 다항식(X)의 계수( 1~ 8)가 곱셈기(14-1~14-8)를 거쳐 덧셈부(20)에 입력되고(이때 곱셈기에서는 계수는 '1'과 곱해져 입력된 계수가 그대로 출력됨), 덧셈부(20)에서는 곱셈기(14-1~14-8)의 각 출력과 메모리(18)의 출력을 합해 상기 표1의 j=0일 경우와 같이 0+ 1+ 2+ 3+ 4+ 5+ 6+ 7+ 8을 출력한다.
이어서1)를 평가하기 위한 1번째 단계에서 각 레지스터(16-1~16-8)에 저장된 다항식(X)의 계수( 1 8 -1 -8 1 -1 0 0 1 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8
이어서 2번째 내지 N-1번째 단계에서도 1단계와 유사한 방식으로 반복하여 처리 하므로써 에러 평가 다항식에 대한 다항식 평가가 처리되어 순차적으로 그 결과0),-1), ....,-N+1)를 얻을 수 있게 되는 것이다.
그러나, 상기와 같은 종래의 리드 솔로몬 복호기의 다항식 평가 장치는, 각 다항식 평가 셀마다 갈로아체(GF(2m)) 곱셈기가 사용됨에 따라 그 구조가 복잡할 뿐만 아니라 면적을 많이 차지하게 되어 초 대규모 집적회로(VLSI)로 구현하기 어려운 문제점이 있었다.
이러한 문제점을 해소하기 위하여 본 발명자가 특허출원제 96-5129 호로 출원한바 있는 다항식 평가 장치는, 갈로아체 곱셈기의 수를 줄임으로써, 그 구조를 간단히 할 뿐만 아니라 면적을 감소시키고자 하는 것이었다.
즉, 본 발명자가 선출원한 다항식 평가 장치의 다른 실시예는 제2도에 도시된 바와 같이, 코드 발생 다항식의 근의 역수(α-1-8)를 입력하는 입력부(30)와; 상기 입력부(30)에서 입력된 코드 발생 다항식의 각 근의 역수(α-1-8)와 피드백된 값을 곱하여 출력하는 갈로아체 곱셈기(35); 상기 갈로아체 곱셈기(35)에서 출력된 값 또는 초기값(에러 평가 다항식(X)의 계수( 1~ 8)를 선택적으로 출력하는 제1다중화기(40); 역다중화 선택신호(demux_sel)를 생성하여 출력하는 역다중화 선택신호 발생부(45); 상기 역다중화 선택신호 발생부(45)에서 출력된 역다중화 선택신호(demux_sel)에 따라 상기 제1다중화기(40)에서 출력된 값을 역다중화하여 출력하는 역다중화기(50); 상기 역다중화기(50)에서 역다중화되어 출력된 값들을 비트클럭(bit_clk)에 따라 래치시켜 출력하는 레지스터부(55); 상기 레지스터부(55)에서 출력된 값을 다중화하여 상기 갈로아체 곱셈기(35)로 피드백시키는 제2다중화기(60); 평가하고자 하는 다항식(에러 평가 다항식(X))의 0차 계수( 0)가 저장되어 있는 롬(65); 상기 레지스터부(55)에서 출력된 값과 상기 롬(65)에 저장되어 있는 값을 가산하여 출력하는 덧셈부(70) 및; 상기 덧셈부(70)에서 출력된 값을 심볼클럭(sym_clk)에 동기시켜 출력하는 출력부(75)를 포함하여 구성되어 있다.
즉, 제2도에 도시된 종래의 다항식 평가 장치는 심볼클럭보다 T배 빠른 비트클럭(bit_clk)를 사용하므로써 다항식 평가 셀에 사용되는 갈로아체 곱셈기의 수를 1/T로 줄이게 되는 것이다.
그러나 이러한 종래의 다항식 평가 장치는, 칩으로 구현시 면적을 많이 차지하는 곱셈기의 수를 줄이므로써 VLSI구현을 용이하게 하는 장점이 있으나, 병렬구조로 된 8개의 레지스터를 선택하기 위하여 다중화기와 역다중화기를 사용함에 따라 글로벌 라우팅(global routing)이 형성됨과 더불어 다수개의 갈로아체 덧셈기를 사용하므로, 그 구조가 상대적으로 복잡하고 면적을 많이 차지하게 되는 문제점이 있다.
따라서, 본 발명은 상기와 같은 문제점을 해소하기 위한 것으로, 구조가 더욱 간단하고 따라서 칩으로 구현시 적은 면적으로 구현 가능한 리드 솔로몬 복호기의 다항식 평가 장치를 제공하는데 그 목적이 있다.
이러한 목적을 달성하기 위한 본 발명에 따른 리드 솔로몬 복호기의 다항식 평가 장치는, 리드 솔로몬 복호기에서 사용되는 T차항의 다항식 P(X)을 j번째 단계에서 변수 X를 α-j로 대치함으로써 평가한 후 j번째 평가결과 P(α-j)를 순차적으로 제공하되, 상기 j가 0에서 N-1까지의 정수이고, i가 0에서 T까지이며 상기 α가 유한체 GF(2m)의 기본원소인, 다항식 평가 장치에 있어서, 소정의 제1클럭(bit_clk)에 따라 동작되는 T개 메모리로 구성되어 T개의 평가항을 선입선출 형태로 제공하기 위한 선입선출 버퍼; 상기 j=0인 0번째 단계를 처리할 겨우에는 '1'을 제공하고 1내지 N-1번째 단계에서는 제2다중화 선택신호(mux-sel2)에 따라 상기 선입선출 버퍼의 출력에 대응하는 상기 유한체 GF(2m)의 원소(α-i)를 제공하기 위한 근입력수단; 상기 근입력수단의 출력과 상기 선입선출 버퍼의 출력을 유한체 GF(2m)상에서 순차적으로 곱하여 평가항을 제공하기 위한 곱셈기; 상기 곱셈기의 출력을 누적적으로 가산하여 T항까지 누적되면 출력하는 누산수단; 제1다중화 선택신호(mux-sel1)에 따라 초기화 단계에서는 상기 다항식(P(X))의 계수값을 선택하여 출력하고, j=0 내지 j=N-1을 처리하는 단계에서는 상기 곱셈기의 출력을 선택하여 상기 선입선출 버퍼에 제공하는 선택수단; 및 상기 누산수단의 출력을 상기 다항식(P(X))의 0차 항과 가산하기 위한 덧셈기가 구비되어 초기화 단계에서 상기 다항식의 계수를 입력받아 상기 선입선출 버퍼에 저장한 후 상기 j=0 번째 단계부터 N-1번째 단계까지 순차적으로 동작하여 평가결과를 단계에 따라 순차적으로 출력하는 것을 특징으로 한다.
제1도는 종래의 리드 솔로몬 복호기의 다항식 평가 장치의 1 실시예의 회로도.
제2도는 종래의 리드 솔로몬 복호기의 다항식 평가 장치의 2 실시예의 회로도.
제3도는 본 발명에 따른 리드 솔로몬 복호기의 다항식 평가 장치의 회로도이다.
* 도면의 주요부분에 대한 부호의 설명
100 : 입력부 102 : 롬
104 : 제2다중화기 110 : 갈로아체 곱셈기
120 : 제1다중화기 130 : 시프트 레지스터부
140 : 제1갈로아체 덧셈기 150 : 제1레지스터
155 : 롬 160 : 제2갈로아체 덧셈기
170 : 출력부 172 : 논리곱 게이트
174 : 제 2 레지스터
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 자세히 설명한다.
제3도는 본 발명에 따른 리드 솔로몬 복호기의 다항식 평가 장치의 회로도로서, 종래기술에서 설명한 수학식 13에서 t=8일 경우 8차의 에러 평가 다항식을 평가하는 다항식 평가 장치를 예로 든 것이다(여기서, j=0 ~ N-1 이다).
먼저, 본 발명에 따른 다항식 평가 장치를 제2도에 도시된 종래의 다항식 평가 장치와 비교해보면, 종래의 레지스터부(제2도의 55)에서는 레지스터들이 병렬 구조로인데 반하여 본 발명의 시프트 레지스터부(130; 이하, 입력된 순서대로 한쪽 방향으로만 전달되므로 선입선출 버퍼라 한다)에서는 레지스터들이 서로 직렬 연결된 구조이고, 이에 따라 종래에 사용되던 다중화기(multiplexer)와 역다중화기(demultiplexer)가 필요없게 되어 있다.
따라서 모든 평가항들은 처음에는 제1레지스터(130-1)에 입력되어 한 비트 클럭동안 저장되었다가 다음 비트클럭의 상승에지에서 제1레지스터의 출력은 제2레지스터(130-2)로 저장되고, 제1레지스터(130-1)는 새로운 데이터를 입력받아 저장하며, 이어서 다음 비트클럭의 상승에지에서 제2레지스터(130-2)의 출력은 제3레지스터(130-3)에 저장되고, 제2레지스터(130-2)는 제1레지스터(130-1)의 출력을 저장하며, 제1레지스터(130-1)는 다시 새로운 입력을 받아 저장한다. 이와 같은 동작을 반복하여 8번의 비트클럭에 의해 제1레지스터(130-1)에서 제8레지스터(130-8)에 동일 단계에서 처리될 평가항들이 모두 저장된다.
또한 제2도에 도시된 종래의 덧셈부(70)가 덧셈연산을 한 번에 수행하는데 반하여, 본 발명에 따른 다항식 평가장치의 덧셈기(140)는 덧셈연산을 순차적으로 처리한다. 즉, 평가항들이 곱셈기(110)에서 덧셈기(140)로 한비트 클럭주기 당 하나씩 차례대로 제공되고, 이에 따라 2입력 덧셈기(140)는 곱셈기(110)로부터 입력되는 평가항과 레지스터(150)에 저장된 이전의 평가항을 합하여 그 결과를 다시 레지스터(150)에 저장한다. 이와 같이 레지스터(150)에는 덧셈기(140)에 의한 부분합을 저장하고 있다가 최종적으로 8개 항의 합이 계산되면 그 결과를 출력함과 아울러 리셋신호(reset)에 의해 0으로 리셋된다. 따라서 종래의 덧셈부(제2도의 70)가 8개의 레지스터 출력을 한 번에 처리하기 위하여 적어도 7개의 2입력 덧셈기를 사용한대 반하여, 본 발명에서는 하나의 2입력 덧셈기(140)만으로 덧셈연산을 처리할 수 있으므로 그 구조가 훨씬 간단해지고 칩으로 구현시 면적을 적게 차지하게 된다.
이와 같이 개선된 본 발명의 다항식 평가 장치는 제3도에 도시된 바와 같이, 코드 발생 다항식의 근의 역수(α-1-8)를 입력하는 입력부(100)와; 상기 코드 발생 다항식의 근의 역수(α-1-8)와 피드백된 값을 곱하여 출력하는 갈로아체 곱셈기(110); 제1다중화 선택신호(mux-sel1)에 따라 상기 갈로아체 곱셈기(110)에서 출력된 값 또는 초기값(init_val: 1~ 8)를 선택적으로 출력하는 제1다중화기(120); 상기 제1다중화기(120)에서 출력된 값을 비트클럭(bit_clk)에 따라 시프트시켜 상기 갈로아체 곱셈기(110)로 피드백시키는 선입선출 버퍼(130); 상기 갈로아체 곱셈기(110)에서 출력된 값을 피드백된 값과 더하여 출력하는 제1갈로아체 덧셈기(140); 상기 제1갈로아체 덧셈기(140)에서 출력된 값을 비트클럭에 따라 래치하여 상기 제1갈로아체 덧셈기(140)로 피드백시키는 레지스터(150); 평가하고자 하는 다항식의 0차 계수가 저장되어 있는 롬(155); 상기 레지스터(150)에서 출력된 값을 상기 롬(155)에 저장된 값과 더하여 출력하는 제2갈로아체 덧셈기(160) 및; 상기 제2갈로아체 덧셈기(160)에서 출력된 값을 심볼클럭(sym_clk)에 동기시켜 평가값(eval)으로서 출력하는 출력부(170)를 포함하여 구성되어 있다.
상기 입력부(100)는, 코드 발생 다항식의 근의 역수(α-1-8)들이 각각 저장되어 있는 다수개의 롬(102-1~102-8)과, 상기 롬(102-1~102-8)에 저장된 값을 제2다중화 선택신호(mux-sel2)에 따라 하나씩 선택하여 출력하는 제2다중화기(104)를 포함하여 구성되어 있다.
상기 선입선출 버퍼(130)는 직렬로 연결된 다수개의 레지스터(130-1~130-8)로 이루어져 있고, 상기 출력부(170)는, 비트클럭(bit_clk)과 심볼클럭(sym_clk)을 논리곱하여 출력하는 논리곱 게이트(172)와, 상기 논리곱 게이트(172)에서 출력된 클럭에 따라 상기 제2갈로아체 덧셈기(160)에서 출력된 값을 래치시켜 평가값(eval:-j))을 출력하는 제2레지스터(174)를 포함하여 구성되어 있다.
이어서, 상기와 같이 구성된 본 발명에 따른 장치의 동작을 상기 수학식 13에서 j=0에서 j=N-1까지 단계별로 상세히 설명하면 다음과 같다.
j=0일 때0)를 결정하는 평가절차의 0번째 단계를 시작하기에 앞서, 각 레지스터들은 1~ 8로 초기화된다. 이를 위해 초기화 단계에서 제1다중화기(120)로 입력되는 제1다중화 선택신호(mux-sel1)는 다중화기(120)가 초기값인 에러 평가 다항식의 계수( 1~ 8)를 선택하도록 하고, 이어서 초기화 단계가 지난 후 0 내지 N-1번째 단계를 수행하는 동안 제1다중화 선택신호(mux_sel1)는 다중화기(120)가 곱셈기(110)의 출력을 선택하도록 한다.
따라서 초기화 단계에서 다중화기(120)를 거쳐 입력된 에러 평가 다항식의 계수( 1~ 8)들이 해당 레지스터에 저장되게 되는데, 예컨대 제8레지스터(130-8)에는 계수 1이 저장되게 되고, 제7레지스터(130-7)에는 계수 2이 저장되게 되며, 순차적으로 제6레지스터(130-6)에서 제1레지스터(130-1)에 계수 3~ 8이 저장되게 된다.
이어서, j=0일 때0)를 결정하는 평가절차의 0번째 단계에서는 첫 번째 비트 클럭에서 곱셈기(110)가 제8레지스터(130-8)가 제공하는 계수 1을 근 입력부(100)로부터 입력되는 '1'과 곱하여 계수값을 그대로 출력하고, 이 곱셈기(110)의 출력은 덧셈기(140)로 입력되어 덧셈기(140)에서 레지스터(150)의 출력 0과 더헤진다.
이때 레지스터(150)는 j=0 내지 N-1 단계를 수행하는 동안 매 단계의 초기 혹은 이전단계의 마지막에 리셋되어 0을 출력한다. 그리고 근입력부(100)는 0번째 단계를 수행하는 동안에는 1을 제공하나 1번째 내지 N-1번째 단계를 수행하는 동안에는 α-1-8을 레지스터(130-8)의 출력 평가항의 차수에 상응하도록 순차적으로 출력한다. 예컨대, 제8레지스터(130-8)가 1차 계수( 1 -1 2 -2 i -1
또한, 덧셈기(140)의 출력은 두 번째 비트클럭의 상승에지에서 레지스터(150)에 저장되고, 곱셈기(110)의 출력도 다중화기(120)를 거쳐 두 번째 비트클럭의 상승에지에서 제1레지스터(130-1)에 저장되며, 이와 동시에 각 레지스터의 출력이 다른 레지스터에 입력 저장되게 된다.
이와 같이 0번째 단계의 두 번째 비트클럭 동안에 각 레지스터에 저장된 값을 나타내면 다음 표 2와 같다.
그리고 두 번째 비트클럭 주기에서 곱셈기(110)는 제8레지스터9130-8)가 출력하는 2와 근입력부(100)의 다중화기(104)가 출력하는 '1'을 곱한 후 그 결과를 출력하고, 덧셈기(104)는 이 곱셈기(110)의 출력과 레지스터(150)의 출력을 가산한 후 그 결과를 출력한다.
이어서 세 번째 클럭의 상승에지에서 레지스터(150)는 덧셈기(140)의 출력을 저장하고, 제1레지스터(130-1)는 곱셈기(110)의 출력을 다중화기(120)를 통해 입력 받아 저장하며, 레지스터들(130-1~130-8)도 다른 직렬 연결된 레지스터의 출력을 입력받아 저장한다.
이와 같이 0번째 단계의 세 번째 비트클럭 동안에 각 레지스터에 저장된 값을 나타내면 다음 표 3과 같다.
그리고 세 번째 비트클럭 주기에서 곱셈기(110)는 제8레지스터(130-8)가 출력하는 3
이어서 네 번째 클럭의 상승에지에서 레지스터(150)는 덧셈기(140)의 출력을 저장하고, 제1레지스터(130-1)는 곱셈기(110)의 출력을 다중화기(120)를 통해 입력받아 저장하며, 레지스터부(130)의 레지스터들도 다른 직렬 연결된 레지스터의 출력을 입력받아 저장한다.
동일한 방식으로 네 번째 내지 여덟 번째 비트에 대한 동작이 진행되며, 이러한 동작이 완료되고 나면 각 레지스터에는 초기화된 후와 동일하게 계수값이 저장되게 되고, 레지스터(150)의 출력이 메모리(155)에 저장된 0차 계수값( 0)과 더해져 최종적으로 α0에 대한 평가 결과인0)을 출력하게 된다. 이때 출력되는 평가값은 앞서 설명한 표1에서와 같이 t=8이고, j=0일 경우에 0+ 1+ 2+ 3+ 4+ 5+ 6+ 7+ 8이 된다.
한편, j=1일 때1)를 결정하는 평가절차의 1번째 단계에서는 첫 번째 비트클럭에서 곱셈기(110)가 제8레지스터(130-8)가 제공하는 계수 1을 근입력부(100)로부터 입력되는 α-1과 곱하여 그 결과 값 1x-1을 출력하고, 이 곱셈기(110)의 출력 1 -1
또한, 덧셈기(140)의 출력 1α-1은 두 번째 비트클럭의 상승에지에서 레지스터(150)에 저장되고, 곱셈기(110)의 출력 1α-1도 다중화기(120)를 거쳐 두 번째 비트클럭의 상승에지에서 제1레지스터(130-1)에 저장되며, 이와 동시에 각 레지스터의 출력이 다른 레지스터에 입력 저장되게 된다.
이상과 같이 0번째 단계에서 2번째 단계까지 각 비트클럭의 주기에 따라 각 레지스터에 저장되는 항들을 일괄적으로 정리하면 다음 표 4와 같다.
상기 표 4에 있어서, 각 열은 해당 레지스터를 나타내고, 행은 단계들을 처리하는 각 비트클럭에 해당된다.
한편, 입력부(100)의 제2다중화기(104)는 코드 발생 다항식의 근의 역수(α-1-8)이 각각 저장되어 있는 다수개의 롬(102-1~102-8)에 저장된 값을 제2다중화 선택신호(mux_sel2)에 따라 선택하여 갈로아체 곱셈기(110)로 출력한다.
그리고, 상기 갈로아체 곱셈기(110)는 상기 시프트 레지스터부(130)를 통해 입력된 값과 입력부(100)의 제2다중화기(104)에서 입력된 코드 발생 다항식의 근의 역수(α-1-8)를 곱하여 상기 제1다중화기(120) 및 제1갈로아체 덧셈기(140)로 각각 입력한다.
상기 제1갈로아체 덧셈기(140)는 상기 갈로아체 곱셈기(110)에서 출력된 값과 레지스터(150)에서 피드백된 값을 더하여 상기 레지스터(150)로 출력하고, 상기 레지스터(150)는 상기 제1갈로아체 덧셈기(140)에서 출력된 값을 비트클럭(bit_clk)에 따라 래치하여 상기 제1갈로아체 덧셈기(140)로 피드백시킴과 더불어 제2갈로아체 덧셈기(160)로 출력한다.
그리고, 상기 제2갈로아체 덧셈기(160)는 평가하고자 하는 다항식의 0차 계수( 0)가 저장되어 있는 롬(155)에 저장된 값과 상기 레지스터(150)에서 출력된 값을 더하여 출력부(170)의 레지스터(174)로 출력한다.
이때, 상기 출력부(170)의 레지스터(174)는 논리곱 게이트(172)에서 비트클럭(bit_clk)과 심볼클럭(sym_clk)을 논리곱한 클럭을 클럭단(clk)로 입력받아 이 클럭에 따라 상기 제2갈로아체 덧셈기(160)에서 출력된 값을 평가값(eval)으로 출력한다.
한편, 제1다중화기(120)로 입력되는 제1다중화 선택신호(mux_sel1)가 0의 값을 가지면, 상기 제1다중화기(120)는 상기 갈로아체 곱셈기(110)에서 출력된 값을 선택하여 시프트 레지스터부(130)로 출력한다.
상기 시프트 레지스터부(130)는 상기 제1다중화기(120)에서 입력된 값을 비트클럭(bit_clk)에 따라 시프트시켜 갈로아체 곱셈기(110)로 출력한다.
이와 같은 과정을 j=0에서 N-1단계까지 반복하여, 코드 발생 다항식의 각 계수(α-j)에 해당하는 평가값(eval;-j))을 구할 수 있는 것이다.
이상에서 살펴본 바와 같이, 심볼클럭에 따라 동작되는 종래의 다항식 평가 장치를 비트클럭에 따라 동작되도록 하여 갈로아체 곱셈기의 수를 줄일 때, 종래에는 레지스터의 입출력을 선택하기 위해 다중화기와 역다중화기가 사용되었으나 본 발명에 따른 다항식 평가 장치는 각 레지스터를 직렬로 연결한 후 비트클럭에 다라 시프트되도록 하여 다중화기와 역다중화기를 제거하므로써 구조가 더욱 간단해지는 효과가 있다.

Claims (9)

  1. 리드 솔로몬 복호기에서 사용되는 T차항의 다항식 P(X)을 j번째에서 변수 X를 α-j로 대치함으로써 평가한 후 j번째 평가결과 P(α-j)를 순차적으로 제공하되, 상기 j가 0에서 N-1까지의 정수이고, i가 0에서 T까지이며 상기 α가 유한체 GF(2m)의 기본원소인, 다항식 평가 장치에 있어서, 소정의 제1클럭(bit_clk)에 따라 동작되는 T개 메모리로 구성되어 T개의 평가항을 선입선출 형태로 제공하기 위한 선입선출 버퍼(130); 상기 j=0인 0번째를 처리할 경우에는 '1'을 제공하고 1 내지 N-1번째에서는 제2다중화 선택신호(mux-sel2)에 따라 상기 선입선출 버퍼(130)의 출력에 대응하는 상기 유한체 GF(2m)의 원소(α-i)를 제공하기 위한 근입력수단(100); 상기 근입력수단(100)의 출력과 상기 선입선출 버퍼(130)의 출력을 유한체 GF(2m)상에서 순차적으로 곱하여 평가항을 제공하기 위한 곱셈기(110); 상기 곱셈기(110)의 출력을 누적적으로 가산하여 T항까지 누적되면 출력하는 누산수단; 제1다중화 선택신호(mux-sel1)에 따라 초기화시에는 상기 다항식(P(X))의 계수값을 선택하여 출력하고, j=0 내지 j=N-1을 처리하는 경우에는 상기 곱셈기(110)의 출력을 선택하여 상기 선입선출 버퍼(130)에 제공하는 선택수단; 및 상기 누산수단의 출력을 상기 다항식(P(X))의 0차 항과 가산하기 위한 덧셈기(160)가 구비되어 초기화시에 상기 다항식의 계수를 입력받아 상기 선입선출 버퍼에 저장한 후 상기 j=0 번째부터 N-1번째까지 순차적으로 동작하여 평가결과를 순차적으로 출력하는 리드 솔로몬 복호기의 다항식 평가 장치.
  2. 제1항에 있어서, 상기 입력수단(100)은, 코드 발생 다항식의 근의 역수(α-i)가 구분되어 저장되어 있는 롬(102-1~102-8)과, 상기 롬(102-1~102-8)에 저장된 값을 다중화시켜 출력하는 제2다중화기(104)로 구성된 것을 특징으로 하는 리드 솔로몬 복호기의 다항식 평가 장치.
  3. 제1항에 있어서, 상기 선입선출 버퍼(130)는 직렬로 연결된 다수개의 레지스터(130-1~130-8)로 이루어진 것을 특징으로 하는 리드 솔로몬 복호기의 다항식 평가 장치.
  4. 제1항에 있어서, 상기 누산수단은 매 단계마다 리셋되며 제1클럭(bit_clk)에 따라 입력 데이터를 저장하는 레지스터(150)와, 상기 곱셈기(110)의 출력과 상기 레지스터(150)의 출력을 가산하여 상기 레지스터(150)로 출력하는 덧셈기(140)로 구성된 것을 특징으로 하는 리드 솔로몬 복호기의 다항식 평가 장치.
  5. 제1항에 있어서, 상기 다항식 평가 장치는 상기 다항식(P(X))의 0차 계수를 저장하기 위한 메모리(155)를 더 구비한 것을 특징으로 하는 리드 솔로몬 복호기의 다항식 평가 장치.
  6. 제1항에 있어서, 상기 선택수단은 다중화기(120)로 이루어진 것을 특징으로 하는 리드 솔로몬 복호기의 다항식 평가 장치.
  7. 제1항에 있어서, 상기 제2다중화 선택신호(mux-sel2)는 T=8일 경우에 순차적으로 저장된 8개의 근을 하나씩 지정하기 위한 3비트의 데이터인 것을 특징으로 하는 리드 솔로몬 복호기의 다항식 평가 장치.
  8. 제1항에 있어서, 상기 다항식 평가 장치는 상기 덧셈기(160)의 출력을 소정의 클럭에 따라 래치하여 단계별로 출력하도록 된 출력부(170)를 더 구비한 것을 특징으로 하는 리드 솔로몬 복호기의 다항식 평가 장치.
  9. 제8항에 있어서,상기 출력부(170)는, 제1클럭(bit_clk)과 제2클럭(sym_clk)을 논리곱하여 출력하는 논리곱 게이트(172)와, 상기 논리곱 게이트(172)에서 출력된 클럭에 따라 상기 덧셈기(160)에서 출력된 값을 래치시켜 평가값(eval)을 출력하는 레지스터(174)로 구성된 것을 특징으로 하는 리드 솔로몬 복호기의 다항식 평가 장치.
KR1019960005443A 1996-02-28 1996-02-29 리드 솔로몬 복호기의 다황식 평가 장치 KR100212827B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1019960005443A KR100212827B1 (ko) 1996-02-29 1996-02-29 리드 솔로몬 복호기의 다황식 평가 장치
US08/755,581 US5751732A (en) 1996-02-28 1996-11-25 Polynomial evaluator for use in a reed-solomon decoder
EP96308522A EP0793350A1 (en) 1996-02-28 1996-11-26 Polynomial evaluator for use in a reed-solomon decoder
CN96120991A CN1158518A (zh) 1996-02-28 1996-12-03 用在瑞得-所罗门解码器中的多项式求值器
JP8322950A JPH09246999A (ja) 1996-02-28 1996-12-03 エラー訂正向け多項式評価装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019960005443A KR100212827B1 (ko) 1996-02-29 1996-02-29 리드 솔로몬 복호기의 다황식 평가 장치

Publications (2)

Publication Number Publication Date
KR970063957A KR970063957A (ko) 1997-09-12
KR100212827B1 true KR100212827B1 (ko) 1999-08-02

Family

ID=19452300

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960005443A KR100212827B1 (ko) 1996-02-28 1996-02-29 리드 솔로몬 복호기의 다황식 평가 장치

Country Status (1)

Country Link
KR (1) KR100212827B1 (ko)

Also Published As

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

Similar Documents

Publication Publication Date Title
US8812940B2 (en) Programmable error correction capability for BCH codes
US6571368B1 (en) Systolic Reed-Solomon decoder
US5805617A (en) Apparatus for computing error correction syndromes
KR100192795B1 (ko) 리드 솔로몬 복호기의 에러 위치 다항식 계산 장치
JPH07202723A (ja) デコーダ、これに使用するエラー探知シーケンス・ジェネレータおよびデコーディング方法
US4488302A (en) Burst error correction using cyclic block codes
US6263471B1 (en) Method and apparatus for decoding an error correction code
KR100212827B1 (ko) 리드 솔로몬 복호기의 다황식 평가 장치
KR100192804B1 (ko) 리드 솔로몬 복호화기에서의 다항식 평가 장치
JP3812983B2 (ja) エラー評価多項式係数計算装置
KR100192792B1 (ko) 리드 솔로몬 복호기의 다항식 평가 장치
KR100212824B1 (ko) 리드 솔로몬 복호기의 다항식 평가 장치
KR100195749B1 (ko) 리드 솔로몬 복호기
KR100212825B1 (ko) 리드 솔로몬 복호기의 신드롬 계산장치
KR100192802B1 (ko) 리드 솔로몬 디코더의 에러값 계산 및 정정 장치
KR100212829B1 (ko) 리드 솔로몬 복호기의 신드롬 계산장치
KR100192788B1 (ko) 리드 솔로몬 복호기에서의 에러 평가 다항식의 계수계산장치
KR100192790B1 (ko) 리드 솔로몬 복호기에서의 에러 평가 다항식의 계수계산장치
KR100192803B1 (ko) 에러 정정 신드롬 계산 장치
KR100202949B1 (ko) 리드 솔로몬 디코더의 에러 정정 시스템
KR100215570B1 (ko) 고화질 텔레비젼용 리드 솔로몬 디코더
KR100212830B1 (ko) 리드 솔로몬 복호기의 신드롬 계산장치
Lee et al. An efficient recursive cell architecture of modified Euclid's algorithm for decoding Reed-Solomon codes
KR100212828B1 (ko) 리드 솔로몬 복호기의 신드롬 계산장치
KR930011573B1 (ko) 2중 오류정정이 가능한 bch 코덱(codec)

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