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

Кодирование и шифрование информации в радиоэлектронных системах передачи информации. Часть 1. Кодирование

.pdf
Скачиваний:
43
Добавлен:
05.02.2023
Размер:
12.09 Mб
Скачать

Арифметика конечного поля Галуа

Коды Рида-Соломона базируются на специальном разделе математики – полях Галуа

(GF) или конечных полях. Арифметические действия (+,-, x, / и т.д.) над элементами конечного поля дают результат, который также является элементом этого поля. Кодировщик или декодер Рида-Соломона должны уметь выполнять эти арифметические операции. Эти операции для своей реализации требуют специального оборудования или специализированного программного обеспечения.

Образующий полином Кодовое слово Рида-Соломона формируется с привлечением специального полинома.

Все корректные кодовые слова должны делиться без остатка на эти образующие полиномы.

Общая форма образующего полинома имеет вид

а кодовое слово формируется с помощью операции

где g(x) является образующим полиномом, i(x) представляет собой информационный блок, c(x) – кодовое слово, называемое простым элементом поля.

Архитектура кодировщика

2t символов четности в кодовом слове Рида-Соломона определяются из следующего соотношения:

Ниже показана схема реализации кодировщика для версии RS(255,249):

Рис. 3. 41. Схема кодировщика Р-С

Каждый из 6 регистров содержит в себе символ (8 бит). Арифметические операторы выполняют сложение или умножение на символ как на элемент конечного поля.

Архитектура декодера Общая схема декодирования кодов Рида-Соломона показана ниже на рис. 3.42.

151

Рис. 3.42. Схема работы с кодами Рида-Соломона

Обозначения:

r(x) – Полученное кодовое слово

Si – Синдромы

L(x) – Полином локации ошибок

Xi – Положения ошибок

Yi – Значения ошибок

c(x) – Восстановленное кодовое слово

v – Число ошибок

Полученное кодовое слово r(x) представляет собой исходное (переданное) кодовое

слово c(x) плюс ошибки:

r(x) = c(x) + e(x)

Декодер Рида-Соломона пытается определить позицию и значение ошибки для t ошибок

(или 2t потерь) и исправить ошибки и потери.

Вычисление синдрома Вычисление синдрома похоже на вычисление четности. Кодовое слово Рида-Соломона

имеет 2t синдромов, это зависит только от ошибок (а не передаваемых кодовых слов).

Синдромы

могут

быть

вычислены

путем

подстановки 2t корней образующего

полинома g(x) в r(x).

 

 

 

Нахождение позиций символьных ошибок

 

 

Это делается

путем решения системы

уравнений с t неизвестными. Существует

несколько быстрых алгоритмов для решения этой задачи. Эти алгоритмы используют особенности структуры матрицы кодов Рида-Соломона и сильно сокращают необходимую вычислительную мощность. Делается это в два этапа.

1. Определение полинома локации ошибок.

Это может быть сделано с помощью алгоритма Berlekamp-Massey или алгоритма Эвклида. Алгоритм Эвклида используется чаще на практике, так как его легче реализовать,

152

однако алгоритм Berlekamp-Massey позволяет получить более эффективную реализацию оборудования и программ.

2. Нахождение корней этого полинома. Это делается с привлечением алгоритма поиска

Chien.

Нахождение значений символьных ошибок

Здесь также нужно решить систему уравнений с t неизвестными. Для решения используется быстрый алгоритм Forney.

Реализация кодировщика и декодера Рида-Соломона. Аппаратная реализация Существует несколько коммерческих аппаратных реализаций. Имеется много

разработанных интегральных схем, предназначенных для кодирования и декодирования кодов Рида-Соломона. Эти ИС допускают определенный уровень программирования

(например, RS (255, k), где t может принимать значения от 1 до 16).

Программная реализация До недавнего времени программные реализации в "реальном времени" требовали

слишком большой вычислительной мощности практически для всех кодов Рида-Соломона.

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

Однако оптимальное составление программ в сочетании с возросшей вычислительной мощностью позволяют получить вполне приемлемые результаты для относительно высоких скоростей передачи данных.

Практическая часть исследования

На данном этапе необходимо реализовать и проанализировать описанные выше алгоритмы кодирования на практике в программной среде Matlab 15. Необходимо построить соответствующие схемы, которые будут в себя включать источник сообщения, кодер,

декодер, канал передачи, анализатор ошибок и соответственно устройства визуализации полученных результатов. Так же необходимо сравнить ошибки передачи с линией, которая не будет никак преобразовывать передаваемую информацию, а просто передавать ее по каналу связи и при увеличении вероятности ошибки в канале до 0,3. Коды, которые подлежать реализации это: код Хэмминга (7,4), код БЧХ (15,7), и код Рида-Соломона

(255,223). Всю задачу выполнить в среде Matlab 15. Представить проделанную работу в отчете.

Для начала необходимо запустить саму программу. Происходит это следующим образом:

153

Рис. 3.43. Окно Matlab 15

Далее необходимо нажать на вкладку «Simulink Library», которая находится на панели инструментов в открывшемся окне. Откроется следующее окно:

Рис. 3.44. Окно «Simulink Library»

Далее создаем новую модель (вкладка на панели инструментов) и приступаем к реализации описанных выше алгоритмов.

154

Рис. 3.45. Рабочее поле Окно, представленное на рисунке 3.44, необходимо для поиска необходимых

компонентов для реализации данной работы (кодеры, декодеры и т.д.)

Реализуем канал передачи такой же кодовой комбинации без преобразований.

Рис. 3.46. Линия передачи без преобразований

Всостав линии без преобразований входят:

1.BernoulliBinaryGenerator

2.Binary Symmetric Channel (каналпередачи)

3.Error RateCalculation (анализаторошибок)

4.Display

Характеристики блоков выставить следующие:

155

Рис. 3.47. Bernoulli Binary Generator

Рис. 3.48. Binary Symmetric Channel

Рис. 3.49. ErrorRateCalculation (анализаторошибок)

Представим полученные результаты:

156

Входная последовательность:

Рис. 3.50. Входная последовательность

Рис. 3.51. Выходная последовательность

Рис. 3.52. Счетчик ошибки Анализируя рисунок выше, можно сделать вывод, что комбинация на входе

совпадает с комбинацией на выходе, таким образом, передача осуществилась удачно. Что качается ошибок, то их частота равна 0,2029, число обнаруженных ошибок равно 362, общее

157

количество символов по сравнению равно 1784. В данной схеме осуществляется передача информации без преобразований. Если сравнивать этот результат с результатом с кодированием при вероятности ошибки 0,2, то они идентичны. При увеличении вероятности ошибки до 0,3 в декодированной последовательности были найдены ошибки.

 

2000

 

 

 

 

 

 

1800

 

 

 

 

 

ошибок

1600

 

 

 

 

 

1400

 

 

 

 

 

1200

 

 

 

 

 

 

 

 

 

 

 

Количество

1000

 

 

 

 

 

800

 

 

 

 

 

600

 

 

 

 

 

400

 

 

 

 

 

 

 

 

 

 

 

 

200

 

 

 

 

 

 

0

 

 

 

 

 

 

0

0,2

0,4

0,6

0,8

1

 

 

 

Вероятность ошибки

 

 

Рис. 3. 53. График зависимости числа обнаруженных ошибок от вероятности ошибки

 

 

для кода (255,223)

 

 

 

20

 

 

 

 

 

 

18

 

 

 

 

 

ошибок

16

 

 

 

 

 

14

 

 

 

 

 

12

 

 

 

 

 

 

 

 

 

 

 

Количество

10

 

 

 

 

 

8

 

 

 

 

 

6

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

0

 

 

 

 

 

 

0

0,2

0,4

0,6

0,8

1

 

 

 

Вероятность ошибки

 

 

Рис. 3.54. График зависимости числа обнаруженных ошибок от вероятности ошибки

 

 

 

для кода (7,3)

 

 

 

Были рассмотрены особенности кода Рида-Соломона. Построили графики зависимости числа обнаруженных ошибок от вероятности ошибки для кодов (255,223) и (7,3).

158

Изучена структура кодера и декодера.

1. Код Рида-Соломона — код с 8-битными символами и проверкой на чётность. В коде

(255,223) 223 байта информационных символов, 32 байта проверки на четность.

2.Объем вычислительной мощности, необходимой для кодирования и декодирования кодов Рида-Соломона, зависит от числа символов четности. Большое значение t означает, что большее число ошибок может быть исправлено, но это потребует большей вычислительной мощности по сравнению с вариантом при меньшем t.

3.Код RS(255,223) может исправить до 16 ошибок в символах. В худшем случае, могут иметь место 16 битовых ошибок в разных символах (байтах). В лучшем случае,

корректируются 16 полностью неверных байт, при этом исправляется 16 * 8 = 128 битовых ошибок.

4. В результате анализа графиков рисунков 2.19-2.20 можно сделать вывод, что код с длинными последовательностями исправляет больше ошибок.

В разделе начало взяло аналитика выбора тех или иных параметров кодов, таких как,

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

Путем проведения компьютерной симуляции, была проверена достоверность расчетов. В

программе Matlab 15 были собраны схемы:

1)Кода Хэмминга

2)Кода БЧХ

3)Кода Рида-Соломона

Спомощью компьютерной симуляции была дана оценка ошибкам при передаче информации по каналу.

Также я познакомился с различным программным обеспечением, для построения

различного вида схем.

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

Индивидуальная работа была весьма увлекательна и полезна. С поставленными целями

справился успешно.

 

 

 

Таблица 3.1. Результаты

 

 

 

 

 

 

Вер-ть ошибки

0,2

Вер-ть ошибки 0,3

 

 

 

 

 

 

Код

Частота ошибок: 0,25

 

Частота ошибок: 0,4167

 

Хэмминга

Число обнаруженных ошибок:

Число обнаруженных ошибок: 5

 

 

 

 

 

 

 

 

159

 

 

(7,4)

3

Общее кол-во символов по

 

Общее кол-во символов по

сравнению: 12

 

сравнению: 12

 

 

 

 

Код БЧХ

Частота ошибок: 0,2143

Частота ошибок: 0,4286

(15,7)

Число обнаруженных ошибок:

Число обнаруженных ошибок: 6

 

3

Общее кол-во символов по

 

Общее кол-во символов по

сравнению: 14

 

сравнению: 14

 

 

 

 

Код Р-С

Частота ошибок: 0,2029

Частота ошибок: 0,31

(255,223)

Число обнаруженных ошибок:

Число обнаруженных ошибок:

 

362

553

 

Общее кол-во символов по

Общее кол-во символов по

 

сравнению: 1784

сравнению: 1784

 

 

 

3.2. Циклические избыточные коды CRC (Cyclic redundancy check) [16]

Циклический избыточный код (CRC). Наиболее известными из методов

обнаружения ошибок передачи данных являются [1]:

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

Поблочный контроль чётности, называемый продольным. Схема данного контроля подразумевает, что для источника и приёмника информации заранее известно, какое число передаваемых символов будет рассматриваться ими как единый блок данных. В этой схеме контроля для каждой позиции разрядов в символах блока (поперёк блока) рассчитываются свои биты чётности, которые добавляются в виде обычного символа в конце блока. По сравнению с посимвольным контролем чётности, поблочный контроль чётности обладает большими возможностями по обнаружению и даже корректировке ошибок передачи, но всё равно ему не удаётся обнаруживать определённые типы ошибок.

160

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]