Nikita T

Путаница с HDB3 - кодированием

8 posts in this topic

Nikita T    0

Здравствуйте, уважаемые участники форума.

По одному проекту нужно написать алгоритм для преобразования RS-485 в поток E0. Как оказалось, в потоке E0 применяется HDB3 - кодирование.

Коротко о HDB3:  это один из способов линейного кодирования (физического кодирования, канального кодирования, цифровое кодирование, манипуляция сигнала). Применяется при передаче данных на расстояние по цифровому каналу связи. Является трехуровневым. HDB3 кодируется также, как и AMI, но у него есть преимущество - он предотвращает возможность появления в цифровом сигнале длинных серий нулей, путём замены серий из N подряд идущих нулей специальными кодовыми комбинациями (вставками), содержащими единичные импульсы.

Здесь и начинается моя проблема с пониманием данного способа кодирования.

Такая информация в википедии:

"Формирования кода выполняется следующим образом: в каждые 4 нуля заменяются 4 символами в которых имеется хотя бы один сигнал V. Для подавления постоянной составляющей полярность сигнала V чередуется при последовательных заменах. Для замены используются два способа:

если перед заменой исходный код содержал нечётное число единиц то используется последовательность 000V;

если перед заменой исходный код содержал чётное число единиц то используется последовательность 100V.

где V-сигнал единицы запрещённого для данного сигнала полярности."

К описанию прилагается иллюстрация.

Priklad_3.jpg.807c645ae3e7367944b0a37c42dabeb9.jpg

Википедия это хорошо, но я привык искать информацию в разных источниках. К моему удивлению, я не нашёл описания HDB3 как стандарта на сайте Международного союза электросвязи.

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

Согласно теории: "Вид вставки выбирается по следующему правилу: если после последней вставки следовало нечетное число единиц, то выбирается вставка первого типа – 0001, а если четное – то вставка второго типа – 1001. Полярность импульсов во вставке определяется следующим образом: полярность импульса во вставке первого типа совпадает с полярностью последнего импульса до вставки, а полярность импульсов во вставке второго типа одинаковая и обратная полярности последнего импульса до вставки."

Рисунок 1 - кусок презентации с одного иностранного источника

Figure+4.20+Different+situations+in+HDB3

Анализируем рисунок 1:

Последовательность имеет в начале две единицы, а затем следуют 4 нуля. 4 нуля необходимо заменить на вставку. Следуем теории: последней вставки у нас не было (это будет первая), значит после последней вставки следует ноль единиц, ноль - чётное число, значит имеем вставку типа "1001", последний импульс имеет отрицательную полярность,  следовательно "единички" нашей вставки будут иметь положительную полярность, как и показанно на рисунке. Всё верно? Верно!

 

Рисунок 2  - то же кодирование, выполненное другим источником.

B8ZS+and+HDB3+Change+of+polarity.jpg

 

Рисунок 3 - картинка с русскоязычного сайта

image025_18.gif

 

Внимание вопрос:

Почему разные источники дают одинаковую теорию, но делают преобразование по разному?  Если сравнить рисунки 1 и 2,3, то видно, что одинаковая последовательность данных кодируется разным способом!? В реальной системе это будут совершенно разные данные. Если каждый из этих источников соберёт приёмопередатчик, они не смогут общаться...

Если здесь есть люди, понимающие данную тему, ответьте пожалуйста на мои воросы.

1. Какой из рисунков верен?

2. Существует ли единый документ, регламентирующий кодирование HDB3? (про ГОСТ 26886-86 не пишите)

3. Опишите логику выполнения вставки, если эта вставка первая.

С уважением Никита Т.

 

 

Share this post


Link to post
Share on other sites
Posted (edited)

Рисунки правильные. Все очень просто.

Для 4 нулей во входящем  потоке, в кодере смотрим полярность последнего бита из преобразованного потока и выбираем вставку, в которой начальный бит вставки должен быть инверсией последнему биту преобразованного потока. Был  -1, значит пишем 0001 с инверсией 1. Если +1, то пишем 1001 с инверсией 1. Если была вставка 0000, то пишем 1001 без инверсии. На рисунках все понятнее.

