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

Надежность систем автоматизации

..pdf
Скачиваний:
19
Добавлен:
15.11.2022
Размер:
6.87 Mб
Скачать

Получим конъюнктивное покрытие – тест диагностический (ТД):

ТД = (Т0 Т2 Т3 Т4 Т6 Т7 )(Т4 Т6 )(Т4 Т5 Т6 Т7 )

(Т6 Т7 )(Т0 Т2 Т3 Т7 )(Т0 Т2 Т3 Т5 )

(Т0 Т2 Т3 Т4 )(Т5 Т7 )(Т4 Т7 )(Т4 Т5 ) =

=(Т4 Т6 )(Т6 Т7 )(Т0 Т2 Т3 Т5 Т7 Т4 )

(Т5 Т7 )(Т4 Т7 )(Т4 Т5 ) = (Т6 Т4Т7 )

(Т0 Т2 Т3 Т5Т7Т4 )(Т4Т5 Т7 )(Т4 Т5 ).

Вдальнейшем следует раскрыть скобки и получить дизъюнкции конъюнкций тестовых наборов и выбрать конъюнкцию минимальной длины. Но не раскрывая скобки, мож-

но определить такую конъюнкцию, например, Т4Т5Т7 (в каждой из скобок берется по подчеркнутому одному элементу).

Втабл. 8.4 указано, какие столбцы покрывают эти тестовые наборы (без учета других из состава теста). Этот набор тестов мог быть получен и при визуальном анализе табл. 8.4. Конечно, возможны и другие тесты, длиной не меньше трех.

Получим дерево диагностирования, используя табл. 8.4

и8.2 (рис. 8.3). Построение его начинается с изображения корня, в котором отсутствует исправное техническое состояние (известно, что есть неисправность). Электрически неразличимые состояния b1 и с0 принимаются за одно. Выбираем

1-й тестовый Т4 (можно начинать, в принципе, с любого). По табл. 8.2 устанавливаем, что Т4 разбивает исходное множество технических состояний на два в зависимости от входной реакции (выходного сигнала автомата): а0, с1 или а1, b0, (b1, с0). Далее для разбиения состояний а0, с1 по табл. 8.4 уста-

навливаем, что необходим тест Т7, он же необходим для разбиения состояний а1, b0. На 3-м ярусе дерева для разбиения состояний а1, (b1, с0) необходим тест Т5. Отметка дуг произ-

181

водится по табл. 8.2. Таким образом, получено дерево диагностирования, причем для диагностирования необходимо минимум два тестовых набора, максимум три. Можно определить среднюю стоимость алгоритма диагностирования при условии стоимости одной проверки (теста) сi, i = 4, 5, 7 и вероятности состояний Р(j), j = b0, а0, (b1, с0), а0, с1 (сумма

Р(j) = 1):

с = (с4 + с7)Р(b0) + (с4 + с7 + с5)[P(a1) + P(b1, с0)] + + (с4 + с7)[P(a0) + P1)].

При равновероятности состояний и при учете только количества поданных тестовых наборов (числа проверок) получим среднее число проверок для алгоритма, соответствующего этому дереву:

Nср = 2 16 + 2 16 + 2 16 + 3 16 + 3 62 = 2,5. (b0) (а0) (с1) (а1) (b1с0).

 

 

a0, a1, b0, (b1, c0), c1

 

 

 

1

 

T4

0

 

 

a1, b0, (b1, c0)

 

 

a0, c1

 

0

T7

1

0

T7

1

a0

 

c1

 

 

 

 

b0

a1, (b1, c0)

 

 

 

 

0

T5

1

 

 

a1 (b1, c0)

Рис. 8.3. Дерево диагностирования

182

Можно получить таблицу диагностирования – так называемый безусловный алгоритм диагностирования, например табл. 8.5.

 

 

 

Таблица 8.5

 

 

 

 

Т4

Т5

Т7

 

1

0

0

(b0)

1

1

1

(b1с0)

Пример 8.2. Получить тестовые наборы для проверки входов переменных двухвходового элемента ИЛИ (рис. 8.4) методом булевых производных.

z(x1, x2) = x1 x2,

dz (x1x2 ) = (0 x2 ) (1 x2 ) =

dx1

= x2 1 = x2

или подробнее:

х2 1 = х2 1 х2 1 = 0 х2 = х2.

