HDLC扩展寻址

时间:2011-10-14 17:00:54

标签: c encoding protocols

任何人都可以向我提供有关我在何处以及如何理解“地址字段”(在HDLC帧中)到八位字节的编码的良好资源信息,使用扩展位(位0),偶数扩展寻址。

让我们假设我想发送地址0x1234,用扩展位编码后的最后八位字节是什么。希望你能理解我的问题吗?

感谢您的期待。

可以通过保留每个地址八位字节的第一个发送位(低位)来扩展地址字段范围,然后将其设置为二进制零以指示后面的八位位组是地址字段的扩展。扩展八位字节的格式应与第一个八位字节的格式相同。因此,可以递归地扩展地址字段。通过将低位设置为二进制1来指示地址字段的最后一个八位字节。见附图1。 Fig1 当使用扩展时,在第一个地址八位位组的第一个发送位中存在二进制“1”表示只使用了一个地址八位位组。因此,使用地址扩展将单个八位位组地址的范围限制为0x7F,将两个八位位组地址限制为0 ... 0x3FFF。

较低的HDLC地址= 3FFF H = 0011111111111111 B

上HDLC地址= 1234 H = 0001001000110100 B

考虑到上面的地址及其编码结果如图2所示,我真的想知道他们如何得到这个最终编码的八位位组(图2)Fig2。 我无法修复它。这就是为什么我需要更多可以帮助我理解的信息。有人可以提供一些简单的解释吗?谢谢。

4 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

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

从这里可以看出,他们采用了这些十六进制数中的每一个并从中提取了7个最低有效位和7个最高有效位(假设总共只有14个),并将它们分成4个八位字节。

答案 2 :(得分:0)

我正在尝试将它分组,其中u是单播位x是LSB:

u1 0010 0x 011 0100x 11 1111 1x 111 1111x
 1    2      3    4   3    F      F    F

答案 3 :(得分:0)

简单步骤中的答案。

  1. 将2个字节分成2个半(上半部分和下半部分),每个8位
  2. 消除上半部分的2 MSB
  3. 结果是14位,你将其分成2个半,每个7位。
  4. 将扩展位添加到每一半的LSB,因此每个结果为8位。
  5. 结果给出了Encoded Octet!
  6. 请注意,可以避免第1步,但我只想帮助简化答案。感谢所有贡献者,我希望有一天能帮到你!