Morroc писал(а):У него немного не так - одна частота модулирована другой, т.е. сначала надо детектировать ЧМ, а потом искать в получившемся сигнале 123 Гц. Ну если первая часть решена - тогда да, причем одну частоту задетектить проще, чем в аоне нужно было городить.
У него же не МГц ?
тогда бы я предложил что-нить из к174-й серии (но тогда нужны катушки так не любимые даже железячниками, а уж про программеров даже и говорить не надо, даже сама аналоговая техника вызывает у них "ужас" - там же нельзя жить программе

)
В чём прелесть БПФ ?
На выходе спектр (набор) частот. (надеюсь это вы знаете).
т.е. частота 123 и 2350Гц будет просто присутствовать в виде силы сигнала (мощности) в 123-й и в 2350-й ячейке, после БПФ.
ОДНОВРЕМЕННО. Параллельно. Независимо от необходимого кол-ва полос которые нужно контролировать. А дальше вам решать, надо вам как-то использовать информацию о наличии этих частот, или нет.
Значит задача стоит - подобрать так параметры преобразования, чтобы объём вычислений мог быть выполнен в приемлимое время с приемлимой точностью.
123 Гц - это смешной параметр, ибо его нельзя выполнить даже на резонансных фильтрах. Либо делать расчёты с использованием цепочки кварцованных фильтров (боже, я даже не специалист в этом, но объясняю вам

), т.е.
либо
вы делаете полосовой фильтр - т.е. реагируете на полосу частот (от 115 до 130 Герц, например), тогда это простой аналоговый фильтр, который ставится на выходе ЧМ детектора (его можно выполнить на ОУ, надеюсь жёсткой постановки вопроса выполнять на процессоре тут нет?)?
либо
вы делаете DSP - цифровую обработку сигналов.
цифруете входящий сигнал и обрабатываете двумя возможными способами:
1. цифровая фильтрация (время прямо пропорционально кол-ву полос частот, здесь одна полоса).
2. БПФ (время обработки не зависит от кол-ва частот, но зависит от необходимой точности обработки, насколько точно вам нужно ловить частоты).
Например для
точности 10%, т.е. полоса 100 Гц, при максимальной частоте 1000 Гц. Т.е. вы реагируете на сигнал, если он появился в полосе, например 500-600 Гц, НО точно, какая частота в исходном сигнале, вы определить не можете. Тогда вам нужно 10-точечное преобразование ДПФ (дискретное), в случае БПФ это будет 16-ти точечное (32 "бабочки").
второй пример -
точность 1% (аналоговый фильтр уже весьма дорогой будет). Точность обработки - полоса в 10Гц. Вам нужно 100-точечное преобразование ДПФ или 128 точечное БПФ (448 "бабочек").
Время обработки этого БПФ больше в 14 раз, чем в 1-м примере.
Бабочка - это базовая операция в БПФ. для 1-битного сигнала (есть-нет) достаточно операции XOR и пары сложений - это и будет "бабочка".
Кол-во бабочек - это объём вычислений, которые надо произвести для одного "кадра", т.е. полного спектра входного сигнала.
Почему кадра?

Потому что для получения полной прямой спектроскопии входного сигнала для прямого наблюдения нужно не менее 8-16 кадров в секунду (как в кино, чем больше, тем плавнее). Оттуда и пришло - 1 спектр - 1 "кадр".