纵向冗余校验纵向冗余校验(LRC,Longitudinal Redundancy Check)是通信中常用的一种校验形式 。纵向冗余校验(LRC)是一种从纵向通道上的特定比特串产生校验比特的错误检测方法 。在行列格式中(例如,在磁带中),LRC经常是与VRC一起使用,这样就会为每个字元校验码 。
基本介绍中文名:纵向冗余校验
外文名:LRC,Longitudinal Redundancy Check
特点:通信中常用的一种校验形式
实质:校验形式
介绍纵向冗余校验的异或校验和可以简单快速的计算出来,将一个数据块的所有数据位元组递归,经过异或选通后即可产生异或校验和 。由于算法简单,可以快速简单地计算纵向冗余校验 。然而,LRC并不很可靠,多个错误可能相互抵消,在一个数据块内位元组顺序的互换根本识别不出来 。因此LRC主要用于快速校验很小的数据块儿(如32B) 。在射频识别系统中,由于标籤的容量一般较小,每次交易的数据量也不大,所以这种算法还是比较适合的 。实现Set LRC = 0For each character c in the stringdoSet LRC = LRC XOR cend 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电錶读数标準,智慧卡定义 在ISO / IEC 7816和ACCESS.bus协定中 。这样的8位LRC等效于使用多项式
文章插图
的循环冗余校验,但是当以这种方式查看时,位流的独立性不太清楚 。