Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Помехоустойчивое кодирование в телекоммуникационных системах. Практикум

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
31
Таблица 3.2
Такт
Вход
№ ячейки ФПГ
1 2 3
0 - 0 0 0
1 2
3
4 5 0
6 0
7 0
3.4 По истечению 7 тактов формируется закодированная кодовая
комбинация, которую нужно записать в отчет. Затем программа выдает сообщение «Кодирование завершено!», следует нажать ОК и перейти к каналу с помощью кнопки «В канал».
Рисунок 3.3 – Окно канала
3.5 В канале необходимо указать ошибку в битах закодированной кодовой
комбинации (в любом бите на выбор студента), после чего необходимо нажать кнопку «Декодировать» для перехода к декодеру Меггитта.
3.6 На рисунке 6 приведена схема декодера Меггитта для циклического
кода (7,4), по которой будет происходить декодирование кодовой комбинации с ошибкой. Бит с ошибкой выделен красным цветом. Для начала декодирования необходимо нажать кнопку «Начать».
32
Рисунок 3.4 – Модель декодера Меггитта
Интерфейс программы в окне с декодером Меггитта:
1 - Закодированная кодовая комбинация с ошибкой;
2 - Результат декодирования;
3 - Ячейки ФПГ;
4 - Ячейки регистра задержки (РЗ);
5 - Кнопка для начала декодирования (впоследствии становится кнопкой «Такт»);
6 - Группа кнопок для дальнейшего действия:
- Кнопка «Вернуться к кодеру» – если нужно задать другую исходную
комбинацию и произвести её кодирование;
- Кнопка «Вернуться к каналу» – если необходимо задать ошибку в
другом бите закодированной комбинации;
- Кнопка «Выход из программы» – если лабораторная работа
выполнена, чтобы закрыть окно программы.
3.7 С помощью кнопки «такт» осуществляется переход к следующему
такту. В вверху указывается действие текущего такта:
- 0 такт – «Начальное состояние…»
- 1-7 такт – «Идет загрузка в регистр…»
- 8-14 такт – «Процесс исправления ошибки…»
- 15-21 такт – «Выгрузка данных из регистра на выход…»
После выполнения 21 такта на экране высвечивается сообщение «Процесс декодирования завершен!!!» (рисунок 3.5). Необходимо нажать ОК и зафиксировать в отчете кодовую комбинацию на выходе и выделить в ней информационные элементы.
33
Рисунок 3.5 – Модель декодера Меггтита
Содержимое ячеек формирователя проверочной группы каждого такта и значение элемента на входе при выполнении действий загрузки в регистр и процесса исправления ошибки нужно свести в таблицу 3.3:
Таблица 3.3
3.8 После окончания выполнения лабораторной работы следует закрыть
программу, затем выключить компьютер.
Такт
Вход
№ ячейки ФПГ
1 2 3 0 - 0 0 0 1 2 3 4 5 6
7
8 -
9 -
10 -
11 -
12 -
13 -
14 -
15 -
34
4 Содержание отчёта
Отчет должен содержать:
- цель работы;
- предварительный расчет;
- структурные схемы кодера и декодера Меггитта;
- результаты кодирования и декодирования в виде таблиц 3.2 и 3.3;
- выводы.
35
Лабораторная работа №4 ИССЛЕДОВАНИЕ ОБНАРУЖИВАЮЩЕЙ И ИСПРАВЛЯЮЩЕЙ СПОСОБНОСТИ ЦИКЛИЧЕСКИХ КОДОВ
1 Цель работы
Ознакомьтесь с методами построения корректирующих кодов. Экспериментальное исследование обнаруживающей и исправляющей способности циклических кодов.
2 Предварительная подготовка
2.1 Ознакомиться с описанием работы и изучить по указанной ниже
литературе следующие вопросы:
- линейные корректирующие коды и их свойства;
- циклические и сверточные коды;
- методы кодирования и декодирования корректирующих кодов;
- структурные схемы кодирующих и декодирующих устройств (кодеров и
декодеров).
2.2 Ответить (устно) на вопросы, поставленные в разделе 4 данной работы.
2.3 Рассчитать вероятность ошибки в кодовом слове на входе и выходе
декодера для исследуемых кодов, если вероятность ошибки в дискретном канале связи с независимыми ошибками равна p (указана в таблице 4.1).
Таблица 4.1
№
бригады
1 2 3 4 5 6 7 8 9
10
p
0,1
0,09
0,08
0,07
0,06
0,05
0,04
0,03
0,02
0,01
3 Описание лабораторной установки
3.1 Лабораторная установка выполнена в виде программно управляемой
модели и выполняется на ПЭВМ в штатной комплектации.
3.2 Загрузка ПЭВМ производится с дискеты (программа Lab4_ЭВМ.exe) или винчестера. В дальнейшем необходимо руководствоваться указаниями с экрана дисплея ЭВМ и лабораторным заданием.
3.3 Краткое описание структурных схем декодеров исследуемых циклических кодов, программно реализованных на языке Turbo Pascal, приведены выше.
4. Вопросы для самостоятельной подготовки
4.1 Что такое кодовое расстояние кода, как оно определяется?
36
4.2 Как связана способность кода обнаруживать и исправлять ошибки с кодовым расстоянием?
4.3 Что такое и какой вид имеют производящая и проверочная матрицы линейных кодов?
4.4 Какие корректирующие коды называются циклическими, их свойства?
4.5 Какие корректирующие коды называются сверточными, их свойства?
4.6 Что такое производящий многочлен, как он используется для кодирования и декодирования?
4.7 Что такое синдром ошибки, как он определяется математически и в декодере?
4.8 Нарисуй структурную схему синдромного декодера! В чем состоят проблемы его практической реализации?
4.9 В чем отличие декодера Меггитта от обычного синдромного декодера?
4.10 В чем отличие декодера Касами-Рудольфа от обычного синдромного декодера?
4.11 Нарисуйте структурную схему мажоритарного декодера! Какие коды позволяют осуществлять мажоритарное декодирование?
4.12 Нарисуйте структурную схему порогового декодера.
5 Лабораторное задание
5.1 Ознакомиться с рабочим местом и особенностями экспериментального
исследования корректирующих кодов на ПЭВМ.
5.2 Определить экспериментально кодовое расстояние исследуемых кодов с различной избыточностью (для заданных производящих полиномов g1(x) и g2(x)) обнаружить и исправлять ошибки:
код 1 – (n,k) = (23,12); g1(x) = x11+x10+x6+x5+x4+x2+1; код 2 – (n,k) = (15,11); g2(x) = x4+x+1.
5.3 Исследовать и сравнить результаты декодирования кодовых слов с ошибками различной кратности.
6 Порядок выполнения
6.1 Включить ЭВМ. Вызвать и запустить программу Lab4_ЭВМ.exe.
Последующие действия выполняются в соответствии с выводимыми на экран дисплея сообщениями в диалоговом режиме и лабораторным заданием.
Примечание. Для ввода символов кодового слова необходимо подвести маркер, нажимая кнопку «ПРОБЕЛ», на место под точками, обозначающими позиции кодовых символов, и под каждую точку записать символ «0» или «1» (вместо символов «0» можно вводить «ПРОБЕЛ»).
6.2 Определить величину кодового расстояния для каждого из двух
исследуемых кодов (n,k) = (23,12) и (n,k) = (15,11).
Для этого необходимо для каждого из исследуемых кодов найти
максимальную (гарантируемую) кратность исправляемых ошибок

,
37
последовательно увеличивая число ошибок в кодовых словах, формируемых на экране (факт исправления ошибки данной кратности определяется визуально
путем сравнения кодовых слов на входе кодера и выходе декодера).
Кодовое расстояние d определяется по известному соотношению, связывающему его с максимальной кратностью исправляемых ошибок. По полученной величине кодового расстояния определить ожидаемую кратность
гарантированно обнаруживаемых ошибок

.
6.3 Исследовать результаты декодирования кодовых слов с ошибками
различной кратности (с учетом

и

предыдущего пункта).
Получить несколько вариантов декодирования кодовых слов с последовательностями ошибок e(x) различной кратности и конфигурации для случаев:
- обнаруживаемых ошибок кратности 

и 

;
- необнаруживаемых ошибок, в том числе кратности 

  .
6.4 Сравнить обнаруживающую и исправляющую способность кодов по
полученным результатам.
Примечание. Результаты исследований по пунктам 6.2 и 6.3 для каждой из позиций необходимо записывать в файл или выводить на принтер (если принтер подключен к ЭВМ) для отчета.
7 Содержание отчета
Отчет должен содержать:
- структурные схемы декодеров;
- структурные схемы алгоритмом, имитирующих работу декодеров;
- результаты оценки кодового расстояния для обоих кодов;
- результаты исследования помехоустойчивости кодов;
- сравнительный анализ помехоустойчивости кодов;
- выводы.
38
Лабораторная работа №5 ИССЛЕДОВАНИЕ КОДОВ, ОБНАРУЖИВАЮЩИХ ОШИБКИ, С ИПОЛЬЗОВАНИЕМ ПО OCTAVE
1 Цель работы
Реализация циклического избыточного кода CRC. Проверка целостности пакетов.
2. Лабораторное задание
1. Создание функции расчета CRC.
2. Оценка целостности пакетов.
3. Оценка зависимостей BLER от отношения сигнал-шум.
3 Порядок выполнения лабораторной работы.
Работа выполняется экспериментально с программным обеспечением Octave.
Рисунок 5.1 – Схема реализуемой в текущей работе модели
В ходе этой работы вам необходимо реализовать модель, схема которой приведена на рисунке 5.1. Алгоритм CRC должен работать с полиномом G(x) =
x5+x3+1 на основе схемы, приведенной на рисунке 5.2. По CRC на стороне
приемника необходимо вести расчет BLER.
Рисунок 5.2 – Схема кодера CRC c G(x) = x5+x3+1
39
Для работы в Octave со телекоммуникационными функциями нужно загрузить специальную библиотеку, для этого нужно написать в командной строке команду:
pkg load communications
и нажать Enter. При этом выполнится соответствующая команда и загрузится библиотека.
Программы в Octave пишутся в двух типах файлов – скриптах (сценариях) и функциях. Скрипты являются исполняемыми файлами (файлами верхнего уровня), а функции подключаются в скрипты, или другие функции.
Для того чтобы создать скрипт, нужно выбрать меню Файл – Создать – Создать сценарий.
Создайте отдельную папку (рекомендуем каждый новый проект создавать в отдельной папке). Создайте скрипт и назовите его main. В начале файла напишите следующие команды (каждую в отдельной строке):
clc
(стирает все сообщения из адресной строки);
clear all
(стирает все переменные из рабочей области);
close all
(закрывает все окна графиков).
Далее объявите переменные
M = 2;
(индекс модуляции, возможные значения 2, 4, 16, …);
N = 10000;
(количество передаваемых символов (количество пакетов));
Добавьте к параметрам значение количества битов в пакете, например,
L = 100;
Основные алгоритмы выполняются в глобальном цикле, с изменением переменной snr_i в диапазоне SNR (1): SNR (2) (минимальное и максимальное значение SNR, для которых планируется проводить моделирование) при помощи оператора for.
SNR = [0 20];
(отношение сигнал-шум).
Кроме того, необходимо объявить индекс итерации, например k. В каждой следующей итерации k будет увеличиваться на 1.
k = 0;
for snr_i = SNR(1):SNR(2)
k = k+1
В начале каждой итерации необходимо обнулять счетчик ошибок
err = 0;
И далее, объявить цикл от 1 до N, в каждой итерации которого будет создаваться, кодироваться, приниматься и проверяться новый пакет битов:
for n = 1:N
Затем необходимо создать вектор символов (битов) командой:
40
bits= randi([0 M-1],L,1);
Эта команда формирует вектор случайных целых чисел со значениями от 0 до M-1 (они соответствуют значениям битов, которые можно получить, переведя символы в двоичный вид).
После чего выполняется расчет контрольной суммы. Для этого создайте функцию crc_gen. На первом этапе объявите степень порождающего полинома
N_G = 5;
Добавьте к вектору битов N_G нулей справа (аналог операции P(x)x5).
Объявите сдвиговый регистр sh_reg (в виде вектора) и заполните его первыми битами сообщения:
sh_reg = zeros (N_G);
sh_reg = bits(N_G:-1:1);
Обратите внимание, что биты записываются в обратном порядке, поскольку первый бит в первый такт поступает в первый разряд, а к пятому такту поступает в пятый разряд, в то время как в первом будет пятый бит.
После этого необходимо объявить цикл, в котором индекс текущего входного бита i изменяется от N_G+1 до последнего бита:
for i = N_G+1:length(bits)
Каждый такт вычисления выполняются в соответствии со схемой на рисунке 5.2:
x_bit = sh_reg(5);
sh_reg(5) = sh_reg(4);
sh_reg(4) = xor(x_bit,sh_reg(3));
sh_reg(3:-1:2) = sh_reg(2:-1:1);
sh_reg(1) = xor(x_bit,bits(i));
На этом одна итерация заканчивается. Выход функции – значение сдвигового регистра в последней итерации.
После этого закрывается оператор for с помощью команды
end
Закрывается сдвиговый реестр с помощью
crc = sh_reg(end:-1:1);
и завершается работа функции
endfunction.
Подключите функцию в модель и рассчитайте контрольную сумму:
crc_t = crc_gen (bits);
Добавьте рассчитанное значение в конец пакета:
bits_crc = [bits;crc_t];
После этого выполняются процедуры модуляции, прохождения через АБГШ (awgn) канал и демодуляции.
Сформированный вектор битов должен подаваться на модулятор. В Octave есть встроенная функция QAM – модуляции qammod, которая поддерживает индексы M>4, BPSK модуляцию необходимо реализовать самостоятельно.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]