Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги / Теория электрической связи. Помехоустойчивая передача данных в информационно-управляющих и телекоммуникационных системах модели, алгоритмы, структуры.pdf
Скачиваний:
12
Добавлен:
13.11.2023
Размер:
24.95 Mб
Скачать

4. ПРИНЦИПЫ ПОСТРОЕНИЯ И РЕАЛИЗАЦИЯ КОМБИНАТОРНЫХ КОДОВ

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

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

4.1. Первичные (неизбыточные) двоичные коды

Полное множество всех возможных л-разрядных комбинаций (Л/0) указанного класса двоичных кодов

(4Л)

Поэтому код, составленный из всех кодовых комбинаций, называют кодом на все возможные сочетания. Следовательно, количество рабочих комбинаций кода А/р (используемых для первичного кодирования сообще­ ний) равно количеству всех комбинаций: Afp = MQ.

Область применения кода: телеграфия, тракты передачи данных, многофункциональные системы телемеханики, различные системы и уст­ ройства обработки информации.

Исторически первыми появились пятиэлементные коды - код Бодо и код Муррея. Указанные коды, позволявшие сформировать 32 различные кодовые комбинации, использовались в телеграфии. Число различных букв, цифр и знаков телеграфных систем того времени не превышало 56. Поэтому использовался двухрегистровый режим работы, т. е. различались цифровой и буквенный регистры. Для вычисления начала и конца заголов­ ка, начала и конца текста использовались такие последовательности, кото­

рые не могли появиться в естественном тексте. Например, для начала тек­ ста - ZCZC, а для конца - NNNN.

Преимущество этих кодов в том, что при редких переключениях ре­ гистров, что характерно для телеграфии, при передаче естественного тек­ ста в коде Бодо (Муррея) затрачивается в среднем 5,05 бит/знак. А при ис­ пользовании шестиэлементного кода, с помощью которого можно было бы передать 64 символа, затрачивалось бы 6 бит/знак. Существенный недоста­ ток кода - низкая эффективность при передаче данных, число разнообраз­ ных символов в которых значительно больше 56, и чередование цифр, букв и других знаков достаточно частое [8].

МККТТ (Международный консультативный комитет по телефонии

ителеграфии, ныне Международный союз электросвязи - МСЭ) в 1931 г. принял стандартный код № 1 (МТК-1), в основу которого положен код Бо­ до, а в 1932 г. - стандартный код № 2 (МТК-2), в основу которого положен код Муррея. Для русского алфавита введен третий регистр, переход на ко­ торый осуществляется передачей комбинации из пяти нулей.

Развитие вычислительной техники, систем передачи данных, широ­ кое применение СВТ для обработки информации сделали необходимой но­ вую стандартизацию первичного кода. Это обусловлено ростом числа слу­ жебных и функциональных символов, символов различных математиче­ ских и логических операций и ряда служебных символов. В результате длительной работы (1962 - 1965 гг.) был предложен семизначный двоич­ ный код ASCII (американский стандарт). Имеется несколько стандартизи­ рованных версий этого кода с различными названиями, но в общем они ба­ зируются на одном и том же коде. В частности, версия МККТТ известна как международный код № 5 (МТК-5); версия международной организации стандартов (ISO) называется «Семиэлементный код ISO для взаимообмена

иобработки информации»; российская версия - КОИ-7 (код для обмена информацией). Всего код образует 128 различных комбинаций, позволяю­ щих закодировать строчные и прописные алфавитно-цифровые знаки, гра­ фические, служебные и управляющие символы. В кодовой таблице ASCII содержится 32 управляющих символа, в частности четыре общих класса:

символы связи - для управления потоком данных по линиям;

символы печати - для управления физическим расположением информации на печатной странице или на экране монитора;

символы управления устройствами - для управления терминала­

ми;

разделители информации - для логического разделения элементов

данных.

Передача любых чисел ведется в двоично-десятичном коде (тетрада­ ми). Расширенный двоично-десятичный код (РДЦК) является восьмиэле­ ментным, причем все элементы используются для передачи информации (в отличие от международного кода МТК-5 (ASCII), в котором восьмой

элемент является битом проверки на четность), и дает 256 возможных комбинаций. РДДК используется как внутренний код во многих ЭВМ, и поэтому он часто применяется для обмена данными с машинами. Рос­ сийская версия РДДК - код КОИ-8, внутримашинная версия - код ДКОИ.

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

4.2.Избыточные комбинаторные коды

4.2.1.Код на некоторые сочетания (четные или нечетные)

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

М

р

Л£о= Г

(4.2)

2

2

 

 

 

