Изучение приемника и передатчика dtmf сигналов. Двутональный многочастотный (DTMF) генератор на AVR

Тональный набор (Dual-tone multi-frequency signaling, DTMF) был разработан компанией Bell Labs в 50-х годах прошлого века для революционного на тот момент времени кнопочного телефона. Для представления и передачи цифровых данных в тоновом режиме используется пара частот (тонов) речевого частотного диапазона. В системе определены две группы из четырех частот, и информация кодируется одновременной передачей двух частот - по одной из каждой группы. Это дает в общей сложности шестнадцать комбинаций для представления шестнадцати разных чисел, символов и букв. В настоящее время DTMF-кодирование используется в широком спектре приложений в области связи и управления, что, например, подтверждается Рекомендацией Q.23 Международного союза электросвязи (МСЭ).

В данной статье описывается схема тонового DTMF-генератора, воспроизводящего все восемь частот и формирующего результирующий выходной двухтоновый сигнал. Рассматриваемая система была построена на базе микросхемы Silego GreenPAK ™ SLG46620V и операционных усилителей Silego SLG88104V. Выдаваемый результирующий сигнал представляет собой сумму двух частот, определяемых строкой и столбцом телефонной клавиатуры.

Предлагаемая схема использует четыре входа для выбора формируемой комбинации частот. Схема также имеет вход разрешения, который запускает генерацию и определяет продолжительность времени передачи сигнала. Частота выходного сигнала генератора соответствует требованиям стандарта МСЭ для DTMF.

Тоновые DTMF-сигналы

DTMF-стандарт определяет кодирование цифр 0-9, букв A, B, C и D и символов * и # в виде комбинации двух частот. Эти частоты разделены на две группы: группа высоких частот и группа низких частот. В таблице 1 показаны частоты, группы и соответствующие представления символов.

Таблица 1. Кодирование сигналов тоновом режиме DTMF

Группа верхних частот

Группа нижних частот

Частоты были выбраны таким образом, чтобы избежать кратных гармоник. Кроме того, их сумма или разность не дают другой DTMF-частоты. Таким образом, удается избежать гармоник или модуляционных искажений.

В стандарте Q.23 указывается, что погрешность каждой передаваемой частоты должна находиться в диапазоне ± 1,8% от номинального значения, а суммарные искажения (в результате гармоник или модуляции) должны быть на 20 дБ ниже основных частот.

Описанный выше результирующий сигнал может быть описан как:

s(t) = Acos(2πfhight)+ Acos(2πflowt),

где fhigh и flow являются соответствующими частотами из групп высоких и низких частот.

На рисунке 1 показан результирующий сигнал для цифры «1». На рисунке 2 показан частотный спектр, соответствующий данному сигналу.

Рис. 1. Тональный DTMF-сигнал

Рис. 2. Спектр тонального DTMF-сигнала

Длительность DTMF-сигналов может быть различной и зависит от конкретного приложения, в котором используется тональное кодирование. Для наиболее распространенных приложений, значения длительностей, как правило, лежат между ручным и автоматическим набором. В таблице 2 показано краткое описание типовой продолжительности времени для двух типов набора.

Таблица 2. Длительность сигналов при тоновом наборе

Тип набора

Группа верхних частот

Группа верхних частот

Ручной набор

Автоматический набор

Для получения большей гибкости DTMF-генератор, предлагаемый в данном руководстве, снабжен входом разрешения, который используется для старта генерации сигнала и определяет его длительность. При этом продолжительность сигнала равна длительности импульса на входе разрешения.

Аналоговая часть схемы DTMF-генератора

Рекомендация МСЭ Q.23 определяет DTMF-сигналы как аналоговые сигналы, созданные двумя синусоидальными волнами. В предлагаемой схеме DTMF-генератора микросхема Silego GreenPAK SLG46620V генерирует сигналы прямоугольной формы с желаемыми DTMF-частотами. Чтобы получить синусоидальные сигналы необходимой частоты и сформировать результирующий сигнал (сумма двух синусоидальных волн), потребуются аналоговые фильтры и сумматор. По этой причине в данном проекте было решено использовать фильтры и сумматор на базе операционных усилителей SLG88104V.

На рисунке 3 показана структура предлагаемой аналоговой части устройства.

Рис. 3. Схема аналоговой обработки для получения DTMF-сигнала

Для получения синусоидальных сигналов из прямоугольных импульсов используются аналоговые фильтры. После выполнения фильтрации происходит суммирование двух сигналов и формирование желаемого выходного двухтонового DTMF-сигнала.

На рисунке 4 представлен результат преобразования Фурье, используемого для получения спектра прямоугольного сигнала.

Рис. 4. Спектр сигнала прямоугольной формы

Как можно заметить, прямоугольный сигнал содержит только нечетные гармоники. Если представить такой сигнал с амплитудой A в виде ряда Фурье, то он будет иметь следующий вид:

Анализ этого выражения позволяет сделать вывод, что если аналоговые фильтры имеют достаточное затухание для гармоник, то вполне реально получить синусоидальные сигналы с частотой, равной частоте исходного прямоугольного сигнала.

Принимая во внимание допуск на уровень помех, определенный в стандарте Q.23, необходимо обеспечить, чтобы все гармоники были ослаблены на 20 дБ или более. Кроме того, любая частота из группы нижних частот должна сочетаться с любой частотой из группы верхних частот. Учитывая эти требования, были разработаны два фильтра, по одному для каждой группы.

В качестве обоих фильтров использовались низкочастотные фильтры Баттерворта. Затухание фильтра Баттерворта порядка n можно рассчитать как:

A(f)[дБ] = 10 log(A(f) 2) = 10log(1+(f/fc) 2n),

где fc - частота среза фильтра, n - порядок фильтра.

Разница в затухании между самой низкой частотой и самой высокой частотой каждой группы может быть не более 3 дБ, поэтому:

A(fHIGHER)[дБ] - A(fLOWER)[дБ] > 3 дБ.

Учитывая абсолютные значения:

A(fHIGHER) 2 / A(fLOWER) 2 > 2.

Кроме того, как мы уже говорили ранее, ослабление гармоник должно составлять 20 дБ или более. При этом наихудшим будет случай самой низкой частоты в группе, потому что ее 3-я гармоника является самой низкочастотной и находится ближе всего к частоте среза фильтра. Учитывая, что 3-я гармоника в 3 раза меньше фундаментальной, фильтр должен отвечать условию (абсолютные значения):

A(3fLOWER) 2 / A(fLOWER) 2 > 10/3.

Если эти уравнения применяются к обеим группам, то используемые фильтры должны быть фильтрами второго порядка. Это означает, что они будут иметь по два резистора и по два конденсатора, если их реализовывать с помощью операционных усилителей. При использовании фильтров третьего порядка чувствительность к допускам компонентов была бы ниже. Выбранные частоты отсечек фильтров составляют 977 Гц для группы нижних частот и 1695 Гц для группы верхних частот. При таких значениях отличия в уровнях сигналов в группах частот согласуются с приведенными выше требованиями, а чувствительность к изменениям частоты отсечки из-за допусков компонентов оказывается минимальной.

Принципиальные схемы фильтров, реализованные с помощью SLG88104V, представлены на рисунке 5. Номиналы первой пары R-C выбраны таким образом, чтобы ограничить выходной ток микросхемы SLG46620V. Второе звено фильтра определяет коэффициент усиления, который составляет 0,2. Амплитуда прямоугольных сигналов задает рабочую точку операционного усилителя на уровне 2,5 В. Нежелательные напряжения блокируются конденсаторами выходных фильтров.

Рис. 5. Принципиальные схемы выходных фильтров

На выходе сигналы фильтров суммируются, и результирующий сигнал представляет собой сумму гармоник, выбранных из группы нижних и верхних частот. Для компенсации затухания фильтра амплитуду выходного сигнала можно подстроить с помощью двух резисторов R9 и R10. На рисунке 6 показана схема сумматора. На рисунке 7 представлена вся аналоговая часть схемы.

Рис. 6. Принципиальная схема сумматора

Рис. 7. Аналоговая часть схемы

Цифровая часть схемы тонального DTMF-генератора

Цифровая часть схемы тонального DTMF-генератора включает целый набор генераторов прямоугольных импульсов - по одному для каждой частоты DTMF. Так как для создания этих генераторов требуется восемь счетчиков, то для их реализации была выбрана микросхема GreenPAK SLG46620V. На выходах цифровой схемы формируются два сигнала прямоугольной формы, по одному на каждую группу частот.

Прямоугольные сигналы формируются с помощью счетчиков и D-триггеров и имеют коэффициент заполнения 50%. По этой причине частота переключения счетчиков в два раза выше требуемой частоты DTMF, а DFF-триггер делит выходной сигнал на два.

Источником тактирования для счетчиков является встроенный RC-генератор 2 МГц, частота которого дополнительно делится на 4 или 12. Делитель выбирается с учетом разрядности и максимального значения каждого счетчика, необходимого для получения конкретной частоты.

Для генерации высоких частот требуется меньшее количество отсчетов, поэтому для их формирования используются 8-битные счетчики, тактируемые от внутреннего RC-генератора, сигнал которого поделен на 4. По той же причине более низкие частоты реализованы с помощью 14-битных счетчиков.

Микросхема SLG46620V имеет только три стандартных 14-битных счетчика, поэтому одна из нижних частот была реализована с помощью 8-разрядного счетчика CNT8. Чтобы число отсчетов укладывалось в диапазоне 0…255, для тактирования данного CNT8 пришлось использовать сигнал RC-генератора, поделенный на 12. Для этой схемы была выбрана частота с наибольшим числом отсчетов, то есть самая низкая частота. Это позволило минимизировать погрешность.

В таблице 3 показаны параметры каждого прямоугольного сигнала.

Таблица 3. Параметры генераторов прямоугольных импульсов

Тактирование

Ошибка частоты [%]

Группа нижних частот

Группа верхних частот

Как видно из таблицы, все частоты имеют погрешность менее 1,8%, поэтому они соответствуют стандарту DTMF. Эти расчетные характеристики, основанные на идеальном значении частоты RC-генератора, могут быть подстроены с учетом измерения выходной частоты RC-генератора.

Хотя в предлагаемой схеме все генераторы работают параллельно, но сигнал только одного генератора из каждой группы будет поступать на выход микросхемы. Выбор конкретных сигналов определяет пользователь. Для этого применяются четыре входа GPIO (два бита для каждой группы) с таблицей истинности, показанной в таблице 4.

Таблица 4. Таблица выбора частот из группы нижних частот

Группа нижних частот

Таблица 5. Таблица выбора частоты из группы верхних частот

Группа верхних частот

На рисунке 8 показана логическая схема генератора прямоугольных сигналов с частотой 852 Гц. Эта схема повторяется для каждой частоты с соответствующими настройками счетчика и конфигурацией LUT.

Рис. 8. Генератор импульсов прямоугольной формы

Счетчик формирует выходную частоту, определяемую его настройками. Эта частота равна удвоенной частоте соответствующего тона DTMF. Параметры конфигурации счетчика показаны на рисунке 9.

Рис. 9. Пример настройки счетчика генератора прямоугольных импульсов

Выходной сигнал счетчика подключается к тактовому входу триггера D-Flip Flop. Так как выход DFF сконфигурирован как инвертированный, то если подключить выход DFF к его входу, то D-триггер преобразуется в T-триггер. Параметры конфигурации DFF можно увидеть на рисунке 10.

Рис. 10. Пример настройки триггера генератора прямоугольных импульсов

Сигнал с выхода DFF поступает на вход таблицы истинности LUT. Таблицы истинности LUT используются для выбора одного сигнала для каждого конкретного сочетания R1-R0. Пример конфигурации LUT представлен на рисунке 11. В данном примере, если на R1 поступает «1», а на R0 подается «0», входной сигнал передается на выход. В остальных случаях на выходе присутствует «0».

Рис. 11. Пример настройки таблицы истинности генератора прямоугольных импульсов

Как было сказано выше, предлагаемая схема имеет вход разрешения Enable. Если на входе разрешения Enable присутствует логическая единица «1», то генерируемые прямоугольные сигналы подаются на пару выходов микросхемы. Длительность передачи равна длительности импульса на входе разрешения. Чтобы реализовать эту функцию, потребовалось еще несколько блоков таблиц истинности LUT.

Для группы верхних частот используется один 4-разрядный LUT и один 2-битный LUT, как показано на рисунке 12.

