KR101619049B1 - 병렬 bch 디코더 - Google Patents

병렬 bch 디코더 Download PDF

Info

Publication number
KR101619049B1
KR101619049B1 KR1020150071641A KR20150071641A KR101619049B1 KR 101619049 B1 KR101619049 B1 KR 101619049B1 KR 1020150071641 A KR1020150071641 A KR 1020150071641A KR 20150071641 A KR20150071641 A KR 20150071641A KR 101619049 B1 KR101619049 B1 KR 101619049B1
Authority
KR
South Korea
Prior art keywords
parallel
error
bch
lfsr
syndrome
Prior art date
Application number
KR1020150071641A
Other languages
English (en)
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 KR1020150071641A priority Critical patent/KR101619049B1/ko
Application granted granted Critical
Publication of KR101619049B1 publication Critical patent/KR101619049B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/159Remainder calculation, e.g. for encoding and syndrome calculation
    • H03M13/1595Parallel or block-wise remainder calculation
    • 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/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance

Landscapes

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

Abstract

신드롬 생성기와 치엔 검색기를 동시에 바이트 단위로 처리하는 병렬구조로 항므로써 처리 속도를 높인 병렬 BCH 디코더에 관한 것이다.
병렬 BCH 디코더는
엘에프에스알(LFSR, Linear Feedback Shift Register) 구조를 사용한 병렬 연산을 수행하여 바이트 단위로 전송되는 메시지로부터 신드롬 값들을 산출하는 병렬 신드롬 생성기;
상기 신드롬 값들을 이용하여 오류 위치 방정식을 추출하는 키 방정식 솔버(Key equation solver);
상기 오류 위치 방정식을 사용하여 오류 위치를 검출하되 바이트 단위로 병렬화를 수행하는 병렬 치엔 검색기; 및
상기 병렬 치엔 검색기에서 찾아진 오류 위치에 기초하여 수신된 메시지의 오류를 수정하는 오류 수정부;를 포함한다.

Description

병렬 BCH 디코더 {Parallel BCH decoder}
본 발명은 BCH(Bose-Chaudhuri and Hochquenghem) 디코더에 관한 것으로서 더욱 상세하게는 신드롬 생성기와 치엔 검색기를 동시에 바이트 단위로 처리하는 병렬구조로 함으로서 처리 속도를 높인 병렬 BCH 디코더에 관한 것이다.
BCH (Bose-Chaudhuri and Hochquenghem) 코드는 여러 개의 랜덤 에러 수정에 널리 사용되는 오류 정정 부호이다. BCH (Bose-Chaudhuri-Hocquenghem) 코드는 전송 코드에 패리티 비트를 삽입하여, 전송시 랜덤 에러가 발생하였을 때 메시지 비트와 패리티 비트를 이용하여 오류 검출 및 수정을 수행한다.
BCH(n,k)에서 n은 코드길이를 나타내고 k는 메시지비트의 길이를 의미한다. 코드 길이2m- 1으로 정해지고 n-k가 패리티비트의 길이가 된다.
도 1은 일반적인 BCH 디코더의 구조를 도시한다.
전체 BCH 시스템은 크게 인코더와 디코더로 나뉘며, 인코더에서는 LFSR(linear feedback shift register)을 이용하여 BCH 코드를 생성한다. 인코더에서 생성된 BCH 코드는 전송선로를 통해 전송된 후 도 1에 도시된 바의 BCH 디코더의 입력으로 들어간다.
도 1에 도시된 종래의 BCH 디코더는 수신된 메시지 Rx를 신드롬 생성기(102), 키 방정식 솔버(Key equation solver, 104), 치엔 검색기(Chien Search, 106), 오류 수정부(108)의 순서로 처리하여 오류위치를 찾고, 이를 수정한다. 키 방정식 솔버(104)는 오류위치를 찾는 방정식을 생성하며, 이 방정식의 해가 오류 위치가 된다.
일반적인 BCH 디코더는 디코딩 과정 동안 신드롬 생성기(102) 와 치엔 검색기(104)의 연산 과정에서 한 비트씩 직렬로 처리하기 때문에 처리 속도가 늦다.
도 2는 오류정정 코드가 내장된 NAND 플래쉬 메모리 구조를 나타낸다.
일반적인 메모리의 경우 바이트 단위로 데이터를 전송한다. 플래쉬 메모리는 휴대폰, mp3, 디지털카메라 및 내비게이션 등의 휴대기기의 시장이 확대됨에 따라 사용량이 급증하고 있다. 플래쉬 메모리의 저장 데이터의 양이 증가함에 따라서 저장된 정보에 대한 오류 수정의 필요성도 증가되고 있다.
NAND 타입 플래쉬 메모리는 크게 SLC (single-level cell)과 MLC (multi-level cell) 타입의 2가지 방식이 있다. SLC 타입의 경우, 기존 직렬 방식의 BCH 코드를 이용하여 오류 탐색 및 오류 정정이 가능하다. 그러나 최근 많이 이용되는 MCL 타입 플래쉬 메모리는 하나의 메모리 셀에 두 비트 이상이 저장되기 때문에 문턱 전압의 마진이 줄어 데이터의 오류 발생 확률이 높아진다. 이에 따라, MCL 타입 플래쉬 메모리는 에러 정정을 위해 병렬 특히 바이트 단위로 연산하는 BCH 디코더가 필요하다.
Shortened BCH는 기호로 BCH(n,k,t)로 표기되며 코드 길이는 n=N-[k-m*t](N=Zero sequence), 메시지 길이는 k=n-m*t 오류 정정 가능 비트 수는 t로 표기된다.
신드롬 생성기는 BCH 인코더에서 GF(2m)의 유한체를 사용하여 수신된 메시지 R(x)로부터 수식(1)과 같이 부호어 C(x)를 추출한다. 원시 다항식 P(x)의 두 최소공배수인 m1 및 m3를 구하여 전송된 부호어 R(x)를 나눈 나머지인 r1(x) 및 r2(x)은 식 (5)의 S1 S2 값의 신드롬 값을 생성하는 데 사용된다. 신드롬 값은 부호어 C(x) 에 오류가 없을 경우에는 '0'이 되고, 오류가 있을 경우에는 오류의 위치 정보가 포함되어 있는 값을 추출하게 된다.
Figure 112015049302435-pat00001
Figure 112015049302435-pat00002
Figure 112015049302435-pat00003
Figure 112015049302435-pat00004
Figure 112015049302435-pat00005

전술한 바와 같이, 일반적인 BCH 디코더는 디코딩 과정 동안 신드롬 생성기(102) 와 치엔 검색기(104)의 연산 과정에서 한 비트씩 직렬로 처리한다.
이는, 예를 들어, BCH(4122,4096,2) 신드롬 값을 추출하기 위해서는, n=4122 만큼의 클럭이 필요하다는 것을 의미한다. 신드롬 생성기는 BCH의 디코더 중에서 연산 시간이 많이 소모되는 블록이므로 만약 신드롬 생성기의 연산 성능을 향상한다면 BCH 디코더의 성능을 향상시킬 수 있다.
신드롬 생성기는 일반적으로 도 3 및 도 4에 나타낸 것처럼 LFSR 구조 혹은 도 5에 나타낸 것처럼 GFM (Galois field multiplier) 구조로 설계된다.
도 3은 S1을 생성하기 위한 LFSR 기반의 직렬 비트 신드롬 생성기(LFSR based bit-serial syndrome generator for S1)을 도시한다.
도 4는 S3를 생성하기 위한 LFSR 기반의 직렬 비트 신드롬 생성기 (LFSR based bit-serial syndrome generator for S3)을 도시한다.
도 5는 GFM 기반의 직렬 비트 신드롬 생성기(GFM based bit-serial syndrome generator)을 도시한다.
또한, 기존 GFM 기반의 병렬 신드롬 생성기의 경우 병렬 계수가 높을수록. 임계 경로 지연이 증가되는 문제가 발생된다. 이는 회로의 연산 속도가 저하되는 것이 주 원인이 된다.
키 방정식 솔버는 두 개의 신드롬 값 S1과 S3을 이용하여 에러의 위치 값을 알 수 있는 오류 위치 방정식 원소 Λj (j=0,1,2,3,..,t)을 추출하게 되며 이 값을 사용하여 치엔 검색기에서 오류 위치 방정식 Λ(x)을 사용하여 오류 위치를 검출하고 오류 정정하게 된다. Λj 을 추출하기 위해서 BCH(4122,4096,2)에서는 IFBM 알고리즘 수식(6)이 사용된다 .
Figure 112015049302435-pat00006
수식(6)의 계산을 위해서는 도 6과 같이 S1과 S3의 곱셈 연산을 하기 위해 곱셈기와 가산기가 필요하다
도 6은 BCH (4122,4096,2) IFBM 알고리즘을 도시한다.
치엔 검색기 연산 과정은 키 방정식 솔버에서 추출된 Λj(j=0,1,2,3,..,t)와 수식(6)의 에러 위치 방정식을 이용하여 오류 위치 검출 및 정정을 수행하게 된다. 연산 과정은 GF(2m)의 원소인 αi(i=0,1,..,n-1)을 오류 위치 방정식 Λ(x)에 대입하여 수식 (7)과 수식 (8)을 이용하여 근을 찾는 과정을 통하여 수행 된다.
Figure 112015049302435-pat00007
Figure 112015049302435-pat00008
수식(7)은 일반적인 오류위치 방정식이며 BCH (4122,4096,2)의 에러 위치 방정식은 수식(8)로 나타낼 수 있다. GF(213)의 원소 Λi(0≤i≤4121)을 수식(8)에 대입하여 오류 위치를 찾으면 '1'이 출력이 되고 그 외에는 '0'이 출력이 된다.
도 7은 일반적인 GFM-based serial 치엔 검색기를 도시한다.
도 7에 도시된 바와 같은 GFM-based serial 치엔 검색기를 구현하기 위해서는 곱셈 연산을 위한 FFM (finite field multiplier)과 덧셈 연산을 위한 FFA (finite field adder)이 필요하다. 연산에는 n=4122 만큼의 클럭이 소모되어 신드롬 생성기와 함께 BCH 디코더에서 연산 시간이 가장 긴 블록이다. 그러므로 신드롬 생성기와 치엔 검색기의 병렬 연산은 BCH 디코더의 연산 성능 향상에 필수적이다.
본 발명은 상기의 문제점을 해결하기 위하여 고안된 것으로서, 신드롬 생성기와 치엔 검색기를 동시에 바이트 단위로 처리하는 병렬구조를 제안하여 처리 속도를 높인 LFSR 기반의 병렬 BCH 디코더를 제공하는 것을 그 목적으로 한다.
상기의 목적을 달성하는 본 발명에 따른 엘에프에스알(LFSR, Linear Feedback Shift Register) 기반의 병렬 비씨에이치(BCH) 디코더는
엘에프에스알(LFSR, Linear Feedback Shift Register) 구조를 사용한 병렬 연산을 수행하여 바이트 단위로 전송되는 메시지로부터 신드롬 값들을 산출하는 병렬 신드롬 생성기;
상기 신드롬 값들을 이용하여 오류 위치 방정식을 추출하는 키 방정식 솔버(Key equation solver);
상기 오류 위치 방정식을 사용하여 오류 위치를 검출하되 바이트 단위로 병렬화를 수행하는 병렬 치엔 검색기; 및
상기 병렬 치엔 검색기에서 찾아진 오류 위치에 기초하여 수신된 메시지의 오류를 수정하는 오류 수정부;를 포함하는 것을 특징으로 한다.
상기 비씨에이치(BCH) 디코더는 전송메시지의 오류정정을 위한 패리티비트를 포함한 수신된 코드워드의 전체 길이(n), 순수하게 전송하고자 하는 메시지의 길이(k≤2m-1), 오류 정정 능력(t)를 가지고,
여기서,
n=k+mt의 식을 만족하고, k=n-mt는 전송 메시지의 오류정정을 위한 패리티비트의 크기를 나타내며,
m, k, t는 양의 정수이고,
신드롬(Synthrome) S1(x), S3(x)는
Figure 112016038235260-pat00009
이고,
여기서,
r은 수신된 코드워드이고
ri는 i번째 수신된 코드워드 비트이고,
α는 오류정정을 위한 최소다항식의 근이고,
αi는 최소다항식중 mi(x)의 근이고,
S1의 특성 방정식은
Figure 112015049302435-pat00010
이고,
S3의 특성 방정식은
Figure 112015049302435-pat00011
인 것을 특징으로 한다.
여기서, BCH 디코더는 BCH(4122,4096,2)이고,
상기 병렬 치엔 검색기는 상기 키 방정식 솔버의 두 출력, Λ1과 Λ2를 입력받아 각각 Λ. .Λp 그리고 Λ2. . Λ2p 까지 병렬로 곱셈연산을 수행하며,
그룹 매칭 (group matching) 방식을 사용하여 중복 입력을 갖는 곱셈기들이 제거된 것임을 특징으로 한다.
상기의 목적을 달성하는 본 발명에 따른 LFSR 기반의 병렬 BCH 디코더는 직렬 입력을 채택한 BCH 디코더보다 동작 속도를 향상시키고, 병렬 구조 채택에 따른 회로 크기 증가를 줄일 수 있도록 한다.
본 발명에 따른 신드롬 생성기와 치엔 검색기는 바이트 단위의 병렬 구조를 채택함으로써 기존 bit-serial 방식에 비해 BCH 디코더의 동작 속도를 향상시키는 효과를 갖는다.
본 발명에 따른 신드롬 생성기는 GFM 기반이 아닌 LFSR 기반으로 병렬 구조를 구성함으로써, 회로 크기 증가율을 크게 감소시키는 효과를 갖는다. 기존 GFM 기반의 병렬 구조와 비교하여 클럭 사이클의 수는 동일하게 감소시켰으나, 오히려 블록 내의 임계 경로의 크기를 줄임으로써 고속의 클럭을 사용함으로써, 동작 속도를 최대 43% 향상시켰다.
또한, 본 발명에 따른 치엔 검색기는 병렬화를 수행한 후, 중복된 입력을 갖는 곱셈기를 공유하는 그룹 매칭 기법을 적용하여 이를 적용하지 않은 회로에 비해 회로 크기를 최대 67% 감소시키는 효과를 갖는다.
도 1은 일반적인 BCH 디코더의 구조를 도시한다.
도 2는 오류정정 코드가 내장된 MLC 타입의 NAND 플래쉬 메모리 구조를 나타낸다.
도 3은 S1을 생성하기 위한 LFSR 기반의 직렬 비트 신드롬 생성기(LFSR based bit-serial syndrome generator for S1)을 도시한다.
도 4는 S3를 생성하기 위한 LFSR 기반의 직렬 비트 신드롬 생성기 (LFSR based bit-serial syndrome generator for S3)을 도시한다.
도 5는 GFM 기반의 직렬 비트 신드롬 생성기(GFM based bit-serial syndrome generator)을 도시한다.
도 6은 BCH (4122,4096,2) IFBM algorithm을 도시한다.
도 7은 일반적인 GFM-based serial 치엔 검색기를 도시한다.
도 8은 본 발명에 따른 BCH 디코더의 구성을 도시한다.
도 9는 GFM 기반의 병렬 신드롬 생성기 블록도이다.
도 10은 S1을 생성하기 위한 LFSR 기반의 병렬 신드롬 생성기의 특성 방정식( The characteristic equations of a LFSR based Syndrome generator for S1)를 도시한다.
도 11은 S3을 생성하기 위한 LFSR 기반의 병렬 신드롬 생성기의 특성 방정식( The characteristic equations of a LFSR based Syndrome generator for S3)를 도시한다.
도 12는 본 발명에 따른 8-parallel LFSR-based syndrome generator for S1을 도시한다.
도 13은 본 발명에 따른 8-parallel LFSR-based syndrome generator for S3를 도시한다.
도 14는 일반적인 GFM 기반 p-parallel Chien 검색기의 구성을 나타낸다.
도 15는 α2 및 α4 multiplier of redundant operation를 도시한다.
도 16은 α4 multiplier of redundant operation를 도시한다.
도 17은 α4 multiplier를 도시한다.
도 18은 본 발명에 따른 8-parallel Chien 검색기의 구성을 도시한 것으로서, 바이트 단위로 병렬화한 Chien 검색기의 예시를 나타낸다.
도 19는 일반적인 bit-serial 방식으로 구현된 신드롬 생성기와, 병렬 계수가 2, 4, 그리고 8인 경우의 신드롬 생성기의 동작 실험을 보인다.
이하 첨부된 도면을 참조하여 본 발명의 구성 및 동작을 상세히 설명하기로 한다.
본 발명에서는 Long-BCH코드 (8191, 8165)를 짧게 구성한 Shortened BCH (4122,4096,2)의 병렬 디코더 구조를 제안하였다. 코드 길이는 4,122비트이고 메시지비트 길이는 4,096비트, 패리티비트 길이는 26비트로 구성되어 있고 2개까지 오류수정이 가능하다.
본 발명에 따른 신드롬 생성기와 치엔 검색기는 바이트 단위의 병렬 구조를 채택함으로써 기존 비트 단위의 직렬 방식(bit-serial 방식)에 비해 BCH 디코더의 동작 속도를 향상시킨다.
본 발명에서는 키 방정식 솔버를 위해 IFBM (inverse-free berlekamp-massey) 알고리즘을 사용하였다. 본 발명에 따른 병렬 치엔 검색기는 오류위치를 찾는 방정식에 값을 대입하여 해를 찾게 된다.
한편, 본 발명에 따른 병렬 치엔 검색기는 그룹 매칭 (group matching) 방식을 사용하여 바이트 단위로 병렬화를 구현하였다. 이를 통해 도 7에 나타낸 일반적인 GFM 방식의 Chien 검색기보다 속도와 회로의 크기를 최적화시켰다.
도 8은 본 발명에 따른 BCH 디코더의 구성을 도시한다.
도 8에 도시된 본 발명에 따른 BCH 디코더(800)는 병렬 신드롬 생성기(802), 키 방정식 솔버(804), 병렬 치엔 검색기(806), 오류 수정부(808)의 순서로 처리하여 오류위치를 찾고, 이를 수정한다. 키 방정식 솔버(804)는 오류위치를 찾는 방정식을 생성하며, 이 방정식의 해가 오류 위치가 된다. 수신받은 부호어 Rx는 LFSR(810)에 저장되어 병렬 치엔 검색기(806)와 XOR 연산을 통하여 오류의 위치가 정정된 데이터를 출력한다.
본 발명에 따른 BCH 디코더(800)에 있어서 병렬 신드롬 생성기(802)로의 입력은 p비트(예를 들어, 8bit)가 된다. 또한, 키 방정식 솔버(804)의 출력은 동일하나, 병렬 치엔 검색기(806)의 구조가 병렬로 처리할 수 있어, 병렬 출력을 갖게 된다. 따라서 신드롬 생성기의 입력 비트 수와 회로 구조, 그리고 치엔 검색기의 구조가 일반적인 직렬 혹은 병렬 BCH 디코더와 다르다.
도 9는 GFM 기반의 병렬 신드롬 생성기 블록도이다.
GFM 기반의 병렬 신드롬 생성기의 경우 병렬 계수가 높을수록. 임계 경로 지연이 증가되는 문제가 발생된다. 이는 회로의 연산 속도가 저하되는 것이 주원인이 된다.
이를 해결하기 위하여 본 발명의 병렬 신드롬 연산기(802)에서는 LFSR구조를 사용한 병렬 연산 방법을 제안하였다. LFSR 구조를 사용하여 병렬화를 할 경우 입력 단자의 개수를 증가시켜, 병목 현상을 줄일 수 있다.
도 10은 S1을 생성하기 위한 LFSR 기반의 병렬 신드롬 생성기의 특성 방정식( The characteristic equations of a LFSR based Syndrome generator for S1)를 도시한다.
도 11은 S3을 생성하기 위한 LFSR 기반의 병렬 신드롬 생성기의 특성 방정식( The characteristic equations of a LFSR based Syndrome generator for S3)를 도시한다.
또한, 도 11은 바이트 단위로 병렬화를 할 때 시간 t와 각 레지스터 위치에 따른 순환값을 나타낸다. 각 레지스터(Di)는 시간 t가 1씩 증가할 때마다 각 레지스터의 내부의 값이 서로 순환하게 되며 코드 길이인 4,122 동안 순환하여 S3을 생성한다.
이를 이용하여 도 12과 도 13에 나타낸 것처럼 S1과 S3을 위한 바이트 단위의 병렬 신드롬 생성기 회로를 구현할 수 있다.
이와 같이 직렬 연결 형태로 신드롬 생성기를 구성할 경우, 신드롬 생성기의 병렬 계수가 높아져도 회로를 구성하는 레지스터의 개수는 변하지 않으며 XOR의 갯수만 증가한다. 따라서, 병렬 계수 증가에 따른 회로 크기 증가가 적다. 또한 각 출력은 각각의 레지스터에서 출력되므로 결론적으로 GFM의 병목 현상을 제거할 수 있다.
도 12는 본 발명에 따른 8비트-parallel LFSR-based syndrome generator for S1을 도시한다.
도 13은 본 발명에 따른 8비트-parallel LFSR-based syndrome generator for S3를 도시한다.
도 14는 일반적인 GFM 기반 p비트-parallel Chien 검색기의 구성을 나타낸다. 도 14에 도시된 GFM 기반 p-parallel Chien 검색기의 경우, 병렬 계수가 높아질수록 회로의 크기와 임계 경로 지연시간이 지속적으로 증가하는 문제점이 있다. 이를 해결하기 위하여 중복 연산을 제거하여 회로의 크기와 게이트 레벨을 줄이는 best matching 기법이 주로 사용된다. 이를 통해, 회로 크기가 작고 동작 속도가 빠른 바이트 단위 연산의 병렬 치엔 검색기 회로를 설계할 수 있다.
도 14에 나타낸 것처럼, GFM 기반의 p비트-병렬 치엔 검색기는 키 방정식 솔버의 두 출력, Λ1과 Λ2를 입력받아 오류 위치 방정식 Λ2 2t1 t+1의 해를 고속으로 계산하기 위하여 각각 αt를 αp|(1≤p≤8) 그리고 α2t를 α2p|(1≤p≤8) 형태로 병렬 곱셈연산을 수행하여 병렬 오류 위치 방정식 Λ2 2pt1 pt+1|(1≤p≤8) 의 해를 연산한다. 8비트-parallel(p=8)로 병렬 오류 위치 방정식을 연산하기 위해서는 Λ1 pt|(p=8)를 연산하기 위해서 αt2345678의 8개의 곱셈기 α1 2pt|(p=8)를 연산하기 위해서 α246810121416의 8개의 곱셈기 각각 필요하다. 이 곱셈기들 간에는 중복되는 연산이 발생된다.
도 15는 α2 및 α4 multiplier of redundant operation를 도시한다.
도 16은 α4 multiplier of redundant operation를 도시한다.
도 17은 α4 multiplier를 도시한다.
도 16, 17의 Di(t)는 시간 t 일때의 레지스터의 저장 된 값이다.
도 15는 중복된 입력의 예로, α2과 α4 곱셈기의 중복 입력을 나타낸다. 중복된 입력을 갖는 곱셈기는 상호 공유함으로써 회로 크기를 줄일 수 있다. 이를 일반적으로 그룹 매칭 기법이라 하며, GMHi로 표기한다.
마찬가지 방법으로, 중복된 입력을 갖는 α4 곱셈기에 적용하면 도 16과 같이 표현된다. 만일 중복 입력을 제거하지 않는다면 도 17과 같이 표현될 수 있다. 도 16과 도 1을 비교하면, 전체 회로에서 중복 입력을 갖는 곱셈기들을 제거하면서, 병렬 치엔 검색기를 구성한다면 회로 크기를 줄일 수 있음을 확인할 수 있다.
결국, 그룹 매칭 기법을 이용하여 중복 입력을 갖는 곱셈기들을 제거할 경우, 치엔 검색기의 병렬 계수를 증가시킬수록 그룹 매칭 기법을 적용하지 않은 방법에 비해 회로 크기를 큰 폭으로 줄일 수 있다.
도 18은 본 발명에 따른 8-parallel Chien 검색기의 구성을 도시한 것으로서, 바이트 단위로 병렬화한 Chien 검색기의 예시를 나타낸다.
도 14에 제시된 일반적인 GFM 기반의 p-parallel Chien 검색기 회로의 경우 도 17에 제시된 수식을 이용하여 구성된다. 이는 병렬 계수가 증가할수록 회로 크기가 급격히 커지는 단점을 갖는다. 도 15에 제시된 것처럼 병렬 Chien 검색기 수식중 중복된 연산을 수행하는 회로를 도 16에 제시된 것처럼 공유하여 도 18에 제시된 회로로 구성한다면 병렬 회로의 크기를 줄일 수 있고, 속도 향상이 가능해진다.
본 발명에 따른 BCH 디코더는 Xilinx FPGA xc7z020-1clg484환경에서 VHDL 코딩을 통하여 검증하였다. BCH 디코더의 신드롬 생성기 및 Chien 검색기는 반복적인 연산을 수행하기 때문에 bit-serial 방식으로 연산할 경우 긴 연산시간이 소요된다. 그러나 병렬 계수 P가 증가함에 따라 연산속도가 증가하고 회로 크기는 증가한다.
도 19는 일반적인 bit-serial 방식으로 구현된 신드롬 생성기와, 병렬 계수가 2, 4, 그리고 8인 경우의 신드롬 생성기의 동작 실험을 보인다.
도 19에 보여지는 바와 같이, 병렬 계수 P가 증가할수록 기존 bit-serial 방식에 비해 연산에 필요한 클럭의 수가 1/P배로 감소함을 확인할 수 있다. 따라서 기존 bit-serial 방식으로 구동되는 신드롬 생성기의 소요 클럭 수에 비해, 바이트 단위로 병렬화된 신드롬 생성기는 1/8배의 클럭만을 필요로 한다.
신드롬 생성기뿐만 아니라 Chien 검색기의 경우에도 병렬 계수를 증가시킬수록 필요로 하는 클럭의 수가 1/P 배로 요구되는 클럭 사이클의 수가 감소된다.
표 1은 병렬 계수, P의 증가에 따라 변화하는 동작 속도 및 회로 크기의 비교 결과를 나타낸다.
표 1을 참조하면, 신드롬 생성기의 경우 bit-serial 방식으로 동작할 때 최대 클럭 주파수는 1.24GHz가 된다. 병렬 계수를 증가시킬수록 임계 경로의 길이가 길어지며, 병렬 계수가 8인 신드롬 생성기의 경우 클럭 주파수의는 575MHz가 된다. 따라서, bit-serial 방식에 비해 연산에 필요한 클럭 수는 1/8배로 감소되나, 실제 동작 속도는 3.71배 향상된다. 병렬 계수가 8인 LFSR 기반 신드롬 생성기와 동일한 병렬 계수를 갖는 GFM 기반 신드롬 생성기의 동작 속도를 비교하면, 약 30%의 성능 향상을 얻을 수 있다.
Figure 112015049302435-pat00012
표 2는 Chien 검색기의 회로 크기 비교를 나타낸다.
표 2를 참조하면, bit-serial로 구동하는 경우 XOR 게이트의 수는 9개로 구성할 수 있다. 그러나 병렬 계수를 2, 4, 그리고 8로 증가시킬수록, 회로에 포함된 XOR 게이트의 수는 18, 36, 그리고 95로 증가한다. 일반적인 GFM 기반의 Chien 검색기와 비교할 경우 제안된 Chien 검색기의 경우 하드웨어 복잡도를 최대 67%까지 감소시킬 수 있음을 확인하였다.
<표 2>
Figure 112015049302435-pat00013
BCH 디코더의 동작 속도에 가장 큰 영향을 미치는 블록은 반복적인 연산이 필요한 신드롬 생성기와 치엔 검색기 이다. 본 발명에서는 이 두 블록에 바이트 단위로 연산할 수 있는 병렬 구조를 적용함으로써, 기존 bit-serial 방식에 비해 동작 속도를 크게 향상시켰다.
또한, 병렬 계수를 증가함에 따라 회로 크기 증가는 필연적이다. 본 발명은 GFM 기반이 아닌 LFSR 기반으로 병렬 구조를 구성함으로써, 회로 크기 증가율을 크게 감소시켰다.
기존 GFM 기반의 병렬 구조와 비교하여 클럭 사이클의 수는 동일하게 감소시켰으나, 오히려 블록 내의 임계 경로의 크기를 줄임으로써 고속의 클럭을 사용함으로써, 동작 속도를 최대 43% 향상시켰다.
또한, 치엔 검색기의 경우 병렬화를 수행한 후, 중복된 입력을 갖는 곱셈기를 공유하는 그룹 매칭 기법을 적용하여 이를 적용하지 않은 회로에 비해 회로 크기를 최대 67% 감소시켰다.
다양한 병렬 계수중 8을 선택함으로써, 바이트 단위의 데이터 전송 구조를 갖는 메모리에 효율적으로 적용할 수 있다. 따라서 제안된 바이트 단위의 병렬 연산이 가능한 BCH 디코더는 NAND 플래시 메모리 및 이를 적용한 다양한 센서 어플리케이션에 활용할 수 있을 것으로 기대된다.
800...비에이치씨 디코더
802...병렬 신드롬 연산기 804...키 방정식 솔버
806...병렬 치엔 검색기` 808...오류수정부

Claims (6)

  1. 삭제
  2. 삭제
  3. 엘에프에스알(LFSR, Linear Feedback Shift Register) 구조를 사용한 병렬 연산을 수행하여 바이트 단위로 전송되는 메시지로부터 신드롬 값들을 산출하는 병렬 신드롬 생성기;
    상기 신드롬 값들을 이용하여 오류 위치 방정식을 추출하는 키 방정식 솔버(Key equation solver);
    상기 오류 위치 방정식을 사용하여 오류 위치를 검출하되 바이트 단위로 병렬화를 수행하는 병렬 치엔 검색기; 및
    상기 병렬 치엔 검색기에서 찾아진 오류 위치에 기초하여 수신된 메시지의 오류를 수정하는 오류 수정부;를 포함하는 비씨에이치(BCH) 디코더에 있어서,
    상기 비씨에이치(BCH) 디코더는 전송메시지의 오류정정을 위한 패리티비트를 포함한 수신된 코드워드의 전체 길이(n), 순수하게 전송하고자 하는 메시지의 길이(k≤2m-1), 오류 정정 능력(t)를 가지고,
    여기서,
    n=k+mt의 식을 만족하고, k=n-mt는 전송 메시지의 오류정정을 위한 패리티비트의 크기를 나타내며,
    m, k, t는 양의 정수이고,
    신드롬(Synthrome) S1(x), S3(x)는
    Figure 112016038235260-pat00041
    이고,
    여기서,
    r은 수신된 코드워드이고
    ri는 i번째 수신된 코드워드 비트이고,
    α는 오류정정을 위한 최소다항식의 근이고,
    αi는 최소다항식중 mi(x)의 근이고,
    S1의 특성 방정식은
    Figure 112016038235260-pat00042
    이고,
    S3의 특성 방정식은
    Figure 112016038235260-pat00043
    이며,
    여기서,
    D는 13비트 길이의 LFSR(Linear Feedback Shift Register; 선형궤환 쉬프트 레지스터)이고,
    D0~D12는 13비트 LFSR의 해당 번지의 데이터값으로, 최상위비트를 D0 그리고 최하위비트를 D13으로 하며,
    R은 수신된 코드워드이고
    Rx(t)는 x번째 수신된 코드워드 비트값인 것을
    특징으로 하는 비씨에이치(BCH) 디코더.
  4. 제3항에 있어서, 상기 S1을 생성하기 위한 신드롬 생성기는 LFSR (linear feedback shift register)기반의 것임을 특징으로 하는 비씨에이치(BCH) 디코더.
  5. 제3항에 있어서,
    α4 곱셈연산은
    Figure 112016038235260-pat00044

    Figure 112016038235260-pat00045

    인 것을 특징으로 하는 비씨에이치(BCH) 디코더.
  6. 제5항에 있어서, 상기 S3을 생성하기 위한 신드롬 생성기는 LFSR(linear feedback shift register) 기반의 것임을 특징으로 하는 비씨에이치(BCH) 디코더.



KR1020150071641A 2015-05-22 2015-05-22 병렬 bch 디코더 KR101619049B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150071641A KR101619049B1 (ko) 2015-05-22 2015-05-22 병렬 bch 디코더

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150071641A KR101619049B1 (ko) 2015-05-22 2015-05-22 병렬 bch 디코더

Publications (1)

Publication Number Publication Date
KR101619049B1 true KR101619049B1 (ko) 2016-05-11

Family

ID=56026357

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150071641A KR101619049B1 (ko) 2015-05-22 2015-05-22 병렬 bch 디코더

Country Status (1)

Country Link
KR (1) KR101619049B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108696288A (zh) * 2017-06-09 2018-10-23 京东方科技集团股份有限公司 信号传输方法、发送单元、接收单元及显示装置
US10498364B2 (en) 2016-11-25 2019-12-03 SK Hynix Inc. Error correction circuits and memory controllers including the same

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Design of parallel BCH decoder for MLC memory (2008 International SoC Design Conference, 2008년)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10498364B2 (en) 2016-11-25 2019-12-03 SK Hynix Inc. Error correction circuits and memory controllers including the same
CN108696288A (zh) * 2017-06-09 2018-10-23 京东方科技集团股份有限公司 信号传输方法、发送单元、接收单元及显示装置
US10971048B2 (en) 2017-06-09 2021-04-06 Beijing Boe Display Technology Co., Ltd. Signal transmission method, transmitting unit, receiving unit and display device

Similar Documents

Publication Publication Date Title
US8464141B2 (en) Programmable error correction capability for BCH codes
US9450615B2 (en) Multi-bit error correction method and apparatus based on a BCH code and memory system
Freudenberger et al. A configurable Bose–Chaudhuri–Hocquenghem codec architecture for flash controller applications
US8621329B2 (en) Reconfigurable BCH decoder
Sheng-Ju Implementation of cyclic redundancy check in data communication
JP2004032737A (ja) リード−ソロモン復号器
Das et al. Design of RS (255, 251) Encoder and Decoder in FPGA
KR101619049B1 (ko) 병렬 bch 디코더
JP7116374B2 (ja) 短縮レイテンシ誤り訂正復号
CN110941505A (zh) 产生错误校正电路的方法
US9191029B2 (en) Additional error correction apparatus and method
US20160364293A1 (en) Apparatuses and methods for encoding using error protection codes
Spinner et al. Design and implementation of a pipelined decoder for generalized concatenated codes format
KR101636406B1 (ko) 저지연 신드롬 계산을 위한 bch 디코더의 전처리 장치 및 방법
Zhang et al. Ultra-compressed three-error-correcting BCH decoder
US9287898B2 (en) Method and circuit for shortening latency of Chien&#39;S search algorithm for BCH codewords
RU2605672C1 (ru) Реконфигурируемый кодер рида-соломона
KR101267958B1 (ko) 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법
Mohammed et al. FPGA implementation of 3 bits BCH error correcting codes
KR101190522B1 (ko) 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법
Lee et al. Implementation of parallel BCH encoder employing tree-type systolic array architecture
US9608668B2 (en) Error correcting apparatus, error correcting method, and program
KR102353983B1 (ko) 순환 중복 검사(crc)에서 알고리즘의 배열 방법
RU157943U1 (ru) Параллельный реконфигурируемый кодер бчх кодов
Prashanthi et al. An advanced low complexity double error correction of an BCH decoder

Legal Events

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

Payment date: 20190321

Year of fee payment: 4