Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Березкин Основы теории информации и кодирования Лабораторный практикум 2009

.pdf
Скачиваний:
238
Добавлен:
17.08.2013
Размер:
715.03 Кб
Скачать

12. Какими показателями можно оценивать качество корректирующих кодов?

Лабораторная работа 8

ПОСТРОЕНИЕ КОДИРУЮЩИХ И ДЕКОДИРУЮЩИХ УСТРОЙСТВ ЦИКЛИЧЕСКОГО КОДА ХЭММИНГА

Цель: изучение и исследование принципов построения структур многоканальных кодеров и декодеров циклического кода Хэмминга, исправляющего однократные ошибки.

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

Для кодирования и декодирования циклических кодов применяются многотактные линейные схемы, называемые часто фильтрами или сдвигающими регистрами с обратными связями. Основными компонентами этих схем являются элемент задержки на один такт и сумматор по модулю 2.

Структура фильтра описывается матрицей связей между его элементами

M = m ij , i , j = 1, r ,

где r – количество элементов задержки в фильтре, а m ij = 1 , если выход j -го элемента задержки связан со входом i -го элемента задержки, в противном случае mij = 0 .

Вектор-столбцам матрицы M поставим в соответствие полиномы

r

μj (x) = mij xi1 , j =1, r .

i=1

Тогда матрицу M можно записать в виде

M = μ1 (x),μ2 (x),...,μr (x) .

Полиномы μ j (x) выберем таким образом, чтобы

71

μ1 ( x) g1 + g 2 x + ... + g r x r 1

x 1 ,

 

 

 

 

μ2 ( x) xμ1 ( x) 1 ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

μ3 ( x) x 2μ1 ( x) x ,

 

 

 

 

 

 

 

 

 

 

 

 

 

mod g ( x) ,

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

μr ( x) x

r 1

μ1 ( x)

x

r 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

где g(x) =1+ g1 x + g2 x2 +...+ gr xr

порождающий многочлен.

Тогда схема, описываемая матрицей связей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

g 1

 

1

0 ...

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

g 2

 

0

1 ...

0

 

 

M =

 

x 1 ,1, x ,..., x r 2

 

=

 

 

 

...

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

g r 1

0

0 ...

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

g r

 

0

0 ...

0

 

 

позволяет выполнять деление на полином g(x) .

 

 

 

 

Действительно,

 

если

исходному

состоянию

фильтра

Ω(0) = (ω , ω

2

,..., ω

r

)

поставить

в

соответствие

полином

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ω( 0) ( x) = ω1 + ω2 x + ... + ωr x r 1 , то состояние фильтра в следующем такте (на вход схемы информация не поступает) равно

Ω(1) ( x) ≡ Ω( 0 ) M t = ω1 x 1 + ω2 + ω3 x + ... + ωr x r 2

(ω1 + ω2 x + ... + ωr x r 1 ) x 1 = Ω( 0 ) ( x) x 1 mod g ( x),

где M t – транспонированная матрица связей.

Входную цепь фильтра построим таким образом, чтобы

Ω( i ) ( x ) [Ω( i 1) ( x ) + si 1 ]x 1 mod g ( x ) ,

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

Если начальное состояние Ω(0) (x) = 0 и на вход фильтра поступает последовательность символов s0 , s1 ,..., sn 1 , а эта по-

72

следовательность соответствует коэффициентам произвольного полинома степени n 1: S(x) = s0 + s1 x +... + sn1 xn1 , то фильтр будет последовательно принимать состояния

Ω(1) (x) s0 x1,

 

 

 

 

 

 

 

 

 

Ω(2) (x)

(s x1

+ s )x1 = s x2 + s x1

 

 

 

,

 

 

 

 

 

 

0

1

 

0

 

 

1

mod g(x) .

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

Ω(n) (x)

s

0

xn

+ s x(n1)

+...+ s

n1

xn1

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

Следовательно, Ω( n) (x) s

0

+ s x + ... + s

n1

x n1 mod g(x)

,

 

 

 

 

 

 

 

1

 

 

 

 

 

так как xn

1mod g(x) .

 

 

 

 

 

 

 

 

 

После

поступления последнего

символа

 

sn1 содержимое

фильтра будет равно остатку от деления полинома S(x) на g(x) .

 

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

Кодер работает следующим образом. Сначала ключ находится в 1-м положении, и информационные разряды поступают на вход фильтра, который вначале находится в нулевом состоянии, и непосредственно в линию связи. Затем ключ переключается во 2-е положение. В этом случае обратная связь в фильтре размыкается и контрольные разряды последовательно "выдвигаются" в линию. Таким образом, к концу передачи кодового слова фильтр оказывается в нулевом состоянии.

Формально работа кодера описывается следующим образом. После поступления k информационных символов содержимое фильтра равно

Ω(k ) (x) s

0

xk + s xk +1 +... + s

k 1

x1

 

 

 

1

 

 

 

xk (s

0

+ s x +... + s

k 1

xk 1 ) xk

S(x) xnk S(x) mod g(x),

 

 

1

 

 

 

которое совпадает с контрольным вектором.

73

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

последовательно. В этом случае необходимо уметь строить линейные фильтры (кодеры), содержащие ν входов и ν выходов.

Последовательные состояния и значения выхода рассмотренных одноканальных линейных фильтров описываются матричными уравнениями

Ω(i) = Ω(i1) Mt +si F ,

yi = Ω( i1) B + si Ψ ,

где Ω( i ) = (ω1(i ) ,..., ω(ri ) ) – вектор состояния фильтра в момент времени (i) ; Mt – транспонированная матрица связей; si ( yi ) – значение входного (выходного) символа в момент времени (i) ; F – матрица связей (1×r) между входом и элементами задержки фильтра; B – матрица связей (r ×1) между элементами задержки и выходом фильтра; Ψ – матрица связей (1×1) между входом и выходом фильтра.

Если известны Mt , F, B и Ψ , то соответствующие уравнения

для ν -канального аналога фильтра, содержащего ν входов и ν выходов, имеют следующий вид (известный результат из математического аппарата линейных последовательностных машин):

Ω( i) = Ω(i1) Mtν + S(i) F ,

Y(i) = Ω(i1) B + S(i) Ψ ,

где S (i) = (s1(i) ,..., sν(i) ) – входной вектор в момент времени (i) ; Y (i) = ( y1(i) ,..., yν(i) ) – выходной вектор в момент времени (i) ;

74

B =

B

Mt B

... Mtν 1 B

 

– матрица связей

( r × ν )

между

элементами задержки и ν выходами фильтра;

 

 

 

 

 

F Mtν−1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F =

 

F M ν−2

– матрица связей ( ν×r ) между входами фильтра

 

 

t

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

 

и элементами задержки;

 

 

 

 

 

 

 

 

 

Ψ

F B

F Mt B ...

F Mtν−2 B

 

 

 

 

 

 

 

 

 

 

0

Ψ

F B ...

F Mtν−3 B

 

матрица

связей

Ψ =

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

...

Ψ

 

 

 

 

(ν × ν) между входами фильтра и его выходами.

 

 

В

качестве

примера

рассмотрим построение

одноканального

(ν =1) и двухканального кодера (ν = 2) для разделимого цикличе-

ского кода (7,4), порождаемого многочленом g(x) =1 + x2 + x3 . Структура одноканального кодера задается матрицами

M =

0

1

0

, Mt =

0

1

1

 

1

0

1

1

0

0

,

 

1

0

0

 

0

1

0

 

 

1

 

 

 

 

 

F =

 

g1 g2 ... gr

 

=

 

0 1 1

 

, B =

0

, Ψ =

 

1

 

.

 

 

 

 

 

 

 

0

 

 

 

 

 

и имеет вид, представленный на рис. 8.1.

 

 

 

 

 

При известных схемотехнических решениях матрицы B(B ) и Ψ(Ψ* ) , в принципе, можно и не строить. В большей степени они

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

75

D1 D2 D3

Выход 2

Вход

1

Рис. 8.1. Структура одноканального кодера

Матричное описание двухканального аналога имеет вид

Mt2 =

0

 

1

 

1

 

 

0

1

1

=

1

1

0

 

, F =

 

F Mt

 

=

 

1 1 0

 

 

 

 

 

 

 

 

 

 

1

0

0

 

 

1 0 0

0

1

1

 

 

 

 

,

 

0

 

1

 

0

 

 

0

1

0

 

1

0

0

 

 

 

 

 

 

F

 

 

 

0 1 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M 2 =

 

1

0

1

 

, F Mt =

 

 

 

 

 

0

1

1

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 1 0

 

 

0

1 1

 

 

 

1

0

0

 

 

1 1 0

 

,

 

 

 

 

 

 

 

 

 

 

 

0

1

0

 

 

 

 

 

 

 

 

 

 

0

1

0

 

 

 

 

 

 

 

 

 

 

 

аего структура представлена на рис. 8.2.

Врассмотренном примере количество информационных разря-

дов k кратно ν. В общем случае это условие не выполняется и

 

k

 

после выполнения

z =

 

 

тактов (квадратные скобки означают

 

 

 

ν

 

ближайшее целое большее число), содержимое ν-канального кодера будет равно: R (x) = R(x) x(zν−k ) mod g(x) , где R(x) соответствует контрольному коду. Поэтому требуется коррекция содержимого фильтра, если (z ν − k) 0 . Однако коррекции мож-

но избежать, если полином S ( x) , соответствующий информаци-

онным разрядам, умножить на x( zν−k ) .

В этом

случае

R (x) R(x) x( z ν−k ) x( z ν−k ) R(x) mod g(x) .

