KR19990079171A - Fast Fourier Transform (FFT) Device and Control Method - Google Patents

Fast Fourier Transform (FFT) Device and Control Method Download PDF

Info

Publication number
KR19990079171A
KR19990079171A KR1019980011642A KR19980011642A KR19990079171A KR 19990079171 A KR19990079171 A KR 19990079171A KR 1019980011642 A KR1019980011642 A KR 1019980011642A KR 19980011642 A KR19980011642 A KR 19980011642A KR 19990079171 A KR19990079171 A KR 19990079171A
Authority
KR
South Korea
Prior art keywords
register
output
data
fft
value
Prior art date
Application number
KR1019980011642A
Other languages
Korean (ko)
Other versions
KR100284181B1 (en
Inventor
임일택
김규석
Original Assignee
구자홍
엘지전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구자홍, 엘지전자 주식회사 filed Critical 구자홍
Priority to KR1019980011642A priority Critical patent/KR100284181B1/en
Priority to US09/144,284 priority patent/US6317770B1/en
Publication of KR19990079171A publication Critical patent/KR19990079171A/en
Application granted granted Critical
Publication of KR100284181B1 publication Critical patent/KR100284181B1/en
Priority to US09/902,603 priority patent/US6463451B2/en

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

본 발명은 디지탈 신호처리과정에서 사용되는 패스트 퓨리에 변환(FFT; Fast Fourier Transform) 계산과정을 위한 구조를 구현하도록 한 디지탈 신호처리과정의 패스트 퓨리에 변환(FFT) 장치 및 제어방법에 관한 것이다.The present invention relates to a fast Fourier transform (FFT) device and a control method of a digital signal processing to implement a structure for the Fast Fourier Transform (FFT) calculation process used in the digital signal processing.

본 발명에서는 DIT(Decimation in Time) 알고리듬으로 부터 이루어지는 FFT 계산 구조에 있어서, 하나의 멀티플라이어(multiplier)와 두개의 가감산 연산기, 네개의 누산기(accumulator)(X0,X1,X2,X3)로 이루어지는 MAC(multiply - and - accumulate) 구조로써, 그 계산구조에 있어 버터플라이의 계산구조를 간단히 하도록 하여, 간단하면서도 빠르게 전체적인 계산 과정이 이루어지도록 한 구조를 제공하도록 하는 것이다.In the present invention, in the FFT calculation structure made from the DIT algorithm, a multiplier, two add and subtractors, and four accumulators (X0, X1, X2, and X3) are included. MAC (multiply-and-accumulate) structure, to simplify the calculation structure of the butterfly in its calculation structure, to provide a structure that allows the entire calculation process to be simple and fast.

Description

패스트 퓨리에 변환(FFT) 장치와 제어방법Fast Fourier Transformation Device and Control Method

본 발명은 디지탈 신호처리과정에서 사용되는 패스트 퓨리에 변환(FFT; Fast Fourier Transform) 계산과정을 위한 구조를 구현하도록 한 디지탈 신호처리과정의 패스트 퓨리에 변환(FFT) 장치 및 제어방법에 관한 것이다.The present invention relates to a fast Fourier transform (FFT) device and a control method of a digital signal processing to implement a structure for the Fast Fourier Transform (FFT) calculation process used in the digital signal processing.

디지탈 신호처리(DSP; Digital Signal Processing)를 위해서는 FFT 계산이 자주 사용되어지고 있는 바,FFT calculation is frequently used for digital signal processing (DSP).

퓨리에 변환(Fourier Transform)이란 서로다른 주파수의 정현파의 중복으로 표현할 수 있는 시간함수에 대하여, 그 시간함수에 포함되는 각 주파수 성분의 크기를 주파수의 함수로 나타내는 것인데, 신호 해석, 화상처리 등에 널리 이용된다.Fourier transform is a time function that can be expressed as overlap of sinusoids of different frequencies, and represents the magnitude of each frequency component included in the time function as a function of frequency, and is widely used for signal analysis and image processing. do.

일반적으로 FFT 알고리듬은 여러가지가 있으나, 그 중에서 가장 일반적으로 사용되는 것은 DIT(Decimation-in-time) 알고리듬(algorithm)에 그 토대를 둔 것인 바,Generally there are many FFT algorithms, but the most commonly used one is based on the DIT (Decimation-in-time) algorithm,

이러한 알고리듬은 가장 기본적인 구조를 갖는 도 2에서와 같은 버터플라이(butterfly)들을 기본 요소 삼아 구성된다.This algorithm consists of the butterfly (butterfly) as shown in Figure 2 having the most basic structure as a basic element.

도 1은 DIT 알고리듬으로 부터 얻어지는 8-포인트(point) FFT 계산 신호흐름을 나타낸 도면이다.Figure 1 shows an eight-point FFT calculation signal flow obtained from the DIT algorithm.

도 1을 살펴보면, 버터플라이 구조를 기본으로 하여, 버터플라이가 다중으로 연결되어 있는 것을 볼 수 있는 데, 도 2에서 이와 같은 버터플라이 구조를 상세하게 나타내었다.Looking at Figure 1, based on the butterfly structure, it can be seen that the butterfly is connected in multiple, in Figure 2 such a butterfly structure is shown in detail.

도 2에서와 같이, 버터플라이의 입력측으로 실수부와 허수부(j)로 이루어지는 데이타 X[a]+jY[a], X[b]+jY[b]가 입력되면, 이들 값은 곱셈기(1)와, 각각의 합산기(2,3)를 거치면서, 박스(box)내의 식들의 출력값 X'[a]+jY'[a]와 X'[b]+jY'[b]을 얻을 수 있게 된다.As shown in Fig. 2, when data X [a] + jY [a] and X [b] + jY [b] consisting of a real part and an imaginary part j are inputted to the input side of the butterfly, these values are multiplier ( 1), and through each summer (2, 3), obtain the output values X '[a] + jY' [a] and X '[b] + jY' [b] of the equations in the box. It becomes possible.

FFT 계산 플로우 과정을 살펴보면, 버터플라이, 그룹(group), 스테이지(stage)의 3종류로 나누어져 있는 데, 상기와 같은 도 2의 버터플라이 계산 과정을 반복진행하여 입력되는 디지탈 신호값에 대하여 FFT 변환을 하게 되는 바,Looking at the FFT calculation flow process, it is divided into three types: butterfly, group, and stage. The FFT for the digital signal value inputted by repeating the butterfly calculation process of FIG. Will be converted,

이와 같은 FFT 변환은 도 3에서와 같은 순환 알고리듬으로 이루어진다.This FFT transform is made with a cyclic algorithm as in FIG.

이와 같이 하여 모든 스테이지의 계산이 완료되면, FFT 계산에 의해 얻어지는 값들의 순서를 재정렬하게 되는 바,In this way, when the calculation of all the stages is completed, the order of the values obtained by the FFT calculation is rearranged.

다음의 표 1에 나타난 바와 같이, 8-포인트 FFT의 경우를 예를 들면,As shown in the following Table 1, for 8-point FFT, for example,

입력 데이타Input data 이진 어드레스Binary address 변환 데이타Conversion data 이진 어드레스Binary address X(0)X (0) 000000 X(0)X (0) 000000 X(1)X (1) 001001 X(0)X (0) 100100 X(2)X (2) 010010 X(0)X (0) 010010 X(3)X (3) 011011 X(0)X (0) 110110 X(4)X (4) 100100 X(0)X (0) 001001 X(5)X (5) 101101 X(0)X (0) 101101 X(6)X (6) 110110 X(0)X (0) 011011 X(7)X (7) 111111 X(0)X (0) 111111

상기 2진수로 표시되는 각 입력 어드레스와 FFT 계산을 거쳐 출력되는 이진 어드레스들을 살펴보면, 입력되는 값들의 어드레스에 대하여 출력되는 값들의 이진 어드레스는 그 역의 값을 가지게 되므로, 입력되는 값들에 대하여 비트 리저브드(역전) 어드레싱(bit-reserveed addressing)에 의해 재정렬시키면 올바른 출력값을 얻을 수 있게 된다.Looking at each of the input address represented by the binary number and the binary address output through the FFT calculation, the binary address of the output value for the address of the input value has the opposite value, so that the bit reserve for the input values Reordering by bit-reserveed addressing ensures correct output.

본 발명에서는 이와 같이 DIT 알고리듬으로 부터 이루어지는 FFT 계산 구조에 있어서, 버터플라이의 계산을 효율적으로 하므로써, 간단하면서도 빠르게 전체적인 FFT 계산 과정이 이루어지도록 한 구조를 제공하고자 한 것이다.In the present invention, in the FFT calculation structure made from the DIT algorithm, the present invention is to provide a structure that allows the entire FFT calculation process to be performed simply and quickly by efficiently calculating the butterfly.

도 1은 DIT(decimation in time) 알고리듬으로 부터 얻어지는 8-포인트(point) FFT(Fast Fourier Transform) 계산 신호흐름을 나타낸 도면.1 illustrates an eight-point Fast Fourier Transform (FFT) calculation signal flow obtained from a deciation in time (DIT) algorithm.

도 2는 상기 도 1에서의 버터플라이(butterfly)의 계산 구조를 나타낸 도면.FIG. 2 is a diagram illustrating a calculation structure of a butterfly in FIG. 1. FIG.

도 3은 도 1의 FFT 계산 알고리듬을 나타낸 플로우챠트.3 is a flow chart illustrating the FFT calculation algorithm of FIG.

도 4는 본 발명 패스트 퓨리에 변환(FFT) 장치의 블록 구성도.4 is a block diagram of a Fast Fourier Transform (FFT) device of the present invention.

도 5는 도 4의 각 클록별 제어과정을 기본 개념적으로 나타낸 제어도표.FIG. 5 is a control diagram conceptually illustrating a control process for each clock of FIG. 4.

도 6은 도 4의 각 클록별 제어과정을 실제 각부출력진행상태로 나타낸 제어도표.FIG. 6 is a control diagram showing the control process for each clock of FIG.

도 7은 도 4의 각 클록별 제어과정을 나타낸 것으로, 루프가 발생하였을 경우를 나타낸 제어도표.FIG. 7 is a diagram illustrating a control process for each clock of FIG. 4, and illustrates a control diagram illustrating a case where a loop occurs.

도 8은 도 4에서 위상각 q가 0일 경우에 각 클록별 제어과정을 기본 개념적으로 나타낸 제어도표.FIG. 8 is a control diagram conceptually illustrating a control process for each clock when the phase angle q is 0 in FIG. 4; FIG.

도 9는 도 4에서 위상각 q가 0일 경우에 각 클록별 제어과정을 실제 각 부 출력 진행상태로 상세하게 나타낸 제어도표.FIG. 9 is a control diagram showing in detail the control process for each clock when the phase angle q is 0 in FIG.

도 10은 도 4에서 위상각 q가 0이며, 루프가 발생하였을 경우에 각 클록별 제어과정을 나타낸 제어도표.FIG. 10 is a control diagram illustrating a control process for each clock when a phase angle q is 0 in FIG. 4 and a loop occurs.

도 11은 도 4에서 위상각 q가 π/2일 경우에 각 클록별 제어과정을 기본 개념적으로 나타낸 제어도표.FIG. 11 is a control diagram conceptually illustrating a control process for each clock when the phase angle q is π / 2 in FIG.

도 12는 도 4에서 위상각 q가 π/2일 경우에 각 클록별 제어과정을 실제 각 부 출력 진행상태로 상세하게 나타낸 제어도표.FIG. 12 is a control diagram illustrating in detail a control process for each clock when the phase angle q is π / 2 in FIG.

도 13은 도 4에서 위상각 q가 π/2이며, 루프가 발생하였을 경우에 각 클록별 제어과정을 나타낸 제어도표.FIG. 13 is a control diagram illustrating a control process for each clock when a phase angle q is π / 2 in FIG. 4 and a loop occurs.

본 발명에서는 상기와 같은 목적을 달성하기 위하여 도 4에서와 같은 장치를 제안하게 된다.In the present invention, in order to achieve the above object it is proposed a device as shown in FIG.

도 4는 도 1에서와 같은 DIT(Decimation-In-Time) FFT의 계산 구조를 구현한 것이다.FIG. 4 implements a calculation structure of a DIT (Decimation-In-Time) FFT as shown in FIG. 1.

이와 같은 실시예를 참조하여 이하 첨부된 도면을 참조하여 그 구성 및 작용을 설명하면 다음과 같다.Referring to the embodiment described below with reference to the accompanying drawings, the configuration and operation will be described.

위상각(q)에 대한 트위들 팩터스(twiddle factors)값의 실수부에 대한 어드레스를 [cosptr]저장하는 실수저장부(10a)와 허수부에 대한 어드레스[sinptr]를 저장하는 허수저장부(10b)를 포함하는 계수 어드레싱 레지스터(coefficient addressing registers)(10)와, 입력되는 어드레스에 따라 저장되어 있는 FFT 계수를 출력하는 롬(ROM)(20)과, 변환하고자 하는 입력 데이타 및 변환된 데이타의 어드레스[a,a0∼a4]를 저장하는 데이타 어드레싱 레지스터(data addressing registers)(30)와, 입력되는 데이타 어드레스에 따라서 읽어온 데이타를 출력하고, 변환된 데이타를 저장하는 데이타 램(data RAM)(40)과, 상기 롬(20)으로 부터 출력된 FFT 계수를 일시 저장한 후 출력하는 m 레지스터(50)과, 상기 데이타 램(40)으로 부터 출력된 데이타를 일시 저장한 후 출력하는 t 레지스터(60) 및 d 레지스터(70)와, 상기 m 레지스터(50)로 부터 출력되는 FFT 계수와 t 레지스터(60)에서 출력되는 데이타를 승산하는 멀티플라이어(multiplier)(80)와, 멀티플라이어(80)에서 연산된 결과를 일시 저장한 후 출력하는 p 레지스터(90)와,Real number storage unit (10a) for storing the address for the real part of the tweed factor factors for the phase angle (q) and an imaginary storage unit for storing the address (sinptr) for the imaginary part ( Coefficient addressing registers 10 including 10b), a ROM 20 for outputting FFT coefficients stored according to an input address, input data to be converted and converted data Data addressing registers 30 which store addresses [a, a0 to a4], and data RAMs which output the read data in accordance with the input data address and store the converted data ( 40), the m register 50 for temporarily storing and outputting the FFT coefficients output from the ROM 20, and the t register for temporarily storing and outputting the data output from the data RAM 40 ( 60 and d register 70, The multiplier 80 multiplying the FFT coefficient output from the m register 50 and the data output from the t register 60, and the result calculated by the multiplier 80 is temporarily stored and output. P register 90,

상기 p 레지스터(90)로 부터 출력된 승산결과값과 상기 d 레지스터(70)로 부터 출력되는 입력 데이타의 가감연산 실행하여 연산결과를 해당 XO 레지스터(110) 및 X2 레지스터(120)에 저장하고, 상기 XO 레지스터(110) 및 X2 레지스터(120)의 출력 데이타 즉, 이전 연산결과와 P 레지스터(90)로 부터 출력되는 데이타와의 가감연산을 실행하는 연산기(100)와,Perform an additive operation of the multiplication result value output from the p register 90 and the input data output from the d register 70 to store the operation result in the corresponding XO register 110 and X2 register 120, An arithmetic operator 100 for performing an additive operation of the output data of the XO register 110 and the X2 register 120, that is, the previous operation result and the data output from the P register 90;

상기 p 레지스터(90)로 부터 출력된 승산결과값과 상기 d 레지스터(70)로 부터 출력되는 입력 데이타의 가감연산 실행하여 연산결과를 해당 X1 레지스터(140) 및 X3 레지스터(150)에 저장하고, 상기 X1 레지스터(110) 및 X3 레지스터(12)의 출력 데이타 즉, 이전 연산결과와 P 레지스터(90)로 부터 출력되는 데이타와의 연산을 실행하는 연산기(130)와,Perform an additive operation of the multiplication result value output from the p register 90 and the input data output from the d register 70 to store the operation result in the corresponding X1 register 140 and the X3 register 150, An arithmetic unit 130 for performing an operation on the output data of the X1 register 110 and the X3 register 12, that is, the previous calculation result and the data output from the P register 90;

상기 XO 레지스터(110), X1 레지스터(120), X2 레지스터(140), X3 레지스터(150)에서 출력되는 값들의 그 수치값을 제한하여 출력하는 수치값제한부(160)로 구성되며,And a numerical value limiting unit 160 for limiting and outputting numerical values of the values output from the XO register 110, the X1 register 120, the X2 register 140, and the X3 register 150.

상기 각 부의 출력값들 및 상기 연산기(100)(130)의 논리연산의 제어는 진행되는 각 클럭(clock) 마다 제어수단으로 부터 전달되는 제어신호에 의해 제어되어짐을 특징으로 한다.The output values of the respective units and the logic operations of the calculators 100 and 130 are controlled by a control signal transmitted from a control unit for each clock that proceeds.

이와 같은 구성을 특징으로 하는 본 발명이 제안하고 있는 장치는 버터플라이를 계산하게 되는 도 2에서와 같은 수학식과 같은 값이 얻어질 수 있도록 상기 각 부의 출력 및 작용을 제어수단에서 각 클록(1∼9)별로 도 5에서와 같이 제어가 이루어지도록 하는 것으로,The apparatus proposed by the present invention characterized by such a configuration is characterized in that each clock (1 to 1) in the control means controls the output and action of each part so that a value such as the equation shown in FIG. 2 to calculate the butterfly can be obtained. 9) to be controlled as shown in FIG.

도 5를 참조하여 기본적인 그 작용을 설명하면 다음과 같다.Referring to Figure 5, the basic operation thereof will be described.

첫번째 클록(1)에서 데이타 램(40)으로 부터 X[a]의 데이타를 출력하게 되어 d 레지스터(70)의 저장값은 X[a]가 된다.The first clock 1 outputs the data of X [a] from the data RAM 40 so that the stored value of the d register 70 becomes X [a].

이후, 다음 클록(2)이 되면, 롬(20)에서는 cosq를 출력하게 되고, 따라서 m 레지스터(50)의 저장값은 cosq가 된다.Then, when the next clock 2 is reached, the ROM 20 outputs cosq, and thus the stored value of the m register 50 becomes cosq.

또한, 데이타 램(40)에서는 X[b]가 출력되어 t 레지스터(60)에는 X[b]가 저장된다.In addition, X [b] is output from the data RAM 40 and X [b] is stored in the t register 60.

클록(3)이 되면, 상기 m 레지스터(50)와 t 레지스터(60)에서는 이들 값을 출력하게 되고, 멀티플라이어(80)에서는 이들 출력값을 승산(m*t)하여 p 레지스터(90)에 저장하게 된다.When the clock 3 reaches, the m register 50 and the t register 60 output these values, and the multiplier 80 multiplies these output values (m * t) and stores them in the p register 90. Done.

이때, 롬(20)에서는 계수값 sinq를 출력하게 되어, m 레지스터(50)에는 sinq가 저장되고, 데이타 램(40)에서는 Y[b]가 출력된다.At this time, the count value sinq is output from the ROM 20, sinq is stored in the m register 50, and Y [b] is output from the data RAM 40.

그러므로 t 레지스터(60)에는 Y[b]가 저장된다.Therefore, Y [b] is stored in the t register 60.

다음 클록(4)이 되면, 연산기(100)에서는 상기 d 레지스터(70)와 p 레지스터(90)에서 출력되는 값을 가산(d+p)하게 되고, 이 값을 XO 레지스터(110)에 저장하게 된다.When the next clock 4 is reached, the operator 100 adds (d + p) the values output from the d register 70 and the p register 90 to store the value in the XO register 110. do.

또한, 연산기(130)에서는 상기 d 레지스터(70)와 p 레지스터(90)에서 출력되는 값을 감산(d-p)하여 X1 레지스터(140)에 저장하게 된다.In addition, the operator 130 subtracts the values output from the d register 70 and the p register 90 (d-p) and stores the values in the X1 register 140.

이때, 멀티플라이어(80)에서는 이전 클럭(3)에서 t 레지스터(60)와 m 레지스터(50)에 저장되어 있던 값 sinq와 Y[b]을 승산하여 p 레지스터(90)에 저장하게 된다.At this time, the multiplier 80 multiplies the values sinq and Y [b] stored in the t register 60 and the m register 50 in the previous clock 3 and stores them in the p register 90.

그리고, m 레지스터(50)에는 현재 클록(4)에서 롬(20)으로 부터 출력되는 cosq가 저장되고, d 레지스터(70)에는 현재 클록(4)에서 데이타 램(40)으로 부터 출력되는 Y[a]가 저장된다.In the m register 50, cosq outputted from the ROM 20 at the current clock 4 is stored, and the d register 70 is outputted from the data RAM 40 at the current clock 4 in the d register 70. a] is stored.

