複製鏈接
請複製以下鏈接發送給好友

縱向冗餘校驗

鎖定
縱向冗餘校驗LRC,Longitudinal Redundancy Check)是通信中常用的一種校驗形式。縱向冗餘校驗(LRC)是一種從縱向通道上的特定比特串產生校驗比特的錯誤檢測方法。在行列格式中(例如,在磁帶中),LRC經常是與VRC一起使用,這樣就會為每個字符校驗碼。
中文名
縱向冗餘校驗
外文名
LRC,Longitudinal Redundancy Check
特    點
通信中常用的一種校驗形式
實    質
校驗形式

縱向冗餘校驗介紹

縱向冗餘校驗的異或校驗和可以簡單快速的計算出來,將一個數據塊的所有數據字節遞歸,經過異或選通後即可產生異或校驗和。由於算法簡單,可以快速簡單地計算縱向冗餘校驗。然而,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),IEC 62056-21電錶讀數標準 [1]  ,智能卡定義 在ISO / IEC 7816和ACCESS.bus協議中。
這樣的8位LRC等效於使用多項式
的循環冗餘校驗,但是當以這種方式查看時,位流的獨立性不太清楚。
參考資料