Число обнаруживаемых или исправляемых ошибок.
При применении двоичных кодов учитывают
только дискретные искажения, при которых
единица переходит в нуль (1 → 0) или нуль
переходит в единицу (0 → 1). Переход 1 →
0 или 0 → 1 только в одном элементе кодовой
комбинации называют единичной ошибкой
(единичным искажением). В общем случае
под кратностью ошибки подразумевают
число позиций кодовой комбинации, на
которых под действием помехи одни
символы оказались заменёнными на другие.
Возможны двукратные (t= 2) и многократные (t> 2) искажения элементов в кодовой
комбинации в пределах 0 <t<n.
Минимальное кодовое расстояние является
основным параметром, характеризующим
корректирующие способности данного
кода. Если код используется только для
обнаружения ошибок кратностью t0,
то необходимо и достаточно, чтобы
минимальное кодовое расстояние было
равно
dmin
> t0
+ 1. (13.10)
В этом случае никакая комбинация из t0ошибок не может перевести одну разрешённую
кодовую комбинацию в другую разрешённую.
Таким образом, условие обнаружения всех
ошибок кратностьюt0можно записать в виде:
t0≤ dmin — 1. (13.11)
Чтобы можно было исправить все ошибки
кратностью tии менее, необходимо иметь минимальное
расстояние, удовлетворяющее условию:
. (13.12)
В этом случае любая кодовая комбинация
с числом ошибок tиотличается от каждой разрешённой
комбинации не менее чем вtи+ 1 позициях. Если условие (13.12) не выполнено,
возможен случай, когда ошибки кратностиtисказят переданную
комбинацию так, что она станет ближе к
одной из разрешённых комбинаций, чем к
переданной или даже перейдёт в другую
разрешённую комбинацию. В соответствии
с этим, условие исправления всех ошибок
кратностью не болееtиможно записать в виде:
tи
≤(dmin
— 1) / 2 . (13.13)
Из (13.10) и (13.12) следует, что если код
исправляет все ошибки кратностью tи,
то число ошибок, которые он может
обнаружить, равноt0= 2∙tи. Следует
отметить, что соотношения (13.10) и (13.12)
устанавливают лишь гарантированное
минимальное число обнаруживаемых или
исправляемых ошибок при заданномdminи не ограничивают возможность обнаружения
ошибок большей кратности. Например,
простейший код с проверкой на чётность
сdmin= 2 позволяет обнаруживать не только
одиночные ошибки, но и любое нечётное
число ошибок в пределахt0<n.
Корректирующие возможности кодов.
Вопрос о минимально необходимой
избыточности, при которой код обладает
нужными корректирующими свойствами,
является одним из важнейших в теории
кодирования. Этот вопрос до сих пор не
получил полного решения. В настоящее
время получен лишь ряд верхних и нижних
оценок (границ), которые устанавливают
связь между максимально возможным
минимальным расстоянием корректирующего
кода и его избыточностью.
Так, граница Плоткинадаёт верхнюю
границу кодового расстоянияdminпри заданном числе разрядовnв
кодовой комбинации и числе информационных
разрядовm, и для
двоичных кодов:
(13.14)
или
при
. (13.15)
Верхняя граница Хеммингаустанавливает
максимально возможное число разрешённых
кодовых комбинаций (2m)
любого помехоустойчивого кода при
заданных значенияхnиdmin:
, (13.16)
где
—
число сочетаний изnэлементов поiэлементам.
Отсюда можно получить выражение для
оценки числа проверочных символов:
. (13.17)
Для значений (dmin/n)
≤ 0,3 разница между границей Хемминга и
границей Плоткина сравнительно невелика.
Граница Варшамова-Гильбертадля
больших значенийnопределяет нижнюю
границу для числа проверочных разрядов,
необходимого для обеспечения заданного
кодового расстояния:
. (13.18)
Отметим, что для некоторых частных
случаев Хемминг получил простые
соотношения, позволяющие определить
необходимое число проверочных символов:
дляdmin= 3,
дляdmin= 4.
Блочные коды с dmin= 3 и 4 в литературе обычно называют кодами
Хемминга.
Все приведенные выше оценки дают
представление о верхней границе числаdminпри фиксированных значенияхnиmили оценку снизу числа проверочных
символовkпри заданныхmиdmin.
Существующие методы построения избыточных
кодов решают в основном задачу нахождения
такого алгоритма кодирования и
декодирования, который позволял бы
наиболее просто построить и реализовать
код с заданным значением dmin.
Поэтому различные корректирующие коды
при одинаковыхdminсравниваются по сложности кодирующего
и декодирующего устройств. Этот критерий
является в ряде случаев определяющим
при выборе того или иного кода.
Соседние файлы в папке ЛБ_3
- #
- #
14.04.2015937 б70KodHemmig.m
- #
14.04.20150 б62ЛБ_3.exe
Все помехоустойчивые коды делятся на блоковые и непрерывные (их называют также цепные или рекуррентные). При блоковом кодировании данные передаются отдельными блоками (словами, кодовыми комбинациями). При этом поступающие в кодер символы, разбиваются на блоки по k информационных символов. В кодере этот блок информационных символов преобразуется в блок из
кодовых символов, где п называется длиной кода. Добавленные при кодировании r = n – k символов являются проверочными. Такой блоковый код принято обозначать как (n, k) – код. Величину R = k / n называют скоростью кода, а величину, обратную скорости, Rи = n / k называют избыточностью кода.
Проверочные символы являются избыточными, они необходимы для обнаружения и (или) исправления ошибок, возникших при передаче. Существуют безызбыточные (примитивные) коды. У этих кодов проверочных символов нет (n = k), поэтому у них самая высокая скорость кода R = 1, но они не способны обнаруживать ошибки.
Ошибки при передаче кодового слова возникают потому, что некоторые из переданных символов могут быть приняты неверно. Принцип обнаружения ошибок заключается в следующем. Если блоковый (n, k) – код имеет основание (количество символов в используемом алфавите) q, то возможно Q = qn различных кодовых слов. Для передачи же используются только Qр = qk кодовых слов, которые называются разрешенными. Остальные Qз = Q – Qр слов априорно для передачи не используются и называются запрещенными.
В дальнейшем будут рассматриваться только двоичные коды, у которых алфавит состоит из двух символов 0 и 1, т. е. с основанием q = 2.
В памяти кодера и декодера хранится таблица разрешенных слов. Работа кодера заключается в выборе разрешенного кодового слова, соответствующего поступившему информационному слову. Приходящее в декодер кодовое слово сравнивается с таблицей разрешенных слов и, если происходит совпадение, то потребитель получает информационное слово, соответствующее данному разрешенному слову. Если же совпадение не наступает, то слово считается запрещенным, а потребитель получает сообщение об ошибке. Однако если совокупность ошибок превратит одно разрешенное слово в другое разрешенное, то возникшие ошибки не могут быть обнаружены.
Пример 1. Требуется передача сообщения о наступлении одного из четырех возможных событий A, B, C, D. Эти события представлены информационными словами 00, 01, 10, 11 соответственно. При передаче этих слов безызбыточным кодом все возможные комбинации являются разрешенными. Поэтому достаточно искажения хотя бы одного символа, чтобы сообщение было принято неверно. Так, если передавалось сообщение A в виде кодового слова 00, а принято было слово 01, то декодер, найдя в таблице такое разрешенное слово, вынесет решение о приеме сообщения B.
Если к вышеперечисленным информационным словам добавить по одному избыточному символу, поставив в соответствие разрешенные слова 000, 011, 101, 110, то искажение одного символа в переданном слове можно обнаружить. Так, если передавалось сообщение A в виде кодового слова 000, а принято было слово 001, то декодер, не найдя в таблице такого разрешенного слова, объявит принятое слово запрещенным и сообщит об обнаружении ошибки в слове. Однако если было принято слово 011, то декодер вынесет решение о приеме сообщения B.
Для сравнения слов необходимо задать метрику, т. е. способ измерения расстояний между кодовыми словами. Известно несколько способов выбора метрики, из которых наиболее распространенным является метрика Хэмминга. Расстоянием Хэмминга между двумя кодовыми словами называется количество несовпадающих символов в этих словах. Важнейшей характеристикой блочного кода является кодовое расстояние – d, оно равно наименьшему расстоянию из всех возможных для данного кода.
Пример 2. Для передачи используются три разрешенных слова 000, 100, 111. Расстояние между первым и вторым словами равно 1, между вторым и третьим словами – 2, а между первым и вторым – 3. Кодовое расстояние для данного кода d = 1.
Очевидно, что у безызбыточного кода d = 1, так как между любой парой его слов расстояние равно единице. Этот код не позволяет обнаруживать ошибки. Приведенный в примере 1 избыточный код (он называется кодом с проверкой на четность) имеет d = 2. Он позволяет гарантировано обнаружить однократную ошибку.
Кратностью ошибки называется количество неправильно принятых символов в кодовом слове. Если искажения символов возникают независимо друг от друга, то ошибки меньшей кратности более вероятны, чем ошибки большей кратности. Следовательно, прежде всего требуется вести борьбу с ошибками малой кратности.
Можно заметить, что максимальная кратность гарантировано обнаруживаемой ошибки tо = d – 1. Действительно, при возникновении необнаруженной ошибки одно разрешенное слово должно превратиться в другое разрешенное слово. А для этого надо, чтобы кратность возникшей ошибки была не менее d, поскольку все разрешенные слова по определению кодового расстояния различаются не менее, чем на d символов. Если же принятое кодовое слово хотя бы на один символ отличается от разрешенных кодовых слов, то будет зафиксировано появление ошибки.
При декодировании вместо обнаружения ошибок возможно их исправление. Так, если было принято запрещенное кодовое слово, то можно не отбрасывать его, а найти наиболее похожее разрешенное слово и объявить его принятым. Таким образом, возникшие при передаче ошибки считаются исправленными, и потребитель получает не сообщение об ошибке, а очередное информационное слово. При декодировании с исправлением ошибок решение принимается по минимуму расстояния Хэмминга, т. е. переданным считается то разрешенное кодовое слово, которое отличается от принятого слова наименьшим количеством несовпадающих символов.
Пример 3. Для передачи используется два разрешенных кодовых слова 000 и 111. Было принято слово 001, на беглый взгляд оно больше похоже на 000, чем на 111. Действительно, слово 001 от первого разрешенного слова отличается на один символ, а от второго на два. Так как однократная ошибка вероятнее двукратной, то скорее всего было передано первое слово и в нем исказился один символ. Декодер принимает решение по минимуму расстояния Хэмминга и объявляет принятым разрешенное слово 000.
В
рассмотренном примере код имеет d = 3, он позволяет гарантировано исправлять однократную ошибку. Можно заметить, что максимальная кратность гарантировано исправляемой ошибки :
где [x] –целая часть числа x.
Существует так называемый прием со стиранием. Это частный случай приема с мягким решением. Его особенность состоит в том, что решающее устройство имеет область неопределенности, в которую попадают все сигналы, не превысившие установленный порог. Решающее устройство выдает при этом специальный символ, заменяющий неуверенно принятый сигнал. Этот символ оказывается, таким образом, «стертым». Так, при передаче двоичным кодом на выходе решающего устройства появляется один из трех символов: 0, 1 и символ стирания Х.
Восстановить стертые знаки часто оказывается легче, чем исправить ошибочные. Это обусловлено тем, что местонахождение стертых знаков известно, так как оно обозначено символом стирания Х, тогда как местоположение ошибок неизвестно, и каждый из знаков 0 или 1 может быть как верным, так и неверным.
Для сохранения различимости кодовых комбинаций при стирании не более s знаков кодовое расстояние d должно удовлетворять условию:
Для того, чтобы код мог одновременно исправлять t ошибок и восстанавливать s стертых символов кодовое расстояние должно быть:
Преимущество кодов со стираниями очевидно: например, при d = 3 такой код может как и обычный исправить одиночную ошибку, но может восстановить два стертых символа.
Описанный выше метод кодирования и декодирования, основанный на запоминании таблицы разрешенных слов, называется универсальным, поскольку годится для всех блочных кодов. Однако этот метод практически не применяется из-за сложности реализации и низкого быстродействия. Если длина информационного слова достаточно велика, то требуется большой объем памяти для хранения всех разрешенных слов. Кроме того, сравнение принятого слова со всей таблицей может продолжаться очень долго, что недопустимо при работе в режиме реального времени. Поэтому созданы другие методы кодирования и декодирования блочных кодов, в которых используется не поиск разрешенных слов, а математические операции над информационными и проверочными символами.
Чаще всего применяются систематические коды. Систематическим называется такой блочный код, у которого информационные и проверочные символы расположены на одних и тех же позициях во всех кодовых словах
В примере 1 был рассмотрен избыточный код с проверкой на четность. При его кодировании к информационному слову добавляется один проверочный символ так, чтобы количество единиц в кодовом слове было четным. При декодировании проверяется выполнение этого условия. Если количество единиц в принятом слове нечетно, то слово является запрещенным. Таким образом, можно обойтись без запоминания таблицы разрешенных слов.
Если в кодере используются лишь линейные операции над поступающими информационными символами, то код называется линейным. Принцип кодирования и декодирования линейного кода заключается в системе линейных уравнений, в которую входят информационные и проверочные символы. Для каждого кода эта система своя. Рассмотрим её на примере кода (7, 4), имеющего d = 3.
a1 а2 а3 а5 = 0
а2 а3 а4 а6 = 0
а1 а2 а4 а7 = 0
где — знак сложения по модулю 2, символы а1, а2, а3, а4 являются информационными, а символы а5, а6, а7 – проверочными. При кодировании проверочные символы вычисляются из информационных так, чтобы они удовлетворяли системе уравнений. При декодировании символы принятого слова подставляются в систему уравнений и вычисляется её правая часть. Эта правая часть представляет собой вектор, который называется исправляющим вектором или синдромом. Анализ синдрома позволяет исправлять ошибки. Каждому возможному синдрому соответствует номер искаженного символа.
|
Синдром |
Номер искаженного символа |
|
000 |
Ошибок не обнаружено |
|
101 |
1 |
|
111 |
2 |
|
110 |
3 |
|
011 |
4 |
Проверочные символы вычисляются с помощью производящей (порождающей) матрицы. Производящая матрица G – это таблица, у которой k строк и n столбцов, в которой записаны k линейно независимых разрешенных комбинаций данного кода. По ней можно построить все остальные разрешенные кодовые комбинации, складывая поразрядно по модулю 2 строки производящей матрицы во всех возможных сочетаниях. В памяти кодера достаточно иметь производящую матрицу. С помощью набора сумматоров можно получить любую разрешенную кодовую комбинацию.
Производящую матрицу принято представлять в каноническом виде. Для рассматриваемого кода она будет:
Где левая часть матрицы — единичная матрица, соответствующая информационным символам, а правая часть матрицы соответствует проверочным символам. Схема кодирования строится на основе производящей матрицы. Кодер состоит из k-элементного регистра для информационного слова и n – k сумматоров по модулю 2. Элементы правой части производящей матрицы pij отвечают за вычисление проверочных символов. Они показывают связь i-ой ячейки регистра с j-м сумматором. Если pij = 1, то связь есть, если pij = 0 , то связи нет.
Д
ля декодирования требуется проверочная матрица H, содержащая n – k строк и n столбцов. В каждой строке этой матрицы единицы находятся в тех разрядах, которые входят в соответствующее проверочное уравнение. Для рассмотренного кода Хэмминга (7, 4) проверочная матрица будет иметь вид:
Существует особый класс блочных линейных кодов – циклические коды. Они отличаются тем, что всякая циклическая перестановка символов разрешенного кодового слова приводит также к разрешенному слову. Все кодовые комбинации можно получить циклическим сдвигом одного слова. Поэтому важным достоинством циклических кодов является то, что операции кодировании и декодирования легко реализуются на сдвигающих регистрах.
|
|
Макеты страниц
8.1. ОСОБЕННОСТИ ПРИМЕНЕНИЯ КОРРЕКТИРУЮЩЕГО КОДИРОВАНИЯ
При корректирующем кодировании для повышения верности передачи информации воздействуют как на способ передачи, так и на способ приема. Применяют его в тех случаях, когда возможности других способов повышения верности исчерпаны. Это обусловлено усложнением систем связи при введении корректирующих устройств, ростом материальных затрат, а в ряде случаев и снижением надежности аппаратуры. Развитие корректирующего кодирования в значительной мере связано с внедрением автоматических и автоматизированных систем обработки информации, построенных на ЦВМ. Эти системы обычно являются важной составной частью иерархических систем более высокого ранга, таких, как автоматизированные системы управления воздушным движением, системы бронирования и продажи билетов, системы управления предприятиями и технологическими процессами. Для нормальной работы автоматизированных систем управления необходим обмен цифровой информацией между различными ЦВМ по телефонным и телеграфным каналам (передача данных). Допустимая вероятность ошибки при передаче одного бита информации в современных автоматизированных системах не должна превышать
что на 3—4 порядка меньше той, которая наблюдается в реальных каналах связи. Корректирующее кодирование направлено на согласование высоких требований к верности передачи данных и низкого качества реальных каналов, плохо приспособленных для передачи данных. Применению кодирования благоприятствует то, что большинство алгоритмов кодирования и декодирования может быть реализовано не аппаратурным, а программным способом в ЦВМ.
Возможности эффективного использования реальных каналов далеко не исчерпаны. При отношениях сигнал/шум 20-30 дБ, которые имеют место в каналах, теоретическая пропускная способность каналов при сколь угодно малой вероятности ошибок может составлять 6—10 бит/с на 1 Гц полосы канала. Следовательно, теоретическая пропускная способность телеграфного канала составляет примерно 900-1200 бит/с, телефонного — 20- 30 тыс. бит/с, телевизионного — 30—50 млн. бит/с. Существующие системы позволяют получить скорость передачи информации всего
лишь 1—2 бит/с на 1 Гц полосы канала, вероятность ошибки при передаче одного бита
и выше, если не используется корректирующее кодирование.
Для корректирования ошибок можно применять те же способы, что и для повышения скорости передачи информации. Все они направлены на увеличение объема сигнала и приближение его к объему канала. Если объем сигнала равен объему канала, то корректирования ошибок можно добиться только путем уменьшения скорости передачи информации, так как часть объема сигналов должна быть использована для корректирования. Корректирующее кодирование использует по существу все виды избыточности сигналов — временную, частотную и энергетическую. Если длина кодовой комбинации не фиксирована (скорость передачи информации не фиксирована), то для корректирования ошибок используют временную избыточность — кроме информационных символов, дополнительно вводят еще ряд символов, называемых проверочными, с помощью которых обнаруживают и исправляют ошибки. Эту способность кодов обнаруживать и исправлять ошибки называют корректирующей способностью.
Если скорость передачи информации фиксирована, ввести проверочные символы в кодовую комбинацию бинарного кода можно, лишь уменьшая длительность элементарных сигналов, что ведет к расширению их спектра. Следовательно, в этом случае корректирующее кодирование использует частотную избыточность. Чтобы отношение сигнал/шум с уменьшением длительности импульсов не падало, необходимо увеличивать амплитуду импульсов. Увеличивая амплитуду укороченного импульса, можно настолько увеличить его энергию, что вероятность ошибки при его приеме уменьшится по сравнению с вероятностью при приеме импульса неукороченной длительности. Так вводится энергетическая: избыточность (корректирующая способность кода улучшается в результате повышения энергии импульсов).
Корректирующая способность кода определяется минимальным кодовым расстоянием
между разрешенными кодовыми комбинациями (см. § 1.6). Максимальную кратность
обнаруживаемых ошибок определяют из следующих соображений. Если расстояние, измеренное между принятой комбинацией и какой-либо разрешенной, оказывается меньше
это позволяет рассматривать принятую комбинацию как запрещенную, т. е. обнаружить ошибку. Ближайшее целое число, меньшее
есть
Поэтому кратность обнаруживаемых ошибок изменяется от 1 до
максимальная кратность
При исправлении ошибок по критерию максимума правдоподобия принимаемая комбинация отождествляется с той разрешенной, к которой она находится ближе всего. Неправильное декодирование происходит тогда, когда кодовое расстояние от принимаемой комбинации до переданной оказывается больше, чем до какой-либо
другой разрешенной. Это может случиться тогда, когда сочетание ошибок изменит более половины позиций, в которых переданная комбинация отличается от какой-либо другой разрешенной. Поэтому код с расстоянием
исправляет все сочетания ошибок кратности
Максимальная кратность полностью исправимых ошибок
Для обнаружения
ошибок и исправления
ошибок должно выполняться неравенство
Увеличение
приводит к росту избыточности кода
где
число проверочных символов, предназначенных для обнаружения и исправления ошибок. Наибольшей избыточностью обладают коды, обнаруживающие и исправляющие ошибки. Для них основными характеристиками являются вероятность появления ошибок на выходе декодера, минимальная избыточность, определяемая величиной
эффективность кодирования (см. § 8.4).
Таблица 5 (см. скан)
Если ошибки независимы, то вероятность появления ошибок на выходе декодера определяют как вероятность того, что не
исправлены ошибки кратности
и более (см. п. 4.3.4):
В реальных каналах имеет место группирование ошибок, поэтому для них оценка этой вероятности [10]
где а — показатель группирования ошибок в канале, который оценивают экспериментально.
В таблице 5 показаны вероятности ошибок и показатели группирования для основных видов реальных каналов
Рис. 8.1. Зависимость вероятностей некорректируемых ошибок от
Формула (8.6) справедлива при
что обычно соблюдается. Для сравнения данных, получаемых по формулам (8.5), (8.6), на рис. 8.1 [10] показаны зависимости
(штриховые линии) и
при различных
для радиотелеграфного канала с параметрами
Бод. Анализ графиков показывает, что формула (8.5) дает заниженные значения вероятностей появления некорректируемых ошибок из-за того, что не учитывает групповой характер ошибок. О порядке расхождения можно судить, например, по тому, что при
формула (8.5) дает
тогда как в реальном канале
Внесение избыточности целесообразно, если применение корректирующего кодирования приводит к повышению верности. Если кратность независимых ошибок в кодовой комбинации примитивного кода равна
то для гауссова канала при поэлементном приеме ортогональных сигналов целесообразные избыточность и число проверочных символов [9]
Для коррекции групповых ошибок требуется примерно в 2—3 раза меньшая избыточность. Аналогичные (8.7) соотношения более сложного характера получены с учетом группового характера ошибок и надежности корректирующих устройств. Существует информационный предел избыточности, который существенно ниже. Это объясняется тем, что избыточность вводится для наихудшего случая появления ошибок, а реально не все комбинации имеют ошибки.
С ростом длины комбинации экспоненциально возрастают объемы памяти кодера и декодера, а также задержки при кодировании и декодировании. Если использовать непосредственные способы декодирования и хранить в памяти все разрешенные комбинации, задача получения оптимальных кодов становится технически неразрешимой. Основное направление в теории корректирующего кодирования — создание таких кодов, которые не требуют хранения в памяти разрешенных комбинаций, а на основе конечного числа преобразований принятых комбинаций позволяют получать оптимальные статистические решения о том, какие комбинации передавались.
Задачи корректирующего кодирования обычно решают при следующих предположениях: избыточность эффективного кода равна нулю, кодирование выполняется двоичными сигналами, характеристики дискретного двоичного канала известны, канал является симметричным и в общем случае с памятью (см. § 4.3).
Контрольные вопросы
(см. скан)
Оглавление
- ПРЕДИСЛОВИЕ
- Глава 1. ОБЩАЯ ХАРАКТЕРИСТИКА ЗАДАЧ ТЕОРИИ ИНФОРМАЦИИ И ПЕРЕДАЧИ СИГНАЛОВ
- 1.1. МАТЕМАТИЧЕСКОЕ ОПИСАНИЕ СООБЩЕНИЙ, СИГНАЛОВ И ПОМЕХ
- 1.2. МОДУЛЯЦИЯ КАК УПРАВЛЕНИЕ ИНФОРМАЦИОННЫМИ ПАРАМЕТРАМИ СИГНАЛОВ
- 1.3. КАНАЛЫ ПЕРЕДАЧИ ИНФОРМАЦИИ
- 1.4. ИНФОРМАЦИОННЫЕ ХАРАКТЕРИСТИКИ ИСТОЧНИКОВ СООБЩЕНИЙ И КАНАЛОВ
- 1.5. ПОМЕХОУСТОЙИВОСТЪПЕРЕДАЧИ ИНФОРМАЦИИ
- 1.6. КОДИРОВАНИЕ
- 1.7. УПЛОТНЕНИЕ ЛИНИЙ СВЯЗИ. ИНФОРМАЦИОННЫЕ ПОТОКИ В СЕТЯХ
- 1.8. ВЗАИМОСВЯЗЬ И ПРАКТИЧЕСКОЕ ИСПОЛЬЗОВАНИЕ РЕЗУЛЬТАТОВ ТЕОРИИ ИНФОРМАЦИИ И ПЕРЕДАЧИ СИГНАЛОВ
- 1.9. ВЫВОДЫ
- Глава 2. МАТЕМАТИЧЕСКОЕ ОПИСАНИЕ СИГНАЛОВ И ПОМЕХ
- 2.2. ОРТОГОНАЛЬНЫЕ РАЗЛОЖЕНИЯ КОТЕЛЬНИКОВА
- 2.3. КОРРЕЛЯЦИОННЫЕ И СПЕКТРАЛЬНЫЕ ХАРАКТЕРИСТИКИ СИГНАЛОВ И ПОМЕХ
- 2.4. ОСНОВНЫЕ МОДЕЛИ СЛУЧАЙНЫХ СИГНАЛОВ И ПОМЕХ
- 2.5. КАНОНИЧЕСКИЕ И НЕКАНОНИЧЕСКИЕ РАЗЛОЖЕНИЯ СЛУЧАЙНЫХ СИГНАЛОВ И ПОМЕХ
- 2.6. УЗКОПОЛОСНЫЕ И АНАЛИТИЧЕСКИЕ СИГНАЛЫ
- 2.7. РАСПРЕДЕЛЕНИЯ ОГИБАЮЩЕЙ И ФАЗЫ УЗКОПОЛОСНЫХ СИГНАЛОВ
- 2.8. РАСПРЕДЕЛЕНИЯ ОГИБАЮЩЕЙ И ФАЗЫ СУММЫ ГАРМОНИЧЕСКОГО КОЛЕБАНИЯ И УЗКОПОЛОСНОЙ ПОМЕХИ
- 2.9. СИНТЕЗ СИГНАЛОВ И ПОМЕХ
- 2.10. ПРОСТРАНСТВА СИГНАЛОВ И ПОМЕХ
- 2.11. ВЫВОДЫ
- Глава 3. УПРАВЛЕНИЕ ИНФОРМАЦИОННЫМИ ПАРАМЕТРАМИ СИГНАЛОВ
- 3.1 КЛАССИФИКАЦИЯ МЕТОДОВ МОДУЛЯЦИИ
- 3.2. КОРРЕЛЯЦИОННЫЕ И СПЕКТРАЛЬНЫЕ ХАРАКТЕРИСТИКИ МОДУЛИРОВАННЫХ СИГНАЛОВ
- 3.3. СЛУЧАЙНЫЕ И ШУМОПОДОБНЫЕ СИГНАЛЫ-ПЕРЕНОСЧИКИ
- 3.4. АМПЛИТУДНАЯ МОДУЛЯЦИЯ СЛУЧАЙНОГО СИГНАЛА
- 3.5. АМПЛИТУДНАЯ МАНИПУЛЯЦИЯ И АМПЛИТУДНАЯ ИМПУЛЬСНАЯ МОДУЛЯЦИЯ
- 3.6. ЦИФРОВЫЕ МЕТОДЫ МОДУЛЯЦИИ
- 3.7. ВЫВОДЫ
- Глава 4. КАНАЛЫ ПЕРЕДАЧИ ИНФОРМАЦИИ
- 4.2. АНАЛИЗ ДИСКРЕТНО-НЕПРЕРЫВНЫХ КАНАЛОВ
- 4.3. АНАЛИЗ ДИСКРЕТНЫХ КАНАЛОВ
- 4.4. ПРОХОЖДЕНИЕ СИГНАЛОВ ЧЕРЕЗ КАНАЛЫ
- 4.5. ВЫВОДЫ
- Глава 5. ИНФОРМАЦИОННЫЕ ХАРАКТЕРИСТИКИ ИСТОЧНИКОВ СООБЩЕНИЙ И КАНАЛОВ
- 5.1. ИНФОРМАЦИОННЫЕ ХАРАКТЕРИСТИКИ ИСТОЧНИКОВ ДИСКРЕТНЫХ СООБЩЕНИЙ
- 5.2. ИНФОРМАЦИОННЫЕ ХАРАКТЕРИСТИКИ ДИСКРЕТНЫХ КАНАЛОВ
- 5.3. ОПТИМАЛЬНОЕ ЭФФЕКТИВНОЕ КОДИРОВАНИЕ
- 5.4. ИНФОРМАЦИОННЫЕ ХАРАКТЕРИСТИКИ ИСТОЧНИКОВ НЕПРЕРЫВНЫХ СООБЩЕНИЙ
- 5.5. ИНФОРМАЦИОННЫЕ ХАРАКТЕРИСТИКИ НЕПРЕРЫВНЫХ КАНАЛОВ
- 5.6. СОГЛАСОВАНИЕ ИСТОЧНИКОВ С КАНАЛАМИ
- 5.7. СРАВНЕНИЕ ПРОПУСКНЫХ СПОСОБНОСТЕЙ ДИСКРЕТНОГО И НЕПРЕРЫВНОГО КАНАЛОВ
- 5.8. ИСПОЛЬЗОВАНИЕ ИНФОРМАЦИОННЫХ ХАРАКТЕРИСТИК В ИНФОРМАЦИОННО-ИЗМЕРИТЕЛЬНОЙ ТЕХНИКЕ
- 5.9. ВЫВОДЫ
- Глава 6. ПОМЕХОУСТОЙЧИВОСТЬ ПЕРЕДАЧИ ДИСКРЕТНЫХ СООБЩЕНИЙ
- 6.1. ОСОБЕННОСТИ ОПРЕДЕЛЕНИЯ ПОМЕХОУСТОЙЧИВОСТИ ПЕРЕДАЧИ ДИСКРЕТНЫХ СООБЩЕНИЙ
- 6.2. КРИТЕРИИ ВЕРНОСТИ ПЕРЕДАЧИ СООБЩЕНИЙ
- 6.3. ОПТИМАЛЬНЫЙ КОГЕРЕНТНЫЙ ПРИЕМ ДИСКРЕТНЫХ СИГНАЛОВ
- 6.4. ОПТИМАЛЬНЫЙ НЕКОГЕРЕНТНЫЙ ПРИЕМ ДИСКРЕТНЫХ СИГНАЛОВ
- 6.5. НЕОПТИМАЛЬНЫЕ МЕТОДЫ ПРИЕМА ДИСКРЕТНЫХ СИГНАЛОВ
- 6.6 ВЛИЯНИЕ ЗАМИРАНИЙ И РАССИНХРОНИЗАЦИИ СИГНАЛОВ НА ПОМЕХОУСТОЙЧИВОСТЬ
- 6.7. ВЫВОДЫ
- Глава 7. ПОМЕХОУСТОЙЧИВОСТЬ ПЕРЕДАЧИ НЕПРЕРЫВНЫХ СООБЩЕНИЙ
- 7.1. ОСОБЕННОСТИ ОПРЕДЕЛЕНИЯ ПОМЕХОУСТОЙЧИВОСТИ ПЕРЕДАЧИ НЕПРЕРЫВНЫХ СООБЩЕНИЙ
- 7.2. ОПТИМАЛЬНАЯ ФИЛЬТРАЦИЯ НЕПРЕРЫВНЫХ СИГНАЛОВ
- 7.3. ОПТИМАЛЬНЫЙ ПРИЕМ СИГНАЛОВ ПО КРИТЕРИЮ МАКСИМАЛЬНОГО ПРАВДОПОДОБИЯ
- 7.4. ПОТЕНЦИАЛЬНАЯ ПОМЕХОУСТОЙЧИВОСТЬ МЕТОДОВ МОДУЛЯЦИИ
- 7.5. ПОРОГОВЫЙ ЭФФЕКТ НЕЛИНЕЙНЫХ МЕТОДОВ МОДУЛЯЦИИ
- 7.6. ПОТЕНЦИАЛЬНАЯ ПОМЕХОУСТОЙЧИВОСТЬ МНОГОСТУПЕНЧАТЫХ МЕТОДОВ МОДУЛЯЦИИ
- 7.7. ПОТЕНЦИАЛЬНАЯ ПОМЕХОУСТОЙЧИВОСТЬ ЦИФРОВЫХ МЕТОДОВ МОДУЛЯЦИИ
- 7.8. ВЫВОДЫ
- Глава 8. КОРРЕКТИРУЮЩЕЕ КОДИРОВАНИЕ
- 8.1. ОСОБЕННОСТИ ПРИМЕНЕНИЯ КОРРЕКТИРУЮЩЕГО КОДИРОВАНИЯ
- 8.2. ПРИНЦИПЫ ПОСТРОЕНИЯ КОРРЕКТИРУЮЩИХ КОДОВ
- 8.3. АДАПТИВНЫЕ КОРРЕКТИРУЮЩИЕ КОДЫ
- 8.4. ЭФФЕКТИВНОСТЬ КОРРЕКТИРУЮЩЕГО КОДИРОВАНИЯ
- 8.5. ВЫВОДЫ
- Глава 9. УПЛОТНЕНИЕ ЛИНИЙ СВЯЗИ И ИНФОРМАЦИОННЫЕ ПОТОКИ В СЕТЯХ
- 9.1. ЭЛЕМЕНТЫ ТЕОРИИ РАЗДЕЛЕНИЯ СИГНАЛОВ
- 9.2. ПРИНЦИПЫ УПЛОТНЕНИЯ ЛИНИЙ СВЯЗИ [1—3, 8]
- 9.3. ПРОПУСКНАЯ СПОСОБНОСТЬ УПЛОТНЕННЫХ ЛИНИЙ СВЯЗИ
- 9.4. ОПТИМИЗАЦИЯ ПРОПУСКНОЙ СПОСОБНОСТИ УПЛОТНЕННЫХ ЛИНИЙ В СЕТЯХ СВЯЗИ
- 9.5. УПЛОТНЕНИЕ ЛИНИЙ И ИНТЕГРАЛЬНЫЕ СЕТИ СВЯЗИ
- 9.6. ВЫВОДЫ
- Глава 10. ЭФФЕКТИВНОСТЬ ПЕРЕДАЧИ ИНФОРМАЦИИ
- 10.2. ЭФФЕКТИВНОСТЬ ПЕРЕДАЧИ ДИСКРЕТНЫХ СООБЩЕНИЙ
- 10.3. ЭФФЕКТИВНОСТЬ ПЕРЕДАЧИ НЕПРЕРЫВНЫХ СООБЩЕНИЙ
- 10.4. ЭФФЕКТИВНОСТЬ ПЕРЕДАЧИ ИНФОРМАЦИИ В СЕТЯХ
- 10.5. ВЫВОДЫ
- ЗАКЛЮЧЕНИЕ
- ПРИЛОЖЕНИЕ. ОСНОВНЫЕ ПОНЯТИЯ ФУНКЦИОНАЛЬНОГО АНАЛИЗА
Содержание
- 1 Исправление ошибок в помехоустойчивом кодировании
- 2 Параметры помехоустойчивого кодирования
- 3 Контроль чётности
- 4 Классификация помехоустойчивых кодов
- 5 Код Хэмминга
- 5.1 Декодирование кода Хэмминга
- 5.2 Расстояние Хэмминга
- 6 Помехоустойчивые коды
- 6.1 Компромиссы при использовании помехоустойчивых кодов
- 6.2 Необходимость чередования (перемежения)
Назначение помехоустойчивого кодирования – защита информации от помех и ошибок при передаче и хранении информации. Помехоустойчивое кодирование необходимо для устранения ошибок, которые возникают в процессе передачи, хранения информации. При передачи информации по каналу связи возникают помехи, ошибки и небольшая часть информации теряется.

Без использования помехоустойчивого кодирования было бы невозможно передавать большие объемы информации (файлы), т.к. в любой системе передачи и хранении информации неизбежно возникают ошибки.
Рассмотрим пример CD диска. Там информация хранится прямо на поверхности диска, в углублениях, из-за того, что все дорожки на поверхности, часто диск хватаем пальцами, елозим по столу и из-за этого без помехоустойчивого кодирования, информацию извлечь не получится.

Использование кодирования позволяет извлекать информацию без потерь даже с поврежденного CD/DVD диска, когда какая либо область становится недоступной для считывания.
В зависимости от того, используется в системе обнаружение или исправление ошибок с помощью помехоустойчивого кода, различают следующие варианты:
- запрос повторной передачи (Automatic Repeat reQuest, ARQ): с помощью помехоустойчивого кода выполняется только обнаружение ошибок, при их наличии производится запрос на повторную передачу пакета данных;
- прямое исправление ошибок (Forward Error Correction, FEC): производится декодирование помехоустойчивого кода, т. е. исправление ошибок с его помощью.
Возможен также гибридный вариант, чтобы лишний раз не гонять информацию по каналу связи, например получили пакет информации, попробовали его исправить, и если не смогли исправить, тогда отправляется запрос на повторную передачу.
Исправление ошибок в помехоустойчивом кодировании
Любое помехоустойчивое кодирование добавляет избыточность, за счет чего и появляется возможность восстановить информацию при частичной потере данных в канале связи (носителе информации при хранении). В случае эффективного кодирования убирали избыточность, а в помехоустойчивом кодировании добавляется контролируемая избыточность.
Простейший пример – мажоритарный метод, он же многократная передача, в котором один символ передается многократно, а на приемной стороне принимается решение о том символе, количество которых больше.
Допустим есть 4 символа информации, А, B, С,D, и эту информацию повторяем несколько раз. В процессе передачи информации по каналу связи, где-то возникла ошибка. Есть три пакета (A1B1C1D1|A2B2C2D2|A3B3C3D3), которые должны нести одну и ту же информацию.

Но из картинки справа, видно, что второй символ (B1 и C1) они отличаются друг от друга, хотя должны были быть одинаковыми. То что они отличаются, говорит о том, что есть ошибка.
Необходимо найти ошибку с помощью голосования, каких символов больше, символов В или символов С? Явно символов В больше, чем символов С, соответственно принимаем решение, что передавался символ В, а символ С ошибочный.
Для исправления ошибок нужно, как минимум 3 пакета информации, для обнаружения, как минимум 2 пакета информации.
Параметры помехоустойчивого кодирования
Первый параметр, скорость кода R характеризует долю информационных («полезных») данных в сообщении и определяется выражением: R=k/n=k/m+k
- где n – количество символов закодированного сообщения (результата кодирования);
- m – количество проверочных символов, добавляемых при кодировании;
- k – количество информационных символов.
Параметры n и k часто приводят вместе с наименованием кода для его однозначной идентификации. Например, код Хэмминга (7,4) значит, что на вход кодера приходит 4 символа, на выходе 7 символов, Рида-Соломона (15, 11) и т.д.
Второй параметр, кратность обнаруживаемых ошибок – количество ошибочных символов, которые код может обнаружить.
Третий параметр, кратность исправляемых ошибок – количество ошибочных символов, которые код может исправить (обозначается буквой t).
Контроль чётности
Самый простой метод помехоустойчивого кодирования это добавление одного бита четности. Есть некое информационное сообщение, состоящее из 8 бит, добавим девятый бит.
Если нечетное количество единиц, добавляем 0.
1 0 1 0 0 1 0 0 | 0
Если четное количество единиц, добавляем 1.
1 1 0 1 0 1 0 0 | 1
Если принятый бит чётности не совпадает с рассчитанным битом чётности, то считается, что произошла ошибка.
1 1 0 0 0 1 0 0 | 1
Под кратностью понимается, всевозможные ошибки, которые можно обнаружить. В этом случае, кратность исправляемых ошибок 0, так как мы не можем исправить ошибки, а кратность обнаруживаемых 1.
Есть последовательность 0 и 1, и из этой последовательности составим прямоугольную матрицу размера 4 на 4. Затем для каждой строки и столбца посчитаем бит четности.
Прямоугольный код – код с контролем четности, позволяющий исправить одну ошибку:

И если в процессе передачи информации допустим ошибку (ошибка нолик вместо единицы, желтым цветом), начинаем делать проверку. Нашли ошибку во втором столбце, третьей строке по координатам. Чтобы исправить ошибку, просто инвертируем 1 в 0, тем самым ошибка исправляется.
Этот прямоугольный код исправляет все одно-битные ошибки, но не все двух-битные и трех-битные.
Рассчитаем скорость кода для:
- 1 1 0 0 0 1 0 0 | 1
Здесь R=8/9=0,88
- И для прямоугольного кода:
Здесь R=16/24=0,66 (картинка выше, двадцать пятую единичку (бит четности) не учитываем)
Более эффективный с точки зрения скорости является первый вариант, но зато мы не можем с помощью него исправлять ошибки, а с помощью прямоугольного кода можно. Сейчас на практике прямоугольный код не используется, но логика работы многих помехоустойчивых кодов основана именно на прямоугольном коде.
Классификация помехоустойчивых кодов
- Непрерывные — процесс кодирования и декодирования носит непрерывный характер. Сверточный код является частным случаем непрерывного кода. На вход кодера поступил один символ, соответственно, появилось несколько на выходе, т.е. на каждый входной символ формируется несколько выходных, так как добавляется избыточность.
- Блочные (Блоковые) — процесс кодирования и декодирования осуществляется по блокам. С точки зрения понимания работы, блочный код проще, разбиваем код на блоки и каждый блок кодируется в отдельности.
По используемому алфавиту:
- Двоичные. Оперируют битами.
- Не двоичные (код Рида-Соломона). Оперируют более размерными символами. Если изначально информация двоичная, нужно эти биты превратить в символы. Например, есть последовательность 110 110 010 100 и нужно их преобразовать из двоичных символов в не двоичные, берем группы по 3 бита — это будет один символ, 6, 6, 2, 4 — с этими не двоичными символами работают не двоичные помехоустойчивые коды.
Блочные коды делятся на
- Систематические — отдельно не измененные информационные символы, отдельно проверочные символы. Если на входе кодера присутствует блок из k символов, и в процессе кодирования сформировали еще какое-то количество проверочных символов и проверочные символы ставим рядом к информационным в конец или в начало. Выходной блок на выходе кодера будет состоять из информационных символов и проверочных.
- Несистематические — символы исходного сообщения в явном виде не присутствуют. На вход пришел блок k, на выходе получили блок размером n, блок на выходе кодера не будет содержать в себе исходных данных.
В случае систематических кодов, выходной блок в явном виде содержит в себе, то что пришло на вход, а в случае несистематического кода, глядя на выходной блок нельзя понять что было на входе.

