Математический алгоритм для точности измерений

Магазин Gtest(R) предлагает широкую номенклатуру осциллографов на приводимой страничке сайта в самом конце настоящего Раздела, а также рекомендуемые приборы и статьи для самообразования  

Вычисление быстрых преобразований Фурье на микроконтроллере LPC55S69

В этой статье исследуется механизм преобразования, еще одна часть PowerQuad, которая позволяет микроконтроллеру LPC55S69 вычислять быстрое преобразование Фурье (БПФ).

 

Микроконтроллер LPC55S69 от NXP содержит множество функций, которые делают его подходящим для различных приложений. Микроконтроллер LPC55S69 и его блок PowerQuad включают в себя уникальные компоненты — Biquad и Transform Engines — которые используются для выполнения различных задач, оставляя основные ядра ЦП свободными для других целей. 

 

В предыдущей статье «Понимание цифровой фильтрации с помощью встроенных микроконтроллеров» были рассмотрены различные широко используемые методы фильтрации и обработки выборок данных во временной области.

 

Для этого он использовал движок Biquad блока PowerQuad LPC55S69.

 

В этой статье исследуется механизм преобразования, еще одна часть PowerQuad, которая позволяет микроконтроллеру LPC55S69 вычислять быстрое преобразование Фурье (БПФ).

Понимание дискретных преобразований Фурье

При выполнении повседневных измерений, таких как длина и температура, существует набор инструментов для определения размера и температуры конкретного измеряемого объекта. Для сигналов во временной области выбор измерительного инструмента может быть не таким очевидным.

Рассмотрим следующий пример сигнала, представленный на рисунке 1.

 



Рисунок 1. Входной сигнал, оцифровываемый с постоянным интервалом

 

Как этот сигнал можно измерить, понять и описать? Возможными вариантами выбора могут быть амплитуда, частота или несколько значений, рассчитанных статистическими методами. Один из способов начать — сравнить интересующий сигнал с известной ко-синусоидальной волной, показанной на рисунке 2.

 



Рисунок 2. Входной сигнал рядом с сигналом косинусного датчика. Оба имеют одинаковое количество образцов

Поскольку амплитуду и частоту ко-синусоидальной волны можно легко зафиксировать и, следовательно, идентифицировать, можно сравнить ко-синусоидальную волну с входным сигналом. Если все сделано правильно, результирующее значение скалярного произведения между входным сигналом и ко-синусоидальной волной определяет, насколько входной сигнал коррелирует с датчиком. Для этого разумно представить входной и измерительный сигнал как дискретные входные массивы одинаковой длины, и тогда будет легко вычислить скалярное произведение.

Результатом является скаляр, и его величина пропорциональна тому, насколько хорошо входной сигнал коррелирует с сигналом косинусного датчика. Операция скалярного произведения сводится к множеству операций умножения и сложения — той же операции, которая обсуждалась в разделе «Понимание цифровой фильтрации с помощью встроенных микроконтроллеров».

Этот метод быстро дает хорошие результаты. Однако есть частный случай, который не работает при применении этого метода. Если входной сигнал представляет собой ко-синусоидальную волну с той же частотой, что и датчик, но со сдвигом по фазе на 90 градусов относительно датчика, выходной сигнал вышеупомянутого метода будет равен нулю.   При визуальном осмотре оказывается, что корреляция между датчиком и входным сигналом все еще существует, но есть детали, которые нам необходимо учитывать.

 



Рисунок 3. Новый сигнал датчика сдвинут по фазе на 90 градусов по сравнению со старым

 

Такое поведение можно сравнить с измерением «длины» тонкой полоски бумаги. При использовании линейки для определения длины одной стороны бумажной полоски бумага может иметь длину 10 дюймов и ширину один дюйм. Оба числа верны, но для получения обоих измерений линейку пришлось повернуть на 90 градусов.   Оба числа технически верны, и мы можем использовать их вместе, чтобы получить истинный «размер» (длину и ширину) нашего листа бумаги. Чтобы преодолеть эту проблему с точки зрения входного сигнала, можно использовать второй датчик, как показано на рисунке 4.

 



