Ю.К. Тлостанов КОНТРОЛЬ И ДИАГНОСТИКА ВЫЧИСЛИТЕЛЬНЫХ МАШИН И СИСТЕМ 3 МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ КАБАРДИНО-БАЛКАРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ им. Х.М. БЕРБЕКОВА Ю. К. Тлостанов УЧЕБНОЕ ПОСОБИЕ ПО ДИСЦИПЛИНЕ " КОНТРОЛЬ И ДИАГНОСТИКА ВЫЧИСЛИТЕЛЬНЫХ МАШИН И СИСТЕМ" НАЛЬЧИК 2009 4 УДК 681.321 ББК 32.971 Рецензент: заместитель директора по научной работе Института информатики и проблем регионального управления Кабардино-Балкарского научного центра РАН В.Ч. Кудаев Тлостанов Ю.К. Учебное пособие по дисциплине " Контроль и диагностика вычислительных машин и систем". – Каб.-Балк. ун-т, 2009. – В пособии рассмотрены вопросы обеспечения безотказности и достоверности функционирования средств вычислительной техники и построенных на их основе автоматизированных систем обработки информации и управления. Особое внимание уделено методам обнаружения и коррекции ошибок с помощью помехоустойчивых кодов. Пособие предназначено для студентов специальностей 230102.65 «Автоматизированные системы обработки информации и управления» и 230105.65 «Программное обеспечение вычислительной техники и автоматизированных систем». Рекомендовано университета. РИСом Кабардино-Балкарского государственного УДК 681.321 ББК 32.971 Кабардино-Балкарский государственный университет им. Х.М. Бербекова, 2009 5 Содержание Г л а в а 1. Задачи и методы контроля АСОИиУ …………………………….4 1.1. 1.2. 1.3. 1.4. Основные понятия и определения теории надежности ……………………....4 Модели потоков отказов и сбоев…………………………………………….…7 Функции, характеристики и классификация систем контроля АСОИиУ…..10 Алгоритмы контроля АСОИиУ …………………………………………….....15 Контрольные вопросы …………………………………………………………21 Упражнения …………………………………………………………………….22 Г л а в а 2. Контроль достоверности передачи и хранения информации. Помехоустойчивое кодирование информации ..................................23 Общие сведения о каналах передачи данных ………………………………..23 Модели каналов передачи и хранения данных ………………………………26 Коды и кодирование: основные понятия и определения ……………………31 Принципы помехоустойчивого кодирования ………………………………...36 Классификация помехоустойчивых кодов. Параметры и характеристики помехоустойчивых кодов ……………………………………………………...43 2.6. Примеры линейных помехоустойчивых кодов ………………………………51 2.1. 2.2. 2.3. 2.4. 2.5. 2.6.1. Код с контролем нечетности …………………………………………………..51 2.6.2. Код Хэмминга …………………………………………………………………..54 2.7. Циклические коды (ЦК) ………………………………………………………..62 Контрольные вопросы …………………………………………………………65 Упражнения …………………………………………………………………….67 Г л а в а 3. Комбинирование помехоустойчивого кодирования с приемами, усиливающими эффект их применения ……………………………69 3.1. Комбинирование помехоустойчивых кодов с методом двойного инвертирования ………………………………………………………………...69 3.2. Комбинирование помехоустойчивых кодов и приема, основанного на делении слов на слоги ……………………………………………………….…72 3.3. Многовариантность возможных реализаций комбинирования помехоустойчивых кодов и деления слов на слоги ………………………….76 Упражнения …………………………………………………………………….84 Список литературы ………………………………………………………..….85 6 Глава 1 Задачи и методы контроля АСОИиУ Средства вычислительной техники и построенные на их основе автоматизированные системы обработки информации и управления (АСОИиУ) прочно вошли в жизнь и профессиональную деятельность современного человека. Они широко применяются для решения многих экономических, социальных, производственных, научных задач. Можно уверенно прогнозировать, что в перспективе применение АСОИиУ станет поистине всеобъемлющим. Эффективность АСОИиУ вне зависимости от сферы их применения и назначения, специфики аппаратного и программного обеспечения, других особенностей, в первую очередь определяется их надежностью. АСОИиУ являются аппаратно-программными комплексами. Поэтому выполнение ими заданных функций возможно только при соответствующем взаимодействии и функционировании аппаратных и программных средств системы. Следовательно, надежность АСОИиУ зависит от надежности как аппаратуры, так и используемого программного обеспечения. В настоящем пособии рассматриваются вопросы обеспечения и поддержания надежности аппаратурных средств АСОИиУ. 1.1. Основные понятия и определения теории надежности Согласно современным представлениям под надежностью понимают свойство объекта (элемента, узла, устройства, машины, системы) выполнять заданные функции, сохраняя во времени свои параметры и характеристики в 7 установленных пределах при определенных режимах и условиях эксплуатации, оговоренных в технической документации на объект. Надежность АСОИиУ определяется ее безотказностью и достоверностью функционирования. Безотказность АСОИиУ – это свойство системы сохранять работоспособность в течение определенного промежутка времени при условии соблюдения установленных ограничений на условия эксплуатации. Работоспособным называется состояние системы, при котором она способна выполнять заданные функции при сохранении значений ее параметров и характеристик в установленных в пределах. Неработоспособным называется состояние системы, при котором она не в состоянии выполнять хотя бы одну из заданных функций или хотя бы один из ее параметров или одна из характеристик не удовлетворяют требованиям, указанным в технической документации. Утрата системой работоспособности (т.е. переход ее из работоспособного состояния в неработоспособное) может проявляться в форме отказа или сбоя. Под отказом понимают событие, заключающиеся в устойчивой утрате системой работоспособности, приводящее к невыполнению или ошибочному выполнению заданных функций. В процессе эксплуатации АСОИиУ причинами отказов главным образом являются физические неисправности элементов или связей между ними – обрывы и короткие замыкания соединительных проводников или выводов интегральных схем, пробои p-n переходов и прочие. Отказ – это такое нарушение работоспособности, для устранения которого требуется определенные действия по локализации, ремонту или замене неисправного элемента, узла или устройства. Сбоем называется событие, состоящее в кратковременной утрате работоспособности и характеризуемое возникновением ошибок в результатах 8 выполняемых системой преобразований информации. Причины сбоев АСОИиУ весьма многочисленны и разнообразны по своей природе. В основном это кратковременные и самоустраняющиеся внешние воздействия, естественного происхождения, нарушающие нормальное функционирование системы. Примерами таких дестабилизирующих воздействий являются: индустриальные помехи, грозовые разряды, радиоактивные и космические излучения, температурные перепады, вибрации и прочие. После прекращения действия дестабилизирующих факторов, вызвавших сбой работоспособность системы самовосстанавливается. Однако сбой сопровождается искажением обрабатываемой АСОИиУ информации. В результате, если не устранить последствия сбоя, то полученные результаты преобразований окажутся ошибочными. Таким образом, причинами утраты системой работоспособности или получения ошибочных результатов преобразований информации являются отказы и сбои, в функционировании АСОИиУ. Обобщенное воздействие отказов и сбоев именуют шумом. В АСОИиУ подлежащая передаче, хранению или какой-либо обработке информация обычно представляется в виде двоично-кодированных слов, т.е. в виде последовательности символов 0 и 1. Ошибка при выполнении указанных преобразований представляет собой изменение (переход, конверсию) верного символа «1» в ошибочный символ «0» или «0» в «1» в одном или большем числе разрядов двоичного слова, соответствующего результату преобразований. В технической литературе ошибки, обусловленные отказами принято называть «жесткими», а сбоями – «мягкими». Достоверность функционирования АСОИиУ – это свойство, определяющее безошибочность выполняемых системой преобразований. При этом, если при отказе для восстановления работоспособности системы необходимо устранить 9 неисправность в аппаратуре, то при сбое для получения достоверного (безошибочного) результата преобразований требуется восстановить информацию, предшествовавшую моменту сбоя и осуществить повторный прогон искаженной части программы. 1.2. Модели потоков отказов и сбоев Отказы и сбои, а следовательно и обусловленные ими возможные ошибки в результатах преобразований, являются случайными событиями, которые в течение некоторого интервала времени эксплуатации АСОИиУ могут произойти или не произойти и точно предсказать заранее моменты их наступления невозможно. В то же время существуют методы оценки безотказности и достоверности функционирования АСОИиУ, основанные на случайном (вероятностном) характере поведения системы в процессе ее эксплуатации. Для этого создается математическая модель процесса эксплуатации, которая, очевидно, должна основываться на методах теории вероятностей. Так, законы распределения таких случайных величин как наработка на отказ Т от , и наработка на сбой Т сб задают математические модели таких эксплуатационных событий как наступление отказа или сбоя. В реальных системах действуют различные законы распределения времени между событиями (отказами и сбоями). С целью упрощения оценки надежности обычно принимают, что отказы и сбои подчиняются экспоненциальному закону распределения, для которого плотность распределения непрерывной случайной величины Т (наработки на отказ, при этом Т Т от ; или наработки на сбой, тогда Т Т сб ) задается выражением f t e t , t 0, (1.1) 10 где параметр распределения, интерпретируемый как интенсивность потока событий: отказов, при этом от , или сбоев, тогда сб . Зависимость интенсивности отказов аппаратурных средств АСОИиУ от времени ( характеристика) приведена на рис. 1.1. Ее можно разбить на три периода (обозначены на рисунке римскими цифрами.) В первый – начальный период работы, именуемый периодом приработки (периодом «детства»), по мере выявления и устранения ошибок проектирования и производственных дефектов интенсивность отказов уменьшается со временем. Во второй – основной период работы, обычно достаточно длительный, интенсивность наиболее отказов низкой и является остается примерно постоянной. Этот период Рис. 1.1. Типичная характеристика соответствует периоду эксплуатации АСОИиУ (период «зрелости»). В третий – заключительный период интенсивность отказов значительно увеличивается из-за физического износа (деградации) аппаратуры (период «старости») и система снимается с эксплуатации и утилизируется. Для многих АСОИиУ этот период как правило не достигается, так как они морально устаревают раньше, чем успевают износиться. Если интенсивность отказов от const , что имеет место для периода эксплуатации АСОИиУ, то можно показать, что математическое ожидание (среднее значение) интервала времени до наступления отказа (наработка на отказ) Т от связано с параметром от выражением Т от М Т от 1 от . (1.2) Аналогичная связь справедлива и для среднего значения наработки на сбой 11 Т сб М Т сб 1 сб . (1.3) Следует также отметить, что экспоненциальное распределение связано с таким важным понятием, как пуассоновский поток событий. Пуассоновский поток событий – поток, для которого длительность интервалов между событиями является случайной величиной, имеющей экспоненциальное распределение, задаваемое выражением (1.1). Важное свойство пуассоновского потока событий заключается в том, что вероятность появления события в течение интервала времени t определяется только длительностью интервала и интенсивностью потока событий и не зависит от предистории, т.е. от того, сколько и когда произошло событий (отказов, сбоев) в прошлом. Интервалы времени между моментами наступления событий в пуассоновском потоке – независимые случайные величины, а вероятность того, что за время [0,t] произойдет ровно k событий определяется выражением t k t P t e k k! . (1.4) Выражение (1.4) следует интерпретировать следующим образом – число случайных событий, например, число отказов или сбоев системы в течение интервала времени [0,t] определяется дискретным распределением Пуассона с параметром t. Отметим следующие свойства пуассоновского потока. 1. Пуассоновский поток ординарен – вероятность двух или более событий в момент времени t практически равна нулю. 2. При наложении v независимых пуассоновских потоков с интенсивностями i ( i 1, v ) образуется пуассоновский поток с суммарной интенсивностью 9 v i . (1.5) i 1 3. Интервал времени от случайно взятой точки до наступления очередного события в пуассоновском потоке с интенсивностью есть случайная величина, имеющая экспоненциальное распределение с тем же параметром . 1.3. Функции, характеристики и классификация систем контроля АСОИиУ Как было отмечено выше возникающие в АСОИиУ неисправности (отказы и сбои) могут привести к таким негативным последствиям, как полная или частичная утрата системой работоспособности или же стать причиной ошибок в результатах осуществляемых системой преобразований. Для уменьшение ущерба от порождаемых неисправностями последствий надо контролировать работоспособность АСОИиУ и достоверность (безошибочность) выполняемых системой преобразований. Отмеченное является особенно очевидным для АСОИиУ особо ответственными объектами и процессами, когда даже кратковременная потеря системой работоспособности или ошибки в результатах преобразований могут привести к тяжелым и катастрофическим последствиям (транспорт, энергетика, экология, оборона и т.д.). Поэтому АСОИиУ обычно дополняют средствами или системами контроля (СК), основными функциями (задачами) которых являются: – контроль работоспособности, целью которого является выяснение, выполняет ли АСОИиУ те функции, для реализации которых она создана; – контроль достоверности (безошибочности) функционирования с целью с целью установления факта наличия ошибок в результатах осуществляемых АСОИиУ преобразований или их отсутствия. При обнаружении 10 ошибок СК преобразований, должна немедленно выполняемых приостановить АСОИиУ, с тем, процесс чтобы дальнейших предотвратить распространение ошибок. В ряде случаев кроме основных функций на СК возлагают выполнение следующих дополнительных функций: – классификации ошибок, в результате выполнения которой устанавливается причина возникновения ошибок: из-за сбоя или из-за отказа; – локализации оказавшего элемента или узла (задача диагностики неисправностей), обеспечивающая поиск отказавшего элемента или узла системы, явившегося причиной ошибки или потери работоспособности, для его последующего ремонта или замены на заведомо исправный; – коррекции ошибок, позволяющая восстановить правильный (достоверный) результат преобразований. Основными характеристиками СК являются полнота контроля и время реакции на ошибки. Контроль АСОИиУ желательно организовать так, чтобы контролировалась достоверность если не всех, то по возможности большего числа выполняемых системой функций. Степень достижения этой цели оценивается полнотой контроля. Количественно полнота контроля определяется отношением числа контролируемых функций к общему числу выполняемых функций. Важной характеристикой СК является время ее реакции на ошибку, измеряемое интервалом времени между моментом возникновения ошибки и формированием СК сигнала прерывания дальнейших преобразований, осуществляемых АСОИиУ. Чем меньше время реакции СК на ошибку, тем меньше вероятность размножения ошибок (их распространения на результаты последующих преобразований, осуществляемых в АСОИиУ). 11 СК могут быть классифицированы по ряду признаков, определяющих их назначение, структуру, состав используемых средств, по характеру взаимодействия объекта контроля (элемента, узла, устройства, системы в целом) и СК, по степени автоматизации проведения контроля и т. д. (рис. 1.2). По назначению СК подразделяются на специализированные и универсальные. Под специализированной понимают СК, выполняющей одну из перечисленных выше контрольных функций. Универсальными называют СК, реализующие все контрольные функции. Рис. 1.2. Классификация средств контроля По используемым средствам СК разделяют на аппаратные, программные и программно-аппаратные, которые могут внешними, т. е. СК и объект контроля конструктивно отделены друг от друга, а могут быть встроенными, т. е. объект и СК конструктивно представляют одно изделие. В зависимости от степени участия человека-оператора в процессе получения и обработки информации о техническом состоянии объекта контроля СК разделяют на автоматические, автоматизированные и не автоматизированные (ручные). По характеру взаимодействия объекта контроля и СК последние подразделяют на системы функционального контроля и системы тестового контроля. 12 В системах функционального (рабочего, оперативного) контроля выполнение контрольных функций осуществляется в процессе эксплуатации АСОИиУ, т. е. в процессе использования системы по своему целевому назначению. Другими словами, СК контрольные функции осуществляет во времени параллельно с преобразованиями, выполняемыми АСОИиУ. При этом входными воздействиями, поступающими на объект контроля, являются рабочие воздействия, предусмотренные рабочим алгоритмом его функционирования. В системах тестового контроля выполнение контрольных функций осуществляют в специальном режиме, когда объект контроля (АСОИиУ или его составляющие) не используются по прямому назначению. При этом на входы объекта контроля подаются так называемые тестовые воздействия, генерируемые СК. Причем некоторые из этих воздействий могут быть неосуществимыми в процессе функционирования объекта контроля. Обобщенные схемы систем функционального и тестового контроля показаны на рис. 1.3. Рис. 1.3. Обобщенные структурные схемы систем функционального (а) и тестового (б) контроля Любые выполняемые АСОИиУ операции могут быть сведены к следующим четырём классам: передача информации, хранение информации, логические 13 преобразования, арифметические преобразования. При этом подлежащая передаче, хранению или какой-либо обработке информация, как правило, представляется в виде двоично-кодированных слов. Передача информации и ее хранение являются взаимно однозначными операциями, для которых входное слово, поступающее в устройство передачи или хранения, и слово на выходе устройства передачи или хранения должны совпадать. Обе эти операции носят как бы пассивный характер: информация лишь распространяется и сохраняется, но не подвергается активной, целенаправленной обработке. В идеале входное слово, поступающее в устройство передачи или хранения информации, и слово на выходе устройства совпадают. Логические преобразования в общем случае состоят в формировании по некоторым правилам из k входных двоичных слоев разрядности n одного выходного слова той же разрядности. При этом двоичный символ в i -м разряде выходного слова зависит только от значений символов в i разрядах и не зависит от значений символов в других разрядах входных слов. В арифметических преобразованиях (операциях) из двух входных слов, задающих числовые операнды, вырабатывается в соответствии с правилами выполнения арифметических операций результирующее выходное слово, причем значение двоичного символа в i -м разряде выходного слова определенным образом зависит от значений символов, как в i -м, так и в некоторых других разрядах входных слов. Из сказанного следует, что для организации и проведения контроля АСОИиУ следует располагать методами и средствами контроля передачи и хранения информации, а так же логических и арифметических преобразований. В основе систем контроля АСОИиУ лежит принцип избыточности: временной, информационной, аппаратурной, алгоритмической. 14 Временная избыточность предполагает дополнительные затраты времени на выполнение контрольных операций. Наиболее ярким примером временной избыточности является решение задачи методом двойного счета со сравнением получаемых результатов. Информационная избыточность проявляется в представлении преобразуемой в АСОИиУ информации в виде двоичных слов с дополнительными разрядами, используемыми в процедурах контроля и коррекции ошибок. Аппаратурная избыточность состоит в применении помимо основной, дополнительной аппаратуры для реализации контроля и коррекции ошибок, например двух устройств, выполняющих параллельно во времени одни и те же операции со сравнением получаемых результатов. Алгоритмическая избыточность предполагает выполнение решения задачи по преобразованию информации по разным алгоритмам (программ) с проверкой получаемых результатов на совпадение. На практике системы контроля достоверности функционирования АСОИиУ строятся в основном на использовании информационной избыточности в сочетании с элементами избыточностей других типов, а также с некоторыми приемами и средствами, усиливающими эффект их применения. 1.4. Алгоритмы контроля АСОИиУ Процесс контроля состоит из отельных частей (процедур), каждая из которых включает в себя подачу на объект тестового или рабочего воздействия и восприятие (прием) с объекта ответа (реакции) на воздействие. Будем называть такие части элементарными проверками, причем результатом элементарной проверки является значение ответа (реакции) объекта. Тогда формальное описание процесса контроля, т.е. алгоритм контроля объекта, представляет собой 15 определённым образом установленный состав (перечень) элементарных проверок, последовательность (очерёдность) их выполнения и правила анализа полученных результатов. В системах тестового контроля (рис. 1.3, б) воздействия на объект поступают от средств контроля. Поэтому как состав, так и последовательность подачи этих воздействий можно выбирать исходя из условий обеспечения эффективной организации процесса контроля. Более того, каждую очередную проверку в процессе контроля можно назначать в зависимости от результатов предыдущих. Другими словами, следует различать два основных алгоритма тестового контроля: комбинационный и последовательный. При использовании первого из них результат контроля формируется после выполнения заданного числа проверок, порядок осуществления которых безразличен. Для этого алгоритма характерны такие ситуации, когда не все результаты выполненных проверок необходимы для решения поставленной задачи контроля, т.е. ряд проверок может отказаться избыточным. При использовании последовательного алгоритма контроля результат каждой проверки анализируется непосредственно после его получения, и если цель контроля еще не достигнута, то выполняется следующая по порядку проверка. Причем, порядок выполнения проверок может быть строго фиксированным (установленным до начала их проведения) или же зависеть от результатов предыдущих проверок. Поэтому последовательные алгоритмы контроля подразделяют на условные, в которых каждая последующая проверка назначается в зависимости от исхода предыдущей, и безусловные, в которых проверки выполняются в некотором фиксированном порядке. Пример 1.1. Положим, что потеря работоспособности елочной гирлянды*, состоящей из 20 последовательно соединенных лампочек накаливания (ЛН) и 16 подключенной к источнику с напряжением U, вызвана обрывом (перегоранием) нити накаливания одной из них (рис. 1.4). Требуется локализовать отказавшую ЛН путем выполнения ряда поверок, для проведения которых мы располагаем простейшим испытательным прибором – пробником. (Пробник – это индикатор наличия напряжения, выполненный в виде отвертки с вмонтированным в его рукоятку светоизлучающим диодом, который излучает (светит) при контакте жала отвертки с точкой цепи, имеющей электрический потенциал, равный U). Рис. 1.4. Схема локализации отказавшей ЛН Решение поставленной задачи может быть выполнено различными способами (по различным алгоритмам). Наилучшим из них будем считать тот, для которого достижение цели контроля обеспечивается с помощью наименьшего числа поверок т.е., за минимальное время. Один из них состоит в том, что последовательно проверяется целостность (наличие) нити накаливания у ЛН1 (контролируя пробником наличие напряжения между ЛН1 и ЛН2); при положительном исходе этой проверки проверяется целостность нити накаливания у ЛН2 и т.д. до выявления отказавшей ЛН. В наихудшем случае при подобном способе локализации отказавшей ЛН потребуется выполнение 19 проверок (при отказе ЛН20). ________________ * Объектом контроля может быть не только елочная гирлянда, но и любая электрическая цепь n последовательно соединенных элементов. 17 Очевидно, что приведенная выше организация процесса локализации отказавшей ЛН является реализацией алгоритма последовательного безусловного контроля. Другой возможный способ локализации отказавшей ЛН основывается на последовательном делении на две части (два участка) сначала всей гирлянды (всей цепи), а затем и образованных частей (подобная процедура именуется дихотомией от греческих слов dicha – на две части и tome – сечение) и проверке целостности электрической цепи одной из них. Для рассматриваемого примера выполнение первой проверки (1) предполагает деление гирлянды на два участка, содержащих ЛН1÷ЛН10 и ЛН11÷ЛН20 соответственно и контроль с помощью пробника целостности первого – ЛН1÷ЛН10 (рис. 1.4). Вторая проверка ( 2 ) назначается в зависимости от результатов первой ( 1 ). Если, например, проверкой 1 установлена целостность участка ЛН1÷ЛН10, то отказавшая ЛН находится на втором участке гирлянды – ЛН11÷ЛН20. Тогда для выполнения второй проверки ( 2 ) делят на две части второй участок, например так, как это показано на рис. 1.4 и проверяют целостность первой из них, т.е. ЛН11÷ЛН15. Третья проверка ( 3 ) назначается в зависимости от результатов второй ( 2 ) и так далее до локализации отказавшей ЛН. Последовательность проверок i , необходимых и достаточных для локализации отказа в гирлянде, для случая когда отказавшей является ЛН17, приведена в табл. 1.1., а диаграмма, поясняющая процедуру последовательного деления электрической цепи на две части (дихотомии), изображена на рис. 1.5. 18 Таблица 1.1. Проверка Образуемые Проверяемый Результат участки цепи участок цепи поверки ЛН1÷ЛН10 + ЛН11÷ЛН15 + ЛН16÷ЛН17 – ЛН16 + ЛН1÷ЛН10 и 1 ЛН11÷ЛН20 ЛН11÷ЛН15 и 2 ЛН16÷ЛН20 ЛН16÷ЛН17 и 3 ЛН18÷ЛН20 4 ЛН16 и ЛН17 Заключение Отказ на участке ЛН11÷20 Отказ на участке ЛН16÷20 Отказ на участке ЛН16÷17 Отказ ЛН17 Рис. 1.5. Диаграмма процедуры последовательного деления электрической цепи на две части (дихотомии) Нетрудно видеть, что реализация рассмотренного способа локализации отказавшего элемента осуществляется в соответствии с алгоритмом последовательного условного контроля. 19 В системах функционального контроля (рис. 1.3, а) воздействия, поступающие на объект, заданы его рабочим алгоритмом функционирования и поэтому не могут выбираться исходя из условий обеспечения эффективной организации процесса контроля. Ответы (реакции) объекта на тестовые или на рабочие воздействия поступают на средства контроля (рис. 1.3) с целью их анализа и формирования результата контроля. Для выполнения анализа результатов элементарных проверок средства контроля должны располагать определённой информацией о поведении работоспособного объекта, а также, возможно, о его поведении в неработоспособном состоянии. Аппаратуру средств контроля или некоторые другие средства хранения этой информации будем называть моделью объекта. В простейшем случае моделью объекта является эталонный, заведомо исправный объект и анализ результатов проверок сводится к простому сравнению реакций (ответов) контролируемого у ко и эталонного у эо объектов (рис. 1.6). Если для всех воздействий х i ( i 1, s ), подаваемых на объекты их реакции yiко и yiэо совпадают, то делается заключение о работоспособности Рис. 1.6. Схема контроля с применением эталонного объекта контролируемого объекта. Если же хотя бы для одного из воздействий реакции объектов не совпадают, то делается заключение о неработоспособности контролируемого объекта. 20 Контрольные вопросы 1. Что понимают под надежностью системы (или элемента, узла, устройства, подсистемы)? 2. Дайте определение безотказности системы. 3. Что понимают под работоспособным и неработоспособным состояниями системы? 4. Что понимают под отказом и сбоем системы? 5. Перечислите основные причины отказов и сбоев системы. 6. Что понимают под достоверностью функционирования системы? 7. Что представляет собой математическая модель наступления отказов, сбоев АСОИиУ? 8. Изобразите характеристику и поясните особенности каждого ее периода. 9. Дайте определение пуассоновского потока событий. 10. Перечислите основные свойства пуассоновского потока событий. 11. В чем суть ординарности пуассоновского потока событий? 12. Перечислите возможные последствия отказов и сбоев в АСОИиУ. 13. Какие ошибки в результатах преобразований называют «жесткими», а какие – «мягкими»? 14. Перечислите функции, реализуемые системами контроля АСОИиУ. 15. Перечислите основные характеристики систем контроля АСОИиУ. 16. Чем отличается рабочий контроль от тестового? 17. Какие виды избыточностей применяют для проведения контроля АСОИиУ? 18. Приведите классификацию систем контроля АСОИиУ. 19. В чем отличие последовательного условного алгоритма контроля от безусловного? 21 20. В чем суть процедуры дихотомии и каковы ее возможные применения при решении задач контроля? 21. Что представляет собой простейшая модель объекта контроля? Упражнения №1. Устройство состоит из 10 однотипных узлов, каждый из которых характеризуется интенсивностью отказов от 0,2 10 3 1 час . Определите среднее значение безотказной работы устройства, если возможные отказы узлов взаимно независимые. №2. Среднее значение наработки на сбой некоторого устройства, состоящего из 125 однотипных элементов равно 40 час. Чему равна интенсивность сбоев одного элемента? №3. В елочной гирлянде, состоящей из 35 последовательно соединенных лампочек накаливания (ЛН) и подключенной к цепи переменного тока с напряжением 220 В, перегорела нить накаливания одной из них. Используя процедуру дихотомии гирлянды, определите минимальное число проверок, необходимых для локализации k - ой отказавшей ЛН, если для проведения проверок вы располагаете пробником на 220 В, а k равно вашему номеру в списке академической группы. Результаты представьте в формах таблицы и диаграммы, аналогичных приведенным в Примере 1.1. 22 Глава 2 Контроль достоверности передачи и хранения информации. Помехоустойчивое кодирование информации 2.1. Общие сведения о каналах передачи данных В процессе выполнения возложенных на АСОИиУ функций осуществляется достаточно активный обмен данными между отдельными узлами, устройствами и подсистемами внутри системы. При распределенной обработке информации, а также при централизованном управлении рассредоточенными объектами взаимодействие между территориально удаленными системами обработки информации или системой управления и объектами управления осуществляется за счет интенсивного обмена дынными между ними. В обоих случаях передача данных от источника информации к приемнику осуществляется по каналу передачи данных, под которым понимают совокупность технических средств и физическую среду передачи данных. Физической средой передачи (распространения) данных является некоторый естественный или специально организуемый канал связи, по которому данные передаются при помощи сигналов: электрических (по проводам), световых (по оптоволокну), электромагнитных волн (в пространстве) и прочих. Технические средства – это, как правило, устройства сопряжения, облегчающие согласование сигнала и канала связи по их характеристикам, а также по соотношению скорости передачи информации и пропускной способности канала связи. Каналы используемой связи среде классифицируются передачи по (проводные, различным кабельные, признакам – по оптоволоконные, 23 радиоканалы и т.д.), по полосе частот (высокочастотные, коротковолновые, световые и т.д.), по типу сигналов, подаваемых на вход канала и наблюдаемых на его выходе и т.п. В соответствии с последним из приведенных признаков принято различать непрерывные и дискретные (цифровые) каналы передачи. Если входные и выходные сигналы описываются непрерывными функциями времени, которые могут принимать значения, непрерывно заполняющие некоторый интервал на числовой оси, то их называют непрерывными (аналоговыми) сигналами, а соответствующий канал – непрерывным. Если же входные и выходные сигналы канала могут принимать только конечное множество дискретных (разрешенных) значений, то канал называют дискретным (цифровым). Любое сообщение, поступающее на вход канала связи, имеет форму сигнала (электрического, оптического и пр.), изменяющегося во времени. При этом уже неважно в какой первоначальной форме было представлено передаваемое сообщение – были ли это звуки речи или музыки, текст отчета или донесения, показания измерительного прибора или кардиограмма больного и т.д. Во всех случаях исходное сообщение преобразуется в сигнал, а устройство, осуществляющее это преобразование, должно быть таким, чтобы изменения сигнала были с достаточной точностью аналогичны изменениям сообщения. На приемном конце канала связи переданный сигнал вновь преобразуется так, что он принимает форму передаваемого сообщения – преобразуется в звук, текст или кардиограмму. Казалось бы, что преобразование различных сообщений в электрический сигнал окажется достаточным, чтобы, унифицировать методы и средства передачи информации. В действительности передача информации с помощью аналоговых электрических сигналов не обеспечивает желаемой степени унификации и, что самое неприятное, не защищает передаваемые сигналы от воздействия неизбежных помех. 24 Преимущества цифровых систем передачи данных состоят в том, что они не только обеспечивают возможность полной унификации, но и позволяют достичь любую требуемую достоверность передачи. В цифровом (дискретном) канале сигналы на его входе и выходе представляют собой последовательность символов некоторого алфавита. Если выбранный алфавит состоит всего из двух символов – например «0» и «1», то канал называют двоичным. На рис. 2.1 приведена обобщенная структурная схема передачи информации по двоичному каналу. Рис.2.1. Обобщенная структурная схема передачи информации по дискретному (двоичному) каналу Поступающая от источника информация с помощью преобразователя П1 преобразуется в последовательность двоичных символов. Символы этой последовательности с помощью технических средств канала (модулятора) преобразуются в электрические сигналы, передаваемые по каналу связи, где они обычно искажаются помехами. На приемном конце технические средства канала (демодулятор) преобразуют поступившие искаженные сигналы в последовательность двоичных символов, а преобразователь П2 – в форму исходного сообщения. В результате в приемник поступит искаженная информация, если в структуре канала не предусмотреть устройства защиты от возможных ошибок. 25 2.2. Модели каналов передачи и хранения данных Случайный процесс возникновения ошибок в дискретном канале будет полностью описан, если заданы: входной и выходной алфавиты символов, а также совокупность переходных вероятностей вида p=(a*/a), где a – символ на входе канала и a*– символ на выходе канала, а p=(a*/a) – вероятность приема символа a* при условии, что передан символ a. Вероятности переходов, связывающие входные и выходные символы, могут быть заданы в виде матрицы переходных вероятностей, которая для двоичного канала, имеет вид: P p11 p21 p12 p22 p (0/0) p (1/0) p (0/1) p (1/1) . (2.1) Здесь p11 p (0/0 ) и p22 p (1/1) – вероятности безошибочной (достоверной) передачи символов «0» и «1», а p21 p (1/0 ) и p12 p (0/1) – вероятности искажения (конверсии) передаваемых символов «0» в «1» и «1» в «0» соответственно. Для вероятностей (2.1) справедливы равенства p(0/0) p(1/0) 1, p(0/1) p(1/1) 1, или p11 1 p21, p22 1 p12. (2.2) В правых частях (2.2) указаны только вероятности искажений (ошибок) при передаче по каналу различных символов. Эти равенства можно рассматривать как вероятностную модель реального двоичного канала. Если возможные значения символов входных ( a ) и выходных ( a * ) расположить в узлах графа, соединив эти узлы дугами, отображающими вероятности перехода одного символа в другой, то получим графическое представление модели двоичного канала (рис. 2.2). Для наиболее часто используемых вероятностных моделей двоичных каналов делается допущение, что конверсии «1» в «0» или «0» в «1» – равновероятны: p12 p21 p или p(1/0) p(0/1) p, (2.3) 26 где p – теперь можно назвать просто вероятностью ошибки. Такой двоичный канал называют симметричным (его вероятностная модель приведена на рис. 2.2, б) в отличие от канала, для которого p12 p21 и именуемого несимметричным (рис.2.2,а). Рис. 2.2. Вероятностная модель двоичных каналов: а) – несимметричного, б) – симметричного Из (2.3) следует, что вероятностная модель двоичного симметричного канала полностью определяется единственной величиной – вероятностью ошибки при передаче одного символа p . Для нормально функционирующих реальных двоичных каналов p<<0,1. В современных АСОИиУ значительный объем оборудования занимает память, реализуемая в виде запоминающих устройств (ЗУ). Хранение информации в ЗУ и ее передача по каналам связи являются взаимнооднозначными преобразованиями, при которых входное слово, поступающее в канал передачи или записываемое в ЗУ и слово на выходе из канала передачи или считываемое из ЗУ должны совпадать. Следовательно, ЗУ можно рассматривать как канал хранения данных, в котором в отличие от канала передачи, информация распространяется не в пространстве, а во времени-слово, записанное в ЗУ, считывается из него спустя некоторое время, а не непосредственно. Из сказанного можно сделать заключение об идентичности структурных схем каналов передачи и хранения информации. Учитывая далее случайный характер причин 27 возникновения ошибок в словах, хранящихся в ЗУ (внешние дестабилизирующие воздействия, неисправности в самом ЗУ), как это имеет место и для каналов связи, можно сделать заключение об эквивалентности вероятностных моделей каналов связи и каналов хранения и, следовательно, возможности применения для анализа надежности ЗУ вероятностных моделей двоичного канала связи, приведенных выше. Из (2.2) с учетом (2.3) следует, что вероятностная модель двоичного симметричного канала полностью определяется единственной величиной – вероятностью ошибки или искажения одного символа p. Кроме того, если учесть что искажения в каждом конкретном символе n – разрядного двоичного слова при его передаче по каналу связи или хранении в ЗУ равновероятны и происходят независимо от успешности или ошибочности передачи или хранения других символов (т.е. ошибки взаимно независимые), можно полагать, что вероятность P(d=r) одновременного искажения в канале r символов подчиняется биномиальному закону распределения P(d r ) Cnr p r (1 p) nr , (2.4) где d – число искаженных символов (кратность ошибок), Cnr – число сочетаний из n символов по r , n – число символов (разрядность) двоичного слова, p – вероятность искажения (ошибки) одного символа. Из (2.4) следует, что в каналах передачи и хранения данных вероятность ошибки большей кратности меньше вероятности ошибок меньшей кратности, т.е. для вероятностей ошибок справедлив следующий ряд соотношений: P(d=1)>P(d=2)>P(d=3). Кроме того, из (2.4) также следует справедливость следующего утверждения – вероятность ошибок кратности r зависит от: 28 – значения p – вероятности искажения одного символа, – общего числа символов в слове – n . Рассмотрим пример, подтверждающий справедливость этого утверждения. Пример 2.1. Определим значения вероятностей ошибок кратности d r ( r 0, 1, 2, 3) в 11–и и 16–и разрядных двоичных словах в каналах, для которых вероятности искажения одного символа равны p=0,001 и p=0,01. Учитывая трудоемкость вычислений непосредственно по выражению (2.4), результаты получим с применением формулы Пуассона: P(d r ) (n p ) r r! e ( n p ) . Результаты расчетов сведены в табл. 2.1 и 2.2. Таблица 2.1 Вероятности ошибок кратности r в 11–и разрядных словах p P(d=r) P(d=0) P(d=1) P(d=2) P(d=3) Таблица 2.2 0,001 0,01 0,989 0,0108 0,000054 0,00000016 0,895 0,0994 0,0050 0,000152 Увеличение в () Уменьшение в () в 1,1 раза в 9,2 раза в 92,5 раза в 950 раза Вероятности ошибок кратности r в 16-и разрядных словах p P(d=r) P(d=0) P(d=1) P(d=2) P(d=3) 0,001 0,01 0,984 0,015 0,0001 0,00000055 0,851 0,137 0,0104 0,000491 Увеличение в () Уменьшение в () в 1,2 раза в 9,13 раза в 104 раза в 892,7 раза 29 Из анализа содержащихся в таблицах результатов можно заключить, что с ростом вероятности искажения одного символа p происходит перераспределение вероятностей ошибок различной кратности – вероятность получения неискаженного слова, т.е. P(d 0) уменьшается, а вероятности получения слов, искаженных одной и тем более двумя или тремя ошибками увеличиваются. Так, например, при увеличении p от значения 0,001 до 0,01 (в 10 раз), вероятность возникновения в 16-и разрядных словах одинарных ошибок увеличивается в 9,13 раза, а ошибок кратности d=3 в 892,7 раз. Результаты расчетов, позволяющие оценить влияние на вероятности появления в словах ошибок различной кратности от разрядности слова n приведены в табл. 2.3. Таблица 2.3 Вероятности ошибок кратности r , соответствующие словам разрядности n при р=0,01 n P(d=r) P(d=0) P(d=1) P(d=2) P(d=3) 11 16 0,895 0,099 0,0050 0,000152 0,851 0,137 0,0104 0,000491 Увеличение в () Уменьшение в () в 1,05 раза в 1,38 раза в 2,08 раза в 3,23 раза Из анализа этой таблицы можно заключить, что наращивание разрядности слов n сопровождается аналогичным, как и при росте p , но менее выраженным эффектом перераспределения вероятностей – вероятность отсутствия в слове ошибок уменьшается, а вероятности появления ошибок кратности d=1,2,3,… – увеличиваются. 30 2.3. Коды и кодирование: основные понятия и определения Под кодом понимают совокупность знаков (или символов) некоторого алфавита и систему определенных правил, при помощи которых информация, подлежащая передаче, хранению или обработке, может быть представлена (закодирована) в виде комбинации этих символов. В цифровых устройствах для кодирования информации чаще всего используют алфавит, содержащий всего два символа – «0» и «1» и, следовательно, сообщения представляют собой конечную или бесконечную последовательность двоичных (бинарных) символов. При этом, исходя из чисто технических соображений, такие последовательности разбивают на блоки, называемые двоично-кодированными словами или просто словами. Если все слова, используемые для передачи и хранения или участвующие в преобразованиях, содержат одинаковое число символов (разрядов), допустим m, код называют равномерным и именно такие коды обычно используют в АСОИиУ. Значение m определяется множеством сообщений M, подлежащих кодированию. Если для передачи, хранения или преобразований используется M кодовых комбинаций (слов) таких, что 2m1 M 2m , (2.5) то такой двоичный код называется натуральным или простым. Все M кодовые комбинации такого кода являются рабочими или разрешенными, а все m разрядов (символов) в кодовой комбинации используются для кодирования полезной информации. Следовательно, простой код является безизбыточным кодом, а множество образующих его m разрядных кодовых комбинаций являются информационными словами. Простой код является самой компактной формой кодирования информации, что, естественно является его достоинством. Однако, простой код не позволяет 31 обнаружить (выявить) и тем более исправить возможные ошибки в кодовых комбинациях, возникающие при их передаче, хранении или обработке. Пример 2.2. Предположим, что по двоичному симметричному каналу должны передаваться сообщения, содержащие информацию о состоянии некоторого объекта или процесса. Положим далее, что множество возможных состояний объекта и, следовательно, множество возможных сообщений M 8 . Определив из (2.5) значение m 3 , поставим в соответствие каждому из возможных сообщений одну из кодовых комбинаций трехразрядного простого кода: {000, 001, 010, 011, 100, 101, 110, 111}. Допустим, что передается слово 010 и в канале исказился первый из разрядов этого слова, то есть на выходе из канала получено слово 110. На приемной стороне нет возможности обнаружить данную ошибку (равно, как и любую другую), так как полученное из канала слово 110 входит в перечень слов, которые могут быть получены и при безошибочной передаче. Естественно, что если ошибка не обнаруживается, то нет возможности исправить ее. Рассмотренный пример позволяет сделать следующий важный вывод – ошибки в n разрядных словах могут быть обнаружены только в том случае, когда полученные из канала слова не входят в перечень возможных безошибочных слов, поступающих на вход канала. Другими словами множество N 2 n n разрядных слов должно быть разбито на два подмножества: одно из них – это рабочие или разрешенные слова и второе – искаженные ошибками слова или запрещенные слова. Для того, чтобы установить к какому из подмножеств принадлежит слово, полученное из канала, разрешенным словам до их поступления в канал с помощью определенных правил их кодирования придают некоторый признак (или свойство), который утрачивается при переходе слова в подмножество запрещенных слов. Следовательно, контролируя на выходе из канала наличие этого признака, можно судить о принадлежности слова к 32 подмножеству разрешенных и, следовательно, о достоверности (безошибочности) слова или об его искажении ошибками, если этот признак утрачен и слово оказалось в подмножестве запрещенных. Рассмотрим несколько примеров формирования (кодирования) разрешенных кодовых слов. Пример 2.3. представляется В вычислительных машинах информация обычно виде двоичных последовательностей. При этом используется несколько способов представления десятичных чисел 0, 1, … , 9. Одним из таких способов является код «два из пяти», показанный в табл. 2.4. Любое из десятичных чисел в этом коде представляется в виде пятиразрядной двоичной последовательности, в которой два из пяти символов всегда равны «1». Таблица 2.4 Отметим, Представление десятичных что С52 10 и, следовательно, с помощью кода «2 из 5» чисел с помощью равновесного кода можно «2 из 5» произвольных сообщений, а не только Десятичные числа 0 1 2 3 4 5 6 7 8 9 Код «2 из 5» 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 1 закодировать до 10 десятичные числа. При использовании 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 1 1 этого кода из множества пятиразрядных кодовых комбинаций, которых разрешенными общее равно (рабочими) число N 25 32 , являются только N р С52 10 комбинаций. При возникновении в кодовой комбинации одиночной ошибки, т.е при искажении (конверсии) в канале одного из пяти символов, слово на его выходе будет содержать один или три единичных символа, что свидетельствует о наличии ошибки в слове, полученном из канала. Рассмотренный код «2 из 5» является одним из представителей так называемых равновесных кодов. 33 В общем случае с помощью равновесного кода «m из n» могут быть представлены (закодированы) Сnm сообщений. Разрешенные слова в этом случае представляют собой двоичные последовательности разрядности n, содержащие ровно m единичных символов. Например, равновесный код «2 из 6» позволяет закодировать до N р С62 15 сообщений. При этом разрешенные кодовые комбинации представляют собой шестиразрядные двоичные последовательности, содержащие ровно два единичных символа. Равновесные коды оказываются достаточно эффективными для обнаружения возможных ошибок в двоичных несимметричных каналах для которых вероятность возникновения ошибки типа «конверсия символа 0 в символ 1» значительно больше (или значительно меньше), чем вероятность возникновения ошибки типа «конверсия символа 1 в символ 0». Пример 2.4. Любой простой двоичный код, в частности трехразрядный, примененный в примере 2.2 для кодирования восьми сообщений, не позволяет обнаружить возможные в словах ошибки, так как все слова кода являются разрешенными. При этом ошибка в одном, двух или трех разрядах некоторого разрешенного слова преобразует это слово в другое, но также разрешенное. Для обеспечения возможности разбиения множества слов на разрешенные и запрещенные при сохранении общего числа сообщений, подлежащих кодированию равного восьми, увеличим разрядность слов на единицу, т.е. к трем разрядам простого кода a3a2 a1 добавим четвертый – , именуемый проверочным или контрольным. В результате получим множество из 24=16 слов a3a2 a1 ,которое разобьем на два подмножества – разрешенных и запрещенных слов. Причем в подмножество разрешенных включим те слова, для которых i a3 a2 a1 , где аi (i=1, 2, 3) – символы простого кода, 34 – символ сложения по модулю два. Таблица 2.5. Представление Очевидно, что полученные таким сообщений помощью кода с контролем четности Сообщение Si Код сообщения с образом разрешенные кодовые слова будут характеризоваться признаком четности (таблица 2.5).Множество полученных таким образом а3 а2 а1 разрешенных слов образует код, S1 0 0 0 0 S2 0 0 1 1 именуемый «код с контролем S3 0 1 0 1 четности». (Четными называют S4 0 1 1 0 двоичные слова, содержащие четное S5 1 0 0 1 S6 1 0 1 0 число единиц, а также слово «все S7 1 1 0 0 нули»). S8 1 1 1 1 Подмножество запрещенных слов образуют все нечетные слова и появление на выходе из канала нечетного слова свидетельствует об ошибке. Известны и другие способы (или алгоритмы) кодирования, в результате применения которых разрешенным (рабочим) словам придается тот или иной характерный признак, контролируя наличие которого на выходе из канала можно судить о достоверности слова или его искажении ошибками. С некоторыми из них вы познакомитесь в следующих разделах пособия. Хотя различные алгоритмы кодирования очень непохожи друг на друга, общим для них всех (в том числе и для рассмотренных выше) является то, что формируемые в результате их применения кодовые слова принадлежат так называемым избыточным кодам. 35 2.4. Принципы помехоустойчивого кодирования В реальных каналах передачи и хранения двоично-кодированной информации возможно ее искажение – вместо символа «1», поступившего на вход канала, на его выходе может быть получен символ «0» или наоборот. Общепринятым критерием оценки достоверности (или безошибочности) передачи и хранения информации в дискретных каналах является нормированная на знак или на символ допустимая вероятность ошибки. Так, допустимая вероятность ошибки для телеграфной связи может составлять 10–3 на знак, а при передаче или хранении двоично-кодированных данных – не более 10–6 на символ. Допустимую вероятность ошибки следует интерпретировать следующим образом: например, если ее значение равно 10–3 на знак, то это значит, что на каждую тысячу знаков в среднем приходится одна ошибка; если же значение допустимой вероятности на символ равна 10–6 , то это означает, что в среднем одна ошибка приходится на каждый миллион символов. Для обеспечения таких высоких значений вероятностей ошибок одного только улучшения качественных показателей самих каналов может оказаться недостаточным. Поэтому на практике для повышения достоверности передачи и хранения информации применяют специальные методы, основанные на искусственном и целенаправленном введении избыточности в сообщения, поступающие в канал. Поясним сказанное. Пусть М – это число (или множество) сообщений, подлежащих передаче или хранению. Каждому из сообщений поставим в соответствие m – разрядное двоичное слово А=аm am–1… a1, причем m log 2 M , где V – ближайшее целое большее или равное V. Полученное множество слов, именуемых информационными, образует простой код, в котором все m разрядов (информационные разряды) используются для кодирования собственно 36 сообщения. Введение избыточности предполагает дополнение по определенным правилам (алгоритмам) m – разрядных информационных слов k дополнительными или избыточными разрядами. Эти разряды, именуемые проверочными или контрольными, используют для того, чтобы придать каждой кодовой комбинации, поступающей на вход канала, некоторый характерный признак, контролируя наличие которого на выходе из канала, можно судить о ее безошибочности, а в отдельных случаях и исправлять возникшие ошибки. Таким образом, введение информационной избыточности предполагает наращивание разрядности информационных слов от значения m до некоторого n значения n=m+k. При этом из n двоичных символов можно образовать N 2 различных кодовых комбинаций, из которых только M 2m являются разрешенными (рабочими), т.е. обладающими определенным искусственно приданным им признаком, и именно они используются для передачи или хранения сообщений. Остальные N–M кодовые комбинации являются запрещенными и не обладают признаком, характерным для разрешенных. Полученные подобным образом n – разрядные разрешенные кодовые комбинации именуют кодовыми словами, а множество М кодовых слов образует помехоустойчивый или избыточный код. Процедура перехода от m – разрядных информационных слов А к соответствующим n – разрядным кодовым словам Ак именуется кодированием и осуществляется она по определенным правилам или алгоритмам E, индивидуальным для каждого из известных помехоустойчивых кодов. Кодирование может быть реализовано как с помощью специализированных устройств – кодирующих устройств (или кодеров), так и программными методами на ЭВМ (рис. 2.3). 37 Рис. 2.3. Кодирование для последовательного а) и параллельного б) каналов На выходе из канала осуществляется операция декодирования. Декодирование поступившей из канала кодовой комбинации может выполняться с целью только обнаружения в ней возможных ошибок, в других случаях цель декодирования не только обнаружение, но и исправление (или иначе – коррекция) возникших в кодом слове ошибок. Таким образом, декодирование может производиться либо в режиме обнаружения ошибок, либо в режиме их коррекции. Если полученная из канала кодовая комбинация является одной из числа разрешенных, то она считается достоверной. Если же принятая кодовая комбинация не принадлежит множеству разрешенных, то в режиме обнаружения ошибки фиксируется только факт наличия ошибки, а в режиме исправления ошибки предпринимается попытка коррекции ошибок. Для возможности коррекции ошибок необходимо использовать некоторый критерий, позволяющий по полученной из канала искаженной кодовой комбинации осуществить выбор из множества разрешенных комбинаций той, которая предположительно была подана на его вход. В дискретных каналах, в которых наиболее вероятны независимые ошибки, в качестве такого критерия выбора применяют принцип максимального правдоподобия, в основу которого положено предложение, что в канале вероятность ошибки большей кратности меньше вероятности ошибки меньшей кратности (см. раздел 2.2). Если такое предложение справедливо, оправдано отождествлять с передаваемой комбинацией ту из разрешенных, которая отличается от полученной искаженной в наименьшем числе разрядов. 38 Декодирование также как и кодирование может быть осуществлено специализированным устройством – декодером или программно. При этом, если декодирование осуществляется в режиме обнаружения ошибок, декодер только констатирует факт безошибочности полученной кодовой комбинации или ее искажения ошибками, если же декодирование осуществляется в режиме коррекции ошибок, декодер исправляет (обычно только в информационных разрядах) выявленные ошибки (рис. 2.4). Рис. 2.4. Декодирование в режиме обнаружения а) и коррекции ошибок б) Пример 2.5. Предположим, что по дискретному каналу необходимо передать четыре различных сообщения, т.е. М=4. Поставим в соответствие каждому из сообщений информационные слова разрядности m log 2 4 2 (табл. 2.6). Все информационные слова являются разрешенными и поэтому при их искажении в канале получим другое слово, но также разрешенное и, следовательно, ошибки не выявляются. Таблица 2.6 Сообще- Информационные Код ния слова с контролем нечетности А = а2 а1 Ак= а2 а1 S1 А1= 0 0 Ак1=0 0 1 S2 А2= 0 1 Ак2=0 1 0 S3 А3= 1 0 Ак3=1 0 0 S4 А4= 1 1 Ак4=1 1 1 получим слово А4=11, также разрешенное. Например, при передаче слова А2=01 искажении в и канале первого разряда выходе из на канала Для возможности обнаружения ошибок перейдем от двухразрядных информационных слов к трехразрядным кодовым словам, придав им в качестве 39 признака разрешенности – их нечетность. Последнее означает, что значение проверочного символов i , добавляемого к информационным, находится как i a2 a1 , i=1,2,3,4. Разрешенные кодовые комбинации полученного таким образом кода, именуемого кодом с контролем нечетности, приведены в табл. 2.6. Остальные трехразрядные кодовые комбинации (их как и разрешенных – четыре) являются запрещенными. При передаче по каналу кодового слова, например Ак2=010 и искажении в канале одного из разрядов, допустим, первого, на выходе из канала получим Ak*2 110 . Поскольку Ak*2 не входит в перечень разрешенных делается заключение об его ошибочности. Следовательно, код с контролем нечетности (как и код с контролем четности, рассмотренный в Примере 2.4) позволяет обнаруживать в кодовых словах любые одинарные ошибки, а также ошибки произвольной нечетной кратности. В то же время код с контролем нечетности не позволяет выявлять в кодовых словах ошибки четной кратности. Так, если в передаваемом кодовом слове, например – Ак2=010, исказятся два разряда, допустим – первый и второй, то на выходе из канала получим кодовую комбинацию 100, являющуюся разрешенной (соответствует Ак3) и, следовательно, ошибка не выявляется. Кроме того, код с контролем нечетности (как и код с контролем четности) не позволяет локализовать ошибку и, следовательно, исправить ее. Действительно, искаженная кодовая комбинация Ак*2 011 на выходе из канала может быть получена при передаче кодовых слов: Ак1=001 и искажении второго разряда, Ак2=010 и искажении третьего разряда, Ак4=111 и искажении первого разряда. Пример 2.6. Преобразуем двухразрядные информационные слова в пятиразрядные кодовые слова избыточного кода в соответствии со следующим алгоритмом. 40 1.Образуем из символов информационного слова А=а2а1 три группы, включающие символы: 1 группа – а2 и а1, 2 группа – а1 и 3 группа – а2; 2.Добавим к каждой из групп по одному проверочному символу, значение которого выберем таким образом, чтобы группа с учетом и проверочного символа стала четной, т.е. 1 a1 a2 , 2 a1 , 3 a2 . Таблица 2.7 Информационные слова А = а2 а1 А1= 0 0 А2= 0 1 А3= 1 0 А4= 1 1 Информационные Кодовые Слова Ак= а2 а1 α3 Ак1=0 0 0 Ак2=0 1 0 Ак3=1 0 1 Ак4=1 1 1 и соответст- вующие им кодовые слова сведены в α2 α1 0 0 1 1 0 1 1 0 табл. 2.7. Остальные, таблице не приведенные пятиразрядные в кодовые комбинации, общее число которых равно 25-4=28, являются запрещенными. Полученный подобным образом код позволяет не только обнаружить ошибку, но и исправить ее. Допустим, что в передаваемом по каналу кодовом слове Ак3=10101 исказился второй разряд и, следовательно, на выходе из канала получена кодовая * 11101 , не входящая в перечень кодовых слов и, следовательно, комбинация Aк3 делается заключение об ее ошибочности. Учитывая далее то, что полученная из канала искаженная кодовая комбинация 11101 отличается от кодового слова Ак3=10101 всего одним символом (вторым), а от остальных кодовых слов двумя или тремя символами, делается заключение, что передавалось кодовое слово Ак3 и соответствующее ему информационное слово А3=10. Следовательно, код позволяет не только установить ошибочность кодовой комбинации, полученной из канала, но и восстановить кодовое слово, поступившее на его вход, т.е. исправить (скорректировать) ошибку. Проанализируем поведение рассматриваемого кода в случае, когда в передаваемом кодовом слове, например слове Ак3=10101, в канале исказится два 41 разряда, допустим второй и пятый. При этом на выходе из канала будет получена кодовая комбинация 11100, не принадлежащая подмножеству разрешенных (приведенных в табл. 2.7) и, следовательно, декодер установит факт ее ошибочности. Для исправления ошибок декодер отыскивает в перечне разрешенных кодовых комбинаций ту, которая отличается от полученной искаженной наименьшим числом разрядов (так как в основу его работы положен принцип максимального правдоподобия). Поскольку декодеру не известно сколько фактически разрядов в полученной кодовой комбинации искажено за передаваемое кодовое слово он принимает кодовое слово Ак4=11110, как отличающиеся от полученной из канала искаженной кодовой комбинации всего одним разрядом – четвертым. В результате будет сделано ложное заключение, что передавалось кодовое слово Ак4 и ошибка пришлась на четвертый разряд этого слова тогда, как фактически передавалось слово Ак3 и оно искажено двумя ошибками. Следовательно, код способен обнаруживать одинарные и двойные ошибки, исправлять одинарные ошибки, а исправлять двойные ему уже не под силу. Из рассмотренных Примеров 2.5 и 2.6 можно сделать следующий вывод. Некоторые из помехоустойчивых кодов позволяют только обнаруживать ошибки определенной кратности, другие – способны не только обнаруживать, но и исправлять ошибки определенной кратности. Естественно возникают вопросы: От чего зависят обнаруживающие и корректирующие способности кода? Как построить код с требуемыми возможностями? Ответы на эти вопросы будут даны в последующих разделах главы. 42 2.5. Классификация помехоустойчивых кодов. Параметры и характеристики помехоустойчивых кодов К настоящему времени разработано достаточно большое число различных помехоустойчивых кодов, отличающихся функциональным назначением, возможностями по обнаружению и исправлению ошибок, используемыми алгоритмами кодирования и декодирования, структурой кодовых слов, избыточностью и рядом других классификационных признаков. Прежде всего, все помехоустойчивые коды разделяются на две группы – коды, обнаруживающие ошибки и коды, исправляющие ошибки (корректирующие коды). Коды, обнаруживающие ошибки позволяют только установить ошибочность полученной из канала кодовой комбинации. Примерами таких кодов являются коды, рассмотренные в Примерах 2.4 и 2.5. Корректирующие коды – это коды, которые не только обнаруживают, но и исправляют в искаженных кодовых комбинациях ошибки определенной кратности. Примером корректирующего кода, исправляющего одинарные ошибки, является код, рассмотренный в Примере 2.6. Остановимся кратко на других классификационных особенностях помехоустойчивых кодов. Помехоустойчивые коды делятся на блочные и непрерывные. Блочными называются коды, в которых последовательность информационных символов разбивается на группы и каждая из них преобразуется в определённую последовательность (блок) кодовых символов. В блочных кодах кодирование (формирование проверочных символов) и декодирование (обнаружение и исправление ошибок) выполняются в пределах каждой кодовой комбинации (блока) в отдельности по соответствующим алгоритмам. 43 Непрерывные или рекуррентные коды образуют последовательность символов, не разделяемую на отдельные кодовые комбинации. Кодирование и декодирование непрерывно совершаются над последовательностью символов без деления их на блоки. Формирование проверочных символов ведётся по рекуррентным (возвратным) правилам, поэтому непрерывные коды часто называют рекуррентными или цепными. В простейшем цепном коде каждый проверочный символ формируется путём сложения по модулю 2 двух соседних или отстоящих друг от друга на определённое число позиций информационных символов. В канал поступает последовательность символов, в которой за каждым информационным следует проверочный. Блочные коды делятся на равномерные и неравномерные. В равномерных кодах, в отличие от неравномерных, все кодовые комбинации содержат одинаковое число символов (разрядов) – n. Равномерные коды в основном и применяются для передачи и хранения данных в АСОИиУ. Почти все блочные коды принадлежат к разделимым кодам, в которых n – разрядные кодовые комбинации состоят из двух частей: информационной и проверочной. Их символы всегда занимают одни и те же позиции, т.е. располагаются в определённых (фиксированных) разрядах. Разновидностью разделимых кодов являются систематические коды, в которых первые m символов кодовых комбинаций являются информационными, а за ними располагаются k=(n–m) проверочных символов. Разделимые коды получили условное обозначение – (n, m) – коды. В неразделимых кодах деление на информационные и проверочные символы отсутствует. К таким кодам относятся, в частности, равновесные коды, например, код «2 из 5» рассмотренный в Примере 2.3. 44 Линейные коды образуют наиболее обширную группу (n, m)– разделимых кодов. Особенностью этих кодов является то, что проверочные (контрольные) символы образуются с помощью определенных линейных операций над информационными. Кроме того, любая разрешённая кодовая комбинация может быть получена в результате линейной операции над набором q линейно независимых кодовых комбинаций. В частности, суммирование по модулю 2 двух и более разрешённых комбинаций также дает разрешённую кодовую комбинацию. Поскольку теоретической основой получения таких комбинаций является математический аппарат линейной алгебры, то коды и называют линейными. Использование для формирования и анализа кодов аппарата линейной алгебры, в которой важное значение имеет понятие "группа", породило и другое название для этих кодов – групповые. Линейные (групповые) получили наибольшее применение в системах передачи и хранения дискретной информации. Нелинейные коды указанными выше свойствами не обладают и применяются значительно реже в специальных случаях. Нелинейными, в частности, являются уже упоминавшиеся неразделимые равновесные коды (Пример 2.3). Эти коды обычно используются в несимметричных каналах, в которых вероятность ошибки типа переход (конверсия) 1 → 0 значительно больше вероятности перехода 0 → 1 или наоборот. В таких каналах очень маловероятно, чтобы в одном блоке символов были переходы обоих типов и поэтому почти все ошибки приводят к изменению числа единичных символов в блоке, и, следовательно, обнаруживаются. К числу основных параметров помехоустойчивых кодов относятся следующие: 1) m – число информационных символов (разрядов) кодовой комбинации, 2) k – число проверочных (контрольных) символов кодовой комбинации, 45 3) n=m+k – общее число символов (разрядов) кодовой комбинации, 4) R – избыточность кода, 5) M – мощность кода, 6) w – вес кодовой комбинации, 7) d – кратность ошибки, 8) D – кодовое расстояние, 9) Dmin – минимальное кодовое расстояние. Приведем краткие смысловые пояснения параметров 4–9, что касается параметров 1–3, то они, видимо, в этом не нуждаются. Избыточность помехоустойчивого кода оценивается коэффициентом избыточности: R k nm m 1 n n n. (2.6) Коэффициент R показывает какую часть общего числа символов кодовой комбинации составляют проверочные символы. Очевидно, что значение R непосредственно связано с обнаруживающими и корректирующими возможностями кода. Чем больше R, тем выше эти возможности и наоборот. Но эта зависимость не является однозначной. Корректирующие возможности кода при заданной избыточности (особенно для больших k) зависят также и от используемых способов (алгоритмов) кодирования и декодирования. Определение минимальной избыточности при заданных корректирующих возможностях и, наоборот – максимальных корректирующих возможностей при заданной избыточности являются одними из основных задач теории кодирования. Мощность кода М – это число разрешенных кодовых комбинаций, которая при m информационных разрядах в кодовых комбинациях определяется как М 2m . Очевидно, что общее число кодовых комбинаций N, мощность кода М и число запрещенных кодовых комбинаций N з связаны соотношением: 46 N з N M 2n 2m , а отношение числа разрешенных (рабочих) комбинаций к общему числу кодовых комбинаций составляет: M 2m 2m 1 n m k k N 2 2 2 . (2.7) Вес кодовой комбинации w – это число единичных символов, содержащихся в данной кодовой комбинации. Например, для кодовой комбинации Ai 11001 ее вес w(Ai)=3, а для комбинации Aj=0100– w(Aj)=1. Под кратностью ошибок d понимают число искаженных разрядов (символов) кодовой комбинации. В двоичных каналах ошибки представляют собой переходы (или конверсии) верного символа «1» в «0» (10) или наоборот – 01. Если ошибка пришлась всего на один разряд кодовой комбинации, т.е. d=1, то ее называют одинарной, если же ошибки пришлись на два или более разрядов кодовой комбинации, т.е. d 2 , ошибки именуются многократными. Кодовым расстоянием D между двумя кодовыми комбинациями называется количество разрядов, которыми эти комбинации отличаются. Например, для кодовых комбинаций А1=01011 и А2=10010 кодовое расстояние D(А1, А2)=3, так как А1 и А2 отличаются символами в трех разрядах – первом, втором, и пятом. Для нахождения кодового расстояния между кодовыми комбинациями Аi и Аj достаточно сложить по модулю 2 эти комбинации. Вес w полученной суммы (число единичных символов в сумме) равен кодовому расстоянию: D(Аi, Аj)=w( Ai Aj ). (2.8) Для рассмотренного выше примера имеем: 47 А1=01011 А2=10010 А1 А2=11001 w=(А1 А2)=D(А1,А2)=3. Отметим, что кодовое расстояние между некоторой кодовой комбинацией Аi и комбинацией «все нули» равно весу комбинации Аi – то есть w(Аi). Кодовые расстояния между различными комбинациями некоторого конкретного кода могут существенно отличаться. Так, в частности, для m – разрядного простого кода D для различных пар комбинаций изменяется в диапазоне от 1 до m. Минимальным кодовым расстоянием Dmin (или расстоянием Хэмминга) называется минимальное из кодовых расстояний между любыми двумя разрешенными комбинациями кода, т.е. Dmin=min D(Ai , Aj ). (2.9) Другими словами минимальное кодовое расстояние – это минимальное количество разрядов, символы которых достаточно изменить с тем, чтобы одну разрешенную комбинацию кода превратить в другую, также разрешенную. Для кода, содержащего в числе разрешенных кодовую комбинацию «все нули», при учете (2.8) и (2.9) Dmin равно наименьшему из весов кодовых слов: Dmin minw Ai . Минимальное кодовое расстояние является (2.10) основным параметром, характеризующим обнаруживающие и корректирующие способности кода. В простом коде все кодовые комбинации являются разрешенными и, следовательно, для него Dmin=1. Поэтому при искажении одного, двух или большего числа разрядов в некоторой разрешенной комбинации получим другую, но также разрешенную. Следовательно, простой код не позволяет обнаружить ошибки и тем более исправить их. 48 Для помехоустойчивых (избыточных) кодов Dmin >1. Если для некоторого избыточного кода Dmin=2, то любые две разрешенные комбинации этого кода отличаются не менее чем в двух разрядах. При этом любая одинарная ошибка в произвольно выбранной разрешенной кодовой комбинации не сможет превратить ее в какую-либо другую разрешенную, а приведет к появлению запрещенной. Следовательно, ошибка будет обнаружена. В общем случае, когда требуется обнаруживать ошибки произвольной кратности d0 достаточно, чтобы минимальное кодовое расстояние кода удовлетворяло условию: Dmin d0 + 1. (2.11) В этом случае никакие d0 ошибок не могут перевести одну разрешённую кодовую комбинацию в другую разрешённую. Таким образом, условие обнаружения ошибок кратности d0 можно записать в виде: d0 Dmin – 1. Следует отметить, что соотношение (2.12) (2.12) устанавливает лишь гарантированное минимальное число обнаруживаемых ошибок при заданном Dmin и не ограничивает возможность обнаружения некоторых ошибок большей кратности. Например, код с проверкой на чётность (как и код с проверкой на нечетность) с Dmin = 2 позволяет обнаруживать не только одинарные ошибки, но и ошибки любой нечётной кратности в пределах d0 < n. Для возможности исправления ошибок кратности du и менее, необходимо, чтобы искаженная du ошибками кодовая комбинация не только не совпадала с какой-либо разрешенной, но и оставалась ближе по кодовому расстоянию к истинной, чем к любой другой разрешенной комбинации. От истинной комбинации искаженная отстоит на расстояние du, а от любой другой разрешенной комбинации она должна отстоять не менее чем на du+1. Следовательно, если все разрешенные кодовые комбинации разнести между собой на кодовое расстояние 49 Dmin 2du 1, (2.13) то любые ошибки в кодовом слове кратности не более du могут быть исправлены. Если условие (2.13) не выполнено, возможны случаи, когда ошибки кратности du исказят поступающую в канал комбинацию так, что она станет ближе к одной из разрешенных комбинаций, чем к поступившей в канал, или даже перейдет в другую разрешенную комбинацию. В результате будет осуществлено ложное декодирование, как это было показано в Примере 2.6. Из (2.11) и (2.3) следует, что если код способен исправлять ошибки кратности du, то кратность ошибок, которые он может обнаружить do=2du. Если потребовать, чтобы код исправлял du и одновременно обнаруживал d o du ошибок, то Dmin d u d o 1. (2.14) При построении корректирующего кода одним из основных вопросов является определение его избыточности, т.е. числа проверочных символов k, обеспечивающих требуемое значение минимального кодового расстояния d при фиксированном значении числа информационных символов m. Аналитическое выражение для зависимости k=n–m=f(m,d) до настоящего времени не получено. Существуют лишь крайние оценки этой зависимости, в пределах которых находится искомая величина k. В качестве нижней оценки (границы) используется граница Хэмминга: dи 2 Cni , k (2.15) i 0 где du – кратность ошибок, исправляемых кодом, n=m+k – общее число символов в кодовом слове. Верхняя оценка избыточности корректирующего кода определяется границей Варшамова-Гильберта: 50 2 k 2dи 1 Cni i . (2.16) i 0 2.6. Примеры линейных помехоустойчивых кодов 2.6.1. Код с контролем нечетности Простейшим избыточным кодом, обнаруживающим ошибки и, следовательно, позволяющим удостовериться, что полученные из канала данные не искажены ошибкой и их можно использовать, является код с контролем нечетности. Он образуется добавлением к группе информационных разрядов m одного проверочного (контрольного) разряда . При формировании кодового слова Ак в его контрольный разряд заносится символ 0 или 1 таким образом, чтобы сумма единиц в кодовом слове, включая контрольный разряд, стала нечетной. Следовательно, значение проверочного разряда определяется из выражения: m a1 a2 ... am = ai mod2 , (2.17) i 1 Общая схема применения кода приведена на рис. 2.5. Кодер, представляющий собой m-входовый элемент M 2 , формирует символ , который в качестве дополнительного (m+1)-го разряда отсылается вместе в канал с информационными. При этом n=(m+1) – разрядное кодовое слово всегда будет содержать нечетное число единиц. Так, если информационное слово нечетное, то функция M 2 от такого слова равна 0 ( =0), и нулевое значение контрольного разряда не изменяет нечетного числа единиц в кодовом слове. Если же число единиц в информационном слове четное, то контрольный разряд в 51 этом случае будет равен 1, и результирующее число единиц в передаваемом кодовом слове станет нечетным. Рис.2.5. Схема применения кода с контролем нечетности На выходе из канала проверяется сохранность приданного кодовому слову признака – его нечетность, для чего определяется m P a1 a2 ... am = ai mod2 . (2.18) i 1 Если значение P равно 1, то в передаваемом кодовом слове произошла ошибка, если же P=0 – считают ошибок нет. Столь простой контроль не позволяет исправить ошибку, но он по крайне мере дает возможность при обнаружении ошибки исключить из дальнейшей обработки искаженные слова и затребовать, например, повторную передачу. Код с контролем нечетности позволяет обнаруживать все нечетные ошибки, но не обнаруживает ошибки четной кратности. Пропуск четных ошибок – это следствие малых значений избыточности и минимального кодового расстояния, равных согласно (2.6) и (2.9) соответственно: R k m 1 , n n Dmin=2. 52 При взаимной независимости появления ошибок, наиболее вероятными являются одинарные ошибки. Действительно, при вероятности появления одиночной ошибки, раной p, вероятность появления двойных ошибок – p 2 , тройных – p 3 , и т.д. Поскольку обычно p 1 , необнаруженные кодом с проверкой нечетности двойные ошибки встречаются значительно реже, чем обнаруженные одиночные. Контроль по нечетности – самый привлекательный метод контроля с точки зрения минимума потребных для его реализации дополнительных аппаратных затрат и поэтому имеет широкое применение. Практически любой канал передачи или хранения данных, если он не имеет какого-либо более мощного метода контроля, защищен контролем по нечетности. Наряду с кодом с контролем нечетности для обнаружения ошибок может быть применен код с контролем четности. Его отличие от кода с контролем нечетности состоит в том, что значение проверочного символа находится из выражения: m a 1 a2 ... am ai mod2 i 1 и, следовательно, (m+1) разрядные кодовые слова, посылаемые в канал, всегда четные. Однако при этом случае информационное слово «все нули» будет иметь контрольный разряд, равный нулю ( =0) и в канал будет отправлено кодовое слово из сплошных нулей. На выходе из канала связи такое слово будет неотличимо от весьма опасной неисправности – полного пропадания связи. Поэтому для контроля достоверности передачи данных предпочтение должно быть отдано коду с контролем нечетности (для которого в перечне разрешенных кодовых комбинаций комбинация «все нули» отсутствует). Что касается контроля достоверности хранения данных возможности этих двух кодов эквивалентны и выбор кода является делом вкуса. 53 2.6.2. Код Хэмминга Развитие принципа контроля по четности приводит к корректирующему коду Хэмминга, который позволяет не только обнаруживать, но и исправлять одинарную ошибку в передаваемых по каналу связи или хранимых в ЗУ данных. Р. Хэмминг – сотрудник фирмы Bell Telephone Laboratories в 1948 г. разработал метод обнаружения и исправления одиночных ошибок в передаваемых кодовых словах. В его честь используемый код был назван кодом Хэмминга. В коде Хэмминга из n позиций (разрядов) слова m используются в качестве информационных, а k разрядов в качестве контрольных (n=m+k). Все информационные разряды разбиваются на k групп. За каждой группой закрепляется один контрольный разряд. Перед передачей информации в канал связи или записи её в ЗУ в контрольные разряды заносится символ 0 и 1 таким образом, чтобы сумма единиц в группе, включая контрольный разряд, стала четной. При этом контрольные символы располагают в разрядах кодового слова, номера которых равны целой степени основания 2, т.е. в первом, втором, четвертом и т.д. Контрольная аппаратура (декодер) на выходе из канала производит k проверок на четность всех k групп. После каждой проверке в специальный k – разрядный регистр, именуемый регистром синдрома ошибки, записывается 0, если результат соответствующей проверки свидетельствует об отсутствии ошибки в разрядах проверяемой группы, и 1, если проверка выявила ошибку. Таким образом, каждая проверка заканчивается записью в соответствующие разряды регистра синдрома ошибки 0 или 1. Полученная последовательность нулей и единиц (синдром ошибки) указывает номер позиции (разряд слова) с искаженным символом. 54 Требуемое число контрольных разрядов и, следовательно, контрольных групп, на которое разбивают слово, определяется из следующих соображений. Синдром ошибки должен описывать (задавать) состояния, соответствующие появлению ошибки в любом разряде n – разрядного кодового слова, а также состояние, соответствующее отсутствию ошибки. Следовательно, должно соблюдаться соотношение: 2 k n 1 m k 1. (2.19) Неравенство (2.19) дает возможность определить минимальное значение k для заданного m и, следовательно, разрядность кодового слова – n. В табл.2.8 приведены значения k и n, определенные в соответствии с (2.19) для некоторых заданных значений m. Таблица 2.8. m k n 1 2 3 2 3 5 3 3 6 4 3 7 5 4 9 6 4 10 7 4 11 8 4 12 9 4 13 10 4 14 11 4 15 12 5 17 Способ разбивки информационных разрядов на контрольные группы и определения номеров позиций контрольных разрядов следуют непосредственно из структуры ряда чисел, представленных в двоичной форме. Рассмотрим это на следующем примере. Предположим, что предназначенное для передачи по линии связи (или записи в память) информационное слово содержит четыре разряда, т.е. A a4 a3a2 a1 . Из таблицы 2.8 видно, что корректирующий код для этого случая должен содержать 7 разрядов (n=7), т.е. к 4 информационным должно быть добавлено 3 контрольных разряда: 1, 2 и 3 (рис. 2.6). 55 Информационное слово a4 a3 a2 a1 Кодовое слово a4 a3 a2 3 a1 2 1 7 6 5 4 3 2 1 № разряда Рис. 2.6. Преобразование информационного слова в кодовое, представленного в коде Хэмминга (7,4) Разбивка разрядов слова на контрольные группы производится следующим образом (рис. 2.7). В группу с номером i входят те разряды кодового слова, в двоичном номере которых в i-й позиции стоит единица. Так, в первую группу включены те разряды кодового слова, номер которых в двоичной системе счисления имеет единицу в первом разряде (1, 3, 5, 7). Вторая группа включает разряды, номера которых имеют единицу во втором разряде (2, 3, 6,7) и т.д. Разряды 1, 2 и 4, каждый из которых принадлежит только одной контрольной группе, используется в качестве контрольных. Рис. 2.7. Структура кодового слова и контрольных групп кода Хэмминга (7,4) 56 Процедуру коррекции одинарной ошибки проиллюстрируем следующим примером. Пример 2.7. Положим, что информационное слово, подлежащее передаче или хранению, имеет вид A a4 a3a2 a1 =1100. Значения проверочных символов 1, 2 и 3 , обеспечивающие четность каждой из контрольных групп, найдем из уравнений кодирования: 1 a1 a2 a4 0 0 1 1, 2 a1 a3 a4 0 1 1 0, 3 a2 a3 a4 0 1 1 0. Следовательно, в канал поступит семиразрядное (2.20) кодовое слово Ak a4 a3a2 3a1 21 =1100001. Схема кодера, реализующего уравнения (2.20), изображена на рис. 2.8. а4 (1) М2 (3) α3 (0) № разряда: а4 (1) 7 а3 (1) 6 а2 (0) 5 а3 (1) а2 (0) М2 (2) α2 (0) α3 (0) 4=22 а1 (0) М2 (1) α1 (1) а1 (0) 3 Кодер α2 α1 (0) (1) 1 2=2 1=20 Кодовое слово Рис. 2.8. Кодер кода Хэмминга (7, 4) 57 Допустим, что в канале исказился один из разрядов этого слова, например, третий, т.е. a1. В результате на выходе из канала получим искаженное слово Ak* 1100100 (искаженный символ подчеркнут, а на рис. 2.9 – заштрихован). (1) (2) (3) (4) (5) (6) (7) α1 1 α2 0 а1 0↝1 α3 0 а2 0 а3 1 а4 1 № разряда 1 0 0↝1 0 0 1 1 0↝1 0 1 1 0 1 1 1 Рис. 2.9. Кодовое слово и контрольные группы при искажении символа a1 Ак* поступает на декодер (рис. 2.10), который в первую очередь проверяет сохранность четности в пределах контрольных групп. Другими словами, декодер определяет значения разрядов синдрома S=s3s2s1 по уравнениям проверок: s1 a1 a2 a4 1 1 0 1 1 1, s2 a1 a3 a4 2 1 1 1 0 1, (2.21) s3 a2 a3 a4 3 0 1 1 0 0. Неравенство синдрома S нулю свидетельствует об искажении кодового слова, а его значение указывает на номер искаженного разряда – S=0112=310. Для восстановления (коррекции) слова значение искаженного разряда нужно проинвертировать. Достигается это следующим образом. Синдром ошибки подают на дешифратор, активный выход которого возбуждает управляемый инвертор (двухвходовый элемент М2) в том разряде, в котором произошла ошибка. Если искажение кодового слова при его передаче не произошло, то все разряды 58 синдрома ошибки будут нулями, о чем сигнализирует возбужденный нулевой выход дешифратора. Управляемые инверторы при этом пропускают принятое слово без изменений. Рис. 2.10. Декодер кода Хэмминга В тех случаях, когда принятые из канала слова дальше передаваться не будут и необходимость в контрольных разрядах отпадает, можно ограничиться исправлением разрядов только информационного слова и, следовательно, сократить число управляемых инверторов до четырех. Избыточность рассмотренного варианта кода Хэмминга достаточна лишь для исправления в кодовых словах одинарных ошибок. Действительно, значение минимального кодового расстояния кода Хэмминга Dmin=3 и, следовательно, 59 согласно (2.13) код позволяет исправлять только одинарные ошибки. Если же в кодовом слове возникают две ошибки (или более), то с помощью кода Хэмминга исправить их не удается. Более того, вместо исправления двух уже возникших в канале ошибок декодером кода Хэмминга будет привнесена третья. Проиллюстрируем сказанное на примере (рис. 2.11). Рис. 2.11. Кодовое слово и контрольные группы при искажении символов a1 и a2 Предположим, что в кодовом слове Ak a4 a3a2 3a1 21 =1100001 исказились два разряда, например, третий и пятый, т.е. ошибки пришлись на символы а1 и а2. В результате на выходе из канала получим искаженное слово Аk* =1110101(искаженные разряды подчеркнуты, а на рис. 2.11 – заштрихованы). Декодер проведет коррекцию по тем же формальным правилам – определив значение синдрома ошибки S=1102=610, он «исправит» (проинвертирует) шестой разряд (а3) – фактически не искаженный, и тем самым к двум имеющимся ошибкам добавиться третья. При этом формально обеспечивается условие отсутствия ошибок – восстановлена четность в пределах каждой группы и, следовательно, равенство нулю синдрома ошибки S. 60 От этого нежелательного эффекта можно избавиться, если использовать удлиненный код Хэмминга, способный исправлять одинарные и обнаруживать двойные ошибки, т.е. с Dmin=4. Удлиненный код строится из уже рассмотренного кода Хэмминга добавлением к нему еще одного проверочного разряда , значение которого образуется таким образом, чтобы была обеспечена четность всего (n+1)-разрядного кодового слова, т.е. m k i mod2 i mod2 i 1 (2.22) j 1 При декодировании кодовых слов, представленных в удлиненном коде Хэмминга, к проверкам четности контрольных групп добавляется проверка четности кодового слова в целом, т.е. m k i 1 j 1 P ai mod2 i mod2 (2.23) Если предположить, что кратность ошибок в кодовых словах не превышает двух, т.е. d 2 , то возможны следующие ситуации: d=0, тогда S=0 и P=0 (ошибок нет), d=1, тогда S 0 и P=1(ошибка исправима), d=2, тогда S 0 и P=0 (ошибки не исправимы). Хотя удлиненный код Хэмминга и не исправляет двойные ошибки, он все же дает возможность верно интерпретировать ситуацию и не наносить ещё большего ущерба. В рассмотренных примерах предполагалось, что ошибки произошли в информационных разрядах кодового слова. Все выше изложенное в равной степени справедливо и для случаев, когда искаженные контрольные (проверочные) разряды слова. 61 2.7. Циклические коды (ЦК) Циклическими называют коды, для которых циклическая перестановка (сдвиг) символов неискаженного n-разрядного кодового слова Аk1, порождает также неискаженное слово Ak2: Для построения и осуществления операций над ЦК удобно их представление в виде многочленов (полиномов) с бинарными коэффициентами. Известно, что любую n – разрядную двоичную последовательность: А = an-1a n-2 . . . a1a0 = an-1·2n-1 + a n-2·2n-2 +. . .+ a1·21 + a0·20 (2.24) можно представить в виде двоичного или бинарного многочлена (полинома): А(x) = an-1· xn-1 + a n-2· xn-2 +. . .+ a1· x1 + a0· x0 (2.25) Для перехода от А к соответствующему А(x) осуществляют замену 2 i в (2.24) на x i в (2.25) для всех i = 0 ÷ n – 1. Например, если А = a 3 a 2 a 1 a 0 =1101 = 1·23+1·22+0·21+1·20, то А(x) = 1· x3+1· x2+0· x1+1· x0 = x3+ x2 +1. Представление кодовых комбинаций в виде полиномов позволяет свести действия над кодами к действиями над многочленам, правила выполнения которых известны. При перемножении (делении) полиномов (степенных функций) показатели степеней x складываются (вычитаются) как обычно, а коэффициенты при одинаковых степенях x (как при умножении, так и при делении) складываются по mod 2. Поясним содержание (идею) циклического кодирования. 62 Предположим, что m-разрядное двоичное слово А подлежит передаче по каналу передачи данных или записи и хранения в запоминающем устройстве. Для обнаружения возможных искажений слова к m информационным разрядам добавим k проверочных, то есть сформируем кодовое (избыточное) слово. Для этого можно поступить следующим образом. Выберем некоторый полином Р(x) степени k , который будем называть порождающим и образуем произведение Аk (x) = А(x) · Р(x), где А(x) – полином степени (m-1) соответствующий информационному слову А. Полученный полином Аk(x) степени n-1=m+k-1 будем называть кодовым полиномом, а соответствующее ему n-разрядное двоичное слово – кодовым словом Аk циклического кода. При передаче Аk по каналу оно может исказиться в одном или нескольких разрядах. Обозначим через Аk* – искаженное кодовое слово. Обнаружить факт искажения кодового слова можно следующим образом. Раздели полином Ак* (x), соответствующий полученному из канала кодовому слову Ак* , на тот же порождающий полином Р(x). Если деление осуществляется без остатка, т.е. R(x) = 0, то Аk* ( x) Ak ( x) и, следовательно, Ак* =Аk, т.е. кодовое слово не искажено, если же R(x) ≠ 0, то полученное кодовое слово искажено и оно не может быть использовано, если не предусмотрена процедура коррекции ошибок. На рис.2.12. приведена структурная схема, поясняющая процедуру применения циклического кода. Рис.2.12. Схема, поясняющая процедуру применения циклического кода Однако такой способ формирования Аk приводит к получению неразделимого кода, т.е. кода, в котором нельзя выделить информационные и контрольные 63 разряды. Поэтому на практике применяют несколько иной подход формирования Аk , следовательно и Аk (x). Суть его в следующем. Для каждого передаваемого информационного слова А находят xk·А(x), где k – deg Р(x). Эта операция означает, что информационная часть слова (m разрядов) сдвигается влево (в сторону старших разрядов) на k разрядов, освобождая место для k контрольных разрядов. Далее xk·А(x) делят на порождающий полином Р(x), и получаемый при этом остаток от деления R(x) складывают с делимым. В результате получают многочлен избыточного разделимого циклического кода: Аk (x) = xk·А(x) R(x). Полученный таким образом кодовый полином делится на Р(x) без остатка, если он не искажен, если же R(x) 0, то это свидетельствует об его искажении. Пример 2.8. Пусть А = 1101, тогда А (x) = x3 + x2 + 1. Выберем Р(x) = x3 + x + 1, (k = 3) и образуем произведение xk·А(x) = x3 · (x3 + x2 + 1) = x6 + x5 + x3 . Разделим xk·А(x) на Р (x): x6 + x5 + x6 + x3 x3 + x + 1 x4 + x3 x3 + x2 + x + 1 x5 + x4 x5 + x3 + x2 x4 + x3 + x2 x4 + x2 + x x3 + x3 + Следовательно: R(x) = 1 = 0·x2 + 0·x1 + 1·x0 и R = 001, Тогда: x x +1 1 Аk (x) = x6 + x5 + x3 + 1 и Аk = 1101 001. Если кодовое слово Аk придет из канала без искажений, то 64 x6 + x5 + x 3 + 1 x3 + x + 1 R(x) = 0 и x6 + x4 + x 3 3 2 x +x +x+1 R = 000, x5 + x4 + 1 x5 + x3 + x2 следовательно, ошибок нет. x4 + x3 + x2 + 1 x4 + x2 + x x3 + x + 1 x3 + x + 1 0 Теперь допустим, что исказился один из разрядов кодового слова, например, младший разряд информационного слова (подчеркнут). Тогда Аk* = 1100 001 и Аk* (x) = x6 + x5 + 1. При этом деление Аk* на P(x) дает R( x) 0 , что свидетельствует об искажении кодового слова Ак. x6 + x5 + 1 x3 + x + 1 x6 + x4 + x3 x3 + x2 + x R(x) = x+1 и 5 4 3 x +x +x +1 R = 011≠ 0. x5 + x3 + x 2 x4 + x2 + 1 x4 + x2 + x x +1 При искажении некоторого другого разряда Аk также получим R≠ 0. Если при этом каждой соответствует свой остаток (аналог синдрома ошибки), то ошибка может быть исправлена. Контрольные вопросы 1. Какой канал передачи данных называют двоичным? 2. Какие каналы передачи данных именуют симметричными, а какие – несимметричными? 3. Для каких каналов передачи данных вероятности искажений (конверсий) символов «0» в «1» и «1» в «0» равны? 65 4. Запишите матрицу переходных вероятностей двоичного симметричного канала. 5. Запишите матрицу переходных вероятностей двоичного идеального канала (канала, в котором передаваемые символы не искажаются). 6. Изобразите графическую модель двоичного симметричного канала. 7. Перечислите условия, при которых ошибки в канале подчиняются биноминальному закону распределения. 8. Что понимают под кодом? 9. Какой код именуют равномерным? 10.Какой код называют простым? 11.Каковы разрядности простого кода, применяемого для кодирования 16, 20 и 30 различных сообщений? 12.Какие кодовые комбинации (слова) называют разрешенными, а какие – запрещенными? 13.Сколько двоичных символов «1» содержат разрешенные слова равновесного кода «2 из 6»? 14.Сколько двоичных символов «0» содержат разрешенные слова равновесного кода «3 из 6»? 15.Что является признаком ошибки при кодировании сообщений с помощью кода «2 из 5»? 16.Выпишите разрешенные слова равновесного кода «2 из 6». 17.Сколько различных сообщений можно закодировать с помощью равновесного кода «3 из 6»? 18.Какие ошибки кратности 2 можно обнаружить (выявить), а какие нет при кодировании сообщений с помощью кода «2 из 6»? 19.Какие коды именуют разделимыми, а какие систематическими? Приведите примеры разделимых и систематических кодов. 20.Перечислите основные параметры помехоустойчивых кодов. 66 21.Чему равны значения коэффициентов избыточности кода с контролем четности (9,8), кода Хэмминга (15,11)? 22.Чему равна мощность кода Хэмминга (7,4)? 23.Чему равны веса кодовых комбинаций: 0001, 0010, 0111? 24.Чему равны кодовые расстояния между кодовыми словами: 1010 и 0101, 1100 и 1010? 25.Что понимают под минимальным кодовым расстоянием? 26.Ошибки какой кратности способен исправить код с минимальным кодовым расстоянием D=4? 27.Какой кратности ошибки способен гарантировано обнаружить код с минимальным кодовым расстоянием D=5? 28.Какое число ошибок код с Dmin=3 позволяет обнаружить и исправить? 29.Какое число ошибок код с Dmin=3 позволяет обнаружить или исправить? 30.В чем отличие кода с контролем четности от кода с контролем нечетности? 31.Какие из приведенных кодовых комбинаций 0111, 0101, 1001 являются разрешенными для кода с контролем четности? 32.Сколько проверочных разрядов содержит кодовое слово, представленное в коде Хэмминга (31,26)? 33.Каким минимальным числом проверочных разрядов необходимо дополнить 8-и разрядное информационное слово при его кодировании с помощью удлиненного кода Хэмминга? Упражнения № 1. Определите значения вероятностей ошибок кратности r 0,1,2 в Ф – разрядных слова, передаваемых по двоичным симметричным каналам, для которых вероятности искажения одного символа p равны 0,01 и 0,1. 67 ( Ф – число букв в вашей фамилии). Результаты сведите в таблицу, аналогичную табл. 2.1. № 2. Определите значение вероятности необнаружения (пропуска) двоичных ошибок в словах, представленных в коде «3 из 6». №3. Ф-разрядное информационное слово (где Ф – число букв в вашей фамилии) должны быть закодированы с помощью кода Хэмминга. Ответьте на следующие вопросы и выполните указанные ниже действия: 1.Сколько поверочных разрядов должно быть добавлено к Ф информационным? 2.Осуществите разделение разрядов кодового слова между контрольными группами и запишите уравнения кодирования. 3.Поясните каким образом код позволяет обнаруживать и локализовать и, следовательно, исправить ошибку, возникшую в одном разряде (на примере ошибки в Ф-ом разряде). 4.Поясните каким образом код отреагирует на присутствие в кодовом слове одновременно двух ошибок (на примере ошибок в Ф-ом и (Ф-2)-м разрядах). 5.Возможен ли пропуск (не обнаружение) одновременного присутствия в кодовом слове 3-х ошибок. №4. Ответьте на вопросы и выполните действие, предусмотренные в упражнении №3, если Ф информационных разрядов закодированы с помощью удлиненного кода Хэмминга. 68 Глава 3 Комбинирование помехоустойчивого кодирования с приемами, усиливающими эффект их применения Для современных информации, АСОИиУ передаваемой запоминающих устройствах, по характерным каналам что является передачи достигается, в и рост (или) частности, объемов хранимой в увеличением разрядности передаваемых или хранимых слов. Последнее в силу изложенного в главе 1 ведет, при прочих равных условиях, к увеличению вероятности появления в словах многократных ошибок, т.е. ошибок кратности d 2 . Применение для их обнаружения и исправления кодов с требуемыми корректирующими возможностями ограничено рядом причин. В этих условиях одним из возможных и рациональных подходов к решению проблемы коррекции многократных ошибок в словах, передаваемых по каналу связи или хранящихся в запоминающих устройствах, является комбинирование помехоустойчивого кодирования с некоторыми приемами и средствами, дополняющими и усиливающими эффект применения корректирующих кодов. Комбинирование кода с заданными корректирующими возможностями с теми или иными приемами преследует целью исправление многократных ошибок сверх того, на что способен код при его применении в чистом виде и, следовательно, должно позволить исправление многократных ошибок доступными и сравнительно легко реализуемыми средствами. 3.1. Комбинирование помехоустойчивых кодов с методом двойного инвертирования Известным удачным примером подобного подхода к исправлению многократных жестких (постоянных) ошибок в словах памяти ОЗУ является 69 комбинирование помехоустойчивого кодирования и приема двойного инвертирования слов. Процедура исправления ошибок при этом выполняется в следующей последовательности (табл. 3.1). Предположим, что в ячейках памяти ОЗУ должны храниться 8-разрядные информационные слова A a7 a6 ...a0 , для защиты которых применен код с контролем нечетности, т.е. единственный проверочный разряд , значение которого выбирается так, чтобы общее число единиц в 9-разрядном кодовом слове 8 ai mod2 . было нечетным, т.е.: В данном примере число единиц в i 1 информационном слове равно пяти, следовательно, контрольный разряд выбирается равным нулю. В процессе дальнейшей работы процессор обратится к этой ячейке памяти с целью извлечения хранимого слова. Таблица 3.1 Процедура исправления ошибок методом двойного инвертирование Последовательность коррекции 1-я запись a1 a2 a3 a4 a5 a6 a7 a8 1 1 0 1 0 0 1 1 0 1-е чтение 1 1 0 1 0 1 1 1 0 1-е A A 2-я запись 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 1 2-е чтение 0 0 1 0 1 1 0 0 1 2-е A A 1 1 0 1 0 0 1 1 0 Комментарии Исходное слово данных Ошибка при проверке на нечетность Данные инвертируются Запись инверсных данных Ошибка при проверке на нечетность Данные инвертируются, ошибка исправлена При первом чтении (см. строку 2) обнаружится, что общее число единиц в 9разрядном считанном слове оказалось четным. Сравнивая строки 1 и 2, можем заключить, что имеется ошибка в разряде 5 (вместо нуля считана единица), но система контроля и коррекции об этом «не знает» – пока она лишь зарегистрировала наличие ошибки. Далее включается механизм коррекции, 70 который работает следующим образом. Считанное 9-разрядное слово данных, содержащее ошибку, инвертируется, например, процессором и вновь записывается в эту же ячейку памяти (см. строки 3 и 4). Сразу после этого выполняется второе чтение из этой же ячейки памяти. Поскольку в данном примере рассматривается постоянная ошибка, а именно ошибка типа «постоянная единица» в разряде 5 данной ячейки памяти, повторное чтение даст результат, показанный в строке 5 табл. 3.1. При этом число единиц в считанном 9-разрядном коде вновь оказалось четным, но на этот раз достаточно проинвертировать считанный код, чтобы получить правильный результат, совпадающий с исходным (см. строки 1 и 6). Для защиты информационных слов, хранящихся в ОЗУ, могут быть применены и более мощные коды, например, корректирующий код, исправляющий до dи ошибок. В этом случае возможности комбинирования, естественно, увеличатся – появится возможность исправления до r dи ошибок, если выполняются условия: 1. используемый код позволяет обнаружить факт искажения слов, т.е. его обнаруживающие возможности do r ; 2. среди r ошибок число мягких, т.е. обусловленных сбоями ошибок не более dи . В то же время для рассмотренного метода коррекции многократных ошибок характерны следующие ограничения, препятствующие его широкомасштабному применению: а) метод комбинирования позволяет исправлять многократные ошибки только в ОЗУ и не применим для других типов ЗУ и каналов связи; б) двойное инвертирование не исправляет мягкие ошибки, в то же время в каналах связи и хранения доля ошибок, обусловленных сбоями существенно преобладает над жесткими (постоянными) ошибками. 71 3.2. Комбинирование помехоустойчивых кодов и приема, основанного на делении слов на слоги Допустим, что в m – разрядном слове, передаваемом по каналу или хранящемся в запоминающие устройстве, возможны многократные ошибки т.е. ошибки кратности r ≥ 2. Для их обнаружения и исправления необходим код, исправляющий dи ≥ r ошибок. Но такой код будет достаточно длинным – число проверочных разрядов k становится соизмеримым, а то и превышающим число информационных m. Последнее, в силу отмеченных выше обстоятельств, является одной из основных причин, сдерживающих широкомасштабное применение кодов, исправляющих многократные ошибки. Разделим исходное m–разрядное информационное слово на g слогов, каждый из которых содержит m1,m2,…,mg символов соответственно, причем m=m1+m2+…+mg (рис. 3.1). m am ... m1 n1 ... ... ... m1 m2 ... ... k1 m2 a 2 a1 ... mg ... k2 n2 ... ... ... ... mg kg ng Рис. 3.1. Иллюстрация метода обнаружения и коррекции многократных ошибок, основанного на делении слова на слоги и их автономном кодировании Тогда в силу сделанного ранее (глава 1) предположения о взаимной независимости и равновероятности ошибок можно заключить, что на отдельно 72 взятые слоги придутся ошибки, кратности меньшей, чем r. Следовательно, для их исправления можно применить коды с меньшими корректирующими возможностями, т.е. более простые, в том числе с позиций их практической реализации, корректирующие коды. Положим, что для кодирования слогов применен простейший из известных корректирующих кодов, допускающий параллельное кодирование-декодирование – код Хэмминга или его модификация – удлиненный код Хэмминга, позволяющие, как известно, исправлять только одну ошибку. В результате кодирования к каждому i-ому слогу с mi информационными символами добавляется ki проверочных символов и получаем кодовые слоги, содержащие n1, n2 ,...,ng символов, где ni mi ki . Общее число символов кодового слова составит g g i 1 i 1 n ni , в том числе проверочных символов k ki . Если предположить, что кодовое слово искажено r ошибками, то общее число вариантов их распределения между n символами кодового слова будет равно: N (d r ) Cnr , (3.1) где Cnr - число сочетаний из n по r. Поскольку код Хэмминга, которым защищен каждый из g слогов, позволяет исправлять в кодовом слоге только одну ошибку, можно заключить, что все r ошибок будут исправлены только в том случае, когда на отдельно взятые слоги придется не более, чем по одной ошибке. При этом из g слогов будет искажено равно r. Число таких вариантов распределения r ошибок равно: r Nu (d r ) Cn1i , (3.2) i 1 73 где – знак операции умножения, ni – число символов i-го кодового слога, искаженного одной ошибкой. r Для остальных C nr C n1 i 1 i возможных вариантов распределения r ошибок между g кодовыми слогами все r ошибок исправлены быть не могут. При этом можно выделить следующие возможные ситуации: ' а) r ' r ошибок, приходятся по одной на r ' кодовых слогов, остальные ( r r ) ' распределены произвольно (но не по одной) между ( g r ) кодовыми слогами и, следовательно с учетом корректирующих возможностей кода Хэмминга, ( r r ' ) ошибок не могут быть исправлены (ошибки не обнаруживаются или будет осуществлено их ложное декодирование); б) кодовые слоги искажены ошибками кратности две или более и, следовательно, все r ошибок будут не исправимыми (они не обнаруживаются или будет осуществлено их ложное декодирование). Таким образом, метод деления слов на слоги и последующего их автономного кодирования-декодирования не обеспечивает исправления многократных ошибок для всех возможных вариантов их распределения между g слогами или n символами кодового слова, определяемых выражением (3.1). Исправлены все r (r 2) ошибок могут быть только для части возможных вариантов их распределения между g слогами, устанавливаемую (3.2). Естественно, что для возможности исправления d=r ошибок g r, например, для возможности исправления d=2 ошибок, слово должно быть разделено не менее чем на 2 слога; при d=3 – слово делится на 3 или более слогов и т.д. В результате получаем выражение для вероятности исправления в кодовом слове r ошибок: 74 r Cn1 N и (d r ) i 1 N (d r ) Cnr Pu (d r ) i . (3.3) Проиллюстрируем изложенное следующим примером. Пример 3.1. Положим, что разрядность информационного слова, подлежащего передаче по каналу или хранению в ЗУ, равна 8, т.е. m=8. Допустим, что в канале передачи (или хранения) возможны искажения одного или двух разрядов, т.е. кратность возможных ошибок d 2 . Разделим 8-и разрядное информационное слово на два слога, например, равной разрядности – по 4 разряда в каждом, т.е. m1=m2=4 (рис. 3.2). m a7 a6 a5 a4 a3 a2 a1 a0 a7 a6 a5 a4 m1 a3 a2 a1 a0 m2 n1 n2 α3 α2 α1 a7 a6 a5 a4 a3 a2 a1 a0 α'3 α'2 α'1 k1 m2 m1 k2 Рис. 3.2. Пример деления 8-и разрядного слова на два слога равной разрядности и их защиты кодом Хэмминга Для кодирования слогов применим код Хэмминга с минимальным кодовым расстояниям d=3. Число проверочных разрядов k1=k2, которые необходимо добавить к информационным разрядам каждого слога mi, находится из неравенства Хэмминга: 2 ki mi ki 1. 75 Для рассматриваемого примера k1=k2=3 и, следовательно, n1=n2=7. В результате получаем кодовое слово, состоящее из n=n1+n2=14 символов, из которых k=k1+k2=6 приходятся на проверочные. Любая однократная ошибка (d=1), вне зависимости от того, на какой слог кодового слова она придется, может быть исправлена. Если же кодовое слово будет искажено двумя ошибками (d=2), то общее число вариантов их распределения составит: 2 N(d 2) Cn2 C14 91. Из общего числа двойных ошибок N(d=2) будут исправлены только те Nи(d=2), которые придутся по одной на слог –одна ошибка в первом слоге (в пределах разрядов n1), а вторая –во втором (в пределах разрядов n2). Число таких двойных ошибок равно: Nи (d 2) Cn11 Cn12 C71C71 49. Тогда получаем, что Nни(d=2)=N(d=2)–Nи(d=2)=91-49=42 ошибок из общего числа 91-й двойных ошибок оказываются не исправимыми. Следовательно, вероятность исправления двойных ошибок будет равна: Pи (d 2) Nи (d 2) 49 0,538. N(d 2) 91 3.3. Многовариантность возможных реализаций комбинирования помехоустойчивых кодов и деления слов на слоги Эффективная защита данных, передаваемых по каналам связи или хранящихся в ЗУ, при использовании предлагаемого метода, основанного на делении информационных слов на слоги и их последующего автономного кодирования-декодирования, изначально предполагает решение следующих вопросов. 76 1. На сколько слогов следует разделить исходное информационное слово? То есть подлежит обоснованию выбор значения g. 2. Какой разрядности (формата) должны быть образованные слоги? При некотором фиксированном g существуют различные варианты деления mразрядного информационного слова на слоги, отличающиеся разрядностями. 3. Какой корректирующий код использовать для кодирования слогов? Решение перечисленных вопросов должно быть найдено из анализа следующих, в общем случае, противоречивых условий: 1) обеспечение требуемых обнаруживающих и корректирующих возможностей; 2) обеспечение приемлемой достоверности декодирования – исключение или снижение до приемлемых значений вероятностей ложного декодирования и пропуска (не обнаружения) ошибок; 3) простота реализации процедур кодирования и в особенности декодирования, которая при их технической реализации сводится к снижению сложности и глубины кодирующих и декодирующих устройств. Рассмотренный в разделе 3.2 иллюстративной пример деления 8-и разрядного информационного слова на два непересекающихся слога (слоги, не имеющие общих символов) равной разрядности – по 4 в каждом, естественно, является не единственно возможным. Деление 8-и разрядного информационного слова на два непересекающихся слога возможно различными вариантами (рис. 3.3). m1 8 7 m m1 m2 8, 4 1 m2 1 4 7 8 m1 1 и m2 7, m1 2 и m2 6, m1 7 и m2 1. Рис. 3.3. Варианты деления 8-и разрядного слова на два непересекающихся слога 77 При кодировании слогов, соответствующих этим вариантам с помощью кода Хэмминга, получаем различные значения k=k1+k2 и n=n1+n2, а также различные значения вероятностей исправления ошибок кратности d=2. Пример 3.2. Так, если исходное 8-и разрядное информационное слово разбить на два слога с числом символов m1=1 и m2=7, каждый из которых представлен в коде Хэмминга (рис. 3.4), получаем: k1=2, k2 =4, k=k1+k2=6; n1=3, n2=11, n=14. Тогда общее число возможных ошибок кратности d=2, приходящихся на 14и разрядное кодовое слово согласно (3.1) будет равно: 2 N (d 2) Cn2 C14 91. Из общего числа двойных ошибок могут быть исправлены только те, которые придутся по одной на каждый из кодовые слогов, т.е.: 1 Nи (d 2) Cn11 Cn12 C31C11 33. Следовательно, для рассматриваемого варианта деления слова на слоги вероятность исправления двойных ошибок составит: Pи (d 2) m1 k1 Nи (d 2) 33 0,36. N(d 2) 91 m2 k2 a7 α2 α1 a6 a5 a4 a3 a2 a1 a0 α3 α2 α2 α1 n1 n2 Рис. 2.4. Вариант деления 8-и разрядного информационного слова на два слога с числом символов m1= 1 и m2=7 и их защиты кодом Хэмминга Результаты расчетов, выполненные для других возможных вариантов, отличающихся форматами (разрядностью) слогов сведены в табл. 3.2. В скобках указаны эквивалентные варианты деления информационного слова, например, 78 варианту m1= 1 и m2=7 эквивалентен: m1= 7 и m2=1. Таблица 3.2 Параметры кодовых слогов и вероятности исправления двух ошибок, соответствующие возможным вариантам деления 8-и разрядного информационного слова на два слога m1 m2 k1 k2 1 (7) 7 (1) 2 4 k=k1+k2 n=(m1+m2)+(k1+k2) 6 14 0,363 Pи ( d 2) 2 (6) 6 (2) 3 4 3 (5) 5 (3) 3 4 4 4 3 3 7 15 0,478 7 15 0,51 6 14 0,538 Естественно, что информационные слова могут быть разделены не только на два, но и на три и более слогов. Пример 3.3. Разделим 8-и разрядное информационное слово на три слога с числом символов m1=m2=3 и m3=2 и каждый из них представим в коде Хэмминга. В результате получаем k1= k2= k3=3, k=k1+ k2+ k3=9; n1=n2=6, n3=5, n=n1+ n2+ n3=17 (рис. 3.5). Тогда из общего числа возможных ошибок кратности d=2: 2 N (d 2) Cn2 C17 136 могут быть исправлены те, которые придутся по одной на два слога из трех, т.е. Nи (d 2) Cn11 Cn12 Cn03 Cn11 Cn02 Cn13 Cn01 Cn12 Cn13 96. m1 k1 m2 k2 m3 k3 a7 a6 a5 α3 α2 α1 a4 a3 a2 α3 α2 α1 a1 a0 α'3 α'2 α'1 n1 n2 n3 Рис. 3.5. Деление 8-разрядного слова на три слога, для кодирования которых применен код Хэмминга 79 При этом вероятность исправления двух ошибок составит: Pи (d 2) Как и в рассмотренных Nи (d 2) 96 0,705. N(d 2) 136 выше примерах деления слова на два непересекающихся слога вероятность исправления двух ошибок зависит от выбранного варианта деления слова на три слога. Пример 3.4. Если 8-и разрядное информационное слово разбить на три слога с числом символов m1=m2=2 и m3=4, каждый из которых представлен в коде Хэмминга (рис. 3.6), получаем: k1= k2= k3=3, k=k1+ k2+ k3=9; n1=n2=5, n3=7, n=n1+ n2+ n3=17. m1 k1 m2 m3 k2 k3 a7 a6 α3 α2 α1 a5 a4 α3 α2 α1 a3 a2 a1 a0 α'3 α'2 α'1 n1 n2 n3 Рис. 3.6. Вариант деления 8-и разрядного информационного слова на три слога, для кодирования которых применен код Хэмминга Тогда общее число возможных ошибок кратности d=2, приходящихся на 17и разрядное кодовое слово, будет равно: 2 N(d 2) Cn2 C17 136. Из общего числа двойных ошибок могут быть исправлены только те, которые придутся по одной на два слога из трех, т.е.: Nи (d 2) Cn11 Cn12 Cn03 Cn11 Cn02 Cn13 Cn01 Cn12 Cn13 C51 C51 C70 C51 C50 C71 C50 C51 C71 95. Следовательно, для рассматриваемого варианта деления слова на три слога вероятность исправления двойных ошибок составит: Pи (d 2) Nи (d 2) 95 0,698. N(d 2) 136 80 Возможные варианты деления 8-и разрядного информационного слова на три непересекающихся слога, соответствующие им параметры кодовых слогов и слова, а также значения вероятностей исправления двойных ошибок сведены в табл. 3.3. Таблица 3.3 Варианты деления 8-и разрядного слова на три слога и соответствующие им значения параметров кодовых слогов, и вероятностей исправления двойных ошибок № варианта 1 2 3 4 5 m1 m2 m3 1 1 6 1 2 5 1 3 4 2 2 4 2 3 3 k1 k2 k3 2 2 4 2 3 4 2 3 3 3 3 3 3 3 3 k= ki 8 9 8 9 9 n1 n2 n3 3 3 10 3 5 9 3 6 7 5 5 7 5 6 6 n= ni 16 17 16 17 17 Pи (d 2) 0,5 0,639 0,675 0,698 0,705 Параметры кодового слова и, следовательно, значения Pи (d 2) , соответствующие тому или иному варианту деления не зависят от изменения форматов слогов внутри варианта. Например, первому варианту, приведенному в табл. 3.3, для которого m1=m2=1 и m3=6 эквивалентны варианты деления: m1=m3=1 и m2=6 или m1=6, а m2=m3=1. Поэтому табл. 3.3 содержит только по одному варианту деления слова из группы эквивалентных. Полученные результаты расчетов, а также значения чисел проверочных разрядов и вероятностей исправления двойных ошибок, соответствующие 81 вариантам деления 8-и разрядного информационного слова на 4,5,6,7 и 8 непересекающихся слогов представлены на рис. 3.7,а в виде интервалов g (диапазонов) изменений k ki i 1 и Pи (d 2) , соответствующих различным возможным вариантам деления 8-и разрядного информационного слова на g слогов, для кодирования которых применен код Хэмминга. Аналогичным образом получены возможные интервалы значений k и Pи (d 2) при делении 16-и разрядного информационного слова на g слогов (g=2,3,…,16) и их автономном кодировании с помощью кода Хэмминга (рис. 3.7.б). Рис. 3.7. Интервалы изменения числа проверочных символов k и вероятности исправления двойных ошибок при делении информационных слов разрядности 8 (а) и 16 (б) на g непересекающихся слогов, для кодирования которых применен код Хэмминга 82 Следует отметить, что при делении m-разрядного информационного слова на g слогов и их автономном кодировании появляется возможность исправления многократных ошибок кратностей от 2 до g включительно. Так, например, при делении 8-и разрядного информационного слова на 3 слога появляется возможность исправления не только двойных ошибок (соответствующие значения Pи (d 2) приведены в табл. 3.3), но и тройных, а при делении слова на 4 слога возможно исправление ошибок кратностей 2, 3 и 4. Полученные результаты расчетов значений вероятностей исправления многократных ошибок Pи (d 2) , соответствующие вариантам деления 8-и разрядного информационного слова на g слогов при их защите кодом Хэмминга сведены в табл. 3.4. Таблица 3.4 Значения Pи (d r ) , соответствующие различным вариантам деления 8-и разрядного информационного слова на g слогов при кодировании их кодом Хэмминга g 2 3 4 5 6 7 8 Pи (d=2) 0.54 0.705 0.785 0.835 0.863 0.885 0.91 Pи (d=3) 0 0.265 0.438 0.521 0.619 0.673 0.72 Pи (d=4) 0 0 0.129 0.238 0.343 0.442 0.534 Pи (d=5) 0 0 0 0.055 0.133 0.224 0.32 Pи (d=6) 0 0 0 0 0.027 0.067 0.152 Pи (d=7) 0 0 0 0 0 0.015 0.051 Pи (d=8) 0 0 0 0 0 0 0.009 Pи (d=r) В таблице приведены максимальные значения Pи (d r ) из интервалов их возможных значений, соответствующих тому или иному варианту деления слова на слоги. 83 Упражнения №1. В передаваемом по каналу связи кодовом слове возможно искажение до двух разрядов (т.е. кодовое слово может прийти без искажений, либо содержать один или два искаженных разряда). Для возможности их обнаружения (где Ф – число букв в вашей фамилии) информационных разрядах слова делятся на 3 слога (содержащих 2, 2 и Ф-4 разрядов), каждый из которых кодируется с помощью кода с контролем на четность. Определите значение вероятности обнаружения в кодовом слове двух ошибок – P0(d=2). №2. В предаваемом по каналу связи кодовом слове возможно искажение до трех разрядов (т.е. кодовое слово может прийти без искажений, либо содержать один, два или три искаженных разряда). Для возможности их исправления 10 информационных разрядов слова делятся на 3 слога (содержащих 3, 3, и 4 разряда), каждый из которых кодируется с помощью кода Хэмминга. Определите значение вероятности исправления в кодовом слове двух ошибок – Pu(d=2), трех ошибок – Pu(d=3). 84 Список литературы 1. Каган Б.М., Мкртумян Н.Б.Основы эксплуатации ЭВМ: Учеб. пособие ля вузов / Под ред. Б.М. Кагана. – 2-е изд., перераб. и доп. – М: Энергоатомиздат, 1988. 2. Иыуду К.А. Надежность, контроль и диагностика вычислительных машин и систем: Учеб. пособие для вузов по спец. «Вычислительные машины, комплексы, системы и сети» – М.: Высш. шк., 1989. 3. Блейхут Р. Теория и практика кодов, контролирующих ошибки / Пер. с англ. – М.: Мир, 1986. 4. Золотарев В.В., Овечкин Г.В. Помехоустойчивое кодирование. Методы и алгоритмы. Справочник. М.: Горячая линия – Телеком, 2004. 5. Кононелько В.К., Лосев В.В. Надежное хранение информации в полупроводниковых запоминающихся устройствах. – М.: Радио и связь, 1986. 6. Огнев И. В., Сарыгев К.Ф. Надежность запоминающих устройств. – М.: Радио и связь, 1988. 7. Питерсон У.У. Коды, исправляющие ошибки / Пер. с англ. – М.: Мир, 1976. 8. Сагалович Ю.Л. Кодовая защита оперативной памяти ЭВМ от ошибок // Автоматика и телемеханика, 1991, №5. 9. Тлостанов Ю.К., Тугуж У.Х. Метод коррекции многократных ошибок в каналах передачи и хранения, основанный на делении слов данных на слоги и их автономном кодировании // Нелинейный мир, 2007, №6. 10. Щербаков Н.С. Достоверность работы цифровых устройств. – М.: Машиностроение, 1989. 85