Смотря на картинку выше, код 1 1 0 0 0 1 0 0 | 1 является систематическим, на вход поступило 8 бит, а на выходе кодера 9 бит, которые в явном виде содержат в себе 8 бит информационных и один проверочный.

Код Хэмминга
Код Хэмминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Позволяет устранить одну ошибку и находить двойную.

Код Хэмминга (7,4) — 4 бита на входе кодера и 7 на выходе, следовательно 3 проверочных бита. С 1 по 4 информационные биты, с 6 по 7 проверочные (см. табл. выше). Пятый проверочный бит y5, это сумма по модулю два 1-3 информационных бит. Сумма по модулю 2 это вычисление бита чётности.
Декодирование кода Хэмминга
Декодирование происходит через вычисление синдрома по выражениям:

Синдром это сложение бит по модулю два. Если синдром не нулевой, то исправление ошибки происходит по таблице декодирования:

Расстояние Хэмминга
Расстояние Хэмминга — число позиций, в которых соответствующие символы двух кодовых слов одинаковой длины различны. Если рассматривать два кодовых слова, (пример на картинке ниже, 1 0 1 1 0 0 1 и 1 0 0 1 1 0 1) видно что они отличаются друг от друга на два символа, соответственно расстояние Хэмминга равно 2.

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

Из таблицы видим, что там один класс кода БЧХ, но разные параметры n и k.
- n — количество символов на входе.
- k — количество символов на выходе.
- t — кратность исправляемых ошибок.
- Отношение k/n — скорость кода.
- G (энергетический выигрыш) — величина, показывающая на сколько можно уменьшить отношение сигнал/шум (Eb/No) для обеспечения заданной вероятности ошибки.
Несмотря на то, что скорость кода близка, количество исправляемых ошибок может быть разное. Количество исправляемых ошибок зависит от той избыточности, которую добавим и от размера блока. Чем больше блок, тем больше ошибок он исправляет, даже при той же самой избыточности.
Пример: помехоустойчивые коды и двоичная фазовая манипуляция (2-ФМн). На графике зависимость отношения сигнал шум (Eb/No) от вероятности ошибки. За счет применения помехоустойчивых кодов улучшается помехоустойчивость.

Из графика видим, код Хэмминга (7,4) на сколько увеличилась помехоустойчивость? Всего на пол Дб это мало, если применить код БЧХ (127, 64) выиграем порядка 4 дБ, это хороший показатель.
Компромиссы при использовании помехоустойчивых кодов
Чем расплачиваемся за помехоустойчивые коды? Добавили избыточность, соответственно эту избыточность тоже нужно передавать. Нужно: увеличивать пропускную способность канала связи, либо увеличивать длительность передачи.

Компромисс:
- Достоверность vs полоса пропускания.
- Мощность vs полоса пропускания.
- Скорость передачи данных vs полоса пропускания
Необходимость чередования (перемежения)
Все помехоустойчивые коды могут исправлять только ограниченное количество ошибок t. Однако в реальных системах связи часто возникают ситуации сгруппированных ошибок, когда в течение непродолжительного времени количество ошибок превышает t.
Например, в канале связи шумов мало, все передается хорошо, ошибки возникают редко, но вдруг возникла импульсная помеха или замирания, которые повредили на некоторое время процесс передачи, и потерялся большой кусок информации. В среднем на блок приходится одна, две ошибки, а в нашем примере потерялся целый блок, включая информационные и проверочные биты. Сможет ли помехоустойчивый код исправить такую ошибку? Эта проблема решаема за счет перемежения.
Пример блочного перемежения:

На картинке, всего 5 блоков (с 1 по 25). Код работает исправляя ошибки в рамках одного блока (если в одном блоке 1 ошибка, код его исправит, а если две то нет). В канал связи отдается информация не последовательно, а в перемешку. На выходе кодера сформировались 5 блоков и эти 5 блоков будем отдавать не по очереди а в перемешку. Записали всё по строкам, но считывать будем, чтобы отправлять в канал связи, по столбцам. Информация в блоках перемешалась. В канале связи возникла ошибка и мы потеряли большой кусок. В процессе приема, мы опять составляем таблицу, записываем по столбцам, но считываем по строкам. За счет того, что мы перемешали большое количество блоков между собой, групповая ошибка равномерно распределится по блокам.