Рис. 12. Схема выхода группы верхних частот

4-битный LUT1 настроен как логический элемент ИЛИ, поэтому он выдает логическую единицу «1», если на любом из его входов присутствует «1». Таблицы истинности C1/ C0 допускают выбор только одного из генераторов, поэтому 4-разрядный LUT1 определяет какой сигнал поступает на выход. Выход этого LUT подключается к 2-битному LUT4, который передает сигнал только в том случае, если на входе разрешения присутствует логическая «1». На рисунках 13 и 14 показаны конфигурации 4-битного LUT1 и 2-битного LUT4.

Рис. 13. Конфигурация 4-битного LUT1

Рис. 14. 2-битная конфигурация LUT4

Так как 4-битных таблиц истинности LUT больше не было, для группы нижних частот использовались два 3-битных LUT.

Рис. 15. Схема выхода группы нижних частот

Полная внутренняя схема GreenPAK SLG46620V показана на рисунке 16. На рисунке 17 представлена итоговая принципиальная схема DTMF-генератора.

Рис. 16. Блок-схема генератора тональных сигналов DTMF

Рис. 17. Принципиальная схема DTMF-генератора тональных сигналов

Тестирование схемы DTMF-генератора

На первом этапе тестирования предложенного DTMF-генератора было решено проверить частоты всех формируемых прямоугольных сигналов с помощью осциллографа. В качестве примера на рисунке 18 и 19 показаны выходные сигналы прямоугольной формы для частот 852 Гц и 1477 Гц.

Рис. 18. Прямоугольный сигнал 852 Гц

Рис. 19. Прямоугольный сигнал 1477 Гц

Как только частоты всех прямоугольных сигналов были проверены, началось испытание аналоговой части схемы. Были исследованы выходные сигналы для всех комбинаций из группы нижних и верхних частот. В качестве примера на рисунке 20 показана сумма сигналов 770 Гц и 1209 Гц, а на рисунке 21 показана сумма сигналов 941 Гц и 1633 Гц.

Рис. 20. Тональный DTMF-сигнал 770 Гц и 1209 Гц

Рис. 21. Тональный DTMF-сигнал 941 Гц и 1633 Гц

Заключение

В данной статье была предложена схема тонового DTMF-генератора, построенного на базе микросхемы Silego GreenPAK SLG46620V и операционных усилителей Silego SLG88104V. Генератор дает пользователю возможность выбирать комбинации требуемых частот с помощью четырех входов и управлять входом разрешения, который определяет длительность генерации выходных сигналов.

Характеристики микросхемы SLG46620V:

  • Тип: программируемая микросхема смешанных сигналов;
  • Аналоговые блоки: 8-битный АЦП, два ЦАП, шесть компараторов, два фильтра, ИОН, четыре интегрированных генератора;
  • Цифровые блоки: до 18 портов ввода/вывода, матрица соединений и комбинаторная логика, программируемые схемы задержки, программируемый функциональный генератор, шесть 8-битных счетчиков, три 14-битных счетчика, три ШИМ-генератора/компаратора;
  • Коммуникационный интерфейс: SPI;
  • Диапазон напряжений питания: 1,8…5 В;
  • Диапазон рабочих температур: -40…85 °C;
  • Корпусное исполнение: 2 x 3 x 0,55 мм 20-выводной STQFN.

Первая часть данного примера применения описывает генерацию DTMF сигналов с использованием микроконтроллера MSP430. Даётся объяснение наиболее важных спецификаций, используемых в этом случае, приводятся теоретические и математические обоснования генерации синусоидальных сигналов при помощи прямоугольных с использованием соответствующих аналоговых фильтров. Также пример включает протестированные демонстрационные программы генерации прямоугольных сигналов на базе различных конфигураций таймеров микроконтроллеров MSP430. В заключительной части приводится принципиальная схема, позволяющая генерировать сигналы DTMF из прямоугольных сигналов.

2 Спецификация сигналов DTMF

Аббревиатура DTMF означает “Dual Tone Multi Frequency” (двухтональная мультичастотная посылка) и представляет собой метод представления цифр различными частотами с целью передачи их по аналоговым линиям связи, например, по телефонной линии. При разработке стандарта было учтено условие – все частоты должны находиться в «голосовом» диапазоне, что позволило снизить требования к каналу передачи. В телефонных сетях сигналы DTMF используются для набора номера и передачи другой информации. Несмотря на то, что до сих пор широко используется импульсный способ набора номера, который является стандартом, например, в Германии, время набора при этом значительно увеличивается, приводя к непроизводительной загрузке линий связи. Кроме этого, многие дополнительные услуги связи возможны только с использованием тонального набора. При кодировании методом DTMF, цифры 0-9 и буквы A-D, */E and #/F представлены комбинаций двух частот:

Частота 1209Гц 1336Гц 1477Гц 1633Гц
697Гц 1 2 3 A
770Гц 4 5 6 B
852Гц 7 8 9 C
941Гц */E 0 #/F D

В этой системе столбец представляет частоту из «верхней» частотной группы (Hi-Group: 1209-1633 Hz), а строка - частоту из «нижней» частотной группы (Lo-Group: 697-941 Hz). Тональные частоты выбраны таким образом, чтобы исключить влияние гармоник. Частоты не кратны друг другу и ни одна из частот DTMF не может быть получена суммированием или вычитанием других частот. Для формирования набора номера в сети Deutsche Telekom требуется выполнение нижеследующих спецификаций (взято из Zulassungsvorschrift des Bundesamtes fur Post und Telekommunikation, BAPT 223 ZV 5 (Официальная спецификация федерального министерства почты и связи):

3 Генерация сигналов DTMF

Как было описано выше, сигналы DTMF являются аналоговыми и состоят из двух независимых друг от друга синусоидальных сигналов. Таким образом, невозможно сгенерировать такие сигналы только цифровым способом. Цифровые сигналы должны быть преобразованы при помощи АЦП и/или аналоговых фильтров в требуемую синусоидальную форму.

3.1 Генерация при помощи прямоугольных сигналов

Если для формирования сигналов DTMF используются прямоугольные сигналы, требования к программному и аппаратному обеспечению минимальны. Любой непрерывный сигнал, имеющий период T может быть представлен рядом Фурье, состоящим из бесконечной суммы синусоид и косинусоид следующим образом:

Где a0/2 – постоянная составляющая сигнала. Элемент суммы с наименьшей угловой частотой (w0) называется основной (фундаментальной) гармоникой, остальные – обертонами или высшими гармониками.

Наиболее простым непрерывным сигналом, реализуемым при помощи микроконтроллера, является меандр, ряд Фурье для которого имеет вид:

Вклад каждой из частотных составляющих в суммарный сигнал лучше всего демонстрируется амплитудным спектром (см. рис. 2):


Рис. 2: Амплитудный спектр прямоугольного сигнала

При использовании аналогового фильтра постоянная составляющая и высшие гармоники эффективно подавляются, при этом на выходе имеем синусоидальный сигнал с частотой, равной частоте исходного меандра.

3.2 Программное обеспечение для генерации меандра

Программа генерации меандра должна удовлетворять следующим требованиям:

  • Иметь возможность синтеза двух независимых друг от друга прямоугольных сигналов.
  • В целях разделения сигналов требуются два выходных вывода, обеспечивающих генерацию сигналов из «верхнего» (Hi-Group) и «нижнего» (Lo-Group) частотных диапазонов соответственно.
  • ПО должно иметь возможность установки требуемой длительности сигналов в диапазоне примерно 65 мс - 100 мс.

Микроконтроллеры серии MSP430 имеют различные встроенные таймеры, способные генерировать прямоугольные сигналы. В семействе ‘31x/‘32x используются 8-битный таймер и таймер-порт (Timer Port) для генерации обоих прямоугольных сигналов. Данная программа проверялась при частоте MCLK равной 1.048 МГц. Таймер Timer_A в семействе ‘33x может самостоятельно формировать оба требуемых сигнала. Вторая программа использует этот таймер для генерации меандров и работает с любыми частотами MCLK. Далее будут подробно рассмотрены обе программы.

3.2.1 Генерация прямоугольных сигналов с использованием 8-битного таймера и таймера –порта Timer Port

На рис. 3 изображена блок-схема процедуры инициализации для генерации DTMF-сигналов. Чтобы синтезировать две частоты, используются счётчики таймера-порта Timer Port и 8-битного таймера. Каждый из них представляет собой программируемый счётный регистр, необходимый для точного синтеза требуемых частот. Если счётчики таймера-порта каскадированы в один 16-битный таймер и тактируются от системной частоты MCLK, то частоты верхнего диапазона могут быть сформированы с высокой точностью. При возникновении прерывания соответствующий выход переключается, и оба 8-битных счётных регистра перезагружаются. Загружаемые значения хранятся в двух переменных в ОЗУ с целью экономии внутренних регистров для других задач.

Частоты нижнего диапазона генерируются 8-битным таймером. Так как счётный регистр этого таймера имеет разрядность 8 бит, только каждое третье прерывание приводит к смене уровня на требуемом выходном выводе, позволяя генерировать этим же счётчиком частоты.

Два выхода таймера – порта используются для формирования двух меандров разной частоты.

Рис. 3 Блок-схема процедуры инициализации для генерации DTMF-сигналов

Процедура инициализации выполняется только один раз. После её завершения, шестнадцатеричное значение передаваемого символа читается из глобальной переменной в ОЗУ. После того, как две частоты, формирующие верхний и нижний тона DTMF, сгенерированы из двух таблиц, требуется только инициализация и запуск обоих таймеров. Длительность посылки контролируется путём подсчёта полупериодов «нижней» частоты и считывается из дополнительной таблицы. По завершении этой процедуры производится возврат к функции поллинга. Соответствующие подпрограммы обработки прерываний осуществляют переключение выводов порта. Этот процесс продемонстрирован на рис. 4 и 5.

В задачи таймера-порта входит только фиксация лог. уровня на выходе порта и перезагрузка счётчика из ОЗУ, работа же 8-битного таймера имеют несколько более сложную структуру: каждый вход в прерывание подсчитывается счётным регистром. Выход может сменить состояние только по истечении трёх прерываний. Кроме этого, каждый полупериод также подсчитывается. Генерация прекращается по достижении определённого количества полупериодов.


Рис. 4 Блок – схема прерываний от 8-битного таймера (Lo-Group)


Рис. 5 Блок – схема прерываний таймера-порта (Hi-Group)

; Пользовательские определения FLLMPY equ 32 ; Умножитель частоты FLL на 1.048 МГц TCLK equ FLLMPY*32768 ; TCLK: FLLMPY x f кварца DL equ 85 ; Длительность сигнала DTMF (65..100 мс) LO_OUT equ 02h ; Выход «нижней» частоты HI_OUT equ 04h ; Выход «верхней» частоты RCOUNT equ r14 ; Счётчик длины DTMF RTEMP equ r15 ; служебный регистр.global DTMF_NR ; глобальная переменная в ОЗУ; для номера DTMF (0..F) ; Определения ОЗУ.even .bss DTMF_TL ; Выравнивание по чётному адресу.bss DTMF_TH .bss DTMF_NR ; глобальная переменная в ОЗУ; для номера DTMF (0..F) .even ; Определения для 8-битного таймера TCCTL EQU 42H TCPLD EQU 43H TCDAT EQU 44H ; Определения для универсального таймера-порта TPCTL equ 04bh ; Управление таймером-портом TPCNT1 equ 04ch ; Счётчик таймера-порта 1 TPCNT2 equ 04dh ; Счётчик таймера-порта 2 TPD equ 04eh ; Данные таймера-порта TPE equ 04fh ; Разрешение таймера-порта.text ; Таблицы частот DTMF: таблица содержит; число тактов MCLK для одного полупериода. ; Таблица для «верхней» частоты; Добавлена корректирующая поправка; для учёта времени входа в прерывание DTMF_HI .word 0ffffh-(TCLK/(1336*2))+25 ; Верхняя частота для 0 .word 0ffffh-(TCLK/(1207*2))+28 ; Верхняя частота для 1 .word 0ffffh-(TCLK/(1336*2))+25 ; Верхняя частота для 2 .word 0ffffh-(TCLK/(1477*2))+24 ; Верхняя частота для 3 word 0ffffh-(TCLK/(1207*2))+28 ; Верхняя частота для 4 .word 0ffffh-(TCLK/(1336*2))+25 ; Верхняя частота для 5 .word 0ffffh-(TCLK/(1477*2))+24 ; Верхняя частота для 6 .word 0ffffh-(TCLK/(1207*2))+28 ; Верхняя частота для 7 .word 0ffffh-(TCLK/(1336*2))+25 ; Верхняя частота для 8 .word 0ffffh-(TCLK/(1477*2))+24 ; Верхняя частота для 9 .word 0ffffh-(TCLK/(1633*2))+22 ; Верхняя частота для A .word 0ffffh-(TCLK/(1633*2))+22 ; Верхняя частота для B .word 0ffffh-(TCLK/(1633*2))+22 ; Верхняя частота для C .word 0ffffh-(TCLK/(1633*2))+22 ; Верхняя частота для D .word 0ffffh-(TCLK/(1207*2))+28 ; Верхняя частота для * .word 0ffffh-(TCLK/(1477*2))+24 ; Верхняя частота для # ; Таблица для «нижней» частоты DTMF_LO .byte 0ffh-(TCLK/(941*2*3)) ; Нижняя частота для 0 .byte 0ffh-(TCLK/(697*2*3)) ; Нижняя частота для 1 .byte 0ffh-(TCLK/(697*2*3)) ; Нижняя частота для 2 .byte 0ffh-(TCLK/(697*2*3)) ; Нижняя частота для 3 .byte 0ffh-(TCLK/(770*2*3)) ; Нижняя частота для 4 .byte 0ffh-(TCLK/(770*2*3)) ; Нижняя частота для 5 .byte 0ffh-(TCLK/(770*2*3)) ; Нижняя частота для 6 .byte 0ffh-(TCLK/(853*2*3)) ; Нижняя частота для 7 .byte 0ffh-(TCLK/(853*2*3)) ; Нижняя частота для 8 .byte 0ffh-(TCLK/(853*2*3)) ; Нижняя частота для 9 .byte 0ffh-(TCLK/(697*2*3)) ; Нижняя частота для A .byte 0ffh-(TCLK/(770*2*3)) ; Нижняя частота для B .byte 0ffh-(TCLK/(853*2*3)) ; Нижняя частота для C .byte 0ffh-(TCLK/(941*2*3)) ; Нижняя частота для D .byte 0ffh-(TCLK/(941*2*3)) ; Нижняя частота для * .byte 0ffh-(TCLK/(941*2*3)) ; Нижняя частота для # ; Таблица длительностей сигнала DTMF_L .byte 2*941*DL/1000 ; Полупериоды для 0 .byte 2*697*DL/1000 ; Полупериоды для 1 .byte 2*697*DL/1000 ; Полупериоды для 2 .byte 2*697*DL/1000 ; Полупериоды для 3 .byte 2*770*DL/1000 ; Полупериоды для 4 .byte 2*770*DL/1000 ; Полупериоды для 5 .byte 2*770*DL/1000 ; Полупериоды для 6 .byte 2*852*DL/1000 ; Полупериоды для 7 .byte 2*852*DL/1000 ; Полупериоды для 8 .byte 2*852*DL/1000 ; Полупериоды для 9 .byte 2*697*DL/1000 ; Полупериоды для A .byte 2*770*DL/1000 ; Полупериоды для B .byte 2*852*DL/1000 ; Полупериоды для C .byte 2*941*DL/1000 ; Полупериоды для D .byte 2*941*DL/1000 ; Полупериоды для * .byte 2*941*DL/1000 ; Полупериоды для # ;**************************************************************************** ; DTMF-TX Подпрограмма DTMF ;**************************************************************************** DTMF_TX mov.b DTMF_NR,RTEMP ; Сохранить номер во временном регистре mov.b DTMF_L(RTEMP),RCOUNT ; Сохранить счётчик длительности;подготовка 8-битного таймера для частоты DTMF-Lo mov.b #0a8h,&TCCTL ; Тактирование от MCLK mov.b DTMF_LO(RTEMP),&TCPLD ; Подготовка регистра; предварительной загрузки mov.b #000,&TCDAT ; Загрузка счётчика из регистра; предварительной загрузки bis.b #008h,&IE1 ; Разрешить прерывания; от 8-битного таймера; подготовка таймера-порта для частоты DTMF-Hi rla r15 ; * 2 для 16-битной таблицы mov DTMF_HI(RTEMP),&DTMF_TL ; сохранить слово для верхней частоты mov #003,RTEMP ; счётчик для 8-битного таймера bis.b #008h,IE2 ; Разрешить прерывания; от таймера-порта mov.b &DTMF_TH,&TPCNT2 ; Загрузка старшего байта в TC2 mov.b &DTMF_TL,&TPCNT1 ; Загрузка младшего байта в TC1 bis.b #080h,&TPD ; Разрешить 16-битный таймер bis.b #HI_OUT+LO_OUT,&TPE ; Разрешить выходы DTMF-Hi/Lo mov.b #090h,&TPCTL ; Разрешить таймер ret ;**************************************************************************** ; Прерывание таймера-порта;**************************************************************************** TP_INT xor.b #HI_OUT,&TPD ; Инверсия выхода DTMF-Hi mov.b &DTMF_TH,&TPCNT2 ; Загрузка старшего байта в TC2 mov.b &DTMF_TL,&TPCNT1 ; Загрузка младшего байта в TC1 bic.b #007h,&TPCTL ; Очистка флагов reti ;**************************************************************************** ; Прерывание P0.1/8-битный таймер;**************************************************************************** TIM_8B eint ; Разрешить прерывания dec RTEMP jz TOGGLE ; переход по 3-му прерыванию reti TOGGLE xor.b #LO_OUT,&TPD ; Инверсия выхода DTMF-Lo mov #003,RTEMP ; счётчик для 8-битного таймера dec RCOUNT ; декремент счётчика длительности jz DTMF_END ; переход, если длительность закончилась reti DTMF_END bic.b #037h,&TPCTL ; Остановить счётчик таймера-порта bic.b #008h,TCCTL ; Остановить счётчик 8-битного таймера bic.b #008h,&IE2 ; Запретить прерывания 8-бит. таймера bic.b #003h,&TPE ; Запретить выходы reti ; Адреса векторов прерываний.sect "TP_VECT", 0ffe8h .word TP_INT ;Timer-Port .sect "TIM_VECT", 0fff8h .word TIM_8B ; 8-битный таймер (P0.0)

3.2.2 1 Генерация прямоугольных сигналов с использованием таймера Timer_A

Данная подпрограмма генерации сигналов DTMF использует только таймер Timer_A для формирования меандров обоих требуемых частот. В процессе ассемблирования вычисляются соответствующие значения для таймера с целью использования программы независимо от значения частоты MCLK. Длительность выходного сигнала задаётся константой DL в миллисекундах.

; Аппаратные определения; FLLMPY .equ 32 ; Умножитель частоты FLL на 1.048 МГц TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f кварца DL .equ 82 ; длительность сигнала DTMF в мс; (65..100 мс) STACK .equ 600h ; Адрес инициализации стека; Определения ОЗУ; STDTMF .equ 202h ; Статус частот Hi и Lo TIM32B .equ 204 ; Расширение регистра таймера LENGTH .equ 206h ; Счётчик длительности DTMF ; .text 0F000h ; Стартовый адрес программы; ; Инициализация таймера Timer_A: MCLK, Режим Continuous, прерывания разрешены; Подготовка выходных модулей таймера Timer_A MCLK = 1.048 МГц (автоматически) ; INIT MOV #STACK,SP ;Инициализация указателя стека CALL #INITSR ;Инициализация умножителя; частоты FLL и ОЗУ MOV #ISMCLK+TAIE+CLR,&TACTL ; Инициализация таймера MOV.B #TA2+TA1,&P3SEL ; Выходы TA2 и TA1 на портах P3.5/4 CLR TIM32B ; Очистить расширенный регистр таймера BIS #MCONT,&TACTL ; Старт таймера Timer_A EINT ; Общее разрешение прерываний MAINLOOP ... ; Основной цикл; ;Нажатие клавиши: в SDTMF содержится смещение по таблице; для 2-х частот (0..6,0..6) в старшем и младшем байте; MOV &TAR,R5 ; Для немедленного старта: ADD FDTMFLO,R5 ; Смещение для меньшего времени MOV R5,&CCR1 ; Первая смена состояния через 0.71мс MOV R5,&CCR2 ; 1/(2x697) = 0.71мс MOV #OMT+CCIE,&CCTL1 ; Инверсия выхода, прерывание разр. MOV #OMT+CCIE,&CCTL2 ; Инверсия выхода, прерывание разр MOV.B STDTMF,R5 ; Счётчик на 82 мс RRA R5 ; число смен состояния нижней частоты MOV.B DTMFL(R5),LENGTH ; для длительности сигнала... ; продолжение программы; ; Обработчик прерывания от CCR0 (здесь не используется) ; TIMMOD0 ... RETI ; ; Обработчик прерываний от регистров захвата-сравнения 1..4 ; TIM_HND ADD &TAIV,PC ; Обработка запроса с наивысшим; приоритетом RETI ; нет запроса прерывания: RETI JMP HCCR1 ; запрос от CCR1 (нижняя частота DTMF) JMP HCCR2 ; запрос от CCR2 (верхняя частота DTMF) JMP HCCR3 ; запрос от CCR3 JMP HCCR4 ; запрос от CCR4 ; TIMOVH INC TIM32B ; Расширение таймера Timer_A до 32 бит RETI ; ; Нижняя частота DTMF: TA1 инвертирует выход модуля Output Unit 1 ; Каждая смена состояния подсчитывается для контроля длительности сигнала; HCCR1 PUSH R5 ; Сохранение используемых регистров MOV.B STDTMF,R5 ; Статус нижней частоты DTMF ADD FDTMFLO(R5),&CCR1 ; Добавить длительность полупериода DEC.B LENGTH ; Длительность сигнала DL завершена? JNZ TARET ; Нет; ; Да, прекратить выдачу сигнала DTMF: запретить прерывания; BIC #OMRS+OUT+CCIE,&CCTL1 ; Сброс TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Сброс TA2 TARET POP R5 ; Восстановить R5 RETI ; Возврат из прерывания; ; Верхняя частота DTMF: TA2 инвертирует выход модуля Output Unit 2 ; HCCR2 PUSH R5 ; Сохранение используемых регистров MOV.B STDTMF+1,R5 ; Статус верхней частоты DTMF ADD FDTMFHI(R5),&CCR2 ; Добавить длительность полупериода POP R5 ; Восстановить R5 RETI ; Возврат из прерывания; HCCR3 ... ;Задача, контролируемая регистром CCR3 RETI HCCR4 ... ;Задача, контролируемая регистром CCR4 RETI ; ; Таблица частот DTMF: в таблице содержится; число тактов MCLK на полупериод. Значения скорректированы для; действующей частоты MCLK в процессе ассемблирования; и округлены с минимально возможной ошибкой частоты; FDTMFLO .word ((TCLK/697)+1)/2 ; Нижняя частота DTMF 697Hz .word ((TCLK/770)+1)/2 ; 770Hz .word ((TCLK/852)+1)/2 ; 852Hz .word ((TCLK/941)+1)/2 ; 941Hz FDTMFHI .word ((TCLK/1209)+1)/2 ; Верхняя частота DTMF1209Hz .word ((TCLK/1336)+1)/2 ; 1336Hz .word ((TCLK/1477)+1)/2 ; 1477Hz .word ((TCLK/1633)+1)/2 ; 1633Hz ; ; Таблица содержит число полупериодов для длительности сигнала DL (мс). ; Для подсчёта используется нижняя частота DTMF ; DTMFL .byte 2*697*DL/1000 ; Число полупериодов.byte 2*770*DL/1000 ; для DL в мс.byte 2*852*DL/1000 ; .byte 2*941*DL/1000 ; ; .sect "TIMVEC",0FFF0h ; Вектора прерываний таймера Timer_A .word TIM_HND ; Вектор модулей 1..4 таймера.word TIMMOD0 ; Вектор модуля 0 таймера.sect "INITVEC",0FFFEh ; Вектор сброса Reset .word INIT

Ниже приведено несколько более быстрое решение. Однако, при этом оно требует большего объёма ОЗУ т.к. данные, получаемые из таблиц не пересчитываются каждый раз, а хранятся в двух словах в ОЗУ DTMFLO и DTMFHI. Чтение производится из подпрограмм обработки прерываний таймера Timer_A. Используемые таблицы идентичны приведенным в предыдущем примере.

FLLMPY .equ 32 ; Умножитель частоты FLL на 1.048МГц TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f кварца DL .equ 82 ; Длительность сигнала DTMF ; в мс (65..100 мс) STDTMF .equ 202h ; Статус частот Hi и Lo TIM32B .equ 204 ; Расширение регистра таймера LENGTH .equ 206h ; Счётчик длительности DTMF DTMFLO .equ 208h ; Полупериод нижней частоты DTMFHI .equ 20Ah ; Полупериод верхней частоты STACK .equ 600h ; Адрес инициализации стека.text 0F000h ; Стартовый адрес программы; Инициализация таймера Timer_A: MCLK, Режим Continuous, прерывания разрешены; Подготовка выходных модулей таймера Timer_A MCLK = 1.048 МГц (автоматически) ; INIT MOV #STACK,SP ; Инициализация указателя стека CALL #INITSR ; Инициализация умножителя; частоты FLL и ОЗУ MOV #ISMCLK+TAIE+CLR,&TACTL ; Старт таймера MOV.B #TA2+TA1,&P3SEL ; Выходы TA2 и TA1 на портах P3.5/4 CLR TIM32B ; Очистка расширенного регистра таймера BIS #MCONT,&TACTL ;Запуск таймера Timer_A EINT ; Общее разрешение прерываний MAINLOOP ... ; Основной цикл;Нажатие клавиши: в SDTMF содержится смещение по таблице; для 2-х частот (0..6,0..6) в старшем и младшем байте; MOV &TAR,R5 ; Для немедленного старта ADD FDTMFLO,R5 ; Смещение для меньшего времени MOV R5,&CCR1 ; Первая смена состояния через 0.71мс MOV R5,&CCR2 ; 1/(2x697) = 0.71мс; ; Fetch the two cycle counts for the DTMF frequencies ; MOV.B STDTMF+1,R5 ; Верхняя частота DTMF MOV FDTMFHI(R5),DTMFHI ; Длительность полупериода MOV.B STDTMF,R5 ; Нижняя частота DTMF MOV DTMFLO(R5),DTMFLO ; Длительность полупериода; ; Счётчик длительности RRA R5 ; Prepare byte index MOV.B DTMFL(R5),LENGTH ; число смен состояния нижней частоты MOV #OMT+CCIE,&CCTL1 ; Инверсия выхода, прерывание разр. MOV #OMT+CCIE,&CCTL2 ; Инверсия выхода, прерывание разр. ... ; Возврат в основной цикл; ; Обработчик прерывания от CCR0 (здесь не используется) ; TIMMOD0 ... RETI ; ; Обработчик прерываний от регистров захвата-сравнения 1..4 ; TIM_HND ADD &TAIV,PC ; Обработка запроса с наивысшим; приоритетом RETI ; нет запроса прерывания: RETI JMP HCCR1 ; запрос от CCR1 (нижняя частота DTMF) JMP HCCR2 ; запрос от CCR2 (верхняя частота DTMF) JMP HCCR3 ; запрос от CCR3 JMP HCCR4 ; запрос от CCR4 ; TIMOVH INC TIM32B ; Расширение таймера Timer_A до 32 бит RETI ; ; Нижняя частота DTMF: TA1 инвертирует выход модуля Output Unit 1 ; HCCR1 ADD DTMFLO,&CCR1 ; Добавить длительность полупериода DEC.B LENGTH ; Длительность сигнала DL завершена? JNZ TARET ; Нет; ; Да, прекратить выдачу сигнала DTMF: запретить прерывания; BIC #OMRS+OUT+CCIE,&CCTL1 ; Сброс TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Сброс TA2 TARET RETI ; Возврат из прерывания; Верхняя частота DTMF: TA2 инвертирует выход модуля Output Unit 2 ; HCCR2 ADD DTMFHI,&CCR2 ; Добавить длительность полупериода RETI ; Возврат из прерывания; HCCR3 ... ;Задача, контролируемая регистром CCR3 RETI HCCR4 ... ;Задача, контролируемая регистром CCR4 RETI ; ; Таблицы и вектора прерываний идентичны приведенным в предыдущем примере

3.3 Аппаратная часть для генерации сигналов DTMF

Как было указано выше, в диапазоне частот 200 Гц.. 4600 Гц уровень сигнала частоты передачи должен быть как минимум на 20 дБ выше уровня посторонних сигналов (шумов). Кроме этого, исходя из спецификации, сигналы из «верхней» и «нижней» групп должны иметь разные уровни, поэтому для каждого сигнала требуется собственный фильтр. Амплитуды частот синусоидальной формы можно получить из ряда Фурье.

Для выбора частот среза при разработке аналогового фильтра необходимо придерживаться следующих требований, основанных на :

  • Т.к. необходимо обеспечить возможность любых комбинаций частот «нижней» группы с частотами «верхней» группы, разность уровней между самой низкой и самой высокой частотой в группе не должна превышать 3 дБ.
  • Для самой низкой частоты в группе (f1), подавление гармоники (3f1) должно быть не хуже 20 дБ. Выполнение этого условия наиболее критично для нижней частоты в группе, т.к. она находится максимально далеко от частоты среза фильтра.

Формула описывает квадрат абсолютного значения на выходе фильтра высоких частот Баттерворта порядка n:

Данная формула представляет собой зависимость коэффициента усиления фильтра высоких частот Баттерворта от частоты. Параметры fg и n определяют частоту среза и порядок фильтра соответственно.

Прежде всего, необходимо вычислить требуемый порядок фильтра с учётом соответствия приведенным выше требованиям.

Для выполнения первого условия отношение квадратов абсолютных значений самой нижней и самой верхней частоты в группе должно быть не более 3 дБ или:

Второе условие выполнится автоматически, если отношение квадратов абсолютных значений частот f1 и 3f1 будет более 10/3, в данном случае третья гармоника в прямоугольном сигнале меньше на 1/3 (см. ряд Фурье и рис. 2):

В результате вычислений для частот обеих групп имеем требуемый порядок фильтра n=1.15. Таким образом, требованиям будет удовлетворять фильтр 2-го порядка, который может быть построен на операционном усилителе. В случае использования фильтра 3-го порядка понадобится только два дополнительных элемента. Однако, это позволит снизить требования к разбросу параметров компонентов. Оба приведенных выше требования будут соблюдены, если частота среза находится в следующих пределах:

Нижняя группа fg>880 Гц fg<1418 Гц
Верхняя группа fg>1527 Гц fg<2460 Гц

Если частота среза минимальна, будет наблюдаться максимальное подавление гармоник. Однако, в этом случае разность уровней самой низкой и самой высокой частоты в группе будет равна 3 дБ. При максимально возможной частоте среза разность уровней минимальна, но гармонические составляющие подавляются только на 20 дБ.

При расчёте фильтра было обращено повышенное внимание на подавление гармоник, разность уровней внутри группы была зафиксирована на уровне 2 дБ. В результате этого, частоты среза имеют значения 977 Гц и 1695 Гц. Результирующее подавление гармоник значительно превосходит предъявляемые требования. Разность уровней частот в группе находится в пределах требований даже в случае девиации частоты среза, связанной с разбросом параметров применяемых компонентов. При вычислении значений элементов фильтра резисторы выбирались исходя из соображения их максимальной близости к стандартным значениям ряда E12.

На выходах фильтров в результате получаем два синусоидальных сигнала с значительно подавленными гармониками. Для объединения этих сигналов введен дополнительный сумматор.

Таким образом, используя только 3 ОУ и несколько пассивных элементов, мы имеем возможность генерировать сигналы DTMF при помощи микроконтроллера без использования значительных вычислительных ресурсов.

При помощи программ-симуляторов была проведена проверка приблизительных значений. Отклик фильтров весьма точно совпадает с расчётной частотной характеристикой.


Рис. 6: Амплитудный спектр прямоугольного сигнала частотой 697 Гц на выходе фильтра 3-го порядка

На рис. 6 приведен амплитудный спектр прямоугольного сигнала частотой 697 Гц, пропущенного через фильтр 3-го порядка. Как видно из рисунка, третья и пятая гармоники (2091 Гц и 3485 Гц) существенно ослаблены (-25.6 dB).


Рис. 7: Амплитудный спектр прямоугольного сигнала частотой 941 Гц на выходе фильтра 3-го порядка

На рис. 7 показан спектр прямоугольного сигнала частотой 941 Гц. В интересующей нас частотной области до 4600 Гц присутствует только одна гармоника. После прохождения фильтра, эта гармоника частотой 2823 Гц значительно ослаблена (-27.9 дБ). Разность уровней между самой низкой и самой высокой частотой в группе не превышает 1.9 дБ.

С целью использования недорогих компонентов с высоким разбросом параметров было проведено дополнительное моделирование. Результаты моделирования показали, что допустимый разброс величины резисторов и конденсаторов составляет 10%.


Рис 8: Гистограмма – распределение уровней сигнала в группе


Рис 9: Гистограмма – подавление гармоник

На рис. 8 и 9 показаны гистограммы полученные при помощи анализа по методу Монте-Карло. В данном случае, значения компонентов менялись случайным образом в пределах разброса 10%. После 100 итераций результаты для всех смоделированных фильтров помещены на гистограммы. В гистограмме на рис. 8 показана разность уровней между частотами внутри группы. Максимально допустимая разность - 3 дБ между минимальной и максимальной частотой ни в одном случае не была достигнута. Среднее значение составляет 1.6 дБ, что несколько лучше расчётного значения 2 дБ.

На рис. 9 показано ослабление гармоник для «нижней» группы частот. Требуемая величина в 20 дБ достигается во всех случаях, среднее значение примерно 27 дБ. В наихудшем случае гармоника подавлена на 24.2 дБ.

Значения, рассчитанные для фильтра «нижней» группы частот выполняются также и для фильтра «верхней» группы частот.

Оба фильтра имеют идентичную схемотехнику. Различие только в частотах среза фильтров для верхней и нижней групп частот. R1 и C1 формируют ФВЧ 1-го порядка. Т.к. входное сопротивление схемы также зависит от R1, значение этого элемента не должно быть слишком маленьким; в противном случае выходы микроконтроллера будут перегружены, а прямоугольная форма сигнала искажена. В таком случае к сигналу будут добавлены дополнительные частоты, являющиеся результатом интермодуляционных искажений, что отрицательно скажется на соотношении сигнал-шум.

Функция передачи фильтров более высокого порядка не может быть получена с использованием только пассивных компонентов.

Таким образом, фильтр 2-го порядка должен содержать операционный усилитель. Усиление активного фильтра установлено на уровне 0.2 при помощи резисторов R1-1 и R1-2. Как видно, сигнал при этом несколько ослабляется. Это необходимо для исключения перегрузки ОУ, т.к. пиковая амплитуда фундаментальной синусоидальной гармоники прямоугольного сигнала превышает амплитуду собственно прямоугольного сигнала (См. ряд Фурье и Рис.2). В дополнительном сумматоре производится регулировка требуемого выходного уровня. Из-за имеющей место постоянной составляющей прямоугольного сигнала рабочая точка ОУ выставляется на уровне Vcc/2 (См. также ряд Фурье и Рис.2). При этом, постоянная составляющая не может быть устранена входным делителем R1-1/R1-2. Для развязки цепи ОС по постоянному напряжению служит конденсатор C3.

На каждом из выходов аналогового фильтра формируется сигнал верхней и нижней групп частот соответственно. В дополнительном сумматоре данные сигналы складываются. В этом элементе схемы можно установить соотношение между «нижней» и «верхней» частотой в суммарном сигнале и уровень выходного сигнала при помощи резисторов R4 и R5. Таким образом, выходная амплитуда может быть легко отрегулирована в соответствии с различными требованиями, существующими в разных странах.

При расчёте номиналов компонентов значения конденсаторов были, как обычно, зафиксированы, и в соответствии с ними рассчитывались номиналы резисторов. В данной схеме были использованы конденсаторы и резисторы стандартного ряда E12 с разбросом 10%.

На рис. 10 показана принципиальная схема аналоговых фильтров и сумматора:


Рис. 10: Принципиальная схема аналоговых фильтров с дополнительным сумматором

Конденсаторы C1-1 и C1-2 объединяют два сигнала вместе в рабочей точке с уровнем Vcc/2. Для этих элементов не следует выбирать слишком больших значений, т.к. они являются элементами ФНЧ для устранения низкочастотных субгармоник. Фильтрующий конденсатор C5 устраняет шумы опорного напряжения. Дополнительный конденсатор C6, подключенный в параллель к резистору обратной связи R6 формирует ФВЧ первого порядка. Если выбрана наименьшая частота среза фильтра, дополнительная фильтрация высокочастотных интермодуляционных помех улучшает качественные показатели выходного сигнала, однако при этом будет наблюдаться некоторое ослабление самых высоких частот «верхней» группы. В некоторых случаях генерация самой высокой частоты DTMF 1633 Гц не требуется, т.к. она используется только для формирования служебных символов A-D, при этом можно улучшить соотношение сигнал – шум понижением частоты среза фильтра. Таким образом, повышение частоты среза ведёт к увеличению уровня высокочастотных помех, но при этом снижается негативное влияние на наиболее высокочастотные компоненты сигнала DTMF.

4 Результаты исследований сигналов передатчика DTMF

Приведенные ниже спектрограммы (Рис. 11 и 12) демонстрируют выходные сигналы DTMF – передатчика на различных частотах. На рис. 11 показан амплитудный спектр символа “1”. Необходимые для его передачи частоты - 697 и 1207 Гц находятся на уровне -10.5 дБ и -8.5 дБ соответственно. Гармоники 2091 и 3621 Гц подавлены почти на 30 дБ. Для передачи символа “D” генерируются две наиболее высокие частоты - 941 и 1633 Гц. Как видно из рис. 12, уровень нижней частоты составляет -12 дБ, уровень верхней частоты -11 дБ. Соответствующие гармоники ослаблены более, чем на 30 дБ. Таким образом, измеренные значения соответствуют результатам моделирования и требованиям спецификации .


Рис. 11: Амплитудный спектр символа “1”: 697 и 1207 Гц


Рис. 12: Амплитудный спектр символа “D”: 941 и 1633 Гц

Абсолютной точности частоты генерируемых прямоугольных сигналов при использовании двух различных таймеров достичь не удастся, результат будет зависеть от комбинации двух частот и типа используемых таймеров. Причиной этого является конфликт прерываний таймеров. Тем не менее, требуемая точность ±1.8 % выполняется с большим запасом.

Если используются 8-битный таймер и таймер – порт Timer Port timer на системной частоте MCLK 1.048 МГц, то частоты «нижней» группы генерируются с точностью не хуже 0.3 %. Для частот «верхней» группы на практике получена девиация не выше 0.5 %.

Единственное исключение – символ DTMF “D”, для которого генерируются наивысшие частоты. В результате этого, в данной комбинации частота «верхней» группы 1633 Гц имеет отклонение в -0.97 %.

Без учёта этого исключения, даже самая высокая частота 1633 Гц генерируется с точностью лучше 0.5 %. Максимальные девиации для различных частот приведены в таблице:

Если для генерации частот используется таймер Timer_A, ошибка будет зависеть от используемой частоты MCLK:

MCLK, МГц 1,048 2,096 3,144 3,800
Умножитель FLL 32 64 96 116
697 Гц +0,027% +0,027% +0,027% +0,027%
770 Гц -0,015% -0,016% +0,033% -0,016%
852 Гц +0,059% -0,023% +0,005% +0,031%
941 Гц +0,029% +0,029% +0,029% +0,035%
1209 Гц -0,079% +0,036% +0,036% -0,003%
1336 Гц +0,109% -0,018% +0,025% +0,025%
1447 Гц -0,009% -0,009% -0,009% -0,009%
1633 Гц +0,018% +0,018% +0,018% +0,018%

5 Заключение

Программное обеспечение для данного примера весьма простое и, занимая примерно 300 Байт, требует малого объёма ОЗУ и ПЗУ. Благодаря наличию встроенного модуля таймера требуемые частоты генерируются с высокой точностью без непроизводительной загрузки ЦПУ. В конфигурации, где для генерации используются 8-битный таймер и таймер-порт Timer/Port, подпрограммы обработки прерываний занимают примерно 12% ресурса ЦПУ. В том случае, когда частоты генерируются таймером Timer_A, загрузка ЦПУ на обработку подпрограмм прерываний снижается до 6%. В результате этого, во время передачи сигналов DTMF могут выполняться другие задачи, либо ЦПУ может быть переведен в режим пониженного потребления с целью снижения потребляемого тока.

Хорошая функциональность описанного модуля генерации сигналов DTMF при помощи прямоугольных сигналов демонстрируется схемотехникой аппаратного обеспечения. Т.к. в схеме возможно применение компонентов с большим разбросом параметров, цена такого решения весьма низкая. Все требования спецификации выполнены с большим запасом, таким образом, отдельный модуль генератора сигналов DTMF в приборах, использующих MSP430 в качестве управляющего контроллера, не требуется.

Если в конкретном случае требуется повысить соотношение сигнал – шум, используя дополнительный ОУ можно сконструировать фильтр для дальнейшего подавления интермодуляционных искажений. Такой дополнительный операционный усилитель уже присутствует в составе счетверённого ОУ в корпусе DIL14.

6 Ссылки

Bundesamt fur Post und Telekommunikation (Federal Office for Post and Telecommunications): BAPT 223 ZV 5, Zulassungsvorschrift fur Endeinrichtungen zur Anschaltung an analoge Wahlanschlusse (ausgenommen Notruf- und Durchwahlanschlusse) des Telefonnetzes (официальная спецификация для оконечных устройств, подсоединяемых к аналоговым телефонным линиям, за исключением требований безопасности и вызова) / ISDN of the Deutschen Bundespost Telekom; Bundesministerium fur Post und Telekommunikation, Draft, Bonn April 1994 Papula: Mathematik fur Ingenieure 2 (Математика для инженеров); Vieweg Verlag, Braunschweig 1990 Tietze / Schenk: Halbleiterschaltungstechnik; (Титце/Шенк, Полупроводниковая схемотехника), 10th.Edition; Springer Verlag, Berlin 1993 Lutz Bierl / Texas Instruments: MSP430 Family, Metering Application Report, Texas Instruments, Issue 2.1, Jan 1997, SLAAE10B Texas Instruments: MSP430 Family, Architecture User’s Guide and Module Library, Texas Instruments, 1996, SLAUE10B Texas Instruments: MSP430 Family, Software User’s Guide, Texas Instruments, 1996 Texas Instruments: MSP430 Family, Assembly Language Tools User’s Guide, Texas Instruments, 1996 Siwy, Robert: Systementwicklung einer Telekom-Applikation zum Senden und Empfangen von DTMF-Signalen mit dem Microcontroller MSP430 (Разработка телекоммуникационной системы для приёма и передачи цифровых сигналов на базе микроконтроллера MSP430); Diplomarbeit, Fachhochschule Landshut, Mai 1997

Изобретение относится к области генерации цифровыми методами двухтональных частотных (DTMF) сигналов, предназначенных для передачи данных, например, в области телефонии. Достигаемый технический результат - уменьшение количества избыточных схемных элементов, повышение экономической эффективности. Генератор DTMF сигналов, реализующий Способ генерации DTMF сигналов, содержит два накопительных сумматора, два фиксирующих регистра, два запоминающих устройства, итоговый сумматор, цифроаналоговый преобразователь, преобразователь кодов DTMF сигналов в последовательности целых чисел, делитель задающей частоты генератора DTMF сигналов с регулируемым коэффициентом деления, преобразователь кодов DTMF сигналов в код коэффициента деления. 2 с. и 3 з.п. ф-лы, 2 ил.

Изобретение относится к способам генерации цифровыми методами DTMF (двухтональных частотных) сигналов, предназначенным для передачи данных, например, в области телефонии при тонально-частотном наборе номера.Наиболее близким по технической сущности и достигаемому результату к заявляемому способу является способ генерации DTMF сигналов, представленный в патенте США № 5034977 от 04.04.89 г., опубл. 23.07.91 г., М.кл. 5 Н 04 М 1/00.Известный способ генерации DTMF сигналов включает выбор первого и второго кодов углов дискретизации, соответствующих первой и второй частоте составляющих DTMF сигнала, накопительное суммирование отдельно первого и второго кодов углов дискретизации с соответственно периодически фиксирующимися, с периодом, соответствующим тактовой частоте дискретизации, первым и вторым результатами накопительного суммирования, получение первого и второго дискретных значений составляющих DTMF сигнала, хранящихся в адресно расположенных ячейках соответствующих таблиц дискретных значений составляющих DTMF сигнала, путем считывания из соответствующих таблиц по адресам, соответствующим результатам накопительного суммирования кодов углов дискретизации, суммирование первого и второго дискретных значений составляющих DTMF сигнала для получения третьего дискретного значения, соответствующего значению DTMF сигнала.Известный способ генерации DTMF сигналов состоит в следующем: в зависимости от кода DTMF сигнала посредством первого преобразования кодов DTMF сигналов выбирается первый код, определяющий угол дискретизации сигнала с частотой, соответствующей группе верхних частот - столбцов, а посредством второго преобразования кодов DTMF сигналов выбирается второй код, определяющий угол дискретизации сигнала с частотой, соответствующей группе нижних частот - строк, периодически, с периодом, соответствующим тактовой частоте дискретизации, первый код угла дискретизации суммируется в соответствующем накопительном сумматоре и фиксируется в соответствующем регистре, на выходе которого находится результат, значение которого соответствует адресу ячейки таблицы, хранящейся в соответствующем постоянном запоминающем устройстве и в которой находятся соответствующие дискретные значения синусов, определяющих верхнюю частоту DTMF сигнала таким же образом, периодически, с периодом, соответствующим тактовой частоте дискретизации, второй код угла дискретизации суммируется в соответствующем накопительном сумматоре и фиксируется в соответствующем регистре, на выходе которого находится результат, значение которого соответствует адресу ячейки таблицы, хранящейся в соответствующем постоянном запоминающем устройстве и в которой находятся соответствующие дискретные значения синусов, определяющих нижнюю частоту DTMF сигнала, дискретные значения синусов, определяющих верхнюю и нижнюю частоты DTMF сигнала, суммируются в итоговом сумматоре, определяя дискретное значение сигнала DTMF и через цифроаналоговое преобразование подаются на выход, формируя ступенчато-синусоидальный DTMF сигнал, соответствующий входному коду DTMF сигнала.Известный способ является низкоэффективным, что обусловлено его низкими технико-экономическими показателями и технологическими показателями.Технико-экономические показатели определяются необходимыми затратами при реализации способа для достижения необходимых параметров, предъявляемых к DTMF сигналам. В известном способе точность генерации частот зависит от разрядности кода, соответствующего углу дискретизации, что требует наличия большой разрядности накопительного сумматора, что затрудняет реализацию способа простыми аппаратными средствами. А именно, код угла дискретизации в известном способе определяется выражениемK=(F/F т)32..., (1.1)где К - код, соответствующий углу дискретизации;F - генерируемая частота;F т - частота дискретизации.Как видно, точность генерируемой частоты однозначно зависит от отношения генерируемой и частоты дискретизации.Для достижения необходимой точности генерируемой частоты, а именно, не хуже 1,5%, очевидно, требуется не менее двух значащих цифр после запятой, что требует представления данных с разрядностью для нижних частот не менее 8 бит, а для верхних частот не менее 9 бит, а для накопительного суммирования соответственно не менее 12 бит, что ведет к увеличению числа комплектующих элементов устройств, реализующих известный способ. Известные устройства для реализации известного способа, а именно сумматоры, регистры, постоянные запоминающие устройства имеют входы/выходы с разрядностью 4 и 8 бит. Поэтому при большей разрядности требуются дополнительные технико-экономические затраты при реализации равнофункциональных устройств. При этом в известном способе уменьшение количества разрядов после запятой приводит к погрешности частоты, превышающей допустимую.Технологические показатели определяются универсальностью и унификацией при реализации способа, например, современный уровень техники, предполагающий уменьшения материалоемкости, комплектующих элементов и увеличения многофункциональности устройств, требует использования микроконтроллеров. Широкораспространенные микроконтороллеры, применяемые в телефонии и телеметрических измерениях, используют 8-битовые данные и 8-битовое арифметико-логическое устройство, что требует при реализации известного способа дополнительных вычислительных операций, связанных с суммированием данных, с разрядностью более 8 бит, и анализом сигнала переноса, что увеличивает число команд и, соответственно, тактовую частоту микроконтроллера, а также объем оперативной памяти микроконтроллера, что ведет к удорожанию устройств, использующих известный способ для генерации сигналов DTMF. Данное заключение приведено при анализе применения известного способа в тональном номеронабирателе на базе микроконтроллеров производства фирм Atmel, Microchip tnс и др.Таким образом, известный способ принципиально низкоэффективен, что обусловлено низкими технико-экономическими показателями, выраженными в увеличенной материалоемкости, энергопотребления, и низкими технологическими показателями, так как имеет ограничения при использовании способа, в том числе в составе микроконтроллеров широкого применения, что выражается в повышенных технических характеристиках, предъявляемых к микроконтроллерам, что снижает их многофункциональность.Наиболее близким по технической сущности и достигаемому результату к заявляемому генератору DTMF сигналов является генератор DTMF сигналов, представленный в патенте США № 5034977 от 04.04.89 г., опубл. 23.07.91 г., М.кл. 5 Н 04 М 1/00.Известный генератор DTMF сигналов включает: первый накопительный сумматор, первый фиксирующий регистр, первое запоминающее устройство, второй накопительный сумматор, второй фиксирующий регистр, второе запоминающее устройство, итоговый сумматор, цифроаналоговый преобразователь, причем выход первого накопительного сумматора соединен со входом первого фиксирующего регистра, выход первого фиксирующего регистра соединен со входом первого запоминающего устройства, а также с одним из входов первого накопительного сумматора, выход первого запоминающего устройства соединен с одним из входов итогового сумматора, выход второго накопительного сумматора соединен со входом второго фиксирующего регистра, выход второго фиксирующего регистра соединен со входом второго запоминающего устройства, а также с одним из входов второго накопительного сумматора, выход второго запоминающего устройства соединен с другим входом итогового сумматора, выход итогового сумматора соединен со входом цифроаналогового преобразователя, выход которого является выходом генератора DTMF сигналов.Известный генератор содержит также первый преобразователь кодов DTMF сигналов в соответствующие коды углов дискретизации, соответствующие верхним частотам DTMF сигнала, второй преобразователь кодов DTMF сигналов в соответствующие коды углов дискретизации, соответствующие нижним частотам DTMF сигнала, причем выход первого преобразователя кодов DTMF сигналов соединен с другим входом первого накопительного сумматора, выход второго преобразователя кодов DTMF сигналов соединен с другим входом второго накопительного сумматора, входы первого и второго преобразователей кодов DTMF сигналов являются входами генератора DTMF сигналов, а тактовые входы первого и второго фиксирующих регистров соединены между собой и являются входом тактовой частоты дискретизации генератора DTMF сигналов.Известный генератор DTMF сигналов обеспечивает низкий технический результат, обусловленный избыточным количеством схемных элементов, связанных с различной, а также избыточной разрядностью одинаково функциональных элементов. Кроме того, реализация известного технического решения эффективно возможна в виде отдельной интегральной микросхемы, однако это требует организации специализированного производства, но учитывая, что генераторы DTMF сигналов являются частью многофункциональных устройств (телефонные аппараты с расширенными возможностями, устройства передачи телеметрической информации по телефонным линиям и т.д.), реализуемых в настоящее время на базе универсальных микроконтроллеров, производство отдельных микросхем DTMF сигналов экономически неэффективно.В основу заявляемого технического решения поставлена задача создания способа генерации сигналов DTMF с использованием генератора сигналов DTMF, в котором путем изменения условий и последовательности выполнения операций осуществляется реализация способа с высокими технико-экономическими показателями, обусловленными уменьшением разрядности однотипных операций, высокими технологическими показателями, при реализации способа, как в схемотехническом исполнении простыми аппаратными средствами, так и в составе многофункционального микроконтроллера, связанная с повторяемостью, при реализации, одинаково функциональных элементов.В основу технического решения поставлена задача создания генератора DTMF сигналов, в котором путем введения новых элементов и выполнения новых связей повышается технический результат, связанный с уменьшением количества избыточных схемных элементов, и соответственно повышается экономическая эффективность, связанная с возможностью реализации заявляемого технического решения широкодоступными средствами.Поставленная задача решается тем, что в известном способе генерации DTMF сигналов, включающем выбор первого и второго кодов углов дискретизации, соответствующих первой и второй частоте составляющих DTMF сигнала, накопительное суммирование отдельно первого и второго кодов углов дискретизации с соответственно периодически фиксирующимися, с периодом, соответствующим тактовой частоте дискретизации, первым и вторым результатами накопительного суммирования, получение первого и второго дискретных значений составляющих DTMF сигнала, хранящихся в адресно расположенных ячейках соответствующих таблиц дискретных значений составляющих DTMF сигнала, путем считывания из соответствующих таблиц по адресам, соответствующим результатам накопительного суммирования кодов углов дискретизации, суммирование первого и второго дискретных значений составляющих DTMF сигнала для получения третьего дискретного значения, соответствующего значению DTMF сигнала, новым является то, что получение первого и второго дискретных значений составляющих DTMF сигнала, хранящихся в адресно расположенных ячейках соответствующих таблиц дискретных значений составляющих DTMF сигнала, производится путем считывания из соответствующих таблиц по адресам, соответствующим результатам накопительного суммирования соответственно первой и второй последовательностей целых чисел, усредненное значение которых соответствует кодам углов дискретизации, соответствующих составляющим DTMF сигнала.Кроме того, усредненное значение последовательности целых чисел, формирующих результат накопительного суммирования, может быть средним арифметическим этих чисел.Кроме того, периодическое фиксирование первого и второго результатов накопительного суммирования может быть с периодом, соответствующим тактовой частоте дискретизации, различной для разных DTMF сигналов.Поставленная задача решается также тем, что в известном генераторе DTMF сигналов, включающем первый накопительный сумматор, первый фиксирующий регистр, первое запоминающее устройство, второй накопительный сумматор, второй фиксирующий регистр, второе запоминающее устройство, итоговый сумматор, цифроаналоговый преобразователь, причем выход первого накопительного сумматора соединен со входом первого фиксирующего регистра, выход первого фиксирующего регистра соединен со входом первого запоминающего устройства, а также с одним из входов первого накопительного сумматора, выход первого запоминающего устройства соединен с одним из входов итогового сумматора, выход второго накопительного сумматора соединен со входом второго фиксирующего регистра, выход второго фиксирующего регистра соединен со входом второго запоминающего устройства, а также с одним из входов второго накопительного сумматора, выход второго запоминающего устройства соединен с другим входом итогового сумматора, выход итогового сумматора соединен со входом цифроаналогового преобразователя, выход которого является выходом генератора DTMF сигналов, новым, согласно изобретению, является то, что генератор DTMF сигналов дополнительно содержит преобразователь кодов DTMF сигналов в последовательности целых чисел, делитель задающей частоты генератора DTMF сигналов с регулируемым коэффициентом деления, преобразователь кодов DTMF сигналов в код коэффициета деления, причем первый выход преобразователя кодов DTMF сигналов в последовательности целых чисел соединен с другим входом первого накопительного сумматора, второй выход преобразователя кодов DTMF сигналов в последовательности целых чисел соединен с другим входом второго накопительного сумматора, выход делителя задающей частоты генератора DTMF сигналов с регулируемым коэффициентом деления соединен с тактовым входом преобразователя кодов DTMF сигналов в последовательности целых чисел, а также с тактовым входом первого фиксирующего регистра и тактовым входом второго фиксирующего регистра, выход преобразователя кодов DTMF сигналов в код коэффициета деления соединен со входом установки коэффициента деления делителя задающей частоты генератора DTMF сигналов, вход делителя задающей частоты генератора DTMF сигналов с регулируемым коэффициентом деления является входом задающей частоты генератора DTMF сигналов, вход преобразователя кодов DTMF сигналов в код коэффициента деления соединен со входом преобразователя кодов DTMF сигналов в последовательности целых чисел и является входом генератора DTMF сигналов.Кроме того, преобразователь кодов DTMF сигналов в последовательности целых чисел может быть выполнен в виде управляемого программируемого запоминающего устройства, память которого состоит из, соответствующих количеству DTMF сигналов, областей памяти, состоящих из соответствующих длине последовательности целых чисел, ячеек памяти, выполненных так, что в одной половине ячейки памяти хранится число, относящееся к первой последовательности целых чисел, а в другой половине ячейки памяти хранится число, относящееся, соответственно, к другой последовательности целых чисел, являющихся слагаемыми соответствующих накопительных сумматоров, а управление программируемым запоминающим устройством выполнено с возможностью раздельного управления выбором области памяти и отдельной ячейки памяти.Новые признаки способа генерации DTMF сигналов и генератора DTMF сигналов в совокупности с известными признаками этих объектов обеспечивают новые технические свойства объектов, и, как следствие этих свойств, обеспечивается новый необходимый технический результат.Причинно-следственная связь между совокупностью признаков заявляемого способа и достигаемым техническим результатом поясняется следующим.Для раскрытия сути предлагаемого технического решения удобными будут следующие выкладки:y(P)=sin(n) (1.2),где y(P)- дискретное значение функции синуса;=wT=27F/Fr (1.3)- угол дискретизации, измеряемый в радианах;n - порядковый номер выборки - дискрета;F т =F OSC /kd - тактовая частота дискретизации, где F OSC - задающая частота устройства;kd - регулируемый коэффициент деления.Тогда=2FК D /F OSC . (1.4)Как общеизвестно, функция синуса периодическая с периодом 2. Чтобы преобразовать угол дискретизации из радиан в относительные единицы и получить код угла дискретизации, разбиваем весь период на m частей, где m - целое двоичное число. Таким образом, получим одну минимальную дискретную часть периода:=2/m. (1.5)Код угла дискретизации - это относительное значение угла дискретизации в соответствии с одной частью периода , а именно,К=/=2F/F т:2P/m=Fm/F т. (1.6)Например, для генерируемых частот 1477 Гц и 697 Гц (соответствует коду DTMF сигнала “3”), при m=64, и тактовой частоты F т =32768 ГцК 697 =1,36;K l477 =2,88.Очевидно, что для двоичного отображения кода угла дискретизации К 697 =1,36 в соответственно 136 требуется 8 бит (1281+640+320+160+81+40+20+10), а К 1477 =2,88 в соответственно 288 требуется 9 бит (2561+1280+640+321+160+80+40+ 20+10).При этом для накопительного суммирования соответственно в двоичном предствлении требуется 12 бит, что определило вышеописанные недостатки известного решения.Предлагаемое техническое решение определяет, например, число 1,36 как усредненное значение последовательности целых чисел 1 и 2, а именно 1,36=(1х+2у)/(х+у), где х и у - соответственно количество чисел 1 и 2, периодически повторяющихся с периодом (х+у).Значение кода угла дискретизации состоит из целой части Ц и дробной, т.е. например, 1,36=1+0,36. Относительная точность такой замены в соответствии с выражением (1.7)=К/Ц (1.7)повышается с увеличением целой части значения кода угла дискретизации. Например, для генерируемой частоты 697 Гц, m=64, и тактовой частоты F т =32768 Гц погрешность замены К 697 =1,36 на значения чисел 1 и 2 соответственно 36 и 32%.В то же время, если увеличить значение m=256, то погрешность замены К 697 =5,45 на значения чисел 5 и 6 соответственно уменьшается 9 и 10%.При этом погрешность генерируемой частоты, например, при замене К 697 =5,45 на значения чисел 5 и 6 при периоде повторения, равном 16, 5,45=(5х+6у)/(х+у),где (х+у)=16.Решая уравнение, получим х=9, у=7, т.е. из шестнадцати операций накопительного суммирования девять раз суммируется слагаемое 5 и семь раз слагаемое 6, при этом фактически К 697 =5,4375, подставляя это значение в выражение (1.6) для m=256, F т =32768 Гц, определим фактическое расчетное значение генерируемой частоты F=696 Гц, при этом погрешность оставила 0,1%.Таким образом, накопительное суммирование последовательности целых чисел, усредненное значение которых соответствует соответствующим углам дискретизации, позволяет достигнуть высоких технико-экономических показателей за счет уменьшения разрядности операций накопительного суммирования, обусловленных возможностью варьировать составляющими вышеприведенных выражений, и соответственно уменьшения разрядности устройств, реализующих предлагаемый способ, что ведет к уменьшению аппаратных и энергетических затрат при реализации способа, и обеспечить высокие технологические показатели предлагаемого способа при использовании в многофункциональных устройствах, обусловленных пониженными техническими требованиями.Причинно-следственная связь между совокупностью признаков заявляемого технического решения и достигаемым техническим результатом поясняется следующим.Высокий технический результат генератора DTMF сигналов обеспечивается введением новых элементов преобразователя кодов DTMF сигналов в последовательности целых чисел, делителя задающей частоты генератора DTMF сигналов с регулируемым коэффициентом деления, преобразователя кодов DTMF сигналов в код коэффициента делителя, которые обеспечивают реализацию способа схемотехническими элементами с одинаковой разрядностью, не превышающей 8-бит, при этом отсутствует избыточность элементов, необходимых для решения нескольких задач, например, и для фиксирования результата накопительного суммирования, и для адресации соответствующего запоминающего устройства используется одинаковое количество разрядов, реализуемых не более чем 8-разрядным регистром, который может быть выполнен общедоступными средствами в виде одной микросхемы либо, в микропроцессорном исполнении, одной ячейкой памяти.Кроме того, реализация накопительных сумматоров может быть выполнена в виде одинаковых устройств, с одинаковой разрядностью, в виде общедоступных микросхем сумматоров, оперирующих с 4-разрядными слагаемыми.Конечно, подразумевается, что числа и соответственно устройства, формирующие вышеописанные последовательности целых чисел, совокупность которых определяет соответствующие коды углов дискретизации, могут быть и с другой разрядностью, но наиболее оптимальные, с точки зрения выполнения поставленных заявляемым решением целей, являются 4-разрядные числа.Кроме того, высокий технический результат обеспечивается также при реализации предлагаемого технического решения в составе микроконтроллеров, где система команд микроконтроллеров обязательно включает в себя команды, оперирующие с 4-разрядными числами - полубайтами.Таким образом, заявляемое техническое решение генератора DTMF сигналов позволяет обеспечить высокий технический результат, связанный с уменьшением количества схемных элементов, а также обеспечивает универсальность при реализации генератора DTMF сигналов как общедоступными аппаратными средствами, так и в составе многофункциональных микроконтроллеров, что определяет высокую экономическую эффективность технического решения.Изобретение поясняется чертежом, где на фиг.1 функционально изображен генератор DTMF сигналов, реализующий способ генерации DTMF сигналов.Генератор DTMF сигналов включает преобразователь 1 кодов DTMF сигналов в последовательности целых чисел, делитель 2 задающей частоты генератора DTMF сигналов с регулируемым коэффициентом деления, преобразователь 3 кодов DTMF сигналов в код коэффициент деления, первый накопительный сумматор 4, первый фиксирующий регистр 5, первое запоминающее устройство 6, второе запоминающее устройство 7, второй фиксирующий регистр 8, второй накопительный сумматор, итоговый сумматор 10, цифроаналоговый преобразователь 11.Работа генератора DTMF сигналов иллюстрируется на примере реализации способа генерации DTMF сигналов.Предварительно на основании выражений (1.4, 1.6) и технических данных, в частности задающей частоты устройства, где будет реализован предлагаемый способ, рассчитываются последовательности целых чисел, определяющие соответствующие коды углов дискретизации, и коды коэффициентов деления для делителя 2 задающей частоты генератора DTMF сигналов с регулируемым коэффициентом деления, которые записываются в соответствующие ячейки областей памяти преобразователя 1 кодов DTMF сигналов в последовательности целых чисел и преобразователя 3 кодов DTMF сигналов в коды коэффициентов деления, также предварительно рассчитывают дискретные значения соответствующих функций синуса, количество которых определяется числом дискретов т, и записывают в соответствующие запоминающие устройства 6 и 7, при генерации DTMF сигнала, на входах преобразователя 1 и преобразователя 3, являющихся входами генератора, на время действия DTMF сигнала, установится код генерируемого DTMF сигнала, на выходе преобразователя 3 установится код, определяющий коэффициент деления для делителя 2, при этом на выходе делителя 2 установится тактовая частота дискретизации периодически, с периодом, соответствующим тактовой частоте дискретизации, с первого выхода преобразователя 1 будут поступать на вход первого накопительного сумматора 4 двоичные числа, входящие в первую последовательность целых чисел, а со второго выхода преобразователя 1 будут поступать на вход второго накопительного сумматора 9 двоичные числа, входящие во вторую последовательность целых чисел, соответствующих составляющим DTMF сигнала, результаты накопительного суммирования подаются с выходов накопительных сумматоров на входы соответствующих фиксирующих регистров 5 и 8, с выходов фиксирующих регистров 5 и 8 результаты накопительного суммирования, с периодом, соответствующим тактовой частоте дискретизации, поступают на другие входы соответствующих накопительных сумматоров 4 и 9, а также на входы соответствующих запоминающих устройств 6 и 7, устанавливая адреса дискретных значений синусов соответствующих составляющих DTMF сигнала, с выходов запоминающих устройств 6 и 7 дискретные значения соответствующих составляющих DTMF сигнала поступают на соответствующие входы итогового сумматора 10, на выходе которого образуется дискретный двоичный DTMF сигнал, который поступает на вход цифроаналогового преобразователя 11, на выходе которого образуется ступенчатый синусоидальный DTMF сигнал, соответствующий входному коду DTMF сигнала.Преобразователь 1 кодов DTMF сигналов в последовательности целых чисел (фиг.1) может быть выполнен в виде, изображенном на фиг.2, где преобразователь кодов DTMF сигналов в последовательности целых чисел включает устройство управления 12, программируемое запоминающее устройство 13.Работа генератора DTMF сигналов иллюстрируется далее на конкретном примере реализации заявляемого способа в телефонном тонально-частотном номеронабирателе.Предварительно на основании выражений (1.4, 1.6) и технических данных рассчитываются последовательности целых чисел, определяющие соответствующие коды углов дискретизации, и коды коэффициентов деления для делителя 2 задающей частоты генератора DTMF сигналов с регулируемым коэффициентом деления. Учитывая, что реализация способа включает однотипные расчеты, то для иллюстрации работы в конкретном примере приводится реализация способа для генерации DTMF сигнала, соответствующего нажатию клавиши “7” в составе тонально-импульсного номеронабирателя. В качестве задающей частоты генератора установлена кварцевая частота, наиболее распространенная в телефонной технике, а именно F OSC =3579545 Гц. Нажатию клавиши “7” сответствует сигнал DTMF с верхней (столбцы) частотой 1209 Гц и нижней (строки) частотой 852 Гц. Так как DTMF сигнал одновременно передает две частоты, то коэффициенты деления рассчитывают для большей - верхней частоты так, чтобы соответствующий код угла дискретизации в соответствии с выражением (1,6) был близок к максимальному значению - 16, что реализуется не более чем 4-битами данных. Таким образом, при F OSC =3579545 Гц, числе дискретных значений синусов m=128 рассчитанные значения коэффициента деления для делителя 2 задающей частоты генератора DTMF сигналов с регулируемым коэффициентом деления K D =240=460, при этом соответствующие коды углов дискретизации для верхней частоты K 1209/852 =10,376, для нижней частоты К 852/1209 =7,312.Согласно изобретению коды углов дискретизации заменяем на последовательности целых чисел соответственно 10/11 и 7/8.10,375=(10х+11у)/(x+у), при этом фактически K 1209 / 852 =10,3757,312=(7х+8у)/(x+у), при этом фактически K 952/1209 =7,313,при (х+у)=16.Таким образом, 10,375 заменяется на периодически повторяющуюся последовательность целых чисел 10 по 10 раз и 11 по 6 раз, а 7,312 заменяется как 7 по 11 раз и 8 по 5 раз.Область памяти для кода DTMF сигнала “7” в двоичном представлении выглядит следующим образом:
Таким образом рассчитывают шестнадцать таблиц, соответствующих кодам DTMF сигналов, а именно 0, 1, 2...9, *, #, А, В, С, D, и предварительно записывают в память программируемого запоминающего устройства 13 (преобразователь кода символа DTMF в последовательности целых чисел).При нажатии на клавишу, например, “7” на входе генератора на время действия DTMF сигнала устанавливается двоичный код DTMF сигнала “7” (0111), преобразователь 3 кода DTMF сигнала в коэффициент деления преобразует код DTMF сигнала в код коэффициента деления kd для делителя 2 задающей частоты генератора с регулируемым коэффициентом деления, на выходе делителя 2 установится тактовая частота дискретизации F т =F OSC /K D . Код DTMF сигнала также поступает на адресные входы старших разрядов программируемого запоминающего устройства 13 (преобразователь кодов DTMF сигналов в последовательности целых чисел) и присутствует там в течение времени действия DTMF сигнала. Управляемое устройство 12, выполненное, например, в виде счетчика (преобразователь кодов DTMF сигналов в последовательности целых чисел), под воздействием тактовых сигналов с частотой т циклически изменяет свое значение на параллельных выходах последовательно от 0000 до 1111, изменяя соответственно значения адресных входов младших разрядов программируемого запоминающего устройства 13 (преобразователь кодов DTMF сигналов в последовательности целых чисел), на выходе программируемого запоминающего устройства 13с тактовой частотой дискретизации появляются 8-разрядные (байтовые) числа, при этом в соответствии с таблицей 1 старшие четыре разряда (старший полубайт) формируют последовательность целых чисел, совокупность которых, а именно, среднее арифметическое, определяет код угла дискретизации, соответствующий верхней (столбцы) частоте, а младшие четыре разряда (младший полубайт) формируют последовательность целых чисел, совокупность которых, а именно, среднее арифметическое, определяет код угла дискретизации, соответствующий нижней (строки) частоте, четырехразрядные данные, в соответствии с таблицей 1, с выхода программируемого запоминающего устройства 13 (преобразователь кодов DTMF сигналов в последовательности целых чисел) раздельно поступают на входы соответствующих накопительных сумматоров 4 и 9, на выходах соответствующих сумматоров 4 и 9 данные изменяются с тактовой частотой дискретизации от 0 до m (в данном случае m=128), определяя и фиксируя посредством фиксирующих регистров 5 и 8 адреса для запоминающих устройств 6 и 7, в которые соответственно записаны двоичные дискретные значения соответствующих синусоидальных составляющих DTMF сигнала, с выходов запоминающих устройств 6 и 7 двоичные дискретные значения соответствующих синусоидальных составляющих DTMF сигнала поступают на соответствующие входы итогового сумматора 10, на выходе которого формируются двоичные дискретные значения DTMF сигнала, которые далее поступают на вход цифроаналогового преобразователя 11, на выходе которого формируется ступенчатый синусоидальный DTMF сигнал.Генератор DTMF сигналов может быть реализован на базе общеизвестных технических средств, описанных, например, в: Применение интегральных микросхем в электронной вычислительной технике. Справочник / Под ред. Б.Н. Файзулаева, Б.В. Тарабрина. - М.: Радио и связь, 1986. При этом преобразователь 3 кодов DTMF сигналов в коды коэффициентов деления может быть выполнен, например, в виде микросхемы постоянного запоминающего устройства 155РЕ 3 (с. 343), реализация регистров описана на с. 108, реализация накопительных сумматоров описана на с. 114.Заявляемый способ и генератор DTMF сигналов также реализованы на базе технических средств фирмы Microchip Inc. (8-разрядных однокристальных микроконтроллеров типа pic16f628), в составе импульсно-тонального телефонного номеронабирателя “Кадран - НКТ - 01” производства фирмы “Кадран” (Украина, г. Запорожье). Система команд и внутреннее устройство узлов микроконтроллера описаны в: Прокопенко Б.Я. Однокристальные микроконтроллеры. Додэка, 2000, ISBN8-87835-056-4.Описание параметров DTMF сигнала приведено, например, в: Интегральные микросхемы: Микросхемы для телефонии. Вып.1. - М.: Додэка, 1994, 256 с. - ISBN-5-87835-003-3., с. 12, 13.

ФОРМУЛА ИЗОБРЕТЕНИЯ

1. Способ генерации двухтональных частотных (DTMF) сигналов, включающий выбор первого и второго кодов углов дискретизации, соответствующих первой и второй частотам составляющих DTMF сигнала, накопительное суммирование отдельно первого и второго кодов углов дискретизации с соответственно периодически фиксирующимися периодом, соответствующим тактовой частоте дискретизации, первым и вторым результатами накопительного суммирования, получение первого и второго дискретных значений составляющих DTMF сигнала, хранящихся в адресно расположенных ячейках соответствующих таблиц дискретных значений составляющих DTMF сигнала, путем считывания из соответствующих таблиц по адресам, соответствующим результатам накопительного суммирования кодов углов дискретизации, суммирование первого и второго дискретных значений составляющих DTMF сигнала для получения третьего дискретного значения, соответствующего значению DТМF сигнала, отличающийся тем, что получение первого и второго дискретных значений составляющих DTMF сигнала, хранящихся в адресно расположенных ячейках соответствующих таблиц дискретных значений составляющих DTMF сигнала, производится путем считывания из соответствующих таблиц по адресам, соответствующим результатам накопительного суммирования соответственно первой и второй последовательностей целых чисел, усредненное значение которых соответствует кодам углов дискретизации, соответствующих составляющих DTMF сигнала.2. Способ по п.1, отличающийся тем, что усредненное значение последовательности целых чисел, формирующих результат накопительного суммирования, является средним арифметическим этих чисел.3. Способ по п.1, отличающийся тем, что периодическое фиксирование первого и второго результатов накопительного суммирования производится с периодом, соответствующим тактовой частоте дискретизации, различной для разных DТМF сигналов.4. Генератор DТМF сигналов, включающий первый накопительный сумматор, первый фиксирующий регистр, первое запоминающее устройство, второй накопительный сумматор, второй фиксирующий регистр, второе запоминающее устройство, итоговый сумматор, цифроаналоговый преобразователь, причем выход первого накопительного сумматора соединен со входом первого фиксирующего регистра, выход первого фиксирующего регистра соединен со входом первого запоминающего устройства, а также с одним из входов первого накопительного сумматора, выход первого запоминающего устройства соединен с одним из входов итогового сумматора, выход второго накопительного сумматора соединен со входом второго фиксирующего регистра, выход второго фиксирующего регистра соединен со входом второго запоминающего устройства, а также с одним из входов второго накопительного сумматора, выход второго запоминающего устройства соединен с другим входом итогового сумматора, выход итогового сумматора соединен со входом цифроаналогового преобразователя, выход которого является выходом генератора DТМF сигналов, отличающийся тем, что генератор DTMF сигналов дополнительно содержит преобразователь кодов DTMF сигналов в последовательности целых чисел, делитель задающей частоты генератора DTMF сигналов с регулируемым коэффициентом деления, преобразователь кодов DTMF сигналов в код коэффициента деления, причем первый выход преобразователя кодов DTMF сигналов в последовательности целых чисел соединен с другим входом первого накопительного сумматора, второй выход преобразователя кодов DTMF сигналов в последовательности целых чисел соединен с другим входом второго накопительного сумматора, выход делителя задающей частоты генератора DTMF сигналов с регулируемым коэффициентом деления соединен с тактовым входом преобразователя кодов DTMF сигналов в последовательности целых чисел, а также с тактовым входом первого фиксирующего регистра и тактовым входом второго фиксирующего регистра, выход преобразователя кодов DTMF сигналов в код коэффициента деления соединен со входом установки коэффициента деления делителя задающей частоты генератора DTMF сигналов, вход делителя задающей частоты генератора DTMF сигналов с регулируемым коэффициентом деления является входом задающей частоты генератора DТМF сигналов, вход преобразователя кодов DTMF сигналов в код коэффициента деления соединен со входом преобразователя кодов DTMF сигналов в последовательности целых чисел и является входом генератора DTMF сигналов.5. Генератор DTMF сигналов по п.4, отличающийся тем, что преобразователь кодов DTMF сигналов в последовательности целых чисел выполнен в виде управляемого программируемого запоминающего устройства, память которого состоит из соответствующих количеству DТМF сигналов, областей памяти, состоящих из соответствующих длине последовательности целых чисел ячеек памяти, выполненных так, что в одной половине ячейки памяти хранится число, относящееся к первой последовательности целых чисел, а в другой половине ячейки памяти хранится число, относящееся соответственно к другой последовательности целых чисел, являющихся слагаемыми соответствующих накопительных сумматоров, а управление программируемым запоминающим устройством выполнено с возможностью раздельного управления выбором области памяти и отдельной ячейки памяти.

Отличительные особенности:

  • Генерация синусоидальных сигналов с использованием широтно-импульсной модуляции (ШИМ)
  • Объединение различных синусоидальных сигналов в один DTMF-сигнал
  • Исходные коды на языках ассемблер и Си
  • Разработан для совместной работы с STK500
  • Размер кода программы 260 байт/размер таблицы констант 128 байт
  • Использование метода табличного преобразования

Введение

Данный документ описывает методику генерации DTMF-сигналов (двутональные многочастотные сигналы) с использованием любого AVR-микроконтроллера, содержащего блок широтно-импульсной модуляции (ШИМ) и статическое ОЗУ. Данные сигналы находят широкое применение в телефонии, где они воспроизводятся при нажатии на кнопки набора номера телефонного аппарата. Для правильной генерации DTMF-сигнала необходимо наложить две частоты вместе: низкую частоту (fb) и высокую частоту (fa). В таблице 1 показано как смешиваются различные частоты для получения DTMF-тонов при нажатии на различные клавиши.

Рисунок 1 – Схема генератора DTMF-сигнала

Таблица 1 – Матрица формирования тонального сигнала

fb/fa 1209 Гц 1336 Гц 1477 Гц 1633 Гц
697 Гц 1 2 3 A
770 Гц 4 5 6 B
852 Гц 7 8 9 C
941 Гц * 0 # D

В строках таблицы 1 представлены значения низкой частоты, а в столбцах – значения высокой частоты. Например, в матрице показано, что при нажатии на кнопку «5» должны смешиваться частоты fb = 770 Гц и fa = 1336 Гц. В результате сложения двух синусоидальных сигналов разных частот образуется DTMF-сигнал

где отношение амплитуд K=A b /A a исходных сигналов должно отвечать условию

Принцип действия

Помимо общих сведений об использовании широтно-импульсной модуляции далее будет показано как широтно-импульсная модуляция позволяет генерировать синусоидальные сигналы. В следующем параграфе описывается как, используя базовую частоту ШИМ получить различные частоты. После рассмотрения теоретических основ будет дано описание непосредственно генератора DTMF-сигнала. Генерация синусоидальных сигналов

В зависимости от соотношения длительности высокого VH и низкого VL уровней напряжения среднее значение на выходе ШИМ изменяется. Если соотношение между длительностями обоих уровней удерживать постоянным, то в результате будет генерироваться постоянный уровень напряжения VAV. Рисунок 2 показывает сигнал с широтно-импульсной модуляцией.


Рисунок 2 – Генерация уровня постоянного напряжения

Уровень напряжения определяется выражением:

(3)

Синусоидальный сигнал может генерирован при условии, что среднее значение напряжения, генерируемого широтно-импульсной модуляцией будет изменяться каждый период ШИМ. Соотношение между высоким и низким уровнями должно задаваться в соответствие с уровнем напряжения синусоидального сигнала при соответствующем времени. На рисунке 3 иллюстрируется данный процесс. Исходные данные для ШИМ вычисляются для каждого ее периода и записываются в таблицу преобразования (ТП).

Рисунок 3 также иллюстрирует зависимость между частотой основного синусоидального сигнала и количеством выборок. Чем выше число выборок (Nc) – тем выше точность моделирования результирующего сигнала:

(4)

Частота ШИМ зависит от разрешающей способности ШИМ. При 8-разрядном разрешении, конечное значение (вершина счета) таймера равно 0xFF (255). Т.к. таймер выполняет счет в прямом и обратном направлениях, то данное значение должно быть удвоено. Поэтому, частота ШИМ может быть вычислена путем деления тактовой частоты таймера f CK на 510. Таким образом, при частоте тактирования таймера 8 МГц результирующая частота ШИМ составит 15.6 кГц.


Рисунок 3 – Генерация синусоидального сигнала с использованием ШИМ

Изменение частоты синусоидального сигнала

Предположим, что синусоидальные выборки считываются из таблицы преобразования не последовательно, а через одну. В этом случае при той же частоте чтения выборок будет генерироваться сигнал с удвоенной частотой (см. рисунок 4).


Рисунок 4 – Удвоение результирующей частоты (XSW = 2)

По аналогии, если считывать не каждое второе значение, а каждое третье, четвертое, пятое (соответственно, ширина шага 3, 4, 5…) и т.д. можно генерировать Nc-частот в диапазоне . Обратите внимание, что для высоких частот результирующая форма сигнала не будет синусоидальной. Ширину шага по таблице преобразования обозначим как X SW , где

(5)

Вычисление текущей позиции в ТП для следующего периода ШИМ (при переполнении таймера) выполняется с помощью выражения (6). Новое значение в позиции X LUT зависит от его предыдущего состояния в позиции X" LUT с прибавлением ширины шага X SW

(6)

Сложение разных частот для получения DTMF-сигнала

DTMF-сигнал может быть сгенерирован с помощью выражений (1) и (2). Для простоты арифметических действий значение коэффициента К принимается равным 0.75, чтобы арифметическое действие заменить логическими сдвигами. С учетом выражения (6) текущее значение для управления ШИМ может быть вычислено по выражению:

а с учетом, что X LUTa =X" LUTa + X SWa ,X LUTb =X" LUTb + X SWb , окончательно запишем

Реализация DTMF-генератора

В данном приложении рассматривается построение DTMF тонального генератора с использованием выхода 8-разрядной ШИМ (OC1A) и таблицы с 128 выборками значений синусоидальной функции (Nc), каждая из которых задается 7 битами (n). Следующие выражения показывают эту зависимость, а также показывают как вычислить элементы таблицы преобразования:

(9)

Преимуществом использования 7 бит является то, что сумма значений сигналов высокой и низкой частоты имеет размер одного байта. Для поддержки полного набора DTMF-тонов необходимо вычислить 8 значений для каждой DTMF-частоты из таблицы 1 и занести их в таблицу преобразования.

Для достижения более высокой точности выполнено следующее решение: значения, вычисленные по выражению 5 требуют всего 5 байт. Для использования всех 8 байт, что позволит уменьшить погрешность округления, это значение умножается на 8. Указатель на таблицу преобразования записывается таким же способом. Но в этом случае требуется два байта для запоминания 8-кратного значения. Это означает, что необходимо выполнить 3 правосторонних сдвига и операцию модуля по основанию Nc (логическое умножение на Nc-1) перед использованием этих байт как указателя на значения синусоиды в


Рисунок 5 – Схема модуля для подключения к STK500

ШИМ-сигнал формируется на выводе OC1A (PD5). Дополнительный выходной фильтр будет способствовать большему соответствию синусоидальной форме сигнала. При уменьшении частоты ШИМ может возникнуть необходимость применения фильтра с более крутой АЧХ для получения хорошего результата.

Подключение клавиатуры показано на рисунке 1. Работа клавиатуры должна быть организована таким образом, чтобы была возможность определения нажатой клавиши. Это может быть выполнено по следующему алгоритму:

  1. Определение строки нажатой клавиши
    • настроить младшую тетраду порта В на выход и установить лог. «0»
    • настроить старшую тетраду порта В на вход с подключением подтягивающих резисторов
    • строка с нажатой кнопкой определяется как разряд старшей тетрады с лог. «0»
  2. Определение столбца нажатой клавиши
    • настроить старшую тетраду порта В на выход и установить лог. «0»
    • настроить младшую тетраду порта В на вход с подключением подтягивающих резисторов
    • столбец с нажатой кнопкой определяется как разряд младшей тетрады с лог. «0»

Прим.: В STK200 между выводами разъема PORTB и выводами микроконтроллера BP5, PB6 и PB7 включены последовательно резисторы (см. схему STK200). Это вызовет проблемы если клавиатура подключена к разъему PORTB.

Рисунок 6 иллюстрирует работу подпрограммы по определению нажатой клавиши. В зависимости от нажатой клавиши определяется длительность интервала. Процедура обработки прерывания использует это значение для вычисления установок ШИМ для двух синусоид DTM-тона. Процедура обработки прерывания показана на рисунках 7 и 8.

Эта процедура вычисляет значение для сравнения с выходом таймера на следующий период ШИМ. Процедура обработки прерываний сперва вычисляет позицию значения следующей выборки в таблице преобразования и считывает сохраненное там значение.

Позиция выборки в таблице преобразования определяется длительностью импульса, а собственно длительность импульса определяется генерируемой частотой.

Окончательное значение, которое записывается в регистр сравнения таймера, определяется с использованием формулы (7), где учитываются значения выборок обеих DTMF-частот.


Рисунок 6 – Блок-схема основной программы

Поделиться: