Developed in the 1970's, Fire Codes are basically a tricky way of providing the same results as row and column parity or CRC. They are very fast to decode and check, and can be used to correct errors as well.
Fire codes operate because of the careful selection of the CRC-generating polynomial. (X^ 23 +1)( X^ 17 +X^3 +1) These special polynomials contain two prime-polynomial factors, each of which helps locate a detected error. Knowing the location of a transmitted error modulo and the degree of each of these prime-polynomial factors, you can apply the Chinese remainder theorem to locate the exact bit error. Although the math sounds complex, you can easily implement it with high-speed D flip-flops and XOR gates. If a 32-bit fire-code-protected block contains two errors separated by exactly 11 bits, the fire code fails to correct the errors.
Google: fire code error correction
Comments:
See also:
Data * - - - - - - - * * - - * - - - - * - - * bits - * - - - - - - * - * - - * - - - * - - * - - * - - - - - * - - * - - * - - * - - * - - - * - - - - * - - - * - - * - * - - * - - - - * - - - * - - - - * - - * * - - * - - - - - * - - * - - - - - * - - X - - * - - - - - - * - * - - - - - - * - * * - * - - - - - - - * * - - - - - - - * * - * * Parity = = = = = = = = P = = = = = = = = ! = = !
Each parity bit is the XOR of parity for the data byte with which it is
associated and parity for staggered bits from the eight previous bytes.
Essentially, it is a clever way to obtain the same results as are provided
by the use of row and column parity bits. (After the last byte of data, one
extra byte, with the extra parity bit, is needed to provide parity for all
the remaining diagonals.)
Questions: