Радиосеть: обнаружение и идентификация сети.

Часть 3: практическая.

(Лукашин И.В. и Саутина М.Ю., РГРТУ, гр.9110)



Постановка задачи:

            1) Реализация задач канального уровня в программной модели радиосети.

            2) Реализация задач физического уровня в программной модели радиосети.

            3) Разработка и экспериментальное исследование модели.

             В ходе создания программной модели радиосети, столкнулись с проблемой реализации кода Рида-Соломона (255, 242), о котором говорилось во второй статье. Для решения этой проблемы был выбран другой код Рида-Соломона (63, 51) (Рис. 1), способный исправлять 6 ошибок. Особенностью кода Рида-Соломона является, то что этот код работает с элементами поля Галуа. На один элемент поля Галуа приходится 6 бит. Таким образом, «выражая» через биты полученный код получаем (378, 306). Из-за чего изменилась структура сообщений (Рис. 2). В сообщениях L1-уровня поле Data2 теперь имеет размерность 306 бит, а FEC – 72 бита. Вследствие расширения поля Data2 в сообщениях L2-уровня размерность поля Data3 увеличилась, остальные поля этого уровня не изменили размерность.

 Рис. 1. График зависимости вероятности ошибки от ОСШ.

 

а) 


 б) 

Рис.2. Иерархическая структура передачи: а) широковещательной несущей BCCH, б) заявки на регистрацию.

Перейдем к программной реализации модели. Параметры модели устанавливает функция st = initSettings().

Рассмотрим формирование широковещательной несущей. Сообщения L3-уровня включается в себя ID-сети ID_networt=249 и Название сети network_name = '<<MARIATELECOM>>'; т.о. формируется сообщения L3-уровня в двоичном формате msg_L3=[ID_networt_bin msg]. Далее, полученное сообщение передается по радиоканалу с помощью функции trxIQ = transmiter_AP(0, 0, 'bcch', msg_L3). Рассмотрим эту функцию более подробно. Эта функция включает в себя формирование сообщения L2-уровня с полями Address receiver, Address transmitter, Type, Data3: сообщение в двоичном формате msg_Lev2 = [addr_rec_bin addr_tr_bin tps msgL3], далее осуществляется процедура CRC: msg_Lev1 = [msg_Lev2 CRC].

