Детектирование частоты в заданном диапазоне

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Прорезались зубы
Аватара пользователя
Сообщения: 239
Зарегистрирован: Вт сен 09, 2008 17:35:48
Откуда: Уфа

Сообщение MegaRazoR »

Специфика задачи такова что нельзя использовать ничего кроме самой ПЛИСки.
спасибо вам за ваше терпение и ваши подробные ответы ! :)
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 239
Зарегистрирован: Вт сен 09, 2008 17:35:48
Откуда: Уфа

Сообщение MegaRazoR »

pyzh_man писал(а):В массиве а и будут размещены: частота, амплитуда; частота, амплитуда...
Так что получается если в спектре есть гармоника к примеру 2001,1568759 Гц то в массиве "а" я увижу соответствующую запись ?
спасибо вам за ваше терпение и ваши подробные ответы ! :)
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 239
Зарегистрирован: Вт сен 09, 2008 17:35:48
Откуда: Уфа

Сообщение MegaRazoR »

Дописал

double ap::sqr(double x)
{ return x*x; }

double ap::pi()
{ return 3.14159265358979323846; }

Ошибка. Не опиcано ap. Где оно описано ?
спасибо вам за ваше терпение и ваши подробные ответы ! :)
Модератор
Аватара пользователя
Сообщения: 11169
Зарегистрирован: Чт окт 27, 2005 18:50:07
Откуда: из мест не столь отдалённых

Сообщение Сэр Мурр »

С такой точностью Вы не увидите. Частота дискретизации- 8000Гц.
Реклама
Эиком - электронные компоненты и радиодетали
Прорезались зубы
Аватара пользователя
Сообщения: 239
Зарегистрирован: Вт сен 09, 2008 17:35:48
Откуда: Уфа

Сообщение MegaRazoR »

Сэр Мурр писал(а):С такой точностью Вы не увидите. Частота дискретизации- 8000Гц.
А как связаны количество знаков после запятой частот БПФ с частотой дискретизации ?
спасибо вам за ваше терпение и ваши подробные ответы ! :)
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

MegaRazoR писал(а):Специфика задачи такова что нельзя использовать ничего кроме самой ПЛИСки.
Сэр Мурр прав делайте полосовой фильтр, но не аналоговый а цифровой. Вот гляньте http://www.eltech.spb.ru/techinfo.html?gid=13 , я уже устал заливать-переливать. Глава 6 Ваша. А всяческие определения до точности Вам по условию не нужны. Либо есть либо нет. Это и ищите на выходе фильтра.
PS. Matlab дает возможность спроектировать ЦФ и даже накидать код (и вроде на VHDL)
Последний раз редактировалось Meteor Пт ноя 06, 2009 13:50:57, всего редактировалось 1 раз.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 239
Зарегистрирован: Вт сен 09, 2008 17:35:48
Откуда: Уфа

Сообщение MegaRazoR »

Так все же БПФ дает на выходе последовательность из N элементов где N - размер выборки. Каждый элемент последовательности это значение амплитуды соответств-ей частоты.
т.е. так (для выборки 8000):
Номер ячейки(Гц): 0 1 2 3 4 5 6 7 ... 2000 ... 8000
Амплитуда(dB): 1 2 1 3 2 3 1 2 ... 224 ... 2

Или же на выходе получим последовательность "чатота, амплитуда" ?
спасибо вам за ваше терпение и ваши подробные ответы ! :)
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

MegaRazoR писал(а):А как связаны количество знаков после запятой частот БПФ с частотой дискретизации ?
Грубо говоря никак. Число знаков определяет характеристики окон. Знаки после запятой связаны с частотами среза и коэф. передачи (ослабления).
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

MegaRazoR писал(а): т.е. так (для выборки 8000):
Номер ячейки(Гц): 0 1 2 3 4 5 6 7 ... 2000 ... 8000
Амплитуда(dB): 1 2 1 3 2 3 1 2 ... 224 ... 2
Или же на выходе получим последовательность "чатота, амплитуда" ?
Не так. При разложении в спектр для Вашего случая все что выше 4000 - бессмысленно
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 239
Зарегистрирован: Вт сен 09, 2008 17:35:48
Откуда: Уфа

Сообщение MegaRazoR »

Так что же получается частоту типа 2001,312586459 выявить невозможно ?
спасибо вам за ваше терпение и ваши подробные ответы ! :)
Прорезались зубы
Аватара пользователя
Сообщения: 239
Зарегистрирован: Вт сен 09, 2008 17:35:48
Откуда: Уфа

Сообщение MegaRazoR »

Т.Е. Если частота дисрет. F то нет смысла делать выборку больше чем F/2 ?
спасибо вам за ваше терпение и ваши подробные ответы ! :)
Прорезались зубы
Аватара пользователя
Сообщения: 239
Зарегистрирован: Вт сен 09, 2008 17:35:48
Откуда: Уфа

Сообщение MegaRazoR »