클록(5)에서는 X0 레지스터(110)에 저장되어 있던, 연산기(100)의 연산결과인 X0를 누적값으로 하여 연산기(100)에서 이로 부터 이전 클록(4)에서 p 레지스터(90)에 저장되어 있던 값을 감산(X0-P)하여 X0 레지스터(110)에 저장하게 된다.In the clock 5, the calculation result of the calculation result of the operator 100 stored in the X0 register 110 is stored in the p register 90 from the previous clock 4 from the calculator 100 with the accumulated value X0. The existing value is subtracted (X0-P) and stored in the X0 register 110.

그리고, 연산기(130)에서는 이전 클록(4)에 p 레지스터(90)에 저장되어 있던 값과 X1 레지스터(140)에 저장되어 있던 값을 가산(X1+p)하여 X1 레지스터(140)에 저장하게 된다.The calculator 130 adds (X1 + p) the value stored in the p register 90 and the value stored in the X1 register 140 to the previous clock 4 to store the value in the X1 register 140. do.

이와 동시에 m 레지스터(50)와 t 레지스터(60)에는 롬(20)과 데이타 램(40)으로 부터 출력되는 sinq, X[b]가 저장된다.At the same time, the sinq and X [b] output from the ROM 20 and the data RAM 40 are stored in the m register 50 and the t register 60.

