KR20050088182A - Addresses generation for interleavers in turbo encoders and decoders - Google Patents

Addresses generation for interleavers in turbo encoders and decoders Download PDF

Info

Publication number
KR20050088182A
KR20050088182A KR1020057011064A KR20057011064A KR20050088182A KR 20050088182 A KR20050088182 A KR 20050088182A KR 1020057011064 A KR1020057011064 A KR 1020057011064A KR 20057011064 A KR20057011064 A KR 20057011064A KR 20050088182 A KR20050088182 A KR 20050088182A
Authority
KR
South Korea
Prior art keywords
sequence
interleaving
items
predetermined number
value
Prior art date
Application number
KR1020057011064A
Other languages
Korean (ko)
Inventor
도나토 에토레
Original Assignee
텔레콤 이탈리아 소시에떼 퍼 아찌오니
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 텔레콤 이탈리아 소시에떼 퍼 아찌오니 filed Critical 텔레콤 이탈리아 소시에떼 퍼 아찌오니
Priority to KR1020057011064A priority Critical patent/KR20050088182A/en
Publication of KR20050088182A publication Critical patent/KR20050088182A/en

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35

Landscapes

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

Abstract

An arrangement for generating addresses for interleaving/de-interleaving sequences (X1, X2, X3,..., XK) including a given number (K) of items, wherein each value for said given number (K) identifies a corresponding set of interleaving parameters (R, C, p, v). The arrangement comprises at least one memory unit (22) wherein a plurality of records are stored, each record being indicative of a respective set of parameters (R, C, p, v) corresponding to at least one value for said given number (K). Sets of interleaving parameters (R, C, p, v) are thus available in the memory unit (22) to be promptly and directly retrieved for all possible values of said given number of items (K). A preferred use is in turbo encoders /decoders for advanced telecommunications applications such as UMTS.

Description

터보 인코더 및 디코더에서 인터리버용 어드레스 발생장치 및 방법{Addresses Generation For Interleavers In Turbo Encoders And Decoders}Address generator for interleaver in turbo encoder and decoder {Addresses Generation For Interleavers In Turbo Encoders And Decoders}

본 발명은 어드레스 발생 기술에 관한 것으로, 인터리빙/디인터리빙(interleaving/deinterleaving) 모듈에서의 가능한 애플리케이션(application)에 특별한 주의를 기울임으로써 개발되었다.TECHNICAL FIELD The present invention relates to address generation techniques and has been developed with particular attention to possible applications in interleaving / deinterleaving modules.

본 발명의 바람직한 애플리케이션은 제 3 세대 이동통신 시스템에 있고, 더 구체적으로는 1999년 발간의 기술 규약 3GPP TS 25.212 V.3.5.0.(2000-12)에 설명된 터보 디코더(turbo decoder) 장치에 있어 마더 인터리버(mother interleaver)이다.A preferred application of the present invention is in a third generation mobile communication system, more specifically in a turbo decoder device as described in the 1999 3GPP TS 25.212 V.3.5.0. (2000-12). It is a mother interleaver.

터보 인코더(turbo encoder)는 전송에 악영향을 끼치는 손상 소스(impairment source)의 결과가 디코더에서 상보성 디코딩(complementary decoding)에 의해 보상될 수 있는 방식으로, 가능한 제어 코드의 추가로, 전송된 정보를 재배열하는 목적을 갖는 통신 시스템에 사용되는 구성부품이다. Turbo encoders grow the transmitted information in addition to possible control codes in such a way that the result of an impairment source that adversely affects transmission can be compensated by complementary decoding at the decoder. A component used in a communication system having a purpose of heating.

터보 인코딩/디코딩 방식을 사용하는데 적합한 통신 시스템의 예로는 소위 UMTS(Universal Mobile Telecommunications System)표준을 채택하는 시스템이다.An example of a communication system suitable for using the turbo encoding / decoding scheme is a system adopting a so-called Universal Mobile Telecommunications System (UMTS) standard.

터보 인코더/디코더에서의(예컨대, 3GPP TS 25.212 규약에서 정의된 바와 같은) 핵심 요소는 소위 인터리버/디인터리버 블록이다. 이러한 블록의 동작은 본질적으로 소정의 법칙에 따라 가변되는 주어진 길이 K 블록에 포함된 정보(비트)의 기본 항목들(elementary items)의 순으로 제공된다. The key element in a turbo encoder / decoder (eg, as defined in the 3GPP TS 25.212 protocol) is the so-called interleaver / deinterleaver block. The operation of such a block is provided in order of the elementary items of information (bits) contained in a given length K block that are essentially variable in accordance with certain laws.

EP-A-1 195 910에서, UMTS 장치용 터보 인코더에 사용하기 위한 인터리버가 개시되어 있다. 상기 인터리버는 인터리버의 동작조건을 설정하기 위해 복수의 파라미터를 업데이트하고 레지스터링을 하기 위한 레지스터; 상기 레지스터로부터 동작조건을 받아들임으로써 시스템의 동작을 제어하기 위한 제어신호를 발생하는 컨트롤러; 상기 컨트롤러에 의해 발생된 제어신호에 따라 상기 레지스터에 의해 제공된 행간 치환(inter-row permutation)패턴, 행내 치환(intra-row permutation)패턴 증가 장치 값 및 행내 치환 기본 스퀀스를 사용하는 최종 인터리버 어드레스; 및 터보 인코더에 순차적으로 입력된 데이터를 저장하고 상기 어드레스 계산기에 의해 발생된 어드레스에 따른 데이터를 출력하는 데이터 저장장치를 포함한다.In EP-A-1 195 910, an interleaver for use in a turbo encoder for a UMTS device is disclosed. The interleaver may include: a register for updating and registering a plurality of parameters to set operating conditions of the interleaver; A controller for generating a control signal for controlling the operation of the system by accepting an operating condition from the register; A final interleaver address using an inter-row permutation pattern, an intra-row permutation pattern increasing device value, and an intra-row substitution base sequence provided by the register in accordance with a control signal generated by the controller; And a data storage device for storing data sequentially input to the turbo encoder and outputting data according to the address generated by the address calculator.

따라서, 이러한 장치는 인터리버의 동작조건을 설정하기 위한 복수의 인터리빙 파라미터(즉, 입력된 데이터 항목의 개수(K), 및 R, C, p, μ 및 타입 D로 지정된 파라미터)를 업데이트하고 레지스터링을 하기 위한 레지스터를 포함하는 인터리버에 기초한다. 따라서, 이러한 종래 장치는 이들 파라미터가 장치의 외부로부터 발생되고 얻이진 것이라는 가정에 기초한다.Thus, such a device updates and registers a plurality of interleaving parameters (i.e., the number of input data items K, and parameters designated as R, C, p, μ and type D) for setting the operating conditions of the interleaver. Is based on an interleaver containing registers for Thus, such conventional devices are based on the assumption that these parameters are generated and obtained from the outside of the device.

그러므로, 이러한 종래 참조문헌은 인터리빙 파라미터가, 예컨데, 실제로 전송된 각 패킷에 따라 변할 수 있는 입력된 데이터 항목의 개수(K)에서의 가능한 변화를 고려하여 동적으로 빠르게 적용될 수 있는 인터리버를 실행하는 방법을 교시하지 못하고 있다.Therefore, this prior reference describes a method for implementing an interleaver in which the interleaving parameters can be dynamically and rapidly applied, taking into account possible changes in the number of input data items, e.g., which may actually change with each packet transmitted. Not teaching.

마세라(Masera), 마짜(Mazza), 피치니니(Piccinini), 비글리온(Viglione), 잠보니(Zamboni)의 2001년 9월 논문 Proceedings of ESSCIRC 2001, Villach, "Low-Cost IP-blocks for UMTS turbo decoders"에서, 인터리버를 구비하는 소자 중 일부를 하드웨어 형태로 실행하기 위한 장치가 개시되어 있다. 또한 이 종래기술은 그 파라미터가 동적으로 그리고 빠르게 적용될 수 있는 인터리비버 및, 더 일반적으로는, 인터리빙 파라미터가 전송되는 정보(본래 K값)로부터 직접적으로 그리고 동적으로 추출될 수 있는 장치를 실행하는데 유용한 지침을 제공하지 못하고 있다.September 2001 paper by Masera, Mazza, Piccinini, Viglione, Zamboni Proceedings of ESSCIRC 2001, Villach, "Low-Cost IP-blocks for UMTS turbo decoders In the present invention, an apparatus for executing some of the elements having an interleaver in hardware form is disclosed. This prior art also implements an interleaver in which the parameters can be applied dynamically and quickly, and more generally, an apparatus in which the interleaving parameters can be extracted directly and dynamically from the information transmitted (original K value). It does not provide useful guidance.

본 발명은 첨부도면을 참조로 단지 예로서 설명된다:The invention is illustrated by way of example only with reference to the accompanying drawings, in which:

도 1은 인터리버 장치를 도시한 일반적인 블록도이다;1 is a general block diagram illustrating an interleaver device;

도 2는 본 발명의 실시예에서 제 1 단계의 파라미터 발생을 도시한 블록도이다;2 is a block diagram showing parameter generation in a first step in an embodiment of the present invention;

도 3은 도 2의 블록도를 보다 상세하게 도시한 것이다; 그리고3 illustrates the block diagram of FIG. 2 in more detail; And

도 4는 본 발명에 따른 어드레스 발생기의 전체 블록도이다.4 is an overall block diagram of an address generator according to the present invention.

따라서, 본 발명의 목적은 인터리빙 파라미터가 전송되는 정보를 직접적으로 그리고 동적으로 추출될 수 있고, 이에 의해 이들 파라미터가, 예를 들어, 인터리버/디인터리버되는 입력 데이터 항목의 개수(K)에서의 가능한 변화에 대해 동적으로 그리고 빠르게 적용되게 하는 인터리버/디인터리버에 사용하기 위한 어드레스 발생장치를 제공하는 것이다.It is therefore an object of the present invention that the interleaving parameters can be extracted directly and dynamically, whereby these parameters are possible, for example, in the number K of interleaved / deinterleaved input data items. It is to provide an address generator for use in an interleaver / deinterleaver that can be applied dynamically and quickly to change.

본 발명에 따르면, 이러한 목적은 특히 특허청구범위에 청구된 특징을 갖는 어드레스 발생 시스템에 의해 달성된다. 본 발명은 또한 해당하는 동작방법 뿐만 아니라 인터리버/디이터리버 블록의 일부로서 본 발명의 어드레스 발생장치를 포함하는 터보 인코더/디코더에 관한 것이다. 마지막으로, 본 발명은 (예를 들어, 프로세서와 같은) 디지털 컴퓨터의 내부 메모리에 직접 로드될 수 있고, 상기 디지털 컴퓨터상에 실행될 때 본 발명의 방법을 수행하기 위한 소프트웨어 코드 부분을 포함하는 컴퓨터 프로그램 제품에 관한 것이다. According to the invention, this object is achieved in particular by an address generation system having the features claimed in the claims. The present invention also relates to a turbo encoder / decoder comprising the address generator of the present invention as part of an interleaver / deterrier block as well as a corresponding operating method. Finally, the present invention can be loaded directly into the internal memory of a digital computer (such as a processor, for example) and includes a software code portion for executing the method of the invention when executed on the digital computer. It is about a product.

본 발명의 바람직한 실시예는 (예를 들어, 터보 인코더/디코더에서) 항목의 소정 개수(K)를 포함하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생장치로서, 상기 장치는 그 내부에 저장된 복수의 레코드를 갖는 적어도 하나의 메모리 장치를 구비한다. 각각의 레코드는 상기 항목의 소정 개수(K)에 대한 적어도 하나의 값에 해당하는 각각의 인터리빙 파라미터의 세트를 나타내는 정보 신호를 포함한다.A preferred embodiment of the present invention is an address generator for an interleaving / deinterleaving sequence comprising a predetermined number K of items (e.g., in a turbo encoder / decoder), the apparatus comprising a plurality of records stored therein. At least one memory device having a. Each record includes an information signal indicative of a set of respective interleaving parameters corresponding to at least one value for a predetermined number K of said items.

바람직하기로, 상기 소정 데이터 항목의 개수(K)에 대한 각각의 값은 출력 어드레스 발생을 위한 치환된 매트릭스를 만들기 위해 상기 입력 시퀀스를 배열하고 상기 매트릭스의 행내 및 행간 치환을 하는 매트릭스(R×C)를 구성하는 해당 파라미터 세트(R,C,p,V)를 식별한다. 따라서, 상기 파라미터의 세트(R,C,p,V)는 소정 데이터 항목의 개수(K)의 모든 가능한 값에 대해 즉각 이용될 수 있다.Preferably, each value for the predetermined number of data items (K) is a matrix (R × C) that arranges the input sequence to produce a substituted matrix for output address generation and performs in-row and inter-row substitution of the matrix. Identify the relevant parameter sets (R, C, p, V) that make up Thus, the set of parameters R, C, p, V can be used immediately for all possible values of the number K of a given data item.

인터리버/디인터리버되는 상기 소정 데이터 항목의 개수(K)의 값은 대개 주어진 값 범위내에 포함되고, 상기 메모리 장치는 바람직하기로는 상기 주어진 값 범위보다 실질적으로 더 작은 레코드 개수를 포함한다. 메모리 장치에서 각각의 레코드는 각각의 포인터(pointer)에 의해 식별된다. 메모리 장치와 관련하여, 상기 메모리 장치에서 각각의 레코드를 가리키는 해당하는 포인터를 상기 주어진 범위내의 상기 주어진 데이터 항목 개수의 각 값에 대해 발생하도록 구성되는 포인터 검색 회로가 있다.The value of the number K of said predetermined data items being interleaver / deinterleaved is usually contained within a given value range, and said memory device preferably comprises a record number substantially smaller than said given value range. Each record in the memory device is identified by a respective pointer. In the context of a memory device, there is a pointer retrieval circuit configured to generate a corresponding pointer for each record in the memory device for each value of the given number of data items within the given range.

본 발명의 실시예는 (상용의 DSP 또는 Micro Controller 사용하여) 계산하는 수고가 줄어든 소프트웨어 방안으로서 및 바람직하게는 ASIC 방안으로서 모두 실행되는 인터리빙 어드레스의 발생을 위한 코드를 허용한다. 이러한 중요한 특징은 UMTS 수신기에 사용된 터보 디코더 프로세서의 설계에서의 자립형 방안을 이끈다.Embodiments of the present invention allow code for the generation of interleaving addresses, both as a software solution with reduced computation (using a commercial DSP or Micro Controller) and preferably as an ASIC solution. This important feature leads to a standalone approach in the design of turbo decoder processors used in UMTS receivers.

본 발명의 예시적인 실시예의 설명에 대한 도입으로써, 1999 발간된 3GPP TS 25.212 V.3.5.0.(2002-12) 규약(specification)에 제공된 바와 같이 터보 코드 내부 인터리버의 기본 동작원리를 간략히 상기(想起)한다.As an introduction to the description of an exemplary embodiment of the invention, the basic operating principle of the turbo code internal interleaver is briefly described as provided in the 1999 publication 3GPP TS 25.212 V.3.5.0. (2002-12) specification.想起)

필수적으로, 터보 코드 내부 인터리버는 직사각형 매트릭스의 채우기(padding), 행내(intra-raw), 행간(inter-raw) 및 행내 치환을 갖는 직사각형 매트릭스로의 비트-입력(bits-input)과 푸르닝(pruning)을 사용하는 상기 직사각형 매트릭스로부터의 비트-출력(bits-output)으로 구성된다.Essentially, the turbo code internal interleaver is a bit-input and purging of the rectangular matrix with padding, intra-raw, inter-raw, and in-row substitution of the rectangular matrix. It consists of bits-output from the rectangular matrix using pruning.

터보 코드 내부 인터리버에 입력된 비트는 x 1 ,x 2 ,x 3 ,…x K 로 표시되며, 여기서 K는 인터리버되는 비트의 정수 개수(데이터 항목) K≤5114 중 하나의 값을 갖는다.The bits input to the turbo code internal interleaver are x 1 , x 2 , x 3 ,. It is denoted by x K , where K has a value of one of the integer number of data being interleaved (data item) K≤5114.

터보 코드 내부 인터리버에 입력된 비트와 채널 코딩(channel coding)에 입력된 비트 사이의 관계는 x k =o irk K=K i 로 정의된다. 특히, 하기의 표시가 사용된다:The relationship between bits input to the turbo code internal interleaver and bits input to channel coding is defined as x k = o irk and K = K i . In particular, the following indications are used:

K 터보 코드 내부 인터리버에 입력된 비트의 개수;Number of bits input to the K turbo code internal interleaver;

R 직사각형 매트릭스의 행 개수;The number of rows in the R rectangular matrix;

C 직사각형 매트릭스의 열 개수;Number of columns in the C rectangular matrix;

p 소수 개수(prime number);p prime number;

V 원시근(primitive root);V primitive root;

<s(j)>j∈{0,1,…,p-2} 행내 치환용 기본 시퀀스;<s (j)> j ∈ {0, 1,... , p-2} base sequence for in -line substitution;

qi 최소 소수;q i minimum prime;

ri 치환된 소수;r i substituted decimal;

<T(i)>i∈{0,1,…,R-1} 행내 치환 패턴;<T (i)> i ∈ {0, 1,... , R-1} in-line substitution pattern;

<Ui(j)>j∈{0,1,…,C-1} i번째 열의 행내 치환 패턴;<U i (j)> j ∈ {0, 1,... , C-1} in- row substitution pattern of the i-th column;

i 직사각형 매트릭스의 행번호 인덱스; i row number index of the rectangular matrix;

j 직사각형 매트릭스의 열번호 인덱스; 및j column number index of the rectangular matrix; And

k 비트 시퀀스의 인덱스.Index of k-bit sequence.

제 1 단계로서, 터보 코드 내부 인터리버에 입력된 비트 시퀀스 x 1 ,x 2 ,x 3 ,…x K 는 K 값에 따라 값 5, 10 및 20을 R에 할당함으로써 직사각형 매트릭스에 작성된다. 직사각형 매트릭스의 행은 위에서 아래로 0, 1, …, R-1의 번호가 매겨져 있한다.As a first step, the bit sequence x 1 , x 2 , x 3 ,... x K is written to the rectangular matrix by assigning values 5, 10 and 20 to R according to the K value. The rows of the rectangular matrix are from top to bottom 0, 1,... R-1 is numbered.

제 2 단계는 내 치환(intra-permutation)에 사용되는 소수(prime) p 및 직사각형 매트릭스 C의 열 개수를 결정하는 단계를 포함한다. 이는 K 및 R의 함수로서 행해진다. 직사각형 매트릭스의 열은 좌에서 우로 0, 1, …, C-1의 번호가 매겨져 있다.The second step includes determining the number of columns of the prime p and rectangular matrix C used for intra-permutation. This is done as a function of K and R. The columns of the rectangular matrix are from left to right 0, 1,... , C-1 is numbered.

제 3 단계는 0행의 0열에 비트 y1으로 시작하는 R×C 직사각형 매트릭스의 행단위(row by row)에 입력 비트 시퀀스 x 1 ,x 2 ,x 3 ,…x K 를 작성하는 단계를 포함하며, 여기서, k=1, 2, …, K에 대해 yk = xk이고, R×C > K이면, k= K+1, K+2, …, R×C에 대해 yk = 0 또는 1 이도록 더미 비트(dummy bits)가 채워진다.The third step is to input the sequence of bit sequences x 1 , x 2 , x 3 ,... Into the row by row of the R × C rectangular matrix starting with bit y 1 in column 0 of row 0 . creating x K , where k = 1, 2,... , K k = x k with respect to K and R x C> K, then k = K + 1, K + 2,. , Dummy bits are filled such that y k = 0 or 1 for R × C.

이들 더미 비트는 행내 및 행간 치환후에 직사각형 매트릭스의 출력으로부터 잘려진다. These dummy bits are truncated from the output of the rectangular matrix after in-row and inter-line substitution.

R×C 직사각형 매트릭스에 대한 비트입력 후에, R×C 직사각형 매트릭스에 대한 행내 및 행간 치환이 규약에서 상세히 설명한 6단계 알고리즘을 사용함으로써 단계적으로 수행된다.After bit input to the RxC rectangular matrix, in-row and interline substitution for the RxC rectangular matrix is performed step by step using the six-step algorithm detailed in the protocol.

행내 및 행간 치환 후에, 치환된 직사각형 매트릭스의 비트는 y'k로 표시된다. 터보 코드 내부 인터리버의 출력은 0행의 0열에서 비트 y'1으로 시작하고 R-1행의 C-1열에 비트 y'CR로 끝나는 행내 및 행간 치환된 R×C 직사각형 매트릭스로부터 열단위(cloumn by cloumn)로 읽혀지는 비트 시퀀스이다.Haengnae and after leading substituted, the bit of the substituted rectangular matrix is represented by y 'k. The output of the turbo code interleaver is columnar from the in-row and interlined R × C rectangular matrix, beginning with bit y ' 1 in column 0 of row 0 and ending with bit y' CR in column C-1 of row R-1. by cloumn).

출력은 행내 및 행간 치환전에 직사각형 매트릭스의 입력에 채워졌던 더미 비트를 삭제함으로써 잘려진다; 즉, k>K인 비트 yk에 해당하는 비트 y'k가 출력으로부터 제거된다.The output is truncated by deleting the dummy bits that filled the input of the rectangular matrix before in-row and inter-line substitution; That is, the bit y ' k corresponding to the bit y k where k> K is removed from the output.

터보 코드 내부 인터리버로부터의 출력된 비트는 x' 1 ,x' 2 ,…x' K 로 표시되며, 여기서, x' 1 은 프루닝후에 최소 인덱스 k를 갖는 비트 y'k에 해당하고, x' 2 는 프루닝후에 2번째 최소 인덱스 k를 갖는 비트 y'k, 등등 에 해당한다.The output bits from the turbo code internal interleaver are x ' 1 , x' 2 ,... x ' K , where x' 1 corresponds to bit y ' k with minimum index k after pruning, x' 2 corresponds to bit y ' k with second minimum index k after pruning , and so on. Corresponding.

터보 코드 내부 인터리버로부터의 비트 출력 개수는 K이고 푸르닝된 비트의 총 개수는 R×C - K이다.The number of bit outputs from the turbo code internal interleaver is K and the total number of bluish bits is R × C−K.

전술한 모두는 당업자에게 잘 알려진 처리 기준에 따르므로, 따라서 본 명세서에 더 상세하게 다룰 필요는 없다.All of the foregoing are in accordance with treatment criteria well known to those skilled in the art, and thus do not need to be discussed in more detail herein.

필수적으로, 기술 규약 3GPP TS 25.212 V.3.5.0.(2000-12)에 설명된 인터리빙 방안은 매트릭스를 구성하는 단계 및 상기 매트릭스에 들어오는 데이터를 입력하는 단계; 행내 및 행간 치환; 및 행내 및 행간 치환을 통해 얻은 매트릭스로부터 치환된 데이터의 읽기의 3가지 기본 단계로 구성된다.Essentially, the interleaving scheme described in Technical Protocol 3GPP TS 25.212 V.3.5.0. (2000-12) comprises constructing a matrix and inputting data entering the matrix; Intra and interline substitution; And reading the substituted data from the matrix obtained through in-row and inter-line substitution.

인터리버는 들어오는 데이터가 순차적으로 작성되고 특정한 순서로 읽혀지는 데이터 메모리를 사용하여 실행될 수 있다. The interleaver can be executed using data memory in which incoming data is written sequentially and read in a specific order.

실제로, 임의의 인터리빙/디인터리빙 처리는 아래의 동작 중 어느 한 결과로서 단순히 간주될 수 있다:In fact, any interleaving / deinterleaving process may simply be regarded as a result of any of the following operations:

a) 이러한 입력에 파일에 나타나는 순서대로 인터리버/디인터리버되는 항목(예를 들어, 비트)을 입력 파일로부터 취하는 단계 및 주어진 어드레스에 의해 각각 식별되는 각 위치의 출력 파일에 상기 항목을 재배열하는 단계; a) taking an interleaver / deinterleaver item (e.g., a bit) from the input file in the order in which it appears in the file at this input and rearranging the item in an output file at each location each identified by a given address; ;

b) 각 어드레스에 의해 식별된 시퀀스에서 입력 파일로부터 항목을 취하는 단계 및 입력 파일로부터 취해질 때 상기 항목을 차례대로 출력 파일에 재배열하는 단계.b) taking an item from an input file in the sequence identified by each address and rearranging the item in turn into an output file when taken from the input file.

또한, 차례대로(임의의 순서로) 앞서 표시된 동작들 모두를 실행하는 단계는 완전한 인터리빙/디인터리빙 처리에 해당하는 것임을 알게 된다.Further, it will be appreciated that the step of executing all of the previously indicated operations in turn (in any order) corresponds to a complete interleaving / deinterleaving process.

이하, 인터리빙 처리에 대한 기준은 간략화를 위해 이루어지며, 다른 경우로는 인터리빙과 연계하여 진술되는 것이 디인터리빙에도 또한 직접적으로 적용됨을 알게 된다. In the following, the criterion for the interleaving process is made for the sake of simplicity, and in other cases it will be appreciated that what is stated in connection with interleaving also applies directly to the deinterleaving.

인터리버 모듈 뿐만 아니라 디인터리버 모듈도 어느 한 방안에 해당하는 처리 구조에 의해 더 쉽게 실행될 수 있다. The deinterleaver module as well as the interleaver module can be more easily executed by the processing structure corresponding to either method.

이는 도 1에 개략적으로 도시되어 있다. 여기서, 참조번호 10은 터보 인코더/디코더(코덱(codec))(14)와 협동하도록 의도된 관련의 데이터 메모리(12)를 갖는 어드레스 발생기를 나타낸다.This is shown schematically in FIG. 1. Here, reference numeral 10 denotes an address generator having an associated data memory 12 intended to cooperate with a turbo encoder / decoder (codec) 14.

