Передача
обслуживания в структурированной
радиосети. Часть 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] в тексте сообщения не фигурируют, так как она была использована исключительно для понимания требований поставленной задачи, теоретической и технической её реализации.
Список используемой литературы:
- Скляр Б. Цифровая связь. Теоретические основы и практическое применение. М.: Вильямс, 2003г
- http://radiolay.ru/viewtopic.php?f=42&t=250
- http://radiolay.ru/viewtopic.php?f=42&t=258&start=10
О построении программной модели радиосети(2).pdf