LPC55S69 PowerQuad 엔진을 활용한 효율적인 FFT 계산
LPC55S69 PowerQuad 엔진을 활용한 효율적인 FFT 계산
NXP LPC55S69 마이크로컨트롤러는 고성능 신호 처리를 위해 설계되었습니다. 그 PowerQuad 코프로세서는 Biquad 필터와 변환 엔진, 두 가지 특수 엔진을 내장합니다. Biquad가 시간 영역 필터링을 처리하는 동안, 변환 엔진은 Cortex-M33 코어의 최소 개입으로 고속 푸리에 변환(FFT)을 실행하여 다른 작업을 위해 코어를 자유롭게 합니다.
이산 푸리에 변환 이해하기
시간 영역에서 포착된 신호는 주파수 영역에서 가장 잘 해석되는 경우가 많습니다. 이산 푸리에 변환(DFT)은 샘플링된 신호가 다양한 주파수의 사인 및 코사인 기저 함수와 얼마나 정렬되는지 정량화합니다.
그림 1에 표시된 샘플링된 입력 신호를 고려해 보세요:

참조 코사인과의 상관관계 설명
입력을 참조 코사인 파동(그림 2 참조)과 비교함으로써, 내적은 상관 강도를 나타내는 스칼라를 산출합니다. 그러나 입력과 참조 사이에 90° 위상 이동이 있으면 신호가 분명히 관련되어 있음에도 내적이 사라집니다.

동위상과 직교 성분을 모두 포착하기 위해 90° 이동된 두 번째 참조를 사용하여, 함께 복소수를 형성하는 두 상관 값을 생성합니다:
output = B + i·A
이 접근법을 주파수 범위로 확장하면 전체 DFT 스펙트럼이 생성됩니다.

수학적 공식화
DFT는 다음과 같이 정의됩니다:
X(k)=\sum_{n=0}^{N-1} x(n)·e^{-j2πkn/N}
여기서 N은 샘플 수이고 k는 출력 주파수 빈의 인덱스입니다.
고속 푸리에 변환 (FFT) 제한사항
- 입력 길이는 2의 거듭제곱이어야 합니다.
- 주파수 빈은
fs/N에서 균일하게 간격이 있습니다(예: 48kHz에 256 샘플이면 187Hz 간격). - 실수 값 입력은 대칭 출력을 생성하며, 후반부는 전반부의 켤레 복소수를 포함합니다.
PowerQuad FFT 엔진 사용하기
PowerQuad의 변환 엔진은 고정 소수점 곱셈-누적 연산을 사용하여 FFT 알고리즘을 구현하므로 저전력, 실시간 애플리케이션에 이상적입니다. NXP SDK는 바로 실행 가능한 예제를 제공하며, powerquad_transform 프로젝트는 고정-16 FFT 워크플로를 시연합니다.
핵심 루틴인 PQ_RFFTFixed16Example은 16비트 정수 데이터를 위해 엔진을 초기화합니다. 부동소수점 샘플은 미리 고정 소수점으로 스케일링해야 합니다.
주요 구성 매개변수:
FILTER_INPUT_LEN – 입력 샘플 수. - 출력 배열 길이 – 실수부와 허수부를 저장하기 위해 입력 길이의 두 배.
FILTER_INPUTA_PRESCALER – 오버플로 방지를 위해 입력 스케일링(예: 32 샘플에 5 설정).
예제 코드 스니펫은 아래 그림 6과 그림 7에 나와 있습니다.


구성 후 PQ_transformRFFT가 계산을 시작합니다. CPU는 완료를 폴링하거나 다른 작업을 진행할 수 있어 진정한 비동기 처리가 가능합니다.
핵심 요약
- LPC55S69의 PowerQuad는 임베디드 DSP를 위한 고효율, 저지연 FFT 경로를 제공합니다.
- 고정 소수점 연산은 신중한 스케일링이 필요하며, SDK의 예제 프로젝트가 이를 자동으로 처리합니다.
- 비동기 실행은 메인 코어를 자유롭게 하여 전체 시스템 성능을 향상시킵니다.
더 깊은 탐구를 위해 NXP LPC55S69 SDK와 PowerQuad 포럼의 커뮤니티 논의를 참조하세요.