산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial Internet of Things >> 임베디드

LPC55S69 MCU에서 고속 푸리에 변환 계산

이 기사에서는 LPC55S69 MCU가 FFT(고속 푸리에 변환)를 계산할 수 있도록 하는 PowerQuad의 또 다른 부분인 변환 엔진을 조사합니다.

NXP의 LPC55S69 마이크로컨트롤러에는 다양한 애플리케이션에 적합하도록 하는 많은 기능이 포함되어 있습니다. LPC55S69 MCU와 PowerQuad 장치에는 다양한 작업을 완료하는 데 사용되는 고유한 구성 요소인 Biquad 및 Transform Engine이 포함되어 있어 기본 CPU 코어를 다른 작업에 사용할 수 없습니다.

이전 기사인 임베디드 마이크로컨트롤러를 사용한 디지털 필터링 이해에서는 시간 영역에서 데이터 샘플을 필터링하고 처리하는 데 널리 사용되는 다양한 방법을 살펴보았습니다. 이를 위해 LPC55S69의 PowerQuad 유닛의 Biquad 엔진을 활용했습니다.

이 문서에서는 LPC55S69 MCU가 FFT(고속 푸리에 변환)를 계산할 수 있도록 하는 PowerQuad의 또 다른 부분인 변환 엔진을 조사합니다.

이산 푸리에 변환 이해

길이 및 온도와 같은 일상적인 측정을 처리할 때 측정 대상의 크기와 온도를 결정하기 위한 도구 세트가 있습니다. 시간 영역 신호의 경우 측정 도구의 선택이 그다지 명확하지 않을 수 있습니다. 그림 1에 제공된 다음 신호 예를 고려하십시오.

그림 1. 일정한 간격으로 샘플링된 입력 신호입니다.

이 신호를 어떻게 측정, 이해 및 설명할 수 있습니까? 가능한 선택은 진폭, 주파수 또는 통계의 방법으로 계산된 여러 값일 수 있습니다. 시작하는 한 가지 방법은 그림 2와 같이 알려진 코사인파에 대해 관심 신호를 측정하는 것입니다.

그림 2. 코사인 게이지 신호 옆의 입력 신호. 둘 다 샘플 수가 동일합니다.

코사인파의 진폭과 주파수는 쉽게 고정되어 식별할 수 있으므로 코사인파를 입력 신호와 비교할 수 있습니다. 올바르게 수행되면 입력 신호와 코사인파 간의 내적 결과 값이 입력 신호가 게이지와 얼마나 상관관계가 있는지를 수량화합니다. 이를 위해 입력 및 게이지 신호를 동일한 길이의 개별 입력 배열로 생각하는 것이 합리적이며 내적 계산이 쉬워집니다.

결과는 스칼라이며 그 크기는 입력 신호가 코사인 게이지 신호와 얼마나 잘 상관되는지에 비례합니다. 내적 연산은 여러 곱셈 및 덧셈 연산으로 요약됩니다. 이는 임베디드 마이크로컨트롤러를 사용한 디지털 필터링 이해에서 설명한 것과 동일한 연산입니다.

이 방법은 빠르게 좋은 결과를 낳습니다. 그러나 이 방법을 적용할 때 작동하지 않는 특별한 경우가 있습니다. 입력 신호가 게이지와 동일한 주파수를 갖는 코사인파이지만 게이지에 대해 위상이 90도 이동된 경우, 앞서 언급한 방법의 출력은 0이 됩니다. 육안 검사를 통해 게이지와 입력 신호 사이에는 여전히 상관 관계가 있는 것으로 보이지만 설명해야 할 세부 사항이 있습니다.

그림 3. 새 게이지 신호는 이전 신호와 비교하여 90도 위상 편이됩니다.

이 동작은 얇은 종이 조각의 "길이"를 측정하는 것과 비교할 수 있습니다. 자를 사용하여 종이 스트립의 한 면의 길이를 결정할 때 용지는 길이가 10인치이고 너비가 1인치일 수 있습니다. 두 숫자 모두 정확하지만 두 측정값을 모두 얻으려면 자를 90도 회전해야 했습니다. 두 숫자 모두 기술적으로 정확하며 함께 사용하여 종이 조각의 실제 "크기"(길이 및 너비)를 얻을 수 있습니다. 입력 신호 측면에서 이 문제를 극복하기 위해 그림 4와 같이 두 번째 게이지를 사용할 수 있습니다.

