HDLC Расширенная адресация - PullRequest
0 голосов
/ 14 октября 2011

Может ли кто-нибудь предоставить мне хорошую информацию о ресурсах о том, где и как я могу понять кодировку «поля адреса» (в кадре HDLC) в октеты, используя расширенный бит (бит 0), даже в четном из расширение адресации.

Давайте предположим, что я хочу отправить адрес 0x1234, какими будут последние октеты после кодирования с расширенным битом. Надеюсь, вы понимаете мой вопрос?

Спасибо в ожидании.

Диапазон поля адреса может быть расширен путем резервирования первого передаваемого бита (младшего разряда) каждого октета адреса, который затем будет установлен в двоичный ноль, чтобы указать, что следующий октет является расширением поля адреса. Формат расширенного октета (ов) должен быть таким же, как и у первого октета. Таким образом, поле адреса может быть рекурсивно расширено. Последний октет поля адреса указывается путем установки бита младшего разряда в двоичный. См. Рис. 1 в приложении. Fig1 Когда используется расширение, наличие двоичного «1» в первом передаваемом бите первого октета адреса указывает, что используется только один октет адреса. Таким образом, использование расширения адресов ограничивает диапазон адресов с одним октетом до 0x7F, а для адресов с двумя октетами - до 0… 0x3FFF.

Нижний адрес HDLC = 3FFF H = 0011111111111111 B

Верхний адрес HDLC = 1234 H = 0001001000110100 B

Учитывая адрес выше и его закодированный результат, показанный на рис. 2, я действительно хочу знать, как они попали в этот последний закодированный октет (рис. 2) Fig2. Я не смог это исправить. Вот почему мне нужно было больше информации, которая поможет мне понять. Может ли кто-нибудь дать несколько простых объяснений? Благодарю.

Ответы [ 4 ]

0 голосов
/ 18 октября 2011

Ответ в простых шагах.

  1. Разделить 2 байта на 2 половины (верхняя и нижняя половина) по 8 бит каждый
  2. Устранить 2 MSB верхней половины
  3. Результирующий результат - 14 бит, который вы разбиваете на 2 половины по 7 бит каждая.
  4. Добавить бит расширения к младшему биту каждой половины, следовательно, получить 8 бит каждого.
  5. Результат дает кодированный октет!

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

0 голосов
/ 15 октября 2011

1111111b + 128 * 1111111b = 0x3FFF
0110100b + 128 * 0100100b = 0x1234

Отсюда очевидно, что они взяли каждое из этих шестнадцатеричных чисел и извлекли из них 7 наименее значимых и 7 наиболее значимых бит (при условии, что их всего 14) и просто поместили их в 4 октета.

0 голосов
/ 15 октября 2011

Я пытаюсь сгруппировать его по-разному, где у - бит одноадресной передачи, х - младший бит:

0 голосов
/ 14 октября 2011
...