KR20110081971A - 이산 푸리에 변환 계수의 행렬을 계산하는 방법 및 장치 - Google Patents
이산 푸리에 변환 계수의 행렬을 계산하는 방법 및 장치 Download PDFInfo
- Publication number
- KR20110081971A KR20110081971A KR1020117008014A KR20117008014A KR20110081971A KR 20110081971 A KR20110081971 A KR 20110081971A KR 1020117008014 A KR1020117008014 A KR 1020117008014A KR 20117008014 A KR20117008014 A KR 20117008014A KR 20110081971 A KR20110081971 A KR 20110081971A
- Authority
- KR
- South Korea
- Prior art keywords
- frame
- rotation factor
- matrix
- calculation
- real
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 239000011159 matrix material Substances 0.000 claims abstract description 112
- 238000004364 calculation method Methods 0.000 claims abstract description 95
- 230000006870 function Effects 0.000 claims description 26
- 230000015654 memory Effects 0.000 claims description 9
- 238000009825 accumulation Methods 0.000 claims description 4
- 239000000284 extract Substances 0.000 claims 1
- 230000014509 gene expression Effects 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000003595 spectral effect Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
Images
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
-
- 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
-
- 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/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Abstract
이산 주파수 이산 푸리에 변환(DFT) 계수의 행렬을 계산하는 방법을 제공한다. 본 방법은 (a) 샘플의 제1 프레임(10)에 대하여, 이산 시간 신호의 샘플의 프레임에 회전 인자 행렬(F1, F2)을 곱하여, 제1 프레임에 대한 DFT 계수의 행렬을 계산하는 단계, 샘플의 프레임(b) 중의 뒤의 절반에 회전 인자 행렬의 우측 절반(F2)을 곱한 계산 결과를 기억하는 단계를 수행하며, (b) 샘플의 후속하는 프레임에 대하여, 후속하는 프레임의 선행 프레임에 대하여 절반이 중첩되고, (i) 선행하는 프레임으로부터 미리 기억한 계산을 인출하고, 제2 프레임마다 미리 기억된 계산의 부호를 반전시키는 단계와,(ii) 샘플의 현재 프레임의 뒤의 절반에 회전 인자 행렬의 우측 절반을 곱하고, 그 계산 결과를 기억시키는 단계, 및 (iii) 단계 (i)와 단계 (ii)의 결과를 가산하는 단계를 포함한다.
Description
본 발명은 이산 푸리에 변환(DFT: discrete Fourier transform)을 사용하여 이산 시간 시퀀스를 처리하는 것에 관한 것으로서, 특히 DFT 계수의 계산에 관한 것이다.
푸리에 변환(Fourier transform)은 신호를 처리할 때에 기본적으로 사용된다. 이러한 푸리에 변환에 의하면, 최초의 시간 영역 신호로부터 주파수 영역 표현을 만들 수 있다. 디지털 신호 처리(DSP: digital signal processing)에서, 신호는 이산 시간 시퀀스로 표현되며, 푸리에 변환의 특별한 형태인 이산 푸리에 변환(DFT)이 사용된다. 1965년에, 쿨리(Cooley)와 투키(Tukey)는 소프트웨어로 DFT를 생성하는 고속 푸리에 변환(FFT: fast Fourier transform)이라고 불리는 효율적인 알고리즘을 제안했다. 이들이 만든 알고리즘은 광범위하게 사용되었으며, 현재 FFT라는 용어는 DFT의 계산을 위한 소프트웨어 알고리즘을 의미하는 것으로 되었다.
통상적으로, DSP 알고리즘의 복잡도(complexity)는 그 구현에 얼마나 많은 곱셈(multiplication)이 필요한지에 의해 정해진다. 이와 관련해서, 곱셈 계수가 DSP 함수에서 가장 일반적으로 사용되는 복소수 연산인 것으로 사용되며, 따라서 단일 프로세서 컴퓨터에서의 알고리즘 실행 시간의 최상의 표현을 제공할 수 있다. 하드웨어 구성의 효율성을 고려하면, 곱셈의 횟수보다는 산술 요소(arithmetic element) 사이에서 요구되는 통신(communication)의 복잡도에 기초해서 알고리즘이 평가된다. FFT 알고리즘은 선택된 곱셈의 횟수를 감소시키기 위해 버터플라이 블록(butterfly block)을 사용하지만, 하드웨어 구성을 고려하면, 상호접속 및 구성의 제어부가 복잡하고, 구현에 필요한 하드웨어 리소스가 중요하게 된다. 따라서, 현재의 FFT 타입의 알고리즘은 필드 프로그램가능한 게이트 어레이(FPGA: field programmable gate array) 구성에는 특별히 적합하지는 않다. 또한, FPGA에서 DFT의 일부 직접적인 구현은 상당히 간단하지만, 일반적으로 레이턴시(latency)가 길다.
따라서, FPGA 구성과 같은 하드웨어로 구현할 경우, 하드웨어 리소스를 절약하고 및/또는 레이턴시를 최소로 하는 DFT 계수를 계산하는 방법을 제공하는 것이 바람직하다. 또한, 공지의 DFT 계수 계산 방법의 하나 이상의 단점 또는 문제점을 해결하는 DFT 계수의 행렬을 계산하는 방법을 제공하는 것이 바람직하다.
본 발명의 하나의 관점은 이산 주파수 이산 푸리에 변환(Discrete Fourier Transform: DFT) 계수(coefficient)의 행렬(matrix)을 계산하는 방법을 제공하는데, 본 방법은,
(a) 샘플의 제1 프레임에 대하여,
이산 시간 신호(discrete-time signal)의 샘플의 프레임에 회전 인자 행렬(twiddle factor matrix)을 곱(multiply)하여, 상기 제1 프레임에 대한 DFT 계수의 행렬을 계산하는 단계, 및
상기 샘플의 프레임 중의 뒤의 절반(second half)에 상기 회전 인자 행렬의 우측 절반(right half)을 곱한 계산 결과를 기억하는 단계를 수행하며,
(b) 상기 샘플의 후속하는 프레임에 대하여, 상기 후속하는 프레임이 선행하는 프레임에 대하여 절반이 중첩되고,
(i) 선행하는 프레임으로부터 미리 기억한 계산을 인출(retrieve)하고, 제2 프레임마다 상기 미리 기억된 계산의 부호(sign)를 반전(invert)시키는 단계,
(ii) 상기 샘플의 현재 프레임의 뒤의 절반에 상기 회전 인자 행렬의 우측 절반을 곱하고, 그 계산 결과를 기억시키는 단계, 및
(iii) 상기 단계 (i)와 단계 (ii)의 결과를 가산(add)하는 단계를 포함한다.
상기 설명한 방법은, 회전 인자 행렬이 대칭(symmetrical) 특성을 가짐으로써, 이산 시간 신호의 샘플의 연속하는 프레임의 절반이 중첩되는, 선행하는 프레임에 대하여 구해진 계산으로부터 임의의 프레임에 대한 DFT 계수를 계산하는 데에 필요한 계산을 절반으로 줄이는 장점을 가진다. 이들 계산을 기억하는 메모리 디바이스를 제공함으로써, 본 방법은 FPGA 구현에서 계산 레이턴시(computation latency)를 절반으로 줄일 수 있다. 실수(real) DFT 계수 및 허수(imaginary) DFT 계수가 본 방법에 의해 구현되는 하드웨어 구성에서, 이러한 계산 레이턴시를 4배 감소시킬 수 있다.
본 방법은 주파수 영역에서 DFT 계수에 대하여 윈도우 함수(windowing function)를 실행하기 위해 콘볼루션(convolution)을 사용하는 단계와, 상기 윈도우 함수의 비제로(nonzero) 값을 기억하는 단계를 더 포함할 수 있다. 윈도우 함수는 해밍(Hamming) 윈도우가 될 수 있다. 주파수 영역에서 콘볼루션을 사용함으로써, 윈도우의 샘플을 기억시키기 위한 메모리 요건을 생략할 수 있다. 또한, 최초의 프레임 P가 유보됨으로써, 제1 DFT 계수는 입력 프레임의 참 에너지 값(true energy value)을 제공한다. 이것은 시간 영역 윈도우 방법을 이용하면 개별적으로 계산되어야 하는 많은 디지털 신호 처리(DSP) 알고리즘에서 필요하고 중요한 값이다.
본 발명의 하나 이상의 실시예에서, 본 방법의 단계들은 먼저 실수 회전 인자 값을 포함하는 회전 인자 행렬에 대한 실수 DFT 계수의 행렬을 계산한 다음에, 허수 회전 인자 값을 포함하는 회전 인자 행렬에 대한 허수 DFT 계수의 행렬을 계산할 수 있다.
본 실시예에서, 샘플의 현재 프레임의 뒤의 절반에 회전 인자 행렬의 우측 절반을 곱하는 단계는, 실수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 하나의 절반 부분을 형성하는 실수 회전 인자를 포함하는 곱셈을 수행하는 단계,
상기 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 하나의 절반 부분을 형성하는 허수 회전 인자를 포함하는 곱셈을 수행하는 단계;
실수 회전 인자에 대하여, 상기 실수 회전 인자의 우측 절반의 상부 절반 또는 하부 절반 중의 다른 하나의 절반 부분을 형성하여, 상기 실수 또는 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 상기 하나의 절반 부분에서 대응하는 곱셈으로부터 상기 곱셈 결과를 유추(infer)하는 단계; 및
허수 회전 인자에 대하여, 상기 허수 회전 인자의 우측 절반의 상부 절반 또는 하부 절반 중의 다른 하나의 절반 부분을 형성하여, 상기 실수 또는 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 상기 하나의 절반 부분에서 대응하는 곱셈으로부터 상기 곱셈 결과를 유추하는 단계에 의해 수행될 수 있다.
본 발명의 다른 관점은 이산 푸리에 변환(DFT) 계수의 행렬을 계산하기 위한 장치를 제공한다. 본 발명의 장치는,
샘플의 제1 프레임에 대하여, 상기 제1 프레임에 대한 DFT 계수의 행렬을 계산하기 위해 이산 시간 신호(discrete-time signal)의 샘플의 프레임에 회전 인자 행렬(twiddle factor matrix)을 곱하도록 구성된 계산 블록; 및
상기 샘플의 프레임 중의 뒤의 절반에 상기 회전 인자 행렬의 우측 절반을 곱한 계산 결과를 기억시키기 위한 메모리 디바이스를 포함하며,
상기 계산 블록은, 이전 프레임의 절반을 중첩하는 샘플의 후속하는 프레임에 대하여, (i) 이전 프레임으로부터 미리 기억된 계산을 인출하고, 제2 프레임마다 미리 기억된 계산의 부호를 반전시키며, (ii) 상기 샘플의 현재 프레임의 뒤의 절반에 상기 회전 인자 행렬의 우측 절반을 곱하고, 그 결과의 계산을 기억하고, (iii) 상기 (i) 및 (ii)의 과정에 의해 생긴 결과를 가산하도록 구성된다.
계산 블록은 행렬 곱셈(matrix multiplication)을 수행하기 위한 곱셈-누산(MAC: multiply-accumulate) 블록을 포함할 수 있다.
본 발명의 장치는 상기 장치는 주파수 영역에서 DFT 계수에 윈도우 함수를 실행하기 위한 콘볼루션(convolution) 블록을 더 포함하며, 상기 콘볼루션 블록은, 상기 윈도우 함수의 비제로 값을 기억하기 위한 메모리 유닛; 및 상기 비제로 값을 상기 DFT 계수에 적용하기 위한 곱셈-누산(MAC) 블록을 포함한다.
본 장치는, 샘플의 제1 프레임에 대하여, 실수 회전 인자 값을 구비하는 제1 회전 인자 행렬을 이산 시간 신호의 샘플의 프레임에 곱하여, 상기 제1 프레임에 대한 실수 DFT 계수의 행렬을 계산하도록 구성된 제1 계산 블록;
상기 샘플의 프레임의 뒤의 절반에 실수 회전 인자 값을 구비하는 제1 회전 인자 행렬의 우측 절반을 곱한 결과인 제1 계산 결과를 기억하기 위한 제1 메모리 디바이스;
상기 샘플의 제1 프레임에 대하여, 상기 제1 프레임에 대한 허수 DFT 계수의 행렬을 계산하기 위하여, 허수 회전 인자 값을 구비하는 제2 회전 인자 행렬을 이산 시간 신호의 샘플의 프레임에 곱하도록 구성된 제2 계산 블록; 및
상기 샘플의 플레임의 뒤의 절반에 허수 회전 인자 값을 구비하는 제2 회전 인자 행렬의 우측 절반을 곱한 제2 계산 결과를 기억하기 위한 제2 메모리 디바이스를 포함하며,
상기 제1 프레임의 후속하는 프레임은 선행하는 프레임에 의해 절반이 중첩되고,
상기 제1 계산 블록은, 상기 샘플의 후속하는 프레임에 대하여, (i) 이전 프레임으로부터 미리 기억된 제1 계산을 인출하고, 제2 프레임마다 미리 기억된 제1 계산의 부호를 반전시키며, (ii) 상기 샘플의 현재 프레임의 뒤의 절반에 상기 회전 인자 행렬의 우측 절반을 곱하고, 그 결과의 계산을 기억하고, (iii) 상기 (i) 및 (ii)의 과정에 의해 생긴 결과를 가산하도록 구성되며,
상기 제2 계산 블록은, 상기 샘플의 후속하는 프레임에 대하여, (iv) 이전 프레임으로부터 미리 기억된 계산을 인출하고, 제2 프레임마다 미리 기억된 계산의 부호를 반전시키며, (v) 상기 샘플의 현재 프레임의 뒤의 절반에 상기 허수 회전 인자 행렬의 우측 절반을 곱하고, 그 결과의 계산을 기억하고, (vi) 상기 (iv) 및 (v)의 과정에 의해 생긴 결과를 가산하도록 구성된다.
이러한 장치에서의 각각의 계산 블록은 행렬 곱셈을 수행하기 위한 곱셈-누산(MAC) 블록을 포함할 수 있다.
본 장치는 상기 장치는, 주파수 영역에서 실수 DFT 계수에 윈도우 함수를 실행하기 위한 제1 콘볼루션 블록; 및
상기 주파수 영역에서 허수 DFT 계수에 윈도우 함수를 실행하기 위한 제2 콘볼루션 블록을 더 포함할 수 있으며,
상기 콘볼루션 블록은 각각 윈도우 함수의 비제로 값을 기억하기 위한 메모리 유닛과, 상기 DFT 계수에 상기 비제로 값을 적용하기 위한 곱셈-누산(MAC) 블록을 포함할 수 있다.
본 발명의 실시예에서, 상기 제1 계산 블록은 상기 실수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 하나의 절반 부분을 형성하는 실수 회전 인자를 포함하는 곱셈을 수행하도록 구성되며, 상기 제2 계산 블록은 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 하나의 절반 부분을 형성하는 허수 회전 인자를 포함하는 곱셈을 수행하도록 구성되고,
상기 장치는, 상기 실수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 다른 절반 부분을 형성하는 실수 회전 인자에 대하여, 상기 실수 또는 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 하나의 절반 부분에서 대응하는 곱셈으로부터 곱셈 결과를 상기 제1 메모리 디바이스에 가산하도록 구성된 제1 가산기; 및
상기 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 다른 절반 부분을 형성하는 허수 회전 인자에 대하여, 상기 실수 또는 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 하나의 절반 부분에서 대응하는 곱셈으로부터 곱셈 결과를 상기 제2 메모리 디바이스에 가산하도록 구성된 제2 가산기를 더 포함할 수 있다.
본 발명의 바람직한 실시예에 대하여, 첨부 도면을 참조하여 예시에 기초하여 설명한다.
도 1은 이산 시간 신호의 샘플의 연속하는 프레임과 이들 연속하는 프레임이 중첩되는 특성을 개략적으로 나타낸다.
도 2는 이산 푸리에 변환 계수의 계산에 사용되는 회전 인자 행렬의 대칭 특성을 나타낸다.
도 3은 이산 푸리에 변환 계수를 계산하는 장치를 필드 프로그램가능한 게이트 어레이로 구현한 실시예를 나타낸다.
도 4는 도 3에 나타낸 장치의 콘볼루션 블록 형성 부분의 일부를 개략적으로 나타낸다.
도 5는 이산 푸리에 변환 계수의 계산에 사용되는 회전 인자 행렬의 대칭 특성을 나타낸다.
도 6은 이산 푸리에 변환 계수의 계산에 사용되는 회전 인자 행렬의 다른 대칭 특성을 나타내는 z 평면에서의 4개의 대칭점을 나타낸다.
도 7은 이산 푸리에 변환 계수의 행렬을 계산하기 위한 장치를 필드 프로그램가능한 게이트 어레이로 구현한 다른 실시예를 나타낸다.
도 1은 이산 시간 신호의 샘플의 연속하는 프레임과 이들 연속하는 프레임이 중첩되는 특성을 개략적으로 나타낸다.
도 2는 이산 푸리에 변환 계수의 계산에 사용되는 회전 인자 행렬의 대칭 특성을 나타낸다.
도 3은 이산 푸리에 변환 계수를 계산하는 장치를 필드 프로그램가능한 게이트 어레이로 구현한 실시예를 나타낸다.
도 4는 도 3에 나타낸 장치의 콘볼루션 블록 형성 부분의 일부를 개략적으로 나타낸다.
도 5는 이산 푸리에 변환 계수의 계산에 사용되는 회전 인자 행렬의 대칭 특성을 나타낸다.
도 6은 이산 푸리에 변환 계수의 계산에 사용되는 회전 인자 행렬의 다른 대칭 특성을 나타내는 z 평면에서의 4개의 대칭점을 나타낸다.
도 7은 이산 푸리에 변환 계수의 행렬을 계산하기 위한 장치를 필드 프로그램가능한 게이트 어레이로 구현한 다른 실시예를 나타낸다.
푸리에 변환(Fourier Transform)은 주파수 영역(frequency domain)의 시간 변수 신호(time variable signal)를 표현하는 데에 사용되는 주요 도구이다. 이산 시간 신호(discrete-time signal)를, N개의 샘플로 이루어진 집합, 즉 {x(n), n=0,1,2,..., N-1}라고 한다. x(n)의 통상적인 이산 푸리에 변환(DFT: discrete Fourier transform)은 다음 식으로 정의된다.
공통 항(common term)이 존재하기 때문에, 상기 정의는 일반적으로 다음의 기호를 도입함으로써 간단하게 된다.
이 경우, w는 실제로 "회전 인자"(twiddle factor)라 부르는 스칼라값 양(scalar-valued quantity)이다. 식 1은 이하의 회전 인자에 의해 다음과 같이 다시 표현할 수 있다.
식 1에서 정의된 DFT 계수(coefficient)는 행렬 벡터(matrix-vector) 형태로서 다음과 같이 표현될 수 있다.
또는
x는 N개의 입력 샘플의 벡터이며, f는 DFT 변환 계수의 벡터이다. F는 N×N 푸리에 행렬이다. DFT가 해석(analysis) 과정 중에 수행하는 중요한 역할은 합성(synthesis)이며, 디지털 신호 처리 알고리즘의 구현은 당업자에게 잘 알려져 있다.
길고 불안정한 신호를 처리하는 경우, 푸리에 해석(Fourier analysis)을 적용하기 위해, 이러한 신호를 짧은 준안정(quasi-stationary)의 프레임(frame)으로 분할할 필요가 있다. 스펙트럼 누출 및 누락의 상황을 피하기 위해, 이러한 상황이 프레임 경계 부근에서 일어나는 경우, 입력 신호 프레임이 중첩되고 적절한 윈도우 함수(windowing function)를 적용하여 프레임 경계 효과를 감소시킬 수 있다. 도 1은 이산 시간 신호의 샘플 중에서 연속하는 3개의 프레임(10, 12, 14)의 예를 나타내고 있다. 각각의 프레임은 x[n]이라고 하는 N개의 요소를 가지며, n은 0에서 N-1까지 유효하다. 각각의 프레임은 선행 프레임과 절반, 즉 50% 중복한다.
식 4에서의 DFT 변환 계수는 복소수이지만, 실제로 실수(real) 및 허수(imaginary) DFT 계수는 DFT 알고리즘의 하드웨어 구성으로 계산된다. 따라서, 실수 및 허수 DFT 계수는 복소 DFT 계수를 계산하는 데에 사용된다. 실수 및 허수 DFT 계수를 계산하는 데에 사용되는 가장 간단한 공식은 다음과 같다.
상기 식에서 XRe[k] 및 XIm[k]은 빈 인덱스(bin index) k에서의 실수 및 허수 DFT 계수이며, N은 DFT의 크기이다.
입력 신호가 정상적인 경우에 순수한 실수이기 때문에, DFT의 복소 출력은 대칭이 될 것이며, k+0부터 N/2-1까지의 값만을 필요로 한다. 반면에, n은 0에서 N-1까지의 값을 사용한다.
상기 2개의 식 6 및 식 7은 2개의 곱셈-누산(MAC: Multiply-Accumulate) 블록을 사용하여 직접적인 방식으로 FPGA 하드웨어에 의해 구성할 수 있다. 이것은 MAC 블록이 현재 저가의 FPGA 칩에 내장된 것으로 알려져 있기 때문에 특히 바람직하다. 예를 들어, 자일링스사(Xilinx)의 저가의 FPGA Spartan-3 페밀리는 30개 이상의 MAC 블록을 포함한다.
식 6 및 식 7은 다음과 같이 행렬 형식으로 나타낼 수 있다.
상기 식에서 F는 코사인 또는 사인 테이블(회전 인자 행렬)의 행렬 형식이며, Xn은 입력 신호이다. 식 8에 기초한, 프레임(10)의 푸리에 변환은 다음과 같이 된다.
행렬 F가 수직을 기준으로 좌측 절반 F1과 우측 절반 F2로 분할되어, 도 2에 나타낸 것과 같이 F=[F1 F2]가 되면, 식 4는 다음과 같이 된다.
마찬가지로, 도 1의 프레임(12)과 프레임(14)의 푸리에 변환은 다음 식 11과 식 12와 같이 된다.
식 6, 식 7 및 식 8로부터, 다음과 같이 되는 것을 알 수 있다.
여기서, k=0: N/2-1이고, n=0: N-1이다.
[식 12a]
[식 12b]
n이 0에서 N/2-1까지 변화하면, F2는 다음과 같이 된다.
식 10 및 식 11에서 설명한 바와 같이, 프레임(10)의 DFT 계수는 [F1][a]와 [F2][b]에 의해 정해지며, 프레임(12)의 DFT 계수는 [F1][b]와 [F2][c]이다. 그러나, F2=±F1(앞서 설명했음)이기 때문에, [F1][b]는 어떠한 다른 계산을 하지 않고도 [F2][b]로부터 도출해낼 수 있으며, [F2][b]에 포함된 값은 다음번의 계산을 위해 기억시켜 두기만 하면 된다. 따라서, 프레임(12)에 대해 필요한 계산은 2배 감소될 수 있다. 마찬가지로, 프레임(14)에 대한 DFT의 계산에서는, [F2][d]만 계산하면 된다. 따라서, 최초의 프레임 이후에, 이에 후속하는 프레임의 계산 요건이 50% 감소될 수 있다.
앞서 설명한 기술은 도 3에 나타낸 바와 같이 하드웨어로 구현할 수 있다. 도 3은 DFT 계수를 계산하기 위한 장치(30)를 나타낸다. 본 장치(30)는 제1 계산 블록을 포함하는데, 이 제1 계산 블록은 이산 시간 신호(discrete-time signal)의 샘플의 프레임에 회전 인자 매트릭스(twiddle factor matrix)를 곱해서, 이들 프레임에 대한 DFT 계수의 매트릭스를 계산하도록 되어 있다. 이를 위해서, 계산 블록(32)은 곱셈기(MUL: multiplier)(34)와 가산기(ADD: adder)(36)를 포함하여 이루어진 곱셈-누산(MAC: Multiply-Accumulate) 블록을 포함한다. 계산 블록(32)은 메모리 디바이스(38)와 멀티플렉서(MUX)(40)를 더 포함한다. 본 장치(30)는 계산 블록(32)이 식 6에서 설명한 계산을 수행하는 데에 필요한 회전 인자를 기억하는 조사 테이블(look-up table)(42)을 더 포함한다.
동작에 있어서, 제1 프레임(10)의 각각의 입력 신호 샘플이 곱셈기(34)에 의해 조사 테이블(42)로부터 제공된 실수 회전 인자(real twiddle factor)와 곱셈이 행해지고, 가산기(36)에 의해 누산되어, 제1 프레임(10)에 대한 실수 DFT 계수의 행렬을 계산할 수 있다. 샘플의 프레임의 뒤의 절반에 회전 인자 행렬의 우측 절반을 곱셈한 계산 결과는 메모리 디바이스(38)의 어드레스 k에 기억되며, k는 실수 DFT 빈 인덱스(bin index)이다.
이산 시간 입력 신호의 샘플의 제2 프레임(12) 및 후속하는 프레임에 대해서는, 메모리 디바이스(38)에 이전에 기억시켜 두었던, 제2 프레임(12)의 실수 DFT 계수에 대한 계산의 절반을 이미 이용할 수 있다. 따라서, 이전 프레임으로부터 기억되어 있던 계산을 인출하고, 기억된 계산의 부호(sign)를 제2 프레임마다 반전시킨다. 샘플의 현재 프레임(12)의 뒤의 절반에, 조사 테이블(42)에 유지된 회전 인자 행렬의 우측 절반을 곱하고, 그 곱셈의 결과를 가산기(36)에 의해 인출된 계산에 가산함으로써, 다음 빈에 대한 DFT 계수를 생성할 수 있다.
샘플의 현재 프레임의 뒤의 절반에 회전 인자 행렬의 우측 절반을 곱한 결과의 계산이 메모리 디바이스(38)의 어드레스 k+1에 기억된다. 이 과정은 실수 DFT 계수가 모든 빈(bin)에 대해 계산될 때까지 반복된다.
본 실시예에서 장치(30)는 곱셈기(46) 및 가산기(48)를 포함하여 이루어진 MAC 블록과 제2 메모리 디바이스(50) 및 멀티플렉서(52)를 포함하는 제2 계산 블록(44)을 포함한다. 제1 계산 블록(32)과 제1 메모리 디바이스(38)는 이산 시간 입력 신호의 샘플의 프레임과 조사 테이블(42)에 유지된 실수 회전 인자 값을 사용해서 샘플의 프레임에 대한 실수 DFT 계수를 계산하지만, 제2 계산 블록(44)과 제2 메모리 디바이스(42)는 입력 신호의 샘플의 프레임과 조사 테이블(42)에 유지된 허수 회전 인자 값을 사용해서 샘플의 다양한 프레임에 대하여 허수 DFT 계수를 계산한다.
이를 위하여, 샘플의 제1 프레임(10)에 대하여, 제2 계산 블록(44)은 샘플의 프레임에, 조사 테이블(42)에 유지된 허수 회전 인자 값을 곱하여, 제1 프레임에 대하여 허수 DFT 계수를 계산할 수 있다. 샘플의 프레임의 뒤의 절반에, 허수 회전 인자 값을 포함하는 회전 인자 행렬의 우측 절반을 곱한 결과는 제2 메모리 디바이스(50)에 기억된다.
샘플의 제2 프레임(12) 및 후속하는 프레임에 대하여, 선행 프레임에 대하여 행해지고 메모리 디바이스(50)에 기억된 계산이 인출되고, 기억된 계산의 부호는 제2 프레임마다 반전된다. 각각의 현재의 프레임에 대하여, 샘플의 현재 프레임의 뒤의 절반에 허수 최전 인자 행렬의 우측 절반을 곱하고, 곱한 결과와 인출한 계산 결과를 가산하여, 특정의 DFT 빈에 대한 허수 DFT 계수를 생성한다. 이 과정은 모든 DFT 빈에 대해 허수 DFT 계수가 계산될 때까지 다시 한번 반복된다. 샘플의 제2 프레임 및 후속하는 프레임에 대하여, 샘플의 현재 프레임의 뒤의 절반에 허수 회전 인자 행렬의 우측 절반을 곱한 계산 결과를 후속하는 프레임에 관련된 계산에 사용하기 위해 메모리 디바이스(50)에 기억시킨다.
메모리 디바이스(38, 50)는 듀얼 포트 랜덤 액세스 메모리(RAM)를 포함할 수 있으며, 이들 2개의 독립된 포트에 의해 하나의 메모리 공간을 공유할 수 있다. 듀얼 포트 RAM 메모리 공간은 각각 N/2(N은 DFFT의 크기임)의 크기를 갖는 2개의 동일한 부분으로 나눌 수 있다. 이러한 경우, 듀얼 포트 RAM은 순환 버퍼(circular buffer)처럼 동작함으로써, 한 부분을 DFT 블록이 차지하고, 다른 부분이 입력 신호 샘플로 채워진다.
DFT 계수의 계산에서의 스펙트럼 누설(spectral leakage)을 감소시키기 위하여, 일반적으로 시간 영역 입력 신호(time-domain input signal)에 윈도우 함수(window function)를 적용한다. 그러나, 시간 영역에 윈도우 함수를 적용하는 것은 도 3에 나타낸 장치(30)에 사용되는 비대칭 특성(asymmetrical property)을 훼손할 수 있기 때문에, 이전 프레임으로부터의 메모리 디바이스(38, 50)에 기억된 계산은 더 이상 유효하지 않게 될 것이다. 따라서, 장치(30)는 주파수 영역에서 실수 및 허수 DFT 계수에 윈도우 함수를 적용하는 콘볼루션(convolution) 블록(54)을 더 포함한다.
콘볼루션 블록(54)에 의해 다양한 윈도우 함수를 구현할 수 있지만, 생성이 간단하다는 장점을 갖는 2가지 예는 한(Hann) 윈도우와 해밍(Hamming) 윈도우이다. 해밍 윈도우는 더 많은 부엽 상쇄(side lobe cancellation)를 달성하는 변형된 한(Hann) 윈도우로서 취급될 수 있다. 해밍 윈도우는 다음과 같은 시퀀스의 합계 w(n)로 표현될 수 있다.
상기 식에서 N은 윈도우의 크기(일반적으로는 DFT 크기와 동일함)이고, α는 보통은 정수이고, N은 값 0에서 N-1까지의 인덱스이다.
각 시퀀스의 이산 시간 푸리에 변환(DTFT: discrete time Fourier transform)은 다음과 같이 될 수 있다.
상기 식에서,
DFT의 경우에, 윈도우는 의 배율로 샘플링된다. 따라서, 샘플링 과정 중에 3개의 비제로(nonzero) 샘플만을 구하게 된다. 이들 샘플의 위치는 , 0, 및 이며, -(1-α)/2, α, 및 -(1-α)/2로부터 샘플의 대응하는 값을 구한다. α는 0.54의 값을 가지며, 해밍 윈도우의 DFT는 -0.23, 0.54, 및 -0.23이라는 3개의 비제로 값만을 갖는다.
주파수 영역에서 콘볼루션을 사용함으로써, 윈도우 함수의 샘플을 기억하기 위한 메모리 요건을 생략할 수 있다. 또한, 최초 프레임을 유보(reserve)함으로써, 제1 DFT 계수는 입력 프레임의 참 에너지 값(true energy value)을 제공할 수 있다. 이것은 시간 영역 윈도우 방법을 이용하면 개별적으로 계산되어야 하는 많은 디지털 신호 처리 알고리즘에서 필요하고 중요한 값이기 때문에, 주파수 영역에서 콘볼루션을 이용하는 것이 도 3에 나타낸 하드웨어 구성에서와 같이 리소스를 절약할 수 있다.
도 4는 콘볼루션 블록(54)에 의해 제공되는 윈도우 함수가 제공될 수 있는 종래의 경우를 나타낸다. 이 하드웨어 구성(60)은 해밍 윈도우의 DFT의 3개의 비제로 값을 기억하기 위한 3개의 메모리를 구비하는 시프트 레지스터(shift register)(62)를 포함한다. 해밍 윈도우의 DFT의 3개의 비제료 값은 곱셈기(MUL)(72)와 가산기(ADD)(74)를 포함하여 이루어진 MAC 블록(70)에 의해 실수 또는 허수 DFT 계수에 적용된다. 콘볼루션 블록(54)은 도 4에 나타낸 두 세트의 요소를 포함하는데, 첫 번째 세트는 가산기(36)의 출력에서 생성된 실수 DFT 계수에 윈도우 함수를 적용하기 위한 것이며, 두 번째 세트는 가산기(48)의 출력에서의 허수 DFT 계수에 윈도우 함수를 적용하기 위한 것이다.
도 3 및 도 4에 나타낸 본 발명의 실시예는 계산의 복잡도를 감소시키는 회전 인자 행렬의 대칭 특성을 갖는 장점이 있다. 그러나, 하드웨어를 최소로 추가하여 동일한 대칭 특성에 기초해서 최적화 기술을 사용함으로써 레이턴시를 더 줄일 수 있다.
F가 회전 인자 행렬인 경우, 인 복소 식을 갖는다. k 값은 0부터 N/2-1까지이며, n은 0부터 N-1까지 이다. 식 10, 식 11, 및 식 12에 나타낸 바와 같이, F1은 행렬 F의 좌측 절반이며, n은 0에서 N/2-1이다. F2는 우측 절반이며, n은 N/2부터 N-1까지이다.
따라서, 이고, k 및 n은 0부터 N/2-1까지이다. L=N/2라고 하면, 이고, k 및 n은 0부터 L-1까지이다. 도 5에 나타낸 바와 같이, F1을 수평으로 F1a 및 F1b로 나누면, 이며, k는 0부터 N/2-1까지이며, n은 0부터 L-1까지이고, 이며, k는 L/2부터 L-1까지이며, n은 0부터 L-1까지이다.
k가 0부터 L/2-1까지이면, F1b는 다음과 같이 표현할 수 있다.
상기 식에서,
식 18은 도 6에 나타낸 바와 같이, z 평면에서 4개의 대칭점(80~86)을 나타낸다.
이상으로부터, DFT 기본 식 6 및 7은 다음과 같이 다시 나타낼 수 있다.
k는 0부터 N/4-1까지이다.
따라서, 인덱스 k에 따라 DFT 계수를 계산하는 경우, 2개의 곱셈의 결과를 인덱스 k에 따라 적절한 부호 비트로 교체하여, 인덱스 k+L/2의 DFT 계수를 계산할 수 있다. 따라서, DFT 계수의 모든 빈(bin)을 계산하기 위해 N/2배로 순환(looping)시키는 대신에, 도 7에 나타낸 바와 같이, 2개의 가산기만을 추가해서 N/4배의 순환만 하면 된다.
다시 말하면, 샘플의 프레임의 뒤의 절반(b)에 실수 및 허수 회전 인자 행렬의 우측 절반(F2)을 곱하기 위하여, 실수 및 허수 회전 인자 행렬의 우측 절반(F2)의 상부 절반(F2a) 또는 하부 절반(F2b) 중의 하나를 형성하는 회전 인자를 포함하는 곱셈만을 계산하면 된다. 실수 회전 인자 행렬의 우측 절반(F2)의 상부 절반(F2a) 또는 하부 절반(F2b) 중의 다른 하나를 형성하는 실수 회전 인자에 대해서는, 실수 또는 허수 회전 인자 행렬의 우측 절반(F2)의 상부 절반(F2a) 또는 하부 절반(F2b) 중의 하나에서의 대응하는 곱셈으로부터, 곱셈 결과를 유추할 수 있다.
도 7은 도 5 및 도 6과 관련해서 설명한 최적화 기술을 구현하는 실수 및 허수 DFT 계수를 계산하기 위한 장치(100)를 나타낸다. 본 장치(100)는 곱셈기(multiplier: MUL)(104)와 가산기(ADD)(106)를 포함하는 형태로 된 MAC 블록을 구비하는 제1 계산 블록(102)을 포함한다. 본 장치(100)에는 제1 메모리 디바이스(108) 및 관련 멀티플렉서(MUX)(110)도 포함된다. 본 장치(100)는 곱셈기(114)와 가산기(116)를 포함하는 MAC 블록을 구비하는 제2 계산 블록(112)을 포함한다. 본 장치에는 제2 메모리 디바이스(118) 및 관련 멀티플렉서(120)도 포함된다. 또한, 본 장치(100)는 조사 테이블(122) 및 콘볼루션 블록(124)을 포함한다. 제1 계산 블록(102), 제2 계산 블록(112), 제1 메모리 디바이스(108), 제2 메모리 디바이스(118), 멀티플렉서(110, 120), 조사 테이블(130), 및 콘볼루션 블록(124)은 각각, 도 3에 나타낸 장치(30)와 관련해서 설명한 제1 계산 블록(32), 제2 계산 블록(44), 제1 메모리 디바이스(38), 제2 메모리 디바이스(50), 멀티플렉서(40, 52), 조사 테이블(420, 및 콘볼루션 블록(54)과 유사하게 작용한다.
본 장치(100)에서, 제1 계산 블록(102)은 실수 회전 인자 행렬의 우측 절반(F2)의 상부 절반(F2a) 또는 하부 절반(F2b) 중의 하나를 형성하는 실수 회전 인자를 포함하는 곱셈을 수행하도록 구성된다. 마찬가지로, 제2 계산 블록(112)은 허수 회전 인자 행렬의 우측 절반(F2)의 상부 절반(F2a) 또는 하부 절반(F2b) 중의 하나를 형성하는 허수 회전 인자를 포함하는 곱셈을 수행하도록 구성된다.
그러나, 본 장치(100)는 가산기(126, 128) 및 멀티플렉서(130, 132)를 더 포함한다. 가산기(126)는 실수 회전 인자 행렬의 우측 절반(F2)의 상부 절반(F2a) 또는 하부 절반(F2b) 중의 하나의 절반 부분을 형성하는 실수 회전 인자에 대하여, 멀티플렉서(130)에 의해 제공되는, 실수 또는 허수 회전 인자 행렬의 우측 절반의 상부 절반(F2a) 또는 하부 절반(F2b) 중의 다른 하나의 절반 부분에서의 대응하는 곱셈으로부터의 곱셈 결과를 제1 메모리 디바이스(108)에 가산하도록 되어 있다. 마찬가지로, 가산기(128)는, 허수 회전 인자 행렬의 우측 절반(F2)의 상부 절반(F2a) 또는 하부 절반(F2b) 중의 하나를 형성하는 허수 회전 인자에 대하여, 멀티플렉서(132)에 의해 제공되는, 실수 또는 허수 회전 인자 행렬의 우측 절반의 상부 절반(F2a) 또는 하부 절반(F2b) 중의 다른 하나에서의 대응하는 곱셈으로부터의 곱셈 결과를 제2 메모리 디바이스(118)에 가산하도록 되어 있다. 이에 의하면, 필요한 모든 DFT 계수를 계산하기 위해 N/2배의 순환을 하는 것이 아니라, 가산기(126, 128) 및 멀티플렉스(130, 132)를 더 포함함으로써, 장치(100)에서는 N/4배의 순환만 하면 된다. 따라서, 도 3에 나타낸 장치(30)에 비해, 레이턴시를 줄일 수 있다.
상기 설명한 요소는 본 발명의 예시에 불과하며, 본 발명의 범위를 벗어남이 없이 당업자에 의해 용이하게 많은 변형이 실시될 수 있다는 것을 알 수 있을 것이다.
Claims (14)
- 이산 주파수 이산 푸리에 변환(Discrete Fourier Transform: DFT) 계수(coefficient)의 행렬(matrix)을 계산하는 방법으로서,
(a) 샘플의 제1 프레임에 대하여,
이산 시간 신호(discrete-time signal)의 샘플의 프레임에 회전 인자 행렬(twiddle factor matrix)을 곱(multiply)하여, 상기 제1 프레임에 대한 DFT 계수의 행렬을 계산하는 단계와,
상기 샘플의 프레임 중의 뒤의 절반(second half)에 상기 회전 인자 행렬의 우측 절반(right half)을 곱한 계산 결과를 기억하는 단계; 및
(b) 상기 샘플의 선행하는 프레임에 대하여 절반이 중첩(overlap)되는 후속하는 프레임에 대하여,
(i) 상기 선행하는 프레임으로부터 미리 기억된 계산을 인출(retrieve)하고, 제2 프레임마다 상기 미리 기억된 계산의 부호(sign)를 반전(invert)시키는 단계와,
(ii) 상기 샘플의 현재 프레임의 뒤의 절반에 상기 회전 인자 행렬의 우측 절반을 곱하고, 그 계산 결과를 기억시키는 단계와,
(iii) 상기 단계 (i)의 결과와 단계 (ii)의 결과를 가산(add)하는 단계
를 포함하는 것을 특징으로 하는 계산 방법. - 제1항에 있어서,
상기 이산 푸리에 변환(DFT) 행렬은 실수(real) DFT 계수를 포함하며, 상기 회전 인자 행렬은 실수 회전 인자 값을 포함하는, 계산 방법. - 제1항에 있어서,
상기 DFT 행렬은 허수(imaginary) DFT 계수를 포함하며, 상기 회전 인자 행렬은 허수 회전 인자 값을 포함하는, 계산 방법. - 제1항 내지 제3항 중 어느 한 항에 있어서,
주파수 영역에서 상기 DFT 계수에 대하여 윈도우 함수(windowing function)를 실행하기 위해 콘볼루션(convolution)을 사용하는 단계;
상기 윈도우 함수의 비제로(nonzero) 값을 기억하는 단계; 및
상기 DFT 계수에 상기 비제로 값을 적용하는 단계를 더 포함하는 계산 방법. - 제4항에 있어서,
상기 윈도우 함수는 해밍(Hamming) 윈도우인 것인, 계산 방법. - 이산 주파수 이산 푸리에 변환(DFT) 계수의 행렬을 계산하는 방법으로서,
청구항 1의 단계 (a) 및 단계 (b)를 수행하여, 실수 회전 인자 값을 포함하는 회전 인자 행렬(twiddle factor matrix)에 대하여 실수 DFT 계수의 행렬을 계산하는 단계; 및
청구항 1의 단계 (a) 및 단계 (b)를 수행하여, 허수 회전 인자 값을 포함하는 회전 인자 행렬에 대하여 허수 DFT 계수의 행렬을 계산하는 단계를 더 포함하는 계산 방법. - 제6항에 있어서,
상기 단계 (b)의 (ii)는,
상기 실수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 하나의 절반 부분을 형성하는 실수 회전 인자를 포함하는 곱셈을 수행하는 단계;
상기 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 하나의 절반 부분을 형성하는 허수 회전 인자를 포함하는 곱셈을 수행하는 단계;
실수 회전 인자에 대하여, 상기 실수 회전 인자의 우측 절반의 상부 절반 또는 하부 절반 중의 다른 하나의 절반 부분을 형성하여, 상기 실수 또는 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 상기 하나의 절반 부분에서 대응하는 곱셈으로부터 상기 곱셈 결과를 유추(infer)하는 단계; 및
허수 회전 인자에 대하여, 상기 허수 회전 인자의 우측 절반의 상부 절반 또는 하부 절반 중의 다른 하나의 절반 부분을 형성하여, 상기 실수 또는 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 상기 하나의 절반 부분에서 대응하는 곱셈으로부터 상기 곱셈 결과를 유추하는 단계를 포함하는, 계산 방법. - 이산 푸리에 변환(DFT) 계수의 행렬을 계산하기 위한 장치로서,
샘플의 제1 프레임에 대하여, 상기 제1 프레임에 대한 DFT 계수의 행렬을 계산하기 위해 이산 시간 신호(discrete-time signal)의 샘플의 프레임에 회전 인자 행렬(twiddle factor matrix)을 곱하도록 구성된 계산 블록; 및
상기 샘플의 프레임 중의 뒤의 절반(second half)에 상기 회전 인자 행렬의 우측 절반(right half)을 곱한 계산 결과를 기억시키기 위한 메모리 디바이스
를 포함하며,
상기 계산 블록은, 샘플의 선행하는 프레임에 대하여 절반이 중첩되는 후속하는 프레임에 대하여, (i) 상기 선행하는 프레임으로부터 미리 기억된 계산을 인출하고, 제2 프레임마다 미리 기억된 계산의 부호를 반전시키며, (ii) 상기 샘플의 현재 프레임의 뒤의 절반에 상기 회전 인자 행렬의 우측 절반을 곱하고, 그 결과의 계산을 기억하고, (iii) 상기 (i) 및 (ii)의 과정에 의해 생긴 결과를 가산하도록 구성된 것을 특징으로 하는 장치. - 제8항에 있어서,
상기 계산 블록은 행렬 곱셈(matrix multiplication)을 수행하기 위한 곱셈-누산(MAC: multiply-accumulate) 블록을 포함하는, 장치. - 제8항 또는 제9항에 있어서,
상기 장치는 주파수 영역에서 DFT 계수에 윈도우 함수를 적용하기 위한 콘볼루션(convolution) 블록을 더 포함하며,
상기 콘볼루션 블록은,
상기 윈도우 함수의 비제로 값을 기억하기 위한 메모리 유닛; 및
상기 비제로 값을 상기 DFT 계수에 적용하기 위한 곱셈-누산(MAC) 블록을 포함하는, 장치. - 이산 푸리에 변환(DFT: discrete Fourier transform) 계수의 행렬을 계산하기 위한 장치로서,
샘플의 제1 프레임에 대하여, 실수 회전 인자 값(real twiddle factor value)을 포함하는 제1 회전 인자 행렬을 이산 시간 신호(discrete-time signal)의 샘플의 프레임에 곱하여, 상기 제1 프레임에 대한 실수 DFT 계수의 행렬을 계산하도록 구성된 제1 계산 블록;
상기 샘플의 프레임의 뒤의 절반(second half)에 실수 회전 인자 값을 구비하는 제1 회전 인자 행렬의 우측 절반(right half)을 곱한 결과인 제1 계산 결과를 기억하기 위한 제1 메모리 디바이스;
상기 샘플의 제1 프레임에 대하여, 상기 제1 프레임에 대한 허수 DFT 계수의 행렬을 계산하기 위하여, 허수 회전 인자 값을 포함하는 제2 회전 인자 행렬을 이산 시간 신호의 샘플의 프레임에 곱하도록 구성된 제2 계산 블록; 및
상기 샘플의 플레임의 뒤의 절반에 허수 회전 인자 값을 구비하는 제2 회전 인자 행렬의 우측 절반을 곱한 제2 계산 결과를 기억하기 위한 제2 메모리 디바이스
를 포함하며,
상기 제1 프레임의 후속하는 프레임은 선행하는 프레임에 의해 절반이 중첩되고,
상기 제1 계산 블록은, 상기 샘플의 후속하는 프레임에 대하여, (i) 상기 선행하는 프레임으로부터 미리 기억된 제1 계산을 인출하고, 제2 프레임마다 미리 기억된 제1 계산의 부호를 반전시키며, (ii) 상기 샘플의 현재 프레임의 뒤의 절반에 상기 회전 인자 행렬의 우측 절반을 곱하고, 그 결과의 계산을 기억하고, (iii) 상기 (i) 및 (ii)의 과정에 의해 생긴 결과를 가산하도록 구성되며,
상기 제2 계산 블록은, 상기 샘플의 후속하는 프레임에 대하여, (iv) 상기 선행하는 프레임으로부터 미리 기억된 계산을 인출하고, 제2 프레임마다 미리 기억된 계산의 부호를 반전시키며, (v) 상기 샘플의 현재 프레임의 뒤의 절반에 상기 허수 회전 인자 행렬의 우측 절반을 곱하고, 그 결과의 계산을 기억하고, (vi) 상기 (iv) 및 (v)의 과정에 의해 생긴 결과를 가산하도록 구성된 것을 특징으로 하는 장치. - 제11항에 있어서,
상기 계산 블록은 각각 행렬 곱셈을 수행하기 위한 곱셈-누산(MAC) 블록을 포함하는, 장치. - 제11항 또는 제12항에 있어서,
상기 장치는, 주파수 영역에서 실수 DFT 계수에 윈도우 함수를 실행하기 위한 제1 콘볼루션 블록; 및
상기 주파수 영역에서 허수 DFT 계수에 윈도우 함수를 실행하기 위한 제2 콘볼루션 블록을 더 포함하며,
상기 콘볼루션 블록은 각각 윈도우 함수의 비제로 값을 기억하기 위한 메모리 유닛과, 상기 DFT 계수에 상기 비제로 값을 적용하기 위한 곱셈-누산(MAC) 블록을 포함하는, 장치. - 제11항 내지 제13항 중 어느 한 항에 있어서,
상기 제1 계산 블록은 상기 실수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 하나의 절반 부분을 형성하는 실수 회전 인자를 포함하는 곱셈을 수행하도록 구성되며, 상기 제2 계산 블록은 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 하나의 절반 부분을 형성하는 허수 회전 인자를 포함하는 곱셈을 수행하도록 구성되고,
상기 장치는,
상기 실수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 다른 절반 부분을 형성하는 실수 회전 인자에 대하여, 상기 실수 또는 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 하나의 절반 부분에서 대응하는 곱셈으로부터 곱셈 결과를 상기 제1 메모리 디바이스에 가산하도록 구성된 제1 가산기; 및
상기 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 다른 절반 부분을 형성하는 허수 회전 인자에 대하여, 상기 실수 또는 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 하나의 절반 부분에서 대응하는 곱셈으로부터 곱셈 결과를 상기 제2 메모리 디바이스에 가산하도록 구성된 제2 가산기를 더 포함하는, 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU2008904721A AU2008904721A0 (en) | 2008-09-10 | Method and device for computing matrices for discrete fourier transform (DFT) coefficients | |
AU2008904721 | 2008-09-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20110081971A true KR20110081971A (ko) | 2011-07-15 |
Family
ID=42004720
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020117008014A KR20110081971A (ko) | 2008-09-10 | 2009-09-10 | 이산 푸리에 변환 계수의 행렬을 계산하는 방법 및 장치 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20120131079A1 (ko) |
EP (1) | EP2332072A1 (ko) |
JP (1) | JP2012502379A (ko) |
KR (1) | KR20110081971A (ko) |
CN (1) | CN102209962A (ko) |
AU (1) | AU2009291506A1 (ko) |
WO (1) | WO2010028440A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190113494A (ko) * | 2018-03-26 | 2019-10-08 | 삼성디스플레이 주식회사 | 변환 기반 스트레스 프로파일 압축 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102592601B (zh) | 2011-01-10 | 2014-09-17 | 华为技术有限公司 | 一种信号处理方法和装置 |
US9128885B2 (en) | 2012-10-17 | 2015-09-08 | The Mitre Corporation | Computationally efficient finite impulse response comb filtering |
US20200349217A1 (en) * | 2019-05-03 | 2020-11-05 | Micron Technology, Inc. | Methods and apparatus for performing matrix transformations within a memory array |
US11449577B2 (en) | 2019-11-20 | 2022-09-20 | Micron Technology, Inc. | Methods and apparatus for performing video processing matrix operations within a memory array |
US11853385B2 (en) | 2019-12-05 | 2023-12-26 | Micron Technology, Inc. | Methods and apparatus for performing diversity matrix operations within a memory array |
CN113379046B (zh) * | 2020-03-09 | 2023-07-11 | 中国科学院深圳先进技术研究院 | 卷积神经网络的加速计算方法、存储介质和计算机设备 |
CN113569190A (zh) * | 2021-07-02 | 2021-10-29 | 星思连接(上海)半导体有限公司 | 一种快速傅立叶变换旋转因子计算系统和方法 |
CN115168794B (zh) * | 2022-06-20 | 2023-04-21 | 深圳英智科技有限公司 | 一种基于改进dft的频谱分析方法、系统及电子设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3748451A (en) * | 1970-08-21 | 1973-07-24 | Control Data Corp | General purpose matrix processor with convolution capabilities |
US6839727B2 (en) * | 2001-05-01 | 2005-01-04 | Sun Microsystems, Inc. | System and method for computing a discrete transform |
US6704760B2 (en) * | 2002-04-11 | 2004-03-09 | Interdigital Technology Corporation | Optimized discrete fourier transform method and apparatus using prime factor algorithm |
US7236535B2 (en) * | 2002-11-19 | 2007-06-26 | Qualcomm Incorporated | Reduced complexity channel estimation for wireless communication systems |
US7702712B2 (en) * | 2003-12-05 | 2010-04-20 | Qualcomm Incorporated | FFT architecture and method |
US20050278404A1 (en) * | 2004-04-05 | 2005-12-15 | Jaber Associates, L.L.C. | Method and apparatus for single iteration fast Fourier transform |
US7296045B2 (en) * | 2004-06-10 | 2007-11-13 | Hasan Sehitoglu | Matrix-valued methods and apparatus for signal processing |
-
2009
- 2009-09-10 KR KR1020117008014A patent/KR20110081971A/ko not_active Application Discontinuation
- 2009-09-10 EP EP09812533A patent/EP2332072A1/en not_active Withdrawn
- 2009-09-10 US US13/063,166 patent/US20120131079A1/en not_active Abandoned
- 2009-09-10 JP JP2011526354A patent/JP2012502379A/ja not_active Withdrawn
- 2009-09-10 WO PCT/AU2009/001190 patent/WO2010028440A1/en active Application Filing
- 2009-09-10 AU AU2009291506A patent/AU2009291506A1/en not_active Abandoned
- 2009-09-10 CN CN2009801443358A patent/CN102209962A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190113494A (ko) * | 2018-03-26 | 2019-10-08 | 삼성디스플레이 주식회사 | 변환 기반 스트레스 프로파일 압축 |
Also Published As
Publication number | Publication date |
---|---|
EP2332072A1 (en) | 2011-06-15 |
JP2012502379A (ja) | 2012-01-26 |
US20120131079A1 (en) | 2012-05-24 |
WO2010028440A1 (en) | 2010-03-18 |
AU2009291506A1 (en) | 2010-03-18 |
CN102209962A (zh) | 2011-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20110081971A (ko) | 이산 푸리에 변환 계수의 행렬을 계산하는 방법 및 장치 | |
US6366936B1 (en) | Pipelined fast fourier transform (FFT) processor having convergent block floating point (CBFP) algorithm | |
JP2008506191A5 (ko) | ||
KR20060061796A (ko) | 리코드 radix-2 파이프라인 FFT 프로세서 | |
Oruklu et al. | Reduced memory and low power architectures for CORDIC-based FFT processors | |
Wang et al. | Design of pipelined FFT processor based on FPGA | |
Manikandan et al. | Mixed Radix 4 & 8 Based SDF-SDC FFT Using MBSLS for Efficient Area Reduction. | |
Chao et al. | Design of a high performance fft processor based on fpga | |
Revanna et al. | A scalable FFT processor architecture for OFDM based communication systems | |
KR102376492B1 (ko) | 실수값을 입력으로 하는 고속푸리에 변환장치 및 방법 | |
Tan et al. | Frequency convolution for implementing window functions in spectral analysis | |
JP4083387B2 (ja) | 離散フーリエ変換の計算 | |
Malashri et al. | Low power and memory efficient FFT architecture using modified CORDIC algorithm | |
Ranganathan et al. | Efficient hardware implementation of scalable FFT using configurable Radix-4/2 | |
Hazarika et al. | Low-complexity continuous-flow memory-based FFT architectures for real-valued signals | |
Györfi et al. | Implementing modular FFTs in FPGAs--A basic block for lattice-based cryptography | |
Das et al. | Hardware implementation of parallel FIR filter using modified distributed arithmetic | |
Qu et al. | High real-time design of digital pulse compression based on FPGA | |
TW201724089A (zh) | 具有滑動式二階遞迴傅立葉轉換的頻域適應性濾波系統 | |
TWI472932B (zh) | 數位訊號處理裝置及其處理方法 | |
Chaudhari et al. | An optimized approach to pipelined architecture for fast 2D normalized cross-correlation | |
More et al. | FPGA implementation of FFT processor using vedic algorithm | |
Sankaran et al. | Design and Implementation of 1024 Point Pipelined Radix 4 FFT Processor on FPGA for Biomedical Signal Processing Applications | |
Hassan et al. | FPGA Implementation of an ASIP for high throughput DFT/DCT 1D/2D engine | |
Dawwd et al. | Reduced Area and Low Power Implementation of FFT/IFFT Processor. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |