2. Экспериментальная часть.

Разработка модели системы в среде Matlab, демонстрирующий пример передачи сообщений между объектами верхнего уровня.

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


Рис.21. Структура сообщения, готового к отправке на приемную сторону.

   На рисунке 21 поле РА содержит информацию, необходимую для управления мощностью излучения. В поле type находится последовательность битов, соответствующая данному типу пакета (ТCH). Информационное поле msg содержит собственно речевой трафик. Поле CRC необходимо для контроля целостности пакета на приемной стороне. Далее следует последовательность из 108 нулевых битов. Она необходима для приведения пакета канального уровня к длине, требуемой для помехоустойчивого кодирования (247 битов). Избыточные биты, полученные при кодировании записываются в поле FEC. Затем идет поле Synch, необходимое  для частотной и временной синхронизации, а также содержащую настроечную последовательность, необходимую для эквалайзера на приемной стороне. Замыкает сообщение защитный интервал.

Инициализация основных параметров модели:

%% Инициализация основных параметров модели

% Выбор файла для сохранения сформированного сигнала

set.SignalFileName = 'signal.bin';


% параметры модели

% позиционность модуляции - QPSK

set.mPos = 4;


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

% Используется линейный блоковый код Хэмминга:

% Длина кодового слова n = 2^m-1 = 255 при m = 8

% Размер кодируемого блока k = n-m = 247

 

set.m = 8;

set.n = 2^set.m-1; % Codeword length = 255

set.k = 247; % Message length = 247

 

% размер блока символов, формируемых в модуляторе из одного пакета

% 333 - количество битов в пакете, log2(mPos) - количество битов,

% приходящихся на символ

set.mod_size = 333/log2(set.mPos);

 

% Параметры CRC

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

[set.x set.y]=size(set.poly); %размерность полинома

 

% переменная, равная длине передаваемого сообщения 2 уровня,

set.length_msg_Lev2 = 131;% сообщение состоит из 131 битов

 

При запуске модуля transmitter выполняется:

формирование запроса, который необходимо передать мобильной станции

   % формирование запроса, который необходимо передать (длина 128 бит)

   msg=randi(2,1,128)-1;

   Запрос переводится в двоичный вид, то есть в последовательность нулей и единиц. Также в двоичный вид переводится тип пакета-TCH.

  % ================== Канальный  уровень ================================

   %% Подготовка к передаче сообщения

   % сообщение переводится в двоичный вид

   str_bin = msg;

   % получение типа пакета в двоичном 3-х разрядном виде (Тип пакета - TСН)

   type_bin = my_de2bi(4,'left_msb',3);

 

Полученные части сообщения собираются в одно:

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

   msg_Lev2 = [type_bin str_bin];

 

Получение CRC кода и расчет CRC. СRC представляет собой последовательность из 16 нулей и единиц.

    

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

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

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

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

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

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

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

   msg_Lev1 = [msg_Lev2 CRC];

 

После этапа сборки, сообщение L1 состоит из 16 бит CRC и сообщения msg_Lev2. 

 

   Для того, чтобы на физическом уровне сработал помехоустойчивый кодер, необходимо уровнять длины  trx и set.k. так как размер set.k  247 битов, то к сообщению L1 прибавляются дополнительные 108 битов. Сформированное сообщение trx :

  % добавление нулевых битов для получения нужной длины кодируемого

   % сообщения(108 бит)

   trx = [msg_Lev1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];

 

  После кодирования к полученному сообщению должна быть применена функция перемежения. Длина получаемого в этом случае сообщения остается прежней (255 битов).

 

   % ================== Физический уровень ================================

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

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

 

   % здесь должна выполняться функция перемежения

   code_word = code_word;

 

   Далее необходимо сформировать настройки для эквалайзера на приемной стороне. Они представляют собой последовательность из 36 битов:

   % формирование настроечной последовательности для эквалайзера

   synch = [randi(2,1,36)-1];

 

Для управления мощностью также требуется поле размером 36 бит, а также защитный интервал:

  % управление излучаемой мощностью

   pa = [randi(2,1,36)-1];

%защитный интервал

   ga = [randi(2,1,6)-1];

   Необходимо собрать сообщение физического уровня в одно целое. Оно состоит из поля управления мощностью, информационной части, настроек для эквалайзера на приемной стороне и защитного интервала . Длина такого сообщения составляет 333 бита:

  % сборка сообщения, подлежащего модуляции

   code_word = [pa code_word synch ga]';

 

Полученное сообщение необходимо промодулировать:

  %% Модуляция

   h = modem.pskmod(st.mPos);

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

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

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

   h.inputtype = 'bit';

   h.SymbolOrder = 'gray';

   h.PhaseOffset = pi/4;

 

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

   IQ_signal = modulate(h, code_word);

 

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

 

   % Наложение шума на сигнал

   noise_sgn = awgn(IQ_signal,35);

 

   % здесь сигнал noise_sgn должен быть записан в файл

   fwrite(fidw,[real(noise_sgn) imag(noise_sgn)],'double');

 

   Для проверки правильности выполнения модуляции в модуле transmitter.m предусмотрено построение сигнльно-кодового созвездия. Полученный результат удовлетворяет тем данным, которые были заданы в файле инициализации.

  

   % отображение сигнально-кодового созвездия

   figure(10);

   plot(noise_sgn,'.');

 

% закрытие файла

 

fclose (fidw);


Рис.22. СКС полученного сигнала

   Результатом выполнения программы является переданное сообщение. Количество переданных битов - 128, как и было заявлено в сообщении msg.

 

     1     0     0     1     0     1     1     0     0     0     1     0     0     0     0

     0     0     0     0     1     0     1     1     0     0     1     0     0     1     0

     1     1     1     1     0     1     0     1     1     1     0     0     0     1     1

     1     1     0     1     1     0     1     0     0     1     0     1     1     1     1

     1     1     0     0     1     0     0     0     1     1     1     0     0     1     1

     1     0     0     1     1     1     0     1     0     1     0     0     0     1     1

     0     0     0     1     1     0     0     0     1     1     0     0     1     0     0

     1     0     1     1     1     0     1     1     0     1     0     0     0     1     1

     0     1     0     1     1     0     1     0


Список литературы:

1. А.В. Бакке. «Лекции по курсу ССПО».

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

3.Компактная система радиотелефонной связи. Часть1. Шустов А.Ю.  http://omoled.ru/publications/view/589

4. Компактная система радиотелефонной связи. Часть2. Шустов А.Ю. http://omoled.ru/publications/view/606

5.Компактная система радиотелефонной связи. Часть 3. Шустов А.Ю. http://omoled.ru/publications/view/614

6. Компактная система радиотелефонной связи. Часть 4. Ольга Михайлина,  http://omoled.ru/publications/view/354

7. Компактная система радиотелефонной связи. Часть 4. Maria_Krivosheinahttp://omoled.ru/publications/view/342