Файл: Хетагуров, Я. А. Повышение надежности цифровых устройств методами избыточного кодирования.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 19.10.2024

Просмотров: 145

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Рассмотрим возможность автоматической коррекции: вспышек ошибок с помощью циклических кодов. Для: этой цели могут быть использованы циклические коды Файра (§ 3-2). Пусть А (х) = ао+сцх+.. . + an-ixn-i ко­ довый полином, т. е. А(х)=0 по модулю G(x). Если при считывании информации возникла вспышка ошибок Е(х) длиной не более / разрядов, где / — максимальная длина> одиночных вспышек ошибок, исправляемых данным ко­

дом, то при делении полинома

А(х)+Е(х)

на G(x) по­

лучим:

 

 

 

 

 

 

 

 

£i(x)

=Е(х)

по модулю G(x),

 

 

где

Q(x)—содержимое

запоминающих ячеек

блока де­

ления после

приема двоичного

кода А + Е

в

буферное-

ЗУ

(см. рис. 3-5).

 

 

 

 

 

 

Вспышку ошибок Е длиной / можно представить в ви­

де

следующего

двоичного

кода длиной

п

разрядов-

00

.. . 0ei<?i+1

.. . ei+г—2614-;—10 .. . 0, где ег -= 1 и индекс 0 ^

 

—/ показывает

«начало» ошибки, ей при

^ k ^ i + l—2

равно 0 или 1. Учитывая (3-9) и последо­

вательность

поступления рассматриваемых

символов;

(первым на вход блока деления поступает символ ей за­

тем e,+i и т. д.), получаем последовательность

состояний:

блока

деления (при нулевом

исходном состоянии):

B{jc

;

 

 

 

 

 

^г+\Х

 

* —{— е^х

 

} по модулю G(x)

0 л - 1

+

... +

0 л - < л - г ' - " +

 

 

+ e * + i _ I x - < » - < - ' + 1 >

+ ... + ei Jc-<*-«

 

или, так как хп=1

по модулю G(x), то окончательно по­

лучаем:

 

 

 

 

 

 

Q (х) = e i + i

_хх ~(" - * ~ 1

+ 1 ' + . . . + e * J C < N " Г >

= =

 

 

= etxi + . . . -(- e i + i _ , J C * + 1 ~1 = . х* ( в г +

 

 

 

-\-вг

+ 1Х-{-

..^\~в1+1_хХ1'1)

ПО МОДУЛЮ

G(X).

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

233.


ячейку БЗУ, содержимое блока деления будет равно:

Q (х) Х~ *" = Х^вг

-\-вг+1Х-{-...-\-

вг+l _

~l)X~

i

=

=щег-\-вг+1х-j-...

-\-ег+1_1х1~г

подмодулю

G(x).

Другими словами, в г запоминающих

ячейках

блока

деления (рис. 3-5) установится код б^г-и- • • бг+г-iOO • • • 0. Эта ситуация, т. е. появление нулей во всех (<г—I) пра­ вых запоминающих ячейках блока деления, фиксируется с помощью логической схемы, которая вырабатывает сигнал отключения обратной связи в блоке деления и коммутации выхода на вход сумматора но модулю 2 до окончания всей процедуры декодирования. Поэтому в сле­ дующем такте на один вход сумматора из БЗУ поступит

символ ai + ei,

на второй

вход — символ

на выходе

декодирующего

устройства

получим a,- + ei + et- = a;, т. е.

исправленный символ. Аналогично исправляются осталь­ ные ошибки вспышки.

Для иллюстрации изложенного рассмотрим исправление

вспышек

ошибок с помощью кода, порождаемого полиномом

 

G(x) = (x*+x+\) (х* +

\)=х*+х115а+х+\.

 

Этот полином порождает код Файра

длиной я = 3 5 разрядов, из

которых восемь контрольных, и позволяет

исправить любую

одиноч­

ную вспышку ошибок длиной 3 или менее

(§ 3-2).

 

6

ml

50 ,

DUD №UDh\m2\

r i i .

[

 

 

 

 

Начало

 

 

IS

 

 

 

 

 

 

 

 

 

декодирования

 

 

 

 

 

Вход

 

Буферное запоминающее

устройства

 

Выход

 

mmт

 

mmmm

т

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 7-25. Схема КУ.

 

 

 

 

Пусть

возникла

следующая вспышка ошибок Е= (00...00101000000).

Значение

кодового

слова

А=(а0,

fli,

. . . , an-t)

рассматривать

не

имеет

смысла, ибо

соответствующий

полином А (х) = 0

по модулю

G(x).

Дл я определенности

будем

полагать, что Л =(00 . . . 0). Тогда

в момент

окончания

первого

этапа

декодирования

в БЗУ будет

запи­

сан

код ошибки, показанный

на ряс. 7-25,

а содержимое

блока деле­

ния

равно

остатку

от деления полинома

хв(1+хг)

=х°+х*

на

G(x).

234


При делении

на модуль

G(x) =xs+xB+xs+x3+x+[

получаем:

 

 

Q(x)=xs+x3+x+\.

 

 

Другими

словами, в запоминающих

ячейках

блока деления будет

записан код 11010100.

 

 

 

На втором этапе декодирования получаем следующую последо­

вательность

состояний блока деления:

 

 

 

исходное состояние

11010100;

 

после

1-го такта

00000101;

 

после

2-го такта

00001010;

после 6-го такта

10100000.

i

Таким образом, после 6-го такта конъюнктор обнаруживает ну­ левой код в старших пяти ячейках блока деления и вырабатывает сигнал, устанавливающий триггер Г в состояние, при котором пер­ вый конъюнктор закрывается, а второй — открывается. В этот мо­ мент в старших ячейках БЗУ записан код . . . 00101. В течение сле­ дующих тактов декодирования сшибка будет исправлена.

Рассмотренный метод коррекции вспышек ошибок с помощью циклических кодов позволяет сделать сле­ дующие выводы.

1. Соответствующим выбором параметров циклическо­ го кода можно обеспечить коррекцию ошибок при инфор­ мационной избыточности (n—k) In порядка нескольких процентов.

2.Затраты аппаратуры на декодирующее устройство оказываются значительными из-за того, что количество ячеек в БЗУ должно равняться длине п используемого кода. Например, если п=889, то БЗУ должно иметь ем-, кость 889 бит.

3.При считывании быстродействие памяти с декоди­ рующим устройством на выходе уменьшается в следую­ щее число раз:

n/h + n/h

_ f , +

f i

я/Л

~~ h

*

где fi — тактовая частота работы дискового ЗУ; fz = максимальная тактовая частота работы декодирующего устройства. Например, если в дисковом ЗУ fi=0,2 мгц, а /г=1 мгц, то быстродействие снизится в 1,2 раза.

235


4. Исключение БЗУ из декодирующего устройствапозволяет существенно уменьшить затраты аппаратуры на его реализацию.

В этом случае коррекция ошибок в данных, записан­ ных в оперативную память, производится с помощью спе­ циальной подпрограммы. Место и структура вспышки ошибок локализуются блоком деления, как описано вы­ ше. Так как ошибки возникают относительно редко, т. е. как правило, после считывания массива из памяти содер­ жимое блока деления равно нулю, то рассматриваемый метод коррекции практически не оказывает влияния на быстродействие памяти.

Обычно в память на дисках могут записываться мас­ сивы переменной длины, не превышающей длины п ис­ пользуемого кода. В этом случае может быть использо­ вана изложенная выше процедура коррекции ошибок, если предположить, что в п—п' разрядах кодового слова записаны нули, где п' — длина считываемого массива. Однако, если величина /г—п' значительна, то при аппа­ ратурной реализации декодирующего устройства значи­ тельно увеличивается задержка в декодировании, свя­ занная с необходимостью учета фиктивных нулей, до­ полняющих считываемый массив до стандартной дли­ ны п. Применение аппаратно-программного метода деко­ дирования позволяет свести влияние этой задержки к ми­ нимуму благодаря низкой частоте возникновения оши­ бок.

Рассмотрим другой метод коррекции ошибок, исполь­ зование которого целесообразно в том случае, когда ко­ дирование и декодирование производятся с помощью программных средств. В этом случае каждый элемент кодового слова представляет со'бой /га-разрядное двоич­ ное число. Значение т может равняться произвольному числу, но обычно оно равно либо разрядности машины, либо стандартной длине используемого символа (8 бит). В рассматриваемом ниже классе кодов операции сложе­ ния и умножения над элементами кода производятся по модулю N=2m или N=2m—1. Для описания данных ко­ дов будем использовать контрольную матрицу Н, анало­ гичную контрольной матрице линейных групповых ко­ дов.

Контрольная матрица, соответствующая коду с обна­ ружением ошибок, имеет вид:

Н = ||1 1 1 . . . 1 Ц .

(7-17)

236


Значение единственного контрольного элемента ai,+t вычисляется по формуле

 

 

k

 

 

ah+1==

Yi ai п о модулю N,

 

 

1=1

 

где

их — информационные

элементы кода; k — количест­

во

информационных символов в коде. Таким образом,

кодовый вектор (кодовое

слово) А = (а&г . . . dkCtk+i) и

AHt

= 0 по модулю

N,

 

k

так как ай + 1 -)-2 си==0 по модулю N.

[=1

Обратите внимание на полную аналогию матрицы (7-17), т. е. способа вычисления одного контрольного разряда, и контрольной матрицы, соответствующей кон­ тролю по четности количества единиц в слове! Отличие состоит лишь в том, что в данном случае все операции производятся не в двоичном поле, а в кольце классов вычетов по модулю N.

 

Например,

пусть

элементами кода

являются

двоичные числа

дли­

ной

т - 1 0

разрядов;

 

Л / = 2 т — 1 = 1

023

и пусть

а, = 121,

а 2 =999,

а 3 =

=512, а4

= 75,

а 5 = 3

(для кратности

записаны десятичные

эквивален­

ты

двоичных

чисел).

Тогда значение

контрольного элемента

 

« s =

— 6 8 7 = 1 023 — 687=336, так к а к — Ц at

= — 1 710 = — 687

по

модулю

/V = 1 023.

Проверяем

правильность

кодирования:

 

 

б

 

 

 

 

 

 

 

 

 

 

 

2

at

=

1 710 +

336 = 2 046 =

0 по модулю Л' = 1 023.

 

 

i = i

 

 

 

 

 

 

 

 

 

 

Коду, описываемому матрицей (7-17), соответствует широко используемая в ЦВМ процедура контрольного суммирования массивов чисел. Любая ошибка в одном элементе кодового слова будет обнаружена всегда. Об­ щее количество различных сочетаний ошибок в двух фик­ сированных элементах (напомним, что под элементом понимается m-разрядное двоичное слово) равно ( 2 т — I ) 2 . Двойная ошибка не будет обнаружена, если

е1 -\- е, = 0 по модулю N .

237