KR100481852B1 - 고속 푸리에 변환 장치 - Google Patents

고속 푸리에 변환 장치 Download PDF

Info

Publication number
KR100481852B1
KR100481852B1 KR10-2002-0042852A KR20020042852A KR100481852B1 KR 100481852 B1 KR100481852 B1 KR 100481852B1 KR 20020042852 A KR20020042852 A KR 20020042852A KR 100481852 B1 KR100481852 B1 KR 100481852B1
Authority
KR
South Korea
Prior art keywords
data
stored
data points
banks
rows
Prior art date
Application number
KR10-2002-0042852A
Other languages
English (en)
Other versions
KR20040009044A (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 KR10-2002-0042852A priority Critical patent/KR100481852B1/ko
Priority to US10/426,318 priority patent/US7233968B2/en
Publication of KR20040009044A publication Critical patent/KR20040009044A/ko
Application granted granted Critical
Publication of KR100481852B1 publication Critical patent/KR100481852B1/ko
Priority to US11/804,419 priority patent/US7464127B2/en

Links

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
    • 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

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Discrete Mathematics (AREA)
  • Complex Calculations (AREA)

Abstract

여기에 개시된 데이터 변환 시스템은, N 데이터 포인트들에 대한 FFT/IFFT 연산을 수행하되, M 개의 연산 소자들을 이용하여 병렬로 래딕스(radix)-R(R은 양의 정수) 버터플라이 연산을 수행할 수 있다.

Description

고속 푸리에 변환 장치{FAST FOURIER TRANSFORMIMG APPARATUS}
본 발명은 고속 푸리에 변환(fast fourier transform : FFT)을 수행하는 장치에 관한 것이다.
고속 데이터 통신 수단으로서 이미 상용화된 ADSL(Asymmetric Digital Subscriber Line)에 이어 최근에는 VDSL(Very high bit rate Digital Subscriber Line)이 대두되고 있다. ADSL에 비해 향상된 데이터 전송 속도를 갖는 VDSL은 VOD(Video On Demand), 화상 전화 시스템 등의 구현을 가능하게 한다.
VDSL은 ADSL과 같이 DMT(Discrete Multi-Tone)라는 변조 방식을 사용하는데, 데이터의 전송 속도를 향상시키기 위해서 ADSL보다 훨씬 많은 부반송파(sub-channel)를 사용한다.
한편, DMT 방식은 OFDM(Orthogonal Frequency Division Multiplexing)의 일종으로, 전송되는 데이터가 주파수 영역(frequency domain)에서 각 부반송파별로 다루어지며, 채널(channel)로의 전송을 위해서 시간 영역(time domain)의 데이터로 변환된다(수신측에서는 이와 반대의 과정이 수행된다). 이산 푸리에 변환(Discrete Fourier Transform : DFT)은 이러한 OFDM을 구현하기 위해 사용되는 기초 기술로서, 주파수 영역의 신호를 시간 영역의 신호로 또는 시간 영역의 신호를 주파수 영역의 신호로 변환한다. VDSL은 ADSL의 부반송파(256 개)보다 많은 부반송파(4096 개)를 가지며 부반송파의 수는 DFT의 길이를 의미하기 때문에, VDSL은 ADSL보다 많은 연산을 요구한다. DFT는 다음 수학식 1과 같이 정의된다.
수학식 1에 의하면 N 개의 시간 영역 내의 데이터는 N 개의 주파수 영역 내의 데이터로 변환된다. W[k]는 계수(coefficient) 또는 회전 인자(twinddle factor)라고 한다. 주어진 N에 대해 수행되는 연산 횟수는 복소수(complex nuMBer) 곱셈이 N*N번 그리고 복소수 덧셈이 N*(N-1)번이고, 복잡도(complexity)는 O(N*N)이다.
DFT를 실제로 구현하기 위한 알고리듬(algorithm)으로서 고속 푸리에 변환(Fast Fourier Transform)이 1960년대 Cooley & Tukey에 의해서 고안되었으며, radix-2 FFT, radix-4 FFT 등이 대표적이다. radix-2 FFT는 다음 수학식 2와 같이 정의된다.
수학식 2에서 알 수 있는 바와 같이, radix-2 FFT는 DFT 연산의 짝수 부분과 홀수 부분으로 나누어 계산한다.
도 1은 데이터 포인트 N=16일 때 radix-2 FFT 연산에 따른 데이터 흐름을 보여주는 도면이다. 도 1a를 참조하면, 입력 데이터(x[15:0])는 단계들(Stage1~Stage4)을 차례로 거쳐서 출력 데이터(X[15:0])로서 출력된다. radix-2 FFT에 의하면, 복소수 곱셈이 번 그리고 복소수 덧셈이 번 수행된다. 따라서, radix-2 FFT의 복잡도는 O()으로 DMT의 복잡도 O(N*N)에 비해 줄어듦을 알 수 있다. 도 1에 도시된 예에서는 복소수 곱셈이 번 그리고 복소수 덧셈이 번 수행된다.
FFT 알고리듬의 선택과 아울러 중요한 것이 하드웨어 구조이다. FFT 연산기의 하드웨어 구조는 연산 유닛(arithmetic unit)의 구조에 따라서 단일 프로세서(single-processor), 파이프라인(pipeline), 병렬-반복(parallel-iterative) 그리고 배열(array) 등이 있다. 이들 중에서 어떤 것을 선택할 것인가는 전체적인 연산 시간, 하드웨어 크기, 그리고 소비 전력 등을 고려하여 결정해야 한다.
도 2는 일반적인 데이터 변환 시스템을 보여주는 도면이다. 도 2를 참조하면, 데이터 변환 시스템은 시간 영역 인터페이스로부터 입력되는 시간 영역 데이터를 주파수 영역 데이터로 변환해서 주파수 영역 인터페이스로 출력하는 FFT(fast fourier transform) 연산과 주파수 영역 인터페이스로부터 입력되는 주파수 영역 데이터를 시간 영역 데이터로 변환해서 시간 영역 인터페이스로 출력하는 IFFT(inverse fast fourier transform) 연산을 수행하는 데이터 변환기(10)와 연산 결과를 저장하는 메모리(20)를 포함한다.
데이터 변환기(10)는 내부 회로 구성의 전반적인 동작을 제어하는 메인 컨트롤러(11), 버터플라이 연산에서 필요한 계수(WN)를 저장하기 위한 계수 테이블(coefficient table)(12), 입력 데이터에 대한 FFT 또는 IFFT 연산을 수행하는 연산 유닛(arithmetic unit : AU)(14), 연산 유닛(13)과 데이터 메모리(20) 사이, 압축 및 확장기(compressor/expander)(15)와 데이터 메모리(20) 사이 그리고 주파수 영역 인터페이스(frequency domain interface)와 데이터 메모리(20) 사이의 인터페이스를 수행하는 메모리 인터페이스(14), 그리고 IFFT 연산 모드일 때 데이터 메모리(20)로부터 독출된 복소수 데이터(complex-typed data)를 실수 데이터(real-typed data)로 변환(expansion)해서 시간 영역 인터페이스로 출력하고, FFT 연산 모드일 때 시간 영역 인터페이스로부터 입력된 실수 데이터를 복소수 데이터로 변환(compression)해서 메모리 인터페이스(14)를 통해 데이터 메모리(20)에 저장하는 압축 및 확장기(15)를 포함한다.
도 3은 연산 유닛(13)이 오직 하나의 연산 소자(arithmatic element)만을 구비하여 직렬 방식으로 연산하는 단일 프로세서 구조를 예시적으로 보여주고 있다. 도 3에서 연산이 수행되기 이전 데이터를 저장하는 메모리(20A)와 연산이 수행되고 난 후의 데이터를 저장하는 메모리(20B)가 각각 따로 도시되었으나 메모리들(20A, 20B)은 실질적으로 동일한 하나의 메모리이다. 도 3을 참조하면, 연산 소자(AE0)는 채용된 연산 알고리즘에 따른 하드웨어 구조를 갖는다. 예컨대, radix-2 FFT 알고리즘을 채용한 연산 소자(AE0)가 도 1에 도시된 버터플라이 연산(즉, 두 개의 입력 데이터에 대한 덧셈, 뺄셈 그리고 곱셈 연산)을 수행하는데 소요되는 시간이 t라 할 때 N 개의 데이터에 대한 radix-2 FFT 연산을 수행하는데 소요되는 총 시간은 이다.
도 4는 연산 유닛(13)이 k 개의 연산 소자들을 구비하여 병렬 방식으로 연산하는 병렬 프로세서 구조를 보여주는 도면이다. 도 4에 도시된 메모리들(20A, 20B)은 도 3과 마찬가지로 실질적으로 동일한 하나의 메모리이다. 예컨대, radix-2 FFT 알고리즘을 이용하여 어느 한 단계(stage)에서의 버터플라이 연산들을 병렬로 처리하려면 N/2 개의 연산 소자들이 요구된다. 즉, N이 2048이면 연산 유닛(13)은 1024 개의 연산 소자들을 필요로 한다. 이렇게 많은 수의 연산 소자들을 실제 하드웨어로 구현하기 위해서는 수 백만 내지 수 천만 개의 게이트들이 필요하므로 하드웨어 구현이 어렵게 된다. 즉, 한 단계의 연산을 병렬로 처리하면 연산 속도는 현저히 빠르지만, VDSL과 같이 처리해야 할 데이터의 양이 매우 많은 경우 필요한 소자의 개수가 많아지고 그에 따라 회로 면적이 증가한다는 단점이 있다. 그러므로, 연산 속도가 빠르면서도 회로 면적 증가가 크지 않은 FFT 연산기가 요구된다.
따라서 본 발명의 목적은 직렬 연산 방식과 병렬 연산 방식을 혼합한 블럭-병렬 연산 방식으로 고속 푸리에 변환(FFT)을 수행하는 고속 푸리에 변환 장치를 제공하는데 있다.
본 발명의 다른 목적은 연산 속도와 하드웨어 크기 간의 트레이드-오프 관계를 고려하여 회로를 구성할 수 있는 고속 푸리에 변환 장치를 제공하는데 있다.
(구성)
상술한 바와 같은 목적을 달성하기 위한 본 발명의 일 특징에 의하면, 데이터 변환 시스템은: 입력 데이터에 대한 래딕스(radix)-R(R은 양의 정수) 버터플라이 연산을 수행하는 M(M은 양의 정수) 개의 연산 소자들, M 개의 뱅크들로 나뉘어지고, 상기 각 연산 소자들의 연산 결과를 저장하기 위한 데이터 메모리 및 상기 뱅크들에 저장된 M*R 데이터 포인트들을 독출하고, 상기 독출된 데이터 포인트들 중 R 데이터 포인트씩을 상기 입력 데이터로서 상기 연산 소자들로 각각 제공하고 그리고 상기 연산 소자들 각각의 연산 결과를 상기 데이터 메모리에 저장하는 메모리 인터페이스를 포함하여, FFT(fast fourier transform)/IFFT(inverse fast fourier transform) 연산을 수행한다.
바람직한 실시예에 있어서, 상기 메모리 인터페이스는, 상기 뱅크들로부터 독출된 상기 M*R 데이터 포인트들 중 상기 R 데이터 포인트씩 상기 연산 소자들로 병렬로 제공하는 데이터 독출 수단 및 상기 연산 소자들 각각의 연산 결과를 상기 뱅크들에 병렬로 저장하는 데이터 기입 수단을 포함한다.
이 실시예에 있어서, 초기에 상기 각 데이터 포인트들은 0번째 뱅크부터 M-1번째 뱅크까지 순차적으로 저장된다.
상기 M과 상기 R이 동일할 때, 상기 데이터 독출 수단은, 복수의 행들과 복수의 열들로 배열되고, 상기 뱅크들로부터 독출된 M*R 데이터 포인트들을 저장하기 위한 제 1 버퍼 어레이와; 복수의 행들과 복수의 열들로 배열되는 제 2 버퍼 어레이와; 상기 제 1 버퍼 어레이에 저장된 상기 데이터 포인트들을 상기 연산 소자들로 병렬로 제공하기에 적합한 형태로 변환해서 상기 제 2 버퍼 어레이에 저장하는 제 1 변환기를 포함한다. 제 1 버퍼 어레이와 제 2 버퍼 어레이는 실제로는 하나의 메모리를 이용하여 구현할 수도 있다. 이 경우, 제 1 변환기의 기능은 제 1 버퍼 어레이로서의 동작 시에는 행단위의 접근을, 제 2 버퍼 어레이로서의 동작을 위해서는 열단위의 접근을 시도하면 된다. 제 3 버퍼 어레이와 제 4 버퍼 어레이는 실제로는 하나의 메모리를 이용하여 구현할 수도 있다. 이 경우, 제 2 변환기의 기능은 제 3 버퍼 어레이로서의 동작 시에는 행단위의 접근을, 제 4 버퍼 어레이로서의 동작을 위해서는 열단위의 접근을 시도하면 된다.
바람직한 실시예에서, 상기 제 1 내지 제 4 버퍼 어레이들의 크기는 각각 M*R이다.
이 실시예에서, 상기 제 2 버퍼 어레이의 상기 행들은 상기 연산 소자들에 각각 대응하고, 상기 제 2 버퍼 어레이의 상기 행들에 저장된 데이터 포인트들은 상기 대응하는 연산 소자들로 병렬로 제공된다.
이 실시예에서, 상기 각 연산 소자들로 제공될 상기 데이터 포인트들이 상기 복수의 뱅크들로부터 독출된 데이터 포인트들일 때, 상기 제 1 변환기는 상기 제 1 버퍼 어레이의 상기 열들에 저장된 데이터 포인트들을 상기 제 2 버퍼 어레이의 상기 행들에 저장한다.
이 실시예에서, 상기 각 연산 소자들로 제공될 상기 데이터 포인트들이 상기 뱅크들 중 어느 하나로부터 독출된 데이터 포인트들일 때, 상기 제 1 변환기는 상기 제 1 버퍼 어레이의 상기 행들에 저장된 데이터 포인트들을 상기 제 2 버퍼 어레이의 상기 행들에 저장한다.
바람직한 실시예에 있어서, 상기 데이터 기입 수단은, 복수의 행들과 복수의 열들로 배열되고, 상기 각 연산 소자들로부터 출력되는 상기 연산 결과를 저장하기 위한 제 3 버퍼 어레이, 복수의 행들과 복수의 열들로 배열되는 제 4 버퍼 어레이, 상기 제 3 버퍼 어레이에 저장된 상기 데이터 포인트들을 상기 뱅크들에 병렬로 저장하기에 적합한 형태로 변환해서 상기 제 4 버퍼 어레이에 저장하는 제 2 변환기를 포함한다.
이 실시예에서, 상기 제 4 버퍼 어레이의 상기 행들은 상기 뱅크들에 각각 대응하고, 상기 제 4 버퍼 어레이의 상기 열들에 저장된 데이터 포인트들은 상기 대응하는 뱅크들에 병렬로 기입된다.
이 실시예에 있어서, 상기 각 연산 소자들의 상기 연산 결과들이 상기 복수의 뱅크들에 저장되어야 할 때, 상기 제 2 변환기는 상기 제 3 버퍼 어레이의 상기 행들에 저장된 데이터 포인트들을 상기 제 4 버퍼 어레이의 상기 열들에 저장한다.
바람직한 실시예에 있어서, 상기 각 연산 소자들의 상기 연산 결과들이 상기 뱅크들 중 어느 하나에 저장되어야 할 때, 상기 제 2 변환기는 상기 제 3 버퍼 어레이의 상기 행들에 저장된 데이터 포인트들을 상기 제 2 버퍼 어레이의 상기 행들에 저장한다.
상기 M이 상기 R보다 클 때, 상기 데이터 독출 수단은, 복수의 행들과 복수의 열들로 배열되는 제 1 버퍼 어레이, 상기 뱅크들로부터 독출된 M*R 데이터 포인트들이 상기 제 1 버퍼 어레이의 소정 위치에 각각 저장되도록 제어하는 제 1 선택기, 복수의 행들과 복수의 열들로 배열되는 제 2 버퍼 어레이 및 상기 제 1 버퍼 어레이에 저장된 상기 데이터 포인트들을 상기 연산 소자들로 병렬로 제공하기에 적합한 형태로 변환해서 상기 제 2 버퍼 어레이에 저장하는 제 1 변환기를 포함한다.
바람직한 실시예에 있어서, 상기 제 2 버퍼 어레이의 상기 행들은 상기 연산 소자들에 각각 대응하고, 상기 제 2 버퍼 어레이의 상기 행들에 저장된 데이터 포인트들은 상기 대응하는 연산 소자들로 병렬로 제공된다.
이 실시예에서, 상기 데이터 기입 수단은, 복수의 행들과 복수의 열들로 배열되고, 상기 각 연산 소자들로부터 출력되는 상기 연산 결과를 저장하기 위한 제 3 버퍼 어레이, 복수의 행들과 복수의 열들로 배열되는 제 4 버퍼 어레이, 상기 제 3 버퍼 어레이에 저장된 상기 데이터 포인트들을 상기 뱅크들에 병렬로 저장하기에 적합한 형태로 변환해서 상기 제 4 버퍼 어레이에 저장하는 제 2 변환기 및 상기 제 4 버퍼 어레이의 각 열들에 저장된 상기 데이터 포인트들이 상기 뱅크들에 병렬로 저장되도록 제어하는 제 2 선택기를 포함한다.
이 실시예에 있어서, 상기 제 4 버퍼 어레이의 상기 행들은 상기 뱅크들에 각각 대응하고, 상기 제 4 버퍼 어레이의 상기 열들에 저장된 데이터 포인트들은 상기 대응하는 뱅크들에 병렬로 기입된다.
바람직한 실시예에 있어서, 상기 데이터 메모리는 K(K는 양의 정수)-비트 어드레스에 의해 지정가능한 위치들을 가지며, 상기 각 뱅크들의 위치들은 상기 K-비트 어드레스 중 상위 log2M-비트들로 구성된 뱅크 어드레스와 상기 K-비트 어드레스 중 상위 log2M-비트들을 제외한 나머지 비트들로 구성된 위치 어드레스에 의해 지정가능하다.
또한, 상기 각 뱅크들의 N/M(N은 K보다 작은 양의 정수) 위치들에 상기 연산 결과들이 저장되어 있을 때, 상기 데이터 메모리에 저장된 연산 결과들은 상기 K-비트 어드레스 중 상기 뱅크 어드레스의 비트들과 상기 위치 어드레스의 하위 log2N/M 비트들을 역순으로 배열된 어드레스에 따라서 독출된다.
상술한 바와 같은 목적을 달성하기 위한 본 발명의 다른 특징에 의하면, 데이터 변환 시스템은: 입력 데이터에 대한 래딕스(radix)-R(R은 양의 정수) 버터플라이 연산을 수행하는 M(M은 R보다 작은 양의 정수) 개의 연산 소자들, M 개의 뱅크들로 나뉘어지고, 상기 각 연산 소자들의 연산 결과를 저장하기 위한 데이터 메모리 및 상기 뱅크들에 저장된 R*R 데이터 포인트들을 독출하고, 상기 독출된 데이터 포인트들 중 R 데이터 포인트씩을 상기 입력 데이터로서 상기 연산 소자들로 각각 제공하고 그리고 상기 연산 소자들 각각의 연산 결과를 상기 데이터 메모리에 저장하는 메모리 인터페이스를 포함한다.
바람직한 실시예에 있어서, 상기 메모리 인터페이스는, 각각이 R 개의 행들과 R 개의 열들로 배열되는 M/R 개의 제 1 버퍼 어레이들, 상기 뱅크들로부터 독출된 M*R 데이터 포인트들이 상기 제 1 버퍼 어레이의 소정 위치에 각각 저장되도록 제어하는 제 1 선택기, 상기 제 1 버퍼 어레이들에 각각 대응하고, 각각이 R 개의 행들과 R 개의 열들로 배열되는 M/R 개의 제 2 버퍼 어레이들, 상기 제 1 버퍼 어레이에 저장된 상기 데이터 포인트들을 상기 연산 소자들로 병렬로 제공하기에 적합한 형태로 변환해서 상기 제 2 버퍼 어레이에 저장하는 제 1 변환기, 각각이 R 개의 행들과 R 개의 열들로 배열되고, 상기 각 연산 소자들로부터 출력되는 상기 연산 결과를 저장하는 M/R 개의 제 3 버퍼 어레이들, 상기 제 3 버퍼 어레이들에 각각 대응하고, 각각이 R 개의 행들과 R 개의 열들로 배열되는 M/R 개의 제 4 버퍼 어레이들, 상기 제 3 버퍼 어레이에 저장된 상기 데이터 포인트들을 상기 뱅크들에 병렬로 저장하기에 적합한 형태로 변환해서 상기 제 4 버퍼 어레이에 저장하는 제 2 변환기 및 상기 제 4 버퍼 어레이들의 각 열들에 저장된 상기 데이터 포인트들이 상기 뱅크들에 병렬로 저장되도록 제어하는 제 2 선택기를 포함한다.
이 실시예에 있어서, 상기 제 2 버퍼 어레이들의 상기 행들은 상기 연산 소자들에 각각 대응하고, 상기 제 2 버퍼 어레이의 상기 행들에 저장된 데이터 포인트들은 상기 대응하는 연산 소자들로 병렬로 제공된다.
이 실시예에서, 상기 각 연산 소자들로 제공될 상기 데이터 포인트들이 상기 복수의 뱅크들로부터 독출된 데이터 포인트들일 때, 상기 제 1 변환기는 상기 각 제 1 버퍼 어레이들의 상기 열들에 저장된 데이터 포인트들을 상기 대응하는 제 2 버퍼 어레이의 상기 행들에 저장한다.
바람직한 실시예에 있어서, 상기 각 연산 소자들로 제공될 상기 데이터 포인트들이 상기 뱅크들 중 어느 하나로부터 독출된 데이터 포인트들일 때, 상기 제 1 변환기는 상기 각 제 1 버퍼 어레이들의 상기 행들에 저장된 데이터 포인트들을 상기 제 2 버퍼 어레이의 상기 행들에 저장한다.
이 실시예에서, 상기 제 3 버퍼 어레이들의 상기 행들은 상기 연산 소자들에 각각 대응하고, 상기 연산 소자들의 상기 연산 결과들은 상기 대응하는 제 3 버퍼 어레이의 상기 행들에 저장되는 것을 특징으로 하는 데이터 변환 시스템.
바람직한 실시예에 있어서, 상기 각 연산 소자들의 상기 연산 결과들이 상기 복수의 뱅크들에 저장되어야 할 때, 상기 제 2 변환기는 상기 각 제 3 버퍼 어레이들의 상기 행들에 저장된 데이터 포인트들을 상기 대응하는 제 4 버퍼 어레이들의 상기 열들에 저장한다.
바람직한 실시예에 있어서, 상기 각 연산 소자들의 상기 연산 결과들이 상기 뱅크들 중 어느 하나에 저장되어야 할 때, 상기 제 2 변환기는 상기 각 제 3 버퍼 어레이들의 상기 행들에 저장된 데이터 포인트들을 상기 대응하는 제 4 버퍼 어레이들의 상기 행들에 저장한다.
이와 같은 구성을 가지는 본 발명의 데이터 변환 시스템은, N 데이터 포인트들에 대한 FFT/IFFT 연산을 수행하되, M 개의 연산 소자들을 이용하여 병렬로 래딕스(radix)-R(R은 양의 정수) 버터플라이 연산을 수행한다.
이하 본 발명에 따른 실시예들을 첨부된 도면들을 참조하여 상세히 설명한다.
(제 1 실시예)
도 5는 본 발명의 바람직한 실시예에 따른 데이터 변환 시스템을 보여주는 도면이다. 도 5를 참조하면, 데이터 변환 시스템은 FFT 연산 및 IFFT 연산을 수행하는 데이터 변환기(100)와 연산 결과를 저장하는 데이터 메모리(200)를 포함한다. 데이터 변환기(100)는 메인 컨트롤러(110), 계수 테이블들(120, 121), 계수 인터페이스(130), 연산 유닛(140), 메모리 인터페이스(150) 그리고 압축/복원기(160)를 포함한다. 이 실시예의 특징은 radix-R FFT/IFFT 연산을 수행하기 위해 연산 유닛(140)에 M 개의 연산 소자들을 구비하되, 연산 소자들의 개수 M은 R과 동일하다는 것이다. 도 5에 도시된 예에서 데이터 변환기(100)는 N 개의 데이터 포인트들에 대한 radix-4 FFT/IFFT 연산을 수행하기 위해 연산 유닛(140)에 네 개의 연산 소자들(AE_A-AE_D)을 구비한다.
메인 컨트롤러(110)는 데이터 변환기(100)에 대한 전반적인 제어를 수행하며, 외부로부터 입력되는 모드 선택 신호(SEL)가 하이 레벨(즉, 논리 '1')일 때 데이터 변환기(100)가 FFT 연산을 수행하도록 그리고 모드 선택 신호(SEL)가 로우 레벨(즉, 논리 '0')일 때 데이터 변환기(100)가 IFFT 연산을 수행하도록 제어한다.
계수 테이블(120)은 FFT/IFFT 연산에 사용되는 계수들을 저장한다. 계수 인터페이스(130)에 의해 읽혀진 계수는 연산 유닛(140)으로 제공된다.
연산 유닛(140)은 radix-4 FFT/IFFT 연산을 병렬로 처리하기 위한 4 개의 연산 소자들(AE0-AE3)을 포함한다. 각각의 연산 소자는 radix-4 FFT/IFFT 연산을 위한 버터플라이 연산을 수행하며 이에 대해서는 추후 상세히 설명한다.
메모리 인터페이스(150)는 독출 매트릭스(read matrix)(151), 변환기(152) 및 출력 매트릭스(output matrix)(153)로 구성된 데이터 독출기(150a), 입력 매트릭스(input matrix)(154), 변환기(155) 및 기입 매트릭스(156)로 구성된 데이터 기입기(150b)를 포함하여, 압축/복원기(160)와 데이터 메모리(200) 사이, 주파수 영역 인터페이스와 데이터 메모리(200) 사이 그리고 연산 유닛과 데이터 메모리(200) 사이의 데이터 기입/독출 동작을 제어한다. 메모리 인터페이스(150)는 압축/복원기(160)로부터 입력되는 시간 영역 내의 데이터를 데이터 메모리(200)에 기입하고, FFT 연산이 완료된 후 데이터 메모리(200)에 저장된 데이터를 독출해서 주파수 영역 인터페이스로 제공한다. 메모리 인터페이스(150)는 주파수 영역 인터페이스로부터 제공된 주파수 영역 내의 데이터를 데이터 메모리(200)에 기입하고, IFFT 연산이 완료된 후 데이터 메모리(200)에 기입된 데이터를 독출해서 압축/복원기(160)로 제공한다. FFT/IFFT 연산이 수행되는 동안, 메모리 인터페이스(150)는 데이터 메모리(200)에 저장된 데이터를 독출해서 연산 유닛들(AE0-AE3)로 제공하고, 연산 유닛들(AE0-AE3)의 연산 결과를 데이터 메모리(200)에 기입한다. 메모리 인터페이스(150)의 구체적인 회로 구성 및 동작은 추후 상세히 설명한다. 이 실시예에서는 데이터 변환기(100)의 회로 구성 및 동작을 설명하기 위해 FFT 연산을 예로서 설명한다. 그러나, 본 발명의 데이터 변환기(100)는 개시된 실시예에 한정되지 않는다.
도 6은 도 5에 도시된 데이터 메모리(200)의 상세한 구성을 보여주고 있다. 도 6을 참조하면, 데이터 메모리(200)는 네 개의 메모리 뱅크들 즉, 제 0 뱅크(MB0), 제 1 뱅크(MB1), 제 2 뱅크(MB2) 및 제 3 뱅크(MB3)을 포함한다. 바람직하게 메모리 뱅크들(MB0-MB3)은 각각 4 개의 데이터 포인트들을 저장할 수 있는 동일한 크기를 가지며, 각각의 동일한 위치들(locations)은 동일한 어드레스에 의해서 동시에 접근될 수 있다. 도 6에서 메모리 뱅크들 각각의 위치의 어드레스는 2진수로 나타내었으며, 각각의 어드레스는 2 비트의 뱅크 어드레스와 2 비트의 위치 어드레스를 포함한다.
데이터(x[15:0])는 제 0 메모리 뱅크(MB0)의 어드레스 '0000(즉, 십진수 0)'부터 메모리 뱅크(MB3)의 어드레스 '1111(즉, 십진수 '15')'까지 순차적으로 저장된다(이하, 메모리 뱅크들 각각의 어드레스는 십진수로 표기한다). 즉, 데이터 (x[0])는 제 0 뱅크(MB0)의 어드레스 0에, 데이터(x[1])는 제 0 뱅크(MB0)의 어드레스 1에 그리고 데이터(x[15])는 제 3 뱅크(MB[3])의 어드레스 15에 저장된다.
도 7a는 16 데이터 포인트들에 대한 radix-4 FFT 연산 과정을 개략적으로 보여주고 있다. 도 7a를 참조하면, 메모리 뱅크들(MB0-MB3) 내에 씌여진 십진수 숫자들은 각 위치의 어드레스이다. 시간 영역내의 16 데이터 포인트들(x[15:0])에 대한 radix-4 FFT 연산은 logRN 개의 연산 단계들 즉, log416 =2 번의 연산 단계들(Stage1 및 Stage2)을 포함하고, 연산 결과로서 주파수 영역내의 16 데이터 포인트들(X[15:0])이 출력된다. 단계들(Stage1, Stage2) 각각에서 4 개의 연산 소자들(AE0-AE3)은 메모리 인터페이스(250)를 통하여 데이터 메모리(200)로부터 동시에 데이터를 받아들이고 병렬로 FFT 연산을 수행한다.
연산 소자(AE0)의 구체적인 회로 구성이 도 7b에 도시되어 있다. radix-4 버터플라이 연산을 수행하는 연산 소자들(AE0-AE3)의 회로 구성은 모두 동일하므로 이 실시예에서는 연산 소자(AE0)의 회로만을 도시하고 설명한다. 도 7b를 참조하면, radix-4 버터플라이 연산을 수행하는 연산 소자(AE0)는 8 개의 복소 가산기들과 3 개의 복소 곱셈기들을 포함한다. 따라서, 도 7a에 도시된 바와 같이 4 개의 연산 소자들(AE0-AE3)을 구비하여 16 데이터 포인트들에 대한 radix-4 FFT 연산을 수행하기 위해서는 총 = =64 개의 복소 덧셈기와 ==24 개의 복소 곱셈기가 필요하다.
도 7a를 다시 살펴보면, 연산 소자(AE0)는 메모리 뱅크들(MB0-MB3)의 어드레스 0, 4, 8 및 12에 저장된 데이터를 입력 데이터로서 받아들인다. 연산 소자(AE1)는 메모리 뱅크들(MB0-MB3)의 어드레스 1, 5, 9 및 13에 저장된 데이터를 입력 데이터로서 받아들인다. 연산 소자(AE2)는 메모리 뱅크들(MB0-MB3)의 어드레스 2, 6, 10 및 13에 저장된 데이터를 입력 데이터로서 받아들인다. 연산 소자(AE3)는 메모리 뱅크들(MB0-MB3)의 어드레스 3, 7, 11 및 14에 저장된 데이터를 입력 데이터로서 받아들인다. 연산 소자들(AE0-AE3)이 병렬로 FFT 연산을 수행하기 위해서는 메모리 뱅크들(MB0-MB3)에 저장된 데이터가 동시에(즉, 병렬로) 연산 소자들(AE0-AE3)로 제공되어야만 한다. 그러나, 연산 소자(AE0)의 입력 데이터로 제공하기 위해 메모리 뱅크들(MB0-MB3)의 어드레스 0, 4, 8 및 12에 저장된 데이터가 독출되는 동안 나머지 데이터는 독출될 수 없다. 따라서, radix-R 버터플라이 연산을 수행하는 연산기들(AE0-AE3)이 동시에 동일한 메모리에 대한 접근을 필요로 하는 경우 메모리 인터페이스(150)가 이에 대한 중재를 행한다.
도 8a는 도 7a에 도시된 제 1 단계(Stage1)동안 데이터 메모리(200)로부터 독출된 데이터가 메모리 인터페이스(150)를 통해 연산 소자들(AE0-AE3)로 제공되는 과정을 보여주는 도면이고, 도 8b는 도 7a에 도시된 제 1 단계(Stage1)동안 연산 소자들(AE0-AE3)로부터 출력되는 연산 결과들이 메모리 인터페이스(150)를 통해 데이터 메모리(200)에 저장되는 과정을 보여주는 도면이다.
도 8a를 참조하면, 데이터 메모리(200)로부터 독출된 데이터를 연산 소자들(AE0-AE3)로 제공하기 위해 메모리 인터페이스(150)는 독출 매트릭스(151), 변환기(152) 및 출력 매트릭스(153)를 포함한다. 독출 및 출력 매트릭스들(151, 153)은 매트릭스 형태로 배열된 버퍼이다. 독출 매트릭스(151)와 출력 매트릭스(153)는 각각 R*M의 크기를 갖는다. 여기서, M은 메모리의 개수이고, R은 radix-R의 인덱스이다.
메모리 인터페이스(150) 내 데이터 독출기(150a)는 어드레스를 '00', '01', '10' 및 '11'로 순차적으로 변화시키면서 메모리 뱅크들(MB0-MB3)의 각 어드레스에 저장된 데이터를 독출한다. 여기서, 메모리 뱅크들(MB0-MB3)에 저장된 데이터를 독출하기 위한 어드레스는 도 6에 도시된 뱅크 어드레스를 제외한 위치 어드레스이다.
먼저, 어드레스가 '00'일 때 각 메모리 뱅크(MB0-MB3)의 어드레스 0, 4, 8 및 12에 저장된 데이터가 독출되어서 독출 매트릭스(151)의 0번째 열(p0)에 저장된다. 어드레스가 '01'일 때 각 메모리 뱅크(MB0-MB3)의 어드레스 1, 5, 9 및 13에 저장된 데이터가 독출되어서 독출 매트릭스(151)의 1번째 열(p1)에 저장된다. 어드레스가 '10'일 때 각 메모리 뱅크(MB0-MB3)의 어드레스 2, 6, 10 및 14에 저장된 데이터가 독출되어서 독출 매트릭스(151)의 2번째 열(p2)에 저장된다. 어드레스가 '11'일 때 각 메모리 뱅크(MB0-MB3)의 어드레스 3, 7, 11 및 15에 저장된 데이터가 독출되어서 독출 매트릭스(151)의 3번째 열(p3)에 저장된다.
크기가 4*4인 독출 매트릭스(151) 전체에 데이터가 저장되면 변환기(152)는 독출 매트릭스(151)의 0번째 열(p0)에 저장된 데이터를 출력 매트릭스(153)의 0번째 행(q0)에, 독출 매트릭스(151)의 1번째 열(p1)에 저장된 데이터를 출력 매트릭스(153)의 1번째 행(q1)에, 독출 매트릭스(151)의 2번째 열(p2)에 저장된 데이터를 출력 매트릭스(153)의 2번째 행(q2)에, 그리고 독출 매트릭스(151)의 3번째 열(p3)에 저장된 데이터를 출력 매트릭스(153)의 3번째 행(q3)에 저장하는 전치 행렬(transpose matrix) 변환을 수행한다.
출력 매트릭스(153)의 각 행에 저장된 데이터는 대응하는 연산 소자로 동시에(즉, 병렬로) 제공된다. 즉, 출력 매트릭스(153)의 0번째 행(q0)에 저장된 데이터는 연산 소자(AE0)로, 1번째 행(q1)에 저장된 데이터는 연산 소자(AE1)로, 2번째 행(q2)에 저장된 데이터는 연산 소자(AE2)로 그리고 3번째 행(q3)에 저장된 데이터는 연산 소자(AE3)로 제공된다.
데이터를 각각 입력받은 연산 소자들(AE0-AE3)은 병렬로 FFT 연산을 수행한다. 연산 소자들(AE0-AE3)의 FFT 연산 결과는 도 8b에 도시된 입력 매트릭스(154)의 대응하는 행(v0-v3)에 저장된다. 즉, 연산 소자(AE0)의 연산 결과는 입력 매트릭스(154)의 0번째 행(v0)에, 연산 소자(AE1)의 연산 결과는 1번째 행(v1)에, 연산 소자(AE2)의 연산 결과는 2번째 행(v2)에 그리고 연산 소자(AE3)의 연산 결과는 3번째 행(v3)에 저장된다.
입력 매트릭스(154) 전체에 데이터가 모두 저장되면 변환기(155)는 앞서 설명한 바와 같은 전치 행렬 변환을 수행하여 입력 매트릭스(154)에 저장된 데이터를 기입 매트릭스(156)에 저장한다. 즉, 입력 매트릭스(154)의 0번째 행(v0)에 저장된 데이터는 기입 매트릭스(156)의 0번째 열(w0)에 저장되고, 입력 매트릭스(154)의 1번째 행(v1)에 저장된 데이터는 기입 매트릭스(156)의 1번째 열(w1)에 저장되고, 입력 매트릭스(154)의 2번째 행(v2)에 저장된 데이터는 기입 매트릭스(156)의 2번째 열(w2)에 저장되고 그리고 입력 매트릭스(154)의 3번째 행(v3)에 저장된 데이터는 기입 매트릭스(156)의 3번째 열(w3)에 저장된다.
전치 행렬 변환이 완료되면 기입 매트릭스(156)의 열들(w0-w3)에 저장된 데이터는 메모리 뱅크들(MB0-MB3)의 대응하는 어드레스에 각각 저장된다. 즉, 기입 매트릭스(156)의 0번째 열(w0)에 저장된 데이터는 메모리 뱅크들(MB0-MB3)의 어드레스 '00'에 각각 저장된다. 기입 매트릭스(156)의 1번째 열(w1)에 저장된 데이터는 메모리 뱅크들(MB0-MB3)의 어드레스 '01'에 각각 저장된다. 기입 매트릭스(156)의 2번째 열(w2)에 저장된 데이터는 메모리 뱅크들(MB0-MB3)의 어드레스 '10'에 각각 저장된다. 기입 매트릭스(156)의 3번째 열(w3)에 저장된 데이터는 메모리 뱅크들(MB0-MB3)의 어드레스 '11'에 각각 저장된다. 도 8a 및 도 8b에 도시된 과정에 의해서 도 7a에 도시된 제 1 단계(Stage1)가 수행된다.
다시 도 7a를 참조하면, 제 2 단계(Stage2)에서 연산기들(AE0-AE3)은 각각 대응하는 메모리 뱅크(MB0-MB3)에 저장된 데이터를 입력 데이터로서 받아들인다. 따라서 앞서 설명한 바와 같은 전치 행렬 변환 과정이 불필요하다.
도 9a는 도 7a에 도시된 제 2 단계동안 데이터 메모리로부터 독출된 데이터가 메모리 인터페이스를 통해 연산 소자들로 제공되는 과정을 보여주는 도면이고, 도 9b는 도 7a에 도시된 제 2 단계(Stage2)동안 연산 소자들(AE0-AE3)로부터 출력되는 연산 결과들을 메모리 인터페이스(150)를 통해 데이터 메모리(200)에 저장되는 과정을 보여주는 도면이다.
도 9a를 참조하면, 메모리 인터페이스(150) 내 데이터 독출기(150a)는 어드레스를 '00', '01', '10' 및 '11'로 순차적으로 변화시키면서 메모리 뱅크들(MB0-MB3)의 각 어드레스에 저장된 데이터를 독출한다. 먼저, 어드레스가 '00'일 때 각 메모리 뱅크(MB0-MB3)의 어드레스 '00'에 저장된 데이터가 독출되어서 독출 매트릭스(151)의 0번째 열(p0)에 저장된다. 어드레스가 '01'일 때 각 메모리 뱅크(MB0-MB3)의 어드레스 0, 4, 8 및 12에 저장된 데이터가 독출되어서 독출 매트릭스(151)의 1번째 열(p1)에 저장된다. 어드레스가 '10'일 때 각 메모리 뱅크(MB0-MB3)의 어드레스 1, 5, 9 및 13에 저장된 데이터가 독출되어서 독출 매트릭스(151)의 2번째 열(p2)에 저장된다. 어드레스가 '11'일 때 각 메모리 뱅크(MB0-MB3)의 어드레스 2, 6, 10 및 14에 저장된 데이터가 독출되어서 독출 매트릭스(151)의 2번째 열(p2)에 저장된다. 어드레스가 '11'일 때 각 메모리 뱅크(MB0-MB3)의 어드레스 3, 7, 11 및 15에 저장된 데이터가 독출되어서 독출 매트릭스(151)의 3번째 열(p3)에 저장된다.
여기서, 제 2 단계(Stage2)는 제 1 단계(Stage1)와 달리 연산 소자들(AE0-AE3)은 대응하는 메모리 뱅크(MB0-MB3)에 저장된 데이터를 입력 데이터로서 받아들이므로 전치 행렬 변환 과정이 불필요하다. 그러므로, 변한기(152)는 독출 매트릭스(151)에 저장된 데이터를 동일한 순서로 출력 매트릭스(153)에 저장한다.
출력 매트릭스(153)의 각 행에 저장된 데이터는 대응하는 연산 소자로 동시에(즉, 병렬로) 제공된다. 즉, 출력 매트릭스(153)의 0번째 행(q0)에 저장된 데이터는 연산 소자(AE0)로, 1번째 행(q1)에 저장된 데이터는 연산 소자(AE1)로, 2번째 행(q2)에 저장된 데이터는 연산 소자(AE2)로 그리고 3번째 행(q3)에 저장된 데이터는 연산 소자(AE3)로 제공된다.
데이터를 각각 입력받은 연산 소자들(AE0-AE3)은 병렬로 FFT 연산을 수행한다. 연산 소자들(AE0-AE3)의 FFT 연산 결과는 도 9b에 도시된 입력 매트릭스(154)의 대응하는 행(v0-v3)에 저장된다. 즉, 연산 소자(AE0)의 연산 결과는 입력 매트릭스(154)의 0번째 행(v0)에, 연산 소자(AE1)의 연산 결과는 1번째 행(v1)에, 연산 소자(AE2)의 연산 결과는 2번째 행(v2)에 그리고 연산 소자(AE3)의 연산 결과는 3번째 행(v3)에 저장된다.
입력 매트릭스(154) 전체에 데이터가 모두 저장되면 변환기(155)는 입력 매트릭스(154)에 저장된 데이터를 동일한 순서로 기입 매트릭스(156)에 저장한다.
기입 매트릭스(156)의 열들(w0-w3)에 저장된 데이터는 메모리 뱅크들(MB0-MB3)의 대응하는 어드레스에 각각 저장된다. 즉, 기입 매트릭스(156)의 0번째 열(w0)에 저장된 데이터는 메모리 뱅크들(MB0-MB3)의 어드레스 '00'에 각각 저장된다. 기입 매트릭스(156)의 1번째 열(w1)에 저장된 데이터는 메모리 뱅크들(MB0-MB3)의 어드레스 '01'에 각각 저장된다. 기입 매트릭스(156)의 2번째 열(w2)에 저장된 데이터는 메모리 뱅크들(MB0-MB3)의 어드레스 '10'에 각각 저장된다. 기입 매트릭스(156)의 3번째 열(w3)에 저장된 데이터는 메모리 뱅크들(MB0-MB3)의 어드레스 '11'에 각각 저장된다. 도 9a 및 도 9b에 도시된 과정에 의해서 도 7a에 도시된 제 2 단계(Stage2)가 수행된다.
도 6 내지 도 9b는 16 데이터 포인트들에 대한 radix-4 FFT 연산을 4 개의 연산 소자들을 이용하여 병렬로 처리하는 데이터 변환기(100)를 보여준다. N 데이터 포인트들에 대한 radix-4 FFT 연산을 4 개의 연산 소자들을 이용하여 병렬로 처리할 때, 각 뱅크(MB0-MB3)에 저장되는 데이터는 다음과 같다.
MB0 : 0, 1, 2, 3, 4, 5, 6, 7 …,
MB1 :
MB2 :
MB3 :
FFT 연산이 시작되면, 연산 소자(AE0)로 데이터 0, ,가 제공되고, 연산 소자(AE1)로 데이터 1, ,이 제공되고, 연산 소자(AE2)로 데이터 2, ,이 제공되고 그리고 연산 소자(AE1)로 데이터 3, ,이 제공된다. 연산 소자들(AE0-AE3)이 앞서 나열한 데이터들에 대한 radix-4 FFT 연산을 완료하면 그 다음 데이터들이 연산 소자들(AE0-AE3)로 제공된다. 즉, 연산 소자(AE0)로 데이터 4, ,가 제공되고, 연산 소자(AE1)로 데이터 5, ,이 제공되고, 연산 소자(AE2)로 데이터 6, ,이 제공되고 그리고 연산 소자(AE1)로 데이터 7, ,이 제공된다.
상술한 바와 같이 본 발명의 데이터 변환 시스템은 4 개의 연산 소자를 이용하여 16 데이터 포인트들씩 radix-4 FFT 연산을 수행한다. 예컨대, 2048 데이터 포인트들에 대한 radix-4 FFT 연산을 수행하기 위해서는 도 8a 내지 도 9b에 도시된 과정이 총 128 번 반복적으로 수행되어야 한다.
도 10은 데이터가 저장될 수 있는 위치들이 16인 데이터 메모리가 4 개의 뱅크들(MB0-MB3)로 나뉘어져 있는 경우, FFT 연산 전의 데이터 인덱스와 FFT 연산 후의 데이터 인덱스를 정리해서 보여주고 있다. 초기에 뱅크들(MB0-MB3)로 시간 영역내의 데이터(x[15:0])가 순차적으로 저장되었을 때 radix-4 FFT 연산을 수행한 후 메모리 뱅크들(MB0-MB3)에 저장되는 주파수 영역내의 데이터(X[15:0])는 역방향 비트 순(reversed bit order)이다. 즉, 각 위치의 어드레스 비트들의 역방향 순의 비트들이 그 위치에 저장된 데이터의 인덱스이다.
이와 같이, 데이터가 저장될 수 있는 전체 위치들이 N개인 메모리 뱅크들(MB0-MB3)에 N 개의 데이터가 저장되었을 때, FFT 연산 결과를 X[0]부터 X[N-1]까지 순차적으로 독출하기 위해서는 출력 어드레스의 비트 순을 역순으로 한다. 그러나, 전체의 크기가 K인 메모리 뱅크들(MB0-MB3)에 N개의 데이터들이 저장되는 경우에는 다음과 같은 스킴에 따라서 출력 어드레스를 발생한다(단, K>N).
도 11은 데이터가 저장될 수 있는 위치들이 211인 데이터 메모리가 4 개의 뱅크들(MB0-MB3)로 나뉘어져 있고 뱅크들에는 25개의 데이터들이 각각 저장된 경우, FFT 연산 전의 데이터 인덱스와 FFT 연산 후의 데이터 인덱스를 정리해서 보여주고 있다. 초기에 뱅크들(MB0-MB3) 각각에 시간 영역내의 데이터(x[25-1:0])가 어드레스 '00000000000'부터 어드레스 '00000011111'까지 순차적으로 저장되었을 때 radix-4 FFT 연산을 수행한 후 메모리 뱅크들(MB0-MB3)에 저장되는 주파수 영역내의 데이터(X[25-1:0])는 역방향 비트 순이다. 그러나, 도 11에 도시된 예에서는 도 10에 도시된 예와 달리 각 위치에 저장된 데이터의 인덱스가 단순히 각 위치의 어드레스 비트들의 역순이 아니다.
도 12는 데이터가 저장될 수 있는 위치들이 2K 인 데이터 메모리가 M개의 뱅크들로 나뉘어져 있는 경우 FFT 연산 후의 데이터를 뱅크들로부터 순차적으로 출력하기 위한 출력 어드레스 발생기를 보여주는 도면이다. 도 12를 참조하면, 출력 어드레스 발생기(157)는 어드레스 발생기(170)와 선택기(171)를 포함한다. 어드레스 발생기(170)의 상세한 동작은 도 13을 참조하여 설명한다.
도 13은 도 12에 도시된 어드레스 발생기(170)의 동작을 개념적으로 보여주는 도면이다. 단, 도 13은 도 11에 도시된 예에 따라서 K=11, M=4 그리고 N=25인 것으로 가정한다. 메모리 인터페이스(150)로부터 입력되는 11비트의 독출 어드레스(SEQ_ADDR[10:0]) 중 어드레스(SEQ_ADDR[10:9])는 뱅크 어드레스이고, 어드레스(SEQ_ADDR[8:0])는 위치 어드레스이다. 도 11에 도시된 바와 같이, 각 뱅크의 어드레스 '000100000'부터 어드레스 '111111111'까지는 데이터가 기입되지 않으므로, 독출 어드레스(SEQ_ADDR[10:0]) 중 (SEQ_ADDR[8:5])는 항상 '0000'이다. 다시 말하면, 독출 어드레스(SEQ_ADDR[8:5]) 가 '1111'인 위치들에는 데이터가 기입되지 않아야 한다. 따라서, 어드레스 발생기(170)는 독출 어드레스(SEQ_ADDR[10:0]) 중 일부(SEQ_ADDR[8:5])를 제외한 나머지 어드레스의 비트들을 역순으로 배열하고, 역순으로 배열된 어드레스 중 최상위 2 비트를 뱅크 어드레스(BANK_SEL[1:0])로 그리고 나머지 비트들을 위치 어드레스(RADDR[8:0])로서 출력한다.
다시 도 12를 참조하면, 어드레스 발생기(170)는 K 비트의 독출 어드레스(SEQ_ADDR[K-1:0])와 메모리 뱅크들의 수 M 그리고 데이터 포인트 N을 받아들여서 뱅크 어드레스(BANK_SEL[log2M-1:0])와 위치 어드레스(RADDR[k-log2M-1:0])를 출력한다. 선택기(171)는 M 개의 뱅크들 중 뱅크 어드레스(BANK_SEL[log2M-1:0])에 대응하는 뱅크로 출력 어드레스(TADDR[K-log2M-1:0]를 제공한다. 상기 뱅크 어드레스(BANK_SEL[log2M-1:0])는 M 개의 뱅크들의 칩 선택 신호(CS[log2M-1:0])로 제공된다.
앞서 설명한 바와 같이, M 개의 연산 유닛을 이용하여 N 데이터 포인트들에 대한 radix-R FFT 연산을 수행하기 위해서는 logMN 단계들(Stages)이 필요하다. 만일 N이 M의 제곱수이면 즉, N=MX 이면 X개의 단계들이 필요하나, N이 M의 제곱수가 아니고 N=MX*Y(단, Y는 M보다 작은 짝수)이면 X+1개의 단계들이 필요하다. 이하 N이 M의 제곱수가 아니고 N=MX*Y(단, Y는 M보다 작은 짝수)인 경우의 일 예가 설명된다.
도 14는 4 개의 연산기를 이용하여 32 데이터 포인트들에 대한 radix-4 FFT 연산을 수행하는 과정을 보여주는 도면이다. R=M=4이고 N=32이면 N=log432=log442*2 이다. 따라서, 2+1 즉, 3 단계가 필요하다. 다만, 제 1 단계(Stage1) 및 제 2 단계(Stage2)에서 연산기들(AE0-AE3)은 radix-4 FFT 연산을 수행하나, 제 3 단계(Stage3)에서는 radix-2 FFT 연산을 수행한다.
도 14에 도시된 제 1 단계(Stage1)에서는 도 8a 및 도 8b에 도시된 방법으로 데이터 메모리로부터/로 데이터를 독출/기입하는 동작이 수행되고, 제 2 및 제 3 단계들(Stage2, Stage3)에서는 도 9a 및 도 9b에 도시된 방법으로 데이터 메모리로부터/로 데이터를 독출/기입하는 동작이 수행된다.
(제 2 실시예)
도 15는 M 개의 연산 소자들을 이용하여 N 개의 데이터 포인트들에 대한 radix-R FFT/IFFT 연산을 수행하는 데이터 변환 시스템을 보여주는 도면이다. 단, 이 실시예에서 R과 M은 다르다. 도 15에 도시된 데이터 변환 시스템(300)은 도 5에 도시된 데이터 변환 시스템(100)과 달리 메모리 인터페이스(350)에 선택기들(351, 358)을 더 포함하고, 8 개의 연산 소자들(AE0-AE7)을 구비하며, 데이터 메모리(400)는 8 개의 뱅크들(MB0-MB7)을 포함한다. 데이터 변환 시스템(300)의 동작이 이하 설명된다.
도 16a는 도 15에 도시된 데이터 변환 시스템에서 8 개의 연산 소자들을 이용하여 16 데이터 포인트들에 대한 radix-2 FFT 연산을 수행하는 과정을 개략적으로 보여주는 도면이다.
도 16a를 참조하면, 16 데이터 포인트들에 대한 radix-2 FFT 연산을 수행하기 위해서는 log216=4 즉, 4 개의 단계들(Stage1-Stage4)이 필요하다. 각 단계에서 연산 소자들(AE0-AE7)은 메모리 뱅크들(MB0-MB7)로부터 2 개의 데이터를 각각 받아들인다. 예컨대, 제 1 단계(Stage1)에서 연산 소자(AE0)는 제 0 뱅크(MB0)의 어드레스 0에 저장된 데이터와 제 4 뱅크(MB4)의 어드레스 8에 저장된 데이터를 받아들이고, 연산 소자(AE1)는 제 0 뱅크(MB0)의 어드레스 1에 저장된 데이터와 제 4 뱅크(MB4)의 어드레스 9에 저장된 데이터를 받아들이고, 연산 소자(AE2)는 제 1 뱅크(MB1)의 어드레스 2에 저장된 데이터와 제 5 뱅크(MB5)의 어드레스 10에 저장된 데이터를 받아들이고, 연산 소자(AE3)는 제 1 뱅크(MB1)의 어드레스 3에 저장된 데이터와 제 5 뱅크(MB5)의 어드레스 11에 저장된 데이터를 받아들이고, 연산 소자(AE4)는 제 2 뱅크(MB2)의 어드레스 4에 저장된 데이터와 제 6 뱅크(MB6)의 어드레스 12에 저장된 데이터를 받아들이고, 연산 소자(AE5)는 제 2 뱅크(MB2)의 어드레스 5에 저장된 데이터와 제 6 뱅크(MB6)의 어드레스 13에 저장된 데이터를 받아들이고, 연산 소자(AE6)는 제 3 뱅크(MB3)의 어드레스 6에 저장된 데이터와 제 7 뱅크(MB7)의 어드레스 14에 저장된 데이터를 받아들이고, 그리고 연산 소자(AE7)는 제 3 뱅크(MB3)의 어드레스 7에 저장된 데이터와 제 7 뱅크(MB7)의 어드레스 15에 저장된 데이터를 받아들인다. 나머지 단계들(Stage2-Stage4)에서 연산 소자들(AE0-AE7)로 입력되는 데이터는 도 16a에 상세히 도시되어 있으므로 언급하지 않는다.
도 16b는 도 16a에 도시된 연산 소자(AE0)의 구체적인 회로 구성을 보여주고 있다. radix-4 버터플라이 연산을 수행하는 연산 소자들(AE0-AE7)의 회로 구성은 모두 동일하므로 이 실시예에서는 연산 소자(AE0)의 회로만을 도시한다. 도 16b를 참조하면, radix-4 버터플라이 연산을 수행하는 연산 소자(AE0)는 2 개의 가산기들과 1 개의 곱셈기를 포함한다. 예를 들어, 제 1 단계(Stage1)에서 연산 소자(AE0)는 제 0 뱅크(MB0)에 저장된 0번째 데이터와 제 4 뱅크(MB4)에 저장된 8번째 데이터를 더하고 그 결과를 제 0 뱅크(MB0)의 어드레스 0에 저장하고, 제 0 뱅크(MB0)에 저장된 0번째 데이터와 제 4 뱅크(MB4)에 저장된 8번째 데이터의 차에 계수(W[0])를 곱하고 그 결과를 제 4 뱅크(MB4)의 어드레스 8에 저장한다.
도 17a는 도 16에 도시된 예에서 제 1 단계(Stage1)동안 데이터 메모리(400)로부터 데이터를 독출해서 메모리 인터페이스(350)를 통해 연산 소자들(AE0-AE7)로 제공하는 과정을 보여주는 도면이다. 다만, 도 17a에서는 데이터 메모리(400)에 저장되는 데이터를 16으로 한정하지 않고 N 개로 일반화하여 보여주고 있다.
도 17a를 참조하면, 메모리 인터페이스(350)는 선택기(351), 독출 매트릭스 어레이(352), 변환기(353) 그리고 출력 매트릭스 어레이(354)를 포함한다. 독출 매트릭스 어레이(352)는 크기가 R*R(이 실시예에서는 2*2)인 독출 매트릭스들(352a-352d)을 M/R(이 실시예에서는 4)개 구비하고, 출력 매트릭스 어레이(354)는 독출 매트릭스 어레이(352)와 동일하게 크기가 R*R(이 실시예에서는 2*2)인 출력 매트릭스(354a-354d)을 M/R(이 실시예에서는 4)개 구비한다.
radix-2 FFT 연산이 시작되면, 메모리 인터페이스(350)는 우선 뱅크들(MB0-MB7) 각각의 최하위비트 어드레스가 0인 위치에 저장된 데이터를 동시에 독출한다. 뱅크들(MB0-MB7)의 어드레스 로부터 독출된 데이터들은 선택기(351)로 입력된다. 선택기(351)는 제 0 및 제 4 뱅크들(MB0, MB4)의 어드레스 0 및 에 각각 저장된 데이터를 독출 매트릭스(352a)의 0번째 열(p0)에 저장하고, 제 1 및 제 5 뱅크들(MB1, MB5)의 어드레스 에 각각 저장된 데이터를 독출 매트릭스(352b)의 1번째 열(p1)에 저장하고, 제 2 및 제 6 뱅크들(MB2, MB6)의 어드레스 에 각각 저장된 데이터를 독출 매트릭스(352c)의 0번째 열(p0)에 저장하고, 그리고 제 3 및 제 7 뱅크들(MB2, MB6)의 어드레스 에 각각 저장된 데이터를 독출 매트릭스(352d)의 1번째 열(p1)에 저장한다. 계속해서 메모리 인터페이스(350)는 뱅크들(MB0-MB7) 각각의 최하위비트 어드레스가 1인 위치에 저장된 데이터를 동시에 독출한다. 뱅크들(MB0-MB7)의 어드레스 로부터 독출된 데이터들은 선택기(351)로 입력된다. 선택기(351)는 제 0 및 제 4 뱅크들(MB0, MB4)의 어드레스 1 및 로부터 독출된 데이터를 독출 매트릭스(352a)의 1번째 열(p1)에 저장하고, 제 1 및 제 5 뱅크들(MB1, MB5)의 어드레스 로부터 독출된 데이터를 독출 매트릭스(352b)의 1번째 열(p1)에 저장하고, 제 2 및 제 6 뱅크들(MB2, MB6)의 어드레스 로부터 독출된 데이터를 독출 매트릭스(352c)의 1번째 열(p1)에 저장하고, 그리고 제 3 및 제 7 뱅크들(MB2, MB6)의 어드레스 로부터 독출된 데이터를 독출 매트릭스(352d)의 1번째 열(p1)에 저장한다.
변환기(353)는 독출 매트릭스 어레이(352)에 대한 전치 행렬 변환을 수행하고 그 결과를 출력 매트릭스 어레이(354)에 저장한다. 즉, 독출 매트릭스(352a)의 0번째 및 1 번째 열들(p0, p1)에 저장된 데이터가 출력 매트릭스(354a)의 0번째 및 1번째 행들(q0, q1)에 각각 저장되고, 독출 매트릭스(352b)의 0번째 및 1 번째 열들(p0, p1)에 저장된 데이터가 출력 매트릭스(354b)의 0번째 및 1번째 행들(q0, q1)에 각각 저장되고, 독출 매트릭스(352c)의 0번째 및 1 번째 열들(p0, p1)에 저장된 데이터가 출력 매트릭스(354c)의 0번째 및 1번째 행들(q0, q1)에 각각 저장되고 그리고 독출 매트릭스(352d)의 0번째 및 1 번째 열들(p0, p1)에 저장된 데이터가 출력 매트릭스(354d)의 0번째 및 1번째 행들(q0, q1)에 각각 저장된다.
출력 매트릭스들(354a-354d)의 각 행에 저장된 데이터는 대응하는 연산 소자로 동시에(즉, 병렬로) 제공된다. 즉, 출력 매트릭스(154a)의 0번째 행(q0)에 저장된 데이터는 연산 소자들(AE0)로, 1번째 행(q1)에 저장된 데이터는 연산 소자(AE1)로, 출력 매트릭스(154b)의 0번째 행(q0)에 저장된 데이터는 연산 소자들(AE2)로, 1번째 행(q1)에 저장된 데이터는 연산 소자(AE3)로, 출력 매트릭스(154c)의 0번째 행(q0)에 저장된 데이터는 연산 소자들(AE4)로, 1번째 행(q1)에 저장된 데이터는 연산 소자(AE5)로 그리고 출력 매트릭스(154d)의 0번째 행(q0)에 저장된 데이터는 연산 소자들(AE6)로, 1번째 행(q1)에 저장된 데이터는 연산 소자(AE7)로 제공된다.
데이터를 각각 입력받은 연산 소자들(AE0-AE7)은 병렬로 FFT 연산을 수행한다.
도 17b는 도 16에 도시된 제 1 단계(Stage1)동안 도 17a에 도시된 과정에 이어서 연산 소자들(AE0-AE7)의 연산 결과를 데이터 메모리(400)에 저장하는 과정을 보여주는 도면이다. 메모리 인터페이스(350)는 연산 소자들(AE0-AE7)의 연산 결과를 데이터 메모리(400)에 저장하기 위하여 입력 매트릭스 어레이(355), 기입 매트릭스 어레이(357) 그리고 선택기(358)를 포함한다.
연산 소자들(AE0-AE3)의 FFT 연산 결과는 입력 매트릭스들(355a-355b)의 대응하는 행에 각각 저장된다. 즉, 연산 소자(AE0)의 연산 결과는 입력 매트릭스(355a)의 0번째 행(v0)에, 연산 소자(AE1)의 연산 결과는 입력 매트릭스(355a)의 1번째 행(v1)에, 연산 소자(AE2)의 연산 결과는 입력 매트릭스(355b)의 0번째 행(v0)에, 연산 소자(AE3)의 연산 결과는 입력 매트릭스(355b)의 1번째 행(v1)에, 연산 소자(AE4)의 연산 결과는 입력 매트릭스(355c)의 0번째 행(v0)에, 연산 소자(AE5)의 연산 결과는 입력 매트릭스(355c)의 1번째 행(v1)에, 연산 소자(AE7)의 연산 결과는 입력 매트릭스(355d)의 0번째 행(v0)에 그리고 연산 소자(AE1)의 연산 결과는 입력 매트릭스(355d)의 1번째 행(v1)에 저장된다.
입력 매트릭스들(355a-355d)에 저장된 데이터들은 변환기(356)에 의해서 전치 행렬 변환되어서 기입 매트릭스들(357a-357d)에 저장된다. 즉, 입력 매트릭스(355a)의 0번째 및 1 번째 행들(v0, v1)에 저장된 데이터가 출력 매트릭스(357a)의 0번째 및 1번째 열들(w0, w1)에 각각 저장되고, 입력 매트릭스(355b)의 0번째 및 1 번째 행들(v0, v1)에 저장된 데이터가 출력 매트릭스(357b)의 0번째 및 1번째 열들(w0, w1)에 각각 저장되고, 입력 매트릭스(355c)의 0번째 및 1 번째 행들(v0, v1)에 저장된 데이터가 출력 매트릭스(357c)의 0번째 및 1번째 열들(w0, w1)에 각각 저장되고, 그리고 입력 매트릭스(355d)의 0번째 및 1 번째 행들(v0, v1)에 저장된 데이터가 출력 매트릭스(357d)의 0번째 및 1번째 열들(w0, w1)에 각각 저장된다.
선택기(358)는 먼저 기입 매트릭스들(357a-357d) 각각의 0번째 열(w0)에 저장된 데이터를 뱅크들(MB0-BM7) 각각의 어드레스 0에 저장한다. 다음 기입 매트릭스들(357a-357d) 각각의 1번째 열(w1)에 저장된 데이터를 뱅크들(MB0-BM7) 각각의 어드레스 1에 저장한다.
도 17a 내지 도 17b에 도시된 과정들에 의해서 도 16a에 도시된 제 1 단계(Stage1)가 수행된다. 도 16a에 도시된 제 2 단계(Stage2)는 도 17a 및 도 17b에 도시된 제 1 단계(Stage1)와 유사한 방법으로 수행된다. 다음 표 1은 N 데이터 포인트들에 대한 radix-2 FFT 연산의 제 2 단계(Stage2)에서, 데이터 메모리로부터 독출되어서 선택기(351)를 통해 독출 매트릭스들(352a-352d)에 저장되는 데이터의 어드레스들과 출력 매트릭스들(354a-354d)에 저장되는 데이터의 어드레스들을 정리해서 보여주고 있다.
다음 표 2는 제 3 단계(Stage3)에서 데이터 메모리로부터 독출되어서 선택기(351)를 통해 독출 매트릭스들(352a-352d)에 저장되는 데이터의 어드레스들과 출력 매트릭스들(354a-354d)에 저장되는 데이터의 어드레스들을 정리해서 보여주고 있다.
다음 표 3은 제 4 단계(Stage4)에서 데이터 메모리로부터 독출되어서 선택기(351)를 통해 독출 매트릭스들(352a-352d)에 저장되는 데이터의 어드레스들과 출력 매트릭스들(354a-354d)에 저장되는 데이터의 어드레스들을 정리해서 보여주고 있다.
상술한 바와 같은 도 17a 및 도 17b 그리고 표 1 내지 표 3에 도시된 과정들을 통해서 N 데이터 포인트들에 대한 radix-2 FFT 연산이 수행된다.
도 18은 본 발명의 제 2 실시예에 따른 데이터 변환 시스템에서 데이터 메모리의 각 뱅크들에 저장되는 데이터와 메모리 인터페이스의 구성을 일반화해서 보여주고 있다. 도 18을 참조하면, 데이터 메모리(400)는 M 개의 뱅크들(MB0-MB(M-1))을 포함하고, 데이터는 뱅크들(MB0-MB(M-1))에 순차적으로 저장된다. radix-R FFT 연산을 수행하기 위해서 데이터 메모리(400)의 어드레스 0부터 어드레스 까지에 저장된 데이터가 M 개의 연산기들(AE0-AE(M-1))로 동시에 제공되어야 한다.
메모리 인터페이스(350)에 구비되는 선택기(351)는 뱅크들(MB0-MB(M-1))로부터 독출된 데이터를 독출 매트릭스 어레이(352)로 제공한다. 독출 매트릭스 어레이(352)는 개의 독출 매트릭스들을 포함하며, 각 독출 매트릭스의 크기는 R*R이다. 그러므로, 독출 매트릭스 어레이(352)의 전체 크기는 R*M이다. 출력 매트릭스 어레이(354)는 독출 매트릭스들에 각각 대응하는 개의 출력 매트릭스들을 포함하며, 각 출력 매트릭스의 크기는 R*R이다. 출력 매트릭스 어레이(354)의 전체 크기는 R*M이다. 출력 매트릭스들 각각은 대응하는 독출 매트릭스의 전치 행렬 변환된 데이터를 저장한다.
도 19는 도 18에 도시된 독출 매트릭스들에 저장되는 데이터를 일반화해서 보여주는 도면이다. 도 19에서 x=y=R이고, s는 단계(Stage)를 나타낸다. 또한, 독출 매트릭스의 데이터 기입/독출 시작점은 (j,0)이다.
예시적인 바람직한 실시예를 이용하여 본 발명의 설명하였지만, 본 발명의 범위는 개시된 실시예들에 한정되지 않는다는 것이 잘 이해될 것이다. 오히려, 본 발명의 범위에는 다양한 변형 예들 및 그 유사한 구성들을 모두 포함될 수 있도록 하려는 것이다. 따라서, 청구범위는 그러한 변형 예들 및 그 유사한 구성들 모두를 포함하는 것으로 가능한 폭넓게 해석되어야 한다.
이와 같은 본 발명의 데이터 변환 시스템은 직렬 연산 방식과 병렬 연산 방식을 혼합한 블럭-병렬 연산 방식으로서 연산 속도와 하드웨어 크기 간의 트레이드-오프 관계를 고려한 사용자의 요구에 따라 radix-2 및 radix-4와 같은 FFT 알고리즘의 종류, 연산 소자의 개수등을 다양하게 변경할 수 있다.
도 1은 데이터 포인트 N=16일 때 radix-2 FFT 연산에 따른 데이터 흐름을 보여주는 도면;
도 2는 일반적인 데이터 변환 시스템을 보여주는 도면;
도 3은 연산 유닛이 오직 하나의 연산 소자만을 구비하여 직렬 방식으로 연산하는 단일 프로세서 구조를 예시적으로 보여주는 도면;
도 4는 연산 유닛이 k 개의 연산 소자들을 구비하여 병렬 방식으로 연산하는 병렬 프로세서 구조를 보여주는 도면;
도 5는 본 발명의 바람직한 실시예에 따른 데이터 변환 시스템을 보여주는 도면;
도 6은 도 5에 도시된 데이터 메모리의 상세한 구성을 보여주는 도면;
도 7a는 16 데이터 포인트들에 대한 radix-4 FFT 연산 과정을 개략적으로 보여주는 도면;
도 7b는 도 5에 도시된 연산 소자의 구체적인 회로 구성을 보여주는 도면;
도 8a는 도 7a에 도시된 제 1 단계동안 데이터 메모리로부터 독출된 데이터가 메모리 인터페이스를 통해 연산 소자들로 제공되는 과정을 보여주는 도면이고, 도 8b는 도 7a에 도시된 제 1 단계동안 연산 소자들로부터 출력되는 연산 결과들이 메모리 인터페이스를 통해 데이터 메모리에 저장되는 과정을 보여주는 도면;
9a는 도 7a에 도시된 제 2 단계동안 데이터 메모리로부터 독출된 데이터가 메모리 인터페이스를 통해 연산 소자들로 제공되는 과정을 보여주는 도면이고, 도 9b는 도 7a에 도시된 제 2 단계동안 연산 소자들로부터 출력되는 연산 결과들을 메모리 인터페이스를 통해 데이터 메모리에 저장하는 과정을 보여주는 도면이다.
도 10은 데이터가 저장될 수 있는 위치들이 16인 데이터 메모리가 4 개의 뱅크들로 나뉘어져 있는 경우, FFT 연산 전의 데이터 인덱스와 FFT 연산 후의 데이터 인덱스를 정리해서 보여주는 도면;
도 11은 데이터가 저장될 수 있는 위치들이 211인 데이터 메모리가 4 개의 뱅크들로 나뉘어져 있고 뱅크들에는 25개의 데이터들이 각각 저장된 경우, FFT 연산 전의 데이터 인덱스와 FFT 연산 후의 데이터 인덱스를 정리해서 보여주는 도면;
도 12는 데이터가 저장될 수 있는 위치들이 2K 인 데이터 메모리가 M개의 뱅크들로 나뉘어져 있는 경우 FFT 연산 후의 데이터를 뱅크들로부터 순차적으로 출력하기 위한 출력 어드레스 발생기를 보여주는 도면;
도 13은 도 12에 도시된 어드레스 발생기의 동작을 개념적으로 보여주는 도면;
도 14는 4 개의 연산기를 이용하여 32 데이터 포인트들에 대한 radix-4 FFT 연산을 수행하는 과정을 보여주는 도면;
도 15는 M 개의 연산 소자들을 이용하여 N 개의 데이터 포인트들에 대한 radix-R FFT/IFFT 연산을 수행하는 데이터 변환 시스템을 보여주는 도면;
도 16a는 도 15에 도시된 데이터 변환 시스템에서 8 개의 연산 소자들을 이용하여 16 데이터 포인트들에 대한 radix-2 FFT 연산을 수행하는 과정을 개략적으로 보여주는 도면;
도 17a는 도 16에 도시된 예에서 제 1 단계동안 데이터 메모리로부터 독출된 데이터가 메모리 인터페이스를 통해 연산 소자들로 제공되는 과정을 보여주는 도면;
도 18은 본 발명의 제 2 실시예에 따른 데이터 변환 시스템에서 데이터 메모리의 각 뱅크들에 저장되는 데이터와 메모리 인터페이스의 구성을 일반화해서 보여주는 도면; 그리고
도 19는 도 18에 도시된 독출 매트릭스들에 저장되는 데이터를 일반화해서 보여주는 도면이다.
*도면의 주요 부분에 대한 설명*
100 : 데이터 변환기 110, 310 : 메인 컨트롤러
120, 320 : 계수 테이블 130, 330 : 계수 인터페이스
140, 340 : 연산 유닛 150, 350 : 메모리 인터페이스
151, 352 : 독출 매트릭스 153, 354 : 출력 매트릭스
154, 355 : 입력 매트릭스 155, 357 : 기입 매트릭스
157, 359 : 출력 어드레스 발생기 160 : 압축/복원기
170 : 어드레스 발생기 171 : 선택기
200 : 데이터 메모리 351, 356 : 선택기

Claims (28)

  1. 데이터 변환 시스템에 있어서:
    입력 데이터에 대한 래딕스(radix)-R(R은 양의 정수) 버터플라이 연산을 수행하는 M(M은 양의 정수) 개의 연산 소자들과;
    M 개의 뱅크들로 나뉘어지고, 상기 각 연산 소자들의 연산 결과를 저장하기 위한 데이터 메모리; 및
    상기 뱅크들에 저장된 M*R 데이터 포인트들을 독출하고, 상기 독출된 데이터 포인트들 중 R 데이터 포인트씩을 상기 입력 데이터로서 상기 연산 소자들로 각각 제공하고 그리고 상기 연산 소자들 각각의 연산 결과를 상기 데이터 메모리에 저장하는 메모리 인터페이스를 포함하여 FFT(fast fourier transform)/IFFT(inverse fast fourier transform) 연산을 수행하는 것을 특징으로 하는 데이터 변환 시스템.
  2. 제 1 항에 있어서,
    상기 메모리 인터페이스는,
    상기 뱅크들로부터 독출된 상기 M*R 데이터 포인트들 중 상기 R 데이터 포인트씩 상기 연산 소자들로 병렬로 제공하는 데이터 독출 수단; 및
    상기 연산 소자들 각각의 연산 결과를 상기 뱅크들에 병렬로 저장하는 데이터 기입 수단을 포함하는 것을 특징으로 하는 데이터 변환 시스템.
  3. 제 2 항에 있어서,
    초기에 상기 각 데이터 포인트들은 0번째 뱅크부터 M-1번째 뱅크까지 순차적으로 저장되는 것을 특징으로 하는 데이터 변환 시스템.
  4. 제 3 항에 있어서,
    상기 M과 상기 R은 동일한 것을 특징으로 하는 데이터 변환 시스템.
  5. 제 4 항에 있어서,
    상기 데이터 독출 수단은,
    복수의 행들과 복수의 열들로 배열되고, 상기 뱅크들로부터 독출된 M*R 데이터 포인트들을 저장하기 위한 제 1 버퍼 어레이와;
    복수의 행들과 복수의 열들로 배열되는 제 2 버퍼 어레이와;
    상기 제 1 버퍼 어레이에 저장된 상기 데이터 포인트들을 상기 연산 소자들로 병렬로 제공하기에 적합한 형태로 변환해서 상기 제 2 버퍼 어레이에 저장하는 제 1 변환기를 포함하는 것을 특징으로 하는 데이터 변환 시스템.
  6. 제 5 항에 있어서,
    상기 제 1 내지 제 4 버퍼 어레이들의 크기는 각각 M*R인 것을 특징으로 하는 데이터 변환 시스템.
  7. 제 5 항에 있어서,
    상기 제 2 버퍼 어레이의 상기 행들은 상기 연산 소자들에 각각 대응하고, 상기 제 2 버퍼 어레이의 상기 행들에 저장된 데이터 포인트들은 상기 대응하는 연산 소자들로 병렬로 제공되는 것을 특징으로 하는 데이터 변환 시스템.
  8. 제 7 항에 있어서,
    상기 각 연산 소자들로 제공될 상기 데이터 포인트들이 상기 복수의 뱅크들로부터 독출된 데이터 포인트들일 때, 상기 제 1 변환기는 상기 제 1 버퍼 어레이의 상기 열들에 저장된 데이터 포인트들을 상기 제 2 버퍼 어레이의 상기 행들에 저장하는 것을 특징으로 하는 데이터 변환 시스템.
  9. 제 7 항에 있어서,
    상기 각 연산 소자들로 제공될 상기 데이터 포인트들이 상기 뱅크들 중 어느 하나로부터 독출된 데이터 포인트들일 때, 상기 제 1 변환기는 상기 제 1 버퍼 어레이의 상기 행들에 저장된 데이터 포인트들을 상기 제 2 버퍼 어레이의 상기 행들에 저장하는 것을 특징으로 하는 데이터 변환 시스템.
  10. 제 4 항에 있어서,
    상기 데이터 기입 수단은,
    복수의 행들과 복수의 열들로 배열되고, 상기 각 연산 소자들로부터 출력되는 상기 연산 결과를 저장하기 위한 제 3 버퍼 어레이와;
    복수의 행들과 복수의 열들로 배열되는 제 4 버퍼 어레이와;
    상기 제 3 버퍼 어레이에 저장된 상기 데이터 포인트들을 상기 뱅크들에 병렬로 저장하기에 적합한 형태로 변환해서 상기 제 4 버퍼 어레이에 저장하는 제 2 변환기를 포함하는 것을 특징으로 하는 데이터 변환 시스템.
  11. 제 10 항에 있어서,
    상기 제 4 버퍼 어레이의 상기 행들은 상기 뱅크들에 각각 대응하고, 상기 제 4 버퍼 어레이의 상기 열들에 저장된 데이터 포인트들은 상기 대응하는 뱅크들에 병렬로 기입되는 것을 특징으로 하는 데이터 변환 시스템.
  12. 제 11 항에 있어서,
    상기 각 연산 소자들의 상기 연산 결과들이 상기 복수의 뱅크들에 저장되어야 할 때, 상기 제 2 변환기는 상기 제 3 버퍼 어레이의 상기 행들에 저장된 데이터 포인트들을 상기 제 4 버퍼 어레이의 상기 열들에 저장하는 것을 특징으로 하는 데이터 변환 시스템.
  13. 제 11 항에 있어서,
    상기 각 연산 소자들의 상기 연산 결과들이 상기 뱅크들 중 어느 하나에 저장되어야 할 때, 상기 제 2 변환기는 상기 제 3 버퍼 어레이의 상기 행들에 저장된 데이터 포인트들을 상기 제 2 버퍼 어레이의 상기 행들에 저장하는 것을 특징으로 하는 데이터 변환 시스템.
  14. 제 3 항에 있어서,
    상기 M은 상기 R보다 큰 것을 특징으로 하는 데이터 변환 시스템.
  15. 제 14 항에 있어서,
    상기 데이터 독출 수단은,
    복수의 행들과 복수의 열들로 배열되는 제 1 버퍼 어레이와;
    상기 뱅크들로부터 독출된 M*R 데이터 포인트들이 상기 제 1 버퍼 어레이의 소정 위치에 각각 저장되도록 제어하는 제 1 선택기와;
    복수의 행들과 복수의 열들로 배열되는 제 2 버퍼 어레이; 및
    상기 제 1 버퍼 어레이에 저장된 상기 데이터 포인트들을 상기 연산 소자들로 병렬로 제공하기에 적합한 형태로 변환해서 상기 제 2 버퍼 어레이에 저장하는 제 1 변환기를 포함하는 것을 특징으로 하는 데이터 변환 시스템.
  16. 제 15 항에 있어서,
    상기 제 2 버퍼 어레이의 상기 행들은 상기 연산 소자들에 각각 대응하고, 상기 제 2 버퍼 어레이의 상기 행들에 저장된 데이터 포인트들은 상기 대응하는 연산 소자들로 병렬로 제공되는 것을 특징으로 하는 데이터 변환 시스템.
  17. 제 14 항에 있어서,
    상기 데이터 기입 수단은,
    복수의 행들과 복수의 열들로 배열되고, 상기 각 연산 소자들로부터 출력되는 상기 연산 결과를 저장하기 위한 제 3 버퍼 어레이와;
    복수의 행들과 복수의 열들로 배열되는 제 4 버퍼 어레이와;
    상기 제 3 버퍼 어레이에 저장된 상기 데이터 포인트들을 상기 뱅크들에 병렬로 저장하기에 적합한 형태로 변환해서 상기 제 4 버퍼 어레이에 저장하는 제 2 변환기; 및
    상기 제 4 버퍼 어레이의 각 열들에 저장된 상기 데이터 포인트들이 상기 뱅크들에 병렬로 저장되도록 제어하는 제 2 선택기를 포함하는 것을 특징으로 하는 데이터 변환 시스템.
  18. 제 17 항에 있어서,
    상기 제 4 버퍼 어레이의 상기 행들은 상기 뱅크들에 각각 대응하고, 상기 제 4 버퍼 어레이의 상기 열들에 저장된 데이터 포인트들은 상기 대응하는 뱅크들에 병렬로 기입되는 것을 특징으로 하는 데이터 변환 시스템.
  19. 제 3 항에 있어서,
    상기 데이터 메모리는 K(K는 양의 정수)-비트 어드레스에 의해 지정가능한 위치들을 가지며, 상기 각 뱅크들의 위치들은 상기 K-비트 어드레스 중 상위 log2M-비트들로 구성된 뱅크 어드레스와 상기 K-비트 어드레스 중 상위 log2M-비트들을 제외한 나머지 비트들로 구성된 위치 어드레스에 의해 지정가능한 것을 특징으로 하는 데이터 변환 시스템.
  20. 제 19 항에 있어서,
    상기 각 뱅크들의 N/M(N은 K보다 작은 양의 정수) 위치들에 상기 연산 결과들이 저장되어 있을 때, 상기 데이터 메모리에 저장된 연산 결과들은 상기 K-비트 어드레스 중 상기 뱅크 어드레스의 비트들과 상기 위치 어드레스의 하위 log2N/M 비트들을 역순으로 배열된 어드레스에 따라서 독출되는 것을 특징으로 하는 데이터 변환 시스템.
  21. 데이터 변환 시스템에 있어서:
    입력 데이터에 대한 래딕스(radix)-R(R은 양의 정수) 버터플라이 연산을 수행하는 M(M=R*k, k는 2이상의 정수) 개의 연산 소자들과;
    M 개의 뱅크들로 나뉘어지고, 상기 각 연산 소자들의 연산 결과를 저장하기 위한 데이터 메모리; 및
    상기 뱅크들에 저장된 R*R 데이터 포인트들을 독출하고, 독출된 M*R 데이터 포인트들 중 상기 R 데이터 포인트씩 상기 연산 소자들로 병렬로 제공하는 데이터 독출 수단; 및
    상기 연산 소자들 각각의 연산 결과를 상기 뱅크들에 병렬로 저장하는 데이터 기입 수단을 포함하는 것을 특징으로 하는 데이터 변환 시스템.
  22. 제 21 항에 있어서,
    상기 데이터 독출 수단은,
    각각이 R 개의 행들과 R 개의 열들로 배열되는 M/R 개의 제 1 버퍼 어레이들과;
    상기 뱅크들로부터 독출된 M*R 데이터 포인트들이 상기 제 1 버퍼 어레이의 소정 위치에 각각 저장되도록 제어하는 제 1 선택기와;
    상기 제 1 버퍼 어레이들에 각각 대응하고, 각각이 R 개의 행들과 R 개의 열들로 배열되는 M/R 개의 제 2 버퍼 어레이들; 및
    상기 제 1 버퍼 어레이에 저장된 상기 데이터 포인트들을 상기 연산 소자들로 병렬로 제공하기에 적합한 형태로 변환해서 상기 제 2 버퍼 어레이에 저장하는 제 1 변환기를 포함하며;
    상기 데이터 기입 수단은,
    각각이 R 개의 행들과 R 개의 열들로 배열되고, 상기 각 연산 소자들로부터 출력되는 상기 연산 결과를 저장하는 M/R 개의 제 3 버퍼 어레이들과;
    상기 제 3 버퍼 어레이들에 각각 대응하고, 각각이 R 개의 행들과 R 개의 열들로 배열되는 M/R 개의 제 4 버퍼 어레이들과;
    상기 제 3 버퍼 어레이에 저장된 상기 데이터 포인트들을 상기 뱅크들에 병렬로 저장하기에 적합한 형태로 변환해서 상기 제 4 버퍼 어레이에 저장하는 제 2 변환기; 및
    상기 제 4 버퍼 어레이들의 각 열들에 저장된 상기 데이터 포인트들이 상기 뱅크들에 병렬로 저장되도록 제어하는 제 2 선택기를 포함하는 것을 특징으로 하는 데이터 변환 시스템.
  23. 제 22 항에 있어서,
    상기 제 2 버퍼 어레이들의 상기 행들은 상기 연산 소자들에 각각 대응하고, 상기 제 2 버퍼 어레이의 상기 행들에 저장된 데이터 포인트들은 상기 대응하는 연산 소자들로 병렬로 제공되는 것을 특징으로 하는 데이터 변환 시스템.
  24. 제 23 항에 있어서,
    상기 각 연산 소자들로 제공될 상기 데이터 포인트들이 상기 복수의 뱅크들로부터 독출된 데이터 포인트들일 때, 상기 제 1 변환기는 상기 각 제 1 버퍼 어레이들의 상기 열들에 저장된 데이터 포인트들을 상기 대응하는 제 2 버퍼 어레이의 상기 행들에 저장하는 것을 특징으로 하는 데이터 변환 시스템.
  25. 제 23 항에 있어서,
    상기 각 연산 소자들로 제공될 상기 데이터 포인트들이 상기 뱅크들 중 어느 하나로부터 독출된 데이터 포인트들일 때, 상기 제 1 변환기는 상기 각 제 1 버퍼 어레이들의 상기 행들에 저장된 데이터 포인트들을 상기 제 2 버퍼 어레이의 상기 행들에 저장하는 것을 특징으로 하는 데이터 변환 시스템.
  26. 제 22 항에 있어서,
    상기 제 3 버퍼 어레이들의 상기 행들은 상기 연산 소자들에 각각 대응하고, 상기 연산 소자들의 상기 연산 결과들은 상기 대응하는 제 3 버퍼 어레이의 상기 행들에 저장되는 것을 특징으로 하는 데이터 변환 시스템.
  27. 제 23 항에 있어서,
    상기 각 연산 소자들의 상기 연산 결과들이 상기 복수의 뱅크들에 저장되어야 할 때, 상기 제 2 변환기는 상기 각 제 3 버퍼 어레이들의 상기 행들에 저장된 데이터 포인트들을 상기 대응하는 제 4 버퍼 어레이들의 상기 열들에 저장하는 것을 특징으로 하는 데이터 변환 시스템.
  28. 제 11 항에 있어서,
    상기 각 연산 소자들의 상기 연산 결과들이 상기 뱅크들 중 어느 하나에 저장되어야 할 때, 상기 제 2 변환기는 상기 각 제 3 버퍼 어레이들의 상기 행들에 저장된 데이터 포인트들을 상기 대응하는 제 4 버퍼 어레이들의 상기 행들에 저장하는 것을 특징으로 하는 데이터 변환 시스템.
KR10-2002-0042852A 2002-07-22 2002-07-22 고속 푸리에 변환 장치 KR100481852B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR10-2002-0042852A KR100481852B1 (ko) 2002-07-22 2002-07-22 고속 푸리에 변환 장치
US10/426,318 US7233968B2 (en) 2002-07-22 2003-04-30 Fast fourier transform apparatus
US11/804,419 US7464127B2 (en) 2002-07-22 2007-05-18 Fast fourier transform apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0042852A KR100481852B1 (ko) 2002-07-22 2002-07-22 고속 푸리에 변환 장치

Publications (2)

Publication Number Publication Date
KR20040009044A KR20040009044A (ko) 2004-01-31
KR100481852B1 true KR100481852B1 (ko) 2005-04-11

Family

ID=30439371

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0042852A KR100481852B1 (ko) 2002-07-22 2002-07-22 고속 푸리에 변환 장치

Country Status (2)

Country Link
US (2) US7233968B2 (ko)
KR (1) KR100481852B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100617248B1 (ko) 2005-05-18 2006-09-01 한국전자통신연구원 고속 푸리에 변환 장치 및 방법

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7660840B2 (en) * 2003-09-29 2010-02-09 Broadcom Corporation Method, system, and computer program product for executing SIMD instruction for flexible FFT butterfly
US7676533B2 (en) * 2003-09-29 2010-03-09 Broadcom Corporation System for executing SIMD instruction for real/complex FFT conversion
US7702712B2 (en) * 2003-12-05 2010-04-20 Qualcomm Incorporated FFT architecture and method
KR100825771B1 (ko) * 2004-02-11 2008-04-28 삼성전자주식회사 메모리를 반감하는 고속 푸리에 변환 프로세서 및 그 방법
KR100602272B1 (ko) * 2004-12-14 2006-07-19 삼성전자주식회사 고속으로 데이터를 처리하는 고속 퓨리에 변환 장치 및 방법
JP4606149B2 (ja) * 2004-12-16 2011-01-05 パナソニック株式会社 受信装置及び受信方法
US20060224651A1 (en) * 2005-03-31 2006-10-05 Texas Instruments Incorporated Combined IFFT and FFT system
US20070033349A1 (en) * 2005-08-08 2007-02-08 Freescale Semiconductor, Inc. Multi-mode wireless processor interface
US8140110B2 (en) * 2005-08-08 2012-03-20 Freescale Semiconductor, Inc. Controlling input and output in a multi-mode wireless processing system
US7653675B2 (en) * 2005-08-08 2010-01-26 Freescale Semiconductor, Inc. Convolution operation in a multi-mode wireless processing system
US7802259B2 (en) * 2005-08-08 2010-09-21 Freescale Semiconductor, Inc. System and method for wireless broadband context switching
US7734674B2 (en) * 2005-08-08 2010-06-08 Freescale Semiconductor, Inc. Fast fourier transform (FFT) architecture in a multi-mode wireless processing system
KR100762281B1 (ko) * 2005-12-08 2007-10-01 한국전자통신연구원 고속 푸리에 변환 시스템의 메모리 주소 생성 방법 및 그를이용한 트위들 팩터 생성 장치
KR100668674B1 (ko) * 2005-12-10 2007-01-12 한국전자통신연구원 고속 푸리에 변환 장치 및 고속 푸리에 변환 방법
US7925686B2 (en) 2005-12-19 2011-04-12 Rambus Inc. Linear transformation circuit
SG133451A1 (en) * 2005-12-30 2007-07-30 Oki Techno Ct Singapore Pte A processor and method for performing a fast fourier transform and/or an inverse fast fourier transform of a complex input signal
US20070239815A1 (en) * 2006-04-04 2007-10-11 Qualcomm Incorporated Pipeline fft architecture and method
JP4364897B2 (ja) * 2006-11-09 2009-11-18 シャープ株式会社 データ転送装置
KR100932277B1 (ko) * 2007-12-17 2009-12-16 한국전자통신연구원 통신 시스템의 랜덤 접속 채널 수신 장치 및 방법
US8271569B2 (en) * 2008-06-17 2012-09-18 Freescale Semiconductor, Inc. Techniques for performing discrete fourier transforms on radix-2 platforms
US8549059B2 (en) 2009-01-08 2013-10-01 Texas Instruments Incorporated In-place fast fourier transform processor
US8370414B2 (en) * 2009-01-15 2013-02-05 Telefonaktiebolaget L M Ericsson (Publ) FFT-based parallel system with memory reuse scheme
US8880575B2 (en) * 2009-12-16 2014-11-04 Telefonaktiebolaget L M Ericsson (Publ) Fast fourier transform using a small capacity memory
US20110153706A1 (en) * 2009-12-21 2011-06-23 L3 Communications Integrated Systems, L.P. Fast fourier transform architecture
US9317481B2 (en) * 2011-12-31 2016-04-19 Institute Of Automation, Chinese Academy Of Sciences Data access method and device for parallel FFT computation
WO2013097217A1 (zh) * 2011-12-31 2013-07-04 中国科学院自动化研究所 一种多粒度并行fft蝶形计算的方法及相应的装置
GB2515755A (en) * 2013-07-01 2015-01-07 Ibm Method and apparatus for performing a FFT computation
US10942741B2 (en) * 2013-07-15 2021-03-09 Texas Instruments Incorporated Storage organization for transposing a matrix using a streaming engine
US10949206B2 (en) * 2013-07-15 2021-03-16 Texas Instruments Incorporated Transposing a matrix using a streaming engine
DE102015104776B4 (de) * 2015-03-27 2023-08-31 Infineon Technologies Ag Verfahren und Vorrichtung zum Verarbeiten von Radarsignalen
JP2018156266A (ja) * 2017-03-16 2018-10-04 富士通株式会社 演算器および演算器の制御方法
US10649772B2 (en) * 2018-03-30 2020-05-12 Intel Corporation Method and apparatus for efficient matrix transpose
US10866786B2 (en) * 2018-09-27 2020-12-15 Intel Corporation Systems and methods for performing instructions to transpose rectangular tiles
KR20200143030A (ko) * 2019-06-14 2020-12-23 한국전자통신연구원 입력 신호의 특정 주파수 성분들을 분석하기 위한 고속 푸리에 변환 장치

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4159528A (en) * 1978-03-22 1979-06-26 Rca Corporation Parallel transfer analyzer for performing the chirp Z transform
US5951627A (en) * 1996-06-03 1999-09-14 Lucent Technologies Inc. Photonic FFT processor
US5831883A (en) * 1997-05-27 1998-11-03 United States Of America As Represented By The Secretary Of The Air Force Low energy consumption, high performance fast fourier transform
KR100284181B1 (ko) 1998-04-02 2001-03-02 구자홍 패스트 퓨리에 변환(fft) 장치와 제어방법
US6317770B1 (en) * 1997-08-30 2001-11-13 Lg Electronics Inc. High speed digital signal processor
JP3749022B2 (ja) * 1997-09-12 2006-02-22 シャープ株式会社 高速フーリエ変換を用いて短い待ち時間でアレイ処理を行う並列システム
US6088714A (en) * 1998-07-27 2000-07-11 Agilent Technologies Mechanism for calculating one-dimensional fast fourier transforms
KR100308929B1 (ko) 1999-10-12 2001-11-02 서평원 고속 퓨리에 변환 장치
JP3917522B2 (ja) * 2001-02-28 2007-05-23 富士通株式会社 フーリェ変換装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100617248B1 (ko) 2005-05-18 2006-09-01 한국전자통신연구원 고속 푸리에 변환 장치 및 방법

Also Published As

Publication number Publication date
US7464127B2 (en) 2008-12-09
KR20040009044A (ko) 2004-01-31
US7233968B2 (en) 2007-06-19
US20070226286A1 (en) 2007-09-27
US20040015530A1 (en) 2004-01-22

Similar Documents

Publication Publication Date Title
KR100481852B1 (ko) 고속 푸리에 변환 장치
US20080208944A1 (en) Digital signal processor structure for performing length-scalable fast fourier transformation
JP4022546B2 (ja) 高速フーリエ変換を用いた混合−基数方式の変調装置
US4241411A (en) FFT Parallel processor having mutually connected, multiple identical cards
US7752249B2 (en) Memory-based fast fourier transform device
US7461114B2 (en) Fourier transform apparatus
EP2408158B1 (en) Circuit and method for implementing fft/ifft transform
EP0953175B1 (en) Method and apparatus for fft computation
CA2269464A1 (en) A device and method for calculating fft
US20060200513A1 (en) Fast Fourier transform processor and method capable of reducing size of memories
WO2008132510A2 (en) Fft processor
US20100149963A1 (en) Apparatus and method for fast fourier transform/inverse fast fourier transform
US6728742B1 (en) Data storage patterns for fast fourier transforms
US8209485B2 (en) Digital signal processing apparatus
US7676532B1 (en) Processing system and method for transform
KR100444729B1 (ko) 레딕스-8 단일 경로 지연 전달 구조의 고속 퓨리에 변환장치 및 그 방법
US10783216B2 (en) Methods and apparatus for in-place fast Fourier transform
KR20040002762A (ko) 고속 퓨리에 변환을 이용한 혼합-기수 방식의 변조 장치
US11531497B2 (en) Data scheduling register tree for radix-2 FFT architecture
Kim Shuffle memory system
CN118051709A (zh) 一种fft处理器及运算方法
Kuralkar Design of fast fourier transform using processing element for real valued signal
KR100341399B1 (ko) 병렬 입출력 구조를 갖는 병렬 셔플 메모리회로
KR20080062003A (ko) 기수 2의 제곱 구조를 이용하는 가변적인 입력 크기를허용하는 파이프라인 방식의 고속 푸리에 변환 장치 및방법
Karachalios et al. A new FFT architecture for 4× 4 MIMO-OFDMA systems with variable symbol lengths

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
FPAY Annual fee payment

Payment date: 20130228

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140228

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20150302

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170228

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20180228

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20190228

Year of fee payment: 15