CV HDB3 & AMI
Материал из b4wiki
Содержание |
Код AMI (Alternative Mark Inversion)
Код является трехуровневым кодом с избыточностью, в котором нули кодируются отсутствием импульсов, а единицы - попеременно положительными и отрицательными импульсами. На рисунке 1 представлен пример кодирования по протоколу AMI.
Рис.1. Диаграммы сигналов. Сверху вниз: кодируемый поток двоичных данных, этот же поток закодированный по протоколу HDB3, этот же поток закодированный по протоколу AMI.
Код HDB3
Является усовершенствованием AMI кода. Алгоритм аналогичен AMI за исключением кодирования последовательностей более четырех нулей, где каждые следующие четыре нуля заменяются последовательностью 000V, либо B00V. Где B - импульс по полярности противоположной предыдущему импульсу (отвечает правилу кодирования AMI), V (Violation) - импульс по полярности соответствующий предыдущему импульсу (нарушающий правило кодирования AMI). Выбор замены осуществляется таким образом, чтобы, во-первых, число импульсов B между двумя последовательно расположенными импульсами V было нечетным; и, во-вторых, чтобы полярности импульсов V чередовались. На рисунке 1 представлен пример кодирования по протоколу HDB3.
Кодовые ошибки
Кодовые ошибки сигналов кодированных по правилу AMI могут быть лишь одного вида - два следующих друг за другом импульса одинаковой полярности разделенных любым количеством нулей или без таковых.
Алгоритм счетчика кодовых ошибок AMI может быть реализован таким образом, что с приходом каждого последующего импульса одинаковой полярности с предыдущим, регистрируется новая кодовая ошибка. К примеру, в последовательности четырех импульсов с одинаковой полярностью с возможным разделением нулями идущих друг за другом будет зарегистрировано три кодовых ошибки.
Кодовые ошибки сигналов кодированных по правилу HDB3 в отличие от AMI могут подразделяться на типы.
В соответствии с рекомендацией ITU-T O.161 кодовые ошибки определяются как два последовательных следующий друг за другом биполярных нарушения с одинаковой полярностью (в оригинале: Definition of code violation HDB3 - two consecutive bipolar violations of the same polarity).
Проведем некоторую классификацию кодовых ошибок. Будем подразделять кодовые ошибки на 4 типа:
- ошибки 4х последовательных нулей;
- ошибки последовательность 2х импульсов одинаковой полярности;
- ошибки последовательность 3х импульсов одинаковой полярности;
- ошибки замены 4х нулей.
В передаваемом сигнале могут возникать ошибки кода в виде четырех и более последовательных нулей, хотя эта ошибка может и не соответствовать написанному выше определению, но она может встречаться и ее можно так же причислить к кодовым, так как она нарушает принцип декодирования кода. Некоторые возможные варианты сигналов содержащих кодовые ошибки представлены на рисунке 2.
Рис. 2. Диаграммы сигналов. 1 - сигнал, кодирующий последовательность нулей, 2-9 - сигналы с кодовыми ошибками (помеченные красным цветом).
На рисунке 2 под позициями обозначенными цифрами слева классифицируются следующие кодовые ошибки:
- 1 - правильный сигнал из всех нулей;
- 2 - кодовая ошибка - последовательность 4 и более нулей;
- 3-4 - кодовые ошибки 2х импульсов одинаковой полярности;
- 5-6 - кодовые ошибки последовательность 3х импульсов одинаковой полярности;
- 7-8 - кодовые ошибки счетности (неправильная замена 4х нулей).
Алгоритм вставки кодовых ошибок
Можно вставлять кодовые ошибки путем замены последовательности, улавливаемой по маске на заранее сформированный фрагмент кода, но такой алгоритм сопряжет с появлением битовых ошибок одновременно с кодовыми, что является нежелательным.
Наиболее простым алгоритмом вставки кодовой ошибки является инверсия коммутации двух выходов для вставки последующей ошибки. Таким образом, удается вставить кодовую ошибку в большинстве случаев без сопутствующей битовой. К сожалению, при этом не получается просто реализовать процедуру вставки не произвольной, а заданной кодовой ошибки.
При вставке кодовой ошибки также надо предусмотреть ряд ограничений. Так нельзя вставлять кодовую ошибку подобным образом во фрагмент кода, являющейся легальной заменой четырех нулей (B00V на 000V). Иначе вместо кодовой ошибки возникает одна или более битовая ошибка. В сигнал, состоящий только из последовательности нулей кодовую ошибку можно вставить тоже с некоторыми дополнительными условиями. Так, кроме инверсии коммутации двух выходов необходимо изменить легальную замену B00V на 000V и наоборот, чтобы не возникало последовательности из четырех сигналов одинаковой полярности. На рисунке 3 представлены две первые диаграммы, поясняющие вставку кодовой ошибки в подобных случаях.
Также нельзя вставлять кодовую ошибку путем инверсии коммутации двух выходов, при которой получается последовательность ВB00V являющаяся последовательностью легальной замены четырех нулей, так как при этом может возникать только битовая ошибка. Таким образом, такую последовательность необходимо пропустить. Эта ситуация рассмотрена на третьей диаграмме рисунка 3.
Некоторые особенности вставки кодовых ошибок имеются также у последовательности B000V. Так вставить ошибку в данном случае можно только четвертого типа, и она вставляется совместно с битовой, как и показано на четвертой диаграмме рисунка 3.
Рис. 3. Диаграммы сигналов поясняющих правило вставки кодовых ошибок в сложных ситуациях. Красным цветом помечены такты, на которые необходимо выставить запрет вставки ошибки чтобы не получить битовую ошибку вместо кодовой.
Способы поиска кодовых ошибок
Для кодовых ошибок 1го типа - последовательность четырех и более нулей можно производить обнаружение по маске, при этом после каждых последующих четырех нулевых бита выставляется сигнал возникновения кодовой ошибки. Таким образом, к примеру, в последовательности из 8-11 последовательных нулей будут обнаружены две кодовые ошибки 4го типа.
Для кодовых ошибок 2го типа - ошибки последовательность 2х импульсов одинаковой полярности также можно производить обнаружение по маске, при этом, приоритет их обнаружения желательно сделать выше обнаружения ошибок третьего и четвертого типа. То есть последовательность двух таких импульсов сбрасывает алгоритмы поиска выше перечисленных типов кодовых ошибок.
Кодовые ошибки 3го типа - ошибки последовательность 3х импульсов одинаковой полярности обнаруживаются по счетчику последовательных однополярных импульсов. При этом, в алгоритме приоритет их обнаружения стоит ставить ниже обнаружения ошибок первого и второго типа.
Кодовые ошибки 4го типа - ошибки вставки замены четырех нулей обнаруживаются по счетчику импульсов B. Приоритет их обнаружения необходимо выбрать самым низким. Таким образом, ошибка возникает только в случае, если между неправильной заменой четырех нулей и предыдущей заменой не возникало ни одной другой кодовой ошибки.
Т о, в описанном алгоритме приоритет обнаружения ошибок различных типов можно выставить в порядке убывания: первый и второй тип, третий, четвертый.
Выше описанными алгоритмами работы обладает, к примеру, прибор анализатор ИКМ Беркут-Е1.
Александр Кузовлев, НТЦ Метротек