Минимальное кодовое расстояние dmjn = 2, с учетом (3.11), г - 1. Данный код обнаруживает всевозможные ошибки нечетной кратности, так как именно они нарушают четность веса. В то же время данный код не об­ наруживает ошибки четной кратности, в частности двукратные ошибки.

Оценку избыточности производим по (4.3) и (4.4):

л ,=

м 0 - м

2" -2"-'

= 0,5;

(4.3)

М,

7”

 

о

z

 

 

 

п - т

п - (п -1)

1

(4.4)

Ru =

п

п

 

п

 

где т - длина информационной части. Параметр т показывает, сколько понадобилось бы символов для неизбыточного (первичного) кодирования Л/р кодовых комбинаций. Следовательно, количество информационных символов определяется как

Оценим полученные показатели избыточности. Из (4.3) можно сде­ лать вывод о том, что избыточность с точки зрения использования комби­ наций кода для кодирования всегда постоянна. Из (4.4) следует, что избы­ точность с точки зрения использования кодовых символов зависит от дли­ ны кодовой комбинации. Таким образом, код на некоторые сочетания тем эффективнее (менее избыточен), чем большая длина у кодовой комбина­ ции. В реальных системах передачи данных указанным кодом часто защи­ щается байт информации = 8, « = 9).

Можно выделить два способа формирования кода на некоторые со­ четания. Первый способ основан на выборе из полного множества М0 = 2п «-разрядных кодовых комбинаций с нужным (четным или нечетным) ве­ сом. Второй способ основан на добавлении к m-разрядным кодовым ком­ бинациям неизбыточного (первичного) кода одного дополнительного сим­ вола, формирующего у + 1) = «-разрядной кодовой комбинации нужный (четный или нечетный) вес. В данном случае код считается разделимым, так как у него можно в явном виде выделить информационную часть дли­ ны т и избыточную часть длины к = 1. Замечательным свойством раздели­ мого кода на некоторые четные сочетания является его принадлежность к различным классам кодов: комбинаторным, алгебраическим, арифмети­ ческим.

Поскольку первый способ формирования кода не получил практиче­ ского применения, то рассмотрим на примере второй способ.

Пример 4.1. Сформируем код на некоторые сочетания для т = 3 ин­ формационных символов.

Определим Мр = 23 = 8. Техника построения разделимого кода, т.е. кода с явно выраженными информационными (т) и избыточными (к) сим­ волами, такова:

1)выписываем все возможные кодовые комбинации т-разрядного двоичного кода;

2)для кода на четные (нечетные) сочетания приписываем (т + 1)-й

разряд, дополняющий вес «-разрядного кодового слова до четного (нечет­ ного) значения (табл. 4.1):

Таблица 4.1

т = Ъ

ч

 

н

000

0

 

1

001

1

 

0

010

1

 

0

011

0

 

1

100

1

 

0

101

0

1

1

п о

0

 

1

111

1

 

0

Примечание. Символ «Ч» показывает значение дополнительного символа, который добавляется при формировании кода на четные сочета­ ния. Символ «Н» показывает значение дополнительного символа, который добавляется при формировании кода на нечетные сочетания.

Выделим две процедуры декодирования кодов на некоторые сочета­

ния.

1. Принятая кодовая комбинация сравнивается со всеми кодовыми комбинациями из множества Мр. При совпадении с одной из них принима­ ется решение о правильности передачи. При несовпадении ни с одной из них принимается решение об обнаружении ошибки, которое приводит

кстиранию сообщения.

2.У принятой кодовой комбинации производится анализ четности веса. При совпадении четности с ожидаемой (заданной при формировании кода) принимается решение о правильности передачи. При несовпадении четности с ожидаемой принимается решение об обнаружении ошибки, ко­ торое приводит к стиранию сообщения.

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

Оценим вероятностные характеристики кодов на некоторые сочета­

ния:

рпр= т = о - Р ) я,

(лн + 1)/2 (лн + 1)/2 „ \

 

 

лч /2

(4.6)

 

 

/iu /2

 

 

zn2f-i>= х 12:_11-р (2'-,)-(1-р г (2'-,,)

 

ртр =1 - р пр - р ст .

где

- вероятность стирания при нечетном (и„) значении длины кодовой

комбинации;

-

вероятность стирания при четном (лч) значении длины

кодовой комбинации.

Отметим, что код на четные (нечетные) сочетания широко применя­ ется для обнаружения ошибок при передаче информации по каналам связи, по внутриблочным магистралям, при межузловом обмене.

4.2.2. Код на одно сочетание (код с постоянным весом)

Код на одно сочетание называется еще кодом с постоянным весом, так как из всех возможных сочетаний неизбыточного кода отбираются

только кодовые комбинации одинакового (одного) веса w. Тогда число ра­ бочих комбинаций кода с постоянным весом определяется как

(4.7)

Данный код является неразделимым кодом, что является определен­ ным недостатком. Недостаток заключается в том, что код с постоянным весом является и первичным кодом (используется для кодирования сооб­ щений), и помехоустойчивым (канальным) кодом.

Выделим две процедуры декодирования кодов с постоянным весом: 1. Принятая кодовая комбинация сравнивается со всеми кодовыми

комбинациями из множества Мр. При совпадении с одной из них принима­ ется решение о правильности передачи. При несовпадении ни с одной из них принимается решение об обнаружении ошибки, которое приводит

кстиранию сообщения.

2.У принятой кодовой комбинации производится анализ веса. При совпадении веса с ожидаемым значением w принимается решение о пра­ вильности передачи. При несовпадении четности с ожидаемой принимает­ ся решение об обнаружении ошибки, которое приводит к стиранию сооб­ щения.

Для анализируемого кода минимальное кодовое расстояние dmi„= 2, поэтому он гарантированно обнаруживает однократные ошибки (г = 1). Дополнительно код обнаруживает ошибки произвольной кратности, нару­ шающие постоянство веса кодовой комбинации. В частности, обнаружи­ ваются все возможные ошибки нечетной кратности, гарантированно изме­ няющие вес кодовой комбинации. Также обнаруживаются все возможные однонаправленные ошибки четной кратности, т. е. только ошибки перехо­ да типа 0 -> 1 или 1 —> 0 в пределах одной кодовой комбинации. Симмет­ ричные ошибки четной кратности (два и более) не обнаруживаются, т.к. не нарушают постоянства веса. При симметричных ошибках в пределах одной кодовой комбинации допускаются одновременно переходы 0 —> 1 и 1 —> 0. Отметим, что асимметричные ошибки, т.е. ошибки только одного знака, являются частным случаем однонаправленных ошибок. Код с постоянным весом оптимален в полностью асимметричных каналах, т. е. не существует кода с той же обнаруживающей способностью, имеющего меньшую избы­ точность.

Пример 4.2. Построим код с постоянным весом w = 2 и длиной ко­ довых комбинаций п = 4.

Определим размер множества рабочих комбинаций:

Построим кодовую таблицу (табл. 4.2):

Таблица 4.2

1 1100

2оно

3ООП

41001

51010

60101

Оценим избыточность кода:

п - [logAfp] _ 4 - 3 _ Q

Ri = —— —= 0,813; R„ = 1 32

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

4.2.3. Код Бергера

Одним из основных недостатков кода с постоянным весом является то, что он неразделимый и нелинейный. Поэтому область его применения достаточно ограничена. В частности, он применяется для кодирования внутренних состояний цифровых автоматов. Существует нелинейный раз­ делимый квазиоптимальный код для полностью асимметричных каналов, называемый кодом Бергера. Структура кодовых слов показана на рис. 4.1.

т

 

к

I------------------------

1------------------------

1

Рис. 4.1. Структура кодовых слов кода Бергера

На первых т позициях размещаются информационные символы, на последних к позициях - избыточные символы.

Избыточные символы представляют собой инверсию от записи

вдвоичном позиционном коде текущего веса информационного т - разрядно-го вектора. Поэтому длина избыточной части к рассчитывается

взависимости от максимального веса кодового вектора:

Рассмотрим алгоритм кодирования:

1.Расчет веса информационного вектора.

2.Преобразование десятичного значения веса в двоичный позицион­ ный код.

3.Инверсия полученного двоичного вектора избыточной части.

4.Формирование кодовой комбинации путем добавления избыточ­ ной части к информационной части.

Декодирование кода Бергера происходит по следующему алгоритму.

1.Рассчитывается вес информационной части принятой кодовой комбинации.

2. Полученное значение преобразуется из десятичного значения

вдвоичное и инвертируется.

3.Полученный двоичный вектор сравнивается с избыточной частью принятой кодовой комбинации. Если вектора совпадают, то считается, что

прием произошел правильно, если нет - происходит стирание сообщения (обнаружение ошибки).

Для анализируемого кода минимальное кодовое расстояние dm\n= 2, поэтому он гарантированно обнаруживает однократные ошибки (г = 1), а также некоторые ошибки более высокой кратности, в частности, асим­ метричные и однонаправленные ошибки произвольной кратности.

Пример 4.3. Построим код Бергера для т = 5. Определим длину избыточной части к = [log2(5 +1)] =3.

Пусть информационный вектор представляет собой кодовую комби­ нацию следующего вида: 01011. Вес информационной части равен 3, в двоичном виде - 011, в инверсном виде - 100. Следовательно, вектор ко­ да Бергера будет имеет следующий вид: 01011 100.

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

имеет большую избыточность.

 

Пример 4.4. Код с постоянным весом

= 126 имеет избы­

точность Rx = 512-126 = 0,75. Код Бергера, передающий то же множество 512

сообщений, имеет т = 7 и к = 3, т. е. его избыточность определяется как 1024-128

1 1024 Способность кода Бергера обнаруживать асимметричные (однона­

правленные) ошибки обусловлена следующим.

Пусть произошли ошибки одного знака, например 0 —» 1, в инфор­ мационной и избыточной частях кодового вектора. В информационных символах эти ошибки увеличили вес информационного вектора, а в избы­ точных символах вес двоичного слова уменьшился в результате операции

инвертирования, произведенной в декодере. Поэтому маскирование ошиб­ ки не произойдет, и она будет обнаружена.

Пример 4.5. Пусть исходный кодовый вектор V =01011 100, иска­ женный трехкратной ошибкой вектор V = 11111 101. После декодирования, рассчитав вес информационной части кодовой комбинации, получим 5 —> 101 —> 010. Очевидно, что рассчитанное значение не совпадает с принятой избы­ точной частью (010 Ф 101). Таким образом, асимметричные ошибки увеличи­ вают (уменьшают) текущий вес информационного кодового слова, одновре­ менно уменьшают (увеличивают) вес избыточного слова. Поэтому любая асимметричная (однонаправленная) ошибка будет обнаружена.

Выше были рассмотрены наиболее популярные комбинаторные ко­ ды. Но список этих кодов значительно шире. Кроме того, не рассматрива­ лись низкоскоростные коды с подстановками, у которых в качестве внеш­ них и внутренних кодов используются комбинаторные коды. Для кодов с подстановками кодовое расстояние равно произведению кодовых расстоя­ ний внешнего и внутреннего кодов. Таким образом, можно сравнительно просто построить коды, исправляющие ошибки, которые могут найти при­ менение в трактах систем передачи данных. Это возможно при условии ма­ лого объема передаваемых сообщений и сравнительно низких требований к скорости передачи информации (допустима большая избыточность).

4.3. Проектирование комбинаторных устройств

Назначение комбинаторных устройств (узлов) - формирование одноступенных и многоступенных первичных (неизбыточных) и избыточных (комбинаторных) кодов [9]. Понятие ступеней кодирования вводится для разбиения информационной части кода на фрагменты, каждый из которых имеет собственную функциональность и поэтому обрабатывается (кодиру­ ется и декодируется) самостоятельно.

В качестве области применения рассматриваемых устройств выбе­ рем многофункциональные системы телемеханики (МСТМ) [1]. По виду передаваемой технологической информации различают следующие тракты МСТМ: тракт телеуправления (ТУ), тракт телерегулирования (ТР), тракт телеизмерения (ТИ), тракт телесигнализации (ТС), тракт передачи данных (ПД). Управляющими элементами (источниками информации) в тракте ТУ являются ключи управления или клавиатура ЭВМ, в тракте ТИ - выходы измерительных преобразователей, в тракте ТС - контакты или цифровые сигналы на выходе релейных элементов (датчиков). Для индикации ин­ формации (приемники информации ) в тракте ТУ применяются индивиду­ альные узлы управления (ИУУ), в тракте ТИ - регистраторы (аналоговые или цифровые) диспетчерских (операторских) пультов или щитов, в тракте ТС - индикаторы индивидуальных узлов сигнализации (ИУС) диспетчер­ ских пультов или щитов. Для тракта ПД источниками и приемниками ин-

формации являются вычислительные устройства. Отметим, что область применения современных многофункциональных систем телемеханики МСТМ (в настоящее время используются также названия «системы управ­ ления и мониторинга», «автоматизированные системы диспетчерского управления» и т. д.) чрезвычайно широка. Это распределенные АСУТП различного назначения, системы аварийно-пожарной сигнализации и ви­ деонаблюдений, интегрированные системы управления и мониторинга (ИСУМ) телекоммуникационного оборудования и т. д. Для примера будет рассмотрена реализация комбинаторных и декомбинаторных устройств в трактах ТУ и ТС.

4.3.1. Одноступенные комбинаторные узлы

Основой комбинаторного узла (КМУ) является комбинатор (КМ). Комбинатор - это логический (/,/)-многополюсник (комбинационная схе­ ма), имеющий I входов и / выходов и реализованный на логических дизъюнкторах.

Будем различать два типа КМУ в зависимости от способа включения КМ в состав комбинаторного устройства, влияющего на технические ха­ рактеристики КМУ. В частности, способ включения определяет структуру КМУ и время формирования кодовых слов.

Для первого типа КМУ характерно включение КМ между ключами управления в тракте ТУ (блок-контакты объектов ТС) и буферным регист­ ром. Комбинатор представляет собой логический (А/, л)-многополюсник, состоящий из п многовходовых дизъюнкторов, где М - число кодируемых сообщений, п - длина кодовых слов избыточных (комбинаторных) или не­ избыточных кодов, формируемых за один такт. На рис. 4.2 представлена обобщенная функциональная схема КМУ первого типа.

Пример 4.6. Построить КМУ первого типа, формирующий код с по­

стоянным весом

Согласно изложенному выше

комбинатор

в данном примере -

это (6, 4)-многополюсник, состоящий из

4 трехвходо­

вых дизъюнкторов.

На рис. 4.3 приведены кодовая таблица и функциональная схема КМУ первого типа.

Следует отметить, что каждый из 4 дизъюнкторов реализует один из столбцов кодовой таблицы, а единицы соответствующего столбца опреде­ ляют связь входов дизъюнкторов и ключей управления.

мБР

 

15

25

35

45

1

1

1

0

0

2

0

1

1

0

3

0

0

1

1

4

1

0

0

1

5

1

0

1

0

6

0

1

0

1

Рис. 4.3. Кодовая таблица (а) и функциональная схема КМУ первого типа (б)

На рис. 4.3 КУ1...КУ6 - ключи управления, КЗ - ключ запуска, НУ - сигнал начальной установки буферного регистра (БР).

Для второго типа КМУ характерно включение КМ между распреде­ лителем (формирователь временных каналов) и ключами управления в тракте ТУ (блок-контактами объектов в тракте ТС). Комбинатор пред­ ставляет собой логический (л, А/)-многополюсник, состоящий из М много­ входовых дизъюнкторов. КМУ этого типа формирует кодовые слова за л тактов. На рис. 4.4 показана обобщенная функциональная схема КМУ вто­ рого типа.

Отметим, что КМУ второго типа формирует выходную кодовую комбинацию в последовательном виде. Количество тактов работы КМУ определяется разрядностью кода л, которой соответствует количеству вы­ ходов распределительного устройства (выполненного в виде регистра сдвига).

Рис. 4.4. Обобщенная функциональная схема КМУ второго типа

Пример 4.7. Построить КМУ второго типа, формирующий код дли­ ны п = 4 с постоянным весом w = 2. Количество рабочих комбинаций оп­

ределяется так: М р = . Комбинатор в составе КМУ представляет собой

(4, 6)-многополюсник, состоящий из шести двухвходовых дизъюнкторов. Кодовая комбинация формируется за 4 такта.

( л \

Рис. 4.5. Функциональная схема КМУ второго типа, формирующего код А /р =

Отметим, что по основным техническим характеристикам КМУ пер­ вого и второго типов являются инверсными.

Рассмотренные способы построения комбинаторных устройств мо­ гут применяться для неизбыточных кодов, кодов с постоянным весом, ко­ дов на некоторые сочетания (формирование по первому способу).

Рассмотрим комбинаторное устройство разделимого кода на некото­ рые сочетания (рис. 4.6).

Рис. 4.6. Функциональная схема КМУ разделимого кода на четные сочетания

Для построения комбинаторного устройства разделимого кода на не­ которые сочетания необходимо к КМ первичного (неизбыточного) w-разрядного кода добавить дополнительный элемент, формирующий из­ быточный символ, дополняющий вес кодовой комбинации до требуемой четности. Этим элементом является m-входовой логический элемент, вы­ полняющий операцию «исключающее или» (сумматор по модулю 2 ). Он позволяет определить четность веса информационного /и-разрядного вектора. Для формирования кода на нечетные сочетания результат сумми­ рования инвертируется.

Для построения комбинаторного устройства кода Бергера необходи­ мо к КМУ первичного (неизбыточного) кода добавить устройство форми­ рования избыточной части. Оно представляет собой устройство расчета веса информационной части (двоичный счетчик с инверсными выходами). Счетчик веса может быть выполнен по последовательной или параллель­ ной схеме вычисления. Счетчик, как правило, реализуется в виде комбина­ ционной схемы и работает 1 такт.

Соседние файлы в папке книги