KR20140128605A - 병렬 연산 터보코드 복호 방법 및 그 장치 - Google Patents
병렬 연산 터보코드 복호 방법 및 그 장치 Download PDFInfo
- Publication number
- KR20140128605A KR20140128605A KR1020130047218A KR20130047218A KR20140128605A KR 20140128605 A KR20140128605 A KR 20140128605A KR 1020130047218 A KR1020130047218 A KR 1020130047218A KR 20130047218 A KR20130047218 A KR 20130047218A KR 20140128605 A KR20140128605 A KR 20140128605A
- Authority
- KR
- South Korea
- Prior art keywords
- state metric
- bit
- sliding window
- map
- log likelihood
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/29—Coding, 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/2948—Iterative decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/29—Coding, 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/2957—Turbo codes and decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6561—Parallelized implementations
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
병렬 연산 터보코드 복호 방법 및 그 장치가 개시된다. 병렬 연산 터보코드 복호 방법은 코드 블록을 복수의 슬라이딩 윈도우로 분할하고, 상기 슬라이딩 윈도우를 미리 설정된 비트 구간으로 분할하고, 상기 슬라이딩 윈도우를 상기 분할된 비트 구간 단위로 연산하여 연판정하며, 상기 슬라이딩 윈도우 연판정 단계의 상태 메트릭 연산 수행 값을 상태 메트릭 연산기의 초기값으로 설정하여, 상기 슬라이딩 윈도우를 미리 설정된 횟수만큼 반복하여 상기 복수의 슬라이딩 윈도우를 병렬로 복호하여 하드웨어의 사용이 효율적이고, 복호를 위한 훈련기간이 필요하지 않아서 처리 지연을 줄일 수 있다.
Description
본 발명은 터보 복호 방법 및 그 장치에 관한 것으로 더욱 상세하게는 고속 연산을 위한 병렬 연산 터보코드 복호 방법 및 그 장치에 관한 것이다.
무선 채널의 특성상 데이터를 전송할 때 채널 상에서 발생할 수 있는 페이딩, 간섭, 잡음 등의 여러 가지 원인에 의하여 오류 발생 확률이 높으며, 정보의 손실이 발생한다. 그러므로 무선 채널의 환경에서 이용되는 채널 부호화 기법은 왜곡 신호로부터 전송된 정보를 보호하기 위해 높은 성능을 필요로 한다.
터보 코드(turbo code)는 길쌈부호(convolution code)를 병렬 연접(parallel concatenation) 형태로 배열한 비교적 간단한 두 개의 구성 부호기와 프레임 크기가 큰 인터리버(interleaver)를 가지고 있어 샤논(Shannon)의 한계에 근접하는 우수한 오류정정 능력을 가지고 있다. 그러나 이러한 우수한 성능에도 불구하고 터보 코드는, 많은 연산량으로 인한 복잡도가 증가와, 매우 긴 복호 지연 등으로 인한 실시간 처리에 어려움이 있다.
채널 부호로 터보 코드를 사용하는 이동 통신 시스템은 점차 광대역의 주파수를 차지하면서 고속의 데이터 통신을 제공할 수 있는 형태로 발전하고 있다. 이러한 고속의 데이터 서비스를 제공하는 형태는 IEEE 및 3GPP, 3GPP2등의 다양한 무선 통신 표준 규격 단체를 통해 다양한 표준화 작업을 통해 이루어지고 있으며, 3GPP 에서는 LTE(Long Term Evolution) 시스템 규약을 통해 초고속 무선 데이터 규약을 제정하고 있는 단계에 있다. 따라서, 수신단은 고속의 데이터 서비스 구현을 위해 고속으로 동작하는 채널 복호기가 필요하다. 그러나, LTE의 터보 부호를 하나의 복호기를 통한 고속 복호 구현은 현실적으로 구현하기 어려운 단점이 있다.
상술한 바와 같은 단점을 극복하기 위한 본 발명의 목적은 터보 코드 복호를 병렬로 빠르게 수행할 수 있는 병렬 연산 터보코드 복호 방법을 제공하는 것이다.
또한, 본 발명의 다른 목적은 상기 방법을 수행하는 병렬 연산 터보코드 복호 장치를 제공하는 것이다.
상술한 본 발명의 목적을 달성하기 위한 본 발명의 일측면에 따른 병렬 연산 터보코드 복호 방법은, 코드 블록을 복수의 슬라이딩 윈도우로 분할하는 단계(a), 상기 슬라이딩 윈도우를 복수의 비트 구간들로 분할하는 단계(b) 및 상기 슬라이딩 윈도우에 대하여 복수의 비트 구간 단위로 순방향 상태 메트릭 연산, 역방향 상태 메트릭 연산, 로그우도비 연산을 수행하여 상기 비트 구간 단위로 부호화 비트를 연판정 하는 단계(c), 상기 (c)단계에서 결정된 상태 메트릭 연산 결과를 다음 단계의 상태 메트릭 연산의 초기값으로 설정하여, 상기 (c)단계를 미리 설정한 횟수만큼 반복한다.
여기서 터보코드 복호 방법은, 상기 복수의 슬라이딩 윈도우를 병렬로 복호하는 것을 특징으로 할 수 있다.
여기서 상기 (c)단계는, 제1 시간 동안 상기 분할된 비트 구간 중 제1 비트 구간에서 순방향으로 순방향 상태 메트릭 연산을 수행하고, 상기 분할된 비트 구간들 중 상기 제1 비트 구간이 아닌 제2 비트 구간에서 역방향으로 역방향 상태 메트릭 연산을 수행하는 단계 및 제2 시간 동안 상기 제1 시간에 상기 역방향 상태 메트릭 연산이 수행된 비트 구간에 대해서 로그우도비 연산을 수행하는 단계를 포함할 수 있다.
여기서 상기 (c)단계는, QPP(quadratic permutation polynomial) 인터리버(interleaver)를 사용할 때 메모리 액세스 충돌을 회피하도록 상기 제1 비트 구간과 상기 제2 비트 구간을 결정하는 것을 특징으로 할 수 있다.
여기서 상기 (c)단계는, 상기 순방향 상태 메트릭 연산 결과, 상기 역방향 상태 메트릭 연산 결과, 상기 로그우도비 연산 결과를 복수의 비트 구간 단위로 저장하고, 로그우도비가 계산된 비트 구간의 상태 메트릭 연산 결과는 폐기하는 것을 특징으로 할 수 있다.
여기서 터보코드 복호 방법은, 제1 슬라이딩 윈도우에서, 다른 제2 슬라이딩 윈도우와 인접한 비트 구간의 순방향 상태 메트릭 연산 값을 상기 제2 슬라이딩 윈도우의 순방향 상태 메트릭 연산의 초기값으로, 상기 제1 슬라이딩 윈도우에서, 다른 제3 슬라이딩 윈도우와 인접한 비트 구간의 역방향 상태 메트릭 연산 값을 상기 제3 슬라이딩 윈도우의 역방향 상태 메트릭 연산의 초기값으로 사용하는 것을 특징으로 할 수 있다.
여기서 터보코드 복호 방법은, 상기 슬라이딩 윈도우에서 마지막으로 계산된 비트 구간의 순방향 상태 메트릭 연산 결과를 다음 단계의 순방향 상태 메트릭 연산의 초기값으로, 역방향 상태 메트릭 연산 결과를 다음 단계의 역방향 상태 메트릭 연산의 초기값으로 설정하는 것을 특징으로 할 수 있다.
여기서 터보코드 복호 방법은, 슬라이딩 윈도우의 연산된 로그우도비 값을 한번은 인터리빙 순서로 저장하고, 한번은 디인터리빙 순서로 저장하여 다음 단계의 복호 과정에 입력하는 것을 특징으로 할 수 있다.
또한, 본 발명의 상기 목적을 달성하기 위한 본 발명의 일측면에 따른 병렬 연산 터보코드 복호 장치는 코드 블록을 MAP 연산기의 수로 분할하는 코드 블록 분할기, 상기 코드 블록 분할기로부터 분할된 코드 블록을 수신하여 연판정을 수행하고, 연판정 결과를 초기값으로 설정하여 미리 설정된 횟수를 반복하는 적어도 두 개의 MAP 연산기, 상기 MAP 연산기에 연결되어 상기 MAP 연산기에 입력되는 데이터들의 인터리빙/디인터리빙을 수행하는 QPP(quadratic permutation polynomial) 인터리버/디인터리버 생성기 및 상기 MAP 연산기의 연판정 결과를 경판정하여 복호하는 경판정기를 포함한다.
여기서 상기 MAP 연산기는, 순방향 상태 메트릭 연산기, 역방향 상태 메트릭 연산기, 가지 메트릭 연산기, 로그우도비 연산기, 연산 결과 저장 메모리로 구성되는 것을 특징으로 할 수 있다.
여기서 상기 MAP 연산기는, 상기 분할된 코드 블록을 복수의 비트 구간 단위로 분할하여 순방향 상태 메트릭 연산, 역방향 상태 메트릭 연산, 로그우도비 연산하여 연산 결과를 상기 연산 결과 저장 메모리에 저장하는 것을 특징으로 할 수 있다.
여기서 상기 MAP 연산기는, 제1 시간 동안 상기 분할된 비트 구간 중 제1 비트 구간에서 순방향으로 순방향 상태 메트릭 연산을 수행하고, 상기 분할된 비트 구간들 중 상기 제1 비트 구간이 아닌 제2 비트 구간에서 역방향으로 역방향 상태 메트릭 연산을 수행하고, 제2 시간 동안 상기 제1 시간에 상기 역방향 상태 메트릭 연산이 수행된 비트 구간에 대해서 로그우도비 연산을 수행하는 것을 특징으로 할 수 있다.
여기서 상기 MAP 연산기는, 상기 제1 비트 구간과 상기 제2 비트 구간은 QPP 인터리버 사용시 메모리 액세스 충돌을 회피하도록 결정하는 것을 특징으로 할 수 있다.
여기서 터보코드 복호 장치는, 상기 분할된 코드 블록인 제1 슬라이딩 윈도우에서, 다른 분할된 코드 블록인 제2 슬라이딩 윈도우와 인접한 비트 구간의 순방향 상태 메트릭 연산을 수행하는 순방향 상태 메트릭 연산 값을 상기 제2 슬라이딩 윈도우의 순방향 상태 메트릭 연산의 초기값으로 사용하고, 상기 제1 슬라이딩 윈도우에서, 다른 분할된 코드 블록인 제3 슬라이딩 윈도우와 인접한 비트 구간의 역방향 상태 메트릭 연산 값을 상기 제3 슬라이딩 윈도우의 역방향 상태 메트릭 연산의 초기값으로 사용하는 것을 특징으로 할 수 있다.
여기서 상기 연산 결과 저장 메모리는 순방향 상태 메트릭 연산 결과, 역방향 상태 메트릭 연산 결과, 로그우도비 연산 결과를 복수로 분할한 비트 구간 단위로 저장하는 것을 특징으로 할 수 있다.
여기서 상기 연산 결과 저장 메모리는, 상기 비트 구간의 로그우도비 연산이 수행되면, 로그우도비 연산이 수행된 상기 비트 구간의 순방향 상태 메트릭 연산 결과, 역방향 상태 메트릭 연산 결과를 폐기하는 것을 특징으로 할 수 있다.
여기서 QPP 인터리버/디인터리버 생성기는 병렬 연산장치와 연결되어 시분할 되어 인터리빙 또는 디인터리빙을 수행하는 것을 특징으로 할 수 있다.
상술한 바와 같은 병렬 연산 터보코드 복호 방법 및 그 장치에 따르면, 하드웨어의 사용이 효율적이고, 터보코드 복호를 위한 훈련구간이 별도로 필요하지 않아서 처리 지연을 줄일 수 있다.
도 1은 터보 부호기를 설명하기 위한 블럭도이다.
도 2는 터보 복호기를 설명하기 위한 블록도이다.
도 3은 기본적인 MAP 연산 방식을 설명하기 위한 개념도이다.
도 4는 이중 플로우 MAP 연산 방식을 설명하기 위한 개념도이다.
도 5는 개선된 이중 플로우 MAP 연산 방식을 설명하기 위한 개념도이다.
도 6은 웝업 병렬 윈도우 MAP 연산 방식을 설명하는 개념도이다.
도 7은 웝업 프리 병렬 윈도우 MAP 연산 방식을 설명하는 개념도이다.
도 8은 본 발명의 일 실시예에 따른 병렬 연산 터보코드 복호 방법을 나타내는 개념도이다.
도 9는 본 발명의 일 실시예에 따른 병렬 연산 터보코드 복호 방법을 설명하기 위한 예시도이다.
도 10은 본 발명의 일 실시예에 따른 병렬 연산 터보코드 복호 방법의 흐름도이다.
도 11은 본 발명의 일 실시예에 따른 병렬 연산 터보코드 복호 방법에서 각 MAP 연산기의 연판정 방법 흐름도이다.
도 12는 본 발명의 다른 실시예에 따른 병렬 연산 터보코드 복호 장치의 블록도이다.
도 2는 터보 복호기를 설명하기 위한 블록도이다.
도 3은 기본적인 MAP 연산 방식을 설명하기 위한 개념도이다.
도 4는 이중 플로우 MAP 연산 방식을 설명하기 위한 개념도이다.
도 5는 개선된 이중 플로우 MAP 연산 방식을 설명하기 위한 개념도이다.
도 6은 웝업 병렬 윈도우 MAP 연산 방식을 설명하는 개념도이다.
도 7은 웝업 프리 병렬 윈도우 MAP 연산 방식을 설명하는 개념도이다.
도 8은 본 발명의 일 실시예에 따른 병렬 연산 터보코드 복호 방법을 나타내는 개념도이다.
도 9는 본 발명의 일 실시예에 따른 병렬 연산 터보코드 복호 방법을 설명하기 위한 예시도이다.
도 10은 본 발명의 일 실시예에 따른 병렬 연산 터보코드 복호 방법의 흐름도이다.
도 11은 본 발명의 일 실시예에 따른 병렬 연산 터보코드 복호 방법에서 각 MAP 연산기의 연판정 방법 흐름도이다.
도 12는 본 발명의 다른 실시예에 따른 병렬 연산 터보코드 복호 장치의 블록도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 터보 부호기를 설명하기 위한 블럭도이다.
터보 부호기(turbo encoder)는 컨벌루션(Convolution) 부호기가 2개 사용되며, 첫 번째 부호기(10)는 입력 비트 를 입력 비트 순으로 부호화해서 부호화 비트 를 출력하고, 두 번째 부호기(20)는 입력 비트 를 인터리버(interleaver)(30)를 통과 시킨 를 부호화해서 부호화 비트 를 출력한다.
한편, 도 1에서 사용하는 인터리버는 QPP 인터리버(quadratic permutation polynomial interleaver)로서 메모리 경합이 발생하지 않아서 LTE 기반에서 병렬로 터보 부호를 수행할 수 있도록 한다.
도 2는 터보 복호기를 설명하기 위한 블록도이다.
도 2를 참조하면, 터보 복호기는 터보 부호기에 대응되는 구조로서, 두 개의 MAP 복호기(Maximum A Posteriori decoder)(40, 50)와 QPP 인터리버(60), QPP 디인터리버(70), 경판정기(80)으로 구성된다. 복조기에서 출력된 비트 열 은 첫 번째 MAP 복호기(40)에 입력되고, 복조기에서 출력된 , 를 인터리버(60)를 통과 시킨 와 첫 번째 MAP 복호기(40)의 출력이 인터리빙된 는 두 번째 MAP 복호기(50)에 입력된다. 또한, 두 번째 MAP 복호기(50)의 출력을 디인터리버(70)를 사용하여 디인터리빙(de-interleaving)한 는 첫 번째 MAP 복호기(50)에 귀환 입력된다.
반복 복호된 연판정 결과를 경판정기(80)를 사용하여 복호를 수행한다.
여기에서 는 복조기에서 출력된, 입력 비트 에 상응하는 비트이며, 는 복조기에서 출력된, 부호화 비트 에 상응하는 비트이며, 는 복조기에서 출력된, 부호화 비트 에 상응하는 비트이다.
따라서, 터보 복호기는 MAP 복호기를 사용하여 복호기 출력의 결과를 다시 복호기 입력에 더하여 복호 과정을 반복하는 구조로서 복호된 비트의 오류 정정률이 점차로 개선된다. 이는 터보 엔진의 구성원리와 동일하며, 일반적으로 첫 번째 및 두 번째 복호 과정을 1회로 가정할 때, 총 8회 이상을 반복할 경우 오류 정정율이 완전해 질 수 있다.
터보 복호기의 MAP 복호기에서는, 순방향 상태 메트릭(Forward State Metric, FSM)과 역방향 상태 메트릭(Backward State Metric, BSM) 및 가지 메트릭(Branch Metric)을 구하여 해당 비트의 로그우도비(log likelihood ratio, LLR)값을 연산하고, 로그우도비 값의 부호를 비교하여 경판정 값으로 복호화 비트를 얻는다.
도 3은 기본적인 MAP 연산 방식을 설명하기 위한 개념도이다.
도 3을 참조하면, 기본적인 MAP 연산 방식에서는 순방향 상태 메트릭을 연산하고(S10), 그 값을 메모리에 저장한 후 역방향 상태 메트릭을 연산한다(S11).
역방향 상태 메트릭 연산 이후에 역방향 상태 메트릭 연산 결과와 메모리에 저장된 순방향 상태 메트릭 결과를 읽어 로그우도비 결과를 연산하는 방식이다(S12).
도 3의 MAP 연산 방식의 구현은 순방향 상태 메트릭과 역방향 상태 메트릭은 연산기를 공유할 수 있으므로, 상태 메트릭 연산기(State Metric Calculate, SMC) 1개와 로그우도비 연산기 1개의 복잡도를 가지게 되며, 처리시간은 비트 길이 L에 대하여 2배의 시간이 소요된다.
도 4는 이중 플로우 MAP 연산 방식을 설명하기 위한 개념도이다.
도 4를 이중 플로우(double flow) MAP 연산 방식은 순방향 상태 메트릭과 역방향 상태 메트릭을 동시에 연산한다(S20, S21).
따라서, 비트 길이의 절반이되는 지점에서부터 로그우도비 값을 연산할 수 있게 되는데, 2비트를 동시에 연산할 수 있다(S22).
따라서 이중 플로우 MAP 연산 방식의 구현은 순방향 상태 메트릭 연산기, 역방향 상태 메트릭 연산기 그리고 로그우도비 연산기가 각각 2개씩 사용되며 처리시간은 비트 길이 L만큼 소요된다.
여기서, QPP 인터리버가 메모리 경합이 없기 위해서는 각 병렬 복호 모듈의 로그우도비 결과 출력이 같은 오프셋(offset)값을 가져야 한다. 그러나 이중 플로우 MAP 연산 방식은 로그우도비 결과의 출력이 다른 오프셋을 가지므로, QPP 인터리버를 사용하더라도 메모리 경합이 발생한다.
도 5는 개선된 이중 플로우 MAP 연산 방식을 설명하기 위한 개념도이다.
도 5는 메모리 경합을 피하기 위한 이중 플로우 MAP 연산 방식을 나타내며, 먼저 역방향 상태 메트릭을 연산한다(S30).
시간 인덱스 L÷2의 시점에서 비트 인덱스 L÷2부터 순방향 상태 메트릭 연산을 시작하며(S31), 동시에 비트 인덱스 L÷2부터 로그우도비 연산을 수행한다(S32).
시간 인덱스 L시점부터 비트 인덱스 0부터 순방향 상태 메트릭 연산을 수행하며(S33), 동시에 비트 인덱스 0부터 로그우도비 연산을 수행한다(S34).
개선된 이중 플로우 MAP 연산 방식의 구현은 복호 시간이 비트 길이의 반만큼 추가로 늘어나지만, 로그우도비 연산기가 1개로 감소하며, 상태 메트릭 연산 결과를 저장하는 메모리의 크기도 L÷2로 감소된다.
도 6은 웝업 병렬 윈도우 MAP 연산 방식을 설명하는 개념도이다.
웜웝(warm-up) 병렬 윈도우 MAP 연산 방식은 복호 비트 길이 전체에 대하여 복호를 수행하지 않고 슬라이드 윈도우(Slide Window, SW) 구간을 W개 비트로 나누어 처리함으로써, 연산에 필요한 메모리의 사용을 감소시킨다.
도 6을 참조하면, 슬라이드 윈도우가 2개, 훈련구간 시간 L을 갖는 웜업 병렬 윈도우 방식이다.
먼저 시간 인덱스 L까지 순방향 상태 메트릭 연산을 수행하여 학습하고 (S40), 시간 인덱스 L이후에 순방향 상태 메트릭 연산을 수행한다(S41).
시간 인덱스 L+W÷4부터 W÷4비트 단위로 역방향 상태 메트릭 연산을 수행하며(S42), 동시에 역방향 상태 메트릭 연산이 수행된 비트 구간의 로그우도비 연산을 수행한다(S43).
도 6의 웝업 병렬 윈도우 MAP 연산 방식의 구현은 상태 메트릭 및 로그우도비 연산에 사용되는 메모리는 L로 감소하고, 처리시간은 전체적으로는 슬라이드 윈도우 비트 개수(W)로 감소되지만, 훈련구간에 따른 추가 시간을 더하여 필요한 소요시간은 W + 2×L이 된다. 이와 같은 웝업 구간이 존재하는 슬라이드 윈도우방식에서 반복 웜업 구간의 상태 메트릭 연산을 수행할 때의 초기값은 모두 0을 사용한다. 따라서 충분한 웜업 구간이 필요하며 웜업 구간이 지난 후에는 신뢰성이 있는 상태 메트릭 값을 갖게 되어 올바른 오류 정정이 가능해진다. 일반적으로, 웜업의 길이가 길면 길수록 상태 메트릭 값의 신뢰도는 증가하며, 웜업 구간의 길이는 복호의 성능과도 관련성이 있게 된다.
도 7은 웝업 프리 병렬 윈도우 MAP 연산 방식을 설명하는 개념도이다.
웜업 프리(warm-up-free) 병렬 윈도우 MAP 연산 방식의 복호기는 첫 번째 부호기에 대한 MAP 복호 과정과 두 번째 부호기에 대한 MAP 복호 과정을 수행하고, 이 과정을 반복 수행하여 터보 코드 복호를 수행한다. 첫 번째 MAP 복호기 결과를 터보 코드 복호 과정의 반복 복호 횟수 0.5회, 두 번째 MAP 복호기 결과를 터보 코드 복호 과정의 반복 복호 횟수 1회라고하면, 반복 복호 횟수가 8회인 경우에는 0.5번째를 제외한 이후의 모든 1번째부터 8번째 MAP복호 과정에서는 훈련구간을 대신하여, 초기 값으로 이전의 MAP복호 연산 결과의 값을 사용하여 복호 성능의 차이를 감소시키게 된다.
도 7을 참조하면, 이러한 특징을 이용하여 슬라이드 윈도우 구간 내에서 웜업 구간을 생략하고, 슬라이드 윈도우를 병렬 윈도우(parallel window)로 구성하여 사용하는 것을 나타낸다.
슬라이딩 윈도우의 이전 반복 결과로 순방향 상태 메트릭 연산기를 초기화하여 순방향 상태 메트릭을 연산한다(S50).
여기서 이전 반복 결과가 없는 최초 수행시에는 초기값은 0으로 설정한다.
슬라이딩 윈도우의 이전 반복 결과로 역방향 상태 메트릭 연산기를 초기화하여 역방향 상태 메트릭을 연산한다(S51).
또한, 여기서도 이전 반복 결과가 없는 최초 수행시에는 초기값은 0으로 설정한다.
인접한 슬라이딩 윈도우의 순방향 상태 메트릭 연산 값을 이용하여 순방향 상태 메트릭을 연산한다(S52).
인접한 슬라이딩 윈도우의 역방향 상태 메트릭 연산 값을 이용하여 역방향 상태 메트릭을 연산한다(S53).
슬라이딩 윈도우에서 마지막 비트구간의 순방향 상태 메트릭 연산이 종료 되면, 순방향 상태 메트릭 연산 결과를 저장하여 다음 반복 복호시에 초기값으로 사용한다(S54).
슬라이딩 윈도우에서 마지막 비트구간의 역방향 상태 메트릭 연산이 종료 되면, 역방향 상태 메트릭 연산 결과를 저장하여 다음 반복 복호시에 초기값으로 사용한다(S55).
도 7과 같은 웜업 프리(warm-up-free) 병렬 윈도우 MAP 연산 방식은 훈련 구간이 필요없어 처리 시간의 단축을 확인할 수 있으나, 로그우도비의 계산 출력이 이중 플로우 방식처럼 메모리 경합이 발생한다.
도 8은 본 발명의 일 실시예에 따른 병렬 연산 터보코드 복호 방법을 나타내는 개념도이다.
도 8을 참조하면 본 발명의 일 실시예에 따른 병렬 연산 터보코드 복호 방법은 슬라이드 윈도우 2개에서 비트 개수 W 단위로 복호하며, 복호 수행 과정 동안에 하나의 슬라이드 윈도우 당 순방향 상태 메트릭 연산기 1개, 역방향 상태 메트릭 연산기 1개, 로그우도비 연산기 1개로 구현 가능하며, 순방향 상태 메트릭 연산, 역방향 상태 메트릭 연산, 로그우도비 연산은 W÷4 비트 구간 단위로 수행한다. W 내지 5×W÷4의 비트 구간은 다음 반복 복호 과정의 0 내지 W÷4 비트 구간과 중첩하여 수행된다.
따라서, 8회 반복 복호에 사용되는 처리시간은 16×W + W÷4 이다.
도 9는 본 발명의 일 실시예에 따른 병렬 연산 터보코드 복호 방법을 설명하기 위한 예시도이다.
도 9에 나타내는 본 발명의 일 실시예에서 병렬 연산 터보코드 복호 방법은 QPP 인터리버 기반의 개선된 병렬 윈도우 MAP(Modified Warm-up-free Parellel Window MAP) 방식이라고 할 수 있으며, 윈도우 2개를 사용하여 설명하지만, 윈도우 개수에 한정되지 않으며, N번째 반복 복호 과정을 예를 들어 설명한다.
예를 들면, LTE 규격에서는 QPP 인터리버를 64개까지 병렬화된 윈도우에 연결하여 사용할 수 있다.
여기서 QPP 인터리버 기반의 개선된 병렬 윈도우 MAP 방식은 QPP 인터리버의 특징을 이용하여 메모리 경합이 발생하지 않도록 로그우도비 연산시에 메모리 접근 주소를 순방향으로 발생하도록 구성하고, 1개의 로그우도비 연산기만 사용하기 위하여 W 비트로 구성된 하나의 윈도우인 슬라이딩 윈도우를 W÷4 비트 구간으로 나누어서 수행한다.
또한, 순방향 상태 메트릭 연산기와 역방향 상태 메트릭 연산기도 각각 1개만 사용되도록 구성할 수 있다.
따라서, 병렬 연산 터보코드 복호 방법에서 1회의 복호 과정은 5개의 W÷4 시간 구간으로 나누어 처리할 수 있다.
첫 번째 W÷4 시간 동안(0 내지 W÷4)에는 N-1 번째 반복 복호 과정에서 저장된 순방향 상태 메트릭 값으로 초기화 하여 순방향 상태 메트릭 연산을 수행한다(A1). 여기서 순방향 상태 메트릭 연산이 수행되는 비트 구간은 3×W÷4 내지 W 비트 구간이며, 상기 연산 결과를 순방향 상태 메트릭 연산 결과 메모리에 저장한다.
또한, N-1 번째 반복 복호 과정에서 저장된 역방향 상태 메트릭 값으로 초기화 하여 역방향 상태 메트릭 연산을 수행한다(B4). 여기서 역방향 상태 메트릭 연산이 수행되는 구간은 0 내지 W÷4 비트 구간이며, 상기 연산 결과를 순방향 상태 메트릭 연산 결과 메모리에 저장한다.
두 번째 W÷4 시간 동안(W÷4 내지 W÷2)에는 인접한 슬라이딩 윈도우에서 수행되는 순방향 상태 메트릭 연산 값을 순방향 상태 메트릭 연산의 초기값으로 이용하여 0 내지 W÷4 비트 구간의 순방향 상태 메트릭 연산을 수행한다(A4).
A4를 연산한 결과와 역방향 상태 메트릭 연산 결과 메모리에 저장된 B4를 읽어서 비트 구간 0 내지 W÷4의 로그우도비를 계산한다(L4).
여기서 계산된 결과 L4는 제4 로그우도비 메모리에 저장한다.
또한, 인접한 슬라이딩 윈도우에서 수행되는 역방향 상태 메트릭 연산 값을 역방향 상태 메트릭 연산의 초기값으로 이용하여 3×W÷4 내지 W 비트 구간의 역방향 상태 메트릭 연산을 수행한다(B1).
B1의 연산결과를 역방향 상태 메트릭 연산 결과 메모리에 저장한다.
여기서 순방향 상태 메트릭과 역방향 상태 메트릭 연산 결과를 저장하는 메모리는 이전의 W÷4 시간 구간 동안에 사용되었던 동일한 메모리로써 2중 포트 메모리를 사용하여 읽기와 쓰기를 동시에 수행한다.
세 번째 W÷4 시간 구간(W÷2 내지 3×W÷4) 동안에는 순방향 상태 메트릭 연산 결과 A1과 역방향 상태 메트릭 연산 결과 B1이 저장된 상태 메트릭 메모리를 읽어 비트 구간 3×W÷4 내지 W의 로그우도비를 연산한다(L1).
여기서 연산 결과인 로그우도비 L1을 제1 로그우도비 메모리에 저장한다.
또한, 비트 구간 W÷4 내지 W÷2의 순방향 상태 메트릭 연산을 수행하고(A3), 상기 결과 A3을 순방향 상태 메트릭 연산 결과 메모리에 저장한다.
또한, 비트 구간 3×W÷4 내지 W÷2의 역방향 상태 메트릭을 연산하고(B2), 상기 결과 B2를 역방향 상태 메트릭 연산 결과 메모리에 저장한다.
네 번째 W÷4 시간 구간(3×W÷4 내지 W) 동안에는 비트 구간 W÷2 내지 3×W÷4의 순방향 상태 메트릭 연산을 수행하고(A2), 결과 A2와 역방향 상태 메트릭 연산 결과 메모리에서 W÷2 내지 3×W÷4의 역방향 상태 메트릭 연산 결과 B2를 읽어 로그우도비를 계산한다(L2).
여기서 로그우도비 연산 결과 L2를 제2 로그우도비 메모리에 저장한다.
또한, 비트 구간 W÷2 내지 W÷4의 역방향 상태 메트릭 연산을 수행하고(B3), 결과 B3를 역방향 상태 메트릭 연산 결과 메모리에 저장한다.
다섯 번째 W÷4시간(W 내지 5×W÷4) 동안에는 순방향 상태 메트릭 연산 결과 A3와 역방향 상태 메트릭 연산 결과 B3를 저장된 메모리에서 읽어, 비트 구간 W÷4 내지 W÷2의 비트 구간의 로그우도비를 계산한다(L3).
여기서 로그우도비 연산 결과를 제3 로그우도비 메모리에 저장한다.
이 구간은 N+1 번째 반복 복호가 시작되는 구간으로 N+1 번째 반복 복호에서 첫 번째 W÷4 시간 동안 비트 구간 3×W÷4 내지 W의 순방향 상태 메트릭 연산과 비트 구간 0 내지 W÷4의 역방향 상태 메트릭 연산이 동시에 수행된다.
위와 같은 과정은 0.5번의 복호 과정이고, 그 결과가 저장되는 제1 로그우도비 메모리, 제2 로그우도비 메모리, 제3 로그우도비 메모리, 제4 로그우도비 메모리에는 인터리빙 순서로 저장되며, 저장되는 값은 실제로 잉여정보만 저장한다.
여기서 잉여정보는 로그우도비 연산 결과 값에서 MAP 복호기 입력 값으로 빼기를 수행한 값을 의미한다.
다음 복호 단계에서 잉여정보는 복호기의 입력에 더해지는데, 인터리빙 순으로 입력되는 비트 열의 값들과 잉여정보가 더하여진 후에 복호기에 입력된다. 이번 복호 처리과정의 결과는 제1 로그우도비 메모리, 제2 로그우도비 메모리, 제3 로그우도비 메모리, 제4 로그우도비 메모리에 디인터리빙 순으로 저장되며, 저장하는 값은 이전단계의 복호 처리과정과 마찬가지로 잉여정보만 저장한다. 이러한 과정을 5 회 이상 반복하면 훈련구간을 가지는 복호 방식과 동일한 오류 정정률의 성능을 보인다.
도 10은 본 발명의 일 실시예에 따른 병렬 연산 터보코드 복호 방법의 흐름도이다.
본 발명의 일 실시예에 따른 병렬 연산 터보코드 복호 장치가 터보 코드 복호가 필요한 코드 블록을 수신하면, 코드 블록을 MAP 연산기의 수에 상응하여 슬라이딩 윈도우로 분할한다(S110).
분할된 슬라이딩 윈도우는 각 MAP 연산기에 복호를 위하여 입력되며, 병렬 연산 터보코드 복호 장치의 하드웨어 자원의 복잡도를 낮추기 위하여, 복수의 비트 구간으로 분할하여 연산한다(S120).
각 MAP 연산기는 분할된 비트 구간 단위로 연판정을 수행한다(S130).
순방향 상태 메트릭 연산기, 역방향 상태 메트릭 연산기, 가지 메트릭 연산기, 로그우도비 연산기를 사용하여 연판정을 수행하며, 메모리 경합없이 QPP 인터리버 사용할 수 있도록 순방향 상태 메트릭 연산, 역방향 상태 메트릭 연산, 로그우도비 연산을 수행하는 비트 구간을 결정할 수 있다.
예를 들어 도 9와 같은 비트 구간의 순서로 로그우도비 연산을 수행할 수 있다.
각 MAP 연산기는 슬라이딩 윈도우의 연판정을 수행한 후 다음 반복 복호를 위하여 연판정 수행 단계의 각 순방향 상태 메트릭 연산 결과, 각 역방향 상태 메트릭 연산 결과를 각 순방향 상태 메트릭 연산기의 초기값, 각 역방향 상태 메트릭 연산기의 초기값으로 설정한다(S140).
각 MAP 연산기는 한 번의 슬라이딩 윈도우의 연판정 단계의 상태 메트릭 연산 결과를 다음 반복 복호 단계의 초기값으로 설정하여, 복호 오류율이 성능 열화가 발생하지 않도록 미리 설정한 횟수를 반복하여 연판정을 수행하고, 반복 수행된 연판정 결과를 경판정하여 복호를 수행한다(S150).
도 11은 본 발명의 일 실시예에 따른 병렬 연산 터보코드 복호 방법에서 각 MAP 연산기의 연판정 방법 흐름도이다.
도 11은 도10의 분할된 비트 구간의 연판정 단계의 방법을 설명하는 흐름도이다.
각 MAP 연산기가 복호할 분할된 슬라이딩 윈도우를 복수의 비트 구간 단위로 연판정을 수행함에 있어서, 제1 시간 동안 분할된 비트 구간 중 제1 비트 구간에서 순방향 상태 메트릭 연산을 수행한다(S131).
예를 들어, 도 9에서 A1에 해당하는 순방향 상태 메트릭 연산을 수행한다.
또한, 제1 시간 동안 분할된 비트 구간 중 제1 비트 구간이 아닌 제2 비트 구간에서 역방향 상태 메트릭 연산을 수행한다(S132).
여기서 제1 비트 구간과 제2 비트 구간은 슬라이딩 윈도우의 연판정을 수행하고 다음 반복 연판정 단계를 위한 QPP 인터리버의 이용에 있어서 메모리 액세스 충돌을 회피하도록 결정할 수 있다.
또한, 제1 비트 구간과 제2 비트 구간의 결정은 각 MAP 연산기에서 사용되는 순방향 상태 메트릭 연산기, 역방향 상태 메트릭 연산기, 로그우도비 연산기 및 연산 결과 저장 메모리의 하드웨어 복잡도를 낮추도록 결정할 수 있다.
예를 들어, 도 9에서 B4에 해당하는 역방향 상태 메트릭 연산을 수행한다.
각 MAP 연산기는 제2 시간 동안 제1 시간에 역방향 상태 메트릭 연산을 수행한 비트 구간의 로그우도비 연산을 수행한다(S135).
예를 들어, 도 9에서 L4에 해당하는 로그우도비 연산을 수행한다.
도 12는 본 발명의 다른 실시예에 따른 병렬 연산 터보코드 복호 장치의 블록도이다.
도 12을 참조하면, 병렬 연산 터보코드 복호 장치는 병렬 윈도우의 N개의 MAP 연산기(110), QPP 인터리버/디인터리버(120), 경판정기(130)을 포함하여 구성될 수 있다.
본 발명의 실시예에 따른 MAP 연산기의 구성(110)은 순방향 상태 메트릭 연산기(forward state metric calculation), 역방향 상태 메트릭 연산기(backward state metric calculation), 가지 메트릭 연산기 (branch Metric Calculation), 로그우도비 연산기(log likelihood ratio calculation)을 각 1개씩 사용하고, 슬라이딩 윈도우를 복수의 비트 구간으로 나누어 연산하며, 사용 메모리의 크기는 복수의 비트 구간의 개수에 반비례한다.
예를 들어, 슬라이딩 윈도우가 W개의 비트로 구성되었을 때, 비트 구간은 W÷4로 설정될 수 있으며, 연산 결과 저장 메모리는 W÷4에 대응하여 구성될 수 있다.
QPP 인터리버/디인터리버(120)는 도 12에서는 병렬 연산 터보코드 복호 장치의 이해를 위하여 분리하여 도시하였지만, 실제로는 하나의 장치에서 시분할되어 인터리버 및 디인터리버로 동작하도록 구성할 수 있다.
터보 복호기를 사용한 LTE규격에는 전송 블록(transport block, TB) 단위로 사용자 데이터를 구성한다. 전송 블록은 여러 개의 코드 블록(code block, CB)으로 나눌 수 있으며 하나의 코드 블록 크기는 최대 6144 비트로 구성된다. 따라서 터보 복호기는 코드 블록 크기가 6144인 1개 이상의 코드 블록이 포함된 전송 블록을 처리하는 데 걸리는 시간을 최소화하여야 한다. 이를 위해서는 1개의 코드 블록을 처리하는 데 걸리는 시간을 최소화 하는 것이 필수적이다. 이에 LTE규격에서는 최대 64개까지 MAP복호기의 병렬화가 가능하도록 QPP 인터리버가 사용되도록 규정하고 있다.
따라서, 본 발명의 일 실시예에 따른 병렬 연산 터보코드 복호 방법 및 장치를 사용하여 윈도우를 64개로 구성하면 6144의 코드 블록을 최대 64개로 분할하여 처리할 수 있다.
터보 복호기의 MAP복호기를 64개의 병렬 윈도우 구간으로 나누어 윈도우 MAP을 구성하고 각 윈도우 MAP은 병렬로 복호 동작을 수행할 수 있다. 따라서, 터보 코드 복호 처리 시간은 윈도우 MAP 개수에 비례하여 감소될 수 있다. 일정 수준의 복호 오류율을 만족하기 위하여 W개의 비트로 분할된 슬라이딩 윈도우를 반복하여 복호를 수행하게 되며, 따라서 전체 처리시간은 {(W × 반복 복호횟수 + W÷4) × 클록 사이클 수 × 클록 주기}이다.
QPP인터리버를 사용한 LTE 시스템에서 8회 반복 복호를 가정한 경우, MAP 복호기 2개의 결과가 1회로 연산 되므로, MAP복호에 필요한 총 처리시간은 W × 16+W÷4이 된다. 따라서 코드 블록이 64개로 나누어진 W=96일 경우, 96 × 16+96÷4=1560 클록 사이클이 소요된다. 따라서 100MHz의 동작 클록 주파수를 사용한다면, 처리시간은 1560 × 10nsec=15.6usec이다.
또한, 예를 들어 64개 병렬 윈도우 MAP 연산 방식에 필요한 하드웨어 자원은 상태 메트릭(SMC; State Metric Calculation) 값을 저장하는 메모리의 크기는 FSM, BSM에 각각 1byte × 96(윈도우 비트 크기) ÷ 4(분할된 비트 구간수) × 64(윈도우 개수) = 1536 bytes 이며, LLR에 1byte × 96(윈도우 비트 크기) × 64(윈도우 개수) = 6144 bytes 이고, 가지 메트릭 연산기, 순방향 상태 메트릭 연산기, 역방향 상태 메트릭 연산기, 로그우도비 연산기는 각 64개, 그리고 QPP 인터리버 및 디인터리버(de-interleaver) 생성기가 사용된다.
이상 실시 예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
10, 20 : 콘볼류션 부호기
30 : QPP 인터리버
40, 50 : MAP 복호기
60 : QPP 인터리버
70 : QPP 디인터리버
80 : 경판정기
110 : MAP 복호기
120 : QPP 인터리버/디인터리버
130 : 경판정기
30 : QPP 인터리버
40, 50 : MAP 복호기
60 : QPP 인터리버
70 : QPP 디인터리버
80 : 경판정기
110 : MAP 복호기
120 : QPP 인터리버/디인터리버
130 : 경판정기
Claims (17)
- 코드 블록을 복수의 슬라이딩 윈도우로 분할하는 단계(a);
상기 슬라이딩 윈도우를 복수의 비트 구간들로 분할하는 단계(b); 및
상기 슬라이딩 윈도우에 대하여 복수의 비트 구간 단위로 순방향 상태 메트릭 연산, 역방향 상태 메트릭 연산, 로그우도비 연산을 수행하여 상기 비트 구간 단위로 부호화 비트를 연판정 하는 단계(c),
상기 (c)단계에서 결정된 상태 메트릭 연산 결과를 다음 단계의 상태 메트릭 연산의 초기값으로 설정하여, 상기 (c)단계를 미리 설정한 횟수만큼 반복하는 것을 특징으로 하는 터보코드 복호 방법. - 청구항 1에서,
터보코드 복호 방법은,
상기 복수의 슬라이딩 윈도우를 병렬로 복호하는 것을 특징으로 하는 터보코드 복호 방법. - 청구항 1에서,
상기 (c)단계는,
제1 시간 동안 상기 분할된 비트 구간 중 제1 비트 구간에서 순방향으로 순방향 상태 메트릭 연산을 수행하고, 상기 분할된 비트 구간들 중 상기 제1 비트 구간이 아닌 제2 비트 구간에서 역방향으로 역방향 상태 메트릭 연산을 수행하는 단계; 및
제2 시간 동안 상기 제1 시간에 상기 역방향 상태 메트릭 연산이 수행된 비트 구간에 대해서 로그우도비 연산을 수행하는 단계를 포함하는 터보코드 복호 방법. - 청구항 3에 있어서,
상기 (c)단계는,
QPP(quadratic permutation polynomial) 인터리버(interleaver)를 사용할 때 메모리 액세스 충돌을 회피하도록 상기 제1 비트 구간과 상기 제2 비트 구간을 결정하는 것을 특징으로 하는 터보코드 복호 방법. - 청구항 3에서,
상기 (c)단계는,
상기 순방향 상태 메트릭 연산 결과, 상기 역방향 상태 메트릭 연산 결과, 상기 로그우도비 연산 결과를 복수의 비트 구간 단위로 저장하고, 로그우도비가 계산된 비트 구간의 상태 메트릭 연산 결과는 폐기하는 것을 특징으로 하는 터보코드 복호 방법. - 청구항 1에서,
터보코드 복호 방법은,
제1 슬라이딩 윈도우에서, 다른 제2 슬라이딩 윈도우와 인접한 비트 구간의 순방향 상태 메트릭 연산 값을 상기 제2 슬라이딩 윈도우의 순방향 상태 메트릭 연산의 초기값으로, 상기 제1 슬라이딩 윈도우에서, 다른 제3 슬라이딩 윈도우와 인접한 비트 구간의 역방향 상태 메트릭 연산 값을 상기 제3 슬라이딩 윈도우의 역방향 상태 메트릭 연산의 초기값으로 사용하는 것을 특징으로 하는 터보코드 복호 방법. - 청구항 1에서,
터보코드 복호 방법은,
상기 슬라이딩 윈도우에서 마지막으로 계산된 비트 구간의 순방향 상태 메트릭 연산 결과를 다음 단계의 순방향 상태 메트릭 연산의 초기값으로, 역방향 상태 메트릭 연산 결과를 다음 단계의 역방향 상태 메트릭 연산의 초기값으로 설정하는 것을 특징으로 하는 터보코드 복호 방법. - 청구항 1에서,
터보코드 복호 방법은,
슬라이딩 윈도우의 연산된 로그우도비 값을 한번은 인터리빙 순서로 저장하고, 한번은 디인터리빙 순서로 저장하여 다음 단계의 복호 과정에 입력하는 것을 특징으로 하는 터보코드 복호 방법. - 코드 블록을 MAP 연산기의 수로 분할하는 코드 블록 분할기;
상기 코드 블록 분할기로부터 분할된 코드 블록을 수신하여 연판정을 수행하고, 연판정 결과를 초기값으로 설정하여 미리 설정된 횟수를 반복하는 적어도 두 개의 MAP 연산기;
상기 MAP 연산기에 연결되어 상기 MAP 연산기에 입력되는 데이터들의 인터리빙/디인터리빙을 수행하는 QPP(quadratic permutation polynomial) 인터리버/디인터리버 생성기; 및
상기 MAP 연산기의 연판정 결과를 경판정하여 복호하는 경판정기를 포함하는 터보코드 복호 장치. - 청구항 9에서,
상기 MAP 연산기는,
순방향 상태 메트릭 연산기, 역방향 상태 메트릭 연산기, 가지 메트릭 연산기, 로그우도비 연산기, 연산 결과 저장 메모리로 구성되는 것을 특징으로 하는 터보코드 복호 장치. - 청구항 10에서,
상기 MAP 연산기는,
상기 분할된 코드 블록을 복수의 비트 구간 단위로 분할하여 순방향 상태 메트릭 연산, 역방향 상태 메트릭 연산, 로그우도비 연산하여 연산 결과를 상기 연산 결과 저장 메모리에 저장하는 것을 특징으로 하는 터보코드 복호 장치. - 청구항 11에서,
상기 MAP 연산기는,
제1 시간 동안 상기 분할된 비트 구간 중 제1 비트 구간에서 순방향으로 순방향 상태 메트릭 연산을 수행하고, 상기 분할된 비트 구간들 중 상기 제1 비트 구간이 아닌 제2 비트 구간에서 역방향으로 역방향 상태 메트릭 연산을 수행하고, 제2 시간 동안 상기 제1 시간에 상기 역방향 상태 메트릭 연산이 수행된 비트 구간에 대해서 로그우도비 연산을 수행하는 것을 특징으로 하는 터보코드 복호 장치. - 청구항 12에서,
상기 MAP 연산기는,
상기 제1 비트 구간과 상기 제2 비트 구간은 QPP 인터리버 사용시 메모리 액세스 충돌을 회피하도록 결정하는 것을 특징으로 하는 터보코드 복호 장치. - 청구항 13에서,
터보코드 복호 장치는,
상기 분할된 코드 블록인 제1 슬라이딩 윈도우에서, 다른 분할된 코드 블록인 제2 슬라이딩 윈도우와 인접한 비트 구간의 순방향 상태 메트릭 연산 값을 상기 제2 슬라이딩 윈도우의 순방향 상태 메트릭 연산의 초기값으로 사용하고, 상기 제1 슬라이딩 윈도우에서, 다른 분할된 코드 블록인 제3 슬라이딩 윈도우와 인접한 비트 구간의 역방향 상태 메트릭 연산 값을 상기 제3 슬라이딩 윈도우의 역방향 상태 메트릭 연산의 초기값으로 사용하는 것을 특징으로 하는 터보코드 복호 장치. - 청구항 10에서,
상기 연산 결과 저장 메모리는 순방향 상태 메트릭 연산 결과, 역방향 상태 메트릭 연산 결과, 로그우도비 연산 결과를 복수로 분할한 비트 구간 단위로 저장하는 것을 특징으로 하는 터보코드 복호 장치. - 청구항 15에서,
상기 연산 결과 저장 메모리는,
상기 비트 구간의 로그우도비 연산이 수행되면, 로그우도비 연산이 수행된 상기 비트 구간의 순방향 상태 메트릭 연산 결과, 역방향 상태 메트릭 연산 결과를 폐기하는 것을 특징으로 하는 터보코드 복호 장치. - 청구항 9에서,
QPP 인터리버/디인터리버 생성기는 병렬 연산장치와 연결되어 시분할 되어 인터리빙 또는 디인터리빙을 수행하는 것을 특징으로 하는 터보코드 복호 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130047218A KR20140128605A (ko) | 2013-04-29 | 2013-04-29 | 병렬 연산 터보코드 복호 방법 및 그 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130047218A KR20140128605A (ko) | 2013-04-29 | 2013-04-29 | 병렬 연산 터보코드 복호 방법 및 그 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20140128605A true KR20140128605A (ko) | 2014-11-06 |
Family
ID=52454445
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130047218A KR20140128605A (ko) | 2013-04-29 | 2013-04-29 | 병렬 연산 터보코드 복호 방법 및 그 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20140128605A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210128217A (ko) | 2020-04-16 | 2021-10-26 | 한국전력공사 | 양자화된 채널을 고려한 터보 복호 장치 및 터보 부호 통신 방법 |
-
2013
- 2013-04-29 KR KR1020130047218A patent/KR20140128605A/ko not_active Application Discontinuation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210128217A (ko) | 2020-04-16 | 2021-10-26 | 한국전력공사 | 양자화된 채널을 고려한 터보 복호 장치 및 터보 부호 통신 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101323444B1 (ko) | 반복적 디코더 및 반복적 디코딩 방법 | |
US7549113B2 (en) | Turbo decoder, turbo decoding method, and operating program of same | |
JP2006115145A (ja) | 復号装置及び復号方法 | |
US9048877B2 (en) | Turbo code parallel interleaver and parallel interleaving method thereof | |
JP2004531116A (ja) | ターボデコーダ用インタリーバ | |
JP5840741B2 (ja) | 複数のコード・タイプをプログラマブル復号する方法および装置 | |
JP4227481B2 (ja) | 復号装置および復号方法 | |
CN104092470B (zh) | 一种Turbo码译码装置及方法 | |
RU2571597C2 (ru) | Способ и устройство для декодирования турбокода | |
US20090172495A1 (en) | Methods and Apparatuses for Parallel Decoding and Data Processing of Turbo Codes | |
EP1471677A1 (en) | Method of blindly detecting a transport format of an incident convolutional encoded signal, and corresponding convolutional code decoder | |
US10084486B1 (en) | High speed turbo decoder | |
KR100628201B1 (ko) | 터보 디코딩 방법 | |
GB2403106A (en) | a turbo type decoder which performs decoding iterations on sub-blocks to improve convergence | |
KR19990081470A (ko) | 터보복호기의 반복복호 종료 방법 및 그 복호기 | |
JP5169771B2 (ja) | 復号器および復号方法 | |
KR20140128605A (ko) | 병렬 연산 터보코드 복호 방법 및 그 장치 | |
US9130728B2 (en) | Reduced contention storage for channel coding | |
TWI692945B (zh) | 疊代解碼電路及解碼方法 | |
KR100297739B1 (ko) | 다중테일을갖는터보코드및그의부호화/복호화방법및그를이용한부호기/복호기 | |
EP1587218B1 (en) | Data receiving method and apparatus | |
US20180123616A1 (en) | Decoding method for convolutional code decoding device in communication system and associated determination module | |
KR100355452B1 (ko) | 엠에이피 방식을 사용한 터보 복호기 | |
Raymond et al. | Design and VLSI implementation of a high throughput turbo decoder | |
KR100627723B1 (ko) | 터보 복호화를 위한 병렬 복호 방법 및 이를 사용한 터보복호기 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Withdrawal due to no request for examination |