Рисунок 4. Оба сигнала датчика можно использовать для лучшего количественного определения входного сигнала

 

Единственная разница между двумя датчиками (показаны фиолетовым и зеленым цветом) — это фазовый сдвиг на 90 градусов. В предыдущей аналогии это эквивалент вращения линейки. Скалярное произведение рассчитывается между входным сигналом и каждым из датчиков для получения окончательного результата. В результате получаются два значения A и B, каждое из которых показывает, насколько хорошо входные данные коррелируют с одним из датчиков. Обычно они рассматриваются как одно комплексное число:


Выход = B + i * A


Следующим шагом является сравнение входного сигнала с диапазоном датчиков с разными частотами (рис. 5).

 



Рисунок 5. Также можно применять несколько датчиков. Зеленые смещены на 90 градусов по сравнению с фиолетовыми

 

Как видно на изображении, конечный результат включает в себя несколько различных датчиков. Мнимая часть (показана фиолетовым цветом) сдвинута по фазе на 90 градусов по сравнению с зелеными сигналами (реальная часть), как и в примере с двумя датчиками, показанном выше.

 

Количество различных датчиков не ограничено.

 

Использование этого метода, называемого дискретным преобразованием Фурье (ДПФ), позволяет генерировать спектр выходных данных на всех частотах, представляющих интерес для задачи.

Математически эту технику можно сформулировать следующим образом:

 



Уравнение 1. Математическое описание ДПФ.

 

Где N — количество выборок во входном сигнале, а k — частота (ко)синусоидальных эталонных датчиков.

 

Ограничения быстрого преобразования Фурье (БПФ)

 

БПФ — это численно эффективный способ вычисления ДПФ, который требует меньше операций умножения и сложения по сравнению с методом, описанным выше. Однако на ввод есть несколько ограничений:

1. Длина входных данных должна быть степенью двойки.

2. Произвольные входные длины и интервал частот на выходе не допускаются. Выходные интервалы разнесены на частоту дискретизации входного сигнала, деленную на количество выборок во входе. Если входной сигнал представляет собой, например, 256-точечный сигнал, оцифрованный с частотой 48 кГц, выходные массивы соответствуют частотам, разнесенным на 187 Гц (48 000, разделенные на 256).

3. Когда входные данные состоят из действительных чисел (например, выборок, полученных с АЦП), выходной сигнал симметричен. Если входные данные, например, состоят из 64 выборок, результат БПФ также будет состоять из 64 комплексных чисел. Однако вторая половина выходного массива содержит комплексно-сопряженные значения первой половины.

Использование механизма БПФ PowerQuad

Математические операции, лежащие в основе операций ДПФ/БПФ, могут выполняться с помощью простых операций умножения и сложения, что идеально подходит для передачи математических операций выделенному сопроцессору, например PowerQuad на микроконтроллере LPC55S69. Благодаря этому основные ядра ЦП могут свободно работать над другими задачами.

 

Использование механизма БПФ PowerQuad — простой процесс, и официальный SDK включает примеры проектов, демонстрирующих функции совместной обработки. В частности, один пример, называемый powerquad_transform, демонстрирует процесс вычисления БПФ.

 

Файл powerquad_transform.c содержит несколько функций, проверяющих различные режимы механизма БПФ. Одна из них — функция PQ_RFFTFixed16 Example. В этом примере PowerQuad инициализируется для приема 16-битных целочисленных данных. Данные с плавающей запятой необходимо заранее преобразовать в значения с фиксированной запятой, поскольку механизм преобразования PowerQuad поддерживает только целые числа.

FILTER_INPUT_LEN определяет количество входных выборок. Выходной массив в два раза длиннее, поскольку в нем необходимо хранить действительную и мнимую части результирующих значений.

 



