Генератор синусоидального сигнала
В задании для генерации (Chapter 4) синусоидального сигнала используется стандартная библиотека dsplib, которая предоставляется Texas Instruments. В этой библиотеке содержится много полезных функций для работы с ЦСП:
- функция Быстрого Преобразования Фурье
- функции синуса, косинуса, тангенса
- функции экспоненты и логарифма
Каждая из функций, оптимизирована для работы с конкретным процессором.
В микропроцессорной технике генерация тестовых гармонических сигналов используется постоянно. Применяются два подхода. В первом случае значения полупериода гармонического сигнала представляются в виде таблицы. Чем точнее должен быть сгенерирован сигнал, тем больше размер этой таблицы. Этот метод имеет главное достоинство, быстрое получение результата. Недостаток – низкая точность при генерации высоких частот. Второй подход заключается в представлении синуса и косинуса в виде степенного ряда. Этот подход и используется в DSPLIB (TI). Достоинство – высокая точность, зависящая от количества составляющих ряда. Недостаток – длительность вычислений.
Для наблюдения за результатом выполнения программы на ЦСП, подключим STEREO OUT платы (Рис. 5.14.) к линейному входу звуковой карты компьютера и с помощью программы Cool Edit, будем записывать сигнал сгенерированный ЦСП. Зададим различные значения частоты и амплитуды для левого и правого каналов:
· left_output = generate_sinewave_1(250, 5000);
· right_output = generate_sinewave_2(500, 10000);
На левом канале стерео выхода мы увидим синусоидальный сигнал с частотой равной 250 Гц и амплитудой 5000, а для правового канал частота будет равна 500 Гц и амплитуда 10000. Результат генерации мы можем наблюдать в окне программы Cool Edit (Рисунок 5.15). Так же результаты работы программы можно наблюдать на экране осциллографа.
Рис. 5.14.Подключенный к STEREO OUT
Рис. 5.15.Результат генерации синуса
Для генерации сигнала используется функция sine() (sine ( &count, &sinusoid, 1);). Она принимает три параметра:
-count - адрес памяти, в котором содержится значение частоты
-sinusoid - адрес памяти, в который помещается рассчитанное значение синуса
-третий параметр всегда 1
Функция sine() вычисляет синус угла. Для этого на вход функции подается число с фиксированной точкой, которое соответствует значению угла:
-0 соответствует 0o
-16383 соответствует 90o
-32767 соответствует 180o
-2 * 32767 соответствует 360o
Генерация DTMF сигнала
Тональный набор (Chapter 14), тональный сигнал (Dual-Tone Multi-Frequency, DTMF) — двух-тональный многочастотный аналоговый сигнал, используемый для набора телефонного номера. Сфера применения тональных сигналов: автоматическая телефонная сигнализация между устройствами, а также ручной ввод абонентом для различных интерактивных систем, например голосового автоответа. По используемой полосе частот сигнал соответствует телефонии.
Для кодирования символа в DTMF сигнал, требуется использовать таблицу (Таблица 5.1).
Таблица 5.1
1209 Гц | 1336 Гц | 1447 Гц | |
697 Гц | |||
770 Гц | |||
852 Гц | |||
941 Гц | * | # |
Частоты подобраны таким образом, чтобы их гармоники не накладывались на соседние основные частоты.
Чтобы получить закодированный сигнал, требуется сложить два синусоидальных сигнала с частотами из строки и столбца. Например, рассмотрим кодирование символа «5». Для этого нам потребуется сложить синусоидальный сигнал с частотой 770 Гц и синусоидальный сигнал с частотой 1336 Гц. Получившейся сигнал будет представлять собой DTMF сигнал для символа «5».
В нашем проекте функция dial_phone_number(&telephone_number[0]) отвечает за кодирование символа в DTMF сигнал. Данная функция принимает в виде параметров адрес первого элемента строки, содержащей символы которые мы хотим закодировать в DTMF. Внутри данной функции строка проверяется на наличие символов, которые можно закодировать, в случае обнаружения такого символа вызывается функция generate_DTMF(button). В эту функцию передается символ, который нужно закодировать. Далее для символа находятся требуемые значения частот и генерируются два синусоидальных сигнала с этими частотами, которые затем складываются. На выходе этой функции мы получаем готовый DTMF сигнал.
Аналогично предыдущим заданиям с выхода STEREO OUT платы, сможем увидеть какой формы, будет DTMF сигнал для символов «1», «5» (Рис. 5.16., Рис. 5.17.).
Рис. 5.16. DTMF сигнал, символа «1»
Рис. 5.17. DTMF сигнал, символа «5»