KR20110065319A - 병렬처리 터보 복호 방법 및 장치 - Google Patents

병렬처리 터보 복호 방법 및 장치 Download PDF

Info

Publication number
KR20110065319A
KR20110065319A KR1020100108556A KR20100108556A KR20110065319A KR 20110065319 A KR20110065319 A KR 20110065319A KR 1020100108556 A KR1020100108556 A KR 1020100108556A KR 20100108556 A KR20100108556 A KR 20100108556A KR 20110065319 A KR20110065319 A KR 20110065319A
Authority
KR
South Korea
Prior art keywords
decoders
decoding
memories
input
data
Prior art date
Application number
KR1020100108556A
Other languages
English (en)
Other versions
KR101756706B1 (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 KR20110065319A publication Critical patent/KR20110065319A/ko
Application granted granted Critical
Publication of KR101756706B1 publication Critical patent/KR101756706B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L5/00Arrangements affording multiple use of the transmission path
    • H04L5/0001Arrangements for dividing the transmission path
    • H04L5/0003Two-dimensional division
    • H04L5/0005Time-frequency
    • H04L5/0007Time-frequency the frequencies being orthogonal, e.g. OFDM(A), DMT
    • 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/2739Permutation polynomial interleaver, e.g. quadratic permutation polynomial [QPP] interleaver and quadratic congruence 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
    • H03M13/2957Turbo codes and decoding
    • H03M13/2978Particular arrangement of the component decoders
    • 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/2978Particular arrangement of the component decoders
    • H03M13/2987Particular arrangement of the component decoders using more component decoders than component codes, e.g. pipelined turbo iterations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/3972Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using sliding window techniques or parallel windows
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6519Support of multiple transmission or communication standards
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6522Intended application, e.g. transmission or communication standard
    • H03M13/65253GPP LTE including E-UTRA
    • 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
    • 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
    • H04L1/0047Decoding adapted to other signal detection operation
    • H04L1/005Iterative decoding, including iteration between signal detection and decoding operation
    • 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
    • H04L1/0052Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables
    • 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/0064Concatenated codes
    • H04L1/0066Parallel concatenated codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L25/00Baseband systems
    • H04L25/02Details ; arrangements for supplying electrical power along data transmission lines
    • H04L25/03Shaping networks in transmitter or receiver, e.g. adaptive shaping networks
    • H04L25/03006Arrangements for removing intersymbol interference
    • H04L25/03171Arrangements involving maximum a posteriori probability [MAP] detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Power Engineering (AREA)
  • Mathematical Physics (AREA)
  • Error Detection And Correction (AREA)
  • Radio Transmission System (AREA)

Abstract

수신기는 부호화된 전송물을 복호할 수 있다. 수신기는 데이터를 수신하는 다수개의 수신 안테나들과, 수신된 데이터를 저장하는 복수개의 메모리들과, 터보 복호 동작을 수행하는 복수개의 복호기들을 포함한다. 각각의 복호기는 복호 매트릭스의 적어도 일부를 이용하여 수신 데이터의 적어도 일부를 복호한다. 수신기는 또한 복수개의 복호기들과 복수개의 메모리들 사이에 연결되고, LTE(long term evolution) 기반의 동작으로부터 WCDMA(wideband code division multiple access) 동작으로 복호 동작을 변화시키는 데이터 스위치를 포함한다.

Description

병렬처리 터보 복호 방법 및 장치{Method and Apparatus for Parallel Processing Turbo Decoder}
본 발명은 무선통신기술에 관한 것으로, 특히 무선통신기술의 수신 데이터 복호에 관한 것이다.
정보통신이론에서 저밀도 패리티 검사(low-density parity-check; LDPC) 부호는 전송채널을 통해 메시지를 전송하기 위한 에러수정 부호이다. LDPC 부호는 선형블록 부호의 일종이다. LDPC 부호 및 다른 에러수정 부호들은 완벽한 전송을 보장할 수는 없지만 정보 손실의 가능성을 최소화할 수 있다. LDPC는 이론적 최대치인 샤논 한계(Shannon limit)에 근접한 수준으로 데이터 전송률을 유지할 수 있는 첫 번째 부호였다. LDPC는 1963년 개발 당시만 해도 실제로 실행하기는 어려웠었다.
1993년에 발견된 터보 부호들은 1990년대 후반에 이르러 선택된 부호 방식이 되었다. 터보 부호들은 고궤도(deep-space) 위성통신 등의 용도로 사용된다. LTE(Long Term Evolution)나 LTE-advance와 같은 고비트율 셀룰러 표준들(high bit rate cellular standards)을 위해 설계된 최근의 모뎀에서, 터보 복호기는 높은 설계 복잡도와 높은 전력 소모의 문제에 직면하고 있다.
따라서 본 발명의 목적은 상기 문제점을 해결하기 위한 터보 복호 방법 및 장치를 제공하기 위한 것이다.
이러한 목적을 달성하기 위해, 본 발명은 무선통신 네트워크에서 부호화된 전송물을 복호하는 수신기를 제공한다. 상기 수신기는 데이터를 수신하는 다수개의 수신 안테나들과, 상기 수신된 데이터를 저장하는 복수개의 메모리들과, 터보 복호 동작을 수행하는 복수개의 복호기들을 포함한다. 각각의 상기 복호기는 복호 매트릭스의 적어도 일부를 이용하여 상기 수신된 데이터의 적어도 일부를 복호한다. 상기 수신기는 또한 상기 복수개의 복호기들과 상기 복수개의 메모리들 사이에 연결되고, LTE(long term evolution) 기반의 동작으로부터 WCDMA(wideband code division multiple access) 동작으로 복호 동작을 변화시키는 데이터 스위치를 포함한다.
또한, 본 발명은 무선통신 네트워크에서 부호화된 전송물을 복호하는 복호기를 제공한다. 상기 복호기는 데이터를 저장하는 복수개의 메모리들과 복수개의 단위 복호기들을 포함한다. 상기 복수개의 단위 복호기들 각각은 프로세서 어레이, 복수개의 명령들, 및 데이터 스위치를 포함한다. 상기 복수개의 명령들 중 일부는 명령 제어기에 저장되고, 상기 복수개의 명령들은 상기 복수개의 단위 복호기들이 각각 터보 복호 동작을 수행하고 복호 매트릭스의 적어도 일부를 이용하여 상기 데이터의 적어도 일부를 복호하도록 한다. 상기 데이터 스위치는 상기 복수개의 단위 복호기들과 상기 복수개의 메모리들 사이에 연결되고, LTE(long term evolution) 기반의 동작으로부터 WCDMA(wideband code division multiple access) 동작으로 복호 동작을 변화시킨다.
또한, 본 발명은 무선통신 네트워크에서 전송물을 복호하는 방법을 제공한다. 상기 방법은 전송된 데이터를 수신하는 단계를 포함하고, 상기 데이터는 복수개의 메모리들에 저장된다. 복수개의 복호기들이 병렬 터보 복호 동작들을 수행하며, 이때 상기 복수개의 복호기들은 각각 LTE(long term evolution) 기반의 동작과 WCDMA(wideband code division multiple access) 동작 중 하나로 상기 병렬 터보 복호 동작을 수행한다.
본 발명의 실시예에 따르면, 복호기는 하나의 블록에 대하여 병렬처리를 수행할 수 있다. 이에 따라, 메모리 및 처리 지연을 상당히 감소시킬 수 있고 전력소비를 줄일 수 있다. 또한, 복호기는 WCDMA 환경이나 LTE 환경에서 동작할 수 있다.
도 1은 본 발명의 실시예에 따른, 긍정확인응답/부정확인응답(ACK/NACK) 메시지들을 전송하는 무선 네트워크(100)의 개략도이다.
도 2a는 본 발명의 실시예에 따른 OFDMA 전송 경로의 사용자관점 다이어그램(high-level diagram)이다.
도 2b는 본 발명의 실시예에 따른 OFDMA 수신 경로의 사용자관점 다이어그램이다.
도 3은 본 발명의 실시예에 따른 터보 CRISP의 최상위 구성(top-level architecture)을 도시한 도면이다.
도 4는 본 발명의 실시예에 따른 중복 MAP들을 가진 복호기(400)의 예시도이다.
도 5는 본 발명의 실시예에 따른 병렬처리 LTE 스위치 구조를 포함하는 복호기(500)를 도시한 도면이다.
도 6 내지 도 13은 본 발명의 실시예에 따른 알파 및 베타 반복들을 도시한 도면들이다.
도 14는 본 발명의 실시예에 따른 QPP 셀을 도시한 도면이다.
도 15는 본 발명의 실시예에 따른 병렬 QPP 셀들(1400)의 동작 예시도이다.
도 16은 본 발명의 실시예에 따른 LTE 병렬 QPP 처리 스위치를 도시한 도면이다.
이하, 첨부 도면을 참조하여 본 발명의 실시예를 보다 상세하게 설명한다.
도 1은 본 발명의 실시예에 따른, 긍정확인응답/부정확인응답(ACK/NACK) 메시지들을 전송하는 무선 네트워크(100)의 개략도이다. 본 실시예에서, 무선 네트워크(100)는 제1 기지국(101, base station; BS), 제2 기지국(102), 제3 기지국(103) 및 그 밖의 기지국들(도시되지 않음)을 포함한다. 제1 기지국(101)은 제2 기지국(102) 및 제3 기지국(103)과 통신 가능한 상태에 있다. 또한, 제1 기지국(101)은 인터넷(130) 또는 유사한 IP 기반의 네트워크(도시되지 않음)과 통신 가능하다.
제2 기지국(102)은 해당 커버리지 영역(120) 내에 있는 복수개의 제1 가입자 단말들에게 제1 기지국(101)을 경유하는 인터넷(130)으로의 무선 광대역 접속을 제공한다. 제1 가입자 단말들은 소형사업체(SB)에 위치한 가입자 단말(111), 기업체(E)에 위치한 가입자 단말(112), 와이파이 핫스팟(HS)에 위치한 가입자 단말(113), 제1 주택(R)에 위치한 가입자 단말(114), 제2 주택(R)에 위치한 가입자 단말(115), 휴대전화기나 휴대용 컴퓨터나 PDA 등과 같은 휴대단말(M)인 가입자 단말(116)을 포함한다.
제3 기지국(103)은 해당 커버리지 영역(125) 내에 있는 복수개의 제2 가입자 단말들에게 제1 기지국(101)을 경유하는 인터넷(130)으로의 무선 광대역 접속을 제공한다. 제2 가입자 단말들은 제2 주택(R)에 위치한 가입자 단말(115)과 휴대단말(M)인 가입자 단말(116)을 포함한다. 실시예에서 제1 내지 제3 기지국들(101~103)은 OFDM(orthogonal frequency division multiplexing) 혹은 OFDMA(orthogonal frequency division multiple access) 기술을 이용해 서로간에 통신할 뿐만 아니라 가입자 단말들(111~116)과 통신한다.
제1 기지국(101)은 예시된 것보다 더 많거나 더 적은 수의 기지국들과 통신이 가능하다. 또한, 도 1에는 단지 6개의 가입자 단말들만 도시되었으나, 무선 네트워크(100)가 더 많은 가입자 단말들에 무선 광대역 접속을 제공할 수 있음은 자명하다. 한편, 제2 기지국 커버리지 영역(120)과 제3 기지국 커버리지 영역(125)의 가장자리에 동시에 위치한 가입자 단말들(115, 116)은 제2 기지국(102) 및 제3 기지국(103)과 각각 통신을 수행한다. 즉, 당업자에게 잘 알려진 바와 같이, 핸드오프 모드로 동작한다.
가입자 단말들(111~116)은 인터넷(130)을 통해 음성, 데이터, 비디오, 화상회의 및 그 밖의 광대역 서비스들을 이용할 수 있다. 실시예에서 하나 이상의 가입자 단말들(111~116)은 와이파이 무선랜의 액세스 포인트(AP)와 연관될 수 있다. 휴대단말(M)인 가입자 단말(116)은 무선 기능을 가진 랩탑 컴퓨터, PDA, 노트북, 핸드헬드 단말 등이다. 또한, 주택(R)에 위치한 가입자 단말들(114, 115)은 예를 들어 무선 기능을 가진 컴퓨터, 랩탑 컴퓨터, 게이트웨이 등이다.
도 2a는 본 발명의 실시예에 따른 OFDMA 전송 경로의 사용자관점 다이어그램(high-level diagram)이고, 도 2b는 본 발명의 실시예에 따른 OFDMA 수신 경로의 사용자관점 다이어그램이다. 도 2a 및 도 2b에서는 OFDMA 전송 경로가 기지국(102)에서 실행되고 OFDMA 수신 경로가 가입자 단말(116)에서 실행되는 것으로 가정한다. 그러나 이는 단지 설명 및 도시를 위한 것일 뿐이며, 당업자에게 자명하듯이 OFDMA 수신 경로가 기지국(102)에서 실행되고 OFDMA 전송 경로가 가입자 단말(116)에서 실행될 수도 있다.
기지국(102)에서의 전송 경로는 채널 부호/변조 블록(205), 직병렬 블록(210), 크기 N의 역고속 푸리에 변환(IFFT) 블록(215), 병직렬 블록(220), 순환전치(cyclic prefix) 블록(225), 상승변환기(230)를 포함한다. 가입자 단말(116)에서의 수신 경로는 하강변환기(255), 순환전치 제거 블록(260), 직병렬 블록(265), 크기 N의 고속 푸리에 변환(FFT) 블록(270), 병직렬 블록(275), 채널 복호/복조 블록(280)을 포함한다.
도 2a 및 도 2b에 도시된 구성요소들 중 적어도 일부는 소프트웨어로 구현될 수 있고 나머지 일부는 설정 가능한(configurable) 하드웨어에 의해 혹은 소프트웨어와의 결합에 의해 구현될 수 있다. 특히, 고속 푸리에 변환 블록과 역고속 푸리에 변환 블록은 설정 가능한 소프트웨어 알고리즘으로 구현될 수 있고, 이때 크기 N의 값은 변경 가능하다.
여기에 개시된 실시예에서는 고속 푸리에 변환과 역고속 푸리에 변환을 예시하고 있지만, 이는 단지 설명을 위한 것일 뿐이며 본 발명의 범위를 한정하고자 하는 것이 아니다. 다른 실시예에서 고속 푸리에 변환과 역고속 푸리에 변환은 각각 이산 푸리에 변환(DFT)과 역이산 푸리에 변환(IDFT)으로 대체될 수 있을 것이다. 이산 푸리에 변환과 역이산 푸리에 변환의 경우 변수 N의 값은 임의의 정수(예컨대, 1, 2, 3, 4 등)이지만, 고속 푸리에 변환과 역고속 푸리에 변환의 경우 변수 N의 값은 2의 거듭제곱에 해당하는 정수(예컨대, 1, 2, 4, 8, 16 등)이다.
기지국(102)에서 채널 부호/변조 블록(205)은 정보 비트들을 수신한 후 일련의 주파수영역의 변조 심볼들을 생성하기 위해 입력된 비트들을 부호화(예컨대, LDPC 부호화)하고 변조(예컨대, QPSK, QAM)한다. 직병렬 블록(210)은 N개의 병렬 심볼 스트림들을 생성하기 위해 직렬 변조 심볼들을 병렬 데이터로 변환한다(즉, 역다중화한다). 여기서, N은 기지국(102)과 가입자 단말(116)에서 사용되는 역고속 푸리에 변환과 고속 푸리에 변환의 크기이다. 크기 N의 역고속 푸리에 변환 블록(215)은 시간영역의 출력 신호들을 생성하기 위해 N개의 병렬 심볼 스트림들에 역고속 푸리에 변환을 수행한다. 병직렬 블록(220)은 직렬 시간영역 신호를 생성하기 위해 크기 N의 역고속 푸리에 변환 블록(215)으로부터 병렬 시간영역 출력 심볼들을 변환한다(즉, 다중화한다). 순환전치 블록(225)은 순환전치를 시간영역 신호에 삽입한다. 마지막으로, 상승변환기(230)는 순환전치 블록(225)의 출력을 무선채널 전송을 위한 RF 주파수로 변조한다(즉, 상승변환한다).
RF 전송 신호는 무선채널을 통해 가입자 단말(116)에 도달하고, 기지국(102)과 반대의 과정들의 수행된다. 하강변환기(255)는 수신 신호를 기저대역 주파수로 하강변환하고, 순환전치 제거 블록(260)은 직렬 시간영역 기저대역 신호를 생성하기 위해 순환전치를 제거한다. 직병렬 블록(265)은 시간영역 기저대역 신호를 병렬 시간대역 신호들로 변환한다. 크기 N의 고속 푸리에 변환 블록(270)은 N개의 병렬 주파수영역 신호들을 생성하기 위해 고속 푸리에 변환 알고리즘을 수행한다. 병직렬 블록(275)은 병렬 주파수영역 신호들을 일련의 변조 데이터 심볼들로 변환한다. 채널 복호/복조 블록(280)은 변조 심볼들을 원래의 입력 데이터 스트림으로 복조하고 복호한다.
각각의 기지국(101~103)은 가입자 단말들(111~116)로의 하향링크 전송과 유사한 전송 경로를 실행할 수 있고, 가입자 단말들(111~116)로부터의 상향링크 수신과 유사한 수신 경로를 실행할 수 있다. 마찬가지로, 각각의 가입자 단말(111~116)은 기지국들(101~103)로의 상향링크 전송 구조에 대응하는 전송 경로를 실행할 수 있고, 기지국들(101~103)로부터의 하향링크 수신 구조에 대응하는 수신 경로를 실행할 수 있다.
채널 복호/복조 블록(280)은 수신 데이터를 복호하며, 터보 복호 기능을 수행하는 복호기를 포함한다. 일부 실시예들에서 채널 복호/복조 블록(280)은 하나 이상의 CRISP(Context-based operation Reconfigurable Instruction Set Processor)들을 포함한다. CRISP 프로세서는 미국특허출원 제11,123,313호(출원일: 2005.5.6, 발명의 명칭: CONTEXT-BASED OPERATION RECONFIGURABLE INSTRUCTION SET PROCESSOR AND METHOD OF OPERATION), 미국특허 제7,483,933호(등록일: 2009.1.27, 발명의 명칭: CORRELATION ARCHITECTURE FOR USE IN SOFTWARE-DEFINED RADIO SYSTEMS), 미국특허출원 제11,142,504호(출원일: 2005.6.1, 발명의 명칭: MULTISTANDARD SDR ARCHITECTURE USING CONTEXT-BASED OPERATION RECONFIGURABLE INSTRUCTION SET PROCESSORS), 미국특허 제7,571,369호로 등록된 미국특허출원 제11,225,479호(출원일: 2005.9.13, 발명의 명칭: TURBO CODE DECODER ARCHITECTURE FOR USE IN SOFTWARE-DEFINED RADIO SYSTEMS), 미국특허출원 제11,501,577호(출원일 2006.8.9, 발명의 명칭:MULTI-CODE CORRELATION ARCHITECTURE FOR USE IN SOFTWARE-DEFINED RADIO SYSTEMS)에 기재되어 있다. 따라서 본 명세서에서는 이에 대한 기재를 생략한다.
도 3은 본 발명의 실시예에 따른 터보 CRISP의 최상위 구성(top-level architecture)을 도시한 도면이다. 도 3에 도시된 터보 CRISP의 최상위 구성(300)은 단지 예시를 위한 실시예이며, 본 발명의 범위를 벗어나지 않는 한, 터보 CRISP의 최상위 구성(300)의 다른 실시예들도 사용될 수 있다.
도 3에 도시된 터보 CRISP(300)는 설명을 위한 예일 뿐 본 발명의 범위를 한정하고자 하는 것이 아니다. 터보 CRISP(300)는 호스트 인터페이스(305)와 다수의 MAP(Maximum A Posteriori) 인터페이스들을 포함할 수 있다. 도 3의 예에서는 MAP0(310)의 인터페이스들이 도시되어 있다. 비록 MAP1(315), MAP2(320), MAP3(325)의 인터페이스들이 도시되지는 않았지만, 이들 인터페이스들은 MAP0의 신호 명칭에서 _0 대신에 각각 _1, _2, _3로 바꾸면 MAP0(310) 인터페이스들과 동일하다. 호스트 인터페이스와 MAP0 인터페이스들이 표 1에 기재되어 있다.
신호 방향 고정값 설명
CLK 입력 Clock
RESET 입력 Reset
HOST_ADDR[15:0] 입력 Host Address
HOST_RD 입력 Host Read Enable
HOST_WR 입력 GND Host Write Enable
HOST_WR_DATA[31:0] 입력 GND Host Write Data
HOST_RD_DATA[31:0] 출력 Host Read Data
HOST_0_CS 입력 MAP0 Chip Select
HOST_1_CS 입력 MAP1 Chip Select
HOST_2_CS 입력 MAP2 Chip Select
HOST_3_CS 입력 MAP3 Chip Select
HOST_REG_CS 입력 GND Register Chip Select
HOST_PR_CS 입력 GND Program Memory Chip Select
HOST_IL_CS 입력 GND Interleaver Table Chip Select
HOST_OUT_CS 입력 Output Buffer Chip Select
PAR_EN_IN 입력 VCC Parallel Enable
THOST_EN 입력 GND Ext. Host Enable
BLOCK_SIZE_IN_0[15:0] 입력 MAP0 Block Size
MODE_IN_0[3:0] 입력 MAP0 Mode Select
LEARN_LEN_IN_0[7:0] 입력 MAP0 Learning Length
ITER_NUM_IN_0[7:0] 입력 MAP0 No. of Iterations
SCALE_IN_0[1:0] 입력 MAP0 Lambda Scaling
EARLY_STOP_IN_0 입력 MAP0 Early Stop Enable
TURBO_START_IN_0 입력 MAP0 Turbo Start
CRC_ENABLE_IN_0 입력 MAP0 CRC Enable
CRC_SEL_IN_0 입력 MAP0 CRC Type Select
TCRC_VALID_0 출력 MAP0 CRC Valid
TIN_ADDR_0[15:0] 출력 MAP0 Input Data Address
TIN_RD_0 출력 MAP0 Input Data Read Enable
TIN_CS_0 출력 MAP0 Non-Interleaved Input Chip Select
TIN_IL_CS_0 출력 MAP0 Interleaved Input Chip Select
TIN_DATA_0[31:0] 입력 MAP0 Input Data
TDONE_INT_0 출력 MAP0 Done Interrupt
TREADY_0 출력 MAP0 Ready
TGO_0 출력 MAP0 GO
IL_READY_0 출력 I/L 0 Ready
TEN_AUTO_0 입력 VCC Process 0 enable
BLOCK_SIZE_IN_1[15:0] 입력 MAP1 Block Size
MODE_IN_1[3:0] 입력 MAP1 Mode Select
LEARN_LEN_IN_1[7:0] 입력 MAP1 Learning Length
ITER_NUM_IN_1[7:0] 입력 MAP1 No. of Iterations
SCALE_IN_1[1:0] 입력 MAP1 Lambda Scaling
EARLY_STOP_IN_1 입력 MAP1 Early Stop Enable
TURBO_START_IN_1 입력 MAP1 Turbo Start
CRC_ENABLE_IN_1 입력 MAP1 CRC Enable
CRC_SEL_IN_1 입력 MAP1 CRC Type Select
TCRC_VALID_1 출력 MAP1 CRC Valid
TIN_ADDR_1[15:0] 출력 MAP1 Input Data Address
TIN_RD_1 출력 MAP1 Input Data Read Enable
TIN_CS_1 출력 MAP1 Non-Interleaved Input Chip Select
TIN_IL_CS_1 출력 MAP1 Interleaved Input Chip Select
TIN_DATA_1[31:0] 입력 MAP1 Input Data
TDONE_INT_1 출력 MAP1 Done Interrupt
TREADY_1 출력 MAP1 Ready
TGO_1 출력 MAP1 GO
IL_READY_1 출력 I/L 1 Ready
TEN_AUTO_1 입력 VCC Process 1 enable
BLOCK_SIZE_IN_2[15:0] 입력 MAP2 Block Size
MODE_IN_2[3:0] 입력 MAP2 Mode Select
LEARN_LEN_IN_2[7:0] 입력 MAP2 Learning Length
ITER_NUM_IN_2[7:0] 입력 MAP2 No. of Iterations
SCALE_IN_2[1:0] 입력 MAP2 Lambda Scaling
EARLY_STOP_IN_2 입력 MAP2 Early Stop Enable
TURBO_START_IN_2 입력 MAP2 Turbo Start
CRC_ENABLE_IN_2 입력 MAP2 CRC Enable
CRC_SEL_IN_2 입력 MAP2 CRC Type Select
TCRC_VALID_2 출력 MAP2 CRC Valid
TIN_ADDR_2[15:0] 출력 MAP2 Input Data Address
TIN_RD_2 출력 MAP2 Input Data Read Enable
TIN_CS_2 출력 MAP2 Non-Interleaved Input Chip Select
TIN_IL_CS_2 출력 MAP2 Interleaved Input Chip Select
TIN_DATA_2[31:0] 입력 MAP2 Input Data
TDONE_INT_2 출력 MAP2 Done Interrupt
TREADY_2 출력 MAP2 Ready
TGO_2 출력 MAP2 GO
IL_READY_2 출력 I/L 2 Ready
TEN_AUTO_2 입력 VCC Process 2 enable
BLOCK_SIZE_IN_3[15:0] 입력 MAP3 Block Size
MODE_IN_3[3:0] 입력 MAP3 Mode Select
LEARN_LEN_IN_3[7:0] 입력 MAP3 Learning Length
ITER_NUM_IN_3[7:0] 입력 MAP3 No. of Iterations
SCALE_IN_3[1:0] 입력 MAP3 Lambda Scaling
EARLY_STOP_IN_3 입력 MAP3 Early Stop Enable
TURBO_START_IN_3 입력 MAP3 Turbo Start
CRC_ENABLE_IN_3 입력 MAP3 CRC Enable
CRC_SEL_IN_3 입력 MAP3 CRC Type Select
TCRC_VALID_3 출력 MAP3 CRC Valid
TIN_ADDR_3[15:0] 출력 MAP3 Input Data Address
TIN_RD_3 출력 MAP3 Input Data Read Enable
TIN_CS_3 출력 MAP3 Non-Interleaved Input Chip Select
TIN_IL_CS_3 출력 MAP3 Interleaved Input Chip Select
TIN_DATA_3[31:0] 입력 MAP3 Input Data
TDONE_INT_3 출력 MAP3 Done Interrupt
TREADY_3 출력 MAP3 Ready
TGO_3 출력 MAP3 GO
IL_READY_3 출력 I/L 3 Ready
TEN_AUTO_3 입력 VCC Process 3 enable
TIN_ADDR_TAIL[15:0] 출력 TAIL Input Data Address
TIN_RD_TAIL 출력 TAIL Input Data Read Enable
TIN_CS_TAIL 출력 TAIL Non-Interleaved Input Chip Select
TIN_IL_CS_TAIL 출력 TAIL Interleaved Input Chip Select
TIN_DATA_TAIL[31:0] 입력 TAIL Input Data
클록 신호(CLK, 330)의 상승 에지(rising edge)는 터보 CRISP(300)의 모든 동기화된 로직을 동작시키기 위해 사용된다. 리셋 신호(331)는 액티브 하이 비동기 리셋(active high asynchronous reset)이다. 리셋 신호(331)는 모든 로직과 레지스터들을 그들의 초기 시동값으로 되돌린다. 리셋 신호는 언제든지 활성 상태로 설정될 수 있지만(즉, asserted), 클록 신호(330)의 상승 에지와 동기화되어 비활성화 상태로 설정되어야 한다(즉, de-asserted).
호스트 인터페이스(305)의 신호들에 의해 외부 시스템 또는 호스트 프로세서(도시되지 않음)는 레지스터들, 프로그램 메모리, 인터리버(interleaver) 메모리, 출력 버퍼 메모리를 읽고 쓰기 위한 목적으로 터보 CRISP(300)와 통신한다. 두 개의 칩 선택 신호들은 읽기 및 쓰기 액세스를 수행하도록 활성 상태로 설정된다. 첫 번째 칩 선택 신호는 어느 MAP 복호기(310~325)가 액세스되는지 가리키고, 두 번째 칩 선택 신호는 선택된 MAP 복호기(310~325) 내의 어느 어드레스 공간(레지스터들, 프로그램 메모리, 인터리버 메모리, 또는 출력 버퍼 메모리)이 액세스되는지 가리킨다.
호스트 어드레스(332)는 호스트가 읽기 또는 쓰기 동작을 위해 액세스하는 레지스터의 오프셋 주소 또는 메모리 위치이다.
호스트 리드 인에이블(333, host read enable)은 액티브 하이 리드 인에이블 신호이다. 예를 들어, 만약 호스트가 하나의 클록 주기를 위해 이 신호를 활성 상태로 설정하면, 터보 CRISP(300)는 다음 클록 주기 동안 유효 데이터를 출력할 것이다.
호스트 라이트 인에이블(334, host write enable)은 액티브 하이 라이트 인에이블 신호이다. 예를 들어, HOST_WR이 활성 상태로 설정된 클록 주기 동안에 HOST_WR_DATA의 데이터는 칩 선택 신호 및 HOST_ADDR에 의해 선택된 메모리 또는 레지스터들에 쓰여질 것이다.
MAP0 호스트 칩 선택(335)은 터보CRISP MAP0(310)을 위한 액티브 하이 칩 선택 신호이다. 이 신호를 활성 상태로 설정하면 MAP0(310)의 레지스터들이나 메모리를 읽거나 쓸 수 있다.
MAP1 호스트 칩 선택은 터보CRISP MAP1(315)을 위한 액티브 하이 칩 선택 신호이다. 이 신호를 활성 상태로 설정하면 MAP1(315)의 레지스터들이나 메모리를 읽거나 쓸 수 있다.
MAP2 호스트 칩 선택은 터보CRISP MAP2(320)를 위한 액티브 하이 칩 선택 신호이다. 이 신호를 활성 상태로 설정하면 MAP2(320)의 레지스터들이나 메모리를 읽거나 쓸 수 있다.
MAP3 호스트 칩 선택은 터보CRISP MAP3(325)을 위한 액티브 하이 칩 선택 신호이다. 이 신호를 활성 상태로 설정하면 MAP2(325)의 레지스터들이나 메모리를 읽거나 쓸 수 있다.
레지스터 칩 선택(336)은 호스트가 레지스터 어드레스 공간에 액세스하는 것을 가리키는 액티브 하이 칩 선택 신호이다. 액티브HOST_n_CS 신호에 의해 선택된 MAP 복호기가 액세스될 것이다.
프로그램 메모리 칩 선택(337)은 호스트가 프로그램 메모리 어드레스 공간에 액세스하는 것을 가리키는 액티브 하이 칩 선택 신호이다. 액티브 HOST_n_CS 신호에 의해 선택된 MAP 복호기가 액세스될 것이다.
인터리버 메모리 칩 선택(338)은 호스트가 인터리버 메모리 어드레스 공간에 액세스하는 것을 가리키는 액티브 하이 칩 선택 신호이다. 액티브 HOST_n_CS 신호에 의해 선택된 MAP 복호기가 액세스될 것이다.
출력 버퍼 칩 선택(339)은 호스트가 출력 버퍼 어드레스 공간에 액세스하는 것을 가리키는 액티브 하이 칩 선택 신호이다. 액티브HOST_n_CS 신호에 의해 선택된 MAP 복호기가 액세스될 것이다.
호스트 쓰기 데이터(340)는 호스트가 레지스터나 메모리에 쓰여지는 데이터이다. 이 데이터는 HOST_WR이 하이일 때 클록 신호의 상승 에지에서 쓰여진다.
터보 CRISP(300)는 HOST_RD가 활성 상태로 설정된 클록 주기에서 호스트 읽기 데이터(341)를 출력한다.
터보 CRISP(300)는 복호된 하드 비트들을 저장하는 내부 버퍼들(도시되지 않음)을 포함한다. 이 버퍼들은 호스트 어드레스 버스를 사용하여 액세스된다. 각각의 어드레스는 복호 데이터의 32비트 리틀 엔디안 워드(little endian word)를 액세스한다.
도 4는 본 발명의 실시예에 따른 중복 MAP들을 가진 복호기(400)의 예시도이다. 복호기(400)는 WCDMA(Wideband Code Division Multiple Access) 환경에서의 복호를 위해 사용될 수 있다. 도 4에 도시된 예에서, 복호기(400)는 4개의 MAP 복호기를 포함한다. 복호기(400)는 MAP(310~325)마다 하나씩의 인터리버(405, interleaver; I/L)를 포함한다. MAP(310~325)은 독립적인 동작을 위해 각각 하나씩의 메모리(410~425)에 연결된다. 즉, 각각의 MAP(310~325)은 연결된 각각의 메모리(410~425)를 사용한다. 구체적으로, MAP0(310)은 메모리 Mem0(410)에 연결되어 이를 사용하고, MAP1(315)은 메모리 Mem1(415)에 연결되어 이를 사용한다. 또한, MAP2(320)는 메모리 Mem2(420)에 연결되어 이를 사용하고, MAP3(325)은 메모리 Mem3(425)에 연결되어 이를 사용한다. 각각의 MAP(310~325)은 데이터의 각 블록을 처리한다. 따라서 다수의 블록들이 병렬로 처리된다. 그러나 터보 복호기는 블록 부호이고, 하나의 블록을 여러 개의 서브블록으로 분할하는 것은(1개의 MAP 복호기당 1개의 서브블록) 전체 블록에 대해 BER/FER(Bit Error Rate/Frame Error Rate) 성능 저하를 초래할 수 있다. 또한, 함께 해제되어야 할 4개의 블록들을 버퍼링하기 때문에 그 결과 지연(latency)이 발생할 수 있다. 예를 들어, 각 메모리(410~425)는 모든 블록들이 처리되어 해제 준비가 될 때까지 블록들을 버퍼하기 위해 필요하다.
LTE 표준의 터보 복호기들은 높은 비트율(Cat. 5 3GPP release 8 LTE의 경우 300Mbps까지, 3GPP Rel. 10 LTE/ADV의 경우 1Gbps까지)을 달성하기 위해 필요하다. 또한, 이와 같이 높은 비트율을 달성하기 위해 QPP(quadratic permutation polynomial) 인터리버가 터보 복호기 병렬처리를 가능하게 한다. QPP 인터리버를 사용하면 LTE 터보 복호가 하나의 데이터 블록에 대해 다수의 MAP 복호기들을 쉽게 병렬로 수행할 수 있다(도 6 내지 도 13을 참조하여 다시 설명될 것이다).
본 발명의 실시예들은 다수의 MAP 복호기들(M)의 병렬처리가 성능 저하 없이 동시에 진행될 수 있게 하는 새로운 구성들을 제공한다. 더욱이, 본 발명의 실시예들은 효율적인 병렬처리 터보 복호기를 가능하게 하는 효율적인 QPP 인터리버 셀 구성을 제공할 뿐만 아니라, 크기 k의 블록을 처리하기 위해 병렬 MAP 복호기 장치들을 사용하는 시스템의 QPP 인터리버 하드웨어 셀을 활용하는 방법들을 제공한다.
도 5는 본 발명의 실시예에 따른 병렬처리 LTE 스위치 구조를 포함하는 복호기(500)를 도시한 도면이다. 도 5에 도시된 복호기(500)의 실시예는 단지 설명을 위한 예시일 뿐, 본 발명의 범위를 벗어나지 않는 범위에서 다른 실시예들도 사용될 수 있다.
복호기(500)는 인터리버 블록(305), 다수의 MAP 복호기들(310~325), 다수의 메모리 블록들(410~425)을 포함한다. 또한, 복호기(500)는 LTE 스위치 구조(505, LTE switch fabric)를 더 포함한다.
복호기(500)는 하나의 블록에 대하여 병렬처리를 수행할 수 있다. 이에 따라, 다수의 블록들을 병렬로 처리하는 다수의 MAP 복호기들(310~325)을 포함하는 중복 MAP 구성의 복호기(400)와 비교하여 메모리 및 처리 지연을 상당히 감소시킬 수 있고 전력소비를 줄일 수 있다. 또한, 복호기(500)는 WCDMA 환경이나 LTE 환경에서 동작할 수 있다.
예를 들어, 복호기(500)는 WCDMA와 LTE 동작모드간의 스위칭이 가능하다. LTE 스위치 구조(505)는 병렬처리를 위해 스위칭을 수행하도록 작동되거나 복호기(500)가 전술한 복호기(400)와 유사하게 동작하도록 작동되지 않을 수 있다. LTE 동작모드에서 스위치 구조(505)는 각각의 MAP 복호기(310~325)가 각각의 메모리(410~425)를 독립적으로 사용하여 복호를 수행하도록 구성될 수 있다. 아울러, LTE 동작모드에서 스위치 구조(505)는 각각의 MAP 복호기(310~325)가 하나 이상의 메모리(410~425)와의 교차연결을 통해 병렬로 복호를 수행하도록 구성될 수 있다. 스위치 구조(505)는 각각의 MAP 복호기(310~325)가 다른 MAP 복호기(310~325)와 동작상의 충돌 없이 한 비트 또는 두 비트(예컨대, 하나의 메모리로부터 두 개의 데이터 비트 또는 두 개의 메모리들로부터 각각 하나의 데이터 비트)를 수신하도록 동작들을 동기화한다. 따라서 스위치 구조(505)는 각각의 MAP 복호기(310~325)로부터 경합이 없는 동작상태를 유지하도록 구성된다.
각각의 MAP 복호기(310~325)는 다수의 신호들을 수신하기에 적합한 다수의 인터페이스들을 포함한다. 이 신호들은 외부 메모리 버퍼로부터의 부호화된 심볼들을 읽을 수 있도록 터보 CRISP에 의해 사용된다. 각 MAP 복호기(310~325)의 인터페이스는 표 2에 기재된(그리고 도 3에 도시된) 것과 동일한 신호들을 가진다.
신호 방향 설명
TIN_ADDR[15:0] 출력 Input Data Address: 터보 CRISP가 입력 버퍼로부터 읽는 입력 심볼들의 어드레스
TIN_RD 출력 Input Data Read Enable: 터보 CRISP가 입력 버퍼로부터 읽고 있음을 가리키는 액티브 하이 리드 인에이블
TIN_CS 출력 Non-Interleaved Input Chip Select: 인터리브되지 않은 입력 심볼들을 위한 액티브 하이칩 선택
TIN_IL_CS 출력 Interleaved Input Chip Select: 인터리브된 입력 심볼들을 위한 액티브 하이 칩 선택
TIN_DATA[31:0] 입력 Input Data: 입력 버퍼로부터의 심볼 데이터. 터보 CRISP는 TIN_RD가 활성 상태로 설정될 때 클록 신호의 상승 에지에서 이 데이터를 샘플링.
또한, 각각의 MAP 복호기(310~325)는 표 3에 기재된(그리고 도 3에 도시된) 바와 같이 터보 CRISP를 제어하거나 활성화하는 신호들을 수신하는 제어 입력들을 포함한다.
신호 방향 설명
BLOCK_SIZE_IN[15:0] 입력 Block Size - 터보 블록 크기를 정의
MODE_IN[3:0] 입력 Mode Select - 다음과 같이 터보 CRISP의 모드를 선택:
1 - WCDMA
2 - LTE
Otherwise - Reserved
LEARN_LEN_IN[7:0] 입력 Learning Length - segmentation (WCDMA or LTE) 또는 병렬처리(LTE)의 경우 learning length를 정의
ITER_NUM_IN[7:0] 입력 No. of Iterations - half iterations의 수를 정의 (8’h0 means 1 half iteration and so on)
SCALE_IN[1:0] 입력 Lambda Scaling - lambda scaling factor를 정의 (both MAPs):
0 No scaling
1 0.875
2 0.75
3 0.5
EARLY_STOP_IN 입력 Early Stop Enable - hard early stopping을 작동시킴
CRC_ENABLE_IN 입력 CRC Enable - CRC 검사 모드를 작동시킴(Early Stop이 작동될 때에 한함)
CRC_SEL_IN 입력 CRC Select - CRC의 유형을 선택:
0 CRC-A
1 CRC-B
TURBO_START_IN 입력 Turbo Start - 터보 복호기를 시동
PAR_EN_IN 입력 병렬처리 인에이블
TEN_AUTO 입력 Turbo Automatic Enable: CRISP를 활성화하고 복호 과정을 시작하기 위해 사용될 수 있는 액티브 하이 입력
복호기들(310~325), 메모리들(410~425) 및 LTE 스위치의 각각은 도 3에 도시된 바와 같은 공통 병렬처리 인에이블(510, PAR_EN_IN)에 즉각 응답한다. 이러한 병렬처리 인에이블(510)은 LTE 스위치 구조(505)가 WCDMA 어플리케이션들을 위해 스위칭하지 않고 LTE 어플리케이션들에서 작동되도록 설정될 수 있다. 병렬처리 인에이블(510)은 자신이 수신한 신호를 토대로 LTE 스위치 구조(505)를 설정한다. 일부 실시예들에서, 병렬처리 인에이블(510)은 수신 신호와 대응 블록 크기에 기초하여 LTE 스위치 구조(505)를 설정한다. 예를 들어, 병렬처리 인에이블(510)은 표 4에 기초하여 LTE 스위치 구조(505)를 설정할 수 있다. 표 4에 기재된 블록 크기들은 단지 설명을 위한 예시일 뿐, 다른 블록 크기들도 사용될 수 있음은 자명하다.
WCDMA LTE
PAR_EN_IN = 0 No Switch <512 <896 <1792 <3584 <=6144
No Switch
Seg=1
No Switch
Seg=2
No Switch
Seg=4
No Switch
Seg=8
No Switch
Seg=16
PAR_EN_IN = 1 No Switch <512 <1024 <1792 <3584 <=6144
No Switch
Seg=1
No Switch
Seg=2 (<896),
Seg=4 (<1024)
Switch
Seg=1
Switch
Seg=2
Switch
Seg=4
표 4에 예시된 바와 같이, 블록 크기가 512인 경우, LTE 스위치 구조(505)는 작동되지 않고 MAP 복호기들(310~325)은 블록들을 직접 처리한다. 블록 크기가 896인 경우, LTE 스위치 구조(505)는 작동되지 않고 MAP 복호기들(310~325)은 블록들을 2개의 세그먼트들로 분할한다. 예를 들어, MAP0(310)의 경우, 블록은 메모리(410) 내에서 크기가 448인 2개의 세그먼트들로 분할된다. 그리고 MAP0(310)은 제1 동작에서 첫 번째 세그먼트를 처리하고 제2 동작에서 두 번째 세그먼트를 처리함으로써 블록을 두 번 처리한다. 분할 개수는 블록의 크기가 클수록 증가할 수 있다. 표 5는 WCDMA의 경우 분할 개수의 예이다.
블록 크기 범위(bits) 40 - 509 510 - 895 896 1791 1792 3583 3584 - 5114
분할 개수 1 2 4 8 16
그러나 지정된 크기나 값에서 또는 미리 결정된 다른 조건 하에서, LTE 스위치 구조(505)는 작동한다. 예를 들어, 블록 크기가 1792일 때, LTE 스위치 구조(505)가 작동하고 MAP 복호기들(310~325)은 메모리들(410~425)을 사용하여 블록들을 처리한다. 그리고 각각의 MAP 복호기(310~325)는 하나 이상의 메모리(410~425)를 사용하여 크기가 448인 서브블록과 같은 블록의 일부를 처리할 수 있다. 또한, 블록 크기가 6144인 경우와 같이 크기가 큰 블록도 분할될 수 있다. 이때, LTE 스위치 구조(505)가 작동하고 MAP 복호기들(310~325)은 블록들을 4개의 세그먼트들로 분할한다. 그리고 각각의 MAP 복호기(310~325)는 하나 이상의 메모리(410~425)를 사용하여 세그먼트들로 블록의 일부를 처리할 수 있다. 예를 들어, MAP0는 하나 이상의 메모리(410~425)를 사용하여 크기가 384인 4개의 세그먼트들로 크기가 1536인 서브블록을 처리할 수 있다. MAP0(310)은 제1 동작에서 첫 번째 세그먼트를 처리하고, 제2 동작에서 두 번째 세그먼트를 처리하고, 제3 동작에서 세 번째 세그먼트를 처리하고, 제4 동작에서 네 번째 세그먼트를 처리함으로써 블록을 네 번 처리한다.
병렬 MAP 복호기들(310~325)은 하나의 블록을 처리한다. 여기에 개시된 터보 CRISP 복호기(300)의 일부 실시예들은, 도 6 내지 도 11에 도시되고 LTE 옵션 1로 지칭되는 바와 같이, 다음 서브블록의 첫째 세그먼트를 쓰기 위해 각 서브블록의 말미에서 베타 학습기(learning period of Beta)에 의존하며, 또한 각 서브블록의 초기에서 알파 학습(learning Alpha)을 추가한다. 일부 실시예들에서, 터보 CRISP 복호기(300)는 또한 연속한 서브블록들 간에 알파/베타 값들의 캐스케이딩(cascading)을 지원한다. 그러나 게이트 카운트(gate count)에 큰 이점이 있는 캐스케이딩이 필요하지 않으면 중복된 세그먼트 처리로 인해 처리능력이 향상될 수 있다.
도 6 내지 도 8은 어떻게 터보 CRISP 복호기(300)가 병렬로 동작하는 4개의 MAP 복호기들(310~325)을 사용하여 256비트 크기의 블록을 처리하는지 보여준다. 도 6은 LTE 256비트의 부분 반복 0(Half Iteration #0)을 도시하고 있다. 도 7은 LTE 256비트의 부분 반복 1을 도시하고 있다. 도 8은 LTE 256비트의 부분 반복 2 이상을 도시하고 있다. 각각의 MAP 복호기(310~325)는 64비트(=256/4)와 함께 학습용 꼬리(tail for training)를 처리한다. 도 6 내지 도 8의 예들에서, 꼬리는 32비트(=16+16)이고, W는 람다 쓰기(Lambda write)이고, X는 람다 쓰지 않기(no-Lambda write)이며, All은 모든 상태가 동일 값으로 초기화됨을 나타낸다. 첫 번째 16비트가 람다(λ)를 쓰기 위해(직전 MAP으로부터의 알파(α)를 이용하여) 사용되는데 비하여, 나머지 16비트는 단지 베타(β) 학습을 위해 사용된다. 이 경우 알파의 캐스케이딩은 선택사항이다. 홀수의 부분 반복을 위해, 도시된 람다 어드레스는 먼저 인터리브된 어드레스와 관련된다.
일부 실시예들에서, 터보 CRISP 복호기(300)는 첫 번째 두 개의 부분 반복들(비-인터리버 세션 및 인터리버 세션)에서 캐스케이딩을 초기화할 때 두 세션들에 대해 All 상태로 초기화한다. 하지만 이는 여전히 모든 블록 처리에 대해 성능 저하를 유발할 수 있다. All 상태에서는 모든 상태들이 동일 값으로 초기화된다. 일부 실시예들에서, 터보 CRISP 복호기(300)는 블록 처리 전에 2개의 서브블록간의 경계에서 소규모 학습기를 수행하고 각각의 첫 번째 두 개의 부분 반복들에 대하여 알파 및/또는 베타 상태 값들을 기록한다. 터보 CRISP 복호기(300)는 캐스케이딩을 초기화하기 위해 이 값들을 이용한다.
LTE 옵션 1을 사용하면, 터보 CRISP 복호기(300)는 MAP들 사이의 알파 캐스케이딩을 필요로 하지 않는다. 알파 및 베타는 학습기(선택사항으로서 알파/베타 캐스케이딩을 가진)를 포함한다. 그러나 시스템이 모든 MAP 복호기들(310~325) 사이의 동기화를 유지하기 위해 학습기는 같은 크기의 세그먼트이다. 대부분의 경우, 학습기는 성능 저하 없이 하나의 세그먼트보다 훨씬 작을 수 있다.
여기에 개시된 터보 CRISP 복호기(300)의 일부 실시예들은, 도 12 내지 도 13에 도시되고 LTE 옵션 2로 지칭되는 바와 같이, 서브블록들 간의 캐스케이딩에 의존한다. 캐스케이딩은 알파 캐스케이딩만이거나 베타 캐스케이딩만이거나 또는 둘 모두일 수 있다. 캐스케이딩은 각각의 서브블록마다 초기 알파/베타가 이전/이후 서브블록 마지막 상태 값들로부터의 이전 전체 반복(previous full iteration)으로부터 생겨남을 의미한다. 다른 상태 값들은 비-인터리버 세션 및 인터리버 세션들을 위해 존재할 수 있다. 따라서 상태들은 두 세션들에 따로 저장된다. 서브블록 간의 캐스케이딩에 의해 BER/FER 성능은 전체 블록을 처리하는 것과 같이 회복될 수 있다.
여기서, 각각의 MAP 복호기(310~325)는 N/4 비트와 함께 학습용 꼬리를 처리한다. 예를 들어, 도 12에서, 학습기는 32비트이다. 캐스케이딩은 각각의 MAP 처리의 초기에서 신뢰할 수 있는 알파값들을 유지하기 위해 연결된다. LTE 옵션 2는 세그먼트 크기(T)에 상관없이 학습기(L)의 어떤 크기라도 허용하며, 그에 따라 LTE 옵션 1에서와 같이 큰 학습기를 피할 수 있다.
오버헤드 없이 경합이 없는 상태를 확보하기 위해, MAP 복호기들(310~325)은 동시에 그리고 동기화되어 동작한다. MAP 복호기들(310~325)은 동시에 작동한다(일제히 tgo=1). MAP 복호기들(310~325) 간의 지연 없는 병렬처리로 인하여, 심지어 캐스케이딩을 사용하는 경우라도, 첫 번째 두 개의 부분 반복들에 대하여, MAP1(315), MAP2(320) 및 MAP3(325)는 알파 처리를 위해 초기 상태가 All로부터 작동한다. MAP0(310)의 알파 처리는 상태를 0으로 초기화한다. 베타 처리 초기 상태는MAP0(310), MAP1(315) 및 MAP2(320) 모두에 대해 동일하다. MAP3(325)의 베타 처리는 상태를 0으로 초기화한다. 각각의 MAP 복호기(310~325)가 하나 이상의 세그먼트를 처리하는 경우, 직전 MAP에서의 베타 학습기는 다음 MAP에서 계산된 새로운 베타에 이미 수행된다.
터보 CRISP 복호기(300)는 서브블록의 범위를 초과하는 동기 병렬처리(Beyond Sub Block Synchronous parallel processing)를 수행한다. MAP 복호기들(310~325) 사이의 동기 처리를 유지하기 위해, 그리고 블록 말미의 꼬리 비트들로 인해, 마지막 서브블록을 처리하는 MAP3(325)와 같은 마지막 MAP 복호기는 꼬리 비트들에 특수 처리를 수행하고 나머지 MAP 복호기들(310~320과 같은)과 간섭 없이 동기를 유지한다.
상기 블록 크기의 람다 어드레스들에 대하여, 인터리버 테이블/장치는 블록 크기 값을 추가하면서 0으로 넘길 것이다. 예를 들어, 256비트 블록 크기의 경우, 어드레스 16’h0000은 16’h0100이 될 것이다. 쓰기 스위치는 그 경우들을 검출하고 어떤 메모리 블록에도 이들을 스위치하지 않을 것이다(실제 쓰기는 발생하지 않을 것이다). 여분의 로직에 쓰기는 선택사항이다. 읽기 스위치는 그 경우들을 검출하고 만일 꼬리 비트가 아니라면 "0" 값들(16’h0180과 같은)을 읽기 버스에 둘 것이다. 꼬리 비트들의 경우, 읽기 스위치는 16’h0000을 읽기 버스에 둘 것이다. 6개의 꼬리 비트 어드레스들(256비트의 경우, 비-인터리버에 대해 3개의 어드레스들($100, $0101, $0102), 인터리버에 대해 인터리버 테이블의 첫 번째 3개의 어드레스들에 16’h0100을 더한 것)이 검출된다. 또한, 여분의 로직으로부터 읽기는 선행사항이다.
4-MAP 솔루션에 대한 입력 버퍼는 인터리브되지 않은 외부 메모리들과 같은 방식으로 어드레스된 4개의 서브블록들로 분할된다. 입력 스위치는 데이터(인터리브되지 않은) 메모리들에 순차적으로 액세스함으로써 외부(람다) 스위치와 다르다. 블록 크기를 초과하는 경우에도 동일하게 고려될 수 있다. 블록 크기를 초과하는 데이터는 "0"으로 고정될 것이다($7F). 특별한 꼬리 입력 메모리는 별도로 실행될 수 있다(4-MAP 솔루션에서 다섯 번째 메모리).
도 14는 본 발명의 실시예에 따른 QPP 셀을 도시한 도면이다. 도 14에 도시된 QPP 셀(1400)의 실시예는 단지 설명을 위한 예시일 뿐, 다른 실시예들도 사용될 수 있다.
일부 실시예들에서, QPP 인터리버 장치는 LTE 병렬처리 터보 복호기(300)를 지원한다. QPP 인터리버는 하드웨어로 실행되고, 따라서 DSP 계산을 저장할 뿐 아니라 핸드셋에 메모리를 저장할 수 있다(특히 50Mbps 비트율을 달성하는 병렬처리의 경우에).
QPP 인터리버는 다음에 바탕을 둔다. 정보 블록 길이 K가 주어진 경우, x번째 인터리브된 출력은 수학식 1에 의해 주어진 어드레스로부터 읽힌다.
Figure pat00001
여기서, 0 ≤ x, f1, f2 < K이다. 만약 K가 8의 배수라면, f1과 K의 최대공약수는 1이어야 하고 K의 소인수는 f2를 나눠야 한다. 예를 들어, K가 320(=26×5)이면, f1은 2나 5의 배수이어선 안 되고 f2는 10(=2×5)의 배수이다. 이 블록 크기에 대한 QPP 인터리버는 x=19x+40x2 mod 320에 의해 주어진다.
QPP 인터리버 어드레스들은 곱셈이나 모듈로(modulo) 연산 없이 반복적으로 산출될 수 있다. 단순화된 예가 수학식 2 및 3에 나타나 있다.]
Figure pat00002
여기서, g(x)=f1+f2+2f2 x mod K는 반복적으로 산출될 수 있다.
Figure pat00003
x와 g(x)는 모두 K보다 작기 때문에, 수학식 2와 3에서 모듈로 연산들은 비교로 대체될 수 있다.
K의 약수 M에 대하여, M개 복호기들의 경합이 없는 병렬 복호는 QPP 인터리버에 의해 지지된다. K=MW가 K의 정수 인수분해라고 하자. 0≤t≠<M에 대하여, 인터리빙과 디-인터리빙 어드레스들은 수학식 4를 만족한다.
Figure pat00004
즉, M개의 다른 메모리 뱅크들(각각 크기가 W인)에서 소프트 값들은 M개의 프로세서들에 의해 경합 없이 동시에 액세스될 수 있다. 더욱이, 동일한 어드레스는 수학식 5에 의해 모든 메모리 뱅크들 내의 소프트 값들을 액세스하는 데 사용될 수 있다.
Figure pat00005
QPP 셀(1400)은 QPP 인터리브를 수행하는 기본 하드웨어 블록이다. QPP 셀(1400)은 다수개의 입력들(1405~1440)을 포함한다.
제1 입력(1405)은 f1과 f2를 수신하고, 제2 입력(1410)은 k를 수신한다. f1, f2 데이터는 f1과 f2 각각 또는 계산의 복잡도를 줄이기 위해 f1+f2나 2*f2와 같은 다른 포맷으로 수신될 수 있다. f1과 f2와 k는 모두 테이블로부터 수신될 수 있다.
제어신호들은 인에이블 입력(1415), 증감 입력(1420, inc/dec), 로드 입력(1425)을 통해 수신될 수 있다. 이 신호들은 QPP 셀(140)의 동작을 결정한다. 인에이블 입력(1415) 신호가 오프이면, QPP 상태(P 및 Q 내부 레지스터들)는 증감 입력(1420) 신호에 따라 증가하거나 감소한다. QPP 증가는 알파 세션에서 사용될 수 있고, QPP 감소는 터보 복호의 베타 세션에서 사용될 수 있다.
P 및 Q 내부 레지스터들에 대한 초기값들은 P_init_val 입력(1430) 및 G_init_val 입력(1435)을 통해 수신된다. 로드 입력(1425) 신호가 온이면, P_init_val 입력(1430) 데이터 및 G_init_val 입력(1435) 데이터는 내부 P 및 Q 레지스터들에 각각 로드된다. P_init_val 입력(1430) 데이터 및 G_init_val 입력(1435) 데이터는 QPP 인터리버에 어떤 상태를 로드하고 회복하기 위해 사용된다(윈도윙(windowing) 지원은 아래에서 설명된다).
QPP 셀(1400)은 또한 스킵 데이터 신호를 수신하기 위해 스킵 데이터 입력(1440)을 포함한다. 스킵 데이터 입력(1440)에서 수신된 스킵 데이터 신호는 QPP가 연속된 출력들 사이에서 얼마나 스킵하는지에 의해, 더블 버퍼링의 필요 없이 터보 복호기(300) 비트율 지원을 증가시키려면 어떤 것이 필요한지 결정한다.
QPP 셀(1400)은 또한 P_out 출력(1445) 및 G_out 출력(1450)을 포함한다. P_out 출력(1445)은 QPP 셀(1400)로부터의 최종 출력일 수 있다. 그러나 두 출력(1445, 1450) 모두 분할(segmentation)과 윈도윙(학습기와 같은)의 경우에 상태들을 저장하고 회복하기 위해 사용된다. 이때 중복된 세그먼트들은 알파 메모리나 병렬처리를 저장하기 위해 처리된다. 저장된 P_out 및 G_out 값들은 QPP 상태를 회복하기 위해 각각 P_init_val과 G_init_val을 통해 회복되고 로드될 것이다.
도 15는 본 발명의 실시예에 따른 병렬 QPP 셀들(1400)의 동작 예시도이다. 도 15에 도시된 QPP 셀(1400)의 실시예는 단지 설명을 위한 예시일 뿐, 다른 실시예들도 사용될 수 있다.
일부 실시예들에서, 다수의 QPP 인터리버들은 LTE의 경우 50/100Mbps를 달성하기 위해 필요한 병렬처리를 지원하도록 다수의 MAP 복호기들에 연결된다. QPP 기반의 병렬 LTE MAP 복호기 장치들은 k비트 크기의 단일 블록에 대해 실행된다. k=M*W이고 M과 W가 정수라고 가정하면, k비트 블록을 처리할 수 있는 병렬 장치들의 수는 M과 동일할 수 있다. M개의 MAP 복호기들을 각각 연결할 때, QPP 인터리버 셀(1400)이 부가되고 각각의 QPP 인터리버가 도 14에 묘사된 P_init_val 입력(1430) 및 G_init_val 입력(1435) 값들로 초기화된다. 이와 관련하여 P_out 출력(1445) 데이터는 QPP 셀(1400) 인터리버가 어떤 메모리 뱅크(1505a~1505n)를 가리키는지 확인하기 위해 k/M=W의 서로 다른 곱들(0 내지 M-1)과 비교된다. 그 결과는 Bank_sel에 쓰여진다. Bank_sel 신호는 도 16을 참조하여 후술할 M×M 데이터 스위치를 제어하는데 사용된다.
예를 들어, 각각의 병렬 QPP 셀(1400a~1400n) 증가 또는 감소 사이클에서, 각각의Bank_sel 신호는 M개의 가능한 람다 메모리 뱅크들(0 내지 M-1) 중에서 서로 다른(반복 없는) 람다 메모리 뱅크(1505a~1505n)를 가리킨다. 각 사이클에는 메모리 뱅크0(Bank_sel=0)을 가리키는 Bank_sel이 단 하나만 있다. 이와 관련하여 Z_detect 신호는Bank_sel=0으로 설정된다. 또한, Bank_sel=0(Z_detect가 설정된)을 가리키는 P_out은 모든 메모리 뱅크들에 어드레스(Mem_addr)로서 사용된다. 즉, Bank_seln=0(Z_detectn=1)일 때, Mem_addr=P_outn이다. 일부 실시예들에서, Mem_addr은 P_out0 및 Bank_sel0을 이용하여 얻어진다. P_init의 순서는 인터리버 테이블(블록 크기마다 f1과 f2 파라미터들에 기초한)과 프로세서들의 개수를 기반으로 한다. 예를 들어, 표 6에 나타난 바와 같이, 4개의 처리 요소들(MAP 복호기들)에 대하여 P_init를 위한 2개의 가능한 순서들이 있다(n은 블록 크기).
프로세서 번호 MAP0 MAP1 MAP2 MAP3
옵션1 0 n/4 n/2 3n/4
옵션2 0 3n/4 n/2 n/4
표 7은 8개의 처리 요소들(4개의 선택)을 보여준다.
프로세서 번호 MAP0 MAP1 MAP2 MAP3 MAP4 MAP5 MAP6 MAP7
옵션1 0 n/8 n/4 3n/8 n/2 5n/8 3n/4 7n/8
옵션2 0 3n/8 3n/4 n/8 n/2 7n/8 n/4 5n/8
옵션3 0 5n/8 n/4 7n/8 n/2 n/8 3n/4 3n/8
옵션4 0 7n/8 3n/4 5n/8 n/2 3n/8 n/4 n/8
도 16은 본 발명의 실시예에 따른 LTE 병렬 QPP 처리 스위치를 도시한 도면이다. 도 16에 도시된 QPP 처리 스위치(1600)의 실시예는 단지 설명을 위한 예시일 뿐, 다른 실시예들도 사용될 수 있다.
다수의 메모리 블록들(1605a~1605n)은 LTE 2×M×M 데이터 스위치(1610)를 통해 하나 이상의 MAP 복호기(310~325)에 연결될 수 있다. 각각의 MAP은 사이클마다 메모리 블록(1605a~1605n)에 두 개의 동시 읽기(RD) 액세스들 및 쓰기(WR) 액세스들을 지원할 수 있다. 메모리 블록들(1605a~1605n)은 4/8 메모리 블록들이며 이들은 두 세트들(짝수/홀수)로 나눌 수 있다. 전술한 수학식 2를 기반으로, 4개의 MAP들의 경우, 각 MAP마다 다음 출력의 시작 어드레스는 (P_init(k)+f1+f2+2*f2*(k*n/4)) mod n이다. 이때, k는 MAP 번호(k=0 내지 3)이고 n은 블록 크기이다. f2가 항상 짝수이므로, 2*f2*(k*n/4) mod n항은 0이다. 따라서 G_init, g(k*n/4)는 (f1+f2)mod n과 같다. 그러나 8개의 MAP들의 경우, 다음 출력은 P_init(k)+f1+f2+2*f2*(k*n/8)이다. 이때, k는 0 내지 7이다. 이 경우, G_init, g(k*n/8)가 (f1+f2)mod n이라고 항상 보장되는 것은 아니다. K가 짝수인 경우에는 G_init가 (f1+f2)mod n이고, 홀수인 경우에는 G_init, g(k*n/8)가 (f1+f2+f2*n/4)mod n과 같다. 이 항은 (f1+f2+f2/4*n)mod n과 같고, 또는 다른 방식에서 (f1+f2+f2/2*n/2)과 같다. f2는 짝수이고, f2/2가 짝수인 경우(f2 mod 4가 0), G_init는 (f1+f2)mod n이고, f2/2가 홀수인 경우(f2 mod 4가 2), G_init는 (f1+f2+n/2)mod n과 같다. 동일한 접근법이 16개 MAP 및 LTE/ADV의 고비트율(1Gbps)을 지원하는 그 이상의 경우에도 적용될 수 있다.
MAP마다 다수 세그먼트들이 사용되는 경우, P_out 및 G_out의 임시 값들은 추후 베타 세션의P_init 및 G_init을 위해 보류될 알파 세션의 말미에 저장된다(알파 세션은 베타의 학습기에 확장된다고 가정한다). 이에 따라 알파 세션의 말기와 베타 학습 세션의 초기 사이의 어드레스 캡을 위한 QPP 인터리버의 별도의 복잡한 계산을 생략할 수 있다.
본 명세서와 도면에 개시된 본 발명의 실시예들은 본 발명이 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.

Claims (20)

  1. 무선통신 네트워크에서 부호화된 전송물을 복호하는 수신기에 있어서,
    데이터를 수신하는 다수개의 수신 안테나들
    상기 수신된 데이터를 저장하는 복수개의 메모리들
    터보 복호 동작을 수행하며, 각각 복호 매트릭스의 적어도 일부를 이용하여 상기 수신된 데이터의 적어도 일부를 복호하는 복수개의 복호기들 및
    상기 복수개의 복호기들과 상기 복수개의 메모리들 사이에 연결되고, LTE(long term evolution) 기반의 동작으로부터 WCDMA(wideband code division multiple access) 동작으로 복호 동작을 변화시키는 데이터 스위치
    를 포함하는 수신기.
  2. 제1항에 있어서,
    상기 복수개의 복호기들 중 적어도 두 개는 병렬처리를 이용하여 상기 터보 복호 동작을 수행하는 것을 특징으로 하는 수신기.
  3. 제1항에 있어서,
    상기 WCDMA 동작은 상기 복수개의 복호기들이 각각 상기 복수개의 메모리들의 각각에 액세스하도록 하는 스위칭 동작을 포함하는 것을 특징으로 하는 수신기.
  4. 제1항에 있어서,
    상기 LTE 동작은 상기 복수개의 복호기들이 각각 교차 메모리 처리로 상기 복수개의 메모리들 중 적어도 두 개에 액세스하도록 하거나 독립적인 처리로 상기 복수개의 메모리들의 각각에 액세스하도록 하는 스위칭 동작을 포함하는 것을 특징으로 하는 수신기.
  5. 제4항에 있어서,
    상기 교차 메모리 처리와 상기 독립적인 처리는 데이터 블록 크기를 기반으로 하는 것을 특징으로 하는 수신기.
  6. 제1항에 있어서,
    상기 복수개의 복호기들 중 적어도 하나는 학습기를 위한 꼬리 비트에 기초한 베타 값을 계산하고 상기 복수개의 복호기들 중 적어도 하나는 학습기를 위한 이전 복호 동작에 기초한 알파 값을 계산하는 것을 특징으로 하는 수신기.
  7. 제1항에 있어서,
    상기 복수개의 복호기들은 각각 상기 복수개의 메모리들 중 적어도 하나로부터 동시 읽기 및 쓰기 동작을 수행하는 것을 특징으로 하는 수신기.
  8. 제1항에 있어서,
    듀얼 바이너리 출력(dual binary output)을 생성하는 QPP(quadratic permutation polynomial) 인터리버
    를 더 포함하는 것을 특징으로 하는 수신기.
  9. 무선통신 네트워크에서 부호화된 전송물을 복호하는 복호기에 있어서,
    데이터를 저장하는 복수개의 메모리들 및
    복수개의 단위 복호기들
    을 포함하고,
    상기 복수개의 단위 복호기들 각각은 프로세서 어레이, 복수개의 명령들, 및 데이터 스위치를 포함하며,
    상기 복수개의 명령들 중 일부는 명령 제어기에 저장되고, 상기 복수개의 명령들은 상기 복수개의 단위 복호기들이 각각 터보 복호 동작을 수행하고 복호 매트릭스의 적어도 일부를 이용하여 상기 데이터의 적어도 일부를 복호하도록 하며,
    상기 데이터 스위치는 상기 복수개의 단위 복호기들과 상기 복수개의 메모리들 사이에 연결되고, LTE(long term evolution) 기반의 동작으로부터 WCDMA(wideband code division multiple access) 동작으로 복호 동작을 변화시키는 것을 특징으로 하는 복호기.
  10. 제9항에 있어서,
    상기 복수개의 단위 복호기들 중 적어도 두 개는 병렬처리를 이용하여 상기 터보 복호 동작을 수행하는 것을 특징으로 하는 복호기.
  11. 제9항에 있어서,
    상기 WCDMA 동작은 상기 복수개의 단위 복호기들이 각각 상기 복수개의 메모리들의 각각에 액세스하도록 하는 스위칭 동작을 포함하는 것을 특징으로 하는 복호기.
  12. 제9항에 있어서,
    상기 LTE 동작은 상기 복수개의 단위 복호기들이 각각 교차 메모리 처리로 상기 복수개의 메모리들 중 적어도 두 개에 액세스하도록 하거나 독립적인 처리로 상기 복수개의 메모리들의 각각에 액세스하도록 하는 스위칭 동작을 포함하는 것을 특징으로 하는 복호기.
  13. 제12항에 있어서,
    상기 교차 메모리 처리와 상기 독립적인 처리는 데이터 블록 크기를 기반으로 하는 것을 특징으로 하는 복호기.
  14. 제9항에 있어서,
    상기 복수개의 단위 복호기들은 각각 상기 복수개의 메모리들 중 적어도 하나로부터 동시 읽기 및 쓰기 동작을 수행하는 것을 특징으로 하는 복호기.
  15. 제9항에 있어서,
    듀얼 바이너리 출력(dual binary output)을 생성하는 QPP(quadratic permutation polynomial) 인터리버
    를 더 포함하는 것을 특징으로 하는 복호기.
  16. 무선통신 네트워크에서 전송물을 복호하는 방법에 있어서,
    전송된 데이터를 수신하는 단계
    복수개의 메모리들에 상기 데이터를 저장하는 단계 및
    복수개의 복호기들이 병렬 터보 복호 동작들을 수행하며, 이때 상기 복수개의 복호기들은 각각 LTE(long term evolution) 기반의 동작과 WCDMA(wideband code division multiple access) 동작 중 하나로 상기 병렬 터보 복호 동작을 수행하는 것을 특징으로 하는 복호 방법.
  17. 제16항에 있어서,
    상기 LTE 동작은 독립적인 동작과 교차 메모리 동작을 포함하는 것을 특징으로 하는 복호 방법.
  18. 제17항에 있어서,
    데이터 블록 크기를 기반으로 상기 독립적인 동작과 상기 교차 메모리 동작을 선택하는 단계
    를 더 포함하는 것을 특징으로 하는 복호 방법.
  19. 제16항에 있어서,
    상기 병렬 터보 복호 동작들을 수행하는 단계는 상기 복수개의 메모리들 중 적어도 하나로부터 동시 읽기 및 쓰기 동작을 수행함을 포함하는 것을 특징으로 하는 복호 방법.
  20. 제16항에 있어서,
    QPP(quadratic permutation polynomial) 인터리버를 이용하여 듀얼 바이너리 출력(dual binary output)을 생성하는 단계
    를 더 포함하는 것을 특징으로 하는 복호 방법.
KR1020100108556A 2009-12-08 2010-11-03 병렬처리 터보 복호 방법 및 장치 KR101756706B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US28370309P 2009-12-08 2009-12-08
US61/283,703 2009-12-08
US12/814,157 US8811452B2 (en) 2009-12-08 2010-06-11 Method and apparatus for parallel processing turbo decoder
US12/814,157 2010-06-11

Publications (2)

Publication Number Publication Date
KR20110065319A true KR20110065319A (ko) 2011-06-15
KR101756706B1 KR101756706B1 (ko) 2017-07-11

Family

ID=44081974

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100108556A KR101756706B1 (ko) 2009-12-08 2010-11-03 병렬처리 터보 복호 방법 및 장치

Country Status (4)

Country Link
US (1) US8811452B2 (ko)
EP (1) EP2510637B1 (ko)
KR (1) KR101756706B1 (ko)
WO (1) WO2011071250A2 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8811452B2 (en) * 2009-12-08 2014-08-19 Samsung Electronics Co., Ltd. Method and apparatus for parallel processing turbo decoder
CN102480337B (zh) * 2010-11-30 2016-04-13 国际商业机器公司 无线电软件系统以及用于其的解码装置和方法
WO2020095093A1 (en) * 2018-11-07 2020-05-14 Telefonaktiebolaget Lm Ericsson (Publ) Optimized implementation of (de-)interleaving and rate (de-)matching for 3gpp new radio

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100557177B1 (ko) * 1998-04-04 2006-07-21 삼성전자주식회사 적응 채널 부호/복호화 방법 및 그 부호/복호 장치
EP1030457B1 (en) * 1999-02-18 2012-08-08 Imec Methods and system architectures for turbo decoding
US8112698B2 (en) * 2008-07-15 2012-02-07 Icomm Technologies Inc. High speed turbo codes decoder for 3G using pipelined SISO Log-MAP decoders architecture
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
US6954832B2 (en) * 2002-05-31 2005-10-11 Broadcom Corporation Interleaver for iterative decoder
GB2409134B (en) * 2003-12-11 2005-11-09 Motorola Inc A decoder
EP1800407A1 (en) * 2004-09-08 2007-06-27 Nokia Corporation System and method for adaptive low-density parity-check (ldpc) coding
US20060083174A1 (en) * 2004-10-04 2006-04-20 Texas Instruments Inc. Collision avoidance manager, method of avoiding a memory collision and a turbo decoder employing the same
US7571369B2 (en) * 2005-02-17 2009-08-04 Samsung Electronics Co., Ltd. Turbo decoder architecture for use in software-defined radio systems
US7769912B2 (en) * 2005-02-17 2010-08-03 Samsung Electronics Co., Ltd. Multistandard SDR architecture using context-based operation reconfigurable instruction set processors
US7668992B2 (en) * 2005-02-17 2010-02-23 Samsung Electronics Co., Ltd. Context-based operation reconfigurable instruction set processor and method of operation
US7483933B2 (en) * 2005-02-17 2009-01-27 Samsung Electronics Co., Ltd. Correlation architecture for use in software-defined radio systems
US7864832B2 (en) * 2005-05-06 2011-01-04 Samsung Electronics Co., Ltd. Multi-code correlation architecture for use in software-defined radio systems
JP2006324754A (ja) * 2005-05-17 2006-11-30 Fujitsu Ltd 最大事後確率復号方法及び復号装置
US7409606B2 (en) * 2005-08-31 2008-08-05 Motorola, Inc. Method and system for interleaving in a parallel turbo decoder
US7895497B2 (en) * 2006-06-26 2011-02-22 Samsung Electronics Co., Ltd. Apparatus and method using reduced memory for channel decoding in a software-defined radio system
US7984368B2 (en) * 2006-09-01 2011-07-19 Samsung Electronics Co., Ltd. Method and system for increasing decoder throughput
US7782820B2 (en) * 2006-09-26 2010-08-24 Alcatel-Lucent Usa Inc. Method of detecting discontinuous transmission (DTX) and method of generating a signal metric for use in DTX detection
US7882416B2 (en) * 2006-10-10 2011-02-01 Broadcom Corporation General and algebraic-constructed contention-free memory mapping for parallel turbo decoding with algebraic interleave ARP (almost regular permutation) of all possible sizes
US7831894B2 (en) * 2006-10-10 2010-11-09 Broadcom Corporation Address generation for contention-free memory mappings of turbo codes with ARP (almost regular permutation) interleaves
US7979772B2 (en) * 2006-10-25 2011-07-12 Samsung Electronics Co., Ltd. Method and system for providing a contention-free interleaver for channel coding
TWI363540B (en) * 2006-11-01 2012-05-01 Qualcomm Inc Turbo interleaver for high data rates
US8065588B2 (en) * 2007-01-17 2011-11-22 Broadcom Corporation Formulaic flexible collision-free memory accessing for parallel turbo decoding with quadratic polynomial permutation (QPP) interleave
US8140932B2 (en) * 2007-11-26 2012-03-20 Motorola Mobility, Inc. Data interleaving circuit and method for vectorized turbo decoder
US8627022B2 (en) * 2008-01-21 2014-01-07 Freescale Semiconductor, Inc. Contention free parallel access system and a method for contention free parallel access to a group of memory banks
US9071402B2 (en) 2008-03-24 2015-06-30 Telefonaktiebolaget L M Ericsson (Publ) Selection of retransmission settings for HARQ in WCDMA and LTE networks
US8035537B2 (en) * 2008-06-13 2011-10-11 Lsi Corporation Methods and apparatus for programmable decoding of a plurality of code types
US8090896B2 (en) * 2008-07-03 2012-01-03 Nokia Corporation Address generation for multiple access of memory
US8335979B2 (en) * 2008-12-08 2012-12-18 Samsung Electronics Co., Ltd. Contention-free parallel processing multimode LDPC decoder
JP5479580B2 (ja) * 2009-06-18 2014-04-23 ゼットティーイー コーポレーション Lteにおける並列turboデコーディングの方法及び装置
JP4820440B2 (ja) * 2009-08-21 2011-11-24 株式会社エヌ・ティ・ティ・ドコモ 移動通信方法、無線アクセスネットワーク装置及び交換局
US8543881B2 (en) * 2009-09-11 2013-09-24 Qualcomm Incorporated Apparatus and method for high throughput unified turbo decoding
US8255759B2 (en) * 2009-10-29 2012-08-28 Qualcomm Incorporated APP (a priori probability) storage design for LTE turbo decoder with quadratic permutation polynomial interleaver
US8811452B2 (en) * 2009-12-08 2014-08-19 Samsung Electronics Co., Ltd. Method and apparatus for parallel processing turbo decoder
US8438434B2 (en) * 2009-12-30 2013-05-07 Nxp B.V. N-way parallel turbo decoder architecture
US8514798B2 (en) * 2010-02-25 2013-08-20 Mediatek Inc. Methods for scheduling channel activities for multiple radio access technologies in a communications apparatus and communications apparatuses utilizing the same

Also Published As

Publication number Publication date
US8811452B2 (en) 2014-08-19
EP2510637B1 (en) 2019-03-06
EP2510637A2 (en) 2012-10-17
EP2510637A4 (en) 2017-12-06
WO2011071250A3 (en) 2011-11-17
US20110134969A1 (en) 2011-06-09
KR101756706B1 (ko) 2017-07-11
WO2011071250A2 (en) 2011-06-16

Similar Documents

Publication Publication Date Title
US10361815B2 (en) Polar code rate matching method and apparatus
US10374753B2 (en) Polar code rate matching method and polar code rate matching apparatus
RU2673122C1 (ru) Способ и устройство обработки полярного кода
CN105874736B (zh) 极性码的速率匹配方法和速率匹配装置
EP2323265B1 (en) Efficient multi-symbol deinterleaver
CA2968892A1 (en) Polar code rate matching method and apparatus, and wireless communications device
US8719658B2 (en) Accessing memory during parallel turbo decoding
US7839310B2 (en) Extended turbo interleavers for parallel turbo decoding
CN111247743B (zh) 在crc制码之前对包括已知位的nr pbch有效载荷进行交织以增强极化码性能
US11323209B2 (en) Modem chips and receivers for performing hybrid automatic repeat request processing
US11115052B2 (en) Information processing method and communications apparatus
KR101756706B1 (ko) 병렬처리 터보 복호 방법 및 장치
US11483011B2 (en) Decoding method, decoding device, and decoder
CN109474373A (zh) 交织方法和交织装置
EP4156568A1 (en) Data frame sending method, data frame receiving method, and communication apparatus
WO2019042370A1 (zh) 数据传输方法及装置
US20080086674A1 (en) Reduced complexity ARP (almost regular permutation) interleaves providing flexible granularity and parallelism adaptable to any possible turbo code block size
US8209592B2 (en) Method and apparatus for software-defined radio LDPC decoder
US9071279B2 (en) Turbo decoder input reordering
US8296640B2 (en) Method and apparatus for parallel processing multimode LDPC decoder
US20070124655A1 (en) Apparatus and method for a collision-free parallel turbo decoder in a software-defined radio system
Cheng et al. Design of a high parallelism high throughput HSPA+ Turbo decoder
CN115913451A (zh) 一种信号处理方法和通信装置
WO2023003969A1 (en) Real time physical layer processing in distributed units

Legal Events

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