Nothing Special   »   [go: up one dir, main page]

KR102348466B1 - 통신 또는 방송 시스템에서 채널 부호화/복호화 방법 및 장치 - Google Patents

통신 또는 방송 시스템에서 채널 부호화/복호화 방법 및 장치 Download PDF

Info

Publication number
KR102348466B1
KR102348466B1 KR1020170073157A KR20170073157A KR102348466B1 KR 102348466 B1 KR102348466 B1 KR 102348466B1 KR 1020170073157 A KR1020170073157 A KR 1020170073157A KR 20170073157 A KR20170073157 A KR 20170073157A KR 102348466 B1 KR102348466 B1 KR 102348466B1
Authority
KR
South Korea
Prior art keywords
rows
matrix
ldpc
equation
parity check
Prior art date
Application number
KR1020170073157A
Other languages
English (en)
Other versions
KR20180111422A (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 CN202311514406.7A priority Critical patent/CN117768059A/zh
Priority to EP18775262.1A priority patent/EP3586445B1/en
Priority to PCT/KR2018/003808 priority patent/WO2018182371A1/en
Priority to US15/941,559 priority patent/US10484134B2/en
Priority to EP21175701.8A priority patent/EP3902143B1/en
Priority to CN201880023086.6A priority patent/CN110463045B/zh
Publication of KR20180111422A publication Critical patent/KR20180111422A/ko
Priority to US16/685,193 priority patent/US11050509B2/en
Priority to US17/360,330 priority patent/US11750322B2/en
Priority to KR1020220000774A priority patent/KR102583534B1/ko
Application granted granted Critical
Publication of KR102348466B1 publication Critical patent/KR102348466B1/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/1148Structural properties of the code parity-check or generator matrix
    • 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
    • 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
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • 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/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • 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/63Joint error correction and other techniques
    • H03M13/635Error control coding in combination with rate matching
    • H03M13/6362Error control coding in combination with rate matching by puncturing
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0009Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the channel coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0093Point-to-multipoint

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Error Detection And Correction (AREA)

Abstract

본 개시는 LTE와 같은 4G 통신 시스템 이후 보다 높은 데이터 전송률을 지원하기 위한 5G 또는 pre-5G 통신 시스템에 관련된 것이다.

Description

통신 또는 방송 시스템에서 채널 부호화/복호화 방법 및 장치{APPARATUS AND METHOD FOR CHANNEL ENCODING/DECODING IN COMMUNICATION OR BROADCASTING SYSTEM}
본 발명은 통신 또는 방송 시스템에서 채널 부호화/복호화 방법 및 장치에 관한 것이다.
4G 통신 시스템 상용화 이후 증가 추세에 있는 무선 데이터 트래픽 수요를 충족시키기 위해, 개선된 5G 통신 시스템 또는 pre-5G 통신 시스템을 개발하기 위한 노력이 이루어지고 있다. 이러한 이유로, 5G 통신 시스템 또는 pre-5G 통신 시스템은 4G 네트워크 이후(Beyond 4G Network) 통신 시스템 또는 LTE 시스템 이후(Post LTE) 이후의 시스템이라 불리어지고 있다.
높은 데이터 전송률을 달성하기 위해, 5G 통신 시스템은 초고주파(mmWave) 대역(예를 들어, 60기가(60GHz) 대역과 같은)에서의 구현이 고려되고 있다. 초고주파 대역에서의 전파의 경로손실 완화 및 전파의 전달 거리를 증가시키기 위해, 5G 통신 시스템에서는 빔포밍(beamforming), 거대 배열 다중 입출력(massive MIMO), 전차원 다중입출력(Full Dimensional MIMO: FD-MIMO), 어레이 안테나(array antenna), 아날로그 빔형성(analog beam-forming), 및 대규모 안테나(large scale antenna) 기술들이 논의되고 있다.
또한 시스템의 네트워크 개선을 위해, 5G 통신 시스템에서는 진화된 소형 셀, 개선된 소형 셀(advanced small cell), 클라우드 무선 액세스 네트워크(cloud radio access network: cloud RAN), 초고밀도 네트워크(ultra-dense network), 기기 간 통신(Device to Device communication: D2D), 무선 백홀(wireless backhaul), 이동 네트워크(moving network), 협력 통신(cooperative communication), CoMP(Coordinated Multi-Points), 및 수신 간섭제거(interference cancellation) 등의 기술 개발이 이루어지고 있다.
이 밖에도, 5G 시스템에서는 진보된 코딩 변조(Advanced Coding Modulation: ACM) 방식인 FQAM(Hybrid FSK and QAM Modulation) 및 SWSC(Sliding Window Superposition Coding)과, 진보된 접속 기술인 FBMC(Filter Bank Multi Carrier), NOMA(non orthogonal multiple access), 및 SCMA(sparse code multiple access) 등이 개발되고 있다.
통신 또는 방송 시스템에서, 링크(link) 성능은 채널의 여러 가지 잡음(noise), 페이딩(fading) 현상 및 심벌 간 간섭(ISI: inter-symbol interference)에 의해 현저히 저하될 수 있다. 따라서 차세대 이동 통신, 디지털 방송 및 휴대 인터넷과 같이 높은 데이터 처리량과 신뢰도를 요구하는 고속 디지털 통신 또는 방송 시스템들을 구현하기 위해서, 잡음, 페이딩 및 심벌 간 간섭을 극복하기 위한 기술을 개발하는 것이 요구된다. 잡음 등을 극복하기 위한 연구의 일환으로서, 최근에는 정보의 왜곡을 효율적으로 복원하여 통신의 신뢰도를 높이기 위한 방법으로서 오류정정부호(error-correcting code)에 대한 연구가 활발히 이루어지고 있다.
본 발명은 다양한 입력 길이와 부호율을 지원 할 수 있는 LDPC 부호화/복호화 방법 및 장치를 제공한다.
본 발명은 매우 높은 복호기 처리량(decoder throughput)을 지원하기 용이한 LDPC 부호의 패리티 검사 행렬의 기본 행렬을 설계하는 방법을 제공한다.
본 발명은 설계된 패리티 검사 행렬의 기본 행렬로부터 패리티 검사 행렬을 설계하는 방법을 제공한다.
본 발명은 설계된 패리티 검사 행렬로부터 다양한 부호어 길이를 지원하는 LDPC 부호화/복호화 방법 및 장치를 제공한다.
본 발명은 통신 또는 방송 시스템에서 LDPC 부호를 생성하는 방법에 있어서, 기본 행렬의 무게 분포가 밸런싱 조건을 만족하는 과정을 포함한다.
본 발명은 통신 또는 방송 시스템에서 LDPC 부호를 생성하는 방법에 있어서, 기본 행렬의 무게 분포가 부분 윈도잉 직교 조건을 만족하는 과정을 포함한다.
본 발명은 통신 또는 방송 시스템에서 채널 부호화 방법에 있어서, 패리티 검사 행렬의 블록 크기를 결정하는 과정; 무게 분포가 강하게 밸런싱된 상기 패리티 검사 행렬을 생성하기 위한 수열을 독출하는 과정을 포함한다. 연산을 상기 수열에 적용하여 수열을 변환하는 과정을 포함한다.
본 발명은 가변 길이와 가변 레이트에 대하여 LDPC 부호를 지원할 수 있다.
도 1은 시스테메틱(systematic) LDPC 부호어 구조도이다.
도 2는 LDPC 부호의 그래프 표현 방법에 대해 도시한 도면이다.
도 3은 LDPC 부호의 패리티 검사 행렬 구조에 대한 예시도이다.
도 4는 본 발명의 일 실시 예에 따른 지수 행렬의 예시도이다.
도 5는 본 발명의 일 실시 예에 따른 기본 행렬의 예시도이다.
도 6은 도 5의 기본행렬을 가지는 패리티 검사 행렬에 대해 2 개의 블록 평행 프로세서를 사용하여 LDPC 복호화를 수행하는 스케쥴링의 예시도이다.
도 7는 본 발명의 일 실시 예에 따른 기본 행렬의 다른 예시도이다.
도 8은 도 7의 기본행렬을 가지는 패리티 검사 행렬에 대해 2 개의 블록 평행 프로세서를 사용하여 LDPC 복호화를 수행하는 스케쥴링의 예시도이다.
도 9는 본 발명의 일 실시 예에 따른 지수 행렬의 예시도이다.
도 10은 본 발명의 일 실시 예에 따른 송신 및 수신 장치 블록 구성도이다.
도 11은 본 발명의 다른 실시 예에 따른 LDPC 복호화부 구조도이다.
도 12는 본 발명의 다른 실시 예에 따른 전송 블록 구조도이다.
도 13은 본 발명의 일 실시 예에 따른 다른 기본 행렬의 예시도이다.
도 14는 본 발명의 일 실시 예에 따른 다른 지수 행렬의 예시도이다.
도 15, 15a 및 15b는 본 발명의 일 실시 예에 따른 다른 기본 행렬의 예시도이다.
도 16, 16a 내지 16d는 본 발명의 일 실시 예에 따른 다른 기본 행렬의 예시도이다.
도 17, 17a 내지 17i는 본 발명의 일 실시 예에 따른 다른 기본 행렬의 예시도이다.
도 18, 18a 내지 18d는 본 발명의 일 실시 예에 따른 다른 기본 행렬의 예시도이다.
도 19, 19a 내지 19d는 본 발명의 일 실시 예에 따른 다른 지수 행렬의 예시도이다.
도 20, 20a 내지 20d는 본 발명의 일 실시 예에 따른 다른 지수 행렬의 예시도이다.
도 21, 21a 내지 21d는 본 발명의 일 실시 예에 따른 다른 지수 행렬의 예시도이다.
도 22, 22a 내지 22d는 본 발명의 일 실시 예에 따른 다른 지수 행렬의 예시도이다.
도 23, 23a 내지 23d는 본 발명의 일 실시 예에 따른 다른 지수 행렬의 예시도이다.
도 24, 24a 내지 24d는 본 발명의 일 실시 예에 따른 다른 지수 행렬의 예시도이다.
도 25, 25a 내지 25d는 본 발명의 일 실시 예에 따른 다른 지수 행렬의 예시도이다.
도 26, 26a 내지 26d는 본 발명의 일 실시 예에 따른 다른 지수 행렬의 예시도이다.
도 27, 27a 내지 27i는 본 발명의 일 실시 예에 따른 다른 기본 행렬의 예시도이다.
도 28, 28a 내지 28i는 본 발명의 일 실시 예에 따른 다른 지수 행렬의 예시도이다.
도 29, 29a 내지 29i는 본 발명의 일 실시 예에 따른 다른 지수 행렬의 예시도이다.
도 30, 30a 내지 30i는 본 발명의 일 실시 예에 따른 다른 지수 행렬의 예시도이다.
도 31, 31a 내지 31i는 본 발명의 일 실시 예에 따른 다른 지수 행렬의 예시도이다.
도 32, 32a 내지 32i는 본 발명의 일 실시 예에 따른 다른 지수 행렬의 예시도이다.
도 33, 33a 내지 33i는 본 발명의 일 실시 예에 따른 다른 지수 행렬의 예시도이다.
도 34, 34a 내지 34i는 본 발명의 일 실시 예에 따른 다른 지수 행렬의 예시도이다.
도 35, 35a 내지 35i는 본 발명의 일 실시 예에 따른 다른 지수 행렬의 예시도이다.
도 36, 36a 내지 36i는 본 발명의 일 실시 예에 따른 다른 기본 행렬의 예시도이다.
이하 본 발명의 바람직한 실시 예를 첨부된 도면의 참조와 함께 상세히 설명한다. 그리고, 본 발명을 설명함에 있어서, 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단된 경우, 그 상세한 설명은 생략한다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
본 발명의 주요한 요지는 유사한 기술적 배경을 가지는 여타의 시스템에도 본 발명의 범위를 크게 벗어나지 아니하는 범위에서 약간의 변형으로 적용 가능하며, 이는 본 발명의 기술분야에서 숙련된 기술적 지식을 가진 자의 판단으로 가능할 것이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
1960년대에 Gallager에 의해서 처음 소개된 저밀도 패리티 체크(Low Density Parity Check, 이하 LDPC) 부호는 당시 기술 수준에서 구현하기 어려운 복잡도로 인해 오랫동안 잊혀져 왔다. 하지만, 1993년 Berrou와 Glavieux, Thitimajshima에 의해 제안된 터보(turbo) 부호가 셰논(Shannon)의 채널 용량에 근접하는 성능을 보임에 따라, 터보 부호의 성능과 특성에 대한 많은 해석이 이루어지면서 반복 복호(iterative decoding)와 그래프를 기반으로 하는 채널 부호화에 대한 많은 연구가 진행되었다. 이를 계기로 1990년대 후반에 LDPC 부호가 재연구되면서 LDPC 부호에 대응되는 Tanner(Tanner) 그래프 상에서 합-곱(sum-product) 알고리즘에 기반한 반복 복호를 적용하여 복호화를 수행하면 LDPC 부호 또한 셰논의 채널 용량에 근접하는 성능을 가지게 됨이 밝혀졌다.
LDPC 부호는 일반적으로 패리티 검사 행렬(parity-check matrix)로 정의되며 Tanner 그래프로 통칭되는 이분(bipartite) 그래프를 이용하여 표현될 수 있다.
도 1은 시스테메틱(systematic) LDPC 부호어 구조도를 나타낸다.
이하에서는 도 1을 참조하여 시스테메틱 LDPC 부호어를 설명하고자 한다.
LDPC 부호는 Kldpc 개 비트 혹은 심볼로 구성되어 있는 정보어(102)를 입력받아 LDPC 부호화를 하여 Nldpc 개 비트 혹은 심볼로 구성되어 있는 부호어(100)(codeword)를 생성한다. 이하 설명의 편의를 위해, Kldpc 개 비트를 포함하는 정보어(102)를 입력받아 Nldpc 개 비트로 구성되는 부호어(100)가 생성되는 것으로 가정한다. 즉, Kldpc 개의 입력 비트인 정보어
Figure 112017055627412-pat00001
(102)를 LDPC 부호화하면, 부호어
Figure 112017055627412-pat00002
(100)가 생성된다. 즉, 정보어 및 부호어는 다수의 비트로 구성되어 있는 비트열이며, 정보어 비트 및 부호어 비트는 정보어 및 부호어를 구성하는 각각의 비트를 의미한다. 통상적으로 부호어가
Figure 112017055627412-pat00003
와 같이 정보어를 포함하고 있을 경우 시스테메틱(systematic) 부호라 한다. 여기에서,
Figure 112017055627412-pat00004
는 패리티 비트(104)이고, 패리티 비트의 개수 Nparity는 Nparity = Nldpc- Kldpc로 나타낼 수 있다.
LDPC 부호는 선형 블록 부호(linear block code)의 일종으로 아래의 수학식 1과 같은 조건을 만족하는 부호어를 결정하는 과정을 포함한다.
[수학식 1]
Figure 112017055627412-pat00005
여기에서,
Figure 112017055627412-pat00006
이다.
수학식 1에서, H는 패리티 검사 행렬, C는 부호어, ci는 부호어의 i 번째 비트, Nldpc는 LDPC 부호어의 길이를 의미한다. 여기서 hi는 패리티 검사 행렬(H)의 i번째 열(column)을 의미한다.
패리티 검사 행렬 H는 LDPC 부호어의 비트 개수와 동일한 Nldpc개의 열로 구성되어 있다. 수학식 1은 패리티 검사 행렬의 i 번째 열(hi)과 i 번째 부호어 비트 ci의 곱의 합이 '0'이 됨을 의미하므로, i 번째 열(hi)은 i 번째 부호어 비트 ci와 관계가 있음을 의미한다.
도 2를 참조하여 LDPC 부호의 그래프 표현 방법에 대해 설명하기로 한다.
도 2는 4 개의 행(row)와 8 개의 열(column)로 이루어진 LDPC 부호의 패리티 검사 행렬 H1의 일 예와 이를 Tanner 그래프로 도시한 도면이다. 도 2를 참조하면, 패리티 검사 행렬 H1은 열이 8개 있기 때문에 길이가 8인 부호어(codeword)를 생성하며, H1을 통해 생성된 부호는 LDPC 부호를 의미하며, 각 열은 부호화된 8 비트에 대응된다.
도 2를 참조하면, 패리티 검사 행렬 H1을 기반으로 부호화 및 복호화하는 LDPC 부호의 Tanner 그래프는 8 개의 변수 노드(variable node)들 즉, x1(202), x2(204), x3(206), x4(208), x5(210), x6(212), x7(214), x8(216)와 4 개의 검사 노드(check node)(218, 220, 222, 224)들로 구성되어 있다. 여기서, LDPC 부호의 패리티 검사 행렬 H1의 i 번째 열과 j 번째 행은 각각 변수 노드 xi와 j 번째 검사 노드에 대응된다. 또한, LDPC 부호의 패리티 검사 행렬 H1의 j 번째 열과 j 번째 행이 교차하는 지점의 1의 값, 즉 0이 아닌 값의 의미는, 도 2와 같이 Tanner 그래프 상에서 변수 노드 xi와 j 번째 검사 노드를 연결하는 선분(edge)이 존재함을 의미한다.
LDPC 부호의 Tanner 그래프에서 변수 노드와 검사 노드의 차수(degree)는 각 노드들에 연결되어 있는 선분의 개수를 의미하며, 이는 LDPC 부호의 패리티 검사 행렬에서 해당 노드에 대응되는 열 또는 행에서 0이 아닌 원소(entry)들의 개수와 동일하다. 예를 들어, 도 2에서 변수 노드들 x1(202), x2(204), x3(206), x4(208), x5(210), x6(212), x7(214), x8(216)의 차수는 각각 순서대로 4, 3, 3, 3, 2, 2, 2, 2가 되며, 검사 노드들(218, 220, 222, 224)의 차수는 각각 순서대로 6, 5, 5, 5가 된다. 또한, 도 2의 변수 노드에 대응되는 도 2의 패리티 검사 행렬 H1의 각각의 열에서 0이 아닌 원소들의 개수는 상술한 차수들 4, 3, 3, 3, 2, 2, 2, 2와 순서대로 일치하며, 도 2의 검사 노드들에 대응되는 도 2의 패리티 검사 행렬 H1의 각각의 행에서 0이 아닌 원소들의 개수는 상술한 차수들 6, 5, 5, 5와 순서대로 일치한다.
LDPC 부호는 도 2에서 나열한 이분 그래프 상에서 합곱 알고리즘에 기반한 반복 복호 알고리즘을 사용하여 복호할 수 있다. 여기서, 합곱 알고리즘은 메시지 패싱 알고리즘(message passing algorithm)의 일종이며, 메시지 패싱 알고리즘이라 함은 이분 그래프 상에서 에지를 통해 메시지들을 교환하고, 변수 노드 혹은 검사 노드로 입력되는 메시지들로부터 출력 메시지를 계산하여 업데이트하는 알고리즘을 나타낸다.
여기에서, i 번째 변수 노드의 메시지를 기반으로 i 번째 부호화 비트의 값을 결정할 수 있다. i 번째 부호화 비트의 값은 경판정(hard decision)과 연판정(soft decision) 모두 가능하다. 그러므로, LDPC 부호어의 i 번째 비트인 ci의 성능은 Tanner 그래프의 i 번째 변수 노드의 성능에 대응되며, 이는 패리티 검사 행렬의 i 번째 열의 1의 위치 및 개수에 따라 결정될 수 있다. 다시 말해, 부호어의 Nldpc개의 부호어 비트들의 성능은 패리티 검사 행렬의 1의 위치 및 개수에 의해 성능이 좌우 될 수 있으며, 이는 LDPC 부호의 성능은 패리티 검사 행렬에 따라 많은 영향을 받음을 의미한다. 따라서 우수한 성능을 갖는 LDPC 부호를 설계하기 위해서는 좋은 패리티 검사 행렬을 설계하는 방법이 필요하다.
통신 또는 방송 시스템에서 사용되는 패리티 검사 행렬은 구현의 용이성을 위해 통상적으로 준순환(quasi-cyclic) 형태의 패리티 검사 행렬을 사용하는 Quasi-cycle LDPC(QC-LDPC) 부호가 많이 사용된다.
QC-LDPC 부호는 작은 정사각 행렬의 형태를 가지는 0-행렬(zero matrix)이나 순환 순열 행렬(circulant permutation matrices)로 구성된 패리티 검사 행렬을 가짐을 특징으로 한다. 이 때, 순열 행렬이란 정사각 행렬의 모든 원소가 0 또는 1이고, 각 행이나 열이 오직 하나의 1만을 포함하는 행렬을 의미한다. 또한, 순환 순열 행렬이란, 항등 행렬의 각 원소들을 오른쪽으로 순환 이동 시킨 행렬을 의미한다.
이하에서는, QC-LDPC 부호에 대해서 구체적으로 설명한다.
먼저, 수학식 2와 같이
Figure 112017055627412-pat00007
크기의 순환 순열 행렬
Figure 112017055627412-pat00008
을 정의한다. 여기서,
Figure 112017055627412-pat00009
는 상기 행렬 P에서의 i번째 행(row), j번째 열의 원소(entry)를 의미한다.(여기서, 0 ≤ i, j < L)
[수학식 2]
Figure 112017055627412-pat00010
상기와 같이 정의된 순열 행렬 P에 대해서
Figure 112017055627412-pat00011
(0 ≤ i < L)는
Figure 112017055627412-pat00012
크기의 항등 행렬(identity matrix)의 각 원소들을 i 번 만큼 오른쪽 방향으로 순환 이동(circular shift) 시킨 형태의 순환 순열 행렬임을 알 수 있다.
가장 간단한 QC-LDPC 부호의 패리티 검사 행렬 H는 다음 수학식 3와 같은 형태로 나타낼 수 있다.
[수학식 3]
Figure 112017055627412-pat00013
만일
Figure 112017055627412-pat00014
Figure 112017055627412-pat00015
크기의 0-행렬이라 정의할 경우, 상기 수학식 3에서 순환 순열 행렬 또는 0-행렬의 각 지수
Figure 112017055627412-pat00016
는 {-1, 0, 1, 2, ..., L-1} 값 중에 하나를 가지게 된다. 또한 상기 수학식 3의 패리티 검사 행렬 H는 열 블록(column block)이 n개, 행 블록이 m개이므로,
Figure 112017055627412-pat00017
크기를 가지게 됨을 알 수 있다.
상기 수학식 3의 패리티 검사 행렬이 완전 계수(full rank)를 가진다면, 상기 패리티 검사 행렬에 대응되는 QC-LDPC 부호의 정보어 비트의 크기는 (n-m)L 이 됨은 자명하다. 편의상 정보어 비트에 대응되는 (n-m)개의 열 블록을 정보어 열 블록이라 부르고, 나머지 패리티 비트에 대응되는 m개의 열 블록을 패리티 열 블록이라 부른다.
통상적으로 상기 수학식 3의 패리티 검사 행렬에서 각 순환 순열 행렬 및 0-행렬을 각각 1과 0으로 치환(replace)하여 얻은
Figure 112017055627412-pat00018
크기의 이진(binary) 행렬을 패리티 검사 행렬 H의 모행렬(mother matrix) 또는 기본 행렬 (Base Matrix) M(H)라 하고, 각 순환 순열 행렬 또는 0-행렬의 지수를 선택하여 수학식 4와 같이 얻은
Figure 112017055627412-pat00019
크기의 정수 행렬을 패리티 검사 행렬 H의 지수 행렬 E(H)라 한다.
[수학식 4]
Figure 112017055627412-pat00020
결과적으로 지수 행렬에 포함되어 있는 정수 1개는 패리티 검사 행렬에서의 순환 순열 행렬에 대응되므로 상기 지수 행렬은 편의상 정수로 이루어진 수열들로 표현할 수도 있다. (상기 수열은 다른 수열과 구분하기 위하여 LDPC 수열 또는 LDPC 부호 수열이라고 부르기도 한다). 일반적으로 패리티 검사 행렬은 지수 행렬 뿐만 아니라 대수적으로 동일한 특성을 가지는 수열로도 표현 가능하다. 본 발명에서는 편의상 패리티 검사 행렬을 지수 행렬 또는 패리티 검사 행렬 내에 있는 1의 위치를 나타내는(indicate) 수열 등으로 표현하였으나, 패리티 검사 행렬에 포함되어 있는 1 또는 0의 위치를 구분할 수 있는 수열 표기 법은 다양하므로, 본 명세서에 표현한 방법에 국한되지 않고 대수적으로 동일한 효과를 나타내는 다양한 수열의 형태로 나타낼 수 있다.
또한 디바이스 상의 송수신 장치에서도 패리티 검사행렬을 직접 생성하여 LDPC 부호화 및 복호화를 수행할 수도 있지만, 구현 상의 특징에 따라 상기 패리티 검사행렬과 대수적으로 동일한 효과를 내는 지수 행렬이나 수열을 이용하여 LDPC 부호화 및 복호화를 수행할 수도 있다. 따라서 본 발명에서 편의상 패리티 검사 행렬을 이용한 부호화 및 복호화에 대해서 설명하고 있지만, 실제 디바이스 상에서는 상기 패리티 검사 행렬과 동일한 효과를 얻을 수 있는 다양한 방법을 통해 구현 가능함을 고려하고 있음을 밝혀둔다.
참고로 대수적으로 동일한 효과란, 서로 다른 두 개 이상의 표현에 대해서 논리적 또는 수학적으로 서로 간에 완벽하게 동일함을 설명 가능하거나 변환 가능함을 의미한다.
본 발명에서는 편의상 하나의 블록에 대응되는 순환 순열 행렬이 1 개인 경우만 설명하였으나, 이하 하나의 블록에 여러 개의 순환 순열 행렬이 포함된 경우에도 동일한 발명을 적용할 수 있다. 예를 들어 다음 수학식 5와 같이 하나의 i 번째 행 블록 및 j 번째 열 블록의 위치에 2 개의 순환 순열 행렬
Figure 112017055627412-pat00021
의 합으로 포함되어 있을 때, 그 지수 행렬은 수학식 6과 같이 나타낼 수 있다. 상기 수학식 6을 살펴보면, 상기 복수 개의 순환 순열 행렬 합이 포함된 행 블록 및 열 블록에 대응되는 i 번째 행 및 j 번째 열에 2 개의 정수가 대응되는 행렬임을 알 수 있다.
[수학식 5]
Figure 112017055627412-pat00022
[수학식 6]
Figure 112017055627412-pat00023
상기 실시 예와 같이 일반적으로 QC-LDPC 부호는 패리티 검사행렬에서 하나의 행 블록 및 열 블록에 복수 개의 순환 순열 행렬이 대응될 수 있으나 본 발명에서는 편의상 하나의 블록에 하나의 순환 순열 행렬이 대응되는 경우에 대해서만 설명하지만, 발명의 요지는 그에 한정되지 않는다. 참고로 이와 같이 하나의 행 블록 및 열 블록에 복수 개의 순환 순열 행렬이 중복되어 있는
Figure 112017055627412-pat00024
크기의 행렬을 순환 행렬(circulant matrix 또는 circulant)이라 한다.
한편, 상기 수학식 5 및 수학식 6의 패리티 검사 행렬 및 지수 행렬에 대한 모행렬 또는 기본행렬은 상기 수학식 3에서 사용된 정의와 유사하게 각 순환 순열 행렬 및 0-행렬을 각각 1과 0으로 치환(replace)하여 얻은 이진(binary) 행렬을 의미하는데, 하나의 블록에 포함된 복수 개의 순환 순열 행렬의 합 (즉, 순환 행렬) 또한 단순히 1로 치환한다.
LDPC 부호의 성능은 패리티 검사 행렬에 따라 결정되기 때문에 우수한 성능을 갖는 LDPC 부호를 위해 패리티 검사 행렬을 설계하는 것이 필요하다. 또한 시스템에서 다양한 서비스를 지원하기 위해서 유연한 입력 길이와 부호율을 지원할 수 있는 LDPC 부호화 또는 복호화 방법이 필요하다. LDPC 부호의 설계에 있어서 부호화 성능 및 유연성(flexibility)뿐만 아니라 중요한 요인 중 다른 하나는 복호 효율성이다. 일반적으로 QC-LDPC 부호는 병행(parallel) 복호에 유리한 구조임이 잘 알려져 있는데, 병행 복호는 복호 처리량(decoding throughput)을 증가시켜 복호로 인한 지연(latency)를 감소시키는데 적합하다. 이러한 QC-LDPC 부호의 병행 복호는 패리티 검사 행렬의 기본 행렬에 따라 복호 효율성을 보다 극대화할 수 있다. 본 발명에서는 복호 효율성을 극대화 할 수 있는 기본 행렬의 구조에 대해 제안하고, 덧붙여 기본 행렬의 설계 방법을 제안한다.
먼저 도 3과 같은 패리티 검사 행렬의 구조를 살펴보자. 상기 도 3에서 부분행렬 A와 D의 일부는 K개의 정보어 비트에 대응되며, 부분 행렬 B와 D의 나머지 일부는 G 개의 제 1 패리티 비트에 대응되며, 부분 행렬 C와 E는 (N - K - G)개의 제 2 패리티 비트에 대응된다. 통상적으로 도 3의 구조를 가지는 패리티 검사 행렬에 기반한 LDPC 부호화/복호화 시스템은 다양한 부호율(multi-rate) 지원이나 IR (incremental redundancy) HARQ과 같이 높은 유연성이 요구되는 기술을 지원하기 위하여 C는 영행렬(zero matrix)로 설정하고, E는 항등 행렬 또는 하삼각행렬(lower triangular matrix)으로 제한하는 경우가 많다. 본 발명에서는 설명의 편의상 E가 항등 행렬인 경우에 대해서만 자세히 기술하지만, 반드시 본 발명의 요지가 E가 항등 행렬인 경우에 대해서 한정되지는 않는다.
다음으로 본 발명의 쉬운 설명을 위해 도 4의 지수 행렬을 살펴보자. 참고로, 도 4a 내지 도 4b는 도 4의 지수 행렬을 구분하여, 각 부분을 확대하여 도시한 것이다. 도 4의 각 부분은 각 부분에 기재된 도면 번호에 해당하는 행렬에 대응된다. 따라서, 도 4a 내지 도 4b가 결합하여 도 4와 같은 하나의 지수 행렬을 구성할 수 있다.
상기 도 4의 지수 행렬에 대한 기본 행렬은 도 5와 같다. 도 4의 지수 행렬에서 빈 서브블록은 ZxZ 크기의 영행렬을 의미하며, 원소(entry)가 0인 것은 항등 행렬을 뜻한다. 또한 도 5의 기본 행렬에서 빈 블록은 원소(entry)가 0임을 의미함에 유의한다.
도 4의 각 행 블록에서 순환 순열이 있는 위치, 즉 도 5의 각 행에서 1이 있는 위치를 열 블록 기준으로 정리하면 다음과 같이 예를 들어 표현할 수 있다. (첫 번째 행을 0번째 행으로부터 시작)
행-6: {0, 1, 13, 16, 23, 38}
행-7: {1, 2, 4, 10, 11, 13, 17, 21, 27, 32, 39}
행-8: {0, 8, 15, 19, 24, 30, 35, 40}
행-9: {0, 1, 5, 9, 14, 20, 22, 25, 41}
행-10: {0, 1, 3, 29, 33, 37, 42}
행-11: {1, 6, 12, 14, 20, 23, 26, 43}
통상적으로 LDPC 복호기에서 1개의 블록 병행 프로세서(block parallel processor)를 이용하여 LDPC 부호의 복호를 수행할 경우에는, 각 행 블록에서 순차적으로 위의 위치에 해당하는 블록 단위로 복호를 수행한다. 만일 2개 이상의 블록 병행 프로세스를 이용할 경우에 각 프로세서는 각 행 블록에서 적절히 나누어진 블록 단위로 순차적인 복호를 수행한다. 이때 상기 행 블록에서 나누어진 블록들은 하드웨어 구현 특성상 모든 행블록에 대해서 정해진 규칙대로 구분되어야 한다. 예를 들면, 각 행 블록에 포함된 순환 순열 행렬에 대해 짝수 번째 열 블록에 대응되는 순환 순열 행렬과 홀수 번째 열 블록에 대응되는 순환 순열 행렬로 구분하여 도 6과 같이 LDPC 복호기에서 2 개의 블록 병행 프로세서로 처리하는 스케쥴링을 생각할 수 있다. 상기 도 6은 각 프로세서가 처리하는 순환 순열 행렬 1개에 대응되는 블록의 위치를 흐름 순서로 나열한 스케쥴링의 일례이다. 예를 들어 프로세서 0은 행-6에 대해서 0, 16, 38 번째 블록 순서로 처리 후, 행-7에 대해 2, 4, 10, 32, 39 번째 블록 순서로 처리함을 의미한다.
상기 도 6을 살펴보면, 정해진 규칙에 따라 첫 번째 프로세서는 짝수 번째 열 블록에 위치하는 순환 순열 행렬만 처리하고, 두 번째 프로세서는 홀수 번째 열 블록에 위치하는 순환 순열 행렬만 처리하게 된다. 여기서 차수가 1인 열 블록은 상기 규칙에 따르지 않고, 각 프로세스의 휴지기(休止期, idle time)를 최소화하기 위해 적절한 프로세스에서 선택적으로 처리할 수 있다고 가정하였다.
2 개의 블록 병행 프로세서로 이와 같은 규칙으로 설계된 LDPC 복호기는 차수가 1인 열 블록에 대응되는 블록을 적절히 잘 배치한다 하여도 도 6의 행-10의 경우처럼 특정 프로세스의 휴지기가 큰 경우가 발생하기가 쉽다. 이러한 프로세스의 비효율성은 결국 전체 프로세싱 타임을 증가시키기 때문에 시간당 복호 처리량을 감소 시키고 이는 결국 복호 지연으로 나타나게 된다. 다시 말해, 일반적으로 2개 이상의 블록 병행 프로세서를 이용하여 복호를 수행할 경우에는 각 프로세서에서 처리할 블록들이 잘 할당되도록 적절한 규칙을 통해 각 행 블록에 포함되어 있는 블록들을, (즉, 순환 순열 행렬들을) 프로세서의 개수만큼의 집합으로 나눌 수 있어야 됨을 알 수 있다.
하지만, 일반적으로 2 개 이상의 블록 병행 프로세서의 사용을 고려하지 않고 LDPC 부호의 패리티 검사 행렬에 대한 기본 행렬을 설계한 다음에 위와 같이 적절한 규칙을 통해 프로세서의 개수만큼 각 블록들을 나누는 것은 어려운 문제이다. 특히 LDPC 복호기가 상기 블록 평행 프로세서를 2개를 사용할지, 3개 또는 4개를 사용할지 모르는 상황에서는 더욱 어려운 문제가 된다.
본 발명에서는 이와 같은 복수 개의 블록 평행 프로세서의 사용을 고려하여 지수 행렬에서 순환 순열 행렬의 위치를 제한함으로써, 즉, 기본 행렬에서 원소 1의 위치를 제한함으로써 2개 이상의 블록 평행 프로세서의 사용까지 고려하여 복호 효율성을 극대화할 수 있는 기본 행렬 설계 방법을 제안한다.
먼저, 설계 하고자 하는 기본 행렬이 도 3의 행렬과 같이 주어졌다고 가정할 때, A의 크기는 gxk, B의 크기는 gxg, D의 크기는 (n-k-g)x(k+g), E의 크기는 (n-k-g)x(n-k-g)이라 하자. 설명의 편의를 위해 이하 실시 예에서는 C는 영행렬, E는 항등 행렬인 경우에 대해서만 설명하지만, 기본적으로 본 발명에서 제안하는 방법은 이에 한정될 필요는 없다.
본 발명의 주 목적은 복수 개의 블록 평행 프로세서의 사용을 고려하여, 기본 행렬에서 각 행의 원소 1들에 대한 위치 인덱스들이 사전에 정해진 규칙에 따라 원소의 개수가 유사한 집합 (set)들로 나누어 지도록 기본 행렬을 설계 하는 방법을 제안함에 있다. 이와 같이 기본 행렬에서 각 행의 원소 1들에 대한 위치 인덱스들이 사전에 정해진 규칙에 따라 원소의 개수가 유사한 집합으로 나누어지는 것을 편의상 밸런싱(balancing)이라 한다. 다르게 표현하면, 상기 밸런싱은 각 행의 원소 1들을 사전에 결정된 규칙에 따라 2개 이상의 집합에 할당함에 있어서 최대한 균등하게 할당됨을 의미한다. 이때 상기 각각의 2개 이상의 집합에 할당되는 행의 원소 1들의 개수의 차이가 1 이하일 때, 완전 밸런싱 (perfect balancing) 되었다 하고, 상기 각각의 2개 이상의 집합에 할당되는 행의 원소 1들의 개수의 차이가 2 이하일 때, 약하게 밸런싱 (weakly balancing) 되었다 명명한다. 또 다르게 밸런싱을 표현하면, 각 행의 원소 1들을 사전에 결정된 규칙에 따라 2개 이상의 그룹으로 분류함에 있어서 최대한 균등하게 분류함을 의미한다. 이때 상기 각각의 2개 이상의 그룹에 포함되는 원소 1들의 개수의 차이가 1 이하일 때, 완전 밸런싱 되었다 하고, 상기 각각의 2개 이상의 집합에 할당되는 행의 원소 1들의 개수의 차이가 2 이하일 때, 약하게 밸런싱 되었다 명명한다. 이와는 또 다르게 밸런싱을 표현하면, 기본 행렬이 밸런싱 되었다는 말의 의미는 사전에 정해진 규칙에 따라 각 행의 원소 1들을 2개 이상의 그룹 또는 집합으로 분류할 수 있으며, 상기 각 그룹 또는 집합에 포함되는 원소 1 또는 그 인덱스의 개수들의 차이가 1 이하인 경우에는 완전 밸런싱을 만족하는 기본행렬, 차이가 2 이하인 경우에는 약한 밸런싱을 만족하는 기본 행렬 등으로 표현할 수 있다. 한편, 본 발명에서는 완전 밸런싱, 약한 밸런싱, 강한 밸런싱과 같이 특성이 상이한 밸런싱을 제1 밸런싱, 제2 밸런싱, 제3 밸런싱 등의 용어를 사용하여 표현할 수 있다. 이렇게 설계된 기본 행렬은 집합의 개수만큼의 블록 평행 프로세서를 이용하여 LDPC 복호를 수행할 때 각 집합에 대응되는 위치 인덱스를 기준으로 복호를 수행함으로써 휴지기를 줄여주는 역할은 한다. 여기서 위치 인덱스는 자명하게 0부터 (n-1)까지 가질 수 있다.
기본 행렬의 설계에 앞서, 해당 기본 행렬을 가지는 LDPC 부호의 패리티 검사 행렬을 이용하여 LDPC 복호를 수행할 때 사용할 블록 평행 프로세서의 가능한 개수를 q1, q2, ..., qP 라 하자. 다시 말해, q1개 또는 q2 또는 ... qP개의 블록 평행 프로세서를 사용하는 경우를 모두 고려하여 기본 행렬을 설계한다고 가정하자. 만일 qi (i=1, 2, …, P)개의 블록 프로세서를 이용하여 LDPC 복호를 수행한다고 가정할 때, 휴지기를 최소화하기 위해 기본 행렬에서 차수가 d인 행에 대해서 각 1의 위치 인덱스 j1, j2, ..., jd 들은 최대한 동일한 원소의 개수를 가지는 qi 개의 부분 집합으로 구분되어야 한다. 이는 모든 행에 대해서 마찬가지로 성립해야 한다.
이러한 특성을 만족하는 실시 예를 다음에 나타낸다.
먼저 다음 수학식 7과 같이
Figure 112017055627412-pat00025
에 대해
Figure 112017055627412-pat00026
개의 집합을 정의한다.
[수학식 7]
Figure 112017055627412-pat00027
이해를 돕기 위해 상기 수학식 7의 간단한 예를 다음 수학식 8에 나타내었다.
[수학식 8]
Figure 112017055627412-pat00028
수학식 7 및 수학식 8에서
Figure 112017055627412-pat00029
개의 집합을 정의하는 방법은 매우 다양할 수 있으나, 본 발명에서는 설명의 편의를 위해 위 수학식 7 및 수학식 8과 같은 일례를 들어 설명한다. 하지만, 이에 국한할 필요는 없으며 또한 일반적으로
Figure 112017055627412-pat00030
개의 집합을 정의할 때 각 집합은 원소의 개수가 항상 동일할 필요도 없으며, 필요에 따라 적절히 정의할 수 있다. 단, 각 집합 Si는 항상 서로 다른 원소를 가지고 있어야 한다.
다음으로 기본 행렬에서 각 행에서 1의 위치에 대한 정보를 다음 수학식 9와 같이 인덱스 집합으로 표현하자.
[수학식 9]
Figure 112017055627412-pat00031
여기서 w(i,j)는 i번째 행의 j 번째 1이 있는 열에 대한 위치를 의미하며, di 는 i 번째 행의 차수(degree)를 의미한다.
이해를 돕기 위해 상기 수학식 9의 간단한 예를 도 5를 참고하여 다음 수학식 10에 나타내었다.
[수학식 10]
Figure 112017055627412-pat00032
다음으로 상기 수학식 9에 나타낸 인덱스 집합을 서로 공통 원소를 가지지 않으면서 다음 수학식 11을 만족하는
Figure 112017055627412-pat00033
개의 부분 집합으로 구분하자. (
Figure 112017055627412-pat00034
)
[수학식 11]
Figure 112017055627412-pat00035
여기서 Sj와 Ind(i)는 각각 수학식 7 및 수학식 9에서 정의된 집합이다.
유의해야 할 점은 상기 수학식 7에서는 설명의 편의상 각 집합 Sj들의 원소의 개수가 거의 동일할 뿐만 아니라 단순히 모듈로(modulo) 연산에 기준하여 구분되어 있으나, 일반적으로 서로 원소의 개수가 크게 달라도 상관 없으며 보다 복잡한 조건으로 구분되어도 문제 없다. 단, 반드시 서로 다른 집합 Sj는 반드시 서로 공통 원소가 없이 서로 소(disjoint)이어야 한다.
본 발명에서는 상기 수학식 11에서 정의된 집합 R(i,j) 들이 다음 수학식 12의 조건을 만족할 때, 상기 수학식 9와 같이 표현되는 기본 행렬의 무게 분포가 완전하게 밸런싱 (perfectly balancing) 되었다고 명명한다.
[수학식 12]
수학식 9에서 정의된 인덱스 집합들이
Figure 112017055627412-pat00036
에 대해서 항상 다음을 만족한다.
Figure 112017055627412-pat00037
상기 수학식 12와 같은 조건을 만족하는 기본 행렬은 만일
Figure 112017055627412-pat00038
개의 블록 평행 프로세서를 이용하여 LDPC 복호화를 수행할 경우에 각각의 j번째 프로세서들이 R(i,j)에 포함되어 있는 위치에 있는 순환 순열 행렬에 대해서 복호를 순차적으로 진행할 경우에 휴지기가 최소화 됨을 쉽게 알 수 있다.
하지만, 상기 수학식 12의 조건을 만족하는 기본 행렬을 설계하는 것은 어려운 문제이다. 그 이유는 좋은 기본 행렬을 설계함에 있어서 중요한 요인들은 기본 행렬 또는 패리티 검사 행렬의 각 행과 열의 1의 개수에 대한 분포와 Tanner 그래프 상의 사이클 특성 등도 영향을 미치기 때문이다. 즉, 좋은 무게 분포와 좋은 사이클 특성을 만족하면서 상기 수학식 12를 동시에 만족하는 기본 행렬을 설계하는 것은 매우 어려운 문제이다.
이와 같은 이유로 상기 수학식 12에서 정의된 인덱스 집합들에 대한 조건을 다음 수학식 13과 같이 다소 완화된 조건을 만족하는 기본 행렬의 무게 분포에 대해서 약하게 밸런싱 (weakly balancing) 되어 있다고 명명한다.
[수학식 13]
수학식 9에서 정의된 인덱스 집합들이
Figure 112017055627412-pat00039
에 대해서 항상 다음을 만족한다.
Figure 112017055627412-pat00040
상기 수학식 13을 만족하는 기본 행렬의 무게 분포가 약하게 밸런싱 되어 있는 경우에도 복수 개의 프로세서를 사용하여 LDPC 복호화를 수행할 때 휴지기가 크게 감소하지만 완전하게 밸런싱 되어 있는 경우에 비해서는 비효율적임은 자명하다. 하지만, 조건의 완화로 인해 LDPC 부호의 부호화 성능을 고려하여 좋은 패리티 검사 행렬을 위한 기본 행렬을 설계하기 용이해지는 장점이 있다.
다음으로 완전하게 밸런싱된 경우와 약하게 밸런싱된 경우를 동시에 고려하여 좋은 기본 행렬을 설계하기 다소 용이하며, 또한 복수 개의 프로세서들을 사용한 LDPC 복호화 시에 휴지기를 크게 감소 시킬 수 있는 방법을 제안한다.
먼저 수학식 9에서 정의한 인덱스 집합을 다음 수학식 13과 같이 새롭게 정의한다.
[수학식 14]
Figure 112017055627412-pat00041
여기서 w(i,j)는 차수가 1인 열을 제외하고, i번째 행의 j 번째 1이 있는 열에 대한 위치를 의미하며, di는 차수가 1인 열에 있는 원소를 제외한 i 번째 행의 차수(degree)를 의미한다.
본 발명에서는 상기 수학식 14에서 정의된 인덱스 집합으로부터 상기 수학식 11에서 정의된 집합 R(i,j)들이 다음 수학식 15의 조건을 만족할 때, 상기 수학식 9와 같이 표현되는 기본 행렬의 무게 분포가 강하게 밸런싱 (strongly balancing)되었다고 명명한다.
[수학식 15]
수학식 14에서 정의된 인덱스 집합들이
Figure 112017055627412-pat00042
에 대해서 항상 다음을 만족한다.
Figure 112017055627412-pat00043
상기 수학식 15에서는 수학식 14에서 차수가 1인 열들을 제외하여 고려하였는데, 이것은 차수가 1인 열들은 다른 열들에 비해 블록 병행 프로세서에 자유롭게 할당하기 용이하기 때문이다. 상기 수학식 15의 강한 밸런싱의 특징에 대해 보다 자세히 설명하면 다음과 같다. 기본적으로 수학식 15에서 나타낸 강한 밸런싱의 특징은 수학식 13과 같이 표현할 수 있는 약한 밸런싱과 유사한 특성을 가진다. 하지만, 기본 행렬의 각 행의 원소 1들의 2 개 이상의 집합 또는 그룹으로의 분류에 있어서 차수가 1인 열에 대응되는 원소 1은 제외하였다는 것이 큰 차이가 있다. 이를 다시 표현하면, 상기 강한 밸런싱은 각 행에서 차수가 1인 열에 대응되는 원소 1을 제외한 나머지 원소 1들을 사전에 결정된 규칙에 따라 2개 이상의 집합에 할당함에 있어서 최대한 균등하게 할당됨을 의미한다. 이때 상기 각각의 2개 이상의 집합에 할당되는 원소 1들의 개수의 차이가 2 이하일 때, 강하게 밸런싱 (strongly balancing) 되었다 명명한다. 또 다르게 강한 밸런싱을 표현하면, 각 행에서 차수가 1인 열에 대응되는 원소 1을 제외한 나머지 원소 1들을 사전에 결정된 규칙에 따라 2개 이상의 그룹으로 분류함에 있어서 최대한 균등하게 분류함을 의미한다. 이때 상기 각각의 2개 이상의 그룹에 포함되는 원소 1들의 개수의 차이가 2 이하일 때, 강하게 밸런싱 되었다 명명한다. 이와는 또 다르게 강한 밸런싱을 표현하면, 기본 행렬이 강한 밸런싱 되었다는 말의 의미는 사전에 정해진 규칙에 따라 각 행에서 차수가 1인 열에 대응되는 원소 1을 제외한 나머지 원소 1들을 2개 이상의 그룹 또는 집합으로 분류할 수 있으며, 상기 각 그룹 또는 집합에 포함되는 원소 1 또는 그 인덱스의 개수들의 차이가 2 이하인 경우에 강한 밸런싱을 만족하는 기본 행렬이라고 표현할 수 있다. 따라서 상기 수학식 15와 같이 강한 밸런싱 조건을 만족하는 경우에 차수가 1인 열들에 대응되는 순환 순열 행렬들을 적절히 프로세서에 할당함으로써 수학식 12에서 정의된 완전한 밸런싱에 매우 근접한 특성을 갖게 되어 프로세서의 휴지기를 크게 감소할 수 있게 된다.
이해를 돕기 위해 구체적인 일 실시 예로서 도 7에 나타낸 기본 행렬을 살펴보자. 도 7의 기본 행렬에서 빈 블록은 원소(entry)가 0임을 의미함에 유의한다.
도 7의 각 행에서 1이 있는 위치(즉, 실제 패리티 검사 행렬에서 순환 순열 행렬이 위치하는 열 블록의 위치)를 열 블록 기준으로 정리하면 다음과 같이 예를 들어 표현할 수 있다. (첫 번째 행을 0번째 행으로부터 시작)
행-6: {0, 1, 2, 11, 25, 38}
행-7: {1, 5, 10, 14, 15, 19, 20, 21, 32, 39}
행-8: {0, 1, 3, 4, 9, 11, 13, 28, 34, 40}
행-9: {0, 1, 6, 7, 12, 26, 37, 41}
행-10: {0, 1, 3, 9, 11, 14, 28, 42}
행-11: {0, 1, 2, 4, 5, 8, 27, 31, 43}
상기 도 7의 기본 행렬을 가지는 패리티 검사 행렬에 대해 2 개의 블록 평행 프로세서를 이용하여 LDPC 복호를 수행하는 경우를 고려하여 수학식 7, 수학식 11 및 수학식 14에서 정의된 집합들을 정리하면 다음 수학식 16과 같이 나타낼 수 있다.
[수학식 16]
Figure 112017055627412-pat00044
상기 도 7과 수학식 16을 살펴보면, 도 7의 기본 행렬은 수학식 15를 만족함으로써 강하게 밸런싱된 기본 행렬임을 확인할 수 있다. 따라서 각 행 블록에 포함된 순환 순열 행렬에 대해 짝수 번째 열 블록에 대응되는 순환 순열 행렬과 홀수 번째 열 블록에 대응되는 순환 순열 행렬로 구분하여 도 8과 같이 LDPC 복호기에서 2 개의 블록 병행 프로세서로 처리하는 스케쥴링을 생각할 수 있다. 상기 도 8은 각 프로세서가 처리하는 순환 순열 행렬 1개에 대응되는 블록의 위치를 흐름 순서로 나열한 스케쥴링의 일례이다. 예를 들어 프로세서 0은 행-6에 대해서 0, 2, 38 번째 블록 순서로 처리 후, 행-7에 대해 10, 14, 20, 32 번째 블록 순서로 처리함을 의미한다. 이때 유의해야 할 것은 차수가 1인 열 블록에 대응되는 순환 순열 행렬은 각각의 프로세서에 적절히 배치되어 있음을 확인할 수 있다. 예를 들어 프로세서-0에서 행-7을 처리할 때 39 번째 열 블록의 순환 순열 행렬을 처리하는 경우가 이에 해당된다.
상기 도 8을 살펴보면, 각 프로세스의 휴지기가 최소화 되어 있음을 알 수 있다. 실제로 수학식 15의 강한 밸런싱 조건을 만족하도록 기본 행렬을 설계할 경우에는 수학식 12의 완전 밸런싱 조건에 거의 근접하는 기본 행렬의 설계가 용이해 진다.
상기 도 8의 경우에는 LDPC 복호기의 블록 병렬 프로세서가 2개인 경우와 프로세서가 4개인 경우를 동시에 설계하였다. 예를 들어 도 8의 기본 행렬에 대해 프로세서 4개를 가정하여 수학식 7과 수학식 11에서 정의된 집합을 다시 정리하면 다음과 같다.
Figure 112017055627412-pat00045
이와 같이 완전 밸런싱 또는 약한 밸런싱 또는 강하게 밸런싱된 무게 분포를 가지는 기본 행렬을 설계함에 있어서 고려하는 블록 병행 프로세서의 개수에 따라 기본 행렬의 설계 기준이 변경됨을 알 수 있다. 상기 도 8의 실시 예에서는 블록 프로세서 2개를 사용하는 경우와 블록 프로세서 4개를 사용하는 경우에 대해 동시에 강한 밸런싱 조건을 만족하고 있다.
만일 수학식 7에서
Figure 112017055627412-pat00046
개의 집합으로 구분하여, 수학식 12, 수학식 13 및 수학식 15에서 제시한 밸런싱 조건을 만족하는 기본 행렬은 편의상 각각 완전
Figure 112017055627412-pat00047
-밸런싱, 약한
Figure 112017055627412-pat00048
-밸런싱, 강한
Figure 112017055627412-pat00049
-밸런싱을 만족한다고 표현한다. 예를 들어 도 8의 기본 행렬은 약한 2-밸런싱, 약한 4-밸런싱을 동시에 만족한다 또는 2-밸런싱, 4-밸런싱을 만족한다고 할 수 있다.
만일 LDPC 복호기에서 사용할 블록 병행 프로세서의 개수가 불명확하여 q1, q2, ..., qP 개의 프로세서를 사용하는 경우를 동시에 고려하여 각각의 밸런싱 조건을 만족할 경우에는 편의상 완전 (q1, q2, ..., qP)-밸런싱, 약한 (q1, q2, ..., qP)-밸런싱, 강한 (q1, q2, ..., qP)-밸런싱 등으로 표현한다.
이상 본 발명에서는 편의상 모듈로(modulo)를 이용한 일정한 규칙에 기반하여 상기 집합 Si들을 구분하였으나, 앞서 설명한 바와 같이 반드시 이에 국한할 필요는 없다. Si의 구분은 시스템의 요구 조건에 따라 적절히 비규칙적으로 정의될 수도 있으며 각 집합의 원소의 개수도 서로 다를 수 있다. 다만, 각 집합 Si들은 서로 다른 원소를 가짐으로 서로 소인 특성은 유지해야 한다.
본 발명에서 2개 이상의 블록 병행 프로세서를 사용할 경우에 휴지기를 최소화 하기 위한 또 다른 LDPC 부호의 기본 행렬 설계 방법으로서 부분 윈도잉 직교(partial windowing-orthogonal) 조건에 대해서 설명한다.
먼저 기존에 잘 알려진 레이어드 복호(layered decoding)에 적합한 기본 행렬 또는 지수 행렬의 구조에 대해서 도 9를 토대로 간단히 설명한다. 참고로, 도 9a 내지 도 9b는 도 9의 지수 행렬을 구분하여, 각 부분을 확대하여 도시한 것이다. 도 9의 각 부분은 각 부분에 기재된 도면 번호에 해당하는 행렬에 대응된다. 따라서, 도 9a 내지 도 9b가 결합하여 도 9와 같은 하나의 지수 행렬을 구성할 수 있다. 도 9를 살펴보면, 6, 7, 8 번째 행은 서로 직교함을 알 수 있다. 여기서 직교란, 각 행에서 서로 동일한 열 블록 위치에 순환 순열 행렬이 없음을 의미한다. 즉, 상기 선택된 6, 7, 8 번째 행은 각 열 블록에 최대 1 개의 순환 순열 행렬이 있게 된다. 마찬가지로 9, 10, 11, 12 번째 행도 서로 직교하며, 13, 14, 15, 16, 17번째 행도 서로 직교한다. 하지만, 12, 13번째 행은 서로 직교하지 않음을 쉽게 알 수 있다. (3번재 열 블록 참조)
이와 같은 직교 구조는 레이어드 복호, 즉 행 병행 (row parallel) 프로세서에 기반한 복호에 적합한 구조이다. 행 병행 프로세서는 일반적으로 행 블록 전체에 대하여 복호를 수행하는 방법으로서 일반적으로 블록 병행 프로세서 보다는 크기나 복잡도가 높은 반면 보다 빠른 복호가 가능하게 한다. 행 병행 프로세서 기반 복호에서는 이와 같이 서로 직교 구조를 가지는 행들을 마치 1 개의 행으로 간주하여 복호를 수행할 수 있어 매우 빠른 복호가 가능하다. 예를 들어 상기 직교 구조를 가지는 6,7, 8번째 행 블록을 행 병행 프로세서에서는 1개의 행 블록처럼 복호를 수행할 수 있다. 이러한 직교 구조를 가지는 행 블록들을 1 개의 행 블록으로 간주할 때 이를 유효 (effective) 행 블록이라고 한다. 레이어드 복호에서는 이러한 유효 행 블록 내에 포함된 복수 개의 행 블록들은 서로 직교하지만, 유효 행 블록 사이에서는 서로 직교하지 않는 특징이 있다. 예를 들어 상기 12, 13번째 행 블록은 서로 다른 유효 행 블록에 포함되며 서로 직교하지 않는다.
블록 병행 프로세서에 기반한 LDPC 복호기에서는 2개 이상의 프로세서를 이용한 복호를 수행할 때 복호 효율성을 증대 시키기 위해 위와 같은 직교 구조와 다소 다른 구조가 적합하다.
본 발명에서는 부분 윈도잉 직교 구조를 제안한다. 먼저 이에 앞서 윈도잉 직교 구조를 간단히 설명하면 다음과 같다.
만일 p 윈도잉 직교 구조를 만족하는 기본 행렬이 있다면, 그 의미는 p개의 행 블록을 순차적으로 선택하면 이는 항상 직교 구조를 만족함을 의미한다. 다시 말해, i, i+1, …, i+p-1 번째 행 블록을 선택했을 때 항상 상기 p개의 행 블록은 직교함을 특징으로 한다. 이와 같은 구조의 p 윈도잉 직교 구조를 가지는 기본 행렬은 블록 병행 프로세서뿐만 아니라 행 병행 프로세서 기반 LDPC 복호 시에도 매우 높은 복호 효율성을 제공한다. 하지만, 이는 기본 행렬에 대한 매우 강한 제약 조건으로서 LDPC 부호의 부호화 성능의 열화를 유발하기 쉽다. 따라서 도 3과 같은 패리티 검사 행렬의 구조를 사용하는 LDPC 부호화/복호화 시스템에서는 통상적으로 부분 행렬 [A B] 부분에 대해서 복수 개의 행 블록에 대한 직교 구조를 고려하지 않으며, 상기 도 3의 패리티 검사 행렬에서 부분 행렬 [D E] 또는 [D E]의 일부에 대응되는 기본 행렬의 부분 행렬에 대해서만 직교 구조를 고려한다. 도 9에서 제시한 레이어드 복호에 적합한 지수 행렬도 도3의 부분 행렬 [D E]에 대응되는 부분에 대해서만 직교 구조를 가짐을 쉽게 알 수 있다.
하지만, 이러한 부분 행렬 [D E] 또는 그 일부에 대응되는 직교 구조 또한 LDPC 부호의 차수 분포에 대해 큰 제약을 가하게 되어 LDPC 부호화 성능을 열화 시킬 수 있다. 이러한 문제를 해결하기 위하여 사전에 정해진 소정의 열 블록에 대해서는 직교 구조를 제한하지 않는다. 예를 들어 도 7의 기본 행렬을 참조하면, 앞의 2개의 열 블록에 대해서는 부분 행렬 [D E]에 대해서는 직교성을 전혀 고려하지 않고 있다. 이는 복호 효율성을 다소 떨어뜨리는 효과가 있으나 그 반면에 부호화 성능을 크게 개선하는 장점이 있다. 이와 같이 전체 패리티 검사 행렬 또는 그 기본 행렬에서 소정의 행 블록 (또는 행) 그리고 열 블록(또는 열)을 제외하고 나머지에 대해서 직교성을 고려하되 상기 나머지 부분에 대해서 i, i+1, …, i+p-1 번째 행 블록을 선택했을 때 항상 상기 p개의 행 블록이 직교할 경우에 p 부분 윈도잉 직교 구조를 만족하는 패리티 검사 행렬 또는 기본 행렬이라고 명명한다.
도 7을 참조하여 설명하면, 도 7의 기본 행렬에서 위 6개의 행과 앞쪽 2 개의 열을 제외한 나머지 부분 행렬을 살펴보면 인접한 2 개의 행이 항상 직교성을 가지고 있음을 알 수 있다. 따라서 도 7은 2 부분 윈도잉 직교 구조를 만족하는 기본 행렬임을 의미한다.
정리하여 설명하면, 주어진 기본 행렬에 대해서 소정의 행과 열을 제외한 나머지 부분 행렬에서 p 윈도잉 직교 구조를 만족할 경우에, 상기 기본 행렬은 p 부분 윈도잉 직교 구조를 만족한다고 한다.
p 부분 윈도잉 직교 구조를 만족하는 기본 행렬을 설계함에 있어서 많은 경우에 도 7과 같이 도 3에서 [A B]에 대응되는 구조에 대해서는 직교성을 고려하지 않으며, 상기 도 3에서 [D E]에 대응되며 소정의 열 블록을 제외한 경우에 대해서만 부분 윈도우 직교성을 고려하여 설계하지만, 반드시 그와 같이 한정할 필요는 없다.
결론적으로 본 발명에서 제안하는 밸런싱 특성과 부분 윈도잉 직교 구조를 만족하는 기본 행렬을 가지는 패리티 검사 행렬을 이용한 LDPC 부호화 및 복호화 방법 및 장치는 2개 이상의 블록 병행 프로세서를 이용한 LDPC 복호화를 고려할 때 부호화 성능은 개선하면서 복호 효율성을 극대화하는 특징을 가지고 있다.
도 10은 본 발명의 일 실시 예에 따른 LDPC 부호화부 및 복호화부의 세부 구성을 설명하기 위한 블록도이다.
Kldpc 개의 비트들은 LDPC 부호화부(1010)를 위한 Kldpc 개의 LDPC 정보어 비트들 I=(i0,i1,...,
Figure 112017055627412-pat00050
)을 구성할 수 있다. LDPC 부호화부(1010)는 Kldpc 개의 LDPC 정보어 비트들을 시스테매틱하게 LDPC 부호화하여, Nldpc 개의 비트들로 구성된 LDPC 코드워드
Figure 112017055627412-pat00051
=(c0,c1,..., cNldpc-1)=(i0,i1,..., iKldpc-1,p0,p1,...,pNldpc-Kldpc-1)를 생성할 수 있다.
상기 수학식 1에서 서술한 바와 같이 상기 LDPC 코드워드와 패리티 검사 행렬의 곱이 제로 벡터가 되도록 부호어를 결정하는 과정을 포함한다.
도 10에 따르면, 부호화 장치는 LDPC 부호화부(1010)을 포함하며, LDPC 부호화부(1010)는 패리티 검사 행렬 또는 그에 대응되는 지수행렬 또는 수열에 기초하여 입력 비트들에 대해 LDPC 부호화를 수행하여 LDPC 부호어를 생성할 수 있다. 이 경우, LDPC 부호화부(1010)는 부호율(즉, LDPC 부호의 부호율)에 따라 서로 다르게 정의된 패리티 검사 행렬을 이용하여 LDPC 부호화를 수행할 수 있다.
통상적인 QC LDPC 부호는 부호화를 적용해야 하는 입력 비트 크기를 확인하는 과정과 해당 입력 비트에 적절한 블록의 크기(Z)를 결정하는 과정, 그리고 상기 LDPC 행렬과 결정된 블록 크기에 기반하여 LDPC 부호화 하는 과정을 포함한다. 복호화 과정에서도 이에 대응되는 유사한 과정이 포함된다.
한편, 부호화 장치는 LDPC 부호의 부호율, 부호어 길이, 패리티 검사 행렬에 대한 정보를 기저장하기 위한 메모리(미도시)를 더 포함할 수 있으며, LDPC 부호화부(1010)는 이러한 정보를 이용하여 LDPC 부호화를 수행할 수 있다. 상기 패리티 검사 행렬에 대한 정보는 본 발명에서 제시하는 패리티 행렬을 사용할 경우 순환 행렬의 지수 값에 대한 정보를 저장 할 수 있다.
복호화 장치는 LDPC 복호화부(1020)를 포함할 수 있다. LDPC 복호화부(1020)는 패리티 검사 행렬 또는 그에 대응되는 지수 행렬 또는 수열 에 기초하여 LDPC 부호어에 대해LDPC 복호화를 수행한다.
예를 들어, LDPC 복호화부(1020)는 반복 복호 알고리즘을 통해 LDPC 부호어 비트들에 대응되는 LLR(Log Likelihood Ratio) 값을 패싱하여 LDPC 복호화를 수행하여 정보어 비트들을 생성할 수 있다.
여기에서, LLR 값은 LDPC 부호어 비트들에 대응되는 채널 값으로, 다양한 방법으로 표현될 수 있다.
예를 들어, LLR 값은 송신 측에서 채널을 통해 전송한 비트가 0일 확률과 1일 확률의 비율에 Log를 취한 값으로 나타낼 수 있다. 또한, LLR 값은 경판정에 따라 결정된 비트 값 자체가 될 수 있으며, 송신 측에서 에서 전송한 비트가 0 또는 1일 확률이 속하는 구간에 따라 결정된 대표 값이 될 수도 있다.
이 경우, 송신 측은 LDPC 부호화부(1010)를 이용하여 LDPC 부호어를 생성할 수 있다.
이 경우, LDPC 복호화부(1020)는 부호율(즉, LDPC 부호의 부호율)에 따라 서로 다르게 정의된 패리티 검사 행렬을 이용하여 LDPC 복호화를 수행할 수 있다.
도 11은 본 발명의 다른 실시 예에 따른 LDPC 복호화부 구조도를 나타낸다.
한편, 상술한 바와 같이 LDPC 복호화부(1020)는 반복 복호 알고리즘을 사용하여 LDPC 복호화를 수행할 수 있으며, 이 경우, LDPC 복호화부(1020)는 도 11과 같은 구조로 구성될 수 있다. 다만, 반복 복호 알고리즘의 경우 이미 공지된 사항이라는 점에서, 도 11에 도시된 세부 구성 역시 일 예일 뿐이다.
도 11에 따르면, 복호화 장치(1100)는 입력 처리기(1101), 메모리(1102), 변수노드 연산기(1104), 제어기(1106), 검사노드 연산기(1108) 및 출력 처리기(1110) 등을 포함한다.
입력 처리기(1101)는 입력되는 값을 저장한다. 구체적으로, 입력 처리기(1101)는 무선 채널을 통해 수신되는 수신 신호의 LLR 값을 저장할 수 있다.
제어기(1104)는 무선 채널을 통해 수신되는 수신 신호의 블록의 크기(즉, 부호어의 길이), 부호율에 대응되는 패리티 검사 행렬을 기반으로 하여 변수 노드 연산기(1104)에 입력되는 값의 개수 및 메모리(1102)에서의 주소 값, 검사 노드 연산기(1108)에 입력되는 값의 개수 및 메모리(1102)에서의 주소 값 등을 결정한다.
메모리(1102)는 변수 노드 연산기(1104)와 검사 노드 연산기(1108)의 입력 데이터 및 출력 데이터를 저장한다.
변수 노드 연산기(1104)는 제어기(1106)에서 입력받은 입력 데이터의 주소 정보 및 입력 데이터의 개수 정보에 따라 메모리(1102)에서 데이터들을 입력 받아 변수 노드 연산을 한다. 이후, 변수 노드 연산기(1104)는 제어기(1106)에서 입력 받은 출력 데이터의 주소 정보 및 출력 데이터의 개수 정보에 기초하여 변수 노드 연산 결과들을 메모리(1102)에 저장한다. 또한, 변수 노드 연산기(1104)에서는 입력 처리기(1101)와 메모리(1102)에서 입력 받은 데이터를 기반으로 하여 변수 노드 연산 결과를 출력 처리기(1110)에 입력한다.
검사 노드 연산기(1108)는 제어기(1106)에서 입력받은 입력 데이터의 주소 정보 및 입력 데이터의 개수 정보에 기초하여 메모리(1102)에서 데이터들을 입력받아 검사 노드 연산을 한다. 이후, 검사 노드 연산기(1108)는 제어기(1106)에서 입력받은 출력 데이터의 주소 정보 및 출력 데이터의 개수 정보에 기초하여 변수 노드 연산 결과들을 메모리(1102)에 저장한다.
출력 처리기(1110)는 변수 노드 연산기(1104)로부터 입력받은 데이터를 기반으로 하여 송신 측의 부호어의 정보어 비트들이 0이었는지 1이었는지 경판정한 후, 그 경판정 결과를 출력하게 되고, 출력 처리기(1110)의 출력 값이 최종적으로 복호화된 값이 되는 것이다.
한편, 복호화 장치(1100)는 LDPC 부호의 부호율, 부호어 길이, 패리티 검사 행렬에 대한 정보를 기저장하기 위한 메모리(미도시)를 더 포함할 수 있으며, LDPC 복호화부(1020)는 이러한 정보를 이용하여 LDPC 부호화를 수행할 수 있다. 하지만, 이는 일 예일 뿐, 해당 정보들은 송신 측으로부터 제공될 수도 있다.
도 12는 본 발명의 다른 실시 예에 따른 전송 블록 구조도이다.
도 12를 참조하면, <Null> bit들을 세그먼트된 길이가 동일하도록 하기 위해 추가할 수 도 있다.
또한 <Null> bit들을 LDPC 부호의 정보 길이를 맞추기 위해 추가할 수도 있다.
이상에서는 다양한 길이의 LDPC 부호를 지원하는 통신 및 방송 시스템에 있어서, QC-LDPC 부호에 기반하여 다양한 블록 크기를 적용하는 방법에 대해서 살펴보았다.
도 13은 본 발명에서 제안하는 밸런싱과 부분 윈도우 직교 특성을 만족하는 기본 행렬의 예시도이다. 특히 상기 도 13의 기본행렬은 강한 2-밸런싱을 만족하고 있으며, 또한 2 부분 윈도잉 직교 특성을 만족하는 경우에 대한 예시도이다.
도 13의 기본행렬은 90x112 크기를 가지며 위부터 5개의 행과 앞에서부터 27개의 열에 대응되는 부분 행렬에서는 차수가 1인 열이 없다. 이는 상기 부분 행렬에 기반하여 어떠한 지수 행렬을 정의하여도 상기 지수 행렬에 대응되는 패리티 검사 행렬에는 차수가 1인 열 또는 열 블록이 없음을 의미한다. 또한 도 13a 내지 도13h는 도 13의 기본행렬을 구분하여, 각 부분을 확대하여 도시한 것이다. 도 13은 각 부분에 기재된 도면 번호에 해당하는 도면의 행렬에 대응된다. 따라서, 도 13a 내지 도 13h가 결합하여 하나의 패리티 검사 행렬을 구성할 수 있다. (도면에서 기본행렬이 2*4 개의 Partition으로 13a, 13b, …, 13h로 나누어졌다 가정)
상기 도 13에 나타낸 기본 행렬의 또 다른 특징은 28번째 열부터 112번째 열까지는 모두 차수가 1인 특징을 가지고 있다. 즉, 상기 도 13의 기본행렬의 6번째 행부터 90번째 행으로 구성된 85x112 크기의 기본 행렬은 단일 패리티 검사 부호(single parity-check code)에 대응됨을 특징으로 한다.
상기 도 13의 기본행렬에서 처음 22개의 열은 부호화를 수행하기 위한 정보 비트 (information bit)에 대응된다. 경우에 따라 상기 정보 비트들을 코드 블록(code block)이라고도 한다.
상기 도 13의 기본행렬에서 차수가 1인 열을 제외하고, 각 행에 있는 원소 1의 위치를 살펴보면, 홀수 번째 위치한 1의 개수와 짝수 번째 위치한 1의 개수의 차이가 모든 행에 대해 2 이하를 만족한다. 이는 수학식 7과 같이 S1, S2에 대해 각각 홀수, 짝수 집합으로 정의한 다음 상기 각 행의 원소 1들을 상기 집합에 맞게 분류하면 수학식 15에서 정의한 강한 밸런싱 특성을 만족함을 알 수 있다. 또한 상기 도 13의 기본행렬에서 차수가 1인 열이 포함되지 않은 위 5개의 행과 앞에서부터 27개의 열로 이루어진 부분행렬에 대해서 수학식 12에서 정의한 완전 밸런싱 특성을 만족함을 알 수 있다. 이와 같이 기본행렬의 설계에 있어서 상기 기본 행렬의 각 부분 행렬에 대해 서로 다른 밸런싱 특성들을 결합하여 설계할 수도 있다.
송신기에서는 상기 도 13과 같이 밸런싱 및 부분 윈도잉 직교 특성을 가지는
기본행렬을 가지는 패리티 검사행렬을 통해 부호어를 생성하고 전송한다. 이때 필요에 따라 상기 부호어에서 정보 비트 일부에 천공(puncturing)을 적용하여 전송할 수도 있다. 수신기에서는 상기 전송된 부호어에 대한 수신 신호를 기반으로 복호를 수행한다. 만일 1개의 블록 병행 프로세서를 이용하여 복호를 수행할 경우에는 1개의 순환 순열 행렬 또는 순환 행렬에 대해 순서대로 복호를 수행한다. 만일 2개의 블록 병행 프로세서를 이용하여 복호를 수행할 경우에는 상기 밸런싱 특성을 고려하여 설정된 집합 또는 그룹에 따라 상기 각 그룹에 대응되는 순환 순열 행렬 또는 순환 행렬에 대해 각각 2 개의 블록 병행 프로세서를 이용하여 동시에 복호를 수행할 수 있다.
도 14는 본 발명에서 제안하는 밸런싱과 부분 윈도우 직교 특성을 만족하는 도 13의 기본 행렬을 가지는 지수 행렬의 예시도이다. 따라서 상기 도 14의 지수 행렬에 대응되는 패리티 검사행렬 또한 각각의 열 블록에 대해 강한 2-밸런싱을 만족하고 있으며, 또한 각각의 행 블록에 대해 2 부분 윈도잉 직교 특성을 만족한다. 도 14의 지수행렬은 90x112 크기를 가지며 위부터 5개의 행과 앞에서부터 27개의 열에 대응되는 부분 행렬에서는 차수가 1인 열이 없다. 또한, 도 14의 지수 행렬에서 빈 블록은 LxL 크기의 0 행렬에 대응됨을 의미한다.
또한 도 14a 내지 도14h는 도 14의 지수행렬을 구분하여, 각 부분을 확대하여 도시한 것이다. 도 14는 각 부분에 기재된 도면 번호에 해당하는 도면의 행렬에 대응된다. 따라서, 도 14a 내지 도 14h가 결합하여 하나의 지수 행렬 구성할 수 있다. 도 14에서는 기본행렬이 2*4 개의 파티션(Partition)으로 14a, 14b, … , 14h로 나누어졌다 가정하였다. 상기 도 14에 나타낸 지수 행렬의 또 다른 특징은 28번째 열부터 112번째 열까지는 모두 차수가 1인 특징을 가지고 있다. 즉, 상기 도 14의 지수행렬의 6번째 행부터 90번째 행으로 구성된 85x112 크기의 지수 행렬은 많은 수의 단일 패리티 검사 부호(single parity-check code)에 대응됨을 알 수 있다.
상기 도 14 지수 행렬의 각 원소는 순환 순열 행렬의 지수에 해당하므로, 순환 순열 행렬의 크기 L*L에 따라 블록 병행 프로세서의 동작이 수행된다. 만일 블록 병행 프로세서가 2개일 경우에는 상기 정의된 집합 S1, S2에 대응되는 각각의 순환 순열 행렬에 대해 복호를 수행할 수 있다.
상기 도 14의 지수 행렬은 다양한 L 값에 대해 그 원소들의 값들을 변경하여 LDPC 부호화 및 복호화에 사용할 수도 있다.
예를 들어, 상기 도 14의 지수 행렬을
Figure 112017055627412-pat00052
라 하고, L 값에 따라 변환된 지수 행렬을
Figure 112017055627412-pat00053
이라 할 때 일반적으로 다음과 같은 변환식을 적용할 수 있다.
[수학식 17]
Figure 112017055627412-pat00054
상기 수학식 17에서 f(x,L)는 다양한 형태로 정의할 수 있는데 예를 들면 다음 수학식 18과 같은 정의들을 사용할 수도 있다.
[수학식 18]
Figure 112017055627412-pat00055
상기 수학식 18에서 mod(a,b)는 a에 대한 모듈로-b 연산을 의미하며, D는 사전에 정의된 양의 정수인 상수를 의미한다.
시스템에 따라 상기 도 13 및 도 14에 나타낸 기본 행렬 및 지수 행렬을 그대로 사용할 수도 있고, 그 일부만 사용될 수도 있다. 예를 들면, 도 13 및 도 14의 기본 행렬 및 지수 행렬들의 위 46개 행과 앞에서부터 68개의 열부분으로 이루어진 행렬을 각각 새로운 기본 행렬 및 지수 행렬로 시스템에서 LDPC 부호화 및 복호화에 사용할 수도 있다. 이 경우에는 만일 x개의 정보어 블록에 대응되는 정보어 비트를 천공한다고 했을 때, 부호어 비트의 반복 전송 없이 부호율 22/(68-x)까지 지원할 수 있다.
또한, 상기 도 13 기본 행렬의 위 6개의 행으로 구성된 부분 행렬과 40x68 크기를 가지는 단일 패리티 검사 부호에 대응되는 또 다른 기본 행렬을 연접하여 얻을 수 있는 새로운 기본 행렬을 이용하여 LDPC 부호화 및 복호화를 적용할 수 있다. 마찬가지로 상기 도 13 기본 행렬의 위 6개의 행으로 이루어진 부분 행렬은 다르지만, 상기 도 13 기본 행렬의 7번째 행부터 46번째 행은 동일한 새로운 기본 행렬을 이용하여 LDPC 부호화 및 복호화를 적용할 수 있다.
일반적으로 LDPC 부호는 부호율에 따라 부호어 비트의 천공을 적용하여 부호율을 조절할 수 있다. 상기 도 13 및 도 14에 나타낸 기본 행렬 또는 지수 행렬에 기반한 LDPC 부호는 차수가 1인 열에 대응되는 패리티 비트를 천공할 경우에는 LDPC 복호기에서 패리티 검사 행렬에서 해당 부분을 사용하지 않고 복호를 수행할 수 있기 때문에 복호 복잡도가 줄어드는 장점이 있다. 하지만, 부호화 성능을 고려할 경우에는 패리티 비트의 천공 순서 (또는 생성된 LDPC 부호어의 전송 순서)를 조절함으로써 LDPC 부호의 성능을 개선할 수 있는 방법이 있다.
예를 들어 상기 도 13 및 도 14에 대응되는 지수 행렬 중 앞 2개 열에 대응되는 정보어 비트를 천공하고, 차수가 1인 패리티 비트를 모두 천공하면 부호율이 22/25인 경우에 LDPC 부호어를 전송할 수 있게 된다. 하지만, 상기 도 13 및 도 14에 대응되는 기본 행렬 및 지수 행렬 중 앞 2개 열에 대응되는 정보어 비트를 천공하고, 상기 지수 행렬들의 차수가 1인 28번째 열에 대응되는 패리티를 천공하지 않고, 만일 26번째 차수가 2인 열에 대응되는 패리티 비트들을 천공할 경우에도 마찬가지로 부호율이 22/25인 LDPC 부호어를 전송할 수 있게 된다. 하지만 부호화 성능은 후자가 더 좋은데, 이와 같이 상기 도 13 및 도 14에 대응되는 기본 행렬 및 지수 행렬을 이용하여 LDPC 부호어를 생성한 다음 적절히 레이트 매칭을 적용하면 성능이 더 개선될 수도 있다. 물론 상기 레이트 매칭을 고려하여 상기 지수 행렬에서의 열의 순서를 적절히 재정렬하여 LDPC 부호화에 적용할 수도 있다.
구체적인 실시 예로써 상기 도 13 및 도 14에 대응되는 기본 행렬 및 지수 행렬에 기반하여 LDPC 부호화 및 복호화를 적용한다고 할 때, 다음과 같은 전송 순서를 정의할 수 있다. 하기 패턴들은 도 13 및 도 14에서 위부터 46개의 행과 앞에서부터 68개의 열을 이루는 부분 행렬에 기반하여 LDPC 부호화 및 복호화를 적용하는 경우를 고려하여 도출되었다. 또한 편의상 첫 번째 열을 0번째, 마지막 열을 67번째 열로 간주하였다.
패턴 1:
2, 3, 4, …, 20, 21, 22, 23-A, 26, 24, 27, 23-B, 25, 28, 29, …, 67, 0, 1
패턴 2:
2, 3, 4, …, 20, 21, 22, 23-A, 26, 27, 24, 23-B, 25, 28, 29, …, 67, 0, 1
상기 패턴 1 및 패턴 2가 의미하는 바는 상기 패턴 순서에 해당하는 열에 대응되는 부호어 비트 순서로 전송됨을 의미한다. 다르게 말하면, 상기 패턴의 역순서대로 부호어 비트에 천공을 적용함을 의미한다. 패턴 1의 경우를 예를 들어 설명하면, 레이트 매칭을 위해 부호어에 천공을 적용할 경우에 먼저 1번째 열에 대응되는 Z 크기의 부호어 비트부터 시작해서 차례대로 필요한 길이만큼 천공을 적용함을 의미한다. (단, 상기 패턴 1 및 패턴 2에서 0과 1의 순서는 변경 가능하다)
상기 패턴 1 및 패턴 2에서 23-A와 23-B의 의미는 23번째 열블록에 대응되는 부호어 비트를 2 개의 그룹으로 구분하였음을 의미한다. 예를 들어 23-A는 23 번째 열 그룹에 대응되는 부호어 비트의 처음
Figure 112017055627412-pat00056
비트, 23-B는 23 번째 열 그룹에 대응되는 부호어 비트의 마지막 (
Figure 112017055627412-pat00057
) 비트를 의미할 수 있다. 상기 23-A 및 23-B에 대한 비트들의 구분은 일례일 뿐이며, 다양한 방법을 이용하여 구분 가능하다. (예: 23-A는
Figure 112017055627412-pat00058
비트, 23-B는 (
Figure 112017055627412-pat00059
) 비트)
이와 같이 전송 순서는 꼭 열 블록에 대응되는 부호어 비트 단위 순서로 전송할 필요는 없으며, 성능 개선을 위해 열 블록에 대응되는 부호어 비트를 2개 이상의 그룹으로 나누어 전송 순서를 다르게 할 수도 있다. 다시 말해, 보다 우수한 부호화 성능을 얻기 위해 최소 1개 이상의 열 블록에 대응되는 부호어 비트에 대한 전송 순서를 서로 다르게 설정 가능하다.
참고로, 열 블록에 대응되는 부호어 비트 단위로 전송함의 의미는 하나의 열 블록에 대한 부호어 비트가 순차적으로 전송 되는 동안 다른 다른 열 블록에 대응되는 부호어 비트가 전송되지 않음을 의미할 수 있다.
이와 같은 레이트 매칭 방법은 위와 같은 패턴을 이용하여 적용할 수도 있고, 부호어 비트에 적절한 인터리빙을 수행한 다음 시스템에서 기 결정된 위치부터 천공을 수행하는 방법을 적용할 수도 있다. 예를 들어 LTE 시스템에서 RV(redundancy version) 기법을 이용할 수도 있다. RV 기법의 예를 간단히 설명하면 다음과 같다.
먼저 패턴 1 및 패턴 2를 다음 패턴 3과 패턴 4와 같이 각각 변경한다.
패턴 3:
0, 1, 2, 3, 4, …, 20, 21, 22, 23-A, 26, 24, 27, 23-B, 25, 28, 29, …, 67
패턴 4:
0, 1, 2, 3, 4, …, 20, 21, 22, 23-A, 26, 27, 24, 23-B, 25, 28, 29, …, 67
그 다음 부호어에 대해 전송 시작 위치를 나타내는 RV-0의 값을 2로 설정하면, 부호율에 따라 0, 1 번째 열 블록에 대한 부호어 비트부터 천공이 취해지도록 설정 가능하다. 여기서 RV-0 값에 따라 다양한 초기 전송 순서를 결정할 수 있을 뿐만 아니라 RV-i 값을 적절히 잘 설정함으로써 HARQ 등의 LDPC 부호화 및 복호화의 응용 기술에도 적용 가능하다. 예를 들어 2부터 67번째 열 블록에 대한 부호어 비트가 모두 전송되고 난 다음에 추가적인 패리티 비트를 전송할 때, 순환적으로 0, 1 번째부터 시작하여 반복하여 추가적인 부호어 비트를 전송할 수도 있으며, RV-i 값들에 따라 다양한 방법으로 추가적인 부호어 비트를 전송할 수 있다.
또한 상기 패턴 또는 인터리빙 방식은 변조 차수에 따라 서로 다르게 적용하여 성능을 개선할 수도 있다. 즉, 고차 변조 방식의 경우에는 QPSK 방식인 경우와는 다른 패턴 또는 인터리빙 방식을 적용함으로써 성능을 개선할 수도 있다.
또한 상기 패턴 또는 인터리빙 방식은 부호율(또는 초기 전송 부호율)에 따라 다르게 적용하여 성능을 개선할 수도 있다. 즉, 특정 부호율 R_th보다 낮을 경우에는 제 1 패턴에 해당하는 레이트 매칭 방식을 적용하고, R_th보다 커질 경우에는 제 1 패턴과는 다른 제 2 패턴을 사용할 수 있다 (R_th와 같을 경우에는 사전에 정해진 방법에 따라 패턴을 선택 가능하다).
도 13 및 도 14에 나타낸 기본 행렬 및 지수 행렬은 다양한 형태로 표현 가능한데 일례로 다음 수학식 19 및 수학식 20과 같은 수열을 이용하여 표현할 수도 있다. (편의상 도 13 및 도 14에서 위부터 46개의 행과 앞에서부터 68개의 열을 이루는 부분 행렬에 기반하여 LDPC 부호화 및 복호화를 적용하는 경우를 고려하여 도출되었다.)
[수학식 19]
0 2 3 4 5 6 7 9 12 15 19 20 22 23
0 1 4 6 10 11 13 16 17 18 19 20 21 23 24
0 1 4 7 8 10 11 12 13 14 15 16 19 21 22 24 25
1 2 3 5 6 8 9 10 12 13 14 15 17 18 20 21 25 26
0 1 2 3 5 7 8 9 11 14 16 17 18 22 26
0 1 22 27
0 1 4 11 21 22 28
1 7 13 14 16 18 19 29
0 1 2 3 5 9 10 30
0 1 4 11 12 15 22 31
0 1 7 8 16 20 21 32
0 1 2 5 17 19 33
0 4 6 9 11 22 34
1 7 14 16 21 35
0 1 2 3 19 24 36
0 4 5 9 11 37
0 1 7 14 16 22 23 38
1 2 18 19 39
0 4 5 11 25 40
0 1 8 9 21 41
0 1 7 14 26 42
1 3 16 19 43
0 1 2 5 15 44
0 4 9 11 13 45
1 7 10 14 46
0 12 19 22 47
0 1 16 20 48
0 6 11 17 49
0 2 7 9 50
0 1 14 19 24 51
0 1 10 13 52
1 4 25 53
0 5 16 17 54
0 1 7 23 55
0 1 8 18 56
0 1 11 19 26 57
0 1 9 15 58
0 5 16 23 59
1 7 12 60
0 1 6 25 61
0 3 14 19 62
0 11 24 63
0 1 20 21 64
0 9 16 26 65
1 10 13 66
0 5 8 67
[수학식 20]
194 25 92 160 98 244 9 248 178 107 40 245 1 0
0 192 118 229 142 157 164 29 235 83 11 129 240 0 0
39 140 178 22 76 33 124 230 73 179 57 126 161 45 0 0 0
185 186 118 171 240 203 251 148 205 162 233 187 255 10 146 104 0 0
149 222 1 69 177 16 117 222 147 247 214 115 134 1 0
106 29 13 0
195 219 101 126 122 181 0
61 185 146 248 148 40 235 0
233 133 220 174 15 126 173 0
82 208 57 148 211 149 82 0
42 19 216 75 79 47 41 0
5 74 4 54 76 64 0
42 203 53 28 103 20 0
8 3 137 35 78 0
235 251 120 121 119 112 0
86 199 4 89 183 0
50 254 126 250 188 59 177 0
232 123 74 172 0
70 187 249 145 130 0
185 20 200 172 28 0
60 125 236 255 109 0
154 95 29 15 0
135 198 228 156 199 0
14 162 171 76 13 0
96 54 44 112 0
84 98 164 19 0
24 80 249 74 0
57 245 163 90 0
68 77 209 203 0
55 43 205 141 13 0
153 127 230 250 0
236 82 74 0
140 129 25 168 0
87 29 123 139 0
67 170 77 161 0
228 233 123 217 226 0
95 155 233 158 0
80 233 121 138 0
198 240 227 0
175 104 233 2 0
28 19 113 218 0
75 124 134 0
69 72 53 125 0
18 61 92 145 0
183 218 231 0
9 59 196 0
상기 수학식 19는 도 13의 기본 행렬에서 46x68 크기의 부분 행렬 안에 원소 1의 위치를 각 행 별로 나타낸 것이다. 예를 들어 상기 수학식 19에서 3 번째 수열의 3 번째 값 5의 의미는 기본 행렬에서 3번째 행의 5번째 열에 원소 1이 있음을 의미한다. (상기 예에서 수열 및 원소의 시작 순서는 0부터 시작하는 것으로 간주하였다.)
상기 수학식 20은 도 14의 기본 행렬에서 46x68 크기의 부분 행렬 안에 각 원소 값을 각 행 별로 나타낸 것이다. 예를 들어 상기 수학식 20에서 3 번째 수열의 3 번째 값 171의 의미는 지수 행렬에서 3번째 행의 3 번째 원소의 값이 171임을 의미하며, 이는 상기 도 13 및 도 수학식 19를 생각하면 패리티 검사 행렬에서 3 번째 행 블록, 5번째 열 블록에 대응되는 순환 순열 행렬의 지수가 171임을 의미한다.
기본 행렬 및 지수 행렬의 일부에 대해 일정한 규칙을 가지는 경우에는 상기 기본 행렬 및 지수 행렬을 보다 간단히 표현할 수도 있다. 예를 들어 상기 도 13 및 도 14의 기본 행렬 및 지수 행렬과 같이 27번째 열블록부터 마지막 열블록까지는 대각구조(diagonal)를 가지는 경우에는 원소의 위치나 그 지수 값들을 생략하되, 해당 규칙을 알고 있다고 가정한다.
일례로서 하기 수학식 21은 27번째 열 블록부터 마지막 열 블록까지 원소 1의 위치를 생략한 예이다.
[수학식 21]
0 2 3 4 5 6 7 9 12 15 19 20 22 23
0 1 4 6 10 11 13 16 17 18 19 20 21 23 24
0 1 4 7 8 10 11 12 13 14 15 16 19 21 22 24 25
1 2 3 5 6 8 9 10 12 13 14 15 17 18 20 21 25 26
0 1 2 3 5 7 8 9 11 14 16 17 18 22 26
0 1 22
0 1 4 11 21 22
1 7 13 14 16 18 19
0 1 2 3 5 9 10
0 1 4 11 12 15 22
0 1 7 8 16 20 21
0 1 2 5 17 19
0 4 6 9 11 22
1 7 14 16 21
0 1 2 3 19 24
0 4 5 9 11
0 1 7 14 16 22 23
1 2 18 19
0 4 5 11 25
0 1 8 9 21
0 1 7 14 26
1 3 16 19
0 1 2 5 15
0 4 9 11 13
1 7 10 14
0 12 19 22
0 1 16 20
0 6 11 17
0 2 7 9
0 1 14 19 24
0 1 10 13
1 4 25
0 5 16 17
0 1 7 23
0 1 8 18
0 1 11 19 26
0 1 9 15
0 5 16 23
1 7 12
0 1 6 25
0 3 14 19
0 11 24
0 1 20 21
0 9 16 26
1 10 13
0 5 8
이와 같이 상기 도 13 및 도 14의 기본 행렬 및 지수 행렬은 다양한 방법으로 표현 가능하다.
본 발명에서 제안하는 밸런싱과 부분 윈도우 직교 특성을 만족하는 기본 행렬에 대한 또 다른 실시 예를 도 15에 나타내었다. 상기 도 15는 20x47 크기의 기본 행렬을 도시한 도면이다. 상기 도 15의 기본 행렬에서 빈 블록들은 통상적으로 0을 의미하며, 패리티 검사 행렬에서 ZxZ 크기의 영행렬에 대응되는 부분을 나타냄에 유의한다.
또한, 도 15a 및 도 15b는 도 15의 기본 행렬을 구분하여, 각 부분을 확대하여 도시한 것이다. 도 15는 각 부분에 기재된 도면 번호에 해당하는 도면의 행렬에 대응된다. 따라서, 도 15a 및 도 15b가 결합하여 하나의 기본 행렬을 구성할 수 있다.
상기 도 15의 기본 행렬은 강한 2-밸런싱 특성과 2 부분 윈도잉 직교 구조를 가짐을 쉽게 확인할 수 있다. 또한, 28번째 열부터 47번째 열은 모두 차수가 1 이며, 이는 다시 말해 상기 도 15의 기본 행렬로부터 리프팅을 적용하여 생성 가능한 패리티 검사 행렬에서 상기 도 15의 28번째 열부터 47번째 열에 대응되는 모든 열의 차수가 1임을 의미한다.
본 발명에서 제안하는 밸런싱과 부분 윈도우 직교 특성을 만족하는 기본 행렬에 기반하여 다양한 부호율 및 부호 길이를 지원하는 LDPC 부호화 및 복호화를 위한 기본 행렬의 다른 실시 예를 도 16에 나타내었다. 상기 도 16은 25x47 크기의 기본 행렬을 도시한 도면이다. 상기 도 16의 기본 행렬에서 빈 블록들은 통상적으로 0을 의미하며, 패리티 검사 행렬에서 ZxZ 크기의 영행렬에 대응되는 부분을 나타냄에 유의한다.
또한, 도 16a 내지 도 16d는 도 16의 기본 행렬을 구분하여, 각 부분을 확대하여 도시한 것이다. 도 16은 각 부분에 기재된 도면 번호에 해당하는 도면의 행렬에 대응된다. 따라서, 도 16a 내지 도 16d가 결합하여 하나의 기본 행렬을 구성할 수 있다. 참고로 상기 도 15a와 도 16c는 동일하며, 도 15b와 도 16d가 동일함을 알 수 있다.
도 16에 나타낸 기본 행렬은 다양한 형태로 표현 가능한데 일례로 다음 수학식 22와 같은 수열을 이용하여 표현할 수도 있다. 수학식 22는 도 16의 기본 행렬에서 원소 1의 위치를 각 행 별로 나타낸 것이다. 예를 들어 상기 수학식 22에서 2 번째 수열의 2 번째 값 4의 의미는 기본 행렬에서 2번째 행의 4번째 열에 원소 1이 있음을 의미한다. (상기 예에서 수열 및 행렬에서의 원소의 시작 순서는 0부터 시작하는 것으로 간주하였다.)
[수학식 22]
0 1 2 3 5 6 9 10 11 12 13 15 16 18 19 20 21 22 23
0 2 3 4 5 7 8 9 11 12 14 15 16 17 19 21 22 23 24
0 1 2 4 5 6 7 8 9 10 13 14 15 17 18 19 20 24 25
0 1 3 4 6 7 8 10 11 12 13 14 16 17 18 20 21 22 25
0 1 26
0 1 3 12 16 21 22 27
0 6 10 11 13 17 18 20 28
0 1 4 7 8 14 29
0 1 3 12 16 19 21 22 24 30
0 1 10 11 13 17 18 20 31
1 2 4 7 8 14 32
0 1 12 16 21 22 23 33
0 1 10 11 13 18 34
0 3 7 20 23 35
0 12 15 16 17 21 36
0 1 10 13 18 25 37
1 3 11 20 22 38
0 14 16 17 21 39
1 12 13 18 19 40
0 1 7 8 10 41
0 3 9 11 22 42
1 5 16 20 21 43
0 12 13 17 44
1 2 10 18 45
0 3 4 11 22 46
기본 행렬의 일부에 대해 일정한 규칙을 발견할 수 있을 경우에는 상기 기본 행렬을 보다 간단히 표현할 수도 있다. 예를 들어 상기 도 16의 기본 행렬과 같이 27번째 열부터 마지막 열까지는 대각구조(diagonal)를 가지는 경우에는 해당 규칙을 송수신기에서 알고 있다고 가정할 경우에 원소의 위치나 그 원소 값들을 생략할 수 있다. 일례로서 하기 수학식 23은 상기 수학식 22에서 27번째 열 블록부터 마지막 열 블록까지 원소 1의 위치를 생략한 예이다.
[수학식 23]
0 1 2 3 5 6 9 10 11 12 13 15 16 18 19 20 21 22 23
0 2 3 4 5 7 8 9 11 12 14 15 16 17 19 21 22 23 24
0 1 2 4 5 6 7 8 9 10 13 14 15 17 18 19 20 24 25
0 1 3 4 6 7 8 10 11 12 13 14 16 17 18 20 21 22 25
0 1
0 1 3 12 16 21 22
0 6 10 11 13 17 18 20
0 1 4 7 8 14
0 1 3 12 16 19 21 22 24
0 1 10 11 13 17 18 20
1 2 4 7 8 14
0 1 12 16 21 22 23
0 1 10 11 13 18
0 3 7 20 23
0 12 15 16 17 21
0 1 10 13 18 25
1 3 11 20 22
0 14 16 17 21
1 12 13 18 19
0 1 7 8 10
0 3 9 11 22
1 5 16 20 21
0 12 13 17
1 2 10 18
0 3 4 11 22
수학식 24는 도 16의 기본 행렬에서 원소 1의 위치를 각 열 별로 나타낸 것이다. 예를 들어 상기 수학식 24에서 3 번째 수열의 3 번째 값 5의 의미는 기본 행렬에서 3번째 열의 5번째 행에 원소 1이 있음을 의미한다. (상기 예에서 수열 및 행렬에서의 원소의 시작 순서는 0부터 시작하는 것으로 간주하였다.)
[수학식 24]
0 1 2 3 4 5 6 7 8 9 11 12 13 14 15 17 19 20 22 24
0 2 3 4 5 7 8 9 10 11 12 15 16 18 19 21 23
0 1 2 10 23
0 1 3 5 8 13 16 20 24
1 2 3 7 10 24
0 1 2 21
0 2 3 6
1 2 3 7 10 13 19
1 2 3 7 10 19
0 1 2 20
0 2 3 6 9 12 15 19 23
0 1 3 6 9 12 16 20 24
0 1 3 5 8 11 14 18 22
0 2 3 6 9 12 15 18 22
1 2 3 7 10 17
0 1 2 14
0 1 3 5 8 11 14 17 21
1 2 3 6 9 14 17 22
0 2 3 6 9 12 15 18 23
0 1 2 8 18
0 2 3 6 9 13 16 21
0 1 3 5 8 11 14 17 21
0 1 3 5 8 11 16 20 24
0 1 11 13
1 2 8
2 3 15
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
기본 행렬의 일부에 대해 일정한 규칙을 발견할 수 있을 경우에는 상기 기본 행렬을 보다 간단히 표현할 수도 있다. 예를 들어 상기 도 16의 기본 행렬과 같이 27번째 열부터 마지막 열까지는 대각구조(diagonal)를 가지는 경우에는 해당 규칙을 송수신기에서 알고 있다고 가정할 경우에 원소의 위치나 그 원소 값들을 생략할 수 있다. 일례로서 하기 수학식 25는 상기 수학식 24에서 27번째 열 블록부터 마지막 열 블록까지 원소 1의 위치를 생략한 예이다.
[수학식 25]
0 1 2 3 4 5 6 7 8 9 11 12 13 14 15 17 19 20 22 24
0 2 3 4 5 7 8 9 10 11 12 15 16 18 19 21 23
0 1 2 10 23
0 1 3 5 8 13 16 20 24
1 2 3 7 10 24
0 1 2 21
0 2 3 6
1 2 3 7 10 13 19
1 2 3 7 10 19
0 1 2 20
0 2 3 6 9 12 15 19 23
0 1 3 6 9 12 16 20 24
0 1 3 5 8 11 14 18 22
0 2 3 6 9 12 15 18 22
1 2 3 7 10 17
0 1 2 14
0 1 3 5 8 11 14 17 21
1 2 3 6 9 14 17 22
0 2 3 6 9 12 15 18 23
0 1 2 8 18
0 2 3 6 9 13 16 21
0 1 3 5 8 11 14 17 21
0 1 3 5 8 11 16 20 24
0 1 11 13
1 2 8
2 3 15
이와 같이 기본 행렬 및 지수 행렬은 다양한 방법으로 표현 가능하며, 만일 기본 행렬에 대해 열 또는 행의 퍼뮤테이션(permutation)을 적용할 경우에는 상기 수학식 19 내지 수학식 25에서 수열 또는 수열 내의 숫자들의 위치를 적절히 변경함으로써 동일하게 표현 가능하다.
상기 도 16의 기본 행렬에서 도 16a와 도 16b로 구성된 부분 행렬은 본 발명에서 제안하는 밸런싱 특성이나 부분 윈도우 직교 특성을 만족하지 않을 수도 있다. 하지만, 상기 도 16과 같이 도 16a와 도 16b로 이루어진 부분 행렬과 도 16c와 도 16d로 이루어진 부분 행렬과 연접함으로써 보다 우수한 성능을 가지면서 다양한 부호율 및 부호 길이를 지원하는 LDPC 부호화 및 복호화 방법 및 장치를 지원할 수 있다.
참고로 상기 도 16의 기본 행렬을 기반으로 생성할 수 있는 LDPC 부호에 대해서 적절히 정보어 비트의 일부를 단축 (shortening) 하고 부호어 비트의 일부를 천공하여 다양한 부호율과 다양한 길이의 LDPC 부호화 및 복호화를 지원 가능하다. 예를 들어, 상기 도 16의 기본 행렬에서 처음 2 개의 열에 대응되는 정보어 비트를 항상 천공하고, 상기 도 16b에 대응되는 패리티 비트를 제외한 비트만 천공한다고 가정할 경우에 상기 도 16의 기본 행렬로부터 부호율 22/25부터 22/45까지 다양한 부호율을 지원할 수 있음은 자명하다.
LDPC 부호는 부호율에 따라 부호어 비트의 천공을 적용하여 부호율을 조절할 수 있다. 본 발명에서 제안한 기본 행렬 또는 지수 행렬에 기반한 LDPC 부호는 차수가 1인 열에 대응되는 패리티 비트를 천공할 경우에는 LDPC 복호기에서 패리티 검사 행렬에서 해당 부분을 사용하지 않고 복호를 수행할 수 있기 때문에 복호 복잡도가 줄어드는 장점이 있다. 하지만, 부호화 성능을 고려할 경우에는 패리티 비트의 천공 순서 또는 생성된 LDPC 부호어의 전송 순서를 조절함으로써 LDPC 부호의 성능을 개선할 수 있는 방법이 있다.
일반적으로 상기 본 발명에서 제안한 기본 행렬 또는 지수 행렬을 이용하여 LDPC 부호어를 생성한 다음 적절히 레이트 매칭을 적용하면 성능이 더 개선될 수도 있다. 물론 상기 레이트 매칭을 고려하여 상기 기본 행렬 또는 지수 행렬에서의 열의 순서를 적절히 재정렬하여 LDPC 부호화 및 복호화에 적용할 수도 있다.
통상적으로 상기 LDPC 부호화 과정은 먼저 LDPC 부호화를 적용할 입력 비트(또는 코드 블록) 크기를 결정한 다음에 그 크기에 따라 상기 LDPC 부호화를 적용할 블록 크기(Z)를 결정하고, 상기 블록 크기에 따라 적절한 LDPC 지수 행렬 또는 수열을 결정한 다음, 상기 블록 크기(Z)와 상기 결정된 지수 행렬 또는 LDPC 수열을 기반으로 LDPC 부호화를 수행한다. 이때 상기 LDPC 지수 행렬 또는 수열을 변환 없이 LDPC 부호화에 적용할 수도 있으며, 경우에 따라 상기 LDPC 지수 행렬 또는 수열을 블록 크기(Z)에 따라 적절히 변환하여 LDPC 부호화를 수행할 수 있다.
마찬가지로 LDPC 복호화 과정은 전송된 LDPC 부호어에 대한 입력 비트 (또는 코드 블록) 크기를 결정한 다음에 그 크기에 따라 LDPC 복호화를 적용할 블록 크기(Z)를 결정하고, 상기 블록 크기에 따라 적절한 LDPC 지수 행렬 또는 수열을 결정한 다음, 상기 블록 크기(Z)와 상기 결정된 지수 행렬 또는 LDPC 수열을 기반으로 LDPC 복호화를 수행한다. 이때 상기 LDPC 지수 행렬 또는 수열을 변환 없이 LDPC 복호화에 적용할 수도 있으며, 경우에 따라 상기 LDPC 지수 행렬 또는 수열을 블록 크기(Z)에 따라 적절히 변환하여 LDPC 복호화를 수행할 수 있다.
여기서 상기 LDPC 지수 행렬 또는 수열에 대한 기본 행렬은 상기 도 15또는 도 16 또는 다음에 설명할 도 17의 기본 행렬임을 특징으로 가질 수 있다.
본 발명에서 제안하는 밸런싱과 부분 윈도우 직교 특성을 만족하는 기본 행렬에 기반하여 다양한 부호율 및 부호 길이를 지원하는 LDPC 부호화 및 복호화를 위한 기본 행렬의 다른 실시 예를 도 17에 나타내었다. 상기 도 17은 46x68 크기의 기본 행렬을 도시한 도면이다. 상기 도 17의 기본 행렬에서 빈 블록들은 통상적으로 0을 의미하며, 패리티 검사 행렬에서 ZxZ 크기의 영행렬에 대응되는 부분을 나타냄에 유의한다.
또한, 도 17a 내지 도 17i는 도 17의 기본 행렬을 구분하여, 각 부분을 확대하여 도시한 것이다. 도 17은 각 부분에 기재된 도면 번호에 해당하는 도면의 행렬에 대응된다. 따라서, 도 17a 내지 도 17i가 결합하여 하나의 기본 행렬을 구성할 수 있다. 참고로 상기 도 16a와 도 17a는 동일하며, 도 16b와 도 17d가 동일하며, 도 15a, 도 16c 및 도 17d가 동일하며, 도 15b, 도 16d 및 도 17e가 동일함을 알 수 있다.
일반적으로 도 17c, 도 17f, 도 17h을 영행렬로 구성하고, 도 17i를 항등 행렬 또는 대각 구조를 가지는 행렬로 구성할 경우에는 전체 기본 행렬의 구조가 도 16과 비교하여 크게 달라지지 않고 확장된 형태를 갖기 때문에 부호의 연접이 용이하다. 또한 만일 도 17g의 각 행이 직교 특성을 가진다면 높은 정보 처리 속도(decoding throughput)를 지원하는 복호기 구현이 용이한 장점을 가진다. 즉, 결론적으로 도 17과 같이 도 16의 기본 행렬에 대해 확장된 형태를 유지하면서 도 17g의 각 행이 직교 특성을 가지는 기본 행렬을 이용하여 도 16에 비해 더 다양한 부호율을 지원할 수 있다.
상기 도 16 및 도 17에서는 상기 도 15의 기본 행렬을 그대로 사용하는 경우에 대해서만 나타내었으나 일반적으로 상기 도 15 기본 행렬의 열의 순서를 재정렬하거나 행의 순서를 재정렬하거나 열과 행의 순서를 재정렬할 수 있으며, 상기 재정렬된 기본 행렬을 도 16a 및 16b와 연접하여 도 16과 같은 형태의 새로운 기본 행렬을 이용하여 LDPC 부호화 및 복호화 방법 및 장치에 사용할 수 있다. 즉, 상기 재정렬된 기본 행렬을 도 16c 및 16d에 적용하여 도 16과 유사한 형태의 새로운 기본 행렬을 생성할 수 있다. 마찬가지로 상기 재정렬된 기본 행렬을 도 17a 및 17b에 연접하여 도 17과 유사한 형태의 새로운 기본 행렬을 이용하여 LDPC 부호화 및 복호화 방법 및 장치에 사용할 수 있다. 즉, 상기 재정렬된 기본 행렬을 도 17d 및 17e에 적용하여 도 17과 같은 형태의 새로운 기본 행렬을 생성할 수 있다.
17a 및 17b에 연접하여 도 17과 유사한 형태의 새로운 기본 행렬을 이용하여 LDPC 부호화 및 복호화 방법 및 장치에 사용할 수 있다. 즉, 상기 재정렬된 기본 행렬을 도 17d 및 17e에 적용하여 도 17과 같은 형태의 새로운 기본 행렬을 생성할 수 있다.
상기 도 17에서는 상기 도 16의 기본 행렬을 그대로 사용하는 경우에 대해서만 나타내었으나 일반적으로 상기 도 16 기본 행렬의 열의 순서를 재정렬하거나 행의 순서를 재정렬하거나 열과 행의 순서를 재정렬할 수 있으며, 상기 재정렬된 기본 행렬을 도 17a, 17b, 17d, 17e에 적용하여 도 17과 유사한 형태의 새로운 기본 행렬에 기반한 LDPC 부호화 및 복호화 방법 및 장치에 적용할 수 있다. 이상에서 설명한 바와 같이 도 16의 기본 행렬을 도 17에 적용하여 기본 행렬의 일례를 다음 수학식 26의 LDPC 수열을 통해 나타내었다. 수학식 26은 기본 행렬에서 원소 1의 위치를 각 행 별로 나타낸 것으로서 도 17과 같이 LDPC 기본 행렬의 형태로도 표현할 수 있다. 수학식 26에 대응되는 기본 행렬은 도 17c, 도 17f, 도 17h를 영행렬로 구성하고, 도 17i를 항등 행렬로 구성하고, 도 17g의 각 행이 직교 특성을 가지는 기본 행렬의 예이다. 또한 상기 수학식 26의 기본 행렬은 수학식 23 내지 25와 유사한 방법을 통해 다양한 형태로 표현 가능하다.
[수학식 26]
0 1 2 3 5 6 9 10 11 12 13 15 16 18 19 20 21 22 23
0 2 3 4 5 7 8 9 11 12 14 15 16 17 19 21 22 23 24
0 1 2 4 5 6 7 8 9 10 13 14 15 17 18 19 20 24 25
0 1 3 4 6 7 8 10 11 12 13 14 16 17 18 20 21 22 25
0 1 26
0 1 3 12 16 21 22 27
0 6 10 11 13 17 18 20 28
0 1 4 7 8 14 29
0 1 3 12 16 19 21 22 24 30
0 1 10 11 13 17 18 20 31
1 2 4 7 8 14 32
0 1 12 16 21 22 23 33
0 1 10 11 13 18 34
0 3 7 20 23 35
0 12 15 16 17 21 36
0 1 10 13 18 25 37
1 3 11 20 22 38
0 14 16 17 21 39
1 12 13 18 19 40
0 1 7 8 10 41
0 3 9 11 22 42
1 5 16 20 21 43
0 12 13 17 44
1 2 10 18 45
0 3 4 11 22 46
1 6 7 14 47
0 2 4 15 48
1 6 8 49
0 4 19 21 50
1 14 18 25 51
0 10 13 24 52
1 7 22 25 53
0 12 14 24 54
1 2 11 21 55
0 7 15 17 56
1 6 12 22 57
0 14 15 18 58
1 13 23 59
0 9 10 12 60
1 3 7 19 61
0 8 17 62
1 3 9 18 63
0 4 24 64
1 16 18 25 65
0 7 9 22 66
1 6 10 67
일반적으로 LDPC 부호의 단축 또는 제로 패딩 등을 이용하여 가변 정보어 길이나 가변 부호율을 지원할 때 단축 순서에 따라 LDPC 부호의 성능을 개선할 수 있다. 만일 단축 순서가 기 설정되어 있을 때, 이와 같이 주어진 기본 행렬의 일부 또는 전체를 적절히 순서를 재정렬함으로써 부호화 성능을 개선할 수 있다.
이와 같이 재정렬된 기본 행렬의 예를 도 18에 나타내었다. 상기 도 18의 기본 행렬에서 빈 블록들은 통상적으로 0을 의미하며, 패리티 검사 행렬에서 ZxZ 크기의 영행렬에 대응되는 부분을 나타냄에 유의한다. 상기 도 18은 상기 도 15의 7번째 열과 21번째 열 (최초 열을 0번째 열로 간주할 경우에는 6번째 열과 20번째 열)의 순서를 서로 변경하여 재정렬한 다음 도 16a 및 16b와 연접한 구조임을 쉽게 알 수 있다. 상기 도 18의 기본 행렬은 편의상 상기 도 15의 열을 재정렬하여 얻을 수 있는 기본 행렬의 일례일 뿐이며 성능 개선 효과 또는 다양한 목적에 따라 새로운 기본 행렬을 정의할 수 있다. 또한 도 18a를 도 17a에, 도 18b를 도 17b에, 도 18c를 도 17d에, 도 18d를 도 17e에 대입함으로써 도 17과 유사한 형태의 새로운 기본 행렬을 생성할 수도 있다.
도 18에 나타낸 기본 행렬은 다양한 형태로 표현 가능한데 일례로 다음 수학식 27과 같은 수열을 이용하여 표현할 수도 있다. 수학식 27은 도 18의 기본 행렬에서 원소 1의 위치를 각 행 별로 나타낸 것이다.
[수학식 27]
0 1 2 3 5 6 9 10 11 12 13 15 16 18 19 20 21 22 23
0 2 3 4 5 7 8 9 11 12 14 15 16 17 19 21 22 23 24
0 1 2 4 5 6 7 8 9 10 13 14 15 17 18 19 20 24 25
0 1 3 4 6 7 8 10 11 12 13 14 16 17 18 20 21 22 25
0 1 26
0 1 3 12 16 21 22 27
0 6 10 11 13 17 18 20 28
0 1 4 7 8 14 29
0 1 3 12 16 19 21 22 24 30
0 1 6 10 11 13 17 18 31
1 2 4 7 8 14 32
0 1 12 16 21 22 23 33
0 1 10 11 13 18 34
0 3 6 7 23 35
0 12 15 16 17 21 36
0 1 10 13 18 25 37
1 3 6 11 22 38
0 14 16 17 21 39
1 12 13 18 19 40
0 1 7 8 10 41
0 3 9 11 22 42
1 5 6 16 21 43
0 12 13 17 44
1 2 10 18 45
0 3 4 11 22 46
기본 행렬의 일부에 대해 일정한 규칙을 발견할 수 있을 경우에는 상기 기본 행렬을 보다 간단히 표현할 수도 있다. 예를 들어 상기 도 18의 기본 행렬과 같이 27번째 열부터 마지막 열까지는 대각구조(diagonal)를 가지는 경우에는 해당 규칙을 송수신기에서 알고 있다고 가정할 경우에 원소의 위치나 그 원소 값들을 생략할 수 있다. 일례로서 하기 수학식 28은 상기 수학식 27에서 27번째 열 블록부터 마지막 열 블록까지 원소 1의 위치를 생략한 예이다.
[수학식 28]
0 1 2 3 5 6 9 10 11 12 13 15 16 18 19 20 21 22 23
0 2 3 4 5 7 8 9 11 12 14 15 16 17 19 21 22 23 24
0 1 2 4 5 6 7 8 9 10 13 14 15 17 18 19 20 24 25
0 1 3 4 6 7 8 10 11 12 13 14 16 17 18 20 21 22 25
0 1
0 1 3 12 16 21 22
0 6 10 11 13 17 18 20
0 1 4 7 8 14
0 1 3 12 16 19 21 22 24
0 1 6 10 11 13 17 18
1 2 4 7 8 14
0 1 12 16 21 22 23
0 1 10 11 13 18
0 3 6 7 23
0 12 15 16 17 21
0 1 10 13 18 25
1 3 6 11 22
0 14 16 17 21
1 12 13 18 19
0 1 7 8 10
0 3 9 11 22
1 5 6 16 21
0 12 13 17
1 2 10 18
0 3 4 11 22
이와 같이 기본 행렬 및 지수 행렬은 다양한 방법으로 표현 가능하며, 만일 기본 행렬 또는 기본 행렬의 일부 부분 행렬의 열 또는 행의 퍼뮤테이션(permutation)을 적용할 경우에는 상기 수학식 19 내지 수학식 28에서 수열 또는 수열 내의 숫자들의 위치를 적절히 변경함으로써 새로운 기본 행렬을 정의할 수 있다.
본 발명의 또 다른 실시 예로서 도 18의 기본 행렬에 기반하여 복수 개의 지수 행렬 또는 LDPC 수열을 적용하는 방법을 제안한다. 다시말해, 기본 행렬은 도 18이며, 상기 기본 행렬 상에서 LDPC 부호의 지수 행렬 또는 수열 등을 구하고, 상기 지수 행렬 또는 수열로부터 각 블록 크기 그룹에 포함된 블록 크기에 맞게 리프팅을 적용함으로써 가변 길이의 LDPC 부호화 및 복호화를 수행한다. 다시 말하면, 복수 개의 서로 다른 LDPC 부호의 지수 행렬 또는 수열에 대해 대응되는 패리티 검사 행렬의 기본 행렬들은 동일함을 특징으로 한다. 이러한 방식은 LDPC 부호의 지수 행렬 또는 LDPC 수열을 구성하는 원소 또는 숫자들은 서로 다른 값을 가질 수 있지만, 해당 원소 또는 숫자들의 위치는 정확히 일치하는 특징을 가진다. 이와 같이 LDPC 부호의 지수 행렬 또는 수열들은 각각 순환 순열 행렬의 지수, 즉, 비트들에 대한 일종의 순환 순열 값을 의미하는데, 원소 또는 숫자들의 위치를 모두 동일하게 설정함으로써 해당 순환 순열 행렬에 대응되는 비트들의 위치를 파악하기가 용이하다.
먼저 지원하고자 하는 블록 크기(Z)를 다음 수학식 28과 같이 복수 개의 블록 크기 그룹 (또는 집합)으로 구분하자. 상기 블록 크기(Z)는 LDPC 부호의 패리티 검사 행렬에서 순환 순열 행렬 또는 순환 행렬의 크기 ZxZ에 대응되는 값임에 유의한다.
[수학식 28]
Z1 = {3, 6, 12, 24, 48, 96, 192, 384}
Z2 = {11, 22, 44, 88, 176, 352}
Z3 = {5, 10, 20, 40, 80, 160, 320}
Z4 = {9, 18, 36, 72, 144, 288}
Z5 = {2, 4, 8, 16, 32, 64, 128, 256}
Z6 = {15, 30, 60, 120, 240}
Z7 = {7, 14, 28, 56, 112, 224}
Z8 = {13, 26, 52, 104, 208}
수학식 28은 일례일 뿐이며, 상기 수학식 28의 블록 크기 그룹에 포함된 모든 블록 크기(Z) 값을 사용할 수도 있으며, 다음 수학식 30과 같이 적절한 부분 집합에 포함되는 블록 크기 값을 사용할 수도 있으며, 상기 수학식 29 또는 수학식 30의 블록 크기 그룹(집합)에 적절한 값들을 추가하여 사용할 수도 있다.
[수학식 30]
Z1’ = {12, 24, 48, 96, 192, 384}
Z2’ = {11, 22, 44, 88, 176, 352}
Z3’ = {10, 20, 40, 80, 160, 320}
Z4’ = {9, 18, 36, 72, 144, 288}
Z5’ = {8, 16, 32, 64, 128, 256}
Z6’ = {15, 30, 60, 120, 240}
Z7’ = {14, 28, 56, 112, 224}
Z8’ = {13, 26, 52, 104, 208}
상기 수학식 29 또는 수학식 30의 블록 크기 그룹들의 특징은 서로 다른 입도를 가질 뿐만 아니라 이웃한 블록 크기의 비율이 모두 동일한 정수인 특징을 가지고 있다. 즉 다시 말해 하나의 그룹에 포함되어 있는 블록 크기들은 서로 약수 또는 배수 관계에 있다. p (p = 1, 2, …, 8)번째 그룹에 대응되는 지수 행렬을 각각
Figure 112017055627412-pat00060
라 하고, 상기 p번째 그룹에 포함된 Z 값에 대응되는 지수 행렬을
Figure 112017055627412-pat00061
라 할 때,
Figure 112017055627412-pat00062
를 이용하여 수학식 17과 같은 수열의 변환 방법을 적용한다고 하자. 즉, 예를 들어 블록 크기 Z가 Z = 28과 같이 결정된 경우에는 Z = 28이 포함되어 있는 7번째 블록 크기 그룹에 대응되는 지수 행렬
Figure 112017055627412-pat00063
에 대해서 Z = 28에 대한 지수 행렬
Figure 112017055627412-pat00064
의 각 원소
Figure 112017055627412-pat00065
를 다음 수학식 31과 같이 얻을 수 있다.
[수학식 31]
Figure 112017055627412-pat00066
상기 수학식 31과 같은 변환은 간단히 다음 수학식 32와 같이 나타내기도 한다.
[수학식 32]
Figure 112017055627412-pat00067
상기 수학식 28 내지 수학식 32를 고려하여 설계된 LDPC 부호의 기본 행렬 및 지수 행렬 (또는 LDPC 수열)을 도 19 내지 도 26에 나타내었다. 참고로, 이상에서는 수학식 17 또는 수학식 31 또는 수학식 32에서의 리프팅 또는 지수 행렬의 변환 방식에 대해 패리티 검사 행렬에 대응되는 지수 행렬 전체에 적용하는 것을 가정하여 설명하였지만, 상기 지수 행렬의 부분적으로도 적용 가능하다. 예를 들어 통상적으로 패리티 검사 행렬의 패리티 비트에 대응되는 부분 행렬은 효율적인 부호화를 위해서 특수한 구조를 가지는 경우가 많다. 이 경우에 리프팅에 의해 부호화 방법 또는 복잡도에 변화가 생길 수도 있다. 따라서 동일한 부호화 방법 또는 복잡도 유지를 위해서 패리티 검사 행렬에서 패리티에 대응되는 부분 행렬에 대한 지수 행렬의 일부에는 리프팅을 적용하지 않거나 정보어 비트에 대응되는 부분 행렬에 대한 지수 행렬에 적용하는 리프팅 방식과 서로 다른 리프팅을 적용할 수 있다. 다시 말하면, 지수 행렬 내에서 정보어 비트에 대응되는 수열에 적용하는 리프팅 방식과 패리티 비트에 대응되는 수열에 적용하는 리프팅 방식을 서로 다르게 설정할 수 있으며, 경우에 따라 패리티 비트에 대응되는 수열의 일부 또는 전체에는 리프팅을 적용하지 않아 수열 변환 없이 고정된 값을 사용할 수도 있다.
상기 수학식 28 내지 수학식 32에 기반하여 설계된 QC LDPC 부호의 패리티 검사 행렬에 대응되는 지수 행렬에 대한 실시 예를 도 19 내지 도 26에 순차적으로 나타내었다. (도 19 내지 도 26의 지수 행렬에서 빈 블록들은 ZxZ 크기의 영행렬에 대응되는 부분을 나타냄에 유의한다. 경우에 따라서 도 19 내지 도 26의 지수 행렬에서 빈 블록들은 -1과 같은 특정된 값으로도 표현 가능하다.) 상기 도 19 내지 도 26에 나타낸 LDPC 부호의 지수 행렬들은 도 18의 동일한 기본 행렬을 가진다는 특징이 있다.
도 19 내지 도 26의 행렬은 25x47 크기의 LDPC 지수 행렬들을 도시한 도면이다. 또한 각 지수 행렬에서 위 4개의 행과 앞에서부터 26개의 열로 구성된 부분 행렬은 차수가 1인 열이 없다. 이는 다시 말해 상기 부분 행렬로부터 리프팅을 적용하여 생성 가능한 패리티 검사 행렬은 차수가 1인 열 또는 열 블록이 없음을 의미한다.
또한, 도 19a 내지 도 19d는 도 19의 지수 행렬을 구분하여, 각 부분을 확대하여 도시한 것이다. 도 19는 각 부분에 기재된 도면 번호에 해당하는 도면의 행렬에 대응된다. 따라서, 도 19a 내지 도 19d가 결합하여 하나의 기본 행렬을 구성할 수 있다. 마찬가지로 도 20 내지 도 26 또한 각 지수 행렬을 구분한 다음 각 부분을 확대하여 도시한 것이다.
상기 도 19 내지 도 26에 나타낸 지수 행렬의 또 다른 특징은 모두 28번째 열부터 47번째 열까지는 모두 차수가 1인 특징을 가지고 있다. 즉, 상기 지수 행렬들의 5번째 행부터 25번째 행으로 구성된 21x47 크기의 기본 행렬 또는 지수 행렬은 많은 수의 단일 패리티 검사 부호에 대응됨을 특징으로 한다.
상기 도 19 내지 도 26에 나타낸 지수 행렬들은 각각 수학식 28 또는 수학식 30에서 정의된 블록 크기 그룹을 고려하여 설계된 LDPC 부호에 각각 대응된다. 하지만 시스템의 요구 사항에 따라서 상기 블록 크기 그룹에 포함된 모든 블록 크기를 반드시 지원할 필요는 없으며, 경우에 따라서는 상기 수학식 28 또는 수학식 30의 블록 크기 외에 다른 값들도 추가될 수 있다. 즉, 상기 도 19 내지 도 26에 나타낸 지수 행렬들은 수학식 28 또는 수학식 30에서 정의된 블록 크기 그룹(집합)에 대응되는 블록 크기를 지원할 수 있을 뿐만 아니라 최소한 각 그룹(집합)의 부분 집합에 대응되는 블록 크기를 지원할 수 있으며, 경우에 따라서는 그 외의 다른 값들도 지원 가능하다.
또한 시스템에 따라 상기 도 19 내지 도 26에 나타낸 지수 행렬을 그대로 사용할 수도 있고, 그 일부만 사용될 수도 있다. 예를 들면, 상기 도 19 내지 도 26의 각 지수 행렬들의 위 5개의 행과 앞에서부터 27개의 열로 구성된 5x27 크기의 부분 행렬을 제외하고, 상기 부분 행렬과는 다른 5x27 크기의 LDPC 지수 행렬과 상기 도 19 내지 도 26의 각 지수 행렬들의 6 번째 행부터 마지막 행으로 이루어진 20x47 부분 행렬을 연접하여 새로운 기본 행렬에 기반한 LDPC 부호화 및 복호화 방법 및 장치에 사용할 수도 있다.
상기 도 19 내지 도 26의 LDPC 지수 행렬은 기본 행렬이 도 18로 동일하기 때문에, 도 18a를 도 17a에, 도 18b를 도 17b에, 도 18c를 도 17d에, 도 18d를 도 17e에 대입함으로써 얻을 수 있는 도 17과 유사한 형태의 새로운 기본 행렬에 적용하여 사용할 수도 있다. 예를들어, 도 19 내지 도 26의 지수 행렬을 도 17a, 17b, 17d, 17e에 해당하는 부분 행렬에 대응 시키고, 나머지 도 17c, 17f, 17g, 17h, 17i에 적절한 지수 행렬을 대응 시킴으로써 새로운 LDPC 지수 행렬들을 정의하여 LDPC 부호화 및 복호화 방법 및 장치에 사용할 수 있다. 이 경우에는 상기 모든 LDPC 지수 행렬은 도 17을 기본 행렬로 갖게 되며, 상기 기본 행렬에서 도 17a, 17b, 17d, 17e에 대응되는 부분 행렬은 도 18과 같게 된다.
일반적으로 상기 도 15 내지 도 18의 기본 행렬에서 적절히 행과 열을 선택하여 이루어진 부분 행렬을 새로운 기본 행렬로 적용하여 LDPC 부호화 및 복호화를 수행할 수도 있다. 마찬가지로 도 19 내지 도 26의 지수 행렬에서 적절히 행 블록과 열 블록을 선택하여 이루어진 부분 행렬을 새로운 지수 행렬로 적용하여 LDPC 부호화 및 복호화 방법 및 장치에 적용할 수도 있다.
상기 수학식 28 내지 수학식 32를 고려하여 설계된 LDPC 부호의 기본 행렬 및 지수 행렬 (또는 LDPC 수열)의 또 다른 실시 예를 도 27 내지 도 35에 나타내었다. 상기 실시 예는 도 27의 기본 행렬에 기반하여 복수 개의 지수 행렬 또는 LDPC 수열을 적용하는 방법을 제안한다. 다시말해, 기본 행렬은 도 27이며, 상기 기본 행렬 상에서 LDPC 부호의 지수 행렬 또는 수열 등을 구하고, 상기 지수 행렬 또는 수열로부터 각 블록 크기 그룹에 포함된 블록 크기에 맞게 리프팅을 적용함으로써 가변 길이의 LDPC 부호화 및 복호화를 수행한다. 다시 말하면, 복수 개의 서로 다른 LDPC 부호의 지수 행렬 또는 수열에 대해 대응되는 패리티 검사 행렬의 기본 행렬들은 동일함을 특징으로 한다. 이러한 방식은 LDPC 부호의 지수 행렬 또는 LDPC 수열을 구성하는 원소 또는 숫자들은 서로 다른 값을 가질 수 있지만, 해당 원소 또는 숫자들의 위치는 정확히 일치하는 특징을 가진다. 이와 같이 LDPC 부호의 지수 행렬 또는 수열들은 각각 순환 순열 행렬의 지수, 즉, 비트들에 대한 일종의 순환 순열 값을 의미하는데, 원소 또는 숫자들의 위치를 모두 동일하게 설정함으로써 해당 순환 순열 행렬에 대응되는 비트들의 위치를 파악하기가 용이하다.
상기 도 27의 기본 행렬과 수학식 28 내지 수학식 32에 기반하여 설계된 QC LDPC 부호의 패리티 검사 행렬에 대응되는 지수 행렬에 대한 실시 예를 도 28 내지 도 35에 순차적으로 나타내었다. (도 28 내지 도 35의 지수 행렬에서 빈 블록들은 ZxZ 크기의 영행렬에 대응되는 부분을 나타냄에 유의한다. 경우에 따라서 도 28 내지 도 35의 지수 행렬에서 빈 블록들은 -1과 같은 특정된 값으로도 표현 가능하다.) 상기 도 28 내지 도 35에 나타낸 LDPC 부호의 지수 행렬들은 도 18의 동일한 기본 행렬을 가진다는 특징이 있다.
도 28 내지 도 35의 행렬은 46x68 크기의 LDPC 지수 행렬들을 도시한 도면이다. 또한, 도 28a 내지 도 28i는 도 28의 지수 행렬을 구분하여, 각 부분을 확대하여 도시한 것이다. 도 28은 각 부분에 기재된 도면 번호에 해당하는 도면의 행렬에 대응된다. 따라서, 도 28a 내지 도 28i가 결합하여 하나의 기본 행렬을 구성할 수 있다. 마찬가지로 도 29 내지 도 35 또한 각 지수 행렬을 구분한 다음 각 부분을 확대하여 도시한 것이다. 참고로 도 29b, 30b, 31b, 32b, 33b, 34b는 도 28b와 동일하며, 도 29c, 30c, 31c, 32c, 33c, 34c는 도 28c와 동일하며, 도 29e, 30e, 31e, 32e, 33e, 34e는 도 28e와 동일하며, 도 29f, 30f, 31f, 32f, 33f, 34f는 도 28f와 동일하며, 도 29h, 30h, 31h, 32h, 33h, 34h는 도 28h와 동일하며, 도 29i, 30i, 31i, 32i, 33i, 34i는 도 28i와 동일하다.
상기 도 28 내지 도 35에 나타낸 지수 행렬들은 각각 수학식 28 또는 수학식 30에서 정의된 블록 크기 그룹을 고려하여 설계된 LDPC 부호에 각각 대응된다. 하지만 시스템의 요구 사항에 따라서 상기 블록 크기 그룹에 포함된 모든 블록 크기를 반드시 지원할 필요는 없으며, 경우에 따라서는 상기 수학식 28 또는 수학식 30의 블록 크기 외에 다른 값들도 추가될 수 있다. 즉, 상기 도 28 내지 도 35에 나타낸 지수 행렬들은 수학식 28 또는 수학식 30에서 정의된 블록 크기 그룹(집합)에 대응되는 블록 크기를 지원할 수 있을 뿐만 아니라 최소한 각 그룹(집합)의 부분 집합에 대응되는 블록 크기를 지원할 수 있으며, 경우에 따라서는 그 외의 다른 값들도 지원 가능하다.
또한 시스템에 따라 상기 도 27 내지 도 35에 나타낸 기본 행렬 또는 지수 행렬을 그대로 사용할 수도 있고, 그 일부만 사용될 수도 있다. 예를 들면, 상기 도 27 내지 도 35의 기본 행렬 또는 각 지수 행렬들의 아래 21개의 행과 뒤에서부터 21개의 열을 제외한 나머지 부분 행렬을 도 17의 도 17a, 17b, 17d, 17e에 대응시키고 도 17의 17c, 17f, 17g, 17h, 17i를 다른 행렬 또는 LDPC 수열을 적용하여 도 17과 유사한 형태의 기본 행렬 또는 지수 행렬을 이용하여 LDPC 부호화 및 복호화 방법 및 장치에 이용할 수 있다.
일반적으로 상기 도 27의 기본 행렬에서 적절히 행과 열을 선택하여 이루어진 부분 행렬을 새로운 기본 행렬 또는 지수 행렬로 각각 적용하여 LDPC 부호화 및 복호화를 수행할 수도 있다. 마찬가지로 도 28 내지 도 35의 지수 행렬에서 적절히 행 블록과 열 블록을 선택하여 이루어진 부분 행렬을 새로운 지수 행렬로 적용하여 LDPC 부호화 및 복호화 방법 및 장치에 적용할 수도 있다.
참고로 수학식 26에서 수열로 나타낸 LDPC 부호화 및 복호화를 위한 기본 행렬은 다음 수학식 33 또는 수학식 34와 같이 나타낼 수도 있다.
수학식 33은 수학식 26의 기본 행렬과 같이 27번째 열블록부터 마지막 열블록까지는 대각구조(diagonal)를 가지는 경우에는 원소의 위치나 그 지수 값들을 생략하되, 해당 규칙을 알고 있다고 가정하는 경우에 사용할 수 있는 LDPC 수열을 의미한다. 일례로서 하기 수학식 33은 27번째 열 블록부터 마지막 열 블록까지 원소 1의 위치를 생략한 예이다.
[수학식 33]
0 1 2 3 5 6 9 10 11 12 13 15 16 18 19 20 21 22 23
0 2 3 4 5 7 8 9 11 12 14 15 16 17 19 21 22 23 24
0 1 2 4 5 6 7 8 9 10 13 14 15 17 18 19 20 24 25
0 1 3 4 6 7 8 10 11 12 13 14 16 17 18 20 21 22 25
0 1
0 1 3 12 16 21 22
0 6 10 11 13 17 18 20
0 1 4 7 8 14
0 1 3 12 16 19 21 22 24
0 1 10 11 13 17 18 20
1 2 4 7 8 14
0 1 12 16 21 22 23
0 1 10 11 13 18
0 3 7 20 23
0 12 15 16 17 21
0 1 10 13 18 25
1 3 11 20 22
0 14 16 17 21
1 12 13 18 19
0 1 7 8 10
0 3 9 11 22
1 5 16 20 21
0 12 13 17
1 2 10 18
0 3 4 11 22
1 6 7 14
0 2 4 15
1 6 8
0 4 19 21
1 14 18 25
0 10 13 24
1 7 22 25
0 12 14 24
1 2 11 21
0 7 15 17
1 6 12 22
0 14 15 18
1 13 23
0 9 10 12
1 3 7 19
0 8 17
1 3 9 18
0 4 24
1 16 18 25
0 7 9 22
1 6 10
수학식 34는 수학식 26의 기본 행렬에 대해서 원소 1의 위치를 각 열 별로 나타낸 것이다. 편의상 수학식 34는 27번째 열 블록부터 마지막 열 블록까지 원소 1의 위치를 생략한 예이며, 28번째 열부터는 4, 5, 6, … 과 같은 순서로 1개로 이루어진 수열을 추가하여 표현할 수도 있다.
[수학식 34]
0 1 2 3 4 5 6 7 8 9 11 12 13 14 15 17 19 20 22 24 26 28 30 32 34 36 38 40 42 44
0 2 3 4 5 7 8 9 10 11 12 15 16 18 19 21 23 25 27 29 31 33 35 37 39 41 43 45
0 1 2 10 23 26 33
0 1 3 5 8 13 16 20 24 39 41
1 2 3 7 10 24 26 28 42
0 1 2 21
0 2 3 6 25 27 35 45
1 2 3 7 10 13 19 25 31 34 39 44
1 2 3 7 10 19 27 40
0 1 2 20 38 41 44
0 2 3 6 9 12 15 19 23 30 38 45
0 1 3 6 9 12 16 20 24 33
0 1 3 5 8 11 14 18 22 32 35 38
0 2 3 6 9 12 15 18 22 30 37
1 2 3 7 10 17 25 29 32 36
0 1 2 14 26 34 36
0 1 3 5 8 11 14 17 21 43
1 2 3 6 9 14 17 22 34 40
0 2 3 6 9 12 15 18 23 29 36 41 43
0 1 2 8 18 28 39
0 2 3 6 9 13 16 21
0 1 3 5 8 11 14 17 21 28 33
0 1 3 5 8 11 16 20 24 31 35 44
0 1 11 13 37
1 2 8 30 32 42
2 3 15 29 31 43
또한 상기 수학식 26에서 수열로 나타낸 LDPC 부호화 및 복호화를 위한 기본 행렬은 다음 도 36과 같이 나타낼 수 있다. 도 36의 행렬은 46x68 크기의 기본 행렬들을 도시한 도면이다. 또한, 도 36a 내지 도 36i는 도 36의 기본 행렬을 구분하여, 각 부분을 확대하여 도시한 것이다. 도 36은 각 부분에 기재된 도면 번호에 해당하는 도면의 행렬에 대응된다. 따라서, 도 36a 내지 도 36i가 결합하여 하나의 기본 행렬을 구성할 수 있다. 참고로 도 36b, 36c, 36e, 36f, 36h, 36i는 각각 27b, 27c, 27e, 27f, 27h, 27i와 동일하여 도 36에서는 생략하였다.
본 발명은 바람직한 실시예로 설명하였지만, 다양한 변경 및 변형이 당업자에게 제시될 수도 있다. 이러한 변경 및 변형들은 첨부된 청구범위에 포함되는 것으로 의도하는 바이다.

Claims (16)

  1. 통신 또는 방송 시스템에서 채널 부호화 방법에 있어서,
    블록 크기를 확인하는 단계; 및
    상기 블록 크기에 상응하는 패리티 검사 행렬에 기반하여 부호화 절차를 수행하는 단계를 포함하며,
    상기 패리티 검사 행렬은 기본 행렬 및 순환 순열 행렬들에 기반하여 확인되고,
    상기 기본 행렬의 행의 0이 아닌 원소는 열 인덱스에 상응하고,
    상기 기본 행렬의 복수의 행들은 열 인덱스들로서,
    상기 복수의 행들의 행에 대해 0, 1, 3, 12, 16, 21, 22, 및 27,
    상기 복수의 행들의 행에 대해 0, 6, 10, 11, 13, 17, 18, 20, 및 28,
    상기 복수의 행들의 행에 대해 0, 1, 4, 7, 8, 14, 및 29,
    상기 복수의 행들의 행에 대해 0, 1, 3, 12, 16, 19, 21, 22, 24, 및 30,
    상기 복수의 행들의 행에 대해 0, 1, 10, 11, 13, 17, 18, 20, 및 31,
    상기 복수의 행들의 행에 대해 1, 2, 4, 7, 8, 14, 및 32,
    상기 복수의 행들의 행에 대해 0, 1, 12, 16, 21, 22, 23, 및 33,
    상기 복수의 행들의 행에 대해 0, 1, 10, 11, 13, 18, 및 34,
    상기 복수의 행들의 행에 대해 0, 3, 7, 20, 23, 및 35,
    상기 복수의 행들의 행에 대해 0, 12, 15, 16, 17, 21, 및 36,
    상기 복수의 행들의 행에 대해 0, 1, 10, 13, 18, 25, 및 37,
    상기 복수의 행들의 행에 대해 1, 3, 11, 20, 22, 및 38,
    상기 복수의 행들의 행에 대해 0, 14, 16, 17, 21, 및 39,
    상기 복수의 행들의 행에 대해 1, 12, 13, 18, 19, 및 40,
    상기 복수의 행들의 행에 대해 0, 1, 7, 8, 10, 및 41,
    상기 복수의 행들의 행에 대해 0, 3, 9, 11, 22, 및 42,
    상기 복수의 행들의 행에 대해 1, 5, 16, 20, 21, 및 43,
    상기 복수의 행들의 행에 대해 0, 12, 13, 17, 및 44,
    상기 복수의 행들의 행에 대해 1, 2, 10, 18, 및 45, 및
    상기 복수의 행들의 행에 대해 0, 3, 4, 11, 22, 및 46,
    를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 블록 크기는 하기의 블록 크기 그룹들에 기반하여 선택되는 것을 특징으로 하는 방법.
    Z1 = {3, 6, 12, 24, 48, 96, 192, 384},
    Z2 = {11, 22, 44, 88, 176, 352},
    Z3 = {5, 10, 20, 40, 80, 160, 320},
    Z4 = {9, 18, 36, 72, 144, 288},
    Z5 = {2, 4, 8, 16, 32, 64, 128, 256},
    Z6 = {15, 30, 60, 120, 240},
    Z7 = {7, 14, 28, 56, 112, 224}, 및
    Z8 = {13, 26, 52, 104, 208}.
  3. 제1항에 있어서,
    상기 패리티 검사 행렬은 상기 기본 행렬의 1 값이 상기 순환 순열 행렬들로 대체된 것에 기반하여 확인되는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 순환 순열 행렬들은 항등 행렬을 순환 이동하여 획득되며,
    상기 순환 이동은 상기 블록 크기에 기반한 모듈로 연산 결과에 기반하여 수행되는 것을 특징으로 하는 방법.
  5. 통신 또는 방송 시스템에서 채널 복호화 방법에 있어서,
    블록 크기를 확인하는 단계; 및
    상기 블록 크기에 상응하는 패리티 검사 행렬에 기반하여 복호화 절차를 수행하는 단계를 포함하며,
    상기 패리티 검사 행렬은 기본 행렬 및 순환 순열 행렬들에 기반하여 확인되고,
    상기 기본 행렬의 행의 0이 아닌 원소는 열 인덱스에 상응하고,
    상기 기본 행렬의 복수의 행들은 열 인덱스들로서,
    상기 복수의 행들의 행에 대해 0, 1, 3, 12, 16, 21, 22, 및 27,
    상기 복수의 행들의 행에 대해 0, 6, 10, 11, 13, 17, 18, 20, 및 28,
    상기 복수의 행들의 행에 대해 0, 1, 4, 7, 8, 14, 및 29,
    상기 복수의 행들의 행에 대해 0, 1, 3, 12, 16, 19, 21, 22, 24, 및 30,
    상기 복수의 행들의 행에 대해 0, 1, 10, 11, 13, 17, 18, 20, 및 31,
    상기 복수의 행들의 행에 대해 1, 2, 4, 7, 8, 14, 및 32,
    상기 복수의 행들의 행에 대해 0, 1, 12, 16, 21, 22, 23, 및 33,
    상기 복수의 행들의 행에 대해 0, 1, 10, 11, 13, 18, 및 34,
    상기 복수의 행들의 행에 대해 0, 3, 7, 20, 23, 및 35,
    상기 복수의 행들의 행에 대해 0, 12, 15, 16, 17, 21, 및 36,
    상기 복수의 행들의 행에 대해 0, 1, 10, 13, 18, 25, 및 37,
    상기 복수의 행들의 행에 대해 1, 3, 11, 20, 22, 및 38,
    상기 복수의 행들의 행에 대해 0, 14, 16, 17, 21, 및 39,
    상기 복수의 행들의 행에 대해 1, 12, 13, 18, 19, 및 40,
    상기 복수의 행들의 행에 대해 0, 1, 7, 8, 10, 및 41,
    상기 복수의 행들의 행에 대해 0, 3, 9, 11, 22, 및 42,
    상기 복수의 행들의 행에 대해 1, 5, 16, 20, 21, 및 43,
    상기 복수의 행들의 행에 대해 0, 12, 13, 17, 및 44,
    상기 복수의 행들의 행에 대해 1, 2, 10, 18, 및 45, 및
    상기 복수의 행들의 행에 대해 0, 3, 4, 11, 22, 및 46,
    를 포함하는 것을 특징으로 하는 방법.
  6. 제5항에 있어서,
    상기 블록 크기는 하기의 블록 크기 그룹들에 기반하여 선택되는 것을 특징으로 하는 방법.
    Z1 = {3, 6, 12, 24, 48, 96, 192, 384},
    Z2 = {11, 22, 44, 88, 176, 352},
    Z3 = {5, 10, 20, 40, 80, 160, 320},
    Z4 = {9, 18, 36, 72, 144, 288},
    Z5 = {2, 4, 8, 16, 32, 64, 128, 256},
    Z6 = {15, 30, 60, 120, 240},
    Z7 = {7, 14, 28, 56, 112, 224}, 및
    Z8 = {13, 26, 52, 104, 208}.
  7. 제5항에 있어서,
    상기 패리티 검사 행렬은 상기 기본 행렬의 1 값이 상기 순환 순열 행렬들로 대체된 것에 기반하여 확인되는 것을 특징으로 하는 방법.
  8. 제5항에 있어서,
    상기 순환 순열 행렬들은 항등 행렬을 순환 이동하여 획득되며,
    상기 순환 이동은 상기 블록 크기에 기반한 모듈로 연산 결과에 기반하여 수행되는 것을 특징으로 하는 방법.
  9. 통신 또는 방송 시스템에서 채널 부호화 장치에 있어서,
    송수신부; 및
    상기 송수신부와 연결되고,
    블록 크기를 확인하고,
    상기 블록 크기에 상응하는 패리티 검사 행렬에 기반하여 부호화 절차를 수행하는 제어부를 포함하며,
    상기 패리티 검사 행렬은 기본 행렬 및 순환 순열 행렬들에 기반하여 확인되고,
    상기 기본 행렬의 행의 0이 아닌 원소는 열 인덱스에 상응하고,
    상기 기본 행렬의 복수의 행들은 열 인덱스들로서,
    상기 복수의 행들의 행에 대해 0, 1, 3, 12, 16, 21, 22, 및 27,
    상기 복수의 행들의 행에 대해 0, 6, 10, 11, 13, 17, 18, 20, 및 28,
    상기 복수의 행들의 행에 대해 0, 1, 4, 7, 8, 14, 및 29,
    상기 복수의 행들의 행에 대해 0, 1, 3, 12, 16, 19, 21, 22, 24, 및 30,
    상기 복수의 행들의 행에 대해 0, 1, 10, 11, 13, 17, 18, 20, 및 31,
    상기 복수의 행들의 행에 대해 1, 2, 4, 7, 8, 14, 및 32,
    상기 복수의 행들의 행에 대해 0, 1, 12, 16, 21, 22, 23, 및 33,
    상기 복수의 행들의 행에 대해 0, 1, 10, 11, 13, 18, 및 34,
    상기 복수의 행들의 행에 대해 0, 3, 7, 20, 23, 및 35,
    상기 복수의 행들의 행에 대해 0, 12, 15, 16, 17, 21, 및 36,
    상기 복수의 행들의 행에 대해 0, 1, 10, 13, 18, 25, 및 37,
    상기 복수의 행들의 행에 대해 1, 3, 11, 20, 22, 및 38,
    상기 복수의 행들의 행에 대해 0, 14, 16, 17, 21, 및 39,
    상기 복수의 행들의 행에 대해 1, 12, 13, 18, 19, 및 40,
    상기 복수의 행들의 행에 대해 0, 1, 7, 8, 10, 및 41,
    상기 복수의 행들의 행에 대해 0, 3, 9, 11, 22, 및 42,
    상기 복수의 행들의 행에 대해 1, 5, 16, 20, 21, 및 43,
    상기 복수의 행들의 행에 대해 0, 12, 13, 17, 및 44,
    상기 복수의 행들의 행에 대해 1, 2, 10, 18, 및 45, 및
    상기 복수의 행들의 행에 대해 0, 3, 4, 11, 22, 및 46,
    를 포함하는 것을 특징으로 하는 장치.
  10. 제9항에 있어서,
    상기 블록 크기는 하기의 블록 크기 그룹들에 기반하여 선택되는 것을 특징으로 하는 장치.
    Z1 = {3, 6, 12, 24, 48, 96, 192, 384},
    Z2 = {11, 22, 44, 88, 176, 352},
    Z3 = {5, 10, 20, 40, 80, 160, 320},
    Z4 = {9, 18, 36, 72, 144, 288},
    Z5 = {2, 4, 8, 16, 32, 64, 128, 256},
    Z6 = {15, 30, 60, 120, 240},
    Z7 = {7, 14, 28, 56, 112, 224}, 및
    Z8 = {13, 26, 52, 104, 208}.
  11. 제9항에 있어서,
    상기 패리티 검사 행렬은 상기 기본 행렬의 1 값이 상기 순환 순열 행렬들로 대체된 것에 기반하여 확인되는 것을 특징으로 하는 장치.
  12. 제9항에 있어서,
    상기 순환 순열 행렬들은 항등 행렬을 순환 이동하여 획득되며,
    상기 순환 이동은 상기 블록 크기에 기반한 모듈로 연산 결과에 기반하여 수행되는 것을 특징으로 하는 장치.
  13. 통신 또는 방송 시스템에서 채널 복호화 장치에 있어서,
    송수신부; 및
    상기 송수신부와 연결되고,
    블록 크기를 확인하고,
    상기 블록 크기에 상응하는 패리티 검사 행렬에 기반하여 복호화 절차를 수행하는 제어부를 포함하며,
    상기 패리티 검사 행렬은 기본 행렬 및 순환 순열 행렬들에 기반하여 확인되고,
    상기 기본 행렬의 행의 0이 아닌 원소는 열 인덱스에 상응하고,
    상기 기본 행렬의 복수의 행들은 열 인덱스들로서,
    상기 복수의 행들의 행에 대해 0, 1, 3, 12, 16, 21, 22, 및 27,
    상기 복수의 행들의 행에 대해 0, 6, 10, 11, 13, 17, 18, 20, 및 28,
    상기 복수의 행들의 행에 대해 0, 1, 4, 7, 8, 14, 및 29,
    상기 복수의 행들의 행에 대해 0, 1, 3, 12, 16, 19, 21, 22, 24, 및 30,
    상기 복수의 행들의 행에 대해 0, 1, 10, 11, 13, 17, 18, 20, 및 31,
    상기 복수의 행들의 행에 대해 1, 2, 4, 7, 8, 14, 및 32,
    상기 복수의 행들의 행에 대해 0, 1, 12, 16, 21, 22, 23, 및 33,
    상기 복수의 행들의 행에 대해 0, 1, 10, 11, 13, 18, 및 34,
    상기 복수의 행들의 행에 대해 0, 3, 7, 20, 23, 및 35,
    상기 복수의 행들의 행에 대해 0, 12, 15, 16, 17, 21, 및 36,
    상기 복수의 행들의 행에 대해 0, 1, 10, 13, 18, 25, 및 37,
    상기 복수의 행들의 행에 대해 1, 3, 11, 20, 22, 및 38,
    상기 복수의 행들의 행에 대해 0, 14, 16, 17, 21, 및 39,
    상기 복수의 행들의 행에 대해 1, 12, 13, 18, 19, 및 40,
    상기 복수의 행들의 행에 대해 0, 1, 7, 8, 10, 및 41,
    상기 복수의 행들의 행에 대해 0, 3, 9, 11, 22, 및 42,
    상기 복수의 행들의 행에 대해 1, 5, 16, 20, 21, 및 43,
    상기 복수의 행들의 행에 대해 0, 12, 13, 17, 및 44,
    상기 복수의 행들의 행에 대해 1, 2, 10, 18, 및 45, 및
    상기 복수의 행들의 행에 대해 0, 3, 4, 11, 22, 및 46,
    를 포함하는 것을 특징으로 하는 장치.
  14. 제13항에 있어서,
    상기 블록 크기는 하기의 블록 크기 그룹들에 기반하여 선택되는 것을 특징으로 하는 장치.
    Z1 = {3, 6, 12, 24, 48, 96, 192, 384},
    Z2 = {11, 22, 44, 88, 176, 352},
    Z3 = {5, 10, 20, 40, 80, 160, 320},
    Z4 = {9, 18, 36, 72, 144, 288},
    Z5 = {2, 4, 8, 16, 32, 64, 128, 256},
    Z6 = {15, 30, 60, 120, 240},
    Z7 = {7, 14, 28, 56, 112, 224}, 및
    Z8 = {13, 26, 52, 104, 208}.
  15. 제13항에 있어서,
    상기 패리티 검사 행렬은 상기 기본 행렬의 1 값이 상기 순환 순열 행렬들로 대체된 것에 기반하여 확인되는 것을 특징으로 하는 장치.
  16. 제13항에 있어서,
    상기 순환 순열 행렬들은 항등 행렬을 순환 이동하여 획득되며,
    상기 순환 이동은 상기 블록 크기에 기반한 모듈로 연산 결과에 기반하여 수행되는 것을 특징으로 하는 장치.
KR1020170073157A 2017-03-30 2017-06-12 통신 또는 방송 시스템에서 채널 부호화/복호화 방법 및 장치 KR102348466B1 (ko)

Priority Applications (9)

Application Number Priority Date Filing Date Title
EP18775262.1A EP3586445B1 (en) 2017-03-30 2018-03-30 Apparatus and method for channel encoding/decoding in communication or broadcasting system
PCT/KR2018/003808 WO2018182371A1 (en) 2017-03-30 2018-03-30 Apparatus and method for channel encoding/decoding in communication or broadcasting system
US15/941,559 US10484134B2 (en) 2017-03-30 2018-03-30 Apparatus and method for channel encoding/decoding in communication or broadcasting system
EP21175701.8A EP3902143B1 (en) 2017-03-30 2018-03-30 Apparatus and method for channel encoding/decoding in communication or broadcasting system
CN202311514406.7A CN117768059A (zh) 2017-03-30 2018-03-30 用于通信或广播系统中的信道编码/解码的装置和方法
CN201880023086.6A CN110463045B (zh) 2017-03-30 2018-03-30 用于通信或广播系统中的信道编码/解码的装置和方法
US16/685,193 US11050509B2 (en) 2017-03-30 2019-11-15 Apparatus and method for channel encoding/decoding in communication or broadcasting system
US17/360,330 US11750322B2 (en) 2017-03-30 2021-06-28 Apparatus and method for channel encoding/decoding in communication or broadcasting system
KR1020220000774A KR102583534B1 (ko) 2017-03-30 2022-01-04 통신 또는 방송 시스템에서 채널 부호화/복호화 방법 및 장치

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
KR1020170041138 2017-03-30
KR20170041138 2017-03-30
KR20170057066 2017-05-04
KR1020170057066 2017-05-04
KR20170069480 2017-06-05
KR1020170069480 2017-06-05
KR20170072810 2017-06-09
KR1020170072810 2017-06-09
KR1020170072821 2017-06-10
KR20170072821 2017-06-10

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020220000774A Division KR102583534B1 (ko) 2017-03-30 2022-01-04 통신 또는 방송 시스템에서 채널 부호화/복호화 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20180111422A KR20180111422A (ko) 2018-10-11
KR102348466B1 true KR102348466B1 (ko) 2022-01-10

Family

ID=63865463

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170073157A KR102348466B1 (ko) 2017-03-30 2017-06-12 통신 또는 방송 시스템에서 채널 부호화/복호화 방법 및 장치

Country Status (3)

Country Link
EP (2) EP3586445B1 (ko)
KR (1) KR102348466B1 (ko)
CN (1) CN110463045B (ko)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100809619B1 (ko) * 2003-08-26 2008-03-05 삼성전자주식회사 이동 통신 시스템에서 블록 저밀도 패러티 검사 부호부호화/복호 장치 및 방법
US7395494B2 (en) * 2003-12-22 2008-07-01 Electronics And Telecommunications Research Institute Apparatus for encoding and decoding of low-density parity-check codes, and method thereof
AU2005239263B2 (en) * 2004-04-28 2008-12-04 Samsung Electronics Co., Ltd. Apparatus and method for coding/decoding block low density parity check code with variable block length
US7581157B2 (en) * 2004-06-24 2009-08-25 Lg Electronics Inc. Method and apparatus of encoding and decoding data using low density parity check code in a wireless communication system
US7752521B2 (en) * 2004-10-12 2010-07-06 Nortel Networks Limited Low density parity check (LDPC) code
US7607065B2 (en) * 2005-07-27 2009-10-20 Agere Systems Inc. Method and apparatus for block and rate independent decoding of LDPC codes
KR102104937B1 (ko) * 2013-06-14 2020-04-27 삼성전자주식회사 Ldpc 부호의 부호화 장치, 그의 부호화 방법, 복호화 장치 및 그의 복호화 방법

Also Published As

Publication number Publication date
EP3586445A4 (en) 2020-04-15
EP3902143B1 (en) 2024-08-07
EP3902143C0 (en) 2024-08-07
EP3902143A1 (en) 2021-10-27
CN110463045B (zh) 2023-12-01
CN110463045A (zh) 2019-11-15
EP3586445A1 (en) 2020-01-01
EP3586445B1 (en) 2021-05-26
KR20180111422A (ko) 2018-10-11

Similar Documents

Publication Publication Date Title
KR102583534B1 (ko) 통신 또는 방송 시스템에서 채널 부호화/복호화 방법 및 장치
US11133825B2 (en) Apparatus and method for channel encoding/decoding in communication or broadcasting system
KR102694927B1 (ko) 통신 또는 방송 시스템에서 채널 부호화/복호화 방법 및 장치
US11101926B2 (en) Method and apparatus for channel encoding and decoding in communication or broadcasting system
KR20190017594A (ko) 통신 또는 방송 시스템에서 채널 부호화/복호화 방법 및 장치
KR102396814B1 (ko) 통신 또는 방송 시스템에서 채널 부호화/복호화 방법 및 장치
US20230421177A1 (en) Apparatus and method for channel encoding/decoding in communication or broadcasting system
KR102348466B1 (ko) 통신 또는 방송 시스템에서 채널 부호화/복호화 방법 및 장치
Bajpai et al. A new construction method for large girth quasi-cyclic ldpc codes with optimized lower bound using chinese remainder theorem
US11502781B2 (en) Method and apparatus for channel encoding and decoding in communication or broadcasting system
KR102302366B1 (ko) 통신 또는 방송 시스템에서 채널 부호화/복호화 방법 및 장치
KR102445150B1 (ko) 통신 또는 방송 시스템에서 채널 부호화/복호화 방법 및 장치
CN113472359B (zh) 用于通信系统中的信道编码/解码的装置和方法
KR20120121144A (ko) 무선통신 시스템에서 데이터 송?수신 방법 및 장치

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