KR100836050B1 - 고속 푸리에 변환 연산 장치 - Google Patents

고속 푸리에 변환 연산 장치 Download PDF

Info

Publication number
KR100836050B1
KR100836050B1 KR1020010028459A KR20010028459A KR100836050B1 KR 100836050 B1 KR100836050 B1 KR 100836050B1 KR 1020010028459 A KR1020010028459 A KR 1020010028459A KR 20010028459 A KR20010028459 A KR 20010028459A KR 100836050 B1 KR100836050 B1 KR 100836050B1
Authority
KR
South Korea
Prior art keywords
counter
value
parity
data
butterfly
Prior art date
Application number
KR1020010028459A
Other languages
English (en)
Other versions
KR20020089560A (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 KR1020010028459A priority Critical patent/KR100836050B1/ko
Priority to US10/152,940 priority patent/US7007056B2/en
Publication of KR20020089560A publication Critical patent/KR20020089560A/ko
Application granted granted Critical
Publication of KR100836050B1 publication Critical patent/KR100836050B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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

본 발명은 고속 푸리에 변환 연산 장치에 관한 것으로 특히, 매 클럭마다 버터플라이 입출력을 동시에 읽고 쓰는 것은 물론 계산 과정을 단순화함으로써 고속의 FFT 하드웨어를 구현하는데 목적이 있다. 이러한 목적의 본 발명은 버터플라이 연산의 입출력 데이터를 저장하는 샘플 램 뱅크(510)(520)와, 버터플라이 연산 계수인 트위들 팩터(twiddle factor)를 저장하는 계수 롬(ROM)(540)과, FFT 크기에 상관없이 고정의 지연값으로 상기 샘플 램 뱅크(510)(520)의 어드레스를 발생시키는 램 어드레스 발생기(530)와, 상기 샘플 램 뱅크(510)(520)의 데이터와 계수 롬(540)의 계수를 입력으로 버터플라이 연산을 수행하여 그 연산값을 상기 샘플 램 뱅크(510)(520)로 궤환시키는 버터플라이 연산 유닛(560)과, 패리티 값(pr)에 따라 상기 샘플 램 뱅크(510)(520)의 출력중 하나를 선택하여 최종 FFT 결과 데이터로 출력하는 멀티플렉서(570)로 구성함을 특징으로 한다.

Description

고속 푸리에 변환 연산 장치{OPERATION APPARATUS FOR FAST FOURIER TRANSFORM}
도1은 일반적인 8 포인트 FFT의 연산 과정을 보인 신호 흐름도.
도2는 도1에서 버터플라이 연산의 입출력을 보인 예시도.
도3은 FFT 연산에서 메모리 뱅크 인덱스 추출을 보인 신호 흐름도.
도4는 본 발명의 실시예에서 메모리 뱅크의 입력 데이터 쌍을 보인 예시도.
도5는 본 발명의 실시예를 위한 장치의 블럭도.
도6은 도5에서 램 어드레스 발생기의 상세 블럭도.
도7은 도5에서 동작 상태를 보인 테이블.
도8은 도6에서 차등 패리티 카운터의 동작을 보인 타이밍도.
* 도면의 주요부분에 대한 부호 설명 *
510,520 : 샘플 램 뱅크 530 : 램 어드레스 발생기
540 : 계수 롬 550 : 롬 어드레스 발생기
560 : 버터플라이 연산 유닛 570 : 멀티플렉서
580 : 제어기(Controller)
본 발명은 고속 퓨리에 변환(FFT)에 관한 것으로 특히, 고속 퓨리에 변환 연산 장치에 관한 것이다.
이산 퓨리에 변환(DFT ; Discrete Fourier Transform)이란 서로 다른 주파수를 갖는 정현파들의 선형 조합으로 표현되는 이산 시간 함수를 정형파들의 주파수와 크기의 함수로 변환하는 것으로, 디지털 신호 해석 및 응용 분야에 널리 사용되고 있다.
그리고, 고속 퓨리에 변환(FFT : Fast Fourier Transform)이란 이산 퓨리에 변환(DFT)의 고속 알고리즘으로서 이산 퓨리에 변환의 실제 응용에 널리 사용되고 있다.
고속 퓨리에 변환은 DIF(Decimation In Frequency)와 DIT(Decimation In Time) 알고리즘으로 나누어진다.
본 발명에서는 일반적으로 널리 사용되고 있는 DIT 알고리즘을 중심으로 설명하기로 한다.
도1은 일반적으로 DIT 알고리즘을 사용한 8 포인트 FFT의 신호 흐름을 도시한 예시도로서, 버터플라이(butterfly)라는 기본 연산 단위로 구성되어 있고 각각의 버터플라이는 스테이지(stage)라는 순서에 따라 수행됨을 알 수 있다.
FFT를 구성하는 기본 연산 단위인 버터플라이의 입출력이 도2와 같다면 그 연산 결 과를 수식으로 표시하면 다음과 같다.
Figure 112007079104529-pat00001
Figure 112007079104529-pat00002
이로부터 버터플라이의 입력과 출력의 값들은 모두 복소수의 값을 가짐을 알 수 있다.
도1에서의 FFT 연산 과정을 설명하면 다음과 같다.
먼저, 시간 영역 입력 데이터를 정해진 순서에 맞게 저장한다.
이때, 입력 데이터의 저장 순서는 입력 데이터 인덱스(index)를 이진수로 표현한 후 순서를 역전시키는 방법으로 계산하는데, 이를 비트 리버스드 어드레싱(bit reversed addressing)이라 한다.
이 후, 입력된 데이터는 도1과 같이 각 스테이지마다 정해진 버터플라이 연산으로 처리되어 FFT의 값을 계산하게 된다.
이 후, 상기에서 계산된 FFT의 주파수 영역 출력 데이터는 입력 데이터와는 다르게 '0'부터 순서대로 저장된 후 출력된다.
이러한 FFT는 DFT에 비해 매우 효율적인 알고리즘이다.
그러나, 보다 빠르고 효율적인 하드웨어의 구현을 위해서는 여전히 그 처리 속도 및 데이터의 운영 방법에 많은 문제가 있다.
이를 개선하여 고속의 FFT를 구현하기 위해서는 버터플라이에 필요한 2개의 입력과 출력을 동시에 읽고 쓰는 방법이 필요하다.
이러한 필요에 부응하는 방법을 예를 들면, 빠른 처리 속도를 위한 메모리의 동시 읽고 쓰는 고속 메모리 운영 방식이 M.C. Pease에 의해 알려져 있다.
이는 도3과 같이 버터플라이의 서로 다른 입출력 데이터를 동시에 읽고 쓰기 위해 서로 다른 메모리 뱅크(memory bank : 메모리를 나눈 단위)에 저장하는 방식으로, 신호 흐름의 각 행에 '0'부터 차례로 순서를 매기고 그 순서값의 패리티(parity ; 2진수의 '1'의 개수가 짝수이면 '0', 홀수이면 '1')에 해당하는 메모리 뱅크에 데이터를 저장하는 방법이다.
즉, 도3과 같이 전체 데이터를 2개의 메모리 뱅크에 나누어 저장하면 전체 스테이지에 걸쳐서 버터플라이의 입력과 출력이 서로 다른 메모리 뱅크에 저장된다.
또한, D. Cohen과 L.G. Johnson은 도3과 같은 메모리 운영 방식을 기초로 하여 각각 빠르고 효율적인 FFT 하드웨어 구현 방법을 제시하였다.
그러나, 이들 방식의 경우에도 메모리 뱅크의 인덱스를 계산하기 위하여 일반적인 패리티 계산 방법을 채용하는데, FFT의 크기가 커짐에 따라 패리티 계산시 큰 지연값을 갖는다는 점에서 고속 FFT 하드웨어의 구현에 적합하지 않다는 지적이 있다.
이에, Y.Ma와 L.Wanhammar 등은 M.C. Pease와 같은 인-플레이스(in-place ; 연산의 입력과 출력이 동일한 위치에 저장) 방식을 사용하지 않는 대신 뱅크 인덱스의 계산이 빠르고 간단한 고속 FFT 메모리 운영 방식을 제안하였다.
그러나, 이 방식의 경우에도 알고리즘의 이해가 복잡하고 인-플레이스 방식을 사용하지 않기 때문에 주어진 메모리 이외의 추가적인 레지스터가 필요하며 반드시 파이프 라인 방식의 FFT 구조를 이용하여야 하는 문제점을 갖고 있다.
따라서, 본 발명은 종래의 문제점을 개선하기 위하여 창안한 고속 푸리에 변환 연산 장치로서, 다음과 같은 목적이 있다.
본 발명의 제1 목적은 2개의 메모리 뱅크와 1개의 버터플라이 연산 유닛을 구비하여 매 클럭마다 버터플라이 입출력을 동시에 읽고 쓰도록 함으로써 고속의 FFT 하드웨어를 구현하는데 있다.
본 발명의 제2 목적은 D.Cohen과 L.G.Johnson이 제안한 방식에서의 느린 패리티 연산의 문제점을 해결하기 위하여 FFT 크기에 상관없이 작은 고정된 지연값을 갖는 차동 패리티 카운터를 이용함으로써 빠르게 패리티를 계산하는데 있다.
본 발명의 제3 목적은 Y.Ma와 L.Wanhammar가 제안한 알고리즘에서의 복잡성을 해결하기 위하여 각 스테이지에서 사용하는 데이터의 입출력에 동일한 메모리 뱅크 인덱스와 어드레스를 사용함으로써 계산 과정을 단순화하는데 있다.
본 발명의 제4 목적은 Y.Ma와 L.Wanhammar가 제안한 알고리즘에서의 추가적인 레지스터 사용의 문제점을 해결하기 위하여 인-플레이스 방식을 채용함으로써 추가의 레지스터 없이 최소의 메모리만으로 구비하도록 한다.
본 발명의 제5 목적은 Y.Ma와 L.Wanhammar가 제안한 알고리즘에서의 필수적인 파이프라인 방식 사용의 문제점을 해결하기 위하여 인-플레이스 방식을 채용함으로써 단일 클럭 싸이클에서 버터플라이 연산을 수행하는 구조의 FFT 하드웨어에 적용이 가능하도록 한다.
본 발명은 상기의 목적을 달성하기 위하여 2개의 버터플라이 입출력을 동시에 읽고 쓰기 위한 제1,제2 샘플 램 뱅크와, 상기 제1,제2 샘플 램 뱅크의 입력 데이터를 읽어 버터플라이 연산을 수행하고 그 연산 결과를 상기 제1,제2 샘플 램 뱅크에 저장하는 버터플라이 연산유닛과, 버터플라이 연산 계수인 트위들 팩터(twiddle factor)를 상기 버터플라이 연산유닛에 제공하는 계수 롬과, FFT 크기에 상관없이 고정의 지연값으로 상기 제1,제2 샘플 램 뱅크의 어드레스를 발생시키는 램 어드레스 발생기와, 상기 제1,제2 샘플 램 뱅크에 연결되어 최종 FFT 연산 결과를 출력하기 위한 멀티플렉서를 구비하여 도4와 같은 FFT 연산을 수행하도록 구성함을 특징으로 한다.
상기 램 어드레스 발생기는 제1,제2 샘플 램 뱅크에서 시간 영역 입력과 주파수 영역 출력을 동시에 쓰고 읽을 때 FFT의 크기에 상관없는 작은 고정 지연값으로 현재의 패리티를 계산하는 차등 패리티 카운터와, 어드레스를 계산하는 버터플라이 카운터 변형부를 구비하여 구성함을 특징으로 한다.
상기 메모리 뱅크 인덱스와 어드레스는 각각의 스테이지에서 데이터 입출력시 동일한 값을 갖도록 함을 특징으로 한다.
이하, 본 발명을 도면에 의거 상세히 설명하면 다음과 같다.
도5는 본 발명의 실시예를 위한 장치의 블럭도로서 이에 도시한 바와 같이, 버터플라이 연산의 입출력 데이터를 저장하는 샘플 램 뱅크(sample RAM bank)(510)(520)와, 상기 샘플 램 뱅크(510)(520)의 어드레스를 발생하는 램 어드레스 발생기(530)와, 버터플라이 연산 계수인 트위들 팩터(twiddle factor)를 저장하는 계수 롬(ROM)(540)과, 이 계수 롬(540)의 어드레스를 발생하는 롬 어드레스 발생기(550)와, 상기 샘플 램 뱅크(510)(520)의 데이터와 계수 롬(540)의 계수를 입력으로 버터플라이 연산을 수행하여 그 연산값을 상기 샘플 램 뱅크(510)(520)로 궤환시키는 버터플라이 연산 유닛(560)과, 상기 램 어드레스 발생기(530)에서의 패리티 값(pr)에 따라 상기 샘플 램 뱅크(510)(520)의 출력중 하나를 선택하여 최종 FFT 결과 데이터로 출력하는 멀티플렉서(570)와, 상기 램 어드레스 발생기(530) 및 롬 어드레스 발생기(550)를 제어하여 전체 FFT 연산 동작을 제어하는 제어기(controller)(580)로 구성한다.
상기 램 어드레스 발생기(530) 및 제어기(580)는 도6의 블럭도와 같이 구성한다.
상기 제어기(580)는 매 클럭마다 '0'부터 양의 방향으로 출력값을 증가하는 데이터 카운터(581)와, 매 클럭마다 양의 방향으로 값(b5∼b0)이 증가하는 버터플라이 카운터(582)와, 각 스테이지에서 매 클럭마다 시프트를 수행하여 시프트값(p6∼p0)을 출력하는 패스 시프트 카운터(583)를 구비하여 구성한다.
상기 램 어드레스 발생기(530)는 현재의 패리티 값(pr)을 출력하기 위한 차등 패리티 카운터(600)와, 새로운 어드레스를 출력하기 위한 버터플라이 카운터 변형부(700)로 구성한다.
상기 차등 패리티 카운터(600)는 데이터 카운터(581)의 매 클럭마다 패리티의 변화값을 계산하기 위한 멀티플렉서부(610)와, 이 멀티플렉서부(610)의 출력 신호를 반전하는 NOT 게이트(630)와, 상기 데이터 카운터(581)의 카운트값(d5∼d0)을 연산하여 상기 멀티플렉서부(610)를 제어하기 위한 신호를 출력하는 AND 게이트부(620)와, 현재의 패리티 값(pr)을 저장하고 있는 플립플롭(650)과, 현재의 패리티값(pr)과 상기 NOT 게이트(630)에서 출력되는 패리티 변화값(g0)을 XOR 연산하여 다음 패리티 값(inpr)을 계산한 후 그 패리티 값(in-pr)을 상기 플립플롭(650)에 저장하는 XOR 게이트(640)로 구성한다.
상기 멀티플렉서부(610)는 데이터 카운터(581)의 카운트값(d0)과 패리티 변화값(g1)중 하나를 선택하기 위한 멀티플렉서(611)와, 데이터 카운터(581)의 카운트값(d2)과 패리티 변화값(g2)중 하나를 선택하여 상기 패리티 변화값(g1)으로 출력하기 위한 멀티플렉서(612)와, 데이터 카운터(581)의 카운트값(d4)과 패리티 변화값(d6=g3)중 하나를 선택하여 상기 패리티 변화값(g2)으로 출력하기 위한 멀티플렉서(613)로 구성한다.
상기 앤드 게이트부(620)는 데이터 카운터(581)의 카운트값(d0)(d1)을 논리곱하여 멀티플렉서(611)의 제어 신호로 출력하기 위한 앤드 게이트(621)와, 데이터 카운터(581)의 카운트값(d2)(d3)을 논리곱하여 멀티플렉서(612)의 제어 신호로 출력하기 위한 앤드 게이트(622)와, 데이터 카운터(581)의 카운트값(d4)(d5)을 논리곱하여 멀티플렉서(613)의 제어 신호로 출력하기 위한 앤드 게이트(623)로 구성한다.
상기 버터플라이 카운터 변형부(700)는 버터플라이 카운터(582)와 패스 시프터 카운터(583)의 각각 출력을 XOR 연산하여 새로운 어드레스(a5∼a0)를 계산하도록 XOR 게이트(711∼716)로 구성한다.
이와같이 구성한 본 발명의 실시예에 대한 동작 및 작용 효과를 설명하면 다음과 같다.
본 발명의 실시예는 DIT 알고리즘의 8 포인트 FFT를 구현함에 있어서, 도1의 FFT 연산 알고리즘에 도3의 메모리 할당 알고리즘을 적용하는 것이다.
즉, 본 발명의 실시예는 도1의 FFT 연산에서 도3의 메모리 할당 알고리즘을 적용하여 2개의 버터플라이 입출력을 동시에 읽고 쓰기 위한 샘플 램 뱅크(510)(520)와, FFT 크기에 상관없이 고정의 작은 지연값으로 상기 샘플 램 뱅크(510)(520)의 어드레스를 발생시키는 램 어드레스 발생기(530)와, 상기 샘플 램 뱅크(510)(520)에 연결되어 최종 FFT 연산 결과를 출력하기 위한 멀티플렉서(570)를 구비하는 것으로, 상기 램 어드레스 발생기(530)는 제어기(580)에 구비된 데이터 카운터(581), 버터플라이 카운터(582) 및 패스 시프트 레지스터(583)에서 매 클럭마다 출력되는 값에 의해 제어된다.
이러한 본 발명의 실시예에 대한 동작을 도5에서 설명하면 다음과 같다.
먼저, 매 클럭마다 시간 영역 데이터는 1개씩 샘플 램 뱅크(510)(520)에 저장된다.
이때, 제어기(580)에 구비된 데이터 카운터(581)의 출력값이 매 클럭마다 '0'부터 '7'까지 순차적으로 증가함에 따라 샘플 램 뱅크(510)(520)의 어드레스로 출력된다.
예를 들어, 데이터 카운터(581)의 이진수 표현이 {d2, d1, d0}이라면 초기 데이터 저장을 위한 뱅크 인덱스는 상기 데이터 카운터(581)의 패리티 값과 동일하고, 샘플 램 뱅크(510)(520)중 해당 샘플 램 뱅크의 어드레스는 {d0,d1}가 된다.
이를 N 포인트 FFT에 적용하는 경우 'n'을
Figure 112007079104529-pat00003
값으로 정의할 때 데이터 카운터(581)의 이진수 표현이 {d{n-1), d(n-2), ... , d1, d0}라고 하면 뱅크 인덱스는 상기 데이터 카운터(581)의 패리티와 동일하며 샘플 램 뱅크(510)(520)의 어드레스는 {d0, d1, ... , d(n-3), d(n-2)}가 된다.
이 후, 샘플 램 뱅크(510)(520)에 저장된 입력 데이터는 버터플라이 연산 유닛(560)에서 각 스테이지에 따라 각각의 버터플라이 연산이 수행된다.
여기서, 버터플라이 연산은 각각의 샘플 램 뱅크(510)(520)로부터 2개의 입력을 읽어 계수 롬(540)에서의 트위들 팩터와 함께 도2와 같은 방식으로 수행되고 2개의 결과 데이터는 상기 샘플 램 뱅크(510)(520)에 각기 저장된다.
이때, 하나의 버터플라이 연산에 대한 샘플 램 뱅크(510)(520)의 입출력 어드레스는 동일하다.
그리고, 각 스테이지 패스에서 매클럭마다 제어기(580)는 패스 시프터 레지스터(583)가 마지막에 1번 시프트하고 버터플라이 카운터(582)가 '0'부터 '6'까지 순차적으로 카운트값을 증가시키게 된다.
즉, FFT 연산은 도1과 같이 각 스테이지 패스마다 정해진 버터플라이 연산들을 수행하는 것으로, 패스 시프트 레지스터(583)의 이진수 표현이 {p2, p1, p0}이고 버터플라이 카운터(582)의 이진수 표현이 {b1, b0}라고 가정할 때 각각의 초기값이 {0,0,1}과 {0,0}이라고 하면 순차적으로 {0,0,1}과 {0,1} - {0,0,1}과 {1,0} - {0,0,1}과 {1,1} - {0,1,0}과 {0,0} - {0,1,0}과 {0,1} - {0,1,0}과 {1,0} - {0,1,0}과 {1,1} - {1,0,0}과 {0,0} - {1,0,0}과 {0,1} - {1,0,0}과 {1,0} - {1,0,0}과 {1,1}이 된다.
이때, 임의의 스테이지 패스의 임의의 버터플라이 연산에서 샘플 램 뱅크(510)의 입출력 어드레스는 버터플라이 카운터(582)와 동일한 {b1, b0}이고 샘플 램 뱅크(520)의 입출력 어드레스는 패스 시프트 레지스터(583)와 버터플라이 카운터(582)의 연산 결과인 {a1, a0}이다.
여기서, 샘플 램 뱅크(520)의 입출력 어드레스는 버터플라이 카운터 변형부(700)에서 계산되는데, a1은 b1과 p2를 XOR(배타적 논리합) 연산한 결과이고 a0는 b0와 p1을 XOR 연산한 결과이다.
이를 N 포인트 FFT에 적용하는 경우 패스 시프트 레지스터(583)의 이진수 표현은 {p(n-1), p(n-2), ... , p1, p0}이고 버터플라이 카운터(582)의 이진수 표현은 {b(n-2), b(n-1), ... , b1, b0}이라고 가정하면 샘플 램 뱅크(510)의 입출력 어드레스는 {b(n-2), b(n-1), ... , b1, b0}이고 샘플 램 뱅크(520)의 입출력 어드레스는 {a(n-2), a(n-1), ... , a1, a0}이다.
여기서, 샘플 램 뱅크(520)의 입출력 어드레스 a(m)은 버터플라이 카운터 변형부(700)에서 b(m)과 p(m+1)을 XOR 연산한 결과이다.
이 후, 상기와 같은 연산으로 샘플 램 뱅크(510)(520)에 저장된 주파수 영역 데이터는 멀티플렉서(570)를 통해 매 클럭마다 1개씩 출력된다.
이때, 매 클럭마다 제어기(580)에 구비된 데이터 카운터(581)가 '0'부터 '7'까지 순차적으로 증가함에 따라 샘플 램 뱅크(510)(520)의 어드레스로 발생된다.
예를 들어, 데이터 카운터(581)의 이진수 표현이 {d2, d1, d0}이라면 데이터 출력을 위한 뱅크 인덱스는 상기 데이터 카운터(581)의 패리티 값과 동일하고 샘플 램 뱅크(510)(520)의 어드레스는 {d2, d1}가 된다.
이를 N 포인트 FFT에 적용하는 경우 'n'을
Figure 112007079104529-pat00004
값으로 정의할 때 데이터 카운터(581)의 이진수 표현이 {b(n-1), b(n-2), ... , b1, b0}이라면 뱅크 인덱스는 데이터 카운터(610)의 패리티이고 샘플 램 뱅크(510)(520)의 어드레스는 {b(n-1), b(n-2), ... , b1}이 된다.
한편, 상기와 같은 FFT 연산에서 샘플 램 뱅크(510)(520)의 어드레스를 발생시키기 위하여 램 어드레스 발생기(530)는 데이터 카운터(581)의 패리티를 계산하는 차등 패리티 카운터(600)와, 패스 시프트 카운터(583)와 버터플라이 카운터(582)의 출력값을 XOR 연산하여 어드레스(a(m))를 계산하는 버터플라이 카운터 변형부(700)를 구비하는데, 도6을 참조하여 설명하면 다음과 같다.
우선, 차등 패리티 카운터(600)는 데이터 카운터(581)가 매 클럭마다 '0'부터 양의 방향으로 증가할 때 앤드 게이트부(620)는 앤드 게이트(621∼623)에서 상기 데이터 카운터(581)의 카운트값(d1,d0)(d2,d3)(d4,d5)을 논리곱하여 멀티플렉서부(610)에 구비된 멀티플렉서(611∼613)를 제어하기 위한 신호를 출력하게 된다.
이때, 멀티플렉서부(610)는 앤드 게이트부(620)의 출력에 의해 멀티플렉서(611∼613)의 절환이 제어되어 패리티 변화값을 출력하게 되고 그 패리티 변화값은 NOT 게이트(630)에서 반전되어 XOR 게이트(640)로 출력된다.
이 후, XOR 게이트(640)가 NOT 게이트(630)의 출력값(g0)과 플립플롭(650)에 저장되어 있는 현재의 패리티값(pr)을 XOR 연산하여 다음 패리티값(inpr)을 상기 플립플롭(650)에 저장함으로써 패리티 값을 계산하게 된다.
상기와 같은 동작은 클럭이 진행됨에 따라 반복적으로 수행되며, 각 부의 출력값에 대한 파형도는 도8과 같다.
이에 따라, 매 클럭마다 차등 패리티 카운터(600)에서 출력된 패리티값(pr)에 의해 멀티플렉서(570)가 제어되어 샘플 램 뱅크(510)(520)의 출력값중 하나가 선택, 출력되어진다.
여기서, 차등 패리티 카운터(600)는 도8의 타이밍도에 도시한 바와 같이 FFT의 크기에 상관없는 매우 작은 고정 지연값(t_d)을 나타내며 그 계산된 패리티 값(pr)이 플립플롭(650)의 출력값이기 때문에 샘플 램 뱅크(510)(520)와 멀티플렉서(570)에 빠른 제어 신호를 입력할 수 있으므로 매우 고속의 FFT 하드웨어 구현을 가능하게 한다.
즉, 상기와 같은 메모리 어드레스 발생 알고리즘을 8 포인트 FFT에 대해 적용하면 도7에 도시한 표와 동일하게 수행하게 된다.
또한, 본 발명의 실시예에 제시한 메모리 어드레스 발생 알고리즘과 차등 패리티 카운터 알고리즘은 상기에서 설명한 DIT 알고리즘 외에도 DIF 알고리즘은 물론 다양한 레이딕스(radix) 값을 갖는 FFT에 적용이 가능하다.
상기에서 상세히 설명한 바와 같이 본 발명은 다음과 같은 효과를 달성할 수 있다.
1. 본 발명은 메모리 어드레스 할당 방식을 개선하여 버터플라이의 입출력 데이터를 동시에 읽고 쓸 수 있게 함으로써 고속 FFT 하드웨어의 구현을 가능하게 한다.
삭제
2. 본 발명은 메모리 뱅크에 필요한 패리티 연산을 위해 FFT 크기에 상관없는 작은 고정 지연값을 갖는 회로를 사용함으로써 D.Cohen과 L.G.Johnson이 제안한 방식에서의 느린 패리티 연산 문제를 해결할 수 있다.
3. 본 발명은 입출력 데이터를 위한 메모리 뱅크와 어드레스 값이 동일하고 그 값을 계산하기 위한 회로를 간단히 구현할 수 있음으로써 하드웨어 구성에 유연하게 적용할 수 있다.
4. 본 발명은 인-플레이스 방식을 사용하므로 FFT 하드웨어 구현에 있어서 메모리의 사용을 최소화할 수 있고 또한, 파이프라인 구조가 아닌 단일 클럭 싸이클에 버터플라이 연산을 수행하는 구조의 FFT 하드웨어에도 적용이 가능하다.
따라서, 본 발명은 고속 디지털 통신 분야의 OFDM(Orthogonal Frequency Division Multiplexing) 변조 방식, FDE(Frequency Domain Equalizer) 등화기, 주파수 영역 방향 제거기 등에 적용하여 동일한 비용으로 고속 동작시킬 수 있다.

Claims (7)

  1. 2개의 버터플라이 입출력을 동시에 읽고 쓰기 위한 제1,제2 샘플 램 뱅크와,
    FFT 크기에 상관없이 고정의 지연값으로 상기 제1,제2 샘플 램 뱅크의 어드레스를 발생시키는 램 어드레스 발생기와,
    상기 제1,제2 샘플 램 뱅크에서 시간 영역 데이터를 읽어 버터플라이 연산을 수행하고 그 연산 결과인 주파수 영역 출력 데이터를 상기 제1,제2 샘플 램 뱅크에 저장하는 버터플라이 연산유닛과,
    상기 램 어드레스 발생기의 출력 패리티에 따라 상기 제1,제2 샘플 램 뱅크의 주파수 영역 출력 데이터 중 하나를 선택하여 최종 FFT 연산 결과로 출력하는 멀티플렉서와,
    상기 램 어드레스 발생기를 제어하는 제어기를 구비하고,
    상기 제어기는
    매 클럭마다 '0'부터 양의 방향으로 데이터값(d6∼d0)을 증가하는 데이터 카운터와,
    매 클럭마다 양의 방향으로 값(b5∼b0)이 증가하는 버터플라이 카운터와,
    각 스테이지에서 매 클럭마다 시프트를 수행하여 시프트값(p6∼p0)을 출력하는 패스 시프트 카운터로 구성된 것을 특징으로 하는 고속 푸리에 변환 연산 장치.
  2. 삭제
  3. 제1항에 있어서, 상기 램 어드레스 발생기는
    FFT의 크기에 상관없는 작은 고정 지연값으로 현재의 패리티(pr)를 계산하는 차등 패리티 카운터와,
    어드레스를 계산하는 버터플라이 카운터 변형부를 구비하여,
    각각의 스테이지에서 데이터의 입출력시 동일한 메모리 뱅크 인덱스와 어드레스를 갖도록 구성된 것을 특징으로 하는 고속 푸리에 변환 연산 장치.
  4. 제3항에 있어서, 차등 패리티 카운터는
    데이터 카운터의 매 클럭마다 패리티의 변화값을 계산하기 위한 멀티플렉서부와,
    이 멀티플렉서부의 출력 신호를 반전하는 NOT 게이트와,
    상기 데이터 카운터의 카운트값(d5∼d0)을 연산하여 상기 멀티플렉서부를 제어하기 위한 신호를 출력하는 AND 게이트부와,
    현재의 패리티 값(pr)을 저장하기 위한 플립플롭과,
    현재의 패리티값(pr)과 상기 NOT 게이트에서의 패리티 변화값(g0)을 XOR 연산하여 다음 패리티 값(inpr)을 계산한 후 그 패리티 값(inpr)을 상기 플립플롭에 저장하는 XOR 게이트로 구성된 것을 특징으로 하는 고속 푸리에 변환 연산 장치.
  5. 제4항에 있어서, 상기 멀티플렉서부는
    데이터 카운터의 카운트값(d0)과 패리티 변화값(g1)중 하나를 선택하여 출력하는 제1 멀티플렉서와,
    데이터 카운터의 카운트값(d2)과 패리티 변화값(g2)중 하나를 선택하여 상기 패리티 변화값(g1)으로 출력하는 제2 멀티플렉서와,
    데이터 카운터의 카운트값(d4)(d6=g3) 중 하나를 상기 패리티 변화값(g2)으로 출력하는 제3 멀티플렉서로 구성된 것을 특징으로 하는 고속 푸리에 변환 연산 장치.
  6. 제5항에 있어서, 상기 앤드 게이트부는
    데이터 카운터의 카운트값(d0)(d1)을 논리곱하여 제1 멀티플렉서의 제어 신호로 출력하는 제1 앤드 게이트와,
    데이터 카운터의 카운트값(d2)(d3)을 논리곱하여 제2 멀티플렉서의 제어 신호로 출력하는 제2 앤드 게이트와,
    데이터 카운터의 카운트값(d4)(d5)을 논리곱하여 제3 멀티플렉서의 제어 신호로 출력하는 제3 앤드 게이트로 구성된 것을 특징으로 하는 고속 푸리에 변환 연산 장치.
  7. 제3항에 있어서, 상기 버터플라이 카운터 변형부는
    버터플라이 카운터의 카운트값(b5∼b0)과 패스 시프터 레지스터의 시프트값(p6∼p1)을 각각 XOR 연산하여 어드레스(a5∼a0)를 계산하는 제1∼제6 XOR 게이트로 구성된 것을 특징으로 하는 고속 푸리에 변환 연산 장치.
KR1020010028459A 2001-05-23 2001-05-23 고속 푸리에 변환 연산 장치 KR100836050B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020010028459A KR100836050B1 (ko) 2001-05-23 2001-05-23 고속 푸리에 변환 연산 장치
US10/152,940 US7007056B2 (en) 2001-05-23 2002-05-22 Memory address generating apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020010028459A KR100836050B1 (ko) 2001-05-23 2001-05-23 고속 푸리에 변환 연산 장치

Publications (2)

Publication Number Publication Date
KR20020089560A KR20020089560A (ko) 2002-11-29
KR100836050B1 true KR100836050B1 (ko) 2008-06-09

Family

ID=19709845

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010028459A KR100836050B1 (ko) 2001-05-23 2001-05-23 고속 푸리에 변환 연산 장치

Country Status (2)

Country Link
US (1) US7007056B2 (ko)
KR (1) KR100836050B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101091967B1 (ko) 2009-09-30 2011-12-09 한국표준과학연구원 적분형 광검출기를 사용한 푸리에 계수 측정법

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1162547A3 (en) * 2000-06-05 2003-09-03 DSP Group Ltd. In-Place Memory Management for FFT
TW594502B (en) * 2003-01-30 2004-06-21 Ind Tech Res Inst Length-scalable fast Fourier transformation digital signal processing architecture
KR100564601B1 (ko) * 2003-12-29 2006-03-28 삼성전자주식회사 주파수 도메인 에코 검출방법 및 이를 사용하는 이퀄라이저
US20050198092A1 (en) * 2004-03-02 2005-09-08 Jia-Pei Shen Fast fourier transform circuit having partitioned memory for minimal latency during in-place computation
KR100618889B1 (ko) * 2005-02-12 2006-09-01 삼성전자주식회사 메모리 사이즈를 감소시킬 수 있는 고속 푸리에 변환 프로세서
US7720162B2 (en) * 2005-03-10 2010-05-18 Qualcomm Incorporated Partial FFT processing and demodulation for a system with multiple subcarriers
US8266196B2 (en) * 2005-03-11 2012-09-11 Qualcomm Incorporated Fast Fourier transform twiddle multiplication
US8229014B2 (en) * 2005-03-11 2012-07-24 Qualcomm Incorporated Fast fourier transform processing in an OFDM system
TWI298448B (en) * 2005-05-05 2008-07-01 Ind Tech Res Inst Memory-based fast fourier transformer (fft)
US7925213B2 (en) * 2005-10-12 2011-04-12 Broadcom Corporation Method and system for audio signal processing for Bluetooth wireless headsets using a hardware accelerator
US7979485B2 (en) * 2005-12-20 2011-07-12 Samsung Electronics Co., Ltd. Circuit for fast fourier transform operation
US8549059B2 (en) * 2009-01-08 2013-10-01 Texas Instruments Incorporated In-place fast fourier transform processor
CN103733192B (zh) * 2011-10-17 2016-06-29 松下知识产权经营株式会社 自适应均衡器
CN103365821B (zh) * 2013-06-06 2016-02-10 北京时代民芯科技有限公司 一种异构多核处理器的地址生成器
CN105988973B (zh) * 2015-02-13 2019-04-19 上海澜至半导体有限公司 快速傅里叶变换/快速傅里叶变换的方法和电路
CN108304347A (zh) * 2017-01-12 2018-07-20 深圳市中兴微电子技术有限公司 一种快速傅里叶变换处理方法和装置
IT202000016393A1 (it) * 2020-07-07 2022-01-07 St Microelectronics Srl Circuito di elaborazione di segnale digitale e corrispondente procedimento di funzionamento

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09297753A (ja) * 1996-04-30 1997-11-18 Sony Corp Fft演算装置および方法
JPH11110370A (ja) * 1997-01-22 1999-04-23 Matsushita Electric Ind Co Ltd 高速フーリエ変換装置および方法、可変ビットリバース回路、逆高速フーリエ変換装置および方法、並びにofdm受信および送信装置
JP2000040080A (ja) * 1998-07-22 2000-02-08 Oki Electric Ind Co Ltd 高速フーリエ変換回路
JP2001056806A (ja) * 1999-06-10 2001-02-27 Matsushita Electric Ind Co Ltd 高速フーリエ変換装置
KR20010036860A (ko) * 1999-10-12 2001-05-07 서평원 고속 퓨리에 변환 장치

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3673399A (en) * 1970-05-28 1972-06-27 Ibm Fft processor with unique addressing
FR2147770B1 (ko) * 1971-04-27 1974-06-21 Thomson Csf
US3871577A (en) * 1973-12-13 1975-03-18 Westinghouse Electric Corp Method and apparatus for addressing FFT processor
FR2568036B1 (fr) * 1984-07-20 1989-06-02 Thomson Csf Circuit de calcul
FR2582424B1 (fr) * 1985-05-22 1989-06-30 Guichard Jacques Circuit de calcul rapide de la transformee en cosinus, directe ou inverse, d'un signal discret
US4826661A (en) * 1986-05-01 1989-05-02 Ecolab, Inc. Solid block chemical dispenser for cleaning systems
US5339265A (en) * 1992-08-31 1994-08-16 University Of Maryland At College Park Optimal unified architectures for the real-time computation of time-recursive discrete sinusoidal transforms
US5478537A (en) * 1992-09-24 1995-12-26 Sunburst Chemicals, Inc. Detergent dispenser for use with solid casting detergent
US5342587A (en) * 1992-09-24 1994-08-30 Sunburst Chemicals, Inc. Detergent dispenser for use with solid cast detergent
US5494644A (en) * 1994-12-06 1996-02-27 Ecolab Inc. Multiple product dispensing system including dispenser for forming use solution from solid chemical compositions
EP1162547A3 (en) * 2000-06-05 2003-09-03 DSP Group Ltd. In-Place Memory Management for FFT

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09297753A (ja) * 1996-04-30 1997-11-18 Sony Corp Fft演算装置および方法
JPH11110370A (ja) * 1997-01-22 1999-04-23 Matsushita Electric Ind Co Ltd 高速フーリエ変換装置および方法、可変ビットリバース回路、逆高速フーリエ変換装置および方法、並びにofdm受信および送信装置
JP2000040080A (ja) * 1998-07-22 2000-02-08 Oki Electric Ind Co Ltd 高速フーリエ変換回路
JP2001056806A (ja) * 1999-06-10 2001-02-27 Matsushita Electric Ind Co Ltd 高速フーリエ変換装置
KR20010036860A (ko) * 1999-10-12 2001-05-07 서평원 고속 퓨리에 변환 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101091967B1 (ko) 2009-09-30 2011-12-09 한국표준과학연구원 적분형 광검출기를 사용한 푸리에 계수 측정법

Also Published As

Publication number Publication date
US20020178195A1 (en) 2002-11-28
US7007056B2 (en) 2006-02-28
KR20020089560A (ko) 2002-11-29

Similar Documents

Publication Publication Date Title
KR100836050B1 (ko) 고속 푸리에 변환 연산 장치
KR100313501B1 (ko) Cbfp알고리즘을 갖는 fft프로세서
JP2005531252A (ja) 高速フーリエ変換を用いた混合−基数方式の変調装置
Slade The fast fourier transform in hardware: A tutorial based on an FPGA implementation
CN103870438A (zh) 一种利用数论变换计算循环卷积的电路结构
US5430667A (en) Hardware arrangement for fast fourier transform having improved addressing techniques
KR100989797B1 (ko) Fft/ifft 연산코어
US5491652A (en) Fast Fourier transform address generator
US6317770B1 (en) High speed digital signal processor
KR20110081971A (ko) 이산 푸리에 변환 계수의 행렬을 계산하는 방법 및 장치
US20140330880A1 (en) Methods and devices for multi-granularity parallel fft butterfly computation
KR20080078062A (ko) 순환 급속 푸리에 변환
KR102376492B1 (ko) 실수값을 입력으로 하는 고속푸리에 변환장치 및 방법
US9268744B2 (en) Parallel bit reversal devices and methods
JP4083387B2 (ja) 離散フーリエ変換の計算
JP2001056806A (ja) 高速フーリエ変換装置
Alam et al. On the implementation of time-multiplexed frequency-response masking filters
US6976047B1 (en) Skipped carry incrementer for FFT address generation
Ranganathan et al. Efficient hardware implementation of scalable FFT using configurable Radix-4/2
Polychronakis et al. Conflict free, parallel memory access for radix-2 FFT processors
JP4248027B2 (ja) データ要素の系列を変換する装置
EP4307138A1 (en) Self-ordering fast fourier transform for single instruction multiple data engines
KR100310417B1 (ko) 고속퓨리에변환장치의비트-리버스트어드레스발생기
JP2751531B2 (ja) ループコードfft演算方式
JP2708013B2 (ja) Nポイントfftプロセッサ用メモリ制御回路

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20110328

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee