реклама на сайте
подробности

 
 
> Вопросы по DTMF/DSP/алгоритму Герцеля, Вопросы от начинающего программиста DSP
megadocent
сообщение Dec 11 2009, 09:02
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 20-11-09
Из: Пермь
Пользователь №: 53 747



Здравствуйте.

Недавно начал работать над программированием DSP и столкнулся с рядом трудностей, появились вопросы, на которые не смог найти/понять ответа. sad.gif

Основная трудность - то, что в институте, в программе подготовки инженера-конструктора РЭА не было ЦОС. 07.gif
Самому с 0 приходится изучать весь этот огромный раздел, в частности цифровые фильтры/преобразования фурье и все связанное с этим, перерывая десятки сложных книг и сотни форумных сообщений.

Имеется вроде бы простое задание - сделать детектор DTMF сигналов + еще 1 частоты (итого 9 частот) на 30 каналов процессоре TMS320С672x (плавающая запятая, мощный достаточно, должен легко справиться).
Сначала хотел сделать это набором фильтров (это ведь называется банк фильтров?) фильтруя сигнал ЦФ/подсчитывая длительность сигнала, если его амплитуда после фильтрации имеет достаточный уровень. Выходило... не очень. В процессе изучения информации наткнулся на алгоритм герцеля, начал его изучать. Возник ряд вопросов.

1) Имеются требования, чтобы детектирование соответствовало ОСТ 45.54-95 - программа должна точно детектировать сигнал выше -20дб, и отклонением частоты менее 1.8% и не реагировать на сигнал слабее -37дб и с отклонением частоты более 3%. Ну и куча других параметров.

Из описания алгоритма не ясно, что будет, если мне надо определить, например, 697Гц и я подам, например, на 40 мс частоту 709 гц при уровне -19дб и суммарном уровне помех -40дб. Он ее должен различить, согласно госту. unsure.gif
Хочется узнать, если кто-то делал декодирование DTMF, или разбирается в этом хорошо, если сделаю по стандартному алгоритму (Например, реализации той же TI), то насколько соответствовать госту будет?

2) Насколько хорош вообще данный алгоритм? Есть альтернативы? Вопрос больше в плане точности детектирования, детектирование на фоне речи/музыки, хотя, конечно, какой-то жутко точный алгоритм, для реализации которого нужно будет по DSP на канал тоже практически непригоден. Как я понял, это самое оптимальное решение, к которому пришли за годы?

3) Встречаются разные варианты, различные модифицированные алгоритмы Герцеля, немного разные коэффициенты. Какой из выложенных в свободном доступе алгоритмов вы считаете наилучшим?

4) Хочу не просто программировать то, что придумали другие, а, самому разбираться в этом, а с опытом и придумывать свое. Со временем, конечно, разберусь в любом случае, но, если посоветуете хорошую литературу, это будет проще и приятнее. rolleyes.gif
Какую литературу посоветуете почитать, где подробно и, желательно, доступно описаны преобразования фурье, свертки и все с этим связанное? В методах проектирования ЦФ, аппроксимациях, Z преобразованиях я уже в общих чертах разобрался, а вот фурье пока неясен. В литературе ЦОС преобразования фурье чаще всего все даются либо в виде конечных формул, с комментариями типа "это сложно, детально разбирать не будем, но надо делать так", либо так, будто читатель разбуженный в полвторого ночи с ходу скажет в чем преобразование фурье заключается. Что-то типа "Дальнейшие действия исключительно просты, если помнить определение преобразования Фурье и формулу комплексного умножения" с последующими гигантскими формулами с одними "отсюда видно" и "это очень просто".

Буду благодарен любым ответам.

Сообщение отредактировал megadocent - Dec 11 2009, 09:16
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
fontp
сообщение Dec 11 2009, 09:19
Сообщение #2


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



Цитата(megadocent @ Dec 11 2009, 12:02) *
Здравствуйте.

Буду благодарен любым ответам.


1. Различит. В основном будет. Всегда можно придумать и добавить ещё несколько условий, которые немного
улучшают качество. Обычно на простую основную идею наворачивают много дополнительных проверок, чтобы попасть в стандарт. В частности, если нужно обнаружение на фоне голоса (in-band) обязательно кроме частот ДТМФ
добавляют к анализатору их 3-и гармоники. Наличие значительной 3-й гармоники вместе с частотой указывает на то, что это фальшивое случайное срабатывание от голоса. Голос всегда содержит 3-и гармоники.
Правда говорят, есть китайские умельцы, имитирующие голосом ДТМФ специально.

2. Есть альтернативы. Я встречал AR-оценивание спектра в аппаратуре крупнейшей североамериканской корпорации.
AR-модель по частоте непрерывна, и нет проблем с отсутствием точного совпадения частот анализа Герцеля (или ДПФ) с частотами ДТМФ. Эта проблема обостряется, когда стандарт требует ещё и высокое временное разрешение (Поскольку нужного частотного разрешения можно всегда добиться увеличивая кол-во отсчетов). Есть стандарт Bell для касовых аппаратов с временным разрешением 20 мс

3. Герцель и усеченный прямой ДПФ эквивалентны математически. Но по реализации Герцель - это в основном IIR фильтр 2-го порядка, а одна частота прямого суммирования в ДПФ по sin/cos таблице - это как 2 FIR 1-го порядка. Для такого процессора как 67 c длинным убойным конвейером ДПФ смотрится несколько лучше, поскольку не вводит зависимостей в цикле, как IIR. Если не жалко памяти на sin/cos таблицу. Во всяком случае на С ДПФ будет эффективней. Компилятор С никак не сможет вложить IIR второго порядка в один такт, если даже архитектура процессора позволяет. FIR сразу будет в 1. В ассемблере нужно смотреть, что позволит архитектура для IIR, но в любом случае ДПФ не хуже. Вообще-то Герцель - это ДПФ для бедных ))
Go to the top of the page
 
+Quote Post
megadocent
сообщение Dec 11 2009, 10:56
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 20-11-09
Из: Пермь
Пользователь №: 53 747



Спасибо за ответ, fontp.

Основное требование - соответствие ОСТ-у. Про временное разрешение там указано <20мс не принимать, >40мс принимать, от 20 до 40 не определено. Применяться будет в АТС.

AR-оценивание спектра - а как оно называется по-другому, в отечественной литературе? В литературе у себя что-то не нашел такого.

То есть вы советуете не применять Герцеля, а применять ДПФ? А во сколько раз, примерно, возрастут требования к вычислительным мощностям и объемам памяти?

И вопрос, если Герцель не так хорош, почему везде где упоминается DTMF сразу пихается Герцель? И для не очень-то слабых сигнальных процессоров у TI они тоже предлагают именно его. (У TI SPRAA096 для с54). И в практических применениях, и вообще, где бы то ни было, везде он? Всего раз в интернете мне встретился другой вариант.

Кроме того, нашел очень интересное высказывание http://www.microchip.su/showpost.php?p=425...mp;postcount=41.
Что вы скажете о написанном там?

Опять же там советуют отказаться от Герцеля. И вообще, оно сильно меня расстроило, судя по тому, что там написано я еще полгода буду ковыряться над этой "простой задачей".


Кроме того, очень хочется услышать и другие мнения и советы. Буду очень признателен.
Go to the top of the page
 
+Quote Post
fontp
сообщение Dec 11 2009, 11:05
Сообщение #4


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



Цитата(megadocent @ Dec 11 2009, 13:56) *
AR-оценивание спектра - а как оно называется по-другому, в отечественной литературе? В литературе у себя что-то не нашел такого.


Авторегрессионное оценивание? Есть в каждом вокодере. Умножаете на функцию окна и делаете авторегрессию алгоритмом Левинсона-Дурбина. Оцениваете спектр. На самом деле оценивать спектр даже не нужно.
Перетаскивают регрессию из знаменателя в числитель, вычисляют и сравнивают чтобы было ниже порога.
1/abs(1-a1*z-a2*z**2...) > C и abs(1-a1*z-a2*z**2...) < 1/C это одно и то же. z связано с частотами MF,
типа косинус от, если раскрыть модуль, а[] - коэффициенты авторегрессии


