KR102478169B1 - 디인터리빙 방법 및 이를 수행하는 디인터리빙 시스템 - Google Patents

디인터리빙 방법 및 이를 수행하는 디인터리빙 시스템 Download PDF

Info

Publication number
KR102478169B1
KR102478169B1 KR1020200041095A KR20200041095A KR102478169B1 KR 102478169 B1 KR102478169 B1 KR 102478169B1 KR 1020200041095 A KR1020200041095 A KR 1020200041095A KR 20200041095 A KR20200041095 A KR 20200041095A KR 102478169 B1 KR102478169 B1 KR 102478169B1
Authority
KR
South Korea
Prior art keywords
data
bits
deinterleaving
deinterleaver
blocks
Prior art date
Application number
KR1020200041095A
Other languages
English (en)
Other versions
KR20210123659A (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 KR1020200041095A priority Critical patent/KR102478169B1/ko
Priority to US17/199,605 priority patent/US11411583B2/en
Publication of KR20210123659A publication Critical patent/KR20210123659A/ko
Application granted granted Critical
Publication of KR102478169B1 publication Critical patent/KR102478169B1/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/27Coding, 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 using interleaving techniques
    • H03M13/2703Coding, 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 using interleaving techniques the interleaver involving at least two directions
    • 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/27Coding, 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 using interleaving techniques
    • H03M13/2778Interleaver using block-wise interleaving, e.g. the interleaving matrix is sub-divided into sub-matrices and the permutation is performed in blocks of 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/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
    • 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/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/27Coding, 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 using interleaving techniques
    • H03M13/2703Coding, 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 using interleaving techniques the interleaver involving at least two directions
    • H03M13/2717Coding, 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 using interleaving techniques the interleaver involving at least two directions the interleaver involves 3 or more directions
    • 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/27Coding, 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 using interleaving techniques
    • H03M13/276Interleaving address generation
    • 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/27Coding, 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 using interleaving techniques
    • H03M13/2792Interleaver wherein interleaving is performed jointly with another technique such as puncturing, multiplexing or routing
    • 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

Landscapes

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

Abstract

디인터리빙 방법 및 이를 수행하는 디인터리빙 시스템이 개시된다. 일 실시예에 따른 데이터 처리 방법은, 데이터를 제1 비트 수의 제1 데이터 블록들로 분할하는 단계와, 상기 제1 데이터 블록들에 대해 디인터리빙(deinterleaving)을 수행하는 단계와, 디인터리빙된 데이터를 제2 비트 수의 제2 데이터 블록들로 분할하여 출력하는 단계를 포함하고, 상기 제1 비트 수는, 디인터리빙 동작의 최소 스위칭 단위 및 상기 제2 비트 수에 기초하여 결정된다.

Description

디인터리빙 방법 및 이를 수행하는 디인터리빙 시스템{DEINTERLEAVING METHOD AND DEINTERLEAVING SYSTEM PERFORMING THE SAME}
아래 실시예들은 디인터리빙 방법 및 이를 수행하는 디인터리빙 시스템에 관한 것이다.
현재 널리 사용되고 있는 FEC(Forward Error correction) 중에서 LDPC(Low Density Parity Check) 코드는 무선 통신에서 널리 사용되는 에러 정정 코드이고, 최근에는 광통신에도 적용하여 성능을 개선하는 노력들이 많아지고 있다. 이러한 LDPC 코드에서 사용하는 오류정정 복호기 알고리즘은 Belief Propagation 알고리즘, Sum-Product 알고리즘이라고 불리우는 반복적인(iterative) 알고리즘을 사용한다.
버스트 에러(burst error) 수가 복호 알고리즘이 처리할 수 있는 한계보다 클 경우 오류정정 복호기가 정상적으로 동작하지 않을 수 있다. 이때, 버스트 에러를 분산시킴으로써, 처리하고자 하는 에러가 하나의 코드 블록 단위에 몰리지 않고 분산되게 하기 위한 방법으로 인터리빙(interleaving) 기술을 이용할 수 있다. 즉, 인터리빙은 버스트 에러를 처리하는데 효과적인 기술로, 한 코드 블록 단위 내의 연속적인 에러를 여러 개의 코드 워드로 분산시키고, 각 코드의 에러 수는 현저히 적어지게 할 수 있다. 오류정정 복호기는 처리할 수 있는 한계 내의 에러 범위의 코드를 처리함으로써 에러 복구 기능을 향상시킬 수 있다.
인터리빙 기술을 통해 에러를 분산시킴으로써 전송 성능을 향상시킬 수 있고, 데이터 전송을 위해 LDPC 복호기에 인터리빙 기술을 접목하는 것은 에러율을 효과적으로 줄일 수 있다.
인터리빙 기술은 인터리빙된 데이터를 원래의 비트 시퀀스 순서를 복원하는 디인터리빙을 포함한다.
실시예들은 인터리버 및 디인터리버의 구현에 있어서, 인리터버 및 디인터리버 내에서 비트간 스위칭(switching) 및 배선(routing)을 줄이기 위한 기술을 제공할 수 있다.
일 실시예에 따른 데이터 처리 방법은, 데이터를 제1 비트 수의 제1 데이터 블록들로 분할하는 단계와, 상기 제1 데이터 블록들에 대해 디인터리빙(deinterleaving)을 수행하는 단계와, 디인터리빙된 데이터를 제2 비트 수의 제2 데이터 블록들로 분할하여 출력하는 단계를 포함하고, 상기 제1 비트 수는, 디인터리빙 동작의 최소 스위칭 단위 및 상기 제2 비트 수에 기초하여 결정된다.
상기 제2 비트 수는, LDPC(Low Density Parity Check) 복호기의 입력 데이터 단위일 수 있다.
상기 제1 비트 수는 상기 최소 스위칭 단위 및 상기 제2 비트 수의 공배수일 수 있다.
상기 수행하는 단계는, 상기 제1 데이터 블록들을 순서대로 입력하는 단계와, 입력된 각각의 데이터 블록을 상기 최소 스위칭 단위에 기초하여 재정렬하는 단계를 포함할 수 있다.
상기 재정렬하는 단계는, 상기 각각의 데이터 블록의 비트들 중 상기 최소 스위칭 단위의 간격을 가지는 비트들을 새로운 데이터 행렬의 각 행으로 매핑하는 단계를 포함할 수 있다.
상기 데이터는, 인터리빙(interleaving)이 수행된 데이터일 수 있다.
일 실시예에 따른 데이터 처리 방법은, 각각 N비트인 제1 데이터 내지 제M 데이터(N 및 M은 1이상의 자연수)를 입력하는 단계;
상기 제1 데이터 내지 제M 데이터 각각에 대해 K비트 간격(K은 1이상의 자연수)으로 비트를 추출하여 제1 데이터 행렬 내지 제M 데이터 행렬을 생성하는 단계와, 상기 제1 데이터 행렬 내지 제M 데이터 행렬 각각의 L번째 행(L은 1이상의 자연수)을 순차적으로 출력하는 단계를 포함한다.
상기 N은 상기 K의 배수이고, 상기 생성하는 단계는, 상기 제1 데이터 내지 제M 데이터 각각에 대해 K비트 간격으로 추출하여, 각각 K개의 행 및 N/K개의 열을 가지는 상기 제1 데이터 행렬 내지 제M 데이터 행렬을 생성하는 단계를 포함할 수 있다.
상기 출력하는 단계는, 상기 L이 1인 경우부터 상기 L이 K인 경우까지 순서대로 상기 제1 데이터 행렬 내지 제M 데이터 행렬의 L번째 행을 순서대로 출력하는 단계를 포함할 수 있다.
일 실시예에 따른 데이터 처리 장치는, 데이터를 제1 비트 수의 제1 데이터 블록들로 분할하는 제1 버퍼와, 상기 제1 데이터 블록들에 대해 디인터리빙(deinterleaving)을 수행하는 디인터리버(deinterleaver)와, 디인터리빙된 데이터를 제2 비트 수의 제2 데이터 블록들로 분할하여 출력하는 제2 버퍼를 포함하고, 상기 제1 비트 수는, 디인터리빙 동작의 최소 스위칭 단위 및 상기 제2 비트 수에 기초하여 결정된다.
상기 제2 비트 수는, LDPC(Low Density Parity Check) 복호기의 입력 데이터 단위일 수 있다.
상기 제1 비트 수는, 상기 최소 스위칭 단위 및 상기 제2 비트 수의 공배수일 수 있다.
상기 디인터리버는, 상기 제1 데이터 블록들을 순서대로 입력하고, 입력된 각각의 데이터 블록을 상기 최소 스위칭 단위에 기초하여 재정렬할 수 있다.
상기 디인터리버는, 상기 각각의 데이터 블록의 비트들 중 상기 최소 스위칭 단위의 간격을 가지는 비트들을 새로운 데이터 행렬의 각 행으로 매핑할 수 있다.
상기 데이터는, 인터리빙(interleaving)이 수행된 데이터일 수 있다.
상기 데이터 처리 장치는, 상기 디인터리빙된 데이터를 복호화하는 복호기를 더 포함할 수 있다.
일 실시예에 따른 데이터 처리 장치는, 각각 N비트인 제1 데이터 내지 제M 데이터(N 및 M은 1이상의 자연수)를 입력 받아, 상기 제1 데이터 내지 제M 데이터 각각에 대해 K비트 간격(K은 1이상의 자연수)으로 비트를 추출하여 제1 데이터 행렬 내지 제M 데이터 행렬을 생성하는 디인터리빙 스위치(deinterleaving switch)와, 상기 제1 데이터 행렬 내지 제M 데이터 행렬을 저장하고, 상기 제1 데이터 행렬 내지 제M 데이터 행렬 각각의 L번째 행(L은 1이상의 자연수)을 순차적으로 출력하는 메모리를 포함한다.
상기 N은 상기 K의 배수이고, 상기 디인터리빙 스위치는, 상기 제1 데이터 내지 제M 데이터 각각에 대해 K비트 간격으로 추출하여, 각각 K개의 행 및 N/K개의 열을 가지는 상기 제1 데이터 행렬 내지 제M 데이터 행렬을 생성할 수 있다.
상기 메모리는, 상기 L이 1인 경우부터 상기 L이 K인 경우까지 순서대로 상기 제1 데이터 행렬 내지 제M 데이터 행렬의 L번째 행을 순서대로 출력할 수 있다.
도 1은 종래의 디인터리빙 시스템을 개략적으로 나타내는 블록도이다.
도 2는 도 1에 도시된 디인터리버를 나타내는 블록도이다.
도 3은 일 실시예에 따른 디 인터리빙 시스템을 개략적으로 나타내는 도면이다.
도 4는 도 4에 도시된 디인터리버를 나타내는 블록도이다.
도 5는 LDPC 복호기를 설명하기 위한 도면이다.
도 6은 인터리빙 동작을 설명하기 위한 도면이다.
도 7 및 도 8은 도 1에 도시된 디인터리버의 동작을 설명하기 위한 도면이다.
도 9는 도 4에 도시된 디인터리버의 동작을 설명하기 위한 도면이다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 실시예들에는 다양한 변경이 가해질 수 있어서 특허출원의 권리 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 실시예들에 대한 모든 변경, 균등물 내지 대체물이 권리 범위에 포함되는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 설명을 목적으로 사용된 것으로, 한정하려는 의도로 해석되어서는 안된다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
제1 또는 제2등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 구성요소들은 용어들에 의해서 한정되어서는 안 된다. 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 실시예의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
도 1은 종래의 디인터리빙 시스템을 개략적으로 나타내는 블록도이고, 도 2는 도 1에 도시된 디인터리버를 나타내는 블록도이다.
인터리버(interleaver; 미도시) 및 디인터리버(deinterleaver; 130)는 데이터 전송시에 발생한 버스트 에러의 영향을 최소화하기 위해 비트 스트림(stream)에서 비트 시퀀스(sequence)를 분산시킬 수 있다.
복호기(decoder; 150)는 오류정정 복호기(error correction decoder; 150)일 수 있다. 복호기(150)는 오류 정정 코드(Error Correction Code)를 이용해 다양한 원인에 의해 발생하는 잘못된 입력 값 또는 비트를 교정할 수 있다. 복호기(150)는 부호기(encoder; 미도시)에서 손실된 비트의 양이 정의된 한계 비트 범위 내에 있는 경우, 오류 정정 기능을 수행할 수 있다. 이때, 부호기(미도시)는 오류정정 부호기(error correction encoder)일 수 있다.
복호기(150)는 블록별로 오류 정정 기능을 수행하는 오류 정정 코드 방식을 이용할 수 있다. 이때, 처리 단위인 코드 블록 내에서 에러가 버스트 형태로 발생하는 경우, 복호기(150)는 처리 가능한 한계 비트 범위를 넘어 오류 정정 기능을 수행하지 못할 수 있다.
인터리버(미도시) 및 디인터리버(130)는 코드 블록 내에서 버스트 형태로 발생한 에러를 다른 코드 블록으로 분산시킴으로써 처리 가능한 한계 비트내로 에러 수를 줄일 수 있다. 즉, 인터리버(미도시) 및 디인터리버(130)는 복호기(150)의 오류 정정 기능이 정상적으로 동작하도록 하여 데이터 전송 성능을 향상시킬 수 있다.
인터리버(미도시)는 고정 폭의 비트 시퀀스에 대해 동일한 폭에서 다른 순서로 다른 비트 시퀀스를 출력할 수 있다. 디인터리버(130)은 원래의 비트 시퀀스 순서를 복원할 수 있다. 인터리버(미도시)와 디인터리버(130)는 엄격하게 쌍을 이루어 시퀀스를 처리해야 할 수 있다.
이하, 종래의 방식으로 디인터리빙을 수행하기 위한 디인터리빙 시스템(10)을 설명한다.
디인터리빙 시스템(10)은 버퍼(110), 디인터리버(130) 및 복호기(150)를 포함할 수 있다.
설명의 편의를 위해, 도 1 및 2에서는 버퍼(110) 및 디인터리버(130), 및 복호기(150)에 세개의 데이터를 입력 받고, 세개의 데이터를 출력하는 것으로 도시하였지만, 이에 한정되는 것은 아니다.
버퍼(110)는 입력 데이터를 디인터리빙하기 위한 데이터를 저장하기 위한 저장용 버퍼일 수 있다.
버퍼(110)는 디인터리빙 시스템(10)의 전단에 해당하는 블록(예를 들어, 등화기(Equalizer))으로부터 입력 받은 데이터(buf_in0 내지 buf_in2)를 저장하고, 일정 비트 단위의 데이터(buf_out0 내지 buf_out2)로 출력할 수 있다. 예를 들어, 버퍼(110)는 각각 256비트인 입력 데이터(buf_in0 내지 buf_in2)를 입력 받아, 2448비트 단위의 데이터(buf_out0 내지 buf_out2)를 출력할 수 있다.
디인터리버(130)는 인터리빙된 데이터를 복원할 수 있다.
디인터리버(130)는 입력된 비트 시퀀스의 순서 배열을 변경하기 위해 입력 데이터 시퀀스를 순차적으로 입력 받아 입력 레지스터(register)에 저장할 수 있다.
디인터리버(130)는 입력 레지스터에 저장된 데이터 시퀀스를 변경된 순서 배열에 맞춰서 스위칭한 후에 출력 레지스터에 저장한 후 순차적으로 출력할 수 있다.
이하, 설명의 편의를 위해, 데이터는 12×1224 데이터 행렬을 기준으로 인터리빙이 수행되었고, 디인터리버(130)는 인터리빙된 1224×12 데이터 행렬을 기준으로 디인터리빙을 수행한다고 가정한다.
디인터리버(130)는 제1 레지스터 블록(210-1 내지 210-3), 디인터리빙 스위치(230), 제2 레지스터 블록(270-1 내지 270-3), 및 제어기(290)를 포함할 수 있다.
제1 레지스터 블록(210-1 내지 210-3)은 각각 복수 개의 레지스터(iREG)를 포함할 수 있다.
제1 레지스터 블록(210-1 내지 210-3)은 버퍼(110)로부터 2448비트 단위로 입력 데이터(buf_out0 내지 buf_out2)를 입력 받을 수 있다. 제1 레지스터 블록(210-1 내지 210-3)는 2단(stage)에 걸쳐서 입력 데이터(buf_out0 내지 buf_out2)를 레지스터(iREG)에 저장할 수 있다.
제1 레지스터 블록(210-1 내지 210-3)는 입력된 데이터를 디인터리빙 스위치(230)로 출력할 수 있다.
디인터리빙 스위치(230)는 정해진 순서 배열에 따라 스위칭을 수행할 수 있다. 예를 들어, 디인터리빙 스위치(230)는 스위칭되어 배선이 이루어진 신호선들을 통해 스위칭을 수행할 수 있다.
디인터리빙 스위치(230)는 스위칭을 수행한 데이터를 제2 레지스터 블록(270-1 내지 270-3)으로 출력할 수 있다. 예를 들어, 디인터리빙 스위치(230)는 스위칭이 수행된 2448 비트 단위의 데이터를 제2 레지스터 블록(270-1 내지 270-3)으로 출력할 수 있다.
제2 레지스터 블록(270-1 내지 270-3)은 각각 복수 개의 레지스터(oREG) 및 복수 개의 멀티플렉서(MUX)를 포함할 수 있다. 예를 들어, 제2 레지스터 블록(270-1 내지 270-3)은 2단의 레지스터(oREG)를 포함할 수 있다.
제2 레지스터 블록(270-1 내지 270-3)은 출력 시퀀스에 따라 출력 데이터(deinterleaverOut0 내지 deinterleaverOut3)을 출력할 수 있다. 예를 들어, 제2 레지스터 블록(270-1 내지 270-3)은 96 비트 단위의 출력 데이터(deinterleaverOut0 내지 deinterleaverOut3)를 LDPC 복호기(150)로 출력할 수 있다.
LDPC 복호기(150)는 복수 개의 동일한 LDPC 복호기를 내장할 수 있다. 예를 들어, LDPC 복호기(150)는 복수 개의 96 비트 단위의 출력 데이터(deinterleaverOut0 내지 deinterleaverOut3)를 입력 받아 데이터 오류를 교정할 수 있다.
디인터리버(130)는 제1 레지스터 블록(210-1 내지 210-3) 및 제2 레지스터 블록(270-1 내지 270-3)에 해당하는 레지스터가 다수 필요하고, 디인터리빙 스위치(230)는 스위칭을 위한 연결선이 배선(routing)되어야 하므로 배선을 위한 하드웨어가 다수 필요할 수 있다.
예를 들어, 도 2에 도시된 바와 같이, 디인터리버(130)는 2448비트 단위의 레지스터(iREG)가 아홉 개 필요하고, 출력 레지스터(oREG)는 여섯 개 필요하며, 디인터리빙 스위칭을 위하여 디인터리빙 스위치(230)는 2448×6 비트 단위의 복잡한 배선이 필요할 수 있다.
디인터리빙 시스템(10)은 유효한 자원을 이용하여 효율적으로 설계해야 되는 FPGA 상에서는 구현이 어려울 수 있고 성능이 저하되는 문제점이 생길 수 있다.
도 3은 일 실시예에 따른 디 인터리빙 시스템을 개략적으로 나타내는 도면이고, 도 4는 도 4에 도시된 디인터리버를 나타내는 블록도이고, 도 5는 LDPC 복호기를 설명하기 위한 도면이다.
디인터리빙 시스템(40)은 제1 버퍼(410), 디인터리버(400), 제2 버퍼(430), 및 복호기(150)을 포함할 수 있다.
디인터리빙 시스템(40)은 입력 레지스터 열 및 출력 레지스터 열을 최적화함으로써, 디인터리버(400)의 디인터리빙 스위칭의 배선을 줄일 수 있어, 디인터리빙 성능 저하를 감소시킬 수 있다.
설명의 편의를 위해, 도 3 및 4에서는 제1 버퍼(410) 및 디인터리버(400), 및 제2 버퍼(430) LDPC 복호기(450)에 세 개의 데이터를 입력 받고, 세 개의 데이터를 출력하는 것으로 도시하였지만, 이에 한정되는 것은 아니다.
LDPC 부호기(미도시)는 효율적인 부호화를 위하여 QC-LDPC(Quasi-cyclic LDPC) 부호를 사용할 수 있다. 예를 들어, LDPC 부호기(미도시)는 순환행렬(circulant matrix)의 특징을 이용하여 효율적으로 부호화를 수행할 수 있다. LDPC 부호화를 위한 전체 행렬은 순환행렬의 단위인 하위행렬(submatrix) 단위(예를 들어, Z×Z 행렬 단위)로 구성될 수 있다(Z는 1이상의 자연수). 도 5는 코드워드(code word)의 블록 길이가 2448비트이고, 코딩율(coding rate)이 47/51인 경우 LDPC 부호화 행렬을 도시한 것이다. 이때, Z는 하위행렬의 크기에 해당하는 Z 값으로 48이다.
LDPC 복호기(450)는 부호화 과정에서 설정한 Z에 해당하는 하위행렬 단위로 입력 데이터를 처리하므로 Z 비트의 데이터를 입력으로 받아서 복호화를 수행할 수 있다. 따라서, 디인터리버(130)는 LDPC 복호기(450)의 입력 데이터 단위(Z)를 기준으로 데이터를 LDPC 복호기(450)로 전달하여야 한다.
디인터리버(400)는 디인터리빙 스위칭을 수행할 수 있다. 디인터리버(400)는 C1×C2 배열을 기준으로 인터리빙된 데이터를 C2×C1 배열을 기준으로 디인터리빙할 수 있다(C1 및 C2는 1이상의 자연수).
디인터리버(400)는 C2를 최소 단위로 스위칭을 수행할 수 있다. 예를 들어, 디인터리버(400)는 C2 비트의 데이터를 입력 받아 스위칭을 진행하고, 다음 C2 비트의 데이터를 입력받아서 스위칭을 진행할 수 있다.
제1 버퍼(410)는 입력 데이터(buf_in0 내지 buf_in2)를 디인터리빙하기 위한 최소 단위 데이터 비트 수(C2)에 k배에 해당하는 데이터(buf_out0 내지 buf_out2)로 변환할 수 있다. 제1 버퍼(410) 변환한 데이터(buf_out0 내지 buf_out2)를 디인터리버(400)로 출력할 수 있다. 즉, 디인터리버(400)는 C2×k 비트(k는 1이상의 자연수)의 데이터(buf_out0 내지 buf_out2)를 입력 받을 수 있다.
디인터리버(400)는 C2×k 비트의 데이터(buf_out0 내지 buf_out2)를 입력 받아 디인터리빙을 수행하여 제2 버퍼(430)로 출력할 수 있다. 이때, 제2 버퍼(430)는 디인터리버(400)로부터 Z×m 비트의 데이터(deITLV_out0 내지 deLTLV_out2)를 입력 받을 수 있다.
제2 버퍼(430)은 LDPC 복호기(150)의 입력 데이터 단위(Z)에 해당하는 데이터(deinterleaverOut0 내지 deinterleaverOut2)를 출력할 수 있다. 예를 들어, 제2 버퍼(430)는 멀티플렉서(MUX)를 포함하여, 입력 데이터(deITLV_out0 내지 deITLV_out2)를 멀티플렉싱(multiplexing)하여 Z 비트 데이터(deinterleaverOut0 내지 deinterleaverOut2)를 LDPC 복호기(450)로 출력할 수 있다.
Z×m이 C2의 배수인 경우, 디인터리버 시스템(40)은 디인터리버(400)가 입력 받는 데이터(buf_out0 내지 buf_out2)를 Z×m 비트의 데이터로 설계할 수 있다.
즉, 디인터리버 시스템(40)은 디인터리버(400)가 입력 받는 데이터(buf_out0 내지 buf_out2) 및 제2 버퍼(430)가 입력받는 데이터(deITLV_out0 내지 deLTLV_out2)의 비트 수(Z×m)를 디인터리버(400)의 최소 스위칭 단위(C2) 및 LDPC 복호기(450)의 입력 데이터 처리 단위(Z)의 공배수로 최적화할 수 있다.
이하, 도 3 및 도 4에 도시된 바와 같이 LDPC 복호기(450)의 입력 데이터 처리 단위(Z)는 96로 가정하고, 디인터리버(400)의 최소 스위칭 단위(C2)를 12로 가정하고 설명한다. 즉, 데이터는 1224×12 배열을 기준으로 인터리빙이 수행되어, 디인터리버(400)는 12×1224 배열을 기준으로 디인터리빙을 수행한다고 가정한다.
제1 버퍼(410)은 256비트의 입력 데이터(buf_int0 내지 buf_out2)를 입력 받아, 288비트의 출력 데이터(buf_out0 내지 buf_out2)를 디인터리버(400)로 출력할 수 있다. 즉, 제1 버퍼(410)는 디인터리버(400)의 최소 스위칭 단위(12 비트)의 24배수인 288 비트의 데이터(buf_out0 내지 buf_out2)를 디인터리버(400)로 출력한다.
도 3 및 도 4에서는 제1 버퍼(410)가 288 비트의 데이터(buf_out0 내지 buf_out2)를 디인터리버(400)로 출력하는 것으로 도시하였지만, 이에 한정되는 것은 아니고, 제1 버퍼(410)는 디인터리버(400)의 최소 스위칭 단위(이 경우, 12비트) 및 LDPC 복호기(450)의 입력 데이터 처리 단위(이 경우, 96비트)의 공배수에 해당하는 비트 수를 가진 데이터를 출력할 수 있다.
디인터리버(400)는 디인터리빙 스위치(510-1 내지 510-3), 및 레지스터(550-1 내지 550-3)을 포함한다.
디인터리빙 스위치(510-1 내지 510-3)는 12 비트의 데이터를 입력 받아서 스위칭을 진행하고, 다음 12 비트의 데이터를 입력 받아서 스위칭을 진행할 수 있으므로, 12의 24배수인 288 비트의 데이터(buf_out0 내지 buf_out2)를 입력 받아서 스위칭을 수행할 수 있다.
디인터리빙 스위치(510-1 내지 510-3)는 스위칭된 데이터를 레지스터(550-1 내지 550-3)로 출력할 수 있다.
레지스터(550-1 내지 550-3)는 스위칭된 데이터를 저장하고, 288 비트 단위의 데이터(deITLV_out0 내지 deITLV_out2)를 제2 버퍼(430)로 출력할 수 있다.
제2 버퍼(430)는 멀티플렉서(MUX)를 포함할 수 있어서, 288 비트의 스위칭된 데이터(deITLV_out0 내지 deITLV_out2)를 멀티플렉싱하여 96 비트의 데이터(deinterleaverOut0 내지 deinterleaverOut2)를 LDPC 복호기(450)으로 출력할 수 있다. 즉, 제2 버퍼(430)는 LDPC 복호기(450)의 입력 데이터 처리 단위(96 비트)에 해당하는 데이터(deinterleaverOut0 내지 deinterleaverOut2)를 LDPC 복호기(450)로 출력할 수 있다.
LDPC 복호기(430)는 입력 데이터 처리 단위(96 비트)에 해당하는 데이터(deinterleaverOut0 내지 deinterleaverOut2)의 오류를 교정할 수 있다.
디인터리버 시스템(40)은 디인터리버(400)의 앞단 및 뒷단에 각각 제1 버퍼(410) 및 제2 버퍼(430)를 장치하여, 제1 버퍼(410)는 디인터리빙 스위칭을 위한 최소 단위의 데이터 비트수를 가지는 데이터를 출력할 수 있고, 제2 버퍼(430)는 디인터리빙 스위칭 후에 LDPC 복호기(450)에 입력하기 위한 최소 단위 데이터에 맞춰서 디인터리버 출력 데이터 비트수를 변환할 수 있다.
디인터리버 시스템(40)은 디인터리빙을 위한 최소 단위의 데이터 비트를 기준으로 설계함으로써 디인터리빙을 위한 스위칭 및 배선의 수를 감소시킬 수 있다.
도 6은 인터리빙 동작을 설명하기 위한 도면이다.
인터리버(미도시)는 인터리빙 동작을 설명하기 위해, 인트리버(미도시)는 수행하고자 하는 1224×12 데이터 행렬을 행(row) 순으로 순차적으로 가상의 메모리에 저장하였다고 가정한다. 이때, 인트리버(미도시)는 저장된 데이터 행렬을 열(column) 순으로 읽어 나가는 방식으로 인터리빙을 수행할 수 있다.
도 6에 도시된 바와 같이, 인터리버(미도시)는 첫번째 1224비트(1 내지 1224)를 첫번째 행에 순차적으로 매핑시키고, 두번째 1224비트(1225 내지 2448)를 두번째 행에 순차적으로 매핑시킬 수 있다. 인터리버(미도시)는 동일한 방식으로 12번째 1224비트(13465 내지 14688)까지 12번째 행에 매핑시킬 수 있다.
인터리버(미도시)는 저장된 데이터 행렬을 열 순으로 읽어 인터리빙을 수행할 수 있다. 예를 들어, 인터리버(미도시)는 첫번째 열을 순차적으로 읽어 1, 1225, 2449, …, 12241, 13465 순서로 비트를 읽을 수 있고, 그 후 두번째 열부터 열두번째 열까지 순서대로 읽어 인터리빙을 수행할 수 있다.
도 7 및 도 8은 도 1에 도시된 디인터리버의 동작을 설명하기 위한 도면이고, 도 9는 도 4에 도시된 디인터리버의 동작을 설명하기 위한 도면이다.
디인터리빙 시스템(10 및 40)은 데이터 비트들은 12비트 간격으로 디인터리빙 과정을 수행하여 데이터 비트열을 복원시킬 수 있다.
디인터리빙 시스템(10 및 40)은 12×1224의 행렬에 해당하는 가상 메모리를 이용하여 인터리빙된 데이터를 복원할 수 있다.
먼저, 도 7 및 도 8을 참조하여, 종래의 디인터리빙 시스템(10)의 디인터리빙 동작을 설명한다.
디인터리버(130)은 14688(=12×1224) 비트의 데이터를 각 행에 2448(=12×204) 비트씩 순서대로 2448×6 크기의 제1 메모리(810)에 저장할 수 있다. 즉, 디인터리버(130)는 제1 메모리(810)의 하나의 행에 2448 비트의 데이터를 저장할 수 있다.
디인터리버(130)는 제1 메모리(810)의 하나의 행에서 12비트 간격으로 데이터를 추출하여 다시 1224×12 크기의 제2 메모리(830; 예를 들어, 가상 메모리)에 저장할 수 있다. 예를 들어, 디인터리버(130)는 제1 메모리(810)의 첫번째 행에서 추출된 204개의 데이터(1, 2, …, 204)를 제2 메모리(830)의 첫번째 행의 1번에서 204번까지 위치에 에 저장하고, 제1 메모리(810)의 두번째 행에서 추출된 204개(205, 206, …409)의 데이터를 순차적으로 제2 메모리(830)에 이어서 저장하는 순서로 진행하여, 제1 메모리(810)의 여섯 번째 행의 204개 데이터(1021, 1022, …, 1224)까지 제2 메모리(830)의 첫번째 행의 1021번부터 1224번까지 위치에 저장할 수 있다.
따라서, 디인터리버(130)는 제2 메모리(830)의 첫번째 행에, 인터리빙 이전의 데이터 순서로 1부터 1224까지의 데이터를 순서대로 저장할 수 있다.
디인터리버(130)는 1224×12 크기의 제2 메모리(930) 상에서 각 행을 순서대로 열두개의 행 모두 읽어 데이터 순서를 복원할 수 있다.
이하, 도 9을 참조하여, 디인터리빙 시스템(40)의 디인터리빙 동작을 설명한다.
디인터리버(400)는 LDPC 복호기(450)에 입력되는 데이터의 비트 수 단위에 기초한 비트 수의 데이터를 입력 받아 디인터리빙을 수행할 수 있다.
도 9에는 디인터리버(400)가 288 비트의 데이터를 입력 받는 것으로 도시하였지만, 이에 한정되는 것은 아니고, 디인터리버(400)의 최소 스위칭 단위(이 경우, 12비트) 및 LDPC 복호기(450)의 입력 데이터 처리 단위(이 경우, 96비트)의 공배수에 해당하는 비트 수를 가진 데이터를 입력 받을 수 있다.
디인터리버(400)는 입력 받은 288 비트의 데이터를 12 비트 간격으로 데이터를 선택(또는 추출)하여, 1×288의 데이터를 12×24 크기의 데이터 행렬로 변환(또는 재정렬)할 수 있다. 예를 들어, 디인터리버(400)는 288 비트의 데이터 중 12 비트 간격을 가지는 비트들을 12×24 크기를 가지는 새로운 메모리의 각 행으로 매핑할 수 있다.
디인터리버(400)는 입력 받는 288 비트의 데이터에 대해 순서대로 상술한 변환을 수행하여, 순서대로 제2 버퍼(430)에 저장할 수 있다. 예를 들어, 디인터리버(400)는 순서대로 입력 받은 288 비트의 제1 데이터 내지 제51 데이터를 12×24 크기의 제1 데이터 행렬 내지 제51 데이터 행렬로 변환하여 제2 버퍼(430)에 저장할 수 있다.
제2 버퍼(430)는 저장된 데이터 행렬의 각 행을 차례대로 출력할 수 있다. 예를 들어, 제2 버퍼(430)는 12×24 크기의 제1 데이터 행렬 내지 제51 데이터 행렬의 첫번째 행을 순서대로 출력한 뒤, 다시 제1 데이터 행렬 내지 제51 데이터 행렬의 두번째 행을 순서대로 출력할 수 있다. 제2 버퍼(430)는 제1 데이터 행렬 내지 제51 데이터 행렬의 열두번째 행까지 순서대로 출력하여 데이터를 복원할 수 있다.
종래의 디인터리빙 시스템(10)은 2448 비트 데이터를 여섯 개의 레지스터 저장하여, 한꺼번에 스위칭을 수행하기 때문에 2448×6의 스위칭을 위한 복잡한 배선이 필요한 반면, 디인터리빙 시스템(40)은 288비트 데이터를 24비트씩 12개로 나누어, 288 비트에 대한 스위칭을 수행하므로 배선 수를 획기적으로 줄일 수 있다.
표 1는 종래의 디인터리빙 시스템(10)을 FPGA에 설계하여 합성한 결과를 나타내고, 표 2는 디인터리빙 시스템(40)을 FPGA에 설계하여 합성한 결과를 나타낸다.
종래의 디인터리빙 시스템(10)의 경우, 디인터리버(130) 뿐만 아니라, 디인터리버(130)에서 처리하는 비트 수가 커짐에 따라서, 버퍼(110)에 저장하는 비트 수도 커져므로, 디인터리버 블록(130)과 함께 버퍼 블록(110)의 룩업테이블(LUT) 및 레지스터(Register)가 많이 소요된다.
디인터리빙 시스템(40)의 경우에는 디인터리버(400)의 설계가 간단해질 뿐만 아니라, 디인터리버(400)의 전단과 후단에 위치한 버퍼 블록(예를 들어, 제1 버퍼(410) 및 제2 버퍼(430))도 입출력 데이터 비트 수가 감소함에 따라서 LUT 및 Register 크기가 현저히 작아짐을 확인할 수 있다.
LUT Registers
디인터리버 블록 29,939 185,145
버퍼 블록 358,328 109,855
LUT Registers
디인터리버 블록 0 4,332
버퍼 블록 41,887 74,645
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.

Claims (19)

  1. 데이터를 제1 비트 수의 제1 데이터 블록들로 분할하는 단계;
    상기 제1 데이터 블록들에 대해 디인터리빙(deinterleaving)을 수행하는 단계; 및
    디인터리빙된 데이터를 제2 비트 수의 제2 데이터 블록들로 분할하여 출력하는 단계
    를 포함하고,
    상기 제1 비트 수는,
    상기 제1 데이터 블록들의 배열을 디인터리빙 스위칭할 때의 최소 스위칭 단위 및 상기 제2 비트 수에 기초하여 결정되는
    데이터 처리 방법.
  2. 제1항에 있어서,
    상기 제2 비트 수는,
    LDPC(Low Density Parity Check) 복호기의 입력 데이터 단위인 데이터 처리 방법.
  3. 제1항에 있어서,
    상기 제1 비트 수는
    상기 최소 스위칭 단위 및 상기 제2 비트 수의 공배수인
    데이터 처리 방법.
  4. 제1항에 있어서,
    상기 수행하는 단계는,
    상기 제1 데이터 블록들을 순서대로 입력하는 단계; 및
    입력된 각각의 데이터 블록을 상기 최소 스위칭 단위에 기초하여 재정렬하는 단계
    를 포함하는 데이터 처리 방법.
  5. 제4항에 있어서,
    상기 재정렬하는 단계는,
    상기 각각의 데이터 블록의 비트들 중 상기 최소 스위칭 단위의 간격을 가지는 비트들을 새로운 데이터 행렬의 각 행으로 매핑하는 단계
    를 포함하는 데이터 처리 방법.
  6. 제1항에 있어서,
    상기 데이터는,
    인터리빙(interleaving)이 수행된 데이터인 데이터 처리 방법.
  7. 삭제
  8. 삭제
  9. 삭제
  10. 데이터를 제1 비트 수의 제1 데이터 블록들로 분할하는 제1 버퍼;
    상기 제1 데이터 블록들에 대해 디인터리빙(deinterleaving)을 수행하는 디인터리버(deinterleaver); 및
    디인터리빙된 데이터를 제2 비트 수의 제2 데이터 블록들로 분할하여 출력하는 제2 버퍼;
    를 포함하고,
    상기 제1 비트 수는,
    상기 제1 데이터 블록들의 배열을 디인터리빙 스위칭할 때의 최소 스위칭 단위 및 상기 제2 비트 수에 기초하여 결정되는
    데이터 처리 장치.
  11. 제10항에 있어서,
    상기 제2 비트 수는,
    LDPC(Low Density Parity Check) 복호기의 입력 데이터 단위인 데이터 처리 장치.
  12. 제10항에 있어서,
    상기 제1 비트 수는,
    상기 최소 스위칭 단위 및 상기 제2 비트 수의 공배수인
    데이터 처리 장치.
  13. 제10항에 있어서,
    상기 디인터리버는,
    상기 제1 데이터 블록들을 순서대로 입력하고, 입력된 각각의 데이터 블록을 상기 최소 스위칭 단위에 기초하여 재정렬하는
    데이터 처리 장치.
  14. 제13항에 있어서,
    상기 디인터리버는,
    상기 각각의 데이터 블록의 비트들 중 상기 최소 스위칭 단위의 간격을 가지는 비트들을 새로운 데이터 행렬의 각 행으로 매핑하는
    데이터 처리 장치.
  15. 제10항에 있어서,
    상기 데이터는,
    인터리빙(interleaving)이 수행된 데이터인 데이터 처리 장치.
  16. 제10항에 있어서,
    상기 디인터리빙된 데이터를 복호화하는 복호기
    를 더 포함하는 데이터 처리 장치.
  17. 삭제
  18. 삭제
  19. 삭제
KR1020200041095A 2020-04-03 2020-04-03 디인터리빙 방법 및 이를 수행하는 디인터리빙 시스템 KR102478169B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200041095A KR102478169B1 (ko) 2020-04-03 2020-04-03 디인터리빙 방법 및 이를 수행하는 디인터리빙 시스템
US17/199,605 US11411583B2 (en) 2020-04-03 2021-03-12 Deinterleaving method and deinterleaving system performing the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200041095A KR102478169B1 (ko) 2020-04-03 2020-04-03 디인터리빙 방법 및 이를 수행하는 디인터리빙 시스템

Publications (2)

Publication Number Publication Date
KR20210123659A KR20210123659A (ko) 2021-10-14
KR102478169B1 true KR102478169B1 (ko) 2022-12-16

Family

ID=77921487

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200041095A KR102478169B1 (ko) 2020-04-03 2020-04-03 디인터리빙 방법 및 이를 수행하는 디인터리빙 시스템

Country Status (2)

Country Link
US (1) US11411583B2 (ko)
KR (1) KR102478169B1 (ko)

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5753806A (en) * 1980-09-16 1982-03-31 Toshiba Corp Processor of digital signal
US5392299A (en) * 1992-01-15 1995-02-21 E-Systems, Inc. Triple orthogonally interleaed error correction system
US5719875A (en) * 1996-06-11 1998-02-17 Lucent Technologies Inc. Systematic convolution interleavers and deinterleavers
US6381728B1 (en) * 1998-08-14 2002-04-30 Qualcomm Incorporated Partitioned interleaver memory for map decoder
KR100284411B1 (ko) * 1998-10-24 2001-03-02 김영환 아이엠디시티의 디인터리버
US6625763B1 (en) * 2000-07-05 2003-09-23 3G.Com, Inc. Block interleaver and de-interleaver with buffer to reduce power consumption
US7340664B2 (en) * 2000-09-20 2008-03-04 Lsi Logic Corporation Single engine turbo decoder with single frame size buffer for interleaving/deinterleaving
US7170849B1 (en) * 2001-03-19 2007-01-30 Cisco Systems Wireless Networking (Australia) Pty Limited Interleaver, deinterleaver, interleaving method, and deinterleaving method for OFDM data
KR100584426B1 (ko) 2001-12-21 2006-05-26 삼성전자주식회사 고속 패킷 이동통신시스템에서 심벌 매핑을 위한 인터리빙장치 및 방법
KR101168772B1 (ko) * 2005-09-14 2012-07-25 삼성전자주식회사 직교주파수분할다중접속방식의 이동통신 시스템에서버스트의 복호 장치 및 방법
KR100764011B1 (ko) 2005-12-10 2007-10-08 한국전자통신연구원 인터리빙 및 디인터리빙을 수행하는 저장 장치 및 그의제어 방법
US8112697B2 (en) * 2007-12-21 2012-02-07 Broadcom Corporation Method and apparatus for buffering an encoded signal for a turbo decoder
US8572332B2 (en) * 2008-03-28 2013-10-29 Qualcomm Incorporated De-interleaving mechanism involving a multi-banked LLR buffer
US8255768B2 (en) * 2009-09-25 2012-08-28 Stmicroelectronics, Inc. Interlaced iterative system design for 1K-byte block with 512-byte LDPC codewords
KR101776275B1 (ko) * 2014-02-19 2017-09-07 삼성전자주식회사 송신 장치 및 그의 인터리빙 방법
WO2015124107A1 (zh) 2014-02-20 2015-08-27 上海数字电视国家工程研究中心有限公司 Ldpc码字的交织映射方法及解交织解映射方法
US10361720B2 (en) 2014-05-22 2019-07-23 Electronics And Telecommunications Research Institute Bit interleaver for low-density parity check codeword having length of 16200 and code rate of 3/15 and 64-symbol mapping, and bit interleaving method using same
KR102287614B1 (ko) 2015-02-12 2021-08-10 한국전자통신연구원 길이가 64800이며, 부호율이 2/15인 ldpc 부호어 및 16-심볼 맵핑을 위한 비트 인터리버 및 이를 이용한 비트 인터리빙 방법
CA2965067C (en) 2016-04-26 2020-08-25 Electronics And Telecommunications Research Institute Apparatus for time interleaving and method using the same
US9819445B1 (en) * 2016-05-05 2017-11-14 Mbit Wireless, Inc. Method and apparatus for joint rate matching and deinterleaving
TWI601424B (zh) * 2016-06-13 2017-10-01 晨星半導體股份有限公司 時間解交錯電路與方法

Also Published As

Publication number Publication date
US11411583B2 (en) 2022-08-09
US20210314003A1 (en) 2021-10-07
KR20210123659A (ko) 2021-10-14

Similar Documents

Publication Publication Date Title
KR102601215B1 (ko) 폴라 코딩 장치
US8959418B1 (en) Forward error correction
US7607075B2 (en) Method and apparatus for encoding and decoding data
US10938735B2 (en) Time interleaver, time deinterleaver, time interleaving method, and time deinterleaving method
US20140101510A1 (en) Low Density Parity Check Layer Decoder For Codes With Overlapped Circulants
KR20110124659A (ko) 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서 계층적 복호 장치 및 방법
EP2712090A2 (en) Iterative detection and LDPC decoding with full and fractional local iterations
WO2004019268A1 (en) Methods and apparatus for encoding ldpc codes
US9473175B1 (en) Forward error correction decoder system
US8667377B1 (en) Circuit and method for parallel decoding
US9048873B2 (en) Systems and methods for multi-stage encoding of concatenated low density parity check codes
JP4064928B2 (ja) 繰り返し硬判定順方向誤り訂正復号化用の装置
CN109644009B (zh) 纠错解码装置以及光发送接收装置
KR102478169B1 (ko) 디인터리빙 방법 및 이를 수행하는 디인터리빙 시스템
US11876727B2 (en) Time interleaver, time deinterleaver, time interleaving method, and time deinterleaving method
JP6541916B2 (ja) 誤り訂正装置および誤り訂正方法
US8627168B2 (en) Decoding device and decoding method
KR101073636B1 (ko) 저밀도 패리티 검사 부호를 이용한 복호화 장치
US20220329261A1 (en) Decoding method, decoding device, control circuit, and program storage medium
KR101355633B1 (ko) 인코더 및 인코딩 방법
KR101760462B1 (ko) 터보 복호기 및 ldpc 복호기를 위한 다중 복호 방법 및 그 장치
US8977924B2 (en) Optimized mechanism to simplify the circulant shifter and the P/Q kick out for layered LDPC decoder

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