KR20090086237A - 고속 데이터 레이트들을 위한 터보 인터리버 - Google Patents

고속 데이터 레이트들을 위한 터보 인터리버 Download PDF

Info

Publication number
KR20090086237A
KR20090086237A KR1020097011329A KR20097011329A KR20090086237A KR 20090086237 A KR20090086237 A KR 20090086237A KR 1020097011329 A KR1020097011329 A KR 1020097011329A KR 20097011329 A KR20097011329 A KR 20097011329A KR 20090086237 A KR20090086237 A KR 20090086237A
Authority
KR
South Korea
Prior art keywords
code block
size
turbo interleaver
interleaver
turbo
Prior art date
Application number
KR1020097011329A
Other languages
English (en)
Other versions
KR101121284B1 (ko
Inventor
용빈 웨이
징 선
듀가 프라새드 말라디
Original Assignee
콸콤 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 콸콤 인코포레이티드 filed Critical 콸콤 인코포레이티드
Publication of KR20090086237A publication Critical patent/KR20090086237A/ko
Application granted granted Critical
Publication of KR101121284B1 publication Critical patent/KR101121284B1/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
    • 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/2771Internal interleaver for turbo codes
    • H03M13/2775Contention or collision free turbo code internal interleaver
    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding
    • H03M13/296Particular turbo code structure
    • 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/6561Parallelized implementations

Abstract

높은 디코딩 스루풋을 효율적으로 지원하는 기술들이 설명된다. 송신기는 터보 인코더로 데이터 비트들의 코드 블록을 인코딩할 수 있다. 수신기는 다수의 소프트 입력 소프트 출력(SISO) 디코더를 구비한 터보 디코더로 코드 블록에 대한 디코딩을 수행할 수 있다. 코드 블록 크기가 임계 크기보다 크다면 비경쟁 터보 인터리버가 사용될 수 있다. 코드 블록 크기가 임계 크기보다 작거나 같다면 정규 터보 인터리버가 사용될 수 있다. 비경쟁 터보 인터리버는 인터리빙 또는 디인터리빙 후 각 기록 사이클에서 다수의 SISO 디코더들로부터의 정보가 메모리 액세스 경쟁에 부닥치지 않고 다수의 저장 유닛에 병렬로 기록될 수 있도록 코드 블록의 데이터 비트들을 재정렬한다. 정규 터보 인터리버는 비경쟁 메모리 액세스에 상관없이 임의의 방식으로 코드 블록의 데이터 비트들을 재정렬할 수 있다.

Description

고속 데이터 레이트들을 위한 터보 인터리버{TURBO INTERLEAVER FOR HIGH DATA RATES}
본 출원은 "A METHOD AND APPARATUS FOR CONTENTION FREE TURBO INTERLEAVER"라는 명칭으로 2006년 11월 1일자 제출된 미국 예비 출원 60/863,962호에 대한 우선권을 주장하며, 이 출원은 본원의 양수인에게 양도되었고 본원에 참조로 포함된다.
본 개시는 일반적으로 통신에 관한 것으로, 보다 구체적으로는 인코딩 및 디코딩 기술에 관한 것이다.
무선 통신 시스템들은 음성, 비디오, 패킷 데이터, 메시징, 방송 등과 같은 다양한 통신 콘텐츠를 제공하도록 광범위하게 전개된다. 이들 무선 시스템은 이용 가능한 시스템 자원들을 공유함으로써 다수의 사용자를 지원할 수 있는 다중 액세스 시스템들일 수 있다. 이러한 다중 액세스 시스템들의 예는 코드 분할 다중 액세스(CDMA) 시스템, 시분할 다중 액세스(TDMA) 시스템, 주파수 분할 다중 액세스(FDMA) 시스템, 직교 FDMA(OFDMA) 시스템 및 단일 반송파 FDMA(SC-FDMA) 시스템을 포함한다.
보다 새로운 무선 통신 시스템들은 높은 데이터 스루풋을 달성하기 위해 넓 은 대역폭 및/또는 다중 입력 다중 출력(MIMO) 동작을 지원할 수 있다. 넓은 대역폭 및 MIMO 능력을 가진 사용자 장비(UE)는 매우 높은 피크 데이터 레이트를 지원할 필요가 있을 수도 있다. 예를 들어, 4×4 MIMO 구성을 갖는 20㎒ 시스템에서 UE에 대한 피크 데이터 레이트는 200+ 메가비트/초(Mbps)만큼 높을 수도 있다. 따라서 보통 UE에서의 수신기 처리의 장애가 되는 UE의 디코딩 용량은 이러한 높은 피크 데이터 레이트를 지원하도록 설계되어야 한다.
높은 디코딩 스루풋을 효율적으로 지원하는 기술들이 설명된다. 송신기(예를 들어, 기지국)는 다수의 구성 인코더 및 하나의 코드 인터리버를 구비한 터보 인코더로 데이터 비트들의 코드 블록을 인코딩할 수 있다. 수신기(예를 들어, UE)는 적어도 하나의 소프트 입력 소프트 출력(SISO) 디코더, 적어도 하나의 코드 인터리버 및 적어도 하나의 코드 디인터리버를 구비한 터보 디코더로 코드 블록에 대한 디코딩을 수행할 수 있다. 수신기는 높은 디코딩 스루풋을 달성하기 위해 코드 블록의 서로 다른 세그먼트에 대해 병렬로 동작하는 다수의 SISO 디코더를 이용할 수 있다. 다수의 SISO 디코더는 다수의 코드 인터리버, 다수의 코드 디인터리버 및 다수의 저장 유닛과 함께 동작할 수 있다.
코드 블록의 데이터 비트들은 터보 인터리버를 기반으로 인터리빙(즉, 재정렬 또는 셔플링)될 수 있다. 터보 인터리버는 코드 블록의 데이터 비트들이 어떻게 재정렬되어야 하는지를 특정하는 매핑 또는 함수이다. 터보 인코더의 코드 인터리버는 터보 인터리버를 기반으로 동작한다. 마찬가지로, 터보 디코더의 단일 또는 다수의 코드 인터리버는 터보 인터리버를 기반으로 동작하고, 터보 디코더의 단일 또는 다수의 코드 디인터리버는 터보 인터리버의 역을 기반으로 동작한다.
한 형태에서, 코드 블록 크기가 임계 크기보다 크다면 "비경쟁(contention-free)" 터보 인터리버가 사용될 수 있고, 코드 블록 크기가 임계 크기보다 작거나 같다면 "정규" 터보 인터리버가 사용될 수 있다. 비경쟁 터보 인터리버는 인터리빙 또는 디인터리빙 후 각 기록 사이클에서 다수의 SISO 디코더들로부터의 정보가 다수의 저장 유닛의 메모리 액세스 경쟁에 부닥치지 않고 이들 저장 유닛에 병렬로 기록될 수 있도록 코드 블록의 데이터 비트들을 재정렬하는 매핑 또는 함수이다. 정규 터보 인터리버는 터보 디코더에서 비경쟁 메모리 액세스에 상관없이 임의의 방식으로 코드 블록의 데이터 비트들을 재정렬할 수 있는 매핑 또는 함수이다. 큰 코드 블록 크기들은 높은 디코딩 스루풋을 필요로 하는 큰 데이터 페이로드들에 사용될 수 있는 반면, 작은 코드 블록 크기들은 작은 데이터 페이로드들에 사용될 수 있다. 다수의 SISO 디코더는 큰 코드 블록 크기들(예를 들어, 임계 크기보다 큰 것들)에 사용될 수 있고 비경쟁 터보 인터리버의 사용으로부터 이익을 얻을 수 있다.
송신기는 코드 블록 크기가 임계 크기보다 크다면 다수의 구성 인코더 및 비경쟁 터보 인터리버를 기반으로 코드 블록에 대한 터보 인코딩을 수행할 수 있다. 송신기는 코드 블록 크기가 임계 크기보다 작거나 같다면 다수의 구성 인코더 및 정규 터보 인터리버를 기반으로 코드 블록에 대한 터보 인코딩을 수행할 수 있다.
수신기는 코드 블록 크기가 임계 크기보다 크다면 다수의 SISO 디코더 및 비경쟁 터보 인터리버를 기반으로 코드 블록에 대한 터보 디코딩을 수행할 수 있다. 수신기는 코드 블록 크기가 임계 크기보다 작거나 같다면 적어도 하나의 SISO 디코더 및 정규 터보 인터리버를 기반으로 코드 블록에 대한 터보 디코딩을 수행할 수 있다.
본 개시의 다양한 형태 및 특징은 뒤에 더 상세히 설명한다.
도 1은 기지국 및 UE의 블록도를 나타낸다.
도 2는 송신(TX) 데이터 프로세서의 블록도를 나타낸다.
도 3은 터보 인코더의 블록도를 나타낸다.
도 4는 수신(RX) 데이터 프로세서의 블록도를 나타낸다.
도 5는 터보 디코더의 블록도를 나타낸다.
도 6은 하나의 SISO 디코더를 구비한 터보 디코더의 블록도를 나타낸다.
도 7은 다수의 SISO 디코더를 구비한 터보 디코더의 블록도를 나타낸다.
도 8은 데이터 페이로드에 대한 코드 블록 크기의 도표를 나타낸다.
도 9는 디더링된 상대 소수(DRP) 인터리버의 연산을 나타낸다.
도 10은 구성 가능한 터보 디코더의 블록도를 나타낸다.
도 11은 데이터를 처리하기 위한 프로세스의 설계를 나타낸다.
도 12는 데이터를 처리하기 위한 장치의 설계를 나타낸다.
여기서 설명하는 기술들은 CDMA, TDMA, FDMA, OFDMA, SC-FDMA 및 다른 시스 템들과 같은 다양한 무선 통신 시스템에 사용될 수 있다. "시스템"과 "네트워크"라는 용어는 종종 교환할 수 있게 사용된다. CDMA 시스템은 범용 지상 무선 액세스(UTRA), cdma2000 등과 같은 무선 기술을 구현할 수 있다. UTRA는 광대역-CDMA(W-CDMA) 및 저속 칩(LCR)을 포함한다. cdma2000은 IS-2000, IS-95 및 IS-856 표준을 커버한다. TDMA 시스템은 글로벌 이동 통신 시스템(GSM)과 같은 무선 기술을 구현할 수 있다. OFDMA 시스템은 E-UTRA(Evolved UTRA), UMB(Ultra Mobile Broadband), IEEE 802.11(Wi-Fi), IEEE 802.16(WiMAX), IEEE 802.20, Flash-OFDM
Figure 112009033043185-PCT00001
등과 같은 무선 기술을 구현할 수 있다. UTRA, E-UTRA 및 GSM은 범용 이동 통신 시스템(UMTS)의 일부이다. 3GPP LTE(Long Term Evolution)는 E-UTRA를 이용하는 UMTS의 공개될 배포이며, E-UTRA는 다운링크에는 OFDMA를 업링크에는 SC-FDMA를 이용한다. UTRA, E-UTRA, GSM, UMTS 및 LTE는 "3세대 파트너쉽 프로젝트"(3GPP)라는 명칭의 기구로부터의 문헌들에 기술되어 있다. cdma2000 및 UMB는 "3세대 파트너쉽 프로젝트 2"(3GPP2)라는 명칭의 기구로부터의 문헌들에 기술되어 있다. 이러한 기술들은 무선 근거리 통신망(WLAN)에 사용될 수도 있으며, 이는 IEEE 802.11 표준군, Hiperlan 등으로 임의의 무선 기술을 구현할 수 있다. 이러한 다양한 무선 기술 및 표준은 공지되어 있다. 간결성을 위해, 하기에서 상기 기술들의 특정 형태들은 LTE에 대해 설명되고, LTE 기술이 하기 설명의 일부에 사용된다.
상기 기술들은 UE뿐 아니라 기지국에도 사용될 수 있다. UE는 이동국, 단말, 액세스 단말, 가입자 유닛, 스테이션 등으로도 지칭될 수 있다. UE는 셀룰러폰, 개인 디지털 보조기기(PDA), 무선 통신 디바이스, 무선 모뎀, 핸드헬드 디바이 스, 랩탑 컴퓨터, 무선 전화기 등일 수 있다. UE는 다운링크 및 업링크를 통한 송신들에 의해 하나 이상의 기지국과 통신할 수 있다. 기지국은 또한 노드 B, 진화된 노드 B(eNB), 액세스 포인트 등으로도 지칭될 수 있다.
상기 기술들은 단일 입력 단일 출력, 단일 입력 다중 출력, 다중 입력 단일 출력, 및/또는 다중 입력 다중 출력(MIMO) 송신에 사용될 수 있다. 단일 입력은 데이터 송신을 위한 하나의 송신 안테나에 관련되고 다중 입력은 데이터 송신을 위한 다수의 송신 안테나에 관련된다. 단일 출력은 데이터 수신을 위한 하나의 수신 안테나에 관련되고 다중 입력은 데이터 수신을 위한 다수의 수신 안테나에 관련된다.
도 1은 무선 통신 시스템에서 기지국(110) 및 UE(150) 설계의 블록도를 나타낸다. 기지국(110)은 데이터 송신 및 수신에 사용될 수 있는 다수(T)의 안테나(134a-134t)를 구비한다. UE(150)는 데이터 송신 및 수신에 사용될 수 있는 다수(R)의 안테나(152a-152t)를 구비한다. 각 안테나는 물리적 안테나 또는 안테나 어레이일 수 있다.
기지국(110)에서, 송신(TX) 데이터 프로세서(120)는 데이터 소스(112)로부터 트래픽 데이터를 수신하고, 전송 포맷을 기초로 트래픽 데이터를 처리(예를 들어, 포맷화, 인코딩, 인터리빙 및 심벌 매핑)하여 데이터 심벌들을 제공할 수 있다. 여기서 사용되는 바와 같이, 데이터 심벌은 데이터에 대한 변조 심벌이고, 파일럿 심벌은 파일럿에 대한 심벌이며, 심벌은 통상적으로 복소값이다. 데이터 심벌들 및 파일럿 심벌들은 PSK 또는 QAM과 같은 변조 방식으로부터의 변조 심벌들일 수 있다. 파일럿은 송신기와 수신기 둘 다에 의해 연역적으로 알려지는 데이터일 수 있다. 전송 포맷은 코드 블록 크기, 변조 및 코딩 방식 등을 나타낼 수 있다. 전송 포맷은 또한 레이트, 패킷 포맷 등을 지칭할 수 있다.
TX MIMO 프로세서(130)는 데이터 심벌들을 파일럿 심벌들과 다중화할 수 있고, 직접 MIMO 매핑, 프리코딩/빔 형성 등을 수행할 수 있다. 심벌은 직접 MIMO 매핑의 경우 하나의 안테나로부터 또는 프리코딩/빔 형성의 경우 다수의 안테나로부터 전송될 수 있다. 프로세서(130)는 T개의 송신기(TMTR; 132a-132t)에 T개의 출력 칩 스트림을 제공할 수 있다. 각 송신기(132)는 (예를 들어, OFDM, SC-FDM, CDMA 등에 대한) 출력 심벌 스트림을 처리하여 출력 칩 스트림을 생성할 수 있다. 각 송신기(132)는 출력 칩 스트림을 추가 조정(예를 들어, 아날로그로 변환, 필터링, 증폭 및 상향 변환)하여 다운링크 신호를 생성할 수 있다. 송신기(132a-132t)로부터의 T개의 다운링크 신호는 각각 T개의 안테나(134a-134t)로부터 전송될 수 있다.
UE(150)에서, R개의 안테나(152a-152r)가 다운링크 신호들을 수신할 수 있고 각 안테나(152)는 수신 신호를 각각의 수신기(RCVR; 154)에 제공할 수 있다. 각 수신기(154)는 수신 신호를 처리(예를 들어, 필터링, 증폭, 하향 변환 및 디지털화)하여 샘플들을 얻을 수 있고, (예를 들어, OFDM, SC-FDM, CDMA 등에 대한) 샘플들을 추가 처리하여 수신 심벌들을 얻을 수 있다. 수신기(154a-154r)는 수신된 데이터 심벌들을 MIMO 검출기(160)에 제공할 수 있으며 수신된 파일럿 심벌들을 채널 프로세서(194)에 제공할 수 있다. 채널 프로세서(194)는 수신된 파일럿 심벌들을 기초로 다운링크 채널 응답을 추정하여 채널 응답 추정치들을 MIMO 검출기(160)에 제공할 수 있다. MIMO 검출기(160)는 채널 추정치들을 갖는 수신 데이터 심벌들에 대해 MIMO 검출을 수행하여 데이터 심벌 추정치들을 제공할 수 있다. 수신(RX) 데이터 프로세서(170)는 데이터 심벌 추정치들을 추가 처리(예를 들어, 심벌 디매핑, 디인터리빙 및 디코딩)하여 디코딩된 데이터를 데이터 싱크(172)에 제공한다. 일반적으로, MIMO 검출기(160) 및 RX 데이터 프로세서(170)에 의한 처리는 기지국(110)에서의 TX MIMO 프로세서 및 TX 데이터 프로세서(120)에 의한 처리와 상보적이다.
UE(150)는 채널 조정을 평가하여 기지국(110)으로 피드백 정보를 전송할 수 있다. 피드백 정보는 병렬로 전송할 데이터 스트림 또는 레이어 수를 나타내는 MIMO 랭크, 채널 품질 표시자(CQI)들 및/또는 다른 정보를 포함할 수 있다. 데이터 소스(180)로부터의 피드백 정보 및 트래픽 데이터는 TX 데이터 프로세서(182)에 의해 처리되고, TX MIMO 프로세서(184)에 의해 파일럿 심벌들과 다중화되고 처리되며, 송신기(154a-154r)에 의해 추가 처리되어 R개의 업링크 신호를 생성할 수 있으며, 이는 안테나(152a-152r)를 통해 전송될 수 있다.
기지국(110)에서, 업링크 신호들은 T개의 안테나(134a-134t)에 의해 수신되고, 수신기(132a-132t)에 의해 처리되며, MIMO 검출기(136)에 의해 검출되고, RX 데이터 프로세서(138)에 의해 추가 처리되어 UE(150)에 의해 전송된 피드백 정보 및 트래픽 데이터를 복원할 수 있다. 제어기/프로세서(140)는 피드백 정보를 기초로 UE(150)로의 데이터 송신을 제어할 수 있다. 채널 프로세서(144)는 수신된 파 일럿 심벌들을 기초로 업링크 채널 응답을 추정하여 채널 추정치들을 제공할 수 있으며, 이는 MIMO 처리 또는 검출에 사용될 수 있다.
제어기/프로세서(140, 190)는 각각 기지국(110) 및 UE(150)에서의 동작을 지시할 수 있다. 메모리(142, 192)는 각각 기지국(110) 및 UE(150)에 대한 프로그램 코드들 및 데이터를 저장할 수 있다.
도 2는 TX 데이터 프로세서(120) 설계의 블록도를 나타내며, 이는 도 1의 TX 데이터 프로세서(182)에 사용될 수도 있다. TX 데이터 프로세서(120) 내에서, 분할 유닛(210)은 전송할 데이터를 수신하여 데이터를 선택된 코드 블록 크기의 코드 블록들로 분할한다. 코드 블록은 데이터 블록, 전송 블록, 패킷 등으로도 지칭될 수 있다. 각 코드 블록은 개별적으로 인코딩 및 디코딩될 수 있다. 순환 중복 검사(CRC) 생성기(220)는 코드 블록마다 CRC 값을 생성하여 코드 블록에 CRC 값을 첨부할 수 있다. CRC 값은 코드 블록이 정확히 디코딩되는지 잘못 디코딩되는지를 결정하기 위해 수신기에 의해 사용될 수 있다. 터보 인코더(230)는 선택된 코드 레이트를 기초로 각 코드 블록을 인코딩하여 인코딩된 블록을 제공할 수 있다. 레이트 매칭 & 채널 인터리버(240)는 인코딩된 블록에 대해 터보 인코더(230)로부터의 코드 비트들의 서브세트를 선택할 수 있고, 선택된 코드 비트들을 인터리빙하여 인터리빙된 블록을 제공할 수 있다. 레이트 매칭 & 인터리빙은 코드 비트들에 대한 시간, 주파수 및/또는 공간 다이버시티를 제공할 수 있다. 심벌 매퍼(250)는 인터리빙된 비트들을 선택된 변조 방식을 기초로 데이터 심벌들에 매핑할 수 있다. 선택된 코드 블록 크기, 코드 레이트 및 변조 방식은 전송 포맷을 기초로 결정될 수 있으며, 전송 포맷은 채널 상태, UE 용량, 시스템 자원들의 가용성 등을 기초로 선택될 수 있다.
도 3은 도 2의 터보 인코더(230) 설계의 블록도를 나타낸다. 터보 인코더(230)는 병렬 연결 컨볼루션 코드(PCCC)를 구현하며, 2개의 구성 인코더(310a, 310b), 코드 인터리버(320) 및 펑처 및 다중화(Mux) 유닛(330)을 포함한다. 터보 인코더(230)는 N개의 데이터 비트로 이루어진 코드 블록을 인코딩하여 S개의 코드 비트로 이루어진 대응하는 인코딩된 블록을 제공하며, 여기서 N과 S는 임의의 적당한 값일 수 있다.
터보 인코더(230) 내에서, 코드 인터리버(320)는 선택된 터보 인터리버를 기반으로 코드 블록의 (x로 표기한) 데이터 비트들을 인터리빙 또는 재정렬할 수 있으며, 터보 인터리버는 후술하는 바와 같이 비경쟁 터보 인터리버 또는 정규 터보 인터리버일 수 있다. 구성 인코더(310a)는 제 1 구성 코드를 기초로 데이터 비트들을 인코딩하여 (y로 표기한) 제 1 패리티 비트들을 제공할 수 있다. 마찬가지로, 구성 인코더(310b)는 제 2 구성 코드를 기초로 코드 인터리버(320)로부터의 인터리빙된 데이터 비트들을 인코딩하여 (z로 표기한) 제 2 패리티 비트들을 제공할 수 있다. 구성 인코더(310a, 310b)는 2개의 귀납적 시스템적 구성 코드를 구현할 수 있으며, 이는 컨볼루션 코드일 수 있다. 유닛(330)은 구성 인코더(310a, 310b)로부터 데이터 비트들 및 패리티 비트들을 수신할 수 있고, 선택된 코드 레이트를 기초로 충분한 수의 비트를 삭제하여 원하는 수의 비트를 얻을 수 있다. 유닛(330)은 삭제되지 않은 데이터 비트들과 패리티 비트들을 다중화하여 인코딩된 블록에 대한 코딩된 비트들을 제공할 수 있다. 코딩된 비트들은 제 1 패리티 비트들이 이어진 다음 제 2 패리티 비트들이 이어지는 (시스템적 비트들로도 지칭되는) 데이터 비트들을 포함할 수 있다.
도 4는 RX 데이터 프로세서(170) 설계의 블록도를 나타내며, 이는 도 1의 RX 데이터 프로세서(138)에 사용될 수도 있다. RX 데이터 프로세서(170) 내에서, 로그 우도비(LLR) 계산 유닛(410)은 MIMO 검출기(160)로부터 데이터 심벌 추정치들을 수신하여 각 데이터 심벌 추정치에 대한 코드 비트들의 LLR을 계산할 수 있다. B개의 코드 비트를 단일 성상도의 복소값에 매핑함으로써 데이터 심벌이 얻어질 수 있다. 데이터 심벌의 B개의 코드 비트에 대해 대응하는 데이터 심벌 추정치를 기초로 B개의 LLR이 계산될 수 있다. 각 코드 비트에 대한 LLR은 해당 코드 비트에 대한 데이터 심벌 추정치가 '0' 또는 '1'로 주어질 코드 비트의 확률을 나타낼 수 있다. 채널 디인터리버 & 디레이트(de-rate) 매칭 유닛(420)은 도 2의 유닛(240)에 의한 인터리빙 및 레이트 매칭과 상보적인 방식으로 유닛(410)으로부터의 LLR들에 대한 디인터리빙 및 디레이트 매칭을 수행하여 입력 LLR들을 제공할 수 있다. 터보 디코더(430)는 채널 디인터리버(420)로부터의 입력 LLR들의 각 블록을 디코딩하여 디코딩된 블록을 제공할 수 있다. CRC 검사기(440)는 디코딩된 각 블록을 검사하여 해당 블록에 대한 디코딩 상태를 제공할 수 있다. 어셈블러(450)는 디코딩된 블록들을 어셈블링하여 디코딩된 데이터를 제공할 수 있다.
도 5는 터보 디코더(430a) 설계의 블록도를 나타내며, 이는 도 4의 터보 디코더(430)에 사용될 수도 있다. 터보 디코더(430a) 내에서, 디멀티플렉서(Demux; 510)는 코드 블록에 대한 입력 LLR들을 수신하여 입력 LLR들을 데이터 비트들(x)에 대한 LLR들(X), 제 1 패리티 비트들(y)에 대한 LLR들(Y), 제 2 패리티 비트들(z)에 대한 LLR들(Z)로 역다중화할 수 있다. SISO 디코더(520a)는 디멀티플렉서(510)로부터 데이터 비트 LLR들(X) 및 제 1 패리티 비트 LLR들(Y)을 수신하고 코드 디인터리버(540)로부터 디인터리빙된 데이터 비트 LLR들(X2)을 수신할 수 있다. SISO 디코더(520a)는 제 1 구성 코드를 기초로 데이터 비트들에 대한 새로운 LLR들(X1)을 유도할 수 있다. 코드 인터리버(530)는 (도 3의 코드 인터리버(320)에 사용되는) 선택된 터보 인터리버를 기반으로 데이터 비트 LLR들(X1)을 인터리빙하여 인터리빙된 데이터 비트 LLR들(
Figure 112009033043185-PCT00002
)을 제공할 수 있다. SISO 디코더(520b)는 디멀티플렉서(510)로부터 데이터 비트 LLR들(X) 및 제 2 패리티 비트 LLR들(Y)을 수신하고 코드 인터리버(530)로부터 인터리빙된 데이터 비트 LLR들(
Figure 112009033043185-PCT00003
)을 수신할 수 있습니다. SISO 디코더(520b)는 제 2 구성 코드를 기초로 데이터 비트들에 대한 새로운 LLR들(
Figure 112009033043185-PCT00004
)을 유도할 수 있다. 코드 디인터리버(540)는 선택된 터보 인터리버의 역을 기초로 데이터 비트 LLR들(
Figure 112009033043185-PCT00005
)을 디인터리빙하여 디인터리빙된 데이터 비트 LLR들(X2)을 제공할 수 있다.
SISO 디코더(520a, 520b)는 BCJR MAP 알고리즘 또는 낮은 복잡도의 도함수를 구현할 수 있는 최대 사후 확률(MAP: maximum a posteriori) 디코더일 수 있다. SISO 디코더(520a, 520b)는 소프트 출력 비터비(SOV) 알고리즘 또는 공지된 다른 어떤 디코딩 알고리즘을 구현할 수도 있다.
SISO 디코더(520a, 520b)에 의한 디코딩은 여러 번, 예를 들어 6, 8, 10 또는 그 이상 반복될 수 있다. 디코딩 결과들은 각각의 반복 후 신뢰성이 더 커질 수 있다. 모든 디코딩 반복이 완료된 후 디코더(560)는 SISO 디코더(520a)로부터 최종 데이터 비트 LLR들을 수신하고, 각 LLR에 대한 하드 결정을 하여 디코딩된 비트들을 제공할 수 있다.
SISO 디코더(520a, 520b)는 직렬로 동작할 수 있으며, 하나의 SISO 디코더로부터의 외부 정보가 다른 SISO 디코더에 대한 입력으로서 제공된다. 2개의 SISO 디코더의 직렬 동작 때문에 두 SISO 디코더(520a, 520b)를 구현하는데 하나의 물리적 SISO 디코더가 사용될 수 있다.
도 6은 터보 디코더(430b)의 블록도를 나타내며, 이는 도 5의 터보 디코더(430a)의 한 설계이다. 터보 디코더(430b) 내에서, 디멀티플렉서(610)는 코드 블록에 대한 입력 LLR들을 수신하여 입력 LLR들을 제 1 구성 코드에 대한 LLR들(U) 및 제 2 구성 코드에 대한 LLR들(V)로 역다중화할 수 있다. LLR들(U)은 데이터 비트 LLR들(X) 및 제 1 패리티 비트 LLR들(Y)을 포함할 수 있다. LLR들(V)은 데이터 비트 LLR들(X) 및 제 2 패리티 비트 LLR들(Z)을 포함할 수 있다.
제 1 구성 코드에 대해, SISO 디코더(620)는 디멀티플렉서(610)로부터 데이터 비트 LLR들(U)을 수신하고 저장 유닛(650)으로부터 LLR들(X2)을 수신하여 새로운 LLR들(X1)을 유도할 수 있다. 코드 인터리버(630)는 선택된 터보 인터리버를 기반 으로 LLR들(X1)을 인터리빙하여 인터리빙된 LLR들(
Figure 112009033043185-PCT00006
)을 저장 유닛(650)에 제공할 수 있다. 제 2 구성 코드에 대해, SISO 디코더(620)는 디멀티플렉서(610)로부터 LLR들(V)을 수신하고 저장 유닛(650)으로부터 LLR들(
Figure 112009033043185-PCT00007
)을 수신하여 새로운 LLR들(
Figure 112009033043185-PCT00008
)을 유도할 수 있다. 코드 디인터리버(640)는 선택된 터보 인터리버의 역을 기초로 LLR들(
Figure 112009033043185-PCT00009
)을 디인터리빙하여 디인터리빙된 LLR들(X2)을 저장 유닛(650)에 제공할 수 있다. 저장 유닛(650)은 (ⅰ) SISO 디코더(620)로부터의 LLR들(X1)을 인터리빙된 순서로 저장함으로써 코드 인터리버(630)를 구현하고 (ⅱ) SISO 디코더(620)로부터의 LLR들(
Figure 112009033043185-PCT00010
)을 디인터리빙된 순서로 저장함으로써 코드 디인터리버(640)를 구현할 수 있다. 코드 인터리빙 및 디인터리빙은 저장 유닛(650)에 대한 적절한 어드레스들을 생성함으로써 이루어질 수 있다. 검출기(660)는 모든 디코딩 반복이 완료된 후 최종 데이터 비트 LLR들을 수신하여 디코딩된 비트들을 제공할 수 있다.
UE(150)는 넓은 대역폭 및/또는 MIMO 용량을 가질 수 있으며, 매우 높은 피크 데이터 레이트, 예를 들어 200+ Mbps를 지원할 필요가 있을 수도 있다. UE(150)의 디코딩 용량은 장애일 수 있다. 병렬 SISO 디코더들을 가진 높은 용량의 터보 디코더가 높은 피크 데이터 레이트를 지원하는데 사용될 수 있다.
터보 인코더는 N개의 데이터 비트로 이루어진 코드 블록을 인코딩하여 S개의 코드 비트들로 이루어진 인코딩된 블록을 생성할 수 있으며, 여기서 S는 코드 레이 트(R)에 좌우되고, 또는 R = N/S이다. 병렬 SISO 디코더들을 가진 터보 디코더는 코드 블록의 N개의 데이터 비트에 대한 N개의 트랜지션의 전체 격자를 M개의 세그먼트로 분할할 수 있다. 각 세그먼트는 K개의 트랜지션의 하나의 격자 윈도우를 커버할 수 있으며, 따라서 M = N/K이다. 각 세그먼트는 개별 SISO 디코더에 의해 처리될 수 있다. M개의 SISO 디코더가 M개의 세그먼트에 대한 디코딩을 병렬로 수행할 수 있다.
도 7은 터보 디코더(430c) 설계의 블록도를 나타내며, 이는 도 4의 터보 디코더(430)에 사용될 수 있다. 터보 디코더(430c)는 디멀티플렉서(710) 및 M개의 병렬 세그먼트 디코더(712a-712m)를 포함한다. 각 세그먼트 디코더(712)는 SISO 디코더(720), 코드 인터리버(730), 코드 디인터리버(740) 및 저장 유닛(750)을 포함한다.
터보 디코더(430c) 내에서, 디멀티플렉서(710)는 코드 블록에 대한 입력 LLR들을 수신하여 각 세그먼트(m)에 대한 LLR들(Um, Vm)로 역다중화할 수 있으며, 여기서 m ∈ {1, … , M}이다. LLR들(Um)은 세그먼트(m)에 대한 제 1 구성 코드의 데이터 비트 LLR들(Xm) 및 제 1 패리티 비트 LLR들(Ym)을 포함할 수 있다. LLR들(Vm)은 세그먼트(m)에 대한 제 2 구성 코드의 데이터 비트 LLR들(Xm) 및 제 2 패리티 비트 LLR들(Zm)을 포함할 수 있다. 디멀티플렉서(710)는 각 입력 LLR을 하나의 세그먼트 디코더(712)에 제공할 수 있다.
세그먼트(m)에 대한 세그먼트 디코더(712) 내에서, SISO 디코더(720)는 임의의 소정 순간에 제 1 또는 제 2 구성 코드에 대한 디코딩을 수행할 수 있다. 제 1 구성 코드에 대해, SISO 디코더(720)는 디멀티플렉서(710)로부터 LLR들(Um)을 수신하고 저장 유닛(750)으로부터 LLR들(Xm2)을 수신하여 새로운 LLR들(Xm1)을 유도할 수 있다. 코드 인터리버(730)는 LLR들(Xm1)을 인터리빙하여 인터리빙된 LLR들(
Figure 112009033043185-PCT00011
)을 저장 유닛(750)에 제공할 수 있다. 제 2 구성 코드에 대해, SISO 디코더(720)는 디멀티플렉서(710)로부터 LLR들(Vm)을 수신하고 저장 유닛(750)으로부터 LLR들(
Figure 112009033043185-PCT00012
)을 수신하여 새로운 LLR들(
Figure 112009033043185-PCT00013
)을 유도할 수 있다. 코드 디인터리버(740)는 LLR들(
Figure 112009033043185-PCT00014
)을 디인터리빙하여 디인터리빙된 LLR들(Xm2)을 저장 유닛(750)에 제공할 수 있다. 저장 유닛(750)은 코드 인터리버(730)와 코드 디인터리버(740)를 모두 구현할 수 있다.
제 1 구성 코드의 디코딩의 경우, 입력 LLR들(또는 입력 APP들)은 원래의 순서이다. 세그먼트(m)에 대해, 입력 LLR들은 코드 블록에서 데이터 비트들(Km, Km+1, … , K(m+1)-1)에 대응한다. 제 2 구성 코드의 디코딩의 경우, 입력 LLR들은 원래의 순서가 아니다. 세그먼트(m)에 대해, 입력 LLR들은 코드 블록에서 데이터 비트들(π(Km), π(Km+1), … , π(K(m+1)-1))에 대응하며, π(x)는 x 위치의 데이터 비트를 π(x) 위치에 매핑하는 선택된 터보 인터리버에 대한 매핑 함수를 나타낸다.
코드 인터리버(730a-730m)는 선택된 터보 인터리버를 기반으로 동작할 수 있다. 코드 디인터리버(740a-740m)는 선택된 터보 인터리버의 역을 기초로 동작할 수 있다. 제 1 구성 코드의 경우, 저장 유닛(750a-750m)은 입력 LLR들을 각각 SISO 디코더(720a-720m)에 제공할 수 있고, 코드 인터리버(730a- 730m)의 출력을 각각 저장할 수 있다. 제 2 구성 코드의 경우, 저장 유닛(750a-750m)은 입력 LLR들을 각각 SISO 디코더(720a-720m)에 제공할 수 있고, 코드 디인터리버(740a- 740m)의 출력을 각각 저장할 수 있다. 모든 디코딩 반복이 완료된 후 검출기(760)는 저장 유닛(750a-750m)으로부터 최종 데이터 비트 LLR들을 수신하여 디코딩된 비트들을 제공할 수 있다.
도 5 내지 도 7에 나타낸 바와 같이, 터보 디코딩의 중요한 특징은 2개의 구성 코드의 디코딩 간의 "외부" 정보 교환이다. 제 1 구성 코드의 디코딩으로부터의 출력 LLR들은 제 2 구성 코드의 디코딩에 대한 입력 LLR들로서 제공되고, 역으로 제 2 구성 코드의 디코딩으로부터의 출력 LLR들이 제 1 구성 코드의 디코딩에 대한 입력 LLR들로서 제공된다. 하나의 구성 코드의 디코딩으로부터의 출력 LLR들은 다른 구성 코드의 디코딩에 대한 입력 LLR들과 다른 순서이다. 그러므로 출력 LLR들은 저장 유닛(들)에 저장되기 전에 적절히 인터리빙 또는 디인터리빙된다.
각 저장 유닛(750)은 하나의 세그먼트에 대한 하나의 SISO 디코더(720)의 LLR들을 저장할 수 있다. 각 저장 유닛(750)은 제 1 구성 코드에 대한 LLR들을 원래 순서로 저장한 다음, 제 2 구성 코드에 대한 LLR들을 인터리빙된 순서로 저장하며, 그 다음 제 1 구성 코드에 대한 LLR들을 원래 순서로 저장하는 식이다.
각 SISO 디코더(720)는 인터리빙 또는 디인터리빙된 다음 M개의 저장 유닛(750a-750m)에 제공될 수 있는 출력 LLR들을 제공한다. 각 출력 LLR은 인터리빙 또는 디인터리빙 후 M개의 저장 유닛(750) 중 임의의 저장 유닛에 제공될 수 있다.
M개의 SISO 디코더(720a-720m)는 인터리빙 또는 디인터리빙된 다음 M개의 저장 유닛(750a-750m)에 제공될 수 있는 출력 LLR들을 끊임없이 제공할 수 있다. 다수의 SISO 디코더로부터의 출력 LLR들이 인터리빙 또는 디인터리빙 결과 소정의 기록 사이클에서 동일한 저장 유닛에 매핑된다면, 메모리 경쟁이 일어날 수 있고 메모리 경쟁을 해결하기 위해 스톨(stall) 시간이 삽입될 수 있다. 스톨 시간은 터보 디코더의 용량을 감소시킬 수 있다.
다수의 SISO 디코더에 의한 병렬 디코딩 동안 메모리 경쟁을 피하기 위해 비경쟁 터보 인터리버가 사용될 수 있다. 비경쟁 터보 인터리버는 다수의 SISO 디코더로부터의 정보가 인터리빙 또는 디인터리빙 후 메모리 액세스 경쟁에 부닥치지 않고 각 기록 사이클에서 다수의 저장 유닛에 병렬로 기록될 수 있도록 코드 블록의 데이터 비트들을 재정렬한다. 비경쟁 터보 인터리버는 다음과 같이 수학적으로 정의될 수 있다: 0 ≤ m, n < M, m ≠ n, 0 ≤ k < K에 대해
Figure 112009033043185-PCT00015
식(1)
Figure 112009033043185-PCT00016
식(2) 여기서
Figure 112009033043185-PCT00017
는 x보다 작거나 같은 최대 정수를 제공하는 플로어 연산자를 나타내고, π(x)는 코드 인터리빙 함수를 나타내며, π- 1(x)는 코드 디인터리빙 함수를 나타낸다.
식(1)은 임의의 2개의 세그먼트(m, n)의 k번째 데이터 비트가 서로 다른 세그먼트로 인터리빙되어야 함을 나타낸다. 이러한 조건은 각 기록 사이클에 대한 M개의 SISO 디코더(720a-720m)로부터의 M개의 출력 LLR이 인터리빙 후 M개의 서로 다른 저장 유닛(750a-750m)에 매핑되어야 함을 보장하며, 여기서 매핑은 코드 인터리빙 함수 π(x)에 좌우된다.
식(2)은 임의의 2개의 세그먼트(m, n)의 k번째 데이터 비트가 서로 다른 세그먼트로 디인터리빙되어야 함을 나타낸다. 이러한 조건은 각 기록 사이클에 대한 M개의 SISO 디코더(720a-720m)로부터의 M개의 출력 LLR이 디인터리빙 후 M개의 서로 다른 저장 유닛(750a-750m)에 매핑되어야 함을 보장하며, 여기서 매핑은 코드 디인터리빙 함수 π-1(x)에 좌우된다.
식(1) 및 식(2)의 조건들은 후술하는 바와 같이 다양한 인터리버 설계를 기초로 이루어질 수 있다. N, M, K의 특정 값들에 대해 비경쟁 터보 인터리버가 정의될 수 있다. 비경쟁 터보 인터리버는 이들 N, M, K의 특정 값들에 대해 비경쟁 메모리 액세스를 제공할 수 있으며 N, M, K의 다른 값들에 대해서는 비경쟁 메모리 액세스를 제공할 수도 있고 제공하지 않을 수도 있다.
시스템은 한 세트의 코드 블록 크기들을 지원할 수 있으며, 이는 전송할 데이터 페이로드의 예상 범위, 코딩 효율 등과 같은 다양한 요소를 기초로 선택될 수 있다. 전송할 데이터량을 기초로 사용할 적당한 코드 블록 크기가 선택될 수 있다.
도 8은 한 설계에 따른 데이터 페이로드에 대한 코드 블록 크기의 도표를 나타낸다. 이 설계에서, 최대 코드 블록 크기는 8192이다. 8192보다 작거나 같은 데이터 페이로드의 경우, 전체 데이터 페이로드에 하나의 코드 블록이 사용될 수 있다. 8193 내지 16384 범위의 데이터 페이로드의 경우, 2개의 코드 블록이 사용될 수 있으며, 데이터 페이로드는 2개의 코드 블록 사이에 균등하게 분배될 수 있다. 일반적으로, 8192NB + 1 내지 8192(NB + 1) 범위의 데이터 페이로드의 경우, NB + 1개의 코드 블록이 사용될 수 있으며, 데이터 페이로드는 NB + 1개의 코드 블록 사이에 균등하게 분배될 수 있다. 도 8에 나타낸 것과 같이, 데이터 페이로드가 충분히 크다면, 코드 블록 크기는 4096 이상이다.
(예를 들어, 도 7에 나타낸 것과 같이) 병렬 SISO 디코더를 가진 고성능 터보 디코더는 큰 데이터 페이로드들에 사용될 수 있으며, 이들은 넓은 대역폭 및/또는 MIMO에 의해 전송될 수 있다. 작은 데이터 페이로드들에는 (예를 들어, 도 6에 나타낸 것과 같은) 단일 SISO 디코더를 가진 터보 디코더가 충분할 수 있다. 따라서 큰 데이터 페이로드들, 예를 들어 어떤 큰 페이로드 크기 이상에만 비경쟁 터보 인터리빙이 필요할 수도 있다.
한 형태로, 터보 인터리빙은 다음과 같이 수행될 수 있다: ● 임계 크기보다 작거나 같은 작은 코드 블록 크기들에 대해 정규 터보 인터리버를 사용하고, ● 임계 크기보다 큰 코드 블록 크기들에 대해 비경쟁 터보 인터리버들을 사용한다.
도 8에 나타낸 설계에서, 임계 크기는 4096과 같을 수 있다. 일반적으로, 임계 크기는 디코딩 스루풋 요건들을 충족시키기 위해 고성능 터보 디코더가 요구되는 포인트를 기초로 선택될 수 있다.
임계 크기까지의 작은 코드 블록에 대해 정규 터보 인터리버가 사용될 수 있다. 한 설계에서, 정규 터보 인터리버는 3GPP 배포 6에 정의되어 있으며 2006년 12월 "다중화 및 채널 코딩(FDD)"이라는 명칭으로 3GPP TS 25.212에 기술되어 있는 터보 인터리버일 수 있으며, 이는 공공연하게 이용 가능하다. 3GPP 배포 6 터보 인터리버는 코드 블록 크기를 5114까지 수용할 수 있으며 적절히 정의되어 검증된다. 다른 터보 인터리버들 또한 정규 터보 인터리버에 사용될 수 있다.
식(1) 및 식(2)에 나타낸 것과 같이, 비경쟁 터보 인터리버의 설계는 코드 블록 크기(N), 세그먼트 수(M) 및 세그먼트 크기(K)에 좌우된다. N과 대응하는 M과 K의 조합 사이에 1대1 매핑이 있을 수 있다. 각각의 큰 코드 블록 크기(N)에 대해, 적당한 터보 인터리버 함수 π(x)가 (소정의 M과 K)를 갖는 해당 코드 블록 크기(N)에 대해 정의되어 양호한 디코딩 성능을 달성할 수 있다. 터보 인터리버 함수 π(x)에 의한 디코딩 성능은 컴퓨터 시뮬레이션, 실험 측정, 현장 테스트 등 을 통해, 그리고 가능하면 해당 코드 블록 크기(N)를 사용하는 각각의 데이터 페이로드에 대해 검증될 수 있다. (예를 들어, 다른 파라미터 값들을 갖는) 다른 터보 인터리버 설계들이 평가될 수도 있다. 양호한(또는 최상의 가능한) 디코딩 성능을 제공할 수 있는 터보 인터리버 설계를 찾기 위해 각 터보 인터리버 설계에 대해 디코딩 성능이 검증될 수 있다. 따라서 터보 인터리버 설계 프로세스는 상당수의 코드 블록 크기에 대해 특히 복잡하고 지루할 수 있다. 모든 코드 블록 크기 대신 큰 코드 블록 크기들에 대해서만 비경쟁 터보 인터리버들을 사용함으로써 터보 인터리버 설계 복잡도뿐 아니라 구현 복잡도 또한 상당히 감소할 수 있다.
다른 형태에서, 가능한 모든 크기 대신 한정된 세트의 큰 코드 블록 크기들이 비경쟁 터보 인터리버들로 지원될 수 있다. 한 설계에서, 지원되는 큰 코드 블록 크기들은 다음과 같이 표현될 수 있다: N i = Nth + L·i i = 1, 2, … , 식(3) 여기서 Nth는 임계 크기이고, L은 연속한 큰 코드 블록 크기들 간의 스텝 크기 또는 증분이며, N i i번째 코드 블록 크기이다.
식(3)에 나타낸 설계에서, 지원되는 큰 코드 블록 크기들은 L씩 선형적으로 증가한다. 각각의 큰 코드 블록 크기(N i )에 대해, 패딩 비트가 L - 1개까지 사용될 수 있고, 패딩 오버헤드는 (L - 1)/N i 까지일 수 있다. L은 터보 인터리버 복잡도와 패딩 오버헤드 간의 트레이드오프를 기초로 선택될 수 있다. 더 작은 값의 L은 지원되는 더 많은 큰 코드 블록 크기에 대응하며, 이는 터보 인터리버 복잡도를 증가시킬 수 있지만 패딩 오버헤드를 감소시킬 수 있다. 더 큰 값의 L에 대해서는 역이 참이다.
한 설계에서, 지원되는 큰 코드 블록 크기들은 다음과 같이 표현될 수 있다: N i = 4096 + 32·i i = 1, 2, … , 128, 식(4)
식(4)의 설계는 L = 32의 증분에서 4128 내지 8192 범위의 128개의 서로 다른 큰 코드 블록 크기를 지원한다. 128개의 서로 다른 큰 코드 블록 크기에 대해 128개의 비경쟁 터보 인터리버가 정의될 수 있다. 각각의 큰 코드 블록 크기에 대한 패딩 오버헤드는 1% 미만이다.
다른 설계에서, 지원되는 큰 코드 블록 크기들은 다음과 같이 표현될 수 있다: N i = 4096 + 64·i i = 1, 2, … , 64, 식(5)
식(5)의 설계는 L = 64의 증분에서 4160 내지 8192 범위의 64개의 서로 다른 큰 코드 블록 크기를 지원한다. 64개의 서로 다른 큰 코드 블록 크기에 대해 64개의 비경쟁 터보 인터리버가 정의될 수 있다. 각각의 큰 코드 블록 크기에 대한 패딩 오버헤드는 약 1.5% 이하이다.
Nth와 L에 다른 값들이 사용될 수도 있으며, 이들은 지원되는 큰 코드 블록 크기들의 수와 패딩 오버헤드를 결정한다.
다른 설계에서, 지원되는 큰 코드 블록 크기들은 다음과 같이 표현될 수 있다: N i = N i -1 + L i i = 1, 2, 3, … , 식(6) 여기서 N0 = Nth이고 L i i번째 코드 블록 크기에 대한 증분이다. 식(6)에 나타낸 설계에서, 지원되는 큰 코드 블록 크기들은 서로 다른 양(L i )만큼 증가할 수 있다. 예를 들어, L i 는 각각의 큰 코드 블록 크기에 대한 목표 패딩 오버헤드를 달성하는 동시에 터보 인터리버 복잡도를 줄이도록 선택될 수 있다.
일반적으로, 임의의 수의 큰 코드 블록 크기들이 지원될 수 있다. 다양한 설계를 기초로 각각의 큰 코드 블록 크기에 대해 비경쟁 터보 인터리버가 정의될 수 있다.
한 설계에서, 디더링된(dithered) 상대 소수(DRP) 인터리버로 비경쟁 터보 인터리버가 구현될 수 있다. DRP 인터리버는 n 위치의 데이터 비트를 (s + P·n) mod N 위치에 매핑하는 상대 소수(RP) 인터리버를 사용하며, 여기서 P와 N은 상대 소수이고, s는 시작 인덱스이며, "mod N"은 modulo-N 연산을 나타낸다. DRP 인터리버는 또한 RP 인터리버 전후에 디더링을 적용한다.
도 9는 DRP 인터리버의 연산을 나타낸다. N 크기의 코드 블록은 KR 크기의 다수의 섹션으로 분할되며, 여기서 N은 KR의 정수배이다. 각 섹션에서 KR개의 비트는 제 1/판독 디더링 함수 I a (n)를 기초로 인터리빙된다. 제 1 디더링 후의 N개의 비트는 RP 인터리버를 기반으로 인터리빙되며, 이는 I b (n) = (s + P·n) mod N으로 주어질 수 있다. RP 인터리빙 후의 N개의 비트는 Kw 크기의 다수의 섹션으로 분할되고, 여기서 N은 Kw의 정수배이다. 각 섹션에서 Kw개의 비트는 제 2/기록 디더링 함수 I c (n)를 기초로 인터리빙되어 최종 인터리빙된 비트들을 얻는다. DRP 인터리버는 S. Crozier와 P. Guinand에 의한 "High-Performance Low-Memory Interleaver Banks for Turbo-Codes"(Proc. 54th IEEE Vehicular Tech., 2001년 10월, 2394-2398쪽)라는 제목의 논문에 상세히 기술되어 있으며, 이는 공공연하게 이용 가능하다.
DRP 인터리버 함수 πdrp(n)은 다음과 같이 2개의 디더링 함수 I a (n) 및 I c (n)과 RP 인터리버 함수 I b (n)을 기초로 정의될 수 있다:
Figure 112009033043185-PCT00018
, n = 0, … , N-1 식(7)
DRP 인터리버 함수는 다음의 속성들을 갖는다:
Figure 112009033043185-PCT00019
식(8)
Figure 112009033043185-PCT00020
식(9) 여기서 D(n)은 Q의 주기를 갖는 전체 디더링 함수이고, Q는 KR 및 Kw의 최소 공배수이다. DRP 인터리버는 K = Q인 식(1)과 식(2)에서 비경쟁 인터리버 기준을 만족한다.
다른 설계에서, 비경쟁 터보 인터리버는 ARP(almost regular permutation) 인터리버로 구현될 수 있다. ARP 인터리버는 RP 인터리버를 사용하지만 각 위치에 작은 편차를 더한다. ARP 인터리버 함수 π arp (n)는 다음과 같이 정의될 수 있다:
Figure 112009033043185-PCT00021
n = 0, … , N-1 식(10) 여기서 A(n)과 B(n)은 N의 제수(divider)인 C의 주기를 갖는 함수들이다.
A(n)과 B(n)의 값은 P와 N/K에 비해 작을 수 있다. P·A(n) + B(n)의 항은 RP 인터리버에 혼란(perturbation)을 더한다. ARP 인터리버는 C. Berrou 등에 의한 "Designing Good Permutations for Turbo Codes: Towards a Single Model"(IEEE Int. Conf. on Comm., Vol. 1, 20-24, 2004년 6월, 341-345쪽)이라는 제목의 논문에 상세히 기술되어 있으며, 이는 공공연하게 이용 가능하다. A(n)과 B(n)의 신중한 선택으로, Berrou 논문은 ARP 인터리버가 M = C인, 그리고 가능하면 N이 p의 배수인 경우 M = p·C인 식(1)과 식(2)에서 비경쟁 인터리버 기준을 만족할 수 있음을 보여준다.
또 다른 설계에서, 비경쟁 터보 인터리버는 QPP(quadratic permutation polynomial) 인터리버로 구현될 수 있다. QPP 인터리버 함수 π qpp (n)는 다음과 같이 정의될 수 있다:
Figure 112009033043185-PCT00022
n = 0, … , N-1 식(11) 여기서 a와 b는 2차 다항식에 대한 2개의 상수이다. 각각의 큰 코드 블록 크기마다 QPP 인터리버에 대한 a 및 b에 대해 특정 값들이 선택될 수 있다.
2차 다항식이 N에 대한 치환 다항식이라면, QPP 인터리버는 N을 나누는 임의 의 K에 대해 비경쟁적임을 알 수 있다. QPP 인터리버는 Jin Sun 및 Oscar Y. Takeshita에 의한 "Interleavers for Turbo Codes Using Permutation Polynomials Over Integer Rings"(IEEE Transaction of Information Theory, Vol. 51, Issue 1, 101-119쪽, 2005년)라는 제목의 논문에 상세히 기술되어 있으며, 이는 공공연하게 이용 가능하다. QPP 인터리버는 K가 N의 제수인 한 식(1)과 식(2)의 비경쟁 인터리버 기준을 만족할 수 있음을 보여준다.
도 10은 터보 디코더(430d) 설계의 블록도를 나타내며, 이는 도 4의 터보 디코더(430)에 사용될 수도 있다. 터보 디코더(430d) 내에서, 제어 유닛(1060)은 선택된 코드 블록 크기를 수신하여 코드 블록 크기가 임계 크기보다 큰지 여부를 결정한다. 유닛(1060)은 코드 블록 크기가 임계 크기보다 크지 않다면 정규 터보 인터리버(1030a)를 선택할 수 있고, 그렇지 않다면 비경쟁 터보 인터리버(1030b)를 선택할 수 있다. 유닛(1060)은 코드 블록 크기를 기초로 각종 제어를 생성할 수 있다.
스위치(101)는 코드 블록에 대한 입력 LLR들을 수신하여, 코드 블록 크기가 임계 크기보다 크지 않다면 SISO 디코더(1020a)에 입력 LLR들을 제공하고, 그렇지 않다면 SISO 디코더(1020b)에 입력 LLR들을 제공할 수 있다. SISO 디코더(1020a)는 도 6의 SISO 디코더(620)를 포함할 수 있다. 정규 터보 인터리버(1030a)는 도 6의 인터리버(630) 디인터리버(640) 및 저장 유닛(650)을 포함할 수 있다. SISO 디코더(1020a) 및 정규 터보 인터리버(1030a)는 도 6에 대해 상술한 것과 같이 동작할 수 있다. 유닛(1060)은 선택된 코드 블록 크기 및/또는 제어 신호를 SISO 디 코더(1020a) 및 정규 터보 인터리버(1030a)에 제공할 수 있으며, 이들은 코드 블록 크기를 기초로 동작할 수 있다.
SISO 디코더(1020b)는 도 7의 디멀티플렉서(710) 및 SISO 디코더(720a-720m)를 포함할 수 있다. 비경쟁 터보 인터리버(1030b)는 도 7의 코드 인터리버(730a-730m), 코드 디인터리버(740a-740m) 및 저장 유닛(750a-750m)을 포함할 수 있다. SISO 디코더(1020b) 및 비경쟁 터보 인터리버(1030b)는 도 7에 대해 상술한 것과 같이 동작할 수 있다. 유닛(1060)은 SISO 디코더(1020b)에 코드 블록 크기를 제공할 수 있으며, SISO 디코더(1020b)는 코드 블록 크기에 대한 세그먼트 크기(K)를 기초로 입력 LLR들을 역다중화하여 디코딩할 수 있다. 유닛(1060)은 또한 비경쟁 터보 인터리버(1030b)에 코드 블록 크기를 제공할 수 있으며, 비경쟁 터보 인터리버(1030b)는 디코딩에 사용할 적절한 비경쟁 터보 인터리버 함수를 선택할 수 있다.
모든 디코딩 반복이 완료된 후, 선택기(1040)는 터보 인터리버(1030a 또는 1030b)로부터 최종 데이터 비트 LLR들을 수신할 수 있다. 선택기(1040)는 코드 블록 크기가 임계 크기보다 크지 않다면 터보 인터리버(1030a)로부터의 최종 데이터 비트 LLR들을 제공할 수 있고, 그렇지 않다면 터보 인터리버(1030b)로부터의 최종 데이터 비트 LLR들을 제공할 수 있다. 검출기(1050)는 선택기(1040)로부터 최종 데이터 비트 LLR들을 수신하여 디코딩된 비트들을 제공할 수 있다.
도 11은 데이터를 처리하기 위한 프로세스(1100)의 설계를 나타낸다. 프로세스(1100)는 송신기 또는 수신기에 의해, 예를 들어 UE, 기지국 또는 다른 어떤 엔티티에 의해 수행될 수 있다. 다수의 코드 블록 크기 중에서 선택된 코드 블록 크기가 결정된다(블록 1112). 코드 블록 크기는 예를 들어 도 8에 나타낸 것과 같이 전송되고 있는 데이터 페이로드의 크기를 기초로 선택될 수 있다. 코드 블록 크기가 임계 크기보다 크다면 비경쟁 터보 인터리버가 사용될 수 있다(블록 1114). 코드 블록 크기가 임계 크기보다 작거나 같다면 정규 터보 인터리버가 사용될 수 있다(블록 1116). 다수의 코드 블록 크기는 임계 크기보다 더 큰 다수의 더 큰 코드 블록 크기를 포함할 수 있다. 각각의 더 큰 코드 블록 크기는 개별 비경쟁 터보 인터리버와 관련될 수 있다. 다수의 더 큰 코드 블록 크기는 미리 결정된 스텝 크기씩 선형적으로 증가할 수 있다. 다수의 코드 블록 크기는 또한 임계 크기보다 작거나 같은 다수의 더 작은 코드 블록 크기를 포함할 수 있다. 더 작은 코드 블록 크기들에 모두 정규 터보 인터리버가 사용될 수 있다.
코드 블록 크기가 임계 크기보다 크다면 비경쟁 터보 인터리버를 기반으로 터보 인코딩 또는 디코딩이 수행될 수 있다(블록 1118). 코드 블록 크기가 임계 크기보다 작거나 같다면 정규 터보 인터리버를 기반으로 터보 인코딩 또는 디코딩이 수행될 수 있다(블록 1120).
송신기(예를 들어, 기지국)의 경우, 코드 블록 크기가 임계 크기보다 크다면 다수의 구성 인코더 및 비경쟁 터보 인터리버를 기반으로 코드 블록에 대해 터보 인코딩이 수행될 수 있다. 코드 블록 크기가 임계 크기보다 작거나 같다면 다수의 구성 인코더 및 정규 터보 인터리버를 기반으로 코드 블록에 대해 터보 인코딩이 수행될 수 있다.
수신기(예를 들어, UE)의 경우, 코드 블록 크기가 임계 크기보다 크다면 다수의 SISO 디코더 및 비경쟁 터보 인터리버를 기반으로 코드 블록에 대해 터보 디코딩이 수행될 수 있다. 다수의 저장 유닛이 다수의 SISO 디코더로부터의 정보를 저장하는데 사용될 수 있다. 다수의 SISO 디코더로부터의 정보는 비경쟁 터보 인터리버에 기반한 인터리빙 또는 디인터리빙 후 각각의 기록 사이클에서 다수의 저장 유닛에 병렬로 기록될 수 있다. 비경쟁 터보 인터리버는 DRP 인터리버, ARP 인터리버, QPP 인터리버, 또는 다수의 저장 유닛의 비경쟁 액세스를 지원할 수 있는 다른 어떤 타입의 인터리버를 기반으로 할 수 있다. 코드 블록 크기가 임계 크기보다 작거나 같다면 적어도 하나의 SISO 디코더 및 정규 터보 인터리버를 기반으로 코드 블록에 대해 터보 디코딩이 수행될 수 있다.
도 12는 데이터를 처리하기 위한 장치(1200)의 설계를 나타낸다. 장치(1200)는 다수의 코드 블록 크기들 중 선택된 코드 블록 크기를 결정하는 수단(모듈 1212), 코드 블록 크기가 임계 크기보다 큰 경우 비경쟁 터보 인터리버를 사용하는 수단(모듈 1214), 코드 블록 크기가 임계 크기보다 작거나 같은 경우 정규 터보 인터리버를 사용하는 수단(모듈 216), 코드 블록 크기가 임계 크기보다 큰 경우 비경쟁 터보 인터리버를 기반으로 터보 인코딩 또는 디코딩을 수행하는 수단(모듈 1218), 및 코드 블록 크기가 임계 크기보다 작거나 같은 경우 정규 터보 인터리버를 기반으로 터보 인코딩 또는 디코딩을 수행하는 수단(모듈 1220)을 포함한다.
도 12의 모듈들은 프로세서, 전자 디바이스, 하드웨어 디바이스, 전자 컴포넌트, 논리 회로, 메모리 등, 또는 이들의 임의의 결합을 포함할 수 있다.
당업자들은 정보 및 신호들이 다양한 다른 어떤 기술 및 방식으로도 표현될 수 있는 것으로 이해할 것이다. 예를 들어, 상기 설명 전반에 걸쳐 참조될 수 있는 데이터, 명령, 지시, 정보, 신호, 비트, 심벌 및 칩은 전압, 전류, 전자파, 자기 필드 또는 입자, 광 필드 또는 입자, 또는 이들의 임의의 조합으로 표현될 수 있다.
당업자들은 또 본원의 개시와 관련하여 설명한 다양한 예시적인 논리 블록, 모듈, 회로 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 결합으로 구현될 수 있는 것으로 인식한다. 이러한 하드웨어와 소프트웨어의 호환성을 설명하기 위해, 각종 예시적인 컴포넌트, 블록, 모듈, 회로 및 단계들은 일반적으로 그 기능과 관련하여 상술하였다. 이러한 기능이 하드웨어로 구현되는지 소프트웨어로 구현되는지는 전체 시스템에 부과된 특정 애플리케이션 및 설계 제약들에 좌우된다. 당업자들은 설명한 기능을 특정 애플리케이션마다 다른 방식으로 구현할 수도 있지만, 이러한 구현 결정은 본 개시의 범위를 벗어나는 것으로 해석되어선 안 된다.
본원의 개시와 관련하여 설명한 다양한 예시적인 논리 블록, 모듈 및 회로는 여기서 설명하는 기능들을 수행하도록 설계된 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 현장 프로그래밍 가능 게이트 어레이(FPGA) 또는 다른 프로그래밍 가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트, 또는 이들의 임의의 조합으로 구현 또는 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안으로 프로세서는 임의의 종래 프로세서, 제어기, 마이크로컨트롤러 또는 상태 머신일 수도 있다. 프로세서는 또한 연산 디바이스들의 조합, 예를 들어 DSP와 마이크로프로세서의 조합, 다수의 마이크로프로세서, DSP 코어와 결합한 하나 이상의 마이크로프로세서, 또는 임의의 다른 구성으로서 구현될 수도 있다.
본원의 개시와 관련하여 설명되는 방법 또는 알고리즘의 단계들은 하드웨어에 직접, 또는 프로세서에 의해 실행되는 소프트웨어 모듈에, 또는 이 둘의 조합에 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드디스크, 착탈식 디스크, CD-ROM, 또는 공지된 임의의 다른 형태의 저장 매체에 상주할 수 있다. 예시적인 저장 매체는 프로세서가 저장 매체로부터 정보를 읽고 저장 매체에 정보를 기록할 수 있도록 프로세서에 연결된다. 대안으로, 저장 매체는 프로세서에 통합될 수도 있다. 프로세서 및 저장 매체는 ASIC에 상주할 수도 있다. ASIC는 사용자 단말에 상주할 수도 있다. 대안으로, 프로세서 및 저장 매체는 사용자 단말에 개별 컴포넌트로서 상주할 수도 있다.
하나 이상의 예시적인 설계에서, 설명한 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 결합으로 구현도리 수 있다. 소프트웨어로 구현된다면, 상기 기능들은 컴퓨터 판독 가능 매체 상의 하나 이상의 명령들 또는 코드로서 저장될 수도 있고 이를 통해 전송될 수도 있다. 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체 및 한 장소에서 다른 장소로 컴퓨터 프로그램의 전달을 용이하게 하는 임의의 매체를 포함하는 통신 매체를 모두 포함한다. 저장 매체는 범용 또는 전용 컴퓨터 에 의해 액세스 가능한 임의의 이용 가능 매체일 수 있다. 한정이 아닌 예시로, 이러한 컴퓨터 판독 가능 매체는 RAM, ROM, EEPROM, CD-ROM이나 다른 광 디스크 저장소, 자기 디스크 저장소 또는 다른 자기 저장 디바이스, 또는 명령이나 데이터 구조의 형태로 원하는 프로그램 코드 수단을 운반 또는 저장하는데 사용될 수 있으며 범용 또는 전용 컴퓨터나 범용 또는 전용 프로세서에 의해 액세스 가능한 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독 가능 매체로 적절히 지칭된다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 꼬임쌍선, 디지털 가입자 회선(DSL), 또는 적외선, 라디오 및 초고주파와 같은 무선 기술들을 이용하여 웹사이트, 서버 또는 다른 원격 소스로부터 전송된다면, 동축 케이블, 광섬유 케이블, 꼬임 쌍선, DSL, 또는 적외선, 라디오 및 초고주파와 같은 무선 기술들이 매체의 정의에 포함된다. 여기서 사용된 것과 같은 디스크(disk 및 disc)는 콤팩트 디스크(CD), 레이저 디스크, 광 디스크, 디지털 다목적 디스크(DVD), 플로피디스크 및 블루레이 디스크를 포함하며, 디스크(disk)들은 보통 데이터를 자기적으로 재생하는 반면, 디스크(disc)들은 데이터를 레이저에 의해 광학적으로 재생한다. 상기의 조합들 또한 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
본 개시의 상기 설명은 당업자들이 본 개시를 실시 또는 사용할 수 있도록 제공된다. 이 개시에 대한 다양한 변형이 당업자들에게 쉽게 명백할 것이며, 본원에 정의된 일반 원리들은 개시의 범위를 벗어나지 않으면서 다른 변형들에 적용될 수 있다. 따라서 본 개시는 여기서 설명한 예시 및 설계들로 한정되는 것이 아니 라 본원에 개시된 원리 및 신규한 특징들에 부합하는 가장 넓은 범위에 따르는 것이다.

Claims (34)

  1. 데이터를 처리하기 위한 장치로서,
    다수의 코드 블록 크기들 중에서 선택된 코드 블록 크기를 결정하고, 상기 코드 블록 크기가 임계 크기보다 크다면 비경쟁(contention-free) 터보 인터리버를 사용하도록 구성되는 적어도 하나의 프로세서; 및
    상기 적어도 하나의 프로세서에 연결되는 메모리를 포함하는, 데이터 처리 장치.
  2. 제 1 항에 있어서,
    상기 적어도 하나의 프로세서는 상기 코드 블록 크기가 상기 임계 크기보다 크다면 다수의 소프트 입력 소프트 출력(SISO) 디코더들 및 상기 비경쟁 터보 인터리버를 기반으로 코드 블록에 대한 디코딩을 수행하도록 구성되는, 데이터 처리 장치.
  3. 제 2 항에 있어서,
    상기 메모리는 상기 다수의 SISO 디코더들로부터의 정보를 저장하기 위한 다수의 저장 유닛들을 구현하도록 구성되는, 데이터 처리 장치.
  4. 제 3 항에 있어서,
    상기 적어도 하나의 프로세서는 상기 비경쟁 터보 인터리버에 기반한 인터리빙 또는 디인터리빙 후 각 기록 사이클에서 상기 다수의 SISO 디코더들로부터의 정보를 상기 다수의 저장 유닛들에 병렬로 기록하도록 구성되는, 데이터 처리 장치.
  5. 제 1 항에 있어서,
    상기 다수의 코드 블록 크기들은 상기 임계 크기보다 큰 다수의 코드 블록 크기들을 포함하고, 상기 다수의 코드 블록 크기들 각각은 개별 비경쟁 터보 인터리버와 관련되는, 데이터 처리 장치.
  6. 제 5 항에 있어서,
    상기 다수의 코드 블록 크기들은 미리 결정된 스텝 크기씩 선형적으로 증대하는, 데이터 처리 장치.
  7. 제 5 항에 있어서,
    상기 다수의 코드 블록 크기들은 N i = Nth + L·i로 주어지며, 여기서 Nth는 최소 크기이고, L은 연속한 코드 블록 크기들 간의 스텝 크기이며, N i 는 상기 다수의 코드 블록 크기들 중 i번째 코드 블록 크기인, 데이터 처리 장치.
  8. 제 5 항에 있어서,
    상기 다수의 코드 블록 크기들은 N i = N i -1 + L i 로 주어지며, 여기서 L i i번째 코드 블록 크기에 대한 증분이고, N i 는 상기 다수의 코드 블록 크기들 중 i번째 코드 블록 크기인, 데이터 처리 장치.
  9. 제 1 항에 있어서,
    상기 적어도 하나의 프로세서는 상기 코드 블록 크기가 상기 임계 크기보다 작거나 같다면 정규 터보 인터리버를 사용하도록 구성되는, 데이터 처리 장치.
  10. 제 9 항에 있어서,
    상기 적어도 하나의 프로세서는 상기 코드 블록 크기가 상기 임계 크기보다 작거나 같다면 적어도 하나의 소프트 입력 소프트 출력(SISO) 디코더 및 상기 정규 터보 인터리버를 기반으로 코드 블록에 대한 디코딩을 수행하도록 구성되는, 데이터 처리 장치.
  11. 제 9 항에 있어서,
    상기 다수의 코드 블록 크기들은 상기 임계 크기보다 작거나 같은 다수의 코드 블록 크기들을 포함하고, 상기 정규 터보 인터리버는 상기 다수의 코드 블록 크기들에 사용되는, 데이터 처리 장치.
  12. 제 1 항에 있어서,
    상기 적어도 하나의 프로세서는 데이터 페이로드 크기를 기초로 상기 코드 블록 크기를 선택하도록 구성되는, 데이터 처리 장치.
  13. 제 1 항에 있어서,
    상기 적어도 하나의 프로세서는 상기 코드 블록 크기가 상기 임계 크기보다 크다면 다수의 구성 인코더들 및 상기 비경쟁 터보 인터리버를 기반으로 코드 블록에 대한 인코딩을 수행하도록 구성되는, 데이터 처리 장치.
  14. 제 9 항에 있어서,
    상기 적어도 하나의 프로세서는 상기 코드 블록 크기가 상기 임계 크기보다 작거나 같다면 다수의 구성 인코더들 및 상기 정규 터보 인터리버를 기반으로 코드 블록에 대한 인코딩을 수행하도록 구성되는, 데이터 처리 장치.
  15. 제 1 항에 있어서,
    상기 비경쟁 터보 인터리버는 DRP(dithered relative prime) 인터리버, ARP(almost regular permutation) 인터리버 및 QPP(quadratic permutation polynomial) 인터리버 중 하나를 기초로 하는, 데이터 처리 장치.
  16. 데이터를 처리하는 방법으로서,
    다수의 코드 블록 크기들 중에서 선택된 코드 블록 크기를 결정하는 단계; 및
    상기 코드 블록 크기가 임계 크기보다 큰 경우 비경쟁 터보 인터리버를 사용하는 단계를 포함하는, 데이터 처리 방법.
  17. 제 16 항에 있어서,
    상기 코드 블록 크기가 상기 임계 크기보다 큰 경우 다수의 소프트 입력 소프트 출력(SISO) 디코더들 및 상기 비경쟁 터보 인터리버를 기반으로 코드 블록에 대한 디코딩을 수행하는 단계를 더 포함하는, 데이터 처리 방법.
  18. 제 17 항에 있어서,
    상기 비경쟁 터보 인터리버에 기반한 인터리빙 또는 디인터리빙 후 각 기록 사이클에서 상기 다수의 SISO 디코더들로부터의 정보를 다수의 저장 유닛들에 병렬로 기록하는 단계를 더 포함하는, 데이터 처리 방법.
  19. 제 16 항에 있어서,
    상기 코드 블록 크기가 상기 임계 크기보다 작거나 같은 경우 정규 터보 인터리버를 선택하는 단계를 더 포함하는, 데이터 처리 방법.
  20. 제 19 항에 있어서,
    상기 코드 블록 크기가 상기 임계 크기보다 작거나 같은 경우 적어도 하나의 소프트 입력 소프트 출력(SISO) 디코더 및 상기 정규 터보 인터리버를 기반으로 코드 블록에 대한 디코딩을 수행하는 단계를 더 포함하는, 데이터 처리 방법.
  21. 제 16 항에 있어서,
    상기 코드 블록 크기가 상기 임계 크기보다 큰 경우 다수의 구성 인코더들 및 상기 비경쟁 터보 인터리버를 기반으로 코드 블록에 대한 인코딩을 수행하는 단계를 더 포함하는, 데이터 처리 방법.
  22. 제 19 항에 있어서,
    상기 코드 블록 크기가 상기 임계 크기보다 작거나 같은 경우 다수의 구성 인코더들 및 상기 정규 터보 인터리버를 기반으로 코드 블록에 대한 인코딩을 수행하는 단계를 더 포함하는, 데이터 처리 방법.
  23. 데이터를 처리하기 위한 장치로서,
    다수의 코드 블록 크기들 중에서 선택된 코드 블록 크기를 결정하는 수단; 및
    상기 코드 블록 크기가 임계 크기보다 큰 경우 비경쟁 터보 인터리버를 사용하는 수단을 포함하는, 데이터 처리 장치.
  24. 제 23 항에 있어서,
    상기 코드 블록 크기가 상기 임계 크기보다 큰 경우 다수의 소프트 입력 소프트 출력(SISO) 디코더들 및 상기 비경쟁 터보 인터리버를 기반으로 코드 블록에 대한 디코딩을 수행하는 수단을 더 포함하는, 데이터 처리 장치.
  25. 제 24 항에 있어서,
    상기 비경쟁 터보 인터리버에 기반한 인터리빙 또는 디인터리빙 후 각 기록 사이클에서 상기 다수의 SISO 디코더들로부터의 정보를 다수의 저장 유닛들에 병렬로 기록하는 수단을 더 포함하는, 데이터 처리 장치.
  26. 제 23 항에 있어서,
    상기 코드 블록 크기가 상기 임계 크기보다 작거나 같은 경우 정규 터보 인터리버를 선택하는 수단을 더 포함하는, 데이터 처리 장치.
  27. 제 26 항에 있어서,
    상기 코드 블록 크기가 상기 임계 크기보다 작거나 같은 경우 적어도 하나의 소프트 입력 소프트 출력(SISO) 디코더 및 상기 정규 터보 인터리버를 기반으로 코드 블록에 대한 디코딩을 수행하는 수단을 더 포함하는, 데이터 처리 장치.
  28. 제 23 항에 있어서,
    상기 코드 블록 크기가 상기 임계 크기보다 큰 경우 다수의 구성 인코더들 및 상기 비경쟁 터보 인터리버를 기반으로 코드 블록에 대한 인코딩을 수행하는 수단을 더 포함하는, 데이터 처리 장치.
  29. 제 26 항에 있어서,
    상기 코드 블록 크기가 상기 임계 크기보다 작거나 같은 경우 다수의 구성 인코더들 및 상기 정규 터보 인터리버를 기반으로 코드 블록에 대한 인코딩을 수행하는 수단을 더 포함하는, 데이터 처리 장치.
  30. 기계에 의해 실행될 때 상기 기계로 하여금 동작들을 수행하게 하는 명령들을 포함하는 기계 판독 가능 매체로서, 상기 동작들은,
    다수의 코드 블록 크기들 중에서 선택된 코드 블록 크기를 결정하는 동작; 및
    상기 코드 블록 크기가 임계 크기보다 큰 경우 비경쟁 터보 인터리버를 사용하는 동작을 포함하는, 기계 판독 가능 매체.
  31. 제 30 항에 있어서,
    상기 명령들은 상기 기계에 의해 실행될 때 상기 기계로 하여금,
    상기 코드 블록 크기가 상기 임계 크기보다 큰 경우 다수의 소프트 입력 소프트 출력(SISO) 디코더들 및 상기 비경쟁 터보 인터리버를 기반으로 코드 블록에 대한 디코딩을 수행하는 동작을 더 포함하는 동작들을 수행하게 하는, 기계 판독 가능 매체.
  32. 제 31 항에 있어서,
    상기 명령들은 상기 기계에 의해 실행될 때 상기 기계로 하여금,
    상기 비경쟁 터보 인터리버에 기반한 인터리빙 또는 디인터리빙 후 각 기록 사이클에서 상기 다수의 SISO 디코더들로부터의 정보를 다수의 저장 유닛들에 병렬로 기록하는 동작을 더 포함하는 동작들을 수행하게 하는, 기계 판독 가능 매체.
  33. 데이터를 처리하기 위한 장치로서,
    다수의 코드 블록 크기들 중에서 선택된 코드 블록 크기를 결정하고, 상기 코드 블록 크기가 임계 크기보다 크다면 비경쟁 터보 인터리버를 사용하고, 상기 코드 블록 크기가 상기 임계 크기보다 작거나 같다면 정규 터보 인터리버를 사용하도록 구성되는 적어도 하나의 프로세서; 및
    상기 적어도 하나의 프로세서에 연결되는 메모리를 포함하는, 데이터 처리 장치.
  34. 제 33 항에 있어서,
    상기 적어도 하나의 프로세서는 상기 코드 블록 크기가 상기 임계 크기보다 크다면 다수의 소프트 입력 소프트 출력(SISO) 디코더들 및 상기 비경쟁 터보 인터 리버를 기반으로 코드 블록에 대한 디코딩을 수행하고, 상기 코드 블록 크기가 상기 임계 크기보다 작거나 같다면 적어도 하나의 SISO 디코더 및 상기 정규 터보 인터리버를 기반으로 상기 코드 블록에 대한 디코딩을 수행하도록 구성되는, 데이터 처리 장치.
KR1020097011329A 2006-11-01 2007-11-01 고속 데이터 레이트들을 위한 터보 인터리버 KR101121284B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US86396206P 2006-11-01 2006-11-01
US60/863,962 2006-11-01
PCT/US2007/083284 WO2008057906A2 (en) 2006-11-01 2007-11-01 Turbo interleaver for high data rates

Publications (2)

Publication Number Publication Date
KR20090086237A true KR20090086237A (ko) 2009-08-11
KR101121284B1 KR101121284B1 (ko) 2012-06-20

Family

ID=39365230

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097011329A KR101121284B1 (ko) 2006-11-01 2007-11-01 고속 데이터 레이트들을 위한 터보 인터리버

Country Status (10)

Country Link
US (1) US8583983B2 (ko)
EP (1) EP2089974A2 (ko)
JP (1) JP2010508790A (ko)
KR (1) KR101121284B1 (ko)
CN (1) CN101529726A (ko)
BR (1) BRPI0717898A2 (ko)
CA (1) CA2665647A1 (ko)
RU (1) RU2435298C2 (ko)
TW (1) TWI363540B (ko)
WO (1) WO2008057906A2 (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7949926B2 (en) * 2006-11-30 2011-05-24 Motorola Mobility, Inc. Method and apparatus for encoding and decoding data
WO2008066349A1 (en) 2006-12-01 2008-06-05 Electronics And Telecommunications Research Institute Method and apparatus for transmitting/receiving multiple codewords in sc-fdma system
US8009758B2 (en) * 2007-06-20 2011-08-30 Samsung Electronics Co., Ltd Apparatus and method for channel-interleaving and channel-deinterleaving data in a wireless communication system
US7986741B2 (en) * 2007-09-28 2011-07-26 Samsung Electronics Co., Ltd. Method and apparatus of improved circular buffer rate matching for turbo-coded MIMO-OFDM wireless systems
US8140932B2 (en) * 2007-11-26 2012-03-20 Motorola Mobility, Inc. Data interleaving circuit and method for vectorized turbo decoder
WO2009096658A1 (en) 2008-01-31 2009-08-06 Lg Electronics Inc. Method for determining transport block size and signal transmission method using the same
KR101447651B1 (ko) * 2008-07-07 2014-10-13 삼성전자주식회사 이동통신 시스템의 유효 비트 연산 장치 및 방법
WO2010104338A2 (en) * 2009-03-11 2010-09-16 Samsung Electronics Co., Ltd. Method and apparatus for allocating backhaul transmission resource in wireless communication system based on relay
US8538450B2 (en) * 2009-07-16 2013-09-17 Qualcomm Incorporated User equipment and base station behavior in response to an overload indicator
TWI381653B (zh) 2009-09-11 2013-01-01 Ind Tech Res Inst 二階重排多項式交織器位址產生裝置與方法
AU2010318464B2 (en) 2009-11-13 2015-07-09 Panasonic Intellectual Property Corporation Of America Encoding method, decoding method, coder and decoder
US8811452B2 (en) * 2009-12-08 2014-08-19 Samsung Electronics Co., Ltd. Method and apparatus for parallel processing turbo decoder
CN102792597A (zh) * 2010-03-08 2012-11-21 日本电气株式会社 纠错码解码装置、纠错码解码方法以及纠错码解码程序
US8719658B2 (en) 2010-09-09 2014-05-06 Qualcomm Incorporated Accessing memory during parallel turbo decoding
JP2012099989A (ja) * 2010-11-01 2012-05-24 Fujitsu Ltd 無線通信装置および復号処理方法
CN102082628B (zh) * 2010-11-23 2013-04-24 山东大学 一种MIMO无线通信接收机的带排序Turbo增强方法
CN102006251B (zh) * 2010-11-23 2013-06-05 山东大学 一种MIMO无线通信接收机的Turbo增强方法
CN102006250B (zh) * 2010-11-23 2013-06-05 山东大学 一种MIMO-SCFDE无线通信接收机的Turbo增强方法
US8621160B2 (en) * 2010-12-17 2013-12-31 Futurewei Technologies, Inc. System and method for contention-free memory access
US20130324138A1 (en) * 2012-05-31 2013-12-05 Mediatek Inc. Method and apparatus for performing channel coding type control
JP2014011627A (ja) * 2012-06-29 2014-01-20 Mitsubishi Electric Corp 内部インタリーブを有する誤り訂正復号装置
US20140122977A1 (en) * 2012-11-01 2014-05-01 Peter Alexander CARIDES Variable control for a forward error correction capability
RU2013125784A (ru) * 2013-06-04 2014-12-10 ЭлЭсАй Корпорейшн Устройство для обработки сигналов, переносящих кодированные с модуляцией биты четности
FR3037746B1 (fr) * 2015-06-19 2020-10-02 Inst Mines Telecom Procede de construction d'un entrelaceur pour turbo-encodeur
EP3151432B1 (en) * 2015-10-01 2018-08-01 Mitsubishi Electric R&D Centre Europe B.V. Method and a device for demodulating received symbols using a turbo-demodulation scheme comprising an iterative mimo decoder and wherein an iterative channel decoder is used in the turbo-demodulation scheme
GB2559616A (en) * 2017-02-13 2018-08-15 Accelercomm Ltd Detection circuit, receiver, communications device and method of detecting
WO2018175711A1 (en) * 2017-03-24 2018-09-27 Intel Corporation Code block segmentation and dynamic crc size adaptation for nr
CN107508604A (zh) * 2017-07-13 2017-12-22 中国电子科技集团公司第七研究所 一种Turbo码并行RP交织方法及并行RP交织器
JP6847796B2 (ja) * 2017-09-20 2021-03-24 キオクシア株式会社 メモリシステム
US10103843B1 (en) * 2017-12-08 2018-10-16 Qualcomm Incorporated On the fly interleaving/rate matching and deinterleaving/de-rate matching for 5G NR

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69912075T2 (de) * 1998-03-31 2004-05-19 Samsung Electronics Co., Ltd., Suwon TURBOENKODER/DEKODER UND VON DER SERVICEQUALITÄT (QoS) ABHÄNGIGES RAHMENVERARBEITUNGSVERFAHREN
US6381728B1 (en) * 1998-08-14 2002-04-30 Qualcomm Incorporated Partitioned interleaver memory for map decoder
KR100373965B1 (ko) * 1998-08-17 2003-02-26 휴우즈 일렉트로닉스 코오포레이션 최적 성능을 갖는 터보 코드 인터리버
US6304991B1 (en) 1998-12-04 2001-10-16 Qualcomm Incorporated Turbo code interleaver using linear congruential sequence
US6678843B2 (en) * 1999-02-18 2004-01-13 Interuniversitair Microelektronics Centrum (Imec) Method and apparatus for interleaving, deinterleaving and combined interleaving-deinterleaving
US6453442B1 (en) * 1999-08-20 2002-09-17 At&T Corp. Two stage S—Random interleaver
US6785859B2 (en) * 2000-08-04 2004-08-31 Texas Instruments Incorporated Interleaver for variable block size
US6813742B2 (en) * 2001-01-02 2004-11-02 Icomm Technologies, Inc. High speed turbo codes decoder for 3G using pipelined SISO log-map decoders architecture
US6392572B1 (en) * 2001-05-11 2002-05-21 Qualcomm Incorporated Buffer architecture for a turbo decoder
JP3987553B2 (ja) 2002-10-29 2007-10-10 サムスン エレクトロニクス カンパニー リミテッド 通信システムでインタリービングされたデータストリームのデインタリービング方法及び装置
EP1667329A1 (en) 2004-12-01 2006-06-07 Istituto Superiore Mario Boella per le Technologie dell Informazione e delle Telecommunicazioni Methods for the generation of S-random interleavers for turbo-decoders with a parallel structure
CN101116249B (zh) 2005-02-03 2010-10-13 松下电器产业株式会社 并行交织器、并行解交织器以及交织方法
US7437650B2 (en) * 2005-04-12 2008-10-14 Agere Systems Inc. Pre-emptive interleaver address generator for turbo decoders
WO2007094868A2 (en) * 2005-10-28 2007-08-23 Mojix, Inc. Rfid receiver
US7925956B2 (en) * 2006-10-03 2011-04-12 Motorola Mobility, Inc. Method and apparatus for encoding and decoding data

Also Published As

Publication number Publication date
TWI363540B (en) 2012-05-01
CA2665647A1 (en) 2008-05-15
BRPI0717898A2 (pt) 2013-11-05
US20100077265A1 (en) 2010-03-25
WO2008057906A3 (en) 2009-01-15
WO2008057906A2 (en) 2008-05-15
RU2435298C2 (ru) 2011-11-27
KR101121284B1 (ko) 2012-06-20
US8583983B2 (en) 2013-11-12
EP2089974A2 (en) 2009-08-19
TW200833039A (en) 2008-08-01
JP2010508790A (ja) 2010-03-18
CN101529726A (zh) 2009-09-09
RU2009120617A (ru) 2010-12-10

Similar Documents

Publication Publication Date Title
KR101121284B1 (ko) 고속 데이터 레이트들을 위한 터보 인터리버
US8675693B2 (en) Iterative decoding with configurable number of iterations
US8156389B2 (en) Pruned bit-reversal interleaver
US8543884B2 (en) Communications channel parallel interleaver and de-interleaver
US9240808B2 (en) Methods, apparatus, and systems for coding with constrained interleaving
US8537919B2 (en) Encoding and decoding using constrained interleaving
RU2437208C2 (ru) Способ и устройство кодирования и декодирования данных
US8532209B2 (en) Methods, apparatus, and systems for coding with constrained interleaving
KR101331516B1 (ko) 절단된 인터리버들 및 디-인터리버들을 위한 능률적인 어드레스 생성기
US8719658B2 (en) Accessing memory during parallel turbo decoding
US20150039962A1 (en) Methods, apparatus, and systems for coding with constrained interleaving
CN109768803B (zh) 通信装置、通信方法和记录介质
KR20110002071A (ko) 하드웨어 메모리를 감소시키기 위해 인터리빙된 형태로 로그 우도비들을 저장하기 위한 방법 및 장치
US20150143195A9 (en) Encoding and decoding using constrained interleaving
US20150039966A1 (en) Encoding and decoding using constrained interleaving
JP2020504932A (ja) データ伝送方法、送信デバイス、受信デバイス、及び通信システム
US20080256424A1 (en) Information bit puncturing for turbo coding with parameter selectable rate matching tailored to lower eb/no without degrading bler (block error rate) performance
KR20090044178A (ko) 통신시스템에서 병렬구조 라틴방진 인터리빙 방법 및 장치
KR100912600B1 (ko) 임의 개수의 정보 비트들을 위한 테일바이팅 터보 코드
Classon et al. Link adaptation and channel coding
de Figueiredo et al. LTE-advanced channel coding generic procedures a high-level model to guide low-level implementations
Classon et al. Channel coding and link adaptation
Giulietti et al. Turbo Coding for 4G Systems: Design issues and solutions

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150129

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee