KR20110081971A - 이산 푸리에 변환 계수의 행렬을 계산하는 방법 및 장치 - Google Patents

이산 푸리에 변환 계수의 행렬을 계산하는 방법 및 장치 Download PDF

Info

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
Application number
KR1020117008014A
Other languages
English (en)
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
Priority claimed from AU2008904721A external-priority patent/AU2008904721A0/en
Application filed by 코-오퍼레이티브 리서치 센터 포 어드밴스드 오토모티브 테크놀로지 리미티드 filed Critical 코-오퍼레이티브 리서치 센터 포 어드밴스드 오토모티브 테크놀로지 리미티드
Publication of KR20110081971A publication Critical patent/KR20110081971A/ko

Links

Images

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
    • 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/16Matrix 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

이산 푸리에 변환 계수의 행렬을 계산하는 방법 및 장치{METHOD AND DEVICE FOR COMPUTING MATRICES FOR DISCRETE FOURIER TRANSFORM COEFFICIENTS}
본 발명은 이산 푸리에 변환(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은 이산 푸리에 변환 계수의 행렬을 계산하기 위한 장치를 필드 프로그램가능한 게이트 어레이로 구현한 다른 실시예를 나타낸다.
푸리에 변환(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)은 다음 식으로 정의된다.
Figure pct00001
상기 식에서 기호 j는 허수
Figure pct00002
이고, N개의 실수 데이터 값(시간 영역)은 N개의 복소수 DFT 값(주파수 영역)으로 변환된다.
공통 항(common term)이 존재하기 때문에, 상기 정의는 일반적으로 다음의 기호를 도입함으로써 간단하게 된다.
Figure pct00003
이 경우, w는 실제로 "회전 인자"(twiddle factor)라 부르는 스칼라값 양(scalar-valued quantity)이다. 식 1은 이하의 회전 인자에 의해 다음과 같이 다시 표현할 수 있다.
Figure pct00004
식 1에서 정의된 DFT 계수(coefficient)는 행렬 벡터(matrix-vector) 형태로서 다음과 같이 표현될 수 있다.
Figure pct00005
또는
Figure pct00006
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 계수를 계산하는 데에 사용되는 가장 간단한 공식은 다음과 같다.
Figure pct00007
Figure pct00008
상기 식에서 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은 다음과 같이 행렬 형식으로 나타낼 수 있다.
Figure pct00009
상기 식에서 F는 코사인 또는 사인 테이블(회전 인자 행렬)의 행렬 형식이며, Xn은 입력 신호이다. 식 8에 기초한, 프레임(10)의 푸리에 변환은 다음과 같이 된다.
Figure pct00010
행렬 F가 수직을 기준으로 좌측 절반 F1과 우측 절반 F2로 분할되어, 도 2에 나타낸 것과 같이 F=[F1 F2]가 되면, 식 4는 다음과 같이 된다.
Figure pct00011
마찬가지로, 도 1의 프레임(12)과 프레임(14)의 푸리에 변환은 다음 식 11과 식 12와 같이 된다.
Figure pct00012
Figure pct00013
식 6, 식 7 및 식 8로부터, 다음과 같이 되는 것을 알 수 있다.
Figure pct00014
또는
Figure pct00015
여기서, k=0: N/2-1이고, n=0: N-1이다.
Figure pct00016
인 경우, 식 10, 식 11 및 식 12의 F1 및 F2는 다음 식 12a 및 식 12b가 된다.
[식 12a]
Figure pct00017
, k=0: N/2-1이고 n=0: N/2-1
[식 12b]
Figure pct00018
, k=0: N이고 n=N/2: N-1
n이 0에서 N/2-1까지 변화하면, F2는 다음과 같이 된다.
Figure pct00019
식 13은 k에 따라 F2=±F1이 된다는 것을 나타내며,
Figure pct00020
인 경우에 적용된다.
식 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)로 표현될 수 있다.
Figure pct00021
상기 식에서 N은 윈도우의 크기(일반적으로는 DFT 크기와 동일함)이고, α는 보통은 정수이고, N은 값 0에서 N-1까지의 인덱스이다.
각 시퀀스의 이산 시간 푸리에 변환(DTFT: discrete time Fourier transform)은 다음과 같이 될 수 있다.
Figure pct00022
상기 식에서,
Figure pct00023
DFT의 경우에, 윈도우는
Figure pct00024
의 배율로 샘플링된다. 따라서, 샘플링 과정 중에 3개의 비제로(nonzero) 샘플만을 구하게 된다. 이들 샘플의 위치는
Figure pct00025
, 0, 및
Figure pct00026
이며, -(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가 회전 인자 행렬인 경우,
Figure pct00027
인 복소 식을 갖는다. 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까지이다.
따라서,
Figure pct00028
이고, k 및 n은 0부터 N/2-1까지이다. L=N/2라고 하면,
Figure pct00029
이고, k 및 n은 0부터 L-1까지이다. 도 5에 나타낸 바와 같이, F1을 수평으로 F1a 및 F1b로 나누면,
Figure pct00030
이며, k는 0부터 N/2-1까지이며, n은 0부터 L-1까지이고,
Figure pct00031
이며, k는 L/2부터 L-1까지이며, n은 0부터 L-1까지이다.
k가 0부터 L/2-1까지이면, F1b는 다음과 같이 표현할 수 있다.
Figure pct00032
상기 식에서,
Figure pct00033
식 18은 도 6에 나타낸 바와 같이, z 평면에서 4개의 대칭점(80~86)을 나타낸다.
이상으로부터, DFT 기본 식 6 및 7은 다음과 같이 다시 나타낼 수 있다.
Figure pct00034
Figure pct00035
A는 k에 따라,
Figure pct00036
또는
Figure pct00037
이 된다.
Figure pct00038
k는 0부터 N/4-1까지이다.
Figure pct00039
A는 k에 따라,
Figure pct00040
또는
Figure pct00041
이다.
따라서, 인덱스 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)

  1. 이산 주파수 이산 푸리에 변환(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)하는 단계
    를 포함하는 것을 특징으로 하는 계산 방법.
  2. 제1항에 있어서,
    상기 이산 푸리에 변환(DFT) 행렬은 실수(real) DFT 계수를 포함하며, 상기 회전 인자 행렬은 실수 회전 인자 값을 포함하는, 계산 방법.
  3. 제1항에 있어서,
    상기 DFT 행렬은 허수(imaginary) DFT 계수를 포함하며, 상기 회전 인자 행렬은 허수 회전 인자 값을 포함하는, 계산 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    주파수 영역에서 상기 DFT 계수에 대하여 윈도우 함수(windowing function)를 실행하기 위해 콘볼루션(convolution)을 사용하는 단계;
    상기 윈도우 함수의 비제로(nonzero) 값을 기억하는 단계; 및
    상기 DFT 계수에 상기 비제로 값을 적용하는 단계를 더 포함하는 계산 방법.
  5. 제4항에 있어서,
    상기 윈도우 함수는 해밍(Hamming) 윈도우인 것인, 계산 방법.
  6. 이산 주파수 이산 푸리에 변환(DFT) 계수의 행렬을 계산하는 방법으로서,
    청구항 1의 단계 (a) 및 단계 (b)를 수행하여, 실수 회전 인자 값을 포함하는 회전 인자 행렬(twiddle factor matrix)에 대하여 실수 DFT 계수의 행렬을 계산하는 단계; 및
    청구항 1의 단계 (a) 및 단계 (b)를 수행하여, 허수 회전 인자 값을 포함하는 회전 인자 행렬에 대하여 허수 DFT 계수의 행렬을 계산하는 단계를 더 포함하는 계산 방법.
  7. 제6항에 있어서,
    상기 단계 (b)의 (ii)는,
    상기 실수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 하나의 절반 부분을 형성하는 실수 회전 인자를 포함하는 곱셈을 수행하는 단계;
    상기 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 하나의 절반 부분을 형성하는 허수 회전 인자를 포함하는 곱셈을 수행하는 단계;
    실수 회전 인자에 대하여, 상기 실수 회전 인자의 우측 절반의 상부 절반 또는 하부 절반 중의 다른 하나의 절반 부분을 형성하여, 상기 실수 또는 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 상기 하나의 절반 부분에서 대응하는 곱셈으로부터 상기 곱셈 결과를 유추(infer)하는 단계; 및
    허수 회전 인자에 대하여, 상기 허수 회전 인자의 우측 절반의 상부 절반 또는 하부 절반 중의 다른 하나의 절반 부분을 형성하여, 상기 실수 또는 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 상기 하나의 절반 부분에서 대응하는 곱셈으로부터 상기 곱셈 결과를 유추하는 단계를 포함하는, 계산 방법.
  8. 이산 푸리에 변환(DFT) 계수의 행렬을 계산하기 위한 장치로서,
    샘플의 제1 프레임에 대하여, 상기 제1 프레임에 대한 DFT 계수의 행렬을 계산하기 위해 이산 시간 신호(discrete-time signal)의 샘플의 프레임에 회전 인자 행렬(twiddle factor matrix)을 곱하도록 구성된 계산 블록; 및
    상기 샘플의 프레임 중의 뒤의 절반(second half)에 상기 회전 인자 행렬의 우측 절반(right half)을 곱한 계산 결과를 기억시키기 위한 메모리 디바이스
    를 포함하며,
    상기 계산 블록은, 샘플의 선행하는 프레임에 대하여 절반이 중첩되는 후속하는 프레임에 대하여, (i) 상기 선행하는 프레임으로부터 미리 기억된 계산을 인출하고, 제2 프레임마다 미리 기억된 계산의 부호를 반전시키며, (ii) 상기 샘플의 현재 프레임의 뒤의 절반에 상기 회전 인자 행렬의 우측 절반을 곱하고, 그 결과의 계산을 기억하고, (iii) 상기 (i) 및 (ii)의 과정에 의해 생긴 결과를 가산하도록 구성된 것을 특징으로 하는 장치.
  9. 제8항에 있어서,
    상기 계산 블록은 행렬 곱셈(matrix multiplication)을 수행하기 위한 곱셈-누산(MAC: multiply-accumulate) 블록을 포함하는, 장치.
  10. 제8항 또는 제9항에 있어서,
    상기 장치는 주파수 영역에서 DFT 계수에 윈도우 함수를 적용하기 위한 콘볼루션(convolution) 블록을 더 포함하며,
    상기 콘볼루션 블록은,
    상기 윈도우 함수의 비제로 값을 기억하기 위한 메모리 유닛; 및
    상기 비제로 값을 상기 DFT 계수에 적용하기 위한 곱셈-누산(MAC) 블록을 포함하는, 장치.
  11. 이산 푸리에 변환(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)의 과정에 의해 생긴 결과를 가산하도록 구성된 것을 특징으로 하는 장치.
  12. 제11항에 있어서,
    상기 계산 블록은 각각 행렬 곱셈을 수행하기 위한 곱셈-누산(MAC) 블록을 포함하는, 장치.
  13. 제11항 또는 제12항에 있어서,
    상기 장치는, 주파수 영역에서 실수 DFT 계수에 윈도우 함수를 실행하기 위한 제1 콘볼루션 블록; 및
    상기 주파수 영역에서 허수 DFT 계수에 윈도우 함수를 실행하기 위한 제2 콘볼루션 블록을 더 포함하며,
    상기 콘볼루션 블록은 각각 윈도우 함수의 비제로 값을 기억하기 위한 메모리 유닛과, 상기 DFT 계수에 상기 비제로 값을 적용하기 위한 곱셈-누산(MAC) 블록을 포함하는, 장치.
  14. 제11항 내지 제13항 중 어느 한 항에 있어서,
    상기 제1 계산 블록은 상기 실수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 하나의 절반 부분을 형성하는 실수 회전 인자를 포함하는 곱셈을 수행하도록 구성되며, 상기 제2 계산 블록은 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 하나의 절반 부분을 형성하는 허수 회전 인자를 포함하는 곱셈을 수행하도록 구성되고,
    상기 장치는,
    상기 실수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 다른 절반 부분을 형성하는 실수 회전 인자에 대하여, 상기 실수 또는 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 하나의 절반 부분에서 대응하는 곱셈으로부터 곱셈 결과를 상기 제1 메모리 디바이스에 가산하도록 구성된 제1 가산기; 및
    상기 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 다른 절반 부분을 형성하는 허수 회전 인자에 대하여, 상기 실수 또는 허수 회전 인자 행렬의 우측 절반의 상부 절반 또는 하부 절반 중의 하나의 절반 부분에서 대응하는 곱셈으로부터 곱셈 결과를 상기 제2 메모리 디바이스에 가산하도록 구성된 제2 가산기를 더 포함하는, 장치.
KR1020117008014A 2008-09-10 2009-09-10 이산 푸리에 변환 계수의 행렬을 계산하는 방법 및 장치 KR20110081971A (ko)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190113494A (ko) * 2018-03-26 2019-10-08 삼성디스플레이 주식회사 변환 기반 스트레스 프로파일 압축

Families Citing this family (8)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
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