HDLC帧 - 八位字节/模8个疑点

时间:2011-09-27 09:07:54

标签: c embedded protocols firmware

我正在尝试实现类型3的HDLC帧格式,我对Octets / Modulo 8帧编码有一些疑问。

  1. 首先,HDLC帧是否完全以八位字节传输?
  2. 一个框架'n'八位字节的长度是什么意思?请举例说明。
  3. 我认为Octet和Modulo是相同的,所以假设我们有一个字节的 X ,那么它们的意思是 X的编码应为模8
  4. 我对这一切感到困惑,所以我需要更多澄清。示例和插图将有很大帮助。

    先谢谢。


    谢谢@clifford和@masoud。你的回答非常有帮助。但是我必须阅读这个Octet String: What is it?(虽然这听起来很有趣,因为它以一种简单的方式解释),然后我回来阅读你的评论,然后我理解你所解释的一切。同样,祝我编码愉快。

2 个答案:

答案 0 :(得分:4)

在HDLC中,每个字段长度必须为模8,例如:

HDLC框架如下: [FLAG(8bits)|ADDRESS(8bits)|CONTROL(8/16bits)|INFORMATION(n*8bits)|FCS(8bits)|FLAG(8bits)]

每个字段都是模8,甚至信息的长度必须是模8。

这意味着如果要发送长度为1位的数据,则必须使用一个字节(8位)。

如果您正在寻找一些HDLC帧样本,请查看以下链接:Click me! 并阅读:Click me

答案 1 :(得分:2)

  

首先,HDLC帧是否完全以八位字节传输?

这仅仅意味着数据长度是8位的倍数。是的。

  

框架的长度是'n'八位字节是什么意思?

谁是“他们”?引用您的参考资料。八位字节只是一组八位。字节是一个不太模糊的术语(很少使用它是指长度不是8位的机器字)。术语octet广泛用于电信,也用于英语以外的语言,意思是“字节”(当一个字节是8位时)。

  

我相信Octet和Modulo

完全没有, modulo 是一个数学术语,在这里使用可能不准确意味着可以被8整除(或精确倍数)。

  

[...] X的编码意味着什么,应该是模8。[?]

又是谁“他们”?如果我们可以在上下文中看到您正在阅读这些内容,您可能会得到更好的解释。

修改 我没有达到引用ISO 3309的长度,ISO 3309是定义HDLC帧结构的标准,但至少Wikipedia article中的术语“模8”仅用于帧序列号的上下文中,它只是简单的表示序列号从0递增到7,然后从0重新开始(即,它是模数为8的帧号 - 或C代码中帧余数为8或简单frame_num % 8的余数。我想知道你是否混淆了条款 - 再次引用或提取会有所帮助。