본 발명은 비터비 디코더에 관한 것으로서, 특히 비터비 디코더의 가산비교선택(ACS) 장치를 개선하여 디코딩 율을 정수배로 높이기에 적당하도록 한 비터비 디코더에 관한 것이다.
일반적으로 콘벌루션 엔코더(Convolution Encoder)의 현재 콘벌루션 엔코딩된 데이터는 이전의 콘벌루션 엔코딩된 데이터에 의존하므로 콘벌루션 엔코더를 통해 콘벌루션 엔코딩되어 출력되는 데이터가 모두 콘벌루션 엔코더의 출력값이 되는 것이 아니고, 이전의 입력값(이를 상태(State)라 한다)에 따라 제한된 파형만을 출력하게 된다.
따라서, 비터비 디코더는 수신부에서 수신되는 수신 파형을 관찰하여 가장 가능성 있는 입력값을 추정한다.
그리고 각 상태마다 2개의 경로(path)가 만나므로 각 상태마다 2개의 경로의 현재의 거리값을 계산하며, 계산된 현재 거리값을 비교하여 그중 작은 값을 갖는 경로를 생존경로라 한다.
비터비 알고리즘(Viterbi Algorithm : VA)은 통신에서 콘벌루션 코드(Convolution Code)로 알려진 에러 정정 코드(Error Correction Code)의 디코딩(Decoding)을 위해 널리 사용되며, 또한 타켓 트래킹(Target Tracking), 패턴(Pattern) 인식의 분야에서도 사용된다.
이하 첨부된 도면을 참조하여 종래 비터비 알고리즘을 설명하기로 한다.
도 1은 일반적인 비터비 알고리즘(VA)을 사용하는 통신 시스템을 나타낸 도면이다.
여기서 소오스(Source)(1)로부터 메모리없는(Memoryless) 2원 대칭의 통신 채널(BSC : Binary Symmetric Channel)(3)을 통해 리셉터(Receptor)(5)로 비트(Bit)의 시퀀스(Sequence)가 보내진다. 이때, 통신 채널(Channel)(3)의 잡음 때문에 보내지는 비트(Bit)의 시퀀스는 일부가 손상을 받을 수 있고, 따라서 에러(Error)를 포함한 메시지(Message)가 수신된다. 따라서 수신한 데이터(Data)에서 가능한한 에러(Error)를 정정하여야 한다.
여기서 콘벌루션 엔코더(2)는 M개의 쉬프트 레지스터(Shift Register)로 구성되어 있고, 쉬프트 레지스터는 입력으로부터 K 비트(Bit)를 동시에 쉬프트(Shift)하여 입력하고, 레지스터(Register)에 저장된 비트(Bit)로부터 논리적 연산(Logical Operation)을 수행하여 N 비트(Bit)의 출력을 만든다. 이때 콘벌루션 엔코더(Encoder)(2)는 동시에 입력된 것보다 많은 비트(Bit)를 출력한다. 이러한 엔코딩 스킴(Encoding Scheme)을 M*N, M*K 콘벌루션 엔코딩(Convolutional Encoding)이라 한다.
도 2는 일반적인 콘벌루션 엔코더를 나타낸 도면이다.
도 2에 나타낸 콘벌루션 엔코더는 엔코딩 스킴을 M = 1, N = 2, K = 5인 예이다. 두개의 출력에 대한 논리적 연산(Logical Operation)은 다음과 같다.
O0(N) = S(N) + S(N-3) + S(N-4)
O1(N) = S(N) + S(N-1) + S(N-3) + S(N-4)
이때, + 는 모듈로 2(Modulo 2) 연산이다.
코드(Code)는 심볼(Symbol)처럼 보일 것이고, 채널(Channel)상에서 손상되어 리셉터(Receptor)(5)가 잘못 판단할 수도 있다. 하지만 엔코딩 스킴(Encoding Scheme)에 의해 하나의 출력 심볼(Symbol)은 마지막 입력 뿐 아니라, 소오스(1)로부터 입력된 이전 비트(Bit)에 대한 정보를 포함한다.
또한 잡음 환경 안에서도 이전의 수신 신볼(Observation Symbol) 그리고 이어지는 다음 수신 심볼(Observation Symbol)을 사용하여 원래의 심볼(Symbol)을 디코드(Decode)할 수 있는 기술이 비터비 디코딩 알고리즘(Viterbi Decoding Algorithm)이다.
엔코더(Encoder)를 유한상태머신(Finite State Machine ; FSM)으로 나타내고 유한상태머신(FSM)의 상태는 쉬프트 레지스터(Shift Register)의 왼쪽 4 비트(Bits)를 이용하여 표현하고, 4번째 비트(Bit S4)를 최상위 비트(MSB)로 생각하면, 도 2에 나타낸 콘볼루션 엔코더는 도 3에 나타낸 유한상태머신(FSM)으로 표현할 수 있다.
도 3은 일반적인 유한상태머신을 나타낸 도면이다.
도 3에서 실선은 '0'에 의한 천이(Transition)이고, 점선은 '1'에 의한 천이이다.
만약 도 2의 콘벌루션 엔코더에 상태 S4, S3, S2, S1 = '1,0,1,0'이 순차적으로 입력되었다면, 현재 상태는 '1010'B = 10d(십진수 10)이다. 이어서, 그 다음소오스(S)의 입력이 '0'이면, 상태 S4, S3, S2, S1 = '0101'B = 5d이되며, 출력 O1O0= '10'이 된다. 그러나, 그 다음 소오스(S)의 입력이 '1'이라면, 상태 S4, S3, S2, S1 = '1101'B = 13d, 출력 O1O0= "01" 이 된다.
시간상에서 이러한 유한상태머신(FSM)의 천이(Transition)을 트렐리스(Trellis)라고 불리는 시간과 상태의 2차원의 그래프로 나타낼 수 있다. 각 노드(Node)는 유한 상태 머신의 상태를 나타내고, 각 화살표는 수신된 소오스에 따른 가능한 천이을 나타낸다.
도 4는 도 3에 나타낸 유한상태머신에 연관된 트렐리스 다이어그램(Trellis Diagram)이다.
비터비 알고리즘(VA)은 원래의 전송된 비트(Bit)의 시퀀스(Sequence)를 복구하기 위해 유한상태머신(FSM)에 의해 생성된 심볼(Symbol)을 관찰하고, 이전의 트렐리스(Trellis) 구조 그리고 수신 심볼(Observation Symbol)과 유한상태머신(FSM)의 천이(Transition)에 연관된 메트릭스(Metrics)의 셋(Set)을 이용한다.
다음에 이어질 최대유사경로(Most Likely Path)의 트렐리스(Trellis)를 통해 가능한 경로의 값(Cost)을 계산하기 위해 이러한 메트릭스(Metrics)가 이용된다.
이러한 경로(Path)는 생존경로(Survivor Path)라고 하고, 경로를 결정하는 개연성 기능(Likelihood Function)은 앞에서도 설명한 바와 같이 디스턴스(Distance)의 계산 값(거리 값)이 작은 것으로 한다.
이와 같은 비터비 디코더의 알고리즘(Algorithm)은 다음과 같다.
Initialize :
At Time T = 0
SM[Initial_State] = 0 ;
For State I in 0 To Number_Of_States Except the Initial_State
SM[I] = Maximm_Possible_Value ;
End For ;
Calculation :
For Time T in 1 To Max_Time
For Current_State N in 0 To Number_Of_State
For Previous_State M in 0 To Number_Of_State
SMt[N] = Min{ SMt-1[M] + DIST[OS,Wmn] } ;
End For ;
PATH[N,T] = M Such That SMt-1[M] + DIST[OS,Wmn] = SMt[N];
End For ;
End For ;
Decision :
At Time T = Max_Time
For State N in 0 To Number_Of_State
M = Min { SMt[N] } ;
End For ;
M = N Such That SMt[N] = M ;
For Time T in Max_Time Downto 1
M = STATE[M, T] ;
End For ;
Generates_Symbol_For_The_Last_Transition ;
End For ;
여기서, T는 시간이고, SMt[S]는 시간 T에서 상태 S의 메트릭스(Metrics)이다. 그리고, DIST[OS, Wmn] : OS(Observed Symbol)는 현재 관찰된, 수신된 심볼(Observed Symbol)과 Wmn(상태 M에서 N으로의 천이(Transition) 시 유한상태머신(FSM)에 발생하는 가중치(Weight)) 사이의 거리이다.
또한, Path[]는 시간에 대해 각 상태로 천이하는 최대유사경로(Most Likely Path)를 저장하는 메모리이며. M은 : 최소 메트릭(Minimum Metric) M의 상태이다.
이와 같은 알고리즘을 설명하면,
초기화 :
상태 메트릭스(Metrics) SM[](생존경로)의 초기 상태를 가장 작은 값으로, 그 이외의 상태는 가장 큰 값으로 초기화한다.
계산 :
시간 T를 증가하고 최대 시간(Max Time)까지,
모든 현재 상태의 경우에 대해
이전 상태에서 현재 상태로 모든 천이(Transition)에 대해 이전 상태 메트릭스(Metrics)의 값과,이전 상태에서 현재 상태로의 천이(Transition)의 Weight와 현재의 수신된 심볼(Observed Symbol) 사이의 거리를 합하여 이중 가장 작은 값을 선택하여 이를 상태 메트릭스(Metrics)에 저장한다. 그리고 이때의 천이 경로(Transition Path)를 저장한다.
최대(Max) 시간까지, 모든 현재 상태에 대해서, 모든 이전 상태에서 현재 상태로의 천이에 대해서 위의 과정을 수행한다.
결정 :
최대(Max) 시간까지 위의 계산 과정을 수행하고, 상태 메트릭(Metric)의 값 중 가장 작은 값을 찾아 그 때의 상태를 취한다. 이 때의 상태를 최대유사경로(Most Likely Path)라고 하며 위의 계산 과정 중 저장된 천이 경로(Transition Path)를 역으로 따라가면 초기 시간에서 최대(Max) 시간까지의 경로(Path)를 알 수 있고, 이를 이용해서 송신된 비트(Bit)를 복구할 수 있게 된다.
도 5는 종래 비터비 디코더의 블록 구성도이다.
종래 비터비 디코더는 이전 상태의 생존경로 메트릭(Surviver Path Metric : SM) 메모리부(12)의 이전 상태의 생존경로 메트릭(I,J)과 수신 심볼(Observation Symbol)(OS)을 입력으로 현재 상태의 생존경로 메트릭(SM) 값(K,L)을 생성하는 가산비교선택(Add Compare Select)부(11)와, 상기 가산비교선택부(11)에서 만들어진 현재 상태의 생존경로(SM) 값(K,L)을 저장하는 생존경로 메트릭 메모리부(SurvivorPath Metric Memory : SM MEM)(12)와, 가산비교선택부(11)에서 만들어진 생존경로 메트릭 값(K,L) 중 가장 작은 값의 상태를 구하는 최단경로 생성부(Generate MINimum PATH : GEN MIN_PATH)(13)와, 이전 상태에서 현재 상태로 천이(Transition)할 때 경로(PATH)를 저장하는 트래이스 백 테이블(Trace-Back Table : TBT)(14)과, 최단경로(Minimum Path) 값을 가지는 상태로부터 트래이스 백(Trace Back)하여 최대유사경로(Most Likely Path)를 구하고, 디코딩된 디코드 비트(Decoded Bit)를 출력하는 트레이스 백부(Trace-Back)(15)로 구성된다.
이와 같은 종래 비터비 디코더에서는 가산비교선택부(11)가 하나만 구성되어 있는데 이는 이전 상태 생존경로 메모릭 메모리(SM MEM) 값을 차례로 읽어 가산비교선택(ACS)을 수행하고(즉, 현재 상태의 생존경로 메트릭(Metric) 값(K,L)을 생성하고) 이를 이미 읽은 생존경로 메트릭 메모리부(12)에 차례로 다시 적어 넣는다.
따라서 같은 생존경로 메트릭 메모리부(12)에 써지는 생존경로 메트릭(SM) 값의 상태는 시간에 따라 달라지고 따라서 어드레스 제어(Address Control)는 이 회로의 중요한 부분이 된다.
또한 이러한 과정을 모든 상태(State)에 대해서 수행해야만 한 순간에 발생한 수신 심볼(OS)에 대한 처리를 마치는 것이 되므로 실제로 실시간 시스템에서 가산비교선택(ACS)과 생존경로 메트릭 메모리(SM MEM)는 실제로 비터비 디코더(Viterbi Decoder) 전체가 입력되는 수신 심볼(OS)의 입력 레이트(Rate)에 대해 상태의 개수 배(실제로는 상태의 개수 배 + α) 이상의 사이클(cycle)로 가산비교선택(ACS) 처리를 해야 한다.
도 6은 도 5에 나타낸 비터비 디코더의 가산비교선택부(ACS)를 상세히 나타낸 블록 구성도이다.
종래 비터비 디코더의 가산비교선택부(ACS)(11)는 현재 상태에서 다음 상태로 천이(Transition)할 때의 가중치(Weight)를 생성하는 가중치 생성부(Generate Weight Of Transition)(21)와, 수신된 심볼(Observed Symbol : OS)과 가중치 생성부(21)의 가중치(Weight)와의 디스턴스(Distance)를 생성하는 디스턴스 생성부(22)와, 디스턴스 생성부(22)에서 출력되는 현재 수신된 심볼(OS)과 가중치와의 거리와 이전 상태의 생존경로 메트릭(I,J)을 가산하는 제 1부터 제 4 가산기(23.24.25.26)와, 상기 제 1, 제 3 가산기(23,25)의 가산 결과에 따른 현재 상태의 생존경로 메트릭(K,L)을 생존경로 메트릭 메모리부(12) 및 최단경로 생성부(13)로 출력하는 제 1 비교부(27)와, 상기 제 2, 제 4 가산기(24,25)의 가산 결과에 따른 이전 상태에서 현재 상태로의 천이하는 경로(PATH_K 또는 PATH_L)를 트래이스 백 테이블(14)로 출력하는 제 2 비교부(28)로 구성된다.
여기서, I, J는 이전 상태의 생존경로 메트릭이고, K, L은 현재 상태의 생존경로 메트릭이며, D_I2K, D_I2L, D_J2K, D_J2L는 현재 수신 심볼(OS)과 가중치(Weight)와의 디스턴스(Distance)이고, WOT_I2K, WOT_I2L, WOT_J2K, WOT_J2L은 이전 상태의 생존경로 메트릭 I, J에서 현재 상태 생존경로 메트릭 K, L로 천이시 유한 상태 머신(FSM)이 발생하는 가중치이다.
이와 같은 종래 가산비교선택부(11)에서는 디스턴스(Distance)와 이전 상태의 생존경로 메트릭(SM)를 더하고, 더한 값 중 현재의 같은 상태로천이(Transition)하는 값에서 작은 값을 선택(Select)하여 출력으로 내보낸다.
이와 같은 종래 비터비 디코더의 동작을 도 2의 콘벌루션 인코더(Convolutional Encoder)로 생성된 코드(Code)와 도 4의 트렐리스 다이어그램(Trellis Diagram)에서 시간 Ti의 생존경로 메트릭(SM)으로부터 시간 Ti+1, Ti+2의 생존경로 메트릭(SM)을 구하기 위해 다음과 같이 동작한다.
우선, 도 4의 유한상태머신에 연관된 트렐리스 다이어그램의 Ti에서 생존경로 메트릭 메모리부(SM MEM)(12)로부터 이전 상태의 생존경로 메트릭(SM)(I,J)을 읽고 연속된 2개의 생존경로 메트릭(I,J)을 가산비교선택부(11)로 입력한다. 최초에 구동을 하는 경우를 예를 들면 도 3에서 '0,1'을 생존경로 메트릭으로 입력한다.
이때, 가산비교선택부(11)는 수신 심볼(OS)을 참조하여 현재 상태의 생존경로 메트릭(K, L)인 '0,8'을 출력하게 되고, 이를 생존경로 메트릭 메모리부(SM MEM)(12)에 저장한다.
계속해서 가산비교 선택부(11)는 Ti의 생존경로 메트릭 메모리부(12)로부터 이전 상태의 생존경로 메트릭(I,J)으로 '2,3'의 값을 읽고 수신 심볼(OS)을 참조하여 현재 상태의 생존경로 메트릭(K,L)인 '1,9'를 출력하고, 이를 생존경로 메트릭 메모리부(12)에 저장한다.
그다음 가산비교 선택부(11)는 Ti의 생존경로 메트릭 메모리부(12)로부터 이전 상태의 생존경로 메트릭(I,J)으로 '4,5'의 값을 읽고 수신 심볼(OS)을 참조하여 현재 상태의 생존경로 메트릭(K,L)인 '2,10'를 출력하고, 이를 생존경로 메트릭 메모리부(12)에 저장한다.
이어서, 가산비교 선택부(11)는 Ti의 생존경로 메트릭 메모리부(12)로부터 이전 상태의 생존경로 메트릭(I,J)으로 '6,7'의 값을 읽고 수신 심볼(OS)을 참조하여 현재 상태의 생존경로 메트릭(K,L)인 '3,11'를 출력하고, 이를 생존경로 메트릭 메모리부(12)에 저장한다.
그다음 가산비교 선택부(11)는 Ti의 생존경로 메트릭 메모리부(12)로부터 이전 상태의 생존경로 메트릭(I,J)으로 '8,9'의 값을 읽고 수신 심볼(OS)을 참조하여 현재 상태의 생존경로 메트릭(K,L)인 '4,12'를 출력하고, 이를 생존경로 메트릭 메모리부(12)에 저장한다.
계속해서 가산비교 선택부(11)는 Ti의 생존경로 메트릭 메모리부(12)로부터 이전 상태의 생존경로 메트릭(I,J)으로 '10,11'의 값을 읽고 수신 심볼(OS)을 참조하여 현재 상태의 생존경로 메트릭(K,L)인 '5,13'를 출력하고, 이를 생존경로 메트릭 메모리부(12)에 저장한다.
그다음 가산비교 선택부(11)는 Ti의 생존경로 메트릭 메모리부(12)로부터 이전 상태의 생존경로 메트릭(I,J)으로 '12,13'의 값을 읽고 수신 심볼(OS)을 참조하여 현재 상태의 생존경로 메트릭(K,L)인 '6,14'를 출력하고, 이를 생존경로 메트릭 메모리부(12)에 저장한다.
이어서 가산비교 선택부(11)는 Ti의 생존경로 메트릭 메모리부(12)로부터 이전 상태의 생존경로 메트릭(I,J)으로 '14,15'의 값을 읽고 수신 심볼(OS)을 참조하여 현재 상태의 생존경로 메트릭(K,L)인 '7,15'를 출력하고, 이를 생존경로 메트릭메모리부(12)에 저장한다.
이와 같은 과정을 모든 Ti 생존경로 메트릭에 대해 수행하면 Ti+1의 생존경로 메트릭이 생존경로 메트릭 메모리부(12)에 저장된다.
이어서, Ti+1 에서 생존경로 메트릭 메모리부(SM MEM)(12)로부터 이전 상태의 생존경로 메트릭(SM)(I,J)을 읽고 연속된 4개의 생존경로 메트릭을 가산비교선택부(11)로 입력한다. 이때, 도 4에 나타낸 바와 같이 '0,8,1,9'의 값을 가산비교선택부(11)에 입력한다.
그러면, 가산비교선택부(11)는 수신 심볼(OS)을 참조하여 현재 상태의 생존경로 메트릭(K, L)인 '0,8,4,12'를 출력하고 이를 생존경로 메트릭 메모리부(SM MEM)(12)에 저장한다.
계속해서 가산비교 선택부(11)는 Ti+1의 생존경로 메트릭 메모리부(12)로부터 이전 상태의 생존경로 메트릭(I,J)으로 '2,3,10,11'의 값을 읽고 수신 심볼(OS)을 참조하여 현재 상태의 생존경로 메트릭(K,L)인 '1,9,5,13'를 출력하고, 이를 생존경로 메트릭 메모리부(12)에 저장한다.
그다음 가산비교 선택부(11)는 Ti+1의 생존경로 메트릭 메모리부(12)로부터 이전 상태의 생존경로 메트릭(I,J)으로 '4,12,5,13'의 값을 읽고 수신 심볼(OS)을 참조하여 현재 상태의 생존경로 메트릭(K,L)인 '2,10,6,14'를 출력하고, 이를 생존경로 메트릭 메모리부(12)에 저장한다.
이어서 가산비교 선택부(11)는 Ti+1의 생존경로 메트릭 메모리부(12)로부터 이전 상태의 생존경로 메트릭(I,J)으로 '6,14,7,15'의 값을 읽고 수신 심볼(OS)을참조하여 현재 상태의 생존경로 메트릭(K,L)인 '3,11,7,15'를 출력하고, 이를 생존경로 메트릭 메모리부(12)에 저장한다.
이와 같은 과정을 모든 Ti+1 생존경로 메트릭에 대해 수행하면 Ti+2의 생존경로 메트릭이 생존경로 메트릭 메모리부(12)에 저장된다. 이어서, Ti+2 에서 생존경로 메트릭 메모리부(SM MEM)(12)로부터 이전 상태의 생존경로 메트릭(SM)(I,J)을 읽고 연속된 8개의 생존경로 메트릭을 가산비교선택부(11)로 입력한다.
그러면, 가산비교선택부(11)는 수신 심볼(OS)을 참조하여 현재 상태의 생존경로 메트릭(K, L)인 '0,8,4,12,1,5,9,13'을 출력하고 이를 생존경로 메트릭 메모리부(SM MEM)(12)에 저장한다.
계속해서 가산비교 선택부(11)는 Ti+2의 생존경로 메트릭 메모리부(12)로부터 이전 상태의 생존경로 메트릭(I,J)으로 '0,8,4,12,1,5,9,13'의 값을 읽고 수신 심볼(OS)을 참조하여 현재 상태의 생존경로 메트릭(K,L)인 '0,2,4,6,8,10,12,14'를 출력하고, 이를 생존경로 메트릭 메모리부(12)에 저장한다.
그리고 가산비교 선택부(11)는 Ti+2의 생존경로 메트릭 메모리부(12)로부터 이전 상태의 생존경로 메트릭(I,J)으로 '2,10,6,14,3,11,7,15'의 값을 읽고 수신 심볼(OS)을 참조하여 현재 상태의 생존경로 메트릭(K,L)인 '1,3,5,7,9,11,13,15'를 출력하고, 이를 생존경로 메트릭 메모리부(12)에 저장한다.
이와 같은 과정을 모든 Ti+2 생존경로 메트릭에 대해 수행하면 Ti+3의 생존경로 메트릭이 생존경로 메트릭 메모리부(12)에 저장된다.
앞서 설명한 바와 같이 비터비 디코더(Viterbi Decoder)가 입력되는 수신 심볼의 입력 레이트(Rate)에 대해 상태(state)의 개수 배 이상으로 동작해야 한다는 것은 비터비 디코더(Viterbi Decoder)의 디코딩 율(Decoding Rate)에 대한 제한 사항이 된다. 예를 들면, 콘벌루션 엔코더(Convolution Encoder)의 구속장(Constraint Length) K가 9 인 코드(Code)는 디코드(Decode)시, 비터비 디코더는 256개의 상태(State)를 가지고 동작하게 되고, 비터비 디코더를 최대 50MHz로 동작시키는 경우 50MHz/256이므로 약 0.1953M 미만의 디코딩 율(Decoding Rate)을 가지게 된다. 실제로는 이보다 더 작은 디코딩 율을 가진다.
이와 같은 종래 비터비 디코더에 있어서는 다음과 같은 문제점이 있었다.
첫째, 채널 환경이 멀티미디어화됨에 따라 비터비 디코더 역시 더욱 많은 양과 빠른 속도의 디코딩율이 요구되지만 비터비 디코더의 동작 클럭을 무한정 향상하는 것 역시 한계가 있다.
둘째, 비터비 디코더는 생존경로 메트릭 메모리부와 트래이스 백 테이블이 차지하는 면적이 시스템 상에서 다른 부분에 비해 크게 부담이 되므로 하나의 시스템이 여러 개의 비터비 디코더를 구비하는 경우 역시 시스템의 커다란 문제로 작용할 수밖에 없다.
셋째, 생존경로 메트릭 메모리를 읽는 과정, 가산비교선택부의 동작 및 생존경로 메트릭 메모리에 쓰는 과정은 회로 상에서 시간적으로 동시에 일어나므로 Ti에서 Ti+1로 생존경로 메트릭을 만드는 과정 즉, 하나의 수신된 심볼을 처리하는 것은 시간적으로 상태의 개수만큼의 사이클(cycle)을 필요로 하므로 디코딩 율을 향상하는데 한계가 된다.
이하 본 발명의 바람직한 일 실시 예에 따른 구성 및 작용을 첨부된 도면을 참조하여 설명한다.
도 7은 본 발명에 따른 비터비 디코더의 구조를 나타낸 블록 구성도이다.
본 발명에 따른 비터비 디코더는 생존경로 메트릭(Surviver Path Metric : SM) 메모리부(38)의 이전 상태의 제 1부터 제 n 번째 생존경로 메트릭(I1,J1), (I2,J2)···(In,Jn)을 차례로 리드하고, 제 1부터 제 n 번째 수신 심볼(Observation Symbol)(제 1 OS, 제 2 OS ···제 n OS)을 각각 수신하여 제 1부터 제 n 번째 현재 상태의 생존경로 메트릭(SM) 값(K1,L1),(K2,L2)···(Kn,Ln)을 생성하는 제 1부터 제 n 가산비교선택(Add Compare Select)부(31,33,35,37)와, 상기 제 1부터 제 n-1 가산비교선택부(ACS)(31,33,35)에서 만들어진 현재 상태의 생존경로 메트릭(SM) 값(K1,L1),(K2,L2)···(Kn-1,Ln-1)을 저장하는 제 2부터 제 n ACS부 입력시간 스위치부(32,36,36)와, 상기 제 n 가산비교선택부(37)에서 만들어진 현재 상태의 메트릭 메모리 값(Kn,Ln)을 저장하는 가상 경로 메트릭 메모리부(Survivor Path Metric Memory : SM MEM)(38)와, 제 1부터 제 n 가산비교선택부(31)(33)(35)(37)에서 만들어진 생존경로 메트릭값(K1,L1),(K2,L2)···(Kn-1,Ln-1)(Kn,Ln)의 각각의 경우에 대하여 가장 작은 값의 상태를 구하는 최단경로 생성부(Generate MINimum PATH : GEN MIN_PATH)(39)와, 이전 상태에서 현재 상태로 천이(Transition)할 때 경로(PATH)를 저장하는 트래이스 백 테이블(Trace-Back Table : TBT)(40)과, 최단경로(Minimum Path) 값을 가지는 상태로부터 트래이스 백(Trace Back)하여 최대유사경로(Most Likely Path)를 구하고, 디코딩된 디코드 비트(Decoded Bit)를 출력하는 트레이스 백부(Trace-Back)(41)로 구성된다.
이와 같은 본 발명 비터비 디코더의 특징은 제 1부터 제 n 가산비교선택부(31,33,35,37)를 순차적으로 구성하고, 각 가산비교선택부(31,33,35,37)사이에 제 2부터 제 n ACS 입력시간 스위치부(32,34,36)를 구성한 것이다. 이때, 하드웨어가 많이 추가되는 것처럼 보이지만, 비터비 디코더에서는 하드웨어 크기의 대부분을 생존경로 메트릭 메모리부(38)와, 트레이스 백 테이블(40)이 차지하기 때문에 하드웨어 크기에는 크게 영향을 미치지 않는다.
여기서, I, J는 이전 상태의 생존경로 메트릭이고, K, L은 현재 상태의 생존경로 메트릭이다.
이와 같은 본 발명 비터비 디코더의 동작을 도 2의 콘벌루션 인코더(Convolutional Encoder)로 생성된 코드(Code)와 도 4의 트렐리스 다이어그램(Trellis Diagram)에서 시간 Ti의 생존경로 메트릭(SM)으로부터 시간 Ti+2의 생존경로 메트릭(SM)을 구하는 방법을 설명하기로 한다. 이때, 제 1부터 제 n 가산비교 선택부(31,33,35,37)중 제 1, 제 2 가산비교선택부(31,33)와 제 2 가산비교선택부 입력시간 스위치부(32)로 구성된 비터비 디코더를 예로 하여 설명하기로 한다.
우선, 도 4의 유한상태머신에 연관된 트렐리스 다이어그램의 Ti를 참조하여 제 1 가산비교선택부(31)에서 생존경로 메트릭 메모리부(SM MEM)(38)로부터 이전 상태의 생존경로 메트릭(SM)(I1,J1)으로 '0,1'을 읽는다.
그러면, 제 1 가산비교선택부(31)는 제 1 수신심볼(OS)을 참조하여 현재 상태의 생존경로 메트릭(K11,L11)인 '0,8'을 출력하고 이를 제 2 ACS부 입력시간 스위치부(32)에 저장한다. 이때, 트레이스 백 테이블(40)로는 첫 번째 최단유사경로(PATH_L1,PATH_K1)를 출력한다.
그 다음, 제 1 가산비교선택부(31)는 생존경로 메트릭 메모리부(38)에서 출력되는 다음 번 이전 상태 생존경로 메트릭(I1,J1)으로 '2,3'을 읽고, 제 1 수신심볼(OS)을 참조하여 현재 상태의 생존경로 메트릭(K12,L12)인 '1,9'를 제 2 ACS부 입력시간 스위치부(32)에 저장한다. 따라서, 제 2 ACS부 입력시간 스위치부(32)에는 두 개의 현재상태의 생존경로 메트릭(K11,L11),(K12,L12)인 '0,8''1,9'가 저장된다.
이어서, 제 2 ACS부 입력시간 스위치부(32)에 저장된 두 개의 현재상태의 생존경로 메트릭(K11,L11),(K12,L12)인 '0,8''1,9'의 4개의 생존경로 메트릭중 '0,1'의 값을 갖는 K11,K12두 개를 입력된 순서에 맞추어 제 2 가산비교선택부(33)에 두 번째 이전 상태 메트릭(I2,J2)으로 입력한다. 이때, 제 2 가산비교선택부(33)에 수신된 두 번째 이전상태 메트릭(I2,J2)인 '0,1'은 제 2 가산비교선택부(33)에 입력되는 제 2 수신심볼 값에 따라 두 번째 생존경로 메트릭(K2,L2)인 '0,8'이 생존경로 메트릭 메모리부(38)에 저장된다.
계속해서, 제 2 ACS부 입력시간 스위치부(32)에 저장된 두 개의 현재상태의 생존경로 메트릭중 남아 있는 '8,9' 의 값을 갖는 L11,L12두 개를 입력된 순서에 맞추어 제 2 가산비교선택부(33)에 두 번째 이전 상태 메트릭(I2,J2)으로 입력하면 두 번째 이전상태 메트릭(I2,J2)인 '8,9'는 제 2 가산비교선택부(33)에 입력된 제 2 수신심볼 값에 따라 두 번째 현재상태 생존경로 메트릭(K2,L2)인 '4,12'가 생존경로 메트릭 메모리부(38)에 저장된다. 따라서 실제적으로 생존경로 메트릭 메모리부(38)에 저장된 현재상태 메트릭은 도 4에서 설명한 Ti+2의 생존경로 매트릭값인 '0,8,4,12'가 저장된다. 그리고, 트레이스 백 테이블(40)에는 두 번째 최단유사경로(PATH_L2,PATH_K2)를 출력한다.
그 다음, 도 4의 유한상태머신에 연관된 트렐리스 다이어그램의 Ti를 참조하여 생존경로 메트릭 메모리부(SM MEM)(38)로부터 이전 상태의 생존경로 메트릭(SM)(I1,J1)으로 '4,5'를 제 1 가산비교선택부(31)로 입력한다.
그러면, 제 1 가산비교선택부(31)는 제 1 수신심볼(OS)을 참조하여 현재 상태의 생존경로 메트릭(K11,L11)인 '2,10'을 출력하고 이를 제 2 ACS부 입력시간 스위치부(32)에 저장한다. 이때, 트레이스 백 테이블(40)로는 첫 번째 최단유사경로(PATH_L1,PATH_K1)를 출력한다.
그 다음, 제 1 가산비교선택부(31)는 생존경로 메트릭 메모리부(38)에서 출력되는 다음 번 이전 상태 생존경로 메트릭(I1,J1)으로 '6,7'을 읽고, 제 1 수신심볼(OS)을 참조하여 현재 상태의 생존경로 메트릭(K12,L12)인 '3,11'를 제 2 ACS부 입력시간 스위치부(32)에 저장한다. 이때, 제 2 ACS부 입력시간 스위치부(32)에는 두 개의 현재상태의 생존경로 메트릭(K11,L11),(K12,L12)인 '2,10''3,11'가 저장된다.
이어서, 제 2 ACS부 입력시간 스위치부(32)에 저장된 두 개의 현재상태의 생존경로 메트릭(K11,L11),(K12,L12)인 '2,10''3,11'의 4개의 생존경로 메트릭중 '2,3'의 값을 갖는 K11,K12두 개를 입력된 순서에 맞추어 제 2 가산비교선택부(33)에 두 번째 이전 상태 메트릭(I2,J2)으로 입력한다. 이때, 제 1, 제 2 가산비교선택부(31,33)가 있을 경우를 예로 들어 설명하고 있으므로 제 2 가산비교선택부(33)에 수신된 두 번째 이전상태 메트릭(I2,J2)인 '2,3'은 제 2 가산비교선택부(33)에 입력되는 제 2 수신심볼 값에 따라 두 번째 생존경로 메트릭(K2,L2)인 '1,9'가 생존경로 메트릭 메모리부(38)에 저장된다.
계속해서, 제 2 ACS부 입력시간 스위치부(32)에 저장된 두 개의 현재상태의 생존경로 메트릭중 남아 있는 (L11,L12)인 '10,11' 의 값을 갖는 L11,L12두 개를 입력된 순서에 맞추어 제 2 가산비교선택부(33)에 두 번째 이전 상태 메트릭(I2,J2)으로 입력하면, 두 번째 이전상태 메트릭(I2,J2)인 '10,11'은 제 2 가산비교선택부(33)에 입력된 제 2 수신심볼 값에 따라 두 번째 생존경로 메트릭(K2,L2)인'5,13'이 생존경로 메트릭 메모리부(38)에 저장된다. 따라서 실제적으로 생존경로 메트릭 메모리부(38)에 저장된 현재상태 메트릭은 도 4에서 설명한 Ti+2의 생존경로 매트릭값이 저장되는 것이다. 그리고, 트레이스 백 테이블(40)에는 두 번째 최단유사경로(PATH_L2,PATH_K2)를 출력한다.
이와 같은 과정을 도 4의 유한상태머신에 연관된 트렐리스 다이어그램의 Ti를 참조하여 생존경로 메트릭 메모리부(SM MEM)(38)로부터 이전 상태의 생존경로 메트릭(SM)(I1,J1)으로 '8,9', '10,11' 및 '12,13', '14,15'를 각각 제 1 가산비교선택부(31)에 입력하면, 제 1 가산비교선택부(31)는 제 1 수신심볼을 참조하여 각각 '4,12', '5,13' 및 '5,14' '7,15'의 값을 제 2 ACS부 입력시간 스위치부(32)에 임시로 저장하고, 제 2 ACS부 입력시간 스위치부(32)에서는 '4,12', '5,13' 및 '5,14' '7,15'의 값을 이전 생존경로 메트릭값인 'I2,J2'로 제 2 가산비교선택부(33)로 출력한다.
그러면, 제 2 가산비교선택부(33)에서는 제 2 수신 심볼을 참조하여 생존경로 메트릭 메모리부(38)로 각각 '2,6,10,14' 및 '3,7,11,15'의 현재상태 생존경로 메트릭을 출력한다.
8의 과정을 Ti의 모든 SM을 SM MEM에서 읽을 때까지 수행하면 Ti+2의 SM이 만들어진다.
이와 같은 비터비 디코더의 모든 동작은 회로상에서 시간적으로 동시에 일어나므로 Ti의 생존경로 메트릭으로부터 Ti+2의 생존경로 메트릭을 만드는 과정(제 1, 제 2의 수신심볼에 대한 처리)은 시간적으로 상태의 개수만큼의 사이클(cycle)이 필요하다. 따라서 전형적인 비터비 디코더의 절반만큼의 사이클이 필요하다.
도 4의 트렐리스 다이어그램에서 종래 비터비 디코더가 Ti의 두 개의 생존경로 메트릭으로부터 Ti+1의 두개의 생존경로 메트릭을 생성한다면 본 발명에 따른 비터비 디코더는 Ti의 4개의 SM으로부터 Ti+2의 4개의 SM을 생성한다고 할 수 있다.
그리고, ACS부 입력시간 스위치 및 가산비교입력부를 확장하면 위에서 설명한 바와 같은 디코딩율은 정수배로 향상된다. 하지만 하나씩 증가할 때마다 ACS부 입력시간 스위치의 하드웨어적인 구성은 기하급수적으로 커지고 복잡해진다.
즉, 제 2 ACS부 입력시간 스위치부(32)가 4개의 생존경로 메트릭을 저장하고 스위칭(Switching)해야 한다면, 제 3 ACS부 입력시간 스위치부(32)는 8개를 저장하고 스위칭(Switching)해야 한다.
이상의 설명에서와 같은 본 발명은 멀티미디어 환경에 따라 여러 개의 채널(Channel)을 지원하는 통신 시스템에서 각 채널의 데이터 전송량의 정수배를 디코딩할 수 있는 가산비교선택(ACS)부와 이에 부가되는 ACS부 입력시간 스위치부 부분을 추가하여 비터비 디코더의 디코딩율을 정수배(ACS의 개수 배)만큼 증가할 수 있다.
따라서, 앞으로의 통신 시스템에서 고속의 데이터를 전송하고자 하는 경우, 높은 BER(Bit Error Rate)을 지원하기 위해서 인코딩단의 콘벌루션 엔코더의 구속장 K가 최소 9 이상이 되어야 하는 시스템에서도 비터비 디코더의 디코딩율이 개선함으로써 데이터 전송의 제한을 없앨 수 있다.