![](/user_photo/_userpic.png)
книги из ГПНТБ / Самохин А.Ф. Эксплуатация цифровых вычислительных машин [учеб. пособие]
.pdf-50-
Врезультате проверок в регистре ошибок записывается номер ошибочной позиции. Выхода дешифратора поданы на счетные входа триггеров регистра кода. Дешифратор расшифровывает адрес ошибоч
ной позиции, обеспечивая передачу исправляющего импульса на счет ный вход триггера в ошибочной позиции. В результате происходит исправление ошибки.
§ 3 .4 . Циклические коды
Циклические кода находят применение в системах с последова
тельной передачей кодов. Характерная особенность циклических
кодов состоит |
в том, что если Л -значная |
кодовая комбинация |
йП1 |
принадлежит к данному коду, |
то и комбинация |
Qn.f , |
Qп-2 • П0ЛУченная циклической перестановкой |
знаков, также принадлежит к этому коду.
Мы ограничимся рассмотрением некоторых циклических кодов,
применяемых для контроля записи и чтения во внешних накопителях ЦВМ.
В циклических кодах двоично кодированное |
Л -разрядное чис |
||
до представляется полиномом ( П-1 ) - й степени |
некоторой |
пере |
|
менной X |
. Коэффициентами при этом являются двоичные |
знаки |
соответствующих разрядов кода. Так, например, код I0II00I пред-
отавдяется полиномом 6-й степени
X s * X^-h Х 3+Х ° .
Такие полиномы рассматриваются в соответствии с законами обычной алгебры о той лишь разницей, что сложение и вычитание заменяются сложением по модулю два.
Контрольные знаки в коде располагаются в младших разрядах.
Код образуется с помощью так называемого порокдаицего поли нома Р (х ) степени Л7 .
Видом этого полинома определяется избыточность и корректирующая
способность |
кода. |
|
|
|
|
|
|
|
|
|
|
|
|||
Кодовым полиномом |
|
называется полином |
степени, |
меньшей |
|||||||||||
Пи +/П , |
если он делится без остатка |
на порождающий полином |
|||||||||||||
степени |
т . |
|
|
|
|
|
|
|
|
|
|
|
|||
Принятая кодовая |
комбинапия |
И (х) , |
если |
нет ошибок, равна |
|||||||||||
F(x) , т .е . |
Н(Т.)$0 -Т (х) , и, |
|
следовательно, |
Н (х) |
делится |
||||||||||
на Р(х) без |
остатка. |
Если же |
в слове |
возникла |
обнар,ужимая |
||||||||||
ошибка, полином Н(х) не |
будет |
делиться |
на |
Р(х) без |
остатка, |
||||||||||
что и-служит признаком ошибки. |
|
|
|
|
|
|
|
|
|||||||
Образование кода осуществляется следующим образом. |
|
||||||||||||||
Информационный полином |
G(x) степени,меньшей |
Пи , который |
|||||||||||||
нужно закодировать, умножается на |
X 171 , |
что |
|
соответствует сдви |
|||||||||||
гу на |
ТП |
разрядов влево. Полученный таким образом полином де |
|||||||||||||
лится |
на |
? (х ) для определения |
остатка |
Р (х ) |
. |
Остаток |
|||||||||
складывается |
по модулю 2 |
с |
X m ■Q (x) |
и таким образом полу |
|||||||||||
чается |
кодовый полином. |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
F ( x ) - x m G(x) © |
Р (х ) . |
|
(3 .7 ) |
||||||||
Покажем, |
что Т (х ) |
|
при этом делится |
на |
|
Р (х ) , |
а Л(х) |
||||||||
представляет контрольные знаки и занимает |
не |
более /77 |
млад |
||||||||||||
ших членов полинома |
F ( х ) . |
|
|
|
|
|
|
|
|
||||||
Можно записать |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
x mG(x) = Q(T> Р(х) ® Ъ(Я), |
|
|
|||||||||
где Q (х ) |
- |
частное от деления |
СС^-б (X) |
|
на Р (х ) . |
||||||||||
Так как сложение и вычитание по модулю 2 - |
одно и то же, то пе |
||||||||||||||
ренеся Р(Х) |
в левую часть, мы получим |
|
|
|
|
|
|
||||||||
|
|
F (x) = ccmG(x) ®R(x)=Q(x) P fx). |
|
|
|
-52-
Следовательно, |
Г(х) |
делится на Р(х) без |
остатка |
и являет |
|
ся, таким образом, кодовым полиномом. |
|
|
|||
Полином X 6(т) имеет нулевые члены в |
Ш младших разря |
||||
дах, а И(х) имеет |
степень меньше |
ГП , следовательно, в резуль |
|||
тате сложения по модулю этих двух |
полиномов в /77 |
младших раз |
|||
рядах расположится остаток Р(х) , |
представляющий контрольные |
||||
знаки, а в Пи |
старших разрядах |
- информационный полином G(x). |
Рассмотрим пример кодирования 10-разрядного числа I000III00I,
которое представляется полиномом 9-й степени.
G(x) = OC9+ocS+х 9+х3+4.
Для кодирования выберем порождающий полином 4-й отепени
Р(х)=х‘,+Х + i
|
X kG ( x ) = |
e x '3* ос 9 ф х * + |
х 9+ х Ч. |
Делим Х Ч& ( х ) на |
Р(х) : |
|
|
^ X ' 3+ Х 9+ X f + х 7ф х Ч |
X + Х -ф i |
||
® |
Х п + Х°+ X 9 |
Х д+Х6ФХ1/+ |
|
ъ Х ,о + 0С>+х7+ х ч |
|
||
® х"+ х7* |
а:6 |
|
|
_ |
х 6+ х ч |
|
|
+ X * + X s + |
х ц |
|
Х 3 ФХ
£ ( х ) = Х 3+я
-53-
Таким образом, кодовый полином будет иметь вид:
Г(х) = ( x f3+ scg+ X'g+ x 7+ x ‘')® C x 3+ х ) |
= |
|
|
= ccl3-h осд+ т! + х 7+ х 1*+х 3+ эс |
|
что соответствует |
коду 10001II00II0IC) . |
|
|
к .р . |
|
Практически |
процедура получения остатка еще более |
проста. |
Так как частное нас не интересует, остаток можно получить после
довательным сложением по mod2 кода, |
соответствующего |
порож |
|||
дающему полиному из информационного кода, |
сдвинутого на |
W |
|||
разрядов влево. При каждом очередном |
сложении код порождающего |
||||
полинома совмещается |
своим старшим |
разрядом со старшим |
знача |
||
щим разрядом кодируемого полинома. |
|
|
|
|
|
Пусть необходимо |
закодировать |
число |
I000III00I с помощью |
||
порождающего полинома |
,М, |
|
|
которому соответствует |
|
Р(х) =ХЧ+Х+ { |
|
||||
код ШОП. |
|
|
|
|
|
С,двигаем кодируемое число на четыре разряда влево и производим последовательное сложение по mod 2 код порождающего полинома:
10001110010000
©1001 1
Л00010110010000
©10011
© |
00101010000 |
3 .8 . |
10011 |
|
|
© |
001100000 |
|
10011 |
|
|
© |
0101100 |
|
|
10011 |
|
001010 - остаток
Таким образом, циклический код будет иметь вид:
I О О О I I I О О I 1 0 1 0 |
|
||
информационная |
контрольные |
||
|
часть |
разряды |
|
Этот алгоритм при последовательной передаче кодов реаяизу- |
|||
ei с.г достаточно просто. |
|
|
|
Проблема |
разработки |
циклического |
кода сводится к нахождению |
■° >р сдающего |
полинома, обеспечивающего |
выполнение ноставлепной |
залечи. При этом руководствуются следующим отправкам положени-
Закодированное |
слово, |
содержащее |
ошибки, можно записать и виде |
||||||||||||
|
|
|
|
|
|
И ( а ) = Г(х) ® Е (х ) , |
|
|
|
||||||
где |
£ (эс) |
- |
модель |
ошибок, т .е . |
полином той же степени, |
что |
|||||||||
F(x) |
, |
имеющий ненулевые члены в каждой ошябо’йюй позиции |
|||||||||||||
полинома |
|
Н М . |
|
|
|
|
|
|
|
|
|
|
|||
Если |
И (X) |
не делится на |
Р ( х ) |
, |
имеется ошибка. |
|
|||||||||
Если Н(х) |
|
делится |
на Р(ос) |
, то либо ошибки нет, либо |
|
||||||||||
ошибка такова, что Е (х ) |
также дичится на |
Р ( х ) . |
Следова |
||||||||||||
тельно, модель ошибок обнаружила только |
|
тогда, когда |
Е ( х ) |
не |
|||||||||||
делится на |
|
Р (х ) . |
Такал образом, |
порождающий полином Р (я ) |
|||||||||||
должен бить выбран таяш , чтобы |
Е(Х) |
|
при контролируемых |
|
|||||||||||
ошибках |
не |
делилась |
на Р ( х ) |
. Кроме того , полином |
Р(х) не |
||||||||||
должен быть кратным |
X , |
т .е . |
должен обязательно иметь нуле |
||||||||||||
вой член, так как в противном случае и кодовый полином не бу |
|||||||||||||||
дет никогда иметь нулевого члена, т .е . |
в |
одной позиции кода |
|
||||||||||||
всегда |
будет |
ноль. |
Но такая |
позиция |
не |
несет |
информации: и, |
сяе— |
- 55-
довательяо, бесполезна. |
|
|
|
||
Рассмотрим |
нахождение |
Р (х ) для обнаружения одиночных |
|||
ошибок. |
|
|
|
|
|
В этом случае, |
очевидно, |
модель ошибок будет |
иметь вид Е(х)=Х |
||
(ошибка произошла в |
* |
-й |
I |
не делится на лю |
|
i |
позиции). Но ОС |
бой полином с числом членов больше одного. Простейшим полино мом с числом членов больше одного, дающим код с минимальной из
быточностью, |
является |
|
|
|
|
Р (х) |
= 1+ X . |
Остаток |
от деления кодового |
полинома на /+ X имеет нулевую |
|
степень, |
т .е . |
в коде будет |
о,дин контрольный знак. Можно пока |
зать, что назначение контрольного знака состоит в том, чтобы сделать число единиц в коде четным.
Если F(x) - кодовый полином, то он делится на Р(х)
без остатка. Следовательно, можно записать
Р(х) =-Р‘( х ) й ( х ) = ({+х)-Q ( x ) .
Но в результате умножения полинома на двучлен получается поли
ном с четным числом членов,и, следовательно, |
в кодовой |
комби |
|||||||
нации всегда будет четное число единиц. |
|
|
|
|
|||||
В случае минимального |
кодового |
расстояния |
d = 3 |
для |
|||||
обнаружения двойных ошибок, очевидно, модель ошибок будет |
|||||||||
Е ( х ) = X 1+ |
= х 1( / + x J l ) . |
|
|||||||
Л этом случае полином |
ш |
должен быть выбран таким, чтобы |
|||||||
( i + X^~L ) не |
делилооь на |
Р(х) |
( |
х { |
|
не делится на |
|||
Р(%) , так |
как |
последний не кратен |
X |
) . |
Порождающие |
||||
полиномы для кода |
с |
d -S |
при различной длине кода имеют вид: |
|
|
|
|
|
- 5 6 |
- |
|
|
|
|
|
|
ДЛЯ |
Л |
£ |
7 |
Р ( х ) |
= |
|
|
|
|
|
|
для |
п |
£ |
/5 |
Р ( Х ) |
= |
X |
4+ X + i |
|
|
|
|
ДЛЯ |
п |
б з ; |
Р ( л ) |
= |
х *+ х 2* -1 |
|
|
|||
|
В таблице |
3 .5 приведен семизначный циклический код дяя |
|
||||||||
чисел |
от 0 до |
9. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 3 .5 . |
|
Число Двоичный код Циклический |
Число |
Двоичный код Циклический |
|||||||||
|
|
|
|
код |
|
|
|
|
|
код |
|
0 |
0000 |
|
|
0000 |
000 |
|
5 |
|
0101 |
0101 |
100 |
I |
0001 |
|
|
0001 |
ОН |
|
6 |
|
ОНО |
ОНО 001 |
|
2 |
0010 |
|
|
0010 |
НО |
|
7 |
|
О Ш |
О Ш 010 |
|
3 |
ООН |
|
|
ООН 101 |
|
8 |
|
1000 |
1000 |
101 |
|
4 |
0100 |
|
|
0100 |
I I I |
|
9 |
|
1001 |
1001 |
НО |
Здесь так же, как в коде Хэмминга, на четыре информационных |
|
||||||||||
знака приходится три |
контрольных. Этот |
код может быть использо |
|||||||||
ван для исправления ошибок, |
так |
как между остатком |
(контроль |
ной частью)и моделью одиночных ошибок имеется однозначное со
ответствие. Ошибке в любой из |
П |
позиций соответствует один |
|||
из 2 |
- 1 ненулевых остатков. |
|
|
|
|
|
Схема для кодирования и декодирования последовательного |
||||
кода |
по порождающему полиному |
Р (х) |
’ +J |
показана на |
|
рис. |
3 .6 . |
В основу работы схемы положен алгоритм, |
рассмотренный |
||
в примере |
(3 .8 ) . Как видно из |
примера,, даш шеажучшжя о статка, |
|||
достаточно в старшем значащем разряде шящщуаюзй® ■акаа я в |
|||||
двух |
разрядах, отстоящих от него на две шашициг. иэвеяшчь с о - |
- 57-
держалое на противоположное, затем в полученной разности вновь проделать эту же операцию и т .д . до получения остатка.
Рис. 3.6.
Указанная операция выполняется с помощью сдвигающего ре
гистра |
(T j + Т^) |
сумматоров по |
tnod.2 и элемента Mj . |
Элемен |
|
ты И2 |
и ИЛИ служат для передачи |
на выход полученного |
остатка |
||
при кодировании, |
дешифратор - |
для |
формирования сигнала |
ошибки |
при декодировании. Выходы триггеров заведены на входы дешифра тора, обеспечивающего исправление ошибок.
14шульсы CHj подаются одновременно со сдвигающими импульсами
в течение первых л |
тактов ( П |
- |
число разрядов |
в к од е ), |
Импульсы СИ2 подаются |
в четырех тактах, 'начиная с |
I II* 1 )-хм . |
||
Импульс СИг) подается |
в ( II * 4 |
) |
такте. |
|
3ub.U27.
- SS-
кодируемое число последовательно, разряд за разрядом, |
с т а т н |
||||||||
ый разрядами вперед, поступает |
через элемент НИИ на выход и |
||||||||
через сумматор по |
m od2 |
- на вход сдвигающего регистра. При |
|||||||
поступлении |
на триггер |
кода единицы элемент lij открывается |
|||||||
и следующий CItj |
проходит |
на входы сумматоров по mod 2 . |
Благо- |
||||||
даря этому |
происходит сложение |
по |
mod 2 |
очередного |
разряда |
||||
кодируемого |
числа |
и содержимого |
Т р |
передаваемого на |
, |
с |
|||
единицей, т .е . |
происходит |
инвертирование |
содержимого |
двух |
раз |
рядов, отстоящих от старшего на две позиции. Единица старшего
разряда, сдвигаясь нз Т4 , теряется. При поступлении на |
сле |
дующей едишщц операция повторяется. При поступлении п |
сдви |
гающих импульсов в регистре образуется остаток, который импуль сами СИ2 передается на выход и присоединяется, таким образом,
к кодируемому числу, образуя код.
Декодирование осуществляется аналогично, с той лишь разни цей, что в этом случае в регистре образуется модель ошибки, по которой дешифратором формируется сигнал исправления ошибки.
Если ошибки нет, остаток равен нулю.
Работа схемы при кодировашга десятиразрядного числа
I000III00I иллюстрируется временной диаграммой (р и с .3 .7 ) . На диаграмме Рч обозначено значение очередного разряда кодируемо го числа, поданного на вход схемы.
После 14-го такта в регистре образовался остаток 1010.
Последующими четырьмя СИ2 остаток передается на выход, присо единяясь к кодируемому числу, и в результате формируется код
IOOOIIIOOIIOIO.
Формирование циклического кода при параллельной передаче кодов требует большой избыточности и применяется срапнительно редко.
Я |
п |
|
|
|
п _пп . . |
п , |
, . . |
, , |
|
t |
|||||
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|||||||||
си0 vJu U l A A A А А Л Л А А Л Л А А A * |
|||||||||||||||
сиг |
|
|
|
|
|
|
|
|
А А А А |
i |
|
!/ |
|||
|
|
|
|
|
|
|
|
|
|
||||||
1 |
|
1—1 1 1 1 1 1 1 1 1 1 1 1 |
А А |
A |
|||||||||||
си5 |
I |
|
г г |
|
|||||||||||
т, |
h |
- |
1 1 1 |
1 1 1 1 1 1 1 |
1 А 1 |
1 1/ |
|||||||||
|
1 1 1 I I I |
|
I "I |
|
|||||||||||
|
|
П |
|
1 1 |
|
Н И Н Т |
1 , "ТГ П |
|
1 1 |
|
|||||
ъ |
|
1 |
|
' |
|
1 |
1 Т I |
f 1 |
т |
* |
|
TV |
|||
|
|
|
П I Н - Л ь - Г Л л п |
|
|||||||||||
Т 2 . I |
|
|
T V |
||||||||||||
Тц. |
| 1 Г 1 [ 1 Т 1 Т г |
|
-г*—г1 |
|
|||||||||||
1 |
|
1 |
ГЛ |
1 |
ГЛ |
ГЛ |
ГЛГЛ |
гл |
гл |
1 1 ? |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
i i i h |
5 |
i n |
n |
n h |
h |
h i i; |
|||||||
|
|
1 |
|
2 |
3 ц |
6 7 |
8 д |
Ю и п |
13 |
<4 |
IS /5 |
/7 /8 |
Рис. 3.7.
Кроме рассмотренных кодов для контроля передачи информации могут быть использованы и другие коды (равновесный, по наимень шим вычетам и т . д . ). Однако мы ограничимся рассмотренными выше гак наиболее распространенными.