Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
8.2. ПРИНЦИПЫ ПОСТРОЕНИЯ КОРРЕКТИРУЮЩИХ КОДОВ8.2.1. Классификация корректирующих кодов. Для коррекции ошибок нераврюмерные коды почти не применяют, поэтому в дальнейшем рассматриваются только равномерные корректирующие коды. Их общая классификация приведена на рис. 8.2. Корректирующие коды делятся на два больших класса: блочные и непрерывные. Кодовая последовательность блочных кодов состоит из отдельных кодовых комбинаций (блоков), которые кодируются и декодируются независимо. Непрерывные коды представляют непрерывную последовательность кодовых символов, ее разделение на отдельные кодовые комбинации не производится. Блочные и непрерывные коды бывают разделимые и неразделимые. В разделимых блочных кодах информационные и проверочные символы занимают всегда одни и те же определенные позиции (разряды). Обозначают эти коды как Среди разделимых кодов выделяют систематические и несистематические. Систематическими кодами называют
Рис. 8.2. Классификация корректирующих кодов Такое формирование кодовых комбинаций существенно упрощает техническую реализацию устройств кодирования и декодирования — кодеков. Поэтому систематические коды являются одними из наиболее распространенных. Так как новую разрешенную кодовую комбинацию можно получить линейным преобразованием двух других разрешенных комбинаций, то такие коды часто называют линейными. Подклассами систематических кодов являются коды Хемминга и циклические коды, например, коды Боуза-Чоудхури-Хоквингема. По установившейся традиции ряд подклассов корректирующих кодов обозначают фамилиями тех ученых, которые впервые предложили и исследовали тот или иной вид кодирования. Особенности кодов этих подклассов будут отмечены в дальнейшем. 8.2.2. О технической реализации корректирующего кодирования. Из основной теоремы Шеннона для каналов с шумами следует, что может быть обеспечена сколь угодно малая вероятность ошибочного приема при эффективности использования пропускной способности канала, близкой к единице (см. § 5.6). Для этого в симметричном канале без памяти при больших необходимо применять случайный выбор разрешенных Однако практически такое случайное корректирующее кодирование неосуществимо, так как для хранения в памяти декодера всех разрешенных комбинаций при 8.2.3. Принципы построения линейных кодов. Основным принципом построения линейных кодов является отыскание таких процедур, которые позволяют при кодировании получать все разрешенные кодовые комбинации путем конечного числа несложных линейных преобразований одной или В линейных систематических кодах разрешенные комбинации получают путем суммирования по модулю 2 различных сочетаний «сходных комбинаций. Проверочные символы получают так же, как результат суммирования по модулю 2 определенного числа информационных символов. Обнаружение ошибок основано на проверке соответствия тех проверочных символов, которые получены из принятых информационных символов, с соответствующими проверочными символами, непосредственно принятыми. Если ошибка есть, суммирование по модулю 2 проверочного символа, полученного в результате суммирования информационных символов и принятого дает единицу. Эта операция, выполненная для всех проверочных символов, даст в результате вектор ошибок — синдром кодовой комбинации. Нулевой синдром соответствует случаю отсутствия ошибок. Для исправления ошибок каждому ненулевому синдрому «приписывают» наиболее вероятные для данного канала ошибки и при появлении ненулевого синдрома декодер исправляет приписанные к нему ошибки. Если кодовая комбинация содержит 8.2.4. Условия формирования разрешенных кодовых комбинаций. В линейном коде сумма по модулю 2 любого конечного числа разрешенных кодовых комбинаций также является разрешенной кодовой комбинацией. Поэтому, выбрав
разрешенных кодов комбинаций. Чтобы каждое сочетание порождало новую разрешенную комбинацию и чтобы в конечном итоге их общее число равнялось числу, определяемому (8.8), необходимо выполнить следующие пять условий: исходные комбинации должны выбираться различными; нулевая комбинация (комбинация, состоящая из одних нулей) не должна выбираться как исходная; исходные кодовые комбинации должны быть линейно-независимы; вес каждой исходной комбинации должен быть не менее Общие методы синтеза оптимальных линейных кодов еще не созданы, но ряд оптимальных кодов при малых значениях 8.2.5. Формирование проверочных разрядов. Для линейных кодов любой проверочный разряд
где (1.19). Результат операции (8.9) может быть равен 0 или 1, так как нулевая кодовая комбинация в любом линейном коде также является разрешенной. 8.2.6. Обнаружение и исправление ошибок линейными кодами. Обнаружение ошибок основано на проверке условия (8.9). Из принятых проверочных символов
Если для всех Процедуры формирования проверочных символов из информационных и определения синдромов с помощью линейных преобразований (8.9), (8.10), получения всех разрешенных комбинаций из 8.2.7. Линейные коды (7.4). Эти коды называют кодами Хемминга, который впервые построил и исследовал характеристики кодов (7.4), обнаруживающих две и исправляющих одну ошибку. Выберем матрицу коэффициентов в (8.9) в виде
тогда пятый, шестой и седьмой проверочные символы каждой кодовой комбинации выразятся через ее информационные символы следующим образом:
Код имеет следующие характеристики:
Одна из передаваемых кодовых комбинаций имеет вид 0010110, где первые три символа являются проверочными, а последующие четыре — информационными. Обратная запись комбинации показывает, что первыми принимают информационные символы для того, чтобы из них успеть образовать проверочные символы по правилу (8.9), сравнить их с принятыми проверочными по правилу (8.10) и получить синдромы для каждой кодовой комбинации. Синдром
где Таблнца 6 (см. скан) В первом синдроме не совпадают Таким образом, сущность линейного корректирования ошибок заключается в том, что каждому синдрому приписывают наиболее вероятные ошибки, по полученным кодовым комбинациям вычисляют синдромы и по номеру синдрома исправляют «приписанные» к нему ошибки. 8.2.8. Циклические коды. Существенным недостатком линейных кодов является необходимость выбора исходных разрешенных комбинаций, проверки условий формирования разрешенных комбинаций, запоминания коэффициентов называемые регистры сдвига, и сумматоров по модулю 2. Цикл является одной из наиболее распространенных операций в вычислительной технике. Сущность циклической перестановки заключается в том, что последний символ кодовой комбинации занимает место первого, первый — второго и т. д. до тех пор, пока предпоследний символ не займет место последнего. Если циклической перестановке подвергалась разрешенная кодовая комбинация, то в результате этой операции появляется новая разрешенная комбинация. Теория циклических кодов основана на методах высшей алгебры. (С математической точки зрения циклический код является идеалом в линейной коммутативной алгебре полинома Циклическая перестановка рассматривается как умножение
поэтому полиномы Кодеры и декодеры циклических кодов строят на основе регистров сдвига, охваченных обратными связями, и сумматоров по модулю 2. Разрешенные кодовые комбинации получают из одной исходной, символами которой являются коэффициенты порождающего полинома. Сначала выполняют 8.2.9. Циклические коды (7.4). Покажем, как линейные коды (7.4) (см. п. 8.2.7) могут быть получены с помощью цикла и как строят циклические кодеры и декодеры. Теперь уже коэффициенты
В том, что (8.15) является порождающим полиномом, нетрудно убедиться, выполнив деление
Так как деление выполнено без остатка, то
является проверочным для этого кода. Произведение
Выберем исходную кодовую комбинацию
Выполнив цикл один раз, получим
второй раз —
третий раз —
где Важным свойством циклического кода является то, что каждая разрешенная кодовая комбинация делится без остатка на производящий полином. Это свойство используют для обнаружения и исправления ошибок. Выполнив деление принятой комбинациинации на производящий полином, сразу же можно выяснить, есть ошибки или нет. Если есть остаток от деления, он свидетельствует о наличии ошибок, но не указывает, какие ошибки. Таблица 7 (см. скан) Чтобы найти ошибочно принятые символы и исправить их, используют алгоритм исправления ошибок, который включает следующие операции: - принятую комбинацию делят на производящий полином, - определяют вес — если — если — если в результате первого циклического сдвига влево принятой комбинации и деления полученной комбинации на порождающий полином вес нового остатка — когда вес остатка стал равным Кодер кода (7.4). Структурная схема кодера представлена на рис. 8.3. Триггеры (триггерные ячейки) и сумматоры по модулю 2 обозначены в соответствии с ГОСТ 2.743-72 «Обозначения условные графические в схемах. Двоичные логические элементы». Действие триггерной ячейки заключается в том, что при каждом воздействии на ее вход элемента кодового сигнала (О или 1) она изменяет свое состояние на противоположное. Если в ячейке содержится символ (0) (ячейка находится в нулевом состоянии), то при появлении на ее входе символа 1 она переходит в состояние 1, а символ 0 появляется на ее выходе. Изменение состояния ячейки называют тактом или шагом. Новое состояние ячейка сохраняет до следующего шага. Сумматор по модулю 2 на каждом такте выдает суммарный сигнал 0 или 1 в зависимости от того, какие поступают входные сигналы. Таблица 8 (см. скан)
Рис. 8.3. Схема кодера кода (7.4) Рассмотрим принцип работы циклического кодера. Предположим, что с эффективного кодера поступает последовательность информационных сигналов 1001, соответствующая кодовой комбинации Декодер кода (7.4). Структурная схема декодера представлена на рис. 8.4. Его главное назначение — обнаруживать две и исправлять одну ошибку. Основная задача декодера — определить место ошибочного символа. Все остальные операции — само исправление ошибки, устранение проверочных символов и выдача на эффективный декодер информационных сигналов — являются более простыми. Схема рис. 8.4 отражает все основные особенности построения декодеров. Она включает буферный регистр, объем памяти которого равен
Рис. 8.4. Схема декодера кода (7.4) Декодер работает следующим образом. Поступающие с демодулятора Если синдром ненулевой, то хотя бы один из триггеров декодирующего регистра не находится в нулевом состоянии, что указывает на ошибку. Дешифратор синдромов обнаруживает ошибку, а также разряд ошибки и посылает в выходной сумматор буферного регистра сигнал «1» на соответствующем такте для исправления ошибки. Так как на время анализа синдрома имеет место задержка на несколько тактов, то при непрерывном поступлении на декодер принимаемых комбинаций предусматривается их запоминание на время задержки. После завершения анализа переключатель Таблица 9 (см. скан) Для иллюстрации конкретных особенностей работы декодера рассмотрим процесс декодирования для двух случаев: когда ошибок нет и когда они есть (табл. 9). Предположим, что принятой кодовой комбинацией является комбинация Предположим, что в принятой комбинации Декодер аппаратурно реализует общий алгоритм исправления ошибок, рассмотренный ранее. Покажем это. Разделив принятую кодовую комбинацию на образующий полином с учетом суммирования по модулю 2, получим
Остаток имеет вес
Просуммировав последнюю кодовую комбинацию с остатком, получим 1110100. Выполнив циклический сдвиг этой комбинации вправо на три разряда, получим исправленную кодовую комбинацию 1001110. Следовательно, для циклических кодов алгоритмы кодирования и декодирования относительно просто аппаратурно реализуются с помощью регистров и сумматоров: большие объемы памяти кодера и декодера не требуются. 8.2.10. Коды Боуза-Чоудхури-Хоквингема (коды БЧХ) - разработаны для увеличения минимального кодового расстояния и повышения корректирующей способности. Длина кодовой комбинации в них Рассмотрим код
Число избыточных символов
Циклические коды БЧХ получили применение в аппаратуре передачи данных. Существует рекомендация МККТТ
Многочисленные испытания кодов БЧХ подтвердили их высокую эффективность: при передаче данных по коммутируемым каналам телефонной сети общего пользования с 8.2.11. Выбор длины информационной части кодовых комбинаций при обмене информацией между ЦВМ. ЦВМ обычно обмениваются машинными словами
где
где Поэтому на практике прибегают к укороченным циклическим кодам, которые получают из полных, используя для передачи информации только те комбинации полного кода, которые содержат слева 8.2.12. При мажоритарном декодировании каждый информационный символ кодовой комбинации можно выразить через другие символы с помощью различных линейных соотношений и эти соотношения использовать для повышения верности. Из каждого соотношения определяют предполагаемое значение информационного символа, а окончательное решение о его значении принимается по большинству одинаковых символов для всех соотношений (методом голосования). Такая процедура легко реализуется с помощью регистров сдвига и сумматоров, она заметно повышает верность по отношению к обычному декодированию. 8.2.13. Код с постоянным весом относится к неразделимым несистематическим кодам. Разрешенными в нем являются кодовые комбинации, которые содержат определенное число единиц, одинаковое для всех комбинаций. МККТТ рекомендован код № 3 для передачи телеграфных сообщений по коротковолновым радиоканалам, которые обладают значительной асимметрией. Этот код содержит 35 разрешенных комбинаций длиной В последнее время предпочтение отдается циклическим кодам, так как при использовании кодов с постоянным весом резко усложняется аппаратура и возрастает стоимость кодеков из-за неразделимости информационной и проверочной части в комбинациях. 8.2.14. В кодах Бергера, которые являются разделимыми, минимальное кодовое расстояние Они также предназначены в основном для асимметричных каналов. Проверочные разряды кода Бергера представляют собой запись в двоичной форме числа единиц в информационной части кодовой комбинации. Аналогично формируются проверочные символы при декодировании. Коды Бергера обладают такой же корректирующей способностью, что и код № 3, но имеют важное достоинство — из-за разделимости кодовых комбинаций существенно упрощается построение кодеков. 8.2.15. Непрерывные коды. В простейшем непрерывном (рекуррентном) коде информационные символы а чередуются с проверочными
где
Коды этого класса называют кодами Финка-Хагельбергера.
Рис. 8.5. Схема кодера непрерывного кода
Рис. 8.6. Схема декодера непрерывного кода Рассмотрим кодирование и декодирование для такого кода. Структурная схема кодера представлена на рис. 8.5. Синхронный ключ Цепной код (8.23) позволяет исправить все одиночные ошибки при условии, что между любыми двумя ошибочно принятыми имеется по крайней мере три правильно принятых сигнала. Используя более совершенные коды и алгоритмы декодирования, можно исправлять групповые ошибки. Контрольные вопросы(см. скан) (см. скан)
|
1 |
Оглавление
|