KR101074112B1 - 푸리에 변환 장치 및 방법 - Google Patents

푸리에 변환 장치 및 방법 Download PDF

Info

Publication number
KR101074112B1
KR101074112B1 KR1020080126668A KR20080126668A KR101074112B1 KR 101074112 B1 KR101074112 B1 KR 101074112B1 KR 1020080126668 A KR1020080126668 A KR 1020080126668A KR 20080126668 A KR20080126668 A KR 20080126668A KR 101074112 B1 KR101074112 B1 KR 101074112B1
Authority
KR
South Korea
Prior art keywords
value
complex
sequence
values
imaginary
Prior art date
Application number
KR1020080126668A
Other languages
English (en)
Other versions
KR20100068022A (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 KR1020080126668A priority Critical patent/KR101074112B1/ko
Publication of KR20100068022A publication Critical patent/KR20100068022A/ko
Application granted granted Critical
Publication of KR101074112B1 publication Critical patent/KR101074112B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm

Abstract

푸리에 변환 장치는 입력 시퀀스를 구성하는 복수 개의 분할 시퀀스를 바탕으로 미리 정해진 제1 버터플라이 연산을 수행하여 2N개의 복소수값을 포함하는 제1 연산 시퀀스를 생성하고, 제1 연산 시퀀스를 바탕으로 (N-1)번의 버터플라이 연산을 수행하여 2N개의 복소수값을 포함하는 출력 시퀀스를 생성한다. 이를 통해 푸리에 변환 장치의 하드웨어 용량 및 푸리에 변환을 위한 대기시간을 줄일 수 있다.
FFT, OFDM, 레지스터

Description

푸리에 변환 장치 및 방법{APPARATUS AND METHOD FOR EXECUTING FOURIER TRANSFORM}
본 발명은 푸리에 변환 장치 및 방법에 관한 것이다. 특히 본 발명은 직교 주파수 분할 다중화(Orthogonal Frequency Division Multiplexing, OFDM) 변조를 위한 푸리에 변환 장치 및 방법에 관한 것이다.
본 발명은 지식경제부 및 정보통신연구진흥원의 IT성장동력기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2006-S-071-03, 과제명: 초고속 멀티미디어 전송 UWB 솔루션 개발].
직교 주파수 분할 다중화(Orthogonal Frequency Division Multiplexing, OFDM) 방식은 고속 전송률을 가지는 데이터를 낮은 전송률을 가지는 많은 수의 데이터열로 나누고, 이를 다수의 부반송파를 사용하여 동시에 전송하는 방식이다. 이때 부반송파를 만들어 데이터를 싣는 과정에 필요한 블록이 고속 푸리에 변환(Fast Fourier Transform Processor, FFT) 프로세서이다.
이와 같은 OFDM 방식을 따르는 시스템에서 FFT 프로세서는 하드웨어가 가장 많이 필요한 블록중의 하나이기 때문에 하드웨어용량, 전력소모, 동작속도 측면에 서 효율적인 구현이 필요하다.
도 1은 종래의 고속 푸리에 변환 프로세서를 도시한 도면이다.
도 1에 도시된 바와 같이, 종래의 고속 푸리에 변환 프로세서(Fast Fourier Transform Processor, 이하에서는 'FFT 프로세서'라고도 함)(100)는 복수 개의 연산부(101, 105, 113, 117, 125), 복수 개의 저장부(103, 107, 115, 119, 127), 복수 개의 회전인자 적용부(109, 121) 및 복수 개의 곱셈부(111, 123)를 포함하며, 이와 같은 구성요소들을 이용하여 입력 시퀀스에 대해 고속 푸리에 변환(Fast Fourier Transform, 이하에서는 'FFT'라고도 함)을 수행하여 출력 시퀀스를 출력한다.
이때 도 1에 도시된 FFT 프로세서(100)는 32개의 복소수값을 포함하는 입력 시퀀스에 대해 고속 푸리에 변환을 수행하여 32개의 출력값을 포함하는 출력 시퀀스를 출력하는 경우이고, 이하에서는 입력 시퀀스가 32개의 복소수값을 포함하는 경우를 예로 들어 설명하지만 반드시 이에 한정되는 것은 아니다.
입력 시퀀스가 32개의 복소수값을 포함하는 경우, FFT 프로세서(100)는 5번의 스테이지(Stage)에 걸쳐 매 스테이지마다 버터플라이 연산을 수행한다. 이때 각각의 스테이지를 순서에 따라 제1 스테이지, 제2 스테이지, 제3 스테이지, 제4 스테이지 및 제5 스테이지라고 할 수 있다.
제1 스테이지는 제1 연산부(101) 및 제1 저장부(103)를 통해 수행되며, 제1 연산부(101)는 입력 시퀀스 중 순차적으로 입력되는 16개의 복소수값을 제1 저장부(103)에 저장한 후, 17번째 복소수값이 입력되는 순간부터 버터플라이 연산을 수 행하여 32개의 복소수값을 포함하는 제1 연산 시퀀스를 출력한다. 이때 제1 저장부(103)는 16개의 복소수값을 저장할 수 있다.
제2 스테이지는 제2 연산부(105) 및 제2 저장부(107)를 통해 수행되며, 제2 연산부(105)는 제1 연산 시퀀스 중 순차적으로 입력되는 8개의 복소수값을 제2 저장부(107)에 저장한 후, 9번째 복소수값이 입력되는 순간부터 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제2 연산 시퀀스를 출력한다. 이때 제2 저장부(107)는 8개의 복소수값을 저장할 수 있다.
제1 회전인자 적용부(109)는 제1 회전인자를 제1 곱셈부로 전달하고, 제1 곱셈부(111)는 제2 연산 시퀀스에 제1 회전인자(Twiddle Factor)를 적용하여 제1 회전 시퀀스를 출력한다.
제3 스테이지는 제3 연산부(113) 및 제3 저장부(115)를 통해 수행되며, 제3연산부(113)는 제1 회전 시퀀스 중 순차적으로 입력되는 4개의 복소수값을 제3 저장부(115)에 저장한 후, 5번째 복소수값이 입력되는 순간부터 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제3 연산 시퀀스를 출력한다. 이때 제3 저장부(115)는 4개의 복소수값을 저장할 수 있다.
제4 스테이지는 제4 연산부(117) 및 제4 저장부(119)를 통해 수행되며, 제4 연산부(117)는 제3 연산 시퀀스 중 순차적으로 입력되는 2개의 복소수값을 제4 저장부(119)에 저장한 후, 3번째 복소수값이 입력되는 순간부터 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제4 연산 시퀀스를 출력한다. 이때 제4 저장부(119)는 2개의 복소수값을 저장할 수 있다.
제2 회전인자 적용부(121)는 제2 회전인자를 제2 곱셈부로 전달하고, 제2 곱셈부(123)는 제4 연산 시퀀스에 제2 회전인자를 적용하여 제2 회전 시퀀스를 출력한다.
제5 스테이지는 제5 연산부(125) 및 제5 저장부(127)를 통해 수행되면, 제5 연산부(125)는 제2 회전 시퀀스 중 순차적으로 입력되는 1개의 복소수값을 제5 저장부(127)에 저장한 후, 2번째 복소수값이 입력되는 순간부터 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제5 연산 시퀀스를 출력한다. 이때 제5 저장부(127)는 1개의 복소수값을 저장할 수 있다. 또한 제5 연산 시퀀스는 출력 시퀀스에 해당한다.
도 2는 종래의 고속 푸리에 변환 프로세서가 제1 스테이지를 수행하기 위한 제1 연산부 및 제1 저장부를 도시한 도면이다.
도 2에 도시된 바와 같이, 제1 저장부(103)는 입력 시퀀스에 포함된 각각의 복소수값의 실수값과 허수값을 저장하기 위해 2개의 레지스터(103a, 103b)를 포함하며, 각각의 레지스터(103a, 103b)는 16개의 워드를 저장할 수 있어야 한다. 이때 각 워드가 k bits로 이루어져 있다면 각 레지스터(103a, 103b)의 크기는 2*16*k bits가 된다.
제1 연산부(101)는 4개의 덧셈부(101a, 101b, 101c, 101d), 3개의 보수 생성부(101e, 101f, 101g) 및 6개의 신호 선택부(101h, 101i, 101j, 101k, 101m, 101n)를 포함한다.
본 발명이 이루고자 하는 기술적 과제는 푸리에 변환을 위해 필요한 하드웨어 용량 및 전력소모를 줄일 수 있는 장치 및 방법을 제공하는 것이다.
본 발명의 특징에 따른 푸리에 변환 방법은 2N개의 복소수값을 포함하는 입력 시퀀스를 푸리에 변환하는 방법으로써, 입력 시퀀스를 구성하는 복수 개의 분할 시퀀스를 바탕으로 미리 정해진 제1 버터플라이 연산을 수행하여 2N개의 복소수값을 포함하는 제1 연산 시퀀스를 생성하는 단계, 그리고 제1 연산 시퀀스를 바탕으로 (N-1)번의 버터플라이 연산을 수행하여 2N개의 복소수값을 포함하는 출력 시퀀스를 생성하는 단계를 포함하고, 이때 N은 양의 정수이다.
이때 제1 연산 시퀀스를 생성하는 단계는 입력 시퀀스를 구성하는 제1 분할 시퀀스 및 제2 분할 시퀀스를 바탕으로 제1 버터플라이 연산을 수행한다.
또한 제1 분할 시퀀스 및 제2 분할 시퀀스의 각각은 2(N-1)개의 복소수값을 포함하고, 제1 연산 시퀀스를 생성하는 단계는 제1 분할 시퀀스에 포함된 2(N-1)개의 복소수값의 각각의 실수값 및 상기 제2 분할 시퀀스에 포함된 2(N-1)개의 복소수값의 각각의 실수값을 바탕으로 미리 정해진 연산을 수행하여 제1 연산 시퀀스에 포함된 2N개의 복소수값에 각각 대응하는 2N개의 실수값을 생성하는 단계, 제1 분할 시퀀스에 포함된 2(N-1)개의 복소수값의 각각의 허수값 및 제2 분할 시퀀스에 포함된 2(N-1)개의 복소수값의 각각의 허수값을 바탕으로 미리 정해진 연산을 수행하여 제1 연산 시퀀스에 포함된 2N개의 복소수값에 각각 대응하는 2N개의 허수값을 생성하는 단계, 그리고 2N개의 실수값 및 2N개의 허수값을 바탕으로 제1 연산 시퀀스를 생성하는 단계를 포함한다.
또한 N은 1보다 큰 양의 정수이고, 제1 연산 시퀀스를 생성하는 단계는 입력 시퀀스를 구성하는 제1 분할 시퀀스, 제2 분할 시퀀스, 제3 분할 시퀀스 및 제4 분할 시퀀스를 바탕으로 제1 버터플라이 연산을 수행하여 제1 복소수값 그룹 및 제2 복소수값 그룹을 포함하는 제1 연산 시퀀스를 생성하며, 제1 복소수값 그룹 및 제2 복소수값 그룹의 각각은 2(N-1)개의 복소수값을 포함한다.
또한 제1 분할 시퀀스 및 제3 분할 시퀀스의 각각은 2(N-2)개의 복소수값을 포함하고, 제1 복소수값 그룹 및 제2 복소수값 그룹을 포함하는 제1 연산 시퀀스를 생성하는 단계는 제1 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 실수값 및 제3 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 실수값을 바탕으로 미리 정해진 연산을 수행하여 제1 복소수값 그룹에 포함된 2(N-1)개의 복소수값에 각각 대응 하는 2(N-1)개의 실수값을 생성하는 단계, 제1 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 허수값 및 제3 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 허수값을 바탕으로 미리 정해진 연산을 수행하여 제1 복소수값 그룹에 포함된 2(N-1)개의 복소수값에 각각 대응하는 2(N-1)개의 허수값을 생성하는 단계, 그리고 2(N-1)개의 실수값 및 2(N-1)개의 허수값을 바탕으로 제1 복소수값 그룹을 생성하는 단계를 포함한다.
또한 제2 분할 시퀀스 및 제4 분할 시퀀스의 각각은 2(N-2)개의 복소수값을 포함하고, 제1 복소수값 그룹 및 제2 복소수값 그룹을 포함하는 제1 연산 시퀀스를 생성하는 단계는 제2 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 실수값 및 제4 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 실수값을 바탕으로 미리 정해진 연산을 수행하여 제2 복소수값 그룹에 포함된 2(N-1)개의 복소수값에 각각 대응하는 2(N-1)개의 실수값을 생성하는 단계, 제2 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 허수값 및 제4 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 허수값을 바탕으로 미리 정해진 연산을 수행하여 제2 복소수값 그룹에 포함된 2(N-1)개의 복소수값에 각각 대응하는 2(N-1)개의 허수값을 생성하는 단계, 그리고 2(N-1)개 의 실수값 및 2(N-1)개의 허수값을 바탕으로 제1 복소수값 그룹을 생성하는 단계를 포함한다.
또한 출력 시퀀스를 생성하는 단계는 제1 복소수값 그룹 및 제2 복소수값 그룹을 바탕으로 미리 정해진 제2 버터플라이 연산을 수행하여 2N개의 복소수값을 포함하는 제2 연산 시퀀스를 생성하는 단계, 그리고 제2 연산 시퀀스를 바탕으로 (N-2)번의 버터플라이 연산을 수행하여 2N개의 복소수값을 포함하는 출력 시퀀스를 생성하는 단계를 포함한다.
또한 제2 연산 시퀀스를 생성하는 단계는 제1 복소수값 그룹에 포함된 2(N-1)개의 복소수값의 각각의 실수값 및 제2 복소수값 그룹에 포함된 2(N-1)개의 복소수값의 각각의 실수값을 바탕으로 미리 정해진 연산을 수행하여 제2 연산 시퀀스에 포함된 2N개의 복소수값에 각각 대응하는 2N개의 실수값을 생성하는 단계, 제1 복소수값 그룹에 포함된 2(N-1)개의 복소수값의 각각의 허수값 및 제2 복소수값 그룹에 포함된 2(N-1)개의 복소수값의 각각의 허수값을 바탕으로 미리 정해진 연산을 수행하여 제2 연산 시퀀스에 포함된 2N개의 복소수값에 각각 대응하는 2N개의 허수값을 생성하는 단계, 그리고 2N개의 실수값 및 2N개의 허수값을 바탕으로 제2 연산 시퀀스를 생성하는 단계를 포함한다.
본 발명의 다른 특징에 따른 푸리에 변환 장치는 2(N-1)개의 복소수값을 포함하는 제1 분할 시퀀스 및 2(N-1)개의 복소수값을 포함하는 제2 분할 시퀀스를 포함하는 입력 시퀀스를 푸리에 변환하는 장치로써, 제1 스테이지부 및 (N-1)개의 스테이지부를 포함한다. 제1 스테이지부는 제1 분할 시퀀스 및 상기 제2 분할 시퀀스를 바탕으로 미리 정해진 제1 버터플라이 연산을 수행하여 2N개의 복소수값을 포함하는 제1 연산 시퀀스를 생성한다. (N-1)개의 스테이지부는 제1 연산 시퀀스를 바탕으로 (N-1)번의 버터플라이 연산을 수행하여 2N개의 복소수값을 포함하는 출력 시퀀스를 생성한다.
이때 제1 스테이지부는 제1 분할 시퀀스에 포함된 2(N-1)개의 복소수값의 각각의 실수값 및 제2 분할 시퀀스에 포함된 2(N-1)개의 복소수값의 각각의 실수값을 바탕으로 덧셈연산을 수행하여 제1 연산 시퀀스에 포함된 2N개의 복소수값에 각각 대응하는 2N개의 실수값을 생성하는 실수값 연산부, 그리고 제1 분할 시퀀스에 포함된 2(N-1)개의 복소수값의 각각의 허수값 및 제2 분할 시퀀스에 포함된 2(N-1)개의 복소수값의 각각의 허수값을 바탕으로 덧셈연산을 수행하여 제1 연산 시퀀스에 포함된 2N개의 복소수값에 각각 대응하는 2N개의 허수값을 생성하는 허수값 연산부를 포함한다.
또한 실수값 연산부 또는 허수값 연산부는 제1 입력값의 2의 보수에 해당하는 제1 보수값을 생성하는 보수 생성부, 제1 입력값의 입력 순서에 따라 제1 입력값과 제1 보수값 중 하나를 출력하는 신호 선택부, 그리고 신호 선택부의 출력값과 제2 입력값에 대해 덧셈 연산을 수행하는 덧셈부를 포함한다.
본 발명의 또 다른 특징에 따른 푸리에 변환 장치는 2(N-2)개의 복소수값을 포함하는 제1 분할 시퀀스, 2(N-2)개의 복소수값을 포함하는 제2 분할 시퀀스, 2(N-2)개의 복소수값을 포함하는 제3 분할 시퀀스 및 2(N-2)개의 복소수값을 포함하는 제4 분할 시퀀스를 포함하는 입력 시퀀스를 푸리에 변환하는 장치로써, 제1 스테이지부, 제2 스테이지부 및 (N-2)개의 스테이지부를 포함한다. 제1 스테이지부는 제1 분할 시퀀스 및 제3 분할 시퀀스를 바탕으로 2(N-1)개의 복소수값을 포함하는 제1 복소수값 그룹을 생성하고, 제2 분할 시퀀스 및 제4 분할 시퀀스를 바탕으로 2(N-1)개의 복소수값을 포함하는 제2 복소수값 그룹을 생성한다. 제2 스테이지부는 제1 복소수값 그룹 및 제2 복소수값 그룹을 바탕으로 미리 정해진 제1 버터플라이 연산을 수행하여 2N개의 복소수값을 포함하는 제1 연산 시퀀스를 생성한다. (N-2)개의 스테이지부는 제1 연산 시퀀스를 바탕으로 (N-2)번의 버터플라이 연산을 수행하여 2N개의 복소수값을 포함하는 출력 시퀀스를 생성한다.
이때 제1 스테이지부는 제1 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각 의 실수값 및 제3 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 실수값을 바탕으로 덧셈연산을 수행하여 제1 복소수값 그룹에 포함된 2(N-1)개의 복소수값에 각각 대응하는 2(N-1)개의 실수값을 생성하는 제1 실수값 연산부, 제1 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 허수값 및 제3 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 허수값을 바탕으로 덧셈연산을 수행하여 제1 복소수값 그룹에 포함된 2(N-1)개의 복소수값에 각각 대응하는 2(N-1)개의 허수값을 생성하는 제1 허수값 연산부, 제1 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 실수값 및 제3 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 실수값을 바탕으로 덧셈연산을 수행하여 제1 복소수값 그룹에 포함된 2(N-1)개의 복소수값에 각각 대응하는 2(N-1)개의 실수값을 생성하는 제1 실수값 연산부, 그리고 제2 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 허수값 및 제4 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 허수값을 바탕으로 덧셈연산을 수행하여 제2 복소수값 그룹에 포함된 2(N-1)개의 복소수값에 각각 대응하는 2(N-1)개의 허수값을 생성하는 제1 허수값 연산부를 포함한다.
또한 제1 실수값 연산부, 제1 허수값 연산부, 제2 실수값 연산부 또는 제2 허수값 연산부 중 어느 하나는 제1 입력값의 2의 보수에 해당하는 제1 보수값을 생성하는 보수 생성부, 제1 입력값의 입력 순서에 따라 제1 입력값과 제1 보수값 중 하나를 출력하는 신호 선택부, 그리고 신호 선택부의 출력값과 제2 입력값에 대해 덧셈 연산을 수행하는 덧셈부를 포함한다.
또한 제2 스테이지부는 제1 복소수값 그룹에 포함된 2(N-1)개의 복소수값의 각각의 실수값 및 제2 복소수값 그룹에 포함된 2(N-1)개의 복소수값의 각각의 실수값을 바탕으로 덧셈연산을 수행하여 제1 연산 시퀀스에 포함된 2N개의 복소수값에 각각 대응하는 2N개의 실수값을 생성하는 실수값 연산부, 그리고 제1 복소수값 그룹에 포함된 2(N-1)개의 복소수값의 각각의 허수값 및 제2 복소수값 그룹에 포함된 2(N-1)개의 복소수값의 각각의 허수값을 바탕으로 덧셈연산을 수행하여 제1 연산 시퀀스에 포함된 2N개의 복소수값에 각각 대응하는 2N개의 허수값을 생성하는 허수값 연산부를 포함한다.
또한 실수값 연산부 또는 허수값 연산부는 제1 입력값의 2의 보수에 해당하는 제1 보수값을 생성하는 보수 생성부, 제1 입력값의 입력 순서에 따라 제1 입력값과 제1 보수값 중 하나를 출력하는 신호 선택부, 그리고 신호 선택부의 출력값과 제2 입력값에 대해 덧셈 연산을 수행하는 덧셈부를 포함한다.
본 발명의 특징에 따르면 푸리에 변환을 수행하기 위한 레지스터 및 덧셈기 를 감소시킴으로써 푸리에 변환 장치의 하드웨어 용량을 줄일 수 있고, 푸리에 변환 장치의 레지스터를 감소시킴으로써 푸리에 변환을 위한 대기시간을 줄일 수 있다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "…부", "…기", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
이제 도면을 참고하여 본 발명의 실시예에 따른 푸리에 변환 장치 및 방법에 대해 자세히 설명한다.
먼저 도 3을 참고하여 본 발명의 제1 실시예에 따른 푸리에 변환 장치(300)에 대해 설명한다. 이때 도 3은 2N개의 복소수값 특히, 25개의 복소수값을 포함하는 입력 시퀀스가 입력되는 경우에 대응하는 본 발명의 제1 실시예에 따른 푸리에 변환 장치(300)에 대해 설명하지만, 본 발명의 제1 실시예가 반드시 이에 한정되는 것은 아니다.
도 3은 본 발명의 제1 실시예에 따른 푸리에 변환 장치의 구성을 도시한 도면이다.
도 3에 도시된 바와 같이, 본 발명의 제1 실시예에 따른 푸리에 변환 장치(300)는 25(=32)개의 복소수값을 포함하는 입력 시퀀스를 입력받고, 입력된 입력 시퀀스에 대해 푸리에 변환을 수행하여 출력 시퀀스를 출력하며, 제1 스테이지부(310), 제2 스테이지부(320), 제1 회전인자 적용부(330), 제3 스테이지부(340), 제4 스테이지부(350), 제2 회전인자 적용부(360) 및 제5 스테이지부(370)를 포함한다.
제1 스테이지부(310)는 입력된 입력 시퀀스에 포함된 32개의 복소수값을 바탕으로 미리 정해진 제1 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제1 연산 시퀀스를 출력한다. 이때 제1 스테이지부(310)는 클럭(Clock) 당 2개의 복소수값을 입력받을 수 있다.
제2 스테이지부(320)는 제1 연산 시퀀스에 포함된 32개의 복소수값을 바탕으 로 미리 정해진 제2 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제2 연산 시퀀스를 출력하며, 제1 연산부(321) 및 제1 저장부(323)를 포함한다. 이때 제1 저장부(323)는 8(=25/4)개의 복소수값을 저장할 수 있다.
제1 회전인자 적용부(330)는 제2 연산 시퀀스에 포함된 32개의 복소수값에 미리 저장된 제1 회전인자를 적용하여 제2 연산 시퀀스에 포함된 32개의 복소수값에 각각 대응하는 32개의 복소수값을 포함하는 제1 회전인자 적용 시퀀스를 출력한다.
제3 스테이지부(340)는 제1 회전인자 적용 시퀀스에 포함된 32개의 복소수값을 바탕으로 미리 정해진 제3 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제3 연산 시퀀스를 출력하며, 제2 연산부(341) 및 제2 저장부(343)를 포함한다. 이때 제2 저장부(343)는 4(=25/8)개의 복소수값을 저장할 수 있다.
제4 스테이지부(350)는 제3 연산 시퀀스에 포함된 32개의 복소수값을 바탕으로 미리 정해진 제4 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제4 연산 시퀀스를 출력하며, 제3 연산부(351) 및 제3 저장부(353)를 포함한다. 이때 제3 저장부(353)는 2(=25/16)개의 복소수값을 저장할 수 있다.
제2 회전인자 적용부(360)는 제4 연산 시퀀스에 포함된 32개의 복소수값에 미리 저장된 제2 회전인자를 적용하여 제4 연산 시퀀스에 포함된 32개의 복소수값에 각각 대응하는 32개의 복소수값을 포함하는 제2 회전인자 적용 시퀀스를 출력한다.
제5 스테이지부(370)는 제2 회전인자 적용 시퀀스에 포함된 32개의 복소수값을 바탕으로 미리 정해진 제5 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제5 연산 시퀀스를 출력하며, 제4 연산부(371) 및 제4 저장부(373)를 포함한다. 이때 제5 연산 시퀀스는 출력 시퀀스에 해당한다. 또한 제4 저장부(373)는 1(=25/32)개의 복소수값을 저장할 수 있다.
다음은 도 4를 참고하여 본 발명의 제1 실시예에 따른 푸리에 변환 장치(300)의 제1 스테이지부(310)에 대해 설명한다.
도 4는 본 발명의 제1 실시예에 따른 푸리에 변환 장치의 제1 스테이지부의 구성을 도시한 도면이다.
도 4에 도시된 바와 같이, 본 발명의 제1 실시예에 따른 제1 스테이지부(310)는 입력 시퀀스를 구성하는 제1 분할 시퀀스 및 제2 분할 시퀀스를 바탕으로 미리 정해진 제1 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제1 연산 시퀀스를 출력하며, 실수값 연산부(311) 및 허수값 연산부(313)를 포함한다.
이때 제1 분할 시퀀스 및 제2 분할 시퀀스의 각각은 16개의 복소수값을 포함할 수 있다.
실수값 연산부(311)는 제1 분할 시퀀스에 포함된 16개의 복소수값의 각각의 실수값 및 제2 분할 시퀀스에 포함된 16개의 복소수값의 각각의 실수값을 바탕으로 미리 정해진 연산을 수행하여 제1 연산 시퀀스에 포함된 32개의 복소수값의 각각의 실수값을 출력하며, 제1 보수 생성부(311a), 제1 신호 선택부(311b) 및 제1 덧셈 부(311c)를 포함한다.
제1 보수 생성부(311a)는 제2 분할 시퀀스에 포함된 16개의 복소수값 중 어느 하나의 복소수값의 실수값(이하에서는 '제1 실수값'이라고도 함)의 2의 보수에 해당하는 제1 보수값을 출력한다.
제1 신호 선택부(311b)는 미리 정해진 기준에 따라 제1 실수값과 제1 보수값 중 어느 하나를 선택하여 출력한다.
제1 덧셈부(311c)는 제1 분할 시퀀스에 포함된 16개의 복소수값 중 어느 하나의 복소수값의 실수값(이하에서는 '제2 실수값'이라고도 함)과 제1 신호 선택부(311b)의 출력값에 대해 덧셈 연산을 수행하여 결과값을 출력한다.
허수값 연산부(313)는 제1 분할 시퀀스에 포함된 16개의 복소수값의 각각의 허수값 및 제2 분할 시퀀스에 포함된 16개의 복소수값의 각각의 허수값을 바탕으로 미리 정해진 연산을 수행하여 제1 연산 시퀀스에 포함된 32개의 복소수값의 각각의 허수값을 출력하며, 제2 보수 생성부(313a), 제2 신호 선택부(313b) 및 제2 덧셈부(313c)를 포함한다.
제2 보수 생성부(313a)는 제2 분할 시퀀스에 포함된 16개의 복소수값 중 어느 하나의 복소수값의 허수값(이하에서는 '제1 허수값'이라고도 함)의 2의 복수에 해당하는 제2 보수값을 출력한다.
제2 신호 선택부(313b)는 미리 정해진 기준에 따라 제1 허수값과 제2 보수값 중 어느 하나를 선택하여 출력한다.
제2 덧셈부(313c)는 제1 분할 시퀀스에 포함된 16개의 복소수값 중 어느 하 나의 복소수값의 허수값(이하에서는 '제2 허수값'이라고도 함)과 제2 신호 선택부(313b)의 출력값에 대해 덧셈 연산을 수행하여 결과값을 출력한다.
다음은 도 5를 참고하여 본 발명의 제2 실시예에 따른 푸리에 변환 장치(500)에 대해 설명한다. 이때 도 5는 2N개의 복소수값 특히, 25개의 복소수값을 포함하는 입력 시퀀스가 입력되는 경우에 대응하는 본 발명의 제2 실시예에 따른 푸리에 변환 장치(500)에 대해 설명하지만, 본 발명의 제2 실시예가 반드시 이에 한정되는 것은 아니다.
도 5는 본 발명의 제2 실시예에 따른 푸리에 변환 장치의 구성을 도시한 도면이다.
도 5에 도시된 바와 같이, 본 발명의 제2 실시예에 따른 푸리에 변환 장치(500)는 25(=32)개의 복소수값을 포함하는 입력 시퀀스를 입력받고, 입력된 입력 시퀀스에 대해 푸리에 변환을 수행하여 출력 시퀀스를 출력하며, 제1 스테이지부(510), 제2 스테이지부(520), 제1 회전인자 적용부(530), 제3 스테이지부(540), 제4 스테이지부(550), 제2 회전인자 적용부(560) 및 제5 스테이지부(570)를 포함한다.
제1 스테이지부(510)는 입력된 입력 시퀀스에 포함된 32개의 복소수값을 바탕으로 미리 정해진 제1 버터플라이 연산을 수행하여 2개의 복소수값 그룹을 포함하는 제1 연산 시퀀스를 출력한다. 이때 제1 스테이지부(510)는 클럭당 4개의 복소수값을 입력받을 수 있고, 2개의 복소수값 그룹의 각각은 16개의 복소수값을 포함 한다.
제2 스테이지부(520)는 제1 연산 시퀀스에 포함된 2개의 복소수값 그룹을 바탕으로 미리 정해진 제2 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제2 연산 시퀀스를 출력한다. 이때 제2 스테이지부(520)는 클럭당 2개의 복소수값을 입력받을 수 있다.
제1 회전인자 적용부(530)는 제2 연산 시퀀스에 포함된 32개의 복소수값에 미리 저장된 제1 회전인자를 적용하여 제2 연산 시퀀스에 포함된 32개의 복소수값에 각각 대응하는 32개의 복소수값을 포함하는 제1 회전인자 적용 시퀀스를 출력한다.
제3 스테이지부(540)는 제1 회전인자 적용 시퀀스에 포함된 32개의 복소수값을 바탕으로 미리 정해진 제3 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제3 연산 시퀀스를 출력하며, 제1 연산부(541) 및 제1 저장부(543)를 포함한다. 이때 제1 저장부(541)는 4(=25/8)개의 복소수값을 저장할 수 있다.
제4 스테이지부(550)는 제3 연산 시퀀스에 포함된 32개의 복소수값을 바탕으로 미리 정해진 제4 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제4 연산 시퀀스를 출력하며, 제2 연산부(551) 및 제2 저장부(553)를 포함한다. 이때 제2 저장부(553)는 2(=25/16)개의 복소수값을 저장할 수 있다.
제2 회전인자 적용부(560)는 제4 연산 시퀀스에 포함된 32개의 복소수값에 미리 저장된 제2 회전인자를 적용하여 제4 연산 시퀀스에 포함된 32개의 복소수값 에 각각 대응하는 32개의 복소수값을 포함하는 제2 회전인자 적용 시퀀스를 출력한다.
제5 스테이지부(570)는 제2 회전인자 적용 시퀀스에 포함된 32개의 복소수값을 바탕으로 미리 정해진 제5 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제5 연산 시퀀스를 출력하며, 제3 연산부(571) 및 제3 저장부(573)를 포함한다. 이때 제5 연산 시퀀스는 출력 시퀀스에 해당한다. 또한 제3 저장부(573)는 1(=25/32)개의 복소수값을 저장할 수 있다.
다음은 도 6을 참고하여 본 발명의 제2 실시예에 따른 푸리에 변환 장치(500)의 제1 스테이지부(510)에 대해 설명한다.
도 6은 본 발명의 제2 실시예에 따른 푸리에 변환 장치의 제1 스테이지부의 구성을 도시한 도면이다.
도 6에 도시된 바와 같이, 본 발명의 제2 실시예에 따른 제1 스테이지부(510)는 입력 시퀀스를 구성하는 제1 분할 시퀀스, 제2 분할 시퀀스, 제3 분할 시퀀스 및 제4 분할 시퀀스를 바탕으로 미리 정해진 제1 버터플라이 연산을 수행하여 제1 복소수값 그룹 및 제2 복소수값 그룹을 출력하며, 제1 실수값 연산부(511), 제1 허수값 연산부(513), 제2 실수값 연산부(515) 및 제2 허수값 연산부(517)를 포함한다.
이때 제1 분할 시퀀스, 제2 분할 시퀀스, 제3 분할 시퀀스 및 제4 분할 시퀀스의 각각은 8개의 복소수값을 포함할 수 있다. 또한 제1 복소수값 그룹 및 제2 복 소수값 그룹의 각각은 16개의 복소수값을 포함할 수 있다.
제1 실수값 연산부(511)는 제1 분할 시퀀스에 포함된 8개의 복소수값의 각각의 실수값 및 제3 분할 시퀀스에 포함된 8개의 복소수값의 각각의 실수값을 바탕으로 미리 정해진 연산을 수행하여 제1 복소수값 그룹에 포함된 16개의 복소수값의 각각의 실수값을 출력하며, 제1 보수 생성부(511a), 제1 신호 선택부(511b) 및 제1 덧셈부(511c)를 포함한다.
제1 보수 생성부(511a)는 제3 분할 시퀀스에 포함된 8개의 복소수값 중 어느 하나의 복소수값의 실수값(이하에서는 '제1 실수값'이라고도 함)의 2의 보수에 해당하는 제1 보수값을 출력한다.
제1 신호 선택부(511b)는 미리 정해진 기준에 따라 제1 실수값과 제1 보수값 중 어느 하나를 선택하여 출력한다.
제1 덧셈부(511c)는 제1 분할 시퀀스에 포함된 8개의 복소수값 중 어느 하나의 복소수값의 실수값(이하에서는 '제2 실수값'이라고도 함)과 제1 신호 선택부(511b)의 출력값에 대해 덧셈 연산을 수행하여 결과값을 출력한다.
제1 허수값 연산부(513)는 제1 분할 시퀀스에 포함된 8개의 복소수값의 각각의 허수값 및 제3 분할 시퀀스에 포함된 8개의 복소수값의 각각의 허수값을 바탕으로 미리 정해진 연산을 수행하여 제1 복소수값 그룹에 포함된 16개의 복소수값의 각각의 허수값을 출력하며, 제2 보수 생성부(513a), 제2 신호 선택부(513b) 및 제2 덧셈부(513c)를 포함한다.
제2 보수 생성부(513a)는 제3 분할 시퀀스에 포함된 8개의 복소수값 중 어느 하나의 복소수값의 허수값(이하에서는 '제1 허수값'이라고도 함)의 2의 보수에 해당하는 제2 보수값을 출력한다.
제2 신호 선택부(513b)는 미리 정해진 기준에 따라 제1 허수값과 제2 보수값 중 어느 하나를 선택하여 출력한다.
제2 덧셈부(513c)는 제1 분할 시퀀스에 포함된 8개의 복소수값 중 어느 하나의 복소수값의 허수값(이하에서는 '제2 허수값'이라고도 함)과 제2 신호 선택부(513b)의 출력값에 대해 덧셈 연산을 수행하여 결과값을 출력한다.
제2 실수값 연산부(515)는 제2 분할 시퀀스에 포함된 8개의 복소수값의 각각의 실수값 및 제4 분할 시퀀스에 포함된 8개의 복소수값의 각각의 실수값을 바탕으로 미리 정해진 연산을 수행하여 제2 복소수값 그룹에 포함된 16개의 복소수값의 각각의 실수값을 출력하며, 제3 보수 생성부(515a), 제3 신호 선택부(515b) 및 제3 덧셈부(515c)를 포함한다.
제3 보수 생성부(515a)는 제4 분할 시퀀스에 포함된 8개의 복소수값 중 어느 하나의 복소수값의 실수값(이하에서는 '제3 실수값'이라고도 함)의 2의 보수에 해당하는 제3 보수값을 출력한다.
제3 신호 선택부(515b)는 미리 정해진 기준에 따라 제3 실수값과 제3 보수값 중 어느 하나를 선택하여 출력한다.
제3 덧셈부(515c)는 제2 분할 시퀀스에 포함된 8개의 복소수값 중 어느 하나의 복소수값의 실수값(이하에서는 '제4 실수값'이라고도 함)과 제1 신호 선택부(515b)의 출력값에 대해 덧셈 연산을 수행하여 결과값을 출력한다.
제2 허수값 연산부(517)는 제2 분할 시퀀스에 포함된 8개의 복소수값의 각각의 허수값 및 제4 분할 시퀀스에 포함된 8개의 복소수값의 각각의 허수값을 바탕으로 미리 정해진 연산을 수행하여 제2 복소수값 그룹에 포함된 16개의 복소수값의 각각의 허수값을 출력하며, 제4 보수 생성부(517a), 제4 신호 선택부(517b) 및 제4 덧셈부(517c)를 포함한다.
제4 보수 생성부(517a)는 제4 분할 시퀀스에 포함된 8개의 복소수값 중 어느 하나의 복소수값의 허수값(이하에서는 '제3 허수값'이라고도 함)의 2의 보수에 해당하는 제4 보수값을 출력한다.
제4 신호 선택부(517b)는 미리 정해진 기준에 따라 제3 허수값과 제4 보수값 중 어느 하나를 선택하여 출력한다.
제4 덧셈부(517c)는 제2 분할 시퀀스에 포함된 8개의 복소수값 중 어느 하나의 복소수값의 허수값(이하에서는 '제4 허수값'이라고도 함)과 제2 신호 선택부(517b)의 출력값에 대해 덧셈 연산을 수행하여 결과값을 출력한다.
다음은 도 7을 참고하여 본 발명의 제2 실시예에 따른 푸리에 변환 장치(500)의 제2 스테이지부(520)에 대해 설명한다.
도 7은 본 발명의 제2 실시예에 따른 푸리에 변환 장치의 제2 스테이지부의 구성을 도시한 도면이다.
도 7에 도시된 바와 같이, 본 발명의 제2 실시예에 따른 제2 스테이지부(520)는 제1 복소수값 그룹 및 제2 복소수값 그룹을 바탕으로 미리 정해진 제2 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제2 연산 시퀀스를 출력 하며, 제3 실수값 연산부(521) 및 제3 허수값 연산부(523)를 포함한다.
제3 실수값 연산부(521)는 제1 복소수값 그룹에 포함된 16개의 복소수값의 각각의 실수값 및 제2 복소수값 그룹에 포함된 16개의 복소수값의 각각의 실수값을 바탕으로 미리 정해진 연산을 수행하여 제2 연산 시퀀스에 포함된 32개의 복소수값의 각각의 실수값을 출력하며, 제5 보수 생성부(521a), 제5 신호 선택부(521b) 및 제5 덧셈부(521c)를 포함한다.
제5 보수 생성부(521a)는 제2 복소수값 그룹에 포함된 16개의 복소수값 중 어느 하나의 복소수값의 실수값(이하에서는 '제5 실수값'이라고도 함)의 2의 보수에 해당하는 제5 보수값을 출력한다.
제5 신호 선택부(521b)는 미리 정해진 기준에 따라 제5 실수값과 제5 보수값 중 어느 하나를 선택하여 출력한다.
제5 덧셈부(521c)는 제1 복소수값 그룹에 포함된 16개의 복소수값 중 어느 하나의 복소수값의 실수값(이하에서는 '제6 실수값'이라고도 함)과 제5 신호 선택부(521b)의 출력값에 대해 덧셈 연산을 수행하여 결과값을 출력한다.
제3 허수값 연산부(523)는 제1 복소수값 그룹에 포함된 16개의 복소수값의 각각의 허수값 및 제2 복소수값 그룹에 포함된 16개의 복소수값의 각각의 허수값을 바탕으로 미리 정해진 연산을 수행하여 제2 연산 시퀀스에 포함된 32개의 복소수값의 각각의 허수값을 출력하며, 제6 보수 생성부(523a), 제6 신호 선택부(523b) 및 제6 덧셈부(523c)를 포함한다.
제6 보수 생성부(523a)는 제2 복소수값 그룹에 포함된 16개의 복소수값 중 어느 하나의 복소수값의 허수값(이하에서는 '제5 허수값'이라고도 함)의 2의 보수에 해당하는 제6 보수값을 출력한다.
제6 신호 선택부(523b)는 미리 정해진 기준에 따라 제5 허수값과 제6 보수값 중 어느 하나를 선택하여 출력한다.
제6 덧셈부(523c)는 제1 복소수값 그룹에 포함된 16개의 복소수값 중 어느 하나의 복소수값의 허수값(이하에서는 '제6 허수값'이라고도 함)과 제6 신호 선택부(523b)의 출력값에 대해 덧셈 연산을 수행하여 결과값을 출력한다.
다음은 도 8 또는 도 9를 참고하여 본 발명의 제1 실시예에 따른 푸리에 변환 장치(300)가 입력 시퀀스를 푸리에 변환하여 출력 시퀀스를 생성하는 방법에 대해 설명한다.
도 8은 본 발명의 제1 실시예에 따른 푸리에 변환 방법을 도시한 도면이다.
도 8에 도시된 바와 같이, 먼저, 제1 스테이지부(310)는 입력 시퀀스를 구성하는 2개의 분할 시퀀스 즉, 제1 분할 시퀀스 및 제2 분할 시퀀스를 바탕으로 제1 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제1 연산 시퀀스를 생성한다(S100).
이때 입력 시퀀스(이하에서는 'x(m)'이라고도 함)는 수학식 1을 따를 수 있다.
Figure 112008085757194-pat00001
입력 시퀀스(x(m))가 수학식 1을 따르는 경우, 제1 분할 시퀀스(이하에서는 'A(n)'이라고도 함) 및 제2 분할 시퀀스(이하에서는 'B(n)'이라고도 함)는 수학식 2를 따를 수 있다.
Figure 112008085757194-pat00002
수학식 2에서, "a(n)r"은 제1 분할 시퀀스(A(n))에 포함된 16개의 복소수값의 각각의 실수값을 나타내고, "a(n)i"는 제1 분할 시퀀스(A(n))에 포함된 16개의 복소수값의 각각의 허수값을 나타낸다. 그리고, "b(n)r"은 제2 분할 시퀀스(B(n))에 포함된 16개의 복소수값의 각각의 실수값을 나타내고, "b(n)i"는 제2 분할 시퀀스(B(n))에 포함된 16개의 복소수값의 각각의 허수값을 나타낸다.
또한 제1 연산 시퀀스(이하에서는 'x(m)′'라고도 함)는 수학식 3을 따를 수 있다.
Figure 112008085757194-pat00003
수학식 3에서, "a(n)r′"는 제1 연산 시퀀스(x(m)′)에 포함된 32개의 복소수값 중 16개의 복소수값 즉, 제1 연산 시퀀스(x(m)′)의 첫번째 복소수값 내지 16번째 복소수값의 각각의 실수값을 나타내고, "a(n)i′"는 제1 연산 시퀀스(x(m)′)에 포함된 32개의 복소수값 중 16개의 복소수값 즉, 제1 연산 시퀀스(x(m)′)의 첫 번째 복소수값 내지 16번째 복소수값의 각각의 허수값을 나타낸다.
또한 수학식 3에서, "b(n)r′"는 제1 연산 시퀀스(x(m)′)에 포함된 32개의 복소수값 중 16개의 복소수값 즉, 제1 연산 시퀀스(x(m)′)의 17번째 복소수값 내지 32번째 복소수값의 각각의 실수값을 나타내고, "b(n)i′"는 제1 연산 시퀀스(x(m)′)에 포함된 32개의 복소수값 중 16개의 복소수값 즉, 제1 연산 시퀀스(x(m)′)의 17번째 복소수값 내지 32번째 복소수값의 각각의 허수값을 나타낸다.
제1 연산 시퀀스(x(m)′)가 수학식 3을 따르는 경우, "a(n)r′", "a(n)i′", "b(n)r′" 및 "b(n)i′"는 수학식 4를 따를 수 있다.
Figure 112008085757194-pat00004
이하에서는 도 9를 참고하여 본 발명의 제1 실시예에 따른 푸리에 변환 장치(300)의 제1 스테이지부(310)가 제1 연산 시퀀스를 생성하는 방법에 대해 설명한다.
도 9는 본 발명의 제1 실시예에 따른 제1 연산 시퀀스 생성 방법을 도시한 도면이다.
도 9의 (a)에 도시된 바와 같이, 먼저, 제1 스테이지부(310)는 입력 시퀀스(x(m))를 구성하는 제1 분할 시퀀스(A(n)) 및 제2 분할 시퀀스(B(n))를 수신한 다(S101).
다음, 제1 스테이지부(310)의 실수값 연산부(311)는 제1 분할 시퀀스(A(n))에 포함된 16개의 복소수값의 각각의 실수값(a(n)r) 및 제2 분할 시퀀스(B(n))에 포함된 16개의 복소수값의 각각의 실수값(b(n)r)을 바탕으로 제1 연산 시퀀스에 포함된 32개의 복소수값에 각각 대응하는 32개의 실수값(a(n)r′, b(n)r′)을 생성한다(S103).
한편, 제1 스테이지부(310)의 허수값 연산부(313)는 제1 분할 시퀀스(A(n))에 포함된 16개의 복소수값의 각각의 허수값(a(n)i) 및 제2 분할 시퀀스에 포함된 16개의 복소수값의 각각의 허수값(b(n)i)을 바탕으로 제1 연산 시퀀스에 포함된 32개의 복소수값에 각각 대응하는 32개의 허수값(a(n)i′, b(n)i′)을 생성한다(S105).
이후, 제1 스테이지부(310)는 실수값 연산부(311)는 생성한 32개의 실수값(a(n)r′, b(n)r′) 및 허수값 연산부(313)가 생성한 32개의 허수값(a(n)i′, b(n)i′)을 바탕으로 32개의 복소수값을 포함하는 제1 연산 시퀀스를 생성한다(S107).
도 9의 (b)에 도시된 바와 같이, 실수값 연산부(311)는 한 클럭(Clock)당 2개의 실수값 즉, "a(n)r" 및 "b(n)r"을 입력받고, 입력된 값들에 대해 미리 정해진 연산을 수행하여 한 클럭당 1개의 실수값 즉, "a(n)r′" 또는 "b(n)r′"을 출력한다.
"0"클럭~"15"클럭 동안, 제1 신호 선택부(311b)가 입력된 "b(n)r"과 제1 보수 생성부(311a)가 출력한 "b(n)r"의 2의 보수 중 "b(n)r"을 선택하여 출력하고, 제1 덧셈부(311c)가 "a(n)r"과 "b(n)r"에 대해 덧셈연산을 수행함으로써, 실수값 연산부(311)는 매 클럭마다 입력된 2개의 실수값들에 대해 덧셈연산을 수행한다.
"16"클럭~"31"클럭 동안, 제1 신호 선택부(311b)가 입력된 "b(n)r"과 제1 보수 생성부(311a)가 출력한 "b(n)r"의 2의 보수 중 "b(n)r"의 2의 보수를 선택하여 출력하고, 제1 덧셈부(311c)가 "a(n)r"과 "b(n)r"의 2의 보수에 대해 덧셈연산을 수행함으로써, 실수값 연산부(311)는 매 클럭마다 입력된 2개의 실수값들에 대해 뺄셈연산을 수행한다.
도 9의 (c)에 도시된 바와 같이, 허수값 연산부(313)는 한 클럭(Clock)당 2개의 허수값 즉, "a(n)i" 및 "b(n)i"를 입력받고, 입력된 값들에 대해 미리 정해진 연산을 수행하여 한 클럭당 1개의 허수값 즉, "a(n)i′" 또는 "b(n)i′"를 출력한다.
"0"클럭~"15"클럭 동안, 제2 신호 선택부(313b)가 입력된 "b(n)i"과 제2 보수 생성부(313a)가 출력한 "b(n)i"의 2의 보수 중 "b(n)i"를 선택하여 출력하고, 제 2 덧셈부(313c)가 "a(n)i"와 "b(n)i"에 대해 덧셈연산을 수행함으로써, 허수값 연산부(313)는 매 클럭마다 입력된 2개의 허수값에 대해 덧셈연산을 수행한다.
"16"클럭~"31"클럭 동안, 제2 신호 선택부(313b)가 입력된 "b(n)i"과 제2 보수 생성부(313a)가 출력한 "b(n)i"의 2의 보수 중 "b(n)i"의 2의 보수를 선택하여 출력하고, 제2 덧셈부(313c)가 "a(n)i"와 "b(n)i"의 2의 보수에 대해 덧셈연산을 수행함으로써, 허수값 연산부(313)는 매 클럭마다 입력된 2개의 실수값에 대해 뺄셈연산을 수행한다.
다시 도 8을 참고하여 본 발명의 제1 실시예에 따른 푸리에 변환 장치(300)가 입력 시퀀스를 푸리에 변환하여 출력 시퀀스를 생성하는 방법에 대해 설명한다.
이때 제1 스테이지부(310)는 제1 버터플라이 연산을 수행하여 생성된 32개의 복소수값 중 8개의 복소수값 즉, 25번째 복소수값 내지 32번째 복소수값의 각각에 "-j"를 곱하여 제1 연산 시퀀스를 생성할 수 있다.
다음, 제2 스테이지부(320)는 제1 연산 시퀀스에 포함된 32개의 복소수값을 바탕으로 제2 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제2 연산 시퀀스를 생성한다(S110).
이때 제2 스테이지부(320)의 제1 저장부(323)는 제2 연산 시퀀스 중 첫번째 복소수값 내지 8번째 복소수값을 저장하고, 제1 연산부(321)는 9번째 복소수값 내지 16번째 복소수값이 입력되는 동안 미리 정해진 연산을 수행한다. 또한 제2 스테이지부(320)는 17번째 복소수값 내지 32번째 복소수값에 대해서도 동일한 과정을 반복하여 수행한다.
또한 제2 스테이지부(320)는 제2 버터플라이 연산을 수행하여 생성된 32개의 복소수값 중 8개의 복소수값 즉, 13번째 복소수값 내지 16번째 복소수값의 각각과 29번째 복소수값 내지 32번째 복소수값의 각각에 "-j"를 곱하여 제2 연산 시퀀스를 생성할 수 있다.
이후, 제1 회전인자 적용부(330)는 제2 연산 시퀀스에 포함된 32개의 복소수값에 제1 회전인자를 적용하여 32개의 복소수값을 포함하는 제1 회전인자 적용 시퀀스를 생성한다(S120).
다음, 제3 스테이지부(340)는 제1 회전인자 적용 시퀀스에 포함된 32개의 복소수값을 바탕으로 제3 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제3 연산 시퀀스를 생성한다(S130).
이때 제3 스테이지부(340)의 제2 저장부(343)는 제1 회전인자 적용 시퀀스 중 첫번째 복소수값 내지 4번째 복소수값을 저장하고, 제2 연산부(341)는 4번째 복소수값 내지 8번째 복소수값이 입력되는 동안 미리 정해진 연산을 수행한다. 또한 제3 스테이지부(340)는 9번째 복소수값 내지 32번째 복소수값에 대해서도 동일한 과정을 반복하여 수행한다.
또한 제3 스테이지부(340)는 제3 버터플라이 연산을 수행하여 생성된 32개의 복소수값 중 8개의 복소수값 즉, 7번째 복소수값, 8번째 복소수값, 15번째 복소수값, 16번째 복소수값, 23번째 복소수값, 24번째 복소수값, 31번째 복소수값 및 32번째 복소수값의 각각에 "-j"를 곱하여 제3 연산 시퀀스를 생성할 수 있다.
이후, 제4 스테이지부(350)는 제3 연산 시퀀스에 포함된 32개의 복소수값을 바탕으로 제4 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제4 연산 시퀀스를 생성한다(S140).
이때 제4 스테이지부(350)의 제3 저장부(353)는 제3 연산 시퀀스 중 첫번째 복소수값 및 2번째 복소수값을 저장하고, 제3 연산부(351)는 3번째 복소수값 및 4번째 복소수값이 입력되는 동안 미리 정해진 연산을 수행한다. 또한 제4 스테이지부(350)는 5번째 복소수값 내지 32번째 복소수값에 대해서도 동일한 과정을 반복하여 수행한다.
또한 제4 스테이지부(350)는 제4 버터플라이 연산을 수행하여 생성된 32개의 복소수값 중 8개의 복소수값 즉, 4번째 복소수값, 8번째 복소수값, 12번째 복소수값, 16번째 복소수값, 20번째 복소수값, 24번째 복소수값, 28번째 복소수값 및 32번째 복소수값의 각각에 "-j"를 곱하여 제4 연산 시퀀스를 생성할 수 있다.
이후, 제2 회전인자 적용부(360)는 제4 연산 시퀀스에 포함된 32개의 복소수값에 제2 회전인자를 적용하여 32개의 복소수값을 포함하는 제2 회전인자 적용 시퀀스를 생성한다(S150).
다음, 제5 스테이지부(370)는 제2 회전인자 적용 시퀀스에 포함된 32개의 복소수값을 바탕으로 제5 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 출력 시퀀스를 생성한다(S160).
이때 제5 스테이지부(370)의 제4 저장부(373)는 제2 회전인자 적용 시퀀스 중 첫번째 복소수값을 저장하고, 제4 연산부(371)는 2번째 복소수값 입력되면 미리 정해진 연산을 수행한다. 또한 제5 스테이지부(370)는 3번째 복소수값 내지 32번째 복소수값에 대해서도 동일한 과정을 반복하여 수행한다.
다음은 도 10 내지 도 12를 참고하여 본 발명의 제2 실시예에 따른 푸리에 변환 장치(500)가 입력 시퀀스를 푸리에 변환하여 출력 시퀀스를 생성하는 방법에 대해 설명한다.
도 10은 본 발명의 제2 실시예에 따른 푸리에 변환 방법을 도시한 도면이다.
도 10에 도시된 바와 같이, 먼저, 제1 스테이지부(510)는 입력 시퀀스를 구성하는 4개의 분할 시퀀스 즉, 제1 분할 시퀀스, 제2 분할 시퀀스, 제3 시퀀스 및 제4 시퀀스를 바탕으로 제1 버터플라이 연산을 수행하여 2개의 복소수값 그룹을 포함하는 제1 연산 시퀀스를 생성한다(S300).
이때 입력 시퀀스(이하에서는 'x(m)'이라고도 함)는 수학식 5를 따를 수 있다.
Figure 112008085757194-pat00005
입력 시퀀스(x(m))가 수학식 5를 따르는 경우, 제1 분할 시퀀스(이하에서는 'A(n)'이라고도 함), 제2 분할 시퀀스(이하에서는 'B(n)'이라고도 함), 제3 분할 시퀀스(이하에서는 'C(n)'이라고도 함) 및 제4 분할 시퀀스(이하에서는 'D(n)'이라고도 함)는 수학식 6을 따를 수 있다.
Figure 112008085757194-pat00006
수학식 6에서, "a(n)r"은 제1 분할 시퀀스(A(n))에 포함된 8개의 복소수값의 각각의 실수값을 나타내고, "a(n)i"는 제1 분할 시퀀스(A(n))에 포함된 8개의 복소수값의 각각의 허수값을 나타낸다. 그리고, "b(n)r"은 제2 분할 시퀀스(B(n))에 포함된 8개의 복소수값의 각각의 실수값을 나타내고, "b(n)i"는 제2 분할 시퀀스(B(n))에 포함된 8개의 복소수값의 각각의 허수값을 나타낸다.
또한 수학식 6에서, "c(n)r"은 제3 분할 시퀀스(C(n))에 포함된 8개의 복소수값의 각각의 실수값을 나타내고, "c(n)i"는 제3 분할 시퀀스(C(n))에 포함된 8개의 복소수값의 각각의 허수값을 나타낸다. 그리고, "d(n)r"은 제4 분할 시퀀스(D(n))에 포함된 8개의 복소수값의 각각의 실수값을 나타내고, "d(n)i"는 제4 분할 시퀀스(D(n))에 포함된 8개의 복소수값의 각각의 허수값을 나타낸다.
또한 제1 연산 시퀀스(이하에서는 'x(m)′'라고도 함)는 수학식 7을 따를 수 있다.
Figure 112008085757194-pat00007
수학식 7에서, "A(n)′"는 제1 연산 시퀀스(x(m)′)의 32개의 복소수값 중 첫번째 복소수값 내지 8번째 복소수값을 나타내고, "a(n)r′"는 "A(n)′"의 각각의 실수값을 나타내며, "a(n)i′"는 "A(n)′"의 각각의 허수값을 나타낸다. 그리고, "B(n)′"는 제1 연산 시퀀스(x(m)′)의 32개의 복소수값 중 9번째 복소수값 내지 16번째 복소수값을 나타내고, "b(n)r′"는 "B(n)′"의 각각의 실수값을 나타내며, "b(n)i′"는 "B(n)′"의 각각의 허수값을 나타낸다.
또한 수학식 7에서, "C(n)′"는 제1 연산 시퀀스(x(m)′)의 32개의 복소수값 중 17번째 복소수값 내지 24번째 복소수값을 나타내고, "c(n)r′"는 "C(n)′"의 각각의 실수값을 나타내며, "c(n)i′"는 "C(n)′"의 각각의 허수값을 나타낸다. 그리고, "D(n)′"는 제1 연산 시퀀스(x(m)′)의 32개의 복소수값 중 25번째 복소수값 내지 32번째 복소수값을 나타내고, "d(n)r′"는 "D(n)′"의 각각의 실수값을 나타내며, "d(n)i′"는 "D(n)′"의 각각의 허수값을 나타낸다.
이때 제1 연산 시퀀스(x(m)′)를 구성하는 제1 복소수값 그룹은 "A(n)′" 및 "C(n)′"를 포함하고, 제2 복소수값 그룹은 "B(n)′" 및 "D(n)′"를 포함한다.
제1 연산 시퀀스(x(m)′)가 수학식 7을 따르는 경우, "a(n)r′", "a(n)i′", "b(n)r′", "b(n)i′", "c(n)r′", "c(n)i′", "d(n)r′" 및 "d(n)i′"는 수학식 8을 따를 수 있다.
Figure 112008085757194-pat00008
이하에서는 도 11을 참고하여 본 발명의 제2 실시예에 따른 푸리에 변환 장치(500)의 제1 스테이지부(510)가 제1 연산 시퀀스를 생성하는 방법에 대해 설명한다.
도 11은 본 발명의 제2 실시예에 따른 제1 연산 시퀀스 생성 방법을 도시한 도면이다.
도 11의 (a)에 도시된 바와 같이, 먼저, 제1 스테이지부(510)는 입력 시퀀스를 구성하는 제1 분할 시퀀스(A(n)), 제2 분할 시퀀스(B(n)), 제3 분할 시퀀스(C(n)) 및 제4 분할 시퀀스(D(n))를 수신한다(S301).
다음, 제1 스테이지부(510)의 제1 실수값 연산부(511)는 제1 분할 시퀀 스(A(n))에 포함된 8개의 복소수값의 각각의 실수값(a(n)r) 및 제3 분할 시퀀스(C(n))에 포함된 8개의 복소수값의 각각의 실수값(c(n)r)을 바탕으로 제1 복소수값 그룹에 포함된 16개의 복소수값에 각각 대응하는 16개의 실수값(a(n)r′, c(n)r′)을 생성한다(S302).
한편, 제1 스테이지부(510)의 제1 허수값 연산부(513)는 제1 분할 시퀀스(A(n))에 포함된 8개의 복소수값의 각각의 허수값(a(n)i) 및 제3 분할 시퀀스(C(n))에 포함된 8개의 복소수값의 각각의 허수값(c(n)i)을 바탕으로 제1 복소수값 그룹에 포함된 16개의 복소수값에 각각 대응하는 16개의 허수값(a(n)i′, c(n)i′)을 생성한다(S303).
한편, 제1 스테이지부(510)의 제2 실수값 연산부(515)는 제2 분할 시퀀스(B(n))에 포함된 8개의 복소수값의 각각의 실수값(b(n)r) 및 제4 분할 시퀀스(D(n))에 포함된 8개의 복소수값의 각각의 실수값(d(n)r)을 바탕으로 제2 복소수값 그룹에 포함된 16개의 복소수값에 각각 대응하는 16개의 실수값(b(n)r′, d(n)r′)을 생성한다(S304).
한편, 제1 스테이지부(510)의 제2 허수값 연산부(517)는 제2 분할 시퀀스(B(n))에 포함된 8개의 복소수값의 각각의 허수값(b(n)i) 및 제4 분할 시퀀스(D(n))에 포함된 8개의 복소수값의 각각의 허수값(d(n)i)을 바탕으로 제2 복소수 값 그룹에 포함된 16개의 복소수값에 각각 대응하는 16개의 허수값(b(n)i′, d(n)i′)을 생성한다(S305).
이후, 제1 스테이지부(510)는 제1 실수값 연산부(511)가 생성한 16개의 실수값(a(n)r′, c(n)r′) 및 제1 허수값 연산부(513)가 생성한 16개의 허수값(a(n)i′, c(n)i′)을 바탕으로 16개의 복소수값을 포함하는 제1 복소수값 그룹을 생성한다(S306).
한편, 제1 스테이지부(510)는 제2 실수값 연산부(515)가 생성한 16개의 실수값(b(n)r′, d(n)r′) 및 제2 허수값 연산부(517)가 생성한 16개의 허수값(b(n)i′, d(n)i′)을 바탕으로 16개의 복소수값을 포함하는 제2 복소수값 그룹을 생성한다(S307).
도 11의 (b)에 도시된 바와 같이, 제1 실수값 연산부(511)는 한 클럭(Clock)당 2개의 실수값 즉, "a(n)r" 및 "c(n)r"을 입력받고, 입력된 값들에 대해 미리 정해진 연산을 수행하여 한 클럭당 1개의 실수값 즉, "a(n)r′" 또는 "c(n)r′"를 출력한다.
"0"클럭~"7"클럭 동안, 제1 신호 선택부(511b)가 입력된 "c(n)r"과 제1 보수 생성부(511a)가 출력한 "c(n)r"의 2의 보수 중 "c(n)r"을 선택하여 출력하고, 제1 덧셈부(511c)가 "a(n)r"과 "c(n)r"에 대해 덧셈연산을 수행함으로써, 제1 실수값 연 산부(511)는 매 클럭마다 입력된 2개의 실수값들에 대해 덧셈연산을 수행한다. 이때 "8"클럭~"15"클럭 동안, 제1 실수값 연산부(511)는 "0"클럭~"7"클럭 동안 수행한 연산을 반복할 수 있다.
"16"클럭~"23"클럭 동안, 제1 신호 선택부(511b)가 입력된 "c(n)r"과 제1 보수 생성부(511a)가 출력한 "c(n)r"의 2의 보수 중 "c(n)r"의 2의 보수를 선택하여 출력하고, 제1 덧셈부(511c)가 "a(n)r"과 "c(n)r"의 2의 보수에 대해 덧셈연산을 수행함으로써, 제1 실수값 연산부(511)는 매 클럭마다 입력된 2개의 실수값들에 대해 뺄셈연산을 수행한다. 이때 "24"클럭~"31"클럭 동안, 제1 실수값 연산부(511)는 "16"클럭~"23"클럭 동안 수행한 연산을 반복할 수 있다.
도 11의 (c)에 도시된 바와 같이, 제1 허수값 연산부(513)는 한 클럭(Clock)당 2개의 허수값 즉, "a(n)i" 및 "c(n)i"를 입력받고, 입력된 값들에 대해 미리 정해진 연산을 수행하여 한 클럭당 1개의 허수값 즉, "a(n)i′" 또는 "c(n)i′"를 출력한다.
"0"클럭~"7"클럭 동안, 제2 신호 선택부(513b)가 입력된 "c(n)i"와 제2 보수 생성부(513a)가 출력한 "c(n)i"의 2의 보수 중 "c(n)i"를 선택하여 출력하고, 제2 덧셈부(513c)가 "a(n)i"와 "c(n)i"에 대해 덧셈연산을 수행함으로써, 제1 허수값 연산부(513)는 매 클럭마다 입력된 2개의 허수값들에 대해 덧셈연산을 수행한다. 이때 "8"클럭~"15"클럭 동안, 제1 허수값 연산부(513)는 "0"클럭~"7"클럭 동안 수행 한 연산을 반복할 수 있다.
"16"클럭~"23"클럭 동안, 제2 신호 선택부(513b)가 입력된 "c(n)i"와 제2 보수 생성부(513a)가 출력한 "c(n)i"의 2의 보수 중 "c(n)i"의 2의 보수를 선택하여 출력하고, 제2 덧셈부(513c)가 "a(n)i"와 "c(n)i"의 2의 보수에 대해 덧셈연산을 수행함으로써, 제1 허수값 연산부(513)는 매 클럭마다 입력된 2개의 허수값들에 대해 뺄셈연산을 수행한다. 이때 "24"클럭~"31"클럭 동안, 제1 허수값 연산부(513)는 "16"클럭~"23"클럭 동안 수행한 연산을 반복할 수 있다.
도 11의 (d)에 도시된 바와 같이, 제2 실수값 연산부(515)는 한 클럭(Clock)당 2개의 실수값 즉, "b(n)r" 및 "d(n)r"을 입력받고, 입력된 값들에 대해 미리 정해진 연산을 수행하여 한 클럭당 1개의 실수값 즉, "b(n)r′" 또는 "d(n)r′"를 출력한다.
"0"클럭~"7"클럭 동안, 제3 신호 선택부(515b)가 입력된 "d(n)r"과 제3 보수 생성부(515a)가 출력한 "d(n)r"의 2의 보수 중 "d(n)r"을 선택하여 출력하고, 제3 덧셈부(515c)가 "b(n)r"과 "d(n)r"에 대해 덧셈연산을 수행함으로써, 제2 실수값 연산부(515)는 매 클럭마다 입력된 2개의 실수값들에 대해 덧셈연산을 수행한다. 이때 "8"클럭~"15"클럭 동안, 제2 실수값 연산부(515)는 "0"클럭~"7"클럭 동안 수행한 연산을 반복할 수 있다.
"16"클럭~"23"클럭 동안, 제3 신호 선택부(515b)가 입력된 "d(n)r"과 제3 보수 생성부(515a)가 출력한 "d(n)r"의 2의 보수 중 "d(n)r"의 2의 보수를 선택하여 출력하고, 제3 덧셈부(515c)가 "b(n)r"과 "d(n)r"의 2의 보수에 대해 덧셈연산을 수행함으로써, 제2 실수값 연산부(515)는 매 클럭마다 입력된 2개의 실수값들에 대해 뺄셈연산을 수행한다. 이때 "24"클럭~"31"클럭 동안, 제2 실수값 연산부(515)는 "16"클럭~"23"클럭 동안 수행한 연산을 반복할 수 있다.
도 11의 (e)에 도시된 바와 같이, 제2 허수값 연산부(517)는 한 클럭(Clock)당 2개의 허수값 즉, "b(n)i" 및 "d(n)i"를 입력받고, 입력된 값들에 대해 미리 정해진 연산을 수행하여 한 클럭당 1개의 허수값 즉, "b(n)i′" 또는 "d(n)i′"를 출력한다.
"0"클럭~"7"클럭 동안, 제4 신호 선택부(517b)가 입력된 "d(n)i"와 제4 보수 생성부(517a)가 출력한 "d(n)i"의 2의 보수 중 "d(n)i"를 선택하여 출력하고, 제4 덧셈부(517c)가 "b(n)i"와 "d(n)i"에 대해 덧셈연산을 수행함으로써, 제2 허수값 연산부(517)는 매 클럭마다 입력된 2개의 허수값들에 대해 덧셈연산을 수행한다. 이때 "8"클럭~"15"클럭 동안, 제2 허수값 연산부(517)는 "0"클럭~"7"클럭 동안 수행한 연산을 반복할 수 있다.
"16"클럭~"23"클럭 동안, 제4 신호 선택부(517b)가 입력된 "d(n)i"와 제4 보 수 생성부(517a)가 출력한 "d(n)i"의 2의 보수 중 "d(n)i"의 2의 보수를 선택하여 출력하고, 제4 덧셈부(517c)가 "b(n)i"와 "d(n)i"의 2의 보수에 대해 덧셈연산을 수행함으로써, 제2 허수값 연산부(517)는 매 클럭마다 입력된 2개의 허수값들에 대해 뺄셈연산을 수행한다. 이때 "24"클럭~"31"클럭 동안, 제2 허수값 연산부(517)는 "16"클럭~"23"클럭 동안 수행한 연산을 반복할 수 있다.
다시 도 10을 참고하여 본 발명의 제2 실시예에 따른 푸리에 변환 장치(500)가 입력 시퀀스를 푸리에 변환하여 출력 시퀀스를 생성하는 방법에 대해 설명한다.
이때 제1 스테이지부(510)는 제1 버터플라이 연산을 수행하여 생성된 32개의 복소수값 중 8개의 복소수값 즉, 25번째 복소수값 내지 32번째 복소수값의 각각에 "-j"를 곱하여 제1 연산 시퀀스를 생성할 수 있다.
다음, 제2 스테이지부(520)는 제1 연산 시퀀스를 구성하는 2개의 복소수값 그룹 즉, 제1 복소수값 그룹 및 제2 복소수값 그룹을 바탕으로 제2 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제2 연산 시퀀스를 생성한다(S310).
이때 제2 연산 시퀀스(이하에서는 'x(m)″'이라고도 함)는 수학식 9를 따를 수 있다.
Figure 112008085757194-pat00009
수학식 9에서, "a(n)r″"는 제2 연산 시퀀스(x(m)″)에 포함된 32개의 복소수값 중 8개의 복소수값 즉, 제2 연산 시퀀스(x(m)″)의 첫번째 복소수값 내지 8번째 복소수값의 각각의 실수값을 나타내고, "a(n)i″"는 제2 연산 시퀀스(x(m)″)에 포함된 32개의 복소수값 중 8개의 복소수값 즉, 제2 연산 시퀀스(x(m)″)의 첫번째 복소수값 내지 8번째 복소수값의 각각의 허수값을 나타낸다.
또한 수학식 9에서, "b(n)r″"는 제2 연산 시퀀스(x(m)″)에 포함된 32개의 복소수값 중 8개의 복소수값 즉, 제2 연산 시퀀스(x(m)″)의 9번째 복소수값 내지 16번째 복소수값의 각각의 실수값을 나타내고, "b(n)i″"는 제2 연산 시퀀스(x(m)″)에 포함된 32개의 복소수값 중 8개의 복소수값 즉, 제2 연산 시퀀스(x(m)″)의 9번째 복소수값 내지 16번째 복소수값의 각각의 허수값을 나타낸다.
또한 수학식 9에서, "c(n)r″"는 제2 연산 시퀀스(x(m)″)에 포함된 32개의 복소수값 중 8개의 복소수값 즉, 제2 연산 시퀀스(x(m)″)의 17번째 복소수값 내지 24번째 복소수값의 각각의 실수값을 나타내고, "c(n)i″"는 제2 연산 시퀀스(x(m)″)에 포함된 32개의 복소수값 중 8개의 복소수값 즉, 제2 연산 시퀀스(x(m)″)의 17번째 복소수값 내지 24번째 복소수값의 각각의 허수값을 나타낸다.
또한 수학식 9에서, "d(n)r″"는 제2 연산 시퀀스(x(m)″)에 포함된 32개의 복소수값 중 8개의 복소수값 즉, 제2 연산 시퀀스(x(m)″)의 25번째 복소수값 내지 32번째 복소수값의 각각의 실수값을 나타내고, "d(n)i″"는 제2 연산 시퀀스(x(m) ″)에 포함된 32개의 복소수값 중 8개의 복소수값 즉, 제2 연산 시퀀스(x(m)″)의 25번째 복소수값 내지 32번째 복소수값의 각각의 허수값을 나타낸다.
제2 연산 시퀀스(x(m)″)가 수학식 9를 따르는 경우, "a(n)r″", "a(n)i″", "b(n)r″", "b(n)i″", "c(n)r″", "c(n)i″", "d(n)r″" 및 "d(n)i″"는 수학식 10를 따를 수 있다.
Figure 112008085757194-pat00010
이하에서는 도 12를 참고하여 본 발명의 제2 실시예에 따른 푸리에 변환 장치(500)의 제2 스테이지부(520)가 제2 연산 시퀀스를 생성하는 방법에 대해 설명한다.
도 12는 본 발명의 제2 실시예에 따른 제2 연산 시퀀스 생성 방법을 도시한 도면이다.
도 12의 (a)에 도시된 바와 같이, 먼저, 제2 스테이지부(520)는 제1 연산 시퀀스(x(m)′)를 구성하는 제1 복소수값 그룹 및 제2 복소수값 그룹을 수신한다(S311).
다음, 제2 스테이지부(520)의 제3 실수값 연산부(521)는 제1 복소수값 그룹에 포함된 16개의 복소수값의 각각의 실수값(a(n)r′, c(n)r′) 및 제2 복소수값 그룹에 포함된 16개의 복소수값의 각각의 실수값(b(n)r′, d(n)r′)을 바탕으로 제2 연산 시퀀스에 포함된 32개의 복소수값에 각각 대응하는 32개의 실수값(a(n)r″, b(n)r″, c(n)r″, d(n)r″)을 생성한다(S313).
한편, 제2 스테이지부(520)의 제3 허수값 연산부(523)는 제1 복소수값 그룹에 포함된 16개의 복소수값의 각각의 허수값(a(n)i′, c(n)i′) 및 제2 복소수값 그룹에 포함된 16개의 복소수값의 각각의 허수값(b(n)i′, d(n)i′)을 바탕으로 제2 연산 시퀀스에 포함된 32개의 복소수값에 각각 대응하는 32개의 허수값(a(n)i″, b(n)i″, c(n)i″, d(n)i″)을 생성한다(S315).
이후, 제2 스테이지부(520)는 제3 실수값 연산부(521)가 생성한 32개의 실수값(a(n)r″, b(n)r″, c(n)r″, d(n)r″) 및 제3 허수값 연산부(523)가 생성한 32개의 허수값(a(n)i″, b(n)i″, c(n)i″, d(n)i″)을 바탕으로 32개의 복소수값을 포함하는 제2 연산 시퀀스를 생성한다(S317).
도 12의 (b)에 도시된 바와 같이, 제3 실수값 연산부(521)는 한 클럭(Clock)당 2개의 실수값 즉, "a(n)r′"와 "b(n)r′" 또는 "c(n)r′"와 "d(n)r′"을 입력받고, 입력된 값들에 대해 미리 정해진 연산을 수행하여 한 클럭당 1개의 실수값 즉, "a(n)r″", "b(n)r″", "c(n)r″" 또는 "d(n)r″"을 출력한다.
"0"클럭~"7"클럭 동안, 제5 신호 선택부(521b)가 입력된 "b(n)r′"과 제5 보수 생성부(521a)가 출력한 "b(n)r′"의 2의 보수 중 "b(n)r′"을 선택하여 출력하고, 제5 덧셈부(521c)가 "a(n)r′"과 "b(n)r′"에 대해 덧셈연산을 수행함으로써, 제3 실수값 연산부(521)는 매 클럭마다 입력된 2개의 실수값들에 대해 덧셈연산을 수행한다.
"8"클럭~"15"클럭 동안, 제5 신호 선택부(521b)가 입력된 "b(n)r′"과 제5 보수 생성부(521a)가 출력한 "b(n)r′"의 2의 보수 중 "b(n)r′"의 2의 보수를 선택하여 출력하고, 제5 덧셈부(521c)가 "a(n)r′"과 "b(n)r′"의 2의 보수에 대해 덧셈연산을 수행함으로써, 제3 실수값 연산부(521)는 매 클럭마다 입력된 2개의 실수값들에 대해 뺄셈연산을 수행한다.
"16"클럭~"23"클럭 동안, 제5 신호 선택부(521b)가 입력된 "d(n)r′"과 제5 보수 생성부(521a)가 출력한 "d(n)r′"의 2의 보수 중 "d(n)r′"을 선택하여 출력하고, 제5 덧셈부(521c)가 "c(n)r′"과 "d(n)r′"에 대해 덧셈연산을 수행함으로써, 제3 실수값 연산부(521)는 매 클럭마다 입력된 2개의 실수값들에 대해 덧셈연산을 수행한다.
"24"클럭~"31"클럭 동안, 제5 신호 선택부(521b)가 입력된 "d(n)r′"과 제5 보수 생성부(521a)가 출력한 "d(n)r′"의 2의 보수 중 "d(n)r′"의 2의 보수를 선택하여 출력하고, 제5 덧셈부(521c)가 "c(n)r′"과 "d(n)r′"의 2의 보수에 대해 덧셈연산을 수행함으로써, 제3 실수값 연산부(521)는 매 클럭마다 입력된 2개의 실수값들에 대해 뺄셈연산을 수행한다.
도 12의 (c)에 도시된 바와 같이, 제3 허수값 연산부(523)는 한 클럭(Clock)당 2개의 허수값 즉, "a(n)i′"과 "b(n)i′" 또는 "c(n)i′"과 "d(n)i′"을 입력받고, 입력된 값들에 대해 미리 정해진 연산을 수행하여 한 클럭당 1개의 허수값 즉, "a(n)i″", "b(n)i″", "c(n)i″" 또는 "d(n)i″"을 출력한다.
"0"클럭~"7"클럭 동안, 제6 신호 선택부(523b)가 입력된 "b(n)i′"과 제6 보수 생성부(523a)가 출력한 "b(n)i′"의 2의 보수 중 "b(n)i′"을 선택하여 출력하고, 제6 덧셈부(523c)가 "a(n)i′"과 "b(n)i′"에 대해 덧셈연산을 수행함으로써, 제3 허수값 연산부(523)는 매 클럭마다 입력된 2개의 허수값들에 대해 덧셈연산을 수행한다.
"8"클럭~"15"클럭 동안, 제6 신호 선택부(523b)가 입력된 "b(n)i′"과 제6 보수 생성부(523a)가 출력한 "b(n)i′"의 2의 보수 중 "b(n)i′"의 2의 보수를 선택하여 출력하고, 제6 덧셈부(523c)가 "a(n)i′"과 "b(n)i′"의 2의 보수에 대해 덧셈연산을 수행함으로써, 제3 허수값 연산부(523)는 매 클럭마다 입력된 2개의 허수값 들에 대해 뺄셈연산을 수행한다.
"16"클럭~"23"클럭 동안, 제6 신호 선택부(523b)가 입력된 "d(n)i′"과 제6 보수 생성부(523a)가 출력한 "d(n)i′"의 2의 보수 중 "d(n)i′"을 선택하여 출력하고, 제6 덧셈부(523c)가 "c(n)i′"과 "d(n)i′"에 대해 덧셈연산을 수행함으로써, 제3 허수값 연산부(523)는 매 클럭마다 입력된 2개의 허수값들에 대해 덧셈연산을 수행한다.
"24"클럭~"31"클럭 동안, 제6 신호 선택부(523b)가 입력된 "d(n)i′"과 제6 보수 생성부(523a)가 출력한 "d(n)i′"의 2의 보수 중 "d(n)i′"의 2의 보수를 선택하여 출력하고, 제6 덧셈부(523c)가 "c(n)i′"과 "d(n)i′"의 2의 보수에 대해 덧셈연산을 수행함으로써, 제3 허수값 연산부(523)는 매 클럭마다 입력된 2개의 허수값들에 대해 뺄셈연산을 수행한다.
다시 도 10을 참고하여 본 발명의 제2 실시예에 따른 푸리에 변환 장치(500)가 입력 시퀀스를 푸리에 변환하여 출력 시퀀스를 생성하는 방법에 대해 설명한다.
이때 제2 스테이지부(520)는 제2 버터플라이 연산을 수행하여 생성된 32개의 복소수값 중 8개의 복소수값 즉, 13번째 복소수값 내지 16번째 복소수값의 각각과 29번째 복소수값 내지 32번째 복소수값의 각각에 "-j"를 곱하여 제2 연산 시퀀스를 생성할 수 있다.
이후, 제1 회전인자 적용부(530)는 제2 연산 시퀀스에 포함된 32개의 복소수 값에 제1 회전인자를 적용하여 32개의 복소수값을 포함하는 제1 회전인자 적용 시퀀스를 생성한다(S320).
다음, 제3 스테이지부(540)는 제1 회전인자 적용 시퀀스에 포함된 32개의 복소수값을 바탕으로 제3 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제3 연산 시퀀스를 생성한다(S330).
이때 제3 스테이지부(540)의 제1 저장부(543)는 제1 회전인자 적용 시퀀스 중 첫번째 복소수값 내지 4번째 복소수값을 저장하고, 제1 연산부(541)는 4번째 복소수값 내지 8번째 복소수값이 입력되는 동안 미리 정해진 연산을 수행한다. 또한 제3 스테이지부(540)는 9번째 복소수값 내지 32번째 복소수값에 대해서도 동일한 과정을 반복하여 수행한다.
또한 제3 스테이지부(540)는 제3 버터플라이 연산을 수행하여 생성된 32개의 복소수값 중 8개의 복소수값 즉, 7번째 복소수값, 8번째 복소수값, 15번째 복소수값, 16번째 복소수값, 23번째 복소수값, 24번째 복소수값, 31번째 복소수값 및 32번째 복소수값의 각각에 "-j"를 곱하여 제3 연산 시퀀스를 생성할 수 있다.
이후, 제4 스테이지부(550)는 제3 연산 시퀀스에 포함된 32개의 복소수값을 바탕으로 제4 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 제4 연산 시퀀스를 생성한다(S340).
이때 제4 스테이지부(550)의 제2 저장부(553)는 제3 연산 시퀀스 중 첫번째 복소수값 및 2번째 복소수값을 저장하고, 제2 연산부(551)는 3번째 복소수값 및 4번째 복소수값이 입력되는 동안 미리 정해진 연산을 수행한다. 또한 제4 스테이지 부(550)는 5번째 복소수값 내지 32번째 복소수값에 대해서도 동일한 과정을 반복하여 수행한다.
또한 제4 스테이지부(550)는 제4 버터플라이 연산을 수행하여 생성된 32개의 복소수값 중 8개의 복소수값 즉, 4번째 복소수값, 8번째 복소수값, 12번째 복소수값, 16번째 복소수값, 20번째 복소수값, 24번째 복소수값, 28번째 복소수값 및 32번째 복소수값의 각각에 "-j"를 곱하여 제4 연산 시퀀스를 생성할 수 있다.
이후, 제2 회전인자 적용부(560)는 제4 연산 시퀀스에 포함된 32개의 복소수값에 제2 회전인자를 적용하여 32개의 복소수값을 포함하는 제2 회전인자 적용 시퀀스를 생성한다(S350).
다음, 제5 스테이지부(570)는 제2 회전인자 적용 시퀀스에 포함된 32개의 복소수값을 바탕으로 제5 버터플라이 연산을 수행하여 32개의 복소수값을 포함하는 출력 시퀀스를 생성한다(S360).
이때 제5 스테이지부(570)의 제3 저장부(573)는 제2 회전인자 적용 시퀀스 중 첫번째 복소수값을 저장하고, 제3 연산부(571)는 2번째 복소수값 입력되면 미리 정해진 연산을 수행한다. 또한 제5 스테이지부(570)는 3번째 복소수값 내지 32번째 복소수값에 대해서도 동일한 과정을 반복하여 수행한다.
이상에서 설명한 본 발명의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.
도 1은 종래의 고속 푸리에 변환 프로세서를 도시한 도면이다.
도 2는 종래의 고속 푸리에 변환 프로세서가 제1 스테이지를 수행하기 위한 제1 연산부 및 제1 저장부를 도시한 도면이다.
도 3은 본 발명의 제1 실시예에 따른 푸리에 변환 장치의 구성을 도시한 도면이다.
도 4는 본 발명의 제1 실시예에 따른 푸리에 변환 장치의 제1 스테이지부의 구성을 도시한 도면이다.
도 5는 본 발명의 제2 실시예에 따른 푸리에 변환 장치의 구성을 도시한 도면이다.
도 6은 본 발명의 제2 실시예에 따른 푸리에 변환 장치의 제1 스테이지부의 구성을 도시한 도면이다.
도 7은 본 발명의 제2 실시예에 따른 푸리에 변환 장치의 제2 스테이지부의 구성을 도시한 도면이다.
도 8은 본 발명의 제1 실시예에 따른 푸리에 변환 방법을 도시한 도면이다.
도 9는 본 발명의 제1 실시예에 따른 제1 연산 시퀀스 생성 방법을 도시한 도면이다.
도 10은 본 발명의 제2 실시예에 따른 푸리에 변환 방법을 도시한 도면이다.
도 11은 본 발명의 제2 실시예에 따른 제1 연산 시퀀스 생성 방법을 도시한 도면이다.
도 12는 본 발명의 제2 실시예에 따른 제2 연산 시퀀스 생성 방법을 도시한 도면이다.

Claims (16)

  1. 푸리에 변환 장치가 2N개의 복소수값을 포함하는 입력 시퀀스를 푸리에 변환하는 방법에 있어서,
    복수의 클럭의 각각에서 상기 입력 시퀀스를 구성하는 복수 개의 분할 시퀀스에 각각 포함된 복수의 복소수값을 바탕으로 미리 정해진 제1 버터플라이 연산을 수행하여 2N개의 복소수값을 포함하는 제1 연산 시퀀스를 생성하는 단계; 및
    상기 제1 연산 시퀀스를 바탕으로 (N-1)번의 버터플라이 연산을 수행하여 2N개의 복소수값을 포함하는 출력 시퀀스를 생성하는 단계를 포함하고,
    상기 N은 양의 정수인 푸리에 변환 방법.
  2. 제1항에 있어서,
    상기 입력 시퀀스는 제1 분할 시퀀스 및 제2 분할 시퀀스로 구성되고,
    상기 제1 연산 시퀀스를 생성하는 단계는
    상기 복수의 클럭의 각각에서 제1 분할 시퀀스에 포함된 하나의 복소수값 및 제2 분할 시퀀스에 포함된 하나의 복소수값을 바탕으로 상기 2N개의 복소수값의 각각을 생성하는 푸리에 변환 방법.
  3. 제2항에 있어서,
    상기 제1 분할 시퀀스 및 상기 제2 분할 시퀀스의 각각은 2(N-1)개의 복소수값을 포함하고,
    상기 제1 연산 시퀀스를 생성하는 단계는
    상기 제1 분할 시퀀스에 포함된 2(N-1)개의 복소수값의 각각의 실수값 및 상기 제2 분할 시퀀스에 포함된 2(N-1)개의 복소수값의 각각의 실수값을 바탕으로 미리 정해진 연산을 수행하여 상기 제1 연산 시퀀스에 포함된 2N개의 복소수값에 각각 대응하는 2N개의 실수값을 생성하는 단계;
    상기 제1 분할 시퀀스에 포함된 2(N-1)개의 복소수값의 각각의 허수값 및 상기 제2 분할 시퀀스에 포함된 2(N-1)개의 복소수값의 각각의 허수값을 바탕으로 미리 정해진 연산을 수행하여 상기 제1 연산 시퀀스에 포함된 2N개의 복소수값에 각각 대응하는 2N개의 허수값을 생성하는 단계; 및
    상기 2N개의 실수값 및 상기 2N개의 허수값을 바탕으로 상기 제1 연산 시퀀스를 생성하는 단계를 포함하는 푸리에 변환 방법.
  4. 제1항에 있어서,
    상기 N은 1보다 큰 양의 정수이고,
    상기 입력 시퀀스는 제1 분할 시퀀스, 제2 분할 시퀀스, 제3 분할 시퀀스 및 제4 분할 시퀀스로 구성되고,
    상기 제1 연산 시퀀스를 생성하는 단계는
    복수의 클럭의 각각에서 상기 제1 분할 시퀀스에 포함된 하나의 복소수값 및 상기 제3 분할 시퀀스에 포함된 하나의 복소수값을 바탕으로 2(N-1)개의 복소수값의 각각을 연산하여 제1 복소수값 그룹을 생성하고, 상기 제2 분할 시퀀스에 포함된 하나의 복소수값 및 상기 제4 분할 시퀀스에 포함된 하나의 복소수값을 바탕으로 2(N-1)개의 복소수값의 각각을 연산하여 제2 복소수값 그룹을 생성함으로써상기 제1 복소수값 그룹 및 상기 제2 복소수값 그룹을 포함하는 상기 제1 연산 시퀀스를 생성하는 단계를 포함하며,
    상기 제1 복소수값 그룹 및 상기 제2 복소수값 그룹의 각각은 2(N-1)개의 복소수값을 포함하는 푸리에 변환 방법.
  5. 제4항에 있어서,
    상기 제1 분할 시퀀스 및 상기 제3 분할 시퀀스의 각각은 2(N-2)개의 복소수값을 포함하고,
    제1 복소수값 그룹 및 제2 복소수값 그룹을 포함하는 상기 제1 연산 시퀀스를 생성하는 단계는
    상기 제1 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 실수값 및 상기 제3 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 실수값을 바탕으로 미리 정해진 연산을 수행하여 상기 제1 복소수값 그룹에 포함된 2(N-1)개의 복소수값에 각각 대응하는 2(N-1)개의 실수값을 생성하는 단계;
    상기 제1 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 허수값 및 상기 제3 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 허수값을 바탕으로 미리 정 해진 연산을 수행하여 상기 제1 복소수값 그룹에 포함된 2(N-1)개의 복소수값에 각각 대응하는 2(N-1)개의 허수값을 생성하는 단계; 및
    상기 2(N-1)개의 실수값 및 상기 2(N-1)개의 허수값을 바탕으로 상기 제1 복소수값 그룹을 생성하는 단계를 포함하는 푸리에 변환 방법.
  6. 제4항에 있어서,
    상기 제2 분할 시퀀스 및 상기 제4 분할 시퀀스의 각각은 2(N-2)개의 복소수값을 포함하고,
    제1 복소수값 그룹 및 제2 복소수값 그룹을 포함하는 상기 제1 연산 시퀀스를 생성하는 단계는
    상기 제2 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 실수값 및 상기 제4 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 실수값을 바탕으로 미리 정해진 연산을 수행하여 상기 제2 복소수값 그룹에 포함된 2(N-1)개의 복소수값에 각각 대응하는 2(N-1)개의 실수값을 생성하는 단계;
    상기 제2 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 허수값 및 상기 제4 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 허수값을 바탕으로 미리 정 해진 연산을 수행하여 상기 제2 복소수값 그룹에 포함된 2(N-1)개의 복소수값에 각각 대응하는 2(N-1)개의 허수값을 생성하는 단계; 및
    상기 2(N-1)개의 실수값 및 상기 2(N-1)개의 허수값을 바탕으로 상기 제1 복소수값 그룹을 생성하는 단계를 포함하는 푸리에 변환 방법.
  7. 제4항에 있어서,
    상기 출력 시퀀스를 생성하는 단계는
    상기 제1 복소수값 그룹 및 상기 제2 복소수값 그룹을 바탕으로 미리 정해진 제2 버터플라이 연산을 수행하여 2N개의 복소수값을 포함하는 제2 연산 시퀀스를 생성하는 단계; 및
    상기 제2 연산 시퀀스를 바탕으로 (N-2)번의 버터플라이 연산을 수행하여 2N개의 복소수값을 포함하는 출력 시퀀스를 생성하는 단계를 포함하는 푸리에 변환 방법.
  8. 제7항에 있어서,
    상기 제2 연산 시퀀스를 생성하는 단계는
    상기 제1 복소수값 그룹에 포함된 2(N-1)개의 복소수값의 각각의 실수값 및 상 기 제2 복소수값 그룹에 포함된 2(N-1)개의 복소수값의 각각의 실수값을 바탕으로 미리 정해진 연산을 수행하여 상기 제2 연산 시퀀스에 포함된 2N개의 복소수값에 각각 대응하는 2N개의 실수값을 생성하는 단계;
    상기 제1 복소수값 그룹에 포함된 2(N-1)개의 복소수값의 각각의 허수값 및 상기 제2 복소수값 그룹에 포함된 2(N-1)개의 복소수값의 각각의 허수값을 바탕으로 미리 정해진 연산을 수행하여 상기 제2 연산 시퀀스에 포함된 2N개의 복소수값에 각각 대응하는 2N개의 허수값을 생성하는 단계; 및
    상기 2N개의 실수값 및 상기 2N개의 허수값을 바탕으로 상기 제2 연산 시퀀스를 생성하는 단계를 포함하는 푸리에 변환 방법.
  9. 입력 시퀀스를 푸리에 변환하는 장치에 있어서,
    상기 입력 시퀀스는 2(N-1)개의 복소수값을 포함하는 제1 분할 시퀀스 및 2(N-1)개의 복소수값을 포함하는 제2 분할 시퀀스를 포함하고,
    상기 장치는
    복수의 클럭 동안 상기 제1 분할 시퀀스 및 상기 제2 분할 시퀀스를 바탕으로 미리 정해진 제1 버터플라이 연산을 수행하여 2N개의 복소수값을 포함하는 제1 연산 시퀀스를 생성하는 제1 스테이지부; 및
    상기 제1 연산 시퀀스를 바탕으로 (N-1)번의 버터플라이 연산을 수행하여 2N개의 복소수값을 포함하는 출력 시퀀스를 생성하는 (N-1)개의 스테이지부를 포함하고,
    상기 제1 스테이지부는 상기 복수의 클럭의 각각에서 상기 제1 분할 시퀀스에 포함된 하나의 복소수값과 상기 제2 분할 시퀀스에 포함된 하나의 복소수값을 바탕으로 상기 2N개의 복소수값의 각각을 생성하는 푸리에 변환 장치.
  10. 제9항에 있어서,
    상기 제1 스테이지부는
    상기 제1 분할 시퀀스에 포함된 2(N-1)개의 복소수값의 각각의 실수값 및 상기 제2 분할 시퀀스에 포함된 2(N-1)개의 복소수값의 각각의 실수값을 바탕으로 덧셈연산을 수행하여 상기 제1 연산 시퀀스에 포함된 2N개의 복소수값에 각각 대응하는 2N개의 실수값을 생성하는 실수값 연산부; 및
    상기 제1 분할 시퀀스에 포함된 2(N-1)개의 복소수값의 각각의 허수값 및 상기 제2 분할 시퀀스에 포함된 2(N-1)개의 복소수값의 각각의 허수값을 바탕으로 덧셈연산을 수행하여 상기 제1 연산 시퀀스에 포함된 2N개의 복소수값에 각각 대응하는 2N개의 허수값을 생성하는 허수값 연산부를 포함하는 푸리에 변환 장치.
  11. 제10항에 있어서,
    상기 실수값 연산부 또는 상기 허수값 연산부는
    제1 입력값의 2의 보수에 해당하는 제1 보수값을 생성하는 보수 생성부;
    상기 제1 입력값의 입력 순서에 따라 상기 제1 입력값과 상기 제1 보수값 중 하나를 출력하는 신호 선택부; 및
    상기 신호 선택부의 출력값과 제2 입력값에 대해 덧셈 연산을 수행하는 덧셈부를 포함하는 푸리에 변환 장치.
  12. 입력 시퀀스를 푸리에 변환하는 장치에 있어서,
    상기 입력 시퀀스는 2(N-2)개의 복소수값을 포함하는 제1 분할 시퀀스, 2(N-2)개의 복소수값을 포함하는 제2 분할 시퀀스, 2(N-2)개의 복소수값을 포함하는 제3 분할 시퀀스 및 2(N-2)개의 복소수값을 포함하는 제4 분할 시퀀스를 포함하고,
    상기 장치는
    복수의 제1 클럭의 각각에서 상기 제1 분할 시퀀스에 포함된 하나의 복소수값 및 상기 제3 분할 시퀀스에 포함된 하나의 복소수값을 바탕으로 2(N-1)개의 복소수값의 각각을 연산하여 제1 복소수값 그룹을 생성하고, 상기 제2 분할 시퀀스에 포함된 하나의 복소수값 및 상기 제4 분할 시퀀스에 포함된 하나의 복소수값을 바탕으로 2(N-1)개의 복소수값의 각각을 연산하여 제2 복소수값 그룹을 생성하는 제1 스테이지부;
    복수의 제2 클럭의 각각에서 상기 제1 복소수값 그룹에 포함된 하나의 복소수값 및 상기 제2 복소수값 그룹에 포함된 하나의 복소수값을 바탕으로 미리 정해진 제1 버터플라이 연산을 수행하여 2N개의 복소수값의 각각을 구함으로써 제1 연산 시퀀스를 생성하는 제2 스테이지부; 및
    상기 제1 연산 시퀀스를 바탕으로 (N-2)번의 버터플라이 연산을 수행하여 2N개의 복소수값을 포함하는 출력 시퀀스를 생성하는 (N-2)개의 스테이지부를 포함하는 푸리에 변환 장치.
  13. 제12항에 있어서,
    상기 제1 스테이지부는
    상기 제1 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 실수값 및 상기 제3 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 실수값을 바탕으로 덧셈연산을 수행하여 상기 제1 복소수값 그룹에 포함된 2(N-1)개의 복소수값에 각각 대응하는 2(N-1)개의 실수값을 생성하는 제1 실수값 연산부;
    상기 제1 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 허수값 및 상기 제3 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 허수값을 바탕으로 덧셈연산을 수행하여 상기 제1 복소수값 그룹에 포함된 2(N-1)개의 복소수값에 각각 대응하는 2(N-1)개의 허수값을 생성하는 제1 허수값 연산부;
    상기 제2 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 실수값 및 상기 제4 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 실수값을 바탕으로 덧셈연산을 수행하여 상기 제2 복소수값 그룹에 포함된 2(N-1)개의 복소수값에 각각 대응하는 2(N-1)개의 실수값을 생성하는 제2 실수값 연산부; 및
    상기 제2 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 허수값 및 상기 제4 분할 시퀀스에 포함된 2(N-2)개의 복소수값의 각각의 허수값을 바탕으로 덧셈연산을 수행하여 상기 제2 복소수값 그룹에 포함된 2(N-1)개의 복소수값에 각각 대응하는 2(N-1)개의 허수값을 생성하는 제2 허수값 연산부를 포함하는 푸리에 변환 장치.
  14. 제13항에 있어서,
    상기 제1 실수값 연산부, 상기 제1 허수값 연산부, 상기 제2 실수값 연산부 또는 상기 제2 허수값 연산부 중 어느 하나는
    제1 입력값의 2의 보수에 해당하는 제1 보수값을 생성하는 보수 생성부;
    상기 제1 입력값의 입력 순서에 따라 상기 제1 입력값과 상기 제1 보수값 중 하나를 출력하는 신호 선택부; 및
    상기 신호 선택부의 출력값과 제2 입력값에 대해 덧셈 연산을 수행하는 덧셈부를 포함하는 푸리에 변환 장치.
  15. 제12항에 있어서,
    상기 제2 스테이지부는
    상기 제1 복소수값 그룹에 포함된 2(N-1)개의 복소수값의 각각의 실수값 및 상기 제2 복소수값 그룹에 포함된 2(N-1)개의 복소수값의 각각의 실수값을 바탕으로 덧셈연산을 수행하여 상기 제1 연산 시퀀스에 포함된 2N개의 복소수값에 각각 대응하는 2N개의 실수값을 생성하는 실수값 연산부; 및
    상기 제1 복소수값 그룹에 포함된 2(N-1)개의 복소수값의 각각의 허수값 및 상기 제2 복소수값 그룹에 포함된 2(N-1)개의 복소수값의 각각의 허수값을 바탕으로 덧셈연산을 수행하여 상기 제1 연산 시퀀스에 포함된 2N개의 복소수값에 각각 대응하는 2N개의 허수값을 생성하는 허수값 연산부를 포함하는 푸리에 변환 장치.
  16. 제15항에 있어서,
    상기 실수값 연산부 또는 상기 허수값 연산부는
    제1 입력값의 2의 보수에 해당하는 제1 보수값을 생성하는 보수 생성부;
    상기 제1 입력값의 입력 순서에 따라 상기 제1 입력값과 상기 제1 보수값 중 하나를 출력하는 신호 선택부; 및
    상기 신호 선택부의 출력값과 제2 입력값에 대해 덧셈 연산을 수행하는 덧셈 부를 포함하는 푸리에 변환 장치.
KR1020080126668A 2008-12-12 2008-12-12 푸리에 변환 장치 및 방법 KR101074112B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080126668A KR101074112B1 (ko) 2008-12-12 2008-12-12 푸리에 변환 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080126668A KR101074112B1 (ko) 2008-12-12 2008-12-12 푸리에 변환 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20100068022A KR20100068022A (ko) 2010-06-22
KR101074112B1 true KR101074112B1 (ko) 2011-10-17

Family

ID=42366535

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080126668A KR101074112B1 (ko) 2008-12-12 2008-12-12 푸리에 변환 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101074112B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100810490B1 (ko) 2006-08-08 2008-03-07 엠텍비젼 주식회사 고속 푸리에 변환 장치 및 이를 포함하는 직교 주파수 분할다중화 수신기
JP2008186396A (ja) 2007-01-31 2008-08-14 Mitsubishi Electric Corp 高速フーリエ変換装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100810490B1 (ko) 2006-08-08 2008-03-07 엠텍비젼 주식회사 고속 푸리에 변환 장치 및 이를 포함하는 직교 주파수 분할다중화 수신기
JP2008186396A (ja) 2007-01-31 2008-08-14 Mitsubishi Electric Corp 高速フーリエ変換装置

Also Published As

Publication number Publication date
KR20100068022A (ko) 2010-06-22

Similar Documents

Publication Publication Date Title
Barrett Implementing the Rivest Shamir and Adleman public key encryption algorithm on a standard digital signal processor
US7284027B2 (en) Method and apparatus for high speed calculation of non-linear functions and networks using non-linear function calculations for digital signal processing
Huang et al. A novel and efficient design for an RSA cryptosystem with a very large key size
Anastasova et al. Time-Efficient Finite Field Microarchitecture Design for Curve448 and Ed448 on Cortex-M4
KR20090127462A (ko) Fft/ifft 연산코어
Alkım et al. Compact and simple RLWE based key encapsulation mechanism
US9780978B2 (en) System and method for multi-threaded OFDM channel equalizer with coprocessor
JP2002229445A (ja) べき乗剰余演算器
JP5763911B2 (ja) ルートi(√i)演算の保持を特徴とする基数8固定小数点FFT論理回路
US20050131976A1 (en) FFT operating apparatus of programmable processors and operation method thereof
JP4160564B2 (ja) 処理速度の向上した高速フーリエ変換装置およびその処理方法
KR101074112B1 (ko) 푸리에 변환 장치 및 방법
KR100602272B1 (ko) 고속으로 데이터를 처리하는 고속 퓨리에 변환 장치 및 방법
Zheng Encrypted cloud using GPUs
Wang et al. A novel fast modular multiplier architecture for 8,192-bit RSA cryposystem
Nouri et al. Implementation of IEEE-802.11 a/g receiver blocks on a coarse-grained reconfigurable array
CN114422315B (zh) 一种超高吞吐量ifft/fft调制解调方法
Li et al. A CPU-GPU-based parallel search algorithm for the best differential characteristics of block ciphers
Lin et al. Parallel modulus operations in RSA encryption by CPU/GPU hybrid computation
KR101002771B1 (ko) 푸리에 변환 장치 및 방법
KR20000009759A (ko) 모듈러 곱셈기
JP5493646B2 (ja) 離散フーリエ変換装置および離散フーリエ変換・離散逆フーリエ変換方法
JP2002504250A (ja) データ要素の系列を変換する装置
US8711920B1 (en) System and method for multi-threaded OFDM channel equalizer
CN118034785A (en) Instruction compression method, device, accelerator and storage medium

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee