287
А.И. Королев КОДЫ И УСТРОЙСТВА ПОМЕХОУСТОЙЧИВОГО КОДИРОВАНИЯ ИНФОРМАЦИИ Минск 2002

Коды и устройства помехоуст. кодир.bsuir-helper.ru/sites/default/files/2012/06/27/other/Kody_i_ustroystva_pomehoust...кодирования в системах

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

  • А.И. Королев

    КОДЫ И УСТРОЙСТВА ПОМЕХОУСТОЙЧИВОГО

    КОДИРОВАНИЯ ИНФОРМАЦИИ

    Минск 2002

  • УДК 621.391.14:621.394

    К38

    Рецензент:

    Белоусов В.П. – кандидат технических наук

    Королев А.И.

    К38. Коды и устройства помехоустойчивого кодирования информации. – Мн.:

    Бестпринт , 2002. – с.286

    ISBN 987-7336-77-1

    Рассматриваются способы задания групповых линейных блоковых и

    сверточных кодов, а также принципы построения кодеков данных кодов, реа-

    лизующие алгебраические и вероятностные алгоритмы декодирования. Боль-

    шое внимание уделяется вопросам аппаратурной реализации кодеков цикличе-

    ских и сверточных кодов корректирующие как независимые, так и пакетные

    ошибки.

    Для инженерно-технических работников и студентов электро и радио-

    технических вузов.

    ISBN 987-7336-77-1 © А.И. Королев, 2002

  • ПРЕДИСЛОВИЕ

    В настоящие время обеспечение высокой достоверности передачи, обра-

    ботки и хранения информации является актуальной задачей теории и практики

    электросвязи. Эффективным способом решения данной проблемы является ис-

    пользование избыточного (помехоустойчивого) кодирования информации.

    Преднамеренное введение избыточной информации в передаваемые информа-

    ционные сообщения обеспечивает возможность обнаружения и исправления

    ошибок на приемной стороне.

    Математическая теория построения избыточных (помехоустойчивых) ко-

    дов в настоящие время имеет большие достижения. Однако существует боль-

    шой разрыв между уровнем теоретических достижений теории помехоустой-

    чивого кодирования и уровнем результатов практического использования дан-

    ной теории. Широкому применению результатов теории помехоустойчивого

    кодирования в современных системах связи, обработки и хранения информации

    следует считать отсутствие достаточно простых решений сложных теоретиче-

    ских достижений теории помехоустойчивого кодирования.

    В данной книге кратко излагается теоретические сведения о групповых

    линейных блоковых и сверточных кодах, а также рассматриваются вопросы

    разработки структурных и функциональных схем кодеков данных кодов, реали-

    зующих различные алгоритмы декодирования.

    Книга будет полезна студентам электро и радиотехнических вузов, а так-

    же инженерно-техническому персоналу, разрабатывающие и обслуживающие

    системы передачи, обработки и хранения информации.

  • СПИСОК ОСНОВНЫХ СОКРАЩЕНЫХ ОБОЗНАЧЕНИЙ

    АС – анализатор синдрома

    АСП – анализатор синдромной последовательности

    АЧХ – амплитудно-частотная характеристика

    АВ – алгоритм Витерби

    АФ – алгоритм Фано

    БАС – блок анализатора синдрома

    ДШ – дешифратор синдрома

    ДФСК – диффузные сверточные коды

    ДФССК – диффузные самоортогональные сверточные коды

    КРВ-1/k0 – коммутатор распределения ветвей (подпотоков): одного потока дво-

    ичных символов на k0 (k0≥2) подпотоков

    КРВ-1/n0 – то же, на n0 (n0=k0+1) подпотоков

    КОВ-k0/1 – коммутатор объединения k0 ветвей (подпотоков) в один поток дво-

    ичных символов

    КОВ-n0/1 – то же, n0 подпотоков в один поток двоичных символов

    ПД – пороговое декодирование

    ПИ – передача информации

    ПФ – полосовой фильтр

    СК – сверточный код

    ССК – самоортогональной сверточный код

    СБЛК – систематический блоковый линейный код

    ФПСк(д) – формирователь проверочных символов (к – кодер д - декодер)

    ФЧХ – фазо-частотная характеристика

    ЦК – циклический код

  • 1. ВВЕДЕНИЕ В ИСТОРИЮ РАЗВИТИЯ ТЕОРИИ И ПРАК-ТИКИ ПОМЕХОУСТОЙЧИВОГО КОДИРОВАНИЯ. ХА-

    РАКТЕРИСТИКИ КОДОВ. КЛАССИФИКАЦИЯ КОДОВ 1.1. Направления исследований помехоустойчивого кодирования и их

    краткая характеристика

    История возникновения и развития теории и практики избыточного

    (помехоустойчивого) кодирования информации, с целью коррекции ошибок и тем

    самым обеспечения требуемой достоверности передачи информации (ПИ)

    началась с 1946 г., а именно, после публикации монографии американского

    ученого Шеннона, а именно «Работы по теории информации и кибернетике».

    В данной работе Шеннон доказал, что если скорость ПИ (В, бит/с) меньше

    пропускной способности какала связи (С, бит/с), то есть В < С, то можно

    подобрать такой избыточный (помехоустойчивый) код и способ кодирования

    информации данным кодом (алгоритм декодирования не рассматривался), при

    котором может быть обеспечена сколь угодно малая вероятность ошибочного

    приема информации. Шеннон также показал в этой работе, что построение

    каналов связи с очень хорошими характеристиками является дорогостоящим

    мероприятием, а экономически выгоднее использовать избыточное, т.е.

    помехоустойчивое кодирование. Однако Шеннон не указал как построить

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

    что результаты работы Шеннона базировались на работах советских ученых:

    Хинчина, Колмогорова, Харкевича, Варшамова и др.

    Установим, что понимается под термином «пропускная способность канала

    связи» и «скорость ПИ». Суть понятий в следующем:

    - пропускная способность канала связи (С) – определяется как максимальное

    число переданных двоичных единиц (двоичных символов, битов) в секунду при

    заданной или установленной вероятности ошибочного приема двоичного символа

    (бита), которая в принципе может быть сколь угодно малой;

    - скорость ПИ (В) – это реально переданное число двоичных символов (битов)

  • в установленную единицу времени (в секунду) и при заданной равной

    вероятности ошибочного приема двоичного символа (бита).

    Пропускная способность канала связи и скорость передачи информации

    измеряются в бит/с, Кбит/с, Мбит/с и Гбит/с.

    При неограниченно малой вероятности ошибок на двоичный символ

    скорость ПИ всегда меньше пропускной способности канала связи, т.е. В

  • от вводимой избыточности. В честь больших заслуг Хэмминга перед теорией и

    практикой помехоустойчивого кодирования параметры d и do носят название

    соответственно хэмминговое и минимальное хэмминговое расстояние.

    В 1949 г. Абрамсон предложил ещё два блоковых кода, а именно (n,k,do) =

    (15,10,5) и (n,k,do) = (10,5,5); при построении данных кодов в основном

    использовалась теория помехоустойчивого кодирования, предложенная

    Хэммингом. Данные коды, как и коды Хэмминга, оказались очень слабыми по

    корректирующей способности по сравнению с обещанными Шенноном кодами.

    Несмотря на усиленные исследования до конца 50-х годов (до 1959 г.) не было

    найдено и построено лучшего класса кодов, чем коды Хэмминга и Абрамсона. В

    эти же годы, а точнее с 1949 по 1959 гг., без какой-либо общей теории были

    открыты многие блоковые коды и неблоковые коды, в том же числе, так

    называемые непрерывные или цепные коды; данные коды были предложены в

    1954 г. одновременно Элайсом и Финком.

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

    конце 50-х годов и в начале 60-х годов, а именно, когда в 1959 г. Хоквингейм, а в

    I960 г. Боузе и Чоудхури предложили теорию построения линейных блоковых

    кодов, корректирующие как независимые ошибки, так и пакетные ошибки. Эти

    коды получили название БЧХ-кодов.

    В 1960-61 гг. Рид и Соломон независимо друг от друга разработали теорию

    построения линейных блоковых кодов, корректирующие пакетные ошибки и

    группирующиеся пакеты ошибок, при этом кодирование информации может быть

    выполнено как в двоичном поле Галуа GF(2), так и в недвоичном поле Галуа

    GF(2m), m≥2. Эти коды получили название кодов Рида-Соломона или РС-кодов.

    Несмотря на то, что коды БЧХ и PC-коды оставались очень важными среди

    всех кодов, общая теория построения блочных групповых кодов продолжала

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

    Так в 1964 г. Прейндж предложил теорию построения циклических кодов

    (ЦК) существенно упростивших как алгоритм кодирования, так и алгоритм

  • декодирования групповых кодов. В 1966 г. Файр предложил теорию построения

    ЦК, корректирующих одиночные пакеты ошибок произвольной кратности

    (длины), измеряемой в двоичных символах. В 1967 г. Форни, Блох и Зяблов

    разработали теорию построения каскадных кодов, корректирующие

    одновременно как независимые ошибки, так и пакетные ошибки.

    Второе направление исследований по помехоустойчивому кодированию

    носило вероятностный характер. Первоначально исследования были связаны с

    оценками вероятностей ошибки для лучших классов блоковых кодов; хотя эти

    лучшие коды ещё не были открыты. Эти исследования проводились с целью

    понять помехоустойчивое кодирование и декодирование с вероятностной точки

    зрения.

    Данные исследования привели к открытию алгоритмов последовательного

    декодирования применительно к классу древовидных кодов, которые относятся к

    классу сверточных кодов (СК), которые в свою очередь, являются дальнейшим

    развитием непрерывных кодов.

    В 1967 г. Витерби разработал для СК эффективный вероятностный алгоритм

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

    С 1970 г. эти два направления исследований вновь стали пересекаться , в том

    плане, что теорией построения СК занялись математики-алгебраисты,

    представившие теорию построения СК в новом математическом изложении.

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

    Шеннон; были предложены два способа построения помехоустойчивых кодов

    (первый способ - Юстессена, а второй – способ Гоппы), позволяющих строить

    классы кодов, которые одновременно могут иметь очень большую длину блока

    кодовой последовательности и очень хорошие параметры кода (R,r,d0). Но оба

    этих способа построения кодов имеют ограниченное практическое применение в

    виду их высокой сложности реализации.

  • 1.2. Области применения помехоустойчивого кодирования

    Развитие помехоустойчивого кодирования первоначально стимулировалось

    задачами электросвязи, а поэтому многие термины теории помехоустойчивого

    кодирования взяты из теории электросвязи. Однако в настоящее время

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

    техники. Например, в системах обработки информации (в системах ЭВМ), в

    устройствах памяти ЭВМ, в системах записи на магнитные ленты (МЛ), диски

    (МД), компакт-диски, в БИС и СБИС и т.д. Помехоустойчивое кодирование

    используется в системах управления ракетами, в системах сжатия информации и

    т.д.

    Применение помехоустойчивого кодирования к задачам электросвязи в

    настоящее время имеет самый различный характер. Например, помехоустойчивое

    кодирование может использоваться для получения надежной связи даже тогда,

    когда мощность принимаемого сигнала близка к мощности тепловых шумов.

    Кроме того, поскольку электромагнитный спектр все больше и больше

    заполняется сигналами, то помехоустойчивое кодирование может обеспечить ПИ

    с заданным качеством (достоверностью) при наличии межсимвольных искажений

    (МСИ). В военных системах связи помехоустойчивое кодирование часто

    применяют для защиты информации против преднамеренных помех. Очень

    важным является применение помехоустойчивого кодирования в спутниковых

    системах связи (ССС), так как помехоустойчивое кодирование позволяет

    уменьшить Рс/Рш на входе приемника спутника связи (СС) и тем самым

    уменьшить вес спутника связи (СС) и, следовательно, уменьшить стоимость

    запуска СС, либо оставив вес СС прежним можно увеличить его функциональные

    возможности.

    Очень важным является применение помехоустойчивого кодирования в

    системах и сетях ЭВМ, так как в таких системах и сетях даже одиночные ошибки

    могут нарушить программу вычислений.

    Очень важным и эффективным является применение помехоустойчивого

  • кодирования в системах записи информации на МЛ, МД, так как это позволяет

    увеличить плотность записи информации на 1 мм2 площади носителя информации

    и, следовательно, записать больший объем информации.

    Эффективное применение помехоустойчивое кодирование может найти в

    системах управления (автопилоты, цифровые системы управления ракетами,

    самолетами и т.д.), в радарных системах как воздушного, так и наземного

    базирования, в медицинских системах, в локальных сетях (ЛС) и т.д.

    1.3. Современные направления развития теории и практики помехо-

    устойчивого кодирования

    В каком направлении надо сейчас работать исследователю в теории и

    практике помехоустойчивого кодирования? В соответствии с [1,2] ответ таков –

    это зависит от выбранного критерия оценки эффективности помехоустойчивого

    кодирования.

    Так если взять в качестве критерия минимальную сложность алгоритмов

    кодирования и декодирования кодов и их реализацию и, следовательно,

    минимальную стоимость, то хорошим кодом может считаться помехоустойчивый

    код, имеющий "хороший" алгоритм декодирования (минимальную сложность

    алгоритма, минимальную задержку информации при декодировании, коррекцию

    ошибок больше теоретической корректирующей способности и т.д.). Инженер-

    практик не будет интересоваться помехоустойчивым кодом, обеспечивающим

    максимальное значение do, если неизвестен хороший алгоритм декодирования.

    "Хорошие" помехоустойчивые коды нуждаются в хороших декодерах, а

    "хорошие" алгоритмы декодирования найти трудно. Найти "хороший" алгоритм

    декодирования сейчас также важно, как и найти "хороший" код.

    Поиск теоретиками новых кодов, допускающих использование известных

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

    поиск новых алгоритмов декодирования для известных кодов: (последний вывод

    является спорным).

  • В общем можно отметить, что в теории и технике (практике)

    помехоустойчивого кодирования главную роль играют две задачи:

    1) построение кода, разработка способа кодирования и его реализация;

    2) аналогично, по отношению алгоритма декодирования кода.

    В первом случае при заданных n и k построить помехоустойчивый код,

    обеспечивающий выполнение выбранных критериев качества помехоустойчивого

    кодирования.

    Во втором случае - разработать алгоритм декодирования, обеспечивающий

    максимальный энергетический выигрыш кодирования (ЭВК) при минимальной

    сложности реализации декодера.

    1.4. Места включения кодера и декодера в тракте передачи данных

    Традиционно основные функции цифровой системы связи или тракта

    передачи данных (ПД) принято подразделять в соответствии со следующей

    структурной схемой(рис.1.1):

    Рис.1.1. Структурная схема тракта передачи данных

    Данные, поступившие от источника информации (ИИ), прежде всего,

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

    представления данных (сжатие информации). Это промежуточное представление

    реализуется последовательностью символов, которая называется кодовым словом

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

    последовательность символов кодового слова источника в другую

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

    кодер канала

    Пол.Ин. декодер канала

    декодер источн. DEMOD MOD

    непрерыв. кан. св.

    цифровой тракт ПД

    канал ПД

    ДКС

  • последовательность, называемую кодовым словом канала. Кодовое слово канала

    представляет собой новую более длинную последовательность с большей чем у

    кодового слова источника избыточностью. Каждый символ кодового слова канала

    (кодовой последовательности) может быть представлен либо битом, либо группой

    бит. Далее модулятор (MOD) преобразует каждый символ кодовой

    последовательности канала в соответствующий аналоговый сигнал из конечного

    множества допустимых аналоговых сигналов. Последовательность аналоговых

    сигналов передаётся по непрерывному каналу связи, где сигналы подвергаются

    воздействию соответствующих помех, зависящих от типа непрерывного канала

    связи (проводные каналы связи, РРЛ, ССС и т.д.). На приемной стороне обработка

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

    вопросы, касающиеся только кодера и декодера.

    1.5. Сущность принципа помехоустойчивого кодирования

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

    обнаружить ошибки необходимо использовать либо статистические свойства

    сообщения, либо ввести дополнительную (избыточную) информацию в

    передаваемое сообщение.

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

    образом, избыточной информации в передаваемые сообщения.

    Простым методом введения избыточности в передаваемые сообщения

    является метод "γ" (γ≥3) - кратной передачи либо каждого информационного

    символа, либо всего блока в целом. Решение о каждом принятом

    информационном символе принимается по большинству одинаковых символов.

    Например:

    подсчет двоичных символов одинако-вой полярности или знака

    1 0 1 1 0 – передаваемое сообщение, 1 0 0 1 0 – принятое сообщение при первой передаче, 1 0 1 0 0 – повторная передача, 0 0 1 1 0 – третья передача, 1 0 1 1 0 – восстановленное сообщение.

    Таким образом, в результате 3-х кратной передачи блока из 5-ти двоичных

  • символов была обнаружена и исправлена одиночная ошибка (3-й двоичный

    символ). Достоинством такого метода кодирования информации является его

    простота, а недостатком высокая избыточность информации; r = 66%.

    1.6. Определение кода и способа помехоустойчивого кодирования.

    Основные характеристики кодов

    Существует и используется много определений коду и помехоустойчивому

    кодированию. Например, код есть форма представления информационного

    сообщения, не зависящая от его физической сущности или код представляется

    (выражается) совокупностью кодовых символов, между которыми искусственно

    введены корреляционные связи или код есть конечное множество кодовых

    последовательностей (кодовых слов), построенных по одному и тому же

    алгоритму или правилу. Помехоустойчивое кодирование представляет собой

    процесс преобразования передаваемых информационных символов по

    определенному алгоритму или по определенным правилам, и в результате чего

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

    передаваемые информационные сообщения. В общем помехоустойчивое

    кодирование основывается на введении избыточной информации в передаваемые

    информационные сообщения. В результате помехоустойчивого кодирования

    формируются кодовые последовательности (кодовые слова, кодограммы)

    отображающие передаваемые информационные сообщения, которые условно

    делятся на разрешенные и запрещенные и по которым затем по определенным

    алгоритмам обнаруживаются и корректируются ошибочные информационные

    символы.

    Основными характеристиками помехоустойчивых кодов являются [1...4]:

    1. Основание кода (q) - определяется числом (количеством) различных

    единичных элементов (символов), используемых при построении кода и кодовых

    последовательностей. Основание кода чаще всего обозначается через "q" и при

    этом:

  • )kn( −=l

    %100*)n/(n/)kn(r l=−=

    - если q=2, т.е. используются двоичные символы "1" и "0", то такие коды

    называются двоичными и кодирование производится в двоичном поле Галуа, т.е.

    GF(q)=GF(2);

    - если q>2, например, q=2m, m≥2, то такие помехоустойчивые коды называются

    недвоичными и кодирование информации производится в недвоичном поле

    Галуа, т.е. GF(qm)=GF(2m);

    2. Длина кодовой последовательности (n) - равна количеству двоичных

    символов (бит) в данной кодовой последовательности. Длину кодовой

    последовательности принято обозначать через "n": минимальная длина кодовой

    последовательности n=2 двоичным символам (нижний предел); верхний предел

    "n" в принципе может достигать тысячи и десятки тысяч двоичных символов;

    3. Количество информационных символов (k) - это количество двоичных

    символов несущих полезную информацию; количество информационных

    символов в кодовой последовательности принято обозначать через "k" и их число

    может быть равным k=l,2,.. и т.д. двоичных символов;

    4. R=k/n скорость передачи кода, характеризует количество избыточных

    символов приходящиеся на один информационный символ. Чем больше R, т.е.

    R→1 (R всегда меньше 1), тем эффективнее помехоустойчивый код, так как

    передается меньше избыточной информации;

    5. Избыточность помехоустойчивого кода делится на:

    - абсолютную избыточность двоичных символов;

    - относительную избыточность ;

    6. Вес кодовой последовательности (wк.посл.) – определятся количеством

    ненулевых символов, входящих в кодовую последовательность. Например, пусть

    n=10 двоичных символов, а две кодовые последовательности данного

    помехоустойчивого кода имеют следующую структуру: FI(x)= 1001110010 и

    F2(X)=0010101100, то вес FI(x) wI=5, a F2(x) – w2=4;

    7. Классификация кодовых последовательностей: если заданы или известны

    такие характеристики помехоустойчивого кода как n и k, то можно определить:

  • - Кобщ=2n - общее количество кодовых последовательностей,

    - Краз=2k - количество разрешенных кодовых последовательностей,

    - Кзапр=2l - количество запрещенных кодовых последовательностей.

    В принципе из общего количества Кобщ=2n кодовых последовательностей

    некоторые кодовые последовательности будут иметь одинаковый вес, а их общее

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

    необнаруживаемые ошибки данным кодом;

    8. Кодовое расстояние (d) - равно (соответствует) количеству позиций которыми

    разнятся (отличаются) две сравниваемые кодовые последовательности;

    сравнивание кодовых последовательностей производится посимвольно (побитно)

    путём суммирования по модулю два, например,

    1001110010 Fi(x) ⊕ Fj(x)= ⊕ 0010101100 d=1 11 1111 =7, т.e. d =7.

    Так как общее количество кодовых комбинаций Кобщ=2n, то общее число

    кодовых расстояний может быть более чем 2n/2, среди которых d может быть как

    максимальным, так и минимальным.

    Хэмминг доказал, что не максимальное, а минимальное кодовое расстояние

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

    кодовое расстояние обозначается как do или dx (хэмминговое расстояние) и равно

    наименьшему значению d из всей их совокупности. Например, d1=7, d2=5, d3=8,

    …, di=3, di+1=4, …, dj=9, …, d0=dx=3.

    Замечание: с позиции теории кодирования dx показывает, сколько символов в

    кодовой последовательности надо исказить, чтобы перевести ее в другую

    кодовую последовательность. Кодовое расстояние может обозначаться как

    dist(Fi,Fj), например, dist(0122,2102)=2.

    Хэмминговое расстояние (dx) чаще всего используется при передаче

    информации в дискретном канале связи, т.е. при передаче информации на

    видеочастоте.

    В канале связи с многократной ФМ (МФМ) хэмминговое расстояние не в

  • полной мере характеризует удаленность двух сигналов из-за того, что, например,

    пары фаз "0", "π/2" и "0", "3π/2" дают одинаковое фазовое различие, равное π/2.

    Для канала связи с МФМ используется расстояние Ли, ∑−

    =

    =1n

    0iiЛ ad

    измеряемое как , где аi – разность значений символов, находящихся в i-позиции

    двух сигналов одинаковой длины "n": ai = a′i , при 0 ≤ ai ≤ (q+1)/2 и a′i = q-ai , при

    (q+1)/2 < аi ≤ q-1.

    Например, для двух кодовых слов с набором фаз символов 0000 и 0, π/2, π,

    3π/2 или после замены фаз числами 000 и 0123, dл=0+1+2+1=4, а dx=3. При q=2 и 3

    значения dл и dх совпадают. Наибольшему расстоянию dл, так же как и dx,

    соответствуют противоположные сигналы с фазами 0000 и ππππ.

    Кроме кодовых расстояний Хэмминга (dx) и Ли (dл) в теории кодирования

    используются кодовые расстояния Евклида (dЭ) и Бхаттачария (dБ). Кодовое

    расстояние Евклида (dЭ) используется для оценки расстояний двух сигналов

    применительно к непрерывному каналу связи, т.е. при передаче информации по

    непрерывному каналу связи. Кодовое расстояние Бхаттачария (dБ) характеризует

    реакцию канала на передачу различных сигналов, соответствующих ансамблю

    (сигналов) слов помехоустойчивого кода. Далее будем пользоваться только

    хэмминговым расстоянием (dx).

    Определены как нижние, так и верхние границы значений dx:

    - нижние границы устанавливают факт существования помехоустойчивых кодов с таким значением dx;

    - верхние границы определяют максимальное теоретическое значение dx. Из нижних границ наиболее известна и находит широкое применение

    граница Варшамова-Гильберта

    , (1.1)

    где dmin - максимальная величина, удовлетворяющая этому неравенству.

    Для q=2 выражение (1.1) принимает вид

    ∑−

    =

  • . (1.2)

    Из нескольких известных верхних границ хорошие результаты при

    R≥0,5...0,6 дает граница Хэмминга

    , где t = (d0-1)/2. (1.3)

    Если R

  • кодовая последовательность оказывается в ложной части, то считается, что

    принятая кодовая последовательность является ошибочной, а в противном случае

    - истинной или без ошибок; либо ошибки просто не обнаружены кодом.

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

    2k информационных частей, взаимно однозначно соответствующих

    информационным последовательностям, что условно можно представить так:

    Принятое кодовое слово при сопоставлении с кодовым множеством может

    оказаться в одной из его частей: если оно будет в части, соответствующей этому

    слову, например, ξ, то получателю информации выдается истинное слово, а если

    оно попадет в любую другую его часть, например, i, то слово считается ложным и

    его надо исправить, т.е. скорректировать ошибку.

    Если же в этом кодовом множестве выделить три части (групп) кодовых

    последовательностей, например, ξ (ошибок нет), i (есть корректируемые ошибки)

    и γ (некорректируемые ошибки) (рис.1.3),

    Рис.1.3. Условное представление подпространств кодовых последователь-

    ностей: при отсутствии ошибок (ξ ), корректируемые ошибки (i) и

    некорректируемые ошибки (γ)

  • то в этом случае можно обнаруживать кодовые последовательности с

    некорректируемыми ошибками.

    Как уже отмечалось выше, Хэмминг доказал, что корректирующие свойства

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

    Хэмминг доказал следующее: если две кодовые последовательности отличаются

    друг от друга в t (t≥1) позициях (разрядах, символах), а от всех остальных

    кодовых последовательностей этого кодового множества будут отличаться более,

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

    кодовое расстояние должно быть d0≥2*t+1(2).

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

    исправил t ошибок необходимо, чтобы минимальное число позиций которыми бы

    отличались любые две кодовые последовательности рассматриваемого

    помехоустойчивого кода составляло бы d0≥2*t+1(2) позиций.

    Если выполняется такое условие, то помехоустойчивый код может

    исправить 2

    )2(1dt 0исп−

    ≤ ошибочных символов, либо обнаружить tобн≤ d0 –1

    ошибочных двоичных символов; число 2 вычитается при четном значении d0.

    Сказанное последнее можно проиллюстрировать следующими рисунками

    Рис.1.4. Условное расположение кодовых последовательностей для разных

    значений do

    Fj(x), nj

    Fi(x), ni

    d0≥2*t+1(2) а)

    21(2)dt 0исп

    −≤

    tобн≤d0-1 d0≥t+1

    б)

    Fi(x) Fj(x)

    в) Fi(x) Fj(x)

    d0

  • Для первого случая (рис.1.4а) расположения кодовых последовательностей

    следует, что если кодовая последовательность Fi(x) отстоит от кодовой

    последовательности Fj(x) на расстоянии d0 двоичных символов, то это означает,

    что в кодовой последовательности Fi(x) необходимо заменить d0 кодовых

    символов на обратные, чтобы получить кодовую последовательность Fj(x),

    которая заменяла собой бы кодовую последовательность Fi(x).

    Если же две кодовые последовательности будут находиться друг от друга на

    меньшем расстоянии чем d0, т.е. они будут иметь более чем d0 совпадающих

    (одинаковых) кодовых символов, то декодер не обнаружит и не исправит ошибки

    в принятой кодовой последовательности Fi(x); случай (рис.1.4в).

    Если же две кодовые комбинации будут находиться на расстоянии d0≥t+1, то

    декодер может только обнаружить, что принятая кодовая последовательность

    является ошибочной- случай (рис.1.4б).

    Для того, чтобы помехоустойчивый код исправлял tисп ошибок и

    обнаруживал tобн ошибок необходимо, чтобы d0 ≥ tисп + tобн + 1.

    Рассмотрев принятые условные обозначения основных характеристик

    помехоустойчивого кода и их сущность, можно записать общее обозначение

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

    например, так (n,k,d0)=(l5,7,5). Такая запись помехоустойчивого кода говорит о

    многом специалисту знакомому с теорией помехоустойчивого кодирования.

    10. Вероятность ошибочного декодирования группового линейного

    существенно зависит от типа кода, его параметров и типа канала связи. Для

    двоичного симметричного канала связи без памяти вероятность определяется по

    формуле ∑+=

    −=n

    1ti

    inik

    inош

    исп

    q*P*CP . (1.6)

    1.7. Классификация помехоустойчивых кодов К настоящему моменту времени разработано большое количество классов

    помехоустойчивых кодов, которые отличаются принципом построения,

  • основанием кода (q), кодовым расстоянием (d0), избыточностью (r), структурой,

    функциональным назначением, алгоритмами декодирования, способом передачи

    кодовых символов и т.д.

    Для лучшего понимания и практического использования помехоустойчивых

    кодов вводят классификацию кодов, по характерным признакам их отличия.

    Наиболее широко используется следующая структура классификации (рис.1.5).

    1. По форме представления передаваемой информации —

    помехоустойчивый код можно разделить на две группы или на два способа

    представления информации, а именно: семантические коды и элементные

    (цифровые, дискретные) коды.

    Семантические коды - используют короткие комбинации букв,

    обозначающие целые фразы, например, SOS - сигнал опасности, ТТТ - сигнал

    безопасности и т.д., а также сюда входят, так называемые Z-коды и Q-коды,

    которые находят применение в радиосвязи, например, ZSU - ваши сигналы

    неразборчивы, QKM - мне мешают на этой волне и т.д.

    Рис.1.5. Структурная схема классификации помехоустойчивых кодов

  • Элементные (дискретные) коды - характеризуются тем, что каждому символу

    источника присваивается определенное число в заданной системе счисления и

    которое отображается соответствующей кодовой последовательностью,

    например, 10, 00 или 100, 000, 010 и т.д. Здесь элемент "1" и "0";

    2. По основанию кода или по количеству единичных элементов,

    используемых для формирования кодовой последовательности, коды делятся на

    двоичные (т.е. q=2, GF(q)=GF(2)) и недвоичные, когда q>2; GF(2m,m≥2 и q=l;0;

    3. По способу преобразования "k" информационных символов в "n"

    кодовых символов делятся нa блоковые и непрерывные. В блоковых кодах из

    "k" информационных символов формируется "l" проверочных символов и "l"

    проверочных символов совместно c "k" информационными символами образуют

    кодовую последовательность из n=(k+1) кодовых символов (информационные

    символы каждого входного блока не оказывают влияния на формирование

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

    последующих кодовых последовательностей).

    В непрерывных кодах каждый информационный символ может оказывать

    влияние на формирование проверочных символов в течение "m" тактов, где "m" -

    количество ячеек памяти регистра сдвига (RG) кодера. В данных кодах нет

    четкого деления на кодовые последовательности из "n" кодовых символов;

    4. По алгоритму формирования (l) проверочных символов – на линейные

    и нелинейные. В линейных кодах проверочные символы формируются путем

    суммирования по модулю два информационных символов, стоящих на

    определенных позициях. В нелинейных кодах проверочные символы

    формируются путем суммирования информационных символов по модулю

    отличному от два;

    5. По количеству символов в кодовых последовательностях – на

    равномерные и неравномерные коды. В равномерных кодах все кодовые

    последовательности помехоустойчивого кода имеют одинаковую длину, т.е.

    "n"=const. У неравномерных кодов один и тот же помехоустойчивый код может

  • иметь кодовые последовательности с разной длиной, т.е. "n"≠const;

    6. По структуре кодовых последовательностей – на разделимые и

    неразделимые. К разделимым кодам относятся такие помехоустойчивые коды у

    которых есть четкое деление на блоки из "k" информационных символов, l -

    проверочных символов и на кодовые последовательности из "n" символов; такое

    деление справедливо для всех кодовых последовательностей. К неразделимым

    кодам относятся такие коды у которых нет четкого деления на информационные,

    проверочные блоки и на кодовые последовательности;

    7. По способу передачи кодовых символов – на систематические и

    несистематические. В систематических кодах в канал связи первоначально

    передается информационные символы (блок из "k" информационных символов), а

    затем блок из "l" проверочных символов. В систематических кодах сохраняются

    статистические связи между "k" информационными символами данной кодовой

    последовательности. В несистематических кодах нет четкого деления на блоки

    информационных символов и проверочных и, следовательно, нет статистической

    связи между информационными символами и в канал связи кодовые символы

    передаются по "псевдослучайному закону", т.е. может передан(ы) проверочный(е)

    символ(ы), например, два проверочных символа, а затем переданы три

    информационных символа, а затем один проверочный, два - информационных и

    т.д. Примером несистематических кодов являются коды Плоткина и коды с

    постоянным весом (с равным количеством логических "1").

    К систематическим кодам, в первую очередь, относятся двоичные

    равномерные групповые линейные коды БЧХ, Файра, РС-коды, СК и др., которые

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

    которых искажение одной кодовой последовательности ведет к искажению

    других кодовых последовательностей носят название статистических

    систематических помехоустойчивых кодов без синхронизации, а в противном

    случае называются статистическими систематическими помехоустойчивыми

    кодами с самосинхронизацией;

  • 8. По количеству используемых помехоустойчивых кодов – на

    однокаскадные и каскадные. Однокаскадные коды используют только один

    помехоустойчивый код того или иного класса, а в противном случае

    помехоустойчивые коды называются каскадными, которые могут быть 2-х

    каскадные (два кода, например, один тип помехоустойчивого кода - блоковый, а

    второй - СК), 3-х каскадные - три помехоустойчивых кода и т.д.

    Примечание: в теоретической и технической литературе по

    помехоустойчивым кодам применяются другие методики классификации

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

    но только в некоторых деталях.

    1.8. Классификация способов построения и алгоритмов декодирования

    помехоустойчивых кодов

    В соответствии с [1...4] способы построения помехоустойчивых кодов и

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

    (рис.1.6):

    а) б)

    Алгебра-ические

    Арифме-тические

    Геометри-ческие

    Эврести-ческие

    Способы построенияпомехоустойчивых кодов

    Алгебра-ческие

    Неалгеб-раические(вероят-ностные)

    Арифме-тические

    Эвристи-ческие

    Алгоритмы декодированияпомехоустойчивых кодов

    Рис.1.6. Классификация способов построения (а) кодов и алгоритмов (б)

    декодирования кодов

    Алгебраические способы и алгоритмы кодирования и декодирования

    (де/кодирования) кодов реализуются на основе использования элементов

    (принципов, правил) теории Высшей алгебры (групп, колец, матриц,

    суммирование по модулю два и т.д.), комбинаторики и теории вероятностей.

    Достоинства способов: простота способов, алгоритмов и устройств их

  • реализующих, большое число кодов и т.д. Недостаток - сравнительно низкая

    корректирующая способность многих кодов.

    Арифметические способы и алгоритмы де/кодирования реализуются на

    основе использования теории чисел и множеств, полученных путем

    суммирования их по модулю некоторого "выбранного" числа. Наибольшее

    применение данные коды получили в ЭВМ.

    Геометрические способы и алгоритмы де/кодирования реализуются на

    основе использования теории n-мерного пространства и проективной геометрии

    (коды Элайса, коды Мешковского и др.). Отличительная черта этих кодов -

    высокая сложность их реализации, малое число помехоустойчивых кодов; имеют

    ограниченное применение на практике.

    Эвристические способы и алгоритмы де/кодирования базируются на

    основе использования определенных умозрительных логических рассуждений

    (коды с постоянным весом и др.). Ввиду невысокой корректирующей способности

    данные коды находят ограниченное применение.

    Неалгебраические алгоритмы декодирования используют в основном

    вероятностные алгоритмы декодирования, т.е. когда при декодировании

    используется информация как о его полярности, так и надежности его принятия.

    Данные алгоритмы обеспечивают более высокие корректирующие способности,

    но и имеют более высокую сложность реализации кодов.

    Контрольные вопросы и задачи

    1. Пояснить сущность помехоустойчивого кода и способа

    помехоустойчивого кодирования.

    2. Перечислить возможные области применения кодов и шифров.

    3. При каких условиях возможно только: обнаружение ошибок; обнаружение

    и коррекция ошибок.

    4. Определить кратность корректируемых и обнаруживаемых ошибок

    блоковым кодом с параметрами (n, k)=(16,9).

  • 5. Назвать и пояснить сущность основных характеристик (параметров)

    помехоустойчивых кодов.

    6. Дать определение кодовому и минимальному кодовому расстоянию.

    Определить d0, если заданы следующие четыре кодовые последовательности:

    F1(x)=100110, F2(x)=010101, F3(x)=001011 и F4(x)=111111.

    7. Назвать основные признаки классификации помехоустойчивых кодов.

    8. Определить d0 , если помехоустойчивый код используется для коррекции

    трехкратных ошибок.

    9. Для кодовых последовательностей пункта 6 при k=3 определить: n, l, d0 wi.

    10. Доказать, что для одновременного исправления tисп. ошибок и

    обнаружения tобн. ошибок необходимо и достаточно, чтобы d0 ≥ tисп. + tобн. + 1.

  • 2.ГРУППОВЫЕ БЛОКОВЫЕ КОДЫ

    2.1.Определение групповых кодов, основные свойства и классификация

    кодов

    Большинство известных ”хороших” помехоустойчивых кодов (коды с

    высокой корректирующей способностью, с малой избыточностью и с простыми

    алгоритмами декодирования) принадлежат к классам групповых линейных

    блоковых кодов. Теория и практика построения данных кодов разработана

    достаточно подробно. В чём же сущность групповых кодов? Групповые коды–это

    такие линейные блоковые коды, совокупность кодовых слов которых вместе с

    нулевым кодовым словом, снабженное операцией посимвольного (поразрядного)

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

    группой и соответствуют основным свойствам групп.

    В соответствии с [3…5] группой G называется множество элементов с

    определённой для каждой пары элементов операцией (обозначаемой знаком *),

    обладающее следующими четырьмя свойствами:

    1) замкнутость: для каждой пары “a” и “b” из множества элемент с=а*b

    принадлежит множеству;

    2) ассоциативность: для всех “а”, “b” и “с” из множества а*(b*с)=(а*b)*с;

    3) существование единицы: в множестве существует элемент ”е“,

    называемый единичным элементом и такой, что а*е=е*а=а для любого элемента

    “а” множества;

    4) существование обратных элементов: для любого “a” из множества

    существует некоторый элемент “b” из множества, называемый обратным

    элементу “a” и такой, что

    a*b=b*a=e .

    Если группа G содержит конечное число элементов, то она называется

    конечной группой, а число элементов в G называется порядком G.

    Некоторые группы обладают тем дополнительным свойством, что для

    любых “a” и “b” из группы a*b=b*а. Это свойство называется коммутативностью.

  • Группы, обладающие этим дополнительным свойством, называются

    коммутативными или абелевыми группыми. Далее рассматриваются

    помехоустойчивые коды, которые соответствуют свойствам абелевых групп.

    В случае абелевых групп групповая операция обозначается знаком или

    символом “+” и называется сложением (даже тогда, когда она не является

    обычным арифметическим сложением). В этом случае единичный элемент

    называется нулем, и обозначается “0”, а обратный элементу “а” элемент

    записывается в виде “–а”, так что

    а+(-а)=(-а)+а=0.

    Иногда групповая операция обозначается символом “*” и называется

    умножением (даже тогда, когда она не является обычным арифметическим

    умножением). В этом случае единичный элемент называется единицей и

    обозначается “1”, а обратный элементу “а” элемент записывается в виде “а 1− ”, так

    что а*а 1− = а 1− *а=1.

    Если N есть группа, а M есть некоторое подмножество в N, тогда M

    называется подгруппой группы N, если оно является группой относительно

    ограничения операции * на M. Таким образом, подгруппа есть некоторое

    множество элементов группы, если оно удовлетворяет всем аксиомам группы.

    Наиболее простыми являются так называемые циклические подгруппы, которыми

    обладает любая группа N. Число элементов в группе определяет порядок группы.

    Если же все элементы группы могут быть представлены как степень одного

    элемента, то такая группа называется циклической.

    Разработано большое количество классов групповых линейных блоковых

    кодов. На рис.2.1 приведена структурная схема с классификацией данных кодов.

    За основу классификации принят принцип их построения.

    Далее рассмотрим принципы построения и реализации групповых блоковых

    кодов, которые находят широкое применение на практике.

  • Рис. 2.1. Структурная схема классификации групповых линейных блоковых

    кодов

    2.2. Линейные блоковые коды

    Линейным блоковым кодом называется такой помехоустойчивый код, у

    которого проверочные символы формируются путем суммирования по модулю

    два информационных символов, стоящих (расположенных) на определенных

    позициях (местах), а сумма двух кодовых последовательностей и произведение

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

    последовательности.

    Групповые блоковые коды

    Линейные коды

    Дуальные коды

    Эквивалентные коды

    Каскадные коды

    Симплексные или эквивалентные коды

    коды

    Коды мак-сималь-ной

    Коды Хэмминга

    Коды Рида-Соломона

    Биоортого-нальные коды

    Коды Файра

    БЧХ-коды

    Коды Рида-Маллера

    Полиномиальные коды

    Итеративные коды

    Транспарантные коды

    Низкоплотные коды

    Коды произведения

  • Далее рассматриваются только двоичные разделимые систематические

    линейные блоковые коды, основными свойствами которых являются [1…5]:

    - линейность кода: линейность кода определяется специально выбираемой структурой кода. Линейность кода существенно упрощает процедуру

    кодирования и декодирования, позволяя выразить каждую кодовую

    последовательность в виде “линейной” комбинации небольшого числа

    выделенных кодовых последовательностей, так называемых базисных векторов;

    - сумма по модулю два двух кодовых последовательностей также является кодовой последовательностью;

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

    - если сложить по модулю два некоторую кодовую последовательность со

    всеми кодовыми последовательностями, то снова получится множество всех

    кодовых последовательностей, расположенных, быть может, в другом порядке;

    - вес кодовой последовательности ( кпϖ ) всегда должен быть ≥ 0d ;

    - вес проверочной части кодовой последовательности ( кп,прϖ ) должен быть

    всегда ≥ ( 0d -1);

    - вес суммы по модулю два двух разрешенных кодовых последовательностей

    ( ∑ϖ кп ) должен быть всегда ≥ ( 0d -1), но допускается ≥( 0d -2);

    - групповой двоичный линейный блоковый код полностью задается как

    порождающей G n,k (x), так и проверочной H n,l (x) матрицами.

    В соответствии с [1…3] наименьшую сложность построения и реализации

    имеют разделимые систематические двоичные линейные блоковые коды. При

    использовании данных кодов для повышения достоверности ПИ с выхода

    источника информации передаваемая информация поступает в виде

    информационных блоков, содержащих “k” двоичных символов (дв.сим.). Данные

    информационные блоки назовем сообщениями и обозначим через Q(x). Данные

    сообщения являются безызбыточными и составляют Kp=2 k разрешенных кодовых

    сообщений. В кодере из поступивших “k” информационных символов

  • формируются по определенным правилам l проверочных символов и в канал

    связи поступают кодовые последовательности (обозначим их через F(x)) длиной

    n=(k+l) двоичных кодовых символов. Следовательно, общее количество n-

    разрядных (символьных) кодовых последовательностей составит Kобщ=2 n , из

    которых Kзап= =−kn2 2l являются запрещенными и от их количества зависит

    корректирующая способность кода.

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

    способностью блоковых кодов

    Важнейшей задачей теории кодирования является определение взаимосвязи

    между кратностью или длиной корректируемых ошибок и требуемой для этой

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

    необходимая избыточность должна быть разрабатываемого кода, чтобы данный

    код гарантировано исправлял ошибки требуемой (заданной) кратности или длины.

    Кратность ошибки, как и вводимая избыточность в код, чаще всего

    измеряется количеством двоичных символов или бит.

    По величине вводимой избыточности принято оценивать эффективность

    разработанного или выбранного кода; если сравниваются два, три и т.д. кода,

    корректирующих ошибки одинаковой кратности, то наиболее эффективным

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

    чаще всего и надо выбирать для практической реализации.

    Коды, которые обеспечивают коррекцию ошибок равной кратности с

    другими кодами, но используют для этого меньшую избыточность (меньше

    проверочных символов), называются совершенными или плотно упакованными

    кодами.

    Следовательно, совершенный код будет обеспечивать эффективное

    использование пропускной способности как канала связи, так и сети связи в

    целом.

  • Однако на практике совершенные коды часто технически просто

    нереализуемы; либо имеют высокую сложность реализации (требуется RG очень

    большой длины), либо обеспечивают коррекцию ошибок небольшой кратности:

    одиночные и двойные ошибки [1…4].

    Следовательно, при разработке или выборе кода важно правильно выбрать

    избыточность кода, т.е. какое минимально необходимое число проверочных

    символов “l” необходимо ввести в передаваемый информационый блок.

    Нетрудно видеть, что это число, т.е. “l”—число проверочных символов, будет

    зависеть от статистики ошибок в дискретном канале связи (ДКС).

    Данная задача или проблема решается довольно просто, если требуется

    построить код, обнаруживающий либо одиночные (нечетные ошибки), либо

    двойные (четные) ошибки.

    В первом случае для этого достаточно ввести один проверочный

    (контрольный) символ, а во втором случае—ввести два проверочных символа.

    Абсолютная “l” и относительная “r” избыточность данных кодов соответственно будет составлять:

    l1=n1-k1=1; 1k

    111k

    11n

    11n

    1k1n1r+

    =+

    ==−

    = ;

    l2=n2-k2=2; .2k2

    22k2

    2n2

    2n2k2n2r

    +=

    +==

    −=

    Откуда следует, что относительная избыточность “r”, которую можно назвать

    коэффициентом избыточности, стремится к 0, если n стремится к бесконечности,

    т.е. если k стремится к бесконечности.

    Задача определения оптимального количества проверочных символов в

    кодовой последовательности существенно усложняется, когда требуется

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

    (коррекции) ошибок кратности не более tисп. двоичных символов состоит в

    следующем [1].

  • Общее число кодовых последовательностей n-разрядного кода, равное

    Kобщ=2 n , разбивается на N подклассов по числу N=Kp=2 k разрешенных кодовых

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

    подкласс входили одна разрешенная и ближайшие к ней запрещенные кодовые

    последовательности. При декодировании определяется, какому подкласс