Правило одно, после -1 должно быть +1 и наоборот, а для вставки -1 -1 или +1 +1 вместе с 0 .  В декодере смотрим и исправляем на обратное, то есть сразу смотрим 4 бита и если есть 0001 1001 , то исправляем их на 0000, но с учетом полярности V, которая всегда равна полярности 1. Вставки чередуются 1-2-1-2-1-2-1 и тд по всему потоку последовательно. Если полярности V и 1 не совпадают, значит 4 бита просто пишем в поток с преобразованием полярности.

 

Edited by РадиоНастройщик

Share this post


Link to post
Share on other sites
Posted (edited)

Используется следующее правило: если перед блоком из четырёх нулей исходный код содержал нечётное число единиц, то комбинация 0000 заменяется на служебный код 000V, а если чётное — то B00V. Отсчёт количества единиц производится с начала передачи исходного кода и начинается заново после каждого сигнала V. 

V — сигнал той же полярности, что и предшествующая ему единица. 

B — сигнал полярности, обратной предшествующей ему единицы.

То есть, не должно быть +1 0 +1 или -1 0 -1, это означает вставку. Для нормального кода должно быть +1 -1 и 0 или без 0. И для первой вставки, если идут три 0 и повторение 1 предыдущего бита, это точно вставка, если нечетное количество предыдущих бит

Edited by РадиоНастройщик

Share this post


Link to post
Share on other sites

Опорное решение: компоненты для защиты RS-485

Компания Bourns анонсировала новую (4-ю) версию демонстрационной платы для тестирования защиты низковольтных слаботочных цепей от токовых перегрузок и импульсных перенапряжений, в частности, для защиты интерфейса RS-485. Мы собрали для вас всю самую интересную информацию по данной теме на одной странице.

Подробнее...

Nikita T    0
Posted (edited)
1 час назад, РадиоНастройщик сказал:

Используется следующее правило: если перед блоком из четырёх нулей исходный код содержал нечётное число единиц, то комбинация 0000 заменяется на служебный код 000V, а если чётное — то B00V. Отсчёт количества единиц производится с начала передачи исходного кода и начинается заново после каждого сигнала V.  V — сигнал запрещённой полярности, то есть сигнал той же полярности, что и предшествующая ему единица.  B — сигнал правильной полярности, то есть сигнал полярности, обратной предшествующей ему единицы.

Благодарю за ответ. Но, это сообщение идёт в противоречие рисунка 3.  image025_18.gif&key=fe90d4bf5a3625aacdee

 

На входе имеем последовательность 110000....и.т.д.. Считаем количество единиц, получаем чётное количество, следовательно, в данном примере, после второй "единички" должен следовать служебный код B00V. , т.е. +1|0|0|-1, а на рисунке показана вставка 000V.....

Почему вы указали, что рисунки верные? Почему я, следуя Вашему разъяснению получаю результат, отличный от рисунка?

Edited by Nikita T

Share this post


Link to post
Share on other sites
Posted (edited)

@Nikita T  Почему ? Первая вставка должна быть первой, а потом уже в зависимости от потока. Сначала идет 1 вставка, потом 2 вставка без инверсии. Потом четное количество единиц и 2 вставка с инверсией, учитывая предыдущий бит.

Edited by РадиоНастройщик

Share this post


Link to post
Share on other sites

Видео вебинара «Уникальный подход MORNSUN к разработке DC/DC-преобразователей. Что на выходе?»

На сайте КОМПЭЛ доступны материалы вебинара, посвященные последнему поколению DC/DC преобразователей с фиксированным входом R3 от MORNSUN. Вы можете посмотреть видеозапись, ознакомиться с презентацией и ответами на вопросы.

Подробнее...

Nikita T    0
17 минут назад, РадиоНастройщик сказал:

@Nikita T  Почему ? Первая вставка должна быть первой, а потом уже в зависимости от потока. Сначала идет 1 вставка, потом 2 вставка без инверсии. Потом четное количество единиц и 2 вставка с инверсией, учитывая предыдущий бит.

Извините, но, выходит, я что-то не понимаю. Вот, прикладываю 2 ситуации, с одной последовательностью "1 1 0 0 0 0". Почему на верхнем рисунке вставка "0 0 0 -1", а на нижнем "1 0 0 1"??