이후, 클록(6)이 되면, 수치값제한부(160)를 통해 반올림 및 포화 연산되어 출력되는 값들중에서 X0 레지스터(110)에서 출력되는 값을 X'[a]로 둔다.Then, when the clock 6 is reached, the value output from the register X0 110 is set to X '[a] among the values that are rounded and saturated through the numerical value limiting unit 160 and output.

이때, 연산기(100)에서는 d 레지스터(70)에 저장출력된 값에서 p 레지스터(90)에 저장출력된 값을 감산(d-p)하여 X2 레지스터(120)에 저장하게 된다.At this time, the operator 100 subtracts (d-p) the value stored in the p register 90 from the value stored in the d register 70 and stores it in the X2 register 120.

그리고, 연산기(130)에서는 d 레지스터(70)에 저장출력된 값과 p 레지스터(90)의 저장출력된 값을 가산(d+p)하여 X3 레지스터(150)에 저장하게 된다.The operator 130 adds (d + p) the value stored and output in the d register 70 and the value stored and output in the p register 90 to store it in the X3 register 150.

여기서, p 레지스터(90)에는 m 레지스터(50)와 t 레지스터(60)로 부터 출력되는 sinq, X[b]가 승산된 값이 다시 저장되어 진다.Here, the value obtained by multiplying the sinq and X [b] output from the m register 50 and the t register 60 is stored in the p register 90 again.

클록(7)이 되면, X1 레지스터(140)에서 출력되는 값을 X'[b]로 두고, 상기 X2 레지스터(120)에서 출력되는 값으로 부터 상기 p 레지스터(90)에서 출력되는 값을 연산기(100)에서 감산(X2-p)하여 X2 레지스터(12)에 저장하게 된다.When the clock 7 is reached, the value output from the X1 register 140 is set as X '[b], and the value output from the p register 90 is calculated from the value output from the X2 register 120. 100 is subtracted (X2-p) and stored in the X2 register (12).

또한, 연산기(130)에서는 X3 레지스터(150)에서 출력되는 값과 p 레지스터(90)에서 출력되는 값을 가산(X3+p)하여 X3 레지스터(150)에 저장하게 된다.In addition, the operator 130 adds (X3 + p) the value output from the X3 register 150 and the value output from the p register 90 to store the result in the X3 register 150.

이후, 클록(8)이 되면, 상기 X2를 Y'[b]로 두고, 클록(9)에서 X3를 Y'[a]로 두게 된다.After that, when the clock 8 is reached, X2 is set to Y '[b] and X3 is set to Y' [a] in the clock 9.

이와 같은 과정을 거치게 되면, X'[a],X'[b],Y'[b],Y'[a]를 모두 얻을 수 있게 되며, 이들 값은 도 5의 상부에 실행 수학식과 같이 나타나게 되므로써, 버터플라이 하나에 대한 계산을 완료할 수 있게 된다.Through this process, all of X '[a], X' [b], Y '[b], and Y' [a] can be obtained, and these values are shown as the execution equation at the top of FIG. Thus, the calculation for one butterfly can be completed.

