Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Прием DTMF в ИКМ тракте с помощью FPGA.
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
bsp
Вот возникла необходимость организовать прием в FPGA ( причем конкретно в семействе Cyclon ) DTMF сигналов, приходящих в цифровом виде из ИКМ тракта. Поиск в интерете и на форуме как-то не очень помог. По фильтрации информации много, но ведь просто городить несколько фильтров с последующей обработкой неохота. Во первых, вид реализации и параметры фильтров еще надо выбрать для данного применения оптимальным образом, исходя из частично неведомых мне критериев - надо что-то почитать про это. Во вторых, возможно, эффективнее задача решается не в лоб, а каким-то методами спектрального анализа или комбинацией методов. Кроме того, принимаемые сигналы имеют конкретные критерии и допуски для опознавания, типа допустимые уровни, соотношения уровней двух частот итд, что может позволить оптимизировать устройство. Нельзя забывать и про шумовые своства канала и помехи. В общем, буду благодарен за любую информацию и указания на ссылки по теме и про прием DTMF вообще.
Волощенко
Цитата(bsp @ Aug 26 2007, 10:36) *
Во вторых, возможно, эффективнее задача решается не в лоб, а каким-то методами спектрального анализа или комбинацией методов.
. . . . . . . . .
В общем, буду благодарен за любую информацию и указания на ссылки по теме и про прием DTMF вообще.

Мало исходных данных и ограничений налагаемых на способ решения задачи.
1. Здесь ИКМ-30 или другой? Съем сигнала из потока TDM в уровнях ТТЛ?
2. Можно фильтровать на FPGA либо квадратурной сверткой (это применял сам), либо алгоритмом Герцеля, а далее пороговая обработка. Информации по Герцелю много в Интернете, есть немного здесь http://www.gaw.ru/html.cgi/txt/doc/micros/...v/max2000_1.htm. А можно применить специализированную аналоговую ИМС с кодовым выходом (тоже применял).
bsp
Спасибо за ответ, а ситуацию действительно надо описать подробнее.
Существует несколько устройств, имеющих в своем составе Cyclon ep1c3tc100c8 или ep1c3tc144c8
( причем заложена возможность вместо ep1c3tc144c8 устанавливать ep1c6tc144c8 ). На этих Циклонах, помимо прочих узлов, реализован коммутатор на 8 ИКМ-30 трактов, на который приходит классический ИКМ-30 ( только речевые сигналы, без сигнализации, но это не имеет значения ). Надо создать несколько ( два уже было-бы неплохо ) приемников DTMF сигнала, каждый из которых будет работать с одним канальным интервалом. Эти приемники будут подключены к коммутатору. Информация, принятая приемниками может иметь не окончательный вид, а дополнительно обрабатываться внешним контроллером ARM, но сильно загружать его и канал связи к нему интенсивной обработкой нельзя, но какую нибудь итоговую логически сложную обработку можно сделать. То есть уже ARM может решать, какая цифра пришла и пришла или нет и.т.д.

Как видите, система уже сложилась, существует несколько разных плат и модулей и вот туда надо добавить приемники DTMF сигнала. Сколько для этого надо ресурсов и каких - непонятно. В Циклонах большая часть ресурсов свободна, надо встроить в них. Применять внешние специализированные микросхемы или переразводить платы неприемлемо, да и в некоторых случаях места для дополнительных узлов нет. Так-что если есть советы или ссылки по реализации таких приемников в FPGA ( и вообще по DTMF приемникам ) - приму с благодарностью. В связи с FPGA информация может быть не только по Алтеровским микросхемам. .
Волощенко
Цитата(bsp @ Aug 27 2007, 11:25) *
В Циклонах большая часть ресурсов свободна, надо встроить в них.
Похоже, Вы работаете с восьмью TDM-потоками, где есть битовая и цикловая синхронизация. Тогда нужно будет:
1. Выделить из потоков нужный канальный интервал (отбрасывая сигнальные) и принять его байт.
2. Учитывая, что все байты сжаты по А-закону (типа плавающая запятая), развернуть их до 14-разрядов.
3. Выполнить фильтрацию по всем исследуемым гармоникам на интервале в 10 мс (можно 8 или 5 мс).
4. Вычислить текущий порог (можно усреднением).
5. Выбрать два наибольших значения кода гармоник по порогу или просто наибольшие.
6. Сделать обработку на подтверждение (коды должен повторяться 40..90мс). Далее определить DTMF-цифру.
А в целом, здесь много путей-решений, Вам выбирать оптимальный. Задача из сложных.
I.S.A.
Я лично писал диплом на тему "РАЗРАБОТКА МНОГОКАНАЛЬНОГО МНОГОЧАСТОТНОГО ЦИФРОВОГО ФИЛЬТРА ДЛЯ ПРИМЕНЕНИЯ В СИСТЕМАХ ТЕЛЕКОММУНИКАЦИИ"..... необходимо разработать цифровой фильтр, со следующими параметрами: одновременная работа с 256 каналами; по каждому каналу необходимо выделять 8-мь различных частот из 32-х, заранее заданных; значения выделяемых частот должны задаваться управляющей программой устройства, на котором установлен данный фильтр.

Там, где я работал, один Гуру создал такую систему и одно из применений - выделение DTMF. Идеальный фильтр - синхронный детектор, очень прост в реализации и понимании! Он был реализован в Altera ACEX1K.
bsp
Цитата(Волощенко @ 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 не очень мощная штука ( а кстати, конкретно какая модель - они сильно отличаются по ресурсам ), может поместится аналогичная вещь и меня. Ну а какие-нибудь ссылки или подсказки есть?. А то с нуля выдумывать такую вещь трудно.
I.S.A.
Цитата(bsp @ Aug 27 2007, 14:40) *
... Одно смущает - мне нужен узел поскромнее, а в этом случае может оказаться подходящим другой способ реализации. Хотя, ACEX1K не очень мощная штука ( а кстати, конкретно какая модель - они сильно отличаются по ресурсам ), может поместится аналогичная вещь и меня. Ну а какие-нибудь ссылки или подсказки есть?. А то с нуля выдумывать такую вещь трудно.


Держи, мне не жалко!

Узел-то как раз один, а по входам стоит хитрый мультиплексор, который перенаправляет ТЧ. Синхронный детектор - один из видов цифровой фильтрации. Если что-то дополнительное понадобится, пиши в icq.
bsp
Пошарил в интернете по наводкам сообщества - впечатление, что пол-мира принимает DTMF по алгоритму Герцеля. Попробовал разобраться, ничего страшного. Не надо хранить много промежуточных вычислений, умножителей мало. Уже проглядываются способы использования группового умножителя для разных частот ( в моих FPGA нет встроенных умножителей, надо их экономить ). Пока буду копать в этом направлении, если кто подкинет информацию в тему - буду признателен.
_Gyes_
Цитата(I.S.A. @ Aug 27 2007, 19:20) *
Держи, мне не жалко!

Узел-то как раз один, а по входам стоит хитрый мультиплексор, который перенаправляет ТЧ. Синхронный детектор - один из видов цифровой фильтрации. Если что-то дополнительное понадобится, пиши в icq.


Привет, а проект еще жив? получить есть возможность? Заранее спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.