
Дешифраторы избыточных кодов
С помощью таких ДШ можно «обнаружить» ошибки в принимаемых комбинациях. Если же минимальное кодовое расстояние ≥3, то существует возможность исправлять ошибки.
Обычно передача элементов кодовой комбинации ведется последовательно во времени, но декодирование её осуществляется за один такт и только при условии, что распределители ДП и КП работали синфазно. Поэтому элементы комбинации вначале запоминаются в УФК, затем выполняются операции по обнаружению или исправлению ошибок, а уж потом выдается сигнал РИ на декодирование. Предусмотрев такую последовательность действий, элементы памяти в составе декодирующих устройств необязательны. Однако в УФК их должно быть столько, сколько элементов имеет код. Если длина кодовых комбинаций n>10, то параллельное декодирование может привести к большим аппаратурным затратам по сравнению с последовательным. Наиболее простые технические решения декодирующих устройств систематических кодов получаются, если расшифровка кодированных сигналов производится только по их информационным элементам. А контрольные элементы использовать только для обнаружения или исправления ошибок в информационных элементах. На рис.3 приведены функциональные схемы декодирующих устройств
6-элементного кода «чет», основанные на реализации проверки на четность по всем позициям комбинации вида <а4а3а2а1а0к>. Здесь переменными а4,...,а0 отображена комбинация безызбыточного 5-элементного кода - это информационные элементы кода «чет»; а переменной к - контрольный элемент кода. Тогда проверка на «общую четность», согласно [2, с.50], будет иметь вид:
р=ā4ā3
ā2
ā1
ā0
k
(1)
Если р=0, то ошибок «нет», и можно декодировать комбинацию информационных элементов (проверка не нарушена). Если р=1, то нарушена четность единиц, и, следовательно, необходимо наложить запрет на кодирование.
В схеме рис.3, а запрет на кодирование вырабатывает сумматор D1, реализующий выражение (1). Для реализации этой схемы на ИС серии
К 155 потребуется 4 микросхемы (2 шт. типа ЛП5 и 2 шт. ИДЗ). Схема рис.3, б относится к декодерам, в которых проверка на четность производится в течение интервала ΔT, определяемого скоростью приема всех элементов комбинации. Длительность этого интервала задается моментами подачи сигналов ПУСК (t0) и СТОП (tl) на триггер управления D2 (рис.4).
D-триггер D3 выполняет функции сумматора по mod2: на его прямом выходе сигнал будет равен лог.0, если число импульсов, попавших на вход синхронизации «С», четное.
Временные диаграммы рис.4 отображают случай, когда комбинация <а4а3а2а1а0к> <101101> принимается без ошибок. Причем последовательность импульсов на выходе ДШПК соответствует передаче комбинации, начиная со старшего (а4) разряда. К моменту t2 подачи сигнала «РИ» на вход ДШ D4 в узлах фиксации УФК информационные элементы будут иметь установившиеся значения, а триггер D3 зафиксирует результат проверки. На диаграммах эти значения помечены крестиком X. И если триггер D3 в этот момент выдает сигнал лог.0, то на 24-м выходе D4 появится «расшифрованный сигнал». В момент t3 подается сигнал СБРОС, и схема возвращается в исходное состояние. Если у сумматора D1 (рис.3,а) или триггера D3 (рис.3,б) использовать инверсные выходы, то указанные схемы будут являться дешифраторами кода «нечет».
Рис. 3. Дешифраторы кода "чет-нечет":
а–комбинационный, б–последовательный
Рис. 4 Временные диаграммы к схеме рис. 3,б
Комбинационные ДШ кодов с коррекцией ошибок можно построить, зная правила формирования контрольных элементов и способ применения кода. Различают два способа применения: только для обнаружения ошибок и второй - для исправления ошибок.
В первом случае необходимо лишь выполнить регулярные проверки на четность и составить логическое условие, которое описывало бы сигнал «разрешения декодирования». Такие ДШ позволяют обнаружить r = d-1
ошибок, где d - минимальное кодовое расстояние.
Для реализации процедур исправления ошибок следует найти условия их опознавания в каждом информационном элементе комбинации - «опознаватель» ошибок. Затем составить логические выражения на исправление ошибок и на формирование сигнала «разрешение декодирования».
Покажем
это для кода Хэмминга, рассмотренного
выше. Из выражений К1=а2а1;
К2=а2
а0;
КЗ=а1
а0
и К0=К1
а0
[2] вытекают
следующие проверки:
р0=1
ā2
ā1;
р1=
2
ā2
ā0;
р2=
3
ā1
ā0; (2)
р=0
ā2
(ā1
ā0
3)
2
1=
0
1
2
ā2
р2.
(3)
Выражения (2) можно составить, пользуясь таблицей проверок (табл.2.3) и таблицей кодирования (табл.2.2) [2, с.52]. Если хотя бы одно из выражений (2), (3) примет значение лог.1, то в принятой комбинации есть ошибки. Таким образом, условие обнаружения ошибок имеет вид:
v=p2+pl+p0+p. (4)
Функциональная схема, соответствующая рассматриваемому варианту кодирования изображена, на рис.5. Для правильной работы ДШ (рис.5) в устройствах ТУ-ТС с последовательной передачей элементов комбинации сигнал «РИ» (разрешение исполнения ) должен подаваться лишь при синфазной работе распределителей ДП и КП.
Заметим, в системах с решающей обратной связью для «решения вопроса» о передаче сигналов ЗАПРОС, КВИТИРОВАНИЕ можно использовать сигнал v с выхода элемента D5 (рис. 5): если в момент подачи сигнала «РИ» v=0, то следует передать сигнал КВИТИРОВАНИЕ, а при v=l -сигнал ЗАПРОС.
Рис. 5. Дешифратор кода Хемминга с d=4
и обнаружением 3 - х ошибок
Пользуясь рассмотренной методикой [2, с.54], нетрудно составить логические выражения для обнаружения ошибок в циклическом
(7,4 ) - коде:
(5)
Здесь, как в выражениях (2), (3), переменные со знаком (-) соответствуют зафиксированным на КП значениям элементов комбинации. Так как у этого кода 4 информационных, 3 контрольных элемента и минимальное кодовое расстояние d=3, то для построения декодирующего устройства потребуется один полный ДШ 4-го порядка, три 4-входовых сумматора по mod2 и один элемент ИЛИ (5). Такое устройство позволит обнаружить r=d-1=3-1=2 ошибки (любые) и некоторые 3-кратные ошибки. Например, ошибки в элементах а3, а2, a1 не нарушат проверки р1 и р0, но нарушают проверку р2, и, следовательно, будут обнаружены.
Исправление ошибок, как в кодах Хэмминга, так и в циклических кодах, можно реализовать, применяя единую методику отыскания опознавателей. Исходными данными, позволяющими отыскать опознаватели ошибок, служат логические выражения регулярных проверок на четность. В рассматриваемых примерах - это выражение (2) для кода Хэмминга и (5) для циклического (7,4) - кода. В общем случае, опознаватель ошибки - это результат проверок на четность, представленный в виде двоичного, так называемого проверочного числа. Причем опознаватель - это проверочное число, которое однозначно указывает позицию (знако-место), где возникла ошибка. Если декодировать комбинации, когда только по информационным элементам, то достаточно найти опознаватели ошибок этих элементов. В зависимости от числа исправляемых ошибок можно говорить об опознавателях одиночных, двойных и большей кратности ошибок. Однако при попытках отыскать опознаватели ошибок, кратность которых превышает допустимую, получатся неразличимые опознаватели.
Найдём опознаватели (одиночных) ошибок для кода Хэмминга, рассматриваемого в качестве примера. Для этого результаты проверок (4) будем записывать в виде двоичного числа <p2p1p0>, где р2 - результат 3-й проверки (старший разряд проверочного числа), а р0 -самый младший разряд проверочного числа и результат 1-й проверки.
Из выражений (2) видно, что элемент комбинации <а0> входит в проверки р2, pl и не входит в проверку р0. Это означает, что ошибка на позиции ,где располагается элемент <а0>, нарушит 3-ю и 2-ю проверки, но не нарушит 1-ю проверку. То есть p2=p1=1; р0=0, тогда проверочное число будет иметь вид <110>, а опознаватель ошибки в a0 → p2p1p0. Будем обозначать буквами Z с десятичным индексом i, значение которого численно равно десятичному эквиваленту двоичного проверочного числа. Тогда опознаватели одиночных ошибок примут вид:
z6=р2p10
- для а0,
z5=p21р0
- для
a1,
(6)
z4=
2p1p0
- для
a2.
Очевидно, результаты исправления ошибок можно представить выражениями:
α0=ā0z6;
α1
=
ā1
z5;
α2=
ā2
z3;
(7)
где a0, a1 и а2 - «исправленные» информационные элементы (и, или переменные).
Нетрудно убедиться, что опознаватель вида z0=p2p1p0 соответствует отсутствию ошибок на позициях элементов а2, а1, а0, к1, к2, к3, а две ошибки могут привести к трансформации переданного сообщения, так как опознаватель 2-кратной ошибки совпадает с одним из опознавателей (6), и будет исправлена несуществующая «ошибка». А чтобы их обнаружить, необходимо запретить декодирование комбинаций <α2α1α0> при условии, что проверка (6) не нарушена и опознаватель z0 не равен лог.1. Или то же самое условие в алгебраической форме:
v=(8)
Логическое выражение (8) является аналогом (4), но для случая исправления ошибок. Функциональная схема декодирующего устройства кода Хэмминга, исправляющего одиночные ошибки, приведена на рис.6. Работу такого ДШ легче уяснить в сравнении с работой ДШ рис.5. Аналогичным образом строятся ДШ кодов Хэмминга с большей длиной комбинации.
Комбинационный
ДШ циклического (7,4) – кода, исправляющий
одиночные
ошибки, можно построить на основе
опознавателей <>,
определяемых
по выражениям (5):
z3=2p1p0
при ошибке в а0,
z6=p2p10
при ошибке в a1,
(9)
z4=p2p1p0 при ошибке в а2,
z5=p21p0
при ошибке в а3.
Очевидно, «опознавателем» безошибочного приема кодовой комбинации будет z0=p2p1p0. Если каждому опознавателю (9) поставить в однозначное соответствие двоичное 3-разрядное число, то нетрудно заметить совпадение этих чисел со строчками матрицы дополнений. Отсюда следует простой метод отыскания опознавателей одиночных ошибок: непосредственно из образующей матрицы кода - как логическое произведение элементов матрицы дополнений, соответствующих одной её строке. Например, 4-я строка матрицы С (7,4) имеет вид:
а3 а2 a1 а0 к2 к1 к0