그림 4. 두 게이지 신호 모두 입력 신호를 더 잘 정량화하는 데 사용할 수 있습니다.

두 게이지(보라색과 녹색으로 표시) 간의 유일한 차이점은 90도 위상 변이입니다. 이전 비유에서 이것은 자를 회전시키는 것과 같습니다. 내적은 입력 신호와 각 게이지 사이에서 계산되어 최종 출력을 얻습니다. 이렇게 하면 각각 입력이 게이지 중 하나와 얼마나 잘 연관되는지를 포함하는 두 개의 값 A와 B가 생성됩니다. 일반적으로 단일 복소수로 간주됩니다.

출력 =B + i * A

다음 단계는 입력 신호를 주파수가 다른 게이지 범위와 비교하는 것입니다(그림 5).

그림 5. 여러 게이지도 적용할 수 있습니다. 녹색은 보라색에 비해 90도 이동합니다.

이미지에서 볼 수 있듯이 최종 결과는 몇 가지 다른 게이지를 통합합니다. 가상 부분(보라색으로 표시)은 위에 표시된 2 게이지 예에서와 같이 녹색 신호(실제 부분)와 비교하여 90도 위상 편이됩니다. 다른 게이지의 수에는 제한이 없습니다.

이산 푸리에 변환(DFT)이라고 하는 이 기술을 사용하면 문제에 대한 모든 관심 주파수에서 출력 스펙트럼이 생성됩니다. 기술을 수학적으로 다음과 같이 기술할 수 있습니다.

방정식 1. DFT에 대한 수학적 설명입니다.

여기서 N은 입력 신호의 샘플 수이고 k는 (코)사인 참조 게이지의 주파수입니다.

고속 푸리에 변환(FFT) 제한 사항

FFT는 위에서 논의한 방법과 비교하여 더 적은 곱셈 및 덧셈 연산을 필요로 하는 DFT를 계산하는 수치적으로 효율적인 방법입니다. 그러나 입력에 몇 가지 제한 사항이 있습니다.

<올>
  • 입력의 길이는 2의 거듭제곱이어야 합니다.
  • 임의의 입력 길이와 출력의 주파수 간격은 허용되지 않습니다. 출력 빈은 입력 신호의 샘플 레이트를 입력의 샘플 수로 나눈 간격입니다. 예를 들어 입력이 48kHz에서 샘플링된 256포인트 신호인 경우 출력 배열은 187Hz(48.000 나누기 256) 간격의 주파수에 해당합니다.
  • 입력이 실수(예:ADC에서 얻은 샘플)로 구성된 경우 출력은 대칭입니다. 예를 들어 입력이 64개의 샘플로 구성된 경우 FFT 결과도 64개의 복소수로 구성됩니다. 그러나 출력 배열의 후반부는 전반부의 복소수 켤레를 포함합니다.
  • PowerQuad FFT 엔진 사용

    DFT/FFT 연산 이면의 수학은 간단한 곱셈 및 덧셈 연산으로 수행할 수 있으며, 이는 LPC55S69 MCU의 PowerQuad와 같은 전용 보조 프로세서에 수학 연산을 아웃소싱하는 데 이상적입니다. 이 때문에 주 CPU 코어는 다른 작업을 자유롭게 수행할 수 있습니다.

    PowerQuad FFT 엔진을 활용하는 과정은 간단하며 공식 SDK에는 공동 처리 기능을 보여주는 예제 프로젝트가 함께 제공됩니다. 특히 powerquad_transform이라는 한 가지 예는 FFT 계산 프로세스를 보여줍니다.

    powerquad_transform.c 파일에는 다양한 FFT 엔진 모드를 테스트하는 여러 함수가 포함되어 있습니다. 그 중 하나는 PQ_RFFTFixed16Example 함수입니다. 이 예는 16비트 정수 데이터를 허용하도록 PowerQuad를 초기화합니다. PowerQuad 변환 엔진은 정수만 지원하므로 부동 소수점 데이터는 미리 고정 소수점 값으로 변환해야 합니다.

    FILTER_INPUT_LEN은 입력 샘플의 수를 정의합니다. 출력 배열은 결과 값의 실수 부분과 허수 부분을 저장해야 하기 때문에 길이가 두 배입니다.

    그림 6. 코드의 이 부분은 테스트 데이터와 예상 결과를 정의합니다.

    마지막 배열에는 결과를 확인하기 위한 테스트 데이터가 포함됩니다. 배열의 두 번째 절반이 위에서 설명한 것처럼 복잡한 켤레를 어떻게 포함하는지 주목하십시오. 또한, 접합체는 동일하지 않습니다(예:쌍 76,-50 및 77,49). 어쨌든 데이터가 초기화되면 다음 데이터 구조를 사용하여 PowerQuad를 구성합니다.

    그림 7. 예제 프로그램의 이 부분은 PowerQuad 장치를 구성하고 초기화합니다.

    알고리즘이 오버플로되지 않도록 입력을 축소해야 합니다. 이 프로세스는 위 이미지의 두 번째 줄에서 발생합니다. FILTER_INPUTA_PRESCALER는 32(2의 5제곱) 샘플이 있기 때문에 5로 설정됩니다. 프리스케일링은 PowerQuad의 또 다른 하드웨어 기능이며 예상되는 테스트 결과에서 관찰된 부정확성의 원인일 가능성이 큽니다.

    모든 것이 설정되면 입력 및 출력 영역의 위치가 PQ_transformRFFT 함수에서 발생하는 PowerQuad 장치로 전달됩니다. 이 방법은 몇 가지 구성 레지스터를 설정하고 제어 레지스터에 기록하여 PowerQuad를 시작합니다. 이 예에서 CPU는 PowerQuad가 완료될 때까지 기다립니다. 대기가 항상 필요한 것은 아니며 PowerQuad는 CPU가 다른 작업을 수행하는 동안 비동기식으로 계산을 수행할 수 있습니다.

    수학적 연산에 PowerQuad 활용

    PowerQuad는 LPC5500 MCU 시리즈의 다양한 장치에서 사용할 수 있는 복잡한 수학 연산을 위한 보조 프로세서입니다. 여기에는 메인 CPU 코어와 독립적으로 수행할 수 있는 FFT를 효율적으로 계산하기 위한 특수 엔진이 포함되어 있습니다. LPC55S69 MCU용 SDK에는 PowerQuad를 설정하고 사용하는 방법에 대한 예제가 포함되어 있습니다.

    NXP의 커뮤니티 페이지에는 LPC55S69 MCU를 중심으로 한 광범위한 정보, 토론 및 기사가 포함되어 있습니다.

    업계 기사는 업계 파트너가 편집 콘텐츠에 적합하지 않은 방식으로 All About Circuits 독자와 유용한 뉴스, 메시지 및 기술을 공유할 수 있는 콘텐츠 형식입니다. 모든 산업 기사는 독자에게 유용한 뉴스, 기술 전문 지식 또는 이야기를 제공하기 위해 엄격한 편집 지침을 따릅니다. 업계 기사에 표현된 관점과 의견은 파트너의 것이며 반드시 All About Circuits 또는 해당 작성자의 의견은 아닙니다.


    임베디드

    1. 클라우드 컴퓨팅과 가상화 간의 관계 이해
    2. 최고의 클라우드 컴퓨팅 과정은 무엇입니까?
    3. 서버리스 도입의 가장 큰 장애물
    4. 클라우드 컴퓨팅 인프라; 기본 이해
    5. 큰 승리:게임 분야의 클라우드 컴퓨팅
    6. 클라우드로 전환해야 하는 이유 클라우드 컴퓨팅의 10가지 이점
    7. 영국의 상위 10개 클라우드 컴퓨팅 작업
    8. AI 컴퓨팅을 위한 뉴로모픽 칩 사례 만들기
    9. Advantech는 NVIDIA를 통해 클라우드에서 엣지까지 가속화된 컴퓨팅을 구현합니다.
    10. 엣지 컴퓨팅 혁명을 주도할 6가지 조직 유형