СПОСОБ КОДИРОВАНИЯ-ДЕКОДИРОВАНИЯ ИНФОРМАЦИИ В СИСТЕМАХ ПЕРЕДАЧИ ДАННЫХ
METHOD OF INFORMATION ENCODING-DECODING IN DATA TRANSMISSION SYSTEMS

Изобретение относится к электросвязи и может быть применено для передачи цифровой информации управления по радиоканалу, например, в KB или УКВ диапазоне частот.
В подобных системах актуальными являются как задачи защиты передаваемых сообщений от случайных одиночных и длинных пакетов ошибок, вызванных различными помехами в канале связи, так и минимизация времени доставки сообщений до получателя.
Известен способ поблочной передачи слов цифровой информации (патент ЕПВ N0204635, 1986), включающий в себя на передающей стороне: кодирование каждого передаваемого К-символьного слова внешним блоковым кодом (N, К), где N-K число проверочных символов этого кода; перемежение символов каждых w(w>1) кодовых слов внешнего блокового кода (N, К); кодирование перемеженных символов w кодовых слов внешнего блокового кода (N, К) внутренним кодом (n, k), где n-k число проверочных символов этого кода; формирование кодового кадра из кодовых слов внутреннего кода (n, k); модуляцию сформированным кодовым кадром сигнала несущей частоты и передачу его по радиоканалу; на приемной стороне: прием на каждом приемнике передаваемого сигнала, его демодуляцию и выделение синхропосылок; декодирование кодовых слов внутреннего кода (n, k) с исправлением и/или обнаружением ошибок; деперемежение декодированных символов w кодовых слов внешнего блокового кода (N, К); декодирование w кодовых слов внешнего блокового кода (N, К) с исправлением и/или обнаружением ошибок; выдачу декодированного сообщения получателю.
Недостатком данного способа является ориентация его на передачу потока данных и большая задержка приема по причине перемежения.
Известен также способ кодирования-декодирования информации, описанный в патенте США №6374382, 2002 г., где используется каскадный код, внешний код которого - код PC, формирующий внешнюю кодовую последовательность на основе исходных данных, внутренний код - сокращенный блочный код (n, k), Способ передачи данных заключается в следующем. В режиме кодирования информация от источника данных поступает на внешний кодер PC, который обеспечивает внешнее кодирование данных. Данные от кодера PC поступают на внутренний кодер, который обеспечивает внутреннее кодирование данных. Закодированные данные поступают на модулятор и передаются по каналу связи как каскадный сигнал. В соответствии с первым вариантом реализации данного изобретения внутренний код представляет собой модифицированный код Хэмминга. В соответствии со вторым вариантом реализации данного изобретения внутренний код сформирован из двух сокращенных блочных последовательностей. Первая последовательность блочного кода состоит из восьми информационных бит и из контрольного бита четности. Вторая последовательность блочного кода формируется из остальных информационных бит и трех контрольных бит четности. В режиме декодирования информация поступает с демодулятора на внутренний декодер, который производит декодирование принятого внутреннего кода, далее декодер PC производит декодирование внешнего кода. В данной системе используется в качестве внутреннего кода короткий двоичный код, исправляющий однократные ошибки, но если в принятых словах появятся две или более ошибок, то декодер не сможет декодировать данные слова, что приведет к появлению ошибочных и стертых символов в кодовых словах внешнего кода. Внешний код - код Рида-Соломона с минимальным расстоянием d позволяет декодировать любую конфигурацию, содержащую v ошибок t стираний, при условии что в случае невыполнения этого неравенства PC декодер не сможет правильно декодировать информационную последовательность. Это приведет к потере информации, что недопустимо в системе передачи данных без обратной связи.
Недостатком данного способа является относительно невысокая вероятность правильного приема сообщений и большая задержка их приема.
Наиболее близким к заявляемому способу является способ кодирования-декодирования, представленный в патенте РФ на ИЗ №2310273, 2007 г. В этом способе на передающей стороне к блоку исходной информации добавляют циклическую контрольную сумму, полученный блок кодируют внешним кодом Рида-Соломона (PC) и затем внутренним кодом. Закодированный блок модулируют и передают в канал. После демодулятора принятый блок информации декодируют внутренним кодом. Последовательность декодированных и стертых кодовых слов внутреннего кода запоминают. Если декодирование кодового слова внутреннего кода невозможно, то это некорректируемое кодовое слово сохраняют. Далее декодируют внешний код PC последовательности декодированных и стертых кодовых слов внутреннего кода и вычисляют и проверяют циклическую контрольную сумму упомянутой информационной последовательности. При положительном результате проверки CRC информацию выдают получателю сообщений. При отрицательном результате проверки производят восстановление стертых слов внутреннего кода последовательности. Восстановление стертых слов внутреннего кода и декодирования внешнего кода повторяют до тех пор, пока проверка CRC не даст положительный результат.
Недостатком ближайшего аналога является сложность технической реализации и большая задержка приема блока данных, последнее при передаче сообщений в виде команд управления недопустимо.
Технической задачей изобретения является снижение времени передачи сообщений за счет использования комбинации трех кодов, снижающих вероятность ошибочного приема и изменения очередности передаваемых в канал информационных и проверочных бит.
<mrow><msub><mi>m</mi><mrow><mi>J</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>J</mi></munderover><mrow><msub><mi>m</mi><mi>j</mi></msub><mi>mod</mi><mn>2</mn></mrow></mstyle></mrow>
<mrow><msubsup><mi>m</mi><mi>j</mi><mo>*</mo></msubsup><mo>=</mo><msub><mi>m</mi><mrow><mi>J</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>+</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>s</mi><mo>≠</mo><mi>j</mi></mrow><mi>J</mi></munderover><mrow><msub><mi>m</mi><mi>s</mi></msub></mrow></mstyle></mrow>
j
j,1
j,2
J,s
j,k
j,k
a
a
a
a
a
Поставленная задача решается способом кодирования-декодирования информации в системах передачи данных, заключающимся в том, что на передающей стороне к исходному сообщению из К бит добавляют циклическую контрольную сумму (CRC) из R бит, полученный блок из N=K+R бит кодируют помехоустойчивым внешним кодом Рида-Соломона в поле GF(q), где q - алфавит кода, и внутренним кодом Голея, закодированный блок информации (сообщение) направляют в канал связи, принятое сообщение декодируют, причем первоначально декодируют внутренний код, а затем внешний код, вычисляют и проверяют CRC, в случае положительного результата проверки сообщение передают получателю, а при отрицательном повторяют процедуру декодирования с исправлением ошибок, отличающимся тем, что после кодирования блока из N бит первоначально в канал связи передают все информационные биты, затем передают биты CRC, после чего передают в канал результаты кодирования проверочные биты внешнего кода и проверочные биты внутреннего (n, k) кода Боуза - Чоудхури - Хоквингема (БЧХ), где n - длина кода в битах, k - число информационных бит, после получения информационной последовательности бит на приемной стороне по ним вычисляют и проверяют CRC, в случае положительного результата сообщение передают получателю, в противном случае исправляют ошибочные блоки внешним кодом, в качестве которого используют k-битный блок контроля на четность по модулю два
, где m=( … …),  - информационные биты внутреннего кода, j=1, 2, …J, J=N/k - число блоков внутреннего кода, составляющих принятое сообщение, для чего восстанавливают j-ый блок из k бит посредством блока четности
, после чего полученную последовательность из N бит проверяют по CRC, при положительном результате проверки принятое сообщение передают получателю, а при отрицательном - повторяют процедуру восстановления блоков, пока не будут проверены все J блоков, а при отсутствии положительного результата выполняют операцию исправления ошибок внутренним кодом БЧХ от j=1 до j=J, для чего объединяют j-ю информационную k-битную последовательность с j-ой проверочной последовательностью кода БЧХ, декодируют j-ый блок, при исправлении выявленных ошибок вновь выполняют процедуру проверки CRC, а при отрицательном результате продолжают операцию исправления ошибок в последующих блоках до j=J.
Заявленный способ поясняется чертежами, на которых показано: на фиг. 1. - структура системы кодирования-декодирования информации, на фиг. 2. - возможные моменты приема сообщения и формулы, посредством которых вычисляются вероятности приема в эти моменты времени. Система состоит из последовательно соединенных блока вычисления и добавления циклической контрольной суммы CRC 1, блока кодирования информации внешним кодом 2, блока кодирования внутренним кодом 3, модулятора 4, канала связи 5, демодулятора 6, блока вычисления и проверки циклической контрольной суммы CRC 7, блока декодирования внешнего кода 8, блока декодирования внутреннего кода 9. Блок вычисления и проверки циклической контрольной суммы 7 имеет три выхода, второй выход задействуется после приема бит информации и проверочных бит внешнего кода, а третий выход - по мере приема проверочных бит внутреннего кода.
Предлагаемая система обеспечивает кодирование информации тремя кодами, кодом CRC для обнаружения ошибок в сообщении, внешнего кода (N, К) и внутреннего (n, k), где n и N - общее число символов; k и K - число информационных символов.
Для вычисления CRC применяют алгоритм Cyclic Redundancy Codes (Росс Н. Вильямс. Элементарное руководство по CRC-алгоритмам обнаружения ошибок. FTP: ftp.adelaide.edu.au/pub/rocksoft/crc_v3.txt_1993). Этот алгоритм представляет собой высокоэффективное средство обнаружения ошибок. Благодаря использованию CRC возможно определение искажений данных, так как изменение данных приводит к изменению CRC. В качестве примера в предлагаемом способе предлагается CRC-16-CCITT. Контрольная сумма 16-ти битовая является остатком от деления сдвинутой на 16 разрядов информационной последовательности на образующий полином 16-ой степени (1).
В качестве внутреннего кода используется код БЧХ (например - Голея (23, 12, 7), исправляющий все ошибки веса три и менее на кодовом слове из 23-х бит). Алгоритмы кодирования и декодирования кодами БЧХ известны, их осуществляют как аппаратными средствами, так и программно. Декодирование производят, например, с помощью декодера Меггитта, который подробно описан (Блейхут Р. Теория и практика кодов, контролирующих ошибки. М.: Мир, 1986).
Внешний код - контроль на четность (наиболее простой вариант кода PC над полем GF()), - позволяет исправлять любую пачку ошибок длиной не более k бит. Исправление j-го k-битного слова внешнего кода посредством (J+1)-го производится следующим образом: j-ый блок из k бит заменяется на k-битный блок по mod2, где k - информационные биты внутреннего кода s-го слова. Полученная последовательность из N бит проверяется по CRC посредством деления на образующий полином 16-ой степени (1). Если результат деления - без остатка, то это означает, что ошибки в блоке исправлены.
На Рис.2 приведены временные моменты возможного приема сообщения и формулы, согласно которым вычисляются вероятности приема сообщения именно в этот момент.
<mrow><msub><mi>P</mi><mi>J</mi></msub><mo>=</mo><msubsup><mi>p</mi><mn>0</mn><mi>J</mi></msubsup></mrow>
<mrow><msub><mi>P</mi><mrow><mi>J</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mi>J</mi><mo>*</mo><msubsup><mi>p</mi><mn>0</mn><mrow><mi>J</mi><mo>−</mo><mn>1</mn></mrow></msubsup><mo>*</mo><mrow><mo>(</mo><mrow><mn>1</mn><mo>−</mo><msub><mi>p</mi><mn>0</mn></msub></mrow><mo>)</mo></mrow></mrow>
<mrow><msub><mi>P</mi><mrow><mi>r</mi><mi>j</mi></mrow></msub><mo>=</mo><mrow><mo>(</mo><mrow><mi>j</mi><mo>−</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>*</mo><msub><mi>p</mi><mi>л</mi></msub><mo>*</mo><msup><mrow><mrow><mo>(</mo><mrow><msub><mi>p</mi><mn>0</mn></msub><mo>+</mo><msub><mi>p</mi><mi>и</mi></msub></mrow><mo>)</mo></mrow></mrow><mrow><mi>j</mi><mo>−</mo><mn>2</mn></mrow></msup><mo>*</mo><msubsup><mi>p</mi><mrow /><mrow><mi>J</mi><mo>+</mo><mn>1</mn><mo>−</mo><mi>j</mi></mrow></msubsup><mo>*</mo><msub><mi>p</mi><mi>и</mi></msub><mo>+</mo><mrow><mo>(</mo><mrow><mi>J</mi><mo>+</mo><mn>1</mn><mo>−</mo><mi>j</mi></mrow><mo>)</mo></mrow><mo>*</mo><msup><mrow><mrow><mo>(</mo><mrow><msub><mi>p</mi><mn>0</mn></msub><mo>+</mo><msub><mi>p</mi><mi>и</mi></msub></mrow><mo>)</mo></mrow></mrow><mrow><mi>j</mi><mo>−</mo><mn>1</mn></mrow></msup><mo>*</mo><msup><mrow><mrow><mo>(</mo><mrow><mn>1</mn><mo>−</mo><msub><mi>p</mi><mn>0</mn></msub></mrow><mo>)</mo></mrow></mrow><mrow><mi>J</mi><mo>−</mo><mi>j</mi></mrow></msup><mo>*</mo><msub><mi>p</mi><mn>0</mn></msub><mo>*</mo><msub><mi>p</mi><mi>л</mi></msub></mrow>
0
0
j
rJ+1
0
и
и
и
и
л
0
и
k
J-2
Минимальная задержка приема составляет J*k бит и происходит в момент времени J, если на интервале длиной J*k бит нет ошибок. Вероятность такой ситуации равна
, р=(1-p), где p - вероятность ошибки бита, р - - вероятность отсутствия ошибок на блоке из k бит. Следующий момент приема (через k бит) происходит, если ошибки имеются в одном из первых J блоков по k бит и нет ошибок в (J+1)-ом блоке. Вероятность такой ситуации
. Последующие (J+1) моментов приема происходят через каждые r бит за счет исправления ошибок кодом БЧХ. Вероятность приема сообщения в момент времени r равна
. Максимальная задержка приема составляет - k*(J+1) бит, вероятность приема с такой задержкой равна P=J*(p+p)*p*p, где p - вероятность того, что на блоке из k бит ошибки есть, но они исправлены кодом БЧХ, p=1-p-p - вероятность того, что на блоке из k  бит ошибки есть, но они не исправлены кодом БЧХ.
Пусть сообщение является командой из 128 бит, в качестве кода БЧХ используется код Голея. Тогда с учетом контрольной суммы CRC-16 - это 12 блоков по 12 бит, к ним добавляется 13-ый блок, равный сумме по модулю 2 предыдущих 12-ти блоков. Каждый из 13-ти блоков последовательно кодируется кодом Голея, проверочные биты (их 11*13=143) передаются после информационных. Для реальных коротковолновых каналов вероятность ошибочного приема бита p часто равна 0,01-0,05. При использовании предлагаемого способа возможен прием сообщения с указанными ниже задержками и вероятностями.
Расчет вероятностных характеристик показывает преимущество данного способа над другими подобными. Можно констатировать, что особенно эффективным является применение предлагаемого способа кодирования с восстановлением блоков внутреннего кода по блоку четности и исправлением независимых ошибок кодом Голея при передаче коротких команд управления по каналам, в которых вероятность ошибки бита сообщения меньше 0,03, позволяющее иметь распределенный по времени прием.