纵向冗余校验

科技工作者之家 2020-11-17

纵向冗余校验(LRC,Longitudinal Redundancy Check)是通信中常用的一种校验形式。纵向冗余校验(LRC)是一种从纵向通道上的特定比特串产生校验比特的错误检测方法。在行列格式中(例如,在磁带中),LRC经常是与VRC一起使用,这样就会为每个字符校验码。

介绍纵向冗余校验的异或校验和可以简单快速的计算出来,将一个数据块的所有数据字节递归,经过异或选通后即可产生异或校验和。由于算法简单,可以快速简单地计算纵向冗余校验。然而,LRC并不很可靠,多个错误可能相互抵消,在一个数据块内字节顺序的互换根本识别不出来。因此LRC主要用于快速校验很小的数据块儿(如32B)。在射频识别系统中,由于标签的容量一般较小,每次交易的数据量也不大,所以这种算法还是比较适合的。

实现Set LRC = 0

For each character c in the string

do

Set LRC = LRC XOR c

end do

最佳矩形码虽然简单的纵向奇偶校验只能检测错误,但它可以与附加的错误控制编码(例如横向冗余校验)组合以纠正错误。 横向冗余校验存储在专用的“奇偶校验轨道”上。

每当在数据传输块中发生任何单比特错误,这种二维奇偶校验或“双坐标奇偶校验”时,使接收器能够使用TRC来检测错误发生在哪个字节,以及 LRC准确检测出错误发生的轨道,准确发现哪个位出错,然后通过翻转纠正该位。

伪代码国际标准ISO 1155规定,可以通过以下算法在软件中计算字节序列的纵向冗余校验:

Set LRC = 0For each byte b in the bufferdo Set LRC = (LRC + b) AND 0xFFend doSet LRC = (((LRC XOR 0xFF) + 1) AND 0xFF)它可以表示为“模数为28的所有字节之和的8位二进制补码值”(x AND 0xFF等于x MOD 28)。

许多协议使用基于XOR的纵向冗余校验字节(通常称为块校验字符或BCC),包括串行线路互联网协议(SLIP),[8] IEC 62056-21电表读数标准1,智能卡定义 在ISO / IEC 7816和ACCESS.bus协议中。

这样的8位LRC等效于使用多项式的循环冗余校验,但是当以这种方式查看时,位流的独立性不太清楚。

本词条内容贡献者为:

吴晨涛 - 副研究员 - 上海交通大学

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。