Министерство образования Российской Федерации Таганрогский государственный радиотехнический университет

advertisement
№
Министерство образования Российской Федерации
Таганрогский государственный радиотехнический
университет
РУКОВОДСТВО
к лабораторной работе №4
Декодирование циклических кодов
по курсу
ТЕОРЕТИЧЕСКИЕ ОСНОВЫ
ИНФОРМАЦИОННО-ИЗМЕРИТЕЛЬНОЙ ТЕХНИКИ
Для студентов специальности 190900,190304
Таганрог 2000
УДК 621.391.256(076.5)
Составитель С.В. Кавчук
Руководство к лабораторной работе №4 "Декодирование циклических кодов" по курсу "Теоретические основы информационноизмерительной техники". Таганрог: Изд-во ТРТУ, 2000.24c.
Рассматриваются способы описания и методы декодирования
циклических кодов. Разрабатываются декодеры циклических кодов
по синдрому для различных режимов декодирования. С помощью
программной системы моделирования исследуется функционирование разработанных устройств.
Табл. 6. Ил. 9. Библиогр. : 3 назв.
Рецензент С.В. Николаев, канд. техн. наук, доцент кафедры
АСНИиЭ ТРТУ.
3
1. ЦЕЛЬ РАБОТЫ
Изучение принципов обнаружения и исправления ошибок при декодировании
циклических кодов и способов технической реализации устройств декодирования.
2. ПРОГРАММА РАБОТЫ
2.1. Программа домашней подготовки
к лабораторной работе
2.1.1. Изучить способы описания циклических кодов и методы обнаружения и
исправления ошибок при их декодировании.
2.1.2. Согласно варианту индивидуального задания построить проверочные матрицы циклического кода в канонической и циклической формах представления.
Оценить корректирующую способность кода.
2.1.3. Для заданного варианта синтезировать структурную схему декодирующего устройства на основе свойства образующего полинома.
2.1.4. Синтезировать структурную схему декодирующего устройства на основе
свойства проверочного полинома.
2.2. Программа выполнения лабораторной работы
2.2.1. Ознакомиться с диалоговой программной системой моделирования цифровых устройств на ПЭВМ и составом дискретных элементов в ее библиотеке.
2.2.2. Составить из библиотечных элементов системы моделирования функциональные схемы декодирующих устройств согласно варианту индивидуального задания.
2.2.3. Создать в диалоге на ПЭВМ программные модели исследуемых устройств
и проверить путем моделирования их работоспособность.
2.2.4. Исследовать каждую разработанную схему устройства декодирования
циклического кода. Для заданных преподавателем входных комбинаций циклического кода снять временные диаграммы моделирования кодовых сигналов на входе,
элементах памяти и выходе декодирующего устройства в режимах обнаружения и
исправления ошибок. Сделать выводы.
4
3. ОСНОВНЫЕ СВЕДЕНИЯ
3.1. Способы описания циклического кода
3.1.1. Групповой циклический код принято обозначать (n,m), где n - длина кодовой комбинации, m - число информационных символов или разрядов первичного
неизбыточного кода. При этом число контрольных символов k = n - m.
Двоичная комбинация разделимого циклического кода имеет вид
k 4
647
4m 48
4 647
8
F = bn −1bn − 2 ...bk bk −1 ...b1b0 ,
1444
424444
3
n
где bk −1 ÷ b0 ⎯ контрольные символы и bn−1 ÷ bk ⎯ информационные символы.
При описании циклического кода наиболее удобной является запись его двоичной комбинации в виде многочлена F(x) некоторой фиктивной переменной x, а
именно
F ( x ) = bn −1 x n −1 + bn − 2 x n − 2 + K + b1 x 1 + b0 x 0 .
Например, двоичная комбинация F = 1010011 семиразрядного циклического
кода (7, 4) представляется полиномом
F(x) = 1x6+0x5+1x4+0x3+0x2+1x1+1x0 = x6+x4+x+1 → 1010011,
где стрелка обозначает соответствие двух записей.
В теории циклического кодирования для множества комбинаций и соответствующих им полиномов вводятся операции сложения, умножения и деления. Сложение многочленов выполняется как поразрядное сложение по модулю два. При этом
x i ⊕ x i = 0 , где ⊕ - знак сложения по модулю два. Операция умножения (деления)
многочленов включает их перемножение (деление) по обычным правилам с дальнейшим приведением подобных членов по модулю два.
При умножении полиномов старшая степень произведения может быть больше
n-1. Для того, чтобы остаться в рамках n-разрядной комбинации циклического кода
вводится операция умножения по модулю двучлена
F1(x)F2(x) [mod (xn+1)] = Rem [F1(x)F2(x)/(xn+1)],
где Rem - остаток от деления произведения F1(x)F2(x) на двучлен xn+1.
3.1.2. Построение циклического кода основано на использовании образующего
полинома P(x). Образующий полином выбирается в разложении двучлена xn+1 на
неприводимые многочлены. Старшая степень образующего полинома определяется
числом контрольных символов k, а число ненулевых членов полинома P(x) должно
быть больше или равно минимальному кодовому расстоянию d.
Циклический код (n,m) можно описать полно и компактно с помощью образующей матрицы в канонической форме [1, 2]
(3.1)
Fm,n = ⏐Im Rm,k⏐,
где Im - единичная квадратная матрица размерности m×m, у которой на главной диагонали расположены единицы, а все остальные элементы равны нулю;
5
Rm,k - матрица контрольных символов размерности m×k.
Строки матрицы Rm,k должны удовлетворять двум условиям:
1) содержать не менее d-1 единичных символов;
2) отличаться друг от друга не менее чем в d-2 разрядах.
Матрица контрольных символов Rm,k находится следующим формальным приемом. Единица с рядом нулей делится на образующий полином, записанный в виде
двоичной последовательности. В процессе деления определяются m промежуточных остатков деления. Эти остатки, записанные в обратном порядке, образуют
строки матрицы контрольных символов.
В целом каждая строка образующей матрицы Fm,n должна содержать не менее d
ненулевых символов и отличаться от любой другой строки не менее чем в d позициях (разрядах).
3.1.3. Вторым способом описания циклического кода является проверочная матрица. Она может быть представлена или в канонической форме или в циклической
форме.
Проверочная матрица в канонической форме имеет вид
(3.2)
Hk,n = ⏐RТm,kIk⏐ = ⏐Qk,mIk⏐,
Т
где R m,k = Qk,m - транспонированная матрица контрольных символов, построенная
на позициях информационных символов;
Ik - единичная квадратная матрица ранга k, построенная на позициях контрольных символов.
Проверочная матрица Hk,n используется для обнаружения и исправления ошибок в кодовой комбинации на приемной стороне. Строки проверочной матрицы
дают состав проверок на четность:
d k − j =<
n
∑
i =1
> hij ⋅ bn −1 j = 1,…,k ,
(3.3)
где dk-j - результат j-й проверки на четность;
hi,j - элемент j-й строки и i-го столбца проверочной матрицы;
bn-i - разряды комбинации циклического кода;
< ∑ > - знак суммирования по модулю 2.
Двоичная последовательность D=dk-1dk-2...d1d0, составленная из результатов проверок на четность, называется синдромом или опознавателем ошибки. Синдром
можно представлять в виде полинома
D = dk-1dk-2...d1d0 → D(x) = dk-1xk-1+…+d1x1+d0x0.
Если синдром состоит из одних нулей, то комбинация циклического кода считается безошибочной. Ненулевая величина синдрома (D ≠ 0) говорит о наличии
ошибок.
На практике широко применяется циклическая форма проверочной матрицы
6
h0
0
h1
h0
.
h1
.
.
hm
.
0
hm
0
0
.
.
.
.
0
0
−
−
−
−
−
−
− −
−
−
−
−
−
−
−
−
− −
−
0
0
.
.
0
h0
h1
.
hm
H * k ,n = −
.
Первая строка такой матрицы зависит от вида проверочного полинома
xn +1
H (x ) =
= hm x m +...+ h1 x 1 + h0 ,
P(x )
где hi - двоичные символы (0 или 1). Остальные строки получаются циклическим
сдвигом вправо первой строки.
Вид первой строки проверочной матрицы определяется проверочным полиномом и находится следующим образом. Полином H(x) представляется в виде кодовой комбинации H=hmhm-1...h1h0. Запись этой комбинации в обратном порядке и
приписывание к ней справа k-1 нулевых символов дает первую строку проверочной
матрицы H*k,n.
Пример 1. Пусть циклический код (15, 6) задается образующим полиномом
P(x) = x9+x6+x5+x4+x+1→1001110011 из разложения двучлена x15+1. Требуется
составить образующую и проверочную матрицы данного кода, а также оценить его
корректирующую способность.
Разделим единицу со многими нулями на образующий полином
1 0 0 0 0 0 0 0 0 0 0 . . . . . 1 0 01 1 1 0 0 1 1
100111
1001110011
0
0
1
1
1
0
0
1
1
0
→
1-й
остаток
⊕
0000000000
0 1 1 1 0 0 1 1 0 0 → 2-й остаток
⊕
0000000000
⊕ 1 1 1 0 0 1 1 0 0 0 → 3-й остаток
1001110011
1 1 1 1 0 1 0 1 1 0 → 4-й остаток
⊕
1001110011
⊕ 1 1 0 1 0 0 1 0 1 0 → 5-й остаток
1001110011
1 0 0 1 1 1 0 0 1 → 6-й остаток
⊕
Выписывая полученные остатки (подчеркнуты волнистой линией) снизу вверх
(в обратном порядке), получим матрицу контрольных символов Rm,k
7
b14 b13 b12 b11 b10 b9 b8 b7 b6
H9,15=
1
0
0
1
1
1
0
0
1
1
1
0
1
0
0
1
0
1
1
1
1
1
0
1
0
1
1
1
1
1
0
0
1
1
0
0
0
1
1
1
0
0
1
1
0
0
0
1
0
1
0
0
1
1
1
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
b5 b4 b3 b2
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
0
0
b 1 b0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
d8
d7
d6
d5
d4
d3
d2
d1
d0
100111001
110100101
111101011
R6 ,9 =
111001100
011100110
001110011
и согласно (3.1) образующую матрицу Fm,n .
Так как строки образующей матрицы имеют минимальный вес (число единиц)
W = 6, то минимальное кодовое расстояние кода (15, 6) d=W=6. Найдем корректирующую способность кода на основании оценок Хемминга для минимального кодового расстояния:
⎧ r + 1 ⎯ при обнаружении ошибок;
⎪
d = ⎨ 2 s + 1 ⎯ при исправленнии ошибок;
⎪ r + s + 1 (r > s) ⎯ при обнаружении и исправлении ошибок,
⎩
где r и s - кратности (число) обнаруживаемых и исправляемых ошибок соответственно. Отсюда следует, что циклический код при d=6 позволяет или только обнаруживать ошибки кратности r=5, или одновременно обнаруживать ошибки кратности r=3 и исправлять ошибки кратности s=2.
Согласно (3.2) проверочная матрица в канонической форме имеет вид
b14 b13 b12 b11 b10 b9 b8 b7 b6
1
0
0
1
H9,15 = 1
1
0
0
1
1
1
0
1
0
0
1
0
1
1
1
1
1
0
1
0
1
1
1
1
1
0
0
1
1
0
0
0
1
1
1
0
0
1
1
0
0
0
1
0
1
0
0
1
1
1442443
R6T,9 =Q9 ,6
1
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
b5 b4 b3 b2
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
0
0
b 1 b0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
14444244443
d8
d7
d6
d5
d4
d3
d2
d1
d0
I 9 ,9
Строки проверочной матрицы H9,15 дают состав проверок на четность,
например:
d8 = b14 ⊕ b13 ⊕ b12 ⊕ b11 ⊕ b8
d7 = b13 ⊕ b12 ⊕ b11 ⊕ b10 ⊕ b7
- - - - - - - - - - - - - - - d0 = b14 ⊕ b13 ⊕ b12 ⊕ b9 ⊕ b0 .
Составим проверочную матрицу H*9,15 в циклической форме. Разделив двучлен
8
x15+1 на образующий полином, найдем проверочный полином
x 15 + 1
= x 6 + x 3 + x 2 + x + 1 → 1001111 .
x 9 + x6 + x5 + x4 + x + 1
Записывая кодовую комбинацию Н=1001111 проверочного полинома в обратном порядке и приписывая к ней справа (к-1)=8 нулевых символов, получим первую строку матрицы Н*9,15 . Остальные строки получаются циклическим сдвигом
вправо первой строки. В результате проверочная матрица в циклической форме будет иметь вид
H( x ) =
b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0
1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 d8
0 1 1 1 1 0 0 1 0 0 0 0 0 0 0 d7
0 0 1 1 1 1 0 0 1 0 0 0 0 0 0 d6
H*9,15 =
Согласно матрице
0
0
0
0
0
0
1
0
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1 1
0 1
0 0
1
1
1
1
1
1
0
0
0
0
0
0
0
1
H 9∗,15
1 0 0
1 1 0
0
0 0 0 d5
0 0 0 d4
0 0 1 0 0 0 d3
1 0 0 1 0 0 d2
1 1 0 0 1 0 d1
1 1 1 0 0 1 d0
1 0 0
0 1 0
, состав проверок на четность принимает вид
d8 = b14 ⊕ b13 ⊕ b12 ⊕ b11 ⊕ b8 ;
d7 = b13 ⊕ b12 ⊕ b11 ⊕ b10 ⊕ b7 ;
- - - - - - - - - - - - - - - d0 = b6 ⊕ b5 ⊕ b4 ⊕ b3 ⊕ b0 .
3.2. Методы обнаружения и исправления ошибок
3.2.1 На выходе канала связи ошибочная комбинация циклического кода может
быть представлена как
F ′ = F ⊕ L → F ′( x ) = F ( x ) ⊕ L ( x ) ,
где F - безошибочная комбинация;
L=ln-1ln-2...l1l0 - двоичная последовательность (комбинация ошибки) длиной n,
содержащая единицы только в тех разрядах, которые искажены;
F (x) и F ′( x ) - кодовые полиномы;
L(x) - полином ошибок.
По определению циклического кода, его кодовые комбинации F удовлетворяют
двум условиям :
а) без остатка делятся на образующий полином, т.е.
F (x) = 0 [mod P(x)] или R e m[ F ′( x ) / P( x ) ] = 0 ;
(3.3)
9
б) при умножении на проверочный полином дают тождественный нуль по модулю двучлена (xn+1), т.е.
⎡ F( x ) H ( x ) ⎤
F( x ) H ( x ) = 0 [ mod( x n + 1) ] или R e m ⎢
(3.4)
⎥=0.
⎣ xn +1 ⎦
Условия (3.3) и (3.4) лежат в основе методов обнаружения и исправления ошибок. При коррекции ошибок с использованием свойства образующего полинома
(3.3) определяется синдром (опознаватель) ошибок длины к
⎡ L( x ) ⎤
⎡ F( x ) ⊕ L( x ) ⎤
(3.5)
= R e m⎢
D( x ) = R e m[ F ′( x ) / P( x ) ] = R e m ⎢
⎥.
⎥
P( x )
⎦
⎣ P( x ) ⎦
⎣
В случае использования свойства проверочного полинома (3.4) вычисляется
синдром ошибок длиной n
⎡ L( x ) H ( x ) ⎤
⎡ F ′( x ) H ( x ) ⎤
⎡ { F( x ) ⊕ L( x ) } H ( x ) ⎤
D( x ) = R e m ⎢
⎥ = R e m⎢
⎥ = R e m⎢
⎥ .(3.6)
n
n
x +1
⎣ x +1 ⎦
⎣
⎦
⎣ xn +1 ⎦
В декодирующих устройствах соотношения (3.5) и (3.6) реализуются вычислителем синдрома. Если синдром D( x ) ≠ 0 , это свидетельствует о наличии ошибок в
принятой комбинации. Число возможных ненулевых синдромов M=2k-1. Если полиному ошибок L(x) соответствует индивидуальный синдром D(x), то по вычисленному синдрому можно определить полином ошибок и исправить принятый кодовый
полином путем его сложения по модулю 2 с полиномом ошибок:
F(x) = F'(x) ⊕ L(x).
(3.7)
Если разным ошибкам отвечает один и тот же синдром, то ошибки не различаются, их можно только обнаружить.
3.2.2. При анализе и синтезе декодирующих устройств вместо (3.5) набор синдромов удобно получать непосредственно из проверочной матрицы в канонической
форме. В матрице Hk,n i-столбец представляет собой синдром одиночной ошибки в
bn-i -разряде кодовой комбинации. Остальные синдромы находят поразрядным суммированием по модулю 2 столбцов проверочной матрицы Hk,n в различных сочетаниях.
Cиндром (3.6) также удобно находить из проверочной матрицы в циклической
форме. Однако для этого матрицу H*k,n нужно достроить, циклически сдвигая вправо ее строки до квадратной матрицы H*n,n ранга n . Тогда столбцы матрицы H*n,n
представляют собой n-разрядные синдромы одиночных ошибок в соответствующих
им разрядах кодовой комбинации. Остальные синдромы находят подобно матрице
Hk,n.
Пример 2. Найдем синдром одиночной ошибки в старшем разряде циклического кода (15, 6) из примера 1.
Достроим матрицу H*9,15 до квадратной формы, циклически сдвигая вправо ее
строки:
10
*
H 15
,15 =
b14
b13
b12
b11 b10
b9
b8
b7
b6
b5
b4
b3
b2
b1
b0
0 d 14
0 d 13
1
1
1
1
0
0
1
0
0
0
0
0
0
0
0
1
1
1
1
0
0
1
0
0
0
0
0
0
0
0
1
1
1
1
0
0
1
0
0
0
0
0
0
0
0
1
1
1
1
0
0
1
0
0
0
0
0
0
0
0
1
1
1
1
0
0
1
0
0
0
0
0
0
0
0
1
1
1
1
0
0
1
0
0
0 d 12
0 d 11
0 d 10
0 d9
0 d8
0
0
0
0
0
0
1
1
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
1
1
1
1
1
0
1
0
0
1
0
1
0
0
0
0
0
0
0
0
1
1
1
1
0
0
1
0
0
0
0
0
0
0
0
1
1
1
1
0
0
1
0
0
0
0
0
0
0
0
1
1
1
1
0
0
1
0
0
0
0
0
0
0
0
1
1
1
1
0
0
1
0
0
0
0
0
0
0
0
1
1 d2
1 d1
1
1
1
0
0
1
0
0
0
0
0
0
0
0
1 d0
0 d7
1 d6
0 d5
0 d4
1 d3
Первый столбец матрицы дает синдром одиночной ошибки в
разряде b14 :
D14,13=d14d13.....d0=100000000100111→D14(x)=x14+x5+x2+x+1.
Синдром двойной ошибки, например в разрядах b14 и b13, имеет вид
⊕ 100000000100111
D14,13=D14 ⊕ D13=
110000000010011
010000000110100 → x13+x5+x4+x2 .
3.2.3. Рассмотрим способы исправления ошибок по синдрому. Пусть код (n,m)
может исправлять все ошибки с кратностью s включительно. Тогда общее число
исправляемых ошибок равно числу индивидуальных синдромов:
s
N =
∑C
q= 1
q
n
≤M .
(3.8)
Для исправления ошибок по (3.7) нужно знать полином L(x). Он формируется
специальной решающей схемой, называемой селектором синдромов. Возможны два
способа определения полинома ошибок - параллельный и последовательный.
При параллельном определении полинома ошибок селектор настраивается на N
синдромов и формирует на выходе соответствующие им полиномы ошибок. Такой
селектор представляет собой комбинационную схему, с выхода которой снимается
кодовая комбинация ошибок Lj при подаче на вход кодовой комбинации синдрома
Dj, j=1,2,...,N.
Сложность селектора синдромов определяется количеством N селектируемых
синдромов. Число селектируемых синдромов для некоторых n и s, рассчитанное по
11
соотношению (3.8), приведено в табл. 3.1.
Таблица 3.1
Длина кода n
Кратность исправляемых ошибок s
Число селектируемых
синдромов N
1
15
2
3
1
31
2
3
15
120
575
31
496
4991
Из табл. 3.1 видно, что сложность селектора синдромов очень быстро возрастает с ростом n и s. В результате даже при относительно малой кратности исправляемых ошибок селектор становится практически нереализуемым.
Последовательный способ определения полинома ошибок позволяет уменьшить
сложность селектора синдромов, при этом используется свойство цикличности кода. Этот способ базируется на операции циклического сдвига синдрома в его вычислителе:
⎧ по модулю P(x) при декодировании согласно (3.5);
D j ( x ) = x q Di ( x )⎨
n
⎩по модулю ( x + 1 ) при декодировании согласно (3.6),
где Dj(x) и Di(x) - синдромы полиномов ошибок Lj(x) и Li(x); q - число сдвигов,
q=0,1,2,...,n-1.
Таким образом, в результате циклического сдвига синдрома Di(x) на q шагов
влево (в сторону старших разрядов) образуется синдром Dj(x).
Из множества N индивидуальных синдромов можно выделить T базовых синдромов:
s
T =
∑C
q= 1
q−1
n−1
.
(3.9)
Остальные N-T синдромов приводятся к базовым при помощи операции
циклического сдвига. Эти базовые синдромы называют корректорами D*j(x),
j=1,2,...,T.
Из канала связи обычно первым поступает старший разряд. При наличии в нем
ошибки он первым же должен исправляться. Поэтому в качестве корректоров выбираются синдромы, которым соответствуют комбинации ошибок, содержащие
единицу на позиции старшего разряда.
Селектор синдромов декодирующего устройства настраивается на T корректоров. Вычисленный на основании соотношения (3.5) или (3.6) опознаватель (синдром) ошибок принятой комбинации циклически сдвигается влево до тех пор, пока
не совпадет с одним из корректоров, на которые настроен селектор синдромов. Вид
корректора, с которым совпал опознаватель ошибок принятой комбинации, и число
шагов (тактов) сдвига q до такого совпадения указывают искаженные позиции в
принятой комбинации.
Отсутствие совпадения с корректорами при изменении q от 0 до n-1 говорит о
12
наличии обнаруженных, но неисправляемых ошибок.
Число селектируемых синдромов-корректоров D*(x) для некоторых n и s, рассчитаное по соотношению (3.9), приведено в табл. 3.2.
Таблица 3.2
Длина кода n
Кратность исправляемых ошибок s
Число селектируемых
синдромов Т
1
15
2
3
1
31
2
3
1
15
106
1
31
466
Из сравнения табл.3.1 и 3.2 следует, что при последовательном определении
полинома ошибок число селектируемых синдромов, а следовательно, и сложность
селектора значительно меньше, чем при параллельном определении. Тем не менее
при исправлении многократных ошибок сложность селектора и в данном случае
остается чрезмерной. Поэтому область применения декодирования по синдрому
ограничена в основном кодами с исправлением одиночных и двойных ошибок.
3.2.4. Техническую реализацию процесса исправления и обнаружения ошибок
при последовательном декодировании облегчает метод модификации сдвигаемого
синдрома. При этом для определения искаженных разрядов не требуется фиксации
вида корректора, c которым совпал опознаватель ошибок.
Как правило, исправление ошибок начинается со старшего (n-1)-го разряда принятой комбинации путем циклического сдвига вычисленного синдрома. При совпадении через q тактов сдвигаемого синдрома с одним из корректоров осуществляется
исправление ошибки в (n-1-q)-м разряде. Затем после исправления ошибки на (q+1)
такте производится модификация синдрома таким образом, чтобы он соответствовал полиному оставшихся неисправленных ошибок (полиному ошибок, у которого
двоичный символ ln-1-q=0). Другими словами, синдром s-кратной ошибки переводится в синдром (s-1)-кратной ошибки.
Циклический сдвиг модифицированного синдрома продолжается.При его совпадении с одним из корректоров через v тактов после модификации осуществляется
исправление ошибки в (n-1-q-v)-м разряде принятой комбинации и производится
следующая модификация синдрома.
Процесс исправления ошибок заканчивается через n тактов сдвига. На (n-1)-м
такте проверяется состояние вычислителя синдрома. Нулевой синдром в вычислителе свидетельствует об исправлении ошибок. Если синдром не равен нулю, то это
означает, что в принятом кодовом полиноме имеют место обнаруживаемые, но неисправляемые ошибки.
Наиболее просто задача модификации синдрома решается при исправлении однократных ошибок и обнаружении ошибок более высокой кратности (s=1, r=d-2). В
этом случае достаточно после исправления ошибки обнулить ячейки вычислителя
синдрома.
13
4. ТЕХНИЧЕСКИЕ УКАЗАНИЯ
4.1. Декодирующие устройства циклических
кодов на основе свойства образующего полинома
4.1.1. Структурная схема декодера циклических кодов по синдрому в
режиме обнаружения ошибок приведена на рис. 4.1. Схема управления,которая содержит генератор тактовых импульсов ГТИ, синхронизирующий работу декодера,
на рис. 4.1 не показана.
F(x) → bn-1...b0
Буферный регистр сдвига (БРС)
Вход
b0
b1
bn-2
...
bn-1
Запись
Буферный регистр памяти (БРП)
bk
... bn-2 bn-1
Выходы
И
Вычислитель синдрома
d0
d1 ... dk-2
dk-1
Селектор нулевого синдрома
И
Z
Стирание
НЕ
(n+1)-й ТИ
Рис. 4.1
Кодовая комбинация циклического кода поступает одновременно в nразрядный буферный регистр сдвига БРС и k-разрядный вычислитель синдрома
старшим разрядом вперед. Вычислитель синдрома представляет собой схему деления произвольного кодового полинома F ′( x ) на образующий полином:
P(x)=pkxk + pk-1xk-1 +...+ p1x + p0 ,
где pi - двоичные символы (0 или 1).
Схема деления показана на рис. 4.2, где Dt - триггер с внутренней задержкой;
M2 - сумматор по модулю 2.
14
Обратная связь
p1
p0
Вход
M2
Dt
0
M2
pk
pk-1
Dt
1
Dt
M2
F(x)
k-1 Выход
Рис. 4.2
Обратные связи регистра-делителя определяются видом многочлена P(x). Если
коэффициент pi=0, то i-я связь и, следовательно, сумматор по модулю 2 отсутствуют.
Селектор представляет собой комбинационную схему. Сигнал Z на ее выходе
определяется логической функцией
Z = d k −1 & d k −2 &...& d1 & d0 = dk −1vd k − 2 v...vd1vd0 ,
где d i , (i = 0…k-1) - двоичные коэффиценты синдрома D(x).
Таким образом, селектор нулевого синдрома может быть реализован с помощью схемы ИЛИ-НЕ, входы которой соединены с прямыми выходами ячеек памяти
вычислителя синдрома.
Время декодирования, измеряемое в тактах ГТИ, определяется временем вычисления синдрома, которое составляет n тактовых импульсов (ТИ). Обнаружение
ошибок осуществляется на (n+1)-м такте работы декодера. Если D(x)≠0, то Z=0 и
формируется сигнал "Стирание" (считывания информации при этом не происходит).
4.1.2. Структурная схема декодера последовательного действия в режиме исправления и обнаружения ошибок по синдрому приведена на рис.4.3.
Символы кодовой комбинации F' последовательно, начиная со старшего разряда, вводятся в n-разрядный БРС и одновременно в k-разрядный вычислитель синдрома, где за n тактов сдвига определяется остаток от деления кодового полинома
F ′( x ) на образующий полином P(x).
Затем в декодере производится еще n тактов сдвига. С каждым сдвигом буферный регистр покидает один символ, а в вычислителе синдрома появляется новый
синдром. Этот синдром будет совпадать с одним из корректоров, когда каждый из
ошибочных символов занимает крайнюю правую ячейку БРС. При этом селектор
синдромов-корректоров формирует логическую единицу (Y=1), которая, воздействуя на сумматор коррекции М2, исправляет искаженный символ. Исправленный
символ покидает декодер при следующем такте сдвига.
F(x) → bn-1...b0
Вход
Буферный регистр сдвига
F(x)
М2
Выход
Коррекция
15
Рис 4.3
Одновременно логическая единица с выхода селектора подается в вычислитель
синдрома, модифицируя синдром так, чтобы он снова соответствовал более простому полиному ошибок, которые еще подлежат исправлению. После исправления
последней ошибки все ячейки памяти вычислителя синдрома должны оказаться в
нулевом состоянии. Отсутствие нулевого состояния означает, что имеет место неисправляемая ошибка. Конечное состояние вычислителя синдрома фиксируется
селектором нулевого синдрома. Обнаружение неисправляемых ошибок
производится на (2n+1)-м такте сдвига как в схеме декодера на рис. 4.1.
Таким образом, декодирование здесь длится 2n тактов сдвига: n тактов затрачивается на вычисление синдрома D(x) и n тактов затрачивается на исправление ошибок. Новая кодовая комбинация не может быть принята до тех пор, пока предыдущая исправляется. Промежутки времени между принимаемыми кодовыми полиномами должны составлять не менее n тактов.
Вычислитель синдрома здесь в отличие от декодера на рис. 4.1 имеет дополнительную связь для модификации синдрома. Основу модификации составляет синдром-корректор D*n-1 = Dn-1 одиночной ошибки в старшем (n-1)-м разряде кодовой
комбинации. Обьясняется это тем, что любой синдром s ошибок может быть представлен как сумма по модулю 2 s синдромов одиночных ошибок (соответствующих
столбцов проверочной матрицы). Поэтому каждый корректор D*j в подобной сумме
16
обязательно содержит синдром Dn-1 одиночной ошибки в старшем разряде.
В зависимости от вида корректора D*n-1 возможны два способа модификации.
Если в корректоре D*n-1 старший разряд d*k-1=1, то для модификации достаточно
подать сигнал Y с выхода селектора на вход регистра-делителя. В этом случае схема
вычислителя синдрома принимает вид, показанный на рис. 4.4.
Модификация (Y от селектора)
М2
p1
p0
М2
Вход
pk-1
М2
Dt
F(x)
Dt
0
М2
Dt
1
pk
Dt
k-1
k-2
Рис 4.4
Второй способ модификации применяют, когда в корректоре D*n-1 старший разряд d*k-1=0. Схема вычислителя синдрома для этого случая приведена на рис. 4.5,
где связи модификации определяются видом синдрома:
D n∗−1( x ) = dk∗−1 x k −1 + d k∗− 2 x k − 2 + ...+ d1∗ x + d0∗ .
Если символ d*i=0, то i-я связь отсутствует.
p0
F(x)
Вход
p2
p1
М2
d∗k-1
Dt
0
М2
d∗0
pk
pk-1
Dt
М2
1
d∗1 ...
Dt
k-2
М2
d∗k-2
Dt
k-1
Y
Рис 4.5
Алгоритм модификации состоит в следующем. При исправлении ошибки на q-м
такте (Y=1) сдвигаемый синдром и синдром-модификатор D*n-1 складываются по
модулю 2. После исправления ошибки на (q+1)-м такте полученный результат фиксируется в вычислителе синдрома. При этом он сдвигается на один разряд в сторону старших разрядов.
Пример 3. Пусть задан циклический код (15, 6) из примера 1 с параметрами:
17
s=2, r=3, d=6, m=6, k=9, n=15 и P(x)=x9+x6+x5+x4+x+1. Требуется сформулировать
требования к селектору синдромов и разработать схему вычислителя синдрома для
декодера с делением принятой комбинации на образующий полином.
Режим работы декодера - исправление s=2 и обнаружения r=3 ошибок. Селектор синдромов должен настраиваться на Т корректоров:
T=
2
∑ C nq−−11 = C n0−1 + C n1−1 = 1 + (n − 1) = n = 15 .
q =1
Столбцы проверочной матрицы H15,6 из примера 1 дают синдромы одиночных
ошибок, приведенные в табл.4.1
Таблица 4.1
Искаженные
разряды
b14
b13
b12
b11
b10
b9
b8
b7
b6
b5
b4
b3
b2
b1
b0
Обозначение
синдрома
D*14
D13
D12
D11
D10
D9
D8
D7
D6
D5
D4
D3
D2
D1
D0
Вид синдрома
100111001
110100101
111101011
111001100
011100110
001110011
100000000
010000000
001000000
000100000
000010000
000001000
000000100
000000010
000000001
Примечание
корректор
Суммируя столбцы проверочной матрицы H15,6 в нужных сочетаниях, получим
остальные корректоры, сведенные в табл. 4.2.
18
Таблица 4.2
Искаженные
разряды
b14
b13
b14
b12
b14
b11
b14
b10
b14
b9
b14
b8
b14
b7
b14
b6
b14
b5
b14
b4
b14
b3
b14
b2
b14
b1
b14
b0
Обозначение
синдрома
D*14, 13
D*14, 12
D*14, 11
D*14, 10
D*14, 9
D*14, 8
D*14, 7
D*14, 6
D*14, 5
D*14, 4
D*14, 3
D*14, 2
D*14, 1
D*14, 0
Вид синдрома
Примечание
корректор
корректор
корректор
корректор
корректор
корректор
корректор
корректор
корректор
корректор
корректор
корректор
корректор
корректор
010011100
011010010
011110101
111011111
101001010
000111001
110111001
101111001
100011001
100101001
100110001
100111101
100111011
100111000
Так как корректор D*14 содержит единицу в старшем разряде (d*8=1), то используем первый способ модификации. Схема вычислителя синдрома показана на
рис.4.6.
Y от селектора
M2
Обратная связь
p0
F
M2
p1
0
p4
M2
1
2
3
p5
M2
4
p6
M2
5
p9
M2
6
7
8
Рис 4.6
Пусть на вход декодера подается комбинация ошибок в разрядах b13 и b11, т.е.
L=010100000000000. Процесс исправления декодером данной двойной ошибки и
модификации при этом сдвигаемого синдрома приведен в табл. 4.3.
19
Таблица 4.3
Такты
Вход
декодера
1
2
3
4
15
16
17
18
19
20
29
30
31
0
1
0
1
0
—
—
—
—
—
—
—
—
Ячейки вычислителя
синдрома
Выход
селектора
Обозначение синдрома
0
1
2
3
4
5
6
7
8
0
1
0
1
1
0
1
1
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
1
0
0
0
0
0
0
0
0
0
1
0
1
1
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
—
—
—
—
D13, 11
D*14, 12
D13
D*14
D=0
D=0
D=0
D=0
D=0
Выход
Y
Z
БРС
—
—
—
—
0
1
0
1
0
0
0
0
0
—
—
—
—
0
0
0
0
1
1
1
1
1
—
—
—
—
b14=0
b13=0
b12=0
b11=0
b10=0
b9=0
b0=0
—
—
декодера
—
—
—
—
—
0
1+1=0
0
1+1=0
0
0
0
запись
Пример 4. Построим схему вычислителя синдрома с делением принятой комбинации на образующий полином для декодера циклического кода (6, 2) с параметрами: S=1, r=2, d=4, m=2, k=4, n=6 и P(x)=x4+x3+x2+1.
Согласно (3.9), селектор синдромов настраивается на один корректор (T=1), соответствующий полиному ошибки L(x)=x5 → 100000:
⎡
⎤
x5
2
D 5∗ = D 5 ( x ) = R e m ⎢ 4
⎥ = x + x + 1 → 0111 .
3
2
⎢⎣ x + x + x + 1 ⎥⎦
Так как старший разряд корректора D*5 равен нулю (d*5=0), то используем второй способ модификации. Из рис 4.5 при D*5(x)=x2+x+1 и P(x)=x4+x3+x2+1 следует
схема вычислителя синдрома, показанная на рис. 4.7.
F(x)
Вход
М2
p2
p1=0
p0
Dt
0
М2
d ∗0
Dt
1
М2
d∗1
p3
Dt
2
М2
d∗2
p4
Dt
3
Y от селектора
Рис. 4.7
4.2. Декодирующие устройства циклических кодов
20
на основе свойства проверочного полинома
4.2.1. Структурная схема декодера циклических кодов последовательного действия с умножением принятой комбинации на проверочный полином
H(x)=hmxm+hm-1xm-1+...+h1x+h0
в режиме исправления и обнаружения ошибок приведена на рис. 4.8.
ЭК1
1
F′(x)
Вход
Dt
n-1
Dt
Dt
m
Dt
1
m-2
hm-1
hm
3
Dt
m-1
F(x)
М2
РС1
И
Л
И
2
hm-2
Dt
0
h1
М2
Выход
h0
М2
М2
М2
ЭК2
d*n-1
d*n-2
d*1
...
d*0
РС2
М2
Dt
n-1
М2
dn-1
Dt
n-2
dn-2
М2
...
Селектор
нулевого синдрома
(3n+1) -й ТИ
М2
Dt
1
d1
Dt
0
d0
Селектор T
синдромов-корректоров
Y
Z
И
НЕ
И
И
Л
И
ЭК3
Запись
Стирание
Рис. 4.8
Декодирущее устройство содержит два n-разрядных регистра сдвига РС1 и РС2
с сумматорами М2 по модулю 2 и селектор синдромов допустимых форм ошибок,
настраиваемый на Т корректоров и нулевой синдром. Ячейки памяти РС1 от 0-й до
(m-1)-й с сумматорами М2 образуют устройство умножения на проверочный полином H(x).
В исходном состоянии электронный ключ ЭК1 находится в положении 1, а
электронные ключи ЭК2 и ЭК3 разомкнуты. В ячейки РС1 вводится принятая комбинация старшим разрядом вперед (n тактов). Затем на (n+1)-м такте замыкается
21
ключ ЭК2 и в течение n тактов вычисляется синдром ошибки, который вводится в
регистр сдвига РС2. Одновременно принятая комбинация через ЭК1 и схему ИЛИ
вновь записывается в регистр РС1. Тем самым РС1 образует фильтр-пробку для
принятой комбинации.Через 2n тактов с начала работы декодера в регистре сдвига
РС2 формируется комбинация синдрома ошибки согласно (3.6) или (3.3) и (3.4).
На (2n+1)-м такте ключ ЭК1 переводится в положение 2, ключ ЭК2 размыкается, а ключ ЭК3 замыкается. Символы принятой комбинации через исправляющий
сумматор по модулю 2 поступают на выход декодера. Одновременно идет сдвиг в
сторону старших разрядов символов синдрома ошибки, записанных в РС2. В тот
момент, когда искаженный символ принятой комбинации окажется на входе исправляющего сумматора, сдвигаемый синдром совпадет с одним из корректоров и
селектор начнет вырабатывать на выходе Y сигнал логической единицы для коррекции ошибочного символа и для модификации синдрома. Результат модификации
фиксируется в РС2 на следующем такте сдвига.
Здесь применяется второй способ модификации, связи которой (а также наличие сумматоров М2) в регистре РС2 зависят от вида синдрома-корректора D*n-1(x).
Обнаружение неисправляемых ошибок осуществляется на (3n+1)-м такте подобно декодеру с делением на образующий полином.
Таким образом, декодирование здесь длится 3n тактов сдвига: 2n тактов затрачивается на вычисление синдрома и n тактов затрачивается на исправление ошибок.
Новая кодовая комбинация может быть принята на этапе исправления предыдущей.
Промежутки времени между принимаемыми кодовыми полиномами должны составлять не менее 2n тактов.
3.4.2. Пример реализации электронного ключа ЭК1 показан на рис. 4.9, где ТУ триггер управления.
ЭК1
ЗК1
Сброс
сброс
(2n+1)-й
(2n+1) -ТИ
й ТИ
И
R
1
ТУ
S
3
Рис 4.9
И
2
22
5. МЕТОДИЧЕСКИЕ УКАЗАНИЯ
5.1. Подготовка к лабораторной работе
5.1.1. Подготовка к работе начинается с изучения способов описания циклического кода и рассмотрения методов декодирования. После усвоения материала следует описать заданный циклический код, построив образующую матрицу и две проверочные матрицы (каноническую и циклическую). Циклический код задается индивидуально каждой бригаде студентов (см. таблицу приложения). Номер варианта
домашнего задания указывается преподавателем.
5.1.2. В процессе домашней подготовки необходимо:
1) определить кодовое расстояние d и оценить корректирующую способность (r
и s) циклического кода;
2) для декодера с делением принятой комбинации на образующий полином P(x)
определить селектируемые синдромы-корректоры и выбрать способ модификации
синдрома;
3) для декодера с умножением принятой комбинации на проверочный полином
H(x) найти синдромы-корректоры и принять для реализации второй способ модификации синдрома;
4) на основании рис. 4.1, 4.5, 4.8 и 4.9 построить схемы декодеров с делением на
P(x) и умножением на H(x):
a) для вариантов с d=3 - в режиме обнаружения ошибок и в режиме исправления ошибок;
б) для вариантов с d=4 и d=5 - в режиме исправления и обнаружения ошибок.
5.2. Методика выполнения работы
5.2.1. Ознакомиться с составом логических элементов в библиотеке программной
системы моделирования PSM. Для чего в каталоге TO IIT\LAB RAB\PSM найти и
просмотреть файлы contens1.mod и shema1.mod. Выбрать из предлагаемых в библиотеке элементов те из них, которые необходимы для построения схем декодирующих устройств.
Входные сигналы для схемы задаются с помощью соответствующих генераторов последовательностей. Генератор нулевой последовательности "ГЕН-0" обеспечивает моделирование заземления. Генератор единичной последовательности
"ГЕН-1" обеспечивает моделирование постоянного единичного уровня. Произвольная кодовая комбинация моделируется генератором "ГЕН-ПОСЛ". Генератор "ГЕНПОСЛ" может использоваться для формирования отдельных сигналов управления сброса, переключения электронных ключей и опроса состояния селектора синдромов. Тактирование устройств осуществляется генератором тактовых импульсов
"ГЕН-ТАКТ".
5.2.2. Разработать, утвердить у преподавателя и внести в отчет функциональные
схемы декодеров. Подготовить каждую схему для создания программной модели. С
23
этой целью пронумеровать все логические элементы и указать номера их входов и
выходов в соответствии с библиотечным обозначением элементов.
5.2.3. Для каждого типа декодирующего устройства нужно выполнить следующее.
В диалоговом режиме создать программную модель разработанной схемы, для чего
в каталоге TO IIT\LAB RAB\ PSM найти и запустить на исполнение файл
model.exe. В меню программы выбрать нужный режим работы. Ввести состав элементов схемы и установить связи между элементами. Затем перейти к моделированию схемы, задав точки съема временных диаграмм и число тактов моделирования,
которое должно соответствовать циклу работы декодера.
Ввести заданную преподавателем принимаемую кодовую последовательность.
Запустить программную модель и наблюдать результаты моделирования. Сделать
выводы.
6.КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Разработать схему селектора синдромов при параллельном определении полинома ошибок для кода (6,2) с параметрами - d=4 и P(x)=x4+x3+x2+1.
2. Сформулировать алгоритм построения вычислителя синдрома.
3. Определить множество синдромов-корректоров при n=7 и s=2.
4. Обьяснить сущность последовательного определения полинома ошибок.
5. Дать сравнительную оценку параллельного и последовательного способов
определения полинома ошибок.
6. Указать правило определения селектируемого синдрома для кода, исправляющего одиночные ошибки.
7. Сформулировать способы модификации сдвигаемого синдрома.
8. Обьяснить принцип работы декодера в режиме исправления и обнаружения
ошибок при наличии исправляемых, обнаруживаемых (но неисправляемых) и необнаруживаемых ошибок при вычислении синдрома:
а) с делением на образующий полином;
б) с умножением на проверочный полином.
ЛИТЕРАТУРА
1. Темников Ф.Е., Афонин В.А., Дмитриев В.И. Теоретические основы информационной техники. М.: Энергия,1978.
2. Кавчук А.А. Основы передачи непрерывных сообщений по дискретным каналам связи. Таганрог: ТРТИ, 1978.
3. Дмитриев В.И. Прикладная теория информации. М.: Высшая школа, 1989.
24
ПРИЛОЖЕНИЕ
Варианты домашнего задания
№
варианта
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Вид кода
(n,m)
n=6,
m=3
n=7,
m=4
n=7,
m=4
n=10,
m=6
n=12,
m=6
n=12,
m=8
n=14,
m=8
n=15,
m=9
n=15,
m=9
n=15,
m=9
n=15,
m=11
n=15,
m=11
n=21,
m=16
n=21,
m=16
n=21,
m=15
n=21,
m=15
n=7,
m=3
n=15,
m=10
n=15,
m=10
n=15,
m=9
n=21,
m=15
n=21,
m=15
n=21,
m=12
n=21,
m=12
n=21,
m=12
n=14,
m=7
n=12,
m=5
n=15,
m=8
n=15,
m=8
n=15,
m=8
Образующий полином
P(x)=x3+x+1
P(x)=x3+x+1
P(x)=x3+x2+1
P(x)=x4+x3+1
P(x)=x6+x5+x3+x+1
P(x)=x4+x+1
P(x)=x6+x4+1
P(x)=x6+x4+x3+x2+1
P(x)=x6+x3+x2+x+1
P(x)=x6+x5+x4+x3+1
P(x)=x4+x+1
P(x)=x4+x3+1
P(x)=x5+x4+1
P(x)=x5+x+1
P(x)=x6+x4+x2+x+1
P(x)=x6+x5+x4+x2+1
P(x)=x4+x2+x+1
P(x)=x5+x4+x2+1
P(x)=x5+x3+x+1
P(x)=x6+x4+x2+x+1
P(x)=x6+x5+x2+1
P(x)=x6+x4+x+1
P(x)=x9+x8+x7+x6+1
P(x)=x9+x7+x6+x5+x3+x2+x+1
P(x)=x9+x8+x7+x6+x4+x3+x2+1
P(x)=x7+x6+x4+x4+x+1
P(x)=x7+x5+x4+x3+1
P(x)=x7+x6+x5+x2+x+1
P(x)=x7+x6+x4+1
P(x)=x7+x3+x+1
Двучлен
xn+1
x7+1
x7+1
x7+1
x15+1
x12+1
x15+1
x14+1
x15+1
x15+1
x15+1
x15+1
x15+1
x21+1
x21+1
x21+1
x21+1
x7+1
x15+1
x15+1
x21+1
x21+1
x21+1
x21+1
x21+1
x21+1
x14+1
x12+1
x15+1
x15+1
x15+1
Download