Самостоятельная работа

Радиосеть: доставка сообщений. Часть 3.

Выполнили: ст.гр. 9110 Белова Т.В., Жарко Н.С.

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

Разработка и экспериментальное исследование модели сценария взаимодействия терминалов сети с точкой доступа. Сценарий передачи нашего сообщения выглядит следующим образом: 


Нам необходимо передать сообщение, содержащееся в текстовом файле. В программной реалицазии исполнен только процесс передачи сообщения от терминала к базовой станции. Выглядит это примерно так:

1) реализован процесс считывания сообщения из файла,

2) разбиения его на пакеты определенной длины

3)и его передачи

Пакеты, подготовленные к передаче, имеют иерархическую структуру, состоящую из физического, канального уровней и уровня управления.

Используется код (255,215),  следовательно, необходимо немного изменить структуру передаваемого пакета. Выглядеть она будет так:


Рассмотрим процесс передачи сообщения:

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

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

set.FileName = 'text.txt';

Считывает из него первые 12 символов:

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

set.Str_size = 12;

Которые переводятся в биты:

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

 – это и есть поле Data L3 уровня. К нему присоединяется служебная информация , содержащая длину и номер пакета:

msg_L3  = [bi_length_tx DATA Number];

Добавляется CRC – код:

% Параметры CRC

set.poly=[1 1 0 0 0 0 0 0 0 1 1 1 1];

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

trxIQ = transmit('service',msg_L3);

- эту часть пакета уже можно отправлять в передатчик для подготовки к отправлению сообщения.

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

noise_sgn = awgn(trxIQ,7);

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

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

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

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

code_word = [0 code_word]';

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

   %% Модуляция

   h = modem.pskmod(st.mPos);

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

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

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

   h.inputtype = 'bit';

   h.SymbolOrder = 'gray';

   h.PhaseOffset = pi/4;

 

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

   IQ_signal = modulate(h, code_word);

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

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

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

h = modem.pskdemod(st.mPos);

h.SymbolOrder = 'gray';

h.PhaseOffset = pi/4;

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(201:203)';

   

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

txt_msg = bintostr(msg)';

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

 

Для примера выполнялась передача сообщения:

 «Привет, друзья! С началом предпоследней сессии) желаем всем удачи!»

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

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

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

Поле DATA: 192

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

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

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

Рассмотрим полученные сообщения и сигнальные созвездия при различных ОСШ:


 

ОСШ = 30 дБ


Текст, содержащийся в пакетах:

1)    Привет, друз

2)    ья! С начало

3)    м предпослед

4)    ней сессии)

5)    желаем всем

6)    удачи!

Передаваемое сообщение принято без ошибки.


ОСШ = 8 дБ


Текст, содержащийся в пакетах:

1)    Привет, друз

2)    ья! С начало

3)    м предпослед

4)    ней сессии)

5)     желаем всем

6)    удачи!

Передаваемое сообщение принято без ошибки.


 

ОСШ = 5 дБ

 

Текст, содержащийся в пакетах:

1)    аве

2)    ы!

3)    ?напAие

4)    нй

5)     желаем всем

6)    чда!

Передаваемое сообщение принято с ошибкой.

В ходе выполнения работы были решены задачи, поставленные в задании –спроектирована система передачи сообщения, использующая модуляцию QPSK, с помехоустойчивым кодом, исправляющим 5 ошибок. В проделанной самостоятельной работе был разработан сценарий передачи данных от терминала 1 к терминалу 2, и часть его реализована программно.


Список использованных источников:

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

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

3. "О построении программной модели сети"

4. Скляр Б. Цифровая связь. Теоретические основы и практическое применение. М.: Вильямс, 2003г.

Выражаем благодарность Воробьеву Алексею за помощь в написании программной части.