Цель работы:

Разработка и экспериментальное исследование модели. Продемонстрировать процесс выполнения одного или нескольких этапов сценария поиска и идентификации сети.

Исходные данные

Вид модуляции - QPSK

Тип помехоустойчивого кодирования - произвольный блоковый код

Тип CRC -  CRC-16

Решение:


Рис.1 Иерархическая структура передачи широковещательной несущей BCCH



 Рис.2 Иерархическая структура передачи сообщения заявки на регистрацию.


Формирование широковещательной несущей

 Сообщения L3-уровня состоит из ID cети и Наименование сети:

ID_networt=181;

network_name = 'VIKTORnet'

Происходит формирование сообщения L3-уровня:

 msg_L3=[ID_networt_bin msg];

Далее сообщение передается по каналу:

trxIQ=TR(0, 0, 'BCCH', msg_L3);

 

Функция trxIQ формирует сообщение L2-уровня (рис.1):

msg_Lev2 = [addr_rec_bin addr_tr_bin tps msgL3];

 

Далее осуществляется процедура получения СRC кода:

% получение CRC кода

m = [msg_Lev2 zeros(1,st.y-1)]; %вставка нулей в поле CRC

[q r] = deconv(m,st.poly); % поиск частного и остатка от деления

%информационной части на порождающий полином CRC кода

r = mod(abs(r),2);

CRC = r(st.length_msg_Lev2 + 1:end);%расчет CRC

% сборка сообщения

msg_Lev1 = [msg_Lev2 CRC];

 

Формирование сообщения L1-уровня:

msg_Lev1 = [msg_Lev2 CRC];

Далее вся полученная последовательность кодируется избыточным блочным кодом БЧХ (255,215):

code = encode(msg_Lev1,st.n,st.k,'bch/binary');

Так же сформированный пакет дополняется нулевым битом для обеспечения четности, необходимой нам при типа модуляции QPSK:

%добавление дополнительныхо бита для приведения размера сообщения к числу

%кратному 2  (следует из определения позиционности QPSK модуляции

code_word = [0 code];

 

После кодирования происходит QPSK модуляция:

% h - модем QPSK с позиционностью mPos

h = modem.pskmod(st.mPos);

h.inputtype = 'bit';

IQ_signal = modulate(h, code_word');

 

Передача сообщения в канал с заданным отношением сигнал-шум:

 

% Наложение шума на блок символов  

SNR=randi(20); 

disp('%%%%%%%%%%%%%%')

disp('ОСШ в КС:');

disp(SNR);

 

noise_sgn = awgn(trxIQ,SNR,'measured');

figure(2)

plot(noise_sgn,'*')

title('СКС на выходе КС 1')

 

Пройденное через канала сообщение принимает терминал T1. Это осуществляется с помощью функции:

function [Addr_rec, Addr_tr, TypeMSG, DataL2_rec, detect] = RX (rxIQ)

 

Далее осуществляется демодуляция сообщения:

 

% Параметры демодуляции

h = modem.pskdemod(st.mPos);

h.OutputType = 'bit';

% собственно демодуляция

rec_code_word = demodulate(h,rxIQ);

 

Над полученным информационным сообщением осуществляется помехоустойчивое декодирование (преобразование полученного закодированного сообщения в двоичное информационное сообщение):

% Помехоустойчивое декодирование

%Декодирование сообщения кодом БЧХ

decode_word=decode(rec_code_word(2:end),st.n,st.k,'bch/binary');

decode_word=decode_word';

На L2-уровне осуществляется проверка достоверности полученного сообщения – процедура CRC:

% Подготовка к проверке CRC

[q r]=deconv(decode_word,st.poly);

%проверка остатка

   r=mod(abs(r),2);

   if r == zeros(1,length(decode_word))

        detect=0;% ошибок нет

   else

        errs = errs + 1;

        detect=1;% обнаружены ошибки

   end;

 

Errs- параметр, указывающий на наличие или отсутствие ошибок.

Принятое сообщение:

% Собственно принятое сообщение

received_mes_L2 = decode_word(1:st.length_msg_Lev2);

 

Преобразование сообщения в текстовый формат и извлечение типа сообщения:

% Преобразование в текстовый формат

% адрес получателя сообщения

Addr_rec =  my_bi2de(received_mes_L2(1:4),'left_msb');

% адрес отправителя сообщения

Addr_tr =  my_bi2de(received_mes_L2(5:8),'left_msb');

% тип сообщения

TypeMSG =  my_bi2de(received_mes_L2(9:10),'left_msb');

% Извлечение принимаемого сообщения (в двоичном виде)

DataL2_rec = received_mes_L2(11:11+st.length_msg_Lev3-1);

Проверка на правильность обнаружения несущей BCCH:

%% Прием широковещательного сообщения терминалом

[Addr_rec, Addr_tr, TypeMSG, DataL2_rec, errs] = RX (noise_sgn);

% Выделение поля "ID-сети"

ID_networt_r = my_bi2de(DataL2_rec(1:8),'left_msb');

% Выделение поля "Наименование сети"

% Заполнение 0 для кратности 16, требования ASCII

network_name_r=bintostr([zeros(1,11) DataL2_rec(9:189)]);

 

% проверка на правильность обнаружения BCCH

if ((Addr_rec+ Addr_tr+TypeMSG+errs)==0)&(ID_networt_r==st.ID)

    % BCCH обнаружена, сеть идентифицирована

    aa=0;

     disp('%%%%%%%%%%%%%%')

     disp('ID-сети:')

     disp(ID_networt_r);

     disp('Наименованте сети:')

     disp( network_name_r);     

else

    % продолжается поиск BCCH

    aa=1;

    disp('BCCH не обнаружена');

end

На основании описанной выше программы продемонстрируем сценарий осуществляемый на L1-уровне при получении BCCH несущей:


Рис.3 сценарий осуществляемый на L1-уровне при получении BCCH несущей

Формирование заявки Т1 на регистрацию:

Заявка на регистрацию осуществляется формированием сообщения L3-уровня, включающее в себя Аутентификатор и Код услуги (рис.2):

% формат L3-сообщения:

   % поле "Аутентификации" 14 бит

   authentication=st.aut;

   % поле "код услуги" - 175 бит

   com = 'registrat ';

Далее происходит преобразование в двоичный формат:

[com_bin N]= strtobin(com); %N - длина информационного сообщения поля "com"

 

Таким образом формируется сообщения L3-уровня:

%сборка L3-сообщения

msg_L3_1=[msg authentication_bin];

 

Далее сообщение передается по радиоканалу:

% передачи сообщения по радиоканалу

trxIQ_1=TR(0, 15, 'page', msg_L3_1);

figure(3)

plot(trxIQ_1,'*r')

title('СКС на выходе передатчика 2')

SNR=randi(20); 

disp('%%%%%%%%%%%%%%')

disp('ОСШ в КС:');

disp(SNR);

 

Полученное сообщения проходит через канал связи, где происходит наложение шума на блок символов:

noise_sgn = awgn(trxIQ_1,SNR,'measured');

 

Далее происходит прием сообщения заявки на регистрацию точкой доступа:

% Прием заявки на регистрацию ТД

[Addr_rec_1, Addr_tr_1, TypeMSG_1, DataL2_rec_1, errs] = RX (noise_sgn);

% Выделение поля "код услуги"

% Заполнение 0 для кратности 16, требования ASCII

com_r=bintostr([0 DataL2_rec_1(1:175)]);

% Выделение поля "Аутентификации"

authentication_r = my_bi2de(DataL2_rec_1(176:189),'left_msb');

% определение принадлежности пакета по типу, адресу получателя

     disp('%%%%%%%%%%%%%%')

if (my_bi2de(TypeMSG_1,'left_msb')==1)&(sum(Addr_rec_1)==0)&(errs==0)

 

     disp('код услуги')

     disp(com_r);

     disp('Аутентификация')

     disp( authentication_r);

% извлечение адреса отправителя

addr_tr = my_bi2de(Addr_rec,'left_msb');    

% формирование сообщения подтверждения ТД

msg_L3_1=zeros(1,175);

 

trxIQ_1=TR(addr_tr, 0, 'resp', msg_L3_1);   

else

    disp('заявка на регистрацию не получена')

end

 

На основании описанной выше программы продемонстрируем сценарий осуществляемый на L1-уровне при заявки на регистрацию:


                                       Рис.4 сценарий осуществляемый на L1-уровне при получении BCCH несущей

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

1)      BCCH обнаружена/не обнаружена

%%%%%%%%%%%%%%

ОСШ в КС:

     3

BCCH не обнаружена

 

%%%%%%%%%%%%%%

ОСШ в КС:

    17

%%%%%%%%%%%%%%

ID-сети:

   250

Наименованте сети:

   VIKTORnet

2)      Заявка на регистрацию получена/не получена

%%%%%%%%%%%%%%

ОСШ в КС:

     5

%%%%%%%%%%%%%%

заявка на регистрацию не получена

 

%%%%%%%%%%%%%%

ОСШ в КС:

    10

%%%%%%%%%%%%%%

код услуги

 registrat

Аутентификация

   100

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

1)      SNR=5 дб


Рис.5 Сигнальное созвездие на выходе AP без шума



Рис.6 Сигнальное созвездие на выходе канала связи при ОСШ=5 дб



Рис.7 Сигнальное созвездие на выходе Т1 без шума



Рис.8 Сигнальное созвездие на выходе канала связи при ОСШ=5 дб

Результат моделирования при ОСШ=5 дб:

%%%%%%%%%%%%%%

ОСШ в КС:

     5

BCCH не обнаружена

%%%%%%%%%%%%%%

%%%%%%%%%%%%%%

заявка на регистрацию не получена

2)      SNR=20 дб


Рис.9 Сигнальное созвездие на выходе AP без шума



Рис.10 Сигнальное созвездие на выходе канала связи при ОСШ=20 дб



Рис.11 Сигнальное созвездие на выходе Т1 без шума



Рис.8 Сигнальное созвездие на выходе канала связи при ОСШ=20 дб


Результат моделирования при ОСШ=5 дб:

%%%%%%%%%%%%%%

ОСШ в КС:

    20

%%%%%%%%%%%%%%

ID-сети:

   250

Наименованте сети:

   VIKTORnet

%%%%%%%%%%%%%%

ОСШ в КС:

    20

%%%%%%%%%%%%%%

код услуги

 registrat

Аутентификация

   100

 

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

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

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

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

3.Бакке А.В О построении программной модели радиосети

http://www.radiolay.ru/download/file.php?id=397

4.http://www.radiolay.ru/download/file.php?id=418