![]() |
|||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
![]() |
![]() |
![]() |
![]() |
||||||||||||||||||||||||||||||
![]() |
![]() |
||||||||||||||||||||||||||||||||
![]() |
![]() |
![]() |
![]() |
||||||||||||||||||||||||||||||
![]() |
![]() |
Вход | ![]() |
Раздел "Обработка сигналов и изображений\Communications Toolbox"
А.Б.Сергиенко. Пример использования пакета Communications - моделирование модема V.32bisОдну из разновидностей систем связи, хорошо знакомых пользователям персональных компьютеров, представляют собой модемы, предназначенные для передачи данных по телефонным сетям. Рассмотрим моделирование одного из реальных модемных стандартов средствами пакета Communications. Речь пойдет о моделировании приемника и передатчика модема, работающего в соответствии с Рекомендацией ITU-T V.32bis [1]. Достаточно подробное описание процесса формирования сигнала имеется также в книге [2]. Конечно, данный протокол в настоящее время является устаревшим, но он обладает многими характерными чертами систем цифровой связи и благодаря своей простоте удобен для использования в учебных и демонстрационных целях. Рекомендация V.32bis предусматривает различные скорости передачи данных - от 4800 до 14 400 бит/с. В данном примере будет моделироваться обработка сигнала для максимально возможной скорости 14 400 бит/с. Вы можете загрузить архив model32.zip, содержащий следующие файлы, относящиеся к данному примеру:
Краткое описание стандарта V.32bisВходным сигналом модема является последовательный битовый поток данных, для кодирования и модуляции которого в протоколе V.32bis используется следующая последовательность процедур.
Функция моделирования передатчика модема V.32bisРеализуем модель передатчика модема в виде функции mod32144, которая будет получать на входе вектор передаваемых битов x и возвращать вектор отсчетов модулированного сигнала y:
На рис. 4 показана структурная схема передатчика модема с подписанным функциями пакета Communications, которые используются при реализации различных блоков. Рис. 4. Блок-схема передатчика модема V.32bis Скремблер, представляющий собой дискретный фильтр, математические операции в котором выполняются по модулю два, удобно реализуется с помощью функции gffilter:
Разделение скремблированного битового потока xs на шестибитовые символы выполняется с помощью функции vec2mat:
Далее два первых бита символов sy подвергаются дифференциальному кодированию, при этом преобразование пар битов в целые числа и обратно осуществляется с помощью функций bi2de и de2bi соответственно:
Сверточный код, соответствующий структурной схеме рис. 2, является нелинейным, поэтому он не может быть задан в виде коэффициентов полиномов. Заполняем поля структуры
Реализуем сказанное в виде кода MATLAB:
Теперь осуществляем собственно сверточное кодирование дифференциально-кодированных битов
Результат работы сверточного кодера
Имеющиеся в пакете Communications функции цифровой модуляции, к сожалению, не реализуют формирование спектра сигнала при квадратурной манипуляции, поэтому нам придется осуществить необходимые шаги вручную. Прежде всего загружаем описание используемого созвездия и отображаем семибитовые символы на комплексную плоскость с помощью функции
Теперь производим формирование спектра, выполняя интерполяцию сигнала
Наконец, интерполированный сигнал s_m подвергается аналоговой квадратурной модуляции с помощью функции
Модулированный сигнал y является результатом работы функции. Тестирование функции mod32144 Протестируем функцию, подав на ее вход вектор из 10 000 бит, сформированный с помощью функции
Поскольку при квадратурной модуляции амплитуда и фаза сигнала меняются одновременно, график полученного сигнала не слишком нагляден. Однако все же выведем его начальный фрагмент, а также покажем оценку спектральной плотности мощности полученного сигнала, произведя ее методом Уэлча с помощью функции pwelch пакета Signal Processing:
Полученные графики представлены на рис. 5.
Рис. 5. Сформированный сигнал модема V.32bis (слева) и его спектр мощности (справа) При наличии звуковой карты можно прослушать полученный сигнал, например, с помощью функции soundsc:
Функция repmat использована здесь для того, чтобы повторить сформированный вектор 10 раз, иначе звук оказывается слишком коротким. Если вы когда-нибудь слышали шуршащий звук модема, то, без сомнения, узнаете его. Функция моделирования приемника модема V.32bisФункция
На рис. 6 показана структурная схема приемника модема с подписанным функциями пакета Communications, которые используются при реализации различных блоков. Рис. 6. Блок-схема приемника модема V.32bis Прежде всего зададим необходимые константы: символьную скорость Fd, несущую частоту Fc и частоту дискретизации Fs:
Как уже говорилось, функции цифровой модуляции пакета Communications не поддерживают формирование спектра при квадратурной манипуляции. Поэтому демодуляцию сигнала придется реализовать, вручную выполнив необходимые шаги. Сначала рассчитаем фильтр с косинусоидальным сглаживанием АЧХ, идентичный тому, который использовался в передатчике. Для этого служит функция rcosine:
Теперь производим аналоговую демодуляцию с помощью функции
Выводим диаграмму рассеяния с помощью функции
Далее с помощью функции demodmap ищем точки используемого созвездия, ближайшие к принятым точкам (символьная скорость задана в виде двухэлементного вектора, второй элемент которого указывает положение оптимальных точек дискретизации сигнала):
Кроме того, для последующей реализации исправления ошибок с помощью сверточного кода необходимо найти ближайшие к принятым точкам позиции восьми частичных созвездий, соответствующих восьми возможным комбинациям трех выходных бит сверточного кодера:
При обработке фильтрами в приемнике и передатчике сигнал приобретает некоторую задержку, которая в нашем примере равна шести символам (по умолчанию функции
Подготовка структуры
К сожалению, способ реализации мягкого декодирования сверточных кодов, реализованный в настоящее время в функции
Алгоритм Витерби попытался исправить ошибки, имевшиеся в двухбитовых комбинациях, защищенных сверточным кодом. Однако в каждом символе имеются еще четыре бита, передававшиеся без такой защиты. Чтобы обеспечить коррекцию полных шестибитовых символов, мы подвергаем исправленную последовательность y12 сверточному кодированию, чтобы получить исправленные значения избыточного бита. Результирующие трехбитовые комбинации определяют номера частичных созвездий, в которых следует искать точки, соответствующие исправленным символам. Результаты отображения принятых точек с использованием частичных созвездий сохранены в матрице sy1, так что сейчас мы просто выбираем из нее нужные элементы, сформировав набор линейных индексов с помощью функции sub2ind. После этого исправленные символы преобразуются в битовые представления с помощью функции
Следующий этап - дифференциальное декодирование двух бит каждого символа. Для этого мы выделяем эти биты, преобразуем их в целое число и затем попарно складываем эти числа, соответствующие соседним символам, беря два младших бита от результата. Полученные числа преобразуются обратно в биты:
Последний этап - дескремблирование битового потока. Мы удаляем избыточный бит, преобразуем матрицу шестибитовых информационных символов в битовый поток и реализуем дескремблер, который представляет собой нерекурсивный фильтр, легко реализуемый с помощью функции
Вектор дескремблированных битов z является результатом работы функции. Тестирование функции demod32144 Протестируем функцию, подав на ее вход сформированный ранее вектор y отсчетов модулированного сигнала:
На рис. 7 показана диаграмма рассеяния, сформированная нашей функцией. Видно, что принятые точки соответствуют использованному созвездию (см. ранее рис. 3). Рис. 7. Диаграмма рассеяния, выведенная функцией demod32144 при приеме сигнала Проверим правильность приема, сравнив переданную и принятую последовательности бит с помощью функции symerr (поскольку мы сравниваем векторы, содержащие только нули и единицы, функции
Как видите, сигнал принят правильно. ЗаключениеДанный пример является демонстрационным и не реализует ряда функций, необходимых в реальной системе цифровой связи. К таким функциям относятся адаптивная фильтрация для компенсации искажений, вносимых каналом связи, временная синхронизация, передача служебных сигналов для установления соединения и т. п. Все это также может быть реализовано средствами MATLAB с использованием прикладных пакетов Communications, Signal Processing и Filter Design. Литература
|
![]() |
||
Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2002 г.)
|
||
На первую страницу \ Сотрудничество \ MathWorks \ SoftLine \ Exponenta.ru \ Exponenta Pro | ||
E-mail: | ||
Информация на сайте была обновлена 15.04.2003 |
Copyright 2001-2003 SoftLine Co Наши баннеры |