Рисунок 6. Эта часть кода определяет тестовые данные и ожидаемые результаты

 

Последний массив содержит тестовые данные для проверки результата. Обратите внимание, что вторая половина массива содержит комплексные сопряжения, как указано выше. Кроме того, конъюгаты не равны (например, пара 76,-50 и 77,49). В любом случае, после инициализации данных для настройки PowerQuad используется следующая структура данных:

 



Рисунок 7. Эта часть примерной программы настраивает и инициализирует устройство PowerQuad

 

Необходимо уменьшить масштаб входных данных, чтобы предотвратить переполнение алгоритма. Этот процесс происходит во второй строке на изображении выше. FILTER_INPUTA_PRESCALER имеет значение пять, поскольку имеется 32 выборки (два в пятой степени). Предварительное масштабирование — еще одна аппаратная функция PowerQuad, и она, вероятно, является причиной неточности ожидаемых результатов испытаний.

 

После того, как все настроено, расположение областей ввода и вывода передается в модуль PowerQuad, что происходит в функции PQ_transformRFFT. Этот метод устанавливает несколько регистров конфигурации и запускает PowerQuad путем записи в регистр управления. В этом примере ЦП ожидает завершения работы PowerQuad. Ожидание не всегда необходимо, и PowerQuad может выполнять вычисления асинхронно, пока ЦП выполняет другие задачи.

Используйте PowerQuad для математических операций

PowerQuad — это сопроцессор для сложных математических операций, доступный на различных устройствах серии микроконтроллеров LPC5500. Он включает в себя специальный механизм для эффективного расчета БПФ, который можно выполнять независимо от основных ядер ЦП. SDK для микроконтроллера LPC55S69 содержит примеры настройки и использования PowerQuad.

 

Страница сообщества NXP содержит обширную информацию, обсуждения и статьи, посвященные микроконтроллеру LPC55S69.

 Отраслевые статьи — это форма контента, которая позволяет отраслевым партнерам делиться полезными новостями, сообщениями и технологиями с читателями All About Circuits таким образом, для чего редакционный контент не очень подходит. Все отраслевые статьи подчиняются строгим редакционным правилам с целью предложить читателям полезные новости, технические знания или истории. Точки зрения и мнения, выраженные в отраслевых статьях, принадлежат партнеру и не обязательно принадлежат All About Circuits или его авторам.

Магазин Gtest® - авторизованный поставщик осциллографов в Украину: https://gtest.com.ua/izmeritelnye-pribory/ostcillografy

Сопутствующие Товары
Похожие статьи
Что такое dB и как применять эту единицу измерений. Часть 1
Что такое dB и как применять эту единицу измерений. Часть 1

Ссылка на страничку сайта Магазина Gtest(R) с предлагаемыми Анализаторами спектра, а также рекомендуемые приборы и статьи для дальнейшего самообразования - в самом конце этого РазделадБ или не дБ?В..

04.03.2024 4448
ТОЧНОСТЬ И КАЧЕСТВО ПОКАЗАНИЙ ЦИФРОВОГО МУЛЬТИМЕТРА. НАСКОЛЬКО ЭТО ВАЖНО.
ТОЧНОСТЬ И КАЧЕСТВО ПОКАЗАНИЙ ЦИФРОВОГО МУЛЬТИМЕТРА. НАСКОЛЬКО ЭТО ВАЖНО.

Ссылка на страничку сайта Магазина Gtest(R) с номенклатурой мультиметров, а также рекомендуемые приборы и статьи для дальнейшего самообразования - в самом конце этого РазделаБазовые концепцииКак опре..

23.09.2024 1207
Основные параметры для выбора осциллографа
Основные параметры для выбора осциллографа

Магазин Gtest(R) предлагает широкую номенклатуру осциллографов на приводимой в самом конце Раздела страничке сайта, а также рекомендуемые приборы и статьи для самообразования 1. Полоса пропуск..

07.03.2025 351