In telecommunication, a longitudinal redundancy check (LRC), or horizontal redundancy check, is a form of
redundancy check that is applied independently to each of a parallel group of bit streams. The data must be divided into
transmission block In telecommunication, the term transmission block has the following meanings:
#A group of characters or bits transmitted as a block, unit, message, or packet. It usually includes additional encoded characters for error detection and correction.
#In ...
s, to which the additional check data is added.
The term usually applies to a single
parity bit
A parity bit, or check bit, is a bit added to a string of binary code. Parity bits are a simple form of error detecting code. Parity bits are generally applied to the smallest units of a communication protocol, typically 8-bit octets (bytes) ...
per bit stream, calculated independently of all the other bit streams (
BIP-8 BIP-8 (alternatively, BIP8) is an abbreviation for ''bit-interleaved parity 8''. BIP-8 consists of a parity byte calculated bit-wise across a large number of bytes in a transmission transport frame. BIP-8 bits are set such that the overall data stre ...
),
[
: "Reliable link layer protocols".
] although it could also be used to refer to a larger
Hamming code
In computer science and telecommunication, Hamming codes are a family of linear error-correcting codes. Hamming codes can detect one-bit and two-bit errors, or correct one-bit errors without detection of uncorrected errors. By contrast, the sim ...
.
This "extra" LRC word at the end of a block of data is very similar to
checksum and
cyclic redundancy check
A cyclic redundancy check (CRC) is an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to digital data. Blocks of data entering these systems get a short ''check value'' attached, based on t ...
(CRC).
Optimal rectangular code
While simple longitudinal
parity
Parity may refer to:
* Parity (computing)
** Parity bit in computing, sets the parity of data for the purpose of error detection
** Parity flag in computing, indicates if the number of set bits is odd or even in the binary representation of the r ...
can only
detect errors, it can be combined with additional error-control coding, such as a
transverse redundancy check
In telecommunications, a transverse redundancy check (TRC) or vertical redundancy check is a redundancy check for synchronized parallel bits applied once per bit time, across the bit streams. This requires additional parallel channels for the chec ...
(TRC), to
correct errors. The transverse redundancy check is stored on a dedicated "parity track".
Whenever any single-bit error occurs in a transmission block of data, such two-dimensional parity checking, or "two-coordinate parity checking",
enables the receiver to use the TRC to detect which byte the error occurred in, and the LRC to detect exactly which track the error occurred in, to discover exactly which bit is in error, and then correct that bit by flipping it.
Pseudocode
International standard ISO 1155 states that a longitudinal redundancy check for a sequence of bytes may be computed in
software by the following algorithm:
''lrc'' := 0
for each byte ''b'' in the buffer do
''lrc'' := (''lrc'' + ''b'') and 0xFF
''lrc'' := (((''lrc'' XOR 0xFF) + 1) and 0xFF)
which can be expressed as "the 8-bit two's-complement value of the sum of all bytes modulo 2
8" (
x AND 0xFF
is equivalent to
x MOD 28
).
Other Forms
Many protocols use an XOR-based longitudinal redundancy check byte (often called
block check character In telecommunications, a block check character (BCC) is a character added to a transmission block to facilitate error detection.
In longitudinal redundancy checking and cyclic redundancy checking, block check characters are computed for, and adde ...
or BCC), including the serial line interface protocol (SLIP, not to be confused with the later and well-known
Serial Line Internet Protocol),
[
.
"A Thinwire Protocol for connecting personal computers to the INTERNET".
Appendix D: "Serial Line Interface Protocol (SLIP)".
]
the
IEC 62056-21 standard for electrical-meter reading, smart cards as defined in
ISO/IEC 7816, and the
ACCESS.bus ACCESS.bus, or A.b for short, is a peripheral-interconnect computer bus developed by Philips and DEC in the early 1990s, based on Philips' I²C system. It is similar in purpose to USB, in that it allows low-speed devices to be added or removed fro ...
protocol.
An 8-bit LRC such as this is equivalent to a
cyclic redundancy check
A cyclic redundancy check (CRC) is an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to digital data. Blocks of data entering these systems get a short ''check value'' attached, based on t ...
using the polynomial ''x''
8 + 1, but the independence of the bit streams is less clear when looked at in that way.
References
*
{{ISO standards
Error detection and correction
Articles with example pseudocode
ISO standards