코덱(14)은 블록에 배열된 데이터를 (본 명세서에서 상세하게 설명할 필요가 없는 공지된 방식으로) 처리하도록 되어 있고, 각 블록은 인터리버/디인터리버되는 K 항으로 구성된다. The codec 14 is adapted to process the data arranged in the blocks (in a known manner which does not need to be described in detail herein), and each block is composed of K terms which are interleaver / deinterleaved.

K 값과 관련된 (표시된 바와 같이, 송수신된 각각의 다른 데이터 패킷으로 변경될 수 있는) 정보가 코덱(14)에서 어드레스 발생기(10)로 전송된다.Information relating to the K value (which may be changed to each other data packet transmitted and received, as indicated) is sent from the codec 14 to the address generator 10.

데이터 메모리(12)는 인터리빙/디인터리빙 동작을 수행하기 위한 기본 요소이다.The data memory 12 is a basic element for performing interleaving / deinterleaving operations.

예를 들어, 이는 코덱(14)으로 하여금 데이터를 순서대로 메모리(12)에 기록하게 하고 그런 후 어드레스 발생기(10)에 의해 정의된 어드레스 시퀀스에 해당하는 메모리(12)로부터 데이터를 읽게 함으로써 발생될 수 있다. 대안으로, 코덱(14)은 어드레스 발생기(10)에 의해 정의된 어드레스 시퀀스에 해당하는 메모리(12)에 데이터를 기록하게 하고 그런 후 순서대로 메모리(12)로부터 데이터를 읽도록 할 수 있다.For example, this can be caused by having the codec 14 write the data to the memory 12 in order and then read the data from the memory 12 corresponding to the address sequence defined by the address generator 10. Can be. Alternatively, the codec 14 may cause the data to be written to the memory 12 corresponding to the address sequence defined by the address generator 10 and then to read the data from the memory 12 in order.

본 명세서에 설명된 어드레스 발생기(10)는 필수적으로 3가지 장치, 즉 파라미터 발생기(10a), 치환패턴 발생기(10b), 및 어드레스 발생기(10c)로 구성된다.The address generator 10 described herein consists essentially of three devices: a parameter generator 10a, a substitution pattern generator 10b, and an address generator 10c.

본 명세서에 개시된 장치에 사용하기 위한 파라미터 발생기(10a)의 가능한 전체적인 배치가 도 2에 도시되어 있다.A possible overall arrangement of the parameter generator 10a for use in the apparatus disclosed herein is shown in FIG.

도시된 배치는, 룩업 테이블(look-up table, LUT) 방식이 사용되는 경우, 인터리빙 매트릭스 및 치환 패턴의 구성에 요구되는 파라미터(R,C,p,V)의 발생에 필요한 계산 노력이 감소된다는 인식에 기초한 것이다. The arrangement shown shows that when a look-up table (LUT) scheme is used, the computational effort required to generate the parameters R, C, p, V required for the construction of the interleaving matrix and the substitution pattern is reduced. It is based on perception.

다르게 말하면, (인터리브되는 데이터 블록의 K로 주어진 길이가 바뀌기 때문에) K의 새로운 값이 마주칠 때마다 이러한 파라미터를 능동적으로 발생(예를 드렁, 계산)하는 대신에, K의 모든 가능한 값에 대해 - 한번만 - 이들 파라미터를 계산하는 가능성을 고려할 수 있다. 그런 후, 이러한 파라미터는 K에 대한 새로운 값이 다루어질 때마다 선택적으로 검색되는 메모리에 명확히 저장될 수 있다.In other words, instead of actively generating (eg, calculating) these parameters each time a new value of K is encountered (because the length given by K of the interleaved data block changes), for all possible values of K, Once-consider the possibility of calculating these parameters. This parameter can then be explicitly stored in a memory that is selectively retrieved whenever a new value for K is handled.

이러한 방안은 K에 대한 각각의 새로운 값에 대해 운영되도록 하는 임의의 특정한 계산 소프트웨어를 제공할 필요성 없이 어드레스 발생기가 본질적으로 하드웨어 형태로 실행되게 하는 현저한 이점을 수반한다. This approach entails the significant advantage of allowing the address generator to be implemented in essentially hardware form without the need to provide any particular computational software to operate on each new value for K.

이는 처리 시간을 줄이며, 따라서 인터리빙 처리가 이미 그 자체로 비교적 시간 소비적이므로 상당한 이점을 나타낸다: 인터리버되는 데이터의 전체 블록은 처리를 위한 마지막 입력 데이터가 제 1 출력 데이터일 수 있기 때문에 실제로 적절한 인터리빙 처리가 시작되기 전에 이용될 수 있다는 것이다. This reduces processing time and thus represents a significant advantage since the interleaving process is already relatively time consuming in itself: the entire block of interleaved data actually does not have the proper interleaving process since the last input data for processing may be the first output data. It can be used before it starts.

고려되는 룩업 테이블 장치에서, 룩업 테이블로의 입력은 터보 인코더(K)에 들어오는 데이터 블록의 크기일 수 있다. 이는 5075개의 가능한 값을 가정하는 [40, 5114] 범위내에 변할 수 있다. 다른 파라미터(C,R,p,v)의 매핑 연쇄(concatenation)는 룩업 테이블의 출력을 포함할 수 있다. 이 룩업 테이블의 실행은 5075개 리코더의 메모리일 수 있으며, 각 리코더는 각각의 가능한 K값에 대한 각각의 파리미터 세트를 포함한다.In the look-up table device under consideration, the input to the look-up table may be the size of the data block entering the turbo encoder K. This can vary within the range [40, 5114] assuming 5075 possible values. The mapping concatenation of the other parameters C, R, p, and v may include the output of the lookup table. The execution of this lookup table may be the memory of 5075 recorders, each recorder containing a respective set of parameters for each possible K value.

그러나, 이점적인 이러한 방안은 필요한 메모리 크기의 면에서 상당히 효율적이지 못하며, 예를 들어, UMTS 이동 단말기와 같은 이동 애플리케이션에 대해 중요한 칩영역 점유 파라미터를 불가피하게 불리하게 할 수 있다.However, this approach, which is advantageous, is not very efficient in terms of the required memory size, and may inevitably disadvantage important chip area occupancy parameters for mobile applications such as, for example, UMTS mobile terminals.

기술 규약 3GPP TS 25.212 V3.5.0.에 설명된 기준 알고리즘의 실행은, 가능한 K값이 5075개 이더라도, 메모리에 다른 레코드 개수가 5075개 보다 훨씬 더 작으며, 실제로는 약 200개인 것으로 나타난다.The implementation of the reference algorithm described in Technical Protocol 3GPP TS 25.212 V3.5.0. Shows that even though the possible K value is 5075, the number of other records in memory is much smaller than 5075, and in fact is about 200.

이 결과로, 본 명세서에 도시된 장치의 현재 바람직한 실시예가 2개의 다른 메모리 또는 메모리 영역으로 미리 나누어지는 상기 고려된 룩업 테이블을 구비하는 메모리에 대해 제공된다: 즉As a result, a presently preferred embodiment of the device shown here is provided for a memory having the above considered look-up table which is previously divided into two different memories or memory regions:

K 값에 의해 어드레스되는 포인터에 대한 저장위치를 필수적으로 포함하는 제 1 메모리 영역(20); 및A first memory area 20 essentially containing a storage location for a pointer addressed by a K value; And

포인터에 의해 각각 어드레스되는, 각각의 다른 인터리빙 파라미터 세트에 대한 (제 2) 레코드를 포함하는 제 2 메모리 영역(22).Second memory area (22) comprising (second) records for each different set of interleaving parameters, each addressed by a pointer.

이러한 (제 2) 레코드의 개수가 5075개 보다 더 작고, 실제로 약 200개(즉, 규약에 정의된 알고리즘의 실행으로 인해 가능한 다른 데이터 세트의 개수)로 제한된다.The number of such (second) records is less than 5075, and in practice is limited to about 200 (ie, the number of other data sets possible due to the execution of the algorithm defined in the protocol).

따라서, 장치는 각각의 주어진 K 값(5075개의 가능한 값)에 대해, 제 2 메모리 영역에서 각각의 레코드(즉, 인터리빙 파라미터의 각 세트)에 대해 해당하는 포인터를 식별하게 한다. Thus, the apparatus allows for each given K value (5075 possible values) to identify a corresponding pointer for each record (ie, each set of interleaving parameters) in the second memory area.

메모리 요건을 줄이는 또 다른 단계는 포인터가 메모리에서 커지는 순서대로 저장되게 하는 것을 유의함으로써 취해질 수 있고, 따라서 동일한 최상위 비트(most significant bits, MSB)를 갖는 인접한 포인터의 그룹에 순서대로 배열될 수 있다.Another step to reduce the memory requirements can be taken by noting that the pointers are stored in increasing order in memory, and thus can be arranged in order in groups of adjacent pointers having the same most significant bits (MSB).

이 특징은 메모리 영역(20)을 MSB(최상위 비트) 계산 회로(20a) 및 LSB(최하위 비트) 포인터 메모리(20b)로 구성되는 2개의 서브유닛으로 더 분할하는데 사용될 수 있다.This feature can be used to further divide the memory area 20 into two subunits consisting of MSB (most significant bit) calculating circuit 20a and LSB (least significant bit) pointer memory 20b.

상기 장치에 의해, 포인터에 대한 주어진 MSB 개수(예를 들어, 각 포인터에서 첫번째 2개의 비트)는 비교기(201,202,203)의 그룹에서 다수의 임계값과 K 값을 비교하고, 논리유닛(204)에서 이들 비교기의 결과를 조합함으로써 결정될 수 있다. 따라서, 잔여, 최하위 비트(LSBs)가 LSB 메모리(20b)로부터 검색될 수 있고, 상기 LSB 메모리의 크기도 부수적으로 감소되어 진다. 예를 들어, K에 대한 5075개의 다른 값을 고려하는 경우, 메모리(20b)의 크기는 2개의 MSB가 이미 회로(20a)에 의해 결정되기 때문에 5075×8 비트에서 5075×6 비트로 줄어들 수 있다. By this arrangement, a given number of MSBs for a pointer (e.g., the first two bits in each pointer) compares a number of thresholds and K values in a group of comparators 201, 202, and 203, and in logical unit 204 Can be determined by combining the results of the comparator. Therefore, the remaining, least significant bits (LSBs) can be retrieved from the LSB memory 20b, and the size of the LSB memory is also incidentally reduced. For example, considering 5075 different values for K, the size of memory 20b can be reduced from 5075x8 bits to 5075x6 bits since the two MSBs are already determined by circuit 20a.

예로서, 비교기(201,202,203)의 임계값은 값 T1, T2 및 T3로 각각 설정될 수 있으며, T1은 T2보다 낮고 차례로 T2는 T3보다 더 낮다.By way of example, the thresholds of comparators 201, 202 and 203 can be set to values T1, T2 and T3, respectively, where T1 is lower than T2 and in turn T2 is lower than T3.

따라서, 가능한 K값의 범위는 4개의 부분 또는 대역으로 나누어진다. T1은 제 1 대역에 대해 상위 범위가 되는 반면에, 또한 T1 및 T2 사이에 있는 제 2 대역에 대해 하위 범위가 제공된다. 제 3 대역은 T2 및 T3 사이에 있는 반면에, T3는 또한 제 4 부분 또는 대역에 대해 하위범위를 나타낸다.Thus, the range of possible K values is divided into four parts or bands. T1 becomes an upper range for the first band, while a lower range is also provided for the second band between T1 and T2. The third band is between T2 and T3, while T3 also represents a subrange for the fourth part or band.

따라서, 비교기(201 내지 203)에서 임계값 T1, T2, 및 T3에 대하여 K의 인스턴트(instant) 값을 비교하고 회로(204)에 각각의 비교 결과를 처리하는 단계는 해당하는 포인터의 2개의 MSB에 대해 이들 4개의 대역 중 하나에 K를 위치시키고 값 00, 01, 10 및 11을 각각 발생하도록 한다.Thus, comparing the instantaneous values of K against the thresholds T1, T2, and T3 in the comparators 201-203 and processing the respective results of the comparison in the circuit 204 are two MSBs of corresponding pointers. Place K in one of these four bands for and generate the values 00, 01, 10 and 11, respectively.

따라서, 개시된 포인터 검색장치는Accordingly, the disclosed pointer search apparatus

포인터의 (2개의) 최상위 비트로부터 도출되게 인터리버/디인터리버되는 항목의 소정 개수(K)를 감지하는 회로(20a); 및Circuitry (20a) for sensing a predetermined number (K) of items to be interleaver / deinterleaved to be derived from (two) most significant bits of the pointer; And

그 내부에 저장된 상기 포인터의 (6개의) 잔여, 최하위 비트(LSB)를 갖는 또 다른 메모리 장치(20b)로 구성된다.It consists of another memory device 20b having (six) remaining, least significant bits (LSB) of the pointer stored therein.

물론, MSB의 더 낮거나 더 높은 수가 회로(20a)에 의해 결정될 수 있으며, 주요 목적은 메모리 점유 및 조합 논리연산 복잡도(complexity) 사이의 최상의 상쇄(trade off)에 이르는 것이다.Of course, a lower or higher number of MSBs can be determined by the circuit 20a, the main purpose of which is to reach the best trade off between memory occupancy and combinatorial logic complexity.

인터리버에 포함된 연이은 모듈에 의해 필요로 하는 계산 노력을 줄이기 위해, 다른 정보가 메모리(20)의 메모리 위치에 저장될 수 있다.To reduce the computational effort required by subsequent modules included in the interleaver, other information may be stored in a memory location of memory 20.

예를 들어, C가 p+1이고, K가 R*C일 때 "1"로 설정되는 이진수 플래그(flag)가 어떠한 가외의 복잡도 없이 출력 인터리빙 어드레스를 발생하는데 사용될 수 있다. 참고로, 이러한 이진수 플래그는 본래 EP-A-1 195 910에서 타입 D로 지정된 비트에 해당한다.For example, a binary flag set to "1" when C is p + 1 and K is R * C can be used to generate the output interleaving address without any extra complexity. For reference, this binary flag originally corresponds to the bit designated as Type D in EP-A-1 195 910.

이러한 플래그를 메모리(22)에 있는 레코드에 추가함으로써, 다른 경우 동일한 레코드가 상기 플래그에 대해 다른 값을 가질 수 있다는 점에서, 이러한 레코드의 수가 일반적으로 증가하게 된다.By adding such a flag to a record in memory 22, the number of such records is generally increased, in that the same record may have a different value for the flag in other cases.

그러나, 본 출원인에 의해 수행된 실험은, 이 경우에서도, 메모리(22)에서 레코드의 개수가 200개를 약간 초과하며, 일반적으로는 (K에 대한 5075개의 다른 값에 비하여) 219개인 것으로 나타난다.However, experiments conducted by the Applicant show that, in this case too, the number of records in the memory 22 slightly exceeds 200, and generally 219 (relative to 5075 other values for K).

모듈(10a)에 의해 발생된 파라미터의 세트(이들은 실제로 메모리(22)에서 각각의 레코드로서 저장됨)로부터 시작하면, 2종류의 치환패턴이 계산되어야만 한다.Starting from the set of parameters generated by module 10a (these are actually stored as individual records in memory 22), two kinds of substitution patterns must be calculated.

벡터 s라고 하는 첫번째 패턴은 행내 치환패턴이다. 3GPP TS 25.212 V3.5.0.규약에 정의된 표준 절차에 따르면, 이 벡터는 더 이른 처리단계(즉, 본 명세서에 도시된 실시예에서, 제 1 모듈(10a))에 의해 제공된 값 V를 초기 시드(initial seed)로서 사용하는 의사랜덤 시퀀스(pseudo random sequence)로서 발생된다.The first pattern, called vector s, is an in-row substitution pattern. According to the standard procedure defined in the 3GPP TS 25.212 V3.5.0. Protocol, this vector initially seeded the value V provided by the earlier processing step (ie, the first module 10a in the embodiment shown herein). Generated as a pseudo random sequence used as an initial seed.

본 명세서에 도시된 장치에서, 의사랜덤 시퀀스(a*b mod c)가 어떠한 곱셈 또는 나눗셈을 포함하지 않는 선형 알고리즘을 사용함으로써 모듈 10b에서 발생된다. 이러한 알고리즘은 오레곤 주립대학교(Oregon State University) 전기 및 컴퓨터 공학부의 아드난 구터브(Adnan Gutub)의 CE 575 프로젝트 리포트, 2000년 겨울, 논문 "A Modulo Multiplication Hardware Design"에 의해 입증된 바와 같은 암호문 분야에 공지되어 있다. In the apparatus shown here, pseudorandom sequence a * b mod c is generated in module 10b by using a linear algorithm that does not include any multiplication or division. These algorithms are in the field of cryptography as evidenced by the Adnan Gutub's CE 575 project report, Oregon State University's Department of Electrical and Computer Engineering, Winter 2000, article "A Modulo Multiplication Hardware Design." Known in

더욱이, 각 행에 대한 다른 치환을 갖기 위해 3GPP TS 25.212 V3.5.0. 규약에 정의된 표준 절차에서, s 벡터는 의사랜덤 시퀀스에 의해 어드레스되고 시퀀스의 시드는 각 행에 대해 달라진다.Moreover, 3GPP TS 25.212 V3.5.0 to have different substitutions for each row. In the standard procedure defined in the protocol, the s vector is addressed by a pseudorandom sequence and the seed of the sequence is different for each row.