도 6은 실제로 도 4에서와 같은 본 발명 장치에서 진행되는 각부의 제어도표이다.FIG. 6 is a control diagram of each part actually performed in the apparatus of the present invention as shown in FIG. 4.

여기서, 데이타 어드레싱 레지스터(30)의 a1은 X[a], a2는 X[b], a3는 Y[a], a4는 Y[b]의 어드레스를 갖는다.Here, a1 of the data addressing register 30 has an address of X [a], a2 of X [b], a3 of Y [a], and a4 of Y [b].

각 어드레스에 해당하는 데이타를 읽어와서 상기에서 도 5를 참조하여 설명한 과정에 의해 구한 값(X0,X1,X2,X3)을 각 클록(6∼9)에서 데이타 램(40)의 데이타를 dram[a]=X0, X1,X2,X3로 설정하게 될때, 하나 이전의 클럭 즉, 클록(5) 부터 어드레스 a를 a1,a2,a4,a3로 설정하게 된다.The data X0, X1, X2, and X3 obtained by the process described with reference to FIG. 5 in the data corresponding to each address are read, and the data of the data RAM 40 is stored in each of the clocks 6-9. When a] = X0, X1, X2, X3, the address a is set to a1, a2, a4, a3 from one previous clock, that is, the clock 5.

따라서, 데이타 램(40)의 어드레스 a1,a2,a4,a3에 의해 지시되는 영역들은 상기와 같이 구한 X0,X1,X2,X3의 값을 갖게 된다.Therefore, the regions indicated by the addresses a1, a2, a4, a3 of the data RAM 40 have the values of X0, X1, X2, X3 obtained as described above.

이때, 각 클록(5∼8)에서 원래의 어드레스 a1,a2,a3,a4는 1씩 증가시키게 된다.(a1=a1+1, a2=a2+1, a3=a3+1, a4=a4+1)At this time, the original addresses a1, a2, a3, a4 are increased by 1 in each of the clocks 5 to 8 (a1 = a1 + 1, a2 = a2 + 1, a3 = a3 + 1, a4 = a4 +). One)

또한, m 레지스터(50)는 실수저장부(10a)에서 출력되는 어드레스[cosptr] 및 허수저장부(10b)에서 출력되는 어드레스[sinptr]에 의해 롬(20)에서 출력되는 값들이 저장출력되며, t 레지스터(60) 및 d 레지스터(70)는 데이타 어드레싱 레지스터(30)로 부터 전달되는 어드레스[a1][a2][a3][a4]에 의해 데이타 램(40)에서 출력되는 값들을 저장 및 출력하게 된다.In addition, the m register 50 stores and outputs values output from the ROM 20 by an address [cosptr] output from the real storage unit 10a and an address [sinptr] output from the imaginary storage unit 10b. The t register 60 and the d register 70 store and output the values output from the data RAM 40 by the addresses [a1] [a2] [a3] [a4] transmitted from the data addressing register 30. Done.

도 7은 도 1에서와 같은 버터플라이 단위로 이루어진 전체를 상기와 같은 과정으로 버터플라이를 반복하여 FFT 계산이 이루어질 수 있도록 하는 것으로, 버터플라이가 반복되는 루프(loop)가 존재하게 될때, 제어도표를 나타낸 것이다.FIG. 7 is a diagram illustrating the FFT calculation by repeating the butterfly in the same process as described above with the entire butterfly unit as shown in FIG. 1, when a loop in which the butterfly is repeated exists. It is shown.

클럭(5)∼클럭(9)까지가 반복되는 사이클이며, 버터플라이가 하나이상 존재하게 될때, 반복되는 수가 N이라고 가정하면, 요구되는 사이클(cycle)은 5N+4로 나타낼 수 있으며, 따라서 하나의 버터플라이에 요구되는 사이클은 9 이다.If clocks 5 to 9 are repeated cycles, and if more than one butterfly exists, assuming that the number of repetitions is N, the required cycle can be represented by 5N + 4, so one The cycle required for the butterfly is nine.

그리고, 버터플라이가 두개 존재하면 즉, N=2이면, 도표에서와 같이, 14 사이클이 된다.If there are two butterflies, that is, N = 2, then 14 cycles, as shown in the diagram.