.imageproxy_php.gif.d0d267eae0510ea9a1338ace98c0e7d0.gif

Share this post


Link to post
Share on other sites

Если начинаем кодировать, то сначала используем 1 вставку. Должно быть 1-2-1-2-2-2-2-2 или 1-2-2-2-2-2-2-2-2. 

Смысл в том, чтобы использовать для большой группы 0, связку вставок 1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2

Share this post


Link to post
Share on other sites
Nikita T    0
7 часов назад, РадиоНастройщик сказал:

Если начинаем кодировать, то сначала используем 1 вставку. Должно быть 1-2-1-2-2-2-2-2 или 1-2-2-2-2-2-2-2-2. 

Смысл в том, чтобы использовать для большой группы 0, связку вставок 1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2

Хорошо, благодарю за объяснение.

Share this post


Link to post
Share on other sites

Your content will need to be approved by a moderator

Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoticons maximum are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By crazy_duck
      Здравствуйте!
       
      Занимаюсь испытаниями связного оборудования, так вот появилась задача измерить помехозащищенность сигнала на входных портах оборудования PDH (потоки E1 со скоростью 2,048 Мбит/с), чем раньше заниматься не приходилось.
      Для проведения этого измерения рекомендация ITU-T требует реализовать схему сложения двух испытательных сигналов, имеющих линейное кодирование HDB3. Умные люди подсказали, что лучше всего это сделать на ОУ, но, к сожалению, как это точно сделать подсказать затруднились. Третий день вспоминаю курс схемотехники из института, читаю интернет и мучаю NI Multisim, но результат меня не удовлетворяет.
       
      Прикладываю Два варианта. Первый вариант сделан знакомым. Данная схема меня смущает, так как не бьется с той информацией, что я почерпнул из интернета. По ряду причин обратиться к знакомому нет возможности. Но общее направление он задал.
      Второй вариант свой. Накидал схему, но результат в симуляторе мне не нравится. Сигнал сильно искажается и инвертировался на выходе. Где я ошибся?
      Заранее спасибо за ответ.
       
      PS: данный источник читал, но может что-то неправильно понял.
      http://cxem.net/beginner/beginner96.php
      http://easyelectronics.ru/operacionnyj-usilitel.html
       
       
      СХЕМА.pdf
      sum_AmpOp.ms14


  • Сообщения

    • Я имел ввиду, что на печатке я его вижу как кольцо (прямоугольник) с отверстиями под выводы обмоток по обеим сторонам. Если трансформатор Ш-образный вертикального исполнения, то на плате при компоновке и разводке надо учитывать его габариты ... например Снабберы можно сместить и трансформатор развернуть - место позволяет. После можно будет и определиться на какие выводы каркаса (если много и хватает) паять первичные и вторичные обмотки.
    • Тогда подожду, а то так редактировать ПП не могу
    • VD1 неверен ,и схема чуть изменена ,по завершению все точно введу,скину
    • Мое мнение.
      Я против либерастии,западопоклонений и откровенной русофобии.Всякой либеральной вшивой оппозиции,толпы мракобесов ЛГБТ.Прочих 3.14асов и извращенцев.
      Да,сейчас правительство как взбесившийся принтер штампуют антинародные законы.Это херово,очень херово.
      От президента я ждал более суровых мер-выгнать с госдуры всех либерастов и повернуться к народу лицом.
      Этого ждал после выборов от верховного главнокомандующего народ!
      Народ всё больше разочаровывается курсом президента.
      Спасибо ему огромное что сохранил страну от распада,присоединил Крым.Но на этом не стоит останавливаться.
      Ручной режим управления страной это не выход.Система сама себя не поддерживает пока под задницу пинка не дать.
      А на последней коференции,когда сказал про зряплаты чиновникам...тут уже суши вёсла.
      По поводу революции..Это хаос,гражданская война и сильный откат назад.
      Пример тому соседняя страна.Нам этого не надо.
    • у меня над столом с шим уже пару лет - чет не хотят гореть) спорить не буду , по поводу стаба - может и лучше - жадный я) @kuzmitch понял,исправлю