KR20070031769A - Fast fourier transformer device using single butterfly and method therefor - Google Patents
Fast fourier transformer device using single butterfly and method therefor Download PDFInfo
- Publication number
- KR20070031769A KR20070031769A KR1020050086563A KR20050086563A KR20070031769A KR 20070031769 A KR20070031769 A KR 20070031769A KR 1020050086563 A KR1020050086563 A KR 1020050086563A KR 20050086563 A KR20050086563 A KR 20050086563A KR 20070031769 A KR20070031769 A KR 20070031769A
- Authority
- KR
- South Korea
- Prior art keywords
- butterfly
- data
- memory
- subunit
- memories
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L27/00—Modulated-carrier systems
- H04L27/26—Systems using multi-frequency codes
- H04L27/2601—Multicarrier modulation systems
- H04L27/2647—Arrangements specific to the receiver only
- H04L27/2649—Demodulators
- H04L27/265—Fourier transform demodulators, e.g. fast Fourier transform [FFT] or discrete Fourier transform [DFT] demodulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/141—Discrete Fourier transforms
- G06F17/142—Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Discrete Mathematics (AREA)
- Mathematical Analysis (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Complex Calculations (AREA)
Abstract
본 발명은 고속 퓨리에 변환 장치 및 그 방법에 관한 것으로, 특히 단일 버터플라이를 이용한 고속 퓨리에 변환 장치 및 그 방법에 관한 것이다.The present invention relates to a fast Fourier transform device and a method thereof, and more particularly to a fast Fourier transform device and a method using a single butterfly.
본 발명에서는 단일 버터플라이 구조를 이용하여 FFT를 구현할 때 메모리를 적게 사용하고, FFT 블록을 처리하는 시간(processing time)을 줄이며, r개의 데이터를 한번에 읽어 들여 처리할 수 있는 단일 버터플라이 구조를 통해 메모리를 효율적으로 운용할 수 있는 장치 및 방법을 제공한다.In the present invention, a single butterfly structure uses less memory when implementing an FFT, reduces the processing time of the FFT block, and uses a single butterfly structure that can read and process r data at a time. An apparatus and method for efficiently operating a memory are provided.
이에 따른 본 발명의 장치는, Radix-2n(여기서 n은 자연수)의 구조를 가지는 단일 버터플라이를 이용하여 고속 퓨리에 연산을 수행하기 위한 장치로서, 서로 다른 4개의 소단위 메모리로 구성된 메모리부와, 상기 버터플라이 연산이 이루어질 때마다 카운트 값을 증가시키는 카운터와, 상기 카운터 값에 의거하여 상기 각 소단위 메모리들에서 중복되지 않고 하나씩 독취 및 기록할 수 있는 데이터 주소를 발생하는 데이터 주소 발생기와, 상기 주소 발생기로부터 수신된 데이터 주소 정보에 의거하여 입력 데이터들을 저장하는 기록부와, 상기 주소 발생기로부터 수신된 데이터 주소 정보에 의거하여 상기 버터플라이로 입력할 데이터들을 상기 각 소단위 메모리로부터 하나씩 독취하여 출력하는 독취부를 포함한다.Accordingly, the apparatus of the present invention is a device for performing a fast Fourier operation using a single butterfly having a structure of Radix-2 n (where n is a natural number), comprising: a memory unit comprising four different subunit memories; A data address generator for generating a counter that increments a count value each time the butterfly operation is performed, a data address that can be read and written one by one without overlapping in each of the subunit memories based on the counter value, and the address A recording unit for storing input data based on the data address information received from the generator, and a reading unit for reading and outputting data to be input from the subunit memory one by one based on the data address information received from the address generator. It includes.
버터플라이, 단일 버터플라이, 고속 퓨리에 변환, FFT Butterfly, Single Butterfly, Fast Fourier Transform, FFT
Description
도 1은 본 발명이 적용되는 OFDM 수신기의 블록 구성도,1 is a block diagram of an OFDM receiver to which the present invention is applied;
도 2는 본 발명에 따른 OFDM 시스템의 수신기에서 수행되는 심볼의 동작 처리 흐름도,2 is a flowchart illustrating operation of a symbol performed in a receiver of an OFDM system according to the present invention;
도 3은 본 발명의 일 실시 예에 따른 FFT의 내부 블록 구성도,3 is an internal block diagram of an FFT according to an embodiment of the present invention;
도 4는 본 발명의 일 실시 예에 따라 N=128인 경우 4개로 이루어진 메모리에 대응되는 데이터의 주소를 표현한 도면,4 is a diagram representing addresses of data corresponding to four memories in the case of N = 128 according to an embodiment of the present invention;
도 5는 상기 도 4와 같은 메모리 주소를 구현하기 위한 FFT 입력 값들이 저장된 형상을 도시한 도면,FIG. 5 is a diagram illustrating a shape in which FFT input values for implementing a memory address as shown in FIG. 4 are stored;
도 6은 본 발명의 일 실시 예에 따라 입력 메모리의 주소를 변환하기 위한 회로도,6 is a circuit diagram for translating an address of an input memory according to an embodiment of the present disclosure;
도 7은 N=64(26)의 예에 따라 각 소단위 메모리로 입력될 데이터들이 도 5와 같이 저장된 상태의 도면,FIG. 7 is a diagram illustrating data stored in each sub-unit memory according to an example of N = 64 (2 6 ) as shown in FIG. 5;
도 8은 첫 번째 버터플라이 연산이 이루어진 이후 2번째 버터플라이 연산이 수행될 시 각 소단위 메모리들로부터 읽혀야 하는 데이터를 도시한 도면,FIG. 8 is a diagram illustrating data that should be read from each subunit memory when a second butterfly operation is performed after the first butterfly operation is performed.
도 9는 두 번째 버터플라이 연산이 이루어진 이후 3번째 버터플라이 연산이 수행될 시 각 소단위 메모리들로부터 읽혀야 하는 데이터를 도시한 도면,FIG. 9 is a diagram illustrating data to be read from each subunit memory when a third butterfly operation is performed after a second butterfly operation is performed. FIG.
도 10은 본 발명에 따라 N=64(26)의 예에서 각 단계의 버터플라이 연산 시에 소단위 메모리들로부터 하나씩의 데이터가 겹칩없이 읽힐 수 있도록 한 메모리 구성도.FIG. 10 is a memory configuration diagram in which, in the example of N = 64 (2 6 ), one data can be read from the sub-unit memories without overlapping in the butterfly operation of each step according to the present invention.
본 발명은 고속 퓨리에 변환 장치 및 그 방법에 관한 것으로, 특히 단일 버터플라이를 이용한 고속 퓨리에 변환 장치 및 그 방법에 관한 것이다.The present invention relates to a fast Fourier transform device and a method thereof, and more particularly to a fast Fourier transform device and a method using a single butterfly.
무선통신 시스템에서 직교 주파수 분할 다중(Orthogonal Frequency Division Multiplexing : 이하 "OFDM"이라 함) 방식은 고속 퓨리에 변환(Fast Fourier Transform) 방법이 알려지면서 급속도로 상용화가 이루어지고 있다. 상기와 같이 OFDM 방식의 시스템에서 송신기는 고속 역 퓨리에 변환기(Inverse Fast Fourier Transformer : 이하 "IFFT"라 함)를 이용하여 데이터를 송신하며, 수신기는 고속 퓨리에 변환기(Fast Fourier Transformer : 이하 "FFT"라 함)를 사용하여 데이터를 수신한다.Orthogonal Frequency Division Multiplexing (hereinafter referred to as " OFDM ") in wireless communication systems is rapidly commercialized as the Fast Fourier Transform method is known. As described above, in an OFDM system, a transmitter transmits data using a fast inverse fast Fourier transformer (hereinafter referred to as "IFFT"), and a receiver is referred to as a fast fourier transformer (hereinafter referred to as "FFT"). To receive the data.
이러한 고속 퓨리에 변환기를 구현하기 위한 방법으로 radix-r 알고리듬을 표현하는 버터플라이(butterfly) 구조를 이용하는 것이 일반적이다. 이러한 버터플라이 구조를 몇 번 사용하는지에 따라 다른 구조의 FFT 블록을 만들 수 있다. 일반적으로 OFDM 시스템에서 사용되는 N point FFT의 경우 최대 의 버터플라이 블록을 사용하여 구현이 가능하다. 여기서 는 x를 넘지 않는 최대 정수를 의미한다. N point FFT의 경우와 같이 최대 개의 버터플라이 블록을 모두 이용하는 구조를 파이프라인(pipeline) 구조라 한다. 반면에 하나의 버터플라이 블록을 이용하는 구조를 단일 버터플라이(single butterfly) 구조라고 한다.As a method for implementing such a fast Fourier transformer, it is common to use a butterfly structure representing a radix-r algorithm. Depending on how many times you use these butterfly structures, you can create an FFT block with a different structure. Typically for N point FFTs used in OFDM systems It can be implemented using the butterfly block. here Is the maximum integer not exceeding x. As in the case of N point FFT A structure that uses all four butterfly blocks is called a pipeline structure. On the other hand, a structure using a single butterfly block is called a single butterfly structure.
일반적으로 FFT를 하드웨어로 구현 할 경우에 복잡도를 고려하여 보통 단일 버터플라이 구조를 사용하고 있다. 그러므로 이하에서는 단일 버터 플라이 구조에 대하여 살펴보기로 한다.In general, when implementing FFT in hardware, considering the complexity, a single butterfly structure is usually used. Therefore, the following describes a single butterfly structure.
일반적으로 사용되는 단일 버터플라이 구조에서는 FFT를 구현하기 위해서 하나의 버터플라이 블록과 하나의 단일 포트 램(single-port SRAM)과 하나의 듀얼 포트 램(double-port SRAM)을 사용한다. 상기 단일 포트 램(Single-port SRAM)은 FFT의 앞단의 결과를 읽어서 저장하는 메모리이고, 듀얼 포트 램(double-port SRAM)은 버터플라이의 입력 값과 출력 값을 저장하는 메모리이다.A commonly used single butterfly architecture uses one butterfly block, one single-port SRAM and one double-port SRAM to implement the FFT. The single-port SRAM is a memory for reading and storing the result of the front end of the FFT, and the double-port SRAM is a memory for storing the input and output values of the butterfly.
이와 같이 입력 값과 출력 값을 저장하기 위해서 하나씩 또는 하나의 메모리를 사용하면서 FFT 연산을 수행하는데, 의 클럭이 필요하다. 즉, 하나의 버터플라이 블록의 결과를 얻기 위해서 N 클럭이 소요된다는 의미가 된 다. 이것은 입력이나 출력 값을 저장하기 위해서 하나의 메모리를 사용하고 있기 때문에 한 클럭에 하나의 데이터를 읽어 들여서 나온 결과이다.In this way, FFT operation is performed while using one or one memory to store input and output values. Clock is required. This means that it takes N clocks to get the result of one butterfly block. This is the result of reading one data per clock since one memory is used to store the input or output values.
한편, Radix-r 알고리듬을 이용한 버터플라이 블록은 한 클럭에 r개의 데이터를 처리할 수 있도록 설계되어 있다. 따라서 Radix-r 알고리듬 구조를 가장 효율적으로 활용할 수 있는 방법은 한 클럭에 r개의 데이터를 읽어 들여 동시에 처리하는 것이다. 하지만 현재 일반적으로 사용되고 있는 FFT 연산을 위한 장치에서는 연산용으로 하나의 메모리를 사용하고 있다. 따라서 FFT 연산을 위한 Radix-r 알고리듬을 적용하고 있지만, 실제로 한 클럭에 하나의 데이터를 읽어 들여서 처리하므로 버터플라이 블록을 효율적으로 활용하지 못하고 있는 문제점을 가지고 있다.On the other hand, the butterfly block using the Radix-r algorithm is designed to process r data in one clock. Therefore, the most efficient use of the Radix-r algorithm structure is to read r data at the same time and process them simultaneously. However, a device for FFT operation, which is generally used, uses one memory for calculation. Therefore, although the Radix-r algorithm is applied for FFT operation, it has a problem in that it does not utilize the butterfly block efficiently because it reads and processes one data at one clock.
따라서 본 발명의 목적은 단일 버터플라이 구조를 이용하여 FFT를 구현할 때 메모리를 적게 사용하기 위한 장치 및 방법을 제공한다.It is therefore an object of the present invention to provide an apparatus and method for using less memory when implementing an FFT using a single butterfly structure.
본 발명의 다른 목적은 단일 버터플라이 구조를 이용하여 FFT 블록을 처리하는 시간(processing time)을 줄일 수 있는 장치 및 방법을 제공한다.It is another object of the present invention to provide an apparatus and method that can reduce the processing time for processing an FFT block using a single butterfly structure.
본 발명의 또 다른 목적은 r개의 데이터를 한번에 읽어 들여 처리할 수 있는 단일 버터플라이 구조를 통해 메모리를 효율적으로 운용할 수 있는 장치 및 방법을 제공한다.Another object of the present invention is to provide an apparatus and method for efficiently operating a memory through a single butterfly structure capable of reading and processing r data at a time.
상기한 목적들을 달성하기 위한 본 발명의 장치는, Radix-2n(여기서 n은 자 연수)의 구조를 가지는 단일 버터플라이를 이용하여 고속 퓨리에 연산을 수행하기 위한 장치로서, 서로 다른 4개의 소단위 메모리로 구성된 메모리부와, 상기 버터플라이 연산이 이루어질 때마다 카운트 값을 증가시키는 카운터와, 상기 카운터 값에 의거하여 상기 각 소단위 메모리들에서 중복되지 않고 하나씩 독취 및 기록할 수 있는 데이터 주소를 발생하는 데이터 주소 발생기와, 상기 주소 발생기로부터 수신된 데이터 주소 정보에 의거하여 입력 데이터들을 저장하는 기록부와, 상기 주소 발생기로부터 수신된 데이터 주소 정보에 의거하여 상기 버터플라이로 입력할 데이터들을 상기 각 소단위 메모리로부터 하나씩 독취하여 출력하는 독취부를 포함한다.An apparatus of the present invention for achieving the above objects is a device for performing a fast Fourier operation using a single butterfly having a structure of Radix-2 n (where n is self-number), the four different subunit memory A memory unit including a memory unit, a counter for increasing a count value each time the butterfly operation is performed, and data for generating a data address that can be read and written one by one without being duplicated in each of the subunit memories based on the counter value. An address generator, a recorder for storing input data based on data address information received from the address generator, and data to be input to the butterfly based on the data address information received from the address generator, one from each of the subunit memories. It includes a reading unit for reading and outputting.
상기한 목적들을 달성하기 위한 본 발명의 방법은, Radix-2n(여기서 n은 자연수)의 구조를 가지는 단일 버터플라이와 서로 다른 4개의 소단위 메모리를 갖는 장치에서 이용하여 고속 퓨리에 연산을 수행하기 위한 방법으로서, 상기 버터플라이 연산이 이루어지는 횟수를 카운트하는 과정과, 상기 카운트된 값에 의거하여 상기 각 소단위 메모리들에서 중복되지 않고 하나씩 독취 및 기록할 수 있는 데이터 주소를 발생하는 과정과, 상기 발생된 데이터 주소 정보에 의거하여 입력 데이터들을 상기 메모리에 저장하는 과정과, 상기 소단위 메모리에 저장된 데이터들을 상기 데이터 주소 정보에 의거하여 각 소단위 메모리로부터 하나씩 독취하여 상기 버터플라이로 입력하는 과정과, 상기 버터플라이를 이용하여 버터플라이의 단계적 연산을 수행하여 출력하는 과정을 포함한다.A method of the present invention for achieving the above objects is for performing a fast Fourier operation using a single butterfly having a structure of Radix- 2n (where n is a natural number) and a device having four different subunit memories. A method comprising: counting a number of times a butterfly operation is performed, generating a data address that can be read and written one by one without overlapping in each of the subunit memories based on the counted value; Storing input data in the memory based on data address information, reading data stored in the subunit memory from each subunit memory based on the data address information, and inputting the data into the butterfly; Output by performing stepwise operation of butterfly It includes the process.
이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예에 대한 동작 원리를 상세히 설명한다. 하기에서 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.Hereinafter, with reference to the accompanying drawings will be described in detail the operating principle of the preferred embodiment of the present invention. In the following description of the present invention, detailed descriptions of well-known functions or configurations will be omitted if it is determined that the detailed description of the present invention may unnecessarily obscure the subject matter of the present invention. Terms to be described later are terms defined in consideration of functions in the present invention, and may be changed according to intentions or customs of users or operators. Therefore, the definition should be made based on the contents throughout the specification.
도 1은 본 발명이 적용되는 OFDM 수신기의 블록 구성도이다. 이하 도 1을 참조하여 OFDM 수신기에서 이루어지는 전반적인 동작에 대하여 살펴보기로 한다.1 is a block diagram of an OFDM receiver to which the present invention is applied. Hereinafter, the overall operation performed in the OFDM receiver will be described with reference to FIG. 1.
무선 대역으로 수신된 신호는 안테나(ANT)를 통해 수신하여 ADC 변환기(101)로 입력한다. 상기 ADC 변환기(101)는 입력된 아날로그 신호를 디지털 신호로 양자화한다. 이와 같이 양자화된 신호는 수신 필터(Rx Filter)(103)로 입력되어 양자화된 신호를 필터링한 후 직렬 신호를 병렬 신호로 변환한다. 상기 도 1에서는 직렬 신호를 병렬 신호로 변환하는 과정은 도시하지 않았다. 이와 같이 병렬 신호로 변환된 신호는 FFT 변환기(105)로 입력된다. 상기 FFT 변환기(105)는 시간 영역의 신호를 주파수 영역의 신호로 변환하는 복조를 수행한 후 출력한다. 이와 같이 주파수 영역의 신호로 변환할 때, 상기 FFT 변환기(105)가 N-point FFT 변환기라면 0부터 N-1번째까지의 OFDM 부반송파를 출력한다. 상기 FFT 변환기(105)에서 출력된 신호는 복호기(107)로 입력된다. 상기 복호기(107)는 입력된 신호를 복호함으로써 데 이터를 복원할 수 있다.The signal received in the radio band is received through the antenna ANT and input to the
그러면 상기한 장치에서 이루어지는 따른 동작을 도 2의 흐름도를 참조하여 다시 살펴보기로 한다.Next, the operation performed in the apparatus will be described again with reference to the flowchart of FIG. 2.
도 2는 본 발명에 따른 OFDM 시스템의 수신기에서 수행되는 심볼의 동작 처리 흐름도이다. 상기 도 2의 동작은 매 심볼 단위로 이루어지는 동작임에 유의해야 한다.2 is a flowchart illustrating operation of a symbol performed in a receiver of an OFDM system according to the present invention. It should be noted that the operation of FIG. 2 is performed every symbol unit.
OFDM 수신기는 200단계에서 안테나로부터 무선 신호를 수신한다. 그런 후 OFDM 수신기는 202단계로 진행하여 아날로그 신호를 디지털 신호로 변환한다. 상기 아날로그 신호를 디지털 신호로 변환하는 양자화 과정은 도 1의 ADC 변환기(101)에서 이루어지는 과정이다. 그리고 상기 OFDM 수신기는 204단계에서 서비스하는 대역의 신호를 필터링한다. 즉, OFDM 수신기에서 서비스 받고자 하는 대역의 신호만을 추출하는 것이다. 상기 필터링 과정은 전술한 도 1의 수신 필터(103)에서 이루어지는 동작이다. 이와 같이 필터링이 이루어진 이후에 OFDM 수신기는 206단계로 진행하여 필터링한 신호를 FFT 변환기의 입력 메모리에 저장한다. 이때 필터링된 직렬 신호가 병렬 신호로 변환되는 과정은 도 1 및 도 2에 도시하지 않았다.The OFDM receiver receives a radio signal from an antenna in
상기와 같이 필터링된 신호가 FFT 변환기의 입력 버퍼에 저장되는 것은 후술되는 도 3을 참조하여 더 상세히 설명하기로 한다. 이후 OFDM 수신기는 208단계로 진행하여 버터플라이 연산을 수행한다. 즉, FFT 변환기에서 시간 대역의 신호를 주파수 대역의 신호로 변환하는 동작을 수행하는 것이다. 이러한 동작은 OFDM 수신기가 수신하고자 하는 모든 서브 캐리어에 대하여 이루어져야 하므로 연산이 이루어 진 데이터는 210단계에서 연산용 메모리에 저장된다. 그리고 OFDM 수신기는 212단계에서 모든 서브 캐리어에 대하여 연산이 이루어졌는가를 검사한다. 즉, 버터플라이 연산이 마지막 단계인가를 검사하는 것이다.Storage of the filtered signal in the input buffer of the FFT converter will be described in more detail with reference to FIG. 3 to be described later. Thereafter, the OFDM receiver proceeds to step 208 to perform a butterfly operation. That is, the FFT converter converts a signal of a time band into a signal of a frequency band. Since this operation must be performed for all subcarriers that the OFDM receiver intends to receive, the data on which the operation is performed is stored in the operation memory in
상기 212단계의 검사결과 버터플라이 연산이 완료된 경우 완료된 데이터를 복호기로 입력한다. 그러면 OFDM 수신기는 214단계에서 입력된 데이터의 복호를 수행한다. 그러나 212단계의 검사결과 버터플라이 연산이 완료되지 않은 경우 OFDM 수신기는 208단계로 다시 진행하여 나머지 데이터들에 대하여 버터플라이 연산을 수행하게 된다.When the butterfly operation is completed as a result of the check in
그러면 다시 여기서 FFT 변환기(105)에서 버터플라이 연산에 의해 시간 영역의 신호를 주파수 영역의 신호로 바꾸는 과정에 대하여 살펴본다. 먼저 FFT 변환기(105)는 필터링된 신호를 FFT 입력 메모리에 저장한다. 그리고 상기 입력 메모리에 저장된 신호를 읽어 들이면서 버터플라이가 동작한다. 버터플라이의 연산 결과는 연산 메모리에 저장한다. 여기서 입력 메모리와 연산 메모리는 따로 사용하지 않고 동일한 것으로 사용할 수 있다. 즉, 하나의 메모리로 필터링된 신호를 저장하는 것과 연산을 수행한 후 다시 해당 메모리에 저장하는 용도로 사용할 수 있다. 이러한 과정을 계속 반복함으로써 버터플라이의 마지막 연산까지 완료되면 시간 영역의 신호가 주파수 영역의 신호로 변환된다.Then again, the process of converting the signal in the time domain into the signal in the frequency domain by the butterfly operation in the
도 3은 본 발명의 일 실시 예에 따른 FFT의 내부 블록 구성도이다. 이하 도 3을 참조하여 본 발명의 일 실시 예에 따른 FFT 내부 블록 구성 및 그 동작에 대하여 살펴보기로 한다.3 is an internal block diagram of an FFT according to an embodiment of the present invention. Hereinafter, an FFT internal block configuration and its operation according to an embodiment of the present invention will be described with reference to FIG. 3.
상기 도 3에 도시한 FFT 내부 블록 구성에서 버터플라이(320)는 radix-22/radix-2를 사용하는 FFT 구조로 예로써 도시하고 있다. 상기 도 3에서 radix-22을 사용하였기 때문에 메모리(310)는 4개로 구성되어 있다. 즉, 메모리(310)는 첫 번째 뱅크(Bank_0)(310a)와 두 번째 뱅크(Bank_1)(310b)와 세 번째 뱅크(Bank_2)(310c)와 네 번째 뱅크(Bank_3)(310c)로 구성된다. 상기 메모리(310)의 각 뱅크들은 각각 하나의 소단위 메모리들(310a, 310b, 310c, 310d)이며, 각 소단위 메모리들(310a, 310b, 310c, 310d)은 한번에 하나씩의 신호를 읽어내고 한번에 하나씩의 신호를 저장하는 작업을 할 수 있도록 주소가 구성되어 있다.In the FFT internal block configuration shown in FIG. 3, the
또한 기록부(Commutator_read)(308)는 각 소단위 메모리들(310a, 310b, 310c, 310d)에서 읽어 낸 신호를 radix-22 버터플라이 작업을 할 수 있게 정렬하는 역할을 수행하며, 독취부(Commutator_write)(312)는 radix-22 버터플라이 작업의 결과를 각 소단위 메모리들(310a, 310b, 310c, 310d)의 해당 위치로 다시 정렬하는 작업을 한다. 즉, 기록부(308)에서는 입력되는 데이터의 위치를 지정하고, 독취부(312)에서는 기록된 데이터를 정상적으로 읽어낼 수 있도록 하는 것이다. 또한 데이터 주소 발생기(Data address generator)(326)는 radix-22 버터플라이에서 연산을 위해 필요한 데이터의 위치를 알려준다. 그리고 공통 주소 발생기(Coefficient address generator)(328)는 버터플라이 연산 중에 곱해지는 비틀림 펙터(twiddle factor)를 알려주는 동작을 수행한다. 이때 연산 도중 곱해지는 비틀림 펙터는 공 통 메모리(Coefficient ROM)의 소정 테이블에 저장하고 있다가 공통 주소 발생기(328)가 알려주는 값에 따라 coefficient 값들을 읽어낸다.In addition, the
단일 버터플라이 구조를 이용하는 경우 FFT 연산을 하기 위해서 단계의 연산이 수행된다. 또한 하나의 단계를 계산하기 위해서 버터플라이를 N/r 만큼을 반복적으로 이용한다. 이때, 카운터(Counter)(324)는 버터플라이가 하나의 단계에서 몇 번 동작했는지를 카운트한다. 또한 상기 카운터(324)는 상기 카운트된 값을 공통 주소 발생기(328)와 데이터 주소 발생기(326)에 각각 알려준다. 이를 통해 각 주소 발생기들(326, 328)에서 각 반복횟수에 맞게 주소를 생성할 수 있다. 또한 상기 카운터(324)는 한 단계에서의 모든 버터플라이 연산이 끝나면 카운트 값을 0으로 리셋(reset)하고, 다음 단계의 연산을 위한 버터플라이 동작 횟수를 카운트한다.To perform FFT operation when using single butterfly structure The operation of the step is performed. In addition, the butterfly is repeatedly used by N / r to calculate one step. At this time, the
도 4는 본 발명의 일 실시 예에 따라 N=128인 경우 4개로 이루어진 메모리에 대응되는 데이터의 주소를 표현한 도면이다. 상기 도 4에서 참조부호 310a, 310b, 310c 및 310d는 상술한 도 3의 메모리(310)에 대응된다. 또한 상기한 바와 같이 주소를 가지도록 메모리를 구성하면, 각 소단위 메모리들(310a, 310b, 310c, 310d)로부터 한번에 각각 하나씩의 데이터를 읽어내고, 읽어낸 데이터들을 다시 그 위치에 저장할 수 있다.FIG. 4 is a diagram representing addresses of data corresponding to four memories when N = 128 according to an embodiment of the present invention. In FIG. 4,
상기 도 4와 같은 형식은 일 예로 N=2p인 경우에 동일한 규칙으로 적용할 수 있다. 여기서 p는 지수를 의미하므로 2의 p 승을 표현한 것이다. 상기 도 4의 메모 리 내에 표시된 숫자는 FFT로 입력이 들어오는 순서를 의미한다. 그리고 참조부호 401 내지 408에 대응되는 메모리 주소는 저장되는 위치를 나타내는 값이다. 그러므로 상기 도 4에서 메모리 내부에 위치한 숫자들은 FFT 처리기로 순차적으로 입력될 시 상기 소단위 메모리들(310a, 310b, 310c, 310d) 내에 어느 주소에 기록되는지를 설명하고 있는 것이다.4 may be applied to the same rule when N = 2 p as an example. Where p is the exponent and is the p power of 2. The number displayed in the memory of FIG. 4 indicates the order in which the input is input to the FFT. In addition, the memory addresses corresponding to the
상기 도 4와 같이 메모리를 구현하기 위한 규칙을 살펴보면 하기와 같이 설명할 수 있다. 이해의 편의를 위해 도 1의 상기 FFT 변환기(105)로 입력되는 데이터가 상기 도 5와 같이 저장된다고 가정한다. 즉, 입력될 데이터는 제1버퍼와 제2버퍼와 제3버퍼 및 제4버퍼에 순차적으로 입력되어 있다. 제1버퍼에 저장되는 데이터의 순서는 0번째 데이터부터 31번째 데이터까지 총 32개의 데이터가 입력되고, 제2버퍼에 저장되는 데이터는 32번째 데이터부터 63번째 데이터까지 총 32개의 데이터가 입력된다. 또한 제3버퍼에 저장되는 데이터는 64번째 데이터부터 95번째 데이터까지 총 32개의 데이터가 입력되고, 제4버퍼에 저장되는 데이터는 96번째 데이터부터 127번째 데이터까지 저장되어 있는 경우이다. Looking at the rules for implementing the memory as shown in FIG. 4 can be described as follows. For convenience of understanding, it is assumed that data input to the
상기 도 5와 같이 순차적으로 입력되어 있는 데이터가 상기 도 3의 각 소단위 버퍼들(310a, 310b, 310c, 310d)에 그대로 저장되는 경우 버터플라이에서 다단계 연산이 이루어지면, 상기 도 3에 도시한 바와 같이 4개의 소단위 메모리들(310a, 310b, 310c, 310d)로부터 각각 하나씩의 데이터를 읽거나 기록할 수 없다. 그러므로 상기 각 버퍼들에서 하나씩의 데이터가 항상 읽히고, 다시 읽은 데이터를 기록할 수 있도록 상기 도 4와 같이 데이터의 기록 위치를 변경한 것이다. 즉, 상 기 도 4에서 각 소단위 메모리들(310a, 310b, 310c, 310d)의 내부에 기록된 각 숫자들은 상기 도 5에서 순차적으로 입력된 데이터의 순서를 표시한 것이다.When data sequentially input as shown in FIG. 5 is stored in the
상기 도 5에서와 같이 순차적으로 저장된 데이터들은 본 발명에 따른 도 6의 장치에 의거하여 도 4와 같이 정렬되어 저장된다. 상기 도 5의 내용이 상기 도 4와 같이 적용이 되면 버터플라이를 계산하는 단계에서 한번도 겹침이 없이 각 소단위 메모리들(310a, 310b, 310c, 310d)로부터 한번에 하나의 데이터를 읽을 수 있게 된다.Data sequentially stored as shown in FIG. 5 is stored and aligned as shown in FIG. 4 based on the apparatus of FIG. 6 according to the present invention. When the content of FIG. 5 is applied as shown in FIG. 4, one data can be read from each of the
그러면 이에 대한 이해를 돕기 위해 도 7 내지 도 10을 참조하여 살펴보기로 한다. 상기 도 7은 N=64(26)의 예에 따라 각 소단위 메모리로 입력될 데이터들이 상기 도 5와 같이 저장된 상태의 도면이고, 도 8은 첫 번째 버터플라이 연산이 이루어진 이후 2번째 버터플라이 연산이 수행될 시 각 소단위 메모리들로부터 읽혀야 하는 데이터의 순서이며, 도 9는 두 번째 버터플라이 연산이 이루어진 이후 3번째 버터플라이 연산이 수행될 시 각 소단위 메모리들로부터 읽혀야 하는 데이터의 순서도이다. 그리고 도 10은 본 발명에 따라 N=64(26)의 예에서 각 단계의 버터플라이 연산 시에 소단위 메모리들로부터 하나씩의 데이터가 겹칩없이 읽힐 수 있도록 한 메모리 구성도이다.This will be described with reference to FIGS. 7 to 10 to help understand this. FIG. 7 is a diagram illustrating data stored in each sub-unit memory according to an example of N = 64 (2 6 ) as shown in FIG. 5, and FIG. 8 is a second butterfly operation after the first butterfly operation is performed. This is a sequence of data to be read from each sub-unit memory when this is performed, and FIG. 9 is a flowchart of data to be read from each sub-unit memory when the third butterfly operation is performed after the second butterfly operation is performed. FIG. 10 is a memory configuration diagram in which one piece of data can be read from the sub-unit memories without overlapping in the butterfly operation of each step in the example of N = 64 (2 6 ) according to the present invention.
상기 도 7 내지 도 10의 예에 따른 도면은 N=64(26)의 예를 도시하고 있다. 이 경우 Radix-22를 사용하면 버터플라이는 전체 6/2=3의 단계로 계산이 된다. 즉 첨부한 도 7 내지 도 9는 그 3단계에서 버터플라이 연산을 위해 메모리에서 읽어들여야 하는 데이터의 순서를 도시한 것이다.7 to 10 show an example of N = 64 (2 6 ). In this case, using Radix-2 2 , the butterfly is calculated in steps of 6/2 = 3. 7 to 9 show the order of data to be read from the memory for the butterfly operation in the third step.
상기 도 7은 앞에서 상술한 바와 같이 제1버퍼에 0~15까지의 데이터가 입력되어 저장되어 있고, 제2버퍼에 16번째 데이터부터 31까지의 데이터가 입력되어 저장되어 있으며, 제3버퍼에 32번째 데이터부터 47번째까지의 데이터가 입력되어 저장되어 있고, 제4버퍼에는 48번째 데이터부터 63번째 데이터까지 각각 16개의 데이터들이 저장되어 있다. 이러한 경우 상기 소단위 메모리들(310a, 310b, 310c, 310d)로부터 첫 번째 버터플라이 연산에서 읽혀져야 하는 데이터들은 도 8의 첫 번째 행에 도시한 바와 같이 0번째 데이터와 4번째 데이터, 8번째 데이터 및 12번째 데이터가 된다. 그런데 상기 데이터의 순서는 도 7에서 살펴보면, 모두 제1버퍼에 위치한 데이터들이다. 그러므로 실제로 도 3과 같이 소단위 메모리들로 구분하여 메모리를 구성하더라도 64개의 연산을 수행하기 위해서는 16회의 연산만으로 버터플라이 연산을 수행할 수 없고, 많은 연산을 요구하게 된다.In FIG. 7, as described above, data from 0 to 15 are input and stored in the first buffer, data from 16th to 31 are input and stored in the second buffer, and 32 is stored in the third buffer. The data from the 47 th data to the 47 th data are input and stored, and the 16th data from the 48 th data to the 63 th data are stored in the fourth buffer. In this case, data to be read in the first butterfly operation from the
또한 도 9에 도시한 바와 같이 두 번째 단계에서 요구되는 입력되는 데이터의 순서는 0, 1, 2 및 3번째 데이터들이다. 이들 또한 상기 도 7 및 도 8에서 살펴보면, 모두 제1버퍼에 존재하는 데이터가 된다.In addition, as shown in FIG. 9, the order of input data required in the second step is 0, 1, 2, and 3rd data. 7 and 8, all of them become data existing in the first buffer.
상기한 과정에서 읽은 데이터들은 다시 읽은 위치에 기록되어야 한다. 따라서 각각의 데이터가 하나씩만 읽히고 다시 하나씩 기록된다면 상기 도 3과 같은 형태의 메모리 구조를 가지더라도 하나의 단일 메모리로 구현한 경우와 동일한 효과를 가지게 된다. 따라서 상기 도 6의 예에서 살핀 바와 같은 장치를 이용하여 도 10과 같은 형태로 메모리에 기록되는 데이터의 순서를 정할 수 있다.Data read in the above process should be recorded in the read position again. Therefore, if each data is read one by one and written again one by one, even if the memory structure of the type shown in FIG. 3 has the same effect as when implemented as a single memory. Therefore, in the example of FIG. 6, the order of data recorded in the memory in the form of FIG.
그러면 다시 도 6에 대하여 살펴보기로 한다.This will be described again with reference to FIG. 6.
도 6은 본 발명의 일 실시 예에 따라 입력 메모리의 번호를 변환하기 위한 회로도이다. 상기 도 6은 예를 들어 최초 도 5 및 도 7에 도시한 바에 의거하면 0번 메모리에 저장되었어야 하는데 실제로 본 발명에서는 3번 메모리 또는 그 밖의 다른 메모리나 동일한 메모리로 저장되는 데이터의 위치를 변경하기 위한 장치이다. 상기 도 6에 대하여 살펴보면 하기와 같다. 6 is a circuit diagram for converting a number of an input memory according to an embodiment of the present invention. For example, FIG. 6 should be stored in
먼저 도 6의 구성에서는 각각의 배타적 논리합(XOR)(601, 602, 611, 612) 연산자들이 짝수 번째끼리 인접한 결과들의 배타적 논리합 연산을 수행하며, 홀수 번째끼리 인접한 결과들과의 배타적 논리합 연산을 수행한다. 이를 통해 최종 배타적 논리합 연산자의 출력은 짝수 번째의 배타적 논리합 연산자의 결과는 주소 1에 쓰여지고, 홀수 번째 배타적 논리합 연산자의 결과는 주소 0에 쓰여진다. 그리고 상기 입력되는 신호는 버터플라이 카운터의 카운트된 값들로 x0, x1, x2, x3, x4...과 같은 형태로 도시되어 있다.First, in the configuration of FIG. 6, each of the
이를 다시 설명하면, FFT 입력 메모리를 연산 메모리와 공유가 가능하면서도 최종 연산까지 나누어진 각각의 메모리에서 한번에 하나씩 동시에 메모리 개수만큼의 데이터를 읽어내기 위해서 각 메모리의 어드레스 또는 버터플라이 카운터(324)를 이용한 것이다. 따라서 각 메모리의 어드레스는 도 4에서 왼쪽에 표현된 수이다. 이 값을 이진수로 도 4의 오른쪽에 표현하였다. 이 값은 어드레스뿐 아니라 버 터플라이의 카운터(324)에서 카운트된 값을 의미한다. 버터플라이에서 연산된 카운트 값을 표현하는 메모리를 이용하여 상기 도 5의 정렬을 도 4와 같이 바꿀 수 있게 된다. 상기 버터플라이 카운터를 LSB부터 2비트(bit)씩 나눈 다음에 앞의 비트(bit)끼리 배타적 논리합 연산을 하고, 뒤에 있는 비트(bit)끼리 배타적 논리합 연산을 하면, 두 개의 비트로 이루어진 하나의 수를 만들 수 있다. 따라서 다음 이 수만큼 순환 이동(cyclic shift)를 해 주면 도 5의 정렬을 쉽게 도 4와 같이 바꿀 수 있다. 따라서 상기 도 6의 과정을 다항식으로 표현하면 하기 <수학식 1>과 같이 표현할 수 있다.In other words, the FFT input memory can be shared with the operation memory but the address or
도 6에서 n은 홀수 : ( xn+ xn-2 + ... + x )(xn-1+ xn-3 + ... + x2 + x)In Figure 6, n is odd: (x n + x n-2 + ... + x) (x n-1 + x n-3 + ... + x 2 + x)
도 6에서 n은 짝수 : ( xn-1+ ... + x )(xn + xn-2 + ... + x2 + x0)In FIG. 6, n is even: (x n-1 + ... + x) (x n + x n-2 + ... + x 2 + x 0 )
=> (첫 번째 비트 : n은 홀수)(두 번째 비트 : n은 짝수) => (First bit: n is odd) (second bit: n is even)
상기 <수학식 1>에서 +는 배타적 논리합을 의미한다.In
한편, 입력 메모리를 따로 사용할 경우 수신 필터(103)의 출력을 FFT 연산 전에 입력 메모리에 저장해야 하는데 이때도 FFT 연산을 위한 버터플라이 구조에 대응되게 메모리를 구성해야 한다. 연산용 메모리와 마찬가지로 r개의 메모리를 사용하여 한번에 하나의 메모리에서 하나의 데이터를 읽을 수 있게 정렬해 놓는다. 도 5는 입력 메모리를 따로 사용하였을 경우의 입력 메모리를 표현한 것이다.On the other hand, when the input memory is used separately, the output of the
이상에서 상술한 바와 같이 단일 버터플라이 구조를 사용하여 FFT 연산을 구현할 때에 간단한 주소의 조작으로 단일 메모리를 사용하는 경우와 동일한 크기의 메모리를 사용하면서도 FFT 연산을 처리하는 시간을 최적화할 수 있다.As described above, when implementing a FFT operation using a single butterfly structure, it is possible to optimize the processing time of the FFT operation while using a memory having the same size as using a single memory by simple address manipulation.
Claims (4)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050086563A KR20070031769A (en) | 2005-09-15 | 2005-09-15 | Fast fourier transformer device using single butterfly and method therefor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050086563A KR20070031769A (en) | 2005-09-15 | 2005-09-15 | Fast fourier transformer device using single butterfly and method therefor |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20070031769A true KR20070031769A (en) | 2007-03-20 |
Family
ID=43655950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050086563A KR20070031769A (en) | 2005-09-15 | 2005-09-15 | Fast fourier transformer device using single butterfly and method therefor |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20070031769A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009110768A1 (en) * | 2008-03-06 | 2009-09-11 | 주식회사 포스데이타 | Fast fourier transform method and device thereof |
CN110941792A (en) * | 2018-09-24 | 2020-03-31 | 半导体元件工业有限责任公司 | Signal processor, system and method for performing in-situ fast fourier transforms |
-
2005
- 2005-09-15 KR KR1020050086563A patent/KR20070031769A/en not_active Application Discontinuation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009110768A1 (en) * | 2008-03-06 | 2009-09-11 | 주식회사 포스데이타 | Fast fourier transform method and device thereof |
CN110941792A (en) * | 2018-09-24 | 2020-03-31 | 半导体元件工业有限责任公司 | Signal processor, system and method for performing in-situ fast fourier transforms |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1516467B1 (en) | Modulation apparatus using mixed-radix fast fourier transform | |
KR960013080A (en) | MPEG audio / video decoder | |
US5832443A (en) | Method and apparatus for adaptive audio compression and decompression | |
EP2191381A1 (en) | Encoding and/or decoding digital content | |
JP6177239B2 (en) | Adapt analysis weighting window or synthesis weighting window for transform coding or transform decoding | |
AU2005208287A1 (en) | Improved coding techniques using estimated spectral magnitude and phase derived from MDCT coefficients | |
US20050177608A1 (en) | Fast Fourier transform processor and method using half-sized memory | |
US9735996B2 (en) | Fully parallel fast fourier transformer | |
CN101421780A (en) | Processing of excitation in audio coding and decoding | |
US9727531B2 (en) | Fast fourier transform circuit, fast fourier transform processing method, and program recording medium | |
CN111435383B (en) | Data processing method, data processing chip and electronic equipment | |
US7689429B2 (en) | Methods and apparatuses for bit stream decoding in MP3 decoder | |
EP4283614A2 (en) | Method for processing speech/audio signal and apparatus | |
KR20070031769A (en) | Fast fourier transformer device using single butterfly and method therefor | |
WO2003021973A2 (en) | Ram-based fast fourier transform unit for wireless communications | |
JP2000066872A (en) | Bit and digit reversing method | |
US20190013823A1 (en) | Compression and decompression engines and compressed domain processors | |
US6631167B1 (en) | Process and device for transforming real data into complex symbols, in particular for the reception of phase-modulated and amplitude-modulated carriers transmitted on a telephone line | |
JPWO2019131754A1 (en) | Signal processing equipment, methods, programs and recording media | |
Hong et al. | Implementation of FIR filter on FPGA using DAOBC algorithm | |
JP6977883B2 (en) | Signal processing equipment, methods, programs | |
KR20050072633A (en) | Fast fourier transform device capable of improving a processing speed and a method processing thereof | |
US20090172062A1 (en) | Efficient fixed-point implementation of an fft | |
US9952648B2 (en) | Digital filtering device, digital filtering method, and storage media storing program | |
EP2191382B1 (en) | System, method, and/or apparatus for digital signal sorting |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Withdrawal due to no request for examination |