2. Техническая часть.
Целью данного этапа курсового проектирования является  построение и описание модели передающего и приемного тракта радиотелефонной системы для передачи одного из сообщений канала управления, передаваемое по логическому каналу вызова (PCH). Данное сообщение передается исключительно от БС к терминалу. Следовательно, в качестве передающей стороны выступает БС, а приемная сторона это терминал. Данное сообщение передается в следующем случае: абонент хочет осуществить соединение с одним из абонентов данной сети. В ходе обслуживания базовой станцией запрашиваемой услуги БС должна послать запрос вызываемому терминалу на осуществление соединения с вызывающим терминалом. БС передает этот запрос именно по каналу вызова (PCH). Структура полностью сформированного сообщения, готового к отправке, приведена на рис. 1.

Рисунок 1. Структура сообщения, готового к отправке на приемную сторону.
На рисунке 1 поле pream представляет собой преамбулу, необходимую для частотной и временной синхронизации, а также содержащую информацию о выбранном профиле. В поле addr содержится идентификатор терминала, которому делается запрос на соединение. В поле type находится последовательность битов, соответствующая данному типу пакета (PCH). Информационное поле msg содержит собственно запрос. Поле CRC необходимо для контроля целостности пакета на приемной стороне. Далее следует последовательность из 94 нулевых битов. Она необходима для приведения пакета канального уровня к длине, требуемой для помехоустойчивого кодирования (247 битов). Избыточные биты, полученные при кодировании записываются в поле FEC. Замыкает сообщение настроечная последовательность, необходимая для фильтра-эквалайзера на приемной стороне. Она записывается в поле eqv. 

3. Экспериментальная часть. Разработка модели системы в среде Matlab, демонстрирующий пример передачи сообщений между объектами верхнего уровня.
После инициализации параметров модели в отдельном файле initSettings.m необходимо запустить файл transmitter.m на исполнение, введя в командной строке программы Matlab следующее сообщение: [msg] = transmitter().
В ходе выполнения данного модуля производятся следующие действия:
- Формирование запроса, который необходимо передать терминалу (128 бит). Подразумевается, что запрос представлен в виде, отличном от двоичного (рис. 2).

Рисунок 2. Формирование запроса.
- Запрос переводится в двоичный вид, то есть в последовательность нулей и единиц. Также в двоичный вид переводится идентификатор терминала, которому необходимо передать данный запрос. Как говорилось выше, тип пакета -  PCH. Он тоже переводится в последовательность нулей и единиц (рис. 3).

Рисунок 3. Подготовка к передаче сообщения.
- Далее полученные части сообщения собираются в одно (рис. 4).

Рисунок 4. Сборка части L2-сообщения.
- Получение CRC кода и расчет CRC. Эта переменная представляет собой последовательность из 16 нулей и единиц (рис. 5). 

Рисунок 5. Расчет CRC.
- Далее завершается сборка сообщения канального уровня. Его длина составляет 153 бита. Для последующего помехоустойчивого кодирования на физическом уровне необходимо, чтобы это сообщение имело длину 247 битов. Поэтому оно дополняется последовательностью из 94 нулевых битов (рис. 6).  


Рисунок 6. Сборка сообщения канального уровня.
- После кодирования к полученному сообщению должна быть применена функция перемежения. Длина получаемого в этом случае сообщения остается прежней (255 битов).

Рисунок 7. Выполнение кодирования и перемежения.
- Далее необходимо сформировать настройки для фильтра-эквалайзера на приемной стороне. Они представляют собой последовательность из 26 битов (рис. 8).


Рисунок 8.  Формирование настроек для фильтра-эквалайзера.
- Для обеспечения синхронизации необходимо сформировать преамбулу длиной 19 битов (рис. 9).

Рисунок 9. Формирование преамбулы.
- Далее необходимо собрать сообщение физического уровня в одно целое. Оно состоит из преамбулы, информационной части и настроек для фильтра на приемной стороне. Длина такого сообщения составляет 300 битов (рис. 10). 

Рисунок 10. Сборка сообщения, подлежащего модуляции.
- Полученное сообщение необходимо промодулировать. Так как PCH является каналом управления, то сообщение по этому каналу нужно передавать с помощью профиля, где обеспечена высокая помехозащищенность. Это профиль №1. Он отличается тем, что в нем используется QPSK-модуляция, в отличие от профиля №2, где осуществляется PSK-8-модуляция. В файле инициализации уже был задан тип используемой модуляции (QPSK). Результат модуляции представлен на рис. 11. 


Рисунок 11. Результат функции modulate().
- Далее на сформированный сигнал накладывается шум и полученное сообщение записывается в файл (рис. 12).

Рисунок 12. Запись сигнала в файл. 
- Для проверки правильности выполнения модуляции в модуле transmitter.m предусмотрено построение сигнльно-кодового созвездия (рис. 13). Полученный результат удовлетворяет тем данным, которые были заданы в файле инициализации.

Рисунок 13. СКС полученного сигнала.
После выполнения функции transmitter() в командное окне программы Matlab будет выведен запрос msg в двоичном виде, который должен быть извлечен в неизменном виде на приемной стороне. Для это необходимо запустить файл Receiver.m на исполнение, набрав в командном окне Matlabа следующее сообщение: [R_message error] = Receiver().
В ходе выполнения данной функции производятся следующие действия:
- Инициализируются параметры демодуляции и открывается файл с записанным сигналом на чтение (рис. 14).

Рисунок 14. Открытие файла на чтение.
- Далее организуется цикл чтения данных из файла и формирование комплексного сигнала из действительных и вещественных частей, записанных в файле (рис. 15).


Рисунок 15. Организация цикла чтения данных из файла.
- Производится демодуляция сигнала, в результате которой получаем сообщение длиной 300 битов (рис. 16). 

Рисунок 16. Демодуляция принятого сообщения.
- Извлечение преамбулы принятого сообщения. Как видно из рис. 17, она соответствует преамбуле отправленного сообщения.

Рисунок 17. Извлечение преамбулы принятого сообщения.
- Далее необходимо извлечь настройки для фильтра-эквалайзера. На рис. 18 видно, что настройки соответствуют передаваемым.

Рисунок 18. Извлечение настроек для фильтра-эквалайзера.
- Необходимо провести декодирование полученного сообщения. В результате этой операции получим последовательность из 247 битов (рис. 19).

Рисунок 19. Помехоустойчивое декодирование.
- Проверка целостности принятого сообщения. Если ошибок нет, в командное окно программы Matlab выведется сообщение error=0,  и error=1 в случае, если обнаружены ошибки.

Рисунок 20. Проверка целостности принятого сообщения.
- Далее выделяется собственно принятое сообщение канального уровня длиной 137 битов (рис. 21).

Рисунок 21. Собственно принятое сообщение.
- Производится извлечение идентификатора терминала и приведение его к десятичному виду. Как видно из рис. 22, идентификатор соответствует переданному.

Рисунок 22. Извлечение идентификатора терминала, которому предназначалось сообщение.
- Аналогично производится извлечение типа пакета и приведение его к десятичному виду. Как видно из рис. 23, тип пакета соответствует переданному. 

Рисунок 23. Извлечение типа пакета.
- Далее производится извлечение принимаемого сообщения в двоичном виде (рис. 24).

Рисунок 24. Извлечение принимаемого сообщения.
В результате выполнения модуля Receiver() в командное окно выводится принятое сообщение в двоичном виде и значение переменной error. Если error=0, то сообщение принято без ошибок,  если error=1, то в принятом сообщении обнаружены ошибки. Ошибки могут быть обусловлены наложением шума в канале связи.

Результат выполнения программы:

msg =

     0     1     1     1     0     0     0     1     0     1

     0     1     0     0     0     1     1     0     1     1

     0     1     0     0     1     1     1     1     0     1

     1     0     1     1     0     0     1     0     0     0

     1     0     1     1     1     0     0     1     1     1

     1     1     1     1     1     1     1     1     1     1

     0     1     0     0     1     0     0     0     0     1

     0     0     0     1     0     0     1     0     0     1

     1     1     1     1     1     0     1     0     1     0

     0     1     0     1     0     0     1     1     1     0

     1     0     0     0     1     1     1     1     0     0

     0     1     0     0     0     0     0     0     1     1

     1     0     1     0     1     0     1     0

 

R_message = 

     0     1     1     1     0     0     0     1     0     1

     0     1     0     0     0     1     1     0     1     1

     0     1     0     0     1     1     1     1     0     1

     1     0     1     1     0     0     1     0     0     0

     1     0     1     1     1     0     0     1     1     1

     1     1     1     1     1     1     1     1     1     1

     0     1     0     0     1     0     0     0     0     1

     0     0     0     1     0     0     1     0     0     1

     1     1     1     1     1     0     1     0     1     0

     0     1     0     1     0     0     1     1     1     0

     1     0     0     0     1     1     1     1     0     0

     0     1     0     0     0     0     0     0     1     1

     1     0     1     0     1     0     1     0

  

error =

     0

Судя по выведенным данным, принятое сообщение полностью соответствует переданному. Ошибок при передаче не обнаружено. В ходе моделирования было установлено, что безошибочная передача сообщения возможна при ОСШ, равном не менее 8 дБ.

Список использованной литературы:

КП "Компактная система радиотелефонной связи"_часть_1_v.3

КП "Компактная система радиотелефонной связи"_часть_2_v.2

КП "Компактная система радиотелефонной связи"_часть_3_v.1


Тексты программ находятся в прикрепленных файлах к данному сообщению.