Дешифраторы избыточных кодов
С помощью таких ДШ можно «обнаружить» ошибки в принимаемых комбинациях. Если же минимальное кодовое расстояние ≥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=р2p1
0
- для а0,
z5=p2 1р0 - для a1, (6) z4= 2p1p0 - для a2.
Очевидно, результаты исправления ошибок можно представить выражениями:
α0=ā0 z6; α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=p2p1 0 при ошибке в a1, (9)
z4=p2p1p0 при ошибке в а2,
z5=p2 1p0 при ошибке в а3.
Очевидно, «опознавателем» безошибочного приема кодовой комбинации будет z0=p2p1p0. Если каждому опознавателю (9) поставить в однозначное соответствие двоичное 3-разрядное число, то нетрудно заметить совпадение этих чисел со строчками матрицы дополнений. Отсюда следует простой метод отыскания опознавателей одиночных ошибок: непосредственно из образующей матрицы кода - как логическое произведение элементов матрицы дополнений, соответствующих одной её строке. Например, 4-я строка матрицы С (7,4) имеет вид:
а3 а2 a1 а0 к2 к1 к0
1 0 0 0 1 0 1 →F8(x).
Последовательность элементов <к2к1к0>→101 является строкой матрицы дополнений. Переименовав элементы Kj переменными Pj (j=0,l,2 для данного кода) и заменив нули переменными j, а единицы - Pj (без инверсии), получим
<101>→ p2 1p0=z5
Единица, стоящая в этой же строке единичной транспонированной матрицы, указывает, что найденное выражение z5 является опознавателем ошибки в элементе <а3>. Аналогично находятся другие опознаватели.
Сравнивая между собой (поэлементно) выражения (9), замечаем, что некоторые из них отличаются только значением одной переменной. Следовательно, возникновение 2-х ошибок может привести к трансформации передаваемого сообщения (d=3; r=s=1).
Процедура исправления ошибок описывается логическими выражениями:
α0=ā0 z3; α1=ā1 z6; α2=ā2 а4; α3=ā3 z5. (10)
Целесообразно для реализации зависимостей (10) использовать отдельный ДШ опознавателей, если число проверок k (и контрольных элементов) циклического кода не превышает 5.6. В противном случае (при k>6) наименьшие аппаратные затраты будут, если в качестве ДШ опознавателей применить соответствующим образом запрограммированное ППЗУ в интегральном исполнении.
Методы подготовки данных для программирования ППЗУ на реализацию логических функций с известными алгебраическими выражениями изложены в [3,с.91-93], [4, с. 144-162].
А на рис.7 приведена функциональная схема декодирования циклического (7,4) – кода с исправлением одиночных ошибок в его информационных элементах. Сравнивая рис. 5-7, нетрудно заметить идентичность и простоту их структур. Конечно, сложность ДШ циклических кодов, исправляющих большее число ошибок (s>1), существенно возрастает из-за усложнения ДШ опознавателей.
Рассмотрим процедуры отыскания данных для построения комбинационного ДШ «усеченного» циклического (15,7)-кода, исправляющего одиночные и двойные ошибки в информационных элементах (d=5,s=r=2). Возьмем псевдоциклический (12,4)-код [1,с.63] с образующей матрицей
a3 a2 a1 a0 k7 k6 k5 k4 k3 k2 k1 k0
(11)
Рис. 7. Комбинационный ДШ циклического (7,4) – кода
Запишем алгебраические выражения проверок на четность, пользуясь (11) и выше изложенной методикой:
(12)
Опознаватели будем записывать с индексами информационных элементов, в которых должны исправляться ошибки. Тогда опознаватели одиночных ошибок будут иметь вид:
z0=p7p6 5p4 3 2 1p0→1101.0001=D1H, z1= 7p6p5p4 3 2p1p0 → 0111.0011=73H, (13)
z2=p7p6p5 4 3p2p1 0 → 1110.0110=C6Н,
z3= 7 6 5p4p3p2 1p0 → 0001.1101=1DH.
Известно, что опознаватели двойных ошибок находятся как поразрядная сумма по mod 2 опознавателей соответствующих одиночных ошибок. Так как число информационных элементов у данного кода 4, то опознавателей двукратных ошибок будет 6 (С ):
z01=p7 6p5 4 3 2p1 0 → 1010.0010=A2H,
z02= 7 6p5p4 3p2p1p0 → 0111.0011=73H,
z03=p7p6 5 4p3p2 1 0 → 1100.1100=CCH,
z12=p7 6 5p4 3p2 1p0 → 1001.0101=95H, (14)
z13= 7p6p5 4p3p2p1 0 → 0110.1110=6EH,
z23=p7p6p5p4p3 2p1p0 → 1111.1011=FBH.
Если запрограммировать ППЗУ на реализацию выражений (13) и (14), то такой ДШ опознавателей сможет выдать сигналы коррекции всех одиночных и двойных ошибок при условии, что они находятся только на информационных позициях. По выражениям (12) нетрудно убедиться, что одиночная ошибка в контрольных элементах отображается опознавателем вида 7 6 5 4 3 2 1 0, у которого только одна переменная р не имеет знака инверсии. Следовательно, двум ошибкам, одна из которых находится на контрольной, а другая на информационной позициях, будет соответствовать опознаватель, отличающийся от выражений (13) только одним элементом (всего таких опознавателей 4∙8=32). Итак, чтобы исправить одиночную ошибку на информационных позициях <а3>, ..., <а0> при наличии второй на контрольных, необходимо к выражениям (13) добавить дизъюнктивно (по ИЛИ) 8 опознавателей двойных ошибок. А чтобы исправить две ошибки на информационных позициях, дополнительно к получаемым выражениям, надо дизъюнктивно «прибавить» соответствующие опознаватели (14).
Воспользуемся цифровой формой задания логических функций [1] 16-ричной системой записи двоичных чисел, отображающих опознаватели. Так правые части выражений (13), (14) иллюстрируют последовательный переход от алгебраической формы к цифровой - сначала в двоичный, а затем в n-мерной системе счисления.
С учетом сказанного, логические функции, описывающие выходные сигналы ППЗУ, используемые для коррекции ошибок (одиночных и двойных) на информационных позициях рассматриваемого кода, могут быть представлены следующими выражениями:
Za0(1)={R1,D0,D3,D5,D9,51,91,C1,F1,A2,37,CC}, Za1(1)={73,72,71,77,78,63,33,53,F3,A2,95,6E}, Za2(1)=(E6,E4,E7,E2,EE,66,A6,C6,F6,37,95,FB}, (15)
Za3( 1 )= {1D, 19,15,1F, 1 C,1D,3D,5D,9D,CC,6E,FB}.
Они будут корректными, если при переходе к алгебраической форме строго придерживаться последовательности записи аргументов:
<p7p6p5p4p3p2p1p0> (16)
В (16) р0 является переменной самого младшего разряда, а переменная р7 -самого старшего (с «весом» W=2 =<128>) разряда. Выражения (15) и последовательность (16) содержат полную информацию для выбора и программирования ППЗУ: (16) указывает необходимое число и порядок подачи сигналов на адресные входы; а (15) содержит список адресов, по которым должны быть записаны единицы при программировании отдельных выходов ППЗУ, обозначенных функциями Za0, Za1, Za2 и Za3. Таким образом, для реализации декодера опознавателей потребуется ППЗУ с 8 адресными входами и 4 выходами (емкость памяти 2∙4=1Кбит).
На рис.8 представлена функциональная схема узла формирования сигналов коррекции для комбинационного ДШ, рассмотренного псевдоциклического (12,4)-кода. Узел состоит из схемы реализации проверок (12) (это сумматоры D1,...,D10) и ДШ опознавателей на ППЗУ D11, запрограммированного на реализацию выражений (15).
Полную схему ДШКК этого кода легко получить на рис.7, если заменить «элементы» D3 и D4 схемой (рис.8.) Такой ДШКК позволит исправить любую одиночную и двойную ошибки, на каких бы позициях кодовой комбинации они не возникли. Вместе с тем, три ошибки приведут к трансформации переданного сообщения.
Достоинствами приведенных ДШ являются их высокое быстродействие, простота в настройке и управлении. К недостаткам следует отнести необходимость предварительной фиксации всех элементов (информационных, контрольных) принимаемой комбинации. Помимо комбинационных ДШ существуют декодирующие устройства циклических кодов последовательного типа. С ними можно ознакомиться по учебным пособиям [4,5].
Литература
Громаков Е.И., Собакин Е.Л. Логические устройства и их применение в автоматике: Учебное пособие. Томск, изд.ТПИ, 1982 - 95с.
Собакин Е.Л. Проектирование устройств телеуправления телесигнализации. : Учебное пособие по курсовому проектированию.- Томск, изд.ТПИ, 1983-95с.
Пупырев Е.И. Перестраиваемые автоматы и микропроцессорные системы.-М.: Наука, 1984-192с.
Тутевич В.Н. Телемеханика: Учебное пособие для вузов.-М.: Энергия, 1973-384с.; то же-2-е изд., перераб. и доп.-М.:Высшая школа, 1985-423с.
Ильин В.А. Телеуправление и телеизмерение.: Учебное пособие для вузов.-3-е изд., перераб. и доп.-М.:Энергоиздат., 1982-560 с.