x1 1

z(x1, x2)

x2

Рис. 8.4. Двухвходовый элемент ИЛИ

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

Булева производная определяет значения остальных переменных, при которых изменение значения хi приводит к изменению значения функции. Определяются эти значения

решением уравнения

dz

= 1.

В нашем примере х =1, что

 

 

dxi

2

 

 

требует х2 = 0. В этом случае z определяется исключительно значением х1: z = x1 0. Поэтому для получения тестовых наборов, обнаруживающих отказы хi1, хi0, необходимо найти решение уравнений

183

T

 

=

dz

 

х

= 1 (обнаруживает x1 );

1

 

 

 

dx

 

i

 

i

xi

 

 

 

 

 

 

 

 

i

 

 

 

 

T

 

=

dz

 

x =1

(обнаруживает x0 ),

 

dx

 

xi0

 

 

i

 

i

 

 

 

i

 

 

 

 

где dz – булева производная 1-го порядка функции z по со- dxi

ответствующей переменной.

В самом деле для элемента ИЛИ, если х1 = 0, х2 = 0, то z = 0 (повторяет х1), иначе (z = 1) – на входе х1 отказ x11 . Та-

ким образом, получаем набор переменных x1x2 = 00.

Если х1 = 1, х2 = 0, то z = 1, иначе (z = 0) – на входе х1 отказ х10. Таким образом, получаем набор переменных x1x2 = 10.

Примеры построения тестов с англоязычной терминологией представлены на рис. 8.5, 8.6.

Рис. 8.5. Пример получения тестов для схемы И, ИЛИ, НЕ и константных отказов входов-выходов в английском варианте

184

Рис. 8.6. Пример получения тестов для константных отказов КМОП-транзисторов в английском варианте

На рис. 8.5, 8.6 используются понятия:

короткие замыкания (bridges);

непропайка (opens);

западания на 0 или 1 (stuck at 0, stuck at 1);

обрывы дорожек, а также отказы транзисторов:

постоянно открыт (stuck short (on));

постоянно закрыт (stuck open (off)).

185

9. ПОВЫШЕНИЕ НАДЕЖНОСТИ ПЕРЕДАЧИ ИНФОРМАЦИИ ПУТЕМ КОДИРОВАНИЯ

9.1. Кодирование по Хэммингу

Введем понятие «кодовое расстояние» (расстояние Хэмминга, d) – это число разрядов, по которым отличаются две кодовые комбинации. Чтобы обнаружить ошибку, необходимо обеспечить выполнение следующего неравенства:

dmin t + 1,

где t – кратность ошибок, а dmin – минимальное кодовое расстояние.

x2

x1

Ошибки

x2 1 0

0

0

 

 

x1 0 1

1 1 x2 0 1 x1 1 0

В этом случае ошибку типа «инверсия» можно обнаружить. Исправить ошибку – значит по виду принятой комбинации установить, какая истинная комбинация передавалась. Для исправления необходимо

dmin ≥ 2t + 1.

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

Помехоустойчивое кодирование по Хэммингу – это кодирование с использованием нескольких групп контроля по модулю 2 (по нечетности). Оно обеспечивает обнаружение

186

и исправление ошибок при передаче информации (контроль передачи информации). Мы рассматриваем обнаружение и исправление однократной ошибки. Для обнаружения двукратных ошибок добавляют еще один контрольный разряд – для всей посылки.

Как определяется число групп контроля по нечетности? В кодовом слове всего m разрядов, где m = n + k, n – количество информационных разрядов, k – количество контрольных разрядов. Для определения числа контрольных разрядов необходимо использовать соотношение m ≤ 2k – 1, или n + k

≤ 2k – 1.

Количество контрольных разрядов должно быть таковым, чтобы можно было закодировать как информационные разряды, так и сами контрольные.

Как строится матрица Хэмминга? В матрице Хэмминга m = n + k столбцов и k строк.

Столбцы могут упорядочиваться в соответствии с двоичными эквивалентами номеров всех m разрядов (например, справа налево, младшие разряды вверху, нулевой столбец исключается).

Столбцы с одной единицей отводятся под контрольные разряды.

Как получают уравнения кодирования? Контрольный разряд с номером соответствующей строки равен отрицанию суммы по модулю 2 тех информационных разрядов, которым соответствует единица в данной строке.

