Файл: Хетагуров, Я. А. Повышение надежности цифровых устройств методами избыточного кодирования.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+\) (х* + |
\)=х*+х11+х5+ха+х+\. |
|
Этот полином порождает код Файра |
длиной я = 3 5 разрядов, из |
|
которых восемь контрольных, и позволяет |
исправить любую |
одиноч |
ную вспышку ошибок длиной 3 или менее |
(§ 3-2). |
|
6 |
ml |
50 , |
DUD №UDh\m2\
r i i .
[
|
|
|
|
Начало |
|
|
IS |
|
|
|
|
|
|
|
|
|
декодирования |
|
|
|
|
|
|||
Вход |
|
Буферное запоминающее |
устройства |
|
Выход |
|||||||
|
№ mmт № |
|
№mm№ mm |
т |
||||||||
|
|
|
|
|||||||||
|
|
|
|
|
|
|||||||
|
|
|
|
Рис. 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