ПристроХта системирадюзв'язку,радюлокаци,раЫонавиацп
УДК 621.391
РЕАЛ1ЗАЦ1Я ШВИДКОГО ДИСКРЕТНОГО ПЕРЕТВОРЕННЯ ФУР'С НА 8-РОЗРЯДНИХ М1КРОКОНТРОЛЕРАХ
Фес1ч В.П., Корчовий О.В., Мовчанюк А.В.
Розглянут1 особливост1 реал1зацп швидкого дискретного перетворення Фур'е на 8-розрядних мжроконтролерах.
При виршенш ряду задач (контроль частоти напруги i коефщенту гар-мошк в джерелах безперебшного живлення; дослiдження характеристик динамiчних ланок з невисокою швидкодiею, тощо) спектр сигналу доцшь-но обчислювати на 8-розрядних мiкроконтролерах. Враховуючи те, що програмне забезпечення (ПЗ) для спектрального аналiзу дискретного сигналу на мiкроконтролерi (МК) мае бути компактним, ушверсальним, шви-дким i оптимiзованим пiд особливостi МК, найкраще реалiзовувати поста-влену задачу з використанням алгоритму швидкого дискретного перетво-рення Фур'е (ШДПФ) - оптимiзованим способом обчислення дискретного перетворення Фур'е (ДПФ). Розглянемо алгоритм по основi 2 (Яа^х-2) [1]. Иого щея полягае в наступному: повне обчислення ДПФ роздшяеться на комбшащю 2-елементних ДПФ, як мiстять названу "метелик" базову операщю множення i до-давання (рис. 1), I операци об'еднання Тх результатiв. Рис. 1
Х[0]о-
Х[4]о-
Х[2]<
Х[6]о-
Х[1]о-
Х[5]<
Х[3]<
Х[7]<
Стад ¡я 1 Стад1я 2 Стад ¡я 3
п ^ ^^^ \/ \ /
-1 \\//
п ^ ^^^ №2а у \ \хх/
-1 -1 ¡\j\hj\
\/ / \]\ \
-1 и/I / / \ \
п ^ ^^^ У \ и/2 / \
-1 -1 -1
Вихщнм даш в порядку реверсивних ¡ндекс1в
N. Множень у 1од2Л/
■оХи
■оХ[1]
= Х[2]
Х[3]
-°Х[4]
Х[5]
Х[6]
хт
комплексних чисел
Рис. 2. Алгоритм 8-точкового ШДПФ ЯаШх-2
50 Вкник Нащонального техшчного ушверситету УкраХни "КШ"
Серiя - Радютехмка. Радюапаратобудування.-2008.№37
Пристрог та система радюзв 'язку, радюлокаци, радюнавиацп
При реалiзащi 8-елементного ШДПФ по алгоритму Radix-2 юнцевий результат обчислюеться з використанням трьох каскадiв (рис.2). Базова операцiя 2-елементного ДПФ формуе основу всього обчислення. Результата обчислень на ушх стадiях розрахунк1в, помiщаються на мiсця, як поча-тково мiстили вихiднi вщл^ з часовоi областi x(n). Для роботи алгоритму елементи вихщного масиву x(n) мають бути впорядковаш з використанням алгоритму швертування бiтiв iндексiв елементiв (порядок слщування вихiдного масиву x(n) на рис. 2, N мае бути ступенем двшки [2]).
Для збершання вихщних даних i результатiв при виконанш ШДПФ по алгоритму Radix-2 потрiбно N комiрок пам'ятi для комплексних чисел (при виконанш ДПФ - N комiрок для вихщних даних i N комiрок для ре-зультатiв обчислень). Недостатнi ресурси 8-розрядних МК накладають ряд обмежень на ix обчислювальш можливостi. Для оптимiзацii алгоритму по швидкостi при знаходженш iнверсного порядку слiдування елементiв масиву вихщних даних i при знаходженш комплексного значення експоненти замють громiздкиx обчислень можна використати константш довiдковi таблицi значень, що записаш в пам'ять програм.
В бшьшосл компiляторiв 8-розрядних МК е тшьки 32-розрядний тип даних з плаваючою комою - float, використовуючи який можна добитись достовiрниx результатiв обчислень ШДПФ. Але обчислення зi змшними такого типу даних е громiздкими, виxiдний програмний код великим, а для збер^ання змiнниx такого типу необхщно багато оперативноi пам'ятi.
Шсля оцiнки необxiдноi точностi розраxункiв для 8-розрядних вхщних даних, запропоновано масиви для збер^ання виxiдниx даних та результат обчислень i деяких результат промiжниx обчислень описати 16-розрядними знаковими цшими змiнними типу int. В частинах програми, де необхщна висока точшсть промiжниx обчислень, яка суттево впливае на к1нцевий результат (знаходження експоненти комплексного числа в головному цикш, збшьшення степеня експоненти при обчисленнях в кожнш операцп «метелик») використати 32-розряднi знаковi типи даних з плаваючою комою. В кожнш операцп "метелик" при множеш елементiв виxiдного масиву на значення експоненти комплексного числа (де необхщно "узго-дити" типи int i float) використати функщю множення 16-розрядних знако-вих цших змiнниx на 32-розряднi знаковi з плаваючою комою, результат яко!' 16-розрядний знаковий цiлий.
При вибраному представлен також здiйснюеться оцiнка максимального значення ШДПФ, яке може бути при використанш вщповщних типiв даних. Масив вихщних даних е 8-розрядним, знаковим. Якщо сигнал на вхщ поступае в виглядi постiйноi напруги максимальноi амплiтуди (127 для знакозмiнноi 8-розрядно' вибiрки), то спектр буде повшстю визначатись значенням X(о) i дорiвнювати 16255, Переповнень значень змшних типу
BicHUK Нацюнального техтчногоутверситету Украгни "КП1" 51
Серiя — Радютехтка. Радюапаратобудування.-2008.-№37
ПристрЫ та система радюзв 'язку, радюлокаци, радюнавкацй'
int (-32768... 32767) не виникне.
Po3Mip оперативно!' пам'ят N байт визначае граничну кшьюсть N / 4 16-розрядних комплексних елеменпв ШДПФ. Але навiть тако! межi досяг-нути неможливо, оск1льки для виконання програми МК необхiдна певний розмiр оперативно! пам'ятi для збершання промiжних результатiв i для ор-ганiзацii стеку. Практично кiлькiсть елеменпв ШДПФ складае N / 8.
Для перевiрки реалiзацii алгоритму ШДПФ Radix-2 обраний 8-розрядний МК Atmega16 компанп Atmel. В якостi вихщних даних викорис-тано три 128-елементш масиви 8-розрядних цiлих знакових значень тесто-вих сигналiв (сума трьох синусо'д рiзних частот, прямокутний iмпульс i радiоiмпульс), записанi в пам'ять програм МК. Значення вибраного вихщ-ного сигналу зчитуються з пам'ят програм МК i записуються в оперативну пам'ять, шсля цього здшснюеться обчислення ШДПФ. Обрахованi коефь щенти кореляцп мiж результатами ШДПФ, отриманими за допомогою МК i «еталонними» результатами, отриманими в середовищi Matlab для трьох дослщжуваних сигналiв показав, що !'х значення (r1 = 0,9998, r2 = 0,9999, r3 = 0,9997) мають прийнятш межi. Час обчислення ШДПФ з використання вбудованого в МК апаратного помножувача, який вимiрювався з викорис-танням вбудованого 16-розрядного таймера-лiчильник склав 6124 мкс. Час обчислення ШДПФ без використання вбудованого в МК апаратного помножувача - 33578 мкс.
Програма обчислення ШДПФ на мовi С для 8-розрядного МК Atmega16 показала, що алгоритм ШДПФ Radix-2 можна використовувати в 8-розрядних малопотужних МК. Результати для 16-розрядних даних суттево не вiдрiзнятимуться вщ "еталонних" результатiв. Використання вбудованого апаратного помножувача зменшуе час розрахунюв.
Л1тература
1. Блейхут Р. Быстрые алгоритмы цифровой обработки сигналов.М.:Мир,1989.547 с.
2. http://www.neic.nsk.su/~mavr/LIB/Kester/05.pdf - Быстрое преобразование Фурье,
У. Кестер. 27 с.
Ключов1 слова: швидке перетворення Фур' e, nporpaMyBaHHA MiKpoKompo^epa
Фесич В.П., Карчевой А.В., Мовчанюк А.В. Реализация быстрого дискретного преобразования Фурье на 8-разрядных микроконтроллерах Рассмотрены особенности реализации быстрого дискретного преобразования Фурье на 8-разрядных микроконтролерах. Fisich V.P.,Korchovyy O.V.,Movchanyuk A.V. Realization of fast Fourier's transform by 8bit microcontrollers In present article considers peculiarity of realization Fast Fourier Transform by 8-bit microcontrollers.
52 BicHUK Нацюнального техтчногоутверситету Украти "КП1
Серiя — Радютехтка. Радюапаратобудування.-2008.-№37