Meteor писал(а):
MegaRazoR писал(а):Специфика задачи такова что нельзя использовать ничего кроме самой ПЛИСки.
Сэр Мурр прав делайте полосовой фильтр, но не аналоговый а цифровой. Вот гляньте http://www.eltech.spb.ru/techinfo.html?gid=13 , я уже устал заливать-переливать. Глава 6 Ваша. А всяческие определения до точности Вам по условию не нужны. Либо есть либо нет. Это и ищите на выходе фильтра.
PS. Matlab дает возможность спроектировать ЦФ и даже накидать код (и вроде на VHDL)
Каким образом тут можно применить фильтр ? Я ведь ищу только одну частоту хоть и лежит она в диапазоне частот.
спасибо вам за ваше терпение и ваши подробные ответы ! :)
Прорезались зубы
Аватара пользователя
Сообщения: 239
Зарегистрирован: Вт сен 09, 2008 17:35:48
Откуда: Уфа

Сообщение MegaRazoR »

Кстати еще ведь есть такое понятие как шум квантования. Т.е. любой процессор будет давать погрешность при реализации БПФ. Так если эта погрешность покрывает разряды после запятой искомой частоты то возможно БПФ здесь подойдет. Только как расчитать эту погрешность.
Т.е. в спектре видим 2000 Гц. А на самом деле это может быть любое значение от 1999,5 до 2000,5 Гц. Что-нибудь в этом роде.
спасибо вам за ваше терпение и ваши подробные ответы ! :)
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

MegaRazoR писал(а):Каким образом тут можно применить фильтр ? Я ведь ищу только одну частоту хоть и лежит она в диапазоне частот.
Вам по заданию дано (см. выше собственные опусы;) ) определить наличие частоты, при условии что она попадает в диапазон от и до. Т.е. надо выделить диапазон и определять в нем. О том сколько частот лежит в диапазоне одновременно ничего не сказано! Пусть будет одна.
MegaRazoR писал(а): Т.Е. Если частота дисрет. F то нет смысла делать выборку больше чем F/2 ?
Да, дело в том что после F/2 начинается перенос спектра, он будет зеркален по отношению к основному участку до F/2.
MegaRazoR писал(а): Так что же получается частоту типа 2001,312586459 выявить невозможно ?
Для ДПФ нет невозможно. Только применяя перемножение спектра. Но это головняк.
Не путайте шум квантования определяет точность представления каждого отсчета в выборке. Он (шум) повлияет на значение амплитуды и фазы, но не как на частоту.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 239
Зарегистрирован: Вт сен 09, 2008 17:35:48
Откуда: Уфа

Сообщение MegaRazoR »

Точняк с шумом ошибся.

Возвращаясь к вопросу о фильтре ... вот я применил этот алгоритм. И теперь выборка у меня содержит отфильтрованные отсчеты для заданного диапазона. Как теперь определить есть ли что-нибудь более менее мощное и стабильное в этом диапазоне ?
спасибо вам за ваше терпение и ваши подробные ответы ! :)
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

MegaRazoR писал(а):... вот я применил этот алгоритм. И теперь выборка у меня содержит отфильтрованные отсчеты для заданного диапазона. Как теперь определить есть ли что-нибудь более менее мощное и стабильное в этом диапазоне ?
У Вас фильтр работает в реальном времени и, по идее, он полосовой. А значит все что с него выходит не нулевое и выше шума является полезным сигналом. Может кто поправит меня в данной мыслЕ?
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 239
Зарегистрирован: Вт сен 09, 2008 17:35:48
Откуда: Уфа

Сообщение MegaRazoR »

ПЛИС не только фильтрует. На ПЛИСке еще куча других задач. Мне поручено разработать модуль программы для детектирования тонального вызова. Грубо говоря если моя функция возвращает главной функцие 1 то вызов есть 0 значит нет.
На счет реального времени это уж больно относительно.
Сначала АЦП оцифровывает на что уходит время. Затем отсчеты записываются в память ПЛИС. Затем данные обрабатываются. И только после этого выдается решение. На это уйдет около 500 мкс (+-200 мкс.).
спасибо вам за ваше терпение и ваши подробные ответы ! :)
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

MegaRazoR писал(а):На счет реального времени это уж больно относительно. Сначала АЦП оцифровывает на что уходит время. Затем отсчеты записываются в память ПЛИС. Затем данные обрабатываются. И только после этого выдается решение. На это уйдет около 500 мкс (+-200 мкс.).
Цифровая фильтрация предполагает тот момент что с учетом периода поступления данных производится рассчет всей системы. Т.е. после поступления 8001 отсчета АЦП из выборки будет выкинут (если фильтр КИХ) отсчет 1. Или же (БИХ-фильтр) будут учитываться все отсчеты с первого до отключения питания.
MegaRazoR писал(а):ПЛИС не только фильтрует. На ПЛИСке еще куча других задач.
Какие проблемы? Ваш модуль спокойно может быть интегрирован в более старшее устройство.
Я, например, не пишу всю систему сразу, а дроблю на кусочки, описываю их, отлаживаю. После из этих кусочков собираю куски, а из кусков-"кусище". И так пока все не сделаю. Вряд ли я один такой.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»