KR0171383B1 - Decoding method of rotary convulutional code - Google Patents

Decoding method of rotary convulutional code Download PDF

Info

Publication number
KR0171383B1
KR0171383B1 KR1019950041330A KR19950041330A KR0171383B1 KR 0171383 B1 KR0171383 B1 KR 0171383B1 KR 1019950041330 A KR1019950041330 A KR 1019950041330A KR 19950041330 A KR19950041330 A KR 19950041330A KR 0171383 B1 KR0171383 B1 KR 0171383B1
Authority
KR
South Korea
Prior art keywords
code
decoding
state
result
viterbi algorithm
Prior art date
Application number
KR1019950041330A
Other languages
Korean (ko)
Other versions
KR970031389A (en
Inventor
김진업
어윤
김선영
Original Assignee
양승택
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 양승택, 한국전자통신연구원 filed Critical 양승택
Priority to KR1019950041330A priority Critical patent/KR0171383B1/en
Publication of KR970031389A publication Critical patent/KR970031389A/en
Application granted granted Critical
Publication of KR0171383B1 publication Critical patent/KR0171383B1/en

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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/23Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using convolutional codes, e.g. unit memory codes
    • 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

Landscapes

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

Abstract

본 발명은 순환 길쌈 부호의 순환성을 이용하여 수신된 L개의 코드 심벌에 대하여 비터비 복호를 수행한 후, 계속해서 처음 M개의 코드 심벌에 대하여 복호를 수행함으로써, 통신 채널상의 전송 에러를 보정하기 위한 순환 컨벌루셔널 코드의 복호화 방법에 관한 것으로서, 수신된 코드에 대하여 상기 비터비 알고리즘을 수행하는 제1과정과, 상기 제1과정의 결과로 생성된 코드에 의해 수신된 신호의 처음부터 구속장 길이 까지의 신호에 대하여 다시 비터비 알고리즘을 수행하는 제2과정과, 상기 제2과정의 결과로 생성된 코드의 초기상태와 최종상태가 같은지를 판단하는 제3과정과, 상기 제3과정의 판단결과 그 초기상태와 최종상태가 같으면 종료하고, 같지않으면 그 초기상태와 최종상태의 중간시점의 생존경로의 상태에서 시작하고 그 상태에서 끝나는 코드를 선택하여 그 코드에 의해 제1과정의 결과로 생성된 코드에 대하여 비터비 알고리즘을 수행한 후, 상기 제3과정 이후를 반복 수행하는 제5과정으로 구성되어, 종래의 선형 컨벌루셔널 코드의 실용화를 이루고 전송률 손실없이 임의의 크기의 정보비트를 부호화하는 것이 가능하기 때문에 가변 비트 길이의 부호화에 탄력적으로 적용이 가능하다는 효과가 있다.The present invention performs the Viterbi decoding on the received L code symbols by using the cyclic convolutional code cyclicity, and then performs decoding on the first M code symbols to correct transmission errors on the communication channel. A method of decoding a cyclic convolutional code, the method comprising: a first process of performing the Viterbi algorithm on a received code; and a constraint length from the beginning of a signal received by a code generated as a result of the first process A second step of performing a Viterbi algorithm again on a signal up to a length; a third step of determining whether an initial state and a final state of a code generated as a result of the second step are the same; and determining the third step If the initial state and the final state are equal, the process ends. If not, it starts from the state of survival path between the initial state and the final state, and ends at that state Consists of a fifth process of selecting a code, performing a Viterbi algorithm on the code generated as a result of the first process by the code, and then repeatedly performing the third and subsequent processes. Since it is possible to realize the practical use of the code and to code information bits of any size without loss of data rate, it is possible to flexibly apply to encoding of variable bit length.

Description

순환 컨벌루셔널 코드의 복호화 방법Decoding Method of Cyclic Convolutional Code

제1도는 종래기술인 제로 테일 컨벌루셔널 부호기의 개념도.1 is a conceptual diagram of a conventional zero tail convolutional encoder.

제2도는 종래기술인 테일 바이팅 컨벌루셔널 부호기의 개념도.2 is a conceptual diagram of a tail biting convolutional encoder of the prior art.

제3도는 본 발명의 일실시예에 따른 순환 컨벌루셔널 코드의 복호화 방법에 대한 처리 흐름도.3 is a flowchart illustrating a method of decoding a cyclic convolutional code according to an embodiment of the present invention.

제4도는 본 발명에 따른 비교적 간단한 일 실시예의 부호기를 나타낸 도면.4 shows an encoder of one relatively simple embodiment according to the invention.

제5도는 제안된 복호화 방법과 기존의 복호화 방법의 성능 비교도.5 is a performance comparison diagram between the proposed decoding method and the conventional decoding method.

본 발명은 순환 컨벌루셔널 코드의 복호화 방법에 관한 것으로, 특히, 순환 길쌈 부호의 순환성을 이용하여 수신된 L개의 코드 심벌에 대하여 비터비 복호를 수행한 수 계속해서 처음 M개의 코드 심벌에 대하여 복호를 수행함으로써, 통신 채널상의 전송에러를 보정하는 순환 컨벌루셔널 코드의 복호화 방법에 관한 것이다. 일반적으로, 디지털 무선 통신 시스템에서 송신단은 소스 부호기, 채널 부호기, 변조기 등으로 구성되며, 수신단은 복조기, 채널 복호기, 소스 복호기 등으로 구성된다.The present invention relates to a method of decoding a cyclic convolutional code. In particular, the number of Viterbi decodings performed on L code symbols received using cyclic convolutional code cyclicity is performed on the first M code symbols. By performing decoding, the present invention relates to a method of decoding a cyclic convolutional code that corrects a transmission error on a communication channel. In general, in a digital wireless communication system, a transmitter includes a source encoder, a channel encoder, a modulator, and the like, and a receiver includes a demodulator, a channel decoder, a source decoder, and the like.

이 때, 상기 소스부호기와 복호기는 전송채널 상의 점유대역을 줄이기 위해 데이터를 축소하고 다시 원래의 데이터로 복원하는 기능을 수행하고, 상기 변조기와 복조기는 확산 주파수 대역으로 변조된 데이터를 반송 주파수에 실어서 전송하고 또한 전송된 신호를 수신하여 복조하는 장치로서, 그 변조기와 복조기를 합쳐서 모뎀이라고 한다.At this time, the source encoder and the decoder performs a function of reducing data and restoring it back to original data in order to reduce the occupied band on the transmission channel, and the modulator and the demodulator store data modulated in a spread frequency band at a carrier frequency A device for transmitting and receiving and demodulating the transmitted signal. The modulator and the demodulator are called a modem.

또한, 상기 채널 부호기와 상기 채널 복호기는 채널 상의 에러를 보정하기 위하여 채널을 부호화하거나 복호화하는데, 이를 채널코딩이라 한다.In addition, the channel encoder and the channel decoder encode or decode a channel in order to correct an error on a channel, which is called channel coding.

이러한 채널코딩은 부호기(소스 부호기 및 채널 부호기)와 복호기(소스 복호기 및 채널 복호기)로 구성된다.This channel coding consists of an encoder (source encoder and channel encoder) and a decoder (source decoder and channel decoder).

이 때, 상기 채널 부호기는 채널 상으로 전송하고자 하는 신호에 중복성을 추가하여 전송하는 역할을 하며, 상기 채널 복호기는 상기 중복성이 있는 데이터로부터 채널에서 첨가된 에러를 보정하여 복호화하는 역할을 한다.At this time, the channel encoder is responsible for adding redundancy to the signal to be transmitted on the channel and transmitting the redundancy. The channel decoder is responsible for correcting and decoding an error added to the channel from the redundant data.

이러한 채널 코딩 기법 중에 가장 대표적인 방식으로 컨벌루셔널 코드(convolutional code)를 이용한 방식이 널리 사용되고 있으며, 상기 컨벌루셔널 코드에는 선형 컨벌루셔널 코드와 순환 컨벌루셔널 코드가 있는데 각각에 대하여 간단히 살펴보면 다음과 같다.Among the channel coding schemes, a convolutional code is widely used. The convolutional code includes a linear convolutional code and a cyclic convolutional code. Same as

먼저, 선형 컨벌루셔널 코드에 대하여 설명한다.First, a linear convolutional code will be described.

길이가 L로서 서로 같은 두개의 시퀀스 x[n]과 y[n]이 있다고 하면, 이 둘을 컨벌루션하여 나온 시퀀스를 선형 컨벌루셔널 코드라고 하며 그 길이는 2L-1이다.If there are two sequences x [n] and y [n] equal in length to each other, then the convolutional sequence of the two is called a linear convolutional code and its length is 2L-1.

또한, 이를 수식으로 나타내면 x[n]과 y[n]의 선형 컨벌루셔널 코드 z[n]을 다음과 같이 나타낼 수 있다.In addition, if this is expressed as an equation, the linear convolutional code z [n] of x [n] and y [n] can be expressed as follows.

이러한, 선형 컨벌루셔널 코드는 부호화하고자 하는 정보열과 부호기의 임펄스 응답과의 선형 콘볼루션을 수행하기 위하여 부호기의 초기 상태를 모두 '0'으로 설정하여 정보열을 모두 부호화하고난 후에 다시 부호기의 메모리 크기 만큼의 '0' 비트를 추가로 부호화하여야만 한다.In order to perform linear convolution between the information string to be encoded and the impulse response of the encoder, the linear convolutional code sets the initial state of the encoder to '0' and encodes all the information strings before the memory of the encoder. As many bits as '0' must be encoded.

따라서, 메모리 크기 만큼의 '0'비트를 추가로 부호화함으로써 상기 선형 컨벌루셔널 코드는 전송률 손실이 발생한다.Thus, by additionally encoding '0' bits as much as the memory size, the linear convolutional code suffers from a rate loss.

이러한 부호율 손실을 막기 위해 발명된 것이 순환 컨벌루셔널 코드 방식으로, 상기 순환 컨벌루셔널 코드에 대하여 설명하면 다음과 같다.In order to prevent such a code rate loss, the cyclic convolutional code is described as follows.

길이가 각각 L과 M인 두개의 시퀀스 x[n]과 y[n]이 있고, x[n]이 주기적으로 반복되어 주기가 L인 시퀀스를이라고 정의하고 y[n]이 주기적으로 반복되어 주기가 M인 시퀀스를이라고 정의하면, 이 둘을 컨벌루션하여 나온 시퀀스를 순환 컨벌루셔널 코드라고 하며 그 주기는 L+M-1이다.There are two sequences, x [n] and y [n], of length L and M, respectively. And y [n] is repeated periodically so that , The convolutional sequence of the two is called a cyclic convolutional code and the period is L + M-1.

또한, 이를 수식으로 나타내어 x[n]과 y[n]의 순환 컨벌루셔널 코드 z[n]은 다음과 같이 나타낼 수 있다.In addition, by expressing this as a formula, the cyclic convolutional code z [n] of x [n] and y [n] can be expressed as follows.

이러한 순환 컨벌루셔널 코드를 사용하는 시스템으로는 북미의 TDMA 방식의 디지털 셀룰러 시스템이 유일한데, 순환 컨벌루셔널 코드는 순환 컨벌루션 연산을 사용하므로, 선형 컨벌루셔널 코드와 같은 '0'비트의 추가비트를 부호화하지 않으며, 먼저, 부호기의 초기 상태를 정보열의 일부분으로 채우고난 후, 나머지 정보열을 부호화한다. 따라서, 선형 컨벌루셔널 부호기에서 사용한 '0'비트들의 부호화가 필요없게 되었으며, 이 연산 방법을 마치 이진수의 순환 컨벌루션과 같다.The only system that uses cyclic convolutional code is the North American TDMA digital cellular system. Since cyclic convolutional code uses cyclic convolution operation, it adds '0' bits such as linear convolutional code. The bits are not encoded. First, the initial state of the encoder is filled with a part of the information string, and then the remaining information strings are encoded. Therefore, the coding of the '0' bits used in the linear convolutional encoder is unnecessary, and this operation method is similar to the cyclic convolution of binary numbers.

한편, 이러한 컨벌루셔널 코드의 구속장의 정의에는 2가지가 있는데, 하나는 컨벌루셔널 부호기의 출력 심벌을 만드는 데에 사용된 입력비트 수이고, 다른 하나는 컨벌루셔널 부호기를 구성하는 데에 사용된 쉬프트 레지스터의 길이이다.On the other hand, there are two definitions of the constraint of the convolutional code, one is the number of input bits used to generate the output symbol of the convolutional encoder, and the other is used to construct the convolutional encoder. Shift register length

컨벌루셔널 부호기는 m비트 길이의 쉬프트 레지스터로 쉽게 구현되는데, 여기서는 후자의 정의를 따라 이 m을 구속장이라고 하자.The convolutional encoder is easily implemented as a shift register of m bits in length, and according to the latter definition, let m be the constraint.

컨벌루셔널 부호기의 출력 심벌을 만드는 데에 사용된 입력 비트 수를 K라고 하고 컨벌루셔널 부호기를 구성하는 데에 사용된 쉬프트 레지스터의 길이를 m이라고 하면, 그 두 구속장 사이에는 다음의 관계가 있다.If the number of input bits used to create the output symbol of the convolutional encoder is K, and the length of the shift register used to construct the convolutional encoder is m, then the relation have.

통상적으로 컨벌루셔널 코드는 송신단에서 전송하고자 하는 신호(이 신호의 길이를 k라고 하자)를 모두 복호화한 후, 추가로 구속장 길이만큼의 '0'비트를 부호화하여 전송함으로써 수신단에서 레지스터의 상태가 '0' 상태에서 시작하여 '0' 상태에서 끝나게 되는 모든 가능한 상태 변천도 상의 경로 중 최적 경로에 해당하는 코드워드로 복호화한다.In general, the convolutional code decodes all the signals to be transmitted from the transmitter (assuming the length of the signal is k), and then additionally encodes and transmits 0 bits as long as the constraint length so that the state of the register is received at the receiver. Decodes the codeword corresponding to the optimal path among all possible paths of state transition starting from the '0' state and ending in the '0' state.

이렇게 k비트의 입력 정보의 끝에 구속장 길이 m 만큼의 '0' 비트를 첨가하고 각 정보 비트를 n개의 심벌로 부호화한 컨벌루셔널 코드를 (n, k, m) ZT(Zero Tail) 컨벌루셔널 코드(이하, ZTCC라고 약칭함)라고 한다.In this way, a convolutional code obtained by adding '0' bits equal to the constraint length m at the end of k-bit input information and encoding each information bit into n symbols (n, k, m) ZT (Zero Tail) convolution It is called a national code (hereinafter, abbreviated as ZTCC).

즉, (n, k, m) 컨벌루셔널 코드는 k비트의 입력정보를 n개의 심벌로 매핑하여 채널 상으로 전송한다.That is, the (n, k, m) convolutional code maps k-bit input information into n symbols and transmits it on the channel.

여기서, 하나의 입력 비트를 부호화한 결과를 심벌이라고 한다.Here, the result of encoding one input bit is called a symbol.

그래서, m개의 심벌만큼의 전송손실을 가지며 한 블록 데이터의 길이를 L이라고 할 때, 전송 손실률은 m/(m+L)이다.Therefore, when there is a transmission loss of m symbols and the length of one block data is L, the transmission loss rate is m / (m + L).

그러나, 전송 손실이 크다는 것은 통신 채널의 점유 대역폭이 커진다는 것을 의미한다.However, a large transmission loss means that the occupied bandwidth of the communication channel is increased.

예를 들어, 30KHz의 주파수 대역에서 통신이 가능한 경우에도 이보다 더 넓은 주파수 대역에서 통신을 해야하기 때문에 일정한 주파수 자원을 효과적으로 사용하지 못하게 된다.For example, even if communication is possible in the frequency band of 30KHz, it is necessary to communicate in a wider frequency band, thereby preventing the use of a constant frequency resource effectively.

즉, 이 방법은 구속장의 길이가 클수록 그리고 부호화하고자 하는 데이터의 크기가 작을수록 추가 정보 전송에 의한 전송 채널상의 손실이 커진다는 단점이 있었다.That is, this method has a disadvantage in that the larger the length of the constraint field and the smaller the size of the data to be encoded, the greater the loss on the transmission channel due to the transmission of additional information.

제1도는 상기 단점을 보완하기 위해 개발된 종래기술인 ZTCC 부호기의 개념도이다.1 is a conceptual diagram of a prior art ZTCC encoder developed to compensate for the above disadvantages.

제1도를 참조하여, 종래의 방식을 적용한 (2, 1, 6) ZTCC 부호기를 간단히 설명한다.Referring to Fig. 1, the (2, 1, 6) ZTCC encoder to which the conventional scheme is applied will be briefly described.

(2, 1, 6) 컨벌루셔널 부호기는 한 비트의 입력신호가 2개의 심벌로 매핑되고 구속장이 6임을 나타내는 비율이 약 1/2인 컨벌루셔널 부호기를 말한다.A convolutional encoder refers to a convolutional encoder having a ratio of about 1/2 indicating that a bit of an input signal is mapped to two symbols and that the constraint length is six.

도시되어 있는 덧셈기는 이진 덧셈기(Modulo - 2 ADDER)이며, (a)는 첫번째 입력신호를 부호화하는 과정을 나타내고, (b)는 마지막 입력신호를 부호화하는 과정을 나타낸다.The adder shown is a binary adder (Modulo-2 ADDER), (a) shows the process of encoding the first input signal, and (b) shows the process of encoding the last input signal.

그러나, 모든 입력 정보 비트를 부호화한 후 6개의 '0' 비트를 추가로 부호화해야 하므로 이 때문에 전송률 손실이 발생한다는 단점이 있었다.However, after encoding all the input information bits, six '0' bits must be additionally encoded, which causes a loss of a bit rate.

그러므로, ZTCC에서 발생하는 상기와 같은 전송손실을 없애는 방법이 제공되어야 하는데, 종래에 제안되어진 대표적인 방법이 직접절단(Direct Truncation) 방법과 순환 컨벌루셔널 부호화 방법이 있으며, 성능의 우수성은 순환컨벌루셔널 부호화 방법이 더 뛰어나다.Therefore, there should be provided a method for eliminating the transmission loss as described above in ZTCC. Representative methods proposed in the prior art include a direct truncation method and a cyclic convolutional coding method. National coding is better.

제2도는 상기 단점을 보완하기 위한 종래기술인 테일 바이팅 컨벌루셔널 부호기의 개념도이다.2 is a conceptual diagram of a tail biting convolutional encoder which is a prior art to compensate for the above disadvantage.

제2도를 참조하여, 순환컨벌루셔널 부호화 방법인 (2, 1, 6) TB(Tail Biting)컨벌루셔널 코드의 부호화 과정을 간단히 설명한다.Referring to FIG. 2, a process of encoding a (2, 1, 6) TB (Tail Biting) convolutional code, which is a cyclic convolutional coding method, will be briefly described.

(a)는 부호화하고자 하는 k개의 입력 비트 중 마지막 6개의 입력 비트(Ik, Ik-1, Ik-2, Ik-3, Ik-4, Ik-5)로 쉬프트 레지스터를 초기화한 후 첫번째 입력 비트 I1을 부호화하는 과정을 나타내었다.(a) shows the shift register as the last six input bits (I k , I k-1 , I k-2 , I k-3 , I k-4 , I k-5 ) of k input bits to be encoded. After initialization, the first input bit I 1 is encoded.

그리고 상기 k비트의 코드가 차례대로 모두 부호화되고 나면 (b)도와 같이된다.After the k-bit code is all coded in sequence, the result is as shown in (b).

(b)도와 같은 상태를 쉬프트시키면, 레지스터는 초기상태(Ik, Ik-1, Ik-2, Ik-3, Ik-4, Ik-5)와 같아진다.By shifting the state as shown in (b), the register is equal to the initial state (I k , I k-1 , I k-2 , I k-3 , I k-4 , I k-5 ).

즉, 상기 순환 컨벌루셔널 부호화 방법이란, 부호화하고자 하는 정보의 크기를 'k'비트라고 할 때, 우선 그 중 마지막 'm' 비트로 쉬프트 레지스터를 초기화한 후 입력정보를 차례대로 부호화하는 방법인 것이다.That is, when the size of information to be encoded is 'k' bits, the cyclic convolutional coding method is to initialize the shift register first with the last 'm' bits, and then sequentially encode input information. .

이렇게 하여 'k' 비트의 입력정보가 모두 부호화하고 나면 레지스터는 초기 상태와 같게 되는 것이다.In this way, once all the input information of the 'k' bits is encoded, the register becomes the initial state.

따라서, 복호기에서는 레지스터의 초기상태와 최종상태가 같다는 점을 이용하여 ML(Maximum Likelihood) 복호화 방법으로 복호를 할 수 있다.Therefore, the decoder can decode by using a maximum likelihood (ML) decoding method using the fact that the initial state and the final state of the register are the same.

상술한 순환 컨벌루셔널 부호화 방법은 추가의 정보를 부호화하지 않으므로 ZTCC에 비하여 테일 비트에 의한 전송손실은 제거하는 효과가 있다.Since the above-described cyclic convolutional coding method does not encode additional information, transmission loss due to tail bits can be eliminated compared to ZTCC.

그러나, 부호화 시에 쉬프트 레지스터를 초기화하기 위하여 입력정보의 마지막 'm' 비트를 얻기 위해 'k' 비트 크기의 메모리가 필요하다는 문제점이 있고, 또한 'k' 비트 크기의 입력정보가 발생할 때까지 부호화를 중지해야 하는 부호화의 지연을 초래하게 된다는 단점이 있다.However, in order to initialize the shift register during encoding, there is a problem in that a memory having a 'k' bit size is required to obtain the last 'm' bit of the input information, and encoding until a 'k' bit size input information is generated. There is a disadvantage that it causes a delay of encoding that must be stopped.

사람의 귀는 다소 민감한 사람의 경우에는 약 50ms, 다소 둔한 사람의 경우에는 약 70ms 이상의 지연은 느낄 수 있으므로 음성통신에서는 송화자가 만을 한 후 수화자가 그 말을 들을 때까지의 음성전달 지연이 약 70ms를 초과하게 되면 통화자는 통화에 거북함을 느끼게 된다.The human ear may experience a delay of about 50ms for a slightly sensitive person and a delay of about 70ms for a rather dull person.In voice communication, the delay of speech transmission between the talker and the listener until the listener hears it is about 70ms. Beyond this, the caller feels awkward about the call.

그런데 상기 지연시간은 소스 부호기, 채널 부호기, 변조기, 복조기, 채널 복호기 및 소스 복호기 등 통신 시스템의 모든 블록에서 발생하는 지연시간 모두 더한 값이 된다.However, the delay time is the sum of the delay times occurring in all blocks of the communication system such as a source encoder, a channel encoder, a modulator, a demodulator, a channel decoder, and a source decoder.

그래서, 각 블록에서의 부호화 지연을 가능한 한 최소로 해주어야 한다.Therefore, the encoding delay in each block should be minimized as much as possible.

상기 단점을 보완하기 위하여 안출된 발명으로서 대한민국 출원번호 1993-16054가 있다.Korean invention No. 1993-16054 is an invention devised to compensate for the above disadvantages.

이는 k비트의 입력정보 중 마지막 m비트로 레지스터를 초기화하여 전송 손실과 부호화 지연을 감소시키고, 부호화시에 필요한 메모리의 양을 축소시키는 방법이다.This is a method of initializing a register with the last m bits of k bits of input information to reduce transmission loss and encoding delay, and to reduce the amount of memory required for encoding.

그러나 상기 방법은 ML 복호 시에 많은 계산량을 요구하는 단점이 있었다.However, this method has the disadvantage of requiring a large amount of calculation in ML decoding.

즉, 순환 컨벌루셔널 코드(Circular Convolutional Code, 이하 CCC라고 약칭함)에서는 부호기의 시작상태 또는 종료상태를 수신단에서 알지 못하기 때문에 비터비(Viterbi) 복호시 모든 가능한 상태에서 시작하고 끝나는 코드워드로 복호해야 하므로 많은 복호 계산량을 요구하게 된다.That is, in the circular convolutional code (hereinafter abbreviated as CCC), since the receiver does not know the start state or end state of the encoder, it is a codeword that starts and ends in all possible states during Viterbi decoding. Decoding requires a large amount of decoding calculation.

여기서, 비터비 복호화 방법이란, 1967년에 비터비(Viterbi, A.J.)에 의해 제안된 복호화 기법으로서, 오류 복구 코드의 일종인 컨벌루셔널 코드를 디코딩하는 기법이다.Here, the Viterbi decoding method is a decoding technique proposed by Viterbi (A.J.) in 1967, and is a technique of decoding a convolutional code, which is a kind of error recovery code.

이 알고리즘은 계단형 트리 구조의 양끝 노드 사이에서 최적의 최단, 최소 비용 경로를 추적하는 동적 프로그래밍 해법으로서 그 응용분야로는 주로 변형된 화상이나 음성 패턴을 인식하는 기법에 많이 적용된다.This algorithm is a dynamic programming solution that tracks the optimal shortest and least cost paths between the nodes of the stepped tree structure. Its application is mainly applied to the technique of recognizing deformed image or voice patterns.

그러나, 실제로는 복호시의 많은 계산량 때문에 CCC의 성능이 좋음에도 불구하고 실제적으로는 많이 사용되지 못하고 있다.However, in practice, despite the good performance of the CCC due to the large amount of computation during decoding, it is not actually used much.

그래서, 상기 단점을 보완하기 위하여 1993 년과 1994 년에 순환 비터비 알고리즘(Circular Viterbi Algorithm, 이하 CVA라고 약칭함)이 ATT 벨 연구소의 콕스(Cox)와 선드버그(Sundberg)에 의하여 제안되었다.Thus, in 1993 and 1994, a circular Viterbi Algorithm (abbreviated as CVA) was proposed by Cox and Sundberg of the ATT Bell Institute to compensate for the above drawbacks.

이는 순환 컨벌루셔널 부호기에서의 계산량을 감축시키면서 어느 정도의 복호성능을 얻을 수 있었다.This resulted in some decoding performance while reducing the amount of computation in the cyclic convolutional encoder.

그러나, 이는 ZTCC 방법에 비해 약 2배 정도의 계산량을 요구하고 있으며 이 계산량은 채널의 상태가 나빠질수록 더욱 커지고 복호성능도 기존의 ZTCC 방법의 성능보다 나쁘다는 문제점이 있다.However, this requires about twice as much computation amount as the ZTCC method, and this computation amount becomes larger as the channel becomes worse and the decoding performance is worse than that of the existing ZTCC method.

또한, 이러한 알고리즘을 통신 시스템에 적용하기 위해서는 채널의 상태가 지속적으로 나쁜 최악의 경우를 고려해야 한다.In addition, in order to apply such an algorithm to a communication system, it is necessary to consider the worst case where the state of the channel is continuously bad.

그래서 실제의 시스템 구현에는 많은 한계와 문제점이 있다.So there are many limitations and problems with the actual system implementation.

따라서, 본 발명에서는 상기와 같은 문제점을 해결하기 위해, 순환 길쌈 부호의 순환성을 이용하여 수신된 L개의 코드 심벌에 대하여, 비터비 복호를 수행한 후 계속해서 처음 M개의 코드 심벌에 대하여 복호를 수행함으로써, 통신 채널상의 전송에러를 보정하는 순환 컨벌루셔널 코드의 복호화 방법을 제공하고자 한다.Accordingly, in the present invention, in order to solve the above problems, after performing Viterbi decoding on the L code symbols received by using the circularity of the cyclic convolutional code, decoding is performed on the first M code symbols. By doing so, an object of the present invention is to provide a decoding method of a cyclic convolutional code that corrects a transmission error on a communication channel.

상기 목적을 달성하기 위한 본 발명의 특징은 비터비 알고리즘을 이용하여 일정 길이의 구속장을 갖는 순환 컨벌루셔널 코드를 복호화하는 방법에 있어서, 수신된 코드에 대하여 상기 비터비 알고리즘을 수행하는 제 1 과정과, 상기 제 1 과정의 비터비 알고리즘 수행 결과로 생성된 코드에 의해, 수신된 신호의 처음부터 구속장 길이 까지의 신호에 대하여 다시 비터비 알고리즘을 수행하는 제 2 과정과, 상기 제 2 과정의 결과로 생성된 코드의 초기 상태와 최종 상태가 같은지 판단하는 제 3 과정과, 상기 제 3 과정의 판단결과, 제 2 과정의 결과로 생성된 코드의 초기 상태와 최종 상태가 같다고 판단되면 순환 컨벌루셔널 코드에 대한 복호화 과정을 종료하는 제 4 과정 및 상기 제 3 과정의 판단결과 제 2 과정의 결과로 생성된 코드의 초기 상태와 최종 상태가 다르다고 판단되면 상기 초기 상태와 최종 상태의 중간 시점의 생존경로의 상태에서 시작하고 또 그 상태에서 끝나는 코드를 선택하여 그 코드에 의해 상기 제 1 과정의 결과로 나온 코드에 대하여 비터비 알고리즘을 수행한 후, 상기 제 3 과정 이후를 반복 수행하는 제 5 과정을 포함하는 데에 있다.A feature of the present invention for achieving the above object is a method of decoding a cyclic convolutional code having a constraint length of a certain length using a Viterbi algorithm, the first step of performing the Viterbi algorithm for a received code And a second step of performing the Viterbi algorithm again on the signal from the beginning of the received signal to the constraint length by the code generated as a result of performing the Viterbi algorithm of the first step; A third step of determining whether the initial state and the final state of the code generated as a result of the same, and if it is determined that the initial state and the final state of the code generated as a result of the second process is the same as The initial state and the final image of the code generated as a result of the second process as a result of the determination of the fourth process and the third process of terminating the decoding process on the universal code If it is determined that the state is different, the code that starts and ends in the state of the survival path between the initial state and the final state is selected, and the Viterbi algorithm is performed on the code resulting from the first process by the code. After that, the method includes a fifth process of repeating the third process after.

이하, 첨부한 도면을 참조하여 본 발명에 따른 바람직한 일 실시예를 종래기술과 비교하여 상세히 설명한다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings.

제3도는 본 발명의 일실시예에 따른 순환 컨벌루셔널 코드의 복호화 방법에 대한 처리 흐름도로서, 제3도를 참조하면, 수신된 한 블록의 데이터 길이가 L이고, 구속장의 길이가 M인 순환 컨벌루셔널 코드를 복호화하기 위해서는 먼저, 그 수신된 코드에 대한 비터비 알고리점을 수행(S301)하고, 그 결과로 생성된 코드에 의해, 수신된 신호의 처음부터 구속장 길이(M) 까지의 신호에 대하여 다시 비터비 알고리즘을 수행(S302)한다.FIG. 3 is a flowchart of a method of decoding a cyclic convolutional code according to an embodiment of the present invention. Referring to FIG. 3, a data length of one received block is L and a length of constraint length is M. Referring to FIG. In order to decode the convolutional code, first, a Viterbi algorithm point for the received code is performed (S301), and by the resultant code, from the beginning of the received signal to the constraint length (M). The Viterbi algorithm is again performed on the signal (S302).

즉, 상기 비터비 알고리즘 수행(S301)의 결과에 의한 코드의 L+1번째 부터 L+M번째 까지만 다시 비터비 알고리즘을 수행(S302)한다.That is, the Viterbi algorithm is again performed only from the L + 1 th to the L + M th of the code resulting from the Viterbi algorithm execution (S301) (S302).

그리고, 상기 수행(S302) 결과에 의해 생성된 코드의 최종상태와 초기 상태가 같은지를 판단(S303)하여, 그 상태가 같으면, 복호화 과정을 종료한다.Then, it is determined whether the final state and the initial state of the code generated by the execution (S302) result are the same (S303). If the state is the same, the decoding process is terminated.

만약, 상기 판단(S303) 결과가 같지 않으면, 상기 초기 상태와 최종상태의 중간 시점의 생존 경로의 상태에서 시작하고 또 그 상태에서 끝나는 코드를 선택하여, 그 코드에 의해 상기 S301 과정의 결과로 나온 코드에 대하여 비터비 알고리즘을 수행(S302)하고, 그 이후의 과정(S303~S304)을 반복 수행한다.If the result of the determination (S303) is not the same, a code starting from the state of the survival path between the initial state and the final state and ending in the state is selected, and the code is the result of the step S301. The Viterbi algorithm is performed on the code (S302), and the subsequent steps (S303 to S304) are repeated.

즉, 상기 초기 상태와 최종 상태가 동일하지 않은 경우는 수신 심벌의 처음 m개의 코드워드에 과도한 에러가 삽입된 경우로서 이 에러에 의하여 생존 경로를 잘못 선택한 경우이다.That is, when the initial state and the final state are not the same, an excessive error is inserted into the first m codewords of the received symbol, and a survival path is incorrectly selected by this error.

따라서, L/2를 정수화하여 나온값을 시간값으로 취한 시간의 구간에 생존 경로를 취하게 되는 상태에서 시작하고 끝나는 코드워드로 비터비 복호를 수행한다.Therefore, Viterbi decoding is performed with codewords that start and end in a state where a survival path is taken in a time interval obtained by integerizing L / 2 as a time value.

한편, 제4도는 본 발명의 비교적 간단한 일 실시예의 부호기이다.4 is an encoder of one relatively simple embodiment of the present invention.

가장 간단한 예로 (2,1,2) 컨벌루셔널 부호를 예로 들고 생성 다항식을 7,5하고 하고 정보 비트의 길이를 5라고 하면, 이 부호기의 구성은 다음과 같다.In the simplest case, assuming the (2,1,2) convolutional code as an example, the generation polynomial is 7,5 and the information bit length is 5, the structure of the encoder is as follows.

부호기의 결선은 111,101이 되며 그 부호기에 의해 생성되는 행렬 GZTCC와 GTBCC는 다음과 같다.The connection of the encoder is 111,101 and the matrixes G ZTCC and G TBCC generated by the encoder are as follows.

그러므로, GZTCC의 크기는 1×14이고 CTBCC의 크기는 1×10이므로 ZTCC는 5개 비트의 정보가 14개의 심벌로 변환되어 출력되는 반면에 TBCC는 5개 비트의 정보가 10개의 심벌로 변환되어 출력된다.Therefore, since the size of G ZTCC is 1 × 14 and the size of C TBCC is 1 × 10, ZTCC converts 5 bits of information into 14 symbols, while TBCC converts 5 bits of information into 10 symbols. The output is converted.

결국, 본 실시예의 경우, 본 발명에 따른 순환 컨벌루셔널 부호화 방법은 기존의 ZTCC보다 4개의 심벌의 효율을 올릴 수 있다.As a result, in the present embodiment, the cyclic convolutional coding method according to the present invention can increase the efficiency of four symbols compared to the existing ZTCC.

제5도에서는 본 발명에 제안된 CCC 복호 알고리즘을 컴퓨터 시뮬레이션을 통하여 성능을 측정해 보았으며 최근에 발표된 CCC 복호 알고리즘으로 현재까지 가장 계산량이 작은 방법인 콕스의 방법 및 기존의 ZTCC 부호에서의 성능을 비교하였다.In FIG. 5, the performance of the CCC decoding algorithm proposed in the present invention was measured by computer simulation. The recently released CCC decoding algorithm is the method of Cox's method and the performance of the existing ZTCC code. Was compared.

시뮬레이션에 성능 비교의 기준으로 콕스가 시뮬레이션한 조건과 동일하게 하였다.The simulations were made identical to the conditions simulated by Cox as a basis for performance comparison.

즉, dfree= 10, m = 7, r = 1/2, g(1)= 237, g(2)= 345인 컨벌루셔널 부호에 대해 정보열의 길이 L = 60인 경우를 입력으로 하였고 복호는 하드 디시전(hard decision)으로 하였을 경우의 성능을 비교하였다.In other words, for the convolutional code with d free = 10, m = 7, r = 1/2, g (1) = 237, g (2) = 345, the case where the length of the information string L = 60 was input. Compares the performance with the hard decision.

이 그림으로 부터 본 발명에 의한 복호성능은 유효 부호율을 고려하지 않은 경우의 ZTCC 방법에 비해 약 0.3dB 밖에 성능이 떨어지지 않고 있으며 레이트 로스(Rate Loss)에 의한 유효 부호율을 고려하였을 경우에는 오히려 ZTCC에 의한 성능보다 0.1dB 정도 향상되었음을 알 수 있다.From this figure, the decoding performance of the present invention is only about 0.3 dB lower than that of the ZTCC method without considering the effective code rate, but rather the effective code rate due to the rate loss is considered. It can be seen that it is about 0.1 dB higher than the performance by ZTCC.

또한 콕스의 CVA에 의한 복호성능보다 0.5dB 내지 O.7dB의 성능향상을 보였다.Also, Cox's CVA showed a performance improvement of 0.5dB to 0.7dB over CVA's decoding performance.

이러한 본 발명에 따른 복호방법은 계산량 면에서도 CVA보다도 좋은 특성을 갖는데, CVA의 평균 복호 계산량은 ZTCC의 2배 이상이며, 복호 계산량은 최소 ZTCC의 1배에서 부터 최대 2배까지로 제한한다.Such a decoding method according to the present invention has better characteristics than CVA in terms of calculation, but the average decoding calculation of CVA is two times or more than ZTCC, and the decoding calculation amount is limited to one to two times the minimum ZTCC.

따라서, 최악의 경우에도 ZTCC 방법에 의한 계산량의 2배 정도의 계산량을 요구하기 때문에 시스템의 구현에 상당히 유리하다.Therefore, even in the worst case, it requires a calculation amount of about twice that of the ZTCC method, which is very advantageous for the implementation of the system.

따라서, 본 발명의 복호화 방법은 종래의 순환 컨벌루셔널 부호화 방법이 많은 복호 계산량을 요구한다는 단점을 해결하여, 기존의 선형 컨벌루셔널 코드의 복호에 비하여 약간의 복호 계산량을 더 필요로 하지만 종래의 순환 컨벌루셔널 코드의 복호 방법 중 가장 적은 계산량을 필요로 하는 순환 비터비 복호 방법에 비하여 절반 수준의 복호 계산량으로 복호가 수행되는 장점을 가진다.Accordingly, the decoding method of the present invention solves the disadvantage that the conventional cyclic convolutional coding method requires a large amount of decoding calculation amount, and requires a little decoding calculation amount as compared with the decoding of the conventional linear convolutional code. Decoding is performed with half the decoding calculation amount compared to the cyclic Viterbi decoding method requiring the least amount of calculation among the decoding methods of the cyclic convolutional code.

또한, ZTCC에서의 전송률 손실을 고려하지 않았을 경우에 비해 복호 성능이 약 0.3dB 정도 떨어짐으로써, 약간의 복호 계산량을 추가함으로써 종래의 선형 컨벌루셔널 코드의 실용화를 이루고 전송률 손실없이 임의의 크기의 정보 비트를 부호화하는 것이 가능하기 때문에 가변 비트 길이의 부호화에 탄력적으로 적용이 가능하다는 효과가 있다.In addition, the decoding performance is reduced by about 0.3 dB compared with the case where the transmission loss in ZTCC is not taken into account, adding a little decoding calculation amount to realize the practical use of the conventional linear convolutional code, and having any size information without losing the transmission rate. Since it is possible to code bits, it is possible to flexibly apply to coding of variable bit lengths.

Claims (1)

비터비 알고리즘을 이용하여 일정 길이의 구속장을 갖는 순환 컨벌루셔널 코드를 복호화하는 방법에 있어서, 수신된 코드에 대하여 상기 비터비 알고리즘을 수행하는 제 1 과정과; 상기 제 1 과정의 비터비 알고리즘 수행 결과로 생성된 코드를 가지고, 수신된 신호의 처음부터 구속장길이 까지의 신호에 대하여 다시 비터비 알고리즘을 수행하는 제 2 과정과; 상기 제 2 과정의 결과로 생성된 코드의 초기 상태와 최종 상태가 같은지 판단하는 제 3 과정과; 상기 제 3 과정의 판단결과, 상기 제 2 과정의 결과로 생성된 코드의 초기 상태와 최종 상태가 같다고 판단되면 순환 컨벌루셔널 코드에 대한 복호화과정을 종료하는 제 4 과정과; 상기 제 3 과정의 판단결과 제 2 과정의 결과로 생성된 코드의 초기 상태와 최종 상태가 다르다고 판단되면, 상기 초기 상태와 최종 상태의 중간 시점의 생존경로의 상태에서 시작하고 또 그 상태에서 끝나는 코드를 선택하여, 그 코드에 의해 상기 제 1 과정의 결과로 나온 코드에 대하여 비터비 알고리즘을 수행한 후, 상기 제 3 과정 이후를 반복 수행하는 제 5 과정을 포함하는 것을 특징으로 하는 순환 컨벌루셔널 코드의 복호화 방법.CLAIMS 1. A method for decoding a cyclic convolutional code having a certain length constraint using a Viterbi algorithm, comprising: a first step of performing the Viterbi algorithm on a received code; A second step of performing the Viterbi algorithm again on a signal from the beginning of the received signal to the constraint length with the code generated as a result of performing the Viterbi algorithm of the first step; A third process of determining whether an initial state and a final state of a code generated as a result of the second process are the same; A fourth step of terminating the decoding process of the cyclic convolutional code if it is determined that the initial state and the final state of the code generated as a result of the second process are the same as the determination result of the third process; If it is determined that the initial state and the final state of the code generated as a result of the second process are different from each other as a result of the determination of the third process, the code starts and ends in the state of the survival path between the initial state and the final state. And a fifth step of performing a Viterbi algorithm on the code resulting from the first step by the code, and then repeatedly performing the third step and later. How to decrypt code.
KR1019950041330A 1995-11-14 1995-11-14 Decoding method of rotary convulutional code KR0171383B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019950041330A KR0171383B1 (en) 1995-11-14 1995-11-14 Decoding method of rotary convulutional code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019950041330A KR0171383B1 (en) 1995-11-14 1995-11-14 Decoding method of rotary convulutional code

Publications (2)

Publication Number Publication Date
KR970031389A KR970031389A (en) 1997-06-26
KR0171383B1 true KR0171383B1 (en) 1999-03-30

Family

ID=19434104

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950041330A KR0171383B1 (en) 1995-11-14 1995-11-14 Decoding method of rotary convulutional code

Country Status (1)

Country Link
KR (1) KR0171383B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100811376B1 (en) * 2001-08-25 2008-03-07 엘지전자 주식회사 Method for coding and decoding in a communication system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100811376B1 (en) * 2001-08-25 2008-03-07 엘지전자 주식회사 Method for coding and decoding in a communication system

Also Published As

Publication number Publication date
KR970031389A (en) 1997-06-26

Similar Documents

Publication Publication Date Title
KR100554322B1 (en) Convolutional decoding with the ending state decided by crc bits placed inside multiple coding bursts
US4805174A (en) Error correcting coder/decoder
US6598203B1 (en) Parallel punctured convolutional encoder
JP2527163B2 (en) Data word transmission system
KR100231291B1 (en) Method and apparatus for decoding an encoded signal
US5633881A (en) Trellis encoder and decoder based upon punctured rate 1/2 convolutional codes
KR20010023315A (en) A method of and apparatus for selecting cyclic redundancy check generators in a concatenated code
US5841818A (en) Decoding method for trellis codes employing a convolutional processor
KR100484555B1 (en) Method and apparatus for error correction
US6182260B1 (en) Channel encoding apparatus using single concatenated encoder
US5657333A (en) Method and apparatus for error-control coding in a digital data communication system
JP2715398B2 (en) Error correction codec
KR0171383B1 (en) Decoding method of rotary convulutional code
WO2003017500A1 (en) Coded modulation scheme for a wireless communication system and methods thereof
JPS612439A (en) Digital signal transmission system
KR950010428B1 (en) Vitervi coding method
JP3576653B2 (en) Coded modulator
KR0170199B1 (en) Viterbi decoder
KR100307700B1 (en) Adaptive trellis decoding method and encoding method for subcode of reed solomon codes
US5666380A (en) Digital communication system and method of compressing information
KR100339855B1 (en) A coded modulation system based on convolutional coding and constellation control and the coded modulation method
KR0141873B1 (en) Convolutional encoder in trellis encoder
KR100390693B1 (en) Binary Linear codes generation apparatus and method using orthogonal codes for communication system
JPS60142626A (en) Decoding device
KR20010017664A (en) Zero insertion method for convolutional code

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: 20081001

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee