KR20000001483A - 다중테일을 갖는 터보코드 및 그의 부호화/복호화방법 및 그를이용한 부호기/복호기 - Google Patents

다중테일을 갖는 터보코드 및 그의 부호화/복호화방법 및 그를이용한 부호기/복호기 Download PDF

Info

Publication number
KR20000001483A
KR20000001483A KR1019980021766A KR19980021766A KR20000001483A KR 20000001483 A KR20000001483 A KR 20000001483A KR 1019980021766 A KR1019980021766 A KR 1019980021766A KR 19980021766 A KR19980021766 A KR 19980021766A KR 20000001483 A KR20000001483 A KR 20000001483A
Authority
KR
South Korea
Prior art keywords
tail
block
encoder
input data
disable
Prior art date
Application number
KR1019980021766A
Other languages
English (en)
Other versions
KR100297739B1 (ko
Inventor
이필중
김용
Original Assignee
정명식
학교법인 포항공과대학교
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 정명식, 학교법인 포항공과대학교 filed Critical 정명식
Priority to KR1019980021766A priority Critical patent/KR100297739B1/ko
Publication of KR20000001483A publication Critical patent/KR20000001483A/ko
Application granted granted Critical
Publication of KR100297739B1 publication Critical patent/KR100297739B1/ko

Links

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/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

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

본 발명은 다중테일 터보코드및 그의 부호화/복호화방법및 그를 이용한 부호기/복호기에 관한 것이다. 본 발명의 다중테일 터보코드 부호기는 각 부호기에서 다중테일을 첨가하여 부호화한다. 즉, 기존 터보코드가 하나의 테일만을 가지는 반면, 본 발명의 터보코드는 입력을 적어도 하나 이상의 블록으로 나눈 후 각 블록마다 테일을 첨가한 다중테일을 갖는다. 다중테일 터보코드의 부호기/복호기는 기존 터보코드의 부호기/복호기의 각 블록들의 동작시간만을 변경시켜 구현한다. 다중테일 터보코드는 복호시 이용할 수 있는 정보가 많기 때문에 더 좋은 성능을 보이지만 기존 터보코드보다 많은 테일을 가지므로, 더 많은 전송 파워를 필요로 하고, 더 넓은 대역폭을 필요로 한다. 그러나 입력 길이가 큰 경우에는 다중테일을 가지는 터보코드와 기존 터보코드의 전송 파워와 대역폭의 차이는 무시할 수 있을 만큼 작다. 기존 터보코드를 복호화하기 위한 MAP복호기는 입력 심볼의 크기와 구성부호의 메모리 갯수에 의해 결정되므로 서비스마다 다른 MAP복호기가 필요하다. 그러나 다중테일을 가지는 터보코드의 경우에는 하나의 MAP복호기를 가지고 입력데이타를 적어도 하나 이상의 블록으로 나눔으로써 입력길이와 관계 없이 모든 서비스를 처리하고, 특히 다중테일 터보코드는 병렬복호가 가능하므로 다수의 MAP복호기를 사용하면 기존의 심각한 복호지연 문제를 해결할 수 있다.

Description

다중테일을 갖는 터보코드및 그의 부호화/복호화방법및 그를 이용한 부호기/복호기
본 발명은 다중테일을 갖는 터보코드 및 그의 부호화/복호화방법 및 그를 이용한 부호기/복호기에 관한 것으로, 보다 상세하게는 입력을 적어도 하나 이상의 블록으로 나눈 후, 부호기 및 복호기의 동작시간만을 변경시킴으로써, 각 블록마다 테일을 첨가하는, 다중테일을 갖는 터보코드 및 그의 부호화/복호화방법 및 그를 이용한 부호기/복호기에 관한 것이다.
터보코드는 개발자(Berrou)가 처음 사용한 일종의 닉네임으로 이미 널리 통용되는 용어이다. 처음에 등장한 정식 명칭은 병렬컨벌루셔널코드, 멀티컴포넨트코드 또는 병렬쇄상 테일비트 컨벌루셔널코드등으로 불리워졌다. 터보코드의 부호화 특성은 도 1의 타이밍콘트롤러를 제외한 도면에 잘 나타나 있다. 즉, 첫번째 부호기(100)와 두 번째 부호기(110)는 입력에 대해서 병렬로 접속되며, 입력이 첫번째 부호기(100)에서 부호화되고, 동일한 입력이 인터리버(11)에서 인터리빙된 후 두번째 부호기(110)에서 부호화된다. 이것을 병렬 쇄상 부호라고 불렀다. 참고로 예전의 (직렬) 쇄상 부호는 첫번째 부호기와 두 번째부호기는 입력에 대해서 직렬로 접속되며, 입력이 첫번째 부호기에서 부호화된 후 첫번째 부호기의 출력이 인터리빙된 후 두번째 부호기에서 부호화된다. 일반적으로 직렬 쇄상 부호에서는 구성부호로 하나는 컨벌루셔널 코드를, 하나는 블록 코드를 사용하는데 반해 병렬쇄상 부호에서는 모든 구성부호들이 컨벌루셔널 코드이다. 터보코드의 복호화 특성은 반복 복호를 수행한다는 점이다. 다시 말해서 터보코드에서는 복호된 결과를 이용하여 다시 복호를 한다. 이것을 위해서 복호기는 소프트아웃트푸트(soft output)를 출력할 수 있어야 한다. 그래서 터보코드는 복호를 위해 MAP(maximum a posteriori)알고리즘이나 SOVA(Soft Output Viterbi Algorithm)를 이용한다. 이런 여러가지 특성들을 포함하는 새로운 코드는 이전까지 존재했던 어떤 코드보다도 우수한 성능을 보였으므로 이것을 터보코드라고 불렀다. 현재 터보코드는 위에서 설명한 것만을 지칭하지는 않고 터보코드의 특성 중 일부분만을 채용한 것들도 넓은 의미의 터보코드라고 부른다. 이러한 터보코드, 즉 터보코드를 이용한 선행기술들은 미국 특허 제5,446,747호 (Error correction coding method with at least two systematic convolutional codings in parallel, corresponding iterative decoding method, decoding module and decoder), 제5,729,560호 (Method and coding means for protected transmission of data on the basis of multi-component coding) 및 제5,721,745 (Parallel concatenated tail-biting convolutional code and decoder)에 개시되어 있으며, 이러한 선행기술들에도 도 1 및 도 4에 도시된 부호기 및 복호기의 블록에서 타이밍콘트롤러들을 제외하고 유사한 블록들이 개시되어 있다.
이러한 터보코드는 최근에 개발된 채널 오류 정정 부호이며, 기존 오류 정정 부호에 비해 매우 성능이 우수하기 때문에 앞으로 많은 통신 시스템에 오류 정정 부호로써 채택될 것이 예상된다. 그러나, 기존의 터보코드는 복호시 지연되는 문제가 있으며, 기존의 터보코드를 복호화하는 경우 입력심볼의 크기와 구성부호의 메모리갯수에 의해 종속되므로 서비스마다 다른 복호기가 필요한 단점이 있었다.
본 발명이 이루고자 하는 기술적 과제는 적어도 하나 이상의 블록으로 나누어진 입력데이타의 각 블록에 테일을 첨가하여 부호화하는 다중테일을 갖는 터보코드를 제공하는 데 있다.
본 발명이 이루고자 하는 다른 기술적 과제는 각 부호기에서 다중테일을 갖는 터보코드를 생성하는 부호화방법을 제공하는데 있다.
본 발명이 이루고자 하는 또 다른 기술적 과제는 상기 다중테일 터보코드 부호기에서 부호화된 다중테일을 갖는 터보코드를 복원하는 복호화방법을 제공하는데 있다.
본 발명이 이루고자 하는 또 다른 기술적 과제는 다중테일을 갖는 터보코드를 생성하는 부호기를 제공하는데 있다.
본 발명이 이루고자 하는 또 다른 기술적 과제는 상기 다중테일 터보코드 부호기에서 부호화된 다중테일을 갖는 터보코드를 복원하는 복호기를 제공하는데 있다.
도 1은 본 발명에 의한 다중테일을 갖는 터보코드의 부호기의 블록도이다.
도 2는 도 1의 구성 부호기의 상세 블록도이다.
도 3은 도 1의 테일 생성기의 상세 블록도이다.
도 4는 본 발명에 의한 다중테일을 갖는 터보코드의 복호기의 블록도이다.
도 5는 일반적인 단일테일 복호 알고리즘을 설명하기 위한 개념도이다.
도 6은 본 발명의 다중테일 복호알고리즘을 설명하기 위한 개념도이다.
<도면의 주요 부분에 대한 부호의 설명>
10, 40...제1 및 제2 타이밍콘트롤러, 11, 25...인터리버,
12, 15, 18...제1내지 제3 선택기, 13, 16...제1 및 제2 구성부호기,
14, 17...제1 및 제2 테일생성기, 19...버퍼,
20...어드레스계산기, 21, 30...제1 및 제2 지연기,
22, 23, 26, 27...제4 내지 제7선택기, 24, 28...제1 및 제2MAP디코더,
29...디인터리버, 31...판별기
본 발명은 상기 기술적 과제를 달성하기 위하여, 적어도 하나 이상의 블록으로 나누어진 입력데이타의 각 블록마다 테일이 첨가된 다중테일 터보코드를 제공하는 데 있다.
본 발명이 이루고자 하는 다른 기술적 과제는 적어도 하나 이상의 부호기에서, 타이밍제어신호에 따라서 입력데이타를 적어도 하나 이상의 블록으로 나눈 후 각 블록마다 테일을 첨가하여 부호화하는 다중테일을 갖는 터보코드를 생성하는 부호화방법을 제공하는데 있다.
본 발명이 이루고자 하는 또 다른 기술적 과제는 적어도 하나 이상의 각 부호기로 입력된 입력데이타를 제1 타이밍제어신호들에 따라서 적어도 하나 이상의 블록으로 나누고 각 블록에 하나의 테일을 첨가하여 생성된 다중테일을 갖는 터보코드를 복호하하는 방법에 있어서, 제2 타이밍제어신호에 따라서 입력데이타 및 테일정보를 선택적으로 복호화하는 단계; 및 상기 복호화된 정보를 인터리빙한 값과 다음 순차 테일정보를 선택적으로 복호화하고 상기 마지막으로 복호화된 정보를 디인터리빙하여 다중테일을 갖는 터보코드를 복원하는 단계;를 포함하는 복호화방법을 제공하는데 있다.
본 발명이 이루고자 하는 또 다른 기술적 과제는 타이밍제어신호에 따라서 입력데이타를 적어도 하나 이상의 블록으로 나눈 후 각 블록에 테일정보를 첨가하여 부호화하고, 상기 입력데이타를 적어도 하나 이상의 블록으로 나눈 후 각 블록마다 순차인터리빙한 후 각 인터리빙된 입력데이타에 각 테일정보를 첨가하여 부호화하는 상기 블록 수에 상당하는 적어도 하나 이상의 부호기들; 상기 입력데이타, 상기 각 테일정보 및 상기 적어도 하나 이상의 부호기들의 출력들을 받아 선택적으로 출력하는 선택수단; 및 상기 적어도 하나 이상의 부호기들 및 상기 선택수단에 타이밍신호를 공급하는 타이밍콘트롤러;를 포함하는 다중테일을 갖는 터보코드를 생성하는 부호기를 제공하는데 있다.
본 발명이 이루고자 하는 또 다른 기술적 과제는 적어도 하나 이상의 각 부호기로 입력된 입력데이타를 제1 타이밍콘트롤러의 제1 타이밍제어신호들에 따라서 적어도 하나 이상의 블록으로 나누고 각 블록에 하나의 테일을 첨가하여 생성된 다중테일을 갖는 터보코드를 복호하하는 복호기에 있어서, 제2 타이밍제어신호들에 따라서 입력데이타와 테일정보를 받아 선택적으로 복호화하고, 상기 복호화된 입력데이타를 인터리빙한 후 순차 테일정보와 함께 선택적으로 복호화하는 적어도 하나 이상의 복호기들; 상기 복호된 입력데이타를 디인터리빙하고 판별하여 복원된 데이타를 출력하는 디인터리버/판별수단; 및 상기 적어도 하나 이상의 복호기들 및 상기 디인터리버/판별수단에 상기 제2 타이밍제어신호들을 공급하는 제2 타이밍콘트롤러;를 포함하는 다중테일을 갖는 터보코드를 복원하는 복호기를 제공하는데 있다.
이하, 본 발명의 바람직한 실시예들을 첨부된 도면을 참조하여 보다 상세히 설명하기로 한다.
도 1은 본 발명에 의한 일 실시예의 다중테일을 갖는 터보코드의 부호기를 나타낸 것으로, 본 실시예에서는 입력데이타를 2개의 블록으로 나누어서 부호화하는 부호기를 설명하나, 본 발명은 블록이 2개이상인 경우에도 동작하는 것으로, 설명의 편이상 2블록인 경우의 다중테일을 갖는 터보코드의 부호기를 설명하기로 한다.
본 실시예의 부호기는 제1 부호기(인코더)(100), 제1 인터리버(11), 제2 부호기(110), 제1 타이밍콘트롤러(10), 제3 선택기(18), 버퍼(19), 및 어드레스계산기(20)를 구비한다.
길이가 N 비트인 입력 데이타는 제1 선택기(12), 제3 선택기(18) 및 제1 인터리버(11)로 보내진다. 제1 부호기(100)에서 제1 선택기(12)는 입력 데이타와 제1 테일생성기(14)의 출력을 입력으로 가진다. 제1 선택기(12)는 타이밍제어신호(C2)에 따라서, 시간 0 부터 N-1 까지는 입력 데이타를 출력한 뒤, 시간 N 부터 N+M-1 까지는 제1 테일생성기(14)의 출력을 출력한다. 여기서 M은 제1 구성부호기(13)가 가지는 메모리의 개수이다. 제1 구성부호기(13)는 타이밍제어신호(C3)에 따라서 제1 선택기(12)에서 출력되는 비트들을 순차적으로 받아들여 부호화한 후 N + M 비트를 순차적으로 출력한다. 제1 구성부호기(13)의 출력은 제3 선택기(18)로 보내진다. 제1 구성부호기(13)가 부호화하는 방법은 도 2를 참조하여 추후 상세히 설명하기로 한다. 제1 테일생성기(14)는 타이밍제어신호(C4)에 따라서 시간 N 부터 N+M-1 까지 제1 구성부호기(13)에 존재하는 메모리들이 가지는 값들을 입력으로 하여 테일을 생성한다. 제1 테일생성기(14)의 M비트 출력은 제1 선택기(12)와 제3 선택기(18)로 보내진다. 제1 테일생성기(14)가 테일을 생성하는 방법은 도 3을 참조하여 추후 상세히 설명하기로 한다.
제2 부호기(110)의 동작을 설명하면, 인터리버(11)는 타이밍제어신호(C1)에 따라서 N 비트의 입력 데이타를 받은 후 소정의 인터리빙 규칙에 따라 순서를 바꾸어 새로운 N 비트의 데이타를 만든다. 제2 선택기(15)와 제2 구성부호기(16), 제2 테일생성기(17)의 역할은 입력 데이타 대신 인터리버(11)의 출력을 사용하고 타이밍제어신호들(C5, C6, C7)을 이용한다는 점을 제외하면 제1 선택기(12), 제1 구성부호기(13), 제1 테일생성기(14)의 역할들과 동일하다. 제2 선택기(15), 제2 구성부호기(16), 제2 테일생성기(17)는 시간 N+M 부터 2(N+M)-1 까지 동작한다.
제3 선택기(18)는 입력 데이타, 제1 구성부호기(13), 제1 테일생성기(14), 제2 구성부호기(16), 제2 테일생성기(17)의 출력을 입력으로 가진다. 제3 선택기(18)는 이들을 타이밍제어신호(C8)에 따라서 순차적으로 선택하여 버퍼(19)로 보낸다.
버퍼(19)는 3N+4M개의 메모리로 구성되어 있다. 제3 선택기(18)의 출력은 타이밍제어신호(C9)에 따라서 어드레스계산기(20)에 의해 계산된 어드레스가 가리키는 버퍼(19)의 메모리에 저장된다.
이런 방법으로 N 비트의 입력 데이타에 대해서 터보코드로의 부호화가 완료되면 버퍼(19)에 저장된 3N + 4M 비트를 다음 단계로 넘겨준다. 버퍼(19)와 어드레스계산기(20)를 생략하고 제3 선택기(18)의 출력을 다음 단계로 직접 넘겨줄 수도 있다.
도 2는 M 개의 메모리를 가지고, 생성 다항식 G1(x) 와 G2(x) 가 다음의 수학식 1과 수학식 2와 같이 정의된 구성부호기(13, 16)의 블록도이다.
여기서 g1 i와 g2 i는 0 또는 1 의 값을 가진다.
즉 G1(x) = x3+ x + 1 일 때는 10112= 13 으로 표현한다.
도 2에서 는 XOR를 의미하고 는 AND를 의미한다. S0부터 SM-1은 한 비트를 저장할 수 있는 메모리이다. 시간 0에서 S0부터 SM-1의 초기값은 모두 0 이고, 테일까지 모두 부호화한 후에는 S0부터 SM-1의 마지막 값은 모두 0 이다.
도 3은 메모리의 갯수가 M인 테일 생성기의 블록도이다. 여기서 는 XOR를 의미하고 는 AND를 의미한다. 그리고 G1(x) 는 구성부호기의 G1(x)와 동일하다. 테일생성기의 입력은 구성부호기의 메모리 S0부터 SM-1의 값들이 된다. 테일생성기의 출력을 구성부호기의 입력으로 사용하면, 부호화한 후에 구성부호기의 첫번째 메모리인 S0의 값이 0이 된다. 그러므로 M번 만큼 테일생성기를 작동하면 구성부호기의 모든 메모리를 0으로 만들 수 있다.
이하, N을 입력비트수, M을 구성부호기의 메모리갯수라 할 때, 단일테일 터보코드 부호화시 상기 제1 타이밍콘트롤러(10)에서의 제어신호들(C1-C10)에 따라서 시간대별 각 블록의 동작들을 다음의 표 1에서와 같이 나타낸다.
블럭/시간대 0∼(N-1) N∼(N+M-1) (N+M)∼(2N+M-1) (2N+M)∼(2N+2M-1)
제1인터리버 (11) 쓰기 디스에이블 읽기 디스에이블
제1선택기(12) 입력데이타선택 제1 테일생성기 출력선택 디스에이블 디스에이블
제1구성부호기 (13) 인에이블 인에이블 디스에이블 디스에이블
제1테일생성기 (14) 디스에이블 인에이블 디스에이블 디스에이블
제2선택기 (15) 디스에이블 디스에이블 제1 인터리버출력선택 제2 테일생성기출력선택
제2구성부호기(16) 디스에이블 디스에이블 인에이블 인에이블
제2테일생성기 (17) 디스에이블 제1 테일생성기 출력선택 디스에이블 인에이블
제3선택기 (18) 입력데이타 및제1 구성부호기출력선택 제1테일생성기 출력 및 제1 구 성부호기출력선택 제2구성부호기 출력선택 제2 테일생성기출력 및 제2 구성부호기 출력선택
버퍼 (19) 쓰기 쓰기 쓰기 쓰기
어드레스계산기 (20) 인에이블 인에이블 인에이블 인에이블
상기 표 1을 보면 알 수 있는 것처럼, 본 발명의 제1실시예에 의한 다중테일 터보코드 부호기는 제3 선택기(18)에서 0에서 2N+2M 시간주기에서 하나의 입력블록에 제1 테일과 제2 테일의 2개의 테일을 입력비트에 첨가하여 부호화한다.
본 발명의 제2실시예의 부호기에서는 입력비트를 2개의 블록들로 나눈 다음 테일비트를 첨가하기 때문에, 실제로는 테일비트가 4개 첨가된다. 이를 표 2에 도시하기로 한다. 표 2에서 블록의 수는 2, N을 입력비트수, M을 구성부호기의 메모리갯수, 제1 블록은 N0, 제2 블록은 N1이다. 여기서, N0+N1=N이다.
블럭/시간대 0∼N0-1 N0∼N0+M-1 N0+M∼N+M-1 N+M∼N+2M-1 N+2M∼N+N0+2M-1 N+N0+2M∼N+N0+3M-1 N+N0+3M∼2N+3M-1 2N+3M∼2N+4M-1
제1인터리버 (11) 쓰기 디스에이블 쓰기 디스에이블 읽기 디스에이블 읽기 디스에이블
제1선택기(12) 입력데이타선택 제1테일생성기출력선택 입력데이타선택 제1테일생성기출력선택 디스에이블 디스에이블 디스에이블 디스에이블
제1구성부호기 (13) 인에이블 인에이블 인에이블 인에이블 디스에이블 디스에이블 디스에이블 디스에이블
제1테일생성기 (14) 디스에이블 인에이블 디스에이블 인에이블 디스에이블 디스에이블 디스에이블 디스에이블
제2선택기 (15) 디스에이블 디스에이블 디스에이블 디스에이블 제1인터리버출력선택 제2 테일생성기출력선택 제1인터리버 출력선택 제2테일생성기출력선택
제2구성부호기(16) 디스에이블 디스에이블 디스에이블 디스에이블 인에이블 인에이블 인에이블 인에이블
제2테일생성기 (17) 디스에이블 제1 테일생성기 출력선택 디스에이블 제1 테일생성기출력선택 디스에이블 인에이블 디스에이블 인에이블
제3선택기 (18) 입력데이타 및제1구성부호기출력선택 제1테일생성기 출력및 제1구성부호기출력선택 입력데이타 및제1구성부호기출력선택 제1테일생성기 출력및 제1구성부호기출력선택 제2구성부호기의 출력선택 제2테일생성기출력 및 제2구성부호기 출력선택 제2구성부호기의 출력선택 제2테일생성기 출력 및 제2구성부호기 출력
버퍼 (19) 쓰기 쓰기 쓰기 쓰기 쓰기 쓰기 쓰기 쓰기
어드레스계산기 (20) 인에이블 인에이블 인에이블 인에이블 인에이블 인에이블 인에이블 인에이블
상기 표 2를 보면 알 수 있는 것처럼, 다중테일 터보코드 부호기는 제3 선택기(18)에서 0에서 2N+4M 시간주기에서 분할된 입력블록의 각 서브블록에 제1 테일과 제2 테일의 2개의 테일을 입력비트에 첨가하여 부호화한다.
도 4는 본 발명에 의한 터보코드의 복호기의 블록도이다. 터보코드의 복호기의 입력들은 터보코드의 부호기의 입력에 해당하는 N 개의 입력 심볼들과 제1 구성부호기(13)의 출력에 해당하는 N 개의 제1 패리티심볼들, 제1 구성부호기(13)의 테일 비트에 해당하는 M개의 제1 테일심볼들, 제1 구성부호기(13)의 테일 비트에 대한 출력에 해당하는 M개의 제1 테일 패리티심볼들, 제2 구성부호기(16)의 출력에 해당하는 N개의 제2 패리티심볼들, 제2 구성부호기(16)의 테일 비트에 해당하는 M개의 제2 테일심볼들, 제2 구성부호기(16)의 테일 비트에 대한 출력에 해당하는 M개의 제2 테일 패리티심볼들로 구성되어 있다.
입력 심볼과 제1 테일심볼은 제4 선택기(22)로 보내진다. 제4 선택기(22)는 제2 타이밍콘트롤러(40)의 타이밍제어신호(T2)에 의하여 시간 0 부터 N-1 까지는 입력 심볼을 출력하고 시간 N 부터 N+M-1 까지는 제1 테일심볼을 출력한다. 제1 패리티심볼과 제1 테일패리트심볼은 제 5 선택기(23)로 보내진다. 제5 선택기(23)는 제2 타이밍콘트롤러(40)의 타이밍제어신호(T3)에 의하여 시간 0 부터 N-1 까지는 제1 테일심볼을 출력하고 시간 N 부터 N+M-1 까지는 제1 테일패리티심볼을 출력한다. 제2 인터리버(25)의 출력과 제2 테일심볼은 제6 선택기(26)로 보내진다. 제6 선택기(26)는 제2 타이밍콘트롤러(40)의 타이밍제어신호(T6)에 의하여 시간 N+M+ 부터 2N+M-1+ 까지는 인터리버(25)의 출력을 출력하고 시간 2N+M+ 부터 2(N+M)-1+ 까지는 제2 테일심볼을 출력한다. 여기서 는 제1 MAP디코더(복호기)(24)가 타이밍제어신호(T4)에 따라서 복호를 완료하는데 필요한 시간으로 제1 지연기(21)가 지연시키는 시간과 동일하다. 제2 패리티심볼과 제2 테일패리트 심볼은 제7 선택기(27)로 보내진다. 제7 선택기(27)는 제2 타이밍콘트롤러(40)의 타이밍제어신호(T7)에 의하여 시간 N+M+ 부터 2N+M-1+ 까지는 제2 테일심볼을 출력하고 시간 2N+M+ 부터 2(N+M)-1+ 까지는 제2 테일패리티심볼을 출력한다.
N 개의 현재 부가 정보는 이전 복호 단계에서 계산된 다음 부가 정보와 동일하게 둔다. 처음 복호를 하는 경우에는 현재 부가 정보를 모두 0 으로 둔다.
제1 MAP 복호기(24)는 제4 선택기(22)의 출력과 현재 부가 정보의 합을 가산기(32)에서 구하여 그 가산결과를 정보 비트에 대한 입력으로 가지고, 제2 선택기(23)의 출력을 패리티 비트에 대한 입력으로 가진다. 제1 MAP 복호기(24)는 터보코드의 부호기의 제1 구성부호기에 해당하는 부분에 대해 복호를 실행한다. 제1 MAP 복호기(24)의 동작은 다음에 자세히 설명한다.
제1 지연기(21)는 제2 타이밍콘트롤러(40)의 타이밍제어신호(T1)에 의하여 현재 부가 정보를 제1 MAP 복호기(24)가 완전히 복호를 완료할 동안 지연시킨 후 출력한다. 제1 MAP 복호기(24)의 출력과 제1 지연기(21)의 출력의 차를 감산기(33)에서 구하여 그 결과를 제2 인터리버(25)로 보낸다. 제2 인터리버(25)는 터보코드의 부호기에서 사용하는 제1 인터리버와 동일한 인터리버이다. 제2 인터리버(25)는 타이밍제어신호(T5)에 따라서 인터리빙을 수행한다. 제2 MAP 복호기(28)는 제6 선택기(26)의 출력을 정보 비트에 대한 입력으로 가지고 제7 선택기(27)의 출력을 패리티 비트에 대한 입력으로 가진다. 제2 MAP 복호기(28)의 동작 원리는 제1 MAP 복호기(24)의 동작 원리와 동일하다. 다만, 제2MAP복호기(28)는 타이밍제어신호(T8)를 사용한다. 제2 MAP 복호기(28)의 동작 시간과 제1 MAP 복호기(24)의 동작 시간만 다르기 때문에 제2 MAP 복호기(28)는 별도로 구현할 필요없이 제1 MAP 복호기(24)를 재사용할 수 있다. 제2 MAP 복호기(28)의 출력은 디인터리버(29)에 의해 디인터리빙된다. 디인터리버(29)는 타이밍제어신호(T9)에 따라서 인터리버(25)에 의해 순서가 바뀐 데이타를 원래 순서로 만들어주는 역할을 수행한다. 판별기(31)는 제2 타이밍콘트롤러(40)의 타이밍제어신호(T11)에 의하여 디인터리버(29)의 출력이 0 보다 클 때에는 1을 출력하고 0 보다 작을 때에는 0 을 출력한다. 판별기(31)의 출력은 터보코드에 의해 부호화된 데이타를 복호한 값이 된다.
제2 지연기(30)는 제2 타이밍콘트롤러(40)의 타이밍제어신호(T10)에 의하여 제1 MAP 복호기(24)의 출력과 제1 지연기(21)의 출력의 차를 제2 MAP 복호기(28)가 완전히 복호를 완료할 동안 지연시킨 후 출력한다. 디인터리버(29) 의 출력과 제2 지연기(30)의 출력의 차는 다음 부가 정보가 된다. 다음 부가 정보를 현재 부가 정보로 대체한 후, 처음부터 새로 복호를 수행하면 터보코드의 복호기는 더 많은 오류를 정
정할 수 있다. 이런 작업을 반복 복호라고 한다. MAP 복호기는 심볼 오류를 최소화할 수 있는 MAP 알고리듬을 구현한 복호기이다.
MAP 알고리듬은 다음과 같다.
단계 1에서, 시간 k=0 부터 k=N+M-1까지 Di(Rk, m)을 아래의 수학식 3과 같이 계산한다.
여기서, i 는 0 또는 1 이고, σ 2은 잡음의 분산이다. xk는 시간 k 일 때의 정보 심볼이고, yk는 시간 k 일 때의 패리티 심볼이다. m 은 구성부호기의 상태를 의미하며, 구성 부호의 메모리의 수가 M 일 때는 0 부터 2M-1 까지의 값을 가진다. Yk i(m) 은 시간 k 일 때, 구성 부호기의 상태가 m 이고 입력 비트가 i 인 경우의 구성 부호기의 출력 비트를 의미한다.
단계 2에서, 테일 비트까지 모두 부호화하면 구성 부호기의 메모리들이 모두 0을 가지므로 BN+M-1 i(Sb i(0))=0,i=0,1 로 정의하여 두고, BN+M-1 i(Sb i(m))=∞,i=0,1,m=1,...,2M-1 로 정의해 둔다. 여기서 Sb i 은 입력이 i 일 때, 구성 부호기의 다음 상태가 m 이 되는 상태를 의미한다.
단계 3에서, k=N+M-2 부터 k=0 까지 Bi k(m) 을 아래의 수학식 4와 같이 계산한다.
여기서 x E y=-ln(e-X+e-y)=min(x, y)-ln(1+ e-|y-x| ) 이다. 그리고 Si f(m)은 입력이 i 이고 구성 부호기의 상태가 m 일 때, 구성 부호기의 다음 상태를 의미한다.
단계 4에서, 시간 k=0에서 구성 부호기의 메모리들의 초기값이 모두 0 이므로 Ai 0=Di(R0, 0), i = 0, 1 로 두고, Ai 0(m) = ∞, i = 0, 1, m = 1, ..., 2M-1 로 둔다.
단계 5에서, k=1 부터 k=N+M-1 까지 Ai k(m)을 아래 수학식 5와 같이 계산한다.
단계 6에서, k=0 부터 k=N-1 까지 L(dk) 를 아래의 수학식 6과 같이 계산한다.
MAP 복호기의 출력은 N 개의 L(dk), k = 0, ..., N-1 이 된다.
상술한 터보코드의 복호 알고리듬인 MAP 알고리듬은 심벌 오류를 최소화할 수 있는 복호 알고리듬이다. MAP 알고리듬의 핵심 단계는 단계 1 부터 단계 6 으로 나누어져 있으며, 이 알고리듬은 단계 3 및 단계 5의 두 개의 핵심 수식을 포함한다. 상기 단계 3 및 단계 5의 두 식은 재귀식이다. 따라서 재귀식으로 계산하기 위해 반드시 초기값이 필요하다. 초기값은 단계 2 및 단계 4에서 설정한다. 초기값을 설정하기 위해서 항상 참인 사실을 이용한다. 즉 부호기의 상태가 처음에는 0 이라는 사실과 테일까지 완전히 부호화한 후의 부호기의 상태가 0 이라는 사실을 이용한다. 이것을 그림으로 나타내면 도 5와 같다.
도 5에 도시한 바와 같이, MAP 복호기의 출력은 단계 6의 수식으로 계산한다. 여기서 볼 수 있듯이 B를 모두 계산하여 메모리에 저장한 후 A 를 계산하면서 동시에 출력을 계산할 수 있다. 물론 반대도 가능하다. 따라서 MAP 알고리듬에는 프레임의 크기에 비례하는 메모리가 필요하고, 복호 지연도 그만큼 생긴다. 반면에 다중테일 터보코드는 도 6과 같이 표현할 수 있다.
여기서, FS_i 는 i 번째 블록의 처음 부호기 상태, LS_i 는 i 번째 블록의 마지막 부호기 상태, D_i 는 i 번째 블록의 입력 부분, T_i 는 i 번째 블록의 테일 부분, A_i 는 i 번째 블록의 A 계산, B_i 는 i 번째 블록의 B 계산, L_i 는 i 번째 블록의 출력 계산을 의미한다. 도 6에서는 입력을 세 개의 블록으로 나눈 경우를 예로하여 나타낸 것이다. 각 블록마다 테일이 있기 때문에 FS_i 와 LS_i 가 모두 0 이라는 것을 알 수 있다. 이것을 이용하면 각 블록마다 단계 2 와 단계 4 로 A_i 와 B_i 의 초기화를 할 수 있다. 초기화만 되면 나머지 A_i 와 B_i 는 단계 3 과 단계 5 의 식을 이용하여 계산할 수 있다. A_i 와 B_i 를 계산하는데에 다른 블록에 있는 값들은 전혀 영향을 미치지 않는다. 따라서 각 블록들은 독립적으로 계산될 수 있다. 만약 복호기가 하나라면, 처음에는 A_0 와 B_0 를 계산한 후 L_0 를 출력하고, 다음에는 A_1 과 B_1 을 계산한 후 L_1 을 출력하고, 마지막으로 A_2 와 B_2 를 계산한 후 L_2 를 출력하면 된다. 따라서 여기에 필요한 메모리는 블록의 크기에 비례한다. 만약 세 개의 MAP 복호기가 있다면, 첫번째 복호기는 D_0 부분을, 두번째 복호기는 D_1 부분을, 세번째 디코더는 D_2 부분을 동시에 계산할 수 있다. 이것을 병렬 복호라고 표현한다.
다음, N을 입력비트수, M을 구성부호기의 메모리갯수라 할 때, 다중테일 복호화시 상기 제2 타이밍콘트롤러(40)에서의 타이밍제어신호들(T1-T11)에 따라서 시간대 별 상술한 각 블록의 동작들을 다음의 표 3에서와 같이 나타낸다. 여기서, D는 첫 번째 복호기가 복호화하는데 지연되는 시간이고, D'는 두 번째 복호기가 복호화하는데 지연되는 시간이다.
블럭/시간대 0∼(N-1) N∼(N+M-1) (N+M)∼(N+M+D-1) (N+M+D)∼(2N+M+D-1) (2N+M+D)∼(2N+2M+D-1) (2N+2M+D)∼(2N+2M+D+D')
제1지연기 (21) 쓰기 쓰기 읽기 디스에이블 디스에이블 디스에이블
제4선택기 (22) 입력데이타선택 제1테일 출력선택 디스에이블 디스에이블 디스에이블 디스에이블
제5선택기 (23) 제1패리티선택 제1테일패리티선택 디스에이블 디스에이블 디스에이블 디스에이블
제1MAP디코더(24) 인에이블 인에이블 인에이블 디스에이블 디스에이블 디스에이블
제2인터리버 (25) 디스에이블 디스에이블 쓰기 읽기 디스에이블 디스에이블
제6선택기 (26) 디스에이블 디스에이블 디스에이블 제2인터리버출력선택 제2테일선택 디스에이블
제7선택기 (27) 디스에이블 디스에이블 디스에이블 제2패리티선택 제2테일패리티선택 디스에이블
제2MAP디코더(28) 디스에이블 디스에이블 디스에이블 인에이블 인에이블 인에이블
디인터리버 (29) 읽기 디스에이블 디스에이블 디스에이블 디스에이블 쓰기
제2지연기 (30) 읽기 디스에이블 쓰기 디스에이블 디스에이블 디스에이블
판별기(31) 인에이블 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블
상기 표 3을 보면 알 수 있는 것처럼, 본 발명의 다른 태양에 의한 제1실시예의 다중테일 터보코드 복호기는 제4선택기(22) 및 제5선택기(23)에서 N내지 N+M 시간구간동안 제1테일이 선택되며, 제5선택기(26) 및 제6선택기(27)에서 2N+M+D내지 2N+2M+D 시간구간동안 제2테일이 선택된다.
본 발명의 다른 태양에 의한 제2실시예의 복호기에서는 실제로는 테일비트가 4개 첨가된 것을 복호화하는 것이므로, 표 4에 도시하기로 한다. 표 4에서 블록의 수는 2, N은 입력비트수, M을 구성부호기의 메모리갯수, 제1 블록은 N0, 제2 블록은 N1이다. 여기서, D는 첫 번째 복호기가 복호화하는데 지연되는 시간이고, D'는 두 번째 복호기가 복호화하는데 지연되는 시간이다.
블럭/시간대 0∼(N0-1) N0∼(N0+M-1) (N+M)∼(N+M+D-1) (N0+M+D)∼(N+M+D-1) (N+M+D)∼(N+2M+D-1) (N+2M+D)∼(N+2M+2D-1) (N+2M+2D)∼(N+N0+2M+2D-1) (N+N0+2M+2D)∼(N+N0+3M+2D-1) (N+N0+3M+2D)∼(N+N0+3M+2D+D'-1) (N+N0+3M+2D+D')∼(2N+3M+2D+D'-1) (2N+3M+2D+D')∼(2N+4M+2D+D'-1) (2N+4M+2D+D')∼(2N+4M+2D+2D'-1)
제1지연기 (21) 쓰기 쓰기 읽기 쓰기 쓰기 읽기 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블
제4선택기 (22) 입력선택 제1테일 선택 디스에이블 디스에이블 입력선택 제1테일선택 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블
제5선택기 (23) 제1패리티선택 제1테일패리티선택 디스에이블 제1패리티선택 제1테일패리티선택 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블
제1MAP디코더(24) 인에이블 인에이블 인에이블 인에이블 인에이블 인에이블 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블
제2인터리버 (25) 디스에이블 디스에이블 쓰기 디스에이블 디스에이블 쓰기 읽기 디스에이블 디스에이블 읽기 디스에이블 디스에이블
제6선택기 (26) 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블 블록25의 출력선택 제2테일선택 디스에이블 블록25의출력선택 제2테일선택 디스에이블
제7선택기 (27) 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블 제2패리티선택 제2테일패리티선택 디스에이블 제2패리티선택 제2테일패리티선택 디스에이블
제2MAP디코더(28) 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블 인에이블 인에이블 인에이블 인에이블 인에이블 인에이블
디인터리버 (29) 읽기 디스에이블 디스에이블 읽기 디스에이블 디스에이블 디스에이블 디스에이블 쓰기 디스에이블 디스에이블 쓰기
제2지연기 (30) 읽기 디스에이블 쓰기 읽기 디스에이블 쓰기 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블
판별기(31) 인에이블 디스에이블 디스에이블 인에이블 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블 디스에이블
상기 표 4를 보면 알 수 있는 것처럼, 다중테일 터보코드 복호기는 구간 N0∼(N0-1) 및 (N+M+D)∼(N+2M+D-1)에서 제1테일을 선택하고, 구간 (N+N0+2M+2D)∼(N+N0+3M+2D-1) 및 (2N+3M+2D+D')∼(2N+4M+2D+D')에서 제2테일을 선택하여 N비트의 입력을 복호화한다.
이상으로 본 발명에 의한 다중테일 터보코드의 부호기와 복호기에 대해 설명하였다. 상술한 바와 같이 터보코드의 복호기의 핵심 부분인 MAP 복호기에는 입력 길이 N 과 구성 부호기의 메모리의 갯수인 M 의 합에 비례하는 메모리가 필요하다. 이는 입력 길이가 다른 통신 서비스에서는 다른 종류의 MAP 복호기를 사용하여야 한다는 것을 의미한다.
본 발명은 입력 심볼의 길이가 Nf인 MAP 복호기로 입력 데이타의 길이에 관계 없이 모든 서비스를 처리할 수 있도록 다중테일을 이용하는 것에 관한 것이다.
입력 데이타의 길이를 N > Nf라고 하자. 먼저 N 비트 입력 데이타를 각 블록의 길이 Ni< Nf가 되도록 K 개의 블록으로 나눈다. 그러면 N = 를 만족한다. 기존 터보코드의 부호기가 전체 입력 데이타를 부호화한 후 마지막에 테일을 첨가하는 것에 비해 본 발명에서는 각 블록마다 N_i 개의 데이타를 부호화한 후 테일을 첨가한다. 이것은 도 1의 각 블록들을 동작시키는 시간만을 변화시켜줌으로써 구현할 수 있다. 마찬가지로 다중테일을 가지는 터보코드의 복호기는 도 4의 각 블록들을 동작시키는 시간만을 변화시켜줌으로써 구현할 수 있다.
입력 데이타의 길이가 N 이고, 구성 부호의 메모리 갯수가 M 인 기존 터보코드의 부호율은 인데 비해 K개의 다중테일을 가지는 터보코드의 부호율은 이다. 이것은 입력 비트당 전송 파워를 동일하게 할 경우, 다중테일을 가지는 터보코드로 부호화된 심볼이 기존 터보코드로 부호화된 심볼보다 더 작은 전송 파워를 가지게 됨을 의미한다. 그리고 다중테일을 가지는 터보코드로 부호화할 경우에는 기존 터보코드로 부호화할 경우보다 더 넓은 대역폭을 사용한다는 것을 의미한다. 그러나 N 이 M 에 비해 매우 크기 때문에 다중테일을 가지는 터보코드와 기존 터보코드의 차이는 거의 없다고 할 수 있다.
통신 시스템에서는 입력 프레임과 전송 프레임의 규격이 다른 경우가 대부분이다. 이런 경우에는 입력 프레임에 더미를 첨가하여 전송 프레임 규격을 맞추어준다. 예를 들어 입력 데이타의 길이 N=104 라고 하자. 구성 부호의 메모리 갯수가 M=2 인 터보코드로 부호화하면 부호화된 데이타의 길이는 3N+4M=320 이 된다. 전송 프레임의 길이가 384 라고 하면 320 개의 비트에 더미로 64 비트를 첨가하여 전송 프레임을 구성한다.
전송 프레임의 규격을 맞추기 위해 첨가하는 더미 비트들은 전송 프레임의 규격을 맞춘다는 사실을 제외하면 파워와 대역폭을 낭비하는 역할만 한다. 이런 경우, 더미 비트들 대신 다중테일을 가지는 터보코드를 사용하여 다중테일을 전송하는 방법을 고려할 수 있다. 앞의 예에서는 더미 비트가 64개 있으므로 9개의 다중테일을 가지는 터보코드를 사용하는 것이 가능하다. 이 때는 입력 심볼의 크기가 12 인 MAP 복호기를 사용하여 복호가 가능하다. 따라서 불가피한 더미 비트들 대신 다중테일을 가지는 터보코드를 사용함으로써 낭비되는 재원을 효과적으로 이용할 수 있다.
다중테일을 가지는 터보코드는 하나의 MAP 복호기로 입력 데이타의 크기가 어떤 값을 가지더라도 복호화할 수 있을 뿐만 아니라 복호를 할 때, 기존 터보코드에서는 전체 입력 데이타에 대해 구성 부호의 초기 상태와 마지막 상태가 0 이라는 사실을 이용하는 것에 비해 본원 발명에서는 각 블록마다 구성 부호의 초기 상태와 마지막 상태가 0 이라는 사실을 이용할 수 있으므로 기존 터보코드보다 성능이 우수하다. 그러나 K 가 증가할수록 다중테일을 가지는 터보코드의 거리 분포 특성이 나빠지기 때문에, 어느 정도까지는 K 가 증가할수록 성능이 좋아지지만, 더 이상 K 를 증가시키면 성능이 떨어진다.
길이가 104 인 입력 데이타를 구성 부호의 메모리 갯수가 2 인 터보코드로 부호화한 경우, 8 개의 다중테일을 가지는 터보코드는 기존 터보코드에 비해 AWGN 채널에서 요구되는 비트 오류률이 10-4일 때, 0.5 dB 정도 우수하다. 길이가 24 인 경우에는, 4 개의 다중테일을 가지는 터보코드를 사용함으로써 1.0 dB 이상의 성능 개선이 가능하다.
터보코드는 프레임 단위로 복호하기 때문에 복호 지연이 매우 길다. 따라서 복호 지연이 짧아야만 하는 경우에는 터보코드의 성능이 다른 코드에 비해 우수함에도 불구하고 터보코드를 사용할 수 없다. 그러나, 본 발명의 다중테일을 가지는 터보코드는 블록 단위로 복호가 가능하기 때문에 M 개의 복호기를 사용하면 M 개의 블록들을 동시에 복호할 수 있다. 이런 경우 복호 지연이 1/M 배로 줄기 때문에 다중테일을 가지는 터보코드를 사용하여 병렬 복호를 수행하면 짧은 복호 지연을 요구하는 경우에도 성능이 우수한 터보코드를 사용할 수 있다.
다중테일 터보코드는 비트오류율의 관점에서 볼 때, 두가지 특성이 있다. 첫번째 특성은 앞에서도 설명한 것과 같이 복호를 할 때, 테일들을 이용하여 여러군데서 초기화를 할 수 있다는 점이다. 복호기에서는 초기화를 제외하면 송신한 신호에 채널에서 발생한 오류가 더해진 값을 가지고 A 와 B 를 계산한다. 예전 터보코드에서는 단 두군데를 제외하고는 부정확한 값을 가지고 A 와 B 를 가지고 계산한다. 하지만 다중테일 터보코드에서는 정확한 값으로 A 와 B 를 계산 (초기화) 하는 부분이 많다. 더군다나 재귀식에서 초기화는 매우 중요한 역할을 한다. 실험 결과 블록의 시작과 끝부분의 비트 오류율은 다른 부분에 비해 1/10 정도까지 줄어든다. 두번째 특성은 자유 해밍 거리가 달라진다는 점이다. 다중테일터보코드의 거리 분포를 살펴보면, 여러 개의 블록으로 나눌수록 자유 해밍 거리가 줄어든다. 이것은 비트 오류율을 증가시키는 원인이 된다. 터보코드 인터리버를 다중테일 터보코드에 맞추어 설계하면 자유 해밍 거리가 줄어드는 것을 어느 정도까지 방비할 수 있다. 이상 살펴보았듯이 다중테일 터보코드에는 비트 오류율을 줄이는 특성과 비트오류율을 증가시키는 특성이 동시에 존재한다. 따라서 적절한 블록으로 나눔으로써 관심있는 비트오류율 (10-3, 10-4, 10-6등)에서 비트 오류율을 줄이는 특성이 더 강하게 나타나도록 만들면 된다.
이상에서 살펴본 바와 같이 본 발명은 기존 터보코드의 부호기와 복호기 내의 각 블록들이 동작하는 시간만을 조절하여 구현할 수 있을 뿐만 아니라, 기존 터보코드보다 우수한 복호 성능을 얻을 수 있다. 특히 전송 프레임의 규격을 맞추기 위해 많은 더미 비트를 사용할 경우에는 매우 우수한 성능 개선 효과 및 하드웨어 절감 효과를 얻을 수 있다. 그리고 다중테일을 가지는 터보코드를 사용하면 하나의 MAP 복호기로 다양한 길이를 가지는 서비스들을 처리할 수 있다. 더구나 다중테일을 가지는 터보코드는 병렬 복호를 지원하기 때문에 그 동안 터보코드를 사용할 수 없었던 짧은 복호 지연을 요구하는 서비스에도 사용할 수 있다.
상술한 바와 같이, 기존 터보코드가 하나의 테일만을 가지는 코드임에 비해 본 발명의 터보코드는 다중테일을 가짐으로써, 통신 시스템을 구현할 때 보다 효율적이고 간단하게 구현할 수 있을 뿐만 아니라 오류 정정 능력을 향상시킨 것이다. 더구나 병렬 복호가 가능하도록 함으로써 기존 터보코드의 심각한 복호 지연 문제를 해결한 것으로, 기존의 단일 테일 터보코드의 경우에 비해 많은 효과가 있다.

Claims (6)

  1. 적어도 하나 이상의 블록으로 나누어진 입력데이타의 각 블록마다 테일이 첨가된 다중테일 터보코드.
  2. 적어도 하나 이상의 부호기로 입력데이타를 부호화하는 부호화방법에 있어서, 타이밍제어신호에 따라서, 상기 입력데이타를 적어도 하나 이상의 블록으로 나눈 후 각 블록마다 테일을 첨가하여 부호화하는 다중테일을 갖는 터보코드를 생성하는 부호화방법.
  3. 제2항에 있어서, 상기 입력데이타를 적어도 하나 이상의 블록으로 나눈 후 각 블록마다 순차인터리빙한 후 각 인터리빙된 입력블록에 각 테일정보를 첨가하여 부호화하는 단계; 및
    상기 입력데이타, 상기 각 테일정보 및 상기 부호기들의 출력들을 받아 선택적으로 출력하는 단계;를 더 포함하는 것을 특징으로 하는 부호화방법.
  4. 적어도 하나 이상의 각 부호기로 입력된 입력데이타를 제1 타이밍제어신호들에 따라서 적어도 하나 이상의 블록으로 나누고 각 블록에 하나의 테일을 첨가하여 생성된 다중테일을 갖는 터보코드를 복호하하는 방법에 있어서,
    제2 타이밍제어신호에 따라서, 상기 입력데이타 및 테일정보를 선택적으로 복호화하는 단계, 및
    상기 복호화된 정보를 인터리빙한 값과 다음 순차 테일정보를 선택적으로 복호화하고 마지막으로 복호화된 정보를 디인터리빙하여 출력하는 단계;를 포함하는 다중테일을 갖는 터보코드를 복원하는 복호화방법.
  5. 타이밍제어신호에 따라서, 입력데이타를 적어도 하나 이상의 블록으로 나눈 후, 각 블록마다 테일정보를 첨가하여 부호화하고, 상기 입력데이타를 적어도 하나 이상의 블록으로 나눈 후 각 블록마다 순차인터리빙한 후 각 인터리빙된 입력블록에 각 테일정보를 첨가하여 부호화하는 상기 블록 수에 상당하는 적어도 하나 이상의 부호기들;
    상기 입력데이타, 상기 각 테일정보 및 상기 적어도 하나 이상의 부호기들의 출력들을 받아 선택적으로 출력하는 선택수단; 및
    상기 적어도 하나 이상의 부호기들 및 상기 선택수단에 타이밍신호를 공급하는 타이밍콘트롤러;를 포함하는 다중테일을 갖는 터보코드를 생성하는 부호기.
  6. 적어도 하나 이상의 각 부호기로 입력된 입력데이타를 제1 타이밍콘트롤러의 제1 타이밍제어신호들에 따라서 적어도 하나 이상의 블록으로 나누고 각 블록에 하나의 테일을 첨가하여 생성된 다중테일을 갖는 터보코드를 복호하하는 복호기에 있어서,
    제2 타이밍제어신호들에 따라서 입력데이타와 테일정보를 받아 선택적으로 복호화하고, 상기 복호화된 입력데이타를 인터리빙한 후 순차 테일정보와 함께 선택적으로 복호화하는 적어도 하나 이상의 복호기들;
    상기 복호된 입력데이타를 디인터리빙하고 판별하여 복원된 데이타를 출력하는 디인터리버/판별수단; 및
    상기 적어도 하나 이상의 복호기들 및 상기 디인터리버/판별수단에 상기 제2 타이밍제어신호들을 공급하는 제2 타이밍콘트롤러;를 포함하는 다중테일을 갖는 터보코드를 복원하는 복호기.
KR1019980021766A 1998-06-11 1998-06-11 다중테일을갖는터보코드및그의부호화/복호화방법및그를이용한부호기/복호기 KR100297739B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019980021766A KR100297739B1 (ko) 1998-06-11 1998-06-11 다중테일을갖는터보코드및그의부호화/복호화방법및그를이용한부호기/복호기

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980021766A KR100297739B1 (ko) 1998-06-11 1998-06-11 다중테일을갖는터보코드및그의부호화/복호화방법및그를이용한부호기/복호기

Publications (2)

Publication Number Publication Date
KR20000001483A true KR20000001483A (ko) 2000-01-15
KR100297739B1 KR100297739B1 (ko) 2001-10-26

Family

ID=19539071

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980021766A KR100297739B1 (ko) 1998-06-11 1998-06-11 다중테일을갖는터보코드및그의부호화/복호화방법및그를이용한부호기/복호기

Country Status (1)

Country Link
KR (1) KR100297739B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100332805B1 (ko) * 2000-02-29 2002-04-18 구자홍 직렬 연쇄 컨벌루션 부호화 장치 및 부호화/복호화 방법
KR20020066556A (ko) * 2001-02-12 2002-08-19 주식회사 소프트디에스피 터보 코드 복호화 장치 및 방법
KR100331686B1 (ko) * 2000-01-26 2002-11-11 한국전자통신연구원 2를 밑수로 하는 로그 맵을 이용한 터보 복호기
KR100651847B1 (ko) * 2005-09-05 2006-12-01 엘지전자 주식회사 다중 순환 부호화를 이용한 터보 부호의 부호화/복호 장치및 방법
KR100841295B1 (ko) * 2000-01-10 2008-06-25 엘지전자 주식회사 터보 코드 디코딩 방법 및 디코더

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100845829B1 (ko) * 2001-11-23 2008-07-14 엘지전자 주식회사 터보 디코더 및 디코딩 방법

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100841295B1 (ko) * 2000-01-10 2008-06-25 엘지전자 주식회사 터보 코드 디코딩 방법 및 디코더
KR100331686B1 (ko) * 2000-01-26 2002-11-11 한국전자통신연구원 2를 밑수로 하는 로그 맵을 이용한 터보 복호기
KR100332805B1 (ko) * 2000-02-29 2002-04-18 구자홍 직렬 연쇄 컨벌루션 부호화 장치 및 부호화/복호화 방법
KR20020066556A (ko) * 2001-02-12 2002-08-19 주식회사 소프트디에스피 터보 코드 복호화 장치 및 방법
KR100651847B1 (ko) * 2005-09-05 2006-12-01 엘지전자 주식회사 다중 순환 부호화를 이용한 터보 부호의 부호화/복호 장치및 방법

Also Published As

Publication number Publication date
KR100297739B1 (ko) 2001-10-26

Similar Documents

Publication Publication Date Title
US6014411A (en) Repetitive turbo coding communication method
US6044116A (en) Error-floor mitigated and repetitive turbo coding communication system
JP3857320B2 (ja) 並列連結のテイルバイティング・コンボルーション・コード及びその復号器
US6862707B2 (en) Turbo code encoder having an improved interleaver
KR100306425B1 (ko) 런 길이 제한 코드를 실행하기 위한 시스템
UA63024C2 (en) Turbo coder; method and device for interleaving data elements
US6028897A (en) Error-floor mitigating turbo code communication method
JP2000216689A (ja) 反復式ターボ符号復号装置及び該装置の性能を最適化する方法
JP4420924B2 (ja) 情報ビット系列を符号化する方法および符号化器
US6912684B2 (en) Error correction encoding method and apparatus, and error correction decoding method and apparatus
US4293951A (en) Method and apparatus for encoding/decoding a convolutional code to a periodic convolutional code block
US20030188248A1 (en) Apparatus for iterative hard-decision forward error correction decoding
EP2339757B1 (en) Power-reduced preliminary decoded bits in viterbi decoder
KR100297739B1 (ko) 다중테일을갖는터보코드및그의부호화/복호화방법및그를이용한부호기/복호기
KR100628201B1 (ko) 터보 디코딩 방법
KR19990081470A (ko) 터보복호기의 반복복호 종료 방법 및 그 복호기
KR100504988B1 (ko) 터보 코드용 하이브리드 인터리버
EP1300954A1 (en) Encoding device and method, decoding device and method, providing medium, and method for generating data substitution position information
US20020170016A1 (en) Turbo decoder, turbo encoder and radio base station with turbo decoder and turbo encoder
US6889353B2 (en) Method and arrangement for decoding convolutionally encoded code word
Benaissa et al. Reconfigurable hardware architectures for sequential and hybrid decoding
KR100454952B1 (ko) 적응형채널부호화방법및장치
JP4420925B2 (ja) 情報ビット系列を符号化する方法および符号化器
CN112803955B (zh) 通用Turbo码编码器结构、编码器、方法、装置、设备及介质
KR100332805B1 (ko) 직렬 연쇄 컨벌루션 부호화 장치 및 부호화/복호화 방법

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
LAPS Lapse due to unpaid annual fee