Передача обслуживания в структурированной радиосети. Часть 3.

Выполнили: ст.гр. 0110 Бешук И.С., Генеральский Д.Д.


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


    Поскольку по ТЗ требуется практическая реализация любого этапа сценария, мы приняли решение показать как доставляется простое текстовое сообщение от передатчика приёмнику. 

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

Вид передаваемых данных: текстовый файл

Вид модуляции: BPSK

Тип помехоустойчивого кодирования: БЧХ

Тип CRC: CRC-12

     В ходе создания программной модели радиосети, столкнулись с проблемой реализации кода Рида-Соломона (255, 242), о котором говорилось во второй статье. Для решения этой проблемы был выбран другой код - БЧХ (255, 231). Также произошёл ряд изменений в структуре сообщений уровней модели OSI. Из-за программной реализации отдельной части сценария пришлось затронуть не все уровни модели OSI (в частности, сетевой уровень мы не использовали). Эти модификации представлены на рисунке 1:

                      

 

                                                     Рис.1. Иерархическая структура пакетов передаваемого сообщения.



L1: физический уровень;

L2: канальный уровень; 

L3: уровень принятия решения; 

    Чтобы наглядно продемонстрировать работу программы, представляем вашему вниманию краткое описание предполагаемого алгоритма  (Рис.2):


Рис.2. Блок-схема поведения передатчика и приёмника.

    При построении блок-схемы использовали в качестве примера работу своих коллег (Тема 3), а также работу по идентификации сети своего предшественника [2]

    Далее последует поэтапное пояснение принципа работы вышеуказанной программы.


Программа начинает работу с того, что находит заданный текстовый файл:

% Выбор файла для передачи

set.FileName = 'soobshenie.txt';

Файл разбивается на пакеты по 13 символов в каждом, которые переводятся в биты. Один символ представляется в виде 16 бит:

% Длина однократно считываемого текстового сообщения

set.Str_size = 13;

bin_msg = strtobin(tx_msg)'; %перевод текста в двоичный код (16 бит на символ)

 – это и есть поле Data уровня принятия решений.

Вычисление общего числа пакетов и номера пакета:

M = floor(((length_tx_msg*16)/208+1));

Number = my_de2bi(N, 'left_msb',2);

Далее формируется сообщение третьего уровня. Поле Data содержит 208 бит. К нему добавляются ещё два поля служебной информации. Они содержат поле length и номер пакета. Поле length определяет, какая часть сообщения несет в себе информацию.

Number = [0 0];

DATA = [bin_msg zeros(1, 208 - length_tx_msg*16)];

disp(['Поле DATA: ', num2str(length(DATA))]);

msg_L3 = [bi_length_tx DATA Number];

disp(['Поле Сообщение_L3: ', num2str(length(msg_L3))]);

Затем происходит формирование пакетов физического уровня, которые передаются по каналу с помощью функции transmit:

trxIQ = transmit('service',msg_L3); % service или traffic

В функции transmit происходит сборка сообщения канального и физического уровня – добавление к сообщению L-3 СRC-кода, помехоустойчивое кодирование и модуляция.

С помощью CRC – кода по вычисленной контрольной сумме мы на приемной стороне сможем сделать вывод о достоверности принятой информации.

% сборка части L2-сообщения

msg_L20 = [TYPE msgL3];

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

m = [msg_L20 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_L2 = [msg_L20 CRC];

disp(['Поле Сообщение_L2: ', num2str(length(msg_L2))]);

trx = msg_L2;

Далее вся полученная последовательность кодируется избыточным блочным кодом БЧХ (255,231) для повышения помехоустойчивости передаваемого сообщения.

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

code_word = encode(trx,st.n,st.k,'bch/binary');

Затем происходит модуляция и передача битовой последовательности в канал с заданным отношением сигнал-шум. По заданию вид модуляции – BPSK.

   %% Модуляция

   h = modem.pskmod(st.mPos);

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

   % Требуется настроить остальные его параметры:

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

   h.inputtype = 'bit';

   h.SymbolOrder = 'gray';

   h.PhaseOffset = 0;

 

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

   IQ_signal = modulate(h, code_word);

В радиоканале на передаваемое сообщение накладывается шум:

noise_sgn = awgn(trxIQ,20);

На приемной стороне с помощью функции receive_msg выполняется следующая последовательность действий:

[type, msg, numb, err] = Receive_msg(noise_sgn);


Происходит демодуляция сообщения:

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

h = modem.pskdemod(st.mPos);

h.SymbolOrder = 'gray';

h.PhaseOffset = 0;

h.OutputType = 'bit';

  

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

s = demodulate(h,rxIQ);

Декодирование:

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

received_mes_L1 = decode(s(2:st.n+1),st.n,st.k,'bch/binary');

%% декодирование L2-сообщения

 

Проверка подлинности CRC:

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

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

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

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

   if r == zeros(1,length(received_mes_L1))'

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

   else

        errs = errs + 1;

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

   end;

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

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

received_mes_L2 = received_mes_L1(1:st.length_msg_Lev2);

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

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

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

    TypeMSG =  my_bi2de(received_mes_L2(1)','left_msb');

Извлечение принимаемого сообщения и номера пакета в двоичном виде:

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

   length_data = my_bi2de(received_mes_L2(2:8)','left_msb' );

   msgL3 = received_mes_L2(9:8+16*length_data)';

  NUMBER = received_mes_L2(217:218)';

            Для написания программной части использовали в качестве примера работу своего предшественника[2], а также ресурс радиолея[3].

Вывод текстового файла на экран: 

txt_msg = bintostr(msg)';

disp(['Текстовое сообщение: ' txt_msg']);

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

При ОСШ=8 дБ

Количество символов текста: 13

Количество бит: 208

Количество пакетов: 2

Поле DATA: 208

Поле Сообщение_L3: 217

Поле Сообщение_L2: 229

Поле "Кодовое слово": 256

Текстовое сообщение: Филиппо Индзаги назначен новым главным тренером «Милана», сообщает официальный сайт клуба. 40-летний специалист заключил с клубом контракт до 2016 года. Ранее он возглавлял молодежную команду «Милана».

                                     Рис.2. СКС при ОСШ равном 8дБ 

При ОСШ=4 дБ

Количество символов текста: 13

Количество бит: 208

Количество пакетов: 2

Поле DATA: 208

Поле Сообщение_L3: 217

Поле Сообщение_L2: 229

Текстовое сообщение: Филиппо Индзаги назначен новым главным тренером «Милана», сообщает официальный сайт клуба. 40-летний специалист заключил с клубом контракт до 2016 года. Ранее он возглавлял олодежнC ю команду «Ми а»®


                                   Рис.3. СКС при ОСШ равном 4дБ 

ОСШ=0 дБ

Количество символов текста: 13

Количество бит: 208

Количество пакетов: 2

Поле DATA: 208

Поле Сообщение_L3: 217

Поле Сообщение_L2: 229

Поле "Кодовое слово": 256

Текстовое сообщение: имИв и†=нчнн вы!ла* ъѕо М 


                                      Рис.2. СКС при ОСШ равном 0дБ 

   Цитаты из литературы  [1] и [4] в тексте сообщения не фигурируют, так как она была использована исключительно для понимания требований поставленной задачи, теоретической и технической её реализации.

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

  1. Скляр Б. Цифровая связь. Теоретические основы и практическое применение. М.: Вильямс, 2003г
  2. http://radiolay.ru/viewtopic.php?f=42&t=250
  3. http://radiolay.ru/viewtopic.php?f=42&t=258&start=10
  4.  О построении программной модели радиосети(2).pdf