KR100330238B1 - Interleaving and deinterleaving apparatus and method for a communication system - Google Patents
Interleaving and deinterleaving apparatus and method for a communication system Download PDFInfo
- Publication number
- KR100330238B1 KR100330238B1 KR1020000017318A KR20000017318A KR100330238B1 KR 100330238 B1 KR100330238 B1 KR 100330238B1 KR 1020000017318 A KR1020000017318 A KR 1020000017318A KR 20000017318 A KR20000017318 A KR 20000017318A KR 100330238 B1 KR100330238 B1 KR 100330238B1
- Authority
- KR
- South Korea
- Prior art keywords
- address
- generators
- selection
- generator
- addresses
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
본 발명은 통신시스템의 터보부호기에 사용되는 내부 인터리빙 장치 및 방법에 관한 것이다. 본 발명에 따른 L개의 데이터가 저장된 인터리버 메모리로부터 상기 데이터를 독출하기 위하여 2m×NG개의 가상 어드레스들 보다 작은 L개의 어드레스를 발생하는 장치가, 상기 L개의 입력데이터를 순차로 저장하는 상기 인터리버 메모리와, 상기 입력데이터 크기에 오프셋 값을 더하여 가상 어드레스 크기가 2m의 정수배로 제공하고, 각각 2m의 크기를 가지는 상기 정수개의 어드레스 생성영역들을 가지고 상기 어드레스 생성영역들에서 상기 오프셋 값에 대응하는 어드레스들을 제외한 어드레스들을 발생하는 어드레스 생성기로 구성되어, 상기 어드레스 생성영역들로부터 발생된 상기 어드레스들을 가지고 상기 인터리버 메모리로부터 상기 입력데이터를 독출하는 것을 특징으로 한다.The present invention relates to an internal interleaving apparatus and method for use in a turbo encoder of a communication system. The interleaver for generating an L address smaller than 2 m x N G virtual addresses to read the data from an interleaver memory having L data stored therein, sequentially stores the L input data. adding an offset value in a memory, and said input data size virtual address size has said integer number of the address generation area is provided to an integral multiple of 2 m, and each having a size of 2 m corresponds to the offset value in the address generation areas And an address generator for generating addresses other than the addresses to read the input data from the interleaver memory with the addresses generated from the address generation areas.
Description
본 발명은 인터리빙/디인터리빙 장치 및 방법에 관한 것으로, 특히 통신시스템(위성시스템, ISDN, Digital cellular, W-CDMA, IMT-2000, W-ATM)에서 사용되는 터보코더를 위한 인터리빙/디인터리빙 장치 및 방법에 관한 것이다.The present invention relates to an interleaving / deinterleaving apparatus and method, and more particularly, to an interleaving / deinterleaving apparatus for a turbo coder used in a communication system (satellite system, ISDN, digital cellular, W-CDMA, IMT-2000, W-ATM). And to a method.
일반적으로 터보코더는 디지털 통신 시스템의 신뢰도 향상에 광범위하게 관련된 오류정정부호의 한 종류이다. 현재까지 공개되어 있는 터보코더는 병렬터보코더와 직렬터보코더로 구분될수 있다. 상기 병렬 터보코더(Turbo encoder)는 L개의 정보 비트열의 프레임(frame)으로 이루어진 입력을 두 개의 간단한 병렬 쇄상 부호를 이용하여 패리티 심볼(parity symbol)을 만드는 시스템으로서 구성부호기(component coder)로는 RSC(Recursive Systematic Convolutional) 부호를 이용한다. 또한 상기 병렬터보코드는 상기 구성부호 사이에 내부 인터리버를 구비하고 있다.In general, a turbo coder is a type of error correcting code that is widely involved in improving reliability of a digital communication system. The turbo coders disclosed to date can be divided into parallel turbo coders and serial turbo coders. The parallel turbo encoder is a system that generates a parity symbol using two simple parallel chain codes on an input consisting of a frame of L information bit streams, and a RSC (component coder) as a component coder. Recursive Systematic Convolutional) code. The parallel turbo code has an internal interleaver between the components.
상기 인터리버는 상기 터보코더 구성부호기에 일정크기(프레임) 단위로 입력되는 데이타열을 랜덤화(randomization)하고, 코드워드(Code word)의 디스턴스 성질(distance property)를 개선하고자 사용된다. 특히, 최근에 매우 많은 관심을 모으고 있는 IMT-2000(CDMA2000)의 에어 인터페이스(Air interface) 표준화 과정에서 데이터 전송 채널로서 사용되는 부가채널(Supplemental Channel)에 이용될 것으로 예상된다. 그리고 ETSI(European Telecommunication Standards Institute)에서 추진 중인 UMTS(Universal Mobile Telecommunication System)표준화 과정에서는 사용자 데이터가 전송되는 채널에서 터보코더가 사용될 것이 유력시 되고 있다. 따라서 터보코드를 위한 인터리버의 구체적 구현방식이 절실히 요구되고 있다.The interleaver is used to randomize a data string input to the turbo coder encoder in units of a predetermined size (frame) and to improve the distance property of a code word. In particular, it is expected to be used for the supplemental channel used as a data transmission channel in the air interface standardization process of the IMT-2000 (CDMA2000), which has recently attracted much attention. In addition, in the Universal Mobile Telecommunication System (UMTS) standardization process promoted by the European Telecommunication Standards Institute (ETSI), it is promising that a turbo coder is used in a channel through which user data is transmitted. Therefore, a specific implementation method of the interleaver for turbo code is urgently needed.
도 1은 일반적인 병렬 터보 부호기의 구조를 도시한 도면으로, 터보부호에 대한 특허인 1995년 8월 29일 등록된 미합중국 특허(Patent Number: 5,446,747)에 자세히 개시되어 있다.FIG. 1 is a diagram illustrating a structure of a general parallel turbo coder, which is disclosed in detail in a patent number US Pat. No. 5,446,747, issued on August 29, 1995, which is a patent for a turbo code.
상기 도 1과 같은 구성을 갖는 터보 부호기는 입력 프레임 데이터 열을 부호화 하지 않고 출력하고, 상기 입력프레임을 부호화 하여 출력하는 제1구성 부호기111과, 상기 입력 프레임 데이터 열을 인터리빙 하여 제2구성 부호기 113로 출력하는 인터리버(interleaver) 112 및 상기 인터리버의 출력을 입력하여 부호화 하는 제2구성 부호기 113으로 구성된다. 상기 제1, 제2구성 부호기 112 및 113은이미 기술 분야에서 잘 알려진 RSC(Recursive Systematic Convolutional)부호기 또는 NSC(NON-Recursive Systematic Convolutional)부호기를 사용할 수 있다. 이러한 구성부호기는 부호화율 이나 유한장 k값 및 생성다항식에 따라서 그 내부 구성이 달라질 수 있다. 그리고 상기 인터리버 112는 입력되는 최대 프레임 크기와 동일한 메모리 크기를 가지며, 상기 제2구성 부호기 113에 입력되는 정보 비트의 입력 순서를 바꿈으로써 정보 비트들 사이의 상관(correlation)을 줄여주게 된다.The turbo encoder having the configuration as shown in FIG. 1 outputs the first frame encoder 111 without encoding the input frame data sequence, and encodes and outputs the input frame, and the second component encoder 113 by interleaving the input frame data sequence. It consists of an interleaver 112 for outputting and a second component encoder 113 for inputting and encoding the output of the interleaver. The first and second constituent encoders 112 and 113 may use a recursive systematic convolutional (RSC) encoder or a non-recursive systematic convolutional (NSC) encoder that is well known in the art. Such a constituent encoder may have an internal configuration that depends on the coding rate, the finite length k value, and the generated polynomial. The interleaver 112 has the same memory size as the maximum frame size and reduces the correlation between the information bits by changing the input order of the information bits input to the second component encoder 113.
종래에는 상기 터보코더의 내부 인터리버(internal interleaver) 112로서, PN 랜덤 인터리버(random interleaver), 랜덤 인터리버, 블록 인터리버(Block interleaver), 비선형 인터리버(Non linear interleaver), S-Random interleaver 등 다양한 방식이 제안되었다. 그러나 이러한 인터리버들은 아직까지 구현의 관점보다는 학문적인 연구분야로서 성능개선에 주안점을 두고 설계된 알고리즘들로 볼수 있다. 따라서 실제 시스템의 구현을 고려할 때 하드웨어 구현 복잡도라는 측면에서 재고가 필요한 방식들이라 할수 있다. 이하 종래 터보코더 인터리버에 대한 기술과 성질 그리고 문제점을 설명한다.Conventionally, various methods such as PN random interleaver, random interleaver, block interleaver, non linear interleaver, and S-Random interleaver are proposed as the internal interleaver 112 of the turbo coder. It became. However, these interleavers can be seen as algorithms designed with the focus on performance improvement as an academic field rather than an implementation point of view. Therefore, considering the implementation of the actual system in terms of hardware implementation complexity can be said to be the way to reconsider. Hereinafter, a description will be given of the technology, properties and problems of the conventional turbo coder interleaver.
터보코더는 기본적으로 내부 인터리버의 역할에 의해서 성능이 좌우된다. 일반적으로 터보코더는 입력 프레임 크기(한 프레임이 포함하는 정보비트의 개수)가 커지면 성능이 증가한다. 그러나 인터리버 크기(size)의 증가에 따라 요구되는 계산량이 기하급수적으로 증가하기 때문에 프레임 크기가 매우 크다면 실제 구현이 불가능하다.The turbocoder basically depends on the role of the internal interleaver. In general, turbocoders increase performance as the input frame size (the number of information bits in one frame) increases. However, since the amount of computation required increases exponentially as the interleaver size increases, the actual implementation is impossible if the frame size is very large.
통상적으로, 실험결과에 의하면 랜덤 인터리버가 일반적으로 사용되는 블록인터리버보다 성능이 우수하다. 그러나 랜덤 인터리버를 설계할 때 발생되는 문제점의 하나는 프레임 크기가 다양하고 커질수록 인터리버의 인덱스(mapping rule, 또는 address)를 저장하기 위한 메모리의 크기가 너무 커진다는 것이다. 즉, 어드레싱을 위한 메모리 공간이 매우 증가하게 된다. 따라서, 하드웨어의 크기가 문제된다면, 인터리버의 인덱스를 저장하는 룩업 테이블(Look-Up Table)방식보다는 인덱스를 발생시키는 일정 규칙(rule)을 사용하여 매 심볼 클럭마다 어드레스를 발생시켜 해당되는 어드레스에 저장된 데이터를 읽어내는 어드레스 계산(enumeration)방식이 요구된다.In general, experimental results show that random interleaver performs better than block interleaver. However, one of the problems in designing the random interleaver is that as the frame size varies and becomes larger, the size of the memory for storing the interleaver's mapping rule or address becomes too large. That is, the memory space for addressing is greatly increased. Therefore, if the size of the hardware is a problem, an address is generated at every symbol clock by using a certain rule that generates an index rather than a look-up table method of storing an interleaver's index. An address enumeration method of reading data is required.
이를 종합해 볼 때, IMT-2000용이나 UTMS(Universal Telecommunication Mobile System)와 같이 다양한 인터리버 크기가 요구되고 하드웨어 구현의 복잡성이 제한받는 경우의 터보 인터리버를 구현하기 위해서는 이러한 제한적 여건들을 고려한 상태에서 최적의 성능이 보장되도록 인터리버가 설계되어야 한다. 즉, 일정 인터리빙 규칙에 의해 인터리빙/디인터리빙이 이루어지는 인터리버가 요구되는 실정이다. 또한, 터보 내부 인터리버에서 요구되는 다양한 인터리버 성질(예를들어, Distance Properity, Weight Properity, Random Properity 등)이 우수할 것이 요구된다.Taken together, it is optimal to implement turbo interleaver in consideration of various interleaver sizes such as for IMT-2000 or Universal Telecommunication Mobile System (UTMS) and limited hardware implementation complexity. The interleaver must be designed to ensure performance. That is, an interleaver in which interleaving / deinterleaving is performed by a certain interleaving rule is required. In addition, the various interleaver properties (e.g., Distance Properity, Weight Properity, Random Properity, etc.) required in the turbo internal interleaver are required to be excellent.
CDMA-2000 표준화 과정이나 UMTS 표준화 과정에서 터보 인터리버로 설계가 간단하면서도 성능이 우수한 인터리버가 제안되지 못하였다. 현재 CDMA-2000 표준화 스팩에 주어진 순방향 링크(forward link)와 역방향 링크(reverse link)의 경우 논리채널(logical channel)의 종류가 매우 다양하며, 다양한 데이터 레이트에 따른인터리버 크기 또한 여러 종류로 구성되어 이를 충실히 반영하기 위해서는 많은 양의 메모리가 요구된다. 예로서, CDMA2000 순방향 링크 전송모드의 경우 최소 144bits/frame부터 최대 36864bits/frame까지 매우 다양한 크기의 인터리버가 사용된다.In the CDMA-2000 standardization process or the UMTS standardization process, an interleaver with simple design and high performance as a turbo interleaver has not been proposed. In the case of the forward link and the reverse link given in the current CDMA-2000 standard specification, there are various types of logical channels, and various sizes of interleavers according to various data rates are also included. A large amount of memory is required to reflect faithfully. For example, in the CDMA2000 forward link transmission mode, an interleaver having a wide range of sizes ranging from a minimum of 144 bits / frame to a maximum of 36864 bits / frame is used.
상술한 바와 같이 종래기술의 문제점은 다음과 같이 요약된다.As described above, the problems of the prior art are summarized as follows.
첫째, 기존의 터보코드를 위한 내부 인터리버로서 PN 랜덤 인터리버, 랜덤 인터리버, 블록 인터리버, 비선형 인터리버, S-R 랜덤 인터리버 등 다양한 방식이 제안되었다. 그러나 이러한 인터리버들은 아직까지 구현의 관점보다는 학문적인 연구분야로서 성능개선에 주안점을 두고 설계된 알고리즘들로 볼수 있다. 따라서 실제 시스템의 구현을 고려할 때 상기 명시한 조건과 더불어 하드웨어 구현 복잡도를 반드시 고려해야 하는데 이러한 인터리버가 제안되어 있지 못한 실정이다.First, various methods such as PN random interleaver, random interleaver, block interleaver, nonlinear interleaver, and S-R random interleaver have been proposed as internal interleaver for conventional turbo codes. However, these interleavers can be seen as algorithms designed with the focus on performance improvement as an academic field rather than an implementation point of view. Therefore, when considering the actual system implementation, in addition to the above-mentioned conditions, hardware implementation complexity must be considered. Such an interleaver has not been proposed.
둘째, 기존의 인터리빙 방식의 대부분이 룩업 테이블 방식으로 각각의 인터리버 크기에 따른 인터리빙 규칙을 송수신기의 제어부(CPU, HOST)가 저장해 두어야 하므로 인터리버 버퍼 이외에 별도의 저장공간이 CPU 메모리 쪽에 필요하다. 즉, 설계 상의 문제점 중 하나는 프레임 사이즈가 다양하고 커질수록 인터리버의 인덱스(매핑 규칙 또는 어드레스)를 저장하기 위한 메모리의 크기가 너무 커진다는 것이다. 즉, 어드레싱을 위한 메모리 공간(하드웨어 공간)이 매우 증가하게 된다.Second, since most of the existing interleaving methods are lookup table methods, the interleaving rules according to each interleaver size must be stored by the control unit (CPU, HOST) of the transceiver, so that a separate storage space in addition to the interleaver buffer is required on the CPU memory side. That is, one of the design problems is that as the frame size varies and increases, the size of the memory for storing the interleaver's index (mapping rule or address) becomes too large. That is, the memory space (hardware space) for addressing is greatly increased.
셋째, 거리 성질과 랜덤 성질을 동시에 만족하는 인터리버의 구현이 쉽지 않았다.Third, the implementation of an interleaver that satisfies both distance and random properties was not easy.
따라서 본 발명의 목적은 상기 종래기술의 문제점들을 해결할수 있는 인터리버를 구현할수 있는 장치 및 방법을 제공함에 있다.Accordingly, an object of the present invention is to provide an apparatus and method for implementing an interleaver that can solve the problems of the prior art.
본 발명의 다른 목적은 통신시스템에서 터보코더의 특성인 거리특성, 웨이트특성, 랜덤특성을 동시에 만족하는 인터리빙/디인터리빙 장치 및 방법을 제공함에 있다.Another object of the present invention is to provide an interleaving / deinterleaving apparatus and method for satisfying a distance characteristic, a weight characteristic and a random characteristic which are characteristics of a turbo coder in a communication system.
본 발명의 또 다른 목적은 통신시스템에서 입력 데이터에 특정값을 더하여 2m×N(정수) 크기를 가지는 가상 어드레스 영역을 가지고 인터리빙을 수행하는 장치 및 방법을 제공함에 있다.It is still another object of the present invention to provide an apparatus and method for performing interleaving with a virtual address area having a size of 2 m × N (integer) by adding a specific value to input data in a communication system.
본 발명의 또 다른 목적은 인터리빙을 위해 입력 데이터에 더해진 특정값에 의해 발생되는 무효한 어드레스를 당초 발생하지 않는 인터리빙 장치 및 방법을 제공함에 있다.It is still another object of the present invention to provide an interleaving apparatus and method that does not initially generate an invalid address generated by a specific value added to input data for interleaving.
본 발명의 또 다른 목적은 터보부호기의 내부 인터리버의 어드레스를 부분영역별로 랜덤어드레스 구성(component)을 발생하는 PN시퀀스 발생기의 최적의 초기값을 찾는 방법을 제공함에 있다.It is still another object of the present invention to provide a method for finding an optimal initial value of a PN sequence generator that generates a random address component for each partial region of an address of an internal interleaver of a turbo encoder.
상기 목적들을 달성하기 위한 L개의 데이터가 저장된 인터리버 메모리로부터 상기 데이터를 독출하기 위하여 2m×NG개의 가상 어드레스들 보다 작은 L개의 어드레스를 발생하는 장치가, 상기 L개의 입력데이터를 순차로 저장하는 상기 인터리버메모리와, 상기 입력데이터 크기에 오프셋 값을 더하여 가상 어드레스 크기가 2m의 정수배로 제공하고, 각각 2m의 크기를 가지는 상기 정수개의 어드레스 생성영역들을 가지고 상기 어드레스 생성영역들에서 상기 오프셋 값에 대응하는 어드레스들을 제외한 어드레스들을 발생하는 어드레스 생성기로 구성되어, 상기 어드레스 생성영역들로부터 발생된 상기 어드레스들을 가지고 상기 인터리버 메모리로부터 상기 입력데이터를 독출하는 것을 특징으로 한다.An apparatus for generating L addresses smaller than 2 m x N G virtual addresses for reading the data from an interleaver memory having L data stored therein for achieving the above objects, sequentially stores the L input data. the offset value in the interleaver memory and said input data by adding the offset value to a size of the virtual address size providing an integral multiple of 2 m, each 2 has said integer number of the address generation areas having the size of m and the address generation area And an address generator for generating addresses excluding the addresses corresponding to the readout device, wherein the input data is read from the interleaver memory with the addresses generated from the address generation areas.
도 1은 일반적인 터보부호기의 블록구성을 도시하는 도면.1 is a block diagram showing a general turbo encoder.
도 2는 본 발명에 따른 통신시스템의 인터리빙 장치의 블록 구성을 도시한 도면.2 is a block diagram of an interleaving apparatus of a communication system according to the present invention;
도 3은 본 발명에 따른 통신시스템의 디인터리빙 장치의 블록 구성을 도시한 도면.3 is a block diagram of a deinterleaving apparatus of a communication system according to the present invention;
도 4는 본 발명에 따른, 입력 데이터의 크기에 오프셋값을 더한 가상 어드레스 영역을 가지고 인터리빙할 경우, 상기 오프셋값에 해당하는 데이터들이 인터리빙되어 인터리빙된 데이터 사이 사이에 존재하는 모습을 보여주는 도면.FIG. 4 is a diagram illustrating the interleaving of data corresponding to the offset value when interleaving with the virtual address area obtained by adding an offset value to the size of input data according to the present invention.
도 5는 상기 도 4에서 무효심볼들을 제거하여 출력 데이타들을 연접시킨 모습을 도시하는 도면.5 is a view illustrating a state in which output data are concatenated by removing invalid symbols in FIG. 4; FIG.
도 6은 생성다항식이 (1+x+x6)인 의사랜덤 생성기(PN generator)를 도시한 도면.FIG. 6 shows a pseudorandom generator with a generation polynomial of (1 + x + x6).
도 7은 본 발명의 제1실시 예에 따른 인터리빙 장치를 도시하는 도면.7 illustrates an interleaving apparatus according to a first embodiment of the present invention.
도 8는 상기 도 7의 구성중 어드레스생성기의 상세 구성을 도시한 도면.FIG. 8 is a diagram showing a detailed configuration of an address generator among the components of FIG.
도 9은 본 발명의 제1실시 예에 따른 인터리빙 어드레스 생성과정을 도시하는 도면.9 is a diagram illustrating an interleaving address generation process according to the first embodiment of the present invention.
도 10은 본 발명의 제2실시 예에 따른 인터리빙 장치를 도시하는 도면.10 illustrates an interleaving apparatus according to a second embodiment of the present invention.
도 11은 상기 도 10의 인터리빙 장치에 관련한 타이밍도를 도시하는 도면.FIG. 11 is a timing diagram relating to the interleaving apparatus of FIG. 10. FIG.
도 12는 마지막 PN생성기에서의 OSV 검출 예를 설명하기 위한 도면.12 is a view for explaining an example of OSV detection in the last PN generator.
도 13은 본 발명의 제2실시 예에 따른 어드레스 생성과정을 도시하는 도면.13 is a diagram illustrating an address generation process according to a second embodiment of the present invention.
도 14는 본 발명의 제2실시 예에서 PN생성기들의 최적의 초기상태값을 구하기 위한 과정을 도시하는 도면.FIG. 14 is a diagram illustrating a procedure for obtaining an optimal initial state value of PN generators in a second embodiment of the present invention. FIG.
다양한 프레임 크기에 최적의 성능을 발휘 할 수 있는 터보코더를 찾아내기 위해서는 터보코드의 구성부호기의 메모리 개수(유한장k)와 다수의 생성다항식 및 최적의 부호화율(code rate) 등 고려하여야 할 사항이 너무나 많다. 또한 이러한 모든 요소들이 성능에 어떠한 영향을 미치는지 이론적으로 검증되지 않은 상태에서는 최적의 성능을 발휘하는 터보코더를 실험적으로 찾기란 매우 많은 시간과 노력이 요구된다.In order to find a turbo coder that can achieve the best performance in various frame sizes, considerations such as the number of memory (finite length k) of turbo coder, multiple generation polynomials, and optimal code rate There are so many. In addition, it is very time and effort to experimentally find a turbo coder that performs optimally without theoretically verifying how all these factors affect performance.
따라서 실제 구현을 위한 방법은 성능에 영향을 주는 몇 가지 기준을 마련하고 그 기준을 최대한 만족시키는 방법으로 인터리버을 구현해야 한다. 이러한 기준이 되는 특성들은 하기와 같다.Therefore, the method for the actual implementation should implement some criteria that affect the performance and implement the interleaver in a way that satisfies the criteria as much as possible. These standard characteristics are as follows.
거리 성질(Distance Properity) : 인접한 코드워드 심볼들간의 거리를 어느 정도 이상 유지해야 한다. 이것은 길쌈부호(Convolutional code)의 코드워드 디스턴스 성질과 동일한 역할을 하므로 동일한 조건에서 가급적 디스턴스가 크도록 설계하는 것이 바람직하다.Distance property: The distance between adjacent codeword symbols must be maintained to some extent. Since this plays the same role as the codeword distance property of the convolutional code, it is preferable to design the distance as large as possible under the same conditions.
웨이트 성질(Weight Properity) : 제로가 아닌 정보어(Non-zero information word)에 대응되는 코드워드의 웨이트가 어느정도 이상 되어야 한다. 이것은 길쌈부호의 최소거리(minimum distance) 성질과 동일한 역할을 하므로 동일한 조건에서 웨이트가 크도록 설계하는 것이 바람직하다.Weight Property: The weight of a codeword corresponding to a non-zero information word should be more than a certain amount. Since it plays the same role as the minimum distance property of the convolutional code, it is desirable to design the weight to be large under the same conditions.
랜덤 성질(Random Properity) : 인터리빙 이전의 원래 입력 정보 심볼(original input information symbol)들간의 상관 계수(correlation factor)에 비하여 인터리빙 이후의 출력 워드 심볼들간의 상관 계수가 매우 낮아야 한다. 즉, 출력 워드 심볼들간에 랜덤화가 충실히 이루어져야 한다. 이는 반복 디코딩에서 발생되는 외부정보 성질(Extrinction information quality)에 직접적인 영향을 주는 요인이다.Random Properity: The correlation coefficient between output word symbols after interleaving should be very low compared to the correlation factor between original input information symbols before interleaving. That is, randomization must be faithfully performed between output word symbols. This is a factor that directly affects extrinction information quality generated in iterative decoding.
이하 본 발명의 바람직한 실시예를 첨부된 도면의 참조와 함께 상세히 설명한다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings.
본 발명은 상술한 터보코더의 인터리버 성질(거리성질, 웨이트 성질, 랜덤성질 등)을 만족할수 있는 최적의 인터리빙/디인터리빙 장치를 제안한다.The present invention proposes an optimal interleaving / deinterleaving apparatus capable of satisfying the above-described interleaver property (distance property, weight property, random property, etc.) of the turbo coder.
일반적으로 터보코드는 랜덤 인터리버가 성능이 우수하다. 또한 프레임 크기가 클수록 성능이 우수하다. 랜덤인터리버의 성능을 만족하면서 복잡도를 개선할수 있도록 인터리버를 설계하는 것이 바람직하다. 이를 위해 본 발명에서는 PN시퀀스를 생성하는 선형 피드백 쉬프트 레지스터(LFSR;Linear Feedback Shift Register)를 이용하며, 이로부터 생성되는 랜덤수(Random Number)를 어드레스로 사용한다. 그러나, 이와 같은 방식을 사용하고자 할 경우 다음과 같은 문제점이 고려해야 한다.In general, a turbo interleaved random interleaver is excellent. The larger the frame size, the better the performance. It is desirable to design the interleaver to improve the complexity while satisfying the performance of the random interleaver. To this end, in the present invention, a linear feedback shift register (LFSR) for generating a PN sequence is used, and a random number generated therefrom is used as an address. However, the following problem should be considered when using this method.
첫째, PN시퀀스는 주기가 2m-1이다.First, the PN sequence has a period of 2 m −1.
둘째, 터보코드가 입력프레임 크기 단위로 처리하는데 대부분의 프레임 크기는 2의 거듭제곱으로 표현되지 않는다.Second, turbocode processes input frame size units, and most frame sizes are not expressed as powers of two.
이를 해결하기 위해서, 본 발명에서 제안하는 터보코더 인터리버의 어드레스 발생기는 인터리빙할 입력 프레임 데이터의 크기(L)가 2의 거듭제곱으로 표시되지 않으면, 최소의 값(이하:오프셋값OSV라 칭함)을 프레임크기(L)에 더하여 가상의 인터리빙 크기(N=L+OSV)를 2m의 정수배가 되도록 만든다. 여기서 상기 오프셋값은 상기 프레임 크기를 2진수로 변환하여 그 최하위 비트에서 연속되는 '1'의 개수가 적어도 1개 이상이 되도록 더해주는 값이다. 그리고 이렇게 구해진 가상의 프레임 크기N을 영역수(NG)×2m으로 표현되도록 하는 영역수(NG)와 m의 조합들을 구한다. 상기 각각의 조합에 대하여 2m크기의 부분영역별로 의사랜덤 어드레스를 발생하고 각 부분영역에서 의사랜덤하게 발생된 어드레스를 순차적으로 또는 랜덤하게 선택하므로서 전체 입력프레임 데이터를 인터리빙한다. 여기서 상기 영역수NG와 m 값은 상기한 인터리버 성질들을 최적으로 만족할수 있도록 컴퓨터 시뮬레이션 및 서치 알고리즘(search algorithm)을 통해 구한다.In order to solve this problem, the address generator of the turbocoder interleaver proposed by the present invention provides a minimum value (hereinafter referred to as an offset value OSV) when the size L of the input frame data to be interleaved is not represented by a power of two. In addition to the frame size L, the virtual interleaving size (N = L + OSV) is made an integer multiple of 2 m . The offset value is a value that converts the frame size into a binary number so that the number of consecutive '1's in the least significant bit becomes at least one or more. And so can the virtual frame size N of determined area so that the area to be represented by (N G) × 2 m ( N G) is obtained with the combination of m. For each combination, a pseudorandom address is generated for each sub-region having a size of 2 m , and the entire input frame data is interleaved by sequentially or randomly selecting an address generated pseudo-randomly in each sub-region. The number of regions N G and m are calculated through computer simulation and search algorithm to optimally satisfy the interleaver properties.
예를 들어, 프레임 크기가 376(101111000)인 경우 상기 오프셋값을 구하는 방법을 설명하면, 상기 프레임 크기인 376(101111000)을 이진수로 변환하여 그 최하위비트부터 0의 개수가 적어도 한 개 이상 나오도록 상기 프레임 크기에 오프셋 값을 더하는데, 일 예로 8(1000)이 될 수 있다. 따라서 상기 가상의 인터리빙크기(가상의 프레임크기)는 384이다. 상기 가상의 인터리빙 크기에 대하여 인터리빙 어드레스를 발생한다면 상기 추가된 오프셋값 만큼의 불필요한 읽기 어드레스들이 발생한다. 이러한 어드레스들을 '무효어드레스'라 칭한다. 만일, 상기 예에서 영역수로 나누지 않고 입력프레임을 2거듭제곱으로 표현되도록 오프셋 값을 추가한다면 가상의 인터리빙 크기는 512가 되고 상기 오프셋 값은 136이 된다. 만약 상기 입력프레임크기(4600)가 커지면 더해지는 오프셋 값(3592)이 매우 커지므로 무효어드레스의 처리가 복잡해진다. 따라서 가상 인터리빙 크기가 2m×NG가 되도록 적정한 오프셋 값을 추가한다.For example, in the case where the frame size is 376 (101111000), a method of obtaining the offset value will be described. In this case, the frame size 376 (101111000) is converted into a binary number so that at least one number of 0s is obtained from the least significant bit. An offset value is added to the frame size, for example, 8 (1000). Therefore, the virtual interleaving size (virtual frame size) is 384. If an interleaving address is generated for the virtual interleaving size, unnecessary read addresses are generated as much as the added offset value. These addresses are called ' invalid addresses' . In the above example, if the offset value is added so that the input frame is represented by two powers without dividing by the number of regions, the virtual interleaving size is 512 and the offset value is 136. If the input frame size 4600 becomes large, the offset value 3592 to be added becomes very large, which complicates the processing of the invalid address. Therefore, an appropriate offset value is added so that the virtual interleaving size is 2m × N G.
또한, 상기 영역수(NG)를 적정하게 나눌 필요가 있는데 영역수가 매우 많아 진다면 영역크기가 작아지므로 랜덤성질이 나빠질수 있다. 또한 영역수가 너무 작으면 영역크기가 크므로 상기 인터리버 인덱스(mapping rule, 또는 address)를 저장하기 위한 메모리의 크기가 너무 커지기 때문에 시뮬레이션을 통해 적당한 값을 구한다.In addition, it is necessary to appropriately divide the number of regions N G , but if the number of regions becomes very large, the size of the region becomes small, and thus, the random property may deteriorate. In addition, if the number of regions is too small, the size of the region is large, and thus the size of the memory for storing the interleaver index (mapping rule or address) becomes too large.
본 발명에에 따른 터보 인터리버는 입력 정보 비트의 순서를 오프셋제어 의사랜덤 방식으로 치환(permutation))하여 제2구성부호기의 입력으로 제공한다. 따라서 본 발명의 실시 예에 따른 인터리버 구조는, 입력 정보 비트를 저장하는 인터리버 메모리(Input data buffer/Output data buffer)와, 입력데이타크기에 소정 오프셋값을 더한 가상 인터리버 크기를 몇 개의 영역으로 구분하여 각 영역별로 랜덤어드레스를 생성하며, 각 영역별로 생성된 랜덤어드레스를 순차적/랜덤하게 선택하여 인터리빙 어드레스를 발생하는 오프셋제어 의사랜덤 인터리빙 블록(Partial Reversal Interleaver + Comparator)를 포함한다. 또한 본 발명에서 예시하는 터보코드의 제1, 제2구성부호기는 상기 종래기술의 구성부호기로 구성될수 있을 뿐만 아니라 TIA에서 표준화하고 있는 CDMA2000에서 제시하는 구성부호기 및 ETSI에서 표준화 하고 있는 UMTS에서 제시하는 구성부호기를 사용할수 있는 등 특정구성부호기에 의하여 한정되지 않는다. 또한 본 발명의 인터리버는 직렬 터보코드의 내부 인터리버뿐만 아니라 채널인터리버 등에도 활용 가능하다.The turbo interleaver according to the present invention permutates the order of input information bits in an offset-controlled pseudorandom manner and provides it to the input of the second component encoder. Accordingly, the interleaver structure according to an embodiment of the present invention includes an interleaver memory for storing input information bits and a virtual interleaver size obtained by adding a predetermined offset value to an input data size into several regions. A random address is generated for each region, and an offset control pseudo random interleaver block (Partial Reversal Interleaver + Comparator) is generated for generating an interleaving address by sequentially / randomly selecting random addresses generated for each region. In addition, the first and second constituent encoders of the turbo code exemplified in the present invention can be configured not only with the constituent encoders of the prior art but also by the constituent encoders proposed by CDMA2000 standardized by TIA and UMTS standardized by ETSI. It is not limited by the specific constituent encoders, such as the use of constituent encoders. In addition, the interleaver of the present invention can be utilized not only for the internal interleaver of serial turbo code but also for a channel interleaver.
이하 본 발명에서 사용하는 용어들을 정의하면, '영역'이란 가상의 인터리버 크기를 분할하였을 때 각각의 어드레스 영역을 의미하며, '그룹'이란 추가된 오프셋 값에 의해 발생된 무효어드레스들에 의해 구분되어지는 각각의 어드레스 영역을 의미한다. 또한, 본 발명에 따른 인터리버를 오프셋제어방식 의사랜덤 인터리버(OCPNI;Offset Controlled PN Interleaver)라 칭한다.When the terms used in the present invention are defined below, 'region' means each address region when the virtual interleaver size is divided, and 'group' is divided by invalid addresses generated by the added offset value. Loss means each address area. In addition, the interleaver according to the present invention is referred to as an Offset Controlled PN Interleaver (OCPNI).
도 2 및 도 3은 본 발명에 따른 인터리버 및 디인터리버의 기본 구성을 보여준다.2 and 3 show the basic configuration of the interleaver and deinterleaver according to the present invention.
상기 도 2를 참조하여 제1구성부호기에서 출력되는 프레임 데이터를 인터리빙하기 위한 인터리버의 구성을 살펴보면, 어드레스 생성부(211)는 입력 프레임 데이터 크기 L 및 입력 클럭(clock)에 따라 데이타의 순서를 바꾸기 위한 독출 어드레스를 생성하여 인터리버 메모리(212)로 출력한다. 상기 인터리버 메모리(212)는 쓰기모드시 입력데이타를 순서대로 저장하고, 독출모드시 상기 어드레스 생성부(211)에서 제공되는 어드레스에 따라 데이터를 출력한다. 카운터(213)는 클럭(Clock)을 입력하며, 상기 인터리버 메모리(212)의 쓰기 어드레스(Write address)으로 출력한다. 상기한 바와 같이 상기 인터리버는 쓰기모드시 입력데이타를 인터리버 메모리(212)에 순서대로 저장하고, 독출모드시 상기 어드레스 생성부(211)에서 발생된 독출 어드레스에 따라 상기 인터리버 메모리(212)에 저장되어 있는 데이터를 출력한다. 다른 예로, 쓰기 모드시 미리 데이터의 순서를 바꿔 인터리버 메모리에 저장하고, 독출모드시 순서대로 데이터를 읽어 제2구성부호기로 출력할 수도 있다.Referring to FIG. 2, a configuration of an interleaver for interleaving frame data output from the first component encoder, the address generator 211 changes the order of data according to an input frame data size L and an input clock. A read address is generated for output to the interleaver memory 212. The interleaver memory 212 stores input data in order in the write mode, and outputs data according to the address provided by the address generator 211 in the read mode. The counter 213 inputs a clock and outputs the clock to the write address of the interleaver memory 212. As described above, the interleaver stores input data in order in the interleaver memory 212 in the write mode, and is stored in the interleaver memory 212 according to the read address generated by the address generator 211 in the read mode. Output the data. As another example, the data may be changed in the interleaver memory in the write mode in advance, and the data may be read out in order in the read mode and output to the second component encoder.
상기 도 2를 참조하여 디인터리버의 구성을 살펴보면, 어드레스 생성부(211)는 입력 프레이 데이터 크기 L, 및 입력클럭에 의하여 데이터의 순서를 원래로 복원하기 위한 쓰기 어드레스를 생성하여 디인터리버 메모리(212)에 제공한다. 상기 디인터리버 메모리(212)는 쓰기모드시 상기 어드레스 생성부(211)에서 제공되는 쓰기 어드레스(write ADDR)에 따라 입력데이타를 저장하고, 독출모드시 저장 데이터를 순서대로 출력한다. 카운터(213)는 클럭(Clock)을 입력하며, 상기 디인터리버 메모리(212)에서 데이터를 독출하기 위한 독출 어드레스(Read ADDR)를 상기 메모리(212)로 제공한다.Referring to the configuration of the deinterleaver with reference to FIG. 2, the address generator 211 generates a deinterleaver memory 212 by generating a write address for restoring the original order of data by the input frame data size L and the input clock. To provide. The deinterleaver memory 212 stores input data according to the write address (write ADDR) provided from the address generator 211 in the write mode, and sequentially outputs the stored data in the read mode. The counter 213 inputs a clock and provides a read address (Read ADDR) for reading data from the deinterleaver memory 212 to the memory 212.
상술한 바와 같이, 상기 디인터리버는 인터리버의 역과정으로 구조상 모든 부분이 완전히 동일하며, 단지 독출/기록 모드에서 입력되는 데이터의 순서가 다를 뿐이다. 따라서 이하 설명은 인터리버를 위주로 설명할 것이다.As described above, the deinterleaver is a reverse process of the interleaver, and all parts of the deinterleaver are completely identical in structure, and only the order of data input in the read / write mode is different. Therefore, the following description will focus on the interleaver.
이하 본 발명의 제1실시 예에 따른 인터리빙 장치를 설명한다.Hereinafter, an interleaving apparatus according to a first embodiment of the present invention will be described.
본 발명의 제1실시 예에 따른 인터리빙 장치는 하기 수학식 1(C-program)과 같은 알고리즘에 의해 인터리빙을 수행한다.The interleaving apparatus according to the first embodiment of the present invention performs interleaving by an algorithm such as Equation 1 (C-program).
i=0;i = 0;
/*Find N=2m×NG*// * Find N = 2 m × N G * /
for(ADDRESS_WRITE=0;ADDRESS_WRITE<=2m-2;ADDRESS_WRITE++)for (ADDRESS_WRITE = 0; ADDRESS_WRITE <= 2 m -2; ADDRESS_WRITE ++)
{for(g=0;g<=NG-1;g++){for (g = 0; g <= N G -1; g ++)
{ADDRESS_READ[i]=[PNg(ADDRESS_WRITE)-1]+g*2m;{ADDRESS_READ [i] = [PNg (ADDRESS_WRITE) -1] + g * 2 m ;
if(ADDRESS_READ<=L-1){if (ADDRESS_READ <= L-1) {
ADDRESS_READ[i]=ADDRESS_READ[i]-OFFSET(ADDERSS_READ[i],GTH);ADDRESS_READ [i] = ADDRESS_READ [i] -OFFSET (ADDERSS_READ [i], GTH);
i++;i ++;
}}
}}
/*Overwrite ADDRESS_READ with the same address as ADDRESS_WRITE*// * Overwrite ADDRESS_READ with the same address as ADDRESS_WRITE * /
ADDRESS_WRITE=(2m-1);ADDRESS_WRITE = (2m-1);
for(g=0;g<=NG-1;g++)for (g = 0; g <= N G -1; g ++)
{ADDRESS_READ[i]=ADDRESS_WRITE+g*2m-OFFSET(ADDRESS_WRITE,GTH);{ADDRESS_READ [i] = ADDRESS_WRITE + g * 2 m -OFFSET (ADDRESS_WRITE, GTH);
i++;i ++;
}}
}}
/*OFFSET Generation Algorithm*// * OFFSET Generation Algorithm * /
function OFFSET(ADDRESS_READ,GTH){function OFFSET (ADDRESS_READ, GTH) {
if(ADDRESS_READ<GTH[0])OFFSET=0;if (ADDRESS_READ <GTH [0]) OFFSET = 0;
else if(GTH[0]<ADDRESS_READ<GTH[1])OFFSET=1;else if (GTH [0] <ADDRESS_READ <GTH [1]) OFFSET = 1;
else if(GTH[1]<ADDRESS_READ<GTH[2])OFFSET=2;else if (GTH [1] <ADDRESS_READ <GTH [2]) OFFSET = 2;
else if(GTH[2]<ADDRESS_READ<GTH[3])OFFSET=3;else if (GTH [2] <ADDRESS_READ <GTH [3]) OFFSET = 3;
else if(GTH[3]<ADDRESS_READ<GTH[4])OFFSET=4;else if (GTH [3] <ADDRESS_READ <GTH [4]) OFFSET = 4;
else if(GTH[4]<ADDRESS_READ<GTH[5])OFFSET=5;else if (GTH [4] <ADDRESS_READ <GTH [5]) OFFSET = 5;
else if(GTH[5]<ADDRESS_READ<GTH[6])OFFSET=6;else if (GTH [5] <ADDRESS_READ <GTH [6]) OFFSET = 6;
else OFFSET=7;else OFFSET = 7;
}}
상기 수학식 1에서 생성되는 독출 어드레스(address_read)는 각기 NRead addresses (address_read) generated in Equation 1 are each N GG 개의영역으로 구별되며, 각각의 영역에 속하는 독출 어드레스의 수는 2The number of read addresses belonging to each area is 2 mm 개이며, 각각의 영역에 해당되는 의사랜덤 발생기(PN generator)에 의해 발생되는 랜덤 어드레스 성분의 수는 2The number of random address components generated by the PN generator corresponding to each region is 2 mm -1개이다.-1.
상기 <수학식 1>과 같이 생성된 독출 어드레스(ADDRESS_READ)는 원래의 어드레스와 1대 1 매핑(mapping)되며, 이러한 인터리버는 PN 인터리버의 특성에다 거리특성을 함께 가진다. 여기서 OFFSET(I)는 주어진 기준값들로부터 해당되는 ADDRESS_READ가 어느 그룹에 속하는지를 파악하여 해당되는 오프셋만큼 어드레스를 쉬프트(shift)시키는 기능을 하는 함수이다.The read address ADDRESS_READ generated as shown in Equation 1 is mapped one-to-one with the original address, and the interleaver has the characteristics of the PN interleaver and the distance. In this case, OFFSET (I) is a function that determines which group the corresponding ADDRESS_READ belongs to from the given reference values and shifts the address by the corresponding offset.
만일, 상기 오프셋만큼 어드레스를 쉬프트시키지 않고 인터리버 메모리의 해당번지를 어드레싱하여 데이터를 독출하는 경우 오프셋값의 수 만큼 무효한 데이터가 읽혀지게 된다. 즉, [0..L-1]의 입력데이타들에 해당되는 ADDRESS_READ 이외에 오프셋[L..N-1]에 해당되는 8개의 무효 어드레스가 인터리빙 시퀀스 사이 사이에 존재하게 된다. 이에 대한 설명이 도 4에 도시되어 있다. 이것을 그대로 읽을 경우, 실제 전송해야 할 L심볼보다 OSV(=8)개 많은 N개의 데이타들이 전송되므로 사이에 존재하는 어드레스를 빼고 후속하는 어드레스를 연접시켜야 한다. 이에 대한 설명은 도 5에 도시되어 있다.If data is read by addressing the corresponding address of the interleaver memory without shifting the address by the offset, invalid data is read by the number of offset values. That is, in addition to the ADDRESS_READ corresponding to the input data of [0..L-1], eight invalid addresses corresponding to the offset [L..N-1] exist between the interleaving sequences. A description of this is shown in FIG. 4. If this is read as it is, OSV (= 8) more N data are transmitted than L symbols to be transmitted, so the address existing in between must be subtracted and the subsequent address concatenated. Description of this is shown in FIG. 5.
예를들어, 새로 구해진 가상의 인터리버 크기 N을 NG*2m으로 표현할수 있는 여러 가지 조합들중 적정한 하나를 선택하면 각 어드레스 생성영역의 크기가 정해진다. 그리고 osv에 의해서 발생하는 무효어드레스는 마지막 어드레스 생성영역에서 발생하는 PN생성기의 초기값에 의하여 정해진다. 그리고 상기 무효 어드레스의 위치(GTH: Group threshold)는 전체어드레스를 어떻게 생성하느냐에 있다. 다시말해, 각각의 어드레스 생성영역에 대응하여 PN생성기를 이용하여 어드레스를 발생한다면 그 각각의 PN생성기의 초기값과 각 어드레스 생성영역에서 생성된 어드레스를 어떤식으로 선택하는가(순서적으로 또는 규칙성 있는 랜덤하게)에 따라서 결정된다. 결국, 주어진 인터리빙 규칙을 안다면 추가된 오프셋값에 의해 발생되는 무효한 어드레스의 위치를 미리 알수 있다.For example, if one of the various combinations that can represent the newly obtained virtual interleaver size N as N G * 2 m is selected, the size of each address generation area is determined. The invalid address generated by osv is determined by the initial value of the PN generator generated in the last address generation region. The position of the invalid address (GTH: Group threshold) depends on how to generate the entire address. In other words, if an address is generated using the PN generator corresponding to each address generation area, how is the initial value of each PN generator and the address generated in each address generation area selected (either in sequence or regularity)? Are randomly determined). After all, if we know a given interleaving rule, we can know in advance the location of the invalid address caused by the added offset value.
이는 상기한 무효어드레스에 대응하는 무효 데이타들을 제외하고 차례로 인터리빙된 저장 데이터들을 출력할수 있음을 의미한다. 상세히 설명하면, [L..N-1]에서 최종 8개의 저장 데이터에 해당되는 ADDRESS_READ는 항상 인터리빙 규칙에 의하여 일정하게 결정된다. 따라서 인터리빙된 무효 데이터들의 위치를 미리 알수 있다. 우선, 테일(tail) 8개의 데이터들의 어드레스를 D1, D2, D3,...,D8(즉,L..N-1)이라 하자. 그리고 각각의 Di(i=1..8)에 해당되는 인터리빙 어드레스를 Tk=PIRB(Di), k=1..8,라 하자. 물론 D1<D2라 해서 반드시 T1<T2는 아니며 임의의 순서에 의해 배치된다. 따라서, 편의상 T1<T2<..<T8의 순서로 배치되도록 조정한 인덱스를 j라 하고, 이를 사용한 어드레스를 Tj(j=1..8)로 정의한다. 그러면 상기 어드레스를 기준으로 N개의 인터리버 공간은 8개의 그룹으로 분할되며, 각각의 Ti가 그 경계를 구분하는 기준값들(Threshold)이 된다. 여기서 상기 기준값들을 제외시키고 어드레스들을 연접시켜야 한다. 예를들어,, G0의 경우에는 ADDRESS_READ-0,G1의 경우에는 ADDERSS_READ-1,..., G7의 경우에는 ADDRESS_READ-7을 해주면 발생되는 모든 어드레스는 [0..L-1] 사이의 값을 가지게 된다.This means that the interleaved stored data can be output in order except the invalid data corresponding to the invalid address. In detail, ADDRESS_READ corresponding to the last 8 stored data in [L..N-1] is always constantly determined by an interleaving rule. Therefore, the position of the interleaved invalid data can be known in advance. First, let the addresses of the tail eight data be D1, D2, D3, ..., D8 (that is, L..N-1). In addition, suppose that the interleaving address corresponding to each Di (i = 1..8) is Tk = PIRB (Di) and k = 1..8. Of course, D1 < D2 are not necessarily T1 < T2, but are arranged in any order. Therefore, for convenience, the index adjusted to be arranged in the order of T1 <T2 <.. <T8 is called j, and the address using the index is defined as Tj (j = 1..8). Then, the N interleaver spaces are divided into eight groups based on the address, and each Ti becomes a threshold value for separating the boundary. Here, the reference values should be excluded and the addresses should be concatenated. For example, ADDRESS_READ-0 in case of G0, ADDERSS_READ-1 in case of G1, ADDRESS_READ-7 in case of G7, all address generated is between [0..L-1]. Will have
상기 수학식 1과 같은 알고리즘을 하드웨어적으로 구현하면 첨부된 도면 도 7과 같다. 특히, 상기 도 7은 본 발명에 실시 예에 따른, 상기 인터리버 메모리112에 순차적으로 저장된 데이터를 인터리빙하여 독출하기 위한 어드레스 생성부의 구체적인 상세구성을 도시하고 있다.Hardware implementation of the algorithm shown in Equation 1 is as shown in FIG. In particular, FIG. 7 illustrates a detailed configuration of an address generator for interleaving and reading data sequentially stored in the interleaver memory 112 according to an embodiment of the present invention.
상기 도 7을 참조하여 어드레스생성부(211)를 살펴보면, 랜덤어드레스 생성부221은 복수개의 의사랜덤 발생기(PN generator)들에 의해 랜덤 어드레스구성들을 생성하여 출력한다. 비교부222는 상기 랜덤어드레스 생성부221에서 출력하는 랜덤 어드레스를 상기 오프셋값에 의해 미리 결정되는 상기 기준값들(GTH;어드레스 영역을 그룹핑하는 그룹 기준값들)과 비교하여 어느 그룹에 속하는지 판단하여 그룹값 선택신호와 상기 랜덤 어드레스를 출력한다. 또한, 상기 비교부222는 상기 랜덤 어드레스생성기(121)에서 출력되는 랜덤 어드레스를 상기 오프셋값에 의한 그룹 기준값들(GTH)과 비교하여 어느 하나라도 일치할 경우 그때의 랜덤 어드레스는 삭제(deletion)시켜 출력하지 않는다. 선택기[부]223은 상기 선택신호에 따라 해당 그룹값을 선택하여 출력한다. 감산기124는 상기 비교부(122)에서 출력되는 랜덤 어드레스에서 상기 선택부123에서 출력되는 특정 그룹값을 감하여 메모리(112)에서 데이터를 독출하기 위한 독출 어드레스를 생성한다.Referring to the address generator 211 with reference to FIG. 7, the random address generator 221 generates and outputs random address components by a plurality of pseudo random generators (PN generators). The comparator 222 compares the random address output from the random address generator 221 with the reference values GTH (group reference values for grouping address areas), which are determined by the offset value, to determine which group the group belongs to. A value selection signal and the random address are output. In addition, the comparison unit 222 compares the random addresses output from the random address generator 121 with the group reference values GTH based on the offset value, and deletes the random addresses at the time when any one of them is identical. Do not print. The selector [unit] 223 selects and outputs a corresponding group value according to the selection signal. The subtractor 124 generates a read address for reading data from the memory 112 by subtracting a specific group value output from the selector 123 from the random address output from the comparator 122.
상기 도 7의 구성중 상기 랜덤어드레스 생성부221의 상세구성을 도 8에 도시하였다.A detailed configuration of the random address generation unit 221 of the configuration of FIG. 7 is illustrated in FIG. 8.
상기 도 8을 참조하면, 의사랜덤 생성기들(PN generator)811-8N1은 각각 대응되는 어드레스 생성영역에 저장된 데이터의 순서를 바꾸기 위한 의사랜덤 시퀀스(어드레스 구성들 : address component)생성하여 제1멀티플렉서812로 출력한다. 여기서 각각의 의사랜덤 생성기는 서로 다른 상태값들로 초기화한다. 카운터816은 상기 제1멀티플렉서812의 출력을 선택하기 위한 선택신호를 출력한다. 만일, 어드레스 영역 수가 Ng개라고 가정하면, 0..Ng-1의 선택신호를 출력한다. 여기서 상기 선택신호는 순차적 또는 랜덤하게 발생할수 있다. 상기 랜덤하게 발생하는 경우에는소정 알고리즘에 의해구해진 어떠한 패턴에 의해 상기 선택신호를 랜덤하게 발생한다. 상기 멀티플렉서812는 상기 카운터에서 제공되는 선택신호에 의해 해당 의사랜덤 생성기의 출력을 선택하여 출력한다. 여기서 상기 멀티플렉서812의 출력데이타는 감산기818에서 1만큼 감산되어 제2멀티플렉서로 입력된다. 이유인즉, 상기 의사랜덤 생성기들은 어드레스 0값을 생성하지 못하므로, 모든 생성값에서 1만큼 감하여 랜덤 어드레스를 0부터 매핑시키기 위함이다. 영역 카운터815는 상기 어드레스 생성영역의 크기에 해당하는 카운터를 발생하여 비교기814로 출력한다. 상기 비교기814는 상기 영역 카운터815에서 제공되는 카운터 값이 영역크기(2m)-1에 해당할 때 상기 제2멀티플렉서813으로 선택신호 '1'를 출력한다. 상기 제2멀티플렉서813은 상기 선택신호에 의해 상기 영역 카운터815에서 발생하는 카운터가 2m-1보다 같거나 작을 경우 상기 제1멀티플렉서712의 출력을 선택출력하고, 상기 2m-1일 경우 상기 비교기814에서 제공하는 2m-1(영역크기-1)을 선택출력한다. 어드레스 버퍼817은 상위 어드레스 영역에 상기 카운터816의 출력데이타를 저장하고, 하위 어드레스 영역에 상기 제2멀티플렉서813의 출력데이타를 저장한다. 이렇게 상기 어드레스 버퍼817에 저장된 어드레스는 상기 비교기222로 전달된다. 그러면, 상기 비교기222에서는 상기 어드레스가 어느 그룹에 속하는지 판단하여 이에 대한 그룹값 선택신호를 상기 선택기223로 제공한다. 그리고 상기 선택기223은 상기 선택신호에 따라 해당 그룹값을 선택 출력하고, 상기 감산기224는 상기 비교기222에서 출력되는 상기 어드레스에서 상기 선택된 그룹값을 감해 최종 독출[인터리빙을 위한 읽기] 어드레스를 상기 인터리버 메모리212로 제공하고, 상기 인터리버 메모리112에서 상기 독출 어드레스에 해당하는 데이터를 독출한다.Referring to FIG. 8, PN generators 811-8N1 generate pseudorandom sequences (address components: address components) for changing the order of data stored in corresponding address generation regions, respectively. Will output Here each pseudorandom generator initializes with different state values. The counter 816 outputs a selection signal for selecting an output of the first multiplexer 812. If it is assumed that the number of address areas is N g , a selection signal of 0..N g -1 is output. The selection signal may occur sequentially or randomly. When the random occurrence occurs, the selection signal is randomly generated by any pattern obtained by a predetermined algorithm . The multiplexer 812 selects and outputs the output of the pseudorandom generator based on the selection signal provided from the counter. Here, the output data of the multiplexer 812 is subtracted by 1 from the subtractor 818 and input to the second multiplexer. That is, since the pseudorandom generators do not generate an address 0 value, the random random generators are used to map random addresses from 0 by subtracting 1 from all generated values. The area counter 815 generates a counter corresponding to the size of the address generation area and outputs the counter to the comparator 814. The comparator 814 outputs a selection signal '1' to the second multiplexer 813 when the counter value provided by the area counter 815 corresponds to an area size (2 m ) −1. The second multiplexer 813, if the counter is 2 when m is equal to or smaller than -1, the output select the output of the first multiplexer 712, and the 2 m -1 il the comparator generated by the area counter 815 by the selection signal Selectively output 2 m -1 (area size -1) provided by 814. The address buffer 817 stores the output data of the counter 816 in the upper address area and the output data of the second multiplexer 813 in the lower address area. The address stored in the address buffer 817 is transferred to the comparator 222. Then, the comparator 222 determines which group the address belongs to and provides a group value selection signal to the selector 223. The selector 223 selects and outputs a corresponding group value according to the selection signal, and the subtractor 224 subtracts the selected group value from the address output from the comparator 222 to obtain a final read (read for interleaving) address. 212, data corresponding to the read address is read from the interleaver memory 112.
상기한 도 7 및 도 8의 구성에 따른 독출 어드레스 생성 과정을 살펴본다. 상기 의사랜덤 생성기811-8N1들은 클럭킹에 의해 저장된 상태값을 쉬프트시켜 의사랜덤 시퀀스를 생성하고, 상기 제1멀티플렉서812는 상기 카운터816에서 제공되는 선택신호에 의해 해당 의사랜덤 생성기811-8N1의 상태를 선택출력한다. 상기 선택신호에 의해 상기 의사랜덤 생성기들817-8N1의 상태들이 모두 선택되면 다시 상기 의사랜덤 생성기들811-8N1은 클럭킹에 의해 저장된 상태를 쉬프트시켜 의사래덤 시퀀스를 생성한다. 이렇게 상기 제1멀티플렉서812에서 출력되는 상기 의사랜덤 시퀀스는 1만큼 감해져서 상기 제2멀티플렉서813로 입력되며, 상기 의사랜덤 시퀀스는 상기 영역카운트가 상기 어드레스 생성영역의 크기(2m)-1 값에 도달되기 전까지 그대로 패스되어 상기 어드레스 버퍼817의 하위 영역으로 전달된다. 한편, 상기 영역카운트가 상기 어드레스 생성영역의 크기(2m)-1 값에 도달될 경우에는 상기 (2m)-1 값이 상기 어드레스 버퍼817의 하위영역에 전달된다. 한편, 상기 어드레스 버퍼817의 상위영역에는 상기 카운터816에서 출력되는 영역(현재 선택된 의사랜덤 생성기에 대응되는 어드레스 생성영역)을 지시하는 값들이 저장된다. 이렇게 상기 어드레스 버퍼817에 저장된 어드레스은 상기 비교기222로 전달되고, 상기 비교기222에서는 상기 어드레스가 어느 그룹에 속하는지를 판단하는 이에 대한 그룹값 선택신호를 상기 선택기223로 제공한다. 또한, 이때의 상기 어드레스를 상기 감산기224로 출력한다. 그러면, 상기 선택부223은 상기 선택신호에 따라 해당 그룹값을 선택 출력하고, 상기 감산기224는 상기 비교기222에서 출력되는 어드레스 값에서 상기 해당 그룹값을 감해 독출 어드레스를 상기 인터리버 메모리212로 제공한다. 한편, 상기 어드레스가 어느 그룹에도 속하지 않을 경우, 다시 말해 상기 오프셋값에 의한 기준값들에 해당할 경우, 상기 비교기222는 상기 어드레스를 무효어드레스로 간주하여 삭제(deletion)하여 출력하지 않는다. 그리고, 상기 인터리버 메모리212는 상기 제공되는 독출 어드레스에 따라 해당 번지에 저장되어 있는 데이터를 출력한다.A process of generating a read address according to the configuration of FIGS. 7 and 8 will be described. The pseudorandom generators 811-8N1 generate a pseudorandom sequence by shifting a state value stored by clocking, and the first multiplexer 812 generates a state of the pseudorandom generator 811-8N1 by a selection signal provided from the counter 816. Selective output. When all of the states of the pseudorandom generators 817-8N1 are selected by the selection signal, the pseudorandom generators 811-8N1 again generate a pseudorandom sequence by shifting the stored state by clocking. In this way, the pseudorandom sequence output from the first multiplexer 812 is decremented by 1 and input to the second multiplexer 813. The pseudorandom sequence includes the area count of the size (2 m ) -1 value of the address generation area. It is passed as it is until it is reached and transferred to the lower area of the address buffer 817. On the other hand, when the area count reaches the size (2 m ) -1 value of the address generation area, the value (2 m ) -1 is transferred to the lower area of the address buffer 817. Meanwhile, values indicating the area (address generation area corresponding to the currently selected pseudo random generator) stored in the counter 816 are stored in the upper area of the address buffer 817. The address stored in the address buffer 817 is transferred to the comparator 222, and the comparator 222 provides a group value selection signal for determining which group the address belongs to to the selector 223. At this time, the address is outputted to the subtractor 224. Then, the selector 223 selects and outputs a corresponding group value according to the selection signal, and the subtractor 224 subtracts the corresponding group value from the address value output from the comparator 222 and provides a read address to the interleaver memory 212. On the other hand, if the address does not belong to any group, that is, if it corresponds to the reference values by the offset value, the comparator 222 considers the address as an invalid address and does not delete it. The interleaver memory 212 outputs data stored at a corresponding address according to the read address provided.
이하 상기 어드레스 생성부(221)의 인터리빙 어드레스 생성절차를 도 9을 참조하여 설명한다. 또한, 상기 도 9은 상기한 수학식 1의 알고리즘을 근거로 한다.Hereinafter, an interleaving address generation procedure of the address generator 221 will be described with reference to FIG. 9. 9 is based on the algorithm of Equation 1 described above.
상기 도 9를 참조하면, 어드레스 생성부221(일반적인 CPU)는 911단계에서 인터리빙을 위한 각 파라미터 값들을 산출한다. 입력 프레임 크기를 L이라 할 때, 상기 프레임 크기를 2진수로 변환하여 그 최하위 비트부터 0의 개수가 적어도 한 개 이상 나오도록 하는 적당한 값(오프셋값)을 더해 가상 어드레스 크기 N을 구한다. 그리고, 상기 가상 어드레스 크기 N을 2의 제곱근(2m)×Ng로 표현했을 때, 상기 승수값(m)과 Ng(이하 영역번호라 칭함)을 후술되는 알고리즘에 의해 구한다. 상기한 파라미터들은 설계 당시 미리 정해지는 값들이며, 이러한 값들은 룩업테이블 형태로 저장되고, 실지로 인터리빙 수행시 상기 룩업테이블로부터 해당 값들을 읽어와서 사용하게 된다.Referring to FIG. 9, the address generator 221 (general CPU) calculates parameter values for interleaving in step 911. When the input frame size is L, the virtual address size N is obtained by converting the frame size into a binary number and adding an appropriate value (offset value) such that at least one number of zeros comes out from the least significant bit. When the virtual address size N is expressed as the square root of 2 (2 m ) x N g , the multiplier value m and N g (hereinafter referred to as area number) are obtained by an algorithm described below. The parameters are predetermined values at the time of design, and these values are stored in the form of a lookup table, and the values are actually read from the lookup table when interleaving is performed.
그리고 상기 어드레스 생성부221은 913단계에서 쓰기 어드레스(ADDRESS_WRITE)를 0으로 초기화하고, 815단계에서 영역인덱스(g)를 0으로 초기화한다.In operation 913, the address generator 221 initializes the write address ADDRESS_WRITE to 0, and initializes the area index g to 0 in operation 815.
상기 초기화가 이루어진후, 상기 어드레스 생성부221은 915단계에서 의사랜덤 시퀀스를 이용한 랜덤 어드레스를 하기 수학식에 의해 산출한다. '(ADDRESS_READ=[(PNg(ADDRESS_READ_WRITE)-1]+g*2m' 여기서 상기 PNg(ADDRESS_READ_WRITE)는 의사랜덤 시퀀스를 생성하는 함수를 나타내며, -1를 해준 것은 상기 생성된 의사랜덤 시퀀스를 0에서부터 매핑시키기 위함이다. 또한 +g*2m'는 상기 생성된 의사랜덤 시퀀스를 각 해당 영역에 매핑시키기 위한 것이다. 즉, 영역인덱스 g가 0이면 상기 생성된 의사랜덤 시퀀스는 영역0에 매핑되고, 상기영역인덱스가 1이면 영역1에 매핑된다.After the initialization is performed, the address generator 221 calculates a random address using a pseudo random sequence in operation 915 by the following equation. '(ADDRESS_READ = [(PN g (ADDRESS_READ_WRITE) -1] + g * 2 m ' where PN g (ADDRESS_READ_WRITE) represents a function for generating a pseudorandom sequence, and -1 means the generated pseudorandom sequence. + G * 2 m 'is for mapping the generated pseudorandom sequence to each corresponding region, i.e., if the region index g is 0, the generated pseudorandom sequence is mapped to region 0. If the region index is 1, it is mapped to region 1.
그리고 상기 어드레스 생성부221는 919단계에서 이렇게 산출된 랜덤 어드레스를 이용해 최종 독출[읽기] 어드레스를 하기 수학식에 의해 산출한다. '(ADDRESS_READ=ADDRESS_READ-OFFSET(ADDRESS_READ)' 여기서 상기 수학식은 상기 독출 어드레스가 어느 그룹에 속하는지를 판단하여 그 그룹에 해당하는 그룹값을 감하여 산출된 어드레스이다. 여기서 상기 그룹은 오프셋에 의해 그룹 기준값 (=무효어드레스)에 의해 구분 되어진다. 예를들어, 상기 독출 어드레스가 그룹1에 해당하면 상기 독출 어드레스에서 1를 감하고, 그룹2에 해당하면 2를 감한다.In step 919, the address generator 221 calculates the final read address using the following random address. '(ADDRESS_READ = ADDRESS_READ-OFFSET (ADDRESS_READ)' Here, the equation is an address calculated by determining which group the read address belongs to and subtracting a group value corresponding to the group, wherein the group is a group reference value by an offset ( = Invalid address) For example, if the read address corresponds to group 1, 1 is subtracted from the read address, and if it corresponds to group 2, 2 is subtracted.
이후, 상기 어드레스 생성부221은 921단계에서 상기 영역인덱스 g가 영역번호Ng-1에 도달했는지 검사한다. 이때 상기 영역인덱스가 Ng-1에 도달했다고 판단시 상기 어드레스 생성부221은 923단계로 진행하며, 상기 Ng-1에 도달되지 않았다고 판단시 상기 어드레스 생성부221은 925단계로 진행하여 상기 영역인덱스를 1만큼 증가시키고 상기 817단계로 되돌아간다.In step 921, the address generator 221 checks whether the area index g has reached the area number N g −1. In this case, when it is determined that the region index has reached N g −1, the address generator 221 proceeds to step 923. When it is determined that the region index has not reached N g −1, the address generator 221 proceeds to step 925. Increment the index by 1 and return to step 817 above.
한편, 상기 영역인덱스가 상기 영역번호-1에 도달했음을 감지한 상기 어드레스 생성부221은 상기 923단계에서 상기 쓰기 어드레스(ADDRESS_WRITE)가 상기 2m-2 값(하나의 의사랜덤 생성기가 생성할수 있는 어드레스 수)에 도달했는지 검사한다. 여기서 상기 쓰기 어드레스는 상기한 영역카운트에 대응된다. 이때 상기 쓰기 어드레스가 상기 2m-2 값에 도달했다고 판단시 상기 어드레스 생성부221은 929단계로 진행하며, 상기 쓰기 어드레스가 상기 2m-2 값에 도달하지 않았다고 판단시 상기 어드레스 생성부221은 927단계로 진행하여 상기 쓰기 어드레스를 1만큼 증가시키고 상기 915단계로 되돌아간다.On the other hand, the address generator 221 which detects that the area index has reached the area number-1 has a write address ADDRESS_WRITE of 2 m −2 (an address that can be generated by one pseudo random generator) in step 923. Check that the number is reached. Here, the write address corresponds to the area count described above. In this case, when it is determined that the write address has reached the 2 m −2 value, the address generator 221 proceeds to step 929. When it is determined that the write address has not reached the 2 m −2 value, the address generator 221 In step 927, the write address is increased by 1 and the flow returns to step 915.
한편, 상기 쓰기 어드레스가 상기 2m-2 값에 도달했음을 감지한 상기 어드레스 생성부221은 상기 929단계에서 상기 쓰기 어드레스를 하기 수학식을 이용해 각 영역의 읽기 어드레스에 매핑시키고 본 프로그램을 종료한다. 'ADDRESS_WRITE=2m-1,ADDRESS_READ=ADDRESS_WRITE+g*2m-OFFSET(ADDRESS_WRITE)' 즉, 맨 마지막에 해당하는 쓰기 어드레스는 그대로 독출 어드레스로 이용함을 의미한다.(즉, 각 어드레스 생성부는 전체 2m-1의 수만큼 밖에 생성하지 못하므로 마지막 남은 어드레스는 쓰기 어드레스의 값으로 독출 어드레스로 사용한다는 것이다)On the other hand, the address generator 221 which detects that the write address has reached the 2 m −2 value maps the write address to the read address of each region using the following equation in step 929 and terminates the program. 'ADDRESS_WRITE = 2 m -1, ADDRESS_READ = ADDRESS_WRITE + g * 2 m -OFFSET (ADDRESS_WRITE)' That means that the last write address is used as a read address. Since only the number of m -1 is generated, the last remaining address is used as the read address as the value of the write address.)
하기 <표 1> 및 <표 2>는 본 발명에 따른 인터리빙 방식을 IMT-2000시스템에 적용할 경우 각 레이트셋에 해당하는 OCPNI 설계 파라미터들을 보여준다.Tables 1 and 2 show OCPNI design parameters corresponding to each rate set when the interleaving method according to the present invention is applied to an IMT-2000 system.
{t0,t1,t2,
t3,t4,t5,t6,t7}GTH
{t0, t1, t2,
t3, t4, t5, t6, t7}
107,119,131,
269,383}{23,41,65,
107,119,131,
269,383}
335,401,425,
641,767}{47,77,191,
335,401,425,
641,767}
755,1187,1211,
1265,1535}{491,599,737,
755,1187,1211,
1265,1535}
2447,2531,2825,
2861, 3071}{659,1373,2027,
2447,2531,2825,
2861, 3071}
2807,4307,4559,
4931,6143}{881,2159,2429,
2807,4307,4559,
4931,6143}
{t0,t1,t2,
t3,t4,t5,
t6,t7}GTH
{t0, t1, t2,
t3, t4, t5,
t6, t7}
368,431,449,
467,575}{107,305,332,
368,431,449,
467,575}
611,710,746,
1070,1151}{179,224,395,
611,710,746,
1070,1151}
881,1529,1565,
1646,2303}{485,647,854,
881,1529,1565,
1646,2303}
818,2144,3185,
4166,4607}{197,323,764,
818,2144,3185,
4166,4607}
6074,7991,8396,
8963,9215}{2006,2384,2942,
6074,7991,8396,
8963,9215}
상기 <표 1> 및 <표 2>에서 p(x)는 GF(2) 상에서 구한 의사랜덤 생성기의 원시 다항식(primitive polynomial)으로서 가장 왼쪽의 비트가 p(x)의 0차항의 계수를 나타내며, 가장 오른쪽 비트가 최고차 항의 계수를 나타낸다. 즉, p(x)=[1100001]은 p(x)=1 + x + x6을 나타낸다. 여기서 상기 생성다항식 p(x)=1 + x + x6에 해당하는 의사랜덤 생성기는 도 6과 같이 도시된다.In Table 1 and Table 2, p (x) is a primitive polynomial of the pseudorandom generator obtained on GF (2), and the leftmost bit represents the coefficient of the 0th order of p (x). The rightmost bit represents the coefficient of the highest order term. That is, p (x) = [1100001] represents p (x) = 1 + x + x 6 . Here, the pseudorandom generator corresponding to the generated polynomial p (x) = 1 + x + x 6 is shown in FIG.
일반적으로, 초기화 과정에서 m개의 쉬프트 레지스터 셀(shift register cell)에 각각의 영역에 해당하는 초기값들이 로딩(loading)된다. 이후, 매 클럭이 진행될 때마다 레지스터의 값들은 연결된 라인에 의해 업데이트(update)되며, 상기 업데이트후 레지스터에 저장된 값(O/I)의 조합에 의해 6비트 어드레스가 발생한다. 즉, 최저차 항 셀의 내용을 p[I]라 하고 최고차 항의 내용을 p[m]이라 할 때 PNg(ADDRESS_WRITE)는 초기 시간(inital time)에서 ADDRESS_WRITE만큼 클럭킹(clocking)되었을 때 쉬프트 레지스터의 값(이진(binary)로 표시한 (p[1]p[2]...p[m-1]p[m]))을 십진수(Decimal)로 바꾼 어드레스(=p[1]2m-1+...+p[m]20)이다. 또한 상기 의사랜덤 발생기에서 생성되는 어드레스는 2m-1의 주기를 가지고 발생된다. 또한, 초기값들이 0이 아니므로 실질적으로 발생되는 모든 어드레스는 {1≤k≤2m-1} 범위 내의 값을 가진다. 따라서 상기 수학식 1에서 [PNg(ADDRESS_WRITE)-1]은 {0≤k≤2m-2} 범위 내의 값을 가진다. 이 경우 필요한 어드레스 수 2m보다 의사랜덤 생성기에 의해 발생되는 어드레스의 수가 2m-1로 하나 적으므로 매 영역의 마지막 어드레스는 그대로 오버라이트(Overwrite)하여 그대로독출 어드레스(ADDRESS_READ)로 사용한다. 이에 해당하는 내용은 상기한 수학식 1에서 ADDRESS_WRITE=ADDRESS_WRITE+g*2m-OFFSET(ADDRESS_WRITE)로 표현된다.In general, initial values corresponding to respective regions are loaded into m shift register cells during initialization. Thereafter, as the clock progresses, the values of the registers are updated by the connected lines, and the 6-bit address is generated by the combination of the values (O / I) stored in the registers after the update. That is, when the content of the lowest order cell is called p [I] and the content of the highest order term is p [m], PN g (ADDRESS_WRITE) is shifted when it is clocked by ADDRESS_WRITE at the initial time. Address (= p [1] 2 m converted from binary value ((p [1] p [2] ... p [m-1] p [m]) expressed as binary) to decimal -1 + ... + p [m] 2 0 ). In addition, the address generated in the pseudorandom generator is generated with a period of 2 m −1. Further, since the initial values are not zero, substantially all of the generated addresses have a value within the range of {1 ≦ k ≦ 2 m −1}. Therefore, in Equation 1, [PN g (ADDRESS_WRITE) -1] has a value within a range of {0 ≦ k ≦ 2 m −2}. In this case, since a number of the address 2 m -1 generated by the address number of pseudo-random generators than 2 m ever need a last address of each area are rewritten as (Overwrite) by accepting a read address (ADDRESS_READ). Corresponding content is expressed as ADDRESS_WRITE = ADDRESS_WRITE + g * 2m -OFFSET (ADDRESS_WRITE) in Equation 1 described above.
예를 들어, 상기 표 1에서 인터리버 사이즈N이 376인 경우 OCPNI의 독출 어드레스의 예를 보여주면 하기 표 3과 같다.For example, in Table 1, when the interleaver size N is 376, an example of an OCPNI read address is shown in Table 3 below.
상술한 바와 같이 본 발명의 제1실시 예에 따른 OCPNI는 의사랜덤생성기들의 원시 다항식(Primitive polynomial)라든지, 초기 상태값들이 후술되는 알고리즘에 의해 구해진다. 또한 상기 제1실시 예는 오프셋값들에 의해 발생된 무효어드레스(GTH)를 상기 비교기222에서 삭제시키는 것으로 설명하였다. 하지만, 다른 예로서, 마지막 영역에 대응되는 의사랜덤 생성기8N1에서 오프셋값에 의한 무효의 어드레스(Low address(GTH))를 생성하므로 이러한 무효 어드레스를 근본적으로 생성시키지 않도록 하는 방법도 있다. 이럴 경우, 상술한 비교기222의 삭제기능은 불필요하다.As described above, the OCPNI according to the first embodiment of the present invention is obtained by primitive polynomials of pseudorandom generators or an algorithm in which initial state values are described below. In addition, the first embodiment has been described as deleting the invalid address GTH generated by the offset values from the comparator 222. As another example, however, the pseudorandom generator 8N1 corresponding to the last region generates a low address (GTH) by an offset value, so that such an invalid address is not fundamentally generated. In this case, the erase function of the comparator 222 described above is unnecessary.
이하 상기 무효어드레스를 근본적으로 생성시키지 않는 본 발명의 제2실시 예에 따른 인터리빙 장치를 상세히 설명한다.Hereinafter, an interleaving apparatus according to a second embodiment of the present invention which does not fundamentally generate the invalid address will be described in detail.
상기 OCPNI의 핵심 아이디어는인터리버사이즈 L에 OSV를 더하여가상 인터리버사이즈 N을 구하고, 이를 NG개의 영역으로 분할하여 각각의 그룹 요소들(Group elements)을 의사랜덤 생성기(PN Generator)를 사용하여 치환(Permutation)한다는 것이다. 이러한 의사랜덤 생성기들은 모두 2m개의 어드레스 구성들을 생성한다. 그런데 상기 의사랜덤 생성기들중 맨 마지막 의사랜덤 생성기(g=NG-1)는 OSV에 의한 무효한 어드레스를 발생시키므로 이를 제거(deletion)해야 한다. 그래야 어드레스 발생기(OCPNI Address Generator Block)에서 생성되는 총 어드레스 수가 L개가 되기 때문이다. 따라서 본 발명은 맨 마지막 의사랜덤생성기(g=NG-1)에서 발생한 어드레스를 감시하여 추가된 오프셋값에 의한 무효한 어드레스일 경우 상기 의사랜덤생성기의 선택을 스킵(skip)시키는 제어로직(control logic)을 구현한다.The core idea of the OCPNI is to obtain the virtual interleaver size N by adding OSV to the interleaver size L, splitting it into N G regions, and substituting each group element using a pseudo random generator (PN Generator). Permutation). These pseudorandom generators all generate 2 m address configurations. However, since the last pseudorandom generator (g = N G −1) of the pseudorandom generators generates an invalid address due to OSV, it should be removed. This is because the total number of addresses generated by the OCPNI Address Generator Block becomes L. Therefore, the present invention monitors the address generated by the last pseudorandom generator (g = NG-1) and controls logic to skip selection of the pseudorandom generator when the address is invalid by the added offset value. ).
우선, 일 예로서 프레임크기(L)=60, 오프셋값(OSV)=4, 인터리버크기(N)=64, 생성다항식차수(m)=4, 영역수(NG)=4인 경우를 가정하면 의사랜덤 생성기는 4개이며 각각의 주기는 15이다. 그리고 맨 마지막 의사랜덤 생성기에서 생성되는 시퀀스가 하기 <표 4>에 주어진 것과 같다고 가정한다.First, it is assumed as an example that the frame size (L) = 60, the offset value (OSV) = 4, the interleaver size (N) = 64, the generated polynomial order (m) = 4, the number of areas (N G ) = 4 4 pseudorandom generators, each with 15 cycles. And it is assumed that the sequence generated in the last pseudorandom generator is as given in Table 4 below.
PN3(k) : 5 1 13 2 7 15 14 3 6 4 8 12 9 11 10
PN3(k)-1: 4 0 12 1 6 14 13 2 5 3 7 11 8 10 9Time k: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
PN3 (k): 5 1 13 2 7 15 14 3 6 4 8 12 9 11 10
PN3 (k) -1: 4 0 12 1 6 14 13 2 5 3 7 11 8 10 9
상기 <표 4>에서와 같이 맨 마지막 의사랜덤 생성기(g=NG-1)에서 생성되는 PN발생기의 상태값 PN3(k)은 인터리버 메모리에 저장된 맨 마지막 그룹에 해당하는 프레임 데이터를 인터리빙하기 위한 독출 어드레스가 된다. 따라서 상기와 같이 OSV=4이고 m=4인 경우 맨 마지막 그룹의 12,13,14,15 번째 어드레스에 해당되는 것이 무효한 어드레스이므로, 이 경우 상기 맨 마지막 의사랜덤 생성기에서 발생되는 무효 어드레스는 스킵시키고 첫 번째 의사랜덤 생성기로 바로 이전하면 된다는 것을 알수 있다. 여기서 의사랜덤생성기를 0번째부터 순차적으로 선택한다면 실제 맨 마지막 의사랜덤 생성기에서 발생되는 어드레스에서 '1'을 감한 값을 독출 어드레스의 하위어드레스(low address)로 사용하므로, 맨 마지막 의사랜덤생성기가 13,14,15 중 하나를 발생 하는 경우에는 마지막 의사랜덤 생성기를 선택하지 않고 바로 0번째 의사랜덤 생성기를 선택한다. 그리고 상기 마지막 의사랜덤 생성기가 생성하지 못하는 15(PN3(K)-1)에 따른 무효 어드레스는 하드웨어적으로 클럭신호를 제공하지 않아 당초 생성하지 않거나 생성하더라도 사용하지 않으므로서 무시한다. 한편, 랜덤하게 의사랜덤생성기를 선택하는 경우라면 마지막 의사랜덤생성기가 한 프레임의 최종으로 선택되지 않을수 있으므로 이때는 마지막 어드레스(2m-1)를 사용하지 않고 다음 의사랜덤생성기로 스킵한다.As shown in Table 4, the state value PN3 (k) of the PN generator generated by the last pseudorandom generator (g = N G −1) is used for interleaving frame data corresponding to the last group stored in the interleaver memory. It is a read address. Therefore, as described above, when OSV = 4 and m = 4, the 12, 13, 14, and 15th addresses of the last group are invalid addresses. In this case, the invalid addresses generated by the last pseudorandom generator are skipped. You can see that we can just move to the first pseudorandom generator. If the pseudorandom generator is sequentially selected from 0, the last pseudorandom generator is used as the low address of the read address by subtracting '1' from the address generated by the last pseudorandom generator. If one of, 14,15 occurs, the 0th pseudorandom generator is selected immediately instead of the last pseudorandom generator. The invalid address according to 15 (PN3 (K) -1) that the last pseudorandom generator cannot generate is ignored because it does not provide a clock signal in hardware or does not use it even if it is generated initially. On the other hand, if the pseudorandom generator is randomly selected, the last pseudorandom generator may not be selected as the last of one frame. At this time, the next pseudorandom generator is skipped without using the last address (2 m −1).
상기한 내용을 고려할 경우, 본 발명의 제2실시 예에 따른 OCPNI의 인터리빙 어드레스 생성 알고리즘은 하기 수학식 2로 표현할 수 있다.In consideration of the foregoing, the interleaving address generation algorithm of the OCPNI according to the second embodiment of the present invention can be expressed by Equation 2 below.
/* N:프레임길이(=L+OSV) GL:영역크기(=2m) NG:영역수*// * N: frame length (= L + OSV) GL: area size (= 2 m ) N G : number of areas * /
For (clk=0; clk<N-NG;clk++)For (clk = 0; clk <NN G ; clk ++)
{ g=clk % NG;{g = clk% NG;
READ_ADDRESS=PNg()-1 + g*GL;READ_ADDRESS = PNg ()-1 + g * GL;
active=(READ_ADDRESS<L) ? ON:OFF;active = (READ_ADDRESS <L)? ON: OFF;
if (active==ON) {printf (%d\n,READ_ADDRESS);}if (active == ON) {printf (% d \ n, READ_ADDRESS);}
}}
for (g=1; g<NG; g++)for (g = 1; g <N G ; g ++)
{ READ_ADDRESS=GL*g-1;{READ_ADDRESS = GL * g-1;
printf (%d\n,READ_ADDRESS);printf (% d \ n, READ_ADDRESS);
}}
상기한 수학식 2를 하드웨어로 구현하면 도 10과 같다.Equation 2 described above is implemented in hardware as shown in FIG. 10.
상기 도 10을 참조하면, 의사랜덤 생성기들(PN generator)11-14는 각각 대응되는 어드레스 생성영역에 저장된 데이터의 순서를 바꾸기 위한 의사랜덤 시퀀스를 생성하여 제1멀티플렉서14로 출력한다. 여기서 각각의 의사랜덤 생성기는 후술되는 알고리즘에 의해 구해진 최적의 상태값으로 초기화한다. 이에 대해서는 후술되는 의사랜덤생성기의 초기 상태값 결정방법에서 상세히 설명한다. 카운터19는 상기제1멀티플렉서14의 출력을 선택하기 위한 선택신호를 출력한다. 만일, 어드레스 영역 수가 NG개라고 가정하면, 0..NG-1의 선택신호를 출력한다. 여기서 상기 선택신호는 순차적 또는 랜덤하게 발생할수 있다. 상기 랜덤하게 발생하는 경우에는 소정 알고리즘에 의해 구해진 어떠한 패턴에 의해 선택신호를 랜덤하게 발생한다. 상기 멀티플렉서14는 상기 카운터19에서 제공되는 선택신호에 의해 해당 의사랜덤 생성기의 출력을 선택하여 출력한다. 여기서 상기 멀티플렉서14의 출력데이타는 감산기23에서 '1'만큼 감산되어 제2멀티플렉서15로 입력된다. 이유인즉, 상기 의사랜덤 생성기들은 어드레스 '0'값을 생성하지 못하므로, 모든 생성값에서 1만큼 감하여 랜덤 어드레스를 0부터 매핑시키기 위함이다. 영역 카운터16은 어드레스 생성영역의 크기에 해당하는 카운터를 발생하여 비교기17로 출력한다. 상기 비교기17은 상기 영역 카운터16에서 제공되는 카운트가 영역크기(2m)-1에 해당할 때 상기 제2멀티플렉서15로 선택신호 '1'를 출력한다. 상기 제2멀티플렉서15는 상기 선택신호에 의해 상기 영역카운터16에서 발생하는 카운트가 영역크기-2 동안에는 상기 제1멀티플렉서14의 출력을 선택출력하고, 상기 영역크기-1에 도달시 상기 비교기17에서 제공하는 2m-1(영역크기-1)의 값을 선택출력한다. 어드레스 버퍼22는 상위 어드레스 영역에 상기 카운터19의 출력데이타를 저장하고, 하위 어드레스 영역에 상기 제2멀티플렉서15의 출력데이타를 저장한다. 이렇게 상기 어드레스 버퍼22에 저장된 어드레스는 바로 인터리버 메모리에서 데이터를 독출하기 위한 어드레스로 사용된다.Referring to FIG. 10, PN generators 11-14 generate pseudo-random sequences for changing the order of data stored in corresponding address generation regions and output the pseudo random sequences to the first multiplexer 14. Here, each pseudorandom generator is initialized to an optimal state value obtained by an algorithm described below. This will be described later in detail in the method for determining an initial state value of a pseudorandom generator. The counter 19 outputs a selection signal for selecting the output of the first multiplexer 14. If it is assumed that the number of address areas is N G , a selection signal of 0..N G -1 is output. The selection signal may occur sequentially or randomly. When the random occurrence occurs, the selection signal is randomly generated by any pattern obtained by a predetermined algorithm. The multiplexer 14 selects and outputs the output of the pseudorandom generator based on the selection signal provided from the counter 19. Here, the output data of the multiplexer 14 is subtracted by '1' from the subtractor 23 and input to the second multiplexer 15. That is, since the pseudorandom generators do not generate an address '0' value, the pseudorandom generator subtracts 1 from all generated values to map random addresses from zero. The area counter 16 generates a counter corresponding to the size of the address generation area and outputs the counter to the comparator 17. The comparator 17 outputs a selection signal '1' to the second multiplexer 15 when the count provided by the area counter 16 corresponds to an area size (2 m ) −1. The second multiplexer 15 selects and outputs the output of the first multiplexer 14 when the count generated at the area counter 16 by the selection signal is in the area size-2, and provides the comparator 17 when the area size-1 is reached. Selectively output the value of 2 m -1 (area size -1). The address buffer 22 stores the output data of the counter 19 in the upper address area and the output data of the second multiplexer 15 in the lower address area. The address stored in the address buffer 22 is used as an address for reading data from the interleaver memory.
오프셋값검출기(OSV detector)18은 마지막 의사랜덤생성기14의 상태 및 상기카운터19의 카운트신호을 입력하고, 상기 카운트신호에 의해 다음 선택될 의사랜덤생성기가 상기 마지막 의사랜덤생성기14이고, 상기 의사랜덤생성기14의 상태값이 추가된 오프셋값에 의한 무효한 상태값(이하 오프셋 상태값이라 함)이라고 판단될 때 리셋신호(Load Zero)를 상기 카운터19로 제공한다. 그러면, 상기 카운터19는 맨마지막 의사랜덤생성기14를 스킵하고 다음 의사랜덤생성기를 선택하기 위한 선택신호를 출력한다. 만일, 순차적으로 의사랜덤 생성기를 선택하도록 설계되어 있다면, 맨 처음 의사랜덤 생성기를 선택하기 위한 선택신호를 출력하고, 랜덤하게 의사랜덤 생성기를 선택하도록 설계되어 있다면, 결정된 패턴에 따라 다음 의사랜덤생성기를 선택할수 있는 선택신호를 출력한다. 여기서 상기 오프셋값 검출기18은 맨마지막 의사랜덤생성기의 AND-OR-Ring 연결에 의해 현재 저장되어 있는 상태값이 추가된 오프셋값에 의한 오프셋 상태값인지 판단하여 리셋신호(Load_Zero)를 출력한다. 여기서, 상기 맨마지막 의사랜덤생성기의 AND-OR-RIng 연결은 쉬프트레지스터 셀수(m)과 오프셋값(OSV)에 의해 결정된다.An offset value detector 18 inputs the state of the last pseudorandom generator 14 and the count signal of the counter 19, and the pseudorandom generator to be selected next by the count signal is the last pseudorandom generator 14, and the pseudorandom generator A reset signal (Load Zero) is provided to the counter 19 when it is determined that the state value of 14 is an invalid state value (hereinafter referred to as an offset state value) by the added offset value. Then, the counter 19 skips the last pseudorandom generator 14 and outputs a selection signal for selecting the next pseudorandom generator. If it is designed to sequentially select the pseudorandom generator, if it is designed to output a selection signal for selecting the pseudorandom generator for the first time, and randomly select the pseudorandom generator, the next pseudorandom generator is determined according to the determined pattern. Outputs a selectable signal. The offset value detector 18 determines whether the state value currently stored by the AND-OR-Ring connection of the last pseudorandom generator is an offset state value based on the added offset value, and outputs a reset signal Load_Zero. Here, the AND-OR-RIng connection of the last pseudorandom generator is determined by the shift register cell number m and the offset value OSV.
상기 의사랜덤 생성기의 AND-OR-Ring 연결은 OSV가 상수인 경우 항상 일정한 규칙(Rule)을 가지므로 구현이 매우 간단하다. 예를들어, m=4, OSV=4라 가정할 경우, AND-OR-Ring 연결은 첨부된 도 12와 같다. 상기 도 12를 참조하면, 하위 두 개의 레지스터 셀들을 OR-Ring하고, 나머지 상위 두 개의 레지스터 셀들을 AND-Ring한다. 이는 m=4인 경우 의사랜덤생성기에서 발생되는 시퀀스는 1에서 15까지이며, 여기서 오프셋값이 4이기 때문에 상기 마지막 의사랜덤생성기에서 13,14,15에 해당되는 OSV-1개를 스킵할수 있도록 AND-OR-Ring 연결을 구성한 것이다. 그리고 AND게이트의 출력, OR게이트의 출력 및 상기 카운터19의 출력을 반전한 신호를 논리곱하여 상기 리셋신호(Load-Zero신호)를 생성한다. 랜덤하게 의사랜덤생성기를 선택하는 경우에 마지막 의사랜덤생성기가 한 프레임의 최종으로 선택되지 않을수 있으므로 강제로 만들어진 마지막 값 2m-1는 사용하지 않고 스킵한다.The AND-OR-Ring connection of the pseudorandom generator always has a certain rule when OSV is a constant, so the implementation is very simple. For example, assuming that m = 4 and OSV = 4, the AND-OR-Ring connection is as shown in FIG. 12. Referring to FIG. 12, the lower two register cells are OR-ringed, and the remaining upper two register cells are AND-ringed. This means that when m = 4, the sequence generated by the pseudorandom generator is 1 to 15, and since the offset value is 4, the last pseudorandom generator is allowed to skip 13 OSV-1s corresponding to 13,14,15. -OR-Ring connection is configured. The reset signal (Load-Zero signal) is generated by multiplying a signal obtained by inverting the output of the AND gate, the output of the OR gate, and the output of the counter 19. If the pseudorandom generator is randomly selected, the last pseudorandom generator may not be selected as the end of one frame, and thus the last created value 2 m -1 is skipped without using.
제1논리연산기20은 상기 심볼클럭(SYM_CLK) 및 상기 카운터19에서 출력되는 카운트값을 입력하며, 상기 카운트값이 논리 0이고 상기 심볼클럭이 상승 에지(edge)일 때 상기 모든 의사랜덤생성기들11-14로 상태값을 갱신하기 위한 클럭을 발생한다. 제2논리연산기21은 상기 심볼클럭 및 상기 카운터19에서 출력되는 카운트값을 입력하며, 상기 카운트값이 논리 0이고 상기 심볼클럭이 하강 에지(edge)일 때 상기 영역카운터16으로 다음 카운팅을 위한 클럭을 제공한다.The first logical operator 20 inputs the count value output from the symbol clock SYM_CLK and the counter 19, and all the pseudorandom generators 11 when the count value is logical 0 and the symbol clock is a rising edge. Generates a clock to update the status value to -14. The second logical operator 21 inputs the count value output from the symbol clock and the counter 19, and the clock for the next counting to the area counter 16 when the count value is logical 0 and the symbol clock is a falling edge. To provide.
상기한 도 10의 구성에 따른 독출 어드레스 생성과정을 살펴본다.A process of generating a read address according to the configuration of FIG. 10 will be described.
상기 의사랜덤 생성기들11-12은 상기 제1논리연산기20에서 클럭이 제공될때마다 저장된 레지스터 셀값을 쉬프트시켜 의사랜덤 시퀀스를 생성하고, 상기 제1멀티플렉서14는 상기 카운터19에서 제공되는 선택신호에 의해 해당 의사랜덤 생성기의 상태를 선택 출력한다. 이렇게 상기 제1멀티플렉서14에서 출력되는 상기 의사랜덤 시퀀스는 감산기23에서 1만큼 감소되어 상기 제2멀티플렉서15로 입력되며, 상기 '1'만큼 감해진 의사랜덤 시퀀스는 영역카운터16의 영역카운트 신호가 상기 어드레스 생성영역의 크기인 2m-1 값에 도달되기 전까지 그대로 패스되어 상기 어드레스 버퍼22의 하위영역으로 전달된다. 한편, 상기 영역카운트 신호가 상기 어드레스 생성영역의 크기 2m-1 값에 도달될 경우에는 상기 2m-1 값이 상기 어드레스 버퍼22의 하위영역에 전달된다. 그리고, 상기 어드레스 버퍼22의 상위영역에는 상기 카운터716에서 출력되는 카운트값이 저장된다. 이렇게 상기 어드레스 버퍼22에 저장된 값은 바로 메모리에 저장된 데이터를 독출하기 위한 어드레스로 사용된다. 여기서 상기 오프셋값 검출기18은 상기 마지막 의사랜덤 생성기14의 상태와 상기 카운터19의 카운트값을 입력하고, 상기 마지막 의사랜덤 생성기14로부터 오프셋 상태값을 검출하고 미리 결정된 순서에 관련하여 상기 카운터값이 상기 마지막 의사랜덤 생성기14의 바로전에 선택되는 의사랜덤 생성기13을 나타낼 경우, 상기 카운터19로 리셋신호(Load_Zero)를 출력한다. 그러면, 상기 카운터19는 상기 검출된 오프셋 상태가 상기 제1멀티플렉서14에 의해 출력되지 않도록 상기 마지막 의사랜덤생성기14의 선택을 생략하고 상기 의사랜덤생성기11을 선택하는 선택신호를 상기 제1멀티플렉서14로 출력한다. 한편, 상기 카운터19의 카운트값(상기 선택신호와 동일한 값임)은 제1논리연산기20 및 제2논리연산기21로 제공된다. 여기서, 상기 제1논리연산기20은 상기 카운터값과 상기 심볼클럭을 입력으로 하여, 상기 카운터값이 '0' 이고 상기 심볼클럭이 상승 에지일 때 상기 의사랜덤 생성기들로 클럭을 제공한다. 그러면 상기 의사랜덤 생성기들을 상기 클럭에 의해 상태를 갱신한다. 한편, 상기 제2논리연산기16은 상기 카운터값과 상기 심볼 클럭을 입력으로 하여 상기 카운터 신호가 '0'이고 상기 심볼클럭이 하강 에지일 때 상기 영역카운터16으로 클럭을 제공하고, 상기 영역카운터16은 상기 클럭에 의해 동작하여 카운터값을비교기로 제공한다. 여기서 상기 영역카운터16는 상기 의사랜덤 생성기들의 선택주기를 카운터한다. 그리고, 상기 비교기17은 상기 영역카운터16에서 제공되는 카운터값과 미리 설정된 값 2m-1을 비교하고, 상기 카운터값이 2m-1일 때 제2멀티플렉서15로 선택신호를 출력하여 상기 2m-1가 어드레스 버퍼22의 하위 어드레스 영역으로 제공한다. 즉, 상기 제2멀티플렉서15는 상기 비교기17의 선택신호에 의해 상기 의사랜덤 생성기들의 선택주기의 수가 2m보다 작을 때는 '1'이 감해진 의사랜덤 시퀀스를 상기 어드레스 버퍼22의 하위 어드레스 영역으로 제공하고, 상기 의사랜덤생성기들의 선택주기의 수가 2m-1일때는 2m-1을 상기 하위 어드레스 영역으로 제공한다.The pseudorandom generators 11-12 generate a pseudorandom sequence by shifting a stored register cell value each time a clock is provided by the first logical operator 20, and the first multiplexer 14 generates a pseudorandom sequence by the selection signal provided by the counter 19. Outputs the state of the pseudorandom generator. The pseudorandom sequence output from the first multiplexer 14 is reduced by 1 in the subtractor 23 and input to the second multiplexer 15. The pseudorandom sequence reduced by '1' is an area count signal of the area counter 16. It is passed as it is until it reaches the value of 2 m -1, which is the size of the address generation area, and transferred to the lower area of the address buffer 22. On the other hand, when the area count signal reaches the size 2 m −1 value of the address generation area, the 2 m −1 value is transferred to the lower area of the address buffer 22. The count value output from the counter 716 is stored in an upper region of the address buffer 22. The value stored in the address buffer 22 is used as an address for reading data stored in the memory. Wherein the offset value detector 18 inputs the state of the last pseudorandom generator 14 and the count value of the counter 19, detects an offset state value from the last pseudorandom generator 14, and the counter value is determined in relation to a predetermined order. When the pseudorandom generator 13 selected immediately before the last pseudorandom generator 14 is indicated, the reset signal Load_Zero is output to the counter 19. Then, the counter 19 omits the selection of the last pseudorandom generator 14 so that the detected offset state is not output by the first multiplexer 14, and sends a selection signal to the first multiplexer 14 to select the pseudorandom generator 11. Output On the other hand, the count value of the counter 19 (the same value as the selection signal) is provided to the first logical operator 20 and the second logical operator 21. Here, the first logical operator 20 receives the counter value and the symbol clock, and provides a clock to the pseudorandom generators when the counter value is '0' and the symbol clock is a rising edge. The pseudorandom generators then update the state by the clock. The second logic operator 16 inputs the counter value and the symbol clock to provide a clock to the area counter 16 when the counter signal is '0' and the symbol clock is a falling edge, and the area counter 16 is provided. Operates by the clock to provide a counter value to the comparator. Here, the area counter 16 counters the selection period of the pseudorandom generators. The comparator 17 compares the counter value provided by the area counter 16 with a preset value 2 m −1, and outputs a selection signal to the second multiplexer 15 when the counter value is 2 m −1 to output the selection signal to the 2 m. -1 provides the lower address area of the address buffer 22. That is, when the number of selection periods of the pseudorandom generators is less than 2 m by the selection signal of the comparator 17, the second multiplexer 15 provides a pseudorandom sequence of which '1' is reduced to the lower address area of the address buffer 22. and, the number of pseudo-random generator in the selection period of 2 m -1 when provides the 2 m -1 in the lower address region.
이상에서 살펴본 바와 같이, 제2실시 예는 마지막 의사랜덤 생성기14의 각 오프셋 상태의 선택을 생략할수 있는 간단한 제어로직을 구성하여 추가된 오프셋에 의한 무효한 어드레스가 당초 발생하지 않도록 하고 있다. 따라서 제1실시 예에서와 같이 이미 발생된 무효한 어드레스를 삭제하기 위한 로직(비교부222, 선택기223 및 연산기224)이 필효하지 않다.As described above, the second embodiment configures a simple control logic that can omit selection of each offset state of the last pseudorandom generator 14 so that an invalid address due to the added offset does not occur at first. Therefore, as in the first embodiment, logic (comparing part 222, selector 223 and operator 224) for deleting the invalid address already generated is not necessary.
첨부된 도면 도 7은 상기한 독출 어드레스 생성과정을 보다 상세히 살펴보기 위한 타이밍도를 도시하고 있다. 여기서 프레임크기(L)=60, 오프셋값(OSV)=4, 인터리버크기(N)=64, 생성다항식차수(m)=4, 영역수(NG)=4라 가정한다.7 is a timing diagram illustrating in detail the above-described read address generation process. It is assumed here that the frame size (L) = 60, the offset value (OSV) = 4, the interleaver size (N) = 64, the generated polynomial order (m) = 4, the number of regions (NG) = 4.
상기 도 7를 참조하면, SYM_CLK는 심볼클럭을 나타내고, SEL_MUX는 의사랜덤생성기를 선택하기 위한 선택신호를 나타내며, PN[0]는 첫 번째 의사랜덤생성기의 상태값을, PN[1]은 두 번째 의사랜덤생성기의 상태값을, P[2]는 세 번째 의사랜덤생성기의 상태값을, PN[3]은 마지막 의사랜덤생성기의 상태값을 나타내고, Load_Zero는 상기 SEL_MUX가 '2'이고 상기 PN[3]이 오프셋에 의한 무효한 값일 때 상기 마지막 의사랜덤생성기 PN[3]의 선택을 스킵하도록 상기 SEL_MUX를 리세트시키는 신호이다. 그리고 UP-Counter는 영역카운터를 나타내고, Address_Read는 독출 어드레스를 나타내고, 제1클럭은 PN발생기들이 상태값을 갱신하기 위한 클럭을 나타내고, 제2클럭은 PN발생기들의 선택주기의 수를 카운터하도록 상기 영역카운터16에 제공되는 클럭을 타나낸다.Referring to FIG. 7, SYM_CLK represents a symbol clock, SEL_MUX represents a selection signal for selecting a pseudorandom generator, PN [0] represents a state value of the first pseudorandom generator, and PN [1] represents a second. The state value of the pseudorandom generator, P [2] represents the state value of the third pseudorandom generator, PN [3] represents the state value of the last pseudorandom generator, Load_Zero is the SEL_MUX is '2' and the PN [ 3] is a signal that resets the SEL_MUX to skip selection of the last pseudorandom generator PN [3] when the value is invalid by the offset. UP-Counter represents the area counter, Address_Read represents the read address, the first clock represents the clock for the PN generators to update the status value, and the second clock represents the region to counter the number of selection periods of the PN generators. Indicates the clock provided to counter 16.
도시된 바와 같이, 상기 Load_Zero신호가 인에이블 될 때, 상기 SEL_MUX가 리세트되고 이에 응답하여 제1클럭신호 및 제2클럭신호가 인에이블 되어 상기 의사랜덤생성기들이 모두 선택되지 않았음에도 불구하고 상기 제1클럭에 의해 상기 의사랜덤생성기들의 상태가 갱신되고, 상기 UP_Counter는 상기 제2클럭에 의해 카운팅된다. 즉, 상기 마지막 의사랜덤생성기는 스킵하고 상기 첫 번째 의사랜덤생성기의 레지스터값을 사용하여 독출 어드레스를 만든다. 결국, 최종적으로 발생되는 독출 어드레스는 0+a, 16+b, 32+c, 48+d, 0+e, 16+f, 32+g, (h를 스킵하고), 0+i, 16+j, 32+k...가 된다. 그리고 up-counter의 최종상태가 2m-1인 15인 경우 PN(0)~PN(3)의 상태에 무관하게 도출 어드레스는 0+15, 16+15, 32+15가 된다.As shown, when the Load_Zero signal is enabled, the SEL_MUX is reset and in response thereto, the first clock signal and the second clock signal are enabled so that the pseudorandom generators are not selected. The state of the pseudorandom generators is updated by one clock, and the UP_Counter is counted by the second clock. That is, the last pseudorandom generator skips and uses the register value of the first pseudorandom generator to generate a read address. As a result, the final read address is 0 + a, 16 + b, 32 + c, 48 + d, 0 + e, 16 + f, 32 + g, (skipping h), 0 + i, 16+ j, 32 + k ... If the final state of the up-counter is 15, which is 2m-1, the derived addresses become 0 + 15, 16 + 15, and 32 + 15 regardless of the states of PN (0) to PN (3).
이하 본 발명의 제2실시 예에 따른 독출 어드레스 생성과정을 첨부된 도면 도 13의 참조와 함께 상세히 설명한다.Hereinafter, a process of generating a read address according to a second embodiment of the present invention will be described in detail with reference to FIG. 13.
먼저, 1301단계에서 입력 프레임의 크기(L)에 오프셋값(OSV)을 더해 가상의 어드레스 영역(N)을 구하고, 1303단계에서 상기 가상의 어드레스 영역을 다수개(NG)의 어드레스 생성영역으로 분할한다. 이후, 1305단계에서 각 어드레스 생성영역별로 PN생성기를 이용해 랜덤어드레스를 발생시킨다. 그리고 1307단계에서 상기 각 어드레스 생성영역에서 발생되는 랜덤 어드레스를 랜덤하게 선택한다. 여기서 상기 각 영역에서 발생되는 랜덤 어드레스를 순차적으로 선택 할 수도 있다. 이 과정에서, 상기 OSV검출기18은 맨 마지막 영역에 대응되는 의사랜덤 생성기가 발생하는 랜덤 시퀀스가 상기 더해진 오프셋값에 의한 무효한 값인지 검사한다. 이때 상기 무효한 값이라 판단될 시 1311단계로 진행하여 상기 맨 마지막 영역에서 발생되는 랜덤어드레스는 선택하지 않고, 상기 무효한 값이 아닐 시 1313단계로 진행한다. 한편 상기 1313단계에서 현재 영역카운트가 2m-1(여기서 m은 상기 PN생성기의 상태수를 나타낸다)에 해당하는지 검사한다. 상기 영역카운트가 2m-1에 해당하지 않을 시 1315단계에서 독출 어드레스를 'READ_ADDRESS=PNg()-1+(g*GL)'에 의해 생성하고, 상기 영역카운트가 2m-1에 해당할 시 1317단계로 진행하여 상기 독출 어드레스를 'READ_ADDRESS=GL*g+(2m-1)'에 의해 생성한다.First, a virtual address area N is obtained by adding an offset value OSV to the size L of an input frame in step 1301. In step 1303, the virtual address area is divided into a plurality of NG address generation areas. do. Thereafter, in step 1305, a random address is generated using the PN generator for each address generation region. In step 1307, random addresses generated in the respective address generation areas are randomly selected. Here, random addresses generated in the respective areas may be sequentially selected. In this process, the OSV detector 18 checks whether the random sequence generated by the pseudo random generator corresponding to the last region is an invalid value by the added offset value. In this case, if it is determined that the value is invalid, the process proceeds to step 1311. If the random address generated in the last region is not selected, the process proceeds to step 1313. Meanwhile, in step 1313, it is checked whether the current area count corresponds to 2 m −1, where m represents the number of states of the PN generator. If the area count does not correspond to 2 m −1, a read address is generated by 'READ_ADDRESS = PNg ()-1+ (g * GL)' in step 1315, and the area count corresponds to 2 m −1. In step 1317, the read address is generated by 'READ_ADDRESS = GL * g + (2 m −1)'.
이상에서 설명한 바와 같이, 본 발명의 제2실시 예 따른 OCPNI는 구현상의 복잡도를 크게 개선하였다. 따라서, CDMA2000 순방향 부가채널(F-SCH)의 각각의 레이트에 따른 파라미터들도 의사랜덤 생성다항식(PN generator polynomial)과 초기상태값 그리고 OSV만 필요하며, 상기 수학식 1로 구현할 경우 요구되는 GTH(그룹 기준값)은 필요하지 않다.As described above, the OCPNI according to the second embodiment of the present invention greatly improves the implementation complexity. Accordingly, the parameters according to each rate of the CDMA2000 forward additional channel (F-SCH) also need only a PN generator polynomial, an initial state value, and an OSV. The GTH (Equation 1) required by Equation 1 is required. Group reference value) is not required.
이하, 제2실시 예에 따른 OCPNI를 설계함에 있어서 기본적으로 정하는 변수들에 대해 살펴본다. 기본적으로 정하는 변수들은 주어진 인터리버 깊이(interleaver Depth)에 따른 영역수(NG;Number of Grroup)와 생성다항식의 차수(m;Order of PN Generator Polynomial)이다. 초기 설계 당시 CDMA2000의 각각의 프레임 크기에 있어서 최적의 NG와 m을 구하기가 어려우므로 소정 알고리즘에 의해 결정한다. 이렇게 구해진 파라미터들은 상기 표 1과 표 2와 같다. 예를 들어, CDMA2000의 레이트셋1의 경우 모든 프레임 크기에 대해 NG=6으로 결정하고 이를 바탕으로 m값을 결정하였다. 이는 기본적으로 NG가 지나치게 클 경우 각 그룹내에서의 랜덤성질이 줄어드는 것을 막기 위함이다. 즉, NG=384=6×25에서 NG=6인 경우, m=5이 되기 때문에, 각 그룹당 25=32개의 어드레스에서 랜덤하게 데이터를 읽어오게 되며, 이를 최소의 그룹 크기로 설정하게 된 것이다. 또한, OCPNI는 2차원(2D) PN 인터리버이므로 거리성질 또한 어느정도 만족할수 있었다.Hereinafter, the variables basically determined in designing the OCPNI according to the second embodiment will be described. The basic parameters are the number of group (NG) and the order of PN generator polynomial (m) according to the given interleaver depth. Since it is difficult to find the optimal N G and m for each frame size of CDMA2000 at the time of initial design, it is determined by a predetermined algorithm. The parameters thus obtained are shown in Table 1 and Table 2 above. For example, in case of rate set 1 of CDMA2000, N G = 6 was determined for all frame sizes, and m was determined based on this. This is basically to prevent the random property in each group from decreasing when N G is too large. That is, when N G = 384 = 6 × 2 5 and N G = 6, since m = 5, data is randomly read from 2 5 = 32 addresses per group, which is set to the minimum group size. It is done. In addition, since OCPNI is a two-dimensional (2D) PN interleaver, the distance quality was also satisfactory to some extent.
그러나, 상기 제1실시 예의 경우, 프레임크기(FL)이 작은 경우 Eb/No가 높아짐에 따라 BER/FER의 개선이 점차 완만해지며, 그 기울기가 K=9인 길쌈부호기의 BER/FER 커브(Curve)보다 작아지는 시뮬레이션(simulation) 결과를 보였다. 즉, Eb/No가 계속 증가할 경우 터보코더의 성능이 길쌈부호기보다 나빠지는 것이 예상된다. 이러한 현상은 터보코더의 웨이트 스펙트럼과 관련된 현상이며, 따라서 제2실시 예에서는 OCPNI의 최적화(Optimization)을 위해 3가지를 고려하게 된 것이다.However, in the case of the first embodiment, when the frame size FL is small, as the Eb / No increases, the BER / FER is gradually improved, and the BER / FER curve of the weaving encoder whose slope is K = 9 ( Simulation results are smaller than Curve. In other words, if Eb / No continues to increase, the performance of the turbo coder is expected to be worse than that of the weaving encoder. This phenomenon is related to the weight spectrum of the turbo coder. Therefore, in the second embodiment, three things are considered for the optimization of the OCPNI.
상기한 바와 같이 OCPNI는 NG, m 등의 변수를 가진다. 이와 함께 각각의 그룹에서의 PN생성기를 동작하기 위한 생성다항식이 사용되는데, 이들의 선택이 또 다른 변수가 될 수 있다. 마지막으로 각각의 PN생성기의 초기상태값과 관련된 변수로 이는 너무 많은 조합이 존재함으로 풀서치(full serch)로는 최적의 초기상태값을 발견하기가 어렵다.As described above, OCPNI has variables such as N G and m. Along with this, a generator polynomial is used to operate the PN generator in each group, the choice of which can be another variable. Finally, the variables related to the initial state values of each PN generator are so many combinations that it is difficult to find the optimal initial state values by full serch.
결론적으로, 최소 웨이트와 전반적 웨이트 스펙트럼의 개선을 위해 1)NG를 결정하고, 2)생성다항식을 선택하고, 최소 웨이트가 만족스럽지 못하면, 3) 최소 웨이트에 해당하는 그룹에 속하는 PN생성기의 초기상태값을 조정한다. 일반적으로 이러한 방식으로 몇 번의 반복을 수행하면 성능이 더 좋은 터보 인터리버를 얻을 수 있다. 이는 파라미터들의 조합이 너무 많은 관계로 컴퓨터 서치(computer search)로는 효과적이지 않기 때문이다. 먼저 다음과 같은 함수와 변수를 정의하고, 하기와 같은 알고리즘을 이용해 최적의 인터리버를 찾는다.In conclusion, to improve the minimum weight and overall weight spectrum, 1) determine N G , 2) select the polynomial, and if the minimum weight is not satisfactory, 3) the initial PN generator belonging to the group corresponding to the minimum weight Adjust the status value. In general, a few iterations in this manner will yield a better turbo interleaver. This is because the combination of parameters is so large that it is not effective for computer search. First, define the following functions and variables, and find the optimal interleaver using the following algorithm.
W : Weight Distribution VectorW: Weight Distribution Vector
D(.):Decision Criteria FunctionD (.): Decision Criteria Function
D(W)=1 if W is satisfactoryD (W) = 1 if W is satisfactory
D(W)=0 if Wis notD (W) = 0 if Wis not
1. Initialize PN generator PNi with initial seed vector Seedi ∈{0,1}for i=0,...,NG-11.Initialize PN generator PNi with initial seed vector Seedi ∈ {0,1} for i = 0, ..., NG-1
Choose arvitrary primitive polynomial G(x) of order MChoose arvitrary primitive polynomial G (x) of order M
Choose information sequence I's that are expected to generate the minimum weight codeChoose information sequence I's that are expected to generate the minimum weight code
2. For a given Turbo Encoder E, computer W2.For a given Turbo Encoder E, computer W
3. If D(W)==1, go to 63.If D (W) == 1, go to 6
4. Find PN generator PNk associated with minimum weight of W4.Find PN generator PNk associated with minimum weight of W
5. Change Seedk such that weight(Seedk, Seedi)==1 and go to 25.Change Seedk such that weight (Seedk, Seedi) == 1 and go to 2
6. stop6. stop
상기 수학식 3과 같은 알고리즘에서 서치 시간을 줄이기 위해, 먼저 주어진 상태에서 최선의 G(x)를 선택한 후 위의 알고리즘을 사용한다. 일반적으로, 3-4번 정도의 반복 후 주어진 조건을 만족하는 인터리버를 찾을 수 있다. 물론, 최선의 G(x) 또한 초기상태(initial seed)에 의존하나, 상태의 종류보다는 생성다항식의 수가 훨씬 적으므로 G(x)를 먼저 선택하는 것이 바람직하다. 따라서, G(x)의 선택은 인터리버의 Coarse Estimation 과정이라 본다. 이렇게 설계된 OCPNI는 상기한 실험과 직관에 의한 방식보다는 나은 웨이트 성질을 가지며, 이는 일반적으로 보다 나은 BER/FER성능을 보장한다.In order to reduce the search time in the algorithm as shown in Equation 3, first select the best G (x) in a given state and then use the above algorithm. In general, it is possible to find an interleaver that satisfies a given condition after 3-4 times. Of course, the best G (x) also depends on the initial seed, but it is preferable to select G (x) first because the number of generated polynomials is much smaller than the type of state. Therefore, the selection of G (x) is regarded as the coarse estimation process of the interleaver. The designed OCPNI has better weight properties than the above experiment and intuition, which generally guarantees better BER / FER performance.
이하 상기 초기 레지스터값을 최적화하는 구체적인 예를 설명한다.Hereinafter, a specific example of optimizing the initial register value will be described.
예를들어, PN생성기기가 4개인 경우의 초기상태값(seed)을 최적화한다고 가정한다. m=5라 하고 NG=4이므로 다음과 같이 Seed를 초기화한다.For example, suppose that you optimize the seed for four PN generators. Since m = 5 and N G = 4, initialize Seed as follows.
영역 0 : 0 1 0 1 0Area 0: 0 1 0 1 0
영역 1 : 1 0 1 0 1Zone 1: 1 0 1 0 1
영역 2 : 0 0 1 1 0Zone 2: 0 0 1 1 0
영역 3 : 1 1 0 0 1Zone 3: 1 1 0 0 1
이렇게 생성된 OCPNI 터보 인터리버의 웨이트를 계산해서 다음 표 5와 같은 웨이트 분포도가 생성된다고 가정한다.The weight distribution of the OCPNI turbo interleaver thus generated is calculated, and it is assumed that a weight distribution diagram as shown in Table 5 is generated.
이 경우, 현재 요구되는 최소 거리(minimum distance)가 약 60인 경우, 웨이트가 22,32,33에 해당하는 그룹의 PN생성기의 초기상태값을 수정해야 한다. 즉, 영역 1, 2, 0에 대응되는 PN생성기의 초기상태값을 수정해햐 한다. 일반적으로 해당 PN생성기는 다른 영역에 해당하는 웨이트에 영향을 주지 않으므로 해당 초기상태값을 수정하면 웨이트가 60보다 적은 경우를 제거할 수 있다.In this case, if the minimum distance currently required is about 60, the initial state value of the PN generator of the group whose weight is 22, 32, 33 should be corrected. That is, the initial state values of the PN generators corresponding to the regions 1, 2, and 0 must be corrected. In general, since the PN generator does not affect the weight corresponding to the other region, it is possible to eliminate the case where the weight is less than 60 by modifying the initial state value.
위의 경우 영역 1의 초기상태값을 다음과 같이 조정하여 표 6과 같은 웨이트 분포도를 얻었다고 가정한다.In the above case, it is assumed that the weight distribution diagram as shown in Table 6 is obtained by adjusting the initial state value of region 1 as follows.
영역 0 : 0 1 0 1 0Area 0: 0 1 0 1 0
영역 1 : 1 0 1 1 1Zone 1: 1 0 1 1 1
영역 2 : 0 0 1 1 0Zone 2: 0 0 1 1 0
영역 3 : 1 1 0 0 1Zone 3: 1 1 0 0 1
이 경우 최소 거리는 32이므로 이에 해당하는 영역 2의 초기 상태값을 조정한다. 이와 같은 과정을 반복하면 최소 거리가 62인 OCPNI 터보 인터리버를 얻을 수 있다. 결론적으로 얻어진 웨이트 분포는 하기 표 7과 같다.In this case, since the minimum distance is 32, the initial state value of the corresponding area 2 is adjusted. Repeating this process yields an OCPNI turbo interleaver with a minimum distance of 62. In conclusion, the weight distribution obtained is shown in Table 7 below.
영역 0 : 0 1 0 1 0Area 0: 0 1 0 1 0
영역 1 : 1 0 1 1 1Zone 1: 1 0 1 1 1
영역 2 : 0 0 1 0 0Zone 2: 0 0 1 0 0
영역 3 : 0 1 0 0 1Zone 3: 0 1 0 0 1
상기한 PN발생기들의 초기상태값 최적화 과정을 일련의 흐름도로 나타내면 첨부된 도면 도 14와 같다.The process of optimizing the initial state values of the PN generators is shown in the accompanying drawings in FIG. 14.
상기 도 14를 참조하면, 먼저 1401단계에서 각 영역의 PN생성기를 임의의 상태값을 사용하여 초기화하고, 각 PN생성기의 생성다항식을 구한 후 최소 웨이트를 결정하는 미리 결정된 입력 정보어(predetermined input word)를 선택한다. 이후, 1403단계에서 OCPNI 인터리버 동작시키고, 1405단계에서 출력된 터보 인코더의 코드워드 헤밍 웨이트(codeword hamming weight)를 구한다. 그리고 1407단계에서 웨이트의 분포를 구한후 최소 웨이트를 결정한다. 그리고 1409단계에서 상기 구해진 최소웨이트가 설정임계치를 만족하는지 검사한다. 이때 상기 최소웨이트가 상기 임계치를 만족할 경우, 1411단계로 진행하여 상기 미리 결정된 입력 정보어의 모든 경우에 대해 검색이 되었는지 검사한다. 이때 모든 경우에 대해 검색을 완료했을 경우 종료하며, 그렇지 않을 경우 다시 상기 1401단계로 되돌아가 최소 웨이트를 결정하는 다른 경우의 미리 결정된 입력 정보어를 선택한후 이하 과정을 재수행한다. 한편, 상기 1409단계에서 최소웨이트가 설정임계치를 만족하지 않을 경우, 1413단계에서 이에 해당하는 영역을 찾고, 1415단계에서 상기 영역에 대응되는 PN생성기의 초기상태값을 변경한후 다시 상기 1403단계로 되돌아가 이하 과정을 재수행한다. 여기서 상기 미리 결정된 입력 정보어라 함은 m-bit PN생성기의 경우 2m-1의 비트로 구성되는 정보열의 쉬프트형태를 말한다.Referring to FIG. 14, first, in step 1401, the PN generator of each region is initialized using an arbitrary state value, a generation polynomial of each PN generator is obtained, and a predetermined input information word (predetermined input word) is determined to determine the minimum weight. Select). Thereafter, the OCPNI interleaver operates in operation 1403, and a codeword hamming weight of the turbo encoder output in operation 1405 is obtained. In operation 1407, the distribution of weights is obtained to determine a minimum weight. In step 1409, the controller determines whether the obtained minimum weight satisfies a set threshold. In this case, if the minimum weight satisfies the threshold, the process proceeds to step 1411 and checks whether the search has been performed for all cases of the predetermined input information word. In this case, if the search is completed in all cases, the process is terminated. Otherwise, the process returns to step 1401 again, selects the other predetermined input information word for determining the minimum weight, and then performs the following process again. On the other hand, if the minimum weight does not satisfy the set threshold in step 1409, find a corresponding area in step 1413, change the initial state value of the PN generator corresponding to the area in step 1415, and then go back to step 1403. Go back and repeat the process below. Here, the predetermined input information word refers to a shift form of an information string composed of 2 m −1 bits in the case of an m-bit PN generator.
상기와 같이 구해진 제2실시 예에 따른 OCPNI의 파라미터들은 하기 표 8 및 표 9와 같다.Parameters of the OCPNI according to the second embodiment obtained as described above are shown in Tables 8 and 9 below.
codition
For NG-1'th PN
Generator[AND]-[OR] -ring
codition
For NG-1'th PN
Generator
상기 [AND]-[OR]-Ring에서 [111]-[111]은 해당위치의 PN 생성기 셀인 PN[5:3]이 AND-Ring되고 PN{2:0]이 OR-Ring 연결된 것을 의미한다.[111]-[111] in the [AND]-[OR] -Ring means that PN [5: 3], which is the PN generator cell at the corresponding position, is AND-Ring and PN {2: 0] is OR-Ring connected. .
codition
For NG-1'th PN
Generator[AND]-[OR] -ring
codition
For NG-1'th PN
Generator
예를들어, 상기 표 8에서 인터리버 사이즈 L이 376인 경우 OCPNI의 독출 어드레스를 구하면 하기 표 10과 같다.For example, when the interleaver size L is 376 in Table 8, the OCPNI read address is obtained as shown in Table 10 below.
하기 설명되는 표 11a와 표 11b는 상기 제1실시 예에 따른 OCPNI와 제2실시 예에 따른 OCPNI의 웨이트 분포를 보여준다.Tables 11a and 11b described below show weight distributions of the OCPNI according to the first embodiment and the OCPNI according to the second embodiment.
상기 <표 11>에서도 알수 있듯이, 제2실시 예에 따른 OCPNI가 제1실시 예에 따른 OCPNI보다 웨이트 분포 면에서 성능이 2배 이상 좋은 것을 알 수 있다.As can be seen from Table 11, it can be seen that the performance of OCPNI according to the second embodiment is more than two times better in weight distribution than the OCPNI according to the first embodiment.
결론적으로, OCPN(Offset Controlled PN Interleaver)는 NG의 수가 성능에 결정적인 영향을 미치며, 또한 원시 생성다항식(Primitive Polynomial)과도 관련을 가짐을 알수 있다. 여기서 상기 NG가 너무 크면 각 그룹의 크기가 줄어들기 때문에 랜덤성질(Random Properity)가 점차 줄어들게 되므로 적당한 NG의 결정이 요구된다. 예를들어, NG가 N이 될 경우는 이는 OCI(Offset Controlled Interleaver)의 성능을 보이며, 상기 OCI의 성능은 일반적으로 OCPNI의 성능에 미치지 못한다. 마지막으로 고려대상은 주어진 NG와 원시 생성다항식에서 최적의 초기상태값을 찾는 것이다.In conclusion, (Offset Controlled Interleaver PN) OCPN may know the relevant michimyeo having a decisive influence on the performance of a number N G, also the raw transient generator polynomial (Primitive Polynomial). If the N G is too large, since the size of each group is reduced, random property is gradually reduced, so that an appropriate determination of N G is required. For example, when N G becomes N, this shows the performance of Offset Controlled Interleaver (OCI), and the performance of the OCI is generally inferior to that of OCPNI. Finally, the consideration is to find the optimal initial state value for a given N G and primitive generation polynomial.
앞서 상술한 내용는 CDMA2000을 기준으로 설명하였다. 가령, 본 발명에 따른 OCPNI를 UMTS용 터보인터리버를 적용하면 다음과 같은 파라미터들을 얻을수 있다. 이하 표 12(일예) 및 표 13(다른예)에서 설명되는 파라미터들을 가장 좋은 성능을 얻기 위한 파라미터들이다.The foregoing has been described based on the CDMA2000. For example, if the OCPNI according to the present invention is applied to the turbo interleaver for UMTS, the following parameters can be obtained. The parameters described in Table 12 (an example) and Table 13 (another example) below are the parameters for obtaining the best performance.
PN generatorseed for
PN generator
PN generatorseed for
PN generator
PN generatoseed for
PN generato
p(x)PN generator
p (x)
상기와 같은 파라미터들을 사용할 경우에 발생되는 웨이트 분포는 하기 표 14과 같다.The weight distribution generated when using the above parameters is shown in Table 14.
상기한 바와 같이, UMTS용 터보인터리버는 프레임크기가 모두 2m으로 나누어 떨어지기 때문에 오프셋값(OSV)를 추가하지 않는다. 그러나, 현재 UMTS표준 진행과정에서 실질적으로 사용할 프레임크기가 결정되지 않았기 때문에, 다시말해 상기한 예들은 검증을 위해 정해놓은 프레임크기이므로, 실제로 프레임크기가 결정되면 상술한 본 발명에 따른 원리에 의해 OSV를 추가해야 한다.As described above, the UMTS turbo interleaver does not add an offset value (OSV) because the frame size is all divided by 2m. However, since the actual frame size to be used in the course of the current UMTS standard has not been determined, in other words, the above-described examples are frame sizes that are set for verification. You must add
상술한 바와 같이 본 발명에서는 입력데이타를 인터리빙할 때에 랜덤 성질, 거리성질 및 웨이트 성질을 만족하면서 랜덤 인터리빙시 필요한 메모리의 사용을 최소화하는 방법을 제시하였다. 또한 본 발명의 제안하는 오프셋제어 인터리버 방식은 기존의 PN인터리빙 방식이 인터리버 크기가 2의 거듭제곱 형태로 표현될수 없고, 인터리버의 크기가 큰 경우 메모리 활용면에서 매우 비효율적이라는 문제점을 해결하였다. 또한, IMT-2000을 위한 인터리버 설계에서 각 논리채널(logical channel)의 인터리버 크기가 2의 거듭제곱 형태로 표현되지 않으며, 인터리버의 크기 또한 매우 크다는 점을 고려할 때 이를 해결할수 있는 방식을 제안한다. 그리고 기존의 인터리빙 방식에서 각각의 인터리버 크기에 따른 인터리빙 룰을 송수신기의 제어부(CPU 또는 HOST)에 저장해 두어야 하므로 인터리버 버퍼 이외에 별도의 저장공간이 CPU(호스트) 메모리쪽에 필요했으나 이러한 문제점을 해결하였다. 즉, 셈(Enumeration)가 가능한 형태의 인터리버를 구현하므로서 하드웨어 구현의 복잡도를 매우 낮추었다. 또한, 송수신을 위한 인터리버/디인터리버 전송방식이 매우 간결하며, 최소의 메모리를 사용한다. 즉, 프레임 크기인 L비트만큼의 인터리버 메모리만 필요하다. 마지막으로, 터보코더 인터리버의 특성을 모두 만족하는 것으로, 랜덤 인터리버와 유사하거나 더 우수한 성능을 보여준다. 따라서 평균 성능(Average performance) 이상의 성능을 보장한다.As described above, the present invention proposes a method of minimizing the use of memory required for random interleaving while satisfying random properties, distance properties, and weight properties when interleaving input data. In addition, the proposed offset control interleaver method of the present invention solves the problem that the conventional PN interleaving method cannot express the interleaver size as a power of 2, and is very inefficient in terms of memory utilization when the interleaver size is large. In the interleaver design for IMT-2000, the interleaver size of each logical channel is not represented by a power of 2, and the size of the interleaver is also very large. In the conventional interleaving method, the interleaving rule according to the size of each interleaver should be stored in the control unit (CPU or HOST) of the transceiver. Therefore, a separate storage space other than the interleaver buffer was required in the CPU (host) memory, but this problem was solved. That is, the complexity of hardware implementation is greatly reduced by implementing an interleaver that can be enumerated. In addition, the interleaver / deinterleaver transmission method for transmitting and receiving is very simple and uses a minimum of memory. That is, only the L-bit interleaver memory, which is the frame size, is required. Finally, it satisfies all of the characteristics of the turbocoder interleaver, showing similar or better performance than the random interleaver. This guarantees performance above average performance.
Claims (24)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020000017318A KR100330238B1 (en) | 1999-04-02 | 2000-04-03 | Interleaving and deinterleaving apparatus and method for a communication system |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019990012858 | 1999-04-02 | ||
KR19990012858 | 1999-04-02 | ||
KR19990011798 | 1999-04-06 | ||
KR1019990011798 | 1999-04-06 | ||
KR1020000017318A KR100330238B1 (en) | 1999-04-02 | 2000-04-03 | Interleaving and deinterleaving apparatus and method for a communication system |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20000071545A KR20000071545A (en) | 2000-11-25 |
KR100330238B1 true KR100330238B1 (en) | 2002-03-25 |
Family
ID=27349929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020000017318A KR100330238B1 (en) | 1999-04-02 | 2000-04-03 | Interleaving and deinterleaving apparatus and method for a communication system |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100330238B1 (en) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030069431A (en) * | 2002-02-20 | 2003-08-27 | 삼성전자주식회사 | Turbo Encoder of Modem ASIC in Communication System and Method thereof |
US7929918B2 (en) | 2007-08-13 | 2011-04-19 | Samsung Electronics Co., Ltd. | System and method for training the same type of directional antennas that adapts the training sequence length to the number of antennas |
US8051037B2 (en) | 2008-01-25 | 2011-11-01 | Samsung Electronics Co., Ltd. | System and method for pseudorandom permutation for interleaving in wireless communications |
US8165595B2 (en) | 2008-01-25 | 2012-04-24 | Samsung Electronics Co., Ltd. | System and method for multi-stage antenna training of beamforming vectors |
US8280445B2 (en) | 2008-02-13 | 2012-10-02 | Samsung Electronics Co., Ltd. | System and method for antenna training of beamforming vectors by selective use of beam level training |
US8478204B2 (en) | 2008-07-14 | 2013-07-02 | Samsung Electronics Co., Ltd. | System and method for antenna training of beamforming vectors having reuse of directional information |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5537420A (en) * | 1994-05-04 | 1996-07-16 | General Instrument Corporation Of Delaware | Convolutional interleaver with reduced memory requirements and address generator therefor |
JPH10308677A (en) * | 1997-04-08 | 1998-11-17 | Hyundai Electron Ind Co Ltd | Convolutional deinterleaver for digital communication equipment |
KR19990001577A (en) * | 1997-06-16 | 1999-01-15 | 양승택 | Communication device using single concatenated encoder and communication method using same |
WO2000010257A1 (en) * | 1998-08-17 | 2000-02-24 | Hughes Electronics Corporation | Turbo code interleaver with near optimal performance |
-
2000
- 2000-04-03 KR KR1020000017318A patent/KR100330238B1/en active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5537420A (en) * | 1994-05-04 | 1996-07-16 | General Instrument Corporation Of Delaware | Convolutional interleaver with reduced memory requirements and address generator therefor |
JPH10308677A (en) * | 1997-04-08 | 1998-11-17 | Hyundai Electron Ind Co Ltd | Convolutional deinterleaver for digital communication equipment |
KR19990001577A (en) * | 1997-06-16 | 1999-01-15 | 양승택 | Communication device using single concatenated encoder and communication method using same |
WO2000010257A1 (en) * | 1998-08-17 | 2000-02-24 | Hughes Electronics Corporation | Turbo code interleaver with near optimal performance |
Also Published As
Publication number | Publication date |
---|---|
KR20000071545A (en) | 2000-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU745959B2 (en) | Interleaving / deinterleaving apparatus and method for a communication system | |
KR100346170B1 (en) | Interleaving / deinterleaving apparatus and method of communication system | |
CA2390096C (en) | High-performance low-memory interleaver banks for turbo-codes | |
KR100711326B1 (en) | Turbo code interleaver using linear congruential sequences | |
AU759580B2 (en) | 2-dimensional interleaving apparatus and method | |
KR100350459B1 (en) | Interleaving / deinterleaving apparatus and method of communication system | |
JP4191485B2 (en) | Random access multi-direction CDMA2000 turbo code interleaver | |
WO2000022738A1 (en) | Coding system having state machine based interleaver | |
JP4298175B2 (en) | Inline sorting for turbo codes | |
US6304985B1 (en) | Coding system having state machine based interleaver | |
KR100330238B1 (en) | Interleaving and deinterleaving apparatus and method for a communication system | |
KR100362557B1 (en) | 2-dimensional interleaving apparatus and method | |
KR100645730B1 (en) | Method for interleaving using magic matrix |
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: 20130227 Year of fee payment: 12 |
|
FPAY | Annual fee payment |
Payment date: 20140227 Year of fee payment: 13 |
|
FPAY | Annual fee payment |
Payment date: 20150226 Year of fee payment: 14 |
|
FPAY | Annual fee payment |
Payment date: 20160226 Year of fee payment: 15 |
|
FPAY | Annual fee payment |
Payment date: 20170224 Year of fee payment: 16 |
|
FPAY | Annual fee payment |
Payment date: 20180227 Year of fee payment: 17 |
|
FPAY | Annual fee payment |
Payment date: 20190227 Year of fee payment: 18 |
|
FPAY | Annual fee payment |
Payment date: 20200218 Year of fee payment: 19 |