На L1-уровне осуществляется помехоустойчивое кодирование с помощью кода Рида-Соломона (63, 51)  реализуемый функцией [code_word] = bin_to_binRScoding ( msg_bin ). Эта функция преобразуюет двоичное информационное сообщение в двоичное сообщение закодированное кодом Рида-Соломона. Стандартные функции enc = fec.rsenc(st.n,st.k); cod = encode(enc,res) работают только с элементами поля Галуа. Из-за этого необходимо двоичное сообщение перевести в элементы поля Галуа, где на один элемент приходится 6 бит, осуществить кодирование, и полученную последовательность перевести в двоичный формат.

      После кодирование на L1-уровне осуществляется модуляция QAM-16 h = modem.qammod(st.mPos); IQ_code = modulate(h, code_word'). В задачу AP входит обеспечение синхронизации по частоте и по времени. Синхронизация по частоте заключается в отправке пакета содержащего только нули Sync_frec=zeros(1,380); IQ_Sync_frec = modulate(h, Sync_frec'). Синхронизация по времени заключается в отправке пакета содержащего последовательность чередующихся 0000 1111 IQ_Sync_time = modulate(h, Sync_time'). Операции осуществляемые на L1-уровне изобразим в виде функциональной диаграммы (Рис.3.). 

Рис. 3. Функциональная диаграмма служб L1-уровня на передающей стороне.

 Во временной области полученные сообщения 

 Для того чтобы изобразить полученные сигналы служб L1-уровня во временной области необходимо найти их комплексную огибающую, в этом поможет функция [envelope_of_signal] = complex_envelope(signal, frequency), где  signal - комплексный сигнал, frequency - частота несущего колебания. Временные эпюры приведены на Рис. 4.

  


Рис. 4. Временные эпюры сигналов служб L1-уровня формируемые AP.

Полученные сообщения проходят через канал связи noise_sgn = awgn(trxIQ/sqrt(P_AP),SNR)для получения реального ОСШ выполним нормировку: разделим на максимальную амплитуду сигнала.

Прием широковещательного сообщения Т1 осуществляется с помощью функции [Addr_rec, Addr_tr, TypeMSG, msgL3, errs] = Receive_msg_T(rxIQ).  Эта функция осуществляет демодуляцию, полученных сообщений, с помощью функции  h = modem.qamdemod(st.mPos); s = demodulate(h,rxIQ). Следует отметить, что принятые сообщения синхронизации rec_Sync_frec=s(:,1); rec_Sync_time=s(:,2)в дальнейшем не рассматриваются. Над полученным информационным сообщением rec_code_word=s(:,3)'осуществляется помехоустойчивое декодирование с помощью функции [ decode_word ] = binRscoding_to_bin( code_word ). Эта функция преобразует полученное закодированное сообщение в двоичное информационное сообщение. Декодирование осуществляется путем перевода закодированного сообщения в элементы поля Галуа, затем осуществляется собственно декодирование dec=fec.rsdec(st.n,st.k); decod = decode(dec,res), а потом декодированное сообщение переводится в двоичный формат. Все выше указанные операции осуществляются на L1-уровне. Операции осуществляемые на L1-уровне приемной стороны изобразим в виде функциональной диаграммы (Рис. 5.).

 

Рис. 5. Функциональная диаграмма служб L1-уровня на приемной стороне.

 На L2-уровне осуществляется проверка достоверности полученного сообщения - процедура CRC. Параметр errs указывает на наличие/отсутствие ошибок. Далее, из сообщения извлекается Address receiver, Address transmitter, Type, Data3.

На L1-уровне  при получении широковещательной несущей осуществляется сценарий, изображенный на Рис. 6.

   

Рис. 6. Сценарий осуществляемый на L1-уровне при получении широковещательной несущей.

 Т1 формирует заявку на регистрацию. Заявка на регистрацию формируется при выполнении двух условий: получателем сообщения переданного АР является Т1 (((Addr_rec_r == 0)|(Addr_rec_r == 1))) и тип сообщения совпадает с ожидаемым (TypeMSG_r == st.bcch).  Сообщения L3-уровня включается в себя Код услуги  ask = 'for registration' и Аутентификатор authentication = 654 т.о. формируется сообщения L3-уровня в двоичном формате msg_Lev3=[ask_msg authentication_bin].

 Далее, полученное сообщение передается по радиоканалу с помощью функции msgIQ = transmiter_T(Addr_tr_r, 1, 'resp', msg_Lev3), где Addr_tr_r-полученный адрес АР. Отличие функции msgIQ = transmiter_T()от trxIQ = transmiter_AP()заключается в отсутствии пакетов синхронизации (т.к. синхронизация не в ходит в задачи Т1), в остальном все функции transmiter_AP()схожи.

Полученное сообщения проходит через канал связи noise_sgn = awgn(msgIQ/sqrt(P_AP),SNR).

Прием сообщения АР осуществляется с помощью функции [Addr_rec_rc, Addr_tr_rc, TypeMSG_rc, msgL3_rc, errs_rc] = Receive_msg_AP(sqrt(P_AP)*noise_sgn). Функции [Addr_rec, Addr_tr, TypeMSG, msgL3, errs] = Receive_msg_T(rxIQ) и [Addr_rec_rc, Addr_tr_rc, TypeMSG_rc, msgL3_rc, errs_rc] = Receive_msg_AP(noise_sgn) отличаются отсутствием на входе приемника [] = Receive_msg_AP() сигналов синхронизации, остальные функции схожи.  

На L1-уровне при получении "заявки на  регистрацию" АР осуществляется следующий сценарий (Рис. 7.).

 

Рис. 7. Сценарий осуществляемый на L1-уровне при получении заявки на регистрацию.

 Результат моделирования полученной модели, с описанными выше параметрами отраженно на Рис.8.

   
Рис.8. Результат моделирования, с описанными выше параметрами.

Проведем исследования модели при различных условиях.

Исследуем функцию trxIQ = transmiter_AP(0, 0, 'bcch', msg_L3), и как изменение ее параметров отражается на работе модели.

1) Адрес получателя равен 3: Addr_rec= 3

 

Рис.9. Условие 1. Адрес получателя не равен адресу Т1.

  2) Адрес отправителя равен 2: Addr_tr = 2

Рис.10. Условие 2. Адрес отправителя не равен адресу АР.

 3) Тип сообщения – tch: TypeMSG == 'tchh'

 

Рис.11. Условие 3. Тип сообщения передаваемого АР не является широковещательным.

 Вывод: модель исправно работает при изменении параметров функции [] = transmiter_AP().

           Исследуем влияние шума на передаваемые сообщения.

1) ОСШ = 15 дБ.

 

Рис. 12. Сигнальное созвездие формируемое передатчиком АР при ОСШ = 15 дБ (красный – отображение информационное сообщение L1-уровня, синий – сигнал частотный синхронизации, зеленый – сигнал временной синхронизации).

 

 Рис. 13. Сигнальное созвездие формируемое передатчиком Т1 при ОСШ = 15 дБ.

 

Рис. 14. Результат моделирования при ОСШ=15 дБ.

 2) ОСШ = 12 дБ.


 

Рис. 15. Сигнальное созвездие формируемое передатчиком АР при ОСШ = 12 дБ


Рис. 16. Сигнальное созвездие формируемое передатчиком Т1 при ОСШ = 12 дБ.


 

Рис. 17. Результат моделирования при ОСШ=12 дБ.

Вывод: в ходе моделирования полностью оценить влияние шума на передаваемые сообщения нельзя, т.к. в модели передаются 2 достаточно коротких сообщения (длиной 380 бит). Для более полной оценки влияния шума необходимо передать намного больше сообщений (порядка 1000 сообщений длиной 380 бит, чтобы оценить работу модели при вероятности ошибки 10^(-5)).

 

Вывод: в ходе моделирования радиосети: обнаружение и идентификация сети удалось полностью удовлетворить требованиям указанным в предыдущих сообщениях и требования предъявляемых по заданию.  

 

 

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

1. http://omoled.ru/publications/view/368

2. http://omoled.ru/publications/view/380

3. Ссылка на исходный код модели:  

http://yadi.sk/d/YhiSehGF4yarO

http://radiolay.ru/viewtopic.php?f=42&t=250&sid=73e145afe9edd00e7372b209737fdc44&start=20