Перейти к содержанию

Рекомендуемые сообщения

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

По одному проекту нужно написать алгоритм для преобразования 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. Опишите логику выполнения вставки, если эта вставка первая.

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

 

 

Ссылка на комментарий
Поделиться на другие сайты

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

Для 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 бита просто пишем в поток с преобразованием полярности.

 

Изменено пользователем РадиоНастройщик
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

Изменено пользователем РадиоНастройщик
Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

1 час назад, РадиоНастройщик сказал:

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

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

 

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

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

Изменено пользователем Nikita T
Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

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

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

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

Изменено пользователем РадиоНастройщик
Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

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

Ссылка на комментарий
Поделиться на другие сайты

Если начинаем кодировать, то сначала используем 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

Ссылка на комментарий
Поделиться на другие сайты

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

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

Ссылка на комментарий
Поделиться на другие сайты

  • 8 месяцев спустя...

Ничего не понятно. При кодировании длинной последовательности нулей, связка вставок 1-2-1-2-1-2-1-2-1-2...  не только нарушает правило нечетного количества разнополярных импульсов между двумя V, но и количество положительных импульсов будет в 2 раза меньше чем отрицательных. Что естественно добавит постоянную составляющую.

Скорее всего, нижние графики ошибочны.

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...
  • 1 месяц спустя...

В некоторых источниках они пишут:

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

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

И действительно, на графиках так и есть. Надо посчитать все единицы в коде и тогда всё получается. Но это на тех примерах, когда код имеет конечное число разрядов. А последовательность-то бесконечная. Я тоже не понимаю, как они считают число единиц после последней вставки. Там всё время какая-то неопределённость. А если после вставки нет ни одной единицы, то что? Чередовать вставки?

Ссылка на комментарий
Поделиться на другие сайты

  • 10 месяцев спустя...

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...