KR20030036845A - 트렐리스에 기초한 채널 부호화를 위한 복호기 - Google Patents
트렐리스에 기초한 채널 부호화를 위한 복호기 Download PDFInfo
- Publication number
- KR20030036845A KR20030036845A KR10-2003-7004441A KR20037004441A KR20030036845A KR 20030036845 A KR20030036845 A KR 20030036845A KR 20037004441 A KR20037004441 A KR 20037004441A KR 20030036845 A KR20030036845 A KR 20030036845A
- Authority
- KR
- South Korea
- Prior art keywords
- butterfly
- stage
- metric
- branch
- node
- Prior art date
Links
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/25—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/3905—Maximum 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/3922—Add-Compare-Select [ACS] operation in forward or backward recursions
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/3905—Maximum 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
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/3905—Maximum 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/3927—Log-Likelihood Ratio [LLR] computation by combination of forward and backward metrics into LLRs
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/3961—Arrangements of methods for branch or transition metric calculation
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/41—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/41—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
- H03M13/4107—Sequence 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
-
- 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/6569—Implementation on processors, e.g. DSPs, or software implementations
-
- 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
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Advance Control (AREA)
Abstract
채널 비트 스트림을 복호화하는 시스템 및 방법은 트렐리스에 기초한 연산을 효율적으로 실행한다. 이 시스템은 버터플라이 코프로세서 및 디지털 신호 프로세서를 포함한다. 트렐리스에 기초한 부호기에 대하여, 시스템은 디지털 신호 프로세서의 지시로 버터플라이 코프로세서내의 연산을 병렬로 실행함으로써 채널 비트 스트림을 복호화한다. 이 연산은 MAP 알고리즘, 비터비 알고리즘 및 다른 소프트 또는 하드 출력 복호화 알고리즘을 구현하는데 사용된다. DSP는 버터플라이 코프로세서를 위한 메모리 관리 및 알고리즘 스케줄링을 실행할 수 있다. 버터플라이 코프로세서는 증가된 처리량에 대해 병렬 버터플라이 연산을 실행할 수 있다. 시스템은 다수의 가능한 복호화 환경에서 사용되기 위해 융통성을 유지한다.
Description
시스템 사이의 통신은 공통 채널이 시스템에 접속될 때마다 가능하다. 네트워크 케이블, 전화선 또는 인터넷 프로토콜 소켓에 의하여, 엔티티간에 통신하는 데이터는 채널 매체를 통하여 전송된다.
불행하게도, 채널 매체내의 "노이즈" 및 "간섭"은 전송 동안 데이터를 손상시킬 수 있다. 채널 매체의 길이, 전송된 데이터량, 채널내의 가짜 신호의 존재 및 다른 환경적 조건과 같은 요인은 노이즈 및 간섭의 양에 영향을 줄 수 있고, 따라서 수신된 데이터의 품질에 영향을 줄 수 있다.
채널 내의 노이즈 및 간섭 현상으로 인해 데이터는 거의 항상 전송되기 전에 부호화될 필요가 있다. 데이터 부호기는 일반적으로 플립플롭 및 NAND 게이트와 같은 이산 로직으로 구성되어 있다. 데이터 부호기는 채널 매체를 통해 전송되는, 정보 비트로 알려진, 데이터 비트의 스트림을 수신하여 자체 정보 비트에 기초하여, 패리티 비트로 알려진, 추가 비트를 발생한다. 함께, 정보 비트 및 패리티 비트는 부호화 비트 스트림을 구성한다.
이러한 세밀하게 설계된 중복 정보는 순방향 오류 정정(FEC) 또는 채널 부호화로 알려져 있다. 일단 구성되면, 부호화 비트 스트림은 채널을 가로질러 전송된다. 경우에 따라서는, 부호화 비트 스트림은 전송되기 전에 변조될 수 있다.
채널을 통한 전송 및 이에 이은 수신기에서의 복조시에, '1' 비트(또는 변조된 '1' 비트의 표시)의 일부는 손상되어 '0' 비트로 수신될 수 있다. 이와 마찬가지로, '0' 비트의 일부는 '1' 비트로 수신될 수 있다. 현대 디지털 무선 수신기에서, 복조기는 또한 비트 단위의 "신뢰도 메트릭"을 보고할 수 있다. 확실하게 수신된 1 과 0은 고신뢰도의 메트릭을 생성하고, 반면에 애매하게 수신된 데이터는 저신뢰도의 메트릭을 생성한다. 부호화 비트 스트림의 정보 비트 또는 패리티 비트, 또는 둘 다 전송 동안 손상될 수 있다.
복조기에 더하여, 수신 엔티티는 복조기 출력 및 부호기의 구조의 지식을 사용하여, 전송되었을 확률이 가장 높은 정보 비트를 결정하는 것이 그 목적인 복호기를 포함한다. 상기에 설명된 비트 신뢰도 메트릭은 복호기의 능력을 상당힌 강화시킬 수 있다. 예상되는 바와 같이, 복호기는 부호기 보다 훨씬 더 복잡해질 수 있다.
샤논의 유명한 채널 부호화 이론은 보다 더 복잡한 부호화 디지털 통신 시스템으로의 흐름에 대한 발상이다. 샤논의 이론에 의하면 정보 속도(초당 전송되는 정보 비트)가 채널 용량을 초과하지 않는한, 임의의 작은 복호화 오류율을 가진 가진 FEC 부호화 시스템을 설계하는 것이 가능하다.
그러나, 샤논의 이론은 점근적인 결과이다. 이 이론은 실제적인 부호화 시스템을 설계하는 방법에 대해서는 거의 아무것도 말하지 않고, 단지 부호화 블록 크기(정보 비트의 수) 및 코드 복잡성이 무한대로 됨에 따라 완벽한 복호화에 접근가능하다는 것을 말하고 있다. 매우 강력한, 그래서 복잡한 코드가 구성되기 쉽다는 것이 밝혀졌다.
다음으로, 어려운 작업은 이러한 복잡한 코드에 대하여 효율적인 복호화 알고리즘을 찾아내는 것이다. 따라서, FEC 코드 설계의 실제적인 작업은 실제적인 구현 복잡성의 복호기를 얻기 위해 사용될 수 있는 특정 구조를 갖는 강력한(그래서, 복잡한) 코드의 패밀리를 얻는 것이다. 물론, 디지털 기술이 발달함에 따라, 보다 더 복잡한 복호기가 가능하다.
복호화된 출력을 생성하기위해, 일부 복호화 알고리즘은 트렐리스 다이어그램으로 알려진 특수화된 상태 다이어그램에서 동작할 수 있다. 트렐리스 다이어그램은 부호기의 가능한 상태 전이를 여러번 보여주는 상태 기계이다. 트렐리스 다이어그램은 시간의 각각의 포인트에서 부호기의 가능한 모든 상태를 보여준다. 많은 복호화 알고리즘은 정확한 정보 비트에 도달하기 위해, 채널 비트 스트림과 함께 트렐리스 다이어그램을 사용한다.
그러나, 트렐리스 타입의 복호화와 관련된 계산의 볼륨은 스태거링될 수 있다. 따라서, 복호기는 버터플라이 연산과 같은 특수화된 트렐리스 연산을 매우 효율적으로 실행하는 주문형 집적회로(ASICs)로써 구현될 수 있다. 다양한 복호기 알고리즘의 복잡성 때문에, 이러한 ASICs는 보통 단일 알고리즘을 위하여 설계될수 있다.
다른 복호기는 트렐리스 연산을 실행하기 위한 특정 명령어를 포함하거나 포함하지 않는 범용 디지털 신호 프로세서(DSPs)를 포함할 수 있다. 이러한 복호기는 필요한대로 상이한 복호화 알고리즘을 구현할 수 있도록 프로그램가능하다. 이러한 복호기는 보다 많은 융통성을 가질 수 있지만, ASIC에 기초한 복호기 보다 낮은 속력으로 채널 데이터를 복호화할 수 있다.
따라서, 트렐리스에 기초한 복호화 연산을 실행하기 위한 범용 디지털 신호 프로세서와 함께 사용될 수 있는 프로그램가능한 프로세서에 대한 필요가 계속되고 있다.
본 발명은 채널 부호 데이터에 대해 실행되는 복호화 동작에 관한 것이고, 보다 상세하게는, 트렐리스 다이어그램에서 동작하는 복호기에 관한 것이다.
도 1은 본 발명의 일실시예에 따른 시스템의 블록도,
도 2는 본 발명의 일실시예에 따른 RSC 부호기의 도면,
도 3은 본 발명의 일실시예에 따른 도 2의 부호기에 대한 상태 전이 테이블,
도 4는 본 발명의 일실시예에 따른 도 2의 부호기에 대한 트렐리스,
도 5는 본 발명의 일실시예에 따른 도 2의 부호기에 대한 트렐리스 다이어그램,
도 6는 본 발명의 일실시에 따른 도 2의 부호기를 이용한 가능한 경로를 도시하는 도 5의 트렐리스 다이어그램,
도 7는 본 발명의 일실시예에 따른 정보 데이터 스트림이 취할 수 있는 경로의 블록도,
도 8은 본 발명의 일실시예에 따른 트렐리스 다이어그램의 브랜치 및 경로 메트릭 모두를 도시한 도면,
도 9는 본 발명의 일실시예에 따른 버터플라이 연산을 도시하기 위해 사용된 트렐리스 도면,
도 10은 본 발명의 일실시예에 따른 버터플라이 연산기의 블록도,
도 11은 본 발명의 제2 실시예에 따른 버터플라이 연산기의 제2 블록도,
도 12는 본 발명의 일실시예에 따른, 도 1의 시스템에 사용되는, 도 10의 버터플라이 연산기의 블록도,
도 13은 본 발명의 일실시예에 따른, 도 12의 시스템에 의해 사용되는 소프트웨어 프로그램의 순서도,
도 14a 및 도 14b는 본 발명의 일실시예에 따른 버터플라이 유닛의 가능한 연산을 도시하는 도면,
도 15는 본 발명의 일실시예에 따른 터보 부호기의 블록도, 및
도 16은 본 발명의 일실시예에 따른 터보 복호기의 블록도.
여기에 설명되는 몇가지 실시예에 따라, 특정 타입의 채널 비트 스트림을 복호화하는데 사용되는 특수화된 연산을 효율적으로 실행하기 위한 시스템 및 방법이 개시되어 있다. 이 특수화된 연산은 버터플라이 연산으로 알려져 있다. 비터비 및 MAP 복호화 알고리즘이 상세하게 설명되어 있지만, 트렐리스 다이어그램에서 동작하는 다른 복호화 알고리즘을 사용하는 시스템 및 방법이 구현될 수 있다.
여기에 설명된 동작은 특정 트렐리스에 기초한 알고리즘의 구현과 관련되어 있다. 알고리즘 클래스는 컨벌루셔널 코드 및 터보 코드의 부호화 및 복호화, 채널 균등화, 및 음성 부호화를 포함하는(하지만 이에 제한되는 것은 아니다), 통신 및 신호 처리에서 수많은 용도에 실제로 사용된다. 여기에 설명된 FEC 복호화 애플리케이션은 예시를 위한 것일 뿐이고 본 발명의 범위를 제한하려는 것은 아니다.
도 1에서, 일실시예에서, 시스템(100)은 디지털 신호 프로세서(10) 및 버터플라이 코프로세서(28)를 포함한다. 디지털 신호 프로세서 또는 DSP는 디지털 신호 처리에 대해 투닝되는 구조를 가진 특수화된 마이크로프로세서이다. DSP는 고속 산술 연산, 외부 디바이스와의 데이터 전송, 메모리로의 다중 액세스를 실행할 수 있는 회로의 특징을 보통 가지고 있다. 예를 들어, DSP는 병렬 확장 16 비트 또는 32 비트 버스, 메모리에 액세스하기 위한 특정 데이터 어드레스 발생기, 및 곱셈 누산(MAC) 산술 유닛을 포함할 수 있다.
도 1에서, DSP(10)는 2개의 버스, 메모리 저장 버스(22) 및 메모리 로드 버스(24)를 포함한다. 메모리 저장 버스(22) 및 메모리 로드 버스(24)는 메모리(30)에 접속되기 위해 디지털 신호 프로세서(10)를 넘어 확장한다. 제2 실시예에서, 메모리 저장 버스 및 메모리 로드 버스(22,24)는 하나의 버스로서 조합된다.
산술 유닛(20)은 메모리 저장 버스(22) 및 메모리 로드 버스(24)에 연결되어 있다. 산술 유닛(20)은 하나 이상의 곱셈 누산 유닛, 레지스터 및 산술 연산을 실행하기 위한 다른 회로를 포함할 수 있다. 또한, 데이터 어드레스 발생기(26)가 메모리 저장 버스(22) 및 메모리 로드 버스(24)에 연결되어 있다. 데이터 어드레스 발생기(26)는 로딩되거나 저장될 메모리(30)내의 특정 로케이션을 식별한다. 데이터어드레스 발생기(26)는 산술 유닛(20)과 같은, DSP(10)의 다른 회로를 위하여 이러한 연산을 실행한다.
일실시예에서, 시스템(100)은 버터플라이 코프로세서(28)를 더 포함한다. 버터플라이 코프로세서(28)는 DSP(10)의 일부가 아니지만, 메모리 저장 버스 및 메모리 로드 버스(22,24)에 의해 DSP(10)에 연결되어 있다. 산술 유닛(20)과 같이, 버터플라이 코프로세서(28)는 이러한 버스를 사용하여 메모리(30)에 액세스한다. 여기에 더 설명되는 바와 같이, 시스템(100)은 부호화된 채널 비트 스트림의 트렐리스 다이어그램 복호화를 실행하기 위해 복호기내에 사용될 수 있다.
특정 DSP(10)는 단지 예시일 뿐이다. 도 1의 회로의 구성은 시스템(100)의 몇가지 가능한 구현의 하나를 설명하기 위해 제공되었다. DSP는 보통 도 1에 도시되지 않은 레지스터, 컨트롤 블록, 기억 장치 직접 접근(DMA)을 실행하는 회로 및 다른 회로와 같은 구성요소를 더 포함한다. DSP는 주변 장치 접근과 같은 추가적인 버스의 특징을 가질 수 있다.
일실시예에서, DSP(10)는 고속 병렬 버터플라이 연산을 실행하기 위해, 버터플라이 코프로세서(28)를 위한 메모리 관리를 실행한다. 그러나, 시스템(100)을 상세하게 설명하기 전에, 부호화 및 복호화 기술을 소개하는 것이 본 발명을 이해하는 기초가 될 것이다.
채널 매체를 통하여 정보 데이터를 전송할 때, 오류를 정정하는 몇가지 가능한 방법이 있다. 예를 들어, 오류율이 너무 높다면, 송신 전력은 오류율을 감소시키기 위해 증가될 것이다. 핸드폰과 같은 특정 애플리케이션에서 이러한 솔루션은 유용한 배터리 파워가 크기에 제한을 받기 때문에 효과가 없다.
다른 솔루션은 동일한 채널 매체를 통해 동일한 정보 데이터 스트림을 두번 전송하거나 또는 2개의 상이한 채널을 통하여 데이터 스트림을 전송함으로써 중복 전송하는 방법이다. 그다음, 중복 데이터 스트림은 수신기에서 서로 비교될 수 있다. 그러나, 중복성은 시스템의 비용을 증가시키고 정보 데이터 스트림을 처리하는 시간을 증가시키는 경향이 있다.
3번째 가능한 방법은 수신기가 자동 재송 요구(ARQ) 메커니즘을 사용하는 것이다. 수신기는 전송 동안 오류가 발생되었다고 판정하는 즉시 데이터 스트림의 재전송을 요구할 수 있다. 그러나, 이것은 부호화 방법이 아니므로 노이지 채널에 대해 좋은 솔루션이 될 수 없다.
순방향 오류 정정은 엑스트라 비트가 채널을 통해 전송되기 전에 정보의 데이터 스트림에 추가되는 경우에 사용되는 기술이다. 일단 전송되면, 수신기는 전송 동안 발생될 수 있는 임의의 오류를 정정하는 복호기를 포함할 수 있다.
이진 컨벌루셔널 코드, 또는 BCC로 불리기도 하는 컨벌루셔널 코드는 입중계 데이터의 연속 스트림으로부터 발생될 수 있다. 이와 대조적으로, 블록 코드는 입중계 데이터 스트림을 부호화하기 전에 고정 길이 블록으로 분할하는 경우 발생된다. 컨벌루셔널 코드 및 블록 코드 모두는 순방향 오류 정정 코드의 타입들이다.
이와 마찬가지로, 많은 복호기가 블록 코드 및 컨벌루셔널 코드 모두를 복호화하기 위해 잘 알려져 있다. 예를 들어, 컨벌루셔널 코드를 복호화하는 비터비복호화 알고리즘이 인기가 있다. 비터비 알고리즘은 실제 정보 비트가 알고리즘을 성공적으로 실행한 후에 얻어진다는 점에서 "하드" 출력 알고리즘이다. 대안으로, MAP 알고리즘은 일 채널 비트의 값에 관한 동등 또는 "양질의" 정보를 생성하는 "소프트" 출력 알고리즘이다.
보다 최근에는, 터보 복호기로 채널 부호화된 데이터에 대한 보다 나은 결과를 기대할 수 있게 되었다. 터보 복호기는 정정 결과를 위해 조정하는 복수의 MAP 복호기와 같은 복수의 복호기를 포함한다. 터보 복호기의 일 구현예가 아래 도 16에 설명되어 있다.
도 2에서, 부호기(50)는 단순한 RSC(recursive systematic convolutional) 부호기이다. 시스테매틱 코드는 패리티 비트, Pk+1가 정보 비트, Uk+1에 연속적인 그룹으로서 부착된 경우의 코드이다. 도 2의 부호기(50)는 시스테매틱 코드를 발생한다. 부호기(50)는 후속 처리를 위해 출력값 Pk+1이 입력값 Uk에 피드백되기 때문에 재귀적이다.
RSC 부호기(50)에서, 정보 비트, Uk는 배타적 논리합, 또는 XOR 게이트(56)로 피드백된다. 그다음, 이 결과는 시프트 레지스터(52)로 공급된다. 시프트 레지스터(52)의 이전값, "1" 또는 "0"은 제2 시프트 레지스터(54)로 공급된다. 입력값 Uk은 물론 코드 워드 비트, Uk+1및 Pk+1은 시프트 레지스터(52,54)내에 저장된 바와 같이, 현 상태의 함수로서 발생된다. 도 2의 부호기(50)에서, 코드 워드 비트, Uk+1은 입력값, Uk과 동일할 수 있다. 그러나, 패리티 비트, Pk+1은 상태(시프트 레지스터 (52,54)) 및 입력값, Uk모두로부터 얻어진다. Uk+1및 Pk+1은 타임(k+1)에 대한 코드 워드 비트이다.
그래서 컨벌루셔널 코드로 인해, 각각의 부호화된 비트쌍(Uk+1, Pk+1)은 시프트 레지스터(52, 54)내의 값은 물론, 복수의 정보 비트중 하나인 입력값, Uk에 종속된다. 시프트 레지스터(52,54)는 입력값, Uk의 과거값에 대한 정보를 저장하고 있다. 그래서 n이 1 부터 정보 데이터 스트림의 사이즈 까지인 경우에, 연속 비트, (Uk+n, Pk+n)은 과거 비트에 대해 독립적이지 않다.
도 3에서, 상태 전이 테이블(60)은 각각의 입력값, Uk에 대하여, 부호기(50)의 상태로도 알려진, 시프트 레지스터(52,54)내에 저장된 값으로 특징지어진다(열 0). 또한 상태 전이 테이블(60)은 입력값, Uk으로부터 얻어진 도 2의 RSC 부호기(50)에 의해 발생된 비트(Uk+1, Pk+1)로 특징지어진다(열 2). 상태 전이 테이블(60)은 타임 k (열 1) 및 타임 k+1 (열 3) 모두에서 부호기(50)의 상태를 도시하고 있다(열 3). 그래서, 상태 전이 테이블(60)은 시프트 레지스터(52,54)내에 저장된 상태 정보를 공급하는 것은 물론, 소정의 입력값, Uk에 대하여 부호기(50)의 출력값 Uk+1, Pk+1를 완벽하게 표시하고 있다.
상태 전이 테이블(60)로부터, 트렐리스(70)는 도 4에 도시된 바와 같이 발생될 수 있다. 트렐리스는 2개의 상태 사이에서 가능한 부호기의 전이를 도시하는 상태 기계이다. 도 4의 트렐리스(70)는 스테이지 k에서 00, 01, 10, 11로 표기된 4개의 노드 72k로 구성되어 있다. (표시, 72스테이지는 특정 스테이지에서의 모든 노드(72)를 설명하기 위해 사용되었다. )
트렐리스(70)은 스테이지 k+1에서 역시 00, 01, 10, 11로 표기된 4개의 노드 72k+1를 더 포함한다. 상태 00, 01, 10, 11은 부호기(50)의 시프트 레지스터(52,54)내의 값에 상응한다. 노드 72k및 72k+1은 도 3의 상태 전이 테이블의, 각각 열 0 및 열 3으로 도시된 바와 같이, 각각 스테이지 k 및 k+1에서의 부호기(50)의 상태를 나타낸다.
브랜치(74)가 노드(72k)를 노드(72k+1)에 연결하고 있다. 2개의 브랜치(74)는 4개의 가능한 상태 00, 01, 10, 11중 임의의 상태로부터 뻗을 수 있는 U에 대해 가능한 2개의 값, 0 또는 1이 존재한다는 것을 나타낸다.
트렐리스(70)의 각각의 브랜치(74)에서, 출력 비트, Uk+1, Pk+1은 물론 입력값 Uk이 (Uk, Uk+1Pk+1)의 형태로 표시되어 있다. 각각의 브랜치(74)는 (스테이지 k에서) 브랜치(74)의 좌측에 대한 상태로부터 (스테이지 k+1에서) 브랜치(74)의 우측에 대한 상태로의, 입력값, Uk에 대한 부호기(50)의 전이를 식별한다.
트렐리스와 같이, 트렐리스 다이어그램은 부호기의 동작을 설명하기 위해 사용되는 상태 기계이다. 그러나, 트렐리스 다이어그램은 반복되는 모든 가능한 부호기의 상태 전이를 설명하고 있다. 도 5에서, 트렐리스 다이어그램(80)은 도 2의 RSC 부호기(50)에 대하여 가능한 상태 전이를 포함한다. 트렐리스 다이어그램(80)은 단순히 도 4의 트렐리스(70)가 직렬로 연결된 것이다.
4개의 상태(72)가 트렐리스 다이어그램(80)에서 가능하다:00, 01, 10, 11(상태(72)가 부호기(50)의 시프트 레지스터(52,54)에 상응한다는 것을 상기하라). 변수, k는 트렐리스 다이어그램(80)의 스테이지를 나타낸다. 각각의 스테이지는 시간에 대해 개별적인 시점인데, k=0은 시간 0에서의 트렐리스 다이어그램(80)의 시점이고, k=1은 다음 시점이며 나머지도 이러한 방식으로 정해진다. 트렐리스 다이어그램(80)은 부호기(50)에 공급되는 정보 비트의 수에 상응하여, 수백 또는 심지어 수천 개의 스테이지를 포함할 수 있다. 도 5에서, 트렐리스 다이어그램(80)의 처음 10개의 스테이지만이 도시되어 있다.
도 4의 트렐리스(70)와 같이, 트렐리스 다이어그램(80)은 각각의 스테이지 k에서의 4개의 노드(72)를 포함한다. 스테이지 00, 01, 10, 11는 트렐리스 다이어그램(80)의 좌측에 일 열내에 순차적으로 배열되어 있다. 스테이지 k에서의 4개의 노드(72)의 각각은 상태 00,01,10 또는 11중 하나를 나타내고 있다. 또한, 노드 72k로부터 노드 72k+1로의 각각의 전이를 나타내기 위해, 노드(72)의 각각으로부터 브랜치(74)가 뻗는다.
0번째 상태에서, 2개의 브랜치(74)만이 상태 00를 나타내는 노드(72)에서 뻗는다. 일실시예에서, 부호기(50)는 시프트 레지스터(52)내의 0의 값 및 시프트 레지스터(54)내의 0의 값으로 부호화를 시작하는 것으로 가정하였다. 따라서, 0번째 스테이지에서의 남아 있는 상태 01,10 및 11는 "임파서블"이고 아무런 브랜치도 이들 상태로부터 뻗지 않는다.
다음 스테이지(k=1)에서, 상태 00 및 10은 각각 입력값 0, 1로 주어져 0번째 스테이지로부터 가능한 전이이기 때문에, 브랜치(74)는 노드(72)로부터 뻗어 상태 00,10을 나타낸다. 상태 10으로부터, 브랜치(74)는 다른 2개의 가능한 상태, 01 및 11로 뻗는다. 따라서, k=2로부터 이후로, 각각의 스테이지 k 에서 스테이지 k+1로의 전이는 동일하며 도 4의 트렐리스(70)에 표시된 것과 같다.
트렐리스 다이어그램(80)은 부호기(50) 즉, 입력값, 상태 및 출력값을 완벽하게 표시한다. 각각의 스테이지 k에서 브랜치를 연결함으로써, 경로(82)는 도 6에서와 같이, k=9에서, 이진 입력값 84, 111100001에 대하여, 이진 출력 코드 워드 86, 101110100101000111를 나타낸다. 그러나, 경로(82)는 트렐리스 다이어그램(80)을 통하여 가능한 많은 경로중 단지 하나 만을 나타낸다.
도 2의 부호기(50)가 도 6에 도시된 바와 같이, 111100001의 값을 가진 9비트 정보 데이터 스트림(84)을 수신하여 1011101001000111의 값을 가진 18비트 이진 컨벌루셔널 코드 워드(86)를 생성한다고 가정하자. 그후에, 코드 워드(86)는 도 7에 도시된 바와 같이, 채널 매체(90)를 통하여, 복호기(96)를 포함하는 수신기(94)로 전송된다. 복호기(96)는 컨벌루셔널 코드 워드(86)와 동일한 비트 스트림일 수 있고 아닐 수도 있는 채널 비트 스트림(92)을 수신한다.
복호기(96)는 채널 비트 스트림(92)로부터 정보 데이터 스트림(98)을 생성한다. 정보 데이터스트림(98)이 정보 데이터 스트림(84)과 동일하다면, 복호기(96)는 채널 비트 스트림(92)을 성공적으로 복호화한 것이다.
채널 매체(90)내의 노이즈 또는 다른 현상으로 인해, 채널 비트 스트림(92)는 종종 채널(90)을 통해 전송된 코드 워드(86)와 상이할 수 있다. 그러나, 컨벌루셔널 워드(86)는 정보 비트(Uk) 뿐만 아니라, 오리지널 정보 비트에 기초한 패리티 비트(Pk)를 포함한다. 일부 비트가 상이할 수도 있지만 채널 비트 스트림(92)은 마찬가지로 정보 및 패리티 비트를 모두 포함한다. 복호기(96)는 정확한 정보 데이터 스트림(96)을 추출하기 위하여, 부호기의 "블루프린트"를 제공하는 트렐리스 다이어그램은 물론 이러한 정보를 사용한다.
트렐리스 다이어그램을 사용하여 복호화하는 기본 개념은 트렐리스 다이어그램(80)내의 도 6의 경로(82)와 같이, 부호화된 시퀀스가 경로와 등가라는 것이다. 따라서, 경로는 브랜치(74)상에 표시된 바와 같이, 부호기(50)로의 입력 시퀀스(Uk)와 부호기(50)로부터의 출력 시퀀스(Uk+1, Pk+1)를 제공한다. 트렐리스 다이어그램(80)내의 임의의 장소에서 복호기(96)로 정확한 경로(82)를 찾아낼 수 있다.
따라서, 부호기가 트렐리스 다이어그램을 사용하여 설명될 수 있는 경우에, 관련된 복호화 알고리즘은 보통 입력 시퀀스(Uk)를 재구성하기 위하여 트렐리스 다이어그램(80)에 기초하게 된다. 복호기(96)는 채널 비트 스트림(92)으로 주어져,트렐리스 다이어그램(80)의 어느 경로(82)가 가장 확률이 높은 경로인지를 결정한다.
복호기(96)가 어떻게 트렐리스 다이어그램(80)에 동작할 수 있는 지를 이해하기 위하여, 도 8의 다이어그램을 고려하자. 도 5의 4-상태 트렐리스 다이어그램(80)의 0부터 5까지 표기된 6개의 스테이지 k가 도시되어 있다. 하드 출력 복호화 알고리즘에 대하여, 복호기(96)는 각각의 스테이지 k에서 부호화된 비트가 "1" 비트 또는 "0" 비트인 지를 결정할 수 있다. 대조적으로, 복호기(96)가 소프트 입력/소프트 출력(SISO) 알고리즘을 사용하는 경우에, 트렐리스 다이어그램(80)의 주어진 경로(82)의 품질이 평가된다. 따라서, 복호기(96)는 "1" 비트 또는 "0" 비트 보다는 확률 데이터를 공급한다. 따라서, 소프트 출력 알고리즘에 대하여, 경로(82)는 메트릭으로 알려진 수를 사용하여 정의된다. 매트릭은 경로가 트렐리스 다이어그램(80)에서 취해지는 확률을 나타내고, 이 확률은 복호기(96)에 의해 수신되는 채널 비트 스트림(92)으로 주어진다.
도 2의 RSC 부호기(50)에 대하여, Uk의 2개의 가능한 입력값, 0 또는 1이 각각의 노드(72)로부터 뻗는 2개의 가능한 브랜치(74)에 상응한다. 따라서, 도 8내의 스테이지 1에서, 2개의 브랜치(74)가 '10' 상태에 대하여 노드(72)로부터 뻗는다. 이와 마찬가지로, 각각의 브랜치(74)는 가능성, 또는 브랜치 메트릭(106)과 관련되어 있다. 도 8에서, 브랜치 메트릭(106)은 브랜치(104)를 라벨링하는 수이다. 상부 브랜치(74a)는 .2인 브랜치 메트릭(106)을 가지고 있다. 하부브랜치(74b)는 .3인 브랜치 메트릭(106)을 가지고 있다.
브랜치 메트릭(106)은 "소프트" 정보, 즉, 보통 다음 노드(72)에 도달할 가능성을 나타내는 로그 확률이고, 이것은 복호기(96)에 의해 수신되는 채널 비트 스트림(92)으로 주어진다. 복호기(96)는 브랜치 메트릭(106)을 계산한다.
비터비 알고리즘에 있어서, 복호기(96)의 목적은 트렐리스 다이어그램(80)으로부터 최상의 경로(82)를 얻는 것이다. MAP 알고리즘과 같은 소프트 출력 알고리즘에 대하여, 트렐리스의 각각의 스테이지 k에서, 복호기(96)는 대신에 정보 비트, Uk가 0 또는 1이 될 가능성을 결정한다. 따라서, 복호기(96)는 한 번에 하나의 스테이지씩 트렐리스 다이어그램(80)을 반복적으로 지나서, 수신된 비트 스트림 및 트렐리스 다이어그램(80)에 기초하여 가능성 정보를 계산한다.
본질적으로, 복호기(96)는 트렐리스 다이어그램(80)의 모든 가능한 경로(82)를 고려한다. 고려되는 각각의 경로(82)에 대하여 복호기(96)는 경로(82)에 대하여 브랜치 메트릭(106)을 합산하여 경로 메트릭(108)을 생성한다. 그다음 복호기(96)는 가장 큰 경로 메트릭(108)을 가진 경로(82)를 선택한다. 가장 큰 경로 메트릭(108)을 가진 경로(82)는 최대 가능성 경로이다. 선택된 경로(82)는 또한 서바이버 경로로 알려져 있다. 그다음, 경로(82)로부터, 정보 비트, Uk가 결정될 수 있다.
따라서, 복호기(96)는 트렐리스 다이어그램(80)을 따라 "주행"하여, 이 길을 따라 브랜치 메트릭(106) 및 경로 메트릭(108)을 계산한다. 일부 알고리즘에서 트렐리스 다이어그램(80)을 한 번 지난다. 그러나, 다른 알고리즘에 대해서는 트렐리스 알고리즘(80)이 순방향 및 역방향 모두에서 지날 수 있다. 그럼에도 불구하고, 트렐리스 알고리즘(80)에 동작하는 다른 알고리즘은 물론 비터비 및 MAP 알고리즘 모두는 요구되는 결과에 도달하기 전에 경이적인 수의 계산을 실행할 수 있다.
예를 들어, 트렐리스 다이어그램(80)의 가능한 경로(82)의 수는 2트렐리스 길이이다. 그래서, 부호기(50)가 비트수 100인 정보 비트를 부호화한다면, 복호기(96)는 고려할 2100개의 가능한 경로(82)를 갖게 된다. 각각의 브랜치 메트릭(106)이 메모리에 저장되어 있지 않다면 계산은 훨씬 더 복잡해질 수 있다.
도 9에서, 도 5의 트렐리스 다이어그램의 일부는 스테이지 k, k+1, 및 k+2를 포함한다. 슬라이딩 윈도우(110)에는 스테이지 k 및 k+1이 포함되어 있다. 복호기(96)는 트렐리스(80)를 따라 브랜치 메트릭(106)을 임의로 계산하기 위해 슬라이딩 윈도우(110)를 사용할 수 있다.
예를 들어, 스테이지 k에서, 상태 00에 상응하는 노드 72k로부터, 브랜치(74c) 및 브랜치 (74d)는 (스테이지 k+1에서의) 노드(72k+1)로 뻗는다. 이와 마찬가지로, 상태 01에 상응하는 노드 72k로부터, 2개의 브랜치(74e, 74f)가 뻗는다. 노드 72k(상태 10)로부터, 브랜치 74g 및 74h가, 노드 72k(상태 10)로부터, 브랜치 74i 및 74j가 노드 72k+1(스테이지 k+1)로 뻗는다. 브랜치 74c,74e, 74g, 74i가 부호기(50)의 "0" 입력값에 상응하고 브랜치 74d, 74f, 74h, 74j가 "1" 입력값에 상응한다.
슬라이딩 윈도우(110)가 도 9내의 위치에 있는 동안, 복호기(96)는 브랜치 74c 부터 74j까지의 각각에 대하여 총 8번의 계산으로 브랜치 메트릭(106)을 계산한다. k=0 일 때를 제외하고, 하나 이상의 경로(82)는 이전 스테이지로부터 노드 72k로 뻗는다. 따라서, 새로운 경로 메트릭(108)은 서바이버 경로의 경로 메트릭(108)을 취함으로써 계산될 수 있다. 제1 브랜치 메트릭(106)이 경로 메트릭(108)으로 가산될 수 있고, 그후에 제2 브랜치 메트릭(106)이 경로 메트릭(108)으로 가산될 수 있다. 이 2개의 결과값이 비교될 수 있다. 보다 큰 경로 메트릭(108)을 가진 경로(82)는 스테이지 k에 대한 새로운 서바이버 경로이다. 이러한 계산의 그룹은 버터플라이 연산으로 알려져 있다.
일단 스테이지 k에 대하여 버터플라이 연산이 종료되면, 슬라이딩 윈도우(110)는 알고리즘에 따라 순방향으로 또는 역방향으로 이동될 수 있고, 그래서 버터플라이 연산의 다음 그룹이 실행될 수 있다.
도 9의 슬라이딩 윈도우(110)에 대하여, 각각의 노드 72k에 대하여 한 번씩 최대 4번의 버터플라이 연산이 실행될 수 있다. 각각의 브랜치(74)의 브랜치 메트릭(106)은 경로 메트릭(108)으로 가산될 수 있다(덧셈 연산). 그후에, 각각의 생성된 경로 메트릭(108)이 다른 경로 메트릭(108)과 비교되어 어느 결과값이 보다 큰 지를 결정한다(비교 연산). 상기 생성된 경로 메트릭(108) 또는 서바이버 경로가 선택된다(선택 연산). 따라서, 버터플라이 연산은 때론 덧셈-비교-선택 또는 ACS 연산으로 알려져 있다. 결국, 서바이버 경로는 메모리와 같은 장치에 저장된다.
도 10에서, 일실시예에 따라, 시스템(200)은 상술된 바와 같이 버터플라이 연산을 실행하기 위해 사용될 수 있다. 시스템(200)은 하나 이상의 버터플라이 유닛(202), 브랜치 메트릭 유닛(204), 및 경로 메트릭 메모리(206)를 포함한다. 함께, 시스템(200)의 회로는 ACS, 로그-MAP, 버터플라이 연산을 실행할 수 있다.
일실시예에서, 브랜치 메트릭 유닛(204)은 상기 도 8에 설명된, 브랜치 메트릭(106)에 대한 계산을 실행한다. 브랜치 메트릭(106)은 부호기(50)에 의해 생성되는 4개의 가능한 출력값 Uk+1, Pk+1은 물론 채널 데이터(92)를 분석함으로써 계산되어 적합한 메트릭(106)을 계산한다. 브랜치 메트릭(106)은 각각의 노드 72k에 대하여 계산된다. 이전 스테이지로부터의 경로 메트릭(108)이 브랜치 메트릭(106)을 계산하는데 고려되지 않기 때문에, 브랜치 메트릭 유닛(204)이 경로 메트릭 메모리(206)에 연결되지 않았다는 것에 주목해야 한다.
도 10의 실시예에서, 각각의 버터플라이 유닛(202)은 브랜치 메트릭 유닛(204)으로부터 브랜치 메트릭(106)을 수신한다. 각각의 스테이지 k에 4개의 노드(72)가 있기 때문에 4개의 버터플라이 유닛(202)이 제공된다. 따라서, 일실시예에 따라, 각각의 버터플라이 유닛(202)은 각각의 다른 버터플라이 유닛(202)으로써 병렬로 계산할 수 있고, 그래서 각각의 상태 00, 01, 10, 11에 대한 새로운 경로 메트릭이 동시에 계산될 수 있다.
또한, 각각의 버터플라이 유닛(202)은 경로 메트릭 메모리(206)로부터 경로 메트릭(108)을 수신한다. 이러한 정보를 가지고, 버터플라이 유닛(202)은 트렐리스 다이어그램(80)의 소정의 노드 72k에 대하여 덧셈-선택-비교 연산을 실행할 수 있다.
각각의 버터플라이 유닛(202)의 출력 경로는 또한 경로 메트릭 메모리(206)에 연결되어 있다. 따라서, 각각의 버터플라이 유닛(202)은 새로운 세트의 버터플라이 연산이 스테이지 k+1에서 실행될 때까지 생성 경로 메트릭을 저장하기 위해 경로 메트릭 메모리(206)에 전송할 수 있다.
도 11에서, 시스템(200)의 제2 실시예는 여기에 설명된 MAP 알고리즘을 구현한다. 복호기(96)는 트렐리스 다이어그램(80)에 대해 순방향 및 역방향으로 트렐리스 연산을 실행하기 위해 시스템(200)을 사용할 수 있다. MAP 알고리즘은 트렐리스 연산이 트렐리스 다이어그램에 대하여 순방향 및 역방향으로 실행되는 경우에 2-경로 알고리즘이다. 순방향 및 역방향 패스 모두에서, 트렐리스 노드 메트릭이 계산된다.
순방향 패스 동안, 노드 메트릭은 경로 메트릭 메모리(206)에 저장될 수 있다. 그다음, 역방향 패스 동안, 슬라이딩 윈도우 메트릭이 계산된 후에, 노드 메트릭 메모리(206)내에 저장된 순방향 경로 메트릭과 조합된다. 대안으로, 필요하다면, 역방향 패스가 순방향 패스에 앞설 수 있다.
트렐리스는 각각의 스테이지에서 N개의 상태를 갖고 있다. 도 11의 시스템(200)은 순방향 및 역방향으로 모든 N개의 상태에 대한 메트릭을 단일 비트 신뢰도 메트릭으로 감소시킨다. 이 단일 비트 신뢰도 메트릭은 MAP 알고리즘의 최종 소프트 출력이다.
따라서, 도 11에 도시된 바와 같은 버터플라이 유닛(202)의 배열을 사용하여, 순방향 경로 메트릭 및 역방향 경로 메트릭이 계산될 수 있다. 상위 3개의 버터플라이 유닛(202)은 "1" 브랜치(104)에 대하여 사용되고, 하위 3개의 버터플라이 유닛(202)은 "0" 브랜치(104)에 대하여 사용된다.
도 11에서, 일실시예에서, 브랜치 메트릭 유닛(BMU; 204)은 스테이지 k에 대하여 현 브랜치 메트릭(74)을 계산한다. 그후에, 버터플라이 유닛(202)은 브랜치 메트릭 유닛(204)로부터 브랜치 메트릭(74)은 물론 경로 메트릭 메모리(206)로부터 순방향 (또는 역방향) 경로 메트릭(108)을 검색한다. 그후에, 한 번에 2개씩, 각각의 버터플라이 유닛(202)은 결과값을 조합하여 그 차를 감산하고, 그래서 사후확률값을 생성시킨다.
도 12에서, 도 10의 시스템(200)은 일실시예에 따라 시스템(100; 도 1)에서 구현된다. 예상되는 바와 같이, 경로 메트릭 메모리(206)는 보다 큰 유용한 메모리(30)의 일부이다. 경로 메트릭 메모리(206)는 메모리 저장 버스(22) 및 메모리 로드 버스(24)에 의해 나머지 회로부에 액세스가능하다.
도 12에서, 브랜치 메트릭 유닛(204)은 산술 유닛(20)의 일부이다. 브랜치 메트릭 유닛(204)은 계산을 실행하는데 있어 경로 메트릭 메모리(206)에 액세스할필요가 없다. 대신에, 브랜치 메트릭 유닛(204)은 버터플라이 유닛(202)에 정보를 공급한다.
따라서, 일실시예에서, 산술 유닛(20)은 데이터 어드레스 발생기(26)에 의해 액세스가능한 레지스터(210)를 포함한다. 연산 완료시, BMU(204)는 레지스터(210)내에 결과값을 저장한다. 그후에, 버터플라이 유닛(202)은 메모리(30)가 액세스가 되는 것과 같이, 데이터 어드레스 발생기(26)를 사용하여 레지스터(210)에 액세스함으로써 BMU(204)의 결과값을 얻을 수 있다.
일실시예에서, 버터플라이 코프로세서(28)는 4개의 버터플라이 유닛(202)을 포함한다. 버터플라이 계산을 실행하기 위해, 버터플라이 유닛(202)은 데이터 어드레스 발생기(26) 및 메모리 로드 버스(24)를 사용하여 경로 메트릭 메모리(206) 및 레지스터(210)에 액세스한다. 그후에, 버터플라이 유닛(202)은 슬라이딩 윈도우(110)내의 현 스테이지에서 노드(72)에 대하여 경로 메트릭(108)을 계산하기 위해 ACS 연산을 실행한다. 일단 버터플라이 연산이 완료되면, 버터플라이 유닛(202)은 메모리 저장 버스(22)상에 그 결과값을 놓음으로써 경로 메트릭 메모리(206)내에 상기 결과값을 저장한다.
도 12의 실시예에서, DSP(10)는 버터플라이 코프로세서(28)를 위하여 메모리를 관리한다. 또한, 그러나, DSP는 그 산술 유닛(20)내에 브랜치 메트릭 유닛(204) 연산을 포함함으로써 버터플라이 연산의 일부를 실행하고 있다. 이로 인해 버터플라이 코프로세서(28)가 버터플라이 유닛(202)에 의한 다양한 노드 연산의 병렬 실행에 전용될 수 있다.
도 10의 시스템(200)을 구현하는 다른 실시예가 가능하다. 예를 들어, 도 12에서, 일단 브랜치 메트릭 유닛(204)이 브랜치 메트릭(106)을 계산하면, 브랜치 메트릭 유닛(204)은 산술 유닛(20)에 위치된 레지스터(210)내에 결과값을 저장한다. 그후에, 데이터 어드레스 발생기(26)는 버터플라이 코프로세서(28)의 요구에 따라 레지스터(210)에 액세스한다.
대안으로, 브랜치 메트릭(204)은 버터플라이 코프로세서(28) 자체내에 위치될 수 있다. 브랜치 메트릭 유닛(204)가 버터플라이 유닛(202)에 직접 연결될 수 있기 때문에 대안의 구성으로 레지스터(210)에 대한 필요를 제거할 수 있다. 버터플라이 코프로세서(28)는 브랜치 메트릭 유닛(106) 및 ACS 연산 모두를 실행한다.
또한, 일부 실시예에서, 시스템(100)은 프로그램가능하다. 예를 들어, 레지스터는 브랜치 메트릭 유닛(204)과 DSP(10) 사이의 연결을 정의할 수 있다. 메모리 관리에 대해 단순히 구현되거나 또는 버터플라이 연산의 일부를 실행하는 경우에, DSP(10)는 스테이지 단위의 트렐리스 복호화에 포함될 수 있다. 일실시예에서, DSP(10)는 버터플라이 코프로세서(28)에 대한 메모리 인터페이스를 제공한다. 일부 실시예에서, DSP(10)는 버터플라이 코프로세서(28)를 위하여 알고리즘 스케줄링을 추가로 행한다.
따라서, 버터플라이 코프로세서(28)은 멀티플 버터플라이 유닛을 사용하여 병렬 버터플라이 연산을 구현한다. 일실시예에서, 시스템(100)은 채널 비트 스트림을 복호화하는데 관련된 매우 복잡한 연산 실행 처리량을 증가시킨다.
일실시예에서, 시스템(100)은 메모리(30)내에 저장된 것으로 도시된 소프트웨어 프로그램(500)을 포함한다. 소프트웨어 프로그램(500)을 사용하여, 시스템(100)은 다수의 복호화 방법에 대하여 융통성있게 구현될 수 있다. 또한, 새로운 복호화 기술이 개발될 때마다, 새로운 소프트웨어 프로그램이 시스템(100)내에 로딩될 수 있다.
도 13에서, 소프트웨어 프로그램(500)은 일실시예에 따라, 복호화 요구를 수신함으로써 복호화 연산을 관리한다(블록 502). 도 12의 실시예에서, 경로 메트릭(108)은 경로 메트릭 메모리(206)내에 저장된다. 따라서, 소프트웨어 프로그램(500)은 데이터 어드레스 발생기(26)를 사용하여 메모리(30)를 주소지정할 수 있고, 그래서 경로 메트릭 유닛(206)으로부터 경로 메트릭(108)을 검색할 수 있다(블록 504). 그다음, 경로 메트릭(108)은 버터플라이 코프로세서(28)에 전송될 수 있다.
도 10에서, 경로 메트릭(108)을 수신하는 것에 더하여, 버터플라이 유닛(202)은 또한 입력값으로서 브랜치 메트릭(106)을 수신한다. 따라서, 도 13에서, 소프트웨어 프로그램(500)은 브랜치 메트릭 유닛(204)이 그 브랜치 메트릭 계산을 실행하도록 한다(블록 506). 그 결과값은 레지스터(210)내에 저장되거나, 메모리(30)내에 저장되거나, 또는 메모리 저장 버스(22)상에 직접 놓여서, 버터플라이 코프로세서(28)에 전송될 수 있다.
따라서, 소프트웨어 프로그램(500)은 시스템(100)이 경로 메트릭(108) 및 브랜치 메트릭(106)을 버터플라이 코프로세서(28)에 전송할 수 있도록 한다(블록 508). 그다음, 버터플라이 코프로세서(28)은 병렬 버터플라이 연산을 실행할 수있다(블록 510). 따라서, 단일 스테이지에 대한 트렐리스 계산은 시스템(100)에 의해 실행된다. 일실시예에 따른 소프트웨어(500)의 동작은 종료된다.
버터플라이 유닛(202)은 다수의 방법으로 구현될 수 있다. 도 10 및 도 11에서, 버터플라이 유닛(202)은 각각 하나는 경로 메트릭 메모리(206)으로부터 다른 하나는 브랜치 메트릭 유닛(204)으로부터 2개의 입력값을 수신한다. 그다음, 버터플라이 유닛(202)은 경로 메트릭 메모리(206)에 전송되는 단일 출력값을 생성한다.
도 14a에서, 일실시예에 따라, 버터플라이 유닛(202)은 알고리즘 합 지수 연산을 사용하여 구현된다. 경로 메트릭 메모리(206) 및 브랜치 메트릭 유닛(204)로부터 값을 수신하는 것에 더하여, 버터플라이 유닛(202)은 또한 파라미터, c를 수신한다. 파라미터, c는 버터플라이 유닛(202)내로 하드와이어되거나, 필요하다면, 프로그래밍될 수 있다. 아래의 방정식은 이산 로직으로 버터플라이 유닛(202)내에 구현될 수 있다:
z = c log(ex/c+ ey/c) = max(x,y) + c log(1 + ediff/c)
도 14b에서, 버터플라이 유닛(202)은 맥스(max) 연산을 실행한다. 버터플라이 유닛(212)은 입력값의 최대값 및 차, x 및 y 모두를 계산하는 맥스 유닛(220)을 포함한다. 차이 값은 룩업 테이블(222)에 전송된 후, 그 결과값은 가산기(224)에 보내어진다. ACS 연산을 샐행하는 다른 알고리즘이 잘 알려져 있고 버터플라이 유닛(202)내에 구현될 수 있다.
실질적인 장점은 시스템(100), 특히 복잡한 부호화 방법으로 실현될 수 있다. 예를 들어, 터보 코드는 FEC 채널 부호화에 있어서 최근에 개발된 것이다. 터보는 휴대폰에서 사용되는 제3 세대 코드(3G) 분할 다중 접속(CDMA) 규격 및 광역 규격 모두에 사용되기 위해 고려중이다.
도 15에서, 터보 부호기(300)는 3G CDMA 휴대폰 기술에 사용되는 잘 알려진 한 실시예이다. 부호기(300)는 320 내지 5,120 비트의 크기의 범위일 수 있는 데이터의 블록에 대하여 연산한다. 블록은 2개의 구성 컨벌루셔널 코드 또는 RSC 부호기(302, 304)에 의해 병렬로 부호화된다. RSC 부호기(304)에 의해 부호화되기 전에, 입력 데이터 블록(310)은 인터리버(306)를 사용하여 비트 인터리빙된다.
데이터 블록(310)을 RSC 부호기(304)에 전송하기 전에 인터리빙함으로서, 터보 부호기(300)는 실질적으로 한번에 부호화되는 것보다 강력하다. RSC 부호기(302, 304)를 통과한 후에, 부호화된 블록(312) 및 부호화된 블록(314)은 각각 개별적으로 채널(90)을 가로질러 통과될 수 있거나(도 5), 필요하다면, 조합될 수 있다.
종래의 컨벌루셔널 부호화와 비교하여, 터보 부호기에서 사용되는 구성 코드는 훨씬 덜 복잡하다. 예를 들어, 3세대 시스템은 32 kbps 미만의 속도로 제어 채널, 음성, 및 데이터 링크에 대하여 k9 컨벌루셔널 코드를 사용한다. k9 코드는 256개의 상태를 가지고 있다. 반대로, 터보 구성 코드는 예를 들어, 단지 8개의 상태를 가질 수 있다.
도 16에서, 터보 복호기(400)는 2개의 소프트-입력/소프트-출력(SISO) 복호기(406, 408)를 포함한다. 각각의 복호기(406, 408)는 채널 비트 스트림(402,404)를 각각 수신한다. 채널 비트 스트림(402)은 도 15의 부호화된 블록(312)에 상응한다. 채널 비트 스트림(404)은 도 15의 부호화된 블록(314)에 상응한다.
터보 부호기(300)와 같이, 도 16의 터보 복호기가 잘 알려져 있다. SISO(406)는 채널 비트 스트림(402)을 수신한다. 복호화후에, 출력값은 인터리버(410)를 통과한후 제2 SISO 복호기(408)에 의해 수신된다. 제2 SISO 복호기(408)는 제2 채널 비트 스트림(404)을 더 수신한다. 복호화한 후에, SISO 복호기(408)는 출력값을 디인터리버(412)에 전송한 후, 디인터리버된 데이터를 SISO 복호기(406)에 전송한다.
프로세스는 상기 데이터의 양을 하드 출력값으로서 정하는 하드 결정(hard decision) 블록(414)으로 최종 블록이 전송되기 전에 여러번 반복될 수 있다. 터보 복호기(400)는 SISO 복호기(406, 408)가 소프트 입력 및 소프트 출력이기 때문에 부분적으로 동작한다. 따라서, 소프트 정보는 요구되는 대로 자주 상기 SISO 복호기 사이에서 전송될 수 있다. 본질적으로, 중재 시킴이 최종 출력값에 도달하는데 사용된다.
일실시예에서, SISO 복호기(406)는 MAP 알고리즘(maximum a posteriori probability)을 사용하여 구현된다. 상기에 설명되는 바와 같이, MAP은 소프트 입력/소프트 출력 알고리즘이다. "하드" 비트 결정 출력을 생성하기 보다는, MAP 출력은 각각의 데이터 비트 값의 가능성을 나타내는 사후 확률(a posteriori probabilities; APPs)이다. 이와 비교하여 비터비 알고리즘은 소프트 입력/하드 출력 복호기이다.
MAP 알고리즘 복잡성은 상태 당 복잡성에 있어서 비터비 알고리즘의 거의 4배이다. 또한, MAP 알고리즘은 비터비 알고리즘보다 훨씬 더 메모리 집약적이다. 그러나, 터보 코드를 구현하는데 있어서, k9 컨벌루셔널 코드에 대한 256 상태와 비교할 때, 오직 8개의 상태만이 고려된다.
도 16에서, 터보 복호기(400)는 SISO 복호기(406,408) 모두에서 구현되는 MAP 알고리즘을 반복한다. 각각의 복호기(406,408)는 MAP 알고리즘을 구현하기 위해 시스템(100; 도 12)을 사용할 수 있다. 터보 복호기(400)는 각각 MAP 알고리즘을 사용하는 2개의 복호기를 포함하고 있기 때문에, 시스템(100)의 병렬 연산으로 종래 기술의 구현에서 보다 실질상 보다 빠른 성능을 얻을 수 있다.
따라서, 여러 구현예에 따라, 시스템(100)은 트렐리스 다이어드램과 연관된 연산을 실행하기 위해 복호기에서 사용될 수 있다. MAP 알고리즘, 비터비 알고리즘, 및 다른 알고리즘이 이러한 연산을 실행한다. 또한, 시스템(100)은 소프트 출력 또는 하드 출력 알고리즘을 위하여 구현될 수 있다. DSP 및 버터플라이 코프로세서는 이러한 연산을 실행하는데 있어 함께 동작한다.
DSP 및 버터플라이 코프로세서 사이의 연산 분할은 다수의 방법으로 얻어질 수 있다. 일 실시예에서, DSP는 버터플라이 코프로세서를 위하여 메모리 관리 및 알고리즘 스케줄링을 실행한다. 버터플라이 코프로세서는 복호화하는 동안 증가된 처리량을 위하여 병렬 버터플라이 연산을 구현한다. 또한, 시스템(100)은 다수의 가능한 복호화 환경에서 사용하기 위하여 융통성을 유지한다.
본 발명이 제한된 수의 실시예에 대하여 설명되었지만, 당업자는 이로부터수많은 변형 및 수정을 이해할 것이다. 첨부된 청구항은 본 발명의 진정한 정신 및 범위에서 있는 이러한 모든 변형 및 수정을 포함하도록 의도되었다.
Claims (26)
- 메모리에 접속가능한 버스를 포함하는 디지털 신호 프로세서; 및상기 버스에 접속되어 있고 상기 디지털 신호 프로세서에 의해 스케줄링된 연산을 실행하는 버터플라이 코프로세서;를 포함하는 것을 특징으로 하는 시스템.
- 제1항에 있어서, 상기 디지털 신호 프로세서는,상기 버스에 연결되어 있고, 요구하는 디바이스를 위하여 상기 메모리를 주소지정하는 데이터 어드레스 발생기를 더 포함하는 것을 특징으로 하는 시스템.
- 제2항에 있어서, 상기 디지털 신호 프로세서는 상기 디지털 신호 프로세서에서 산술 연산을 실행하는 산술 유닛을 더 포함하는 것을 특징으로 하는 시스템.
- 제3항에 있어서, 상기 산술 유닛은 브랜치 메트릭 계산을 실행하는 브랜치 메트릭 유닛을 더 포함하는 것을 특징으로 하는 시스템.
- 제4항에 있어서, 상기 산술 유닛은 상기 브랜치 메트릭 유닛이 하나 이상의 결과값을 저장할 수 있는 하나 이상의 레지스터를 더 포함하는 것을 특징으로 하는 시스템.
- 제5항에 있어서, 상기 데이터 어드레스 레지스터는 상기 산술 유닛내의 하나 이상의 레지스터를 주소지정할 수 있는 것을 특징으로 하는 시스템.
- 제1항에 있어서, 상기 버터플라이 코프로세서는 버터플라이 연산을 실행하는 복수의 버터플라이 유닛을 더 포함하는 것을 특징으로 하는 시스템.
- 제7항에 있어서, 상기 버터플라이 연산은 병렬 연산인 것을 특징으로 하는 시스템.
- 제8항에 있어서, 상기 버터플라이 코프로세서내의 복수의 버터플라이 유닛은 상기 디지털 신호 프로세서의 지시로 덧셈-비교-선택 연산을 더 실행하는 것을 특징으로 하는 시스템.
- 제8항에 있어서, 상기 버터플라이 코프로세서내의 복수의 버터플라이 유닛은 상기 디지털 신호 프로세서의 지시로 로그 합 지수 연산의 근사화를 더 실행하는 것을 특징으로 하는 시스템.
- 제8항에 있어서, 경로 메트릭 메모리로부터 검색된 경로 메트릭은 상기 디지털 신호 프로세서의 데이터 어드레스 발생기에 의해 액세스되는 것을 특징으로 하는 시스템.
- 제11항에 있어서, 상기 디지털 신호 프로세서의 데이터 어드레스 발생기는 상기 브랜치 메트릭 유닛으로부터 브랜치 메트릭을 더 검색하는 것을 특징으로 하는 시스템.
- 트렐리스 다이어그램의 스테이지를 식별하는 단계;상기 스테이지의 각각의 노드에 대한 브랜치 메트릭을 계산하는 단계; 및상기 브랜치 메트릭에 기초하여 상기 스테이지에 대한 2개 이상의 경로 메트릭을 동시에 계산하는 단계;를 포함하는 것을 특징으로 하는 방법.
- 제13항에 있어서, 메모리내에 상기 경로 메트릭을 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제13항에 있어서, 상기 스테이지의 각각의 노드에 대한 브랜치 메트릭을 계산하는 단계는,상기 스테이지내의 다수의 노드를 식별하는 단계;각각의 노드로부터 뻗는 다수의 브랜치를 식별하는 단계; 및각각의 브랜치에 대한 브랜치 메트릭을 계산하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
- 제14항에 있어서, 상기 브랜치 메트릭에 기초하여 상기 스테이지에 대한 2개 이상의 경로 메트릭을 동시에 계산하는 단계는,상기 스테이지의 노드를 식별하는 단계;상기 노드에 이른 이전 경로 메트릭을 상기 메모리로부터 검색하는 단계;상기 스테이지내의 상기 노드로부터 뻗는 다수의 브랜치를 식별하는 단계; 및상기 노드로부터 뻗는 각각의 브랜치에 대하여 버터플라이 유닛을 할당하는 단계;를 더 포함하고, 상기 버터플라이 유닛은 상기 이전 경로 메트릭 및 상기 브랜치 메트릭으로부터 새로운 경로 메트릭을 계산하는 것을 특징으로 하는 방법.
- 트렐리스 다이어그램을 사용하여 기술되는 부호기에 의해 부호화된 비트 스트림을 복호화하기 위해 요구를 수신하는 단계;상기 트렐리스 다이어그램의 스테이지를 식별하는 단계;상기 스테이지의 모든 노드에 대하여 브랜치 메트릭을 계산하는 단계;메모리로부터 상기 트렐리스 다이어그램의 상이한 스테이지에 대한 경로 메트릭을 검색하는 단계; 및상기 스테이지의 각각의 노드에 대하여 새로운 경로 메트릭을 동시에 계산하는 단계;를 포함하는 것을 특징으로 하는 방법.
- 제17항에 있어서,상기 메모리에 상기 스테이지의 각각의 노드에 대한 새로운 경로 메트릭을 저장하는 단계; 및상기 트렐리스 다이어그램의 새로운 스테이지를 식별하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
- 실행될 때, 프로세서에 기초한 시스템이트렐리스 다이어그램의 스테이지를 식별하고;상기 스테이지의 각각의 노드에 대한 브랜치 메트릭을 계산하고; 그리고상기 브랜치 메트릭에 기초하여 상기 스테이지에 대한 2개 이상의 경로 메트릭을 동시에 계산하도록 하는, 소프트웨어 프로그램을 저장하는 매체를 포함하는 것을 특징으로 하는 아티클.
- 제19항에 있어서, 실행될 때, 프로세서에 기초한 시스템이 상기 경로 메트릭을 메모리에 저장하도록 하는 소프트웨어 프로그램을 더 저장하는 것을 특징으로 하는 아티클.
- 디지털 신호 프로세서로서,메모리에 접속가능한 버스;데이터 어드레스 발생기; 및산술 유닛;을 포함하는 상기 디지털 신호 프로세서; 및상기 버스에 접속되어 있고 상기 디지털 신호 프로세서에 의해 스케줄링된 연산을 실행하는 버터플라이 코프로세서;를 포함하는 것을 특징으로 하는 시스템.
- 제21항에 있어서, 실행할 때,트렐리스 다이어그램의 스테이지를 식별하고,상기 스테이지내의 다수의 노드를 식별하고, 그리고각각의 노드로부터 뻗는 다수의 브랜치를 식별하는, 소프트에어 프로그램을 상기 디지털 신호 프로세서가 더 포함하는 것을 특징으로 하는 시스템.
- 제22항에 있어서, 상기 버터플라이 코프로세서는 복수의 버터플라이 유닛을 더 포함하는 것을 특징으로 하는 시스템.
- 제23항에 있어서, 버터플라이 유닛의 수는 상기 스테이지내의 노드의 수와 동일한 것을 특징으로 하는 시스템.
- 제24항에 있어서, 상기 버터플라이 코프로세서에 의해 실행된 연산은 상기 스테이지에 대한 경로 메트릭을 계산하는 단계를 포함하는 것을 특징으로 하는 시스템.
- 제25항에 있어서, 상기 버터플라이 유닛은 상기 스테이지의 각각의 노드에대한 경로 메트릭을 동시에 계산하는 것을 특징으로 하는 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/670,231 | 2000-09-28 | ||
US09/670,231 US7234100B1 (en) | 2000-09-28 | 2000-09-28 | Decoder for trellis-based channel encoding |
PCT/US2001/030355 WO2002029977A2 (en) | 2000-09-28 | 2001-09-26 | A decoder for trellis-based channel encoding |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20030036845A true KR20030036845A (ko) | 2003-05-09 |
Family
ID=24689534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2003-7004441A KR20030036845A (ko) | 2000-09-28 | 2001-09-26 | 트렐리스에 기초한 채널 부호화를 위한 복호기 |
Country Status (9)
Country | Link |
---|---|
US (1) | US7234100B1 (ko) |
JP (1) | JP2004511162A (ko) |
KR (1) | KR20030036845A (ko) |
CN (1) | CN1302624C (ko) |
AU (1) | AU2001294838A1 (ko) |
DE (1) | DE10196688B3 (ko) |
GB (1) | GB2381724B (ko) |
TW (1) | TW548914B (ko) |
WO (1) | WO2002029977A2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140092420A (ko) * | 2011-12-14 | 2014-07-23 | 자일링크스 인코포레이티드 | 통신 시스템에서 디코딩 파라미터를 변경하는 시스템 및 방법 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6961921B2 (en) | 2001-09-06 | 2005-11-01 | Interdigital Technology Corporation | Pipeline architecture for maximum a posteriori (MAP) decoders |
US7177658B2 (en) * | 2002-05-06 | 2007-02-13 | Qualcomm, Incorporated | Multi-media broadcast and multicast service (MBMS) in a wireless communications system |
US7822150B2 (en) * | 2003-03-15 | 2010-10-26 | Alcatel-Lucent Usa Inc. | Spherical decoder for wireless communications |
TWI228654B (en) * | 2003-07-11 | 2005-03-01 | Mediatek Inc | Non-binary Viterbi data processing system and method |
CN100542053C (zh) * | 2004-03-03 | 2009-09-16 | 中国科学院沈阳自动化研究所 | 一种带有自适应性以及高速Viterbi解码器的设计方法 |
US8107542B1 (en) | 2004-04-16 | 2012-01-31 | Marvell International Ltd. | Soft decoding of coded bit-streams |
CN1961517B (zh) * | 2004-05-28 | 2011-08-24 | 法国电信公司 | 编码和解码方法及装置、存储编码数据的装置 |
EP1641129A1 (en) * | 2004-09-22 | 2006-03-29 | STMicroelectronics Pvt. Ltd | An improved turbo encoder |
KR100703271B1 (ko) * | 2004-11-23 | 2007-04-03 | 삼성전자주식회사 | 통합노드 프로세싱을 이용한 저밀도 패리티 검사 코드복호 방법 및 장치 |
GB0504483D0 (en) | 2005-03-03 | 2005-04-13 | Ttp Communications Ltd | Trellis calculations |
EP2442451A1 (en) * | 2009-08-18 | 2012-04-18 | TELEFONAKTIEBOLAGET LM ERICSSON (publ) | Soft output Viterbi algorithm method and decoder |
TWI565246B (zh) * | 2015-01-12 | 2017-01-01 | 晨星半導體股份有限公司 | 迴旋編碼的解碼方法 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3851858T2 (de) * | 1987-06-05 | 1995-05-24 | Mitsubishi Electric Corp | Digitaler Signalprozessor. |
US5291499A (en) | 1992-03-16 | 1994-03-01 | Cirrus Logic, Inc. | Method and apparatus for reduced-complexity viterbi-type sequence detectors |
US5408502A (en) * | 1992-07-13 | 1995-04-18 | General Instrument Corporation | Apparatus and method for communicating digital data using trellis coded QAM with punctured convolutional codes |
US5612974A (en) * | 1994-11-01 | 1997-03-18 | Motorola Inc. | Convolutional encoder for use on an integrated circuit that performs multiple communication tasks |
US5784293A (en) * | 1994-11-03 | 1998-07-21 | Motorola, Inc. | Apparatus and method for determining transmitted modulation symbols |
KR0153966B1 (ko) * | 1994-11-28 | 1998-11-16 | 배순훈 | 비터비 복호기의 연판정 메트릭 산출방법 및 장치 |
JP3316724B2 (ja) | 1995-06-13 | 2002-08-19 | 日本電気エンジニアリング株式会社 | ビタビ復号器 |
JPH0946240A (ja) | 1995-07-27 | 1997-02-14 | Mitsubishi Electric Corp | ビタビ復号機能を有するデータ処理装置 |
US5796757A (en) * | 1995-09-15 | 1998-08-18 | Nokia Mobile Phones Ltd. | Methods and apparatus for performing rate determination with a variable rate viterbi decoder |
US5742621A (en) * | 1995-11-02 | 1998-04-21 | Motorola Inc. | Method for implementing an add-compare-select butterfly operation in a data processing system and instruction therefor |
US5633897A (en) * | 1995-11-16 | 1997-05-27 | Atmel Corporation | Digital signal processor optimized for decoding a signal encoded in accordance with a Viterbi algorithm |
US5933462A (en) * | 1996-11-06 | 1999-08-03 | Qualcomm Incorporated | Soft decision output decoder for decoding convolutionally encoded codewords |
JP3338374B2 (ja) * | 1997-06-30 | 2002-10-28 | 松下電器産業株式会社 | 演算処理方法および装置 |
US6257756B1 (en) * | 1997-07-16 | 2001-07-10 | Motorola, Inc. | Apparatus and method for implementing viterbi butterflies |
US6009128A (en) * | 1997-09-08 | 1999-12-28 | Lucent Technologies, Inc. | Metric acceleration on dual MAC processor |
US5987490A (en) * | 1997-11-14 | 1999-11-16 | Lucent Technologies Inc. | Mac processor with efficient Viterbi ACS operation and automatic traceback store |
US5912908A (en) * | 1997-11-21 | 1999-06-15 | Lucent Technologies Inc. | Method of efficient branch metric computation for a Viterbi convolutional decoder |
US6029267A (en) * | 1997-11-25 | 2000-02-22 | Lucent Technologies Inc. | Single-cycle, soft decision, compare-select operation using dual-add processor |
US6115436A (en) * | 1997-12-31 | 2000-09-05 | Ericsson Inc. | Non-binary viterbi decoder using butterfly operations |
JP3338371B2 (ja) | 1998-05-20 | 2002-10-28 | シャープ株式会社 | ビタビ復号器 |
SG80035A1 (en) * | 1999-05-27 | 2001-04-17 | Inst Of Microelectronics | Viterbi decoding of punctured convolutional codes without real-time branch metric computation |
US7127664B2 (en) * | 2000-09-18 | 2006-10-24 | Lucent Technologies Inc. | Reconfigurable architecture for decoding telecommunications signals |
-
2000
- 2000-09-28 US US09/670,231 patent/US7234100B1/en not_active Expired - Fee Related
-
2001
- 2001-09-05 TW TW090122012A patent/TW548914B/zh not_active IP Right Cessation
- 2001-09-26 CN CNB018163769A patent/CN1302624C/zh not_active Expired - Fee Related
- 2001-09-26 GB GB0303959A patent/GB2381724B/en not_active Expired - Fee Related
- 2001-09-26 AU AU2001294838A patent/AU2001294838A1/en not_active Abandoned
- 2001-09-26 KR KR10-2003-7004441A patent/KR20030036845A/ko not_active Application Discontinuation
- 2001-09-26 JP JP2002533476A patent/JP2004511162A/ja active Pending
- 2001-09-26 DE DE10196688T patent/DE10196688B3/de not_active Expired - Fee Related
- 2001-09-26 WO PCT/US2001/030355 patent/WO2002029977A2/en active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140092420A (ko) * | 2011-12-14 | 2014-07-23 | 자일링크스 인코포레이티드 | 통신 시스템에서 디코딩 파라미터를 변경하는 시스템 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
US7234100B1 (en) | 2007-06-19 |
CN1466818A (zh) | 2004-01-07 |
WO2002029977A3 (en) | 2002-06-13 |
WO2002029977A2 (en) | 2002-04-11 |
GB2381724A (en) | 2003-05-07 |
DE10196688B3 (de) | 2013-10-17 |
TW548914B (en) | 2003-08-21 |
DE10196688T1 (de) | 2003-08-28 |
GB0303959D0 (en) | 2003-03-26 |
GB2381724B (en) | 2005-03-30 |
CN1302624C (zh) | 2007-02-28 |
AU2001294838A1 (en) | 2002-04-15 |
JP2004511162A (ja) | 2004-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3677257B2 (ja) | 畳込み復号装置 | |
US7127664B2 (en) | Reconfigurable architecture for decoding telecommunications signals | |
KR101175826B1 (ko) | 소프트웨어 정의 무선 시스템에서 비터비 복호 장치 및 방법 | |
JP4478668B2 (ja) | 並列のターボ復号機中でのインターリーブの方法およびシステム。 | |
US6865710B2 (en) | Butterfly processor for telecommunications | |
US6883021B2 (en) | Programmable and multiplierless Viterbi accelerator | |
CN100517984C (zh) | 用于移动通信系统的维特比/涡轮联合译码器 | |
US7020214B2 (en) | Method and apparatus for path metric processing in telecommunications systems | |
US7234100B1 (en) | Decoder for trellis-based channel encoding | |
US7669105B2 (en) | Generic maximum aposteriori probability decoder for use in software-defined radio systems | |
US7278088B2 (en) | Configurable architecture and its implementation of viterbi decorder | |
US8009773B1 (en) | Low complexity implementation of a Viterbi decoder with near optimal performance | |
KR100437697B1 (ko) | 다수준 격자부호변조방식의 복호 방법 및 장치 | |
US7979781B2 (en) | Method and system for performing Viterbi decoding using a reduced trellis memory | |
KR20010067413A (ko) | 브랜치 메트릭 계산 처리에서 감소된 비트수를 갖는비터비 디코더 | |
EP1322041A1 (en) | Viterbi decoder using restructured trellis | |
US20050138535A1 (en) | Method and system for branch metric calculation in a viterbi decoder | |
JP4295871B2 (ja) | 誤り訂正復号器 | |
US20110202819A1 (en) | Configurable Error Correction Encoding and Decoding | |
JP2001285079A (ja) | 通信用誤り訂正符号復号装置 | |
JPH10336044A (ja) | 受信装置 | |
KR100333336B1 (ko) | 비터비 복호기의 역추적 방법 | |
Jamal et al. | Design and FPGA Implementation of Low Power Punctured Soft Decision Viterbi Decoder | |
JPH1127155A (ja) | ビタビ復号方法及び誤り訂正復号化装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |