KR102376492B1 - 실수값을 입력으로 하는 고속푸리에 변환장치 및 방법 - Google Patents

실수값을 입력으로 하는 고속푸리에 변환장치 및 방법 Download PDF

Info

Publication number
KR102376492B1
KR102376492B1 KR1020200097862A KR20200097862A KR102376492B1 KR 102376492 B1 KR102376492 B1 KR 102376492B1 KR 1020200097862 A KR1020200097862 A KR 1020200097862A KR 20200097862 A KR20200097862 A KR 20200097862A KR 102376492 B1 KR102376492 B1 KR 102376492B1
Authority
KR
South Korea
Prior art keywords
input
unit
output
stage
fourier transform
Prior art date
Application number
KR1020200097862A
Other languages
English (en)
Other versions
KR20220017638A (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 KR1020200097862A priority Critical patent/KR102376492B1/ko
Publication of KR20220017638A publication Critical patent/KR20220017638A/ko
Application granted granted Critical
Publication of KR102376492B1 publication Critical patent/KR102376492B1/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L27/00Modulated-carrier systems
    • H04L27/26Systems using multi-frequency codes
    • H04L27/2601Multicarrier modulation systems
    • H04L27/2647Arrangements specific to the receiver only
    • H04L27/2649Demodulators
    • H04L27/265Fourier transform demodulators, e.g. fast Fourier transform [FFT] or discrete Fourier transform [DFT] demodulators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L27/00Modulated-carrier systems
    • H04L27/26Systems using multi-frequency codes
    • H04L27/2601Multicarrier modulation systems
    • H04L27/2647Arrangements specific to the receiver only
    • H04L27/2649Demodulators
    • H04L27/26524Fast Fourier transform [FFT] or discrete Fourier transform [DFT] demodulators in combination with other circuits for demodulation

Abstract

본 발명은 Packing 알고리듬 내에 존재하는 후처리 단계를 기존 FFT 구현 방식 및 기본 구조의 수정 없이 효율적으로 수행 처리하여 계산량 및 복잡도를 줄이는 방식으로 실수값을 입력으로 하는 고속푸리에 변환장치 및 방법을 제공하는데 그 목적이 있다. 이와 같은 본 발명은 실수값 만을 포함하는 N=2p개의 입력 데이터 시퀀스를 푸리에 변환하는 방법에 있어서, 상기 N개의 실수 입력 데이터 시퀀스에 대해 Packing 알고리듬을 적용하여 짝홀수 인덱스 관계의 인접 데이터를 쌍으로한 N/2개의 복소수 입력 시퀀스로 변환하고 이를 N/2 포인트 복소수 입력 고속 푸리에 변환 장치에 인가한 후 p-1개의 스테이지로 나뉘어 스테이지별로 N/4번의 버터플라이 연산을 반복 수행 후 N/2개의 복소수를 출력하는 복소수 입력의 N/2 포인트 고속 푸리에 변환 단계: 상기 복소수 출력으로 부터 상기 스테이지 별 연산 방식과 동일한 2개의 후처리 스테이지 과정을 거쳐 원래 구하고자 했던 N개의 실수 입력 시퀀스의 푸리에 변환에 대한 최종 출력 값을 구하는 후처리 단계:를 포함하되, 상기 상기의 N/2 포인트 고속 푸리에 변환 단계는 기존의 다양한 복소수 입력 고속 푸리에 변환 장치의 구현 방식을 이용한 것을 특징으로 하는 실수값을 입력으로 하는 고속푸리에 변환 방법을 제공한다.

Description

실수값을 입력으로 하는 고속푸리에 변환장치 및 방법{ Fast Fourier transform device and method using real valued as input }
본 발명은 고속푸리에변환장치 및 방법에 관한 것으로, 더욱 상세하게는 복소수 입력의 고속 푸리에 변환(FFT) 장치를 효율적으로 이용하여 실수 값만을 입력으로 하는 고속푸리에 변환 장치 및 방법에 관한 것이다.
주파수 특성을 분석하는 데 있어서 일반적으로 이산 푸리에 변환(Discrete Fourier Transform : DFT)이 광범위하게 이용된다.
일반적으로 N개의 입력에 대한 N 포인트 DFT 계산은 다음 수학식1로 표현된다.
Figure 112020082169800-pat00001
여기서, n은 시간 영역 인덱스, k는 주파수 영역 인덱스이며, 오일러 함수로 표현된 복소수의 회전 인자(twiddle factor)
Figure 112020082169800-pat00002
는 수학식 2로 나타낸다.
Figure 112020082169800-pat00003
여기서 수학식 1의 DFT 연산에 있어 계산의 대부분을 차지하는 복소수 곱셈량은 N3에 비례한다 하여 O(N3)으로 표시되며, 이 계산량을 줄이면서 계산 효율성도 높일 수 있는 고속 푸리에 변환(FFT) 알고리듬은 2의 승수개, 즉 N=2p개의 복소수 입력 x(n)에 대해 p-stage의 신호흐름선도(Signal Flow Graph)를 구성하고, 각 stage 당 N/2개의 버터플라이 구조의 계산 방식을 수행하도록 하여, N개의 주파수 영역에 대한 DFT 출력을 얻으므로 해서, 이산 DFT의 계산량을 O(Nlog2N)으로 줄이는데 목적이 있다.
FFT의 기본 계산 방식은 두 복소수 입력 A, B와 해당 회전 인자 W에 대해 A+W*B와 A-W*B의 복소수 연산을 반복 수행하는데 있으며 그 계산 구조가 도 1과 같이 버터플라이 형태를 갖는 것을 특징으로 한다.
그리고 도 2는 N=16인 경우에 대해 FFT 신호흐름선도 및 버터플라이 구조를 나타내고 있다.
한편 DFT는 정의상 입력 x(n)과 출력 X(k)는 모두 복소수라 가정하지만, 생의학, 오디오, 시계열 분석 등 실제 여러 응용 분야에서 복소수가 아닌 실수 입력 데이터만 있는 경우가 존재한다. 이 경우 출력 X(k)값은 주파수 영역의 중간 주파수를 중심으로 허수부의 부호가 반대인 켤레(Congugate) 값 형태의 대칭성을 수학식 3에서와 같이 만족한다.
Figure 112020082169800-pat00004
여기서, k=0 ~ N/2의 주파수 성분만 구하면 나머지 반은 켤레 값 형태로 구해진다[G.D. Bergland, Numerical analysis: a fast Fourier transform algorithm for real-valued series. Commun. ACM 11(10), 703-710 (1968)].
따라서, 실수 입력만 갖는 DFT 계산은 수학식 1의 관점에서는 계산량을 반으로 줄일 수 있지만, 이를 단순히 FFT 알고리듬에 적용한다고 해서 FFT내의 버터플라이 개수가 변함이 없어 그 계산량이 반으로 줄지는 않는다.
일반 복소수 입력에 대한 FFT 알고리듬을 CFFT(Complex-valued FFT)라 할 때, 실수값 만을 입력으로 하는 고속 푸리에 변환을 특정하여 RFFT(Real-valued FFT)라 칭한다면, 이 RFFFT에 특화된 효율적 구현과 관련한 알고리듬이 다수 제안되었으며, 그 중 N=2p개의 실수 신호 x[n], n=0, 1, ... , N-1이 주어졌을 때, RFFT는 N/2-point CFFT로 계산 가능하여 버터플라이 계산량을 반으로 줄일 수 있는 Packing 알고리듬이 주목을 받았으며 CFFT 후 발생하는 후처리 단계의 계산 방식에 대한 제안이 이루어졌다[W.W. Smith, J.M. Smith, Handbook of Real-Time Fast Fourier Transforms, vol. 55 (IEEE Press, NewYork, 1995), G. Kumar, K. Sahoo, P.Meher, 50 Years of FFT Algorithms and Applications, Circuits, Systems, and Signal Processing, 38, 5665-5698 (2019)].
특허문헌 1 : 대한민국 공개특허 1998-071072호 특허문헌 2 : 대한민국 공개특허 2001-0110202호 특허문헌 3 : 대한민국 공개특허 2007-0056480호 특허문헌 4 : 대한민국 공개특허 2006-0073426호
따라서, 본 발명은 상기와 같은 종래 기술의 제반 단점과 문제점을 해결하기 위한 것으로, Packing 알고리듬 내에 존재하는 후처리 단계를 기존 FFT 구현 방식 및 기본 구조의 수정 없이 효율적으로 수행 처리하여 계산량 및 복잡도를 줄이는 방식으로 실수값을 입력으로 하는 고속푸리에 변환장치 및 방법을 제공하는데 그 목적이 있다.
상기한 목적을 달성하기 위하여 본 발명은 실수값 만을 포함하는 N=2p개의 입력 데이터 시퀀스를 푸리에 변환하는 방법에 있어서, 상기 N개의 실수 입력 데이터 시퀀스에 대해 Packing 알고리듬을 적용하여 짝홀수 인덱스 관계의 인접 데이터를 쌍으로한 N/2개의 복소수 입력 시퀀스로 변환하고 이를 N/2 포인트 복소수 입력 고속 푸리에 변환 장치에 인가한 후 p-1개의 스테이지로 나뉘어 스테이지별로 N/4번의 버터플라이 연산을 반복 수행 후 N/2개의 복소수를 출력하는 복소수 입력의 N/2 포인트 고속 푸리에 변환 단계: 상기 복소수 출력으로 부터 상기 스테이지 별 연산 방식과 동일한 2개의 후처리 스테이지 과정을 거쳐 원래 구하고자 했던 N개의 실수 입력 시퀀스의 푸리에 변환에 대한 최종 출력 값을 구하는 후처리 단계:를 포함하되, 상기 상기의 N/2 포인트 고속 푸리에 변환 단계는 기존의 다양한 복소수 입력 고속 푸리에 변환 장치의 구현 방식을 이용한 것을 특징으로 하는 실수값을 입력으로 하는 고속푸리에 변환 방법을 제공한다.
여기서 기존의 다양한 복소수 입력 고속 푸리에 변환 장치는, 상기 스테이지 별 버터플라이 연산은 N/4번의 순기 신호에 따라, 매번 2개의 복소수 데이터와 한 개의 회전인자 복소수 계수를 입력으로 하여, 두 입력 데이터 중 하나에 회전인자 계수를 곱한 후 그 값을 나머지 한 입력 데이터에 가감산을 수행하여 두 개의 복소수 데이터를 출력하는 일반 푸리에 변환 장치의 주연산 부를 포함하는 버터플라이 연산부와, 상기 버터플라이 연산부의 수행에 필요한 N/2개의 입출력 데이터들을 저장하는 RAM 형태의 데이터 메모리부와, 매 스테이지별로 N/4번의 순기 신호에 따라 미리 정해진 데이터 메모리의 Read/Write 접근을 위한 데이터 주소 생성부와, 계수 메모리의 접근을 위한 계수 주소 생성부를 포함하고, 상기 일반 복소수 입력 고속 푸리에 변환 장치에 후처리 단계를 수행할 수 있도록 상기 버터플라이 연산부 전후에 데이터를 수정 선택할 수 있는 입출력 MUX부 및 최종 출력 MUX부와, 후처리에 새로 요구되는 N/8개의 회전인자 상수를 추가하기 위해 저장 공간을 확장한 계수 메모리부와, 후처리를 위해 추가된 2개의 스테이지에 따른 스테이지 구분용 floor(log2(p-1+2)) 비트를 고려한 총 floor(log2(p-1+2))+(p-1) 비트로 확장한 카운터부와, 추가된 스테이지와 이와 관련된 N/4번의 순기 신호에 따른 메모리 접근을 위해 확장한 주소와 계수 주소 생성부로 구성된 실수 입력 시퀀스의 푸리에 변환 장치가 이용되는 것을 특징으로 한다.
그리고 상기한 목적을 달성하기 위하여 본 발명은 FFT 입력 및 각 stage 별 버터플라이 연산 결과를 저장하는 데이터 메모리부; FFT 계산에 필요한 회전 인자계수를 저장하는 계수 메모리부; 상기 데이터 메모리부(100)로부터 입력 A, B와 계수 메모리부로 부터 입력 W를 공급 받아 버터플라이 연산을 수행하는 버터플라이 연산부; 상기 버터플라이 연산부의 연산 과정을 순차적으로 제어하기 위한 카운터부; 상기 카운터부로부터 0,1,...,N/2-1의 순차 신호를 받아 데이터 메모리부의 입출력 주소와 계수메모리부 출력 주소를 각각 생성하는 데이터 주소 생성부와, 계수 주소 생성부; 상기 데이터 메모리부 입력을 FFT 입력으로 하여 FFT를 초기화할 것인지, 스테이지별 연산 중간 결과를 저장할 것인지를 선택하는 데이터 메모리 입력 MUX부; N개의 실수 입력에 대해 인접한 실수 입력을 쌍으로 하여 N/2개의 복소수 변환하기 위해 이전 실수 입력을 저장하는 입력 레지스터부; 및 N/2-Point FFT를 진행한 후, 2단계의 후처리 Stage를 처리하기 위해 상기버터플라이 연산부의 입력 B에 대한 입력 B-MUX부, 출력 D의 수정을 위한 출력 E-MUX부, 그리고 최종 출력을 수정 선택하는 최종 출력 F-MUX부;를 포함하여 구성되고, N/2+1개의 실수 입력 푸리에 변환 최종 출력을 얻는 후처리 단계내의 2개 스테이지에 있어서, 데이터 메모리부에 저장된 N/2 포인트 푸리에 변환 결과인 복소수 값을 N/4 번의 순기신호 순서에 따라 정해진 주소로 읽어 들인 값과, 1 값으로 고정된 계수 메모리 출력 값에 의해 구해진 N/2개의 버터플라이 연산 출력 시퀀스로 부터, N/4번째의 최종 출력을 얻고 나머지 N/2-1개의 출력은 최종 출력을 얻기 위한 중간 결과로 데이터 메모리로 재 저장되는 첫 번째 스테이지와, 상기 첫 스테이지에서 안 읽혀진 N/2 포인트 푸리에 변환의 첫 번째 결과 값과 N/2-1개의 첫 스테이지의 결과 값이 저장된 데이터 메모리부와 후처리를 위해 추가로 저장된 회전 인자 계수 메모리부로 부터, N/4 번의 순기신호 순서에 따라 정해진 주소로 읽어 들인 데이터 및 계수 값에 의해 구해진 N/2개의 버터플라이 연산 출력 시퀀스로부터, 첫 스테이지에서 구해진 N/4번째의 최종 출력을 제외한 나머지 N/2개의 최종 출력을 얻기 위한 두 번째 스테이지를 포함하는 N개의 실수 입력 시퀀스에 특화된 실수값을 입력으로 하는 고속푸리에 변환 장치를 제공한다.
여기서 2개의 스테이지로 나뉘어진 후처리 단계의 전과정에 대해 해당 stage별 N/4번의 순차 신호에 따른 입출력 정보를 구하기 위하여 데이터 메모리부 및 계수 메모리부의 접근 어드레스를 생성하고, 버터플라이 연산부의 전후단에 위치한 관련 입출력 MUX부들의 select 신호를 생성하는 N개의 실수 입력 시퀀스에 특화된 것을 특징으로 한다.
본 발명의 실시 예에 따르면 다음과 같은 효과가 있다.
첫째, 본 발명은 Packing 알고리듬 내에 존재하는 후처리 단계를 기존 FFT 구현 방식 및 기본 구조의 수정 없이 효율적으로 수행 처리하여 계산량 및 복잡도를 줄이는 계산 방법을 제공할 수 있다.
둘째, Packing 알고리듬을 종합하면 N개의 실수 입력에 대해 N/2개의 복소수 쌍을 형성 후, 이를 2/N-point CFFT의 과정을 거친 출력을 얻은 다음, Xe와 Xo를 구한 뒤, 이를 일련의 후처리 과정을 거쳐 원래의 N-point FFT 출력과 동일한 결과를 얻게 되는데, 후처리 과정이 있긴 하지만 FFT 계산량을 대략 반으로 줄일 수 있다.
셋째, 본 발명은 N개의 실수 입력을 N/2-point CFFT에 적용한 후 N개의 RFFT 출력을 얻기 위한 후처리 부분에 대해, FFT 신호흐름선도 및 버터플라이 구조를 유지하여 계산 효율성을 높일 수 있어 결론적으로 복소수 입력의 푸리에 변환 장치의 기본 구조 및 계산 방식을 최대한 유지하고 수정을 최소화하면서도 하드웨어 용량이나 전력소모를 절반정도 줄일 수 있는 효과가 있다.
도 1은 고속푸리에변환(FFT)의 계산 방식을 설명하기 위한 버터플라이 연산부를 나타낸 도면이다.
도 2는 N=16인 경우에 대해 FFT 신호흐름선도 및 버터플라이 구조를 나타낸 도면이다.
도 3은 실수값 입력에 대한 N-point RFFT를 N/2-point CFFT와 2 단계 후처리 부분으로 나눈 Packing 알고리듬 적용시 후처리 연상 과정을 나타낸 도면이다.
도 4는 Packing 알고리듬의 후처리 연산 과정 일례로 16-point RFFT를 8-point CFFT와 2-stage 후처리 과정으로 표현한 계산 방식의 흐름도를 나타낸 도면이다.
도 5는 버터플라이 연산부를 기본으로 한 일반적인 복소수 입력 FFT 실시예를 나타낸 도면이다.
도 6은 본 발명에 따른 실수값을 입력으로 하는 고속푸리에 변환장치를 위한 패킹(Packing) 알고리듬의 적용을 위한 후처리 기능이 부가된 RFFT 실시예를 나타낸 도면이다
도 7은 본 발명에 따른 실수값을 입력으로 하는 고속푸리에 변환장치 패킹(Packing) 알고리듬의 RFFT의 수행시 후처리 전단계인 CFFT 수행 구성도를 나타낸 도면이다.
본 발명의 바람직한 실시 예를 첨부된 도면에 의하여 상세히 설명하면 다음과 같다.
아울러, 본 발명에서 사용되는 용어는 가능한 한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며 이 경우는 해당되는 발명의 설명부분에서 상세히 그 의미를 기재하였으므로, 단순한 용어의 명칭이 아닌 용어가 가지는 의미로서 본 발명을 파악하여야 함을 밝혀두고자 한다. 또한 실시예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고, 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
본 발명은 실수값을 입력으로 하는 고속푸리에 변환장치 및 방법에서 과제 해결에 필요한 Packing 알고리듬의 계산 방식을 요약하면 다음과 같은데, 수학식 1의 인덱스 n을 다음 식 4와 같이 짝수와 홀수 인덱스 2m, 2m+1로 분리해 보면,
Figure 112020082169800-pat00005
여기서 m=0,1, .... , M-1, M = N/2 = 2p-1
수학식1은 FFT의 Radix-2 분리 방식 중 하나인 DIT(Decimation In Time) 방식으로 다음 수학식 5와 같이 분리된다.
Figure 112020082169800-pat00006
여기서, k= 0,1, ... , N-1.
그리고 수학식 5에 수학식 4의 x[2m]=xe[m], x[2m+1]=xo[m]을 대입하면,
Xe[k]와 Xo[k]는 다음의 수학식 6과 같이 표현되어, 각기 xe, xo의 N/2-point FFT 출력이 됨을 알 수 있다.
Figure 112020082169800-pat00007
여기서, k= 0,1, ... , N/2-1.
그리고 수학식 6에서 보면 FFT 특성상 Xe[k]와 Xo[k]는 N/2를 주기로 같은 값이 반복되는 것을 알 수 있어 수학식 5를 다음의 수학식 7로 표현 가능하다.
Figure 112020082169800-pat00008
그리고 수학식 5와는 별도로 수학식 4의 짝수 및 홀수 인덱스 신호를 쌍으로 하는 복소수 y[m]을 형성할 때 다음 수학식 8과 같고,
Figure 112020082169800-pat00009
시간 영역 신호 y에 대해 FFT를 수행하면 다음의 수학식 9를 얻는다.
Figure 112020082169800-pat00010
또한 xe, xo는 각기 M=N/2개의 실수 입력 신호로 구성되어 있으므로 FFT 출력 Xe와 Xo는 수학식 3에 의해 다음 식 10을 만족한다.
Figure 112020082169800-pat00011
따라서 Y[M-k]의 conjugate Y*[M-k]는 수학식 10에 의해 다음의 식 11과 같이 나타낼 수 있다.
Figure 112020082169800-pat00012
한편 수학식 9의 Y[k]= Xe[k]+j.Xo[k], 수학식 11의 Y*[M-k] = Xe[k] - j.Xo[k] 임을 이용하여 Xe와 Xo를 다음의 수학식 12와 수학식 13과 같이 N/2-point FFT출력 Y로 표현 할수 있다.
Figure 112020082169800-pat00013
Figure 112020082169800-pat00014
그리고 식 12와 식 13으로부터 구해진 Xe[k], Xo[k]를 수학식 7에 대입하면 N개의 실수 입력 신호 x[n]에 대한 최종 FFT 출력이 구해짐을 알 수 있다. 여기서 x[n]이 실수 입력이므로 유의미한 출력은 k=0,1, ..., N/2 이다.
Figure 112020082169800-pat00015
또한 그 외의 FFT 출력 X[k], k= N/2+1, ..., N-1 는 수학식 3의 켤레쌍 관계식으로부터 다음 수학식 15와 같이 구할 수 있다.
Figure 112020082169800-pat00016
한편 k=M=N/2 인 경우는 FFT의 주기성에 따라 Xe[N/2] = Xe[0], Xo[N/2] = Xo[0]이고, 오일러 함수 e-j2π(N/2)/N = e-jπ = -1 임을 알 수 있어 다음의 수학식 16로도 표현된다.
Figure 112020082169800-pat00017
이상의 Packing 알고리듬을 종합하면 N개의 실수 입력에 대해 수학식 8로 N/2개의 복소수 쌍을 형성 후, 이를 2/N-point CFFT의 과정을 거친 출력 수학식 9를 얻은 다음, 수학식 12와 수학식 13으로 Xe와 Xo를 구한 뒤, 이를 수학식 14에 대입하는 일련의 후처리 과정을 거치면, 원래 수학식1의 N-point FFT 출력과 동일한 결과를 얻게 되어, 후처리 과정이 있긴 하지만 FFT 계산량을 대략 반으로 줄일 수 있음을 알 수 있다.
본 발명에서는 N개의 실수 입력을 N/2-point CFFT에 적용한 후 N개의 RFFT 출력을 얻기 위한 후처리 부분인 수학식 12 내지 수학식 14 에 대해, FFT 신호흐름선도 및 버터플라이 구조를 유지하여 계산 효율성을 높일 수 있는 계산 방식에 대한 것으로 다음의 과정을 수반한다.
N/2-point CFFT 출력 Y[k], k=0,1, ..., N/2-1 는 Y[k]는 Y*[N/2-k]와 쌍을 이루어 버터플라이 덧셈 연산 과정인 다음 수학식17과 수학식 18의 과정을 거친다.
Figure 112020082169800-pat00018
Figure 112020082169800-pat00019
이와 같은 수학식 17과 수학식 18의 버터플라이 덧셈 결과인 Yu[k], Yd[k]로부터 수학식 12와 수학식 13의 Xe[k], Xe[k]가 다음 수학식 19와 수학식 20으로 표현될 수 있다.
Figure 112020082169800-pat00020
Figure 112020082169800-pat00021
한편 수학식 14의 X[k]와 X[N/2-k]는 수학식 19와 수학식 20에 의해 다음의 수학식 21과 수학식 22로 표현될 수 있다.
Figure 112020082169800-pat00022
Figure 112020082169800-pat00023
여기서, Yd[k] * e-jπ/2 * e-j2πk/N 성분은 다음의 수학식 23로 표현할 수 있다.
Figure 112020082169800-pat00024
그리고 수학식 21과 수학식 22는 수학식 23에 의해 다음의 수학식 24와 수학식 25와 같이 버터플라이 덧셈 연산으로 표현 가능하다.
Figure 112020082169800-pat00025
Figure 112020082169800-pat00026
그리고 Y[k]의 실수부와 허수부를 Y[k], Re, Y[k].Im 이라 할 때 Y[k]는 수학식 26과 같다.
Figure 112020082169800-pat00027
한편 X[k], k=0, 1, ... ,N/2에서 X[0], X[N/2], X[N/4]의 경우는 다음과 같이 수학식 27 내지 수학식 29로 표현 가능하다,
Figure 112020082169800-pat00028
Figure 112020082169800-pat00029
Figure 112020082169800-pat00030
또한 여기서 X[0], X[N/2]의 계산은 수학식 30 내지 수학식 33과 같이 Y[0]와 회전인자 e-j2π(N/4)/N = -j 구성된 버터플라이 연산 방식으로 표현 가능하며 그 출력 X'의 실수부만을 취하면 수학식27, 수학식 28과 동일한 결과를 얻을 수 있다.
Figure 112020082169800-pat00031
Figure 112020082169800-pat00032
Figure 112020082169800-pat00033
Figure 112020082169800-pat00034
이와 같이 x[0], x[1], ..., x[N-1]의 실수 입력에 대한 N-point RFFT를 N/2-point CFFT와 2 단계 후처리 부분으로 나눈 Packing 알고리듬을 적용할 때 수학식 24 내지 수학식 33으로 표현된 후처리 연산 과정을 도 3에 도식화 하였다.
도 3은 실수값 입력에 대한 N-point RFFT를 N/2-point CFFT와 2 단계 후처리 부분으로 나눈 Packing 알고리듬 적용시 후처리 연상 과정을 나타낸 도면이다.
한편 Packing 알고리듬의 후처리 연산 과정 일례로 16-point RFFT를 8-point CFFT와 2-stage 후처리 과정으로 표현한 계산 방식의 흐름도은 도 4에 나타낸 바와 같다.
본 발명은 이러한 수학식 17 내지 수학식 33과 도 3 내지 도 4에서 도식화한 RFFT의 Packing 알고리듬과 관련 후처리 과정을 구현하는 데 있어 원하는 성능에 따라 기존 FFT 구현 방식을 차용하고, 기본 구조의 수정 없이 버터플라이 연산부에 부가 기능만 추가하면 되는 것을 보여주고 있다.
도 5는 주연산부인 복소수 버터플라이 계산기 한 세트를 구성하여 log2(N)스테이지의 N-FFT를 수행하는 데 있어, 매 stage 마다 N/2번 반복적으로 사용하여 FFT를 구현하는 일반적인 구성 예로서, FFT 입력 및 각 stage 별 버터플라이 연산 결과를 저장하는 데이터 메모리부(10)와, FFT 계산에 필요한 회전 인자계수를 저장하는 계수 메모리부(20)와, 데이터 메모리부(10)로부터 입력 A, B와 계수 메모리부(20)로 부터 입력 W를 공급 받아 버터플라이 연산을 수행하는 주연산부(30)와, 그 연산 결과를 메모리부에 재 저장하거나 최종 출력하는 출력부와, 이상의 연산 과정을 순차적으로 제어하기 위한 카운터부(40)와, 카운터부(40)로부터 0,1, ..., N/2-1의 순차 신호를 받아 데이터 메모리부(10) 입출력 주소와 계수메모리부(20) 출력 주소를 각각 생성하는 데이터 주소 생성부(50)와, 계수 주소 생성부(60), 데이터 메모리 입력을 FFT 입력으로 하여 FFT를 초기화할 것인지, 스테이지별 연산 중간 결과를 저장할 것인지를 선택하는 데이터 메모리 입력 MUX부(70)로 구성되어 진다. 이 구현 방식은 기본 구조는 같으나 성능 요구에 따라 버터플라이 연산부를 여러개 두어 한 순차 신호에 병렬 처리하여 고성능을 추구하거나, 버터플라이내의 복소수 연산을 여러 개의 실수 연산으로 나누어 순차 처리하는 방식으로 처리 시간이 늘어나는 대신 버터프라이 계산기 구조를 최소화하는 방법 등 성능 요구조건에 따라 다양한 구성이 가능하다.
도 6은 본 발명에 따른 실수값을 입력으로 하는 고속푸리에 변환장치를 위한 패킹(Packing) 알고리듬의 적용을 위한 후처리 기능이 부가된 RFFT 실시예를 나타낸 도면이다
본 발명에 따른 실수값을 입력으로 하는 고속푸리에 변환장치를 위한 패킹(Packing) 알고리듬의 적용을 위한 후처리 기능이 부가된 RFFT 실시예는 도 6과 같이 FFT 입력 및 각 stage 별 버터플라이 연산 결과를 저장하는 데이터 메모리부(100)와, FFT 계산에 필요한 회전 인자계수를 저장하는 계수 메모리부(110)와, 데이터 메모리부(100)로부터 입력 A, B와 계수 메모리부(110)로 부터 입력 W를 공급 받아 버터플라이 연산을 수행하는 버터플라이 연산부(120)와, 그 연산 결과를 메모리부에 재 저장하거나 최종 출력하는 출력부와, 이상의 연산 과정을 순차적으로 제어하기 위한 카운터부(130)와, 카운터부(130)로부터 0,1, ..., N/2-1의 순차 신호를 받아 데이터 메모리부(100) 입출력 주소와 계수메모리부(110) 출력 주소를 각각 생성하는 데이터 주소 생성부(140)와, 계수 주소 생성부(150) 및 데이터 메모리부(100) 입력을 FFT 입력으로 하여 FFT를 초기화할 것인지, 스테이지별 연산 중간 결과를 저장할 것인지를 선택하는 데이터 메모리 입력 MUX부(160)로 구성되어 지는 도 5에서 보여진 FFT 구현예로 부터 기본 구조의 수정 없이 버터플라이 연산부(120)에 부가 기능만 추가하여 수행할 수 있는 방법을 제시하였다.
여기서 부가 기능이란 N개의 실수 입력에 대해 인접한 실수 입력을 쌍으로 하여 N/2개의 복소수 변환하기 위해 이전 실수 입력을 저장하는 입력 레지스터부(170)와, N/2-Point FFT를 도 5의 연산 방식에 따라 진행한 후, 2단계의 후처리 Stage를 처리하기 위해 버터플라이 연산부(120)의 입력 B에 대한 입력 B-MUX부(180), 출력 D의 수정을 위한 출력 E-MUX부(190), 그리고 최종 출력을 수정 선택하는 최종 출력 F-MUX부(200)로 구성되어 있다.
여기서 입력 레지스터부(170)는 N-RFFT 수행을 위해 순차적으로 들어오는 실수 입력 x[0],..., x[N-1]에 대해 짝수 인덱스 시점의 입력 x[2m]을 입력 레지스터(170)에 저장하고 다음 홀수 인덱스 시점 인 2m+1 때의 입력 x[2m+1]과 저장된 레지스터 출력 x[2m]을 쌍으로 복소수 y[m] = x[2m]+jx[2m+1]을 형성하여 M_in을 통해 N/2번에 걸쳐 데이터 메모리부(100)에 저장하게 하여 N/2-FFT 수행을 위한 복소수 입력을 제공한다.
저장된 N/2개의 복소수 입력 y[0], ... ,y[N/2-1]에 대한 N/2-FFT 수행단계에서는 도 5에서 log2(N/2) 스테이지의 N/2-FFT를 수행하는 방식을 적용하는 것과 동일하므로, 도 6의 모든 MUX부의 select 신호는 도 5의 데이터 배열과 일치하도록 선택되어 지며, 모든 주소 생성부(140)(150)의 주소 시퀀스 또한 도 5와 동일하다. N/2-FFT 수행단계의 최종 출력 Y[0]. Y[1], ...., Y[N/2-1]은 중간 결과 저장 경로인 버터플라이 연산부(120)출력 C, E와 M_in을 통해 데이터 메모리부(100)에 저장되어 2단계의 후처리 수행에 이용된다. N/2-FFT 단계의 MUX 선택 및 데이터 이동 경로를 도 7에 나타내었다.
도 7은 본 발명에 따른 실수값을 입력으로 하는 고속푸리에 변환장치 패킹(Packing) 알고리듬의 RFFT의 수행시 후처리 전단계인 CFFT 수행 구성도를 나타낸 도면이다.
후처리 단계인 Post stage-0,1에서는 N/2-FFT 단계와 동일하게 스테이지 별로 N/4번의 버터플라이 연산이 이루어지도록 시퀀스가 형성되도록 하였다.
post stage-0는 수학식 17, 수학식 18 및 수학식 29를 수행하는 단계로, 버터플라이 연산부(120)의 회전 인자 W는 항상 1로 고정되도록 계수 메모리부(110)가 읽혀지며, 상하부 입력 A, B를 위해서는 카운터부(130)의 순차신호 0,1,...,N/4-1에 대해 인덱스 k=1,2,...,N/4을 매핑하고 0<k<N/4에는 해당 순차 신호에 데이터 메모리부(100)에서 Y[k], Y[N/2-k] 쌍을 불러와 버터플라이 연산부(120) 입력 A에는 Y[k]를 입력 B는 B-MUX부(180)를 통해 Y[N/2-k]의 켤레쌍인 Y*[N/2-k]가 전달되도록 하여 버터플라이 연산부(120)의 연산 후 출력 C에는 수학식 17의 Yu[k] = (Y[k] + Y*[N/2-k]). 출력 D와 E에는 수학식 18의 Yd[k] = (Y[k] - Y*[N/2-k])가 생성된 후 M_in을 통해 Post-stage-1용 데이터로 저장된다.
그리고 순차 신호 N/4-1에 해당하는 인덱스 k=N/4 때에는 데이터 메모리부(100)에서 Y[N/4] 하나만 불러와 입력 A에는 Y[N/4]가 입력 B는 B-MUX부(180)를 통해 0이 전달되도록 하여. 출력 C, D 모두에 Y[N/4]이 생성되고, 출력 E에는 D의 켤레 쌍인 Y*[N/4]이 전달되고 F-MUX부(200)를 통해 수학식 29의 최종 출력 X[N/4] = Y*[N/4]이 출력된다.
post stage-1는 이미 얻어진 X[N/4]을 제외한 나머지 최종 출력을 위한 버터플라이 연산을 수행하는데, X[0],X[N/2]을 위한 수학식 30 내지 33, 그리고 X[1]~X[N/2-1]을 위한 수학식 23 내지 25를 수행하는 단계로 카운터부(130)의 순차신호 0,1,...,N/4-1와 동일한 인덱스 k=0,1,...,N/4-1가 부여되며 해당 인덱스 k에 버터플라이 연산의 회전 인자 W = e-j2π(N/4+k)/N 이 계수 메모리부(110)로부터 읽힌다.
k=0인 경우 post-stage-0 단계에서 안읽혀 졌던 Y[0]를 데이터 메모리부(100)로부터 받아들여 버터플라이 연산부(120) 입력 A와 B에 동시에 전달하여, 회전인자 W = e-j2π(N/4+0)/N = -j 와 함께 연산을 수행 후 그 결과인 수학식 30의 X'[0]가 출력 C에, 수학식 31의 X'[N/2]가 출력 D와 E에 전달 된 후 F-MUX부(200)를 통해 그 실수부 만 취한 수학식 32의 X[0] = X'[0].Re, 수학식 33의 X[N/2] = X'[N/2].Re이 최종 출력된다.
k=1, ..., N/4-1의 경우 해당 인덱스 k 차례에 post-stage-0의 연산 결과인 수학식 17과 수학식 18의 Yu[k]와 Yd[k]를 데이터 메모리부(100)로부터 읽어 들여 버터플라이 연산부(120) 입력 A에는 Yu[k]가, B 먹스부(180)에는 Yd[k]가 전달되고, 회전인자 W = e-j2π(N/4+0)/N와 함께 연산을 수행 후 그 결과인 수학식 24의 X[k]가 출력 C에, 출력 D는 그 켤레쌍인 수학식 31의 X[N/2-k]로 변환되어 E-MUX부(190)를 통해 출력 E에 전달되어, F-MUX부(200)를 통해 최종 출력 X[k],와 X[N/2-k]가 얻어진다.
이상에서 설명한 post-satge 0,1로 나누어진 후처리 단계의 전과정에 대해 해당 stage별 순차 신호에 따른 입출력 정보를 표 1에 요약해 놓았다.
Figure 112020082169800-pat00035
이상과 같은 예로 본 발명을 설명하였으나, 본 발명은 반드시 이러한 예들에 국한되는 것이 아니고, 본 발명의 기술사상을 벗어나지 않는 범위 내에서 다양하게 변형 실시될 수 있다. 따라서 본 발명에 개시된 예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 예들에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 한다.
100 : 데이터메모리부 110 : 계수 메모리부
120 : 버터플라이 연산부 130 : 카운터부
140 : 데이터 주소 생성부 150 : 계수 주소 생성부
160 : 데이터 메모리 입력 MUX부 170 : 입력 레지스터부
180, 190, 200 : MUX부

Claims (4)

  1. 삭제
  2. 삭제
  3. FFT 입력 및 각 stage 별 버터플라이 연산 결과를 저장하는 데이터 메모리부(100);
    FFT 계산에 필요한 회전 인자계수를 저장하는 계수 메모리부(110);
    상기 데이터 메모리부(100)로부터 입력 A, B와 계수 메모리부(110)로 부터 입력 W를 공급 받아 버터플라이 연산을 수행하는 버터플라이 연산부(120);
    상기 버터플라이 연산부(120)의 연산 과정을 순차적으로 제어하기 위한 카운터부(130);
    상기 카운터부(130)로부터 0,1,...,N/2-1의 순차 신호를 받아 데이터 메모리부(100)의 입출력 주소와 계수메모리부(110) 출력 주소를 각각 생성하는 데이터 주소 생성부(140)와, 계수 주소 생성부(150);
    상기 데이터 메모리부(100) 입력을 FFT 입력으로 하여 FFT를 초기화할 것인지, 스테이지별 연산 중간 결과를 저장할 것인지를 선택하는 데이터 메모리 입력 MUX부(160);
    N개의 실수 입력에 대해 인접한 실수 입력을 쌍으로 하여 N/2개의 복소수 변환하기 위해 이전 실수 입력을 저장하는 입력 레지스터부(170); 및
    N/2-Point FFT를 진행한 후, 2단계의 후처리 Stage를 처리하기 위해 상기버터플라이 연산부(120)의 입력 B에 대한 입력 B-MUX부(180), 출력 D의 수정을 위한 출력 E-MUX부(190), 그리고 최종 출력을 수정 선택하는 최종 출력 F-MUX부(200);를 포함하여 구성되고,
    N/2+1개의 실수 입력 푸리에 변환 최종 출력을 얻는 후처리 단계내의 2개 스테이지는,
    데이터 메모리부에 저장된 N/2 포인트 푸리에 변환 결과인 복소수 값을 N/4 번의 순기신호 순서에 따라 정해진 주소로 읽어 들인 값과, 1 값으로 고정된 계수 메모리 출력 값에 의해 구해진 N/2개의 버터플라이 연산 출력 시퀀스로 부터, N/4번째의 최종 출력을 얻고 나머지 N/2-1개의 출력은 최종 출력을 얻기 위한 중간 결과로 데이터 메모리로 재 저장되는 첫 번째 스테이지와,
    상기 첫 번째 스테이지에서 안 읽혀진 N/2 포인트 푸리에 변환의 첫 번째 결과 값과 N/2-1개의 첫 번째 스테이지의 결과 값이 저장된 데이터 메모리부와 후처리를 위해 추가로 저장된 회전 인자 계수 메모리부로부터, N/4 번의 순기신호 순서에 따라 정해진 주소로 읽어 들인 데이터 및
    계수 값에 의해 구해진 N/2개의 버터플라이 연산 출력 시퀀스로부터 상기 첫 번째 스테이지에서 구해진 N/4번째의 최종 출력을 제외한 나머지 N/2개의 최종 출력을 얻기 위한 두 번째 스테이지로 이루어져, N개의 실수 입력 시퀀스에 특화된 것을 특징으로 하는 실수값을 입력으로 하는 고속푸리에 변환 장치.
  4. 청구항 3에 있어서,
    상기 2개의 스테이지로 나뉘어진 후처리 단계의 전과정에 대해 해당 stage별 N/4번의 순차 신호에 따른 입출력 정보를 구하기 위하여 데이터 메모리부 및 계수 메모리부의 접근 어드레스를 생성하고, 버터플라이 연산부의 전후단에 위치한 관련 입출력 MUX부들의 select 신호를 생성하도록 구성된 N개의 실수 입력 시퀀스에 특화된 것을 특징으로 하는 실수값을 입력으로 하는 고속푸리에 변환 장치.
KR1020200097862A 2020-08-05 2020-08-05 실수값을 입력으로 하는 고속푸리에 변환장치 및 방법 KR102376492B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200097862A KR102376492B1 (ko) 2020-08-05 2020-08-05 실수값을 입력으로 하는 고속푸리에 변환장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200097862A KR102376492B1 (ko) 2020-08-05 2020-08-05 실수값을 입력으로 하는 고속푸리에 변환장치 및 방법

Publications (2)

Publication Number Publication Date
KR20220017638A KR20220017638A (ko) 2022-02-14
KR102376492B1 true KR102376492B1 (ko) 2022-03-21

Family

ID=80254098

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200097862A KR102376492B1 (ko) 2020-08-05 2020-08-05 실수값을 입력으로 하는 고속푸리에 변환장치 및 방법

Country Status (1)

Country Link
KR (1) KR102376492B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116308989B (zh) * 2022-12-09 2023-10-13 杭州后量子密码科技有限公司 一种全同态快速数论变换的gpu加速方法
CN117235420B (zh) * 2023-11-15 2024-02-09 北京智芯微电子科技有限公司 一种信号处理电路、方法、处理器、存储介质及芯片

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002351858A (ja) * 2001-05-30 2002-12-06 Fujitsu Ltd 処理装置
JP2006313518A (ja) * 2005-05-05 2006-11-16 Arm Ltd 多次元高速フーリエ変換

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6625630B1 (en) 2000-06-05 2003-09-23 Dsp Group Ltd. Two cycle FFT
KR100720949B1 (ko) 2004-12-23 2007-05-22 한국전자통신연구원 직교 주파수 분할 다중화 시스템에서의 고속 푸리에 변환프로세서 및 그 변환 방법
KR101026469B1 (ko) 2005-11-29 2011-04-01 삼성전자주식회사 직교주파수다중 방식의 무선통신 시스템에서 반송파 주파수동기 장치 및 방법
KR101334494B1 (ko) * 2011-10-31 2013-11-29 인하대학교 산학협력단 고속 저 복잡도의 Radix 2의 5승 고속 푸리에 변환 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002351858A (ja) * 2001-05-30 2002-12-06 Fujitsu Ltd 処理装置
JP2006313518A (ja) * 2005-05-05 2006-11-16 Arm Ltd 多次元高速フーリエ変換

Also Published As

Publication number Publication date
KR20220017638A (ko) 2022-02-14

Similar Documents

Publication Publication Date Title
Bouguezel et al. A new radix-2/8 FFT algorithm for length-q/spl times/2/sup m/DFTs
KR102376492B1 (ko) 실수값을 입력으로 하는 고속푸리에 변환장치 및 방법
JP6288089B2 (ja) デジタルフィルタ装置、デジタルフィルタ処理方法及びデジタルフィルタプログラムが記憶された記憶媒体
US9767074B2 (en) Method and device for fast fourier transform
AU579621B2 (en) Computer and method for discrete transforms
US7007056B2 (en) Memory address generating apparatus and method
JP2012502379A (ja) 離散フーリェ変換(dft)係数についての行列を演算するための方法および装置
Carranza et al. Fast and scalable computation of the forward and inverse discrete periodic radon transform
Singh et al. Design of radix 2 butterfly structure using vedic multiplier and CLA on xilinx
CN113378108B (zh) 音频处理装置的快速傅立叶变换电路
US6728742B1 (en) Data storage patterns for fast fourier transforms
US9268744B2 (en) Parallel bit reversal devices and methods
WO2023045516A1 (zh) 执行fft的方法、装置及设备
Hua et al. A novel unified method for the fast computation of discrete image moments on grayscale images
US20200142670A1 (en) Radix-23 Fast Fourier Transform for an Embedded Digital Signal Processor
More et al. FPGA implementation of FFT processor using vedic algorithm
CN104572578B (zh) 用于显著改进微控制器中fft性能的新颖方法
Polychronakis et al. Conflict free, parallel memory access for radix-2 FFT processors
US20180373676A1 (en) Apparatus and Methods of Providing an Efficient Radix-R Fast Fourier Transform
US20220043883A1 (en) Hardware implementation of discrete fourier transform
Padmavathi et al. Area Efficient Design of In-Place RFFT Scaling for OFDM Applications
Du Pont et al. Hardware Acceleration of the Prime-Factor and Rader NTT for BGV Fully Homomorphic Encryption
Tamilselvi et al. Resourceful fast DHT algorithm for VLSI implementation by split radix algorithm
Mellqvist et al. One million-point fft
Aatish et al. Three dimensional fast Fourier transform CUDA implementation

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant