Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЭС 1.docx
Скачиваний:
1
Добавлен:
14.06.2025
Размер:
708.09 Кб
Скачать

1.3 Алгоритмы кодирования и декодирования

Процедура кодирования

1. Задается число информационных разрядов 𝑘 в одиночном информационном блоке, на его основании определяется число контрольных разрядов r и общее число разрядов 𝑛.

2. Позиции контрольных разрядов выбираются определенным образом. Под контрольные биты отводятся позиции, номера которых подчиняются закону 𝑘= , где 𝑙 – целое число. То есть контрольные элементы занимают позиции 𝑘= 1,2,4,… .

3. Порядок следования информационных битов в блоке сохраняется, но при этом они размещаются между контрольными разрядами.

4. С учетом позиций контрольных и информационных разрядов составляется таблица кодирования, содержащая полный перечень разрешенных комбинаций. На данном шаге, позиции, отведенные под контрольные разряды, оставляются незаполненными.

5. Заполняются позиции контрольных разрядов по результатам регулярных проверок на четность/нечётность в соответствии с таблицей проверок.

Основная идея проверок заключается в следующем: на каждом этапе проверки, необходимо подобрать значение контрольного бита таким образом, чтобы выполнялось контрольное условие

Процедура декодирования

1. По принятому информационному блоку (содержащему 𝑛) бит, в соответствии с таблицей проверок, определяется двоичное слово, количество разрядов в котором соответствует количеству контрольных бит 𝑟. Данное двоичное слово составляют биты 𝑧1,𝑧2,…,𝑧𝑟, где 𝑧𝑖 – представляет собой двоичный результат -ой проверки и принимает значение «1», в случае, если контролируемое условие в принятом блоке выполняется и «0» в противоположном случае.

2. В случае если все из битов ложны 𝑧1=𝑧2=⋯=𝑧𝑟=0, то информационный блок считается принятым без ошибок (если возможность кратных ошибок исключена). В противном случае считают, что блок был принят с единичной ошибкой. Для определения позиции бита, в котором имела места ошибка, двоичное слово, составленное из битов z1,𝑧2,…,𝑧𝑟,представляют в десятичной системе счисления. Затем бит, находящийся на определенной позиции, инвертируется.

2 Ход работы

2.1 Выбор среды для реализации программной модели

В качестве инструментов для реализации программной модели были выбраны C# и Visual Studio. C# был взят из-за знакомства с ним, а Visual Studio — благодаря интуитивно понятному интерфейсу и отсутствию избыточного функционала.

2.2 Описание используемых функций и методов

На рисунке 2.1 представлена функция «ToAscii» и функция «ConvertFromBinaryAscii». Функция «ToAscii» преобразует строку в список бинарных строк (по 8 бит для каждого символа). Функция «ConvertFromBinaryAscii» преобразует список бинарных строк обратно в обычную строку.

Рисунок 2.1 – Функции «ToAscii» и ConvertFromBinaryAscii»

На рисунке 2.2 представлена функция «EncodeHamming», которая кодирует 8-битную строку с помощью кода Хэмминга (12 бит, 8 информационных и 4 контрольных).

Алгоритм работы:

  1. Расстановка биты в определённые позиции, оставляя места для контрольных битов.

  2. Вычисление контрольных битов (в позициях 1, 2, 4 и 8) по правилам Хэмминга.

  3. Возврат полной 12-битной строки.

Рисунок 2.2 – Функция «EncodeHamming»

На рисунке 2.3 представлена функция «SimulateTransmission», которая симулирует передачу кода по каналу связи, где может произойти ошибка в одном случайном бите с вероятностью 50%.

Рисунок 2.3 – Функция «SimulateTransmission»

На рисунке 2.4 представлена функция «CorrectHamming», которая выявляет и исправляет одиночную ошибку в 12-битной строке, используя контрольные суммы и позицию ошибки.

Рисунок 2.4 – Функция «CorrectHamming»

На рисунке 2.5 представлена функция «DecodeHamming», которая извлекает 8 информационных бит из 12-битной строки, закодированной по Хэммингу.

Рисунок 2.5 – Функция «DecodeHamming»

Все вышеописанные функции были инициализированы через метод «Main», который представлен на рисунке 2.6.

Рисунок 2.6 – Метод «Main»

Результат выполнения программы и ручная проверка представлены на рисунках 2.7 – 2.8 соответственно.

Рисунок 2.7 – Результат выполнения программы

Рисунок 2.8 – Результаты ручной проверки

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