Как получают уравнения декодирования? Число функций синдрома ошибки равно числу контрольных разрядов.

Функция синдрома ошибки равна отрицанию суммы по модулю 2 информационных и соответствующего контрольного разрядов для данной строки.

187

Пример 9.1. Построить матрицу Хэмминга, получить уравнения кодирования и декодирования для четырех информационных разрядов (x4, x3, x2, x1).

Таким образом, дано n = 4, определим количество контрольных разрядов k. Берем формулу n + k ≤ 2k – 1. Подстав-

ляем k = 1: 4 + 1 ≤ 21 – 1 = 1 (мало). k = 2: 4 + 2 ≤ 22 – 1 = 3 (опять мало). Тогда k = 3: 4 + 3 ≤ 23 – 1 = 7. Это в самый раз! Таким образом, k = 3.

Далее строится матрица Хэмминга, в которой семь столбцов (n + k = 4 + 3) и k (3) строк:

1

0

1

0

1

0

1

1

1

0

0

1

1

0

1

1

1

1

0

0

0

x4

x3

x2

k3

x1

k2

k1

Столбцы с одной единицей отводятся под контрольные разряды. Выделяются три группы контрольных разрядов k1, k2, k3.

Записываем уравнения Хэмминга построчно, каждая строка – функция (отрицание суммы по модулю 2, так как контроль выполняется по нечетности) от тех информационных разрядов, которым соответствуют единицы в строке, и это есть значение контрольного разряда:

x4 x2 x1 = k1;

x4 x3 x1 = k2 ;

x4 x3 x2 = k3.

В линию связи передается посылка x4 x3 x2 k3 x1 k2 k1. Пусть необходимо передать четырехразрядную инфор-

мацию:

188

 

JJG

 

 

(x4 x3x2 x1 ) = X

,

JJG

1 1 1 0

 

– булев вектор передаваемой информации.

где X

Получим контрольные разряды: 1 1 0 =1 = k1; 1 1 0 =1 = k2 ;

1 1 1 = 0 = k3.

Таким образом, посылка, отправляемая в линию связи (на носитель информации) в последовательности x4 x3 x2 k3 x1 k2 k1, имеет вид 1110011.

Записываем уравнения синдрома ошибки тоже построчно. Они включают и сами контрольные разряды, которые тоже могут исказиться:

x4 x2 x1 k1 = s1; x4 x3 x1 k2 = s2 ; x4 x3 x2 k3 = s3.

Синдром ошибки – вектор S = (s1,s2 ,s3 ). Если искажение

не произошло, то и синдром нулевой. Проверим.

Получена посылка x4 x3 x2 k3 x1 k2 k1: 1110011. Декодируем ее:

1 1 0 1 = 0 = s1; 1 1 0 1 = 0 = s2 ;

1 1 1 0 = 0 = s3.

Синдром нулевой, ошибки нет. Если синдром ненулевой, он укажет на место однократной ошибки.

189

Пусть исказился разряд x2: x4x3x2k3x1k2k1: 1100011. Декодируем посылку с ошибкой:

1 0 0 1 = 1 = s1; 1 1 0 1 = 0 = s2; 1 1 0 0 = 1 = s3.

Получен синдром 101, т.е. ошибка в 5-м столбце матрицы Хэмминга, разряд х2, поскольку этот разряд входит в две группы контроля по нечетности – 1-ю и 2-ю. Для исправления ошибки разряд х2 подвергается инвертированию.

Пример 9.2. Найти ошибку и восстановить сообщение x4 x3 x2 x1, закодированное по Хэммингу: 0110011.

Поскольку передается четырехразрядное сообщение, то информационная посылка имеет вид x4x3x2k3x1k2k1: 0110011. Декодируем информацию:

0 1 0 1 = 1 = s1; 0 1 0 1 =1 = s2; 0 1 1 0 = 1 = s3.

Получен синдром 111, т.е. ошибка в 7-м столбце матрицы Хэмминга, разряд х4. Инвертируем его и получаем ин-

формацию:

(x4 x3x2 x1 ) = XJG. 1 1 1 0

9.2. Кодирование на основе математического аппарата умножения и деления полиномов

Циклический код обязан своим названием особенности: если некоторая кодовая комбинация принадлежит множеству разрешенных комбинаций, то и комбинация, полученная

190