Декодирующие устройства циклических кодов

а) Обнаружение ошибок

Рассмотрим способ построения декодирующих устройств для циклических кодов в режиме обнаружения ошибок. Декодирующее устройство, использующее свойство делимости любой комбинации циклического кода на его порождающий многочлен g(x), показано на рис. 6.14.


 

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

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

Если ошибки отсутствуют (или не обнаружены), то на выходе схемы получаем сигнал “0”, по которому информация из накопителя информационных разрядов выдается потребителю информации. В том случае, когда на выходе схемы ИЛИ появляется сигнал “1”, а это произойдет, когда хотя бы в одном из разрядов регистра после деления появится “1”, т.е. полученный остаток не равен нулю, информационные разряды из накопителя потребителю не выдаются и фиксируется ошибка.

Пример 6.18. Построить декодирующее устройство для обнаружения ошибок циклическим (7,4) – кодом с и проследить по тактам процесс выявления ошибок.

Схема декодирующего устройства для данного кода изображена на рисунке 6.15.

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

Таблица 6.6

№ такта Вход Содержимое разрядов Цепь обратной связи
-

 

Таким образом, в результате деления установлено, что принятая комбинация принадлежит циклическому (7,4) – коду и ее информационные элементы поступают к потребителю информации.

Предположим теперь, что в процессе передачи исказился первый элемент комбинации и принятая комбинация имеет вид (1100100). Процесс деления приведен в таблице 6.7.

 

 

Таблица 6.7

№ такта Вход Содержимое разрядов

 

В результате деления принятой комбинации на получен остаток 101, вследствие чего на выходе схемы ИЛИ появится “1”, запрещающая выдачу кодовой комбинации потребителю.

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

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


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

Информационные разряды принятой кодовой комбинации циклического (n, k) – кода через схему И1, открытую на время приема k информационных элементов, вводятся в регистр из k разрядов. После приема k-го разряда в схеме происходит сдвиг информации вправо, и по (k+1)-му такту в ячейке оказывается записанным старший избыточный разряд. Сформированный избыточный разряд поступает из ячейки на вход сумматора по модулю 2. В то же самое время со входа схемы на второй вход сумматора поступает старший избыточный разряд от входа схемы. Начиная с (k+1)-го такта открывается выход сумматора через схему И2 и определяется сумма по модулю 2 сравниваемых избыточных символов. “1” на выходе сумматора означает ошибку, “0” – правильный прием. По (k+2)-му такту в формируется следующий избыточный символ. Соответствующий избыточный символ в этот же момент поступает от входа схемы и т.д. Сумматор выдает решение по каждому избыточному разряду. Общее время работы схемы, необходимое для выявления ошибок в принимаемой комбинации, не выходит за пределы времени приема комбинации.


На рис. 6.17 для сравнения приведены устройства обнаружения ошибок для циклического кода (7,3), построенные по h(x) (Рис 6.17а) и по g(x)(Рис 6.17б)


б) Исправление ошибок

Исправление ошибок циклическим кодом – задача достаточно сложная как в теоретическом, так и в практическом, т.е. схемном отношении.

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

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

В общих чертах работа этой схемы может быть описана следующим образом:

1. Принятая кодовая комбинация вводится в буферное запоминающее устройство (БЗУ) и одновременно в схему вычисления синдрома (СВС), СВС аналогична схеме, изображенной на рис.6.4.

2. Между синдромом и предполагаемой комбинацией ошибок (образующий элемент смежного класса) имеется взаимно однозначное соответствие, определяемое комбинаторной логической схемой (КЛС). КЛС строится таким образом, чтобы на ее выходе появилась 1 всякий раз, когда при выводе информации из БЗУ предполагается появление ошибочного элемента, т.е. 1 на выходе КЛС должна всегда соответствовать старшей степени многочлена ошибок e(x) содержащегося в той части кодовой комбинации, которая еще содержится в БЗУ.

3. Одновременно с появлением из БЗУ каждого элемента производится сдвиг в СВС. Если символ, появляющийся на выходе БЗУ подлежит исправлению, то синдром также должен быть изменен, для чего с выхода КЛС 1 подается как на выход БЗУ, так и на вход СВС. Это делается для того, чтобы синдром соответствовал каждому изменению принятой комбинации.

4. Второй и третий шаги повторяются до тех пор, пока вся принятая комбинация не будет считана из БЗУ. Каждому разряду, считываемому из БЗУ, должен соответствовать сдвиг на один разряд вправо одновременно в БЗУ и в КЛС.

5. После того, как считана вся принятая комбинация, будут исправлены все ошибки, соответствующие образцам ошибок, предусмотренным КЛС, и в разрядах регистра СВС останутся одни нули. Если после окончания процедуры исправления в разрядах регистра содержатся не только нули, то это значит, что обнаружена ошибка, не исправляемая с помощью данной КЛС.

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

В этом случае КЛС должна выдавать 1 тогда, когда из БЗУ выходит элемент, в котором предполагается ошибка. С этой целью каждый синдром должен быть однозначно связан с номером элемента кодовой комбинации. Эта связь может быть установлена следующим образом. Принятая комбинация вводится в схему деления на порождающий многочлен и вычисляется остаток от деления данной комбинации на g(x), являющийся синдромом. Как было показано при рассмотрении исправления ошибок кодом Хэмминга, вычисленный синдром имеет такой же вид, как и столбец проверочной матрицы кода, соответствующий искаженному элементу принятой кодовой комбинации Пусть ошибка произошла в i – ом разряде кодовой комбинации.