특히, 규약에서 설명된 알고리즘은 소수의 또 다른 시퀀스(q 시퀀스)에서 시작하는 시드의 시퀀스(r 시퀀스)의 발생을 포함한다.In particular, the algorithm described in the protocol involves the generation of a sequence of seeds (r sequence) starting from a few other sequences (q sequences).

이에 반해서, 본 명세서에 도시된 장치에서, q 시퀀스는 r 시퀀스의 계산 없이 바로 사용된다. 단순히 행내 및 행간 치환의 순서를 교환하는 것으로 이를 할 수 있다.In contrast, in the apparatus shown here, the q sequence is used directly without calculation of the r sequence. You can do this by simply swapping the order of intra-line and interline substitution.

이 최적화는 3GPP TS 25.212 V3.5.0. 규약의 4.2.3.2.3.2-(4) 절에 설명된 역치환없이 동일한 결과를 달성하게 한다.This optimization is done in 3GPP TS 25.212 V3.5.0. The same result is achieved without the reverse substitution described in Section 4.2.3.2.3.2- (4) of the Code.

직접적인 참조를 위해, 이는 For direct reference, this

rT(i) = qi, i = 0, 1, …, R-1,r T (i) = q i , i = 0, 1,... , R-1,

이도록 시퀀스<ri>i∈{0, 1, …, R-1}를 만들기 위해 시퀀스 <qi>i∈{0, 1, …, R-1}가 치환되는 것이 필요한 연산이며, 여기서, <T(i)>i∈{0, 1, …, R-1}는 입력 비트 K의 개수 함수로서 3GPP TS 25.212 V3.5.0.의 표 3에 도시된 4종류의 패턴 중 하나로 정의된 행간 치환 패턴이다.So that the sequence <r i > i∈ {0, 1,... , R-1} to produce the sequence <q i > i∈ {0, 1,... , R-1} is required to be substituted, where <T (i)> i∈ {0, 1,... , R-1} is a line substitution pattern defined as one of four types of patterns shown in Table 3 of 3GPP TS 25.212 V3.5.0. As a function of the number of input bits K.

이러한 접근은 T값이 저장되는 메모리(미도시)로부터 불필요한 읽기 절차를 피하도록 한다.This approach avoids unnecessary reading procedures from memory (not shown) where the T values are stored.

시퀀스 q는 3GPP TS 25.212 V3.5.0. 규약의 4.2.3.2.3.2-(3) 절에 설명된 소수 테이블 및 최대공약수 연산의 관리를 위해 작은 룩업 테이블을 읽음으로써 발생될 수 있다.The sequence q is 3GPP TS 25.212 V3.5.0. Can be generated by reading a small lookup table for the management of the decimal table and the greatest common divisor operation described in section 4.2.3.2.3.2- (3) of the protocol.

또한, 직접적인 참조를 위해, 당해 연산은 시퀀스 <qi>i∈{0, 1, …, R-1}에서 제 1 소수이도록 q0=1을 할당하고, 각각의 i=1,2,…, R-1에 대해 g.c.d(qi,p-1)=1이고, qi>6 이며 qi>q(i-1)이도록 시퀀스 <qi>i∈{0, 1, …, R-1}에서 소수 qi가 적어도 소수이게 결정한다. 여기서, g.c.d는 최대공약수이다.Also, for direct reference, the operation is performed by the sequence <q i > i∈ {0, 1,... , R-1} assigns q 0 = 1 to be the first prime number, and each i = 1,2,... , The sequence <q i > i∈ {0, 1,... So that gcd (q i , p-1) = 1, q i > 6 and q i > q (i-1) for R-1 . , R-1} determines that prime q i is at least prime. Where gcd is the greatest common divisor.

특히, 도 4의 블록도에서, 참조번호 30은 블록(10b)로부터 도출된 파라미터로부터 시작하여, 벡터 s 및 q를 만드는 블록을 나타낸다. 이들 벡터는 각각의 메모리 블록(31 및 32)에 저장된다.In particular, in the block diagram of FIG. 4, reference numeral 30 denotes a block that starts with the parameters derived from block 10b, creating vectors s and q. These vectors are stored in respective memory blocks 31 and 32.

마지막으로, 참조번호 10c는 하기의 관계를 실행하는 블록을 나타낸다:Finally, reference numeral 10c denotes a block that executes the following relationship:

Xr = T(i)X r = T (i)

Uc = S(j*q(i)mod(p-1))U c = S (j * q (i) mod (p-1))

Xc = f(Uc)X c = f (U c )

Address_out = C*Xr + Xc Address_out = C * X r + X c

여기서, s, q 및 p는 이미 앞서 식별된 엔티티(entities)이며, Xr 및 Xc는 치환 연산전에 매트릭스의 행 및 열 인덱스이고, i 및 j는 치환된 매트릭스 인덱스이며, Uc는 규약에서 <Ui(j)>j∈{0, 1, …, C-1}로 정의된 행내 치환 파라미터이고, f는 3GPP TS 25.212 기술 규약의 4.2.3.2.3.2 - 5 절에 기술된 바와 같은 알고리즘 단계들을 실행하는 Uc의 함수이다.Where s, q and p are already identified entities, X r and X c are the row and column indices of the matrix before the substitution operation, i and j are the substituted matrix indices, and U c is <U i (j)> j ∈ {0, 1,... , C-1} , the in-row substitution parameter, and f is a function of U c that executes the algorithm steps as described in section 4.2.3.2.3.2-5 of the 3GPP TS 25.212 Technical Specification.

블록(10c)의 출력은 터보 코덱(14)(도 1 참조)에 의해 사용되는 인터리빙/디인터리빙 어드레스에 의해 표현된다.The output of block 10c is represented by the interleaving / deinterleaving address used by turbo codec 14 (see FIG. 1).

K로부터 직접 R, C, p, v, 플래그(타입 D)와 같은 인터리빙 파라미터를 얻기 위해 본 명세서에 설명된 기술은 이미 해당 기술분야에 공지된 행간 및 행내 치환을 달성하기 위한 다른 배열과 결부하여 사용되는데 적합한 것으로 인식된다.The techniques described herein to obtain interleaving parameters such as R, C, p, v, flags (type D) directly from K, in conjunction with other arrangements for achieving interline and intraline substitutions already known in the art. It is recognized that it is suitable for use.

물론, 본 발 명의 기본 원리를 해치지 않고도, 세부내용 및 실시예들이, 하기 특허청구범위에 정의된 바와 같이 본 발명의 범위로부터 벗어남이 없이, 단지 예로서만 기술되었던 실시예에 대해 변경될 수 있다.Of course, without departing from the basic principles of the invention, the details and embodiments may be changed to the embodiments described by way of example only, without departing from the scope of the invention as defined in the claims below. .

본 발명의 상세한 설명에 포함됨.Included in the Detailed Description of the Invention.

Claims (24)

