KR101206137B1 - 모바일 와이맥스용 ldpc 복호기 - Google Patents

모바일 와이맥스용 ldpc 복호기 Download PDF

Info

Publication number
KR101206137B1
KR101206137B1 KR1020110015815A KR20110015815A KR101206137B1 KR 101206137 B1 KR101206137 B1 KR 101206137B1 KR 1020110015815 A KR1020110015815 A KR 1020110015815A KR 20110015815 A KR20110015815 A KR 20110015815A KR 101206137 B1 KR101206137 B1 KR 101206137B1
Authority
KR
South Korea
Prior art keywords
value
memory
parity check
matrix
minimum
Prior art date
Application number
KR1020110015815A
Other languages
English (en)
Other versions
KR20120096627A (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 KR1020110015815A priority Critical patent/KR101206137B1/ko
Publication of KR20120096627A publication Critical patent/KR20120096627A/ko
Application granted granted Critical
Publication of KR101206137B1 publication Critical patent/KR101206137B1/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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • H03M13/1117Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
    • 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
    • H03M13/6505Memory efficient implementations
    • 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/6522Intended application, e.g. transmission or communication standard
    • H03M13/6544IEEE 802.16 (WIMAX and broadband wireless access)

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Error Detection And Correction (AREA)

Abstract

모바일 와이맥스(WiMAX) 표준인 IEEE 802.16e에 따른 LDPC 부호어를 효율적으로 복호화할 수 있는 모바일 와이맥스용 LDPC 복호기가 개시된다. 상기 LDPC 복호기는, 결정변수값을 저장하는 제1 메모리; 검사노드값을 저장하는 제2 메모리; IEEE 802.16e 표준에 정의된 부호율을 지원하는 기본 패리티 검사 행렬에 대한 정보를 저장하는 패리티 검사 행렬 저장부; 상기 기본 패리티 검사 행렬을 사용하여, IEEE 802.16e 표준에 의해 정의되는 블록길이 및 부호율에 따른 복수의 동작모드에 대한 패리티 검사 행렬의 순환이동값을 생성하는 순환이동값 생성부; 상기 복수의 동작모드에 대한 패리티 검사 행렬에 따라 복호화되는 데이터를 순환이동시키는 치환부; 및 상기 복수의 레이어 각각의 부행렬에 따른 상기 결정변수값 및 검사노드값을 이용하여 복호 연산을 수행하는 복호 기능 유닛을 포함할 수 있다.

Description

모바일 와이맥스용 LDPC 복호기{LDPC DECODER FOR MOBILE WiMAX}
본 발명은, LDPC(Low Density Parity Check) 복호기에 관한 것으로, 더욱 상세하게는 모바일 와이맥스(WiMAX) 표준인 IEEE 802.16e에 따른 LDPC 부호어를 효율적으로 복호화할 수 있는 모바일 와이맥스용 LDPC 복호기에 관한 것이다.
일반적으로, 와이맥스(Worldwide Interoperability for Microwave Access; WiMAX)는 점대점 연결에서 완전한 휴대형 접근에 이르기까지 다양한 방식으로 먼 거리를 걸쳐 무선으로 자료를 제공하는 것을 목표로 하는 전자 통신 기술이다. WirelessMAN이라고도 불리는 IEEE 802.16 표준에 기반을 두고 있다. "와이맥스"라는 이름은 표준의 상호 운용성과 순응을 제고시키기 위해 와이맥스 포럼이 2001년 6월에 만든 것이다. 이 포럼은 와이맥스를 "케이블, DSL의 대안으로서 라스트 마일(last mile)의 무선 광역 접근 전달을 가능하게 하는 표준 기반의 기술"로 설명하고 있다. 특히, IEEE 802.16의 개정판인 IEEE 802.16e는 이동성을 지원하므로 모바일 와이맥스라 불리고 있다.
이러한 모바일 와이맥스의 표준인 IEEE 802.16e에 따르면, 채널부호 방식의 옵션으로 LDPC 부호가 지정되어 있으며, IEEE 802.16e의 LDPC 부호는 i×j 크기의 패리티 검사 행렬 H로 정의되고 있다.
당 기술분야에서는 이러한 모바일 와이맥스의 표준인 IEEE 802.16e에서 지정하고 있는 LDPC 부호를 효율적으로 복호화할 수 있는 기술이 요구되고 있다.
본 발명은, 모바일 와이맥스의 표준인 IEEE 802.16e에서 지정하고 있는 LDPC 부호를 효율적으로 복호화할 수 있는 모바일 와이맥스용 LDPC 복호기를 제공하는 것을 해결하고자 하는 기술적 과제로 한다.
상기 기술적 과제를 해결하기 위한 수단으로서, 본 발명은,
IEEE 802.16e 표준에 따른 LDPC 부호화 데이터를 복호화하는 LDPC 복호기에 있어서,
결정변수값을 저장하는 제1 메모리;
검사노드값을 저장하는 제2 메모리;
IEEE 802.16e 표준에 정의된 부호율을 지원하는 기본 패리티 검사 행렬에 대한 정보를 저장하는 패리티 검사 행렬 저장부;
상기 기본 패리티 검사 행렬을 사용하여, IEEE 802.16e 표준에 의해 정의되는 블록길이 및 부호율에 따른 복수의 동작모드에 대한 패리티 검사 행렬의 순환이동값을 생성하는 순환이동값 생성부;
상기 복수의 동작모드에 대한 패리티 검사 행렬에 따라 복호화되는 데이터를 순환이동시키는 치환부;
상기 복수의 레이어 각각의 부행렬에 따른 상기 결정변수값 및 검사노드값을 이용하여 복호 연산을 수행하는 복호 기능 유닛을
포함하는 모바일 와이맥스용 LDPC 복호기를 포함할 수 있다.
본 발명의 일실시형태에서, 상기 제2 메모리는, 상기 레이어의 영행렬을 제외한 유효 부행렬의 갱신 후 최소값/준최소값의 부호를 나타내는 하나의 비트와 및 갱신 후 최소값/준최소값 여부를 나타내는 하나의 비트를 포함하는 두 비트를 저장하는 메모리와, 상기 레이어에 포함된 부행렬의 최소값 및 준최소값을 저장하는 메모리를 포함할 수 있다.
본 발명의 일실시형태에서, 상기 패리티 검사 행렬 저장부는, 상기 기본 패리티 검사 행렬에서 영 행렬을 제외한 부행렬들의 위치 정보 및 순환이동 값을 저장할 수 있다.
본 발명의 일실시형태에서, 상기 제1 메모리부 및 제2 메모리부는, 읽기 동작 및 쓰기 동작이 동시에 수행되는 듀얼 포트 메모리일 수 있다.
이 실시형태에서, 상기 제1 메모리부 및 제2 메모리부는, 상기 읽기 동작 및 쓰기 동작이 레이어 단위로 지연되어 각각 순차적으로 이루어지며, 읽기 동작 및 쓰기 동작의 억세스 중복을 방지하기 위해 레이어 내 부행렬의 순서를 재정렬하여 어드레싱될 수 있다.
이 실시형태는, 읽기 동작 및 쓰기 동작이 중복되는 변수에 대해 상기 제2 메모리부 대신 상기 치환부에 해당 데이터를 입력할 수 있다.
본 발명의 일실시형태에 있어서, 상기 복호 기능 유닛은, 상기 검사노드값와 상기 결정변수값을 뺄셈 연산하여 출력하는 뺄셈기; 상기 뺄셈기의 출력을 부호와 크기로 분리하는 제1 수체계 변환기; 상기 제1 수체계 변환기에서 분리된 부호를 순차적으로 곱셈하는 XOR 논리 연산부; 상기 제1 수체계 변환기에서 분리된 크기를 순차적으로 입력받아 최소값 및 준최소값을 검출하는 최소값 검출부; 상기 뺄셈기의 출력을 순차적으로 저장하고 지연 출력하는 선입선출 메모리부; 상기 선입선출 메모리부의 출력을 부호와 크기로 분리하는 제2 수체계 변환기; 상기 제2 수체계 변환기에서 분리된 크기와 상기 최소값을 비교하는 비교기; 상기 비교기의 비교결과, 상기 제2 수체계 변환기에서 분리된 크기와 상기 최소값이 동일하면 상기 준최소값을 새로운 검사노드값의 크기로 갱신 출력하고, 상기 제2 수체계 변환기에서 분리된 크기와 상기 최소값이 상이하면 상기 최소값을 새로운 검사노드값의 크기로 갱신 출력하는 먹스; 상기 먹스의 출력을 크기로 하고 상기 XOR 논리 연산부의 곱셈 결과를 부호로 하는 값을 2의 보수 수체계 변환하여 출력하는 제3 수체계 변환기; 및 상기 제3 수체계 변환기의 출력과 상기 선입선출 메모리부의 출력을 합산하여 새로운 결정변수값을 출력하는 덧셈 연산부를 포함할 수 있다.
본 발명에 따르면, 검사노드 메모리의 용량을 현저히 감소시킬 수 있다.
또한, 본 발명에 따르면, 레이어 간의 메모리 쓰기/읽기 과정에서 데이터 해저드가 자주 발생하게 되어 삽입되는 스톨을 제거할 수 있으며, 그에 따라 하나의 레이어를 복호하는 클록 수가 감소되어 동작속도를 향상시킬 수 있다.
또한, 본 발명에 따르면, 패리티 검사 행렬에 포함된 영행렬을 제외하고 기본행렬을 저장하므로 하드웨어를 최소화 할 수 있다.
도 1은 IEEE 802.16e의 부호율에 따른 패리티 검사 행렬의 예들을 도시한 도면이다.
도 2의 (a)는 패리티 검사 행렬(PCM)의 일례를 도시한 도면이며, (b)는 (a)의 패리티 검사 행렬에 따른 태너 그래프(Tanner graph) 상의 변수노드(variable node)와 검사노드(check node) 사이에서 반복적인 메시지 전달과정을 도시한 도면이다.
도 3은 태너 그래프 상에서 수행되는 LDPC 부호의 복호과정에서 반복부호로 등가된 변수노드 연산을 도시한 도면이다.
도 4는 태너 그래프 상에서 수행되는 LDPC 부호의 복호과정에서 단일 패리티 검사 부호로 등가된 검사노드 연산을 설명하는 도면이다.
도 5는 본 발명의 일실시형태에 따른 모바일 와이맥스용 LDPC 복호기의 블록 구성도이다.
도 6의 (a)는 종래의 LDPC 복호기에서 검사노드 갱신값의 메모리 저장방식ㅇ을 도시한 도면이며, (b)는 본 발명의 LDPC 복호기에서 검사노드 갱신값의 메모리 저장방식을 도시한 도면이다.
도 7은 본 발명에 따른 LDPC 복호기의 검사노드 메모리 내 저장되어 있는 부호 정보와 최솟값/준최소값 여부 정보를 이용하여 검사노드값을 생성하는 회로를 도시한 블록도이다.
도 8은 IEEE 802.16e 표준에 정의된 6가지 부호율에 대한 종래의 검사노드 메모리와 제안하는 검사노드 메모리의 용량을 비교한 도면이다.
도 9는 LDPC 복호기의 레이어 간 메모리 어드레싱 타이밍도로서, (a)는 데이터 해저드가 발생하는 예를 도시하며, (b)는 데이터 해저드를 억제하기 위해 스톨(stall)을 사용한 종래 기술을 도시하며, (c)는 본 발명에 따라 재정렬 기법을 적용한 예를 도시한다.
도 10은 본 발명의 LDPC 복호기의 메모리 제정렬(reordering) 및 결정변수 메모리의 억세스(access) 감소 방법을 도시한 도면이다.
도 11은 본 발명에 따른 복호 기능 유닛(Decoding Function Unit: DFU)의 구조를 도시한 블록 구성도이다.
도 12는 본 발명의 LDPC 복호기에서 복호 기능 유닛(DFU) 연산의 동작 타이밍의 예를 도시한 타이밍도이다.
도 13은 도 11에 도시된 복호 기능 유닛에 적용되는 수체계 변환기의 구체적인 구조를 도시한 회로도이다.
도 14는 도 11에 도시된 복호 기능 유닛에 적용되는 수체계 변환기의 구체적인 구조를 도시한 회로도이다.
도 15는 도 11에 도시된 복호 기능 유닛에 적용되는 최솟값 검출기의 구체적인 구조를 도시한 회로도이다.
도 16의 (a)는 종래의 패리티 검사 행렬 저장부(패리티 검사 행렬 저장부(H-ROM)) 저장 기법을 도시한 도면이며, (b)는 본 발명에 따른 패리티 검사 행렬 저장부(패리티 검사 행렬 저장부(H-ROM)) 저장 기법을 도시한 도면이다.
도 17은 본 발명의 LDPC 복호기에 적용되는 패리티 검사행렬의 순환이동값 생성부의 블록 구성도이다.
이하, 첨부된 도면을 참조하여 본 발명의 다양한 실시형태를 보다 상세하게 설명한다. 그러나, 본 발명의 실시형태는 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 이하 설명되는 실시형태로 한정되는 것은 아니다. 본 발명의 실시형태는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에 도시된 구성요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다는 점을 유념해야 할 것이다.
본 발명의 구체적인 구성 및 작용 효과를 설명하기에 앞서, 모바일 와이맥스(WiMAX) 표준인 IEEE 802.16e에 사용되는 LDPC(Low Density Parity Check) 부호 및 LDPC 복호 알고리듬의 일반적인 기술 특징에 대해 설명한다.
LDPC 부호는 패리티 검사 행렬 (Parity Check Matrix; PCM) 로 정의되며, 이 패리티 검사 행렬은 대부분이 0으로 채워지고, 일부분만 1을 갖는 행렬이다.
2005년에 공개된 모바일 WiMAX 표준인 IEEE 802.16e에는 채널부호 방식의 옵션으로 LDPC 부호가 지정되어 있다. IEEE 802.16e의 LDPC 부호는 i×j 크기의 패리티 검사 행렬 H로 정의된다. 여기서 i는 부호어의 블록길이를 나타내고, j는 패리티 검사 비트의 길이를 나타낸다.
패리티 검사 행렬 H는 하기 식 1과 같이 정의될 수 있다.
[식 1]
Figure 112011012917433-pat00001
상기 식 1에서,
Figure 112011012917433-pat00002
Figure 112011012917433-pat00003
크기의 치환행렬(permutation matrix) 또는 영 행렬(zero matrix)을 나타내며, 이를 부행렬(sub-matrix)이라고 한다. IEEE 802.16e의 패리티 검사 행렬 H는
Figure 112011012917433-pat00004
의 이진 기저행렬(binary base matrix) 로부터 확장될 수 있으며, 이고
Figure 112011012917433-pat00006
이며,
Figure 112011012917433-pat00007
로 고정된 값이다. IEEE 802.16e는 19가지 블록길이와 각각의 블록길이에 대해 6가지 부호율을 지원하도록 규정되어 있어 총 114가지의 동작모드를 갖는다.
하기의 표 1은 IEEE 802.16e 표준에 정의된 114가지의 LDPC 부호의 파라미터를 보이고 있다. 여기서 f는 LDPC 부호의 블록길이 인덱스를 나타내고,
Figure 112011012917433-pat00008
범위의 값을 갖는다. 따라서 부행렬의 크기는
Figure 112011012917433-pat00009
로 정의된다.
[표 1]
Figure 112011012917433-pat00010
치환행렬은
Figure 112011012917433-pat00011
크기의 단위행렬(identity matrix)을 지정된 값
Figure 112011012917433-pat00012
만큼 오른쪽으로 순환이동(circular right shift)시킨 행렬이다. 블록길이에 따른 오른쪽 순환이동 값
Figure 112011012917433-pat00013
는 하기 식 2와 같이 정의되며, 부호율 2/3A인 경우에만 하기 식 3으로 정의된다. 하기 식 2 및 식 3에서
Figure 112011012917433-pat00014
(통상
Figure 112011012917433-pat00015
로 표시됨)은 영 행렬을 나타낸다. z0는 최대 부행렬 크기를 나타내며, 블록길이 2304 비트에 대해
Figure 112011012917433-pat00016
의 값을 갖는다.
[식 2]
Figure 112011012917433-pat00017
[식 3]
Figure 112011012917433-pat00018
도 1은 IEEE 802.16e의 부호율에 따른 패리티 검사 행렬의 예들을 도시한 도면이다. IEEE 802.16e의 부호율에 따른 패리티 검사 행렬(PCM)은 도 1과 같으며, 주어진 값
Figure 112011012917433-pat00019
Figure 112011012917433-pat00020
크기의 단위행렬에 대한 오른쪽 순환이동 값을 나타낸다. 도 1에서
Figure 112011012917433-pat00021
는 패리티 검사 행열의 각 열의 유효한 부행렬의 수를 나타내며,
Figure 112011012917433-pat00022
은 레이어 당 유효 부행렬의 수,
Figure 112011012917433-pat00023
는 PCM 전체의 유효 부행렬의 수를 나타낸다.
LDPC 복호 알고리듬
본 명세서에서, LDPC 복호 알고리듬을 정의하기 위해 다음과 같이 표기한다.
Figure 112011012917433-pat00024
: 결정변수
Figure 112011012917433-pat00025
: 검사노드
Figure 112011012917433-pat00026
: 변수노드
Figure 112011012917433-pat00027
: 수신된 부호어에 대한 경판정 값
Figure 112011012917433-pat00028
: 검사노드에서 변수노드로 전달된 정보
Figure 112011012917433-pat00029
: 변수노드에서 검사노드로 전달된 정보
Figure 112011012917433-pat00030
: 변수노드
Figure 112011012917433-pat00031
에 연결된 검사노드의 집합
Figure 112011012917433-pat00032
: 검사노드
Figure 112011012917433-pat00033
를 제외한 집합 변수노드
Figure 112011012917433-pat00034
에 연결된 검사노드의 집합
Figure 112011012917433-pat00035
: 검사노드
Figure 112011012917433-pat00036
에 연결된 변수노드의 집합
Figure 112011012917433-pat00037
: 변수노드
Figure 112011012917433-pat00038
를 제외한 집합 검사노드
Figure 112011012917433-pat00039
에 연결된 변수노드의 집합
도 2의 (a)는 패리티 검사 행렬(PCM)의 일례를 도시한 도면이며, (b)는 (a)의 패리티 검사 행렬에 따른 태너 그래프(Tanner graph) 상의 변수노드(variable node)와 검사노드(check node) 사이에서 반복적인 메시지 전달과정을 도시한 도면이다.
도 2에 도시된 바와 같이, LDPC 부호의 복호는, 패리티 검사 행렬에 의해 구성되는 태너 그래프 상의 변수노드(variable node)와 검사노드(check node) 사이에서 반복적인 메시지 전달과정을 통해 이루어진다. 이러한 노드 사이의 메시지 전달과정에 따라 다양한 복호방법이 존재할 수 있다. 태너 그래프는 LDPC 부호의 패리티 검사 행렬 H의 행과 열을 각각 태너 그래프의 검사노드와 변수노드로 매핑시킨 이분 그래프(bipartite graph) 이다. 변수노드와 검사노드 사이의 연결은 패리티 검사 행렬에서 1의 위치에 의해 결정된다. 어떤 행렬의 원소
Figure 112011012917433-pat00040
이면, 태너 그래프 상에서 변수노드 i는 검사노드 j와 연결된 것을 나타낸다. 예를 들어, 도 2는
Figure 112011012917433-pat00041
인 LDPC 부호의 패리티 검사 행렬과 태너 그래프를 도시한 것이다.
태너 그래프 상에서 수행되는 LDPC 부호의 복호과정에서 변수노드는 반복부호로, 검사노드는 단일 패리티 검사 부호로 볼 수 있다.
도 3은 태너 그래프 상에서 수행되는 LDPC 부호의 복호과정에서 반복부호로 등가된 변수노드 연산을 도시한 도면이다. 도 3에 도시된 바와 같이,
Figure 112011012917433-pat00042
는 수신된 부호어에 대한 경판정 값으로 변수노드에 입력된다. 또한,
Figure 112011012917433-pat00043
는 해당 검사노드에서 변수노드로 전달된 정보인
Figure 112011012917433-pat00044
를 제외한 변수노드에 전달된 나머지 모든 정보에 대한 함수이다. 왜냐하면,
Figure 112011012917433-pat00045
는 해당 검사노드에서 변수노드로 전달한 정보이기 때문에 검사노드에서는 해당 정보를 이미 알고 있기 때문이다. 그리고 변수노드에서 복호한 추정 비트는 하기 식 4와 같이 표현 할 수 있다.
[식 4]
Figure 112011012917433-pat00046
상기 식 4는 수신된 부호어에 대한 경판정 값
Figure 112011012917433-pat00047
와 해당 변수노드에서 검사노드로 전달된 정보
Figure 112011012917433-pat00048
그리고 검사노드에서 변수노드로 전달된 검사노드들의 모든 정보를 모두 취합(
Figure 112011012917433-pat00049
)하여 복호 비트를 추정한다는 의미이다.
채널코딩은 어떠한 정보를 전달할 때 정보에 덧붙임(Redundancy)을 추가하여 오류를 정정하는 기술이다. LDPC는 블록 부호의 일종으로 패리티 비트를 덧붙혀 오류를 정정한다. 패리티 검사 부호는 특정 정보에서 1의 개수가 홀수인지 짝수인지를 판단하여 패리티 비트를 덧붙혀 정보의 참?거짓을 판단할 수 있게 한다. 만약 전송 시스템이 짝수 패리티를 사용한다면, 정보열에 존재하는 1의 개수를 세어 홀수이면 패리티 비트 1을 덧붙혀서 송신한다. 수신 측에서는 정보를 받아서 정보열의 1의 개수를 파악하여 패리티 비트와 비교하여 서로 같을 때에는 수신한 정보열에 오류가 없다고 판단하고, 서로 다를 때는 오류가 있다고 판단한다. 만약 전송 시스템이 홀수 패리티를 사용한다면 정보열에서 1의 개수를 세어 짝수이면 패리티 비트 1을 덧붙혀서 송신한다.
이러한 패리티 검사 방법은 동시에 2개 이상의 오류가 발생하면 오류를 정정할 수 없게 된다. 이러한 패리티 부호를 단일 패리티 검사 부호라고 한다. 태너 그래프 상에서 수행되는 LDPC 복호 과정에서 검사노드 연산은 단일 패리티 검사 부호라고 볼 수 있다.
도 4는 태너 그래프 상에서 수행되는 LDPC 부호의 복호과정에서 단일 패리티 검사 부호로 등가된 검사노드 연산을 설명하는 도면이다. 도 4를 참조하면, 전술한 원리와 동일한 이유로 해당 변수노드에서 검사노드로 전달된 정보를 제외한 모든 정보가 검사노드에서 변수노드로 전달된다. 이러한 변수노드에서 검사노드로 전달과 역으로 검사노드에서 변수노드로 전달이 계속해서 일어나면서 반복복호가 이루어질 수 있다.
전술한 모바일 와이맥스 표준인 IEEE 802.16e에 사용되는 LDPC 부호 및 LDPC 복호 알고리듬의 일반적인 기술 특징을 바탕으로 본 발명에 따른 모바일 와이맥스용 LDPC 복호기에 대해 상세하게 설명하기로 한다.
도 5는 본 발명의 일실시형태에 따른 모바일 와이맥스용 LDPC 복호기의 블록 구성도이다.
도 5에 도시한 바와 같이, 본 발명의 일실시형태에 따른 모바일 와이맥스용 LDPC 복호기(10)는, 결정변수값을 저장하는 제1 메모리(12)와, 검사노드값을 저장하는 제2 메모리(11)와, IEEE 802.16e 표준에 정의된 부호율을 지원하는 기본 패리티 검사 행렬에 대한 정보를 저장하는 패리티 검사 행렬 저장부(131)와, 상기 기본 패리티 검사 행렬을 사용하여, IEEE 802.16e 표준에 의해 정의되는 블록길이 및 부호율에 따른 복수의 동작모드에 대한 패리티 검사 행렬의 순환이동값을 생성하는 순환이동값 생성부(14)와, 상기 복수의 동작모드에 대한 패리티 검사 행렬에 따라 복호화되는 데이터를 순환이동시키는 치환부(15) 및 상기 복수의 레이어 각각의 부행렬에 따른 상기 결정변수값 및 검사노드값을 이용하여 복호 연산을 수행하는 복호 기능 유닛(16)을 포함하여 구성될 수 있다.
그 외, 신호나 데이터를 선택하거나 분할하여 출력하는 먹스와 디먹스(17 내지 19)를 포함할 수 있다.
본 발명은, IEEE 802.16e 표준의 19가지 블록길이와 각 블록길이에 대한 6가지 부호율 1/2, 2/3(A,B), 3/4(A,B), 5/6을 지원하는 다중모드용 LDPC 복호기에 관한 것이다. IEEE 802.16e 표준에서 114가지 패리티 검사 행렬의 부행렬 크기는 블록길이에 따라
Figure 112011012917433-pat00050
가 된다. 또한, QC-LDPC 방식으로 구성된 패리티 검사 행렬의 대부분은 영 (zero) 행렬로 이루어져 있다. 영 행렬은 검사노드와 변수노드 사이에 어떠한 연결도 형성하지 않기 때문에 필요한 연산이 존재하지 않는다. 따라서 LDPC 복호기는 영 행렬을 무시하고 연산을 수행할 수 있다. 본 발명에서 영 행렬을 효율적으로 무시하기 위해 부행렬 단위로 연산을 수행하는 블록-직렬 구조로 설계하여
Figure 112011012917433-pat00051
개의 LLR(Log-Likelihood Ratio)이 동시에 연산되도록 한다. 각각의 DFU는 변수노드 연산과 결정변수 계산을 위한 가산기 2개, 검사노드 연산을 위한 최솟값/준최솟값 검출기 그리고 결정변수 계산을 위해 연산결과를 지연시키는 레지스터로 구성된다. 치환부(Permuter)는 패리티 검사 행렬상의 오른쪽 순환이동 값에 따라 검사노드와 변수노드 사이에 연결을 형성하는 블록이다.
메모리(11, 12)는 결정변수 값(
Figure 112011012917433-pat00052
)을 저장하는 결정변수(APP: A Posteriori Probability) 메모리(12)와 검사노드값(
Figure 112011012917433-pat00053
)을 저장하는 검사노드(CN: Check Node) 메모리(11)가 사용된다. 이 두 메모리(11, 12)는 듀얼 포트 메모리로 구현될 수 있다.
검사노드 메모리(11)는 변수노드에서 연산된 정보를 저장할 수 있다. 본 발명에서는 최소합 알고리듬의 특징을 이용하여 검사노드 메모리(11) 용량을 효율적으로 감소시키는 방법이 제공된다. 더하여, 본 발명에서는 패리티 검사 행렬(H-matrix)의 재정렬(reordering)을 통한 결정변수 메모리(12)의 억세스를 감소시키는 방법에 제공된다.
복호 기능 유닛(DFU, 16)은 각 노드에 해당하는 정보를 메모리로부터 읽어와 복호연산을 수행하고 다시 메모리에 쓰는 동작을 수행하며, 읽기동작과 쓰기동작을 중첩하여 수행한다. 복호 기능 유닛(DFU, 16)은 복호연산을 마치면 복호된 정보를 메모리에 쓰는 동시에 새롭게 복호할 정보를 메모리로부터 읽어온다. 따라서 본래 DFU가 1개의 레이어를 복호하기 위해
Figure 112011012917433-pat00054
클록 사이클이 필요하지만 읽기와 쓰기가 중첩되므로
Figure 112011012917433-pat00055
클록 사이클로 감소될 수 있다. 그러나 첫 번째 반복복호의 첫 번째 레이어 연산은 정보를 읽어오는 연산만 수행되고 마지막 반복복호의 마지막 레이어 연산은 정보를 쓰는 연산만 수행되기 때문에 읽기와 쓰기를 중첩시키지 못한다. 따라서
Figure 112011012917433-pat00056
개의 레이어를 연산하기 위해서는
Figure 112011012917433-pat00057
클록 사이클이 소요된다. 1개의 레이어 복호를 위해
Figure 112011012917433-pat00058
클록 사이클이 소요되고,
Figure 112011012917433-pat00059
개의 레이어로 이루어진 1회의 반복복호는 총
Figure 112011012917433-pat00060
클록 사이클이 필요하다.
검사노드 메모리의 용량 감소 기법
LDPC 복호기의 검사노드 메모리에는 변수노드에서의 연산결과
Figure 112011012917433-pat00061
가 저장된다. 이 때,
Figure 112011012917433-pat00062
의 크기
Figure 112011012917433-pat00063
는 하기 식 5에 의해
Figure 112011012917433-pat00064
의 최솟값으로 갱신되며, 최솟값이 발생한
Figure 112011012917433-pat00065
번째
Figure 112011012917433-pat00066
은 최솟값을 제외한 나머지
Figure 112011012917433-pat00067
의 최솟값으로 갱신된다. 이는
Figure 112011012917433-pat00068
가 다수의 최솟값과 하나의 준최솟값으로 갱신됨을 의미한다.
[식 5]
Figure 112011012917433-pat00069
하기 표 2는
Figure 112011012917433-pat00070
가 갱신되는 예를 든 것이다. 표 2의 (a)는
Figure 112011012917433-pat00071
값중 1이 최솟값이고 2가 준최솟값이 된다. 따라서 1의 위치에는 준최솟값인 2로 갱신되고 나머지
Figure 112011012917433-pat00072
값들은 최솟값인 1로 갱신된다. 표 2의 (b)는
Figure 112011012917433-pat00073
값중 최솟값이 2이며 준최솟값도 2이기 때문에 모두 2로 갱신된다.
[표 2]
Figure 112011012917433-pat00074
또한, 상기 식 5에서
Figure 112011012917433-pat00075
Figure 112011012917433-pat00076
의 부호비트들의 곱셈으로 사용되어 양수와 음수를 나타낸다. 따라서
Figure 112011012917433-pat00077
은 최솟값과 준최솟값 그리고 각각의 부호만으로 갱신될 수 있으며, 하기 식 6과 같은 4가지 경우로 정리될 수 있다.
[식 6]
Figure 112011012917433-pat00078
본 발명에서는 검사노드 메모리(CN memory)를 크게 두 영역으로 나누고, 그 중 하나는 검사 노드 크기(CNM: Check Node Magnitude) 메모리로서 레이어별로 검출된 최솟값과 준최솟값을 저장하고, 나머지 하나는 부호/크기 (SM: Sign/Magtype) 메모리로 최솟값/준최솟값의 여부 1비트와 부호 1비트를 저장하여 각 노드는 2비트의 용량으로 갱신될 값을 저장할 수 있다.
하기 표 3은 최솟값/준최솟값의 여부와 부호비트를 2비트로 표현하는 방법이다. SM이 2비트로 10이면 음의 부호를 가진 최솟값을 의미하고, 01이면 양의 부호를 가진 준최솟값을 의미한다.
[표 3]
Figure 112011012917433-pat00079

도 6은 종래의 LDPC 복호기에서 검사노드 갱신값의 메모리 저장방식과, 본 발명의 LDPC 복호기에서 검사노드 갱신값의 메모리 저장방식을 비교한 도면이다. 도 6의 (a)에 도시된 종래의 검사노드 메모리 구조에서는
Figure 112011012917433-pat00080
-비트의
Figure 112011012917433-pat00081
를 각 레이어의 유효 부행렬의 수
Figure 112011012917433-pat00082
만큼 저장 하므로, 레이어 당
Figure 112011012917433-pat00083
-비트의 메모리 용량이 필요하다.
이에 반해, 본 발명에 따르면, 도 6의 (b)와 같이 검사노드 메모리를 2개의 영역으로 나누어 저장한다. 이 중 하나의 메모리는 SM 메모리로
Figure 112011012917433-pat00084
의 부호비트인 Sign과
Figure 112011012917433-pat00085
의 최솟값/준최솟값 여부를 표현하는 Mag_type을 2비트로 표현하여 각 레이어별로 0행렬을 제외한 부행렬 개수인
Figure 112011012917433-pat00086
만큼 저장한다. 나머지 하나의 메모리는 CNM 메모리로서, 각 레이어별 부행렬의 개수에 상관없이
Figure 112011012917433-pat00087
의 최솟값과 준최솟값 하나씩만 메모리에 저장한다. 따라서, 본 발명에서 제공하는 메모리 운용 감소 방식은 레이어당
Figure 112011012917433-pat00088
-비트의 메모리 용량만 필요하여 검사노드 메모리를 크게 감소시킬 수 있다.
검사노드의 복호연산을 수행하기 위해서는 2의 보수 수체계로 표현된
Figure 112011012917433-pat00089
값이 필요하므로, 부호 정보(Sign)와 최솟값/준최소값 여부 정보(Mag_type)로 구성된 신호를
Figure 112011012917433-pat00090
로 변환하기 위한 부가적인 하드웨어가 필요하다.
도 7은 본 발명에 따른 LDPC복호기의 검사노드 메모리(11) 내 SM 메모리(11)에 저장되어 있는 부호 정보(Sign)와 최솟값/준최소값 여부 정보(Mag_type)를 이용하여
Figure 112011012917433-pat00091
값을 생성하는 회로를 도시한 블록도이다.
도 7에 도시된 회로는 후술하는 복호 기능 유닛(DFU)에 포함될 수 있다. 부호 정보(Sign)는 변환될
Figure 112011012917433-pat00092
의 부호비트로 사용되는 값이고, 최솟값/준최소값 여부 정보(Mag_type)는 MUX(211)의 선택신호로 입력되며, 이전 반복복호에서 CNM 메모리(112)에 저장된 최솟값과 준최솟값인
Figure 112011012917433-pat00093
중 한가지를 선택한다. 최솟값/준최소값 여부 정보(Mag_type)가 0이면
Figure 112011012917433-pat00094
은 최솟값이고, 1이면
Figure 112011012917433-pat00095
은 준최솟값이 된다.
MUX(211)에 의해 선택된 최솟값과 준최솟값은 부호 정보(Sign)와 함께 2의 보수 변환부(212)로 입력된다. 함께 2의 보수 변환부(212)는 부호정보(Sign) 및 최솟값/준최소값 여부 정보(Mag_type)를 입력 받아 2의 보수 수체계로 변환하여
Figure 112011012917433-pat00096
를 생성시켜 준다.
Figure 112011012917433-pat00097
값 생성 회로는 동시에 갱신되어야 하는 검사노드의 개수(
Figure 112011012917433-pat00098
)만큼 필요하며, 노드를 작은 그룹으로 분할하여 갱신하는 반병렬 구조에서는 메모리 면적에 비해 작은 면적의 하드웨어로 구현될 수 있다.
예를 들어, 블록길이가 2304이고 부호율이 1/2인 PCM을 이용하는 복호기의
Figure 112011012917433-pat00099
비트 폭(
Figure 112011012917433-pat00100
)이 8 비트라면, 종래 방식은
Figure 112011012917433-pat00101
비트의 검사노드 메모리가 필요하다. 이에 반해, 본 발명에 따르면, SM 메모리 용량
Figure 112011012917433-pat00102
비트와 CNM 메모리 용량
Figure 112011012917433-pat00103
비트를 합산한 총 34,560 비트의 검사노드 메모리만 사용될 수 있다. 따라서 29,952 비트가 감소되어 검사노드 메모리의 용량을 46% 감소시킬 수 있다.
도 8은 IEEE 802.16e 표준에 정의된 6가지 부호율에 대한 종래의 검사노드 메모리와 제안하는 검사노드 메모리의 용량을 비교한 것이다. 도 8을 참조하면, 부호율이 클수록 기존의 방법보다 제안하는 방법의 용량이 현저히 감소되는 것을 알 수 있다. 본 발명을 적용하면, 근사화 비트 폭이 커질수록 기존의 방법보다 검사노드 메모리의 용량을 현저히 감소시킬 수 있다.
패리티 검사 행렬의 재정열(reordering)과 결정변수 메모리 access 감소 방법
블록-직렬 방식의 LDPC 복호기는 복호 기능 유닛(DFU)에 의한 복호연산 중간 결과값들을 메모리에 저장하고, 읽어오는 과정이 반복적으로 수행된다. 본 발명에서는 이와 같은 메모리 읽기/쓰기 동작의 동시 수행을 위해 듀얼 포트 메모리를 사용하였다. 복호기의 메모리 읽기/쓰기 동작은 메모리 어드레싱이 중요하다. 메모리 어드레싱은 패리티 검사 행렬(PCM)과 관계가 있으며, 특히 복호 중인 블록이 해당 레이어의 몇 번째에 위치하고 있는지가 중요하다.
도 9는 LDPC 복호기의 레이어 간 메모리 어드레싱 타이밍도로서, (a)는 데이터 해저드가 발생하는 예를 도시하며, (b)는 데이터 해저드를 억제하기 위해 스톨(stall)을 사용한 종래 기술을 도시하며, (c)는 본 발명에 따라 재정렬 기법을 적용한 예를 도시한다.
도 9의 (a)에 도시된 바와 같이, 레이어
Figure 112011012917433-pat00104
의 3번 블록과 레이어
Figure 112011012917433-pat00105
의 0번 블록을 읽을 때, 데이터 해저드(data hazard)가 할 수 있다. 복호 기능 유닛(DFU)는 레이어 i의 부행렬을 순차적으로 읽어 복호연산을 거친 후 다시 레이어 i의 부행렬을 읽은 순서대로 메모리에 저장한다. 이 때, 레이어
Figure 112011012917433-pat00106
의 0번 블록을 읽는 동시에 레이어 i의 0번 블록 연산 결과를 메모리에 저장하게 된다. 이 과정에서 레이어 i의 복호된 정보를 메모리에 저장하기 전에 레이어
Figure 112011012917433-pat00107
에서 정보를 읽어 오기 때문에 레이어 i에서 복호된 정보를 반영하지 못하게 되어 데이터 해저드가 발생하게 된다.
이러한 데이터 해저드 발생을 방지하기 위해, 종래에는 도 9의 (b)와 같이 스톨(stall)을 삽입하여 레이어
Figure 112011012917433-pat00108
에서 복호된 정보를 메모리에 저장한 후 메모리에서 레이어
Figure 112011012917433-pat00109
의 정보를 읽어오도록 하는 방법이 적용되었다. 이러한 스톨을 적용하는 방식은, 연접한 레이어 간에 변수노드가 중복되는 경우가 많은 경우, 블록-직렬 방식의 레이어드(layered) 복호에서는 레이어 간의 메모리 쓰기/읽기 과정에서 데이터 해저드가 자주 발생하게 되어 삽입되는 스톨의 수가 증가하여 하나의 레이어를 복호하는 클록 수가 증가하여 동작속도가 느려지는 문제가 발생한다. 본 발명은 이러한 스톨을 적용함으로써 발생하는 문제점을 해소하기 위해, 도 9의 (c)와 같이 패리티 검사 행렬(PCM)의 부행렬 위치를 재정렬(Reordering)하여 스톨을 삽입하지 않고 데이터의 해저드를 방지함으로써 최적의 메모리 어드레싱이 이루어지도록 할 수 있다.
802.16e 표준에 정의된 부호화율
Figure 112011012917433-pat00110
,
Figure 112011012917433-pat00111
의 패리티 검사 행렬(PCM)은 도 10의 (a)에 도시된 바와 같이 연접한 두 레이어의 변수노드가 중복되는 경우가 많아 스톨을 삽입하지 않고서 재정열(reordering) 만으로 데이터 해저드를 제거하는데 어려움이 발생할 수 있다. 이에, 본 발명에서는 도 10의 (b) 및 (c)에 도시한 바와 같은 방식을 제공한다. 도 10의 (a)에 도시된 것과 같은 패리티 검사 행열을 재정열하여 도 10의 (b)에 도시한 것과 같이 읽기/쓰기 동작이 동시에 일어나게 하고, 메모리의 동일 주소에 억세스(access) 할 경우 도 10의 (c)와 같이 메모리를 거치지 않고, 치환부(permuter)(15)로 데이터를 입력하는 기법을 사용할 수 있다.
하기 표 4는 종래 방식과 본 발명의 따른 방식의 메모리 억세스 횟수를 비교한 것이다. 표 4에서
Figure 112011012917433-pat00112
는 패리티 검사 행렬(PCM)의 유효 블록의 수이다. 부호화율
Figure 112011012917433-pat00113
,
Figure 112011012917433-pat00114
의 경우에, 종래 방식(336회)에 비해 메모리 억세스 횟수가 약 52%(172회) 감소하였으며, 와이맥스 표준(IEEE 802.16e)의 6가지 부호화율 전체에 대해 모두 고려하였을 경우 기존방식(2×(76+80+81+75+88+80)=960)에 비해 본 발명에 따른 방식(2×(76+80+81+75)+92+72=788)이 메모리 억세스 횟수가 약 18% 감소하였음을 알 수 있다.
[표 4]
Figure 112011012917433-pat00115
(802.16e WiMAX, Block-length : 2304, Code-rate :
Figure 112011012917433-pat00116
,
Figure 112011012917433-pat00117
)
복호 기능 유닛( Decoding Function Unit : DFU ) 구조
복호 기능 유닛(DFU)은 오류가 포함되어 있는 입력 부호어의 오류를 정정하기 위해 자신을 제외한 나머지 부호어들의 LLR(Log-Likelihood Ratio)을 취합하여 원래의 부호어에 가장 가까운 LLR을 예측한다. 본 발명에서는 최소합 알고리듬을 기반으로 한 레이어드(layered) 구조의 복호 기능 유닛(DFU)을 적용한다.
도 11은 본 발명에 따른 복호 기능 유닛의 구조를 도시한 블록 구성도이다. 도 11에 도시된 바와 같이, 복호 기능 유닛(DFU)은, 최솟값과 준최솟값을 생성하는 CNV(Check Node Value)블록, 최솟값 검출기, 부호비트 누산기, 데이터의 지연을 위한 FIFO(First-In First-Out) 메모리, 덧셈기, 뺄셈기, 비교기 그리고 수체계(2의 보수/부호-크기) 변환기 등으로 구성된다. 복호 기능 유닛(DFU) 내부에서 LLR들은 일정한 비트로 근사화되어 연산되며, 부호와 크기를 분리하여 계산된다.
변환된 검사노드값
Figure 112011012917433-pat00118
와 결정변수
Figure 112011012917433-pat00119
는 뺄셈연산을 통해 변수노드값
Figure 112011012917433-pat00120
를 계산한다. 계산된
Figure 112011012917433-pat00121
는 수체계 변환기(TC_SM1)를 통해 부호와 크기로 분리되어 부호는 순차적으로 입력되어 곱셈한다. 또한 분리된 변수노드 크기
Figure 112011012917433-pat00122
는 최솟값 검출기(Min_det)를 통해 순차적으로 입력되는 분리된
Figure 112011012917433-pat00123
들과 비교하여 최솟값과 준최솟값을 검출하여 레지스터에 저장한다. 한편, 순차적으로 계산된
Figure 112011012917433-pat00124
는 선입선출 메모리부(FIFO)에 누적되어
Figure 112011012917433-pat00125
만큼 지연된 후 수체계 변환기(TC_SM2)를 통해 부호와 크기로 분리된다. 분리된
Figure 112011012917433-pat00126
는 비교기를 통해 검출된 최솟값 min0과 비교되어 두 값이 같으면 준최솟값 min1을 새로운 검사노드 크기
Figure 112011012917433-pat00127
로 갱신하고, 다르면 최솟값 min0이
Figure 112011012917433-pat00128
로 갱신된다. 왜냐하면, 상기 식 5에 따르면
Figure 112011012917433-pat00129
번째
Figure 112011012917433-pat00130
를 결정할 때에는 i번째
Figure 112011012917433-pat00131
를 제외한 나머지 변수노드 크기의 집합
Figure 112011012917433-pat00132
중 가장 작은
Figure 112011012917433-pat00133
을 선택하기 때문에 검사노드 i를 구성하는 변수노드의 집합
Figure 112011012917433-pat00134
중 가장 작은
Figure 112011012917433-pat00135
가 발생한 위치에는 준최솟값이 갱신되고 변수 노드 i를 제외한 검사노드 i를 구성하는 나머지 변수노드의 집합
Figure 112011012917433-pat00136
에는 최솟값으로 갱신되기 때문이다. 또한 부호의 누적 곱셈도 동일한 원리로 모든 부호를 누적 곱셈한 다음 i번째
Figure 112011012917433-pat00137
의 부호를 한 번 더 누적 곱셈하여 갱신한다. 부호의 누적 곱셈은 XOR 연산으로 이루어진다. 결정된
Figure 112011012917433-pat00138
의 크기와 부호는 2의 보수 수체계 변환을 통해 새로운 검사노드값
Figure 112011012917433-pat00139
로 갱신된다. 갱신된 검사노드값
Figure 112011012917433-pat00140
과 FIFO에 의해 지연된
Figure 112011012917433-pat00141
는 덧셈연산을 통해 새로운 결정변수값
Figure 112011012917433-pat00142
로 갱신된다. 한편 누적곱셈을 통해 얻어진 검사노드값의 부호 1비트와 비교기를 통해 얻은 mag_type 1비트는 2비트로 변환되어 SM 메모리, 최솟값 검출기를 통해 얻어진 최솟값과 준최솟값은 CNM 메모리에 저장된다.
도 12는 본 발명의 LDPC 복호기에서 복호 기능 유닛(DFU) 연산의 동작 타이밍의 예를 도시한 타이밍도이다. 복호 기능 유닛(DFU)의 동작은 읽기동작, 쓰기동작 그리고 처리(process) 과정으로 이루어진다. 읽기동작은 메모리로부터
Figure 112011012917433-pat00143
Figure 112011012917433-pat00144
를 읽어오는 과정이며, 쓰기동작은 연산된
Figure 112011012917433-pat00145
Figure 112011012917433-pat00146
를 메모리에 쓰는 과정이다. 읽기동작과 쓰기동작은 최초 1회를 제외하고는 항상 중첩되어 일어난다. i번째 레이어의 쓰기동작은 (i-1)번째 레이어의 읽기 동작과 동시에 일어난다. (i-1)번째 레이어의 읽기동작은 새로운 최솟값/준최솟값을 검출하고 부호 누적곱셈 또한 새롭게 시작하기 때문에 i번째 레이어의 검출 결과를 메모리에 쓰기 위해서는 값을 보전할 필요가 있다. 프로세스 과정은 읽기동작 동안 결정된 부호 누적곱셈과 최솟값/준최솟값 검출의 결과를 결과값 레지스터로 저장하는 과정이다.
도 13은 도 11에 도시된 복호 기능 유닛에 적용되는 수체계 변환기의 구체적인 구조를 도시한 회로도이다. 특히, 도 13에 도시된 수체계 변환기는 2의 보수 수체계의 값 a를 부호비트와 크기로 분리하는 블록이며, 하기 식 7을 이용하여 설계될 수 있다.
[식 7]
Figure 112011012917433-pat00147
도 13에 도시된 수체계 변환기(TC_SM 변환기)는 입력된 2의 보수 수체계의 수가 양수인지 음수인지 판단하고, 만약 양수라면 부호는 0이 되고 크기는 입력된 2의 보수를 그대로 출력한다. 만약 입력된 수가 음수라면 부호는 1이 되고 입력된 2의 보수를 상기 식 7과 같이 반전하고 1을 더하여 크기 값을 계산한다. 하기 표 5는 도 13에 도시된 수체계 변환기(TC_SM 변환기)의 동작을 나타낸 것이다.
[표 5]
Figure 112011012917433-pat00148

도 14는 도 11에 도시된 복호 기능 유닛에 적용되는 수체계 변환기의 구체적인 구조를 도시한 회로도이다. 특히, 도 14에 도시된 변환기(SM_TC 변환기)는 부호와 크기를 입력 받아 2의 보수 수체계로 변환하는 블록이며, 하기 식 8을 이용하여 설계될 수 있다.
[식 8]
Figure 112011012917433-pat00149
도 14에 도시된 수체계 변환기(SM_TC 변환기)는 입력된 부호가 양수인지 음수인지 판단하고, 만약 부호가 양수라면 2의 보수 수체계의 MSB는 0이 되고 크기는 입력된 7비트의 크기를 그대로 출력하게 된다. 만약 입력된 부호가 음수라면 2의 보수 수체계의 MSB는 1이 되고 입력된 크기는 상기 식 8과 같이 반전하고 1을 더하여 변환된다. 하기 표 6은 도 14에 도시된 수체계 변환기(SM_TC 변환기)의 동작을 나타낸 것이다.
[표 6]
Figure 112011012917433-pat00150

도 15는 도 11에 도시된 복호 기능 유닛에 적용되는 최솟값 검출기의 구체적인 구조를 도시한 회로도이다.
도 15에 도시한 바와 같이, 최솟값 검출기는 순차적으로 입력되는 부호없는(unsigned) 값들을 비교하여 가장 작은 최솟값과 두 번째로 작은 준최솟값을 검출해 내는 블록이다. 최솟값 검출기는 두 개의 비교기, 검출된 최솟값/준최솟값을 저장하는 레지스터 min0과 min1 그리고 검출기를 제어하는 MUX를 포함하여 구성될 수 있다. 두 개의 비교기는 검출기로 입력되는 값을 각각 최솟값과 준최솟값이 저장된 레지스터의 값과 비교하여 en_m0, en_m1 신호를 발생시킨다. en_m0, en_m1 신호는 각각 최솟값과 준최솟값이 저장된 레지스터의 입력을 활성화하는 신호이다. 설계된 최솟값 검출기는 en_m0 신호가 MUX를 제어하여 새롭게 갱신될 값이 최솟값인지 준최솟값인지 결정한다. 하기 표 7은 최솟값 검출기의 동작을 표로 정리한 것이다.
[표 7]
Figure 112011012917433-pat00151

입력된 값 x가 최솟값과 준최솟값 보다 크다면 en_m0, en_m1은 각각 0, 0이 되고, m0, m1 레지스터의 값은 변하지 않는다. x가 최솟값 보다 크고 준최솟값 보다는 작다면 en_m1 신호가 1이 되어 min1 레지스터를 활성화 시키고 MUX를 거쳐 min1 레지스터에 x가 갱신된다. x가 최솟값과 준최솟값 모두 보다 작다면 en_m0 신호와 en_m1 신호가 모두 1이 되고 min0 레지스터의 값은 MUX를 거쳐 min1에 갱신되고, x는 min0에 갱신되게 된다. 즉 새로운 최솟값이 입력되면 기존의 최솟값은 준최솟값이 되고 새로운 x가 최솟값이 된다.
한편, 도 11의 최솟값과 준최솟값을 생성하는 CNV(Check Node Value)블록은 전술한 도 7을 통해 설명한 바와 같이, 검사노드값
Figure 112011012917433-pat00152
를 생성시켜 주는 블록이다. 이 CNV 블록은 MUX와 2의 보수 수체계 변환기로 이루어져 있다. MUX는 SM 메모리로부터 최솟값 유무를 판단하는 Mag_type 1비트를 받아 0이면 CNM 메모리에서 최솟값을, 1이면 준최솟값을 선택하게 된다. 2의 보수 수체계 변환기는 MUX에서 검사노드 크기
Figure 112011012917433-pat00153
를 SM 메모리를 통해 검사노드값
Figure 112011012917433-pat00154
의 부호를 받아 검사노드값
Figure 112011012917433-pat00155
으로 변환한다.
패리티 검사 행렬 저장부(패리티 검사 행렬 저장부(H- ROM ))
패리티 검사 행렬 저장부(패리티 검사 행렬 저장부(H-ROM))은 LDPC 복호화에 사용되는 패리티 검사 행렬(PCM) 값을 저장하는 메모리이다. IEEE 802.16e 표준에는 6가지 부호율(R=1/2, 2/3(A,B), 3/4(A,B), 5/6)을 지원하는 기본 패리티 검사 행렬(PCM)이 전술한 도 1과 같이 규정되어 있다. 블록 길이 19가지를 모두 지원하기 위해서는 부호율에 따른 기본 패리티 검사 행렬(PCM)과 상기 식 2와 식 3을 사용하여 각 블록 길이에 대한 유효 순환이동 값을 계산하여 사용하여야 한다. IEEE 802.16e 표준에 규정된 패리티 검사 행렬(PCM)은 부호율에 따라 레이어 수(
Figure 112011012917433-pat00156
)이 12, 8, 6, 4로 구성되며, 레이어 당 24개의 부행렬을 가지고 있다. 부행렬 하나의 크기는 블록길이에 따라
Figure 112011012917433-pat00157
(단,
Figure 112011012917433-pat00158
)가 된다. 패리티 검사 행렬(PCM)을 구성하는 부행렬들은 다수가 영(0) 행렬로 이루어져 있다. 예를 들어,
Figure 112011012917433-pat00159
인 경우는 212개의 영행렬이 포함되어 있고,
Figure 112011012917433-pat00160
인 경우는 16개의 영 행렬이 포함되어 있다. 하드웨어 구현시 영행렬은 복호결과에 아무런 영향을 미치지 않기 때문에 영행렬을 제외시킨다면 동작속도를 빠르게 할 수 있으며 패리티 검사 행렬 저장부(H-ROM)의 용량을 줄일 수 있다. 따라서 본 발명에서는 부호율에 따른 6개의 기본 패리티 검사 행렬(PCM)의 정보를 저장하는 대신에, 영 행렬을 제외한 부행렬들의 위치 정보와 순환이동 값만을 패리티 검사 행렬 저장부(패리티 검사 행렬 저장부(H-ROM))에 저장한다.
도 16의 (a)는 종래의 패리티 검사 행렬 저장부(패리티 검사 행렬 저장부(H-ROM)) 저장 기법을 도시한 도면이며, (b)는 본 발명에 따른 패리티 검사 행렬 저장부(패리티 검사 행렬 저장부(H-ROM)) 저장 기법을 도시한 도면이다.
도 16에 도시한 바와 같이, 본 발명에서는 패리티 검사 행렬에서 영행렬을 제외한 가장 많은 부행렬이 존재하는 레이어에 맞추어
Figure 112011012917433-pat00161
을 할당하였다. 부호율이 1/2인 경우 모든 블록길이는 각 레이어마다 영행렬을 제외한 부행렬의 개수는 6~7개이므로 부행렬의 개수를 7개로 할당하였으며, 총
Figure 112011012917433-pat00162
개의 부행렬을 순환이동 값과 부행렬 위치로 식별하도록 한다.
순환이동값 생성부( SVG : Shifting Value Generator )
순환이동값 생성부(SVG)는 IEEE 802.16e 표준에 정의된 6가지 부호율에 대한 기본 행렬을 사용하여 114가지의 동작모드에 적용시키기 위해 기본 행렬의 유효한 순환이동 값을 상기 식 2와 식 3을 사용해 각각의 동작모드를 지원하는 패리티 검사 행렬(PCM)의 순환이동 값을 만드는 블록이다. 도 17은 본 발명의 LDPC 복호기에 적용되는 순환이동값 생성부의 블록 구성도이다.
상기 식 2는 나눗셈 연산을 하드웨어로 구현할 경우 매 클럭마다 결과값을 얻을 수가 없다. 따라서 본 발명에서는 19가지의
Figure 112011012917433-pat00163
결과를 12비트로 양자화하여 룩업테이블(LUT)로 저장한 후 패리티 검사 행렬 저장부(패리티 검사 행렬 저장부(H-ROM))에 저장된 부호율에 따른 기본행렬의 순환이동 값을 사용하여 곱셈 연산을 수행한다.
Figure 112011012917433-pat00164
값은 소수점 이하 12비트로 양자화 한 값이다. 12비트로 양자화 된 값은
Figure 112011012917433-pat00165
의 값과 약간의 오차가 발생하게 되며, 이를 보상하기 위한 회로가 필요하다. Tmul 블록은
Figure 112011012917433-pat00166
값을 소수점 이하 12비트로 양자화 한 값과 기본 행렬의 값을 곱하여 19비트의 결과 값 중 상위 7비트 값에 소수점 이하 6비트의 값이 ‘111111’인 경우 정수부에 1을 보상하는 회로이다. 상기 식 3은 부호율이 2/3A인 경우에만 사용된다. 2/3A의 기본행렬의 유효한 순환이동의 값은 48 미만이므로,
Figure 112011012917433-pat00167
가 48 이상인 경우에는 기본 행렬을 그대로 사용하고, 44이하인 경우
Figure 112011012917433-pat00168
를 사용해 나머지 연산을 한다.
Figure 112011012917433-pat00169
가 가장 작은 경우는 24이기 때문에 48 미만의 기본 행렬의 순환이동 값을
Figure 112011012917433-pat00170
로 한 번 뺀 값이 실제 나머지 연산의 결과와 동일하다. 따라서 본 발명에서는 도 17에 도시된 바와 같이
Figure 112011012917433-pat00171
가 48이상인 경우는 패리티 검사 행렬 저장부(패리티 검사 행렬 저장부(H-ROM))의 데이터를 R_2_3A_en 신호를 사용하여 바이패스(bypass) 시키고, 그 외의 경우는 Sub 블록 내의 비교기에서
Figure 112011012917433-pat00172
보다 값이 클 경우만 기본행렬의 순환이동 값에서
Figure 112011012917433-pat00173
를 감산한다.
본 발명의 상세한 설명에서는 구체적인 실시예에 관하여 설명하였으나 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시예에 국한되지 않으며, 후술되는 특허청구의 범위 및 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
11: 검사노드 메모리(제1 메모리부) 12: APP 메모리(제1 메모리부)
13: 제어부 131: 패리티 검사 행렬 저장부
14: 순환이동값 생성부 15: 치환부
16: 복호 기능 유닛

Claims (7)

  1. IEEE 802.16e 표준에 따른 LDPC 부호화 데이터를 복호화하는 LDPC 복호기에 있어서,
    결정변수값을 저장하는 제1 메모리;
    검사노드값을 저장하는 제2 메모리;
    IEEE 802.16e 표준에 정의된 부호율을 지원하는 기본 패리티 검사 행렬에 대한 정보를 저장하는 패리티 검사 행렬 저장부;
    상기 기본 패리티 검사 행렬을 사용하여, IEEE 802.16e 표준에 의해 정의되는 블록길이 및 부호율에 따른 복수의 동작모드에 대한 패리티 검사 행렬의 순환이동값을 생성하는 순환이동값 생성부;
    상기 복수의 동작모드에 대한 패리티 검사 행렬에 따라 복호화되는 데이터를 순환이동시키는 치환부; 및
    상기 복수의 레이어 각각의 부행렬에 따른 상기 결정변수값 및 검사노드값을 이용하여 복호 연산을 수행하는 복호 기능 유닛
    을 포함하는 모바일 와이맥스용 LDPC 복호기.
  2. 제1항에 있어서, 상기 제2 메모리는,
    상기 레이어의 영행렬을 제외한 유효 부행렬의 갱신 후 최소값/준최소값의 부호를 나타내는 하나의 비트와 및 갱신 후 최소값/준최소값 여부를 나타내는 하나의 비트를 포함하는 두 비트를 저장하는 메모리와, 상기 레이어에 포함된 부행렬의 최소값 및 준최소값을 저장하는 메모리를 포함하는 것을 특징으로 하는 모바일 와이맥스용 LDPC 복호기.
  3. 제1항에 있어서, 상기 패리티 검사 행렬 저장부는,
    상기 기본 패리티 검사 행렬에서 영 행렬을 제외한 부행렬들의 위치 정보 및 순환이동 값을 저장하는 것을 특징으로 하는 모바일 와이맥스용 LDPC 복호기.
  4. 제1항에 있어서, 상기 제1 메모리부 및 제2 메모리부는,
    읽기 동작 및 쓰기 동작이 동시에 수행되는 듀얼 포트 메모리인 것을 특징으로 하는 모바일 와이맥스용 LDPC 복호기.
  5. 제4항에 있어서, 상기 제1 메모리부 및 제2 메모리부는,
    상기 읽기 동작 및 쓰기 동작이 레이어 단위로 지연되어 각각 순차적으로 이루어지며, 읽기 동작 및 쓰기 동작의 억세스 중복을 방지하기 위해 레이어 내 부행렬의 순서를 재정렬하여 어드레싱되는 것을 특징으로 하는 모바일 와이맥스용 LDPC 복호기.
  6. 제4항에 있어서,
    읽기 동작 및 쓰기 동작이 중복되는 변수에 대해 상기 제2 메모리부 대신 상기 치환부에 해당 데이터를 입력하는 것을 특징으로 하는 모바일 와이맥스용 LDPC 복호기.
  7. 제1항에 있어서, 상기 복호 기능 유닛은,
    상기 검사노드값와 상기 결정변수값을 뺄셈 연산하여 출력하는 뺄셈기;
    상기 뺄셈기의 출력을 부호와 크기로 분리하는 제1 수체계 변환기;
    상기 제1 수체계 변환기에서 분리된 부호를 순차적으로 곱셈하는 XOR 논리 연산부;
    상기 제1 수체계 변환기에서 분리된 크기를 순차적으로 입력받아 최소값 및 준최소값을 검출하는 최소값 검출부;
    상기 뺄셈기의 출력을 순차적으로 저장하고 지연 출력하는 선입선출 메모리부;
    상기 선입선출 메모리부의 출력을 부호와 크기로 분리하는 제2 수체계 변환기;
    상기 제2 수체계 변환기에서 분리된 크기와 상기 최소값을 비교하는 비교기;
    상기 비교기의 비교결과, 상기 제2 수체계 변환기에서 분리된 크기와 상기 최소값이 동일하면 상기 준최소값을 새로운 검사노드값의 크기로 갱신 출력하고, 상기 제2 수체계 변환기에서 분리된 크기와 상기 최소값이 상이하면 상기 최소값을 새로운 검사노드값의 크기로 갱신 출력하는 먹스;
    상기 먹스의 출력을 크기로 하고 상기 XOR 논리 연산부의 곱셈 결과를 부호로 하는 값을 2의 보수 수체계 변환하여 출력하는 제3 수체계 변환기; 및
    상기 제3 수체계 변환기의 출력과 상기 선입선출 메모리부의 출력을 합산하여 새로운 결정변수값을 출력하는 덧셈 연산부를 포함하는 것을 특징으로 하는 모바일 와이맥스용 LDPC 복호기.
KR1020110015815A 2011-02-23 2011-02-23 모바일 와이맥스용 ldpc 복호기 KR101206137B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110015815A KR101206137B1 (ko) 2011-02-23 2011-02-23 모바일 와이맥스용 ldpc 복호기

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110015815A KR101206137B1 (ko) 2011-02-23 2011-02-23 모바일 와이맥스용 ldpc 복호기

Publications (2)

Publication Number Publication Date
KR20120096627A KR20120096627A (ko) 2012-08-31
KR101206137B1 true KR101206137B1 (ko) 2012-11-28

Family

ID=46886468

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110015815A KR101206137B1 (ko) 2011-02-23 2011-02-23 모바일 와이맥스용 ldpc 복호기

Country Status (1)

Country Link
KR (1) KR101206137B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101698875B1 (ko) 2013-03-14 2017-01-24 한국전자통신연구원 Ldpc 부호의 복호 방법 및 장치
KR101600759B1 (ko) * 2015-09-01 2016-03-07 인하대학교 산학협력단 연속 제거 극 부호 복호기를 위한 간단한 병합 처리 연산 방법 및 장치
CN113612575B (zh) * 2021-06-30 2022-10-18 南京大学 面向Wimax协议的QC-LDPC译码器译码方法及系统
CN117879620B (zh) * 2024-03-13 2024-07-05 荣耀终端有限公司 译码方法、可读存储介质、程序产品及电子设备

Also Published As

Publication number Publication date
KR20120096627A (ko) 2012-08-31

Similar Documents

Publication Publication Date Title
JP7372369B2 (ja) 構造的ldpcの符号化、復号化方法および装置
KR101504083B1 (ko) 비휘발성 메모리를 갖춘 멀티레벨 시스템에서의 진보된 비트별 동작 및 장치
US8065598B1 (en) Low latency programmable encoder with outer systematic code and low-density parity-check code
KR101203340B1 (ko) 터보 ldpc 디코딩
JP4296949B2 (ja) 復号装置及び方法、並びに情報処理装置及び方法
US8572463B2 (en) Quasi-cyclic LDPC encoding and decoding for non-integer multiples of circulant size
CN110771047B (zh) 具有f功能和g功能的llr域计算的极性解码器
JP4602406B2 (ja) データをエンコード及びデコードするための方法並びに装置
KR100861674B1 (ko) 송신기 및 수신기를 동작시키는 방법, 및 데이터를 엔코딩 및 디코딩하는 장치
CN101803210A (zh) 使用块结构奇偶校验矩阵来提供半并行低密度奇偶校验解码的方法、装置、计算机程序产品和设备
JPWO2010073922A1 (ja) 誤り訂正符号化装置、復号装置、符号化方法、復号方法、及びそのプログラム
KR101206137B1 (ko) 모바일 와이맥스용 ldpc 복호기
JP5333233B2 (ja) 復号装置、データ蓄積装置、データ通信システム、および復号方法
US9312884B2 (en) Double QC-LDPC code
US8504894B1 (en) Systematic encoding for non-full row rank, quasi-cyclic LDPC parity check matrices
CN109935263B (zh) 非易失性存储器的编译码方法及存储系统
JP2009177416A (ja) 復号装置および方法、プログラム、並びに記録媒体
CN114499541A (zh) 分层译码方法、装置、终端设备及介质
WO2017193614A1 (zh) 结构化ldpc的编码、译码方法及装置
KR102607761B1 (ko) 극 부호를 이용하는 복호화를 위한 복호 위치 제어 정보 생성 방법 및 장치
KR102511779B1 (ko) 극 부호 연속 제거 비트 반전 복호 장치 및 방법
CN113131947B (zh) 译码方法、译码器和译码装置
JP2006340016A (ja) 誤り訂正符号復号装置及びそれを用いた復号方法
KR101154923B1 (ko) 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법
RU2811072C1 (ru) Способ декодирования, декодер и устройство декодирования

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
FPAY Annual fee payment

Payment date: 20151110

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161102

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee