KR100410995B1 - 즉시역추적 알고리즘을 이용한 비터비 복호기용 생존경로메모리 관리 방법 및 그 장치 - Google Patents

즉시역추적 알고리즘을 이용한 비터비 복호기용 생존경로메모리 관리 방법 및 그 장치 Download PDF

Info

Publication number
KR100410995B1
KR100410995B1 KR10-2001-0057214A KR20010057214A KR100410995B1 KR 100410995 B1 KR100410995 B1 KR 100410995B1 KR 20010057214 A KR20010057214 A KR 20010057214A KR 100410995 B1 KR100410995 B1 KR 100410995B1
Authority
KR
South Korea
Prior art keywords
state
node number
memory
survival path
path
Prior art date
Application number
KR10-2001-0057214A
Other languages
English (en)
Other versions
KR20030024185A (ko
Inventor
김범진
김진율
안재민
정기주
Original Assignee
(주) 엠엠씨 테크놀로지
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주) 엠엠씨 테크놀로지 filed Critical (주) 엠엠씨 테크놀로지
Priority to KR10-2001-0057214A priority Critical patent/KR100410995B1/ko
Publication of KR20030024185A publication Critical patent/KR20030024185A/ko
Application granted granted Critical
Publication of KR100410995B1 publication Critical patent/KR100410995B1/ko

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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
    • 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

비터비 복호기용 생존경로메모리 관리방법과 이를 위한 장치를 개시한다. 이 생존경로메모리 관리방법과 장치는 복수개의 시작노드번호결정회로를 채용하면서 즉시 역추적(Immediate Traceback) 기법을 사용하여 필요한 생존경로메모리의 크기와 처리지연시간을 줄일 수 있다. 또한, 동작 속도가 똑같은 1개의 읽기 포인터와 1개의 쓰기 포인터만을 사용하므로 처리 속도가 높은 경우에도 기존 방법에 비해 용이하게 생존경로 메모리를 구현할 수 있다. 따라서, 고속의 처리 속도가 필요한 비터비 복호기 구현에 기존 방법들 보다 더 우수한 성능을 보인다.

Description

