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

книги из ГПНТБ / Самохин А.Ф. Эксплуатация цифровых вычислительных машин [учеб. пособие]

.pdf
Скачиваний:
11
Добавлен:
23.10.2023
Размер:
8.6 Mб
Скачать

-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.

Кроме рассмотренных кодов для контроля передачи информации могут быть использованы и другие коды (равновесный, по наимень­ шим вычетам и т . д . ). Однако мы ограничимся рассмотренными выше гак наиболее распространенными.

Соседние файлы в папке книги из ГПНТБ