상기와 같이 버터플라이의 반복이 존재하게 될 경우 도 1을 보게 되면, 한 그룹내에서는 q의 값이 같지만, 그룹을 넘어서게 되면, 그 값이 달라지게 되므로, 이에 맞추기 위하여 클록(11) 및 클록(12)에서와 같이, 계수 어드레싱 레지스터(10)의 어드레스 레지스터인 cosptr 및 sinptr의 값을 1씩 증가시키게 된다.When the repetition of the butterfly is present as shown in FIG. 1, when the value of q is the same in one group, but the value is different when the group is exceeded, the clock 11 and the clock ( As in 12), the values of cosptr and sinptr, which are address registers of the coefficient addressing register 10, are increased by one.

또한, 한 그룹이 끝나는 시점으로 부터 다음 그룹이 시작하게 될 경우 데이타 어드레싱 레지스터(30)의 a1,a2,a3,a4의 값들은 1보다 큰값만큼 증가가 되므로, 이러한 증감을 하여 어드레스 레지스터 a0의 값을 가산하도록 한다.Also, when the next group starts from the end of one group, the values of a1, a2, a3, a4 of the data addressing register 30 are increased by a value larger than 1, so that the value of the address register a0 is increased. To be added.

이때, 위상각 q가 0이거나 또는 π/2일 경우에는 sin값 또는 cos값이 0 또는 1이 되므로, 그 식이 단순해지게 된다.At this time, when the phase angle q is 0 or π / 2, the sin value or the cos value is 0 or 1, and the equation is simplified.

즉, 계산량이 줄어들게 되므로써, 상기와 같은 위상각을 갖게 될 경우에 이에 맞추어 제어를 하게 되면, 빠른 연산이 가능해지는 것이다.That is, since the amount of calculation is reduced, if the phase angle as described above is controlled accordingly, fast calculation is possible.

도 8은 q가 0일 경우의 실행 수학식의 기본제어개념을 나타낸 도표이며, 도 9는 q가 0일 경우 실제 장치에서 이루어지는 제어도표를 나타낸 것이고. 도 10은 q가 0일 경우에 루프가 존재할 경우를 나타낸 제어도표이다.FIG. 8 is a diagram illustrating a basic control concept of an execution equation when q is 0, and FIG. 9 is a diagram showing a control diagram performed in an actual device when q is 0. FIG. 10 is a control diagram illustrating a case where a loop exists when q is 0. FIG.

q값이 0이되면, cosq=1이고, sinq=0이 되므로,When q is 0, cosq = 1 and sinq = 0,

X'[a]=X[a]+cosq*X[b]-sinq*Y[b]를 예를 들면, 이식은 X'[a]=X[a]+X[b]가 된다.For example, X '[a] = X [a] + cosq * X [b] -sinq * Y [b], and the transplantation is X' [a] = X [a] + X [b].

도 8에 도시된 실행 수학식에서와 같이, 그 식이 단순해짐을 알 수 있다.As can be seen from the execution equation shown in Fig. 8, the equation is simplified.

여기서, 도 10에 도시된 제어도표에서,Here, in the control diagram shown in FIG.

루프가 없을 경우에는 1, 2, 4, 10, 11, 12, 13의 클럭순으로 진행이 이루어지게 되며, 루프가 5,6,7,8,9 클록까지 존재하게 될 경우에 루프를 두번만 반복실행한다고 가정하면, 즉, 버터플라이 3개를 연속실행한다고 가정하면, 1, 2, 3, 5, 6, 7, 8, 5, 6, 7, 9, 10, 11, 12, 13의 클럭순서로 제어진행된다.If there is no loop, it proceeds in clock order of 1, 2, 4, 10, 11, 12, 13, and only if the loop exists up to 5, 6, 7, 8, 9 clocks Suppose we run repeatedly, i.e., we run three butterflies in succession, 1, 2, 3, 5, 6, 7, 8, 5, 6, 7, 9, 10, 11, 12, 13 Control proceeds in order.

즉, 루프를 반복 진행하게 될때, 루프를 빠져 나오게 될때, 마지막 클록(8)은 실행하지 않고, 클록(9)에 대하여 제어를 실행하게 되는 것이다.That is, when the loop is repeated, when the loop is exited, the last clock 8 is not executed, and control is performed on the clock 9.

도 11, 도 12, 도 13은 q가 π/2 값을 가질 경우에 기본개념, 실제 블록에서의 진행 제어도표, 루프가 존재할 경우를 나타낸 제어도표이다.11, 12, and 13 are diagrams illustrating a basic concept, a progress control diagram in an actual block, and a loop in a case where q has a value of π / 2.

도 13에서와 같은 경우에도 상기 클록 진행제어순서와 동일하게 이루어진다.Even in the case of FIG. 13, the procedure is the same as the clock progress control procedure.

이와 같이 첨부된 제어도표와 같은 실행수순으로, 도 4에서와 같은 장치가 제어되어지면서, 각 버터플라이의 계산을 실행하여 전체의 FFT 계산을 실행하게 된다.As described above, in the execution procedure as shown in the attached control diagram, the apparatus as shown in FIG. 4 is controlled, and the entire FFT calculation is performed by executing the calculation of each butterfly.

앞서 도 1에서와 같이 FFT 플로우는 버터플라이의 단위구조로 이루어지게 되는데, q값이 각 단위별로 변화되어지고 있는 바,As shown in FIG. 1, the FFT flow has a unit structure of a butterfly, and the q value is changed for each unit.

일반적인 값, 0, π/2의 q값에 해당하는 각 모드별로 개별 명령어를 갖고 각 부를 제어하여 FFT 계산을 수행하게 된다.The FFT calculation is performed by controlling each part with a separate command for each mode corresponding to the general value, q value of 0, π / 2.

즉, 도 1에서와 같이, 첫번째 스테이지에서는 q값이 모두 0이고, 버터플라이가 4개이므로, 도 10에서와 같은 제어수순을 갖게 되며, 루프는 3번 반복실행하면 되는 것이다.That is, as shown in FIG. 1, in the first stage, all q-values are zero and four butterflies have the same control procedure as in FIG. 10, and the loop may be executed three times.

또한, 두번째 스테이지에서는 상부그룹에서도 q가 0인 모드, 하부 그룹에서는 q가 π/2인 모드로, 세번째 스테이지에서는 q가 임의의 값인 버터플라이에 해당하는 모드로 각각의 명령어를 선택하여 각 부를 제어하도록 하므로써, 각각의 버터플라이의 계산을 통하여 완전한 FFT 계산과정을 수행할 수 있게 되는 것이다.In the second stage, each command is controlled by selecting each instruction in the mode where q is 0 in the upper group, the mode in which q is π / 2 in the lower group, and the mode in which q is a random value in the third stage. By doing so, each butterfly can be used to perform a complete FFT calculation.

이상에서 설명한 바와 같이, 하나의 멀티플라이어와 두개의 가감산 연산기, 네개의 누산기(accumulator)(X0,X1,X2,X3)로 이루어지는 MAC(multiply - and - accumulate) 구조로써, 간단하고 빠른 FFT 계산 구조를 제공할 수 있게 된다.As described above, a MAC (multiply-and-accumulate) structure consisting of one multiplier, two adder / subtracters, and four accumulators (X0, X1, X2, and X3) enables simple and fast FFT calculation. To provide a structure.

Claims (3)

위상각(q)에 대한 트리들 팩터스(twiddle factors)값의 실수부에 대한 어드레스를 [cosptr]저장하는 실수저장부(10a)와 허수부에 대한 어드레스[sinptr]를 저장하는 허수저장부(10b)를 포함하는 계수 어드레싱 레지스터(coefficient addressing registers)(10)와, 입력되는 어드레스에 따라 저장되어 있는 FFT 계수를 출력하는 롬(ROM)(20)과, 변환하고자 하는 입력 데이타 및 변환된 데이타의 어드레스[a,a0∼a4]를 저장하는 데이타 어드레싱 레지스터(data addressing registers)(30)와, 입력되는 데이타 어드레스에 따라서 읽어온 데이타를 출력하고, 변환된 데이타를 저장하는 데이타 램(data RAM)(40)과, 상기 롬(20)으로 부터 출력된 FFT 계수를 일시 저장한 후 출력하는 m 레지스터(50)과, 상기 데이타 램(40)으로 부터 출력된 데이타를 일시 저장한 후 출력하는 t 레지스터(60) 및 d 레지스터(70)와, 상기 m 레지스터(50)로 부터 출력되는 FFT 계수와 t 레지스터(60)에서 출력되는 데이타를 승산하는 멀티플라이어(multiplier)(80)와, 멀티플라이어(80)에서 연산된 결과를 일시 저장한 후 출력하는 p 레지스터(90)와,Real number storage unit 10a for storing the address of the real part of the tree factor value (twsp) for the phase angle (q) and an imaginary storage unit for storing the address [sinptr] for the imaginary part ( Coefficient addressing registers 10 including 10b), a ROM 20 for outputting FFT coefficients stored according to an input address, input data to be converted and converted data Data addressing registers 30 which store addresses [a, a0 to a4], and data RAMs which output the read data in accordance with the input data address and store the converted data ( 40), the m register 50 for temporarily storing and outputting the FFT coefficients output from the ROM 20, and the t register for temporarily storing and outputting the data output from the data RAM 40 ( 60 and d register 70, The multiplier 80 multiplying the FFT coefficient output from the m register 50 and the data output from the t register 60, and the result calculated by the multiplier 80 is temporarily stored and output. P register 90, 상기 p 레지스터(90)로 부터 출력된 승산결과값과 상기 d 레지스터(70)로 부터 출력되는 입력 데이타의 가감연산 실행하여 연산결과를 해당 XO 레지스터(110) 및 X2 레지스터(120)에 저장하고, 상기 XO 레지스터(110) 및 X2 레지스터(120)의 출력 데이타 즉, 이전 연산결과와 P 레지스터(90)로 부터 출력되는 데이타와의 가감연산을 실행하는 연산기(100)와,Perform an additive operation of the multiplication result value output from the p register 90 and the input data output from the d register 70 to store the operation result in the corresponding XO register 110 and X2 register 120, An arithmetic operator 100 for performing an additive operation of the output data of the XO register 110 and the X2 register 120, that is, the previous operation result and the data output from the P register 90; 상기 p 레지스터(90)로 부터 출력된 승산결과값과 상기 d 레지스터(70)로 부터 출력되는 입력 데이타의 가감연산 실행하여 연산결과를 해당 X1 레지스터(140) 및 X3 레지스터(150)에 저장하고, 상기 X1 레지스터(110) 및 X3 레지스터(12)의 출력 데이타 즉, 이전 연산결과와 P 레지스터(90)로 부터 출력되는 데이타와의 연산을 실행하는 연산기(130)와,Perform an additive operation of the multiplication result value output from the p register 90 and the input data output from the d register 70 to store the operation result in the corresponding X1 register 140 and the X3 register 150, An arithmetic unit 130 for performing an operation on the output data of the X1 register 110 and the X3 register 12, that is, the previous calculation result and the data output from the P register 90; 상기 XO 레지스터(110), X1 레지스터(120), X2 레지스터(140), X3 레지스터(150)에서 출력되는 값들의 그 수치값을 제한하여 출력하는 수치값제한부(160)로 구성되며,And a numerical value limiting unit 160 for limiting and outputting numerical values of the values output from the XO register 110, the X1 register 120, the X2 register 140, and the X3 register 150. 상기 각 부의 출력값들 및 상기 연산기(100)(130)의 논리연산의 제어는 진행되는 각 클럭(clock) 마다 제어수단으로 부터 전달되는 제어신호에 의해 제어되어짐을 특징으로 하는 패스트 퓨리에 변환(FFT) 장치.Fast Fourier Transform (FFT) characterized in that the control of the output values of each part and the logic operation of the calculator (100, 130) is controlled by a control signal transmitted from the control means for each clock in progress. Device. 제 1항에 있어서, 상기 제어수단은 위상각(q)에 따른 각 모드별로 개별 명령어를 갖고, 이에 따라서, 각 모드에 따라 제어신호를 출력하여 상기 각 부의 입출력제어를 진행하도록 하는 것을 특징으로 하는 패스트 퓨리에 변환(FFT) 장치.According to claim 1, wherein the control means has a separate command for each mode according to the phase angle (q), accordingly, to output the control signal in accordance with each mode to perform the input and output control of each part Fast Fourier Transform (FFT) device. 위상각(q)을 판별하는 과정과, 판별된 위상각(q)에 따라서 FFT 변환을 위하여 구성되는 각 레지스터의 값의 출력 및 연산을 위한 제어 모드를 결정하는 과정과, 결정되는 제어모드에 따른 명령신호를 각각의 레지스터 및 연산수단에 출력하여 FFT 연산을 실행 제어하는 과정을 포함하는 것을 특징으로 하는 패스트 퓨리에 변환(FFT) 제어 방법.Determining a phase angle q, determining a control mode for outputting and calculating a value of each register configured for FFT conversion according to the determined phase angle q, and determining a control mode according to the determined control mode And a step of outputting a command signal to each register and arithmetic means to perform execution control of the FFT operation.
KR1019980011642A 1997-08-30 1998-04-02 Fast Fourier Transform (FFT) Device and Control Method KR100284181B1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1019980011642A KR100284181B1 (en) 1998-04-02 1998-04-02 Fast Fourier Transform (FFT) Device and Control Method
US09/144,284 US6317770B1 (en) 1997-08-30 1998-08-31 High speed digital signal processor
US09/902,603 US6463451B2 (en) 1997-08-30 2001-07-12 High speed digital signal processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980011642A KR100284181B1 (en) 1998-04-02 1998-04-02 Fast Fourier Transform (FFT) Device and Control Method

Publications (2)

Publication Number Publication Date
KR19990079171A true KR19990079171A (en) 1999-11-05
KR100284181B1 KR100284181B1 (en) 2001-03-02

Family

ID=65860708

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980011642A KR100284181B1 (en) 1997-08-30 1998-04-02 Fast Fourier Transform (FFT) Device and Control Method

Country Status (1)

Country Link
KR (1) KR100284181B1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100416641B1 (en) * 2001-07-20 2004-02-05 학교법인대우학원 The Calculation Methods and Cricuits for High-Speed FFT on Programmable Processors
KR100692997B1 (en) * 2001-04-17 2007-03-12 삼성전자주식회사 Fast fourier transform apparatus
US7464127B2 (en) 2002-07-22 2008-12-09 Samsung Electronics Co., Ltd. Fast fourier transform apparatus
KR100923892B1 (en) * 2005-03-11 2009-10-28 퀄컴 인코포레이티드 Fast fourier transform twiddle multiplication

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100628303B1 (en) 2004-09-03 2006-09-27 한국전자통신연구원 Method and apparatus of the variable points IFFT/FFT
KR102233066B1 (en) 2020-05-15 2021-03-29 양연철 Air vehicle function of drone

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100692997B1 (en) * 2001-04-17 2007-03-12 삼성전자주식회사 Fast fourier transform apparatus
KR100416641B1 (en) * 2001-07-20 2004-02-05 학교법인대우학원 The Calculation Methods and Cricuits for High-Speed FFT on Programmable Processors
US7464127B2 (en) 2002-07-22 2008-12-09 Samsung Electronics Co., Ltd. Fast fourier transform apparatus
KR100923892B1 (en) * 2005-03-11 2009-10-28 퀄컴 인코포레이티드 Fast fourier transform twiddle multiplication

Also Published As

Publication number Publication date
KR100284181B1 (en) 2001-03-02

Similar Documents

Publication Publication Date Title
US4689762A (en) Dynamically configurable fast Fourier transform butterfly circuit
US6366936B1 (en) Pipelined fast fourier transform (FFT) processor having convergent block floating point (CBFP) algorithm
JPH02501601A (en) 2D discrete cosine transform processor
US4899301A (en) Signal processor for rapidly calculating a predetermined calculation a plurality of times to typically carrying out FFT or inverse FFT
KR101222597B1 (en) Method for reading and writing a memory, memory control method and arithmetic unit using the same
US6317770B1 (en) High speed digital signal processor
JP4199100B2 (en) Function calculation method and function calculation circuit
KR100284181B1 (en) Fast Fourier Transform (FFT) Device and Control Method
US7437395B2 (en) FFT operating apparatus of programmable processors and operation method thereof
US4563750A (en) Fast Fourier transform apparatus with data timing schedule decoupling
US20190294650A1 (en) Multi-functional computing apparatus and fast fourier transform computing apparatus
US6711596B1 (en) Method and apparatus for determining the approximate valve of a logarithmic function
US20070260660A1 (en) Efficient mapping of FFT to a reconfigurable parallel and pipeline data flow machine
US5964824A (en) Two-dimensional IDCT circuit with input adder out output shifter for reducing addition operations during rounding-up
US20150006604A1 (en) Method and apparatus for performing a fft computation
EP0412826A1 (en) Digital signal processing
EP0037130B1 (en) Arrangement for calculating the discrete fourier transform by means of two circular convolutions
JP2732673B2 (en) Discrete cosine transformer
US6438568B1 (en) Method and apparatus for optimizing conversion of input data to output data
JPS6243774A (en) Data processor
KR101842937B1 (en) Multifuntional proessing appratus
EP1078313B1 (en) Method and apparatus for determining the approximate value of a logarithmic function
CN105893326B (en) The device and method for realizing 65536 point FFT based on FPGA
JP3872724B2 (en) Rotation factor table for fast Fourier transform and fast Fourier transform device using the same
JP2960595B2 (en) Digital signal processor

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

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee