【发布时间】:2012-12-06 20:19:52
【问题描述】:
创建三种类型的奇偶校验位的目的是什么?它们都定义了一个奇偶校验位完全不使用的状态?
“如果奇偶校验位存在但未使用,则可以称为标记奇偶校验(当奇偶校验位始终为1时)或空间奇偶校验(该位始终为0)” - Wikipedia
【问题讨论】:
标签: serial-port bit parity
创建三种类型的奇偶校验位的目的是什么?它们都定义了一个奇偶校验位完全不使用的状态?
“如果奇偶校验位存在但未使用,则可以称为标记奇偶校验(当奇偶校验位始终为1时)或空间奇偶校验(该位始终为0)” - Wikipedia
【问题讨论】:
标签: serial-port bit parity
这里似乎忽略了标记或空间奇偶校验的一个非常简单且非常有用的原因:节点地址标记。
非常低功耗和/或小型嵌入式系统有时会使用 RS485 或 RS422 等工业串行总线。也许许多非常小的处理器可以连接到同一条总线上。
这些微型设备不想浪费功率或处理时间来查看通过串行端口传入的每个字符。大多数时候,这不是他们感兴趣的东西。
因此,您设计了一个总线协议,例如使用 9 位... 8 个数据位和一个标记/空间奇偶校验位。每个数据包只包含一个带有标记奇偶校验位的字节或字(节点地址)。其他一切都是空间平价。然后,这些微型设备可以简单地等待奇偶校验错误中断。一旦它得到中断,它就会检查那个字节。那是我的地址吗?不,回去睡觉。
这是一个非常省电的系统...并且仅浪费了 10% 的带宽。在许多环境中,这是一个很好的权衡。
所以...如果您有一个 PC 级系统试图与这些微型设备通信,您需要能够设置/清除该奇偶校验位。因此,您在传输节点地址时设置 MARK 奇偶校验,并在其他任何地方设置 SPACE 奇偶校验。
【讨论】:
所以有五种种可能性,而不是三种:无奇偶校验、标记、空格、奇偶。在没有奇偶校验的情况下,帧中的额外位被省略,通常在协议已经使用校验和或 CRC 检查错误或数据损坏不太可能或不严重时选择。
没有人选择标记或空格,这只是在浪费带宽。模一些奇怪的标准,例如 9 位数据协议,硬件供应商喜欢强迫您购买他们的硬件,因为您无法在不编写驱动程序的情况下即时重新编程 UART。
【讨论】:
如果您要生成数据以发送到需要奇偶校验位的硬件(可能是因为它在电子设备中内置了硬编码字长)但不关心其值是什么,则设置标记或空间奇偶校验很有用。
【讨论】:
非常清晰和有用的答案和评论。 对于那些认为这个概念有悖常理的人,请放松;该术语是语义问题,而不是信息论或工程问题,使用“平价”一词引起的困难。
“标记”和“空格”位在这些应用中不是奇偶校验位,并且该术语源于它们占据在其他上下文中可能期望奇偶校验位的位位置这一事实。实际上,它们与奇偶校验无关,但用于需要恒定位值的任何相关目的,例如标记字节或其他信号的开始,或作为延迟,或指示状态信号作为数据或地址等。
因此,它们有时在逻辑上被称为“粘(奇偶)位”,被粘在“开”或“关”状态。有时他们真的“不在乎”。
【讨论】:
如上所述,RS485 需要 9 位传输。 RS485 广泛用于工业应用,无论受控设备的“尺寸”如何(例如,许多空调或冰箱都提供 RS485 接口,而不是真正的“小”东西)。 RS485 允许高达 10Mbs 的吞吐量或高达 4000 英尺的距离。使用奇偶校验位来区分地址/数据字节简化了硬件实现,网络的每个节点只有在线路上的地址字节与节点的地址匹配时才能拥有自己的硬件来生成中断。
【讨论】: