KR100779782B1 - 비터비 디코더 용 고속 acs 유닛 - Google Patents

비터비 디코더 용 고속 acs 유닛 Download PDF

Info

Publication number
KR100779782B1
KR100779782B1 KR1020027005116A KR20027005116A KR100779782B1 KR 100779782 B1 KR100779782 B1 KR 100779782B1 KR 1020027005116 A KR1020027005116 A KR 1020027005116A KR 20027005116 A KR20027005116 A KR 20027005116A KR 100779782 B1 KR100779782 B1 KR 100779782B1
Authority
KR
South Korea
Prior art keywords
acs
metrics
state metrics
target state
metric
Prior art date
Application number
KR1020027005116A
Other languages
English (en)
Other versions
KR20020048975A (ko
Inventor
데이비드 한스퀸
Original Assignee
콸콤 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 콸콤 인코포레이티드 filed Critical 콸콤 인코포레이티드
Publication of KR20020048975A publication Critical patent/KR20020048975A/ko
Application granted granted Critical
Publication of KR100779782B1 publication Critical patent/KR100779782B1/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
    • 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/6566Implementations concerning memory access contentions
    • 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/395Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using a collapsed trellis, e.g. M-step algorithm, radix-n architectures with n>2
    • 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/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/4161Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management
    • H03M13/4169Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management using traceback

Landscapes

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

Abstract

비터비 알고리즘의 ACS(add-compare-select) 버터플라이 동작을 수행하는 시스템에 관한 발명이다. 상기 시스템은 다수의 소스 상태 메트릭을 저장하는 제1 저장 엘리먼트(145); 및 짝수 및 홀수 클록 사이클을 기초로 제1 및 제2 동작 경로 중에서 하나를 선택할 수 있는 멀티플렉서(670)를 포함한다. ACS 메커니즘(600)은 소스 상태 메트릭들 각각에 대한 타깃 상태 메트릭들을 계산한다. 상기 ACS 메커니즘 및 멀티플렉서에 연결된 제2 메모리는 상기 타깃 메트릭들을 일시적으로 저장하는데 사용된다. 따라서, 멀티플렉서는 짝수 클록 사이클 동안에 제1 동작 경로를 선택하고 제1 메모리에서 ACS 메커니즘으로 소스 상태 메트릭을 제공하여 타깃 상태 메트릭을 발생시킨다. 홀수 클록 사이클 동안에, 멀티플렉서는 제2 메모리에 액세스하기 위한 제2 동작 경로를 선택하고, 중간 소스 상태 메트릭들로서 앞서 계산된 타깃 상태 메트릭들을 사용한다.

Description

비터비 디코더 용 고속 ACS 유닛{HIGH-SPEED ACS UNIT FOR A VITERBI DECODER}
본 발명은 일반적으로는 비터비 알고리즘의 응용에 관한 것이다. 보다 구체적으로는, 본 발명은 비터비 알고리즘의 구현에 있어서, 고속 ACS(Add-Compare-Select) 버터플라이 동작을 수행하는 개선된 시스템 및 방법에 관한 것이다.
비터비 알고리즘은 컨벌루션 인코딩된 신호들을 디코딩하기 위한 방법으로 1967년에 처음으로 소개되었다. 그 소개 이후로, 이 알고리즘은 데이터 통신, 데이터 기록 및 데이터 신호 처리 분야에서 광범위하게 사용되어 왔다. 이 알고리즘은 저장 매체에서의 기록 에러의 감소, 심볼 간 간섭의 제거 및 문자 및 텍스트 인식의 개선을 포함하는 다양한 디지털 평가 문제들을 성공적으로 해결하는데 사용되어 왔다.
그 결과, 비터비 알고리즘은 컨벌루션 인코딩된 데이터의 최상의 에러 정정 디코딩 방법이 되었다. 그러한 응용을 위해, 비터비 알고리즘은 일련의 관측을 기반으로, 모든 가능한 인코더 상태들을 대표하는 트렐리스를 통과하는 경로들 중 가장 작은 에러 메트릭을 갖는 경로를 결정한다. 이 최단 경로는 컨벌루션 인코더에 의해 생성된 가장 적당한 시퀀스를 나타낸다.
도1A는 통상적인 컨벌루션 인코더를 나타낸다. 컨벌루션 인코더(100)는 8비트 탭 시프트 레지스터(110) 및 입력 데이터 비트 시퀀스 U(D)(105)를 출력 코드 심볼 시퀀스 C0(D), C1(D)(125)로 변환하는 OR-타입 합산기(120)를 포함한다. 특히, 도1A는 각 입력 데이터 비트 U(D)(105)에 대해 2개의 출력 코딩 심볼 C0(D), C1(D)(125)를 발생시키는 1/2 코드율의 예를 나타낸다. 도시한 컨벌루션 인코더(100)의 특정 코드율 및 구성은 단지 설명을 위한 것이며, 본 발명의 다양한 실시예들의 동작 또는 범위를 제한하지 않는다는 점이 주목된다. 그에 따라, 예컨대, 1/3 또는 3/4와 같은 서로 다른 코드율들이 본 발명의 실시예에 따라 사용될 수 있다.
인코더(100)는 코드 생성 다항식 G0(D), G1(D)에 의해 특정된 특정 시프트-레지스터 구성에 따라 입력 비트 스트림 U(D)(105)를 시프트 및 XOR 합산함으로써 각 출력 코드 심볼 C0(D), C1(D)을 생성한다. 이 경우에, 도1A는 코드율 1/2 코드 생성 다항식
Figure 112007027389314-pct00001
을 제공하는 시프트-레지스터 상호연결을 설명한다. 다항식 G0(D)의 계수들은 입력 데이터 시퀀스 U(D)(105)와 컨벌루션되어 출력 컨벌루션 코드 심볼 C0(D)(125)을 생성한다. 마찬가지로, 도1A는 계수가 입력 데이터 시퀀스 U(D)(105)와 컨벌루션되어 출력 컨벌루션 코드 심볼 C1(D)(125)을 생성하는, 코드율 1/2의 코드 생성 다항식
Figure 112007027389314-pct00002
을 나타낸다. 인코더(100)의 구속장 K는 시프트 레지스터(110)의 딜레이 엘리먼트의 수보다 하나 많다. 예컨대, 인코더(100)에 대해서, 구속장 K는 9이다. 인코더(100)에 입력된 각 데이터 비트(105)에 대해, 출력 코드 심볼들 C0(D), C1(D)(125)는 입력된 비트뿐만 아니라 이전의 K-1개의 입력 비트에도 좌우된다. 그러므로 인코더(100)는 2K-1개의 가능한 인코더 상태를 스패닝(spanning)할 수 있는 출력 코드 심볼들 C0(D), C1(D)를 생성한다.
통상적인 통신 시스템에서, 이어서 출력 코드 심볼 C0(D), C1(D)(125)가 변조되고 잡음 채널(미도시)을 통해 전송된다. 디코더는 결국 잡음 컨벌루션 인코딩된 데이터 스트림을 수신하고 비터비 알고리즘을 사용하여, 컨벌루션 코드의 성질을 이용하여 궁극적으로 입력 데이터 시퀀스 U(D)(105)를 결정한다.
컨벌루션 코드의 한가지 장점은 그들이 매우 반복적인 구조이며, 이것이 대칭적인 코드 트리를 제공한다는 점이다. 이론적으로, 컨벌루션 코드는 무한 코드 심볼 시퀀스를 생성할 수 있다. 그러나 그 대칭성 때문에, 입력된 데이터 시퀀스 U(D)(105)에 이르는 가장 확률 높은 경로를 배치할 때 평가될 필요가 있는 상태들의 수는 2K-1(이 경우에는 256)로 줄어든다. 또한, 그러한 대칭 코드를 디코딩할 때, 256개의 가능한 인코더 상태 각각으로의 가장 확률 높은(즉, 생존하는) 지역 경로만이 중요하고-모든 다른 경로들은 추가적인 고려대상에서 제외된다. 이것은 상태 전체에 걸쳐 가장 확률 높은 전체 경로는 반드시 그 상태 전체에 걸친 생존 지역 경로를 따라야 하기 때문이다.
비터비 디코더는 한정된 상태 변화 집합을 갖는 유한 상태 머신으로서 동작하기 위한 이러한 코드 속성들에 의존한다. 디코더는 가능한 인코더의 2K-1개의 상태 각각에 대한 가설을 세우고, 수신된 잡음 컨벌루션 인코딩된 데이터 스트림으로부터 얻은 관측을 기초로, 인코더가 그러한 상태들 각각에서 다음 가능한 2K-1개의 가능한 인코더 상태로 변화되었을 가능성을 결정한다.
변화 가능성은 확률값의 음의 로그값에 비례하는 양(quantity)으로 표현되며, 이것을 메트릭이라 하기로 한다. 명백하게, 메트릭이 더 작아질수록, 발생 가능성은 더 높아진다. 상태 메트릭 및 브랜치 메트릭의 두 가지 타입이 있다. 경로 메트릭이라고도 불리는 상태 메트릭은 전송된 코드 심볼들 집합이 특정 상태를 통과할 상대적인 확률을 나타낸다. 브랜치 메트릭은 특정 소스 상태에서 특정 타깃 상태로의 변화가 전송되었을 조건부 확률(소스 상태가 맞다고 가정함)을 나타낸다.
비터비 알고리즘은 다음과 같이 요약된다. 시간이 d개의 샘플로 분할되고, n개의 가능한 상태 Si k이 시간 샘플 k마다 존재한다(여기서 i는 1
Figure 112007027389314-pct00032
n으로부터의 정수이고, k는 1
Figure 112007027389314-pct00033
d로부터의 정수이다). k>1에 대해서, 각 상태는 p개중 임의의 예고 상태들 Sj k-1(여기서 j는 1
Figure 112007027389314-pct00005
p로부터의 정수이다)로부터의 경로에 의해 도달할 수 있다. 각 상태에 대해, 이러한 p개의 상태 중 최소의 메트릭을 갖는 경로는 그 메트릭의 값과 함께 확인 및 저장된다. 메트릭의 값은 다음과 같다.
초기화: 시작 시간 샘플(k=1)에 대해, 각 상태 Si 1에 저장된 메트릭이 초기화된다. 시작 상태가 알려져 있는 경우에, 이러한 경우의 메트릭은 0으로 설정되는 반면에, 다른 상태들 Si 1의 메트릭은 더 큰 수로 설정된다. 이러한 구조는 추후의 알고리즘 반복이 원하는 시작 상태에서 시작되는 경로들만을 선택하게 한다.
반복: 각 시간 샘플(k=2
Figure 112005059937934-pct00006
d)에 대해, 모든 상태들 Si k이 방문된다. 각 상태 Si k에 대해서, 그 상태에 이르는 각 경로 j에 대한 메트릭은 (a) 예고 상태 Sj k-1의 메트릭 및 (b) 상태 Sj k-1에서 상태 Si k에 이르는 브랜치의 메트릭 bmj k의 합으로 계산된다. 각 상태 Sj k에 이르는 p개의 경로들 중에서, 가장 낮은 메트릭을 갖는 경로(즉, 생존자 경로)가 선택되고 그 상태에 저장되며, 그 경로에 대한 메트릭 또한 그 상태에 대한 메트릭 smi k으로 저장된다.
체인백: 마지막 시간 샘플에 대한 모든 상태들까지 방문되었으면, 가장 낮은 상태 메트릭을 갖는 상태 Si d가 확인된다. 이러한 상태에 대한 생존자 경로는 저장 매체로부터 판독되고, 시간 샘플 d-1에 대한 대응 상태가 그에 의해 확인된다. 후자의 상태에 대한 생존자 경로는 저장 매체로부터 판독되고, 상태 Si d에 이르는 경로(즉, 상태 시간 행렬을 통한 가장 확률 높은 경로)를 포함하는 모든 상태들이 확인될 때까지 체인백 프로세스가 반복된다.
따라서, 임의의 시간 k에서, 비터비 알고리즘은 상태 Sn k에 이르는 경로의 메트릭을 계산하고, 생존자 경로(n개의 상태 Sn k 각각에 대해 하나)를 결정하며, n개의 생존자 경로 및 그들 각각의 메트릭들을 저장한다. 이것은 고려 중인 모든 타깃 상태에 대해 그것에 이르는 소스 상태를 저장하는 것에 해당한다. 그에 따라, 임의의 비터비 알고리즘 구현은 이러한 동작들을 수행하기 위해 도1B에 설명된 바와 같은 ACS(Add-Compare-Select) 유닛(150)의 사용을 필요로 한다. ACS 유닛(150)은 상태 메트릭 값들의 계산을 담당하고 또한 ACS 버터플라이 동작들에 의해 소스 및 타깃 상태들 간의 관계들을 특성화한다. 도2는 단일 ACS 버터플라이 동작(955)을 나타낸다.
버터플라이 동작(155)은 인코더(100)에서 2개의 특정 소스 상태에 대해 발생할 수 있었던 유일하게 가능한 상태 변화들을 포함한다. 이것은 임의의 주어진 시간에 인코더(100)의 상태가 1비트만큼 우측으로 시프트된 인코더의 이전 상태라는 사실에 부분적으로 기인한다. 다음(우측으로 시프트된) 정보 비트는 소스 상태로부터 어느 변화가 행해질 것인가를 결정하고, 타깃 상태의 최상위 비트(MSB)로서 나타난다. 그에 따라, 소스 상태가 변화할 수 있는 유일한 2개의 가능한 타깃 상태만이 존재한다. 따라서 도2에 의해 증명되는 바와 같이, 입력된 데이터 비트 U(D)의 값에 따라, 인코더(100)는 소스 상태 "x0"에서 타깃 상태 "0x" 또는 "1x"로, 그리고 소스 상태 "x1"에서 타깃 상태 "0x" 또는 "1x"로만 변화할 수 있다. 표기 "x0" 및 "x1"는 소스 상태의 최하위 비트(LSB)가 각각 "0" 및 "1"임을 나타내고, 반면에 상위 비트들은 "x"로 표현되며, 표기 "0x" 및 "1x"는 타깃 상태들의 최상위 비트가 각각 "0" 또는 "1"임을 나타내는 반면에, 하위 비트들은 "x"로 표현된다. "x"항은 소스 상태에 포함되건 타깃 상태에 포함되건 간에 동일한 값(예컨대, 7비트값)을 나타낸다.
도2는 또한 소스 상태에서 타깃 상태로의 각 변화가 가정된 코드 심볼들 H0(D), H1(D) 또는
Figure 112007027389314-pct00007
,
Figure 112007027389314-pct00008
의 집합을 생성하는 것을 나타낸다. 사실, 인코더(100)가 ACS 버터플라이(155)의 병렬 브랜치들을 따라 동작하면(예컨대, "x0"에서 "0x"로 또는 "x1"에서 "1x"로의 변화), 코드 심볼들 H0(D), H1(D)(125)가 두 개의 병렬 브랜치에 대해 생성된다. 이 특징은 일반적으로 컨벌루션 코드의 반복 속성 및 MSB 및 LSB가 1로 설정된(즉, G0(D) 및 G1(D)에 대해, g0 및 g8는 1이다) 코드 생성 다항식의 사용에 부분적으로 기인한다. 유사한 형태로, 코드 심볼들
Figure 112007027389314-pct00009
,
Figure 112007027389314-pct00010
들은 인코더(100)가 ACS 버터플라이(155)의 대각선 브랜치들 중 하나를 따라 동작(예컨대, "x0"에서 "1x"로 또는 "x1"에서 "0x"로의 변화)할 때 생성된다.
위에 언급된 바와 같이, ACS(150) 유닛은 타깃 상태 메트릭들 tm0x, tm1x를 계산한다. ACS(150) 로직은 소스 상태 메트릭 smx0, smx1을 저장하고, 이것은 수신된 코드 심볼들 집합이 소스 상태들 "x0" 및 "x1"에 이를 확률과 관련된다. 도1B로 돌아가서, 코드 심볼들 집합을 수신한 후에, 브랜치 메트릭 유닛(140)은 브랜치 메트릭 값들 bmi, j,
Figure 112007027389314-pct00011
을 계산한다. ACS(150)는 특정 타깃 상태에 이르는 2개의 변화 각각에 해당하는 브랜치 메트릭 bmi, j,
Figure 112007027389314-pct00012
을 해당 소스 상태 메트릭 smx0, smx1에 "더한다". 브랜치 메트릭들 bmi, j,
Figure 112007027389314-pct00013
는 특정 소스 상태에서 특정 타깃 상태로의 변화가 발생할 조건부 확률을 나타낸다. 브랜치 메트릭 bmij는 수신된 코드 심볼들이 ACS(150) 가정된 코드 심볼들 H0(D), H1(D)(125)과 얼마나 근접하게 매칭되는가를 나타내고, 브랜치 메트릭
Figure 112007027389314-pct00014
은 수신된 코드 심볼들이
Figure 112007027389314-pct00015
,
Figure 112007027389314-pct00016
과 얼마나 근접하게 매칭되는가를 나타낸다. 브랜치 메트릭 bmi, j,
Figure 112007027389314-pct00017
의 값은 수신된 심볼 쌍 및 가정된 심볼 쌍 H0(D), H1(D)에만 좌우된다.
2개의 타깃 상태 각각에 대해, ACS(150)는 그 타깃 상태에 이르는 소스 상태 메트릭-브랜치 메트릭 쌍들의 합을 비교한다. 최소 메트릭 합으로 표현되는 각 타깃 상태로의 가장 가능성 있는 변화는 ACS(150)에 의해 "선택"되고, 타깃 상태 메트릭 tm0x, tm1x로서 그 타깃 상태에 할당된다.
위에 언급된 바와 같이, ACS(150) 로직은 타깃 상태에 이르는 2개의 변화 각각에 대해 브랜치 메트릭 bmi, j,
Figure 112007027389314-pct00018
을 소스 상태 메트릭 smx0, smx1에 더하고, 그 타깃 상태로의 가장 가능성 큰 경로가 더 작은 메트릭 합을 발생시키는 변화로부터 왔는지를 결정한다. 그리고 나서 더 작은 메트릭 합이 선택되고, 새 타깃 상태 메트릭 tm0x, tmlx이 된다. ACS(150)는 또한 상태 메트릭(즉, 각 타깃 상태에 이르는 가장 확률 높은 경로와 관련된 비용들)을 상태 RAM(145)에 저장한다. 도1B에 나타난 바와 같이, 가장 작은 메트릭 합의 선택에 의해 체인백 메모리 유닛(160)에 1비트 양이 저장되고, 이것을 판정 비트라 한다. 우세한 소스 상태 메트릭의 LSB에 의해 표시되는 판정 비트는 두 개의 변화 중 어느 것이 선택되었는가를 나타낸다.
체인백 메모리 유닛(160)은 가장 확률 높은 변화에 해당하는 판정 비트를 각 타깃 상태에 저장한다. 구속장 K=9를 갖는 인코더(100)에 대해, 인코더(100)의 256개의 가능한 상태 각각에 대응하여 생성된 2k-1 또는 256개의 판정 비트가 존재할 것이다. 일단 소정수의 상태에 대한 그러한 모든 정보의 행렬이 생성되어 저장되면, 체인백 유닛(160)은 올바른 경로를 끌어가는 가장 큰 가능성을 갖는 상태(즉, 상태들 중 최저 비용을 갖는 가장 최근의 시간에 해당하는 상태)에서 시작한다. 체인백 유닛(160)은 마지막 P x 256(즉, P x 2k-1)개의 판정 비트를 모두 판독함으로써 시간상으로 뒤로 속박(chain)되어 P개의 비트를 선택하는데, 여기서 P는 경로 메모리의 유효 체인백 깊이이다. 결정 비트가 인코더(100)를 통과한 것으로 가정된 가장 확률 높은 비트들 집합을 나타내기 때문에, 그들은 디코더에 의해 출력될 수 있는 최상의 데이터이다. 결과적으로, 체인이 거쳐간 결정 이력에서 더 뒤로 갈수록, 선택된 경로가 올바른 경로와 통합될 가능성이 더 높아진다. 따라서, 체인백 깊이 P가 더 높을수록, 성능은 더 좋아지지만 파이프 라인 및 저장 딜레이는 더 높아진다. 따라서, 체인백 깊이 P는 일반적으로 인코더(100) 구속장 K의 3배 내지 10배로 설정된다. K=9 인코더에 대해, 체인백 깊이 P는 통상적으로 64로 설정된다.
ACS 프로세싱 사이클은 ACS 유닛(150)이 소정수의 수신된 코드 심볼에 대해 새 타깃 상태 메트릭 tm0x, tm1x을 계산하는 기간을 정의한다. 1/2 코드율의 컨벌루션 코드에 대해, 수신된 코드 심볼들의 각 쌍은 메트릭 계산에 1 프로세스 사이클을 필요로 한다. 프로세스 사이클의 길이는 수신된 심볼들의 두 집합들에 대해 모든 인코더 상태에 대한 ACS 버터플라이 동작들을 수행하는데 필요한 클록 사이클들의 수와 동일하다. 예를 들어, 도2에 설명된 바와 같이, 단일 ACS 버터플라이를 갖는 비터비 디코더는 일반적으로 인코더(100)의 모든 256개의 상태에 대한 동작들을 수행하기 위해 수신된 코드 심볼당 128개의 클록 사이클을 필요로 할 것이다. 처리 속도를 향상시키기 위해, 다수의 ACS 버터플라이들을 사용하는 ACS 버터플라이 어레이 구조는 한 프로세싱 사이클 내의 클록 사이클들의 수를 감소시키는데 사용될 수 있다.
그러한 구조의 예는 도3에 설명된 8x1 ACS 버터플라이 어레이(300)이다. 어레이(300)는 병렬로 8개의 병렬 ACS 버터플라이 유닛(155)을 구현함으로써 8배의 처리 속도 향상을 제의한다. 수신된 코드 심볼 집합에 대해, 8x1 ACS 버터플라이 어레이(300)는 8개의 모든 버터플라이 유닛(155)을 사용하여 단일 클록 사이클 내에 소스 상태들 중 16개를 읽고 16개의 해당 타깃 상태 메트릭 tm0x, tm1x을 계산한다. 위에 언급된 바와 같이, ACS 유닛(155)은 소스 상태들 각각에 대한 상태 메트릭 및 4개의 가능한 변화 각각에 대한 브랜치 메트릭들 bmi, j,
Figure 112007027389314-pct00019
을 수신한다. 브랜치 메트릭 bmi, j,
Figure 112007027389314-pct00020
은 수신된 코드 심볼 쌍 및 가정된 심볼 쌍 H0(D), H1(D) 또는
Figure 112007027389314-pct00021
,
Figure 112007027389314-pct00022
의 값에만 의존하고, 이는 둘 사이의 거리 측정치이다. 도3의 소스 및 타깃 상태들의 일부로서 포함된 "X"는 0에서 15까지 카운트함으로써 16개의 클록 사이클을 통해 지나가는 4비트 위치-고정기(즉, X=[X0, X1, X2, X3])를 나타낸다. 따라서, 수신된 코드 심볼들의 2개의 집합에 대해, 8x1 ACS 버터플라이 어레이(300)는 32개의 클록 사이클(즉, 각 수신된 코드 심볼에 대한 16개의 클록 사이클)에서 인코더(100)의 256개의 모든 가능한 상태에 대해 타깃 상태 메트릭 tm0x, tm1x를 계산한다.
8x1 ACS 버터플라이 어레이 구조(300)의 결점은 수신된 코드 심볼들의 각 집합에 대해, 16개의 소스 상태 메트릭을 판독할 필요가 있고 동시에 16개의 클록 사이클 각각에 대해 필요한 브랜치 메트릭을 생성하여야 한다는 것이다. 따라서, 8x1 ACS 버터플라이 어레이(300)는 그러한 동작을 수용하기 위해 상당한 메모리 대역폭을 필요로 한다.
어레이 구조의 또 다른 예는 도4에 설명된 4x2 ACS 버터플라이 어레이(400)이다. 4x2 ACS 버터플라이 어레이(400)는 8x1 ACS 버터플라이 어레이(300)와 동일한 속도 개선을 자랑하지만, 4개의 ACS 버터플라이(155) 유닛의 두 집합을 병렬로 구현함으로써 그러한 개선을 행한다. 버터플라이 어레이(400)는 중간 타깃 상태 메트릭 tm0x, tm1x을 일시적으로 저장함으로써 메모리 대역폭 문제를 완화한다. 예를 들어, 단일 클록 사이클 내에서, 어레이(400)의 제1 단계는 8개의 소스 상태들을 읽고 8개의 해당 타깃 상태 메트릭 tm0x, tm1x을 계산한다. 그러나 버터플라이 어레이(400)는 중간 타깃 상태 메트릭들 tm0x, tm1x을 즉시 저장하지는 않는다. 대신에, 여전히 클록 사이클 내에 있는 동안에, 버터플라이 어레이(400)는 소스 상태들과 같이, 중간 타깃 상태들을 재정렬하여 제2 단계로 공급하고, 이어서 수신된 코드 심볼들의 다음 집합에 대해 8개의 해당 타깃 상태 메트릭 tm0x, tm1x을 계산한다. 따라서, 8x1 ACS 버터플라이 어레이(300)와 마찬가지로, 버터플라이 어레이(400)는 32 클록 사이클 간격에 대해 수신된 코드 심볼들의 2개의 집합에 대한 타깃 상태 메트릭 tm0x, tm1x을 계산할 수 있다.
중간 타깃 상태 메트릭들(즉, 제1 단계 타깃 상태 메트릭들 tm0x, tm1x)이 ACS(150) 상태 메모리로부터 판독되거나 또는 상태 메모리에 기입될 필요가 없기 때문에, 4x2 ACS 버터플라이 어레이(400)는 ACS(150) 상태 메모리 대역폭을 감소시킨다는 명백한 장점을 갖는다. 그보다는, 중간 타깃 상태값들은 다음 단계로 결합되어 흘러가서, 지연을 피하고 대역폭 필요조건을 최소화한다.
그러나 4x2 ACS 버터플라이 어레이(400)는 그 제한이 있다. 예를 들어, 상태 메모리 대역폭을 감소시키는 것의 장점은 어레이(400)가 단일 클록 사이클 내에서 2단계의 ACS(150) 계산들을 공정하게 수행한다는 사실에 있다. 이 주요 경로는 더 높은 클록 속도에 대해 상당히 제한적일 수 있다.
또한, 8x1 ACS 버터플라이 어레이(300) 또는 4x2 ACS 버터플라이 어레이(400) 중 하나는 체인백 동작에 대한 성능 문제가 존재한다. 위에 언급된 바와 같이, 체인백 유닛(160)은 ACS 어레이에 의해 생성된 판정 비트들을 저장하고 저장된 판정 비트들을 통해 체인백하여 디코딩된 판정 비트들을 생성하는 것을 담당한다. 구속장 K=9를 갖는 인코더(예컨대, 인코더(100))에 대해, 디코더의 ACS 어레이는 수신된 코드 심볼들의 집합 각각에 대해 2K-1 또는 256개의 판정 비트(즉, 256개의 가능한 인코더 상태 각각에 대한 1개의 판정 비트)를 생성할 것이고, 체인백 메모리 유닛(160)은 통상적으로 P=64개의 블록의 체인백 경로 메모리 깊이를 포함할 것이다.
2개의 수신 심볼 집합에 대해 타깃 상태 메트릭들을 계산하는 32개 각각의 프로세스 사이클 후에, 체인백 유닛(160)은 도5A에 나타난 바와 같이, 가장 최근의 프로세스 사이클(예컨대, 64개의 경로 메모리 블록 중 가장 우측의 메모리 블록 B0)로 시작한다. 체인백 유닛(160)은 체인백 메모리 블록 B0 내의 256개의 판정 비트로부터 가장 낮은 메트릭 값 R0를 갖는 상태에 해당하는 판정 비트를 확인한다. 이 상태는 도5B에 나타난 바와 같이, 최상의 상태 BS0로 정의되고 8비트 어드레스를 갖는다. 도5에 나타난 바와 같이, 체인백 유닛(160)은 최상의 상태 판정 비트값을 읽고, 그것을 BS0 최하위 비트(즉, bs0) 쪽으로 좌측 시프트 함으로써 그 값을 BS0 어드레스에 삽입한다. 도5B는 BS0 어드레스의 다른 비트들(즉, bs6, bs5, bs4, bs3, bs2, bs1)의 값들 또한 좌측 시프트되어, BS0의 최상위 비트(즉, bs7)의 손실 및 새로운 어드레스 BS1의 표시를 야기한다. 도5A에 설명된 바와 같이, BS1은 체인백 메모리 블록 B1의 최상 상태 값 R1의 어드레스이다. 체인백 유닛(160)은 BS1 어드레스에 해당하는 판정 비트값을 읽고 그 값을 BS1 어드레스로 좌측 시프트하여 다음 어드레스 BS2를 생성하고, 이것은 체인백 메모리 블록 B2의 최상의 상태에 해당한다.
이 판독 및 좌측 시프트 동작은 모든 체인백 메모리 블록들(즉, P=64블록)이 처리될 때까지 반복된다. 일반적으로, 체인백 동작은 정해진 체인백 길이 P와 같은 회수의 판독을 수행하여, 이 경우에는 원하는 경로를 추적하고 디코딩된 판정 비트들을 발생시키기 위해 예컨대 64회의 판독이 수행된다. 그러나 이러한 많은 판독은 디코딩 프로세스의 효율 및 성능을 타협할 수 있다.
그러므로 비터비 알고리즘 구현에서 고속 ACS 버터플라이 동작들을 효율적으로 수행할 수 있는 시스템 및 방법이 필요하다.
본 발명의 원리에 따른 시스템 및 방법들은 비터비 알고리즘의 구현에 있어서 고속 ACS 버터플라이 동작들을 수행하는 시스템 및 방법을 제공함으로써 위에 언급된 필요성을 해결한다.
본 명세서에 구체화 및 설명되는 본 발명의 원리에 따른 시스템 및 방법은 다수의 소스 상태 메트릭을 저장하기 위한 제1 저장 엘리먼트를 포함한다. 제1 저장 엘리먼트는 짝수 및 홀수 클록 사이클을 기초로 제1 및 제2 동작 경로 중에 선택할 수 있는 멀티플렉서에 연결된다. 멀티플렉서는 ACS 메커니즘에 연결되고, 이것은 소스 상태 메트릭 각각에 대한 타깃 상태 메트릭들을 계산한다. ACS 메커니즘 및 멀티플렉서에 연결된 제2 저장 엘리먼트는 타깃 상태 메트릭들을 일시적으로 저장하는데 사용되는 반면에, 제3 저장 엘리먼트는 가장 낮은 타깃 상태 메트릭 값이 되는 소스 상태에 해당하는 소정의 로직 비트를 저장한다. 따라서, 멀티플렉서는 짝수 클록 사이클 동안에 제1 동작 경로를 선택하고 제1 저장 엘리먼트로부터의 소스 상태 메트릭들을 ACS 메커니즘에 공급하여 타깃 상태 메트릭들을 발생시킨다. 짝수 클록 사이클 동안에, 멀티플렉서는 제2 동작 경로를 선택하여 제2 저장 엘리먼트에 액세스하고 중간 소스 상태 메트릭으로서 이전에 계산된 타깃 상태 메트릭들을 사용하여, ACS 메커니즘이 중간 소스 상태 메트릭을 기초로 타깃 상태 메트릭들을 발생시킨다.
도1A는 K=9, 코딩율=1/2인 컨벌루션 인코더를 나타내는 블록 레벨 다이어그램.
도1B는 ACS 및 체인백 유닛을 설명하는 시스템 레벨 블록도.
도2는 ACS 버터플라이 동작을 설명하는 변화 다이어그램.
도3은 8x1 ACS 버터플라이 어레이를 설명하는 변화 다이어그램.
도4는 4x2 ACS 버터플라이 어레이를 설명하는 변화 다이어그램.
도5A, 5B는 체인백 동작을 설명하는 기능 블록도.
도6A, 6B는 본 발명의 실시예를 설명하는 다이어그램.
본 발명에 대한 다음의 설명은 본 발명에 따른 바람직한 실시예들을 나타내는 첨부된 도면들을 참조한다. 다른 실시예들도 가능하고, 본 발명의 범위를 벗어나지 않는 실시예들에 대한 변형도 가능하다. 따라서, 다음 상세한 설명은 본 발명을 한정하도록 의도되지 않는다. 본 발명의 범위는 첨부된 청구범위에 의해 정의된다.
당업자에게는 이하에 정의된 본 발명이 다양한 소프트웨어, 펌웨어 및 하드웨어로 구현될 수 있음이 명백할 것이다. 실제적인 소프트웨어 코드 또는 본 발명을 구현하는데 사용되는 특성화된 콘트롤 하드웨어는 본 발명의 범위를 제한하지 않는다. 따라서, 본 발명의 동작은 실제 소프트웨어 코드 또는 특성화된 하드웨어 컴포넌트들을 참조하지 않고 설명될 것이며, 당업자라면 다음의 설명을 기초로 본 발명의 바람직한 실시예를 구현하기 위한 소프트웨어 및 콘트롤 하드웨어를 설계할 수 있을 것임이 이해될 것이다.
도6A, 6B는 본 발명의 실시예를 나타낸다. 이 실시예는 8개의 병렬 ACS 버터플라이(155) 유닛을 포함하여 8배의 처리 속도 개선을 제공하는 8x1 ACS 버터플라이 어레이(600)를 이용한다. 그러한 개선을 이루기 위한 다른 시도와는 달리, 버터플라이 어레이(600)는 서로 다른 클록 사이클들에 대해 동작하여 메모리 대역폭 필요 조건을 감소시키는 동시에, 클록 사이클당 계산 수를 제한한다.
도6A를 참조하면, 버터플라이 어레이(600)는 짝수 클록 사이클 동안, 모두 8개의 버터플라이(155) 유닛을 사용하여 4비트 카운터 X에 의해 식별되는 새로운 16개의 소스 상태를 판독한다. 버터플라이 어레이(600)는 현재의 트렐리스 레벨에 대해 16개의 해당 타깃 상태 메트릭 tm0x, tm1x을 계산한다. 짝수 클록 사이클 후에(즉, 홀수 클록 사이클 동안에), 버터플라이 어레이(600)는 다음 트렐리스 레벨에 대한 홀수 소스 상태로서 짝수 사이클 타깃 상태를 이용한다. 그에 따라, 버터플라이 어레이(600)는 홀수 소스 상태 메트릭 값들 smx0, smx1로 짝수 사이클 타깃 상태 메트릭 값들 tm0x, tm1x을 사용한다. 그리고 나서, 버터플라이 어레이(600)는 해당 트렐리스 레벨에 대한 메트릭 값들 smx0, smx1에 따라 홀수 타깃 상태 메트릭 tm0x, tm1x을 계산한다.
따라서, 도6A에 설명된 바와 같이, 8x1 변형된 ACS 버터플라이 어레이(600)는 K=9 인코더에 의해 생성된 수신된 심볼들의 2개 집합을 완전히 처리하기 위해 32 클록 사이클들을 필요로 한다. 짝수 클록 사이클 동안, 버터플라이 어레이(600)는 증가한 4비트 카운터 X에 의해 식별된 새로운 16개의 소스 상태들을 판독하고 수신된 심볼들의 첫 번째 집합에 대해 16개의 해당 타깃 상태 메트릭들 tm0x, tm1x을 계산한다. 홀수 클록 사이클 동안, 버터플라이 어레이(600)는 새로운 소스 상태들로서 짝수 사이클 타깃 상태들을 사용하고, 수신된 심볼들의 제2 집합에 대해 홀수 타깃 상태 메트릭들 tm0x, tm1x을 계산한다. 그에 따라, 버터플라이 어레이(600)는 클록 사이클당 한 레벨의 ACS만을 수행함으로써, 4x2 버터플라이 어레이(400)의 단일 클록 사이클 다중-레벨 ACS 계산 문제들을 극복한다.
도6B는 도6A에 도시된 8x1 변형된 ACS 버터플라이 어레이(600)를 지원하기 위한 비터비 디코더 회로(650)를 나타낸다. 모든 상태들에 대한 소스 상태 메트릭들 smx0, smx1은 상태 RAM(145)에 저장된다. 설명에 의해, 비터비 디코더 회로(650)의 동작은 짝수 클록 사이클 동안 상태 RAM(145)으로부터의 판독을 개시함으로써 설명될 것이다. 당업자들은 이 실시예가 홀수 클록 사이클 동안 상태 RAM(145)으로부터의 판독을 개시함으로써 똑같이 설명될 수 있음을 이해할 것이다. 마찬가지로, 모든 판독 동작들은 홀수 사이클 동안 수행되고, 모든 쓰기 동작들은 짝수 사이클 동안 수행될 수 있고, 또는 그 반대일 수도 있다.
그에 따라, 짝수 클록 사이클 동안, 멀티플렉서 MUX(670)는 수신된 코드 심볼들의 제1 집합에 해당하는 RAM(145)으로부터의 16개 순차 상태에 대해 소스 상태 메트릭 정보를 선택하도록 구성된다. 소스 상태 정보는 ACS 유닛(150)에 직접 공급되고, ACS 유닛(150)은 8x1 ACS 버터플라이 어레이(600)를 포함한다. 버터플라이 어레이(600)는 해당하는 16개의 타깃 상태 메트릭 tm0x, tm1x을 계산하고, 이것은 상태 RAM(145) 및 MUX(670)에 피드백된다. 그리고 나서, 계산된 타깃 상태 정보는 타깃 상태 정보를 일시적으로 저장하기 위한 레지스터(680)에 공급된다. 레지스터(680)에 타깃 상태 정보를 일시적으로 저장함으로써, 버터플라이 어레이(600)는 상태 정보를 메모리에 저장하는 것을 피하고, 그에 따라 8x1 ACS 버터플라이 어레이(300)의 메모리 대역폭 문제를 개선하게 된다.
홀수 클록 사이클 동안, 멀티플렉서 MUX(670)는 이전 사이클 클록에서 계산된 타깃 상태 메트릭 정보를 선택하고, 이것은 레지스터(680)에 래치된다. 그리고 나서, 이 타깃 상태 메트릭 정보는 새로운 소스 상태 메트릭들 smx0, smx1로서 8x1 ACS 버터플라이 어레이(600)에 의해 사용된다. 버터플라이 어레이(600)는 이어서 소스 상태 메트릭 정보를 처리하여 수신된 코드 심볼들의 제2 집합에 해당하는 타깃 메트릭 정보를 발생시킨다. 그리고 나서, 타깃 메트릭 정보는 상태 메모리 RAM(145)에 저장되고, 이것은 다음 반복을 위한 소스 상태 메트릭으로 사용될 것이다. 수신된 코드 심볼들의 제1 및 제2 집합에 대해, 이 프로세스는 32 클록 사이클 동안 반복되어 수신된 심볼들의 두 집합 각각에 대한 256개의 판정 비트를 발생시킨다. 32 클록 사이클 후에, 비터비 디코더 회로(650)는 수신된 코드 심볼들의 다음 2개의 집합으로 전체 프로세스를 시작한다.
비터비 디코더 회로(650)는 또한 디코딩된 판정 비트들을 발생시키는데 필요한 판독 회수를 줄임으로써 체인백 동작의 성능을 개선한다. 위에 언급된 바와 같이, 체인백 유닛(160)은 ACS 어레이에 의해 생성된 판정 비트들의 저장을 담당한다. 또한, 2 클록 사이클(즉, 짝수 및 홀수 클록 사이클) 후에, 8x1 변형된 ACS 버터플라이 어레이(600)는 32개의 판정 비트를 발생시킨다. 비터비 디코더 회로(650)는 이러한 32개의 판정 비트가 단일 32비트 메모리 워드에 저장될 수 있도록 하고, 따라서 짝수 및 홀수 클록 사이클 동안 생성된 판정 비트들은 동일한 메모리 워드에 저장된다.
그러므로 체인백 동작에 관해 위에 언급된 바와 같이, 제시간에 뒤로 체인하기 위한 시작점을 설정하기 위해, 최상의 상태는 우선 마지막 처리 사이클로부터 가장 낮은 메트릭(즉, 최상의 상태 판정 비트값)을 갖는 상태를 식별하는데 사용된다. 메모리 워드 당 32개의 비트가 존재하므로, 프로세스 사이클당 (2개의 수신 코드 심볼 집합에 기인한) 16개의 워드가 존재하고, 32비트 메모리 워드의 각각은 고유의 8비트 어드레스를 갖는다. 한 실시예는 어느 메모리 워드를 읽을 것인가를 선택하기 위해 최상의 어드레스 중 4비트를 사용하는, 반면에 최상의 어드레스의 다른 4비트는 32비트 메모리 워드의 16비트 중 어느 비트를 읽을 것인가를 결정한다. 특히, 최상의 상태 BS0이 8비트 어드레스: (bs7, bs6, bs5, bs4, bs3, bs2, bs1, bs0)를 갖는 경우에, 상기 실시예는 메모리 블록 B0 내의 특정 메모리 워드를 선택하기 위해 비트들:(bs5, bs4, bs3, bs2)을 선택하고, 최상의 상태 판정 비트 R0을 선택하기 위해 비트들:(bs1, bs6, bs5, bs0)에 의존한다. 최상의 상태 판정 비트 R0를 BS0 LSB:(bs6, bs5, bs4, bs3, bs2, bs1, bs0, R0)로 좌측 시프트함으로써 새로운 최상의 상태 어드레스 BS1가 형성된다.
ACS 계산들이 수신된 심볼들의 두 집합들에 대해 동작하기 때문에, 방금 판독된 판정 비트에 대한 타깃 상태에 이르는 소스 상태들은, 동일한 32비트 메모리 워드 내에 저장된 그들의 판정 비트들을 갖는다. 따라서, 본 실시예는 32비트 메모리 워드 중 나머지 반으로부터 다음의 최상의 상태 판정 비트 R1을 선택하기 위해 비트들(bs6, bs1, bs0, R0)을 선택한다. 그러므로 최상의 상태 판정 비트는 32비트 메모리 워드의 비트들 중 반으로부터 선택되고, 여기서 그 선택된 비트는 32비트 메모리 워드의 나머지 반의 어느 판정 비트가 다음 최상의 상태 판정 비트인지를 결정하는 것을 돕는다. 그렇게 함으로써, 원하는 경로를 올바르게 체인백하고 디코딩된 판정 비트를 발생시키는데 필요한 판독 회수는 팩터 2만큼 감소한다. 따라서, P=64 메모리 블록들의 경로 메모리 깊이를 갖는 체인백 유닛(160)에 대해서는, 32회의 판독만이 요구된다.
본 발명에 대해 위의 실시예들이 제공되지만, 본 발명을 제한하는 것으로 의도되지는 않는다. 본 발명에 대한 다양한 변형들이 가능하다. 예를 들어, 여기의 개시된 실시예들의 구조는 16x1 어레이 또는 32x1 어레이까지 쉽게 확장될 수 있고, 여기서 클록 당 32 또는 64개의 상태가 발생할 수 있다. 또한, 수신된 심볼들의 두 집합들에 대해 동작하는 대신에, 실시예들은 수신된 심볼들의 수개의 집합들에 대해 동작하도록 사용될 수 있다. 따라서, 본 발명의 범위는 청구 범위 및 그 균등 범위에 의해 정의된다.

Claims (21)

  1. 비터비 알고리즘 구현을 위한 ACS(add-compact-select) 버터플라이 동작을 수행하는 방법으로서,
    짝수 클록 사이클 동안, 제1 수신 심볼 집합에 해당하는 제1 저장 엘리먼트로부터 다수의 소스 상태 메트릭을 판독하는 단계;
    상기 소스 상태 메트릭들 각각에 대한 타깃 상태 메트릭을 계산하는 단계;
    상기 타깃 상태 메트릭들을 제2 저장 엘리먼트에 일시적으로 저장하는 단계;
    상기 타깃 상태 메트릭 중 어느 것이 가장 낮은 값을 갖는지 결정하는 단계;
    상기 가장 낮은 값의 타깃 상태 메트릭에 해당하는 소정의 로직 비트를 제3 저장 엘리먼트에 저장하는 단계;
    홀수 클록 사이클 동안, 상기 제2 저장 엘리먼트로부터 상기 타깃 상태 메트릭들을 판독하고, 상기 판독된 타깃 상태 메트릭들을 제2 수신 심볼 집합에 해당하는 다수의 중간 소스 상태 메트릭으로서 사용하는 단계;
    상기 중간 소스 상태 메트릭들 각각에 대한 중간 타깃 상태 메트릭을 계산하는 단계;
    상기 중간 타깃 상태 메트릭 중 어느 것이 가장 낮은 값을 갖는지를 결정하는 단계; 및
    상기 가장 낮은 값의 중간 타깃 상태 메트릭에 해당하는 소정의 로직 비트를 상기 제3 저장 엘리먼트에 저장하는 단계를 포함하는, ACS 버터플라이 동작 수행 방법.
  2. 제1항에 있어서, 상기 제1 및 제2 수신 심볼 집합은 구속장(constraint length) K를 사용하여 인코딩되는 ACS 버터플라이 동작 수행 방법.
  3. 제2항에 있어서, 상기 ACS 버터플라이 동작은 상기 제1 및 제2 수신 심볼 집합 각각에 대해 각각 2K-1개의 타깃 상태가 방문될 때까지 수행되는 ACS 버터플라이 동작 수행 방법.
  4. 제3항에 있어서, 상기 ACS 버터플라이 동작은 8x1 ACS 버터플라이 어레이에 의해 수행되는 ACS 버터플라이 동작 수행 방법.
  5. 제4항에 있어서, 상기 다수의 소스 상태 메트릭은 16개의 연속 소스 상태로 이루어진 집합에 대한 메트릭들로 구성되고, 상기 16개의 연속 소스 상태의 집합은 짝수 클록 사이클들을 증가시키는 동안 순차적으로 선택되는 ACS 버터플라이 동작 수행 방법.
  6. 제5항에 있어서, 상기 타깃 상태 메트릭들을 계산하는 단계는,
    상기 소스 상태 메트릭들을 2개의 가능한 변화 각각에 해당하는 브랜치 메트릭에 추가하는 단계;
    상기 소스 상태 메트릭 및 브랜치 메트릭들의 합 각각을 비교하는 단계; 및
    가장 작은 합을 선택하여 그것을 타깃 상태 메트릭으로 지정하는 단계를 포함하는 ACS 버터플라이 동작 수행 방법.
  7. 제6항에 있어서, 상기 중간 타깃 상태 메트릭들을 계산하는 단계는,
    상기 중간 소스 상태 메트릭들을 2개의 가능한 변화 각각에 해당하는 브랜치 메트릭에 추가하는 단계;
    상기 중간 소스 상태 메트릭들 및 브랜치 메트릭들의 합 각각을 비교하는 단계; 및
    가장 작은 합을 선택하여 그것을 중간 타깃 상태 메트릭으로 지정하는 단계를 포함하는 ACS 버터플라이 동작 수행 방법.
  8. 제7항에 있어서, 상기 ACS 버터플라이 동작은 컨벌루션 인코딩된 데이터를 디코딩하는데 사용되는 ACS 버터플라이 동작 수행 방법.
  9. 제8항에 있어서, 상기 제3 저장 엘리먼트는 다수의 메모리 블록을 포함하는 체인백 메모리 유닛에 제공되고, 상기 메모리 블록들 각각은 상기 짝수 및 홀수 클록 사이클 각각에 대해 소정의 로직 비트를 포함하는 ACS 버터플라이 동작 수행 방법.
  10. 제8항에 있어서, 다수의 디코딩된 비트값을 발생시키기 위한 체인백 동작을 더 포함하는 ACS 버터플라이 동작 수행 방법.
  11. 제10항에 있어서, 상기 체인백 동작은,
    상기 체인백 메모리 유닛의 상기 메모리 블록들 중 가장 최근의 블록들에 대해, 가장 낮은 값을 갖는 상기 소정의 로직 비트를 식별하는 단계;
    상기 가장 낮은 값의 로직 비트를 특정 어드레스와 관련시키는 단계;
    상기 소정의 로직 비트를 판독하는 단계; 및
    상기 가장 낮은 값의 로직 비트를 상기 특정 어드레스의 최하위 비트로 전환하고, 상기 특정 어드레스 내의 모든 값들을 1비트씩 좌측으로 시프트하여 상기 체인백 메모리 유닛 내의 다음 메모리 블록에 해당하는 다음 특정 어드레스를 확인하는 단계를 포함하는 ACS 버터플라이 동작 수행 방법.
  12. 비터비 알고리즘 구현을 위한 ACS 버터플라이 동작을 수행하기 위한 시스템으로서,
    다수의 소스 상태 메트릭을 저장하기 위한 제1 저장 엘리먼트;
    짝수 클록 사이클 동안 제1 동작 경로를 선택하고 홀수 클록 사이클 동안 제2 동작 경로를 선택하기 위해 상기 제1 저장 엘리먼트에 연결된 멀티플렉서;
    타깃 상태 메트릭들을 일시적으로 저장하기 위해 상기 멀티플렉서에 연결된 제2 저장 엘리먼트;
    상기 소스 상태 메트릭들 각각에 대한 타깃 상태 메트릭을 계산하기 위해 상기 제2 저장 엘리먼트 및 상기 멀티플렉서에 연결된 ACS 메커니즘; 및
    가장 낮은 값을 갖는 타깃 상태 메트릭에 해당하는 소정의 로직 비트를 저장하기 위한 제3 저장 엘리먼트를 포함하고,
    상기 멀티플렉서는 짝수 클록 사이클 동안 제1 동작 경로를 선택하고, 상기 제1 저장 엘리먼트로부터의 상기 소스 상태 메트릭들을 상기 ACS 메커니즘에 공급하여, 제1 수신 심볼 집합에 해당하는 타깃 상태 메트릭들을 생성하고,
    상기 멀티플렉서는 홀수 클록 사이클 동안 제2 동작 경로를 선택하여 상기 제2 저장 엘리먼트로부터 타깃 상태 메트릭들을 판독하고, 상기 판독된 타깃 상태 메트릭들을 제2 수신 심볼 집합에 해당하는 중간 소스 상태 메트릭들로서 사용하여 상기 중간 소스 상태 메트릭들을 기초로 상기 ACS 메커니즘이 중간 타깃 상태 메트릭들을 발생하도록 하는, ACS 버터플라이 동작 수행 시스템.
  13. 제12항에 있어서, 상기 제1 및 제2 수신 심볼 집합은 구속장 K를 사용하여 인코딩되는 ACS 버터플라이 동작 수행 시스템.
  14. 제13항에 있어서, 상기 ACS 버터플라이 동작은 상기 제1 및 제2 수신 심볼 집합 각각에 대해 각각 2K-1개의 타깃 상태가 방문될 때까지 수행되는 ACS 버터플라이 동작 수행 시스템.
  15. 제14항에 있어서, 상기 ACS 버터플라이 동작은 8x1 ACS 버터플라이 어레이에 의해 수행되는 ACS 버터플라이 동작 수행 시스템.
  16. 제15항에 있어서, 상기 다수의 소스 상태 메트릭은 16개의 연속 소스 상태로 이루어진 집합에 대한 메트릭들로 구성되고, 상기 16개의 연속 소스 상태의 집합은 짝수 클록 사이클들을 증가시키는 동안 순차적으로 선택되는 ACS 버터플라이 동작 수행 시스템.
  17. 제12항에 있어서, 상기 ACS 메커니즘은 상기 소스 상태 메트릭들을 2개의 가능한 변화 각각에 해당하는 브랜치 메트릭에 추가하고, 상기 소스 상태 메트릭들 및 브랜치 메트릭들의 합 각각을 비교하고, 가장 작은 합을 선택하여 그것을 타깃 상태 메트릭으로 지정함으로써 상기 ACS 버터플라이 동작을 수행하는 ACS 버터플라이 동작 수행 시스템.
  18. 제17항에 있어서, 상기 ACS 버터플라이 동작은 컨벌루션 인코딩된 데이터를 디코딩하는데 사용되는 ACS 버터플라이 동작 수행 시스템.
  19. 제18항에 있어서, 상기 제3 저장 엘리먼트는 다수의 메모리 블록을 포함하는 체인백 메모리 유닛에 제공되고, 상기 메모리 블록들 각각은 상기 짝수 및 홀수 클록 사이클들 각각에 대해 상기 소정의 로직 비트를 포함하는 ACS 버터플라이 동작 수행 시스템.
  20. 제19항에 있어서, 상기 체인백 메모리 유닛은 다수의 디코딩된 비트값을 발생시키는 ACS 버터플라이 동작 수행 시스템.
  21. 제20항에 있어서, 상기 체인백 메모리 유닛은 상기 메모리 블록들 중 가장 최근의 블록에 대해 가장 낮은 값을 갖는 상기 소정의 로직 비트를 식별하고, 상기 가장 낮은 값의 로직 비트를 특정 어드레스와 관련시키며, 상기 소정의 로직 비트를 판독하고, 상기 가장 낮은 값의 로직 비트를 상기 특정 어드레스의 최하위 비트로 전환하고, 상기 특정 어드레스 내의 모든 값들을 1 비트씩 좌측으로 시프트하여 상기 체인백 메모리 유닛 내의 다음 메모리 블록에 해당하는 다음 특정 어드레스를 확인하는 ACS 버터플라이 동작 수행 시스템.
KR1020027005116A 1999-10-21 2000-10-23 비터비 디코더 용 고속 acs 유닛 KR100779782B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/422,920 US6333954B1 (en) 1999-10-21 1999-10-21 High-speed ACS for Viterbi decoder implementations
US09/422,920 1999-10-21

Publications (2)

Publication Number Publication Date
KR20020048975A KR20020048975A (ko) 2002-06-24
KR100779782B1 true KR100779782B1 (ko) 2007-11-27

Family

ID=23676955

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027005116A KR100779782B1 (ko) 1999-10-21 2000-10-23 비터비 디코더 용 고속 acs 유닛

Country Status (13)

Country Link
US (1) US6333954B1 (ko)
EP (1) EP1230737A1 (ko)
JP (1) JP2003512756A (ko)
KR (1) KR100779782B1 (ko)
CN (1) CN1168224C (ko)
AU (1) AU1228501A (ko)
BR (1) BR0014899A (ko)
CA (1) CA2387766A1 (ko)
HK (1) HK1048204A1 (ko)
IL (2) IL149248A0 (ko)
MX (1) MXPA02003937A (ko)
RU (1) RU2246751C2 (ko)
WO (1) WO2001029974A1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3501725B2 (ja) 2000-05-12 2004-03-02 日本電気株式会社 ビタビ復号器
EP1158683A1 (de) * 2000-05-24 2001-11-28 Infineon Technologies AG Vorrichtung und Verfahren zum Durchführen eines Viterbi-Algorithmus
US7006634B1 (en) * 2000-09-28 2006-02-28 Cisco Technology, Inc. Hardware-based encryption/decryption employing dual ported key storage
US6873707B1 (en) * 2000-09-28 2005-03-29 Cisco Technology, Inc. Hardware-based encryption/decryption employing cycle stealing
US20020198681A1 (en) * 2001-06-13 2002-12-26 Kouritzin Michael A. Flexible efficient branching particle tracking algorithms
KR100437697B1 (ko) * 2001-07-19 2004-06-26 스프레드텔레콤(주) 다수준 격자부호변조방식의 복호 방법 및 장치
US6910177B2 (en) * 2001-12-21 2005-06-21 Texas Instruments Incorporated Viterbi decoder using restructured trellis
FI20021656A0 (fi) * 2002-09-16 2002-09-16 Nokia Corp Menetelmä ja järjestely dekoodauksen suorittamiseksi
JP2005045727A (ja) * 2003-07-25 2005-02-17 Matsushita Electric Ind Co Ltd ビタビ復号器
US20050138535A1 (en) * 2003-12-02 2005-06-23 Sivagnanam Parthasarathy Method and system for branch metric calculation in a viterbi decoder
US8290095B2 (en) * 2006-03-23 2012-10-16 Qualcomm Incorporated Viterbi pack instruction
US20070266303A1 (en) * 2006-04-27 2007-11-15 Qualcomm Incorporated Viterbi decoding apparatus and techniques
US7861147B2 (en) * 2006-12-08 2010-12-28 Via Technologies, Inc. ACS unit and method thereof
US8185810B1 (en) * 2007-04-13 2012-05-22 Link—A—Media Devices Corporation Low power viterbi trace back architecture
US8943392B2 (en) * 2012-11-06 2015-01-27 Texas Instruments Incorporated Viterbi butterfly operations
CN103905068B (zh) * 2012-12-26 2018-06-26 中国移动通信集团公司 一种维特比译码方法及系统
RU2608872C1 (ru) * 2015-09-24 2017-01-25 Валерий Владимирович Золотарев Способ кодирования и декодирования блокового кода с использованием алгоритма Витерби
CN114924615B (zh) * 2022-04-22 2024-02-20 龙芯中科技术股份有限公司 内存时钟调节方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0720303A2 (en) 1994-12-29 1996-07-03 AT&T Corp. In-place present state/next state registers
WO1998048518A1 (en) 1997-04-22 1998-10-29 Zsp Corporation An apparatus and method for computing the result of a viterbi equation in a single cycle
US5928378A (en) * 1996-08-23 1999-07-27 Daewoo Electronics Co., Ltd. Add-compare-select processor in Viterbi decoder
US5940416A (en) * 1996-06-28 1999-08-17 Hitachi Ltd. Digital signal decoding apparatus and a decoding method used therein

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6097769A (en) * 1998-02-10 2000-08-01 Lucent Technologies Inc. Viterbi detector using path memory controlled by best state information
US6148431A (en) * 1998-03-26 2000-11-14 Lucent Technologies Inc. Add compare select circuit and method implementing a viterbi algorithm

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0720303A2 (en) 1994-12-29 1996-07-03 AT&T Corp. In-place present state/next state registers
US5940416A (en) * 1996-06-28 1999-08-17 Hitachi Ltd. Digital signal decoding apparatus and a decoding method used therein
US5928378A (en) * 1996-08-23 1999-07-27 Daewoo Electronics Co., Ltd. Add-compare-select processor in Viterbi decoder
WO1998048518A1 (en) 1997-04-22 1998-10-29 Zsp Corporation An apparatus and method for computing the result of a viterbi equation in a single cycle

Also Published As

Publication number Publication date
KR20020048975A (ko) 2002-06-24
JP2003512756A (ja) 2003-04-02
RU2246751C2 (ru) 2005-02-20
WO2001029974A1 (en) 2001-04-26
CN1379931A (zh) 2002-11-13
EP1230737A1 (en) 2002-08-14
MXPA02003937A (es) 2002-12-13
IL149248A (en) 2006-04-10
US6333954B1 (en) 2001-12-25
HK1048204A1 (zh) 2003-03-21
CN1168224C (zh) 2004-09-22
BR0014899A (pt) 2002-10-01
AU1228501A (en) 2001-04-30
CA2387766A1 (en) 2001-04-26
IL149248A0 (en) 2002-11-10

Similar Documents

Publication Publication Date Title
KR100779782B1 (ko) 비터비 디코더 용 고속 acs 유닛
US4583078A (en) Serial Viterbi decoder
US5432803A (en) Maximum likelihood convolutional decoder
US4606027A (en) Error correction apparatus using a Viterbi decoder
US5537444A (en) Extended list output and soft symbol output viterbi algorithms
US5802116A (en) Soft decision Viterbi decoding with large constraint lengths
US8578254B1 (en) Modified trace-back using soft output Viterbi algorithm (SOVA)
KR19990078237A (ko) 비터비 알고리즘을 구현하는 가산 비교 선택 회로 및 방법
KR100346529B1 (ko) 디지탈신호프로세서
US7277507B2 (en) Viterbi decoder
KR100785671B1 (ko) 고속 acs 비터비 디코더 구현을 위하여 메모리내의상태 메트릭들을 효과적으로 판독하고 저장하는 방법 및장치
US7035356B1 (en) Efficient method for traceback decoding of trellis (Viterbi) codes
JP4580927B2 (ja) ビタビ復号装置、およびビタビ復号方法
US20070201586A1 (en) Multi-rate viterbi decoder
EP1024603A2 (en) Method and apparatus to increase the speed of Viterbi decoding
EP1542370A1 (en) Method and system for branch label calculation in a Viterbi decoder
JP3753822B2 (ja) ビタビ復号方法および装置
US6842490B1 (en) Viterbi decoder with adaptive traceback
KR100491016B1 (ko) 역방향 상태 천이의 연속적 제어에 의한 역추적 비터비복호기 및 그 방법
US7260154B1 (en) Method and apparatus for implementing a multiple constraint length Viterbi decoder
JP3235333B2 (ja) ビタビ復号方法およびビタビ復号化装置
KR0169680B1 (ko) 비터비 복호기
JP3720251B2 (ja) ヴィタビ復号器
JP2002076924A (ja) ビタビ復号器
JP2002198827A (ja) 最尤復号方法及び最尤復号器

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
FPAY Annual fee payment

Payment date: 20121030

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20131030

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20141030

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150930

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20161028

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 13