Цитата(Волощенко @ Aug 27 2007, 12:53)

Похоже, Вы работаете с восьмью TDM-потоками, где есть битовая и цикловая синхронизация. Тогда нужно будет:
1. Выделить из потоков нужный канальный интервал (отбрасывая сигнальные) и принять его байт.
2. Учитывая, что все байты сжаты по А-закону (типа плавающая запятая), развернуть их до 14-разрядов.
3. Выполнить фильтрацию по всем исследуемым гармоникам на интервале в 10 мс (можно 8 или 5 мс).
4. Вычислить текущий порог (можно усреднением).
5. Выбрать два наибольших значения кода гармоник по порогу или просто наибольшие.
6. Сделать обработку на подтверждение (коды должен повторяться 40..90мс). Далее определить DTMF-цифру.
А в целом, здесь много путей-решений, Вам выбирать оптимальный. Задача из сложных.
В этом перечне интересует пункт 3.
Цитата(I.S.A. @ Aug 27 2007, 13:10)

Я лично писал диплом на тему "РАЗРАБОТКА МНОГОКАНАЛЬНОГО МНОГОЧАСТОТНОГО ЦИФРОВОГО ФИЛЬТРА ДЛЯ ПРИМЕНЕНИЯ В СИСТЕМАХ ТЕЛЕКОММУНИКАЦИИ"..... необходимо разработать цифровой фильтр, со следующими параметрами: одновременная работа с 256 каналами; по каждому каналу необходимо выделять 8-мь различных частот из 32-х, заранее заданных; значения выделяемых частот должны задаваться управляющей программой устройства, на котором установлен данный фильтр.
Там, где я работал, один Гуру создал такую систему и одно из применений - выделение DTMF. Идеальный фильтр - синхронный детектор, очень прост в реализации и понимании! Он был реализован в Altera ACEX1K.
Впечатляет! Одно смущает - мне нужен узел поскромнее, а в этом случае может оказаться подходящим другой способ реализации. Хотя, ACEX1K не очень мощная штука ( а кстати, конкретно какая модель - они сильно отличаются по ресурсам ), может поместится аналогичная вещь и меня. Ну а какие-нибудь ссылки или подсказки есть?. А то с нуля выдумывать такую вещь трудно.