Математичний алгоритм для точності вимірювань
Магазин 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