항목의 소정 개수(K)를 포함하는 인터리빙/디인터리빙 시퀀스(x1,x2,x3,…,xK)용 어드레스 발생장치로서,An address generator for an interleaving / deinterleaving sequence (x 1 , x 2 , x 3 , ..., x K ) comprising a predetermined number K of items, 복수의 레코드(records)를 저장하는 적어도 하나의 메모리 장치(22)를 구비하고, 각 레코드는 상기 항목의 소정 개수(K) 중 적어도 하나의 값에 상응하며, 상기 적어도 하나의 값에 의해 발생된 각각의 인터리빙/디인터리빙 파라미터(R, C, p, v) 세트를 나타내는 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생장치.At least one memory device (22) for storing a plurality of records, each record corresponding to at least one of a predetermined number (K) of said items, generated by said at least one value An address generator for an interleaving / deinterleaving sequence, characterized by each set of interleaving / deinterleaving parameters (R, C, p, v). 제 1 항에 있어서,The method of claim 1, 상기 항목의 소정 개수(K)에 대한 각각의 값은 상기 어드레스 발생을 위한 치환된 출력 매트릭스를 만들기 위해 상기 시퀀스를 배열하고 상기 매트릭스의 행내 (intra-row)및 행간(inter-row) 치환(permutation)에 영향을 끼치는 매트릭스(R×C)를 구성하기 위한 해당하는 파라미터 세트(R, C, p, v)를 식별하고, 각각의 상기 파라미터 세트(R, C, p, v)는 상기 항목의 소정 개수(K)의 모든 가능한 값에 대해 상기 적어도 하나의 메모리 장치(22)에서 레코드로서 사용될 수 있는 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생장치.Each value for the predetermined number of items (K) arranges the sequence to produce a substituted output matrix for the address generation and intra-row and inter-row permutation of the matrix. Identify corresponding parameter sets (R, C, p, v) for constructing a matrix (R × C) affecting Address generator for an interleaving / deinterleaving sequence, characterized in that it can be used as a record in the at least one memory device (22) for all possible values of a predetermined number (K). 제 1 항 또는 제 2 항에 있어서,The method according to claim 1 or 2, 상기 항목의 소정 개수(K)의 값은 소정 값 범위내이고, 상기 적어도 하나의 메모리 장치(22)는 상기 소정 값 범위보다 실질적으로 더 작게 저장된 상기 레코드의 수를 갖는 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생장치.The value of the predetermined number K of the items is within a predetermined value range, and the at least one memory device 22 has the number of records stored substantially smaller than the predetermined value range. An address generator for an interleaving sequence. 제 3 항에 있어서,The method of claim 3, wherein 상기 적어도 하나의 메모리 장치(22)에서 각각의 상기 레코드는 각각의 포인터에 의해 식별되고, 상기 적어도 하나의 메모리 장치(22)는 상기 소정 범위에 있는 상기 항목의 소정 개수(K)의 각 값에 대해 상기 적어도 하나의 메모리 장치(22)에서 각각의 레코드를 가리키는 해당 포인터(pointer)를 발생하도록 구성되는 포인터 검색회로(20)와 결합되는 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생장치.Each said record in said at least one memory device 22 is identified by a respective pointer, and said at least one memory device 22 is assigned to each value of a predetermined number K of said items in said predetermined range. And a pointer retrieval circuit (20) configured to generate a corresponding pointer to each record in said at least one memory device (22) for the interleaving / deinterleaving sequence. 제 4 항에 있어서,The method of claim 4, wherein 상기 포인터 검색회로(20)는The pointer search circuit 20 상기 포인터의 최상위 비트(most significant bits, MSB) 세트로부터 도출하기 위해 상기 항목의 소정 개수(K)를 감지하는 회로(20a); 및Circuitry (20a) for sensing a predetermined number (K) of items for deriving from a set of most significant bits (MSB) of the pointer; And 그 내에 저장된 상기 포인터의 잔여, 최하위 비트(least significant bits, LSB)를 갖는 각각의 메모리 장치(20b)를 구비하는 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생장치.And a respective memory device (20b) having residual significant bits (LSB) of said pointer stored therein. 제 5 항에 있어서,The method of claim 5, 상기 회로(20a)는The circuit 20a 상기 항목의 소정 개수(K)를 주어진 다수의 임계값과 비교하기 위한 복수의 비교기(201,202,203); 및A plurality of comparators (201, 202, 203) for comparing a predetermined number of said items with a given plurality of thresholds; And 상기 비교기(201,202,203)에서 실행된 비교의 결과를 조합하고 이로부터 상기 포인터의 최상위 비트 세트의 도출을 위한 논리연산장치(204)를 구비하는 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생장치.And a logic operation unit (204) for combining the results of the comparisons carried out in said comparators (201, 202, 203) and for deriving the most significant bit set of said pointer therefrom. 제 2 항에 있어서,The method of claim 2, 상기 적어도 하나의 메모리 장치(22)는, 각각의 상기 레코드에 대해, 제 1(0) 및 제 2(1) 논리값 중 하나를 취하는 적어도 하나의 플래그(flag) 신호를 포함하고, 상기 플래그는 상기 해당 레코드에 대한 상기 항목의 소정 개수(K)가 상기 매트릭스에서 행(R) 수와 열(C) 수의 곱과 같고, 상기 매트릭스에서 열(C)의 개수가 상기 행내 치환 더하기 1에 대해 사용된 파리미터(P)의 값과 같을때 상기 제 2 논리값(1)으로 설정되는 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생장치.The at least one memory device 22 includes, for each said record, at least one flag signal which takes one of a first (0) and a second (1) logical value, said flag being The predetermined number (K) of the items for the corresponding record is equal to the product of the number of rows (R) and the number of columns (C) in the matrix, and the number of columns (C) in the matrix is equal to the in-row substitution plus one. And the second logic value (1) when equal to the value of the used parameter (P). 제 1 항 내지 제 7 항 중 어느 한 항에 있어서,The method according to any one of claims 1 to 7, 상기 행내 치환에 사용하기 위한 치환 패턴을 만들기 위해 타입(a*b mode c)의 의사랜덤 시퀀스를 발생하는 곱셈기 및 분할기가 제거된 산술회로를 구비하는 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생장치.Generating an arithmetic circuit with a multiplier and a divider for generating a pseudorandom sequence of type a * b mode c to form a substitution pattern for use in said in-row substitution. Device. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,The method according to any one of claims 1 to 8, 상기 행내 및 상기 행간 치환을 수행하는 제 1 및 제 2 치환 모듈을 구비하고, 행간 치환을 수행하는 상기 모듈은 행내 치환을 수행하는 상기 모듈의 상류(upstream)에 배열되는 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생장치.An interleaving / d, comprising first and second substitution modules for performing said in-line and said interline substitution, wherein said module performing inter-line substitution is arranged upstream of said module performing in-line substitution. An address generator for an interleaving sequence. 제 9 항에 있어서,The method of claim 9, 상기 행내 치환을 수행하는 시퀀스(q)를 만드는 행내 모듈을 구비하고, 상기 행내 모듈은 상기 시퀀스(q)에서 제 1 소수(prime number)이도록 q0=1을 할당하며, 각각의 i=1,2,…,R-1에 대해 최대 공약수(qi,p-1)=1이고, qi>6이며, qi>q(i-1)이도록 상기 시퀀스에서 상기 제 1 소수 qi가 최소 소수가 되게 결정하도록 구성되는 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생장치.An in-row module that creates a sequence q that performs the in-row substitution, wherein the in-row module assigns q 0 = 1 to be a first prime number in the sequence q, each i = 1, 2,… The first prime number q i in the sequence such that the greatest common divisor (q i , p-1) = 1, q i > 6 and q i > q (i-1) for R-1 And an address generator for an interleaving / deinterleaving sequence. 제 10 항에 있어서,The method of claim 10, 상기 행내 모듈은The in-row module 적어도 하나의 소수를 읽기 위한 소수 테이블; 및A decimal table for reading at least one prime number; And 최대 공약수 연산을 다루는 룩업 테이블(look up table)을 구비하는 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생장치.An address generator for an interleaving / deinterleaving sequence, comprising a look up table that handles the greatest common divisor operation. 항목의 소정 개수(K)를 포함하는 인터리빙/디인터리빙 시퀀스(x1,x2,x3,…,xK)용 어드레스 발생방법으로서,An address generation method for an interleaving / deinterleaving sequence (x 1 , x 2 , x 3 , ..., x K ) including a predetermined number K of items, 상기 항목의 소정 개수(K) 중 적어도 하나의 값을 기초로 하여, 각각의 인터리빙/디인터리빙 파라미터(R, C, p, v) 세트를 나타내는 레코드를 발생하는 단계; 및Generating a record representing each set of interleaving / deinterleaving parameters (R, C, p, v) based on a value of at least one of the predetermined number of items (K); And 상기 인터리빙/디인터리빙 파라미터(R, C, p, v) 세트를 적어도 하나의 메모리 장치에 저장하는 단계(22)를 포함하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생방법.Storing (22) the set of interleaving / deinterleaving parameters (R, C, p, v) in at least one memory device. 제 12 항에 있어서,The method of claim 12, 상기 항목의 소정 개수(K)에 대한 각각의 값은 상기 어드레스 발생을 위한 치환된 출력 매트릭스를 만들기 위해 상기 시퀀스를 배열하고 상기 매트릭스의 행내 및 행간 치환에 영향을 끼치는 매트릭스(R×C)를 구성하기 위한 해당하는 파라미터 세트(R, C, p, v)를 식별하고, 각각의 상기 파라미터 세트(R, C, p, v)가 상기 항목의 소정 개수(K)의 모든 가능한 값에 대해 상기 적어도 하나의 메모리 장치(22)에서 레코드로서 사용될 수 있게 하는 단계를 포함하는 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생방법.Each value for the predetermined number of items (K) constitutes a matrix (R × C) that arranges the sequence to produce a substituted output matrix for the address generation and affects in-row and inter-row substitution of the matrix. Identify corresponding parameter sets (R, C, p, v) for each of said parameter sets (R, C, p, v) for said at least for all possible values of said predetermined number (K) of said item; A method of generating an address for an interleaving / deinterleaving sequence, comprising the step of enabling it to be used as a record in one memory device (22). 제 12 항 또는 제 13 항에 있어서,The method according to claim 12 or 13, 상기 항목의 소정 개수(K)의 값은 주어진 값 범위에 포함되고, 상기 적어도 하나의 메모리 장치(22)에 실질적으로 상기 주어진 값 범위보다 더 작게 상기 레코드의 수를 저장하는 단계를 포함하는 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생방법.A value of the predetermined number K of the items is included in a given value range, and storing the number of records in the at least one memory device 22 substantially smaller than the given value range. An address generation method for an interleaving / deinterleaving sequence. 제 14 항에 있어서,The method of claim 14, 각각의 포인터에 의해 상기 적어도 하나의 메모리 장치(22)에서 각각의 상기레코드를 식별하고, 상기 적어도 하나의 메모리 장치(22)에서 각각의 레코드를 가리키는 해당 포인터(pointer)를 상기 소정 범위에 있는 상기 항목의 소정 개수(K)의 각각의 값에 대해 발생하는 단계를 포함하는 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생방법.Identifying each said record in said at least one memory device 22 by a respective pointer, and corresponding pointers pointing to each record in said at least one memory device 22 in said predetermined range. Generating for each value of a predetermined number of items (K). 제 15 항에 있어서,The method of claim 15, 상기 항목의 소정 개수(K)로부터 상기 포인터의 최상위 비트 세트를 도출하고,Derive the most significant bit set of the pointer from a predetermined number K of the items, 각각의 메모리 장치(21b)에 상기 포인터의 잔여, 최하위 비트를 저장함으로써 상기 포인터를 검색하는 단계를 포함하는 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생방법.Retrieving the pointer by storing the remaining, least significant bits of the pointer in each memory device (21b). 제 16 항에 있어서,The method of claim 16, 상기 항목의 소정 개수(K)를 소정의 다수의 임계값과 비교하는 단계(201,202,203); 및Comparing (201), (202), a predetermined number (K) of said items with a predetermined number of thresholds; And 상기 비교기(201,202,203)의 결과를 조합하여 이로부터 상기 포인터의 상기 최상위 비트 세트로부터 도출하는 단계(204)를 포함하는 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생방법.Combining (204) the results of the comparators (201, 202, 203) and deriving therefrom from the most significant bit set of the pointers (204). 제 13 항에 있어서,The method of claim 13, 상기 각각의 레코드에 대해, 제 1(0) 및 제 2(1) 논리값 중 하나를 취하는 적어도 하나의 플래그 신호를 저장하는 단계를 포함하고, 상기 플래그는 상기 해당 레코드에 대한 상기 항목의 소정 개수(K)가 상기 매트릭스에서 행(R) 수와 열(C) 수의 곱과 같고, 상기 매트릭스에서 컬럼(C)의 개수가 상기 행내 치환 더하기 1에 대해 사용된 파리미터(P)의 값과 같을 때 상기 제 2 논리값(1)으로 설정되 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생방법.For each record, storing at least one flag signal taking one of a first (0) and a second (1) logical value, wherein the flag is a predetermined number of the items for the corresponding record. (K) is equal to the product of the number of rows (R) and the number of columns (C) in the matrix, and the number of columns (C) in the matrix is equal to the value of the parameter (P) used for the in-row substitution plus one. When the second logical value (1) is set to an interleaving / deinterleaving sequence. 제 12 항 내지 제 18 항 중 어느 한 항에 있어서,The method according to any one of claims 12 to 18, 상기 행내 치환에 사용하기 위한 치환 패턴을 만들기 위해 타입(a*b modec)의 의사랜덤 시퀀스를 만드는 단계를 포함하고, 상기 단계는 곱셈기 및 분할기가 없는 선형 알고리즘으로 수행되는 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생방법.Interleaving / during a pseudorandom sequence of type a * b modec to produce a substitution pattern for use in the in-row substitution, wherein the step is performed with a linear algorithm without multipliers and dividers. Method of generating address for interleaving sequence. 제 12 항 내지 제 19 항 중 어느 한 항에 있어서,The method according to any one of claims 12 to 19, 상기 행간 치환은 상기 행내 치환전에 수행되는 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생방법.And said interline substitution is performed before said inline substitution. 제 20 항에 있어서,The method of claim 20, 상기 행내 치환을 수행하기 위한 시퀀스(q)를 만드는 단계를 포함하고, 상기 행내 모듈은 상기 시퀀스(q)에서 제 1 소수이도록 q0=1을 할당하며, 각각의 i=1,2,…,R-1에 대해 최대 공약수(qi,p-1)=1이고, qi>6이며, qi>q(i-1)이도록 상기 시퀀스에서 상기 제 1 소수 qi가 최소 소수가 되게 결정하도록 구성되는 것을 특징으로 하는 인터리빙/디인터리빙 시퀀스용 어드레스 발생방법.Creating a sequence q for performing the in-row substitution, wherein the in-row module assigns q 0 = 1 to be the first prime number in the sequence q, each i = 1, 2,... The first prime number q i in the sequence such that the greatest common divisor (q i , p-1) = 1, q i > 6 and q i > q (i-1) for R-1 And an address generation method for an interleaving / deinterleaving sequence. 인터리버 모듈과 디인터리버 모듈 중 적어도 하나를 구비하고, 상기 적어도 하나의 모듈은 제 1 항 내지 제 11 항 중 어느 한 항에 따른 어드레스를 발생하는 배열을 포함하는 터보 인코더.12. A turbo encoder comprising at least one of an interleaver module and a deinterleaver module, said at least one module comprising an arrangement for generating an address according to any one of claims 1-11. 인터리버 모듈과 디인터리버 모듈 중 적어도 하나를 구비하고, 상기 적어도 하나의 모듈은 제 1 항 내지 제 11 항 중 어느 한 항에 따른 어드레스를 발생하는 배열을 포함하는 터보 디코더.12. A turbo decoder comprising at least one of an interleaver module and a deinterleaver module, said at least one module comprising an arrangement for generating an address according to any one of claims 1-11. 디지털 컴퓨터의 메모리에 직접 로드될 수 있고, 컴퓨터 상에 실행될 때 제 1 항 내지 제 21 항 중 어느 한 항에 따른 방법을 수행하는 소프트웨어 코드 부분을 포함하는 컴퓨터 프로그램 제품.22. A computer program product comprising a portion of software code that can be loaded directly into a memory of a digital computer and when executed on a computer performs a method according to any one of claims 1-21.
KR1020057011064A 2005-06-16 2002-12-16 Addresses generation for interleavers in turbo encoders and decoders KR20050088182A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020057011064A KR20050088182A (en) 2005-06-16 2002-12-16 Addresses generation for interleavers in turbo encoders and decoders

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020057011064A KR20050088182A (en) 2005-06-16 2002-12-16 Addresses generation for interleavers in turbo encoders and decoders

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020107009147A Division KR101121185B1 (en) 2002-12-16 2002-12-16 Addresses Generation For Interleavers In Turbo Encoders And Decoders

Publications (1)

Publication Number Publication Date
KR20050088182A true KR20050088182A (en) 2005-09-02

Family

ID=37271119

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057011064A KR20050088182A (en) 2005-06-16 2002-12-16 Addresses generation for interleavers in turbo encoders and decoders

Country Status (1)

Country Link
KR (1) KR20050088182A (en)

Similar Documents

Publication Publication Date Title
KR101121185B1 (en) Addresses Generation For Interleavers In Turbo Encoders And Decoders
JP4383672B2 (en) Turbo code interleaver for 3rd generation code division multiple access
US7210076B2 (en) Interleaving order generator, interleaver, turbo encoder, and turbo decoder
US7155642B2 (en) Interleaver for a turbo encoder in an UMTS and method for performing interleaving
US7139862B2 (en) Interleaving method and apparatus with parallel access in linear and interleaved order
KR100480286B1 (en) Address generating apparatus and method for turbo interleaving
EP1575175B1 (en) Address generator for an interleaver memory and a deinterleaver memory
JP4064894B2 (en) Method and apparatus for generating interleaved addresses
JP3515036B2 (en) Interleaving method, interleaving device, turbo coding method, and turbo coding device
US7398446B2 (en) Low power operation of an address interleaver
US7051261B1 (en) Turbo encoder with reduced processing delay
KR20050088182A (en) Addresses generation for interleavers in turbo encoders and decoders
KR20010088148A (en) Block interleaving method, and apparatus for the same
KR100943612B1 (en) Turbo interleaving apparatus and method in mobile communication system having turbo code
US7586993B2 (en) Interleaver memory selectably receiving PN or counter chain read address
KR100800840B1 (en) Turbo interleaver and turbo interleaving method in cdma mobile communication system having turbo code
JPH08335887A (en) Interleave address generation circuit for plural interleave matrixes
JP2000286722A (en) Interleaver
KR20030069431A (en) Turbo Encoder of Modem ASIC in Communication System and Method thereof
KR19980057000A (en) Variable Conversion Length Rotating Interleaver
JP2001196940A (en) Data sequence revision system
KR20020082699A (en) A modulo arithmetic unit and Processing Method to implement Reed-Solomon algorithm on Programmable Processors

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
A107 Divisional application of patent
WITB Written withdrawal of application
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20100326

Effective date: 20100914