Страница 2 из 2

Добавлено: Пт ноя 06, 2009 13:01:47
MegaRazoR
Специфика задачи такова что нельзя использовать ничего кроме самой ПЛИСки.

Добавлено: Пт ноя 06, 2009 13:03:05
MegaRazoR
pyzh_man писал(а):В массиве а и будут размещены: частота, амплитуда; частота, амплитуда...
Так что получается если в спектре есть гармоника к примеру 2001,1568759 Гц то в массиве "а" я увижу соответствующую запись ?

Добавлено: Пт ноя 06, 2009 13:29:44
MegaRazoR
Дописал

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

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

Ошибка. Не опиcано ap. Где оно описано ?

Добавлено: Пт ноя 06, 2009 13:30:27
Сэр Мурр
С такой точностью Вы не увидите. Частота дискретизации- 8000Гц.

Добавлено: Пт ноя 06, 2009 13:40:00
MegaRazoR
Сэр Мурр писал(а):С такой точностью Вы не увидите. Частота дискретизации- 8000Гц.
А как связаны количество знаков после запятой частот БПФ с частотой дискретизации ?

Добавлено: Пт ноя 06, 2009 13:47:25
Meteor
MegaRazoR писал(а):Специфика задачи такова что нельзя использовать ничего кроме самой ПЛИСки.
Сэр Мурр прав делайте полосовой фильтр, но не аналоговый а цифровой. Вот гляньте http://www.eltech.spb.ru/techinfo.html?gid=13 , я уже устал заливать-переливать. Глава 6 Ваша. А всяческие определения до точности Вам по условию не нужны. Либо есть либо нет. Это и ищите на выходе фильтра.
PS. Matlab дает возможность спроектировать ЦФ и даже накидать код (и вроде на VHDL)

Добавлено: Пт ноя 06, 2009 13:49:36
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

Или же на выходе получим последовательность "чатота, амплитуда" ?

Добавлено: Пт ноя 06, 2009 13:53:39
Meteor
MegaRazoR писал(а):А как связаны количество знаков после запятой частот БПФ с частотой дискретизации ?
Грубо говоря никак. Число знаков определяет характеристики окон. Знаки после запятой связаны с частотами среза и коэф. передачи (ослабления).

Добавлено: Пт ноя 06, 2009 13:55:30
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 - бессмысленно

Добавлено: Пт ноя 06, 2009 13:56:52
MegaRazoR
Так что же получается частоту типа 2001,312586459 выявить невозможно ?

Добавлено: Пт ноя 06, 2009 13:58:36
MegaRazoR
Т.Е. Если частота дисрет. F то нет смысла делать выборку больше чем F/2 ?

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

Добавлено: Пт ноя 06, 2009 14:07:51
MegaRazoR
Кстати еще ведь есть такое понятие как шум квантования. Т.е. любой процессор будет давать погрешность при реализации БПФ. Так если эта погрешность покрывает разряды после запятой искомой частоты то возможно БПФ здесь подойдет. Только как расчитать эту погрешность.
Т.е. в спектре видим 2000 Гц. А на самом деле это может быть любое значение от 1999,5 до 2000,5 Гц. Что-нибудь в этом роде.

Добавлено: Пт ноя 06, 2009 14:11:20
Meteor
MegaRazoR писал(а):Каким образом тут можно применить фильтр ? Я ведь ищу только одну частоту хоть и лежит она в диапазоне частот.
Вам по заданию дано (см. выше собственные опусы;) ) определить наличие частоты, при условии что она попадает в диапазон от и до. Т.е. надо выделить диапазон и определять в нем. О том сколько частот лежит в диапазоне одновременно ничего не сказано! Пусть будет одна.
MegaRazoR писал(а): Т.Е. Если частота дисрет. F то нет смысла делать выборку больше чем F/2 ?
Да, дело в том что после F/2 начинается перенос спектра, он будет зеркален по отношению к основному участку до F/2.
MegaRazoR писал(а): Так что же получается частоту типа 2001,312586459 выявить невозможно ?
Для ДПФ нет невозможно. Только применяя перемножение спектра. Но это головняк.
Не путайте шум квантования определяет точность представления каждого отсчета в выборке. Он (шум) повлияет на значение амплитуды и фазы, но не как на частоту.

Добавлено: Пт ноя 06, 2009 14:36:58
MegaRazoR
Точняк с шумом ошибся.

Возвращаясь к вопросу о фильтре ... вот я применил этот алгоритм. И теперь выборка у меня содержит отфильтрованные отсчеты для заданного диапазона. Как теперь определить есть ли что-нибудь более менее мощное и стабильное в этом диапазоне ?

Добавлено: Пт ноя 06, 2009 14:42:43
Meteor
MegaRazoR писал(а):... вот я применил этот алгоритм. И теперь выборка у меня содержит отфильтрованные отсчеты для заданного диапазона. Как теперь определить есть ли что-нибудь более менее мощное и стабильное в этом диапазоне ?
У Вас фильтр работает в реальном времени и, по идее, он полосовой. А значит все что с него выходит не нулевое и выше шума является полезным сигналом. Может кто поправит меня в данной мыслЕ?

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

Добавлено: Пт ноя 06, 2009 15:11:01
Meteor
MegaRazoR писал(а):На счет реального времени это уж больно относительно. Сначала АЦП оцифровывает на что уходит время. Затем отсчеты записываются в память ПЛИС. Затем данные обрабатываются. И только после этого выдается решение. На это уйдет около 500 мкс (+-200 мкс.).
Цифровая фильтрация предполагает тот момент что с учетом периода поступления данных производится рассчет всей системы. Т.е. после поступления 8001 отсчета АЦП из выборки будет выкинут (если фильтр КИХ) отсчет 1. Или же (БИХ-фильтр) будут учитываться все отсчеты с первого до отключения питания.
MegaRazoR писал(а):ПЛИС не только фильтрует. На ПЛИСке еще куча других задач.
Какие проблемы? Ваш модуль спокойно может быть интегрирован в более старшее устройство.
Я, например, не пишу всю систему сразу, а дроблю на кусочки, описываю их, отлаживаю. После из этих кусочков собираю куски, а из кусков-"кусище". И так пока все не сделаю. Вряд ли я один такой.