즉시역추적 알고리즘을 이용한 비터비 복호기용 생존경로 메모리 관리 방법 및 그 장치 {survivor path memory management method using immediate traceback algorithm for Viterbi decoder and apparatus for the same}
본 발명은 비터비 복호기에 관한 것으로서, 보다 상세하게는 비터비 복호기를 위한 생존경로 메모리 관리방법과 이를 위한 장치에 관한 것이다.
1. 종래의 일반적인 비터비 복호기의 구성
비터비 복호기는 통신 채널에서 발생하는 신호왜곡과 잡음 등으로 인해 생기는 데이터 오류를 정정하여 신뢰성 있는 복호를 하기 위하여 디지털 통신 시스템에 많이 채택되고 있으며 효율적인 구현에 관한 많은 연구가 진행되어 왔다.
비터비 알고리즘은 최우복호법(maximum likelihood decoding)을 수행하고 트렐리스도(trellis diagram)를 사용하여 필요한 계산량을 줄이는 알고리즘이다. 이 알고리즘은, 임의의 수신코드열에 가장 가까운 코드열을 추정하기 위하여, 각 상태(state)에 입력되는 경로들과 수신 신호와의 유사성 비교를 통해서 하나의 상태에 하나의 생존 경로(survivor path)만을 존재하게 한다.
비터비 복호기는 도면 1에서 보인 바와 같이 크게 분기메트릭 연산부(BMC: branch metric calculation)(10), 덧셈비교선택부(ACS: add-compare-select)(12), 상태메트릭 메모리(SMM: state metric memory)(14), 생존경로 메모리(SPM: survivor path memory)(16), 역추적(TB: traceback) 제어부(18), 그리고 출력부(20)로 이루어져있다.
수신 데이터가 분기메트릭연산부(10)에 인가되면 분기메트릭연산부(10)는 부호기(encoder)(비도시)에서 발생될 수 있는 각 부호 심볼과 수신데이터간의 근사도즉, 각 상태(state)를 지나는 경로와 수신 심볼 사이의 거리를 계산하여 분기메트릭(branch metric)(BM(t))을 생성한다. 생성된 분기메트릭은 덧셈비교선택부(12)로 제공된다. 분기메트릭의 거리정보는 신호 판별의 기준이 되는데, 분기메트릭은 경판정(hard-decision) 복호의 경우에는 해밍 거리(Hamming distance)가 되고, 연판정(soft-decision)의 경우에는 유클리드 거리(Euclidean distance)가 된다.
덧셈비교선택부(12)는 분기메트릭과 상태메트릭 메모리(14)에 저장되어 있는 각 경로의 상태메트릭(state metric)을 일정주기마다 입력으로 받아 확률이 더 높은 경로 즉, 각 상태에 입력되는 경로 중에서 최소 경로 메트릭을 갖는 경로를 선택한다. 구체적으로, 덧셈비교선택부(12)는 상태메트릭 메모리(14)로부터 제공된 이전경로 메트릭(PM(t-1))에다가 분기메트릭연산부(10)로부터 제공된 브랜치 메트릭(BM(t))을 가산하여 다수개의 후보 경로를 설정하고, 즉 이전경로 메트릭에 현재 상태에서 머지(merge)된 다수개의 분기메트릭을 축척시키고, 이들 다수개의 후보 경로 메트릭값을 비교하여, 그 중에서 작은 값을 갖는 경로를 생존경로로 선택한다.
선택된 생존경로를 나타내는 정보인 결정벡터(DV: decision vector)는 생존경로 메모리(16)에 저장한다. 상기 결정벡터는 덧셈비교선택부(12)의 각 ACS에서 선택한 경로의 정보를 나타내는 N개의 비트들로 이루어져 있으며 생존경로 메모리(16)에 칼럼 단위로 저장된다. 여기서 N은 상태의 개수를 나타낸다.
생존경로 메모리(16)는 복호를 위해 디코딩 깊이(decoding depth) 만큼 생존경로에 대한 정보를 유지하고 있으면서 역추적제어부(18)가 수행하는 역추적 알고리즘(traceback algorithm)에 의해 최종 복원된 심볼을 출력부(20)로 출력한다. 역추적 제어부(18)는 각각의 수신된 데이터에 대하여 생존경로 메모리(16)에 저장되어 있는 결정벡터로부터 가능한 모든 생존경로들 중에서 송신된 신호에 해당하는 원래 경로와 유사할 확률이 가장 높은 생존 경로를 역추적 한다. 생존경로는 일정 시간이 지나면 하나의 경로(24)로 합병(merge)되는 성질이 있으므로 합병이 된 지점 즉, 복호개시 상태노드(decoding starting state node: 22) 이후 생존경로에 해당되는 데이터 비트를 읽어 내면 최종적으로 복호된 신호를 얻을 수 있다.
복호된 비트들은 후입선출부(last in first out: LIFO)로 구성되는 출력부(20)로 출력된다. 생존경로 메모리(16)에서 출력되는 출력 비트의 순서는 역추적제어부(18)의 역추적 동작에 의하여 시간축에 대하여 역순으로 출력되므로 두개의 LIFO로 이중버퍼 된 출력부(20)를 사용하여 시간에 대하여 올바른 순서가 되도록 다시 역순으로 배열시킨다.
그런데, 이와 같은 비터비 복호기의 구현에 있어서, 출력 비트를 복호하기 위하여 생존경로를 역추적 하는 동작에 가장 많은 시간이 필요하다. 그러므로 복호처리의 고속화를 위해서는 효율적인 생존경로 메모리의 구조와 역추적 제어 방법의 도입이 매우 중요한 과제가 된다. 같은 처리 속도를 얻는 경우에도 생존경로 메모리(16)에서 필요한 메모리의 양과 처리지연시간(latency)은 역추적 알고리즘에 따라 달라진다.
성능이 개선된 새로운 생존경로 메모리 역추적 방법 및 그 장치에 관한 방법의 도출과 그 이해를 돕기 위해, 먼저 기존의 생존경로 메모리 구조와 역추적 방법들을 살펴보고 이들이 갖는 문제점을 필요한 메모리의 크기 및 구조와 관리 방법, 처리지연 시간 등의 측면에서 살펴보기로 한다.
2. 종래의 생존경로 결정 방법
생존경로관리 및 데이터 복호를 위한 최적 경로 결정을 위한 방법으로 레지스터 교환(register-exchange: RE) 방법, 역추적(traceback: TH) 방법, 추적삭제(trace-delete: UD) 방법 등이 기존에 제안되었다.
레지스터교환 방법의 경우 개념적으로 간단하지만 구속장(constraint length)이 큰 경우 레지스터의 내용을 교환하기 위한 멀티플렉서의 수가 많아지며, 전력소모가 크게 증가하여 VLSI 구현에는 적합하지 않다.
역추적 방법은 전통적으로 비터비 복호기의 설계에 가장 널리 채택되어 온 방법으로서, 다양한 생존경로 메모리 관리 방법이 제안되어 왔다. 알려진 역추적 방법으로는, 생존경로 메모리를 하나의 블록으로 구성하여 순차적으로 최적 생존경로를 찾아내는 순차적 역추적 방법과, 생존경로 메모리를 복수의 메모리 뱅크로 나누고 각 메모리 뱅크에서 내용을 쓰거나 읽는 동작을 동시에 수행하여 고속의 처리속도를 얻는 방법 등이 있다. 순차적 역추적 방법은 구현이 간편하지만 처리 속도가 느려 복호속도가 느린 응용분야에서만 적용 가능한 반면, 복수의 메모리 뱅크를 채용하는 방법은 고속의 처리가 가능하여 최근 까지 활발한 관심과 연구가 진행되었다.
추적삭제 방법은 최근에 제안된 새로운 방법이다. 이 추적삭제 방법은 생존경로 메모리를 일반적인 메모리가 아닌 레지스터 파일로 구성하고 이 레지스터의각 단(stage)사이에 부호화기의 트렐리스도의 형태에 따라 배선 형태가 정해지는 조합논리(combinational logic) 회로를 사용하여 각 단을 연결한다. 생존경로 메모리의 각 단에서는 입력된 경로 존재 유무 정보와 그 단의 레지스터에 저장된 중간단계의 정보, 그리고 조합논리회로로 표현된 트렐리스도의 형태를 정보로 사용하여, 다음 단계의 생존경로 존재 유무 신호를 발생하여 다음 단으로 전달하고 그렇지 않은 경우 이를 제거(delete)하도록 한다. 덧셈비교선택부(12)에서 출력되는 결정벡터를 생존경로 메모리(16)의 첫 단에 입력하고 위의 과정을 충분히 긴 단계이상 연속적으로 반복하면 생존하지 못하는 경로는 제거되어 최종적으로 하나의 생존경로만이 남게 된다.
추적삭제 방법은 결정벡터(DV) 값을 쓰고 나서 조합논리회로의 전달 지연시간 후에 바로 복호된 데이터 비트를 결정할 수 있고 또 출력단의 LIFO 버퍼(20)가 필요 없다는 장점을 가지고 있다. 그러나 추적삭제 방법은 기성의 표준적인 메모리 구조가 아닌 레지스터와 조합논리회로를 이용한 특별한 구조를 사용하므로 구속장이 큰 경우 설계가 복잡해지고 모든 단을 거치는데 필요한 조합논리회로에서의 전달지연이 매우 길어지는 문제가 있다. 이 경우 파이프라인 단을 중간 단계에 필요한 만큼 도입하여야 한다.
3. 기존의 역추적 방법
비터비 복호를 위한 트렐리스도에서 모든 경로는 시간의 경과에 따라 하나의 경로로 합병되며, 구속장의 길이가 K인 길쌈부호를 사용하는 경우 4K~5K 단계의 시간이 경과한 후에 대부분의 생존경로가 하나의 경로(24)로 합병된다는 사실이 실험적으로 잘 알려져 있다. 아래의 설명에서, 모든 경로는 L단계를 거친 후 하나의 경로로 수렴한다고 가정하기로 한다.
가. 스탠포드 텔레콤(Stanford Telecom)의 생존경로 메모리 관리법
기존에 제안된 역추적 방법으로 먼저 부스타만트 등(H. A. Bustamante et al.)이 제안한 방법("Standford Telecom VLSI design of a convolutional decoder," Proc. IEEE Conference on Military Communications, vol. 1, pp. 171-178, Boston, Massachusetts, Oct. 1989.)을 들 수 있다. 도 2에 도시된 바와 같이, 이 방법에서는 생존경로 메모리(16)를 칼럼의 수가 각각 L개인 4개의 메모리 뱅크(Bank 0, Bank 1, Bank 2, Bank3)로 구성한다. 참고로 생존경로 메모리(16)의 크기는 특별히 다르게 지정하지 않는 한 모두 칼럼의 개수를 나타내며, 한 칼럼의 길이는 N 이다. 시각 t=0 부터 시각 t=L-1 까지의 구간에서는, 현재 결정된 경로선택 정보가 Bank0에 저장(W: write)되고 있는 동안, 과거에 저장된 결정벡터를 이용하여 Bank1에서는 출력 비트를 복호(D: decode)하고, Bank3에서는 역추적(T: traceback)을 수행한다. 이때 Bank2는 유휴(I: idle) 상태에 있게 되는데, 이것은 W, D, T의 세 가지 동작이 서로 시간 동기가 맞아 올바르게 수행되기 위하여 필요한 지연시간을 얻기 위한 것이다.
어떤 메모리 뱅크에 기록된 경로선택 정보로부터 출력신호를 복호하려면 생존 경로가 하나로 합병된 이후에야 가능하다. 예를 들어, Bank0에 기록된 경로선택 정보를 올바로 복호하기 위해서는 먼저 Bank1에 기록된 경로선택 정보를 이용하여 역추적 하여 Bank0을 복호할 시작 상태번호를 결정하여야 한다. L 시간 단계를 거친 후 모든 경로가 하나의 경로로 합병된다는 가정에 의해 Bank1의 마지막 임의의 상태번호로부터 역추적을 시작하여도 Bank1 내에서 L 단계를 거치므로 Bank1의 시작위치에서는 하나의 경로로 수렴된다. 이렇게 얻어진 상태번호로부터 출발하여 Bank0의 모든 출력 비트는 정확하게 복호될 수 있다. 도면 2에 Bank1의 역추적(T)후 Bank0의 복호(D)에 이르는 상호 관계를 점선으로 표시하였다.
이 방법에 따르면, 필요한 총 생존경로 메모리의 크기는 4L 이고 역추적에 소요되는 처리시간 지연은 4L 단위 시간이다. 이것은 메모리 뱅크 Bank0에 기록된 데이터가 복호되기 위해서는 Bank0에 저장(W) -> Bank1에 저장(W) -> Bank1에서 역추적(T)으로 Bank0의 복호 시작 상태번호 결정 -> Bank0의 데이터를 복호(D)하는데 전부 4L 의 처리시간지연이 생기기 때문이다. 따라서 Bank0에는 이 처리 지연 시간 후에서야 비로소 다른 새로운 결정벡터가 기록될 수 있다.
이 방법에 의하면 한 주기 동안에 하나의 쓰기동작(W)과 두개의 읽기동작(D, T)이 동시적으로 수행되므로, 생존경로 메모리(16)가 2개의 읽기 포인터(RP)와 하나의 쓰기(WP) 포인터를 가지고 있어야 한다.
나. k-포인터 알고리즘
위에서 설명한 알고리즘을 일반화시킨 방법으로 k-포인터 짝수 알고리즘(k-pointer even algorithm)(G. Feygin and P. G. Gulak, "Architectural tradeoffs for survivor sequence memory management in Viterbi decoders", IEEE Trans. Commun, vol. 41, no. 1, pp. 425-429, Mar. 1993)이 있다. 이 방법에서는 k 개의 읽기 포인터(RP)와 1개의 쓰기 포인터(WP)를 사용한다. 도면 3은 k=3 인 경우의 예이다. 이 방법에서는 생존경로 메모리(16)를 L/(k-1) 의 크기를 갖는 2k 개의 뱅크로 나누고, (k-1) 개의 읽기 포인터가 역추적(T)을 위하여 사용되는 동안, 1개의 읽기 포인터가 복호(D)를 위해 사용되며 1개의 쓰기 포인터가 저장(W)을 위해 사용된다. 이 방법에 따르면, 복호를 수행하기 전에 적어도 L 길이의 역추적(T)을 수행하여야 하므로 (k-1) 개의 메모리 뱅크의 칼럼의 개수가 L 보다 커야 한다. 또한 이 방법에 의하면, 필요한 총 생존경로 메모리의 크기는 2kL/(k-1) 이고 처리시간 지연은 2kL/(k-1) 이다.
복호(D)와 저장(W)을 하는 포인터를 같은 메모리 뱅크를 가리키도록 k-포인터 짝수 알고리즘을 변형하여 메모리 뱅크의 수를 한 개 줄인 k-포인터 홀수 알고리즘(k-pointer odd algorithm)도 있다. 하지만 이 방법도 기본적으로 k-포인터 짝수 알고리즘과 같은 성능을 보이며 더 복잡한 제어 구조를 가져 실용적으로 큰 가치는 없다.
다. 1-포인터 알고리즘
위 k-포인터 알고리즘은 결정벡터를 생존경로 메모리에 한 번 저장(W)하는 동안 k 개의 읽기 포인터를 사용하여 역추적(T)과 복호(D) 동작을 수행하여야 한다. 1-포인터 알고리즘은 k-포인터 알고리즘에서 k 개의 읽기 포인터를 사용하는 대신 k배 더 빠른 1개의 읽기 포인터만을 사용하도록 변형한 방법이다. 이 방법에 의하면, 연속적인 동작을 보장하기 위하여 하나의 결정벡터를 저장(W)하는 동안 역추적(T) 혹은 복호(D)를 위한 k 번의 읽기 동작 주기를 끝낼 수 있어야 한다.
이 방법에서는 (k+1)개의 메모리 뱅크가 필요하며 각 메모리 뱅크의 크기는L/(k-1) 이다. 이때 필요한 총 생존경로 메모리의 크기는 (k+1)L/(k-1) 이고 처리시간 지연은 (k+1)L/(k-1) 이 된다. k가 2 이상이 되면 1-포인터 알고리즘은 k-포인터 알고리즘에 비하여 적어도 생존경로메모리의 크기와 처리시간 지연에 있어 훨씬 더 우수해 보인다.
그러나 생존경로 메모리에 결정벡터를 저장(W)하는 클럭보다 역추적(T) 및 복호(D)를 위해 k배 더 빠른 읽기 클럭을 사용해야 하는 문제점이 있다. 이동통신용 단말기와 같이 비터비 복호기의 데이터 처리속도가 수 Mb/s 로 낮은 경우에는 빠른 주 클럭으로부터 메모리 쓰기 클럭과 읽기 클럭을 이끌어 내어 k 의 값을 높일 수 있으나, 처리 속도가 매우 높은 현대의 비터비복호기를 설계하고자 하는 경우 k의 값을 높이는 것은 생존경로 메모리의 특별한 설계가 요구되므로 매우 어렵다. 따라서 현실적으로 k 의 값은 작은 값이 되며 성능 향상에는 한계가 있다.
라. 시작노드번호결정회로(SNNDC)를 사용한 알고리즘
"Viterbi decoder and Viterbi decoding method"라는 제목의 미국특허번호 제6,041,433A에 따르면, 카마다(T. Kamada)는 위에서 설명한 스탠포드 텔레콤(Stanford Telecom)의 생존경로 메모리 관리 방법을 개선한 방법을 제안하였다. 스탠포드 텔레콤의 생존경로 메모리 관리 방법에 따르면, 이전 메모리 뱅크의 복호(D)를 시작할 상태번호를 결정하기 위하여 현재 메모리 뱅크에 L 개의 결정벡터를 모두 저장(W) 한 이후에 비로소 역추적(T)을 시작할 수 있다. 반면, 카마다 등의 발명은 덧셈비교선택부(12)로부터 출력되는 경로 벡터(DV)를 생존경로 메모리(16)에 저장(W)함과 동시에 덧셈비교선택부(12)의 각 ACS가 선택한 경로에해당되는 이전 상태번호를 도 4(c)에 도시된 시작노드번호 결정회로(Starting Node Number Deciding Circuit: SNNDC)라는 장치를 사용하여 각 노드번호저장수단(40a, 40b, 40c, 40d)에 저장한다. 시작노드번호 결정회로는 노드번호저장수단(40a, 40b, 40c, 40d) 이외에 노드번호계산수단(46a~46d), 제1선택수단(44a~44d)과 제2선택수단(42a~44d)을 더 포함하여 도면과 같이 연결된 구성을 갖는다. 이와 같은 시작노드번호결정회로를 이용하여, L개의 결정벡터(PS 신호)를 생존경로메모리에 모두 저장(W)하고 나면 별도의 역추적(T)과정 없이 복호(D)를 시작할 상태번호를 바로 결정한다.
이 방법을 도 4a와 4b에 보인 예를 통하여 자세히 설명한다. 시각 t=nL 인 순간에 SNNDC내의 각 노드번호저장수단(40a, 40b, 40c, 40d)은 자기 자신의 상태 번호로 초기화(reset) 되었다가, 다음 시간 단계 t=nL+1 에 ACS가 선택한 경로 선택 정보(PS 신호, 즉 결정벡터)에 해당되는 상태 번호로 갱신 된다. 이 동작은 t=nL+(L-1) 단계까지 새로운 결정벡터가 저장될 때마다 한번씩 반복적으로 수행된다. 도면 4a에서 각 노드위에 적힌 숫자는 결정벡터를 나타내며, 도면 4b에는 이 결정벡터에 따라 갱신되어 노드번호저장수단(40a, 40b, 40c, 40d)에 저장되는 상태번호 값을 나타낸다. 도면 4(b)에서 t=nL+(L-1) 일 때 SNNDC내의 노드번호저장수단(40a, 40b, 40c, 40d)의 값은 모두 0으로 바뀐 것을 볼 수 있는데 이것은 생존 경로들이 모두 L 단계의 시간이 경과하여 하나의 경로로 합병되었고 이 합병된 생존 경로가 t=nL 에서 상태번호 0을 지나가기 때문이다. 따라서 t=nL+(L-1) 에서는 SNNDC내의 임의의 레지스터를 택하고 그 속에 저장된 상태 번호를 추출하여 이 상태번호로부터 시작하여 이전 메모리 뱅크에 기록된 정보를 복호(D)할 수 있다.
카마다가 제안한 생존경로 메모리를 관리하는 방법과 SNNDC의 제어 방법을 도면 5a와 5b를 참조하여 설명한다. 도 5a에서 'W+T' 표시는 생존경로 메모리(16)에 결정벡터(DV)를 저장(W)함과 동시에 SNNDC 내의 노드번호저장수단(40a, 40b, 40c, 40d)에 저장된 이전 상태번호를 현재의 상태번호로 갱신하면서 역추적(T)을 동시에 수행한다는 것을 의미한다. Bank0에 저장된 결정벡터를 복호(D)를 하기 위해서는 Bank1에 L개 결정벡터의 저장을 끝냄과 동시에 SNNDC에 저장되어 있는 임의의 노드번호저장수단(40a, 40b, 40c, 40d)의 값을 꺼내어 Bank0의 복호(D)를 시작할 상태 번호로 사용하면 된다. SNNDC는 도 5의 (b)에 나타낸 것처럼 매 L 주기마다 초기화 된다.
각 메모리 뱅크의 크기는 L이며 3개의 메모리 뱅크(Bank0, Bank1, Bank2)가 사용되었으므로 필요한 총 생존경로 메모리의 크기는 3L 이고 생존경로 메모리(16)에서 최종 복호비트의 결정에 소요되는 처리시간 지연은 3L 이다. 그러므로 이 방법은 스탠포드 텔레콤(Stanford Telecom)의 생존경로 메모리 관리 방법에 비하여 필요한 메모리의 양과 처리시간이 L만큼 개선될 수 있다.
위에서 설명한 기존의 각 방법들은 다음과 같은 문제점이 있다.
즉, k-포인터 알고리즘의 경우 k 개의 읽기 포인터와 1개의 쓰기 포인터가 필요한데 성능 향상을 위하여 k의 값으로 큰 값을 사용하여야 한다. 하지만, 이 경우 메모리 접근 구조가 지나치게 복잡해지므로 k의 값을 임의로 크게 할 수가 없다.
1-포인터 알고리즘의 경우에는 입력 데이터를 저장하는 클럭보다 k배 더 빠른 읽기 클럭을 사용하여야 하고 k의 값이 클수록 성능이 개선되므로 큰 값의 k가 바람직하다. 그러나 고속의 비터비 복호기 설계에 있어 읽는 클럭과 쓰는 클럭의 동작 주파수 비를 임의로 높이는 것은 불가능하므로 역시 성능 향상에는 한계가 있다.
카마다의 발명은 SNNDC 구조를 사용하여 스탠포드 텔레콤(Stanford Telecom)의 생존경로 메모리 관리 방법을 개선할 수 있음을 보였다. 그러나 카마다의 방법은 여전히 많은 양의 생존경로 메모리 크기와 처리 지연 시간을 가지는 점이 문제로 지적될 수 있다. 즉 본 발명이 제안하는 방법에 의해 더욱 개선될 수 있는 여지가 있다.
이러한 점들을 고려하여, 본 발명은 k-개의 읽기 포인터와 1개의 쓰기 포인터 대신, 동작 속도가 똑같은 1개의 읽기 포인터와 1개의 쓰기 포인터만을 사용하면서 위에서 언급된 기존의 방법들 보다 실용적으로 더 작은 생존경로 메모리 크기와 처리시간 지연을 갖는 새로운 생존경로 관리 방법을 제안하는 것을 제1의 목적으로 한다.
본 발명은 또한 상기 제1 목적을 위한 생존경로 관리방법을 실행하기 위한 장치를 제공하는 것을 제2의 목적으로 한다.
도면 1은 종래의 일반적인 비터비 복호기의 블록구성도이다.
도면 2는 종래의 스탠포드 텔레콤(Standford Telecom)의 생존경로메모리 관리방법을 설명하기 위한 도면이다.
도면 3은 종래의 3-포인터 짝수 방법을 사용하는 생존경로메모리 관리방법을 설명하기 위한 도면이다.
도면 4a와 4b는 각각 종래의 시작노드번호결정회로를 이용한 역추적방법에서 최우경로(most likely path)와 경로선택신호(path select signals)를 도시하는 트렐리스도와 노드번호저장수단의 데이터 변화도이고, 도면 4c는 종래의 비터비복호기의 시작노드번호결정회로도이다.
도면 5a와 5b는 시작노드번호결정회로를 사용하는 종래의 생존경로메모리 관리방법과 시작노드번호결정회로의 제어방법을 설명하기 위한 도면이다.
도면 6a와 6b는, 본 발명의 제1 실시예로서, 2개의 시작노드번호결정회로를 사용하는 생존경로메모리 관리방법과 이에 해당되는 시작노드번호결정회로의 제어 방법을 설명하기 위한 도면이다.
도면 7a와 7b는, 본 발명의 제2 실시예로서, 4개의 시작노드번호결정회로를 사용하는 생존경로메모리 관리방법과 이에 해당되는 시작노드번호결정회로의 제어 방법을 설명하기 위한 도면이다.
도면 8은 본 발명에 따른 생존경로메모리 관리방법을 수행할 수 있는 장치의 블록구성도이다.
도면 9는 도면 8에 도시된 하나의 시작노드번호결정회로의 구현예를 도시한 회로도이다.
도면 10은 본 발명을 적용하여 얻을 수 있는 비터비 복호기의 생존경로 메모리의 크기와 처리지연시간의 추이를 기존 방법과 비교한 그래프이다.
** 도면의 주요부분에 대한 부호의 설명 **
12: 덧셈비교선택부(ACS)
20: 출력부
100: 생존경로메모리
102: 읽기포인터 생성기
104: 쓰기포인터 생성기
106: 상태선택기
110: 시작노드번호결정부
110a, 110b, ..,110k: 시작노드번호결정회로
120: 제어부
상기 제1 목적을 달성하기 위한 본 발명에 따르면, 비터비 알고리즘을 적용하는 복호 과정에서의 생존경로 역추적 방법이 제공된다. 이 생존경로 역추적 방법은,
덧셈비교선택수단이 선택한 경로를 나타내는 정보인 결정벡터 데이터를 매 단위시간 마다 생존경로 메모리 내의 k+2개의 메모리뱅크에 순차 순환적으로 저장하는 단계로서, 상기 변수 k는 2이상의 정수이고 상기 변수 L은 생존경로가 하나의 경로로 합병되는 데 걸리는 시간을 나타내며, L/k은 각 메모리 뱅크의 사이즈를 나타내는 정수인 제1 단계;
k개의 시작노드번호결정회로(SNNDC)를 이용하여 k개의 시작노드번호 결정동작을 독립적으로 수행하여, 비터비 복호를 위한 트렐리스도에서 현재시각의 각 상태에 이르기까지 L 단위시간 이전의 어떤 상태로부터 시작하였는지 그 시작상태를 결정하는 단계로서, 각 시작노드번호 결정동작은, 매 L 단위시간마다 초기화되고, 다음 번 초기화가 될 때까지, 상기 메모리 뱅크에 저장되는 상기 결정벡터 데이터에 의거하여, 상기 덧셈비교선택수단이 선택한 경로에 해당하는 상태번호를 매 단위시간마다 이전의 상태번호가 현재의 새로운 상태번호로 갱신하는 방식으로 저장하고 저장된 마지막 상태번호를 상기 시작상태의 노드번호로서 출력하는 것으로 구성되며, 상기 k개의 시작노드번호 결정동작은 서로 L/k 단위시간차를 가지면서 초기화되고 병행적으로 실행됨으로써 그 실행으로서 얻어지는 상기 시작상태의 노드번호를 상기 L/k 단위시간차를 가지면서 출력하는 제2 단계;
상기 제2 단계의 실행 결과 L/k 단위시간 마다 순차 출력되는 각 시작상태의 노드번호로부터 L 단위시간 이전에 상기 결정벡터 데이터의 저장이 완료된 메모리뱅크에 대하여 생존경로의 복호를 곧바로 시작하고 상기 각 시작상태의 노드번호로부터 복호된 경로에 해당하는 L/k 개의 복호 데이터들을 L/k 단위시간 동안 순차적으로 출력하는 제3 단계를 포함한다. 상기 제1 내지 제3 단계들은 병행적으로 수행된다.
상기 방법에 있어서, 상기 제 2 단계는, i 번째 시작노드번호 결정회로가 ts(i) = mL + (i-1)L/k 시각에서 초기화되고 초기화 된 다음부터 상기 te(i) = mL + (i-1)L/k + (L-1) 시각까지 내부의 임시저장수단에 상기 매 단위시간마다 상기 방식으로 상기 상태번호를 갱신 저장하고 상기 te(i) 시각에 상기 임시저장수단에 저장되어 있는 상태번호를 출력하도록, 상기 k개의 시작노드번호 결정회로의 동작을 제어한다. 여기서 상기 변수 i는 1부터 k까지의 정수이며 상기 변수 m은 0부터 1씩 증가하는 정수이다.
한편, 상기 제2 목적을 달성하기 위한 본 발명에 따르면, 비터비 알고리즘을 적용하는 복호 과정에서의 생존경로 역추적 장치가 제공된다. 이 생존경로 역추적 장치는,
수신된 코드로부터 경로선택을 위한 결정벡터를 생성하는 덧셈비교선택수단;
상기 덧셈비교선택수단이 출력하는 상기 결정벡터를 저장하는 메모리로서, 상기 메모리는 k+2개의 메모리뱅크를 포함하며, 상기 결정벡터는 상기 k+2개의 메모리뱅크에 순차 순환적으로 저장되는, 단 k는 2이상의 정수이고 각 메모리 뱅크의 사이즈는 L/k이고, L은 생존경로가 하나의 경로로 합병되는 데 걸리는 시간을 나타내는, 생존경로메모리;
상기 결정벡터가 상기 k+2개의 메모리뱅크에 순차 순환적으로 저장되도록 저장주소를 상기 생존경로메모리에 제공하는 쓰기포인터 생성수단;
상기 쓰기포인터 생성수단과 동작속도가 동일하며, 입력되는 상태번호를 이용하여 상기 생존경로메모리로부터 생존경로를 출력하기 위한 읽기주소를 상기 생존경로메모리에 제공하는 읽기포인터 생성수단;
서로 독립적인 k개의 시작노드번호 결정동작을 실행하여 비터비 복호를 위한 트렐리스도에서 현재시각의 각 상태에 이르기까지 L 단위시간 이전의 어떤 상태로부터 시작하였는지 그 시작상태를 결정하는 k개의 시작노드번호결정회로(SNNDC)를 포함하며, 각 시작노드번호 결정회로는, 매 L 단위시간마다 초기화되고, 다음 번 초기화가 될 때까지, 상기 메모리 뱅크에 저장되는 상기 결정벡터 데이터에 의거하여, 상기 덧셈비교선택수단이 선택한 경로에 해당하는 상태번호를 매 단위시간마다 이전의 상태번호가 현재의 새로운 상태번호로 갱신하는 방식으로 저장하고 소정의 출력제어에 의해 저장된 상태번호를 상기 시작상태의 노드번호로서 출력하도록 구성된 시작노드번호결정수단;
상기 시작노드결정수단의 k개의 시작노드번호결정회로를 L/k 단위시간차를 가지면서 순차 순환적으로 하나씩 선택하여 선택된 시작노드번호결정회로에 저장된 상기 상태번호가 상기 시작상태의 노드번호로서 상기 읽기포인터 생성수단에 공급되도록 제어하는 상태선택수단; 및
상기 k 개의 시작노드번호결정회로의 갱신 저장, 리셋 및 출력 동작의 제어,상기 상태선택수단과 상기 쓰기포인터 생성수단, 읽기포인터 생성수단의 동작을 제어하는 제어수단을 포함한다.
상기 생존경로 메모리는 바람직하게는 표준 2-포트 메모리이다.
그리고 상기 장치에 있어서, k개의 시작노드번호결정회로 각각은 상태번호를 갱신 저장하기 위한 N 개의 임시저장수단과 N 개의 2r:1 선택수단을 포함한다. 여기서 변수 r은 부호율이 r/n이고 구속장인 K인 비터비 콘볼루션 부호화기를 이용한 부호화시 메시지 비트의 수를 나타내며, 상기 변수 n은 코드화된 비트 수를 나타내고, 상기 변수 N은 관계식 N = 2r(K-1)로 정해지는 상태의 수를 나타낸다. 상기 N 개의 임시저장수단의 각 출력포트와 상기 N개의 선택수단의 각 입력포트는 비터비 콘볼루션 부호화기의 트렐리스도와 같은 배선 형태를 갖도록 연결됨과 동시에 상기 N개의 선택수단의 각 출력단은 상기 N개의 임시저장수단의 각 입력단과 일 대 일로 연결되어, 상기 N개의 선택수단 각각이 자신의 제어포트로 입력되는 상기 결정벡터의 값에 따라서 상기 N개의 임시저장수단에 저장되어 있는 이전의 상태번호를 선택하여 다시 상기 N개의 임시저장수단 각각에 피드백시키는 것에 의해, 상기 N개의 임시저장수단 각각은 현재의 상태번호로 갱신되도록 구성된다. 또한, 상기 N개의 임시저장수단 각각은 상기 제어수단의 제어에 의해 L 시간주기 마다 초기화되고, 상기 출력제어에 의해 임의의 한 임시저장수단은 상기 초기화 직전에 저장된 상태번호를 복호를 시작하기 위한 상기 시작상태의 노드번호로서 상기 상태선택수단을 통해 상기 읽기포인터 생성수단으로 제공한다.
본 발명은 2포트 방식의 표준적인 메모리 구조를 바탕으로 고속의 비터비 복호기를 설계할 수 있도록 즉시 역추적(Immediate Traceback: ITB) 알고리즘에 기초한 새로운 생존경로 메모리 관리방법이다. 본 발명은 구속장이 큰 고속의 비터비 복호기의 설계에 적합하며 사용된 메모리 뱅크의 크기와 처리지연시간 면에서 기존의 역추적 방법에 비하여 우수하다.
이하에서는 본 발명의 바람직한 실시예를 첨부한 도면을 참조하여 보다 구체적으로 설명하기로 한다.
도면 8에는 본 발명에 의한 즉시 역추적 방법을 사용하는 생존경로 메모리 관리 장치의 블록구성도가 도시된다. 이 장치는 도 1의 (30) 부분을 대체하는 것이다.
생존경로 메모리 관리장치는 생존경로메모리(100), 쓰기포인터 생성기(104), 읽기포인터 생성기(102), k개의 시작노드번호결정회로(SNNDC)(110a, 110b, ..., 110k)를 포함하는 시작노드번호결정부(110), 상태선택기(State selector)(106), 그리고 제어부(120)를 구비한다.
생존경로메모리(100)는 덧셈비교선택부(12)로부터 결정벡터를 입력받아 저장한다. 생존경로메모리(100)는 k+2개의 메모리뱅크로 구성된다. 상기 결정벡터는 k+2개의 메모리뱅크에 순차 순환적으로 저장된다. 여기서, 변수 k는 2이상의 정수로서 생존경로메모리 관리장치가 채용하는 시작노드번호결정회로(110a, 110b, ..., 110k)의 개수를 나타낸다. 각 메모리 뱅크의 사이즈는 L/k이다. 여기서, 변수 L은 생존경로가 하나의 경로로 합병되는 데 걸리는 시간을 나타낸다.
쓰기포인터 생성기(104)는 제어부(120)의 제어를 받아서 상기 결정벡터가 상기 k+2개의 메모리뱅크에 순차 순환적으로 저장되도록 저장주소를 생성하여 생존경로메모리(100)에 제공한다. 예컨대 변수 k가 2인 경우 4개의 메모리뱅크(bank0, bank1, bank2, bank3)가 필요하며, 상기 결정벡터는 bank0 -> bank1 -> bank2 -> bank3 -> bank0의 순서로 저장된다.
읽기포인터 생성기(102)는 입력되는 상태번호에 의거하여 생존경로메모리(100)로부터 생존경로를 출력하기 위한 읽기주소를 생존경로메모리(100)에 제공한다. 상기 상태번호는 상태선택기(106)로부터 제공받는다. 읽기포인터 생성기(102)는 쓰기포인터 생성기(104)와 동작속도가 동일하다. 즉 본 발명의 생존경로메모리 관리장치는 동작속도가 서로 동일한 하나의 읽기포인터 생성기(102)와 하나의 쓰기포인터 생성기(104)만 갖추어지면 된다.
시작노드번호결정부(110)의 각 시작노드번호결정회로(110a, 110b, ..., 110k)는, 덧셈비교선택부(12)로부터 결정벡터를 공통적으로 입력받아서, 입력된 결정벡터에 의거하여, 비터비 복호를 위한 트렐리스도에서 현재의 어떤 상태번호에 이르기까지 소정의 시간단계 전에 어느 상태번호로부터 출발하였는지를 판별하기 위한 시작노드번호를 결정한다. 각 시작노드번호결정회로(110a, 110b, ..., 110k)는 이러한 시작노드번호 결정과정은 서로 독립적으로 수행한다. 각 시작노드번호결정회로(110a, 110b, ..., 110k)에 입력되는 결정벡터는 동일한 시간에 생존경로메모리(100)에 저장되는 결정벡터이다. 각 시작노드번호결정회로(110a, 110b, ..., 110k)는, 제어부(120)의 제어에 의해, L 시간주기로 리셋 되면서 위와 같은 시작노드번호 결정과정을 반복한다. 이 때, 각 시작노드번호결정회로(110a, 110b, ..., 110k)에 의해 수행되는 k개의 독립된 시작노드번호 결정과정들의 동작 시작시점은 L/k의 시간차를 갖도록 제어된다. 이에 의해, k 개의 시작노드번호 결정과정으로부터 얻어지는 시작노드번호는 L/k의 시간차를 가지면서 순차 출력된다.
하나의 시작노드번호결정회로는 예컨대, 상태번호를 저장할 수 있는 N 개의 레지스터와 N 개의 2:1 멀티플렉서로 구성될 수 있다. 여기서 N 은 상태의 수를 나타낸다. N 개의 레지스터의 각 출력포트와 N 개의 멀티플렉서의 각 입력포트는 비터비 부호화기의 트렐리스도와 같은 배선 형태를 갖도록 연결됨과 동시에 상기 N 개의 멀티플렉서의 각 출력포트는 N 개의 레지스터의 각 입력포트와 일 대 일로 연결되며, N 개의 멀티플렉서 각각의 제어포트에는 결정벡터가 입력되도록 구성된다. 이러한 구성에 의하면, N 개의 멀티플렉서는 상기 결정벡터의 값에 따라서 N 개의 레지스터에 저장되어 있는 이전의 상태번호를 선택하여 다시 N 개의 각 레지스터에 피드백시킴으로써 각 레지스터의 값을 현재의 상태번호로 갱신된다. 그리고 상기 N 개의 레지스터들은 제어부(120)에 연결되어 L 시간주기 마다 리셋 되도록 구성되며, 상기 일정시간주기마다 리셋되기 직전에 임의의 한 레지스터에 저장된 상태번호가 선택되어 복호를 시작하기 위한 시작노드번호로서 상태선택부(106)에 제공된다.
이와 같은 처리에 의해, 생존경로메모리(100)에 L개의 결정벡터를 모두 저장(W)하고 나면 별도의 역추적(T) 과정을 수행할 필요 없이 복호(D)를 시작할 상태번호가 저장과 동시에 바로 결정될 수 있다.
시작노드번호결정부(110)는 동일한 회로구성을 갖는 k 개의 시작노드번호결정회로를 갖는다. 각 시작노드번호 결정회로의 구성을 일반적으로 기술하면, 각 시작노드번호결정회로는 상태번호를 갱신 저장하기 위한 N 개의 임시저장수단인 레지스터와 N 개의 2r:1 선택수단인 멀티플렉서를 포함한다. 여기서 변수 r은 부호율이 r/n이고 구속장인 K인 비터비 콘볼루션 부호화기를 이용한 부호화시 메시지 비트의 수를 나타내며, 상기 변수 n은 코드화된 비트 수를 나타내고, 상기 변수 N은 관계식 N = 2r(K-1)로 정해지는 상태의 수를 나타낸다. 상기 N 개의 레지스터의 각 출력포트와 상기 N개의 멀티플렉서의 각 입력포트는 비터비 콘볼루션 부호화기의 트렐리스도와 같은 배선 형태를 갖도록 연결됨과 동시에 상기 N개의 멀티플렉서의 각 출력단은 상기 N개의 레지스터의 각 입력단과 일 대 일로 연결되어, 상기 N개의 멀티플렉서 각각이 자신의 제어포트로 입력되는 상기 결정벡터의 값에 따라서 상기 N개의 레지스터에 저장되어 있는 이전의 상태번호를 선택하여 다시 상기 N개의 레지스터 각각에 피드백시키는 것에 의해, 상기 N개의 레지스터 각각은 현재의 상태번호로 갱신되도록 구성된다. 이러한 구성에 있어서, 상기 N개의 레지스터 각각은 제어부(120)의 제어에 의해 L 시간주기 마다 초기화된다. 그리고 제어부(120)의 출력제어에 의해 임의의 한 레지스터는 초기화 직전에 저장된 상태번호를 복호를 시작하기 위한 시작상태의 노드번호로서 상태선택기(106)를 통해 상기 읽기포인터 생성기(102)로 제공한다.
도면 9는 상기 변수 r이 1이고 n이 2이며, 구속장 K가 3인 경우 즉, N이 4인경우에 하나의 시작노드번호결정회로의 구성예를 도시한다. 시작노드번호결정회로는 4개의 2:1 멀티플렉서(132a, 132b, 132c, 132d)와 결정벡터의 임시저장수단으로서 4개의 레지스터(130a, 130b, 130c, 130d)를 포함한다. 제1단의 멀티플렉서(132a)의 출력포트는 제1단의 레지스터(130a)의 입력포트에 연결된다. 나머지 3개단의 각 멀티플렉서(132b, 132c, 132d)도 같은 방식으로 각 레지스터(130b, 130b, 130d)와 연결된다. 또한 제1단의 레지스터(130a)의 출력포트는 제1 및 제2 단의 멀티플렉서(132a, 132b)에 각각 연결되고, 제2단의 레지스터(130b)의 출력포트는 제3 및 제4 단의 멀티플렉서(132c, 132d)에 각각 연결되고, 제3단의 레지스터(130c)의 출력포트는 제1 및 제2 단의 멀티플렉서(132a, 132b)에 각각 연결되고, 제4단의 레지스터(130d)의 출력포트는 제3 및 제4 단의 멀티플렉서(132c, 132d)에 각각 연결된다. 그리고 각 단의 멀티플렉서(132a, 132b, 132c, 132d)는 덧셈비교연산부(12)에 연결되어 상기 결정벡터를 제어포트로 입력받아, 두 입력포트에 입력되는 결정벡터 데이터를 선택하여 연결된 레지스터로 피드백 시켜준다. 4개의 레지스터(130a, 130b, 130c, 130d)는 또한 제어부(120)에 연결되어 일정시간주기마다 리셋 되도록 구성된다. 상기 일정시간주기마다 리셋되기 직전에 4개의 레지스터(130a, 130b, 130c, 130d)중 임의 하나의 값이 선택되어 상태 선택기(106)로 출력된다.
이러한 시작노드번호 결정과정으로부터 얻어지는 상태번호는 k개의 시작노드번호결정회로(110a, 110b, ..., 110k) 각각으로부터 출력되며, 이들 상태번호는 상태선택기(106)에 제공된다. 상태선택기(106)는 입력된 상태번호들 중 하나의 상태번호를 선택하여 읽기포인터 생성기(102)에 공급해준다. 즉, 상태선택기(106)는 k개의 시작노드번호결정회로(110a, 110b, ..., 110k)를 L/k 단위시간차를 가지면서 순차 순환적으로 하나씩 선택하여 선택된 시작노드번호결정회로의 레지스터에 저장된 상태번호가 시작상태의 노드번호로서 읽기포인터 생성기(102)에 공급되도록 제어한다.
제어부(120)는 k 개의 시작노드번호결정회로(110a, 110b, ..., 110k) 각각이 복호를 위한 시작노드번호를 상태선택기(106)에 L 시간주기로 제공한 다음 리셋(초기화) 되도록 제어한다. 또한 상태제어기(106), 읽기포인터 생성기(102) 및 쓰기포인터 생성기(104)의 동작에 필요한 제어 신호들을 각각 제공한다.
이와 같은 구성에 의하면, 덧셈비교선택부(ACS)(12)로부터 출력되는 결정벡터(DV)들은 쓰기포인터 생성기(104)가 지시하는 생존경로메모리(100)의 주소에 저장되며 동시에 k개의 시작노드번호결정회로(110a, 110b, .., 110k) 각각에 공급된다. 각 시작노드번호결정회로(110a, 110b, .., 110k)는 후술하는 생존경로메모리 관리방법에 따라 자기의 상태번호로 초기화 된 후, 덧셈비교선택부(12)로부터 공급되는 결정벡터(DV)의 값에 따라 선택된 상태번호로 갱신된다. 이 갱신동작은 생존경로메모리(100)의 메모리뱅크의 크기와 사용하는 시작노드번호결정회로(110a, 110b, .., 110k)의 개수에 따라 자명하게 정해지는 소정시간 동안 지속된다. 소정시간 동안의 갱신이 끝나면 각 시작노드번호결정회로(110a, 110b, .., 110k) 내의 임의의 레지스터를 선택하고 그 값을 꺼내어 이 상태번호를 이전 상태의 복호를 시작하는 상태번호로 사용한다. k개의 시작노드번호결정회로(110a, 110b, .., 110k)는 메모리 뱅크의 크기에 해당하는 시간마다 차례로 갱신을 끝내고 이전 상태의 복호를 시작할 수 있는 상태번호를 출력하므로 이것을 상태선택기(106)를 통해 읽기포인터 생성기(102)로 전달한다.
다음으로, 도면 6a와 6b를 참조하여, 본 발명의 제1 실시예에 따른 즉시 역추적을 이용한 생존경로 역추적 방법을 설명한다. 도면 6a와 6b는 각각 제1 실시예에 따른 생존경로 메모리의 관리 방법과, 이 관리방법에서 사용하는 SNNDC의 제어방법을 나타낸다. 앞에서와 마찬가지로 생존 경로가 L 단계의 시간이 경과한 후 하나의 경로로 합병된다는 가정을 한다.
이 실시예는 변수 k가 2인 경우, 즉 2개의 시작노드번호결정회로(SNNDC#1, SNNDC#2)가 사용되며, 이들 두 개의 시작노드번호결정회로는 본 발명에서 제안하는 독창적인 방법으로 제어된다. 이 경우 4개의 메모리뱅크(bank0, bank1, bank2, bank3)가 필요하며, 각 메모리 뱅크의 크기는 L/2 로 정의된다. 그러므로 L 단계의 역추적을 하기 위해서 적어도 2개의 메모리 뱅크에서 역추적을 수행하여야 한다. 도면에서 굵게 표시된 화살표는 각 SNNDC가 초기화되어 갱신이 지속되는 구간을 표시한다. 굵은 화살표가 시작되는 시점에서 각 SNNDC는 자기 상태번호로 초기화되며 화살표가 끝나는 점에서 SNNDC내의 임의의 레지스터 값을 꺼내어 이전 단계의 복호(D)를 시작하는 상태번호로 사용한다. 자세한 제어 방법을 설명하면 다음과 같다.
1) 시간 t=0 에서는, 제1 시작노드번호결정회로(SNNDC#1)를 리셋(초기화) 시킨 후, 시간 t=(L/2)-1 까지 덧셈비교선택부(12)에서 출력되는 경로벡터(DV)를 제1메모리뱅크(Bank0)에 저장하면서 동시에 SNNDC#1 레지스터의 갱신을 반복되도록 저장한다 ('W+T'로 표시).
2) 시간 t=L/2 에서는, 제2 시작노드번호결정회로(SNNDC#2)를 초기화 시킨 후, Bank1에 덧셈비교선택부(12)로부터 출력되는 경로벡터(DV)를 저장(W)함과 동시에, 이 경로벡터에 의거하여 SNNDC#1과 SNNDC#2의 각 레지스터를 동시에 갱신한다. 이때 t=L/2 에서 SNNDC#1을 재 초기화하지 않고 t=L-1 까지 SNNDC#1의 갱신을 계속한다. 이것은 SNNDC#1이 t=0 부터 t=L-1 까지 L 단계의 역추적 결과 (도면 6a에서 T(0,1), T(0,2)로 표시)를 얻기 위한 것이다. SNNDC#1과 SNNDC#2로 제공되는 경로벡터의 값은 동일하지만 SNNDC#1과 SNNDC#2 각각은 초기화 되는 시점이 서로 다르므로 각 SNNDC의 레지스터는 다른 상태번호로 갱신된다. 시간 t=L-1에서 SNNDC#1의 레지스터에 저장된 데이터를 시간 t=0부터 t=L-1까지 L 시간단계 동안의 역추적 결과로서 추출하여 제4 메모리뱅크(bank3)의 복호 시작을 위한 시작상태번호로 상태선택기(106)에 제공한다.
3) SNNDC#2는 시간 t=L/2 에서 t=(3L/2)-1 까지 L 단계의 역추적 결과 (도면 6a에서 T(1,1), T(1,2)로 표시)를 얻기 위한 것이다. 이때 t=L 에서 SNNDC#1 만을 리셋 시키고, SNNDC#2는 재 리셋하지 않고 t=(3L/2)-1 까지 덧셈비교선택부(12)에서 출력되는 결정벡터를 제3 메모리뱅크(bank2)에 저장함과 동시에 SNNDC#1과 SNNDC#2 의 각 레지스터도 그 결정벡터에 의거하여 갱신한다. 그리고 시간 t=(3L/2)-1에서 SNNDC#2의 레지스터에 저장된 데이터를 시간 t=L/2부터 t=(3L/2)-1까지 L 시간단계 동안의 역추적 결과로서 추출하여 제1 메모리뱅크(bank0)의 복호시작을 위한 시작상태번호로 상태선택기(106)에 제공한다. 그리고 시간 t=3L/2에서 SNNDC#2는 리셋 된다.
위의 알고리즘을 정리하면, 시간 t=L-1 에서, 각 SNNDC의 갱신이 끝난 후 SNNDC#1에 속한 임의의 레지스터를 택하고 이 값을 시작상태번호로 사용하여 제4 메모리뱅크(Bank3)의 복호(D)를 시작할 수 있다. 그리고 SNNDC#1은 t=L 에서 재 초기화 되어 위에서 설명한 동일한 방법에 따라 T(2,1), T(2,2)의 즉시 역추적을 수행한다. 그 후, 시간 t=(3L/2)-1 에서 각 SNNDC의 갱신이 끝난 후 SNNDC#2에 속한 임의의 레지스터를 택하고 이 값을 시작상태번호로 사용하여 제1 메모리뱅크(Bank0)의 복호를 시작할 수 있다. 그리고 SNNDC#2는 t=(3L/2) 에서 재 초기화 되어 위에서 설명한 동일한 방법에 따라 T(3,1), T(3,2)의 즉시 역추적을 수행한다. 이와 같은 처리에 의하면, 종래의 역추적 방법에서 필요로 했던, 경로벡터(DV)를 저장(W)하고 난 뒤의 추가적인 역추적 과정을 수행할 필요 없이, 역추적이 경로벡터(DV)의 저장과 동시에 수행되므로 시작노드번호결정회로의 레지스터 값으로부터 즉시 역추적(immediate traceback) 할 수 있다. 즉, SNNDC의 레지스터 값으로부터 종래의 추가적인 역추적의 결과와 동일한 결과 즉, 시작상태번호를 얻을 수 있다.
제1 실시예에 따른 방법은 L/2 의 크기를 갖는 4개의 메모리 뱅크를 사용하였으므로 필요한 총 생존경로 메모리의 크기는 2L 이고 따라서 처리시간 지연은 2L이 된다. 이때 2개의 SNNDC 회로가 필요하다. 또한 제1 실시예에 따른 방법에 의하면, 기존의 스탠포드 텔레콤(Stanford Telecom)의 생존경로 메모리 관리방법이나k-포인터 알고리즘을 이용한 방법과는 달리, 생존경로 메모리(16)에 접근하기 위하여 서로 속도가 같은 1개의 읽기 포인터와 1개의 쓰기 포인터만 필요함을 알 수 있다.
다음으로 본 발명의 제2 실시예에 따른 생존경로 메모리 관리 방법이 도면 7에 도시된다. 제2 실시예는 변수 k가 4 인 경우로서, 크기가 L/4인 6개의 메모리뱅크(bank0, bank1, ..., bank5)를 사용하는 경우에 적용되는 방법이다. 제2 실시예에 따른 방법을 적용하는 경우 4개의 독립된 SNNDC 회로가 필요하다. SNNDC의 제어 방법은 2개의 SNNDC를 사용하는 경우(제1 실시예)와 유사하다. 도면 7a에서 굵게 표시된 화살표는 각 SNNDC가 초기화되어 갱신이 지속되는 구간을 표시한다. 굵은 화살표가 시작되는 시점에서 각 SNNDC는 자기 상태번호로 초기화되며 화살표가 끝나는 점에서 SNNDC내의 임의의 레지스터 값을 꺼내어 이전 단계의 복호(D)를 시작하는 상태번호로 사용한다. 또한, 도면 7의 (b)는 제2 실시예에 따른 방법에서 부가적으로 사용하는 SNNDC의 제어방법을 나타낸다.
즉, 덧셈비교선택부(12)에서 출력되는 결정벡터를 각각의 크기가 L/4인 제1 내지 제6 메모리 뱅크(bank0, bank1, ..., bank5)에 순차적으로 저장하는 것과 병행하여, 그 결정벡터를 제1 내지 제4 시작노드번호결정회로(SNNDC#1, SNNDC#2, SNNDC#3, SNNDC#4)의 각 레지스터에 기 저장된 시작노드번호가 결정벡터에 의거하여 새로운 시작노드번호로 갱신되도록 저장한다. 이러한 갱신 저장과정에서, 각 레지스터들은 L/4 시간마다 순차적으로 리셋 하되, 리셋 되기 직전에 해당 임시저장수단에 저장된 시작노드번호를 이전의 리셋시점부터 현재의 리셋 직전까지의 L 시간단계 동안의 역추적 결과로서 추출하여 상기 L시간단계 직전에 상기 결정벡터의 저장이 완료된 메모리뱅크의 복호 시작을 위한 시작상태번호로 상태선택기(106)에 제공한다. 이러한 처리를 매 L 시간주기마다 반복한다.
L/4의 크기를 갖는 6개의 메모리 뱅크를 사용하였으므로 필요한 총 생존경로 메모리의 크기는 1.5L 이고 처리시간 지연은 1.5L 이 된다. 이 경우에도 제안된 방법에서는 서로 속도가 같은 1개의 읽기 포인터와 1개의 쓰기 메모리만이 필요함을 알 수 있다.
위에서 기술한 두개의 실시예로부터 본 발명은 다음과 같이 일반화 될 수 있다. 즉, k를 사용하는 SNNDC 회로의 개수라 할 때, L/k 크기의 메모리 뱅크 (k+2) 개를 사용하면, 총 생존경로 메모리 크기는 (k+2)L/k 가 되며, 이때 처리지연시간은 (k+2)L/k 단위시간이 된다.
도면 6과 7에서 k가 2인 경우와 4인 특정 경우에 대하여 각각 구체적인 생존경로 메모리 구성 및 SNNDC의 제어 방법에 대하여 설명하였으나 이는 본 발명의 전반적인 이해를 돕기 위해 제공된 것일 뿐이며 k 값을 달리하여 예컨대 k 가 3인 경우에 대하여도 제안된 방법이 마찬가지로 적용될 수 있음은 이 기술분야에서 통상의 지식을 가진 자에게는 자명하다 할 것이다. 실용적인 측면에서는 k 값이 2 내지 4인 경우가 바람직하다. 다만 k 값의 크기에 상관없이 어느 경우에나 서로 속도가 같은 한 개의 읽기포인터와 한 개의 쓰기포인터가 필요하다.
본 발명의 방법과 종래의 방법간의 성능차이를 비교 분석한 결과를 표 1에 정리하였다. 또 도면 10에 생존경로 메모리의 처리지연시간을 파라미터 k에 대하여그래프로 나타내어 보였다. 가로축의 k값에서 각 설계 방식의 기준 파라미터들을 각각 kp= k, ko= k+1, ke= k+1 의 변환관계를 사용하여 얻을 수 있다. 표 1과 도면 10의 그래프를 보면 본 발명에 의한 방법은 k-포인터 알고리즘에 비하여 생존경로 메모리의 크기와 처리지연시간 면에서 모두 성능이 뛰어남을 알 수 있다. 다만, 본 발명은 k값의 증가에 따라 SNNDC 회로의 수가 k값에 선형으로 비례하여 구현 복잡도가 증가하므로 짧은 처리시간 지연이 필요하지 않은 경우 적절히 작은 k값을 선택하는 편이 낫다.
k-포인터알고리즘 1-포인터 알고리즘 본 발명(즉시역추적 알고리즘)
변수k의 정의 k e : 읽기포인터 개수 k o : 쓰기 클럭사이클당 역추적 재귀(traceback recursions)횟수 k p : SNNDC의 개수
읽기포인터의 개수 k e 1 1
쓰기포인터의 개수 1 1 1
뱅크의 수 x뱅크 사이즈 (2k e -1) x L/(k e -1) (k o +1) x L/(k o -1) (k p +2) x L/k p
SPM 사이즈(칼럼) 2Lk e /(k e -1) (k o +1)L/(k o -1) (k p +2)L/k p
처리지연시간 2Lk e /(k e -1) (k o +1)L/(k o -1) (k p +2)L/k p
메모리 구조 (k e +1) 포트 메모리 k o 배 더 빠른 읽기 능력을 갖는 듀얼포트 메모리 표준 듀얼포트 메모리
제한 요소 다중 엑세스 능력 쓰기 클럭 싸이클당 역추적 재귀 횟수 k p SNNDC의 복잡도
한편, 도 10의 그래프에서, 본 발명의 방법과 1-포인터 알고리즘의 경우 생존경로 메모리의 크기와 처리시간 지연이 같은 근사곡선을 가짐을 볼 수 있다. 생존경로 메모리의 크기와 처리지연시간은 이론적 극한값이 L이며 2가지 방법 모두이 극한값에 접근하고 있다. 그러나 고속 비터비 복호기를 설계하기 위한 관점에서 보면 제안된 방법이 훨씬 더 유리하다고 할 수 있다. 왜냐하면, 1-포인터 알고리즘의 경우 고속 동작시 ko= 2~3 (이때, k = 1~2) 정도의 값 이외에는 실용적으로 사용할 수 없을 것이므로 그 응용이 극도로 제한되는데 반하여, 제안된 알고리즘에서는 SNNDC를 구현하는데 필요한 일부 하드웨어의 증가를 허용한다면 요구되는 처리시간지연 조건을 충분히 만족시킬 수 있기 때문이다.
이상에서 본 발명은 고속 비터비 복호기 설계를 위한 새로운 생존 메모리 관리 및 역추적 방법을 제시하였다.
기존의 방법에서 k-개의 읽기 포인터와 1개의 쓰기 포인터를 사용하거나 혹은 읽기 속도가 k-배 빠른 1개의 읽기 포인터와 1개의 쓰기 포인터를 사용하는 방법과는 달리, 본 발명은 동작 속도가 똑같은 1개의 읽기 포인터와 1개의 쓰기 포인터만을 사용하여 표준적인 이중포트를 갖는 메모리를 사용하여 용이하게 생존경로 메모리를 구현할 수 있는 장점을 지닌다.
나아가, 본 발명은 카마다 특허(미국특허번호 6,041,433호)가 미처 가르치지 못한 점을 찾아내어 처리지연시간의 단축과 생존경로메모리의 사이즈를 줄일 수 있는 개선 효과를 제공한다. 즉 카마다 특허는 시작노드번호결정회로를 1개만 사용하는 방법을 개시한다. 그러나 카마다 특허는 시작노드번호결정회로를 두개 이상 즉, k개(단, k는 2이상의 정수)를 사용함으로써 얻어지는 장점에 대한 가르침을 주지못한다. 시작노드번호결정회로를 1개만 사용하는 경우에는, 사이즈가 L인 3개의 메모리뱅크가 필요하므로 생존경로메모리의 총 사이즈는 3L이고 처리지연시간은 3L이 된다. 이에 비해 시작노드번호결정회로를 복수개 즉, k개(단, k는 2이상의 정수)를 채용하면, 사이즈가 L/k 인 메모리 뱅크를 k+2 개 채용하면 되므로 생존경로메모리의 총 사이즈는 (k+2)L/k 가 되고, 이때 처리지연시간은 (k+2)L/k 단위시간이 된다.
예컨대 k가 2인 경우 즉, 시작노드번호결정회로를 2개 채용하는 경우, 본 발명에 따르면 사이즈가 L/2 인 메모리뱅크를 4개 채용하면 되므로 생존경로메모리의 총 사이즈는 2L이 되며, 처리지연시간 또한 2L 단위시간이 된다. 이에 비해, 카마다 특허에 따르면 생존경로메모리의 총 사이즈는 3L이 되고 처리지연시간은 3L이 된다. 따라서 본 발명은 카마다 특허에 비해 생존경로메모리 사이즈를 줄일 수 있을 뿐만 아니라 처리지연시간을 크게 줄일 수 있다. k의 값이 4인 경우에는 본 발명은 생존경로메모리 의 총 사이즈를 6L/4로 더욱 줄어들고, 처리지연시간 또한 6L/4 단위시간으로 더욱 줄어든다. 그러므로 시작노드번호결정회로를 본 발명과 같이 예컨대 2개 또는 4개를 채용하면, 요구되는 생존경로 메모리의 크기가 더 작고 처리지연시간이 더 짧아 기존의 알려진 역추적방법에 비하여 고속 비터비 복호기 구현 측면에서 우수한 성능을 얻을 수 있다. 특히 고속처리를 요하는 시스템에 있어서 처리지연시간을 수배 더 짧게 단축할 수 있는 성능을 갖는다는 것은 매우 중요한 사항으로서, 본 발명이 카마다의 특허에 비해 현저한 비교우위를 갖는다 할 것이다.
이상에서는 본 발명의 실시예에 따라 본 발명이 설명되었지만, 본 발명의 사상을 일탈하지 않는 범위 내에서 다양한 변형이 가능함은 본 발명이 속하는 기술 분야의 당업자라면 명확히 인지할 수 있을 것이다.

Claims (5)

  1. 비터비 알고리즘을 적용하는 복호 과정에서의 생존경로 역추적 방법에 있어서,
    덧셈비교선택수단이 선택한 경로를 나타내는 정보인 결정벡터 데이터를 매 단위시간 마다 생존경로 메모리 내의 k+2개의 메모리뱅크에 순차 순환적으로 저장하는 단계로서, 상기 변수 k는 2이상의 정수이고 상기 변수 L은 생존경로가 하나의 경로로 합병되는 데 걸리는 시간을 나타내며, L/k은 각 메모리 뱅크의 사이즈를 나타내는 정수인 제1 단계;
    k개의 시작노드번호결정회로(SNNDC)를 이용하여 k개의 시작노드번호 결정동작을 독립적으로 수행하여, 비터비 복호를 위한 트렐리스도에서 현재시각의 각 상태에 이르기까지 L 단위시간 이전의 어떤 상태로부터 시작하였는지 그 시작상태를 결정하는 단계로서, 각 시작노드번호 결정동작은, 매 L 단위시간마다 초기화되고, 다음 번 초기화가 될 때까지, 상기 메모리 뱅크에 저장되는 상기 결정벡터 데이터에 의거하여, 상기 덧셈비교선택수단이 선택한 경로에 해당하는 상태번호를 매 단위시간마다 이전의 상태번호가 현재의 새로운 상태번호로 갱신하는 방식으로 저장하고 저장된 마지막 상태번호를 상기 시작상태의 노드번호로서 출력하는 것으로 구성되며, 상기 k개의 시작노드번호 결정동작은 서로 L/k 단위시간차를 가지면서 초기화되고 병행적으로 실행됨으로써 그 실행으로서 얻어지는 상기 시작상태의 노드번호를 상기 L/k 단위시간차를 가지면서 출력하는 제2 단계;
    상기 제2 단계의 실행 결과 L/k 단위시간 마다 순차 출력되는 각 시작상태의 노드번호로부터 L 단위시간 이전에 상기 결정벡터 데이터의 저장이 완료된 메모리뱅크에 대하여 생존경로의 복호를 곧바로 시작하고 상기 각 시작상태의 노드번호로부터 복호된 경로에 해당하는 L/k 개의 복호 데이터들을 L/k 단위시간 동안 순차적으로 출력하는 제3 단계를 포함하며,
    상기 제1 내지 제3 단계들은 병행적으로 수행되는 것을 특징으로 하는 비터비 알고리즘을 적용하는 복호과정에서의 생존경로 역추적 방법.
  2. 제 1항에 있어서, 상기 제 2 단계는, i 번째 시작노드번호 결정회로가 ts(i) = mL + (i-1)L/k 시각에서 초기화되고 초기화 된 다음부터 상기 te(i) = mL + (i-1)L/k + (L-1) 시각까지 내부의 임시저장수단에 상기 매 단위시간마다 상기 방식으로 상기 상태번호를 갱신 저장하고 상기 te(i) 시각에 상기 임시저장수단에 저장되어 있는 상태번호를 출력하도록, 상기 k개의 시작노드번호 결정회로의 동작을 제어하는 것으로, 여기서 상기 변수 i는 1부터 k까지의 정수이며 상기 변수 m은 0부터 1씩 증가하는 정수인 것을 특징으로 하는 비터비 알고리즘을 적용하는 복호과정에서의 생존경로 역추적 방법.
  3. 비터비 알고리즘을 적용하는 복호 과정에서의 생존경로 역추적 장치에 있어서,
    수신된 코드로부터 경로선택을 위한 결정벡터를 생성하는 덧셈비교선택수단;
    상기 덧셈비교선택수단이 출력하는 상기 결정벡터를 저장하는 메모리로서, 상기 메모리는 k+2개의 메모리뱅크를 포함하며, 상기 결정벡터는 상기 k+2개의 메모리뱅크에 순차 순환적으로 저장되는, 단 k는 2이상의 정수이고 각 메모리 뱅크의 사이즈는 L/k이고, L은 생존경로가 하나의 경로로 합병되는 데 걸리는 시간을 나타내는, 생존경로메모리;
    상기 결정벡터가 상기 k+2개의 메모리뱅크에 순차 순환적으로 저장되도록 저장주소를 상기 생존경로메모리에 제공하는 쓰기포인터 생성수단;
    상기 쓰기포인터 생성수단과 동작속도가 동일하며, 입력되는 상태번호를 이용하여 상기 생존경로메모리로부터 생존경로를 출력하기 위한 읽기주소를 상기 생존경로메모리에 제공하는 읽기포인터 생성수단;
    서로 독립적인 k개의 시작노드번호 결정동작을 실행하여 비터비 복호를 위한 트렐리스도에서 현재시각의 각 상태에 이르기까지 L 단위시간 이전의 어떤 상태로부터 시작하였는지 그 시작상태를 결정하는 k개의 시작노드번호결정회로(SNNDC)를 포함하며, 각 시작노드번호 결정회로는, 매 L 단위시간마다 초기화되고, 다음 번 초기화가 될 때까지, 상기 메모리 뱅크에 저장되는 상기 결정벡터 데이터에 의거하여, 상기 덧셈비교선택수단이 선택한 경로에 해당하는 상태번호를 매 단위시간마다 이전의 상태번호가 현재의 새로운 상태번호로 갱신하는 방식으로 저장하고 소정의 출력제어에 의해 저장된 상태번호를 상기 시작상태의 노드번호로서 출력하도록 구성된 시작노드번호결정수단;
    상기 시작노드결정수단의 k개의 시작노드번호결정회로를 L/k 단위시간차를 가지면서 순차 순환적으로 하나씩 선택하여 선택된 시작노드번호결정회로에 저장된 상기 상태번호가 상기 시작상태의 노드번호로서 상기 읽기포인터 생성수단에 공급되도록 제어하는 상태선택수단; 및
    상기 k 개의 시작노드번호결정회로의 갱신 저장, 리셋 및 출력 동작의 제어, 상기 상태선택수단과 상기 쓰기포인터 생성수단, 읽기포인터 생성수단의 동작을 제어하는 제어수단을 포함하는 것을 특징으로 하는 비터비 알고리즘을 적용하는 복호과정에서의 생존경로 역추적 장치.
  4. 제 3항에 있어서, 상기 생존경로 메모리는 표준 2-포트 메모리인 것을 특징으로 하는 비터비 알고리즘을 적용하는 복호과정에서의 생존경로 역추적 장치.
  5. 제 3항에 있어서, 상기 k개의 시작노드번호결정회로 각각은 상태번호를 갱신 저장하기 위한 N 개의 임시저장수단과 N 개의 2r:1 선택수단을 포함하며 여기서 변수 r은 부호율이 r/n이고 구속장인 K인 비터비 콘볼루션 부호화기를 이용한 부호화시 메시지 비트의 수를 나타내며, 상기 변수 n은 코드화 된 비트 수를 나타내고, 상기 변수 N은 관계식 N = 2r(K-1)로 정해지는 상태의 수를 나타내며,
    상기 N 개의 임시저장수단의 각 출력포트와 상기 N개의 선택수단의 각 입력포트는 비터비 콘볼루션 부호화기의 트렐리스도와 같은 배선 형태를 갖도록 연결됨과 동시에 상기 N개의 선택수단의 각 출력단은 상기 N개의 임시저장수단의 각 입력단과 일 대 일로 연결되어, 상기 N개의 선택수단 각각이 자신의 제어포트로 입력되는 상기 결정벡터의 값에 따라서 상기 N개의 임시저장수단에 저장되어 있는 이전의 상태번호를 선택하여 다시 상기 N개의 임시저장수단 각각에 피드백시키는 것에 의해, 상기 N개의 임시저장수단 각각은 현재의 상태번호로 갱신되도록 구성되고,
    상기 N개의 임시저장수단 각각은 상기 제어수단의 제어에 의해 L 시간주기 마다 초기화되고, 상기 출력제어에 의해 임의의 한 임시저장수단은 상기 초기화 직전에 저장된 상태번호를 복호를 시작하기 위한 상기 시작상태의 노드번호로서 상기 상태선택수단을 통해 상기 읽기포인터 생성수단으로 제공하는 것을 특징으로 하는 비터비 알고리즘을 적용하는 복호과정에서의 생존경로 역추적 장치.
KR10-2001-0057214A 2001-09-17 2001-09-17 즉시역추적 알고리즘을 이용한 비터비 복호기용 생존경로메모리 관리 방법 및 그 장치 KR100410995B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2001-0057214A KR100410995B1 (ko) 2001-09-17 2001-09-17 즉시역추적 알고리즘을 이용한 비터비 복호기용 생존경로메모리 관리 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0057214A KR100410995B1 (ko) 2001-09-17 2001-09-17 즉시역추적 알고리즘을 이용한 비터비 복호기용 생존경로메모리 관리 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20030024185A KR20030024185A (ko) 2003-03-26
KR100410995B1 true KR100410995B1 (ko) 2003-12-18

Family

ID=27724279

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0057214A KR100410995B1 (ko) 2001-09-17 2001-09-17 즉시역추적 알고리즘을 이용한 비터비 복호기용 생존경로메모리 관리 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR100410995B1 (ko)

Also Published As

Publication number Publication date
KR20030024185A (ko) 2003-03-26

Similar Documents

Publication Publication Date Title
US4905317A (en) Path memory control method in Viterbi decoder
US4606027A (en) Error correction apparatus using a Viterbi decoder
JP5618247B2 (ja) 複数ステップ・トレリスを使用するソフト出力ビタビ検出の方法および装置
US7581160B2 (en) ACS circuit and Viterbi decoder with the circuit
JP3515720B2 (ja) ビタビ復号器
JP2996615B2 (ja) ビタビ復号装置及びその方法
US8375281B2 (en) Method and apparatus for storing survivor paths in a viterbi detector using systematic pointer exchange
US5796756A (en) Survivor memory device in viterbi decoder using trace deletion method
JPH10117149A (ja) ビタービ復号化器用トレースバック装置及びトレースバック方法
US5257263A (en) Circuit for decoding convolutional codes for executing the survivor path storage and reverse scanning stage of a Viterbi algorithm
US7590928B2 (en) Apparatus and method for Viterbi decoding
US8032818B2 (en) Method and apparatus for storing survivor paths in a Viterbi detector using input-dependent pointer exchange
KR100410995B1 (ko) 즉시역추적 알고리즘을 이용한 비터비 복호기용 생존경로메모리 관리 방법 및 그 장치
KR100282966B1 (ko) 복호장치에서 엠엘상태 선택장치 및 방법
US7149952B2 (en) Memory management algorithm for trellis decoders
KR100725931B1 (ko) 하이브리드 역추적 장치 및 그를 이용한 고속 비터비 복호시스템
JPH1155130A (ja) ビタビ復号器
JP2904271B2 (ja) ビタビ復号器用パスメモリユニットおよび復号方法
EP1192719A1 (en) Viterbi decoder
RU2247471C2 (ru) Компонентный декодер и способ декодирования в системе мобильной связи
JPH10200419A (ja) ビタビ復号方法および装置
KR0148060B1 (ko) Viterbi 복호기의 ACS를 위한 메모리 최적 구조
Manzoor et al. VLSI implementation of an efficient pre-trace back approach for Viterbi algorithm
KR100478835B1 (ko) 고속 비터비 디코딩 장치
KR20010054996A (ko) 비터비 디코더의 어드레스 발생기

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20111130

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20121108

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee