KR100313501B1 - Cbfp알고리즘을 갖는 fft프로세서 - Google Patents
Cbfp알고리즘을 갖는 fft프로세서 Download PDFInfo
- Publication number
- KR100313501B1 KR100313501B1 KR1019990000562A KR19990000562A KR100313501B1 KR 100313501 B1 KR100313501 B1 KR 100313501B1 KR 1019990000562 A KR1019990000562 A KR 1019990000562A KR 19990000562 A KR19990000562 A KR 19990000562A KR 100313501 B1 KR100313501 B1 KR 100313501B1
- Authority
- KR
- South Korea
- Prior art keywords
- output
- radix
- butterfly
- control signal
- circuit
- Prior art date
Links
- 238000000034 method Methods 0.000 claims description 18
- 238000010586 diagram Methods 0.000 description 36
- 238000004364 calculation method Methods 0.000 description 18
- 230000007246 mechanism Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 238000007792 addition Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 241000255777 Lepidoptera Species 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 229920000136 polysorbate Polymers 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
Classifications
-
- 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
-
- 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
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)
- Pulse Circuits (AREA)
Abstract
본 발명은 수렴블록 부동점(CBFP : Convergent Block Floating Point)알고리즘을 갖는 2K-/8K-포인트, FFT/역 FFT겸용 파이프라인드 FFT프로세서에 관한 것이다.
본 발명은 입력 데이타를 역다중화하는 역다중화기와, 역다중화기의 출력을 입력받아 radix-4버터플라이연산을 수행하는 제1-제6 radix-4연산회로와, 제어신호에 따라 역다중화기 또는 제1버터플라이부의 출력을 다중화하는 다중화기와, 제6 radix-4연산회로의 출력을 입력받아 radix-2버터플라이연산을 수행하는 radix-2연산회로를 포함한다. 또한, 본 발명은 상기 radix-4연산회로와 radix-2연산회로의 출력단자에 버터플라이연산결과를 스케일링하는 수렴블록 부동점회로와, 수렴블록 부동점회로에서 출력된 스케일링지수를 누적 가산하는 가산회로와, 가산회로에서 출력된 스케일링지수에 따라 최종적으로 radix-2연산회로의 출력을 스케일링하는 디코더를 포함한다.
Description
본 발명은 파이프라인드(Pipelined) 고속 푸리에변환 구조에 관한 것으로서, 특히 수렴블록 부동점(CBFP:Convergent Block Floating Point)알고리즘을 갖는 FFT프로세서에 관한 것이다.
고속 푸리에변환(이하 FFT로 약칭함)은 디지탈신호처리(DSP)분야에서 가장 중요한 알고리즘중의 하나이며, 이산 푸리에변환(DFT:Discrete Fourier Transform)을 구현하는 알고리즘의 일반적인 명칭이다. 상기 FFT알고리즘은 실시간으로 신호를 처리하기 위하여, 하나 또는 그 이상의 물리장치의 집적회로내에서 구현된다.
그리고, 고속 푸리에변환의 연산은 프로그래머블 디에스피(DSP)에 구현된 소프트웨어 또는 전용 FFT프로세서에 의해 수행된다. FFT프로세서 하드웨어 시스템에서 가장 중요한 부분은 산술동작을 수행하는 버터플라이 프로세서이며, FFT버터플라이 계산은 γ-포인트의 데이터연산에 의해 이루어진다. 여기서, γ는 기수(Radix)라 부른다. N-포인트 FFT는 logγN 스테이지를 위하여 각 스테이지(블럭)마다 N/γ개의 버터플라이부를 사용한다. 이때, 하나의 버터플라이 스테이지의 연산결과는 다음 버터플라이 스테이지의 입력이 된다.
N-포인트 순방향(direct) 이산 푸리에 변환(DFT)에 대한 기본 방정식은 다음과 같이 표현된다.
X(K) =, K=0,1,.....,N-1 ---------식(1)
이때, n은 타임 인덱스(Index), k는 주파수 인덱스, N은 포인트이며, WN(=)은 트위들 요소(Twiddle factor)이다.
도 1은 상기 식(1)을 버터플라이로 표현한 radix-2 버터플라이부의 기본구성으로서, 입력과 출력사이의 관계는 다음과 같다.
X[k] = x[n] + x[n+N/2]
X[k+N/2] = x[n] - x[n+N/2]
도 2는 16-포인트 radix-2 FFT의 프로세서의 신호흐름도이다. 16-포인트 FFT의 버터플라이연산은 4개의 버터플라이 스테이지(블럭)(I,II,III,IV)에 의해 수행되며, 각 스테이지는 8개의 버터플라이부로 구성된다.
도 3은 상기 식(1)을 버터플라이로 표현한 radix-4 버터플라이부의 신호흐름도이다. 그리고, 도 4는 16-포인트 radix-4 FFT 프로세서의 신호흐름도이다. 16-포인트 FFT의 버터플라이 계산은 2개의 버터플라이 스테이지에 의해 수행되며, 각 스테이지는 4개의 버터플라이부로 구성된다. 상기와 같이 Cooley-Tukey알고리즘을 채택한 버터플라이연산은 'Divide and Conquer'방식을 사용하기 때문에 계산과정을 NlogN으로 줄일 수 있다. 그러나, 하드웨어로 구현할 때 유연성, 규칙성, 동일장소 연산(In-place computation) 등의 적용이 어렵게 된다.
도 5는 단일 버터플라이부를 갖는 종래의 FFT프로세서의 개략도이다.
램(10)은 입력 데이터(Data_in)를 재배치하는 역할을 수행하고, 램(13)은 버터플라이부(11)의 연산결과를 저장한다. 상기 램(10),(13)은 N-워드(Word) 램으로 구성된다. 버터플라이부(11)는 복소수 곱셈기(4개의 곰셈기와 2개의 가산기)와 4개의 덧셈기를 포함한다. 롬(12)은 트위들요소()를 저장하고, 컨트롤러(14)는 램(10),(13)의 억세스동작과 버터플라이부(11)의 버터플라이연산동작을 제어한다.
따라서, 버터플라이부(11)는 램(10)의 억세스 데이타와 롬(12)에서 리드된 트위들요소()를 이용하여 N-포인트 FFT의 버터플라이연산을 수행하며,연산결과는 램(13)에 일시 저장된다. 이후 모든 버터플라이연산이 완료되면 컨트롤러(14)의 제어에 의해 램(13)으로부터 최종 출력데이타(Data_out)가 출력된다.
그런데, 종래의 FFT프로세서는 적은 포인트의 FFT연산에는 적당하지만, 큰 포인트의 FFT 계산에는 적합하지 않다. 그 이유는 N-포인트 FFT의 계산을 위해 (N/γ)logγN개의 radix-γ 버터플라이부가 필요하고, FFT프로세서의 제작시 칩면적을 좌우하는 주요 요인인 중간데이타를 저장하기 위하여 2N개의 램이 필요하기 때문이다. 또한, 상기 2N개의 램에 대한 2NlogγN번의 리드/라이트억세스가 필요하다. 따라서, 큰 포인트의 FFT의 제작 및 계산시 종래의 FFT프로세서는 속도저하 및 면적증대를 유발하게 되며, 심지어는 하드웨어의 구현이 불가능한 경우도 있다.
도 6은 radix-4 버터플라이연산을 위한 종래의 파이프라인드 FFT프로세서의 개략도로서, 미합중국 특허(USP 5,163,017)에 기록되어 있다.
상기 파이프라인드 FFT프로세서는 입력 데이타를 버터플라이연산에 맞게 재배치하는 램(22)과, 램(22)을 제어하기 위한 컨트롤러(20) 및 어드레스발생기(21)와, 트위들요소를 저장하는 계수롬(24)과, 계수롬(24)을 제어하기 위한 계수어드레스 발생기(23)와, 버터플라이연산을 수행하는 파이프라인드 데이터경로(Data path)블록(25)으로 구성된다. 상기 파이프라인 FFT구조는 한 번의 버터플라이계산이 하나의 파이프라인 싸이클에서 수행되는 구조를 갖는다.
이와같이 구성된 종래의 파이프라인드 FFT프로세서의 동작은 다음과 같다.
컨트롤러(20)에서 출력된 제어신호에 따라 어드레스 발생기(21)는 램(22)으로 리드/라이트 어드레스를 출력하고, 계수 어드레스 발생기(23)는 트위들계수를 리드하기 위한 계수 어드레스를 계수 롬(24)으로 출력한다.
램(22)은 어드레스 발생기(21)의 라이트 어드레스에 따라 입력 데이타(Data_in)를 재배치하여, 4개의 데이터를 파이프라인드 데이터경로 블럭(25)으로 출력하고, 계수 롬(24)은 계수 어드레스 발생기(23)에서 출력된 계수 어드레스에 따라 radix-4 버터플라이연산을 위한 2개의 트위들 계수를 출력한다. 이때, 상기 계수 롬(24)은 2개의 트위들 계수가 동시에 리드될 수 있도록 2개의 저장용 롬으로 구성되며, 3개의 트위들 계수가 동시에 리드되는 경우는 3개의 롬이 사용될 수 있다.
따라서, 상기 파이프라인드 데이터경로 블럭(25)은 램(22)에서 억세스된 데이터와 계수 롬(24)에서 리드된 2개의 트위들계수를 이용하여 radix-4 버터플라이, 즉 16개의 가산/감산 및 3개의 복소수승산기로 구성된 버터플라이연산을 수행한다. 이때, 복소수 승산에는 계수 롬(24)에서 리드된 세 개의 복소수 트위들 계수가 사용되며, 각 버터플라이 연산으로부터 발생된 출력 데이터(Data_out)는 다시 램(22)에 저장된다.
상기와 같이, 종래의 파이프라인드 FFT프로세서는 입력 데이타(Data_in)와 출력 데이타(Data_out)를 부분적으로 램(22)에 저장하여 버터플라이연산를 수행하는 방법이다. 따라서, 상기 구조는 도 5에 도시된 FFT프로세서에 비하여 중간데이타 저장에 필요한 메모리(램)를 대폭적으로 절약할 수 있는 잇점을 가지고 있다.
그러나, 종래의 파이프라인 FFT프로세서는 입력 데이타(Data_in)를 재배열하기 위하여 램(22) 및 어드레스 발생기(21)가 별도로 필요하고, 버터플라이연산을 위하여 복잡한 파이프라인드 데이터경로 블록(25)을 포함하고 있다. 여기서, 파이프라인드 데이터경로 블록(25)의 상세 구성은 설명의 편의를 위하여 생략하기로 한다. 또한, 데이터경로 블록(25)에서 한 번의 버터플라이를 수행하기 위해서는 8개의 파이프라인을 통과해야 하기 때문에 다수의 파이프라인 지연이 발생되는 등의 문제점을 안고 있다.
블록부동점 알고리즘은 현재 버터플라이연산에서 폭넓게 사용되고 있다. 그런데, 일반적으로 버터플라이프로세서는 고정점 승산기들과 가산기들로 이루어지기 때문에, 승산, 가산, 감산동작에 의해 데이터범위가 증가되어 오버플로우가 발생된다. 따라서, 오버플로우된 데이터를 적절히 쉬프트시키기 위하여 오버플로우가 검출되어야 한다.
도 7은 종래의 블록 부동점(BFP)메카니즘의 개략도로서, 쉬프터(30)와, 쉬프터(30)에 접속된 버터플라이 프로세서(31)와, 상기 쉬프터(30)와 버터플라이 프로세서(31)에 접속된 오버플로우 검출기(32)로 구성된다.
쉬프터(30)는 메모리(미도시)로부터 연산될 소스 데이타를 입력받는다. 이때, 첫 번째 스테이지(블럭)의 버터플라이연산을 위한 소스데이타는 쉬프터(30)에서 쉬프트되지 않고 곧바로 버터플라이 프로세서(31)로 보내진다. 버터플라이 프로세서(31)는 소스 데이터를 입력받아 버터플라이연산을 수행하고, 오버플로우 검출기(32)는 버터플라이 프로세서(31)의 결과데이타로부터 오버플로우를 검출한다. 이후, 마지막 버터플라이연산이 완료되고 오버플로우 검출기(32)에 의해 마지막 결과데이타의 오버플로우가 검출되면, 첫 번째 스테이지에 대한 가장 큰 오버플로우 비트 수(M1)가 오버플로우 검출기(32)로부터 쉬프터(30)로 입력된다. 그리고, 첫 번째 스테이지 버터플라이연산의 최종 결과데이타는 메모리로 전송되어, 두 번째 스테이지(블럭)의 버터플라이연산을 위한 소스데이타로 이용된다.
쉬프터(30)는 두 번째 스테이지의 버터플라이연산을 위한 소스데이타를 메모리로부터 입력받아, 입력된 소스데이타를 오버플로우 비트 수(M1)만큼 쉬프트시킨다. 쉬프트된 데이터는 버터플라이연산을 위하여 버터플라이 프로세서(31)로 보내지며, 쉬프터(30)로 제공될 가장 큰 오버플로우 비트 수(M2)를 얻기 위하여 버터플라이 프로세서(31)의 결과데이타는 오버플로우 검출기(32)에 의해 검출된다. 그리고, 버터플라이연산의 결과데이타는 메모리로 전송되어 세 번째 스테이지의 버터플라이연산을 위한 소스데이타로 작용한다. 이러한 과정은 모든 스테이지의 버터플라이연산이 완료될 때까지 반복된다.
상술한 바와같이, 종래의 BFP메카니즘은 고정점 연산과정에서 승산,가산 등을 거치면서 나타나는 비트의 오버플로우를 처리하는 방법에 대한 내용이다. 상기 BFP구조는 한 블럭(스테이지)내의 모든 데이터의 오버플로우를 조사하여, 가장 큰 오버플로우(Mk)를 갖는 데이터를 기준으로 다른 모든 데이터를 Mk만큼 쉬프트시켜 버터플라이의 계산결과에서 발생되는 오버플로우 에러를 보상한다. 그리고, 상기 BFP구조는 스테이지 K-1의 버터플라이 연산과 스테이지 K의 버터플라이 연산이 곧바로 연결되어 파이프라인 대기가 불필요한 잇점이 있다.
그러나, 상기 블록 부동점 메카니즘은 FFT연산결과의 정확도를 높여주기는 하지만, 큰 포인트의 FFT연산과 같이 블록이 큰 경우(다단의 버터플라이 연산)는 정확도가 크게 향상되지 못하는 단점이 있다.
따라서, 본 발명의 목적은 개선된 파이프라인드구조를 구현하여 칩면적을 절감하고 연산시간의 효과적인 운용이 가능한 FFT프로세서를 제공하는데 있다.
본 발명의 다른 목적은 2K-포인트의 버터플라이연산과 8K-포인트의 버터플라이연산을 수행할 수 있는 다기능의 FFT프로세서를 제공하는데 있다.
본 발명의 다른 목적은 FFT/역 FFT연산을 수행할 수 있는 FFT프로세서를 제공하는데 있다.
본 발명의 또 다른 목적은 고정점 데이타의 연산에 부동점의 개념을 도입한 수렴블럭 부동점회로를 구현하여 출력데이타의 정확도를 향상시킬 수 있는 FFT프로세서를 제공하는데 있다.
상기 목적을 달성하기 위하여 본 발명은 8K-포인트의 경우는 6개의 radix-4 연산 스테이지와 1개의 radix-2 연산 스테이지로 구성된 복합-radix구조를 사용하고, 2K-포인트의 경우는 첫 번째 radix-4 연산 스테이지가 제외될 수 있도록 구성하였다.
상기 6개의 radix-4 연산 스테이지를 위하여, 본 발명에 따른 radix-4연산회로는 클럭신호를 카운트하여 제1∼제6제어신호와 롬 어드레스를 출력하는 제1컨트롤러와, 제1∼제3제어신호에 따라 입력 데이타를 재배열하는 16-포인트 radix-4변환기와, 상기 16-포인트 radix-4변환기의 출력을 입력받아, 제4∼제6제어신호에 따라 버터플라이연산을 수행하는 radix-4버터플라이 연산기와, 트위들요소가 저장된 롬과, 상기 radix-4버터플라이 연산기의 연산결과와 롬에서 출력된 트위들요소를 승산하는 복소수 곱셈기를 포함한다.
상기 1개의 radix-2 연산 스테이지를 위하여, 본 발명에 따른 radix-2연산회로는 클럭신호를 카운트하여 제어신호를 출력하는 제2컨트롤러와, 제어신호에 따라 입력 데이타를 재배열하는 radix-2변환기와, 상기 radix-2변환기의 출력을 입력받아, 제어신호에 따라 버터플라이연산을 수행하는 radix-2버터플라이 연산기를 포함한다.
상기와 같은 목적을 달성하기 위하여 본 발명은 상기 radix-4연산회로와 radix-2연산회로의 출력단자에 버터플라이연산결과를 스케일링하는 수렴블록 부동점회로를 접속하고, 그 수렴블록 부동점회로에서 출력된 스케일링지수를 누적 가산하기 위한 가산회로와, 그 가산회로에서 출력된 스케일링지수에 따라 최종적으로 radix-2연산회로의 출력을 스케일링하는 디코더를 추가로 포함한다.
도 1은 이산 푸리에 변환(DFT : Discrete Fourier Transform)에 대한 방정식을 radix-2 버터플라이부로 표현한 신호흐름도.
도 2는 16-포인트 radix-2 FFT 프로세서의 신호 흐름도.
도 3은 이산 푸리에 변환(DFT)에 대한 방정식을 radix-4 버터플라이부로 표현한 신호흐름도.
도 4는 16-포인트 radix-4 FFT 프로세서의 신호 흐름도.
도 5는 단일 버터플라이부를 갖는 종래의 FFT프로세서의 개략도.
도 6은 radix-4 버터플라이 연산을 위한 종래의 FFT 파이프라인드 구조의 개략도.
도 7은 종래의 블록 부동점 메카니즘의 개략도.
도 8은 본 발명에 따른 8K-/2K-포인트 겸용 FFT프로세서의 개략도.
도 9는 도 8에 있어서, radix-4버터플라이부의 상세 블록 구성도.
도 10은 도 9에 있어서, 16-포인트 radix-4변환기의 상세 블록 구성도.
도 11은 도 10에서 클럭타이밍에 따른 16-포인트 변환기의 데이터 재배치를 나타낸 도면.
도 12는 도 9에 있어서, 상기 radix-4 버터플라이 연산기의 상세 구성도.
도 13은 도 8에 도시된 radix-4버터플라이부에서 각 Stage별 주요 파라미터의 배치를 나타낸 도면.
도 14는 도 8에서 radix-2버터플라이부의 상세 블록 구성도.
도 15는 도 14에 있어서, 상기 radix-2변환기의 상세 블록 구성도.
도 16은 도 14에 있어서 radix-2 버터플라이 연산기의 상세 구성도.
도 17은 역 이산 푸리에변환(IDFT)의 방정식을 Radix-4 버터플라이부로 표현한 신호 흐름도.
도 18은 FFT와 IFFT모드에서 복소수 곱셈기의 차이를 나타낸 도면.
도 19는 radix-4 FFT연산에서 데이터처리과정을 나타낸 도면.
도 20은 본 발명에 따른 수렴블럭 부동점회로(CBFP)의 상세 블록도.
도 21은 도 20에서 스케일링지수의 누적을 나타내기 위한 개략도.
도 22는 본 발명에 따른 CBFP알고리즘을 갖는 2K-/8K-포인트, 직접/역 겸용 파이프라인드 FFT프로세서의 전체 블록도
*** 도면의 주요 부분에 대한 부호의 설명 ***
50∼55,70-71: 지연기 60∼65,72-73, 80-83 :가산기/감산기
100 : 역다중화기 101, 103∼107 : radix-4버터플라이부
102 : 다중화기 108 : radix-2버터플라이부
109 : 디코더 201 : 16-포인트 radix-4 변환기
202 : radix-4버터플라이 연산기 203,303 : 컨트롤러
204 : 롬 205 : 복소수 곱셈기
301 : radix-2변환기 302 : radix-2버터플라이 연산기
1. 개선된 파이프라인드 구조
8K(8192)-포인트의 FFT프로세서를 구현하기 위해서는 13개의 radix-2 연산스테이지(213) 또는 6개의 radix-4 연산스테이지(46)와 마지막으로 1개의 radix-2 연산스테이지(46×21)가 필요하다. 그리고, 2K(2048)-포인트의 FFT프로세서를 구현하기 위해서는 11개의 radix-2 연산스테이지(211) 또는 5개의 radix-4 연산스테이지(45)와 마지막으로 1개의 radix-2 연산스테이지(45×21)가 필요하다.
도 8은 본 발명에 따른 8K-/2K-포인트 겸용 FFT프로세서의 개략도로서, 회로의 복잡성을 줄이기 위하여 6개의 radix-4 연산스테이지와 1개의 radix-2 연산스테이지를 갖는 복합-radix구조를 사용한다.
상기 FFT프로세서는 역다중화기(100), 다중화기(102), radix-4 연산을 수행하기 위한 6개의 radix-4 버터플라이부(101, 103-107) 및 radix-2 연산을 수행하기 위한 1개의 radix-2 버터플라이부(108)로 구성된다. 상기 FFT프로세서는 8K(8192)-포인트의 경우는 6 radix-4 & 1 radix-2구조인 복합-radix구조를 사용하고, 2K(2048)-포인트의 경우는 다중화기(102)의 스위칭동작에 의해 첫 번째 radix-4 버터플라이부(101)(스테이지1)를 제외시켜 사용한다. 따라서, 실제 FFT프로세서를 실제 사용할 때에는 지역적인 특성에 맞추어 8K-포인트용 또는 2K포인트용으로 미리 세팅하여 사용하게 된다.
도 9에는 radix-4 FFT연산의 스테이지(블럭)별 개략도가 도시되어 있다.
도 9에 도시된 바와같이, 각 radix-4 버터플라이부는 제어신호(s1,s2,s3)에 따라 입력데이타(DIN)를 재배열하여 4개의 데이터를 출력하는 16-포인트 radix-4변환기(201)와, 상기 16-포인트 radix-4 변환기(201)의 출력을 입력받아, 제어신호(s4,s5,s6)에 따라 버터플라이연산을 수행하는 radix-4 버터플라이 연산기(202)와, 클럭신호(CLK)를 카운트하여 상기 제어신호(s1-s6)와 롬 어드레스(ADDR)를 출력하는 컨트롤러(203)와, 상기 컨트롤러(203)에서 출력된 롬 어드레스(ADDR)에 따라 트위들요소를 출력하는 롬(204)과, 상기 radix-4 버터플라이 연산기(202)의 출력데이타와 상기 롬(204)에서 출력된 트위들요소를 승산하는 복소수 곱셈기(205)로 구성된다.
상기 복소수 곱셈기(205)는 도 18에 도시된 바와같이 4개의 곱셈기와 2개의 가산기/감산기로 구성되고, 제어신호(s1∼s6)는 4클럭마다 변하는 신호이다.
따라서, radix-4 FFT계산의 각 스테이지에서, 16-포인트 radix-4 변환기(201)는 입력 데이터(DIN)를 재배치하여 4개의 데이터를 출력하고, 그 4개의 데이터는 radix-4버터플라이 연산기(202)에서 버터플라이 연산을 거치게 된다. 복소수 곱셈기(205)는 컨트롤러(203)의 제어에 따라 롬(204)에서 리드된 트위들요소와 상기 radix-4 버터플라이 연산기(202)의 출력을 승산한 후 다음 스테이지로 전달하게 된다.
도 4에 도시된 기본적인 radix-4 버터플라이부의 신호흐름도는 다음과 같이 표현된다.
X[0,a]=x[n]+x[n+N/4]+x[n+N/2]+x[n+3N/4]---식(2)
X[1,a]=x[n]-jx[n+N/4]-x[n+N/2]+jx[n+3N/4]----식(3)
X[2,a]=x[n]-x[n+N/4]+x[n+N/2] -x[n+3N/4]----식(4)
X[3,a]=x[n]+jx[n+N/4]-x[n+N/2]-jx[n+3N/4]----식(5)
여기서, a는 임의의 수를 나타내는 더미 인덱스(dummy index)이다.
따라서, 상기 식들을 도 4에 도시된 16-Point Radix-4 프로세서의 계산에 적용하면, 스테이지 1의 상위 4개의 출력{x'[0,0],x'[0,1],x'[0,2],x'[0,3]}은 상기 식(2)에 의해 계산됨을 알 수 있다. 즉, 입력{x[0],x[4],x[8],x[12]}에 의해 x'[0,0]가 계산되고, 입력{x[1],x[5],x[9],x[13]}에 의해 x'[0,1]가 계산된다. 마찬가지 방법으로 x'[0,2], x'[0,3]도 동일한 방법으로 계산된다.
그 다음 4개의 출력{x'[1,0], x'[1,1], x'[1,2], x'[1,3]}은 상기 식(3)에 의해 계산되며, 이때 각 입력은 상기 식(2)에서 사용된 입력을 동일하게 사용한다.
이와같은 특성을 이용하여 본 발명은 도 10과 같이 16-포인트 radix-4변환기(201)를 구현하였다.
상기 16-포인트 radix-4 변환기(201)는 6개의 지연기(50-55)와 3개의 스위치(SW1-SW3)를 포함하며,각 지연기는 4개의 레지스터(지연율 4클럭)로 구성된다. 따라서, 스위치(SW1-SW3)는 컨트롤러(203)에서 출력된 제어신호(s1,s2,s3)에 따라, 4클럭주기마다 radix-4 버터플라이 연산기(202)로 동일한 데이타를 4번까지 인가한다. 그 결과, 본 발명은 지연기(50-55)로 구성되는 radix-4 변환기(201)를 구비하여, 종래 입력데이타의 재배치에 필요한 램과 부수적인 더미로직(어드레스 발생기)등을 제거하여 칩면적과 연산시간을 감소시킬 수 있게 된다.
도 11은 radix-4 FFT의 한 스테이지에서 클럭타이밍(T)에 따른 16-포인트 radix-4 변환기의 데이터 재배치과정을 나타낸 도면이다.
도 10에 도시된 지연기의 각 레지스터는 클럭신호(CLK)의 주기마다 입력 데이타(DIN)를 쉬프트시키기 때문에, 각 지연기는 클럭신호(CLK)의 4클럭주기마다 데이터를 출력한다. 따라서,지연기(50∼55)로 16-포인트의 데이터(0∼15)가 순차적으로 입력될 때 12클럭후에 지연기(50)의 출력단에 데이터 0가 처음으로 나타난다.
즉, 클럭신호(CLK)의 타이밍이 12T(m=0)가 되면 지연기(50)의 입력단에는 데이터 12가 나타나고, 지연기(50∼52)의 출력단에는 각각 데이터 8, 4,0가 나타난다. 따라서, 컨트롤러(203)는 클럭신호(CLK)의 타이밍이 12T(m=0)가 되는 시점부터 0,0,0의 제어신호(s1,s2,s3)를 스위치(SW1-SW3)로 출력하기 시작하여, 클럭신호(CLK)의 4주기마다 제어신호(s1,s2,s3)를 가변시킨다. 이때, 가변되는 제어신호(s1,s2,s3)의 레벨은 (테이블 1)에 도시되어 있다.
(테이블 1)
m | s1 | s2 | s3 |
0 | 0 | 0 | 0 |
1 | 1 | 0 | 0 |
2 | 1 | 1 | 0 |
3 | 1 | 1 | 1 |
그 결과, 스위치(SW1-SW3)는 12T에서 0,0,0의 제어신호(s1,s2,s3)에 따라 출력(D0-D3)으로서 d0,d12,d8,d4를 출력한다. 상기와 동일한 방법에 의해 13T에서 스위치(SW1-SW3)의 출력(D0-D3)은 d1,d13,d9,d5가 되고, 14T에서 출력(D0-D3)은d2,d14,d10,d6가 되며, 15T에서 스위치(SW1-SW3)의 출력(D0-D3)은 d3,d15,d11,d7가 된다.
이후, 클럭신호(CLK)의 타이밍이 16T(m=1)가 되면 컨트롤러(203)는 제어신호(s1,s2,s3)를 1,0,0로 가변하고, 그에 의해 16T∼19T에 대한 스위치(SW1-SW3)의 출력(D0-D3)이 결정된다. 마찬가지 방법으로, 타이밍이 20T(m=2)가 되면 컨트롤러(203)는 제어신호(s1,s2,s3)를 1,1,0로 가변하며, 타이밍이 24T(m=3)가 되면 제어신호(s1,s2,s3)를 1,1,1로 가변한 후 리세트된다. 그 결과, 16-포인트 radix-4 변환기(201)내의 스위치(SW1-SW3)의 출력(D0-D3)은 클럭신호(CLK)의 타이밍에 따라 도 11과 같이 된다.
상술한 바와같이, 16-포인트 radix-4 변환기(201)는 4클럭주기마다 버터플라이 연산기(202)로 동일한 데이타를 4번까지 인가하여 입력데이타(DIN)를 재배치한다.
도 12는 상기 16-포인트 radix-4 변환기(201)에서 재배치된 데이타를 입력받아 버터플라이연산을 수행하는 radix-4 버터플라이 연산기(202)의 일 실시예이다. 상기 radix-4 버터플라이 연산기(202)는 다수의 가산기/감산기(60-65)와 스위치(SW4-SW7)로 구성되며, 파이프라인드구조를 갖는 FFT/역(Inverse)FFT프로세서에 모두 사용 가능하다.
상기 가산기/감산기(60-65)는 선택단자(S)로 입력되는 제어신호가 0일때는 가산기로 동작되고, 제어신호가 1일때는 감산기로서 동작된다. 그리고, 모드제어신호(INV)는 FFT모드일 때는 0이고, IFFT모드일때는 1이다.
클럭신호(CLK)의 타이밍이 12T(m=0)일 때, 16-포인트 radix-4 변환기(201)에서 출력되는 데이터는 d0,d12,d8,d4이고, 컨트롤러(203)에서 출력되는 제어신호(s4,s5,s6)는 0,0,0가 된다. 따라서, FFT모드일 때 버터플라이 연산기(202)의 출력[re(out),im(out)]은 (테이블 2)에 도시된 제어신호(s4,s5,s6)의 레벨에 따라 식(6)과 같이 된다.
(테이블 2)
FFT모드(INV=0)
m | s1 | s2 | s3 |
0 | 0 | 0 | 0 |
1 | 1 | 0 | 0 |
2 | 1 | 1 | 0 |
3 | 1 | 1 | 1 |
re(out) = re(d0) + re(d12) + re(d8) + re(d4)
im(out) =im(d8) + im(d4) + im(d0) + im(d12).....식(6)
그 결과 상기 식(6)의 연산결과는 식(2)와 동일하게 된다. 이때, 각 가산기/감산기(60-65)는 선택단자(S)로 입력되는 0,0,0의 제어신호(s4,s5,s6)에 따라 가산기로 동작된다.
16T일때(m=1), 16-포인트 radix-4(201) 변환기에서 출력되는 데이터는 d4,d0,d12,d8이고, 컨트롤러(203)에서 출력되는 제어신호(s4,s5,s6)는 1,0,1이 된다. 따라서, FFT모드일 때 버터플라이 연산기(202)의 출력[re(out),im(out)]은 다음과 같다.
re(out) = im(d4) + re(d0) - im(d12) - re(d8)
im(out) =re(d12) - im(d8) - re(d4) + im(d0)..........식(7)
그리고, 20T일때(m=2),상기 버터플라이 연산기(202)의 입력은 d8, d4,d0,d12가 되고, 출력[re(out),im(out)]은 다음과 같다.
re(out) = re(d8) - re(d4) + re(d0) - re(d12)
im(out) =im(d0) - im(d12) + im(d8) - im(d4)........식(8)
마지막으로, 24T일때(m=3),상기 버터플라이 연산기(202)의 입력은 d12, d8, d4,d0이 되고, 출력[re(out),im(out)]은 다음과 같다.
re(out) = im(d12) - re(d8) - im(d4) + re(d0)
im(out) =re(d4) + im(d0) - re(d12) - im(d8).......식(9)
그 결과, 상기 3가지는 각각 상기 식(3-5)와 동일하게 된다.
8192-포인트의 FFT를 계산하기 위해서는, 전술한 바와같와 같이, 6개의 radix-4 스테이지와 마지막으로 1개의 radix-2 스테이지가 필요하다. 따라서, radix-4 스테이지에서, 주요 파라미터들을 스테이지에 맞게 변환함으로써 도 13에 도시된 바와같이 6 스테이지까지 구성할 수 있다.
스테이지1에서 16-포인트 radix-4 변환기(201)는 2K(2048)의 레이턴시(Latency)를 갖는 6개의 지연부(50-55)로 구성되고, 컨트롤러(203)에서 발생되는 제어신호(s1-s6)는 2K(2048)의 주기를 갖는다. 또한, 트위들요소를 저장하는 롬(204)은 1+j0를 포함하여 16개로 구성되며, 롬 어드레스는 512클럭마다 증가된다. 마찬가지로, 스테이지 2∼스테이지 6에서도 상기 도 13에 도시된 규칙에 따라 파라미터가 변동된다.
도 14는 도 8에 도시된 radix-2 버터플라이부(108)의 개략도로서, radix-2 변환기(301), radix-2 버터플라이연산기(302) 및 컨트롤러(303)로 구성된다. 상기 radix-2 연산구조에서는 트위들요소가 사용되지 않기 때문에, ROM과 복소수곱셈기는 사용되지 않는다.
상기 radix-2 변환기(301)는 도 15에 도시된 바와같이, 하나의 레지스터로 이루어진 2개의 지연기(70),(71)와 하나의 스위치(SW8)로 구성되며, 상기 버터플라이 연산기(302)는 도16에 도시된 바와같이 제어신호(S)에 따라 radix-2 변환기(301)의 출력을 가산/감산하는 2개의 가산/감산기(72),(73)로 구성된다. 상기 가산기/감산기(72-73)는 선택단자(S)로 입력되는 제어신호가 0일때는 가산기로 동작되고, 1일때는 감산기로 동작된다.
8K/2K-포인트 겸용 FFT 메카니즘
도 8에 도시된 바와 같이, 2K-포인트의 연산은 별도의 하드웨어를 추가하지 않고, 8K-포인트의 연산에서 첫 번째 radix-4 Stage 즉 버터플라이부(101)를 생략하면 된다. 또한, 2K-포인트의 연산에서 롬 어드레스는 8K-포인트연산의 1/4만 발생시킨다.
즉, 2K-포인트의 연산에서는 트위들요소를 변경시켜야 하는데, 이것은 각 스테이지마다 8K-포인트에서 사용된 롬 어드레스의 상위 1/4과 같다. 그 결과, 2K-포인트에서 스테이지1의 트위들요소는 8K-포인트에서 스테이지2의 64개의 롬중에서 상위 16개의 롬에 저장된 트위들요소와 동일하다. 따라서, 8K-포인트의 경우 컨트롤러(203)는 128클럭을 카운팅하여 64개의 롬 어드레스를 발생시키기 때문에(128×64), 2K에서는 128클럭마다 16개의 롬 어드레스를 발생하도록 변경하면 된다(128×16). 또한, 2K-포인트의 경우 컨트롤러(203)는 다른 스테이지에서도 8K-포인트에서 발생하는 롬 어드레스의 상위 1/4을 발생시킨다.
FFT/IFFT 겸용 FFT 메카니즘
역(Inverse) 이산 푸리에변환(DFT)의 방정식은 다음과 같이 식(1)에 도시된 순방향(direct) DFT방정식에서 복소수의 허수부분의 부호를 바꾸어주면 된다.
x(n) = , n=o,1,.....,N-1 ---------식(10)
이때, WN은이다. 그리고, 도 17은 상기 식(10)을 Radix-4 버터플라이부로 표현한 신호 흐름도로서 다음과 같이 나타낼 수 있다.
x[0,a]= X[k]+X[k+N/4]+X[k+N/2]+X[k+3N/4]--식(11)
x[1,a]= X[k]+jX[k+N/4]-X[k+N/2]-jX[k+3N/4]--식(12)
x[2,a]= X[k]-X[k+N/4]+X[k+N/2] -X[k+3N/4]--식(13)
x[3,a]= X[k]-jX[k+N/4]-X[k+N/2]+jX[k+3N/4]--식(14)
상기 식 (11-14)과 전술한 식 (2-5)을 비교하면, FFT연산과 IFFT연산은 복소수의 허수부분의 부호가 다름을 알 수 있다. 따라서, 상기 특성을 이용하여 IFFT를 하드웨어로 구현하려면, 도 17에 도시된 바와 같이, 먼저, ① radix-4 버터플라이 연산기(202)의 계수들을 Complex conjugate(j→-j)시켜야 된다. 그 다음으로 ② 트위들요소의 허수부분의 부호를 바꾸어야 한다(WN n→WN -n)
먼저, ①의 경우는 도 12에 도시된 바와같이, radix-4 버터플라이 연산기(202)를 IFFT모드에서 동작시키면 된다. 즉, 모드제어신호(INV)를 1로 세팅하고 컨트롤러(203)에서 출력되는 제어신호(s4,s5,s6)를 가변시킨다. 이때, IFFT모드에서 제어신호(s4,s5,s6)의 레벨은 (테이블 3)에 도시되어 있다.
(테이블 3)
IFFT모드(INV=1)
m | s1 | s2 | s3 |
0 | 0 | 0 | 0 |
1 | 1 | 1 | 0 |
2 | 0 | 1 | 1 |
3 | 1 | 0 | 1 |
따라서, (테이블 2)와 (테이블 3)에서 FFT모드와 IFFT모드시의 제어신호의 레벨을 비교해보면, m=1인 경우의 제어신호(s4,s5,s6)와 m=3인 경우의 제어신호(s4,s5,s6)가 서로 바뀌어 졌음을 알수 있다. 따라서, IFFT모드시 컨트롤러(203)는 m=1인 경우의 제어신호(s4,s5,s6)와 m=3인 경우의 제어신호(s4,s5,s6)를 서로 바꾼 후 모드선택신호(inv=1)를 변경해주면 된다.
또한, ②의 경우에서 롬에 저장된 트위들요소의 허수부분을 2의 보수로 변환시키려면 별도의 가산기가 필요하다(-a=/a+1), 그러나, 본 발명은 별도의 가산기를 추가하지 않고 단지 복소수 곱셈기(205)를 변화시킴으로써, 하드웨어와 타이밍에서의 손실을 줄일 수 있다. 즉, 도 18에 도시된 바와같이 FFT모드시 복소수 곱셈기(205)의 가산기/감산기(80),(81)를 IFFT모드시에는 가산기/감산기(82),(83)와 같이 변경하면 된다. 이것은 선택단자(S)로 입력되는 제어신호를 변경시켜, FFT모드에서 감산기로 동작되던 가산기/감산기(80)를 IFFT모드에서는 가산기로 동작시키고, 가산기로 동작되던 가산기/감산기(81)를 IFFT모드에서는 감산기로 동작시킴으로써 달성된다. 상기 복소수 곱셈기(205)의 변경은 im(ROM)의 값이 -im(ROM)으로 바뀐다는 아이디어에서 착안한 것이다.
수렴(Convergent) 블록 부동점(CBFP) 메카니즘
상술한 바와같이, FFT프로세서를 설계하면 고정점(fixed-point)의 곱셈 및 가산과 같은 연산으로 인하여 결과 데이타의 비트수가 증가하게 된다. 이때, 연산결과의 정확성을 유지하기 위해서는 내부 데이타의 비트수가 클수록 좋지만, 이를 저장하는 메모리의 사이즈 때문에 정확도와 면적사이의 적절한 선택(Tradeoff)이 필요하게 된다.
도 7에 도시된 종래의 블록부동점 메카니즘은 각 스테이지의 모든 데이터를 연산한 후. 그 중에서 가장 큰 값을 기준으로 데이터를 스케일링(Scaling)하는 방법이다. 이 방법은 N개의 모든 데이터가 출력될 때까지 기다려야하기 때문에, 중간데이타의 저장을 위하여 메모리가 필요하며 타이밍측면에서 매우 비효율적이다. 또한, 상기 블록 부동점 메카니즘은 FFT연산결과의 정확도를 높여주기는 하지만, 큰 포인트의 FFT연산과 같이 블록이 큰 경우(다단의 버터플라이 연산)는 정확도가 크게 향상되지 못하는 단점이 있다. 따라서, 본 발명은 고정점 데이타의 연산에 부동점의 개념을 도입하여 연산데이타의 정확도를 향상시킬 수 있도록 하였다.
도 19에는 8K-포인트 radix-4 FFT연산의 데이터 처리과정이 도시되어 있다.
도 19에 도시된 바와같이, 스테이지2의 첫 번째 N/4출력의 연산은 스테이지1의 첫 번째 N/4출력에만 의존하는 것을 볼수 있다. 이 것은 도 4에 도시된 바와같이 스테이지2의 출력인 X〔0〕가 스테이지1의 출력중에서 단지 x'(0,0), x'(0,1)x'(0,2)x'(0,3)에만 의존하는 것으로부터 알 수 있다.
먼저, 종래의 블록 부동점메카니즘에 의해 8K-포인트 입력 x(i)에 대한 계산이 이루어지고, 그 계산에 의해 스테이지1의 상위 N/4결과가 출력되면 스테이지1내에 존재하는 첫 번째 N/4블럭(512비트)에서 가장 큰 값(스케일링지수)을 검출하고, 그 검출된 값을 기준으로 모든 데이터를 스케일링한다. 그리고, 스테이지1에 존재하는 2번째, 3번째의 N/4블럭(512)에 대하여 동일한 과정을 수행한다. 따라서, 스테이지1의 상위 N/4결과가 출력되면 4개의 N/4블럭(512)에 대하여 4개의 스케일링지수가 검출된다.
스테이지2에서는 N/16블럭마다 스케일링지수를 찾아내어 데이터를 처리한다. 따라서, 각 스테이지는 상기와 동일한 방법으로 상기 radix-4버터플라이부의 출력을 스케일링한다. 따라서, 상기 연산결과가 어느 한점으로 수렴하기 때문에 상기와 같은 방법을 수렴 블록부동점(Convergent Block Floating Point)이라 부른다.
도 20은 상기 도 19에 도시된 데이터 처리과정을 구현한 CBFP회로의 블록도이다.
지수검출기(90)는 각 스테이지에서 출력된 데이터로부터 지수를 검출한다. 즉, 입력데이타의 비트수가 'd'이고, 롬의 출력데이타가 'r'비트라 가정하면, 복소수 곱셈기(205)의 출력 데이터는 'd+r'비트가 된다. 이것을 싸인비트(sign bit)와 동일한 '0' 또는 '1'로 카운팅한 후 지수를 결정한다. 예를들면, 부동점 데이터인 1.xxxx × 10-5에서 -5만을 검출한다.
스케일링 지수결정기(91)는 지수검출기(90)로부터 입력된 지수를 임시 지수(index_tmp)로 저장하고, 그 저장된 임시 지수(index_tmp)를 다음의 임시 지수(index_tmp)와 비교하여 둘 중에서 작은 값을 취한다. 그 결과, 하나의 기준프레임에 대하여 상기 과정을 거치면 가장 작은 지수가 스케일링지수(index)로서 결정된다. 이때, 입력데이타 x(i)가 8K라고 가정하면, 스테이지1의 상위 N/4출력의 기준프레임은 각각 512비트가 되고, 스테이지2의 상위 N/4출력의 기준프레임은 각각 128비트가 된다. 마찬가지로, 스테이지3∼스테이지7도 상기와 같은 규칙으로 기준 프레임이 설정된다. 지연기(92)는 지수검출기(90)와 스케일링 지수결정기(91)가 동작되는 동안 복소수 곱셈기(205)에서 출력된 'd+r'비트의 데이터를 지연시키고, 디코더(93)은 상기 지연기(92)에서 지연된 'd+r'비트의 데이터를 상기 스케일링 지수결정기(91)에서 결정된 스케일링지수(Index)로 디코딩한다. 그 결과, 각 프레임마다 복소수 곱셈기(205)에서 출력된 데이터가 가장 작은 임시 스케일링지수(가장 큰 데이터)를 기준으로 프레임데이타가 스케일링된다.
도 21은 스테이지2-스테이지7에서 검출된 스케일링 지수(index2-index7)를 누적하기 위한 개략도이다. 각 스테이지에서 검출된 스케일링 지수(index2-index7)는 지연기와 가산기를 통해 순차 누적되어 최종 스케일링 지수(Index)가 된다. 따라서, 디코더(109)는 마지막 스테이지7의 CBFP회로(CBFP7)에서 출력된 데이터를 최종 스케일링지수(Index)로 보상하여 최종 출력데이타(DOUT)를 구한다.
그런데, Stage1에는 상기 CBFP회로가 첨가되지 않았다. 그 이유는 도 19에 도시된 바와같이 스테이지1에서는 모든 입력데이타에 대한 N출력이 계산된 후에 스케일링계수가 검출되기 때문에 종래의 BFP와 동일한 역할을 하게 된다. 또한, 스테이지1에서는 CBFP회로가 정확도의 향상에 큰 영향을 미치지 않기 때문에, 전체 하드웨어 면적을 최적화하기 위하여 생략하였다.
도 22는 본 발명에 따른 CBFP알고리즘을 갖는 2K-/8K-포인트, 직접/역 겸용 파이프라인드 FFT프로세서의 전체 블록도이다. 그리고, 각 부의 동작은 이미 기술되었기 때문에 상세한 설명은 생략하기로 한다.
본 발명에서 선행된 실시예들은 단지 한 예로서 청구범위를 한정하지 않으며, 여러가지의 대안, 수정 및 변경들이 통상의 지식을 갖춘자에게 자명한 것이 될 것이다.
상술한 바와같이, 본 발명은 개선된 파이프라인드 구조를 제공하여, 종래 입력데이타의 재배치와 중간데이타의 저장을 위해 사용되던 부가적인 하드웨어(램, 어드레스발생기)를 제거함으로써, 칩면적을 절감할 수 있으며 연산시간의 효과적인 운용이 가능하다.
그리고, 본 발명은 2K/8K-포인트 및 FFT/IFFT겸용이 가능한 FFT프로세서를 구현함으로써, 별도의 하드웨어를 추가하지 않고도 다기능의 프로세서를 구현할 수 있는 효과가 있다.
또한, 본 발명은 수렴블럭 부동점회로를 구현하여 종래의 블록 부동점회로에 비하여 출력데이타의 정확도를 향상시킬 수 있는 효과가 있다.
Claims (11)
- 입력 데이타를 역다중화하는 역다중화기와;상기 역다중화기의 출력을 순차적으로 버터플라이 연산하는 제1 내지 제6 radix-4연산회로와;상기 제1,제2 radix-4연산회로사이에 접속되어, 상기 역다중화기 또는 제1 radix-4 연산회로의 출력을 선택하여 상기 제2 radix-4 연산회로에 출력하는 다중화기와;상기 제6 radix-4연산회로의 출력을 버터플라이 연산하는 radix-2연산회로와;상기 radix-4연산회로들과 radix-2연산회로의 출력단자에 접속되어 연산결과를 스케일링하는 수렴블록 부동점회로와;상기 수렴블록 부동점회로에서 출력된 스케일링지수를 누적 가산하는 가산회로와;상기 가산회로에서 출력된 스케일링지수에 따라 상기 radix-2연산회로의 출력을 스케일링하는 디코더로 구성된 것을 특징으로 하는 CBFP알고리즘을 갖는 FFT프로세서
- 제1항에 있어서, 다중화기는 입력데이타가 8K-포인트일 때는 제1 radix-4연산회로의 출력을 선택하고, 입력데이타가 2K-포인트일 때는 역다중화기의 출력을 선택하게 구성된 것을 특징으로 하는 CBFP알고리즘을 갖는 FFT프로세서.
- 제1항에 있어서, radix-4연산회로는클럭신호를 카운트하여 제1 내지 제6제어신호와 롬 어드레스를 출력하는 제1컨트롤러와;상기 제1 내지 제3제어신호에 따라 입력 데이타를 재배열하여 제1 내지 제4출력을 발생하는 radix-4변환기와;상기 radix-4변환기의 출력을 입력받아, 상기 제4 내지 제6제어신호에 따라 버터플라이연산을 수행하는 radix-4버터플라이 연산기와;트위들요소가 저장된 롬과;상기 radix-4버터플라이 연산기의 연산결과와 롬에서 출력된 트위들요소를 승산하는 복소수 곱셈기로 구성된 것을 특징으로 하는 CBFP알고리즘을 갖는 FFT프로세서.
- 제3항에 있어서, 제1컨트롤러는 클럭신호를 카운트하여, 클럭신호의 타이밍이 12T가 되는 시점에서 4클럭마다 제1 내지 제3제어신호 및 제4 내지 제6제어신호의 레벨을 제1 내지 제4타입으로 가변시키며, 클럭신호의 타이밍이 28T가 되는 시점에서 리셋되게 구성된 것을 특징으로 하는 CBFP알고리즘을 갖는 FFT프로세서.
- 제3항에 있어서, 상기 radix-4변환기는입력 데이터를 순차 지연시키는 제1.제2지연기와;상기 제2지연기의 출력을 지연시켜 제1출력을 발생하는 제3지연기와;상기 제3지연기의 출력을 순차 지연시키는 제4 내지 제6지연기와;제1제어신호에 따라 입력 데이터 또는 상기 제4지연기의 출력을 스위칭하여 제2출력을 발생하는 제1스위치와;제2제어신호에 따라 상기 제1지연기 또는 제5지연기의 출력을 스위칭하여 제3출력을 발생하는 제2스위치와;제3제어신호에 따라 상기 제2지연기 또는 제6지연기의 출력을 스위칭하여 제4출력을 발생하는 제3스위치로 구성된 것을 특징으로 하는 CBFP알고리즘을 갖는 FFT프로세서.
- 제7항에 있어서, 제1 내지 제6지연기는 4개의 레지스터로 구성되며, 제1 내지 제3스위치는 제1 내지 제3제어신호가 각각 0일 때 입력 데이터, 제1지연기 및 제 2지연기의 출력을 스위칭하게 구성된 것을 특징으로 하는 CBFP알고리즘을 갖는 FFT프로세서.
- 제3항에 있어서, radix-4버터플라이 연산기는제4제어신호에 따라 제1출력의 실수 또는 허수부를 출력하는 제4스위치와;제4제어신호에 따라 제3출력의 실수 또는 허수부를 출력하는 제5스위치와;제5제어신호에 따라 제4스위치의 출력과 제2출력의 실수부를 연산하는 제1가산기/감산기와;제5제어신호에 따라 제5스위치의 출력과 제4출력의 실수부를 연산하는제2가산기/감산기와;제6제어신호에 따라 제4스위치의 출력과 제2출력의 허수부를 연산하는 제3가산기/감산기와;제6제어신호에 따라 제5스위치의 출력과 제4출력의 허수부를 연산하는 제4가산기/감산기와;모드제어신호에 따라 제1,제2가산기/감산기의 출력을 스위칭하는 제6스위치와;모드제어신호에 따라 제3,제4가산기/감산기의 출력을 스위칭하는 제7스위치와;제4제어신호에 따라 제6스위치의 출력을 연산하는 제5가산기/감산기와;제4제어신호에 따라 상기 제7스위치의 출력을 연산하는 제6가산기/감산기로 구성된 것을 특징으로 하는 CBFP알고리즘을 갖는 FFT프로세서.
- 제1항에 있어서, radix-2연산회로는제어신호를 출력하는 제2컨트롤러와;제어신호에 따라 입력 데이타를 재배열하는 radix-2변환기와;radix-2변환기의 출력을 입력받아, 제어신호에 따라 버터플라이연산을 수행하는 radix-2버터플라이 연산기로 구성된 것을 특징으로 하는 CBFP알고리즘을 갖는 FFT프로세서.
- 제14항에 있어서, radix-2변환기는입력데이터를 지연시켜 제1출력을 발생하는 제7지연기와;상기 제7지연기의 출력을 지연시키는 제8지연기와;제어신호에 따라 입력데이타 또는 상기 제8지연기의 출력을 스위칭하여 제2출력을 발생하는 제8스위치로 구성된 것을 특징으로 하는 CBFP알고리즘을 갖는 FFT프로세서.
- 제14항에 있어서, radix-2버터플라이 연산기는제어신호에 따라 제1,제2출력의 실수부를 연산하는 제1가산기/감산기와;제어신호에 따라 제1,제2출력의 허수부를 연산하는 제2가산기/감산기로 구성된 것을 특징으로 하는 CBFP알고리즘을 갖는 FFT프로세서.
- 제1항에 있어서, 수렴블록 부동점회로는입력 데이터로부터 지수를 검출하는 지수검출기와;상기 지수검출기의 출력을 임시 지수로 저장하고, 그 저장된 임시 지수를 다음에 순차 입력되는 임시 지수와 비교하여 둘 중에서 작은 값을 기준프레임에 대한 스케일링 지수로 결정하는 스케일링 지수결정기와;상기 입력 데이터를 지연시키는 지연기와;상기 지연기의 출력을 스케일링 지수결정기에서 결정된 스케일링지수로 디코딩하는 디코더로 구성된 것을 특징으로 하는 CBFP알고리즘을 갖는 FFT프로세서.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019990000562A KR100313501B1 (ko) | 1999-01-12 | 1999-01-12 | Cbfp알고리즘을 갖는 fft프로세서 |
US09/303,688 US6366936B1 (en) | 1999-01-12 | 1999-05-03 | Pipelined fast fourier transform (FFT) processor having convergent block floating point (CBFP) algorithm |
DE19934226A DE19934226A1 (de) | 1999-01-12 | 1999-07-21 | Analog-Digital-Hybrid-DLL |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019990000562A KR100313501B1 (ko) | 1999-01-12 | 1999-01-12 | Cbfp알고리즘을 갖는 fft프로세서 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20000050581A KR20000050581A (ko) | 2000-08-05 |
KR100313501B1 true KR100313501B1 (ko) | 2001-11-07 |
Family
ID=19571063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019990000562A KR100313501B1 (ko) | 1999-01-12 | 1999-01-12 | Cbfp알고리즘을 갖는 fft프로세서 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6366936B1 (ko) |
KR (1) | KR100313501B1 (ko) |
DE (1) | DE19934226A1 (ko) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6963891B1 (en) * | 1999-04-08 | 2005-11-08 | Texas Instruments Incorporated | Fast fourier transform |
FR2794921B1 (fr) * | 1999-06-14 | 2001-09-14 | St Microelectronics Sa | Procede et dispositif de transformation de donnees reelles en symboles complexes, notamment pour la reception de porteuses modulees en phase et en amplitude et transmises sur une ligne telephonique |
US6658441B1 (en) * | 1999-08-02 | 2003-12-02 | Seung Pil Kim | Apparatus and method for recursive parallel and pipelined fast fourier transform |
US7010558B2 (en) * | 2001-04-19 | 2006-03-07 | Arc International | Data processor with enhanced instruction execution and method |
AU2002332820A1 (en) * | 2001-09-01 | 2003-03-18 | Bermai, Inc. | Ram-based fast fourier transform unit for wireless communications |
US6765419B2 (en) * | 2002-03-11 | 2004-07-20 | Infineon Technologies Ag | Dynamic delay line control |
EP1426872A3 (en) * | 2002-12-03 | 2006-02-22 | STMicroelectronics Ltd. | Linear scalable FFT/IFFT computation in a multi-processor system |
TWI281619B (en) * | 2002-12-20 | 2007-05-21 | Realtek Semiconductor Corp | Data processing structure and method for fast Fourier transformation/inverse fast Fourier transformation |
EP1447752A3 (en) * | 2003-02-17 | 2006-02-22 | STMicroelectronics Pvt. Ltd | Method and system for multi-processor FFT/IFFT with minimum inter-processor data communication |
US7561511B1 (en) * | 2003-06-24 | 2009-07-14 | Staccato Communications, Inc. | Configurable OFDM transceiver |
US8694510B2 (en) * | 2003-09-04 | 2014-04-08 | Oracle International Corporation | Indexing XML documents efficiently |
KR100825771B1 (ko) * | 2004-02-11 | 2008-04-28 | 삼성전자주식회사 | 메모리를 반감하는 고속 푸리에 변환 프로세서 및 그 방법 |
US7437396B2 (en) * | 2004-03-31 | 2008-10-14 | Intel Corporation | Apparatus and method for generating transforms |
TWI237773B (en) * | 2004-06-24 | 2005-08-11 | Univ Nat Chiao Tung | Fast fourier transform processor and dynamic scaling method thereof and radix-8 fast Fourier transform computation method |
US7496618B2 (en) * | 2004-11-01 | 2009-02-24 | Metanoia Technologies, Inc. | System and method for a fast fourier transform architecture in a multicarrier transceiver |
US7529789B2 (en) * | 2004-11-01 | 2009-05-05 | Metanoia Technologies, Inc. | Method for representing complex numbers in a communication system |
KR100668674B1 (ko) * | 2005-12-10 | 2007-01-12 | 한국전자통신연구원 | 고속 푸리에 변환 장치 및 고속 푸리에 변환 방법 |
KR100667188B1 (ko) * | 2005-12-10 | 2007-01-12 | 한국전자통신연구원 | 고속 푸리에 변환 장치 및 고속 푸리에 변환 방법 |
US7925686B2 (en) * | 2005-12-19 | 2011-04-12 | Rambus Inc. | Linear transformation circuit |
TWI307227B (en) * | 2006-01-09 | 2009-03-01 | Via Tech Inc | A fft processor, an implement method thereof and an ofdm processor using the same |
TW200828044A (en) * | 2006-12-21 | 2008-07-01 | Univ Nat Chiao Tung | Pipeline structure reconfigurable mixed-radix Fast Fourier Transform |
GB2448755B (en) * | 2007-04-27 | 2009-03-25 | Univ Bradford | FFT processor |
US7675847B2 (en) | 2007-07-10 | 2010-03-09 | Wipro Limited | Hardware implementation of a programmable FFT based on a half length FFT core |
KR100929393B1 (ko) * | 2007-07-26 | 2009-12-02 | 연세대학교 산학협력단 | 4×4 다중입출력 직교주파수분할다중화 무선랜 시스템을위한 고속푸리에변환 방법 및 그 장치 |
FR2960990B1 (fr) * | 2010-06-07 | 2015-08-21 | Commissariat Energie Atomique | Processeur de traitement de donnees numeriques a operateur papillon en pipeline pour l'execution d'une fft/ifft et dispositif de telecommunication |
KR102356708B1 (ko) | 2017-09-28 | 2022-01-27 | 삼성전자주식회사 | 컨볼루션 연산을 수행하는 연산 장치 및 연산 방법 |
KR20190052893A (ko) | 2017-11-09 | 2019-05-17 | 삼성전자주식회사 | 뉴럴 네트워크 연산을 위한 전처리 장치 및 방법 |
CN109614151B (zh) * | 2018-11-14 | 2023-02-28 | 上海无线电设备研究所 | 一种四核并行的大点数脉压数据处理方法 |
CN111580867B (zh) * | 2020-04-30 | 2023-07-18 | 中国科学院微电子研究所 | 一种用于fft运算的块浮点处理方法及装置 |
CN113485671B (zh) * | 2021-07-06 | 2024-01-30 | 北京中科芯蕊科技有限公司 | 一种click控制器以及异步微流水线数据流控制器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5163017A (en) | 1990-03-23 | 1992-11-10 | Texas Instruments Incorporated | Pipelined Fast Fourier Transform (FFT) architecture |
US5481488A (en) | 1994-10-21 | 1996-01-02 | United Microelectronics Corporation | Block floating point mechanism for fast Fourier transform processor |
-
1999
- 1999-01-12 KR KR1019990000562A patent/KR100313501B1/ko not_active IP Right Cessation
- 1999-05-03 US US09/303,688 patent/US6366936B1/en not_active Expired - Lifetime
- 1999-07-21 DE DE19934226A patent/DE19934226A1/de not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
KR20000050581A (ko) | 2000-08-05 |
DE19934226A1 (de) | 2000-07-13 |
US6366936B1 (en) | 2002-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100313501B1 (ko) | Cbfp알고리즘을 갖는 fft프로세서 | |
Jia et al. | A new VLSI-oriented FFT algorithm and implementation | |
Cheng et al. | High-throughput VLSI architecture for FFT computation | |
US6917955B1 (en) | FFT processor suited for a DMT engine for multichannel CO ADSL application | |
CN101847986B (zh) | 一种实现fft/ifft变换的电路及方法 | |
US5491652A (en) | Fast Fourier transform address generator | |
US4899301A (en) | Signal processor for rapidly calculating a predetermined calculation a plurality of times to typically carrying out FFT or inverse FFT | |
Wang et al. | Design of pipelined FFT processor based on FPGA | |
KR100492091B1 (ko) | 프로그래머블 프로세서에서의 고속 푸리에 변환 연산회로및 연산방법 | |
Revanna et al. | A scalable FFT processor architecture for OFDM based communication systems | |
Chen et al. | Energy-efficient architecture for stride permutation on streaming data | |
US7246143B2 (en) | Traced fast fourier transform apparatus and method | |
Choi et al. | A 2048 complex point FFT architecture for digital audio broadcasting system | |
US8010588B2 (en) | Optimized multi-mode DFT implementation | |
Sankaran et al. | Design and Implementation of 1024 Point Pipelined Radix 4 FFT Processor on FPGA for Biomedical Signal Processing Applications | |
Hazarika et al. | Low-complexity continuous-flow memory-based FFT architectures for real-valued signals | |
US9582473B1 (en) | Instruction set to enable efficient implementation of fixed point fast fourier transform (FFT) algorithms | |
Mahesh et al. | Performance evaluation of FFT through Adaptive Hold Logic (AHL) booth multiplier | |
More et al. | FPGA implementation of FFT processor using vedic algorithm | |
Vergara et al. | A 195K FFT/s (256-points) high performance FFT/IFFT processor for OFDM applications | |
Meletis et al. | High-speed pipeline implementation of radix-2 DIF algorithm | |
Mohan et al. | Implementation of N-Point FFT/IFFT processor based on Radix-2 Using FPGA | |
Ghissoni et al. | Radix-2 decimation in time (DIT) FFT implementation based on a matrix-multiple constant multiplication approach | |
Shokry et al. | A dynamically configurable-radix pipelined FFT algorithm for real time applications | |
Tiwari et al. | FPGA Implementation of FFT Processor in Xilinx |
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: 20050923 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |