使用标记/空间奇偶校验和无奇偶校验有什么区别?

10

创建三种定义奇偶校验位未使用的状态的目的是什么?

“如果存在奇偶校验位但未使用,它可以被称为标记奇偶校验(当奇偶校验位始终为1时)或空格奇偶校验(位始终为0)” - Wikipedia

5个回答

26

在这里被遗漏的一个非常简单且非常有用的标记或空格奇偶校验的原因是:节点地址标志。

非常低功耗和/或小型嵌入式系统有时会使用工业串行总线,例如RS485或RS422。也许许多非常小的处理器可能连接到同一个总线上。

这些微小的设备不想浪费功率或处理时间查看串口中传入的每个字符。大多数时候,这不是他们感兴趣的事情。

因此,您设计一个总线协议,例如使用9位... 8个数据位和一个标记/空格奇偶校验位。每个数据包仅包含一个带有标记奇偶校验位设置的字节或字(节点地址)。其他所有内容均为空格奇偶校验。然后,这些微小的设备可以简单地等待奇偶校验错误中断。一旦它收到中断,就检查那个字节。这是我的地址吗?否,则返回睡眠状态。

这是一个非常省电的系统...且只有10%的带宽浪费。在许多环境中,这是一个很好的权衡。

因此...如果您随后有一个PC级别的系统试图与这些微小的设备进行通信,则需要能够设置/清除奇偶校验位。因此,在传输节点地址时,您将设置MARK奇偶校验位,并在其他任何地方设置SPACE奇偶校验位。


现实生活中有任何示例系统吗?你的意思是像多个从设备使用一个主UART一样吗? - Unknown123
1
许多具有多个小节点的系统都会这样做。我听说有一台自动售货机使用这种方法来与主处理器通信,用于各种组件(如货币接收器、发放装置、剩余数量传感器等)...这可能是我能想到的最普遍的例子。 - darron
这被称为多处理器通信模式或MPCM,其工作方式与此答案中描述的完全相同。Microchip、AVR和ST微控制器都具有此功能。 https://onlinedocs.microchip.com/pr/GUID-C541EA24-5EC3-41E5-9648-79068F9853C0-en-US-3/index.html?GUID-B243DCE1-F083-434B-A681-771637050FD8 这不是关于共享一个UART,而是关于每个设备都有自己的UART,共享通信总线:当地址字节(由奇偶校验位指示)显示消息与它们无关时,设备可以忽略其余消息,直到接收到新的地址字节。 - Guillius

8
所以有五种可能性,而不是三种:无奇偶校验、标记、空格、奇校验和偶校验。没有奇偶校验时,在帧中额外的位被省略掉,通常在协议已经通过校验和或CRC检查错误或数据损坏不太可能或不太重要时选择。
没有人会选择标记或空格,那只是浪费带宽。除非是某些奇怪的标准,比如硬件供应商喜欢强制使用的9位数据协议。例如,在投币式自动售货机中很常见。实际上,这是为了让你购买他们的硬件,因为你没有真正的机会在不编写驱动程序的情况下即时重新编程UART。

2
非常清晰和有用的回答和备注。 对于那些觉得概念反常的人,放松点;这个术语是语义问题而不是信息理论或工程学问题,困难在于使用了“奇偶性”这个词。
在那些应用中,“标记”和“空格”位不是奇偶校验位,并且该术语源于它们占据了其他上下文中可能期望出现奇偶校验位的比特位置。实际上,它们与奇偶校验无关,但用于需要恒定比特值的任何相关目的,例如标记字节或其他信号的开头,作为延迟,或指示信号的状态是否为数据、地址或类似内容。
因此,有时更合理地称其为“固定(奇偶)位”,处于“开”或“关”的状态。有时它们真的是“无关紧要的”。

2

如果您要生成数据并发送到需要奇偶校验位的硬件(可能是因为电子设备内置了硬编码字长),但不关心其值,设置标记或空间奇偶校验是有用的。


非常奇怪的是,在不考虑奇偶校验位的值的情况下询问它! - n0n0bstan
不一定 - 可能接收器是为只能发送奇偶校验位的发射机构建的? - Alnitak

0

如上所述,RS485需要9位传输。无论受控设备的“大小”(例如,许多空调或冰箱都提供RS485接口,而不是真正的“微小”物品),RS485广泛用于工业应用。 RS485允许高达10Mbs的吞吐量或距离长达4000英尺。使用奇偶校验位来区分地址/数据字节可简化硬件实现,网络的每个节点都可以拥有自己的硬件,在线路上的地址字节与节点地址匹配时才生成中断。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接