MATLAB для DSP. Моделирование приемника DTMF. Часть 2

         

Настройка симулятора


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

MATLAB для DSP. Моделирование приемника DTMF. Часть 2



Проверка блока логики


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

MATLAB для DSP. Моделирование приемника DTMF. Часть 2



Проверка блоков расчёта периодов двух составляющих сигнала


Для этого следует подключить осциллограф к месту, где происходит вычисление периода. Результат представлен на рис. 16.

MATLAB для DSP. Моделирование приемника DTMF. Часть 2



Проверка работы детектора наличия сигнала


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

MATLAB для DSP. Моделирование приемника DTMF. Часть 2



Проверка работы режекторных фильтров


Сначала нужно проверить работу сигнальной части модели — блоков генерации сигнала, измерения интенсивности сигнала и шума и режекции второй составляющей. Спектр сигнала на выходе генератора, посылающего цифру “1”, показан на рис. 11.

MATLAB для DSP. Моделирование приемника DTMF. Часть 2



Проверка всей модели


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

    Так как моделирование должно полностью повторять параметры моделируемой системы, необходимо добавить округление после каждой операции умножения и проверку на допустимые границы после каждой операции сложения. Блоки усиления сигнала и сумматоры имеют встроенную возможность входить в состояние “насыщения” при достижении определённого значения. Для этого в их параметрах необходимо активировать опцию “Saturate on integer overflow”. Для округления можно использовать блок из пакета Simulink, называемый “Rounding function”. В его параметрах следует указать, какую функцию округления использовать: округление (round), усечение (floor) или другую.



Как видно из вышеописанного, пакет


     Как видно из вышеописанного, пакет Simulink позволяет реализовать довольно сложный алгоритм, разбить его на блоки и анализировать их как все вместе, так и по отдельности. Наглядность представления модели в Simulink позволяет легко менять структуру, “обвешивать” модель различными “датчиками” — осциллографами, спектроанализаторами и индикаторами. Процесс отладки становится красивым увлекательным занятием, результаты наглядны и однозначны. Для точного соответствия вычислений в Simulink и в ЦПОС, в модель вводятся элементы, обеспечивающие моделирование в арифметике с фиксированной запятой. Например, у результатов умножения можно отбрасывать дробную часть, а у сумматоров включить опцию “Integer overflow”, то есть режим переполнения 16-разрядного аккумулятора. Построенная с помощью Simulink, модель приёмника DTMF уверенно принимает тестовый сигнал, удовлетворяет требованиям ITU-T и может являться пособием для создания подобных устройств на ЦПОС и микроконтроллерах. Данная модель была создана сначала на языке MATLAB (m-file), для удобства настройки параметров по блокам была смоделирована в Simulink, после чего её перенесли на DSP. Она действительно работает на 16-разрядном процессоре, выполняя все спецификации ITU-T.
    В заключение автор считает своим долгом поблагодарить руководителя проекта “MATLAB для DSP” проф. Ланнэ А.А. за постановку задачи и помощь в выполнении данной работы, фирму «SoftLine», предоставившую для этой работы лицензионую версию программы MATLAB v5.3, а также инженера «Лониис» Гусеву М.Н. за помощь в тестировании модели на 16-бит DSP фирмы «Analog Devices».
Литература
1.                    Анохин В.В., Ланнэ А.А. MATLAB для DSP. Моделирование аналого-цифрового преобразования. Часть 1 // Chip News. — 2000. — № 2. — С. 3–7.
2.                    Анохин В.В. MATLAB для DSP. Моделирование аналого-цифрового преобразования. Часть 2 // Chip News. — 2000. — № 3. — С. 26–29.

Заполнение блока “Logic sinth.”


Блок логики легче всего реализовать в виде S-функции — специальной конструкции языка MATLAB. Но для наглядности представим блок логики в графическом виде (рис. 9).

MATLAB для DSP. Моделирование приемника DTMF. Часть 2



Заполнение блока “Notch filter”


Построим два одинаковых блока режекторных фильтров. Модель одного из них представлена на рис. 1.

MATLAB для DSP. Моделирование приемника DTMF. Часть 2



Заполнение блока “Power estimator and signal detector”


Изначально алгоритм был предложен и объявлен в Internet для реализации на 8-бит процессорах, что накладывало серьёзные ограничения на операции умножения с накоплением, поэтому использовался сложный алгоритм адаптации уровня шума. Для реализации на 16-бит ЦПОС с 32-бит умножителем можно использовать более простые алгоритмы. В частности, вместо мощности сигнала можно вычислять интеграл от абсолютного значения сигнала. Соответствующий алгоритм реализован в виде схемы, изображённой на рис. 6.

MATLAB для DSP. Моделирование приемника DTMF. Часть 2



Заполнение блоков “Row freq. detector” и “Column freq. detector”


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

MATLAB для DSP. Моделирование приемника DTMF. Часть 2