Известно,

что ум-

ножение равносильно операции сдвига. Реализация сдвига заключается в том, что перед младшим информационным разрядом s0

76

приписывается (z ν −k) фиктивных нулей. При этом разряд

s0

поступает на

(z ν−k) +1 вход (канал)

кодера, разряд s1

на

[(z ν−k) +2]-й канал и т.д.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выход 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вход 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= D2

Выход 2

Вход 2

Рис. 8.2. Структура двухканального кодера

Блок-схема одноканального декодирующего устройства представлена на рис. 8.3.

Коэффициенты s0 , s1 ,..., sn1 полинома S(x) последовательно

поступают на вход буферного ЗУ и одновременно на вход многотактного фильтра, с помощью которого S(x) делится на g(x) . Если

ошибка отсутствует, то после поступления sn1 содержимое фильтра будет равно нулю. Получение ненулевого результата свидетельствует о наличии обнаруживаемой ошибки E(x) = xie(x) .

Если продолжить работу декодирующего устройства (синхронно производить сдвиги БЗУ и блока деления в автономном режиме), то последовательные состояния фильтра будут равны

77

 

C

0

 

i

e(x) ,

 

 

 

(x) x

 

C1 (x) xi1e(x) ,

 

 

 

 

...

 

mod g(x) ,

 

 

 

 

 

i

 

 

i

 

 

 

C

(x) x

e(x) = e(x)

т. е. вычет вида ошибки будет воспроизведен точно через i тактов. В простейшем случае, когда возникла одиночная ошибка E ( x) = x i , т.е. e(x) =1, то на i -м такте Ci (x) 1 или

C i = 00...01. При появлении такой комбинации на выходе логической схемы должен появиться сигнал, который инвертирует ошибочный символ.

ЛС

ФИЛЬТР

Вход

Выход

 

БЗУ

Рис. 8.3. Структура декодирующего устройства

Блок-схема ν-канального декодирующего устройства представлена на рис. 8.4.

Принцип построения ЛС заключается в следующем. Для приема

 

n

n

 

всего слова длиной

разрядов требуется z′ =

 

 

тактов. Поэто-

 

 

 

 

ν

 

му при наличии ошибки вида xi состояние фильтра после приема кодового слова будет равно

78

C 0 (x) = xi( z′ ν−n) mod g(x) ,

а последующие состояния при автономной работе будут равны:

C 1 ( x) = x i ( z′ ν−n )−ν ,

 

 

 

C 2

 

 

ν−n )2 ν ,

 

 

 

( x) = xi( z

 

 

 

 

. . .

 

 

 

 

mod g(x) .

C j

 

 

 

 

 

 

 

 

 

(x) xi( z ν−n)j ν ,

 

 

 

 

 

. . .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ФИЛЬТР

 

 

 

 

 

 

...

 

 

 

 

 

ЛС

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n-k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

1

2

БЗУ

2

...

...

ν

 

ν

Рис. 8.4. Структура декодирующего устройства

Пусть i = j ν +β на в такте j . Тогда

(β < ν) , т.е. ошибка должна быть исправлена j -м такте автономной работы состояние

фильтра равно C j (x) x j ν+β−( z′ ν−n)j ν xβ−( z′ ν−n) , т. е. логическая схема должна распознавать следующие вычеты:

79

при

β=0

ν − n )

x ( z

при

β =1

 

x1( z ν−n )

...

,

 

,

mod g(x) .

xν−1( z′ ν−n)

при β = ν −1

Таким образом, ЛС в ν -канальном декодере содержит ν выходов. Например, пусть n = 7 , ν = 2 , g(x) =1+ x2 + x3 , тогда

z′ = 4 и логическая схема будет представлять собой две схемы совпадения на следующие коды:

при β=0 x1 x71 x6 x + x2 , то есть 0 1 1;

при β=1

x11 x0 1 , то есть 1 0 0 .

ПОДГОТОВКА К ВЫПОЛНЕНИЮ РАБОТЫ

1.Изучить теоретический материал.

2.Построить одноканальное кодирующее устройство цикличе-

ского кода Хэмминга (7,4) с порождающим многочленом g(x) =1+ x + x3 .

3. Построить трехканальное кодирующее устройство циклического кода Хэмминга (7,4) с порождающим многочленом g(x) =1+ x + x3 .

4.Продемонстрировать процесс формирования проверочных разрядов.

5.Построить структуру трехканального декодирующего устройства циклического кода Хэмминга (7,4) с порождающим много-

членом g(x) =1+ x + x3 .

6.Продемонстрировать процесс исправления произвольной однократной ошибки.

7.Продумать действия, когда количество информационных

разрядов k или длина кода n не кратны канальности ν. 8. Отразить подготовку в лабораторном отчете.

80

Соседние файлы в предмете Интегрированные системы управления и проектирования