ЛЕКЦИЯ № 3 Методы повышения надёжности оборудования
Проблема надежности программного обеспечения относится, похоже, к категории "вечных". В посвященной ей монографии Г. Майерса (выпущенной в 1980 году (американское издание - в 1976), отмечается, что, хотя этот вопрос рассматривался еще на заре применения вычислительных машин, в 1952 году, он не потерял актуальности до настоящего времени. Отношение к проблеме довольно выразительно сформулировано в книге Р. Гласса ([4]): "Надежность программного обеспечения - беспризорное дитя вычислительной техники". Следует далее отметить, что сама проблема надежности программного обеспечения имеет, по крайней мере, два аспекта: обеспечение и оценка (измерение) надежности. Практически вся имеющаяся литература на эту тему, включая упомянутые выше монографии, посвящена первому аспекту, а вопрос оценки надежности компьютерных программ оказывается еще более "беспризорным". Вместе с тем очевидно, что надежность программы гораздо важнее таких традиционных ее характеристик, как время исполнения или требуемый объем оперативной памяти, однако никакой общепринятой количественной меры надежности программ до сих пор не существует
Источником ненадежности программ служат содержащиеся в них ошибки, и если ошибки отсутствуют, то программа абсолютно надежна. По существу, все меры по обеспечению надежности программ направлены на то, чтобы свести к минимуму (если не исключить вообще) ошибки при разработке и как можно раньше их выявить и устранить после изготовления программы. Следует заметить, что безошибочные программы, конечно же, существуют, однако современные программные системы слишком велики и почти неизбежно содержат ошибки.
Прежде чем говорить о надежности объекта, следует уточнить, что подразумевается под объектом. Как известно, компьютерная программа имеет несколько разных форм (или представлений): внешние спецификации, исходный текст, исполняемый код и т.д. Общепринятая точка зрения состоит в том, что программа представляет собой объект, инвариантный относительно форм его представления. Согласно этой точке зрения, внешние спецификации, исходные тексты на языках разных уровней, а также исполняемые коды для разных процессоров есть разные формы представления одной и той же программы. Указанная точка зрения полезна при разработке программного обеспечения, поскольку позволяет выявить наиболее существенные для приложения свойства программы, общие для всех ее представлений, однако она малопродуктивна, если речь идет, например, о такой количественной характеристике, как время исполнения: ясно, что указанная характеристика относится лишь к одной из форм представления - исполняемому коду и, кроме того, зависит не только от программы, но и от типа процессора.
На интуитивном уровне понятие надежности программы отражает тот факт, что она не всегда может давать правильный результат. Это означает, что надежность программы является характеристикой ее исполняемого кода. Исполняемый код соотносится с исходным текстом так же, как, например, электродвигатель и его чертежи: можно говорить о надежности изготовленного изделия, но бессмысленно говорить о надежности описания, чертежа, текста. Две функционально идентичные программы, написанные на разных языках, или подготовленные для разных типов машин, или для одной и той же машины, но с использованием разных компиляторов, с точки зрения надежности следует считать разными.
Программа считается правильной, если она не содержит ошибок. Такая программа не дает неверных результатов, т.е. она абсолютно надежна. Этот факт породил ложное представление о том, что число ошибок в программе можно считать наиболее естественной мерой надежности. Было выполнено довольно много работ, в которых предлагались различные методы оценки числа оставшихся в программе ошибок по результатам ее тестирования, в том числе метод "засорения" известными ошибками, однако, как показывают приводимые ниже соображения, количество ошибок в программе не имеет никакого отношения к ее надежности:
1. число ошибок в программе - величина "ненаблюдаемая", наблюдаются не сами ошибки, а результат их проявления;
2. неверное срабатывание программы может быть следствием не одной, а сразу нескольких ошибок;
3. ошибки могут компенсировать друг друга, так что после исправления какой-то одной ошибки программа может начать "работать хуже";
4. надежность характеризует частоту проявления ошибок, но не их количество; в то же время хорошо известно, что ошибки проявляются с разной частотой: некоторые ошибки остаются невыявленными после многих месяцев и даже лет эксплуатации, но, с другой стороны, нетрудно привести примеры, когда одна единственная ошибка приводит к неверному срабатыванию программы при любых исходных данных, т.е. к нулевой надежности.
Наконец, важно подчеркнуть, что, с точки зрения надежности, в результате исправления ошибки или любой другой коррекции получается новая программа с другим, чем до коррекции, показателем надежности. Таким образом, число ошибок в программе характеризует скорее не программу, а ее изготовителей и используемый инструментарий.
Рассмотрим для простоты класс программ, имеющих единственный вход и выход, т.е. не содержащих бесконечных циклов. Фазу выполнения программы от начала до завершения будем называть запуском. Все возможные результаты запуска разобьем на два класса: правильные и неправильные (ошибочные). Будем считать, что любой результат всегда можно отнести к одному из этих классов. (Ясно, что по этому вопросу возможны разногласия между изготовителями программы и пользователями, однако будем предполагать, что имеется какой-то общий критерий, например, "клиент всегда прав".) Рассмотрим классическую вероятностную модель последовательности испытаний Бернулли. Пространство элементарных событий в этой модели содержит 2n точек, где n - число испытаний (в данном случае под испытанием подразумевается запуск программы). Каждый запуск программы имеет два исхода: правильный и неправильный. Обозначим вероятность неправильного исхода р, а вероятность правильного - (1-p). Вероятность того, что из n запусков К приведут к неправильному результату, выражается хорошо известной формулой биномиального распределения.
B(р,n,k) = C(n,k) * pk * (1-р)(n-k) (1)
где С (n,k) - число сочетаний.
Вероятность р априори неизвестна, но по результатам запусков известны n и k. Величина В как функция р имеет максимум при:
р = k/n (2)
В качестве меры надежности программы можно принять величину:
R = 1 - k/n = (n-k)/n (3)
значения которой (от 0 до 1) согласуются с общепринятым смыслом термина надежность: например, если все запуски окончились с ошибочным результатом (k = n), то надежность - нулевая.
Наиболее существенное предположение в данной модели состоит в том, что запуски программы считаются независимыми. Это означает, что результаты предыдущих запусков не дают никакой информации о результатах следующего. Ясно, что это предположение на практике выполняется не всегда: например, повторный запуск с теми же входными данными даст, очевидно, тот же самый результат.
Следует отметить, что изготовитель программы и ее пользователь располагают разной информацией о ней. Например, изготовителю заведомо известна логика программы, так что по результатам запуска с некоторыми исходными данными он иногда может точно предсказать результаты запусков с другими исходными данными (на этом, в конечном счете, основана любая методика тестирования), и в этом смысле предположение о независимости испытаний не выполняется. Однако пользователя редко интересует устройство программы, для него важно лишь одно: выполняет ли она требуемые функции, поэтому у пользователя нет оснований считать запуски зависимыми. Если же имеется желание использовать информацию об устройстве программы при оценке ее надежности, то следует придумать какую-то более сложную вероятностную модель, которая бы ее учитывала.
Формула (3) позволяет оценить надежность программы по результатам ее запусков. Следует особо остановиться на двух предельных случаях: k = n (нулевая надежность) и k = 0 (абсолютная надежность). В обоих случаях результаты не следует интерпретировать буквально: нет никаких гарантий того, что очередной запуск приведет к тому же результату, что и предыдущие. Однако с точки зрения пользователя эти случаи совершенно разные. Если нулевая надежность свидетельствует о том, что программа явно непригодна для эксплуатации, то показатель абсолютной надежности не должен вводить в заблуждение: такой вывод нельзя делать по результатам даже очень большого числа запусков. Следует подчеркнуть, что для оценки надежности в этом случае необходимо рассмотреть другие вероятностные модели.
Из формулы (3) следует, что оценка надежности программы растет с увеличением числа ее запусков по гиперболическому закону. Это подтверждает интуитивно ясное соображение о том, что программа тем надежнее, чем больше опыт ее эксплуатации, который зависит как от интенсивности использования программы, так и от тиража компьютера, на котором она запускается. Таким образом, надежность программ для персональных компьютеров типа IBM РС, общий тираж которых составляет в настоящее время около 100 миллионов, на несколько порядков выше аналогичных программ для специализированных процессоров (если, конечно, такие программы действительно существуют и эксплуатируются).
Надёжность изделия - свойство сохранять значения установленных параметров функционирования в определённых пределах, соответствующих заданным режимам и условиям использования, технического обслуживания, хранения и транспортирования. Надежность — комплексное свойство, которое в зависимости от назначения изделия и условий его эксплуатации может включать безотказность, долговечность, ремонтопригодность и сохраняемость в отдельности или определённое сочетание этих свойств как изделия в целом, так и его частей. Основное понятие, используемое в теории надёжности, — понятие отказа, т. е. утраты работоспособности, наступающей либо внезапно, либо постепенно. Работоспособность — такое состояние изделия, при котором оно соответствует всем требованиям, предъявляемым к его основным параметрам. К числу основных параметров изделия относятся: быстродействие, нагрузочная характеристика, устойчивость, точность выполнения производственных операций и т.д. Вместе с другими показателями (масса, габариты, удобство в обслуживании и др.) они составляют комплекс показателей качества изделия. Показатели качества могут изменяться с течением времени. Изменение их, превышающее допустимые значения, приводит к возникновению отказового состояния (частичного или полного отказа изделия). На первых этапах развития теории надежности основное внимание сосредоточивалось на сборе и обработке статистических данных об отказах изделий. В оценке надежности. преобладал характер констатации степени надежности на основании этих статистических данных. Развитие теории надежности сопровождалось совершенствованием вероятностных методов исследования, как-то: определение законов распределения наработки до отказа, разработка методов расчёта и испытаний изделий с учётом случайного характера отказов и т.п. Испытания на надежность совершенствовались главным образом в направлении проведения ускоренных и неразрушающих испытаний. Наряду с совершенствованием натурных испытаний широкое распространение получили математическое моделирование и сочетание натурных испытаний с моделированием.
Надежность изделий определяется набором показателей; для каждого из типов изделий существуют рекомендации по выбору показателей надежности.
Для оценки надежности изделий, которые могут находиться в двух возможных состояниях — работоспособном и отказовом, применяются следующие показатели:
· среднее время работы до возникновения отказа Тср — наработка (продолжительность функционирования изделия либо объём работы, выполненный им за некоторый промежуток времени) до первого отказа;
· Т - среднее значение наработки ремонтируемого изделия между отказами (нарушениями его работоспособности). Если наработка выражена в единицах времени, то под наработкой на отказ понимается среднее время безотказной работы.
· интенсивность отказов l(t) - показатель надёжности неремонтируемых технических устройств. Наиболее часто применяется для характеристики надёжности узлов радиоэлектронных и автоматических систем. Численно равна вероятности отказа устройства в единицу времени начиная с некоторого момента времени при условии, что до этого отказа не было;
· параметр потока отказов w(t) – характеризует среднее количество отказов ремонтируемого устройства в единицу времени; зависит от времени;
· среднее время восстановления работоспособного состояния tв;
· вероятность безотказной работы за время t [Р (t)] - оценивает возможность сохранения изделием работоспособности в определённом интервале времени или при выполнении заданного объёма работы.
· готовности коэффициент Kг. - вероятность того, что изделие будет работоспособно в произвольно выбранный момент времени в промежутках между выполнениями планового технического обслуживания.
Технические системы, состоящие из конструктивно независимых узлов, обладающие способностью перестраивать свою структуру для сохранения работоспособности при отказе отдельных частей, в теории надежности принято называть сложными техническими системами. Число работоспособных состояний таких систем — два и более. Каждое из работоспособных состояний характеризуется своей эффективностью работы, которая может измеряться производительностью, вероятностью выполнения поставленной задачи и т.д. Показателем надежности сложной системы может быть суммарная вероятность работоспособности системы — сумма вероятностей всех работоспособных состояний системы.
К способам повышения надёжности на стадии разработки изделий относятся использование новых материалов, обладающих улучшенными физико-химическими характеристиками, и новых элементов, обладающих повышенной надежностью по сравнению с применявшимися ранее; принципиально новые конструктивные решения, например замена электровакуумных ламп полупроводниковыми приборами, а затем интегральными схемами; резервирование, в том числе аппаратурное (поэлементное), временное и информационное; разработка помехозащищённых программ и помехозащищённого кодирования информации; выбор оптимальных рабочих режимов и наиболее эффективной защиты от неблагоприятных внутренних и внешних воздействий; применение эффективного контроля, позволяющего не только констатировать техническое состояние изделия (простой контроль) и устанавливать причины возникновения отказового состояния (диагностический контроль), но и предсказывать будущее состояние изделия, с тем чтобы предупреждать возникновение отказов (прогнозирующий контроль).
Резервирование - эффективный метод повышения надёжности технических устройств посредством введения дополнительного числа элементов и связей по сравнению с минимально необходимым для выполнения заданных функций в данных условиях работы. Элементы минимизированной структуры устройства, обеспечивающей его работоспособность, называются основными элементами (ОЭ); резервными элементами (РЭ) называются элементы, предназначенные для обеспечения работоспособности устройства в случае отказа ОЭ. Резервирование классифицируют по ряду признаков, основные из которых — уровень резервирования, кратность резервирования, состояние РЭ до момента включения их в работу, возможность совместной работы ОЭ и РЭ с общей нагрузкой, способ соединения ОЭ и РЭ.
По уровню резервирования его подразделяют на общее, при котором резерв предусматривается на случай отказа объекта в целом, и раздельное, при котором резервируются отдельные части объекта (блоки, узлы, элементы); возможно также сочетание общего и раздельного резервирования — т. н. смешанное резервирование. Под кратностью резервирования понимают отношение числа РЭ к числу ОЭ устройства. Однократное резервирование называется дублированием. В зависимости от состояния РЭ до момента включения их в работу различают резерв нагруженный, при котором РЭ нагружены так же, как ОЭ, облегчённый, когда РЭ нагружены меньше, чем ОЭ, и ненагруженный, при котором РЭ практически не несут нагрузки. Возможность совместной работы РЭ и ОЭ с общей нагрузкой определяется способностью элементов, одновременно подключенных к нагрузке, не вызывать отказа резервированной группы. Р. зависит также от способа соединения ОЭ и РЭ в составе резервированной группы. При постоянном способе соединения все элементы — и ОЭ, и РЭ — подключены к общей нагрузке в течение всего времени работы устройства. При полупостоянном соединении соединёнными с общей нагрузкой остаются только исправные элементы, а отказавший элемент отключается от неё. При полузамещении в начале работы соединяют с общей нагрузкой лишь исправные ОЭ, а при отказе одного из них подключается РЭ, но отказавший ОЭ не отключается. При замещении в начале работы к общей нагрузке подключены также только исправные ОЭ; если же один из них отказал, то к нагрузке подключается РЭ, а отказавший ОЭ отключается. Отключение отказавших ОЭ и подключение РЭ осуществляется вручную или автоматически; в последнем случае необходимо соответствующее устройство, надёжность которого должна учитываться при проектировании объекта.
На практике возможности применения резервирования ограничиваются допустимыми значениями массы, объёма, стоимости или др. параметров резервируемого устройства. Поэтому приходится решать задачу оптимального резервирования, имеющую два аспекта: обеспечение максимального значения показателей надёжности при заданном значении ограничивающего фактора и обеспечение заданных значений показателей надёжности при минимальном значении ограничивающего фактора.
Рассмотренные виды резервирования относятся к так называемому структурному резервированию, которое является наиболее распространённым. Существуют и др. виды резервирования, например по нагрузке, временное и т. д.
В процессе производства для повышения надёжности используют прогрессивные технологии обработки материалов и прогрессивные методы соединения деталей; применяют эффективные методы контроля (в том числе автоматизированного и статистического) качества технологических операций и качества изделий; разрабатывают рациональные способы тренировки изделий, выявляющих скрытые производственные дефекты; испытания на надёжность, исключающие приёмку ненадёжных изделий.
Во время эксплуатации: обеспечение заданных условий и режимов работы; проведение профилактических работ и обеспечение изделий запасными деталями, узлами и элементами, инструментом и материалами; диагностический контроль, предупреждающий о возникновении отказов.
Представление сообщений в цифровой форме с помощью первичных кодов отличается малой избыточностью или даже её отсутствием. Вследствие этого, безызбыточный код обладает большой «чувствительностью» к помехам. Ошибка в приеме только одного символа зачастую приводит к воспроизведению комбинации, отличной от переданной, так как в безызбыточном коде отдельные комбинации могут отличаться друг от друга только в одной позиции (в одном разряде).
Если для передачи сообщений использовать не все комбинации первичного кода, а только те, которые отличаются друг от друга не менее чем в двух позициях, то одиночная ошибка при приеме переведет используемую (разрешенную) комбинацию в запрещенную. Это позволяет обнаружить указанную ошибку, появляющуюся вследствие помех приему. В данном случае одна разрешенная комбинация может перейти в другую разрешенную (не обнаруживаемая ошибка) только при двойной ошибке. Вероятность этого значительно меньше вероятности одиночной ошибки.
Коды, у которых используются только некоторые из комбинаций, могут повысить помехоустойчивость приема. Поэтому они называются избыточными, или корректирующими. Корректирующие свойства избыточных кодов зависят от их структуры и параметров (длительности символов, числа разрядов, избыточности и т. п.).
Простейшим примером корректирующего кода является код с проверкой на четность, который образуется следующим образом. К кодовым комбинациям безызбыточного первичного двоичного n-разрядного кода добавляется дополнительный разряд (позиция), называемый проверочным, или контрольным. Если число символов 1 в исходной кодовой комбинации четное, то в дополнительном разряде формируют контрольный символ 0, если число символов 1 нечетное, то в дополнительном разряде формируют контрольный символ 1. В результате общее число символов 1 в любой кодовой комбинации всегда должно быть четным. Добавление дополнительного разряда увеличивает общее число возможных комбинаций вдвое по сравнению с числом комбинаций исходного первичного кода, а условие четности разделяет все комбинации на разрешенные и неразрешенные. Таким образом, код с проверкой на четность позволяет обнаруживать одиночную ошибку, поскольку она переводит разрешенную комбинацию в неразрешенную.
Увеличивая число дополнительных разрядов и формируя по определенным правилам проверочные символы 0 или 1, соответствующие этим разрядам, усиливают корректирующие свойства кода так, чтобы он позволял не только обнаруживать, но и исправлять ошибки. Поэтому избыточные или корректирующие коды разделяются на коды, обнаруживающие ошибки, и коды, исправляющие ошибки. Таким образом, для обнаружения ошибки достаточно установить факт, что в данной кодовой комбинации произошла ошибка (одиночная, двойная и т. п.). Для исправления ошибки необходимо не только обнаружить ошибку, но и указать ту позицию в кодовой комбинации, где эта ошибка произошла. Задача исправления ошибки более сложная, чем ее обнаружение, и требует применения более сложных кодов.
В настоящее время наиболее широко используются двоичные равномерные корректирующие коды, обладающие хорошими корректирующими свойствами и простотой реализации. Данные коды разделяют на блочные и непрерывные.
При использовании блочных кодов цифровая информация передается в виде отдельных блоков кодовых комбинаций равной длины. Кодирование и декодирование каждого блока осуществляется независимо друг от друга. Почти все блочные коды относятся к разделимым кодам, кодовые комбинации которых состоят из двух различающихся частей: информационной и проверочной. Информационные и проверочные разряды во всех кодовых комбинациях разделимого кода всегда занимают одни и те же позиции.
Разделимые коды обычно обозначаются в виде (n, k ), где n указывает значность кода (общее число позиций в блоке), k – число информационных позиций. Иными словами, величина n определяет общее число символов в блоке, a k – только число информационных символов. Число проверочных символов в разделимых кодах равно r = n – k.
Среди разделимых кодов различают систематические и несистематические коды.
В систематических кодах проверочные символы образуются линейными комбинациями информационных символов. Теоретической основой получения таких комбинаций является аппарат линейной алгебры, позволяющий формировать проверочные символы по определенной системе – отсюда и происхождение термина «систематические» коды. Использование указанного аппарата привело к тому, что данные коды также называются алгебраическими.
Среди систематических кодов наиболее известны циклические коды Хэмминга, коды Боуза-Чоудхури и др. Основное свойство циклических кодов состоит в том, что циклический сдвиг любой разрешенной кодовой комбинаций также является разрешенной комбинацией. Циклические коды обладают хорошими корректирующими свойствами, а реализация кодеров и декодеров таких кодов оказывается проще, чем для других систематических кодов.
Такие коды характеризуются тем, что в них проверочные символы перемежаются с информационными, и нет четкого деления последовательности символов на выходе кодера на отдельные кодовые комбинации. Формирование проверочных символов в непрерывных кодах ведется по рекуррентным правилам. Кодирование и декодирование этих кодов несколько проще, чем блочных систематических. Непрерывные коды могут иметь хорошие корректирующие свойства, особенно в случае пакетов ошибок.
Основными параметрами корректирующих кодов являются их избыточность, кодовое расстояние, а также число обнаруживаемых или исправляемых ошибок
Избыточностью корректирующего кода называют величину:
w = r / n = (n - k) / n = 1 – k / n (4)
где n - значность кода (общее число позиций в блоке);
k – число информационных позиций в блоке;
r - число проверочных символов в разделимых кодах.
Откуда следует:
k / n = 1 – w (5)
Величину k/n, которая показывает, какую часть общего числа символов кодовой комбинации составляют информационные символы, называют скоростью кода. Она характеризует относительную скорость передачи информации. Если производительность источника информации равна Н символов в секунду, то скорость передачи этой информации после кодирования R окажется равной:
= Hk / n (6)
Если число ошибок, которые нужно обнаружить или исправить, велико, то необходимо иметь код с большим числом проверочных символов. Чтобы при этом скорость передачи оставалась достаточно высокой, необходимо в каждом кодовом блоке одновременно увеличивать как общее число символов, так и число информационных символов. При этом длительность кодовых блоков будет существенно возрастать, что приведет к задержке информации при передаче и приеме. Чем сложнее кодирование, тем больше временная задержка передачи информации.
Кодовым или расстоянием Хэмминга d между двумя кодовыми комбинациями называют число позиций, в которых эти комбинации имеют разные символы. Например, расстояние между комбинациями 0001101 и 1001010 равно четырем (d = 4). Расстояние между различными комбинациями конкретного кода может быть различным. Так, в частности, в безызбыточном первичном натуральном коде это расстояние для различных комбинаций может различаться от единицы до величины m, равной значности кода. Особую важность для характеристики корректирующих свойств кода имеет минимальное или хэмминговое расстояние dmin между кодовыми комбинациями. Это расстояние называют кодовым.
В безызбыточном коде все комбинации являются разрешенными и, следовательно, его кодовое расстояние равно единице. Поэтому достаточно исказить один символ, чтобы вместо переданной комбинации была принята другая разрешенная комбинация. Чтобы код обладал корректирующими свойствами, необходимо ввести в него некоторую избыточность, которая обеспечивала бы минимальное расстояние между разрешенными комбинациями не менее двух.
Кодовое расстояние является основным параметром, характеризующим корректирующие способности данного кода. Если код используется только для обнаружения ошибок кратности а, то необходимо и достаточно, чтобы минимальное расстояние было равно:
dmin = a+1 (7)
В этом случае никакая комбинация из а ошибок не может перевести одну разрешенную кодовую комбинацию в другую разрешенную. Таким образом, условие обнаружения всех ошибок кратности а можно записать в виде:
aобн = dmin – 1 (8)
Для исправления всех ошибок кратности а и менее, необходимо иметь минимальное расстояние
dmin = 2a + 1 (9)
В этом случае любая кодовая комбинация с числом ошибок а отличается от каждой разрешенной комбинации не менее, чем в а+1 позициях. Если условие (9) не выполнено, возможен случай, когда ошибка кратности а исказит переданную комбинацию так, что она станет ближе к одной из разрешенных комбинаций, чем к переданной, или даже перейдет в другую разрешенную комбинацию.
Итак, условием исправления всех ошибок кратности не более а является:
aиспр = (dmin –1) / 2 (10)
Корректирующие коды можно одновременно использовать и для обнаружения и для исправления ошибок. Минимальное расстояние, при котором можно исправить все ошибки кратности а или меньше и одновременно обнаружить все ошибки кратностью b>а или меньше, определяется условием:
dmin = a + b +1 (11)
Задача определения минимально необходимой избыточности, при которой код обладает нужными корректирующими свойствами, до сих пор не имеет полного решения. Известен лишь ряд верхних и нижних оценок (границ), которые устанавливают связь между максимально возможным минимальным расстоянием корректирующего кода и его избыточностью.
В ряде случаев при передаче информации простым безызбыточным кодом получающаяся достоверность приема недостаточна. Одним из путей ее повышения является применение корректирующего кода. Выбор того или иного кода и его параметров зависит от конкретных условий решаемой задачи: требуемой достоверности приема, допустимой относительной скорости передачи, вида ошибок в канале и т. п.
В теории помехоустойчивого кодирования различают два вида основных ошибок: статистически независимые (некоррелированные) и статистически зависимые (коррелированные) ошибки (пачки или пакеты ошибок).
Покажем на простом примере возможность повышения помехоустойчивости с помощью корректирующего кода и определим, при каких условиях применение такого кода целесообразно. При этом будем полагать, что ошибки в канале независимы, а сам канал симметричен. Такие условия характерны для гауссовских каналов, в которых применяются посылки сигналов с одинаковыми энергиями.
При независимых ошибках симметричный канал полностью характеризуется вероятностью ошибочного приема символа. Хотя соотношения, характеризующие распределение ошибок, при этом оказываются простыми, однако оценка корректирующих возможностей кода в данном случае является ориентировочной.
В случае посимвольного (поэлементного) приема каждая посылка сигнала, соответствующая определенному символу кодовой комбинации, анализируется в приемном устройстве отдельно, а затем принимается решение, к какой из возможных кодовых комбинаций следует отнести полученную последовательность символов.
В случае приема в целом анализируется сразу вся принятая кодовая комбинация. Такой анализ предполагает, что число оптимальных (или подоптимальных) фильтров или корреляторов в приемном устройстве равно числу используемых разрешенных кодовых комбинаций.
Суть вероятностного, или последовательного декодирования состоит в том, что вся совокупность возможных кодовых комбинаций (включая разрешенные и запрещенные) разбивается на две группы: высоковероятные и маловероятные. Если принятая комбинация ближе к высоковероятной группе, она декодируется сразу же без проверки. Если же принятая комбинация ближе к маловероятным комбинациям, она декодируется с проверкой и исправлением ошибок. Иными словами, сильно искаженные комбинации исправляются, а слабо искаженные декодируются без исправления. Такое декодирование несколько уступает в помехоустойчивости оптимальному, но заметно проще в реализации.
Суть алгебраического декодирования состоит в том, что исправляется только определенная часть ошибок, т. е. корректирующие возможности кода используются только частично. Это означает, что используется неоптимальный алгоритм декодирования, допускающий более простую схемную реализацию. Особенно удобны с точки зрения простоты декодирования циклические коды, являющиеся разновидностью систематических кодов. Для таких кодов разработаны эффективные методы алгебраического декодирования.
Применение корректирующих кодов связано с некоторым усложнением систем передачи информации, особенно за счёт введения декодирующих устройств. Однако стремление к повышению скорости передачи по существующим линиям связи и возрастающие требования к достоверности передаваемой информации привели к широкому применению помехоустойчивого кодирования.
Дата добавления: 2020-12-11; просмотров: 472;