KR102000268B1 - 복호화 장치 및 복호화 방법 - Google Patents

복호화 장치 및 복호화 방법 Download PDF

Info

Publication number
KR102000268B1
KR102000268B1 KR1020130006039A KR20130006039A KR102000268B1 KR 102000268 B1 KR102000268 B1 KR 102000268B1 KR 1020130006039 A KR1020130006039 A KR 1020130006039A KR 20130006039 A KR20130006039 A KR 20130006039A KR 102000268 B1 KR102000268 B1 KR 102000268B1
Authority
KR
South Korea
Prior art keywords
matrix
cyclic
parity check
node
check matrix
Prior art date
Application number
KR1020130006039A
Other languages
English (en)
Other versions
KR20130092441A (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 연세대학교 산학협력단
Publication of KR20130092441A publication Critical patent/KR20130092441A/ko
Application granted granted Critical
Publication of KR102000268B1 publication Critical patent/KR102000268B1/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/1131Scheduling of bit node or check node 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • H03M13/3715Adaptation to the number of estimated errors or to the channel state
    • 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

Landscapes

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

Abstract

본 발명은 복호화 장치 및 복호화 방법에 관한 것으로, 패리티 검사 행렬에 대응하는 검사 노드와 비트 노드의 그룹들을 포함하며, 상기 검사 노드와 상기 비트 노드에 대한 소프트 정보를 생성하는 통합 노드 프로세서; 상기 통합 노드 프로세서로부터 상기 소프트 정보를 입력받는 가변 인터커넥션 네트워크; 그리고 상기 패리티 검사 행렬에 따라 상기 가변 인터커넥션 네트워크로부터 출력되는 소프트 정보를 순환 이동하여 상기 통합 노드 프로세서로 출력하는 복수의 순환 이동부를 포함하고, 상기 가변 인터커넥션 네트워크는, 상기 복수의 순환 이동부와의 인터커넥션을 상기 패리티 검사 행렬에 따라 가변적으로 설정하는 복호화 장치를 제공한다.

Description

복호화 장치 및 복호화 방법{DECODER AND DECODING METHOD}
본 발명은 데이터를 복호화하는 복호화 장치 및 복호화 방법에 관한 것이다.
최근 LDPC 부호(codes)는 AWGN 채널에서 섀넌(Shannon)의 채널 성능 한계(limit)에 가장 근접한 오류정정 성능을 보임으로써 IEEE 802.11n WLAN, IEEE 802.16e 모바일(mobile) WiMAX, DVB-T2 와 같은 무선 통신 시스템에서 채널 부호 기법으로 사용되고 있다. 이와 같은 무선 통신 시스템에서는 채널 환경, 전송 신호의 중요도에 따라서 다양한 부호율 및 블록 길이를 사용하여 부호화 및 복호화를 수행할 필요가 있다. 따라서, 다양한 부호율 및 블록 길이를 지원할 수 있는 복호기가 요구된다. 또한, Gbps급 전송률(data rate)을 지원하는 통신 시스템의 출현에 따라 채널 복호기 또한 Gbps급 스루풋(throughput)을 지원해야 하기 때문에 고속으로 동작하는 LDPC 복호기의 기술 개발이 요구된다.
본 발명은 다양한 부호율과 블록 길이를 지원하며, 고속으로 동작하는 복호화 장치 및 복호화 방법을 제공하는 것을 목적으로 한다.
본 발명이 해결하고자 하는 과제는 이상에서 언급된 과제로 제한되지 않는다. 언급되지 않은 다른 기술적 과제들은 이하의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
본 발명의 일 측면에 따른 복호화 장치는 패리티 검사 행렬에 대응하는 검사 노드와 비트 노드의 그룹들을 포함하며, 상기 검사 노드와 상기 비트 노드에 대한 소프트 정보를 생성하는 통합 노드 프로세서; 상기 통합 노드 프로세서로부터 상기 소프트 정보를 입력받는 가변 인터커넥션 네트워크; 그리고 상기 패리티 검사 행렬에 따라 상기 가변 인터커넥션 네트워크로부터 출력되는 소프트 정보를 순환 이동하여 상기 통합 노드 프로세서로 출력하는 복수의 순환 이동부를 포함한다. 상기 가변 인터커넥션 네트워크는, 상기 복수의 순환 이동부와의 인터커넥션을 상기 패리티 검사 행렬에 따라 가변적으로 설정한다.
일 실시 예로서, 상기 복호화 장치는 복수 개의 부호율 또는 복수 개의 부호 길이에 대응하는 복수 개의 패리티 검사 행렬을 저장하는 패리티 검사 행렬 저장부를 더 포함하며, 상기 가변 인터커넥션 네트워크는, 상기 복수 개의 패리티 검사 행렬 중 소정의 부호율 또는 소정의 부호 길이에 대응하는 상기 패리티 검사 행렬에 따라 상기 복수의 순환 이동부와의 인터커넥션을 설정할 수 있다.
일 실시 예로서, 상기 통합 노드 프로세서의 각 그룹은 상기 패리티 검사 행렬의 서브 행렬의 크기에 대응하는 검사 노드들의 제1 레지스터들과 비트 노드들의 제2 레지스터들을 포함하며, 상기 제1 레지스터들 및 상기 제2 레지스터들은 비트 노드들 또는 검사 노드들로부터 전송받은 브로드 캐스팅(broadcasting) 입력으로부터 합-곱 알고리즘(Sum-Product Algorithm)에 따라 생성되는 상기 소프트 정보를 저장하고, 상기 서브 행렬은 상기 패리티 검사 행렬 중의 일부인 부분 행렬이고, 정사각 행렬일 수 있다.
일 실시 예로서, 상기 통합 노드 프로세서는 상기 검사 노드 및 상기 비트 노드로 동작 가능한 검사 및 비트 노드 프로세서들을 포함하고, 상기 가변 인터커넥션 네트워크는 상기 패리티 검사 행렬에 따라 상기 복수의 순환 이동부 중 대응하는 하나 이상의 순환 이동부와 상기 인터커넥션을 설정하는 인터커넥션 스위치들을 포함하고, 상기 인터커넥션 스위치들은 상기 검사 및 비트 노드 프로세서들과 일대일 대응되도록 연결될 수 있다.
일 실시 예로서, 상기 인터커넥션 스위치들은 상기 패리티 검사 행렬 중 상기 검사 노드와 상기 비트 노드가 연결되는 서브 행렬들의 정보에 기초하여, 상기 하나 이상의 순환 이동부와 상기 인터커넥션을 설정할 수 있다.
일 실시 예로서, 각각의 인터커넥션 스위치는, 상기 통합 노드 프로세서로부터의 입력을 상기 하나 이상의 순환 이동부로 동시에 전송할 수 있다.
일 실시 예로서, 상기 복수의 순환 이동부는 각각, 상기 패리티 검사 행렬의 서브 행렬의 순환 정보에 따라 상기 가변 인터커넥션 네트워크로부터의 입력을 제1 사이클 단위로 순환 이동하는 제1 순환 쉬프터; 그리고 상기 순환 정보에 따라 상기 제1 순환 쉬프터의 출력을 제2 사이클만큼 순환 이동하는 제2 순환 쉬프터들을 포함하고, 상기 서브 행렬은 상기 패리티 검사 행렬 중의 일부인 부분 행렬로서, 정사각 행렬인 동시에, 단위 행렬의 순환 행렬 또는 영행렬이고, 상기 순환 정보는 상기 순환 행렬의 순환 이동 크기일 수 있다.
일 실시 예로서, 상기 제2 사이클은 상기 제1 사이클 단위보다 작은 값을 가질 수 있다.
일 실시 예로서, 상기 제1 순환 쉬프터는 상기 가변 인터커넥션 네트워크로부터의 입력을 상기 제1 사이클 단위로 순환 이동하는 복수 개의 순환 쉬프트 회로들을 포함하며, 상기 복수 개의 순환 쉬프트 회로들의 출력을 선택하여 상기 제2 순환 쉬프터들로 출력할 수 있다.
본 발명의 다른 일 측면에 따른 무선 통신 시스템은 패리티 검사 행렬을 이용하여 데이터로부터 부호어를 생성하는 LDPC 부호화 장치를 포함하는 송신 장치; 그리고 상기 패리티 검사 행렬을 이용하여 상기 부호어를 복호화하여 상기 데이터를 복원하는 LDPC 복호화 장치를 포함하는 수신 장치를 포함하며, 상기 LDPC 복호화 장치는, 패리티 검사 행렬에 대응하는 검사 노드와 비트 노드의 그룹들을 포함하며, 상기 검사 노드와 상기 비트 노드에 대한 소프트 정보를 생성하는 통합 노드 프로세서; 상기 통합 노드 프로세서로부터 상기 소프트 정보를 입력받는 가변 인터커넥션 네트워크; 그리고 상기 패리티 검사 행렬에 따라 상기 가변 인터커넥션 네트워크로부터 출력되는 소프트 정보를 순환 이동하여 상기 통합 노드 프로세서로 출력하는 복수의 순환 이동부를 포함하고, 상기 가변 인터커넥션 네트워크는, 상기 복수의 순환 이동부와의 인터커넥션을 상기 패리티 검사 행렬에 따라 가변적으로 설정할 수 있다.
일 실시 예로서, 상기 LDPC 복호화 장치는 복수 개의 부호율 또는 복수 개의 부호 길이에 대응하는 복수 개의 패리티 검사 행렬을 저장하는 패리티 검사 행렬 저장부를 더 포함하며, 상기 가변 인터커넥션 네트워크는, 상기 복수 개의 패리티 검사 행렬 중 소정의 부호율 또는 소정의 부호 길이에 대응하는 상기 패리티 검사 행렬에 따라 상기 복수의 순환 이동부와의 인터커넥션을 설정할 수 있다.
일 실시 예로서, 상기 복수의 순환 이동부는 각각, 상기 패리티 검사 행렬의 서브 행렬의 순환 정보에 따라 상기 가변 인터커넥션 네트워크로부터의 입력을 제1 사이클 단위로 순환 이동하는 제1 순환 쉬프터; 그리고 상기 순환 정보에 따라 상기 제1 순환 쉬프터의 출력을 제2 사이클만큼 순환 이동하는 제2 순환 쉬프터들을 포함하고, 상기 서브 행렬은 상기 패리티 검사 행렬 중의 일부인 부분 행렬로서, 정사각 행렬인 동시에, 단위 행렬의 순환 행렬 또는 영행렬이고, 상기 순환 정보는 상기 순환 행렬의 순환 이동 크기일 수 있다.
본 발명의 또 다른 일 측면에 따른 복호화 방법은 통합 노드 프로세서에 의해, 패리티 검사 행렬에 대응하는 검사 노드와 비트 노드에 대한 소프트 정보를 생성하는 단계; 가변 인터커넥션 네트워크에 의해, 상기 패리티 검사 행렬에 따라 복수의 순환 이동부와의 인터커넥션을 가변적으로 설정하는 단계; 그리고 상기 복수의 순환 이동부에 의해, 상기 가변 인터커넥션 네트워크로부터 입력되는 신호를 상기 패리티 검사 행렬에 따라 순환 이동하여 상기 통합 노드 프로세서로 출력하는 단계를 포함하고, 상기 인터커넥션을 가변적으로 설정하는 단계는, 상기 가변 인터커넥션 네트워크와 상기 복수의 순환 이동부 간의 인터커넥션을 상기 패리티 검사 행렬에 따라 가변적으로 설정할 수 있다.
일 실시 예로서, 상기 인터커넥션을 가변적으로 설정하는 단계는, 복수 개의 패리티 검사 행렬 중 소정의 부호율 또는 소정의 부호 길이에 대응하는 상기 패리티 검사 행렬에 따라 상기 가변 인터커넥션 네트워크와 상기 복수의 순환 이동부 간의 상기 인터커넥션을 설정할 수 있다.
일 실시 예로서, 상기 통합 노드 프로세서로 출력하는 단계는, 상기 복수의 순환 이동부에 의해, 상기 패리티 검사 행렬의 서브 행렬의 순환 정보에 따라 상기 가변 인터커넥션 네트워크로부터 입력되는 신호를 제1 사이클 단위로 순환 이동하는 단계; 그리고 상기 복수의 순환 이동부에 의해, 상기 순환 정보에 따라 상기 제1 사이클 단위로 순환된 신호를 제2 사이클만큼 순환 이동하는 단계를 포함하고, 상기 서브 행렬은 상기 패리티 검사 행렬 중의 일부인 부분 행렬로서, 정사각 행렬인 동시에, 단위 행렬의 순환 행렬 또는 영행렬이고, 상기 순환 정보는 상기 순환 행렬의 순환 이동 크기일 수 있다.
본 발명의 실시 예에 의하면 다양한 부호율과 블록 길이를 지원할 수 있는 복호화 장치가 제공된다.
또한, 본 발명의 실시 예에 의하면 복호화를 고속으로 수행할 수 있다.
도 1은 본 발명의 실시 예에 따른 무선 통신 시스템의 구성도이다.
도 2는 패리티 검사 행렬을 예시적으로 나타낸 도면이다.
도 3은 위 수학식 6에 나타낸 행렬을 이분 그래프(bipartite graph) 형태로 나타낸 도면이다.
도 4는 본 발명의 일 실시예에 따른 LDPC 복호화 장치의 구성도이다.
도 5는 본 발명의 일 실시예에 따른 LDPC 복호화 장치를 구성하는 통합 노드 프로세서의 구성도이다.
도 6은 본 발명의 일 실시예에 따른 LDPC 복호화 장치를 구성하는 가변 인터커넥션 네트워크의 인터커넥션 스위치부의 구성도이다.
도 7은 LDPC 부호의 예시적인 패리티 검사 행렬을 나타낸 도면이다.
도 8은 본 발명의 일 실시예에 따른 LDPC 복호화 장치를 구성하는 순환 이동부의 구성도이다.
도 9는 도 8에 도시된 제1 순환 쉬프터의 구성도이다.
도 10은 도 8에 도시된 각각의 제2 순환 쉬프터의 구성도이다.
본 발명의 다른 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술 되는 실시 예를 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예는 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
만일 정의되지 않더라도, 여기서 사용되는 모든 용어들(기술 혹은 과학 용어들을 포함)은 이 발명이 속한 종래 기술에서 보편적 기술에 의해 일반적으로 수용되는 것과 동일한 의미를 가진다. 일반적인 사전들에 의해 정의된 용어들은 관련된 기술 그리고/혹은 본 출원의 본문에 의미하는 것과 동일한 의미를 갖는 것으로 해석될 수 있고, 그리고 여기서 명확하게 정의된 표현이 아니더라도 개념화되거나 혹은 과도하게 형식적으로 해석되지 않을 것이다.
본 발명의 실시예에 따른 복호화 장치는 다양한 패리티 검사 행렬에 대하여 동작하는 비트 노드와 검사 노드 사이의 인터커넥션 네트워크의 가변적 제어를 통해 다양한 부호율과 블록 길이를 지원할 수 있다. 본 발명의 실시예에 따른 복호화 장치는 비트 노드와 검사 노드를 통합하여 서로 다른 클락 사이클에 동작하는 연산기를 공유함으로써 전병렬처리시 증가하는 복잡도를 감소시킬 수 있다. 본 발명의 실시예에 따른 복호화 장치는 저복잡도 병렬처리에 효율적인 순환 쉬프터(cyclic shifter) 로직을 사용한다.
도 1은 본 발명의 실시 예에 따른 무선 통신 시스템의 구성도이다. 도 1을 참조하면, 무선 통신 시스템은 송신 장치(40)와 수신 장치(80)를 포함한다. 송신 장치(40)는 LDPC 부호화 장치(50)와 변조기(60)를 포함한다. LDPC 부호화 장치(50)는 데이터(m)를 입력받고, 전달받은 데이터(m)를 부호화(encoding)하여 부호어(c)를 출력한다. 변조기(60)는 LDPC 부호화 장치(50)로부터 부호어(c)를 입력받고, 부호어(c)를 무선변조한다. 무선변조된 부호어는 안테나를 통하여 수신 장치(80)에 송신된다. 수신 장치(80)는 복조기(90) 및 LDPC 복호화 장치(100)를 포함한다. 복조기(90)는 안테나를 통하여 무선변조된 부호어를 입력받고, 이를 부호어(c)로 복조한다. LDPC 복호화 장치(100)는 부호어(c)를 입력받고, 부호어(c)를 복호화(decoding)하여 데이터(m)를 출력한다.
이와 같이, 도 1에 도시한 무선 통신 시스템(10)은 LDPC 부호화 장치(50)를 사용하여 데이터(m)를 부호어(c)로 부호화하고, LDPC 복호화 장치(100)를 사용하여 부호어(c)를 데이터(m)로 복호화함으로써, 데이터(m)를 안정적으로 송수신한다. LDPC 복호화 장치(100)는 예를 들어 아래의 수학식 1에 따라, 패리티 검사 행렬(H)을 이용하여 부호어(c)에 오류가 있는지 여부를 판단할 수 있다. 여기서, 패리티 검사 행렬은 LDPC 복호화 장치(100)에 수신된 부호어(c)에 오류가 포함되는지를 검사하기 위한 행렬을 의미한다.
[수학식 1]
H·cT = 0
수학식 1에서 부호어(c)와 패리티 검사 행렬 간의 행렬 연산 값이 '0'이면 부호어(c)에 오류가 없는 것으로 판단하고, '0'이 아니면 부호어(c)에 오류가 있는 것으로 판단한다.
도 2는 패리티 검사 행렬을 예시적으로 나타낸 도면이다. 도 2에 도시된 바와 같이, 후술되는 준순환(quasi-cyclic) LDPC 부호에서 사용되는 패리티 검사 행렬(H)은 복수의 서브 행렬을 포함할 것이다. 각각의 서브행렬은 정사각 행렬이며, 단위 행렬의 순환 행렬이거나 영행렬이다. 패리티 검사 행렬(H)은 아래의 수학식 2와 같이 제1 행렬(H1)과 제2 행렬(H2)로 구분될 수 있다. 이때, 제2 행렬(H2)은 역행렬을 갖는 정사각 행렬이다.
[수학식 2]
H = [H1, H2]
아래의 수학식 3을 참조하면, LDPC 부호화 장치(50)에 의하여 생성된 부호어(c)는 데이터(m)와 패리티 비트(parity bit)(p)로 구분될 수 있다.
[수학식 3]
c = [m, p]
LDPC 부호화 장치(50)에서 데이터(m)를 부호화하기 위한 패리티 비트(p)는 패리티 검사 행렬(H)을 이용하여 유도된다. 예를 들어, 패리티 검사 행렬(H)은 l 개의 열들과 p(p=l-n) 개의 행들로 구성된다. 제1 행렬(H1)은 p개의 행들과 n개의 열들로 구성되며, 복수의 서브 행렬을 포함한다. 제2 행렬(H2)은 p(p=l-n)개의 행들과 p개의 열들로 구성된다.
앞서 언급된 수학식 1 내지 3은 아래의 수학식 4를 유도할 수 있다.
[수학식 4]
[H1, H2]·[m, p]T = H1·mT + H2·pT = 0
pT = - H2-1·H1·mT
무선 통신 시스템(10)에서 부호어의 다양한 부호율(code rate) 및 블록 길이를 지원하기 위하여, 복수의 패리티 검사 행렬들이 이용한다. 예를 들어, IEEE 802.11n 시스템의 경우, 12개의 패리티 검사 행렬이 정의된다.
패리티 검사 행렬의 원소를 임의로 생성할 경우, 패리티 검사 행렬의 정보를 저장하기 위하여 많은 메모리 공간을 필요로 하지만, 준순환(quasi-cyclic) LDPC 부호를 사용하여 LDPC(Low Density Parity Check, 저밀도 패리티 검사) 부호화 및 복호화를 수행하면, 패리티 검사 행렬을 저장하기 위한 메모리의 양을 감소시키고 연산 과정을 간단히 할 수 있다.
준순환 LDPC 부호에서, 패리티 검사 행렬은 도 2에 도시한 바와 같이 여러 개의 작은 정사각 행렬들로 나누어지게 된다. 이러한 준순환 LDPC 부호의 패리티 검사 행렬(H)은 아래의 수학식 5와 같이 표현될 수 있다.
[수학식 5]
Figure 112013005294716-pat00001
패리티 검사 행렬(H)에서 각각의 hi ,j는 단위 행렬의 순환행렬 또는 영행렬을 나타낸다. 이러한 구조적 LDPC 부호의 특성에 기인하여, 하드웨어 구조에서 패리티 검사 행렬을 저장하는 메모리의 크기를 효과적으로 줄일 수 있다. LDPC 부호의 부호어를 복호화하는 과정은 이분 그래프(bipartite graph)를 통하여 설명될 수 있다. 아래의 수학식 6은 이분 그래프에 대응하는 행렬을 나타낸다.
[수학식 6]
Figure 112013005294716-pat00002
도 3은 위 수학식 6에 나타낸 행렬을 이분 그래프(bipartite graph) 형태로 나타낸 도면이다. 도 3에 도시된 바와 같이, 이분 그래프는 왼쪽의 비트 노드와 오른쪽의 검사 노드로 구성될 수 있다. 비트 노드의 개수는 패리티 검사 행렬에서 열의 개수와 동일하고, 검사 노드의 개수는 패리티 검사 행렬에서 행의 개수와 동일하다.
위 수학식 6의 행렬에서, 원소 '1'은 이분 그래프에서 서로 대응하는 비트 노드와 검사 노드를 연결하는 엣지(edge)를 나타낸다. 예를 들어, 수학식 6에 나타낸 행렬의 (3,5)의 원소가 '1'이기 때문에, 도 3에서 다섯 번째 비트 노드와 세 번째 검사 노드가 엣지(edge)로 연결된다. 이러한 방식으로 비트 노드와 검사 노드 사이에 인터커넥션(interconnection)이 형성된다.
패리티 검사 행렬에 따라 부호화된 부호어의 복호화 과정은 메시지 패싱 알고리즘(message passing algorithm)에 의해서 수행된다. 메시지 패싱 알고리즘은 엣지(edge)로 연결된 비트 노드와 검사 노드가 소프트 정보(soft information)를 주고받으면서 부호어를 복호하는 과정이다. 일반적으로 소프트 정보(soft information)를 반복해서 주고 받기 때문에, 복호화 과정은 여러 번의 반복(iteration) 과정을 거쳐서 수행된다. 메시지 패싱 알고리즘의 과정은 다음과 같다.
LDPC 부호의 부호비트의 길이가 N이고, 정보비트의 길이가 K인 경우, 패리티 비트의 길이는 N-K로 정해진다. 부호어를 c = [c1, c2,..., cN]로 나타낼 때, 관계식(xi = 1-2ci)에 의해 부호어는 심볼 시퀀스(x = [x1, x2,..., xN])로 매핑될 수 있다. 전송 심볼 x는 부가 백색 가우스 잡음(AWGN; Additive White Gaussian Noise) 채널을 통과하여 수신단으로 수신되며, 수신단에 수신된 심볼 시퀀스를 "y = [y1, y2,..., yN]"로 나타낼 수 있다.
k번째 반복(iteration)에서 발생하는 소프트 정보(soft information)를
Figure 112013005294716-pat00003
Figure 112013005294716-pat00004
로 정의한다.
Figure 112013005294716-pat00005
는 j번째 비트 노드에서 생성되어 i번째 검사 노드로 전송되는 소프트 정보(soft information)를 나타내고,
Figure 112013005294716-pat00006
는 i번째 검사 노드에서 생성되어 j번째 비트 노드로 전송되는 소프트 정보를 나타낸다. LDPC 복호화를 위한 대표적인 반복 메시지 패싱 알고리즘(iterative message passing algorithm)인 합-곱 알고리즘(SPA; Sum-Product Algorithm)에 대해 설명하면 다음과 같다.
초기화(Initialization)를 위해, j=1,2,...,N(N은 비트 노드 개수)일 때의 고유 정보(intrinsic information)를 계산한다. 고유 정보는 채널을 통과한 심볼 값으로부터 구할 수 있다. 고유 정보의 개수는 비트 노드의 개수와 동일하다. 고유 정보는 수신 심볼로부터 로그우도비(LLR; Log Likelihood Ratio) 형태로 아래의 수학식 7과 같이 나타낼 수 있다.
[수학식 7]
Figure 112013005294716-pat00007
반복적 복호화(Iterative decoding)에 대해 설명한다. 먼저, 초기화를 통해 생성된 고유 정보(intrinsic information)가 첫 번째 소프트 정보(soft information)로써 비트 노드에서 검사 노드로 전달된다. 비트 노드로부터 고유 정보를 받은 검사 노드는 소프트 정보(soft information)를 생성하여 다시 연결된 비트 노드에 전달한다.
검사 노드의 동작에 대해 살펴보면, i = 1, 2,..., N-K(N은 부호비트의 길이, K는 정보비트의 길이, N-K는 검사 노드의 개수)에 대해 생성되는 소프트 정보
Figure 112013005294716-pat00008
는 예를 들어 아래의 수학식 8과 같다. 이때, N(i)는 i번째 검사 노드에 연결된 비트 노드 집합이다.
[수학식 8]
Figure 112013005294716-pat00009
Figure 112013005294716-pat00010
비트 노드 동작에 대해 살펴보면, j = 1, 2,..., N(N은 부호비트의 길이)에 대하여 생성되는 소프트 정보
Figure 112013005294716-pat00011
는 예를 들어 아래의 수학식 9와 같다.
[수학식 9]
Figure 112013005294716-pat00012
수학식 9에서, M(j)는 j번째 비트 노드에 연결된 검사 노드의 집합이고,
Figure 112013005294716-pat00013
는 j번째 비트 노드와 연결된 i' 번째 검사 노드로 다시 전송되는 소프트 정보(soft information)이다. 비트 결정을 할 때 필요한 소프트 정보
Figure 112013005294716-pat00014
는 예를 들어 아래의 수학식 10으로 나타낼 수 있다.
[수학식 10]
Figure 112013005294716-pat00015
수학식 10에서,
Figure 112013005294716-pat00016
의 값이 0보다 크면, 부호어의 j번째 비트를 0으로, 0보다 작으면 1로 결정한다. LDPC 복호화 장치(100)는 수학식 10에 의하여, 매 반복(iteration)마다 복호된 부호어를 얻을 수 있다.
LDPC 복호화 장치(100)는 복호된 부호어(c)가 앞서 언급된 수학식 1의 조건을 만족하면 정확하게 복호된 부호어라고 판단하며, 부호어 중에서 정보 비트를 추출한다. 만약, 복호된 부호어(c)가 수학식 1의 조건을 만족하지 않으면 다시 반복(iteration)을 수행한다.
LDPC 복호화 장치(100)에서, LDPC 부호의 복호에 사용되는 반복적 메시지 패싱 알고리즘(iterative message passing algorithm)인 합-곱 알고리즘(SPA)은 매 반복(iteration)마다 대응하는 비트 노드와 검사 노드 사이에서 소프트 정보가 전송된다.
이때, 고속 동작을 위해서는 검사 노드는 이와 연결된 복수 개의 비트 노드에 수학식 8의 소프트 정보(soft information)를 동시에 전송해야 하며, 비트 노드는 이와 연결된 복수 개의 검사 노드에 수학식 9의 소프트 정보를 동시에 전송해야 한다. 이에 따라, 하나의 비트 노드와 여러 개의 검사 노드를 연결해주는 인터커넥션(interconnection)이 필수적으로 요구된다. 하나의 검사 노드와 여러 개의 비트 노드를 연결해주는 인터커넥션 또한 요구된다.
LDPC 복호화 장치에서 수백에서 수천 개에 달하는 비트 노드와 검사 노드를 연결해 주는 인터커넥션 장치는 높은 복잡도를 갖는다. LDPC 복호화 장치에서 브로드캐스팅 기법을 이용할 경우, 인터커넥션 장치의 복잡도를 낮출 수 있다. 브로드캐스팅 기반의 메시지 패싱 알고리즘에 따라 수학식 1은 아래의 수학식 11과 같이 변경된다.
[수학식 11]
Figure 112013005294716-pat00017
수학식 11은 수학식 8과 다르게, i번째 검사 노드가 비트 노드들에 동일한 소프트 정보를 전달한다. 브로드캐스팅 기반의 메시지 패싱 알고리즘(message passing algorithm)은 여러 개의 검사 노드에서 비트 노드로 전송하는 정보가 동일하기 때문에 검사 노드에서 비트 노드로 데이터를 전송하는 인터커넥션 장치의 복잡도가 감소한다. 그러나 원래의 검사 노드에서 비트 노드로 전송해야 하는 데이터를 비트 노드 내에서 생성해야 하므로, 비트 노드의 복잡도가 증가한다.
앞서 언급된 수학식 9 역시 아래의 수학식 12와 같이 변경될 수 있다.
[수학식 12]
Figure 112013005294716-pat00018
검사 노드와 마찬가지로, 비트 노드 역시 여러 개의 검사 노드들로 전송되는 정보를 동일한 값으로 바꿈에 따라서 비트 노드에서 검사 노드로 연결되는 인터커넥션 장치의 복잡도를 감소할 수 있다. 하지만, 이 경우에도 원래 전송되어야 하는 수학식 9의 비트 노드의 정보를 비트 노드가 아닌 검사 노드에서 생성해야 하므로, 검사 노드의 복잡도가 증가할 수 있다.
다양한 부호율 및 부호 길이를 지원하기 위하여 다양한 패리티 검사 행렬이 정의될 수 있다. 예를 들어 준순환 LDPC 부호의 경우 패리티 검사 행렬을 수학식 5과 같이 표현할 수 있는데, 다양한 부호율을 지원하기 위하여, l과 p가 다양한 값을 가질 수 있다. 또한, 수학식 5의 패리티 검사 행렬의 서브 행렬
Figure 112013005294716-pat00019
의 크기를 다양하게 정의하여 다양한 부호 길이를 지원할 수 있다. 따라서, 다양한 부호 길이 및 부호율을 지원하기 위하여, LDPC 복호화 장치는 다양한 패리티 검사 행렬에 대하여 유동적으로 동작할 수 있어야 한다. 이하에서 설명되는 본 발명의 실시 예는 다양한 패리티 검사 행렬, 즉 다양한 lp의 값을 가지며 다양한 서브 행렬
Figure 112013005294716-pat00020
를 갖는 패리티 검사 행렬에 대응하여 유연하게 동작할 수 있는 LDPC 복호화 장치를 제시한다.
도 4는 본 발명의 일 실시예에 따른 LDPC 복호화 장치의 구성도이다. 본 발명의 일 실시예에 따른 LDPC 복호화 장치(100)는 통합 노드 프로세서(110), 가변 인터커넥션 네트워크(120), 순환 이동부들(130), 패리티 검사 행렬 저장부(140), 그리고 각 구성을 제어하기 위한 LDPC 복호 제어부(150)를 포함한다.
통합 노드 프로세서(combined check and variable node process)(110)는 검사 노드와 비트 노드를 프로세싱하여 출력한다. 가변 인터커넥션 네트워크(flexible interconnect network)(120)는 통합 노드 프로세서(110)로부터의 프로세싱 결과를 입력받고, LDPC 복호 제어부(150)의 제어에 의해 패리티 검사 행렬 저장부(140)에 저장된 패리티 검사 행렬의 부호율 또는 부호 길이에 대응하여 가변될 수 있다. 패리티 검사 행렬 저장부(140)은 다양한 부호율 또는 부호 길이에 대응하는 패리티 검사 행렬들을 저장할 수 있다. 순환 이동부들(130)은 가변 인터커넥션 네트워크(120)의 출력을 순환 쉬프트(cyclic shift)한다.
도 4에 도시한 본 발명의 실시 예에서, LDPC 복호화 장치(100)는 전병렬 프로세싱(fully parallel processing)에 의해 모든 비트 노드가 같은 클록에 동작하여 생성한 소프트 정보(soft information)를 검사 노드에 전달할 수 있다. 마찬가지로, 검사 노드 또한 같은 클록에 동작하여 생성된 소프트 정보를 비트 노드에 전달할 수 있다.
부분병렬 프로세싱(partially parallel processing)의 경우, 비트 노드와 검사 노드 사이에서 메시지를 주고 받을 때 필요한 클록 사이클 수가 많기 때문에, 높은 스루풋(throughput)을 달성하는데 한계가 있다. 이와 달리, 전병렬 프로세싱은 비트 노드와 검사 노드 사이에 메시지를 전달하는 과정에서 필요한 클록 사이클 수가 적기 때문에 수 Gbps급 이상의 높은 스루풋(throughput)을 달성하는데 효과적이다. 하지만, 전병렬 프로세싱의 경우, 하드웨어 구현 시 비트 노드와 검사 노드의 개수에 비례하여 하드웨어 복잡도가 증가한다. 메시지 패싱 알고리즘으로 브로드캐스팅 기법이 적용된 합-곱 알고리즘(SPA)을 사용하면, 전병렬 처리를 사용함에 따라 증가하는 인터커넥션의 복잡도를 낮출 수 있다.
기존의 SPA에서는, 비트 노드와 검사 노드가 수행해야 하는 동작이 명확히 구분되어 있어서, 각각이 필요한 하드웨어 자원(resource)만을 가지고 있으면 되었으나, 본 발명의 실시 예에서 브로드캐스팅 기법이 SPA에 적용됨에 따라, 비트 노드는 검사 노드가 수행해야 하는 동작의 일부를 지원해야 하고, 또한 검사 노드는 비트 노드가 수행해야 하는 동작의 일부를 지원해야 한다. 또한, 각각의 비트 노드와 검사 노드는 원래 SPA에서 지원해야 하는 기능 또한 지원해야 한다.
따라서, 브로드캐스팅 기법이 적용된 SPA를 이용하는 LDPC 복호의 경우에 있어, 비트 노드와 검사 노드의 하드웨어의 복잡도가 증가하게 된다. 이에, 브로드캐스팅 기법이 적용되면서 증가한 하드웨어의 복잡도를 낮출 수 있도록, 본 발명의 실시 예에 따른 LDPC 복호화 장치(100)의 통합 노드 프로세서(110)는 각각의 그룹 내에 비트 노드와 검사 노드를 통합시킨 병합된 검사 및 체크 노드 프로세서(combined variable and check node processor)로써 구현될 수 있다.
통합 노드 프로세서(110)는 N개의 CVP 그룹들(CVP 그룹 1~N)로 이루어질 수 있다. 각 CVP 블록은 여러 개의 CVP(CVP1~Z)를 포함한다. 각 CVP는 비트 노드의 기능(variable node processor)과 검사 노드의 기능(check node processor)을 모두 가지고 있다. 다양한 부호율 및 부호 길이를 지원하기 위하여 패리티 검사 행렬의 서브 행렬이 다양한 크기를 가질 때, 하나의 CVP 그룹(group) 내에서 사용되는 CVP의 개수는 다양할 수 있다. 예를 들어, 패리티 검사 행렬의 서브 행렬의 크기가 10이라면 10개의 CVP가 필요하고 서브 행렬의 크기가 20이라면 20개의 CVP가 필요하다.
다양한 서브 행렬의 크기를 지원하기 위해서는, 크기가 가장 큰 서브 행렬만큼의 CVP가 필요하다. 언급된 예의 경우, 20개의 CVP가 필요하며, 이 중에서 10개만 사용하고 나머지 10개는 사용하지 않음으로써 크기가 10인 서브 행렬을 지원할 수 있다. 즉, CVP 그룹(group) 내의 CVP의 개수는 다양한 서브 행렬의 지원과 관련이 있다.
또한, 수학식 5의 패리티 검사 행렬을 보면 p개의 서브 행렬과 l개의 서브 행렬을 통하여 패리티 검사 행렬의 열과 행이 정의된다. 이때 p개의 서브 행렬이 패리티 검사 행렬의 부호어의 길이를 결정한다. 또한, p개 서브 행렬이 결정되었을 때, l이 부호율을 결정하게 된다. 따라서 p개의 서브 행렬을 갖는 패리티 검사 행렬을 지원하기 위하여, 다시 말해 p개의 서브 행렬을 갖는 패리티 검사 행렬에 의해 생성된 부호어를 복호하기 위하여 p개의 CVP 그룹이 필요하다.
예를 들어 p가 24일 경우 24개의 CVP 그룹(group)이 필요하고, p가 20인 경우 20개의 CVP 그룹이 필요할 것이다. 따라서, 지원해야 하는 패리티 검사 행렬 중 p의 값이 가장 큰 패리티 검사 행렬에 맞추어 CVP 그룹의 개수가 결정될 수 있다. 언급된 예에서, CVP 그룹의 개수는 24로 결정된다. 만약, p가 20인 패리티 검사 행렬에 대하여 복호를 수행할 때는 20개의 CVP 그룹만 사용하고 나머지 4개는 사용하지 않을 수 있다. 이러한 방식으로 다양한 부호어 길이에 대응하여 복호화가 가능하다.
비트 노드와 검사 노드가 따로 구현되는 경우, 하드웨어의 복잡도가 두 배 정도로 증가한다. 본 발명의 실시 예를 구성하는 통합 노드 프로세서(110)는 브로드캐스팅이 적용된 경우에 있어서, 검사 노드와 비트 노드에서 사용되는 로직의 종류가 대부분 비슷함을 이용하여 하나의 프로세서를 이용하여 메시지 패싱 알고리즘을 구현할 수 있다.
도 5는 본 발명의 일 실시예에 따른 LDPC 복호화 장치를 구성하는 통합 노드 프로세서의 구성도이다. 도 5에 도시된 바와 같이, 통합 노드 프로세서(110)는 비트 노드 레지스터들(111), 검사 노드 레지스터들(112), 제1 로직(113), 가산기(114), 제2 로직(115)을 포함한다. 각각의 비트 노드 레지스터(1111)는 N 개의 비트 노드들 중 하나에 대응하며, 각각의 검사 노드 레지스터(1121)는 M 개의 비트 노드들 중 하나에 대응한다. 패리티 검사 행렬에 따라, 하나의 비트 노드 또는 검사 노드는 여러 개의 검사 노드들 또는 비트 노드들과 연결된다. 비트 노드는 이와 연결된 다수의 검사 노드들로부터 브로드캐스팅 입력 데이터를 전송받고, 검사 노드는 다수의 비트 노드들로부터 브로드캐스팅 입력 데이터를 전송받는다.
도 5에 도시한 실시 예에서는 N개의 검사 노드 또는 비트 노드로부터 N개의 브로드캐스팅 입력 데이터가 제1 로직(113)으로 입력된다. 브로드캐스팅 입력 데이터로부터 브로드캐스팅 출력 데이터를 생성하는 과정은 다음과 같다. 제1 로직(113)은 다중화기(1131)와 매핑부(1132)를 이용하여 기존의 SPA와 마찬가지의 방식에 따라 SPA 데이터를 생성하여 가산기(114)로 출력한다. 매핑부(1132)는 예를 들어 룩업테이블(LUT)을 이용하여 입력에 대응하는 매핑 데이터를 검출할 수 있다. 가산기(114)는 덧셈 연산을 통해 모든 SPA 데이터를 더하여, 브로드캐스팅 출력을 생성한다.
브로드캐스팅 기법이 적용된 경우, 각각의 노드(비트 노드 또는 검사 노드)는 기존의 SPA에서 생성하는 것과 동일한 데이터를 생성하여 저장할 필요가 있다. 브로드캐스팅 입력 데이터는 기존의 SPA에서 받게 되는 데이터와 차이를 가지므로, 기존의 SPA에서 받게 되는 데이터로 만들어야 한다. 이는 가산기(114)의 출력단 측에 연결되는 제2 로직(115)의 다중화기(1151)와 매핑부(1152)의 룩업테이블(LUT)을 이용하여 수행될 수 있다.
이 과정이 끝나면 기존의 SPA에서 받게 되는 것과 같은 데이터를 각각의 노드(비트 노드 또는 검사 노드)들이 갖게 된다. 제2 로직(115)에서 연산된 결과는 비트 노드 연산인지 검사 노드 연산인지에 따라 해당 레지스터(register)(111,112)에 저장된다. 이후, 각 노드는 다시 브로드캐스팅 출력을 생성하여 연결된 노드로 전달하며, 전달된 브로드 캐스팅 출력은 클록 사이클의 연산 수행시에 사용된다.
전병렬 프로세싱의 경우, 비트 노드와 검사 노드가 동작하는 시점이 항상 다르기 때문에, 필요한 로직들은 시간 공유(time sharing)가 가능하다. 본 발명의 실시 예는 브로드캐스팅 기법을 지원하여 고속으로 동작하면서도, 병합된 검사 및 체크 노드 프로세서(combined variable and check node processor)에 의하여 검사 노드와 비트 노드의 하드웨어 복잡도는 기존의 SPA과 동일한 수준으로 유지할 수 있다.
전병렬 처리(Fully parallel architecture)에 있어, 비트 노드와 검사 노드가 회로 접속에 의해 배선 연결(hardwired)되면, 다양한 패리티 검사 행렬을 지원하기 어렵게 된다. 즉, 패리티 검사 행렬에 따라 비트 노드와 검사 노드 간의 연결이 다른데, 기존의 배선 연결(hardwired) 인터커넥션 방식의 경우, 특정한 하나의 패리티 검사 행렬에서 검사 노드 또는 비트 노드 간에 연결 동작을 수행하는 것은 가능하지만, 패리티 검사 행렬의 변화에 대응하여 비트 노드와 검사 노드의 연결을 바꾸지 못한다.
이에, 본 발명의 실시 예에 따른 LDPC 복호화 장치(100)를 구성하는 가변 인터커넥션 네트워크(120)는 다양한 패리티 검사 행렬을 지원할 수 있도록 제공된다. 가변 인터커넥션 네트워크(120)는 패리티 검사 행렬에 따라 재구성 가능(reconfigurable)한 유동적 인터커넥션 네트워크로써 구현된다.
도 6은 본 발명의 일 실시예에 따른 LDPC 복호화 장치를 구성하는 가변 인터커넥션 네트워크의 인터커넥션 스위치부의 구성도이다. 도 4 및 도 6을 참조하면, 가변 인터커넥션 네트워크(Flexible Interconnection Network)(120)의 인터커넥션 스위치부(121)들을 포함한다. 각각의 인터커넥션 스위치부(121)는 통합 노드 프로세서(110)의 하나의 검사 및 비트 노드 프로세서(CVP)에 일대일 대응하며, 입력 포트(input port)를 통해 브로드캐스팅 출력을 대응하는 검사 및 비트 노드 프로세서로부터 입력받는다. 다양한 패리티 검사 행렬을 지원하기 위하여 하나의 CVP에서 나온 브로드캐스팅 출력 데이터는 패리티 검사 행렬에 따라서 최대 24개의 CVP 그룹에 연결될 수 있다.
하나의 CVP 그룹의 24개의 CVP 그룹에 각각 연결하게 되면, 인터커넥션 네트워크의 복잡도가 커지게 된다. 본 발명의 실시 예에 있어서, 가변 인터커넥션 네트워크(120)는 여러 개의 CVP 그룹을 하나의 큰 그룹(group)으로 묶어서 인터커넥션을 수행할 수 있다. 도 6에는 4개의 CVP 그룹을 하나의 큰 그룹으로 묶은 예가 도시되어 있다.
인터커넥션 스위치부(121)는 두 개의 컨트롤 신호(CTRL0, CTRL1)를 받는 스위치들(1211~1215)를 사용하여 인터커넥션을 수행할 수 있다. 각 스위치(1211~1215)는 두 개의 전송 게이트(TG1,TG2)를 포함한다. 2개의 전송 게이트(TG1,TG2)는 공통된 입력에 대응하여 컨트롤 신호(CTRL0, CTRL1)에 따라 2개의 출력(출력0, 출력1)을 생성한다. 예를 들어, 검사 노드 또는 비트 노드에 대해, CVP 그룹(group) 1~4를 연결할 필요가 없는 경우, 컨트롤 신호를 조절하여 CVP 그룹 1~4으로는 브로드캐스팅 출력 데이터를 보내지 않고 CVP 그룹 5~8으로 브로드캐스팅 출력 데이터를 보낼 수 있다.
다른 예로, CVP 그룹 1~8으로 연결할 필요가 없는 경우에는, CVP 그룹 1~8까지는 데이터를 보내지 않도록 컨트롤 신호를 조절할 수 있다. 이러한 컨트롤 신호는 패리티 검사 행렬에 따라 다르게 생성될 수 있다. 따라서, 패리티 검사 행렬에 따라 스위치들(1211~1215)을 제어하여 가변적으로 CVP 그룹으로 연결 또는 차단을 구현할 수 있으며, 다양한 패리티 검사 행렬을 지원할 수 있다.
도 7은 LDPC 부호의 예시적인 패리티 검사 행렬을 나타낸 도면이다. 이는 IEEE 802.11n WLAN 시스템에서 사용되는 준순환 LDPC 부호의 패리티 검사 행렬을 나타낸다. 패리티 검사 행렬은 제1 행렬(H1)과 제2 행렬(H2)로 구분된다. 제1 행렬(H1)은 4 개의 행들과 20개의 열들로 구성되며, 제2 행렬(H2)은 4 개의 행들과 4 개의 열들로 구성된다. 또한, 각 서브 행렬은 단위 행렬의 순환 행렬 또는 영행렬로 구현된다. 하나의 네모 칸은 서브 행렬을 나타낸다. 서브 행렬의 크기가 81이라고 했을 때, 81개의 비트 노드와 81개의 검사 노드는 하나의 그룹을 이루는 것이다.
도 7에서 각 서브 행렬에 표시된 숫자는 단위 행렬의 순환 이동(cyclic shift)의 크기를 나타낸다. 패리티 검사 행렬에서 첫 번째 행의 첫 번째 열, 즉 (1,1) 서브 행렬에 기재된 숫자 '13'은, 1~81의 비트 노드와 1~81의 검사 노드 사이에 인터커넥션이 있으며, 서로 '13'만큼 순환 이동(cyclic shift)되어 비트 노드와 검사 노드가 연결되는 것을 의미한다. 즉, 1번 비트 노드는 14번 검사 노드에, 2번 비트 노드는 15번 검사 노드에, 같은 방식으로 81번 비트 노드는 13번 검사 노드에 연결된다는 것을 의미하며, 이때 순환 쉬프터(clic shifter)를 필요로 한다. '-' 는 영행렬을 나타내며, 인터커넥션이 없다는 것을 의미한다.
순환 이동부(130)는 도 4에 도시된 바와 같이 가변 인터커넥션 네트워크(120)의 출력과 연결된다. 도 7에 도시한 패리티 검사 행렬을 예로 들면, 첫 번째 비트 노드 그룹에서 가변 인터커넥션 네트워크(120)의 인터커넥션 스위치부(121)로 데이터를 내보내면, 인터커넥션 스위치부(121)를 통하여 첫 번째에서 네 번째 검사 노드 그룹으로 데이터가 전송된다.
도 7에 도시한 실시 예의 경우, 네 번째 검사 노드 그룹밖에 존재하지 않으므로, 인터커넥션 스위치부(121)는 CVP 그룹 1~4에만 데이터를 전송할 것이다. 순환 이동부(130)는 전송된 데이터를 '13', '69', '51', '16'이라는 값만큼 순환 쉬프트(cyclic shift)하여 각각의 CVP 그룹으로 전송한다. 즉, 순환 이동부(130)는 하나의 입력에 대응하여 네 개의 순환 쉬프트(cyclic shift) 출력을 발생한다.
도 8은 본 발명의 일 실시예에 따른 LDPC 복호화 장치를 구성하는 순환 이동부의 구성도이다. 도 8을 참조하면, 순환 이동부(130)는 제1 순환 쉬프터(1st stage cyclic shifter)(131)와, 제2 순환 쉬프터(2nd stage cyclic shifter)들(132)을 포함한다. 즉, 순환 이동부(130)는 2-스테이지(two stage)의 순환 쉬프터 구조로 이루어져 있다.
도 7에 도시한 패리티 검사 행렬의 첫 번째 열을 보면 순환 쉬프트 값(cyclic shift value)이 '13', '69', '51', '16'으로 그 크기가 다양함을 알 수 있다. 이것을 동시에 지원하기 위해서는 네 개의 순환 쉬프터(cyclic shifter)가 필요한데, 단순히 네 개의 순환 쉬프터(cyclic shifter)를 병렬로 연결하여 순환 이동을 구현할 경우, 복잡도가 증가할 수 있다.
이에 따라, 제1 순환 쉬프터(131)는 정해진 순환 쉬프트(cyclic shift) 단위(예를 들어 16 사이클)로 순환 이동(cyclic shift)을 수행한다. 이에 따라, 제1 순환 쉬프터(131)는 일정 범위만큼의 순환 쉬프트(cyclic shift) 동작을 수행하여 제2 순환 쉬프터들(132)로 출력을 내보낸다. 제2 순환 쉬프터들(132)은 제1 순환 쉬프터(131)에 의하여 첫 번째 스테이지에서 수행된 순환 이동(cyclic shift) 이후에 부족한 양만큼 순환 이동을 수행한다.
일 실시 예로, 브로드캐스팅 데이터는 가변 인터커넥션 네트워크(120)에서 4개의 CVP 그룹 단위로 연결되는 경우, 하나의 순환 쉬프터(cyclic shifter)에서는 네 개의 서로 다른 순환 쉬프트(cyclic shift) 크기를 지원할 수 있어야 한다. 따라서, 제2 순환 쉬프터들(132)은 병렬적 순환 쉬프터(parallelized cyclic shifter) 구조로 배치되어 병렬 처리를 수행한다.
도 9는 도 8에 도시된 제1 순환 쉬프터의 구성도이다. 도 9에 도시한 바와 같이, 제1 순환 쉬프터(131)는 입력을 특정 사이클(예를 들어 16 사이클) 순환시키는 순환 쉬프트 회로들(1311~1315)을 포함한다. 제1 순환 쉬프터(131)는 제1 내지 제5 순환 쉬프트 회로(1311~1315)를 시리얼(serial)로 연결하여 구현될 수 있다.
제1 순환 쉬프터(131)는 패리티 검사 행렬에 정의된 순환 쉬프트 값(cyclic shift value)에 따라서 출력 포인트를 선택해서 제2 순환 쉬프터들(132)로 데이터를 넘길 수 있다. 데이터의 길이가 27, 54, 81 중의 하나인 경우, 순환 쉬프트 회로(1311)를 27개씩(16+11) 세 영역으로 나누어, 멀티플렉서(multiplexer)의 선택을 통해 모든 경우를 지원할 수 있도록 구현될 수 있다. 제1 순환 쉬프터(131) 내에 멀티플렉서가 존재하지만 기본적으로 순환 쉬프트(cyclic shift) 단위가 16 단위 하나이기 때문에 로직의 복잡도는 높지 않다.
제1 순환 쉬프터(131)의 순환 쉬프트 단위가 '16'인 경우를 예로 들면, 도 7에 도시한 패리티 검사 행렬의 첫 번째 열에서, 첫 번째 순환 쉬프트 값(cyclic shift value)은 '13'이므로, 제1 순환 쉬프터(131)는 입력을 쉬프트(shift) 시키지 않고 바로 제2 순환 쉬프터들(132)로 보낸다. 이후, 제2 순환 쉬프터들(132)에 의해 13번의 순환 쉬프트가 수행된다.
도 7에 도시한 패리티 검사 행렬의 첫 번째 열에서, 두 번째 순환 쉬프트 값은 '69'이므로, 제1 순환 쉬프터(131)는 16 사이클 단위로 4 단계를 거쳐 '64'까지 순환 쉬프트(cyclic shift)를 수행하여, 제2 순환 쉬프터들(131)로 보낸다. 이에 따라, 제2 순환 쉬프터들(132)은 5번의 순환 쉬프트(cyclic shift)만을 더 수행하면 된다.
도 7에 도시한 패리티 검사 행렬의 첫 번째 열에서, 세 번째 순환 쉬프트 값은 '51'이므로, 제1 순환 쉬프터(131)는 16 사이클 단위로 3 단계를 거쳐 '48'까지 순환 쉬프트(cyclic shift)를 수행하여, 제2 순환 쉬프터들(131)로 보낸다. 이에 따라, 제2 순환 쉬프터들(132)은 3번의 순환 쉬프트(cyclic shift)만을 더 수행하면 된다. 또한, 도 7에 도시한 패리티 검사 행렬의 첫 번째 열에서, 네 번째 순환 쉬프트 값은 '16'이므로, 제1 순환 쉬프터(131)는 16 순환 이동을 수행한다. 이때는 제2 순환 쉬프터들(132)은 동작하지 않고 바로 출력으로 내보낼 수 있다.
도 10은 도 8에 도시된 각각의 제2 순환 쉬프터의 구성도이다. 도 8 및 도 10을 참조하면, 제2 순환 쉬프터들(132)의 각 제2 순환 쉬프터(1321)는 4 블록의 순환 쉬프트 회로(1321a~d)로 구성된다.
제2 순환 쉬프터(1321)는 제1 순환 쉬프터(131)에서 순환 쉬프트(cyclic shift)한 결과를 바탕으로, 부족한 양만큼만 순환 쉬프트(cyclic shift)를 하는 것이기 때문에 최대 순환 쉬프트(cyclic shift)의 크기가 제1 순환 쉬프터(131)의 순환 쉬프트 단위(예를 들어, 16)보다 작다. 제1 순환 쉬프터(131)가 없는 경우에는 제2 순환 쉬프터(1321)가 1부터 최대 80까지 순환 쉬프트(cyclic shift)를 모두 지원해야 하지만, 본 발명의 실시 예의 경우 제2 순환 쉬프터(1321)는 1부터 15까지 순환 쉬프트(cyclic shift)만을 지원하면 되므로 순환 이동부(130)의 복잡도를 크게 낮출 수 있다.
예를 들어, 첫 번째 회로(1321a)에서는 1 스텝(step)의 순환 쉬프트를 수행한다. 두 번째 회로(1321b)에서는 2 스텝, 세 번째 회로(1321c)에서는 4 스텝, 네 번째 회로(1321d)에서는 8 스텝만큼 순환 쉬프트를 수행한다. 27, 54, 81 등 다양한 길이의 데이터의 순환 쉬프트(cyclic shift)를 모두 지원하기 위해 제2 순환 쉬프터(1321) 역시 제1 순환 쉬프터(131)와 마찬가지로 세 부분으로 나누어 구성될 수 있다.
제2 순환 쉬프터(1321)에서 수행해야 할 순환 쉬프트(cyclic shift)의 길이가 '5'이면, 첫 번째 단계와 세 번째 단계에서만 순환 쉬프트(cyclic shift)를 수행할 수 있다. 이때, 두 번째 단계와 네 번째 단계에서는 순환 쉬프트(cyclic shift)를 수행하지 않고 바로 다음 단계로 데이터를 전달할 수 있다. 본 발명의 실시 예에 의하면, 제1 순환 쉬프터(131)에서 특정 단위(예를 들어, 16 단위)로 순환 쉬프트(cyclic shift)를 수행하므로, 제2 순환 쉬프터(1321)에서 수행해야 하는 순환 쉬프트의 크기는 15 이하로 제한된다. 따라서, 순환 이동부(130)의 전체 복잡도가 기존의 순환 쉬프터(cyclic shifter)에 비하여 감소될 수 있다.
전술한 바와 같이, 본 발명의 실시예에 따른 LDPC 복호화 장치는 다양한 부호율과 부호 길이를 지원할 수 있으며, 재구성 가능한(reconfigurable) 인터커넥션을 구현한다. 본 발명의 실시 예에 따른 LDPC 복호화 장치는 준순환 LDPC 부호의 메시지 패싱 과정에서 필요한 순환 이동부를 병렬 연산 처리에 적합하고 복잡도가 낮은 구조로 구현된다. 따라서, 전병렬처리시 증가하는 비트 노드와 검사 노드의 복잡도와 인터커넥션 네트워크의 복잡도를 감소시키고 수 Gbps의 스루풋(throughput)을 지원할 수 있다.
이상의 실시예들은 본 발명의 이해를 돕기 위하여 제시된 것으로, 본 발명의 범위를 제한하지 않으며, 이로부터 다양한 변형 가능한 실시예들도 본 발명의 범위에 속할 수 있음을 이해하여야 한다. 예를 들어, 본 발명의 실시예에 도시된 각 구성 요소는 분산되어 실시될 수도 있으며, 반대로 여러 개로 분산된 구성 요소들은 결합되어 실시될 수 있다. 따라서, 본 발명의 기술적 보호범위는 특허청구범위의 기술적 사상에 의해 정해져야 할 것이며, 본 발명의 기술적 보호범위는 특허청구범위의 문언적 기재 그 자체로 한정되는 것이 아니라 실질적으로는 기술적 가치가 균등한 범주의 발명에 대하여까지 미치는 것임을 이해하여야 한다.
10: 무선 통신 시스템 40: 송신 장치
50: LDPC 부호화 장치 60: 변조기
80: 수신 장치 90: 복조기
100: LDPC 복호화 장치 110: 통합 노드 프로세서
120: 가변 인터커넥션 네트워크 130: 순환 이동부
140: 패리티 검사 행렬 저장부 150: LDPC 복호 제어부

Claims (15)

  1. 패리티 검사 행렬에 대응하는 검사 노드와 비트 노드의 그룹들을 포함하며, 상기 검사 노드와 상기 비트 노드에 대한 소프트 정보를 생성하는 통합 노드 프로세서;
    상기 통합 노드 프로세서로부터 상기 소프트 정보를 입력받는 가변 인터커넥션 네트워크; 그리고
    상기 패리티 검사 행렬에 따라 상기 가변 인터커넥션 네트워크로부터 출력되는 소프트 정보를 순환 이동하여 상기 통합 노드 프로세서로 출력하는 복수의 순환 이동부를 포함하고,
    상기 가변 인터커넥션 네트워크는, 상기 복수의 순환 이동부와의 인터커넥션을 상기 패리티 검사 행렬에 따라 가변적으로 설정하는 복호화 장치.
  2. 제1 항에 있어서,
    복수 개의 부호율 또는 복수 개의 부호 길이에 대응하는 복수 개의 패리티 검사 행렬을 저장하는 패리티 검사 행렬 저장부를 더 포함하며,
    상기 가변 인터커넥션 네트워크는,
    상기 복수 개의 패리티 검사 행렬 중 소정의 부호율 또는 소정의 부호 길이에 대응하는 상기 패리티 검사 행렬에 따라 상기 복수의 순환 이동부와의 인터커넥션을 설정하는 복호화 장치.
  3. 제1 항에 있어서,
    상기 통합 노드 프로세서의 각 그룹은 상기 패리티 검사 행렬의 서브 행렬의 크기에 대응하는 검사 노드들의 제1 레지스터들과 비트 노드들의 제2 레지스터들을 포함하며,
    상기 제1 레지스터들 및 상기 제2 레지스터들은 비트 노드들 또는 검사 노드들로부터 전송받은 브로드 캐스팅(broadcasting) 입력으로부터 합-곱 알고리즘(Sum-Product Algorithm)에 따라 생성되는 상기 소프트 정보를 저장하고,
    상기 서브 행렬은 상기 패리티 검사 행렬 중의 일부인 부분 행렬이고, 정사각 행렬인 복호화 장치.
  4. 제3 항에 있어서,
    상기 통합 노드 프로세서는 상기 검사 노드 및 상기 비트 노드로 동작 가능한 검사 및 비트 노드 프로세서들을 포함하고,
    상기 가변 인터커넥션 네트워크는 상기 패리티 검사 행렬에 따라 상기 복수의 순환 이동부 중 대응하는 하나 이상의 순환 이동부와 상기 인터커넥션을 설정하는 인터커넥션 스위치들을 포함하고,
    상기 인터커넥션 스위치들은 상기 검사 및 비트 노드 프로세서들과 일대일 대응되도록 연결되는 복호화 장치.
  5. 제4 항에 있어서,
    상기 인터커넥션 스위치들은 상기 패리티 검사 행렬 중 상기 검사 노드와 상기 비트 노드가 연결되는 서브 행렬들의 정보에 기초하여, 상기 하나 이상의 순환 이동부와 상기 인터커넥션을 설정하고,
    상기 서브 행렬들은 각각 상기 패리티 검사 행렬 중의 일부인 부분 행렬로서, 정사각 행렬인 복호화 장치.
  6. 제5 항에 있어서,
    각각의 인터커넥션 스위치는,
    상기 통합 노드 프로세서로부터의 입력을 상기 하나 이상의 순환 이동부로 동시에 전송하는 복호화 장치.
  7. 제1 항에 있어서,
    상기 복수의 순환 이동부는 각각,
    상기 패리티 검사 행렬의 서브 행렬의 순환 정보에 따라 상기 가변 인터커넥션 네트워크로부터의 입력을 제1 사이클 단위로 순환 이동하는 제1 순환 쉬프터; 그리고
    상기 순환 정보에 따라 상기 제1 순환 쉬프터의 출력을 제2 사이클만큼 순환 이동하는 제2 순환 쉬프터들을 포함하고,
    상기 서브 행렬은 상기 패리티 검사 행렬 중의 일부인 부분 행렬로서, 정사각 행렬인 동시에, 단위 행렬의 순환 행렬 또는 영행렬이고, 상기 순환 정보는 상기 순환 행렬의 순환 이동 크기인 복호화 장치.
  8. 제7 항에 있어서,
    상기 제2 사이클은 상기 제1 사이클 단위보다 작은 값을 갖는 복호화 장치.
  9. 제8 항에 있어서,
    상기 제1 순환 쉬프터는 상기 가변 인터커넥션 네트워크로부터의 입력을 상기 제1 사이클 단위로 순환 이동하는 복수 개의 순환 쉬프트 회로들을 포함하며, 상기 복수 개의 순환 쉬프트 회로들의 출력을 선택하여 상기 제2 순환 쉬프터들로 출력하는 복호화 장치.
  10. 패리티 검사 행렬을 이용하여 데이터로부터 부호어를 생성하는 LDPC 부호화 장치를 포함하는 송신 장치; 그리고
    상기 패리티 검사 행렬을 이용하여 상기 부호어를 복호화하여 상기 데이터를 복원하는 LDPC 복호화 장치를 포함하는 수신 장치를 포함하며,
    상기 LDPC 복호화 장치는,
    패리티 검사 행렬에 대응하는 검사 노드와 비트 노드의 그룹들을 포함하며, 상기 검사 노드와 상기 비트 노드에 대한 소프트 정보를 생성하는 통합 노드 프로세서;
    상기 통합 노드 프로세서로부터 상기 소프트 정보를 입력받는 가변 인터커넥션 네트워크; 그리고
    상기 패리티 검사 행렬에 따라 상기 가변 인터커넥션 네트워크로부터 출력되는 소프트 정보를 순환 이동하여 상기 통합 노드 프로세서로 출력하는 복수의 순환 이동부를 포함하고,
    상기 가변 인터커넥션 네트워크는, 상기 복수의 순환 이동부와의 인터커넥션을 상기 패리티 검사 행렬에 따라 가변적으로 설정하는 무선 통신 시스템.
  11. 제10 항에 있어서,
    상기 LDPC 복호화 장치는 복수 개의 부호율 또는 복수 개의 부호 길이에 대응하는 복수 개의 패리티 검사 행렬을 저장하는 패리티 검사 행렬 저장부를 더 포함하며,
    상기 가변 인터커넥션 네트워크는,
    상기 복수 개의 패리티 검사 행렬 중 소정의 부호율 또는 소정의 부호 길이에 대응하는 상기 패리티 검사 행렬에 따라 상기 복수의 순환 이동부와의 인터커넥션을 설정하는 무선 통신 시스템.
  12. 제10 항에 있어서,
    상기 복수의 순환 이동부는 각각,
    상기 패리티 검사 행렬의 서브 행렬의 순환 정보에 따라 상기 가변 인터커넥션 네트워크로부터의 입력을 제1 사이클 단위로 순환 이동하는 제1 순환 쉬프터; 그리고
    상기 순환 정보에 따라 상기 제1 순환 쉬프터의 출력을 제2 사이클만큼 순환 이동하는 제2 순환 쉬프터들을 포함하고,
    상기 서브 행렬은 상기 패리티 검사 행렬 중의 일부인 부분 행렬로서, 정사각 행렬인 동시에, 단위 행렬의 순환 행렬 또는 영행렬이고, 상기 순환 정보는 상기 순환 행렬의 순환 이동 크기인 무선 통신 시스템.
  13. 통합 노드 프로세서에 의해, 패리티 검사 행렬에 대응하는 검사 노드와 비트 노드에 대한 소프트 정보를 생성하는 단계;
    가변 인터커넥션 네트워크에 의해, 상기 패리티 검사 행렬에 따라 복수의 순환 이동부와의 인터커넥션을 가변적으로 설정하는 단계; 그리고
    상기 복수의 순환 이동부에 의해, 상기 가변 인터커넥션 네트워크로부터 입력되는 신호를 상기 패리티 검사 행렬에 따라 순환 이동하여 상기 통합 노드 프로세서로 출력하는 단계를 포함하고,
    상기 인터커넥션을 가변적으로 설정하는 단계는, 상기 가변 인터커넥션 네트워크와 상기 복수의 순환 이동부 간의 인터커넥션을 상기 패리티 검사 행렬에 따라 가변적으로 설정하는 복호화 방법.
  14. 제13 항에 있어서,
    상기 인터커넥션을 가변적으로 설정하는 단계는,
    복수 개의 패리티 검사 행렬 중 소정의 부호율 또는 소정의 부호 길이에 대응하는 상기 패리티 검사 행렬에 따라 상기 가변 인터커넥션 네트워크와 상기 복수의 순환 이동부 간의 상기 인터커넥션을 설정하는 복호화 방법.
  15. 제13 항에 있어서,
    상기 통합 노드 프로세서로 출력하는 단계는,
    상기 복수의 순환 이동부에 의해, 상기 패리티 검사 행렬의 서브 행렬의 순환 정보에 따라 상기 가변 인터커넥션 네트워크로부터 입력되는 신호를 제1 사이클 단위로 순환 이동하는 단계; 그리고
    상기 복수의 순환 이동부에 의해, 상기 순환 정보에 따라 상기 제1 사이클 단위로 순환된 신호를 제2 사이클만큼 순환 이동하는 단계를 포함하고,
    상기 서브 행렬은 상기 패리티 검사 행렬 중의 일부인 부분 행렬로서, 정사각 행렬인 동시에, 단위 행렬의 순환 행렬 또는 영행렬이고, 상기 순환 정보는 상기 순환 행렬의 순환 이동 크기인 복호화 방법.
KR1020130006039A 2012-02-10 2013-01-18 복호화 장치 및 복호화 방법 KR102000268B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020120013970 2012-02-10
KR20120013970 2012-02-10

Publications (2)

Publication Number Publication Date
KR20130092441A KR20130092441A (ko) 2013-08-20
KR102000268B1 true KR102000268B1 (ko) 2019-07-16

Family

ID=49217227

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130006039A KR102000268B1 (ko) 2012-02-10 2013-01-18 복호화 장치 및 복호화 방법

Country Status (1)

Country Link
KR (1) KR102000268B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101477925B1 (ko) * 2013-10-08 2014-12-30 세종대학교산학협력단 Ldpc 복호기를 이용한 데이터 경로 설정 방법 및 이를 위한 ldpc 복호기
WO2019107912A1 (ko) * 2017-11-29 2019-06-06 연세대학교 산학협력단 저지연 및 고신뢰도 특성을 가지는 ldpc 부호화 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100975547B1 (ko) * 2007-07-02 2010-08-16 브로드콤 코포레이션 분산형 프로세싱 ldpc 디코더

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100975547B1 (ko) * 2007-07-02 2010-08-16 브로드콤 코포레이션 분산형 프로세싱 ldpc 디코더

Also Published As

Publication number Publication date
KR20130092441A (ko) 2013-08-20

Similar Documents

Publication Publication Date Title
KR100975547B1 (ko) 분산형 프로세싱 ldpc 디코더
KR101203340B1 (ko) 터보 ldpc 디코딩
US7530002B2 (en) Sub-matrix-based implementation of LDPC (Low Density Parity Check) decoder
KR101227264B1 (ko) Ldpc 코드용 디코더
US8612823B2 (en) Encoding of LDPC codes using sub-matrices of a low density parity check matrix
US8433971B2 (en) Communication device architecture for in-place constructed LDPC (low density parity check) code
US20040093549A1 (en) Encoding method using a low density parity check code with a column weight of two
KR100941680B1 (ko) 준순환 저밀도 패리티 검사 부호의 생성 방법 및 장치
US9973212B2 (en) Decoding algorithm with enhanced parity check matrix and re-encoding scheme for LDPC code
US9595977B2 (en) LDPC decoder with efficient circular shifters
US8713399B1 (en) Reconfigurable barrel shifter and rotator
US8145986B2 (en) Multi-CSI (Cyclic Shifted Identity) sub-matrix based LDPC (Low Density Parity Check) codes
KR20070107520A (ko) 통신 시스템에서 신호 송수신 장치 및 방법
KR20100066395A (ko) 비경쟁 기반 병렬 처리 다중모드 엘디피씨 복호 장치
EP3001585A1 (en) Optical coherent receiver with forward error correction and parallel decoding
KR101216075B1 (ko) 채널 코드를 이용한 복호화 및 복호화 장치
KR20070040314A (ko) 저밀도 패러티 검사 부호의 복호장치 및 방법
US20220045785A1 (en) Method and apparatus for channel encoding/decoding in communication or broadcast system
US20070127387A1 (en) Partial-parallel implementation of LDPC (low density parity check) decoders
KR102000268B1 (ko) 복호화 장치 및 복호화 방법
KR102635532B1 (ko) 폴라 코딩을 이용한 신호 송수신 방법 및 장치
WO2008114969A1 (en) Method of generating a parity check matrix for ldpc encoding and decoding
US10608771B2 (en) Apparatus and method for encoding and decoding using short-length block code in wireless communication system
US8126022B2 (en) Electronic multimode data shift device, in particular for coding/decoding with an LDPC code
CN110463045B (zh) 用于通信或广播***中的信道编码/解码的装置和方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant