KR20090008303A - 고속 격자 처리를 위한 파이프라인화 상태 업데이트의 스케줄링 - Google Patents

고속 격자 처리를 위한 파이프라인화 상태 업데이트의 스케줄링 Download PDF

Info

Publication number
KR20090008303A
KR20090008303A KR1020087026562A KR20087026562A KR20090008303A KR 20090008303 A KR20090008303 A KR 20090008303A KR 1020087026562 A KR1020087026562 A KR 1020087026562A KR 20087026562 A KR20087026562 A KR 20087026562A KR 20090008303 A KR20090008303 A KR 20090008303A
Authority
KR
South Korea
Prior art keywords
state
metric
time index
grid
states
Prior art date
Application number
KR1020087026562A
Other languages
English (en)
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 KR20090008303A publication Critical patent/KR20090008303A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • H03M13/4107Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing add, compare, select [ACS] operations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • 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/3905Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
    • 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/3905Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
    • H03M13/3922Add-Compare-Select [ACS] operation in forward or backward recursions
    • 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/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing

Landscapes

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

Abstract

복수의 상태를 갖는 유한 상태 머신으로 표현 가능한 과정으로부터 기인하는 수신 신호로부터 정보를 추출하는 방법, 장치 및 시스템으로서, 상기 상태들 사이의 천이는 복수의 시간 지수에 걸쳐 있는 격자를 이용하여 표현될 수 있고, 상기 수신 신호를 고려하여 분기 메트릭을 계산하는 단계; 상기 분기 메트릭을 고려하고 파이프라인 과정을 이용함으로써 각 시간 지수에서 상태 메트릭을 계산하는 단계 - 상기 파이프라인 과정은 제1 시간 지수에서 상태를 메트릭을 계산하는데 사용되고, 이어서 상기 파이프라인 과정은 하나 이상의 비인접 시간 지수에서 상태 메트릭을 계산하는데 사용되고, 이어서 상기 파이프라인 과정은 인접하는 인접 시간 지수에서 상태 메트릭을 계산하는데 사용됨 - ; 및 상기 격자를 통하여 선택되는 적어도 하나의 경로와 연관되는 상태에 대한 상태 메트릭을 고려하여 적어도 하나의 출력을 생성하는 단계를 포함한다.
파이프라인, 상태, 분기, 메트릭, 시간, 지수, 천이, 인코딩, 디코딩

Description

고속 격자 처리를 위한 파이프라인화 상태 업데이트의 스케줄링{SCHEDULING PIPELINED STATE UPDATE FOR HIGH-SPEED TRELLIS PROCESSING}
노이즈 채널(noise channel)을 통해 데이터를 전송하면 데이터 스트림에 에러가 생길 수 있다. 전송되는 시퀀스(transmitted sequence)에서의 에러의 양을 줄이고 재전송을 피하기 위하여 시퀀스에서 에러를 검출하고 정정하는 능력을 제공하는 코딩 기술(coding technique)이 개발되어 왔다. 이는 대개 전송의 일부로서 리던던트 정보(redundant information)를 부가하여 이루어진다. 여기서의 전송이라는 용어는 상이한 유형의 매체를 통하여 데이터를 전달하도록 넓게 사용된다. 이는 유선, 무선, 위성 및 다른 기술에 사용되는 것과 같은 통신 매체를 포함할 수 있다. 이는 또한 자기, 반도체 및 다른 유형의 메모리와 같은 저장 매체를 포함할 수 있다.
가장 인기 있고 강력한 코딩 기술 중 일부는, PCCC(Parallel concatenated Convolutional Code) 또는 터보, SCCC(Serially Concatenated Convolutional Code) 및 다른 TLC(Turbo-Like Code)와 같은 다중 코드를 포함하는 독립형이나 좀 더 복잡한 배열에 컨벌루션 코드를 사용한다. 보통의 컨벌루션 코드와 TLC는 성능, 구조 및 디코딩 기술의 관점에서 상당히 다르지만, 디코더(decoder)는 일부 공통적인 특징을 갖는다.
컨벌루션 코드를 디코딩하는데 사용되는 디코딩 구조는 격자 처리(trellis processing)에 기초한다. 격자는 시간에 대한 인코더 상태 머신 전개의 상태를 나타낸다. 격자는 수신 신호로부터 획득되는 정보에 기초하여 시간에 대한 컨벌루션 인코더 유한 상태 머신(convolutional encoder finite state machine)의 상태를 추정하는데 사용된다.
특별한 경우로서, 단일 패리티 체크 코드(parity check code)에 기초하는 동일 카테고리의 코드들로 분류할 수 있는데, 이는 이들 역시 격자 기반 구조를 이용하여 디코딩될 수 있기 때문이다. 패리티 체크 상태 머신은 패리티 비트가 그 코드를 종결시키는 컨벌루션 코드의 2상태 상태 머신으로 볼 수 있다. 따라서 길이 K의 단일 패리티 체크 코드는 길이 K+1의 종결된 2상태 반복 컨벌루션 코드로 보고 디코딩될 수 있다.
컨벌루션 코드의 경우에 격자를 디코딩하기 위한 종래의 알고리즘은 과정 중에 상태 메트릭(state metrics)을 업데이트하면서 처음부터 끝까지 격자를 통하여 한 번에 한 단계를 처리한다. 상태 메트릭은 수신자측에서 수집되는 수신 시퀀스에 대한 관찰로부터 계산되는 분기 메트릭(branch metrics)을 이용하여 업데이트된다. 따라서 격자를 따른 각 경로는 그 시퀀스가 전송되는 가능성에 대응되는 비용과 연관되어 있다. 이때, 디코더는 비터비 알고리즘(Viterbi algorithm)으로 알려진 처리, 즉 디코딩된 시퀀스에 대하여 "하드(hard)" 결정을 하거나, 소프트 출력 비터비 알고리즘(Soft Output Viterbi Algorithm, SOVA)으로 알려진 처리, 즉 특정 값을 가정하여 전송된 비트의 가능성에 대응되는 소프트 메트릭을 생성한다.
TLC의 경우, 포워드 백워드 알고리즘(Forward-Backward Algorithm)으로 알려진 종래의 디코딩 알고리즘은 비터비 알고리즘과 동일한 방식으로 상태 메트릭을 업데이트하면서 양방향으로 격자를 처리한다. 분기 메트릭과 함께 두 경로(passes)로부터의 상태 메트릭은 격자를 따라 관심 있는 각 비트에 대한 소프트 출력을 생성하는데 사용된다. 이러한 처리를 행하는 모듈은 소프트 인 소프트 아웃(Soft-In-Soft-Out, SISO) 모듈이라 한다. TLC의 경우, 각 컨벌루션 코드에 대응되는 그러한 SISO 모듈이 인코더에 하나씩 있으며, 각 SISO는 데이터를 다른 것에 넘겨주고, 그 처리는 "하드" 결정이 이루어지는 어느 시간에 어떤 기준이 충족될 때까지 반복된다. 그러한 기준은 최대 반복 횟수에 도달했는가, 해법에 대한 수렴이 달성되었는가가 될 수 있다.
격자 기반 처리에서의 문제는 반복적인 특성이다. 비터비 디코더와 SISO 모듈 모두에서 처리의 임계 경로(critical path)는 상태 업데이트 처리이다. 격자를 통과하는 각 단계의 처리는 이전 단계(또는 처리가 백워드인 경우에는 다음 단계)에서 생성된 값에 의존한다. 이러한 데이터 의존은 이전 단계의 처리가 완료될 때까지는 다음 단계를 진행할 수 없음을 의미한다. 기본적인 접근으로 이는 동일한 처리기에 의하여 모든 격자가 직렬로 처리되어야 함을 또한 의미한다.
설계자가 격자를 섹션(section)(윈도우 또는 타일과 같은)으로 쪼개어 처리를 병렬로 처리 가능하게 하는 더 작은 블록으로 쪼개는 일부 기술이 개발되어 왔다. 기본 개념은 비터비에게 허여된 미국 특허번호 제5,933,462호에 기술되어 있다. 크기 K의 전체 블록을 디코딩하는 대신, 미국 특허번호 제5,933,462호는 메모 리 용량을 줄이도록 크기 L의 윈도우에 대한 디코딩을 위한 알고리즘을 기술한다. 개념은 포워드 방향에 대하여도 확장될 수 있으며 크기 K의 격자 섹션 블록을 더 작은 크기 L의 독립형 섹션으로 쪼개는데 사용될 수 있다.
하지만, 이는 데이터 의존 문제를 해결하지 못하며 격자 처리기의 현재 하드웨어 구현은 반복 상태 업데이트 계산의 실행만큼 빠르게 제약되고 있다. 설계자가 처리 속도를 높이고자 하는 경우, 필요한 속도를 달성하기 위하여 격자의 서로 다른 섹션에 대하여 종종 복수의 상태 업데이트 장치(unit)를 병렬적으로 사용한다. 하지만, 이러한 접근은 내재적인 단점이 있다. 하나는, 격자의 서로 다른 섹션용 병렬 상태 업데이트 장치는 액세스가 충돌하지 않도록 동시에 여러 메모리에 액세스하여 매우 넓은(very wide) 메모리에 번역하고 몇 가지 제약이 따른다. 또한, 격자 처리 엔진에 필요한 로직(logic)의 양은 사용되는 병렬 장치의 개수와 선형적으로 비례한다.
따라서 보다 효율적인 격자 기반 디코딩 기술이 많이 필요하다. 이는 반복적인 연산을 수행할 수 있는 상태 업데이트 계산을 행할 때 특히 그러하다.
본 발명은 복수의 상태를 갖는 유한 상태 머신으로 표현 가능한 과정에 기인하는 수신 신호로부터 정보를 추출하는 방법, 장치 및 시스템에 관한 것으로서, 상태들 사이의 천이는 복수의 시간 지수(time index)에 걸쳐 있는 격자를 이용하여 표현될 수 있으며, 상기 격자는 각 시간 지수에 복수의 상태를 포함한다. 상기 방법, 장치 및 시스템은 상기 수신 신호를 고려하여 한 상태에서 다른 상태로의 천이에 대응하는 분기 메트릭(branch metrics)을 계산하는 단계; 상기 분기 메트릭을 고려하고 파이프라인 과정(pipelined process)을 이용함으로써 각 시간에서 상태에 대응되는 상태 메트릭을 계산하는 단계, 여기서 상기 파이프라인 과정은 제1 시간 지수에서 상태를 메트릭을 계산하는데 사용되고, 이어서 상기 파이프라인 과정은 상기 제1 지수에서의 상태에 대응하는 상태 메트릭의 계산 결과를 이용함이 없이, 상기 제1 시간 지수에 인접하지 않는 하나 이상의 인접하지 않은 시간 지수에서 상태 메트릭을 계산하는데 사용되고, 이어서 상기 파이프라인 과정은 상기 제1 지수에서의 상태에 대응하는 상태 메트릭의 계산 결과를 이용하여 상기 제1 시간 지수에 인접하는 인접 시간 지수에서 상태 메트릭을 계산하는 사용되며; 및 상기 격자를 통하여 선택되는 적어도 하나의 경로와 연관되는 상태에 대한 상태 메트릭을 고려하여 적어도 하나의 출력을 생성하는 단계를 포함한다.
상기 격자는 각각이 복수의 시간 지수의 더 작은 복수에 걸쳐 있는 복수의 섹션으로 분할될 수 있으며; 상기 제1 시간 지수는 상기 격자의 제1 섹션으로부터의 시간 지수이고; 상기 하나 이상의 인접하지 않는 시간 지수는 상기 격자의 하나 이상의 다른 섹션으로부터의 시간 지수이며; 및 상기 인접한 시간 지수는 상기 격자의 상기 제1 섹션으로부터의 다른 시간 지수일 수 있다. 따라서 상기 파이프라인 과정은 연속(round-robin) 방식으로 상기 격자의 상이한 섹션으로부터의 시간 지수에서 상태 메트릭을 계산하는데 사용될 수 있다.
한 실시예에 따르면, 상기 파이프라인 과정은 N개 스테이지(stage)를 포함하며, N은 양의 정수이고, 상기 격자는 M개의 섹션으로 분할되고, M은 N과 동일한 양의 정수이다. 다른 실시예에 따르면, M은 N보다 큰 양의 정수이며 N의 배수이다.
상기 상태 메트릭의 계산은 포워드 상태 메트릭 및/또는 백워드 상태 메트릭의 계산을 포함할 수 있다. 한 실시예에서, 상기 파이프라인 과정은 적어도 하나의 더하기/비교/선택(ACS) 동작을 행하도록 구성된다.
상기 파이프라인 과정은 게이트 로직(gated logic)을 이용하여 하드웨어에서 구현될 수 있으며, 상기 게이트 로직은, ASIC(Application Specific Integrated Circuit) 설계, VLSI(Very Large Scale Integrated Circuit) 설계, FPGA(Field Programmable Gate Array) 설계 및/또는 기타 설계의 일부일 수 있다.
또한, 상기 분기 메트릭 계산은 물론 상기 적어도 하나의 출력의 생성은 파이프라인 과정을 이용하여 행해질 수 있다.
본 발명의 다양한 실시예에 따르면, 윈도잉(windowing) 및/또는 타일링(tiling)를 포함하는 기술은 파이프라인화 상태 업데이트부와 인터레이싱(interlacing) 스케줄링 알고리즘과 결합하여 격자 기반 계산의 처리 속도를 개선할 수 있다. 이로 인해 단일 상태 업데이트 장치를 복수의 상태 업데이트 장치 대신에 사용할 수 있다. 중요한 것은, 격자 기반 계산은 상태 업데이트 값의 반복적인 속성에 관련된 제약이 적도록 행해질 수 있다는 점이다. 하드웨어 구현시 회로 면적을 상당히 줄일 수 있는 이점이 있다. 또한, 메모리 액세스 특성을 크게 개선할 수 있다.
도 1은 컨벌루션 인코더를 사용하는 디지털 통신 시스템을 나타낸다.
도 2는 컨벌루션 인코딩, ISI 간섭 등과 같은 처리를 모델화한 FSM을 설명하는 격자의 섹션을 나타낸다.
도 3은 본 발명의 실시예에 따른 격자 기반 디코더를 상세하게 나타낸 블록도이다.
도 4는 본 발명의 한 실시예에 따라 디코딩을 개별적으로 수행 가능하도록 격자를 복수의 섹션으로 분할한 것을 나타낸다.
도 5는 본 발명의 한 실시예에 따른 파이프라인형 상태 업데이트 장치의 상세를 나타낸다.
도 6은 오직 하나의 스테이지(N=1)로 구성되는 ACS 장치에 대한 블록도를 나타낸다.
도 7은 세 개의 스테이지(N=3)로 구성되는 ACS 장치에 대한 블록도를 나타낸다.
도 8은 여섯 개의 스테이지(N=6)로 구성되는 ACS 장치에 대한 블록도를 나타낸다.
I. 시스템 설명
도 1은 컨벌루션 인코더를 이용하는 디지털 통신 시스템(10)을 나타낸다. 컨벌루션 인코더(14)는 전술한 바와 같이, 독립형 컨벌루션 코드 또는 PCCC, SCCC 및 다른 터보형 코드와 같은 다중 코드를 포함하는 좀 더 복잡한 배열을 포함한다. 인코더(14)는 유한 상태 머신(finite state machine, FSM)으로 모델화될 수 있는 여러 처리기 중의 한 예이다. 그러한 다른 처리기는 다른 유형의 코드, 유사 용량 다중 사용자 검출(near-capacity multi-user detection), 유사 최적(near-optimal) 2차원 데이터 검출, 페이딩 채널(fading channel), 심벌간 간섭(inter-symbol interference, ISI) 채널을 포함하지만 이에 한정되지 않는다.
도 1을 참고하면, 디지털 통신 시스템(10)은 폐쇄된 심벌 세트 상에서 정해지는 심벌을 제공하는 데이터 소스(12)를 포함한다. 예를 들어, 2진 폐쇄형 심벌 세트를 사용하는 경우, 심벌은 {0, 1}에서 선택된다. 데이터 소스(12)로부터의 심벌은 인코더(14)로 전달되어 인코더(14)의 구조에 따라 인코딩되는 심벌로 변환된다. 이어 인코딩된 심벌은 부가적인 백색 가우시안 노이즈(additive white Gaussian noise, AWGN)와 같은 노이즈와 왜곡을 인코딩된 심벌에 추가하여 수신 신호를 생성할 수 있는 채널(16)을 통하여 보내진다. 수신 신호에 관한 소프트 정보가 디코더(18)로 보내진다. 디코더(18)는 하드 결정이 디코딩되는 심벌(hard-decision decoded symbol)을 생성하기 위한 경계가 될 수 있는 심벌에 관한 소프트 정보를 출력한다.
도 1에 도시한 디지털 통신 시스템은 기본 기능의 예시적인 예를 제공하는 기능적인 블록도이다. 상이한 기능을 추가하거나 삭제할 수 있다. 또한, 여기서 기재하는 신규한 방법의 적용은 이러한 특정 블록도에 한정되는 것은 아니다. 유사하게, 이하에서 설명하는 다른 블록도는 단지 예일 뿐이고 여기서 설명하는 방법의 적용 가능성을 제한하지 않는다.
도 2는 컨벌루션 인코딩, ISI 간섭 등과 같은 처리를 모델화한 FSM을 설명하 는 격자의 섹션을 나타낸다. 일반적으로 말하면, FSM은 P개의 상태 S={S 1 , S 2 ,..., S P }를 갖는다. 상태의 개수 P는 FSM의 메모리 길이의 함수이다. 시간 k에서 FSM의 상태는 s k = S i ∈S 이다.
한 상태에서 다른 상태로의 각 천이는 n개의 입력과 m개의 출력을 포함한다.
한 상태 Sk(소스 상태 k)로부터 다른 상태 Sl(목표 상태 l)로의 격자 천이는 결정적으로 입력 심벌 b i , i= 1,..n에 의하여 FSM으로 넘어간다. 입력 심벌 b i 는 데이터 소스(12)와 같은 데이터 소스에 의하여 제공될 수 있다. 따라서 각 상태 천이는 시작 및 목표 상태는 물론 각 입력 및 출력 심벌에 대한 값의 조합으로 특징지어 질 수 있다.
각 입력 심벌 b i 는 M진(M-ary) 폐쇄형 심벌 세트로부터 추출된다. 설명을 쉽게 하게 위해서, 연속하는 섹션에 있어서, b i 는 2진 폐쇄형 심벌 세트 {0, 1}로부터 추출된다고 가정한다. 즉, 입력 심벌 b i 는 2진값(비트)이라 가정한다. 유사하게, FSM으로부터의 출력 심벌 c j , j=1..m, 역시 2진값(비트)이라 가정한다.
도 2에 도시한 특정 예는 4개의 상태(P=4)를 갖는 FSM이고, 각 상태 천이는 하나의 입력 비트 b i (n=1)와 하나의 출력 비트c j (m=1)를 수반한다. 이 목표 상태 l은 소스 상태 k와 입력 비트 b i (이 경우에는 오직 하나의 입력 비트 b i )에 의하여 결정된다. 따라서 각 소스 상태는 두 개의 가능한 목표 상태로 천이할 수 있다. 또한, 각 목표 상태는 두 개의 가능한 소스 상태로부터 유래할 수 있다. 출력 비트 c j (이 경우에는 오직 하나의 출력 비트 c j )는 소스 상태 k로부터 목표 상태 l로의 상태 천이에 의하여 결정된다. 도 2에 제공되는 P, n 및 m의 특정값들은 단지 예시일 뿐이다. 이러한 값들은 구현되는 코드에 따라 변화한다.
II. 디코딩을 위한 메트릭 계산
디코더(18)와 같은 디코더에 의하여 행해지는 디코딩은 분기 메트릭 및 상태 메트릭을 수반할 수 있다. 이러한 메트릭은 전송을 통하여 제 시간에 특정 지점에 있는 것, 인코더 FSM이 특정 상태에 있거나 한 특정 상태에서 다른 특정 상태로 천이되는 가능성과 관련된 것이다. 메트릭은 격자를 따른 처리와 수신 신호로부터의 후시 확률(posteriori probability)을 이용하여 계산된다.
특히, 분기 메트릭은 한 상태에서 다른 상태로의 천이에 연관된 확률에 관한 것이다. 주지하는 것처럼, 분기 메트릭은 통상 수신 신호를 고려하여 계산된다. 따라서 수신 신호가 주어지면, 격자를 따른 각 분기에 대한 후시 확률은 그 특정 분기를 따른 모든 비트에 대하여 알려진 확률에 의하여 형성될 수 있다. 이러한 후시 확률을 나타내는 값은 분기 메트릭으로 고려된다.
상태 메트릭은 특정 상태에 존재한다는 것에 연관된 확률에 관한 것이다. 상태 메트릭은 일반적으로 분기 메트릭을 이용하여, 초기 상태로부터 시작하는 격자를 따른 각 상태에 대한 확률을 계산하고 한 번에 하나의 시간 지수(time index)를 처리함으로써 계산된다. 각 상태에 대한 결과적인 확률은 또한 상태 메트릭으 로 알려져 있으며, 특정 시간 특정 상태에서 격자의 시초에서 그 지점까지 수신 확률 또는 분기 메트릭이 인코더 FSM에 주어지는 확률을 나타낸다.
일반적으로, 분기 메트릭과 상태 메트릭은 특정 입력 심벌 및/또는 출력 심볼이 어떤 값에 대하여 가지는 가능성과 연관된 약간의 신뢰도 측정의 관점에서 정해진다. 주지된 것처럼, 사용 가능한 여러 신뢰도 측정 유형이 있다. 설명을 쉽게 하기 위하여, 정규화된 로그 가능성 메트릭(log-likelihood metrics)으로 알려진 신뢰도 측정 유형을 여기에 채택한다. 다른 유형의 신뢰도 측정은 주지되어 있으며 또한 사용될 수 있다. 상이한 유형의 신뢰도 측정 사이의 관계는 당업계에서 잘 이해되고 있다. 따라서 여기서 설명하는 기술은 다른 유형의 신뢰도 측정에 용이하게 확장될 수 있다.
여기서, 정규화된 로그 가능성 메트릭은 입력 심벌 b i 또는 출력 심벌 c j 중 하나를 나타내는 각 심벌 z k 마다 정의된다. 다시 설명을 쉽게 하기 위하여, 각 입력 또는 출력 심벌은 원래 2진값(비트)으로 여기서 설명한다. 정규화된 로그 가능성 메트릭은 소프트 입력(SI) 및 소프트 출력(SO)과 같은 소프트 신뢰도 측정을 포함한다. 소프트 입력 SI에 대하여 먼저 이하에서 설명한다.
비트를 나타내는 소프트 입력 메트릭 SI는 비트가 1이되는 확률의 로그(logarithm)에서 비트가 0이 되는 확률의 로그를 뺀 것으로 정의될 수 있다. 이는 부호를 갖는 양이 되는 1의 가능성과 항상 0과 같아지는 0의 가능성을 표현하는 값으로 강제한다. 이러한 표현은 각 비트를 표현하기 위하여 오직 하나의 양만이 필요하므로 매우 실용적이다. 임의의 비트 z k 에 대하여 수학적으로 수학식 1과 같이 공식화될 수 있다.
Figure 112008075296821-PCT00001
III. 최소 합 알고리즘(Min-Sum Algorithm)
도 3은 본 발명의 한 실시예에 따른 디코더(18)를 좀 더 상세히 나타낸 블록도이다. 도시한 것처럼, 디코더(18)는 분기 메트릭부(302), 상태 업데이트부(304) 및 출력부(306)를 포함한다. 이들은 여기에서는 별개의 장치로 도시되었지만 개별적 또는 통합된 방식으로 구현될 수 있다.
격자 처리의 제1 단계는 분기 메트릭부(302)에서 행해진다. 분기 메트릭부(302)는 각 격자 섹션에 대한 분기 메트릭을 계산한다. 현재의 표시법(notation) 대로 하면, 두 상태 사이의 천이에 대한 분기 메트릭은 해당 비트가 특정 분기상에서 1의 값이라 가정하는 모든 비트 b i c j 에 대하여 소프트 입력 메트릭의 합과 동일하다. 따라서, 격자 내의 분기 메트릭
Figure 112008075296821-PCT00002
(시간 t에서 상태 k로 시작해서 상태 l로 끝남)은 수학식 2와 같이 표현될 수 있다.
Figure 112008075296821-PCT00003
이러한 부분의 처리는 데이터 의존 없이 덧셈 세트만을 포함하여 피드 포워드 데이터 경로(feed-forward data path)로 구현될 수 있고, 상태 업데이트 동작인 격자 처리의 다음 단계만큼 적어도 빠르게 필요한 만큼 정밀하고 용이하게 파이프라인화될 수 있다.
격자 기반 처리의 제2 단계는 상태 업데이트부(304)에 의하여 행해진다. 상태 업데이트부(304)는 각 격자 섹션마다 상태 메트릭을 계산한다. 이는 또한 "상태 업데이트"동작으로 부른다. 상태 메트릭은 통상적으로 반복적으로 정의된다. 즉, 목표 상태의 상태 메트릭은 목표 상태로 이끄는 하나 이상의 소스 상태의 상태 메트릭의 함수로 정의될 수 있다. 이러한 반복 계산에 대하여 이하에서 좀 더 상세히 설명한다.
여기서, 상태 메트릭 계산은 최소 합 처리 알고리즘을 이용하여 행해진다. 하지만, 당업자가 인식하는 바와 같이, 본 발명의 교시는 최대 적(max-product), 합 적(sum-product), 최소* 합 및 최대* 합 알고리즘(또는 그러한 근사화 중 임의의 것)과 같은 다른 알고리즘의 선택에도 적용 가능하다. 이들 연산 세트 모두는 상태 및 분기 메트릭 계산에 이용되는 확률 세트로 세미 링(semi-ring)을 정의하는 연산 쌍이기 때문에 유사한 특성을 갖는다.
주지된 바와 같이, 상태 메트릭은 포워드 상태 메트릭과 백워드 상태 메트릭을 포함할 수 있다. 본 발명의 한 실시예에 따르면, 시간 t에서 포워드 상태 메트릭은
Figure 112008075296821-PCT00004
(k=1..P이고, t=0..K)로 정의된다. 백워드 상태 메트릭은 시간 t에서
Figure 112008075296821-PCT00005
(k=1..P이고, t=0..K)로 정의된다. 여기서, n은 각 상태 천이와 연관된 입력의 개수이고, m은 출력의 개수이다. P는 FSM의 상태의 개수이고 K는 디코딩되는 코드 워드의 길이 또는 블록 사이즈이다.
포워드 및 백워드 상태 메트릭의 이용은 구현되는 디코더의 유형에 따라 달라질 수 있다. 예를 들어, 디코더가 통상적으로 터보형 코드(TLC)에 사용되는 소프트 입력 소프트 출력(SISO) 모듈인 경우, 포워드 및 백워드 상태 메트릭을 모두 계산할 수 있다. 디코더가 기본 비터비 디코더인 경우, 포워드 상태 메트릭만 계산할 필요가 있다. 포워드 및 백워드 상태 업데이트 동작 모두에 대하여 이하에서 설명한다.
최소 합 알고리즘에 따르면, 상태 업데이트 동작은 목표 상태로 이끄는 모든 천이를 취하여 해당 분기 메트릭을 소스 상태 메트릭에 더한 후 목표 상태 메트릭을 가능한 모든 합의 최소값으로 설정한다. 매우 유사하게, 이러한 처리 단계에 대한 식은 다음과 같을 수 있다. 포워드 및 백워드 둘 모두의 경우에서 그 동작은 상태 k와 l 사이에 유효한 모든 천이에 대하여 정의된다.
Figure 112008075296821-PCT00006
Figure 112008075296821-PCT00007
일례로서, 한 예시적인 포워드 상태 메트릭 계산에 대하여 이하에서 설명한다. 도 2를 다시 참고하면, 시간 지수 (t+1)에서의 특정 목표 상태 l (상태 "C")로 이끌 수 있는 시간 지수 t에서의 두 개의 가능한 소스 상태 (상태 "A"와 상태 "B")가 있다. 시간 지수 t와 시간 지수 (t+1)은 인접한 시간 지수의 예이다. 따 라서 시간 (t+1)에서 목표 상태 "C"와 연관되는 포워드 상태 메트릭
Figure 112008075296821-PCT00008
의 계산은 두 합의 비교에 기초한다. 제1 합은 제1 가능 소스 상태 "A"와 연관된 시간 t에서의 포워드 상태 메트릭
Figure 112008075296821-PCT00009
과, 상태 "A"에서 상태 "C"로의 천이와 연관된 시간 t에서의 분기 메트릭
Figure 112008075296821-PCT00010
을 더하는 것이다. 제2 합은 제2 가능 소스 상태 "B"와 연관된 시간 t에서의 포워드 상태 메트릭
Figure 112008075296821-PCT00011
과, 상태 "B"에서 상태 "C"로의 천이와 연관된 시간 t에서의 분기 메트릭
Figure 112008075296821-PCT00012
을 더하는 것이다. 두 합 중 작은 것(또는 3 이상의 상태가 목표 상태로 이끄는 경우에는 3 이상의 합의 그룹에서 최소인 것)을 목표 상태 "C"에 대하여 시간 (t+1)에서의 새로운 포워드 메트릭
Figure 112008075296821-PCT00013
로 선택한다.
따라서 시간 지수(t+1)마다 포워드 상태 메트릭은 모든 상태에 대하여 계산된다. 그 계산은 이전 시간 지수 t의 상태에 대한 포워드 상태 메트릭과 적절한 분기 메트릭에 기초한다. 이러한 포워드 상태 메트릭 계산은 도 2의 환경에서 왼쪽에서 오른쪽으로 이동하면서 각 시간 지수에서 반복된다. 따라서 포워드 상태 메트릭은 포워드 방향으로 반복하여 계산된다고 말한다.
백워드 상태 메트릭의 계산은 유사한 방식으로 행해질 수 있지만, 다른 방향으로 행해질 수 있다. 따라서 각 시간 지수 t에서, 백워드 상태 메트릭은 모든 상태에 대하여 계산된다. 그 계산은 이어지는 시간 지수 (t+1)의 상태에 대한 백워드 상태 메트릭과 적절한 분기 메트릭에 기초한다. 이러한 백워드 상태 메트릭 계산은 도 2의 환경에서 오른쪽에서 왼쪽으로 이동하면서 각 시간 지수에서 반복된다. 따라서 백워드 상태 메트릭은 백워드 방향으로 반복하여 계산된다고 말한다.
이러한 격자 처리 부분(상태 메트릭 계산 또는 "상태 업데이트")은 과정이 반복되므로 데이터 의존을 포함하는 것은 명백하고, 이는 그 과정의 이 부분이 종래의 설계에서 격자 처리의 병목으로 여겨지는 이유이다.
격자 기반 처리의 제3 단계는 출력부(306)에서 행해진다. 이 단계는 비터비 디코더와 터보 디코더와의 차이이다. 즉, 디코더(18)는 비터비 디코더를 나타낼 수 있다. 그 경우, 시스템은 단지 가장 그럴듯한 경로를 알려주는 격자를 통하여 역추적(trace-back)을 행하고, 그로부터 전송된 비트 중 가장 그럴듯한 시퀀스를 유도한다. 따라서 이는 "하드"결정 수행 알고리즘이다. 이와는 달리, 디코더(18)는 터보 디코더를 나타낼 수 있다. 주지된 바와 같이, 그러한 터보 디코더에는 복수의 소프트 입력 소프트 출력 (SISO) 모듈이 있을 수 있다. 장치(302, 304, 306)는 이들 SISO 모듈의 하나 (또는 이상)에 포함되는 구성요소를 나타낼 수 있다. 이 경우, 해결로 수렴할 때까지 시스템이 상이한 SISO 모듈 사이를 반복할 수 있도록 하드 결정 대신 소프트 출력이 계산된다.
소프트 출력(SO)의 계산은 상태 업데이트부(304)에 의하여 행해진 처리의 제2 단계에서 계산된 상태 메트릭과 분리 메트릭부(302)에 의하여 행해진 처리의 제2 단계에서 계산된 분기 메트릭에 기초한다. 이 과정은 소프트 출력 계산 또는 완료 연산(completion operation)으로 알려져 있다. 임의의 비트 z i (여기서 z i 는 FSM으로의 입력 또는 출력 비트임)에 대한 소프트 출력 계산을 기술하는 표현은 수학식 5와 같다.
Figure 112008075296821-PCT00014
터보 디코더의 SISO 모듈에 대한 완료 연산은 물론 비터비 디코더에 대한 양 역추적 알고리즘에 대한 출력부(306)의 연산은 데이터 의존이 없는 과정이다. 따라서 하드웨어 구현에 있어서 상태 업데이트 동작의 속도와 일치하거나 초과하는데 필요한 만큼 정밀하게 파이프라인화될 수 있는 피드 포워드 데이터 경로로 또한 구현될 수 있다.
III. 타일링 및 윈도잉된 디코딩
도 4는 격자(400)를, 본 발명의 한 실시예에 따라 디코딩을 개별적으로 행할 수 있는 복수의 섹션(402, 404, 406)으로 분할한 것을 나타낸다. 격자(400)는 1부터 9로 라벨링된 9개의 시간 지수 범위가 되도록 나타낸 것이다. 각 시간 지수에 있어서, 격자(400)는 4개의 가능 상태 "A," "B," "C" 및 "D"를 포함한다. 여기서, 격자(400)는 세 개(M=3)의 섹션(402, 404, 406)으로 분할된다. 섹션(402)은 시간 지수 1에서 3의 범위이고, 섹션(404)은 시간 지수 4에서 6의 범위이며, 섹션(406)은 시간 지수 7에서 9의 범위이다. 도 4에 도시한 특정 개수의 상태 및 시간 지수는 설명을 명료하게 하기 위하여 단순화되었다. 하나의 구현은 더 많은 상태와 시간 지수를 포함할 수 있다.
상이한 섹션으로 격자(400)를 구성하는 것은 더욱 효율적인 처리를 촉진할 수 있다. 도 4 이전의 설명은 격자 처리 엔진에 의하여 전체 데이터 블록이 순차적으로 처리되어야 함을 암시하였다. 하지만, 격자의 일부를 분리하여 병렬과 같 이 개별적으로 처리하는 기술이 개발되어 왔다. 매우 흔하게 사용되며 설계자들 사이에서 인기가 좋은 두 용어는 타일링(tiling) 및 윈도잉(windowing)의 개념이다.
두 개념은 동일한 이론적 배경에 기초하며 응용에 따라 개별적으로 또는 동시에 사용될 수 있다. 또한 타일링의 개념은 SISO 설계는 물론 비터비 디코더에도 적용 가능한 반면, 윈도잉의 개념은 주로 SISO 모듈과 관련되어 있다.
타일링은 격자의 섹션을 분리하기 위하여 블록을 더 작은 조각으로 쪼개어 병렬로 처리하는 것에 관련된 것이다. 예를 들어, 병렬로 M개의 단위를 요하는 어떤 스루풋(throughput)을 달성하고자 하는 경우, 가능하면 동일한 길이의 M개의 타일로 블록을 쪼개고 상이한 처리기에서 각각 처리하는 것으로 해석할 것이다.
한편, 윈도잉은 메모리와 레이턴시 감소 기술로서 더 많이 보여지고 하나의 처리 엔진에도 사용된다. 그 목적은 저장해야될 백워드 상태 메트릭을 줄이고 소프트 출력 계산을 좀 더 일찍 시작할 수 있도록, 전체 격자 길이가 아니라 윈도우에 대하여만 백워드 반복 길이를 줄이는 것이다. 동일한 해결 방법이 필요하다면 포워드 반복에도 적용될 수 있지만, 영향이 그리 크지 않으므로 거의 사용되지 않는다.
격자를 따라 일정량의 노드를 처리한 후, 그 메트릭은 출발점이 격자의 시초에 있지 않을지라도 해당 지점 이전에 충분히 길이 L인 신뢰할만한 상태 메트릭으로 수렴하는 경향이 있다. 충분한 길이 L은 인코더 FSM 내의 메모리 구성요소의 용량의 5 내지 7배이다. 그 원리는 포워드 및 백워드 반복에서 용이하게 적용될 수 있다. 아주 흔한 실행은 격자를 동일 길이 L의 세그먼트(segment)로 쪼개는 것이다. 포워드 반복 과정은 전체 격자 길이에 대하여 통상의 방식으로 진행된다. 백워드 반복은 길이 2L인 세그먼트 상에서 실행된다. 첫 번째 L 개의 요소는 백워드 반복을 훈련 또는 "웜업(warm up)"하는 데 사용되고 두 번째 L 개의 요소는 SISO에 의하여 사용되어 소프트 출력을 생성한다. 그 방식에서 백워드 반복에 대한 최대 레이턴시는 2L이고 백워드 메트릭에 필요한 메모리의 최대 양은 L이다. 두 처리기는 서로 번갈아 가면서 백워드 방향으로 통상 사용되어 포워드 처리기를 유지한다.
그 개념은 반복적인 디코딩 과정에 사용되는 SISO 설계에 적용 가능하므로, 이러한 실행 알고리즘은 추가로 개선이 이루어진다. 이전의 반복으로부터 상태 메트릭은 길이 L의 윈도우 사이에서 시동(startup) 메트릭으로 사용될 수 있다. 그것이 의미하는 바는 훈련이 더 이상 필요하지 않으며 즉시 디코딩에 사용될 수 있는 길이 L에 대하여만 백워드 반복을 실행할 필요가 있다는 것이다. 이로 인해 다른 L의 요인에 의하여 레이턴시를 줄이고 제2 백워드 처리기에 대한 필요를 없애주는데, 이는 포워드 처리기와 동일한 속도로 현재 처리되기 때문이다. 이러한 개선은 타일이 사용되는 경우에 적용될 수 있다.
IV. 상태 업데이트 동작의 파이프라인화
도 5는 본 발명의 한 실시예에 따른 파이프라인화 상태 업데이트부(304)를 상세히 나타낸 것이다. 여기서, 파이프라인화 상태 업데이트부(304)는 4개의 개별 파이프라인화 더하기/비교/선택(Add-Compare-Select, ACS)부(502, 504, 506, 508) 를 포함하며, 이들은 병렬로 동작하여 격자의 각 시간 지수에서 상이한 상태에 대한 상태 메트릭을 계산한다.
예를 들어, 도 4를 다시 참고하면, 격자(400)의 시간 지수 "1"에서 상태 "A" 내지 "D"의 각 상태에 대하여 하나씩 4개의 상태 메트릭의 계산은 파이프라인화 ACS부(502, 504, 506, 508)를 병렬로 동작시켜 이루어질 수 있다. 파이프라인화 ACS부(502)는 상태 "A"에 대한 상태 메트릭을 계산한다. 파이프라인화 ACS부(504)는 상태 "B"에 대한 상태 메트릭을 계산한다. 파이프라인화 ACS부(506)는 상태 "C"에 대한 상태 메트릭을 계산한다. 파이프라인화 ACS부(508)는 상태 "D"에 대한 상태 메트릭을 계산한다. 따라서 "1"과 같은 단일 시간 지수에 대하여 상태 메트릭의 계산을 행할 수 있다.
복수의 시간 지수에 걸친 상태 메트릭 계산의 파이프라인화는 스케줄링(scheduling)을 수반할 수 있다. 여기서, 하나의 시간 지수에 대한 상태 메트릭 계산은 다른 시간 지수에 대한 상태 메트릭 계산 결과를 필요로 하므로, 파이프라인화는 직진 작업이 아니다. 본 발명의 실시예에 따르면, 상이한 시간 지수에 대한 상태 메트릭 계산을 스케줄링하는 시스템을 이용하여 그러한 데이터 의존을 적절히 관리하는 것을 보장한다. 파이프라인화 상태 메트릭 계산의 스케줄링은 나중에 좀 더 상세히 설명한다.
파이프라인화 ACS부(502, 504, 506, 508)의 동작은 유사하므로, 파이프라인화 ACS부(502)의 동작에 대하여만 설명한다. 나머지 파이프라인화 ACS부(504, 506, 508)는 유사한 방식으로 동작한다.
발명의 이 실시예에 있어서, 파이프라인화 ACS부(502)는 세 개의 스테이지(521, 522, 523)로 구성된다. 즉, 이 ACS부는 3단 파이프라인(N=3)으로 이루어진다. 기능부를 다단 파이프라인으로 구성함으로써, 기능부는 유사한 일련의 계산을 더욱 효율적으로 처리할 수 있다. 따라서 파이프라인화 ACS부(502)는 ACS 계산을 세 개의 개별 스테이지로 쪼개는데, 스테이지(521)에 의한 "더하기,"스테이지(522)에 의한 "비교" 및 스테이지(523)에 의한 "선택"이 그것이다. 이러한 방식으로, 파이프라인화 ACS부는 세 개의 상이한 상태 메트릭 계산에 대한 처리를 동시에 행할 수 있다. 예를 들어, 다음의 동작은 동시에 일어난다. (1) 스테이지(523)는 상태 메트릭 계산의 "선택" 동작을 행하고, (2) 스테이지(522)는 다른 상태 메트릭에 대하여 "비교"동작을 행하고, (3) 스테이지(521)는 또 다른 상태 메트릭에 대하여 "더하기"동작을 행한다. 파이프라인화가 없다면, 이러한 상태 메트릭 계산 각각이 ACS부로 진입할 때부터 ACS부를 떠날 때까지 전체 ACS부를 차지할 것이다. 예를 들어, 상태 메트릭 계산이 "선택"스테이지를 이용하고 있는 경우, 다른 두 스테이지 "더하기"와 "비교"는 사용되지 않고 아이들(idle) 된다. 따라서 파이프라인화는 ACS부(502)의 효율성을 상당히 개선시킨다.
도 6 내지 8은 상이한 개수의 스테이지로 구성되는 여러 ACS부의 예를 나타낸다. 여기서 다시 설명의 목적으로 최소 합 알고리즘을 격자 처리에 사용한다고 가정한다. 단순함을 위해, 2상태 이진 코드를 나타낸다. 하지만, 당업자가 인식하는 바와 같이 더 복잡한 코드를 채택할 수 있다. 또한, 도면의 각각에서 오직 하나의 ACS부를 도시하였지만, 상태 업데이트부에서 그러한 ACS부 중에서 복수의 장치를 각 상태에 하나씩 병렬로 사용할 수 있음을 인식할 것이다. ACS부는 병렬로 동작하므로, 더 많은 상태를 갖는 이진 코드는 더 많은 ACS부를 포함할 수 있다. 코드가 이진수가 아닌 경우, 더 많은 비교를 행할 수 있도록 로직이 각 ACS부에 추가될 수 있다(이진 코드는 오직 하나만 필요).
도 6은 오직 하나의 스테이지(N=1)로 구성되는 ACS부의 블록도를 나타낸다. ACS는 특정 시간 지수에 대한 격자 내의 상태들 중 하나에 대한 상태 메트릭을 계산한다. 이 예에서 코드가 2진수이므로, 특정 상태로 이끄는 두 개의 경로가 있다. 따라서 ACS부는 일단 2개의 합을 형성하고, 각각의 합은 최초 상태(originating state)의 상태 메트릭을 해당 천이에 대한 분기 메트릭에 더하여 계산된다. 결과 메트릭을 서로 비교하여 최소 메트릭을 현재 상태에 대한 상태 메트릭으로 선택한다. 그러한 동작의 수학적 표현은 수학식 3에 나타낸 것이다. 사각형 내의 "1"의 라벨은 이 ACS부에서의 단일 스테이지를 식별한다. 최초 상태 메트릭은 알고리즘의 이전 반복 동안에 계산된다. 이 계산의 반복 속성은 통상적으로 기존 시스템이 파이프라인화 없이 단일 스테이지(N=1)로 전체 ACS 동작을 행하는 이유이다. 상태 업데이트 동작에서 파이프라인화를 이용할 수 없는 것응ㄴ 디코더에 대한 전체 회로의 성능을 제한한다.
도 7은 세 개의 스테이지(N=3)로 구성되는 ACS부의 블록도이다. 도시한 바와 같이, 더하기/비교/선택 과정은 그 동작을 더 작은 조각으로 쪼개는 주지의 방법을 이용하여 세 개의 스테이지로 파이프라인화된다. 도 7에서, 도 6에 도시한 것과 동일한 ACS 동작이 이제는 세 개의 파이프라인 스테이지로 쪼개진다. 사각형 내의 라벨 "1"은 제1 스테이지, "2"는 제2 스테이지, 그리고 "3"은 제3 스테이지를 각각 식별한다. ACS부를 세 개의 스테이지로 구성함으로서, 상태 업데이트 동작은 전술한 바와 같이 파이프라인화될 수 있다. 예를 들어, 도 7은 도 5에 도시한 3개 스테이지 ACS부(502, 504, 506, 508) 각각의 구현일 수 있다.
도 8은 6개의 스테이지(N=6)로 구성되는 ACS부의 블록도이다. 여기서, 처리되는 상태 메트릭은 8비트 값이다. 세 그룹의 2비트 덧셈기(adder)를 사용한다. 각 그룹은 "캐리(carry)" 라인에 의하여 서로 연결되어 있는 4개의 2비트 덧셈기로 이루어져 있다. 다시, ACS부는 일단 2개의 합을 형성하고, 각각의 합은 최초 상태의 상태 메트릭을 해당 천이에 대한 분기 메트릭에 더하여 계산된다. 제1 2비트 덧셈기 그룹은 두 합중 하나를 계산한다. 제2 2비트 덧셈기 그룹은 두 합 중 나머지를 계산한다. 두 결과 메트릭은 서로 비교된다. 제3 2비트 그룹은 감산 동작을 행하여 (즉, 제1 값을 제2 값의 마이너스에 더함으로써) 이러한 비교를 행한다. 도 8에서 보는 것처럼, 각 그룹의 2비트 덧셈기는 더 세분화된 실행 스테이지로 쪼개질 수 있고, 이는 ACS부의 전체 개수를 증가시킨다. 마지막으로, 멀티플렉서(MUX)는 선택 동작을 행하여 두 결과 메트릭 중 최소값을 현재 상태에 대한 상태 메트릭으로서 선택한다. 도 8에 도시한 바와 같이, ACS 동작은 6개의 스테이지로 구성된다. 사각형 내의 "1" 내지 "6"의 라벨은 이들 스테이지를 식별한다.
도 6 내지 도 8에 도시한 스테이지의 개수는 ACS 동작을 달성하는데 필요한 사이클(cycle)의 개수에 영향을 미친다. 예를 들어, 각 스테이지가 완료를 위해 한 사이클이 필요한 경우, 필요한 사이클의 개수는 스테이지의 개수와 동일하다. 필요로 하는 속도 및 구조에 따라, ACS와 같은 상태 업데이트부는 임의의 개수의 스테이지로 쪼개질 수 있다. 상태 업데이트 동작(최소* 합, 최대 적, 합 적 등을 포함)의 모든 구현은 본 발명의 상이한 동작에 따라 파이프라인화될 수 있다.
V. 파이프라인화 상태 업데이트부에 대한 스케줄링
전술한 바와 같이, 하나의 시간 지수에 대한 상태 메트릭 계산은 다른 시간 지수에 대한 상태 메트릭 계산의 결과를 필요로 하므로, 파이프라인화는 직진형(straight forward) 작업이 아니다. 본 발명의 한 실시예에 따르면, 상이한 시간 지수에 대한 상태 메트릭 계산을 스케줄링하는 시스템은 그러한 데이터 의존을 절히 관리하는 것을 보장하는데 사용된다.
일반적으로 말하면, 상태 업데이트 동작이 N개의 스테이지로 쪼개지면, 상태 업데이트 동작의 결과는 나중에 N개 사이클을 준비할 것이고(각 스테이지가 한 사이클로 실행된다고 가정) 다음 상태 메트릭 계산은 그 때까지 진행할 수 없다. 비어 있는 시간대를 채우기 위하여, 본 발명의 실시예에 따라 상태 업데이트 동작은 다른 격자의 섹션으로부터의 상태에 대하여 행하여진다.
상태 업데이트 동작이 N개 스테이지(N>1) 파이프라인으로 설계되었다고 가정하면, 격자로 표현되는 데이터의 블록은 M개의 섹션 또는 서브 블록으로 쪼개질 수 있다. 한 바람직한 실시예에서, M은 N과 같다. 다른 바람직한 실시예에서, 서브 블록의 개수가 N보다 크면, M은 N의 정수배이다. 상이한 서브 블록으로부터의 상태에 대한 상태 업데이트는 최대 레이트로 상태 업데이트부를 활용하여 차례로 파 이프라인화 회로에서 처리될 수 있다. N개의 사이클 후, 제1 서브 블록은 다음 상태 메트릭을 생성한다. 이들은 특정 서브 블록에 대응하는 제2 분기 메트릭 세트를 구비한 상태 업데이트부로 다시 입력될 것이다. 다음 사이클에서, 제2 서브 블록이 종료되고 두 번째 계산을 시작한다. 따라서 각 상태 메트릭 계산은 N개 사이클을 취하지만 M개 서브 블록에 대하여 인터레이스 방식(interlaced fashion)으로 행해질 수 있다. 이는 제2 상태 업데이트가 이들 중 어느 것에 대하여 시작하기 전에 제1 상태 업데이트가 M개의 모든 서브 블록에 대하여 먼저 완료되어야 함을 의미한다. 한 실시예에서, 서브 블록은 일반적인 연속(round-robin) 스케줄링 알고리즘을 따르는 장치를 이용하여 교대한다.
서브 블록(타일 또는 윈도우일 수 있음)의 개수 M이 N보다 큰 경우, 한 서브 블록이 모든 L개 상태 계산으로 종료된 경우, 장치를 완전하게 활용할 수 있도록 새로운 서브 블록이 파이프라인 스케줄에서 그 자리를 대신한다. 사실, 동일한 길이이면 서브 블록에 대하여는 기술적으로 제한이 없지만, 통상적으로 장치에 대하여 최적의 활용을 해야 한다.
다시 도 4를 참고하면, 이 도면은 파이프라인화 상태 메트릭 계산의 스케줄링 예를 나타낸다. 여기서, 상태 "A" 내지 "D"에 대한 상태 메트릭의 계산은 계산 자원 세트를 이용하여 행해진다. 동일한 계산 자원 세트는 시간 지수 "1" 내지 "9"에 대한 이러한 상태 메트릭을 계산하는데 사용된다. 효율성을 높이기 위하여, 계산 자원은 하나 이상의 시간 지수에 대한 상태 메트릭 계산을 동시에 처리하도록 파이프라인화된다. 하지만, 한 시간 지수에 대한 상태 메트릭 계산은 다른 지수에 대한 상태 메트릭 계산의 결과에 의존할 수 있으므로, 즉 계산은 속성상 반복될 수 있으므로, 적절한 스케줄링을 적용하여 의존하는 데이터가 파이프라인 과정에 의하여 제 시간에 생성되게 한다.
예시를 위하여, 포워드 상태 메트릭에 대한 파이프라인화 계산의 스케줄링을 여기서 설명한다. 유사한 과정이 역 시간 방향으로 백워드 상태 메트릭에 대한 파이프라인화 계산의 스케줄링에 사용될 수 있다. 전술한 바와 같이, 도 4의 격자(400)는 디코딩이 개별적으로 행해지는 복수의 섹션(402, 404, 406)으로 분할된다. 여기서, 파이프라인화 계산 자원은 세 개의 스테이지(M=3)로 구성된다고 가정한다. 파이프라인화 계산 자원은 다음의 순서, 즉 "1," "4," "7," "2," "5," "8," "3," "6" 및 "9"의 순서로 여러 시간 지수에 대한 상태 메트릭을 처리하는데 사용된다. 이 예에서 상태 메트릭 계산의 이러한 순서는 이하에서 더 상세하게 설명하는 바와 같이 데이터 의존을 적절하게 관리하도록 한다.
도 5를 참고하면, 파이프라인화 계산 자원은 네 개의 개별 파이프라인 더하기/비교/선택(ACS)부(502, 504, 506, 508)로서 구현되며, 이들은 병렬로 동작하여 격자의 시간 지수에서 상이한 상태에 대한 상태 메트릭을 계산한다. 특히, ACS부(502)는 상태 "A"에 대한 상태 메트릭 계산을 담당한다. ACS부(504)는 상태 "B"에 대한 상태 메트릭 계산을 담당한다. ACS부(506)는 상태 "C"에 대한 상태 메트릭 계산을 담당한다. ACS부(508)는 상태 "D"에 대한 상태 메트릭 계산을 담당한다.
ACS부(502, 504, 506, 508) 각각은 세 개의 스테이지(N=3)로 구성된다. 상 이한 시간 지수에서 상이한 상태에 대한 상태 메트릭의 계산은 파이프라인 방식으로 ACS부(502, 504, 506, 508)의 세 개 스테이지를 통하여 이동한다. 단지 일례로서, 상이한 시간 지수에서 상태 "A"의 상태 메트릭을 계산하는 ACS부(502)의 동작에 대하여 설명한다. 도 5에 도시한 바와 같이, 시간 지수 "1"에서 상태 "A"에 대한 상태 메트릭("1A"로 표시)이 ACS부(502)의 세 번째이자 마지막 스테이지(예를 들어, "선택" 스테이지)에서 계산 중이다. 동시에, 시간 지수 "4"에서 상태 "A"에 대한 상태 메트릭("4A"로 표시)이 ACS부(502)의 두 번째 스테이지(예를 들어, "비교" 스테이지)에서 계산 중이다. 시간 지수 "7"에서 상태 "A"에 대한 상태 메트릭("7A"로 표시)이 ACS부(502)의 첫 번째 스테이지(예를 들어, "더하기" 스테이지)에서 계산 중이다.
여기서, 파이프라인화 상태 메트릭 계산은 시간 지수 순서 "1," "4," "7," "2," "5," "8," "3," "6" 및 "9"에 따라 스케줄링된다. 포워드 상태 메트릭의 경우, 시간 지수 "2"에 대한 상태 메트릭은 시간 지수 "1"에 대한 상태 메트릭에 의존한다. 이러한 스케줄링은 ACS부(502, 504, 506, 508)가 시간 지수 "2"에 대한 상태 메트릭을 계산하기 시작할 때까지 시간 지수 "1"에 대한 상태 메트릭을 미리 이용 가능하도록 하는 것을 보장한다. 시간 지수 "1"에 대한 상태 메트릭의 계산은 세 개의 시간 지수에 의해 시간 지수 "2"에 대한 상태 메트릭의 계산을 진행하고 파이프라인은 세 개의 스테이지(M=3)를 가지므로, 시간 지수 "1"에 대한 결과는 시간 지수 "2"에 대한 계산에서 사용되도록 제 시간에 맞춰서 파이프라인의 세 번째이자 마지막 스테이지를 벗어난다. 이러한 방식으로, 상태 메트릭 계산의 스케 줄링은 상태 메트릭 계산에서 벗어나는 데이터 의존을 적절하게 관리한다.
따라서 도 5는 파이프라인 과정에서 스케줄링 계산의 한 예를 나타내며, 여기서 파이프라인 과정은 제1 시간 지수(예를 들어, "1")에서 상태 메트릭을 계산하는데 사용되며, 이어서 파이프라인 과정은 제1 시간 지수에서의 상태 메트릭의 계산 결과를 이용함이 없이, 제1 시간 지수에 인접하지 않는 하나 이상의 비인접 시간 지수(예를 들어, "4"와 "7")에서 상태 메트릭을 계산하는데 사용되고, 파이프라인 과정은 제1 시간 지수에서의 상태 메트릭의 계산 결과를 이용하여, 제1 시간 지수에 인접하는 인접 시간 지수("2")에서 상태 메트릭을 계산한다. 여기서, 파이프라인 과정은 ACS부(502, 504, 506, 508)로서 하드웨어에서 구현된다.
상태 업데이트 동작의 파이프라인화와 관련된 상당한 이점이 있다. 하나는 격자 기반 디코딩 동작의 하드웨어 구현과 관련하여 회로 속도의 증가 및/또는 회로 면적의 감소이다. 일반적으로 말하면, 동작을 N 개의 더 작은 세그먼트로 분할하는 경우, 최종 회로는 N배 더 빨리 동작할 수 있다. 따라서 최대 파이프라인 활용도를 달성하는 스케줄링을 이용하는 제안 구조는 하나의 파이프라인화 장치로써 N개의 비파이프라인 장치가 병렬로 동작하는 처리 속도를 달성하는 잠재력을 가지고 있다. 순차적인 로직은 파이프라인화에 의하여 증가하지만, 회로의 결합 부분은 변경되지 않는다. 따라서 결과 회로는 병렬인 N개 회로보다 더 적어야 하며 로직은 정확히 N배로 복제되어야 한다. 이러한 절감은 디코더의 다른 부분 역시 파이프라인화가 용이하므로 설계의 나머지에도 확장된다.
눈에 띄지 않는 다른 중대한 이점은 디코더에 필요한 메모리 설계와 관련된 것이다. 통상적으로 메모리는 시스템의 통합을 용이하게 하도록 디코더와 동일한 속도로 동작한다. 복수의 느린 장치에 있어서, 메모리에 대한 복수의 동시 액세스가 필요하며 복수의 얕고 넓은(shallow and wide) RAM으로 번역된다. 터보 및 터보형 코드의 경우, 이러한 모든 액세스는 인터리버(interleaver)의 공유 메모리 공간과, 메모리 액세스 동안 발생하는 충돌을 해결하는데 필요한 크로스바 스위치(crossbar switch)와 같은 특수 로직에 대한 것이므로, 이러한 문제는 훨씬 더한 모험이 되고 있다. 이들이 해결되더라도 여전히 인터리빙 패턴 상에서 심각한 제약이 따른다.
또한, 얕고 넓은 RAM은 동일한 유형 및 용량의 더 좁고 깊은 메모리에 비하여 더 많은 면적과 액세스용 전력을 필요로 한다. 대신, 더 적은 고속 장치를 이용함으로써, 깊고 좁은 메모리 블록을 더 적게 이용하여 면적 및 전력을 상당히 절감할 수 있다. 동시에, 더 적은 로직이 병렬 메모리 액세스를 수용하는데 필요하며 인터리버에 대한 제약은 상당히 완화된다. 대부분의 ASIC 및 FPGA 기술에 있어서, 복잡한 상태 업데이트 동작보다 몇 배 빠르게 동작하며 이용 가능한 메모리 해법이 있으며 지금까지 이러한 능력을 이용할 수 없었다. 여기서 설명한 구조를 이용하여 이용 가능한 메모리만큼 빠른 로직을 실행시키고 잠재력을 전체적으로 활용할 수 있다.
VI. 결론
상태 업데이트 계산의 파이프라인화는 상이한 격자의 섹션으로부터의 상태에 대한 스케줄링 계산에 의하여 이루어진다. 이로 인해 파이프라인화 상태 업데이트 계산을 촉진시키는 혁신적인 방법으로 윈도잉 및/또는 타일링의 개념을 채택할 수 있다. 윈도잉 및 타일링의 개념이 주지되어 있지만, 본 발명 이전까지는 격자 기반 처리기 및 디코더용으로 상태 업데이트 반복 병목 문제를 해결하는데 사용된 적은 없었다.
따라서 격자 기반 처리의 분기 메트릭 계산 단계와 역추적/완료 단계는 물론, 반복적인 상태 업데이트 단계에도 효율적인 파이프라인화를 적용할 수 있다. 이로 인해 하나 이상의 파이프라인화 계산 장치를 이용하여 매우 높은 스루풋의 격자 처리를 구현할 수 있다. 수 개의 느린 장치를 대체하여 단일의 고속 장치를 이용하는 이점은 전체 회로 면적, 전력의 면에서 그리고 메모리 설계 면에서 중요하다.
최소 합 구현을 이용하여 2상태 이진 코드의 단순한 경우를 가정하여 특정예에 대하여 설명하였다. 또한, 낮은 복잡도의 격자 구조는 설명을 쉽게 하기 위하여 제공되었다. 하지만, 더 많은 상태 및/또는 더 많은 복잡한 구조는 물론, 최대 적, 합 적, 최소* 합 및 최대* 합 알고리즘 또는 다른 실용적인 근사화와 같은 상이한 디코딩 알고리즘와 함께 다른 코드에도 동일한 원리가 쉽게 적용될 수 있다.
여기서 제공되는 기술은 ASIC(Application Specification Integrated Circuit) 또는 프로그램 가능한 FPGA(Field Programmable Gate Array)와 같이, 커스텀 칩(custom chip)의 일부를 구성하는 게이트 로직(gated logic)을 이용하여 하드웨어에서 구현될 수 있다. 이러한 기술은 디코더, SISO, 격자 처리기의 일부 또 는 이러한 유형의 동작을 수행하는데 필요한 범용 처리기용 하드웨어 가속기(accelerator)에도 사용될 수 있다.
본 발명에 대하여 특정 실시예에 의하여 설명하였지만, 본 발명의 범위가 상기 특정 실시예에만 한정되지 않음은 당업자에게 자명하다. 따라서 상세한 설명 및 도면은 한정적인 의미보다 예시적인 것으로 간주되어야 한다. 하지만, 청구범위에 기재된 본 발명의 사상과 범위를 벗어남이 없이 부가, 삭제, 대체 및 다른 변경이 이루어질 수 있음은 명백하다.

Claims (31)

  1. 복수의 상태를 갖는 유한 상태 머신(finite state machine)으로 표현 가능한 과정으로부터 기인하는 수신 신호로부터 정보를 추출하는 방법으로서,
    상기 상태들 사이의 천이들은 복수의 시간 지수에 걸쳐 있는 격자를 이용하여 표현될 수 있고, 상기 격자는 각 시간 지수(time index)에서 상기 복수의 상태를 포함하고, 상기 방법은,
    상기 수신 신호를 고려하여 한 상태에서 다른 상태로의 천이들에 대응하는 분기 메트릭(branch metrics)을 계산하는 단계;
    상기 분기 메트릭을 고려하고 파이프라인 과정(pipelined process)을 이용함으로써 각 시간 지수에서 상태들에 대응되는 상태 메트릭을 계산하는 단계 - 상기 파이프라인 과정은 제1 시간 지수에서 상태 메트릭을 계산하는데 사용되고, 이어서 상기 파이프라인 과정은 상기 제1 지수에서의 상태들에 대응하는 상태 메트릭의 계산 결과들을 이용함이 없이, 상기 제1 시간 지수에 인접하지 않는 하나 이상의 비인접 시간 지수에서 상태 메트릭을 계산하는데 사용되고, 이어서 상기 파이프라인 과정은 상기 제1 지수에서의 상태 메트릭의 계산 결과들을 이용하여 상기 제1 시간 지수에 인접하는 인접 시간 지수에서 상태 메트릭을 계산하는데 사용됨 - ; 및
    상기 격자를 통하여 선택되는 적어도 하나의 경로와 연관되는 상태들에 대한 상태 메트릭을 고려하여 적어도 하나의 출력을 생성하는 단계
    를 포함하는 정보 추출 방법.
  2. 제1항에 있어서,
    상기 격자는 각각이 상기 복수의 시간 지수의 더 작은 복수에 걸쳐 있는 복수의 섹션으로 분할될 수 있으며;
    상기 제1 시간 지수는 상기 격자의 제1 섹션으로부터의 시간 지수이고;
    상기 하나 이상의 비인접 시간 지수는 상기 격자의 하나 이상의 다른 섹션으로부터의 시간 지수이며;
    상기 인접 시간 지수는 상기 격자의 상기 제1 섹션으로부터의 다른 시간 지수인 정보 추출 방법.
  3. 제2항에 있어서,
    상기 파이프라인 과정은 연속(round-robin) 방식으로 상기 격자의 상이한 섹션들로부터의 시간 지수들에서 상태 메트릭을 계산하는데 사용되는 정보 추출 방법.
  4. 제2항에 있어서,
    상기 파이프라인 과정은 N개 스테이지(stage)를 포함하며, N은 양의 정수이고, 상기 격자는 M개의 섹션으로 분할되고, M은 N과 동일한 양의 정수인 정보 추출 방법.
  5. 제2항에 있어서,
    상기 파이프라인 과정은 N개 스테이지를 포함하며, N은 양의 정수이고, 상기 격자는 M개의 섹션으로 분할되고, M은 N보다 큰 양의 정수인 정보 추출 방법.
  6. 제5항에 있어서,
    상기 M은 N의 배수인 정보 추출 방법.
  7. 제1항에 있어서,
    상기 상태 메트릭의 계산은 포워드(forward) 상태 메트릭의 계산을 포함하는 정보 추출 방법.
  8. 제1항에 있어서,
    상기 상태 메트릭의 계산은 백워드(backward) 상태 메트릭의 계산을 포함하는 정보 추출 방법.
  9. 제1항에 있어서,
    상기 파이프라인 과정은 적어도 하나의 더하기/비교/선택(ACS) 동작을 행하도록 구성되는 정보 추출 방법.
  10. 제1항에 있어서,
    상기 파이프라인 과정은 게이트 로직(gated logic)을 이용하여 하드웨어에서 구현되는 정보 추출 방법.
  11. 제10항에 있어서,
    상기 게이트 로직은 ASIC(Application Specific Integrated Circuits) 설계의 일부인 정보 추출 방법.
  12. 제10항에 있어서,
    상기 게이트 로직은 VLSI(Very Large Scale Integrated Circuits) 설계의 일부인 정보 추출 방법.
  13. 제10항에 있어서,
    상기 게이트 로직은 FPGA(Field Programmable Gate Arrays) 설계의 일부인 정보 추출 방법.
  14. 제1항에 있어서,
    상기 분기 메트릭 계산은 파이프라인 과정을 이용하여 행해지는 정보 추출 방법.
  15. 제1항에 있어서,
    상기 적어도 하나의 출력의 생성은 파이프라인 과정을 이용하여 행해지는 정보 추출 방법.
  16. 복수의 상태를 갖는 유한 상태 머신으로 표현 가능한 과정으로부터 기인하는 수신 신호로부터 정보를 추출하는 장치로서,
    상기 상태들 사이의 천이들은 복수의 시간 지수에 걸쳐 있는 격자를 이용하여 표현될 수 있고, 상기 격자는 각 시간 지수에서 상기 복수의 상태를 포함하고, 상기 장치는,
    상기 수신 신호를 고려하여 한 상태에서 다른 상태로의 천이들에 대응하는 분기 메트릭을 계산할 수 있는 분기 메트릭부;
    상기 분기 메트릭을 고려하여 각 시간 지수에서 상태들에 대응되는 상태 메트릭을 계산할 수 있는 파이프라인화 상태 업데이트부(pipelined state-update unit) - 상기 파이프라인화 상태 업데이트부는 제1 시간 지수에서 상태 메트릭을 계산할 수 있고, 이어서 상기 파이프라인화 상태 업데이트부는 상기 제1 지수에서의 상태들에 대응하는 상태 메트릭의 계산 결과들을 이용함이 없이, 상기 제1 시간 지수에 인접하지 않는 하나 이상의 비인접 시간 지수에서 상태 메트릭을 계산할 수 있고, 이어서 상기 파이프라인화 상태 업데이트부는 상기 제1 지수에서의 상태 메트릭의 계산 결과들을 이용하여 상기 제1 시간 지수에 인접하는 인접 시간 지수에서 상태 메트릭을 계산할 수 있음 - ; 및
    상기 격자를 통하여 선택되는 적어도 하나의 경로와 연관되는 상태들에 대한 상태 메트릭을 고려하여 적어도 하나의 출력을 생성할 수 있는 출력부
    를 포함하는 정보 추출 장치.
  17. 제16항에 있어서,
    상기 격자는 각각이 상기 복수의 시간 지수의 더 작은 복수에 걸쳐 있는 복수의 섹션으로 분할될 수 있으며;
    상기 제1 시간 지수는 상기 격자의 제1 섹션으로부터의 시간 지수이고;
    상기 하나 이상의 비인접 시간 지수는 상기 격자의 하나 이상의 다른 섹션으로부터의 시간 지수이며;
    상기 인접 시간 지수는 상기 격자의 상기 제1 섹션으로부터의 다른 시간 지수인 정보 추출 장치.
  18. 제17항에 있어서,
    상기 파이프라인화 상태 업데이트부는 연속 방식으로 상기 격자의 상이한 섹션들로부터의 시간 지수들에서 상태 메트릭을 계산하는데 사용되는 정보 추출 장치.
  19. 제17항에 있어서,
    상기 파이프라인화 상태 업데이트부는 N개 스테이지를 포함하며, N은 양의 정수이고, 상기 격자는 M개의 섹션으로 분할되고, M은 N과 동일한 양의 정수인 정 보 추출 장치.
  20. 제17항에 있어서,
    상기 파이프라인화 상태 업데이트부는 N개 스테이지를 포함하며, N은 양의 정수이고, 상기 격자는 M개의 섹션으로 분할되고, M은 N보다 큰 양의 정수인 정보 추출 장치.
  21. 제20항에 있어서,
    상기 M은 N의 배수인 정보 추출 장치.
  22. 제16항에 있어서,
    상기 상태 메트릭의 계산은 포워드 상태 메트릭의 계산을 포함하는 정보 추출 장치.
  23. 제16항에 있어서,
    상기 상태 메트릭의 계산은 백워드 상태 메트릭의 계산을 포함하는 정보 추출 장치.
  24. 제16항에 있어서,
    상기 파이프라인화 상태 업데이트부는 적어도 하나의 더하기/비교/선택(ACS) 동작을 행하도록 구성되는 정보 추출 장치.
  25. 제16항에 있어서,
    상기 파이프라인화 상기 업데이트부는 게이트 로직을 이용하여 하드웨어에서 구현되는 정보 추출 장치.
  26. 제25항에 있어서,
    상기 게이트 로직은 ASIC(Application Specific Integrated Circuits) 설계의 일부인 정보 추출 장치.
  27. 제25항에 있어서,
    상기 게이트 로직은 VLSI(Very Large Scale Integrated Circuits) 설계의 일부인 정보 추출 장치.
  28. 제25항에 있어서,
    상기 게이트 로직은 FPGA(Field Programmable Gate Arrays) 설계의 일부인 정보 추출 장치.
  29. 제16항에 있어서,
    상기 분기 메트릭은 파이프라인화되어 있는 정보 추출 장치.
  30. 제16항에 있어서,
    상기 출력부는 파이프라인화되어 있는 정보 추출 장치.
  31. 복수의 상태를 갖는 유한 상태 머신으로 표현 가능한 과정으로부터 기인하는 수신 신호로부터 정보를 추출하는 시스템으로서,
    상기 상태들 사이의 천이들은 복수의 시간 지수에 걸쳐 있는 격자를 이용하여 표현될 수 있고, 상기 격자는 각 시간 지수에서 상기 복수의 상태를 포함하고, 상기 시스템은,
    상기 수신 신호를 고려하여 한 상태에서 다른 상태로의 천이들에 대응하는 분기 메트릭을 계산하는 수단;
    상기 분기 메트릭을 고려하고 파이프라인 과정을 이용함으로써 각 시간 지수에서 상태들에 대응되는 상태 메트릭을 계산하는 수단 - 상기 파이프라인 과정은 제1 시간 지수에서 상태를 메트릭을 계산하는데 사용되고, 이어서 상기 파이프라인 과정은 상기 제1 지수에서의 상태들에 대응하는 상태 메트릭의 계산 결과들을 이용함이 없이, 상기 제1 시간 지수에 인접하지 않는 하나 이상의 비인접 시간 지수에서 상태 메트릭을 계산하는데 사용되고, 이어서 상기 파이프라인 과정은 상기 제1 지수에서의 상태 메트릭의 계산 결과들을 이용하여 상기 제1 시간 지수에 인접하는 인접 시간 지수에서 상태 메트릭을 계산하는 사용됨 - ; 및
    상기 격자를 통하여 선택되는 적어도 하나의 경로와 연관되는 상태들에 대한 상태 메트릭을 고려하여 적어도 하나의 출력을 생성하는 수단
    을 포함하는 정보 추출 시스템.
KR1020087026562A 2006-03-31 2007-03-23 고속 격자 처리를 위한 파이프라인화 상태 업데이트의 스케줄링 KR20090008303A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/396,348 2006-03-31
US11/396,348 US7698624B2 (en) 2006-03-31 2006-03-31 Scheduling pipelined state update for high-speed trellis processing

Publications (1)

Publication Number Publication Date
KR20090008303A true KR20090008303A (ko) 2009-01-21

Family

ID=38289420

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087026562A KR20090008303A (ko) 2006-03-31 2007-03-23 고속 격자 처리를 위한 파이프라인화 상태 업데이트의 스케줄링

Country Status (5)

Country Link
US (1) US7698624B2 (ko)
EP (1) EP2005597A1 (ko)
JP (1) JP2009532952A (ko)
KR (1) KR20090008303A (ko)
WO (1) WO2007117965A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8042032B2 (en) * 2005-12-22 2011-10-18 Triductor Technology (Suzhou) Inc. Four-stage pipeline based VDSL2 Viterbi decoder
WO2017120619A1 (en) * 2016-01-07 2017-07-13 Russell David Wayne Architecture and method of a flexible pipeline processor

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530707A (en) * 1994-03-09 1996-06-25 At&T Corp. Area-efficient decoders for rate-k/n convolutional codes and other high rate trellis codes
US5933462A (en) * 1996-11-06 1999-08-03 Qualcomm Incorporated Soft decision output decoder for decoding convolutionally encoded codewords
US6754290B1 (en) 1999-03-31 2004-06-22 Qualcomm Incorporated Highly parallel map decoder
US6980605B2 (en) * 2000-01-31 2005-12-27 Alan Gatherer MAP decoding with parallelized sliding window processing
US7020831B2 (en) * 2002-12-13 2006-03-28 Broadcom Corporation Pipelined add-compare-select circuits and methods, and applications thereof
WO2004112258A1 (en) * 2003-06-12 2004-12-23 Arithmatica Limited High speed viterbi decoding and detection using an iterative trellis collapsing algorithm
US7308640B2 (en) * 2003-08-19 2007-12-11 Leanics Corporation Low-latency architectures for high-throughput Viterbi decoders

Also Published As

Publication number Publication date
EP2005597A1 (en) 2008-12-24
US7698624B2 (en) 2010-04-13
WO2007117965A1 (en) 2007-10-18
JP2009532952A (ja) 2009-09-10
US20070234187A1 (en) 2007-10-04

Similar Documents

Publication Publication Date Title
Yuan et al. Low-latency successive-cancellation polar decoder architectures using 2-bit decoding
KR100566745B1 (ko) 레이턴시를 줄인 siso 모듈
KR100350502B1 (ko) 이동통신시스템의 구성 복호기 및 방법
EP1122890A2 (en) MAP decoding with parallelized sliding window processing
JP4227481B2 (ja) 復号装置および復号方法
US20070113161A1 (en) Cascaded radix architecture for high-speed viterbi decoder
US8566683B2 (en) Power-reduced preliminary decoded bits in viterbi decoders
Kong et al. Low-latency architectures for high-throughput rate Viterbi decoders
Vaithiyanathan et al. High performance ACS for Viterbi decoder using pipeline T-Algorithm
KR20090008303A (ko) 고속 격자 처리를 위한 파이프라인화 상태 업데이트의 스케줄링
Mandwale et al. Implementation of High Speed Viterbi Decoder using FPGA
Cholan Design and implementation of low power high speed Viterbi decoder
CN111030711B (zh) 一种维特比译码器并行加比选处理方法
US7120851B2 (en) Recursive decoder for switching between normalized and non-normalized probability estimates
Liu et al. Low-latency low-complexity architectures for Viterbi decoders
Ang et al. SOVA based LTE turbo decoders
Sukhavasi et al. Performance evaluation of turbo codes using hard decision viterbi algorithm in VHDL
Ramteke et al. Performance analysis of Turbo decoder using soft output Viterbi algorithm
Liu et al. Minimal complexity low-latency architectures for Viterbi decoders
Jyothula et al. DESIGN OF HIGH THROUGHPUT ADD COMPARE AND SELECT UNIT FOR LOW POWER VITERBI DECODER
Putra et al. VLSI architecture for configurable and low-complexity design of hard-decision Viterbi decoding algorithm
Latha et al. Low-Power Adaptive Viterbi Decoder for TCM Using T-Algorithm
DEVI et al. An On-Chip Implementation for Power Optimized Viterbi Decoder
Kumar et al. FPGA Implementation of Viterbi Algorithm for Decoding of Convolution Codes
REDDY et al. FPGA Implementation of Convolutional Encoder and Viterbi Decoder using VHDL

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid