1.5. Построение результирующих иерархических моделей терминала и выделенных узлов сети (в соответствии с концепцией OSI) с отражением путей доставки служебных, так и информационных сообщений.
    Модель OSI описывает схему взаимодействия сетевых объектов, определяет перечень задач и правила передачи данных. Ее можно представить следующим образом (рисунок 15):
                                                            
Рисунок 15 - Модель OSI
    Подробно рассмотрим физический уровень модели OSI. Это нижний уровень модели, необходимый для непосредственной передачи потока данных. В разрабатываемой нами сети физический уровень предназначен для передачи потока данных от терминала-мастера к ведомому терминалу и наоборот.
    Структура физического уровня нашей сети будет выглядеть следующим образом (рисунок 16):

Рисунок 16 - Структура физического уровня
    Рассмотрим функции, выполняемые физическим уровнем:
  • OFDM модулятор / демодулятор - предназначен для преобразования сигнала в OFDM-символы и обратно;
  • Модуляция / демодуляция - требуется для переноса сигнала на несущую частоту для дальнейшей передачи по радиоканалу;
  • Сборка / разборка пакетов - осуществляет формирование пакетов канального уровня и выделение полей принятого сообщения;
  • Помехоустойчивое кодирование / декодирование - необходимо для обнаружения и исправления ошибок, возникающих при передаче, путем добавления избыточности в информационную последовательность;
  • Синхронизация - предназначена подстройки терминалов к единым частотно-временным шкалам;
  • Подсистема проведения радиоизмерений - на основании результатов данных этой подсистемы на уровне L3 принимается решение о смене профиля работы всей системы.
      В разрабатываемой нами сети будут существовать два типа сообщений: служебные (BCCH, SDCCH) и трафик (TCH). Эти типы сообщений различаются по объему передаваемой информации и маршруту канального уровня. Поскольку на физическом уровне происходит преобразование сигнала в поток битов и обратно, то для этого уровня не существует разницы между типами сообщений и любое из них подвергается одним и тем же процедурам. 
        2.1 Разработка и описание блок-схемы алгоритма модели.
    Блок-схему алгоритма модели представим следующим образом (рисунок 17):
Рисунок 17 - Блок-схема алгоритма модели
    Приведенная блок-схема отражает передачу сообщения и последующий прием. 
    Сначала поток битов с L2 уровня подвергается помехоустойчивому кодированию. Далее происходит сборка пакетов: служебные данные соединяются с пользовательской информацией. Затем пакеты проходят через квадратурный модулятор, а после OFDM модулятор, где происходит формирование преамбулы и преобразование пакетов в OFDM-символы. Полученный радиосигнал проходит через канал связи. Далее происходят обратные преобразования -  радиосигнал проходит через OFDM-демодулятор, на выходе которого получаем сигнал с квадратурной модуляцией; данные о демодулированном на следующем этапе сигнале передаются на подсистему радиоизмерений, а сам сигнал, уже без квадратурной модуляции, проходит дальше. Затем происходит разборка пакетов - выделение информационной части и ее передача на декодер. Декодер "избавляет" сигнал от избыточности и передает поток битов на канальный уровень.
        2.2 Исследование процедуры тактовой (символьной) синхронизации физического уровня.
    В данной части работы предложено описание разработанной в системе Matlab модели системы, демонстрирующей пример передачи сообщения между терминалами. Разрабатываемая нами программа будет реализовывать формирование сообщения терминалом-отправителем, его передачу по каналу с АБГШ, прием сообщения терминалом-адресатом и проверку полученной информации на предмет достоверности. 
    Текст программы формально разделим на две части: передающую и приемную. На рисунке 18 представлена блок-схема передающей части - слева обозначен порядок происходящих процессов, справа - обрабатываемые программой структурные единицы как результат этих процессов.

Рисунок 18 - Блок-схема передающей части
    Далее приведен фрагмент программы, реализующий передающую часть.
Листинг 1.
% Формирование сервисного поля
Dl = my_de2bi(length(msg_Lev2),'left_msb',10);
Service = [PF Dl];

% Помехоустойчивое кодирование
trell = poly2trellis( 7, [ 171 133 ] );
code_word = convenc( trx, trell );


% Соединение закодированного L2-сообщения и служебного поля
code_word = [Service code_word];


% Разделение сообщения на 2 части для модуляции
s = length(code_word)/2;
    for i = 1:s
code_word1(i) = code_word(i);
    end
    for j = 1:s
code_word2(j) = code_word(j+s);
    end

% Модуляция
h = modem.qammod(st.mPos); % h - модем QAM с позиционностью mPos

% Параметры модуляции
h.inputtype = 'bit';
h.SymbolOrder = 'gray';
h.PhaseOffset = 0;

% Cобственно модуляция
IQ_signal1 = modulate(h, code_word1')';
IQ_signal2 = modulate(h, code_word2')';
IQ_signal = [IQ_signal1 IQ_signal2];

%% Подготовка к OFDM модуляции
% Размерность OFDM-символа

Nc=64;

% Номера пилотных и защитных поднесущих в OFDM-символе
NoDataSub = [1 2 3 4 5 11 25 32 39 53 59 60 61 62 63 64];

% Длина передаваемого сообщения
msg_length = length(IQ_signal);

% Количество поднесущих с данными
Ndata = Nc - length(NoDataSub);

% Количество битов, передаваемых в одном OFDM-символе
s_length = Ndata * log2(mPos);
ns = floor(msg_length/s_length)+1; % сколько потребуется OFDM-символов

% Формирование OFDM-символов
ofdmFrame = makeOfdmFrame(IQ_signal, ns);

% Формирование символов преамбулы
% Короткие символы - для подстройки частоты (синхронизация по частоте)

ShortTrainingSymbols = 0.03*[0 0 1+j 0 0 0 -1-j 0 0 0 1+j 0 0 0 -1-j 0 0 0 -1-j 0 0 0 1+j 0 0 0 0 0 0 -1-j 0 0 0 -1-j 0 0 0 ...
1+j 0 0 0 1+j 0 0 0 1+j 0 0 0 1+j 0 0];
short_symbols = ifft(ShortTrainingSymbols);
% Выделение первых 16 отсчетов
Strs = short_symbols(1:16);
% Формирование 10 кототких символов преамбулы на основе выбранного набора
short_trs=[Strs Strs Strs Strs Strs Strs Strs Strs Strs Strs];

% Длинные символы преамбулы
LongTrainingSymbols=[0 0 0 0 0 0 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 ...
1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 0 0 0 0 0 0];
long_symbol = ifft(LongTrainingSymbols);
long_trs = [long_symbol(64-2*16+1:64) long_symbol long_symbol];

% Пакет физического уровня (символы преамбулы и OFDM-символы)
phy_frame = [short_trs 5*long_trs 1.5*ofdmFrame];
plot(abs(phy_frame));
    В ходе работы этой части кода, сообщение было закодировано, промодулировано, и преобразовано в OFDM-сигнал, готовый для передачи, также была получена временная диаграмма сформированного OFDM-сигнала.

Рисунок 19 - Временная диаграмма сообщения физического уровня


Рисунок 20 - Блок-схема приемной части
Листинг 2.
%% Канал связи
% Наложение шума на сигнал

noise_sgn = awgn(phy_frame,SNR);
% Выделение преамбулы и данных
Preamb = noise_sgn( 1:320 );
ofdmFrame_rcv =  noise_sgn(321:end );

% Выполняем выделение OFDM символов из общего потока
IQ_signal_rcv = [];
% Список поднесущих с информацией
infSub = [ 6:10 12:24 26:31 33:38 40:52 54:58 ];
pilotSub = [ 11 25 39 53 ];
% Выделение промодулированных данных из принятого OFDM сигнала
% Удаление циклического префикса из OFDM символов
OSr = [];
OSpr = [];
IQ_signalr = [];
 for i = 0 : (length(ofdmFrame_rcv)/64)-1
    % Убираем циклический префикс  
    IQ_sig = ofdmFrame_rcv((5:68)+ i*68);
    OSr = [OSr; IQ_sig];  
    % Переход в частотную область
    IQ_sign = fft(IQ_sig);
    OSpr = [OSpr; IQ_sign];
    % Убираем пилот сигналы и Формируем поток данных
    IQ_signal_rcv = [IQ_signalr IQ_sign(infSub)];
end;

% Параметры демодуляции
h = modem.qamdemod(st.mPos);
h.SymbolOrder = 'gray';
h.PhaseOffset = 0;
h.OutputType = 'bit';
  
% Демодуляция
code_word = demodulate(h,IQ_signal_rcv);

%Выделение служебного и информационного поля
Service_rcv = code_word (1:12);
L2_msg_rcv = code_word (13:end);

% Декодирование по Витерби
trell = poly2trellis( 7, [ 171 133 ] );
L2_msg_rcv = vitdec( L2_msg_rcv, trell, 7, 'cont', 'hard' );

    В ходе работы фрагмента, приведенного выше, было смоделировано прохождение сигнала через канал связи с ОСШ=11дБ. После это оно было принято, преобразовано в сигнал с квадратурной модуляцией, демодулировано, декодированно, из него было выделено и преобразовано информационное поле.

    2.4. Исследование качества приема сообщений по различным каналам связи.

    Для исследования прохождения сообщения по каналу связи в программном модуле используется имитация прохождения сигнала через канала с АБГШ.  

    Для наблюдения было выбрано прохождение сообщения трафика с модуляцией QAM-16 и расчитанным в пункте 1.4.7 работы.
    В ходе моделирования было получено сигнально-кодовое созвездие передаваемого сообщения.

Рисунок 21 - СКС сформированного сигнала