Error-correction with limited working storage
First Claim
1. A method for calculating a syndrome vector for an incoming stream of symbols that is protected by a block error-correction code, the stream of symbols having N symbols, with K symbols being original data symbols (K<
- N), and N−
K symbols being redundant symbols, the method comprising;
making a decoding matrix available, the decoding matrix having N columns and “
N−
K”
rows;
receiving the stream of symbols, ri, where “
i”
is an integer from 1 to N that identifies a particular position of the symbols within the stream of symbols; and
as each symbol, ri, is received, multiplying the received symbol, ri, by the entries in the “
ith”
column of the decoding matrix, thereby resulting in “
N−
K”
intermediate syndrome components, and adding each of the intermediate syndrome components for the received symbol, ri, to a corresponding position of a syndrome vector.
13 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus for encoding and decoding linear block codes while using limited working storage is disclosed. For decoding, the error syndromes are calculated incrementally as each encoded symbol is received. That is, as each symbol, ri of the code word is received, the received symbol, ri is multiplied by the entries in the “ith” column of a decoding matrix, resulting in intermediate syndrome components. The intermediate syndrome components are added to the appropriate entry in a syndrome vector. Once all symbols ri are received, the syndrome vector contains the error syndromes si for the received code word.
166 Citations
45 Claims
-
1. A method for calculating a syndrome vector for an incoming stream of symbols that is protected by a block error-correction code, the stream of symbols having N symbols, with K symbols being original data symbols (K<
- N), and N−
K symbols being redundant symbols, the method comprising;making a decoding matrix available, the decoding matrix having N columns and “
N−
K”
rows;
receiving the stream of symbols, ri, where “
i”
is an integer from 1 to N that identifies a particular position of the symbols within the stream of symbols; and
as each symbol, ri, is received, multiplying the received symbol, ri, by the entries in the “
ith”
column of the decoding matrix, thereby resulting in “
N−
K”
intermediate syndrome components, and adding each of the intermediate syndrome components for the received symbol, ri, to a corresponding position of a syndrome vector.- View Dependent Claims (2, 3, 4, 43)
- N), and N−
-
5. A method for decoding a stream of symbols that is protected by a block error-correction code, the method comprising:
-
receiving the stream of symbols;
as each symbol is received, calculating one or more intermediate syndrome components, and adding the intermediate syndrome components to a corresponding entry of a syndrome vector;
using the syndrome vector to identify error locations of those symbols that have an error, and calculating an error magnitude for each errored symbol; and
applying the error magnitudes to the corresponding errored symbols to produce corrected symbols. - View Dependent Claims (6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
fetching the errored symbols from the secondary store; and
fetching the error magnitudes from the working store before the error magnitudes are applied to the corresponding errored symbols to produce the corrected symbols.
-
-
15. A method according to claim 5, wherein the error magnitudes are subtracted from the corresponding errored symbols to produce the corrected symbols.
-
16. A method according to claim 5, further comprising storing the corrected symbols in the secondary store.
-
17. A method according to claim 5, further comprising storing the error magnitudes and the error locations in the secondary store.
-
18. A method according to claim 17, further comprising fetching the error locations, errored symbols and error magnitudes from the secondary store at some later time, and then applying the error magnitudes to the corresponding errored symbols to produce the corrected symbols.
-
19. A method for decoding an incoming stream of symbols that is protected by a block error-correction code, the stream of symbols having N symbols, with K symbols being original data symbols (K<
- N), and N−
K symbols being redundant symbols, the method comprising;initializing a syndrome vector to zero, the syndrome vector having N−
K entries;
making a decoding matrix available, the decoding matrix having N columns and “
N−
K”
rows;
receiving the stream of symbols, ri, where “
i”
is an integer from 1 to N that identifies a particular one of the symbols within the stream of symbols;
determining if the received symbol, ri is identified as an erasure location, and if so, recording index “
i”
as an erasure location and setting ri to zero;
multiplying the received symbol, ri, by the entries in the “
ith”
column of the decoding matrix, thereby resulting in “
N−
K”
intermediate syndrome components, and adding the intermediate syndrome components for the received symbol, ri to the corresponding entry in the syndrome vector;
if i<
K, store ri in the secondary store;
once all N of the symbol positions have been processed, calculating error locations in the stream of symbols using the syndrome vector and the identified erasure locations;
calculating an error vector, e, using the error locations and the syndrome, the error vector, e, storing error magnitudes for selected symbols in the received stream of symbols;
for each erasure location, j, calculating the additive inverse of error magnitude ej to −
ej, and store the additive inverse −
ej in the secondary store, overwriting the symbol that corresponds to the erasure location, j; and
for each non-erasure error location, subtracting the error magnitude ej from the corresponding errored symbol, resulting in a corrected symbol, and storing the corrected symbol in the secondary store, overwriting the errored symbol that corresponds to the non-erasure error location.
- N), and N−
-
20. A syndrome processor for calculating a syndrome vector of an incoming stream of symbols that is protected by a block error-correction code, the stream of symbols having N symbols, with K symbols being original data symbols (K<
- N), and N−
K symbols being redundant symbols, the syndrome processor comprising;an input for receiving the stream of symbols, ri, where “
i”
is an integer from 1 to N identifying a particular position of the symbols within the stream of symbols;
a storage element for storing a decoding matrix, the decoding matrix having N columns and “
N−
K”
rows;
a multiplier for multiplying each received symbol, ri, by the entries in the “
ith”
column of the decoding matrix, thereby resulting in “
N−
K”
intermediate syndrome components for each received symbol, ri; and
an adder for adding the intermediate syndrome components for each received symbol, ri to the corresponding entry in the syndrome vector. - View Dependent Claims (21)
- N), and N−
-
22. A decoder for decoding a stream of symbols that is protected by a block error-correction code, the decoder comprising:
-
an input for receiving the stream of symbols;
syndrome calculating block for calculating one or more intermediate syndrome components as each symbol is received, and adding the intermediate syndrome components to a corresponding entry of a syndrome vector;
an error locator for identifying the location of the errored symbols using the syndrome vector;
an error magnitude calculator for calculating the error magnitude for each errored symbol using the locations of the errored symbols provided by the error locator and the syndrome vector; and
an error corrector for applying the error magnitudes to the corresponding errored symbols, thereby resulting in corrected symbols. - View Dependent Claims (23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34)
-
-
35. A method for encoding and delivering a stream of data having a number of symbols in an original order, the method comprising:
-
assigning each of the symbols of the stream to one of a number of blocks;
encoding each of the blocks using a block error-correction code;
interleaving the symbols from two or more of the blocks to provide a stream of output symbols; and
the assigning, encoding and interleaving steps operatively configured so that the stream of output symbols are delivered in the original order of the stream.
-
-
36. A system for encoding and delivering a stream of data having a number of symbols in an original order, the encoder comprising:
-
a block assignor for assigning each of the symbols of the stream to one of a number of blocks;
an encoder for encoding each of the blocks using a block error-correction code; and
an interleaver coupled to the encoder for interleaving the symbols from two or more of the blocks, the block assignor, encoder and interleaver operatively configured such that the interleaver outputs the symbols of the stream of data in the original order of the stream of data. - View Dependent Claims (37, 38, 39, 40, 41, 42)
-
-
44. A method for encoding and delivering a stream of data having a number of symbols, the method comprising:
-
assigning each of the symbols of the stream of data to one of a number of first ECC blocks;
encoding each of the first ECC blocks using a block error-correction code (ECC) to provide a first ECC layer;
interleaving the symbols from two or more of the encoded first ECC blocks to provide a stream of first ECC output symbols;
assigning each of the first ECC output symbols to one of a number of second ECC blocks;
encoding each of the second ECC blocks using a block error-correction code (ECC), to provide a second ECC layer; and
delivering a stream of second ECC output symbols. - View Dependent Claims (45)
receiving the stream of second ECC output symbols;
decoding the stream of second ECC output symbols resulting in a stream of first ECC output symbols arranged into a number of second ECC blocks;
determining if there is an error in one of the second ECC blocks;
de-interleaving the stream of first ECC output symbols if an error is detected in one of the second ECC blocks;
decoding the de-interleaved stream of symbols if an error is detected in one of the second ECC blocks; and
skipping the de-interleave and second decoding step if an error is not detected during the determining step.
-
Specification