В соответствии с правилом построения матрицы проверок синдром соответствует остатку от деления на g(x). Рассмотрим теперь, что будет происходить в схеме деления на g(x), если после вычисления синдрома продолжать сдвиги в регистре. Если от входа схемы исправления на схему деления никакой информации не поступает, а в регистре схемы деления записан остаток от деления на g(x), в результате сдвига содержимого регистра на единицу вправо с учетом работы обратных связей получим в регистре остаток от деления на g(x). Следующий сдвиг дает остаток от деления на g(x) и т.д. Таким образом, схема деления на многочлен g(x) после вычисления синдрома начинает работать как генератор элементов поля GF(2m), где m=n-k- степень порождающего многочлена g(x). Начальным состоянием работы генератора является вычисленный синдром, т.е. αi . После (n-i) – го сдвига в регистре будет записан остаток от деления на g(x), который для равен единичному элементу по операции умножения поля GF(2m).Итак, при наличии в принятой комбинации единичной ошибки в любом i – ом разряде после дополнительных (n-i) сдвигов в схеме деления будем иметь в ячейке единицу, а во всех остальных ячейках – нули.

Автоматическое исправление ошибки можно осуществить следующим образом. К разрядам регистра сдвига подключается дешифратор на комбинацию вида 100…0. Выход дешифратора и выход БЗУ подключается ко входам сумматора по модулю 2.

Одновременно со сдвигами в схеме деления после вычисления синдрома осуществляется вывод информации из БЗУ. На (n-i)-м сдвиге на входы сумматора поступят от БЗУ искаженный элемент, а от дешифратора - единица. На выходе сумматора искаженный элемент инвертируется, т.е. ошибка будет исправлена.

Пример 6.19.

Рассмотрим исправление ошибок циклическим (7,4) - кодом с . Этот код имеет dmin = 3, т.е. исправляет все одиночные ошибки. Общий вид схемы исправления одиночных ошибок для данного кода представлен на рис. 6.19.

 

Поясним работу схемы при исправлении одиночных ошибок на примере. Пусть приемное устройство зарегистрировало комбинацию 1101101. Данная комбинация поступает в СВС и БЗУ. После 7-го такта СВС содержит синдром , что свидетельствует о том, что искажен элемент при (см. пример 6.15). С 8-го такта комбинация выводится из БЗУ, начиная со старшей степени. Одновременно в СВС происходят сдвиги синдрома.


 

Этот процесс представлен в таблице 6.8.

Таблица 6.8

 

№ такта Состояние СВС Выход БЗУ Выход КЛС Выход схемы
r0 r1 r2
- -

 

Сравните состояние ячеек СВС с состоянием ячеек генератора элементов поля GF(23), начиная с 3 такта (рис 6.9).

Таким образом, исправленная комбинация имеет вид 1100101. С выхода схемы проверочные элементы могут не выдаваться к потребителю, т.е. вся процедура может быть окончена после выдачи последнего информационного элемента

ТЕМА 7. КОДЫ РИДА СОЛОМОНА (РС)

Коды Рида – Соломона, или РС-коды, относятся к недвоичным циклическим кодам, т.е. кодам, символы которых взяты из конечного поля, содержащего q>2 элементов и обозначаемого GF(q), где q – степень некоторого простого числа. Понятие о конечных полях кратко изложено в 6.1.

Пусть необходимо передать по каналу связи последовательность из M двоичных элементов вида:

111 … 1 101 … 1 011 … 0 100 … 1.

Разобьем эту последовательность на блоки по m элементов и обозначим их через некоторые символы β0, β1, β2, …, βN–1, где . Полное число различных значений m-элементных блоков равно q=2m.

Таким образом, передаваемая последовательность представляется в виде некоторой q-ичной последовательности: β0, β 1, …, β S, …, β N–1.

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

Кодовые комбинации q-ичного кода могут быть представлены в виде многочленов с q-ичными коэффициентами – элементами поля GF(q). При этом q-ичные коэффициенты как элементы поля GF(q) являются в рассмотренном примере многочленами с двоичными коэффициентами.

Например:

B(x)=β 0 (z)x0+ β 1 (z)x1 + … + β N–1xN–1,

где: β i(z)=b0z0+ b1z1 + … + bm–1zm–1.

Здесь bi=0,1, а z – формальная переменная многочлена с двоичными коэффициентами.

 

Кодом Рида-Соломона (РС-кодом) называют циклический (N,K)-код, при N=q–1, множество кодовых комбинаций которого представляется многочленами степени N–1 и менее с коэффициентами из поля GF(q), где q>2 и является степенью простого числа, а корнями порождающего многочлена являются N–K последовательных степеней: α, α 2, α 3, …, α D, некоторого элемента αÎGF(q), где D– минимальное кодовое расстояние (N,K)-кода.

Из определения вытекает, что РС-код является подклассом БЧХ-кодов с m0=1 [1]. Обычно считают элемент αпримитивным элементом поля GF(q), т.е. все степени α от 1-й до (q–1)-й являются всеми различными ненулевыми элементами поля GF(q). Порождающий многочлен РС-кода имеет степень NK=D–1 и по теореме Безу может быть найден в виде произведения

.

В соответствии с теорией циклических кодов, порождающий многочлен g(x) является делителем xN–1 над GF(q).

Таким образом, РС-код над полем GF(q) имеет длину кодовой комбинации N=q–1, число избыточных элементов в ней NK=D–1 и минимальное кодовое расстояние D=N–K+1.

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

При фиксированных N и K не существует кода, у которого минимальное кодовое расстояние больше, чем у РС-кода. Этот факт часто является веским основанием для использования РС-кодов. В то же время РС-коды всегда оказываются короче всех других циклических кодов над тем же алфавитом. РС-коды длины N<q–1 называют укороченными, а коды длины q (или q+1) – расширенными (удлиненными) на один (или два) символа. В РС-коде может быть выбрано и другое значение m0, если это оправдано.

Рассмотрим некоторые примеры на построение РС-кодов.