Цитата(megadocent @ Dec 11 2009, 13:56) *
То есть вы советуете не применять Герцеля, а применять ДПФ? А во сколько раз, примерно, возрастут требования к вычислительным мощностям и объемам памяти?
И вопрос, если Герцель не так хорош, почему везде где упоминается DTMF сразу пихается Герцель? И для не очень-то слабых сигнальных процессоров у TI они тоже предлагают именно его. (У TI SPRAA096 для с54). И в практических применениях, и вообще, где бы то ни было, везде он? Всего раз в интернете мне встретился другой вариант.
Кроме того, нашел очень интересное высказывание http://www.microchip.su/showpost.php?p=425...mp;postcount=41.
Что вы скажете о написанном там?
Опять же там советуют отказаться от Герцеля. И вообще, оно сильно меня расстроило, судя по тому, что там написано я еще полгода буду ковыряться над этой "простой задачей".


Герцель возник от бедности на память, потом так и повелось, так и привыкли.
Всё что делается через Герцель, делается через усечённое ДПФ. Но нужна память под таблицу синусов.
Но математически это одно и то же. Разные способы реализации одного и того же. Я не против Герцеля, если так Вам удобней )) Я и сам делал когда-то Герцелем,повторяя когда-то учебный дизайн от AD

МИПС для современного процессора для ДПФ нужно меньше чем для Герцеля. В современных процессорах хотя бы 2 MAC умножителя. Таблица синусов нужна, но поскольку все ваши частоты кратны 1/N то и таблица нужна всего на 2*N элементов. N- число отсчетов Вашего алгоритма, типа 108 )) Что такое 256 ячеек памяти для современного процессора? Тем более что таблица синусов в процессоре Tms обычно есть в ROMе. Герцель это ДПФ для бедных микроконтроллеров.

В остальном, с написаным там в общем-то согласен. Всё что делается за месяц есть фаст-прототайпинг.
В конце концов то что даже Вы, разработчик, сами не можете протестировать по стандарту, никто другой ведь тоже не сможет протестировать, откуда он узнает, чему оно соответствует. "Очень быстро делали, ещё не знаем, что получилось"© )) Я деловит, но и предельно циничен в таких вот вопросах. Вы не должны врать начальству. Но и за язык Вас никто не тянет - не нужно всё ему говорить. Потом доделаете ))
Другое дело, если Вас начальник спрашивает прямо: "Можно за месяц сделать коммерческий продукт?" нужно прямо и отвечать -"Нет"
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- megadocent   Вопросы по DTMF/DSP/алгоритму Герцеля   Dec 11 2009, 09:02
|- - megadocent   Цитата(fontp @ Dec 11 2009, 16:05) ... С...   Dec 11 2009, 12:11
|- - fontp   Цитата(megadocent @ Dec 11 2009, 15:11) Т...   Dec 11 2009, 12:15
- - thermit   ЦитатаОсновное требование - соответствие ОСТ-у. Пр...   Dec 11 2009, 12:27
- - megadocent   Большое спасибо всем за ответы. Очень помогли. Реш...   Dec 21 2009, 10:32
- - megadocent   Решил не создавать новую тему, а продолжить эту. З...   Feb 26 2010, 09:01
|- - fontp   Цитата(megadocent @ Feb 26 2010, 12:01) П...   Feb 26 2010, 09:54
- - thermit   MITEL DTMF Receiver Test Cassette, CM7291 - обычна...   Feb 26 2010, 13:26
|- - fontp   Цитата(thermit @ Feb 26 2010, 16:26) MITE...   Feb 27 2010, 17:36
|- - fant   to fontp Если у Вас есть два файла, оцифровки СM7...   Oct 9 2013, 13:08
|- - fontp   QUOTE (fant @ Oct 9 2013, 17:08) to fontp...   Oct 13 2013, 11:10
- - megadocent   Про то, что в широком доступе нету, это нашел. Даж...   Mar 1 2010, 04:13
- - анатолий   DTMF характерен тем, что в нем периоды частот взаи...   Oct 11 2013, 16:28
- - Sudar1977   Это была моя первая серьезная задача (10 лет назад...   Nov 7 2013, 11:13
- - megadocent   Ух, что нашел. Краткие итоги. TMS320C6726 позво...   Jun 10 2014, 07:32


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 00:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.03268 секунд с 7
ELECTRONIX ©2004-2016