Мажоритарное декодирование линейных блочных кодов

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

Пусть m – кодируемая информационная последовательность, состоящая всего из одного символа m0 = 0 или 1, а соответствующее ей кодовое слово помехоустойчивого (избыточного) кода имеет вид U = ( m0 , m0 , m0 ), то есть ( 000 ), если m0 = 0, или ( 111 ), если m0 = 1 (код с трехкратным повторением).

Допустим, передано кодовое слово U = (111) и в первом символе произошла одна ошибка, то есть принята последовательность r = ( 011 ).

Вопрос: какая последовательность передавалась, U = ( 000 ) или U = (111)?

Здравый смысл подсказывает, что, скорее всего, передавалось кодовое слово U = ( 111 ), так как в противном случае ошибка должна была бы исказить два символа, чтобы кодовое слово U = ( 000 ) превратилось в последовательность вида r = ( 011 ). Может быть, и не отдавая себе отчета в правиле принятия решения (о том, что передавалось), мы приняли решение по большинству – мажоритарно.

В общем случае, для линейных блочных кодов с более сложной структурой, решение будет не таким простым, но идея мажоритарного декодирования – та же: решение принимается по большинству. Как и в жизни, полагается, что большинство дает более правильный ответ.

Рассмотрим более сложный пример – мажоритарное декодирование для (7,4)-кода Хемминга.

Пусть передано кодовое слово (7,4)-кода – U = (U0 ,U1 ,U2 ,U3 ,U4 ,U5 ,U6 ), символы которого сформированы в соответствии с системой проверочных уравнений (правилом кодирования) вида:

U0 = m0 ,
U1 = m1 ,
U2 = m2 ,
U3 = m3 , (3.28)
U4 = m0 + m2 + m3 ,
U5 = m0 + m1 + m2 ,
U6 = m1 + m2 + m3 .

На входе декодера наблюдается принятая последовательность r = (r0 , r1 , r2 , r3 , r4 , r5 , r6 ), и необходимо ее декодировать, то есть определить вид передаваемой информационной последовательности m .

Поскольку невозможно быть абсолютно уверенными в правильности декодирования, мы можем говорить лишь об оценке информационной последовательности m*.

Для начала предположим, что ошибок в принятой последовательности r нет, то есть r = U .

Тогда по принятой последовательности r можно легко найти оценку переданной информационной последовательности m*, причем не единственным способом.

Во-первых, можно сразу записать

m0 *1 = r0 ,

m1 *1 = r1 , (3.29)

m2*1 = r2 ,

m3*1 = r3 ,

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

Но это не единственный способ. Учитывая, что для элементов поля GF(2) справедливо условие mi + mi = 0 ( то есть 1+1 = 0 и 0+0 = 0), можно записать еще несколько систем уравнений для определения mi*:

 

m0 *2 = r2 + r3 + r4 , m0 *3 = r1 + r2 + r5 ,

m1 *2 = r0 + r2 + r5 , m1 *3 = r2 + r3 + r6 ,

m2*2 = r0 + r3 + r4 , m2*3 = r0 + r1 + r5 ,

m3 *2 = r0 + r2 + r4 ; m3 *3 = r1 + r2 + r6 ;

(3.30)

m0 *4 = r1 + r4 + r6 , m0 *5 = r3 + r5 + r6 ,

m1 *4 = r0 + r4 + r6 , m1 *5 = r3 + r4 + r5 ,

m2*4 = r4 + r5 + r6 , m2*5 = r1 + r3 + r6 ,

m3 *4 = r0 + r5 + r6 ; m3 *5 = r1 + r4 + r5 .

Таким образом, получилось пять независимых систем уравнений для определения одних и тех же компонент вектора m*, причем, они будут совместными (иметь одинаковые решения) только при отсутствии ошибок в принятой последовательности r, то есть при r = U. В противном случае решения для mi*, даваемые различными системами, будут разными.

Однако можно заметить следующее: в выражениях для mi* каждый из элементов принятой последовательности ri присутствует не более двух раз (то есть не более чем в двух уравнениях из пяти).

Если считать, что в принятой последовательности возможна только одиночная ошибка (а с ошибкой большей кратности этот код не справляется), то ошибочными будут решения не более чем двух уравнений из пяти для каждого из элементов mi*, остальные три уравнения дадут правильное решение. Тогда правильный ответ может быть получен по "большинству голосов", или мажоритарно.


Устройством, которое принимает решение по "большинству", является так называемый мажоритарный селектор. При этом схема мажоритарного декодера для одного из символов принятой последовательности (7,4)-кода Хемминга может выглядеть, например, следующим образом (рис.3.7):

Рис. 3.7

Здесь мажоритарный селектор выполнен в виде аналогового сумматора и компаратора напряжений (напряжение на выходе компаратора = 1, если на его входе больше единиц, и равно 0 в противном случае). Однако возможна и чисто цифровая реализация мажоритарного селектора: он просто выдаст на своем выходе 1, если на его входе больше единиц, и 0 – в противном случае.