KR100836050B1 - 고속 푸리에 변환 연산 장치 - Google Patents
고속 푸리에 변환 연산 장치 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/141—Discrete Fourier transforms
- G06F17/142—Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
Abstract
본 발명은 고속 푸리에 변환 연산 장치에 관한 것으로 특히, 매 클럭마다 버터플라이 입출력을 동시에 읽고 쓰는 것은 물론 계산 과정을 단순화함으로써 고속의 FFT 하드웨어를 구현하는데 목적이 있다. 이러한 목적의 본 발명은 버터플라이 연산의 입출력 데이터를 저장하는 샘플 램 뱅크(510)(520)와, 버터플라이 연산 계수인 트위들 팩터(twiddle factor)를 저장하는 계수 롬(ROM)(540)과, FFT 크기에 상관없이 고정의 지연값으로 상기 샘플 램 뱅크(510)(520)의 어드레스를 발생시키는 램 어드레스 발생기(530)와, 상기 샘플 램 뱅크(510)(520)의 데이터와 계수 롬(540)의 계수를 입력으로 버터플라이 연산을 수행하여 그 연산값을 상기 샘플 램 뱅크(510)(520)로 궤환시키는 버터플라이 연산 유닛(560)과, 패리티 값(pr)에 따라 상기 샘플 램 뱅크(510)(520)의 출력중 하나를 선택하여 최종 FFT 결과 데이터로 출력하는 멀티플렉서(570)로 구성함을 특징으로 한다.
Description
도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와 같다면 그 연산 결 과를 수식으로 표시하면 다음과 같다.
이로부터 버터플라이의 입력과 출력의 값들은 모두 복소수의 값을 가짐을 알 수 있다.
도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'을 값으로 정의할 때 데이터 카운터(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'을 값으로 정의할 때 데이터 카운터(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)
- 2개의 버터플라이 입출력을 동시에 읽고 쓰기 위한 제1,제2 샘플 램 뱅크와,FFT 크기에 상관없이 고정의 지연값으로 상기 제1,제2 샘플 램 뱅크의 어드레스를 발생시키는 램 어드레스 발생기와,상기 제1,제2 샘플 램 뱅크에서 시간 영역 데이터를 읽어 버터플라이 연산을 수행하고 그 연산 결과인 주파수 영역 출력 데이터를 상기 제1,제2 샘플 램 뱅크에 저장하는 버터플라이 연산유닛과,상기 램 어드레스 발생기의 출력 패리티에 따라 상기 제1,제2 샘플 램 뱅크의 주파수 영역 출력 데이터 중 하나를 선택하여 최종 FFT 연산 결과로 출력하는 멀티플렉서와,상기 램 어드레스 발생기를 제어하는 제어기를 구비하고,상기 제어기는매 클럭마다 '0'부터 양의 방향으로 데이터값(d6∼d0)을 증가하는 데이터 카운터와,매 클럭마다 양의 방향으로 값(b5∼b0)이 증가하는 버터플라이 카운터와,각 스테이지에서 매 클럭마다 시프트를 수행하여 시프트값(p6∼p0)을 출력하는 패스 시프트 카운터로 구성된 것을 특징으로 하는 고속 푸리에 변환 연산 장치.
- 삭제
- 제1항에 있어서, 상기 램 어드레스 발생기는FFT의 크기에 상관없는 작은 고정 지연값으로 현재의 패리티(pr)를 계산하는 차등 패리티 카운터와,어드레스를 계산하는 버터플라이 카운터 변형부를 구비하여,각각의 스테이지에서 데이터의 입출력시 동일한 메모리 뱅크 인덱스와 어드레스를 갖도록 구성된 것을 특징으로 하는 고속 푸리에 변환 연산 장치.
- 제3항에 있어서, 차등 패리티 카운터는데이터 카운터의 매 클럭마다 패리티의 변화값을 계산하기 위한 멀티플렉서부와,이 멀티플렉서부의 출력 신호를 반전하는 NOT 게이트와,상기 데이터 카운터의 카운트값(d5∼d0)을 연산하여 상기 멀티플렉서부를 제어하기 위한 신호를 출력하는 AND 게이트부와,현재의 패리티 값(pr)을 저장하기 위한 플립플롭과,현재의 패리티값(pr)과 상기 NOT 게이트에서의 패리티 변화값(g0)을 XOR 연산하여 다음 패리티 값(inpr)을 계산한 후 그 패리티 값(inpr)을 상기 플립플롭에 저장하는 XOR 게이트로 구성된 것을 특징으로 하는 고속 푸리에 변환 연산 장치.
- 제4항에 있어서, 상기 멀티플렉서부는데이터 카운터의 카운트값(d0)과 패리티 변화값(g1)중 하나를 선택하여 출력하는 제1 멀티플렉서와,데이터 카운터의 카운트값(d2)과 패리티 변화값(g2)중 하나를 선택하여 상기 패리티 변화값(g1)으로 출력하는 제2 멀티플렉서와,데이터 카운터의 카운트값(d4)(d6=g3) 중 하나를 상기 패리티 변화값(g2)으로 출력하는 제3 멀티플렉서로 구성된 것을 특징으로 하는 고속 푸리에 변환 연산 장치.
- 제5항에 있어서, 상기 앤드 게이트부는데이터 카운터의 카운트값(d0)(d1)을 논리곱하여 제1 멀티플렉서의 제어 신호로 출력하는 제1 앤드 게이트와,데이터 카운터의 카운트값(d2)(d3)을 논리곱하여 제2 멀티플렉서의 제어 신호로 출력하는 제2 앤드 게이트와,데이터 카운터의 카운트값(d4)(d5)을 논리곱하여 제3 멀티플렉서의 제어 신호로 출력하는 제3 앤드 게이트로 구성된 것을 특징으로 하는 고속 푸리에 변환 연산 장치.
- 제3항에 있어서, 상기 버터플라이 카운터 변형부는버터플라이 카운터의 카운트값(b5∼b0)과 패스 시프터 레지스터의 시프트값(p6∼p1)을 각각 XOR 연산하여 어드레스(a5∼a0)를 계산하는 제1∼제6 XOR 게이트로 구성된 것을 특징으로 하는 고속 푸리에 변환 연산 장치.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101091967B1 (ko) | 2009-09-30 | 2011-12-09 | 한국표준과학연구원 | 적분형 광검출기를 사용한 푸리에 계수 측정법 |
Families Citing this family (17)
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)
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)
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 |
-
2001
- 2001-05-23 KR KR1020010028459A patent/KR100836050B1/ko not_active IP Right Cessation
-
2002
- 2002-05-22 US US10/152,940 patent/US7007056B2/en not_active Expired - Fee Related
Patent Citations (5)
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)
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 |