CA1312953C - Reed solomon error correction code encoder - Google Patents

Reed solomon error correction code encoder

Info

Publication number
CA1312953C
CA1312953C CA000566127A CA566127A CA1312953C CA 1312953 C CA1312953 C CA 1312953C CA 000566127 A CA000566127 A CA 000566127A CA 566127 A CA566127 A CA 566127A CA 1312953 C CA1312953 C CA 1312953C
Authority
CA
Canada
Prior art keywords
symbols
bits
bit
ecc
rows
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CA000566127A
Other languages
French (fr)
Inventor
Lih-Jyh Weng
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Quantum Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Application granted granted Critical
Publication of CA1312953C publication Critical patent/CA1312953C/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes

Abstract

ABSTRACT OF THE DISCLOSURE
An encoder encodes a sector of data to produce ECC
symbols using a GF(210) code by first appending one or more pseudo data bytes to the sector data bytes. The data string of sector data bytes and pseudo data bytes are then encoded to produce a desired number of 10-bit ECC symbols. Two selected bits from each ECC symbol are compared to a known bit pattern. If the selected bits match the pattern, the bits are truncated and the remaining 8-bit symbols are concatenated with the data string to form a codeword. The codeword bytes can later be decoded, and any error correction performed, by appending the bit pattern as necessary.
If the selected bits do not match the pattern, the pseudo data bytes are modified such that encoding the data bytes and the modified pseudo data bytes produce 10-bit ECC symbols with the selected bits matching the bit pattern. The selected bits are then truncated and the remaining 8-bit symbols are concatenated with the data string to form the codeword.

Description

J .--U ~ J ~: I J A 1`~1 U I I ~ 1~ 1'15 L L ~ R ~ r I 3 ~

%~3 a3-378/D-~3 ~ld o Inv~nt~on: ~Mod1fied) ~ed-so~omon ~rsor Corr~ction Code Eneoder De~oription of ~rio~ Art The ~mportance o~ er~o~ cor~ection coding o~ data in digital computer systems has increased greatly as the denslty of the data recorded on m~s ~tor~ge medla, ~oc~ particulssly disks, has incre~6ed. With higher reeording densities, ~ tiny imper~ection in the record~ng sur~ce of a di~k c~n corrup~
l~qe amount c~ data. In orde~ to ~vold los~ng that d~ta, error correction ~odes ("ECC's"t are employed to, as the name impli~s, correc~ the erroneous d~a.

~ Before a str~ng of data symbols ~s written to a d~k, it is mathematioally enco~ed to form ECC symbols. The ECC ~ymbols are then ~ppended to the data string to ~o~m code words - d~ta symbols p~us CC symbols - and t~e cod~ word~ are wrltt~n to or stored on the disks. When d~ta is to ~e s~ad ~rom the disk~, the code word~ contalni~g the d~t~ 6ymbol~ to be c~d are retrleved from the di~ks and mathematieally d~coded. Durlng deccding any e~rors in the d~ta ~re detected a~d, 1~ po6~1bl~, ~ 3 ~ 2 ~ 3 83-37~/D-653 correc~ed through man$pulation of th~ ECC ~ymbol~ [For ~
detailed description of decoding see Pe~erson and Weldon, Error Correction Codes, 2d ~dltlon, MIT ~res~, 1972~.

Stored digital d~t~ can contain mult~ple indep~ndent errors. Onc o~ t~e most ~ffective ~ypes of ECC u~ed or the c~rrec~ion o~ multiple er~ors is ~ ~ed-Solomon code l~or a detail~d descripti~n o~ Reed-Solomon codes, cee Pet~r~on and Weldon, Error Cosrection Codes~. To correct mult~ple error~ ln strings of data symbols, Reed-Solomon codes efficiently ~nd ~ffectively utillze the various m~thematic~l propertie~ of ~et~
of symbols known as Galois Fields, represented "GF(~q~", wh~re "P" is a psime number and "q" can be though~ of a5 the number of digits, ba~e P, in oach element or symbol in the ~eld. "P"
usuaily has the value 2 ln digital computer ~pplicat~ons and, there~ore, "q" is the number of bits in ~ach ~ymbol.

The number of 6ymbols which an ECC based on ~ ~ed-Solomon code can effectively encode and correc~, or "protec~", is limlted by the slze of the Galoi6 Field scl~ct~d, i.~. Pq symbols, and the maximum number o~ errors which the code i~ ~o be c~pable o~ correcting. The max~mu~ length of a cyclic Re~d-Solomon code word for GF (Pq) is P~-1 sym~ol6. Thu~ th~

u ~ o u ~ ~ ~ r ~ w ~ c u L c r~ c r~

3 1 2 9 ~ 3 B3-37~/D-653 ~aximum numbes of data ~ymbol~ which can be prot~cted by the ~cC, that 1~ included in the code word, is P~ ymbol~ m~nus "n", where "n" i~ ~he n~mber of ECC ~ymbols. She larger the G~lois ~leld, the longer the code word, and ~he more data ~he ECC can p~otect for a given maximum number of errDr~ to be correct~d. ~h~refore, larger ~alois Field~ could ~e used to protect large~ 6trings o~ data symbols. However, usin~ Galols Fields that do no~ ~esult in B-bit code word symbols, or symbols that contain a number of bits whlch i5 a multlpl~ of eight, complicates the circuitry o the system.

Galois Field G~(2~) is a ~alois Field which res~lts ~ 8-bit ECC sym~ols. An EC~ based on GF~2~) can protect a string of up to 253 ~-bit data symbols or "data by~es" a~aln~t ~
slngle error, 1~ two 8-bit ECC symbols are appended to the data, making the code word 256 or 2 bytss long. ~ the ~CC i~
to correct more than on~ error. more ECC ~ymbol~, two ~or ~ach additional error to be corrected, must be used in the cod~
word. This means that fower data bytes can be protectet for a given length o code word.

~ nformation i~ often stored on ma~netlc dlsk~ ln sectors whlch are 51~ or 576 bytes in length. Th~re~r~, ~CC'~ which 1/ .--U;-- ~ ~ U ~: I ~ 1'.1,. U I I 1~ L L t 1`1 ~
` :~3 ~ 3 a3-37s/D-6s3 ..

ar~ b~sed on GF(2t) cannot, without complex ~n~pulatlon of the code, protect an entire 512 or 576 by~ ctor. CC'~ ba6ed on GF~21~) have su~ficient code word lengthl l.o. 21 or 1024 6ymbols per code word, to protect sn entire ~octDr. Nnwever, the encodin~ 3nd decoding of the 10-bi~ ~ymbol~ ~6~d in a G~2~~ code present certain problem~.

More specifically, computer transmi~sion ~nd ~to~ge hardw~re is set ~p ~or byte~, i.e. 8-bi~ symbol~, or $ymbol6 whose length ~re ~ome multiple of ~-bits. Thus they ~r~, in general, not arran~ed or manipul~tion of 10-b~t ~ym~ol~.
~herefore, if a G~2~ ECC is to b@ use~, th~ ~nformation has to be translat2d back and forth ~etween bytes and 10-bit symbols, ~ir~t for encodin9 as 10-bit ~ymbol~, n~xt ~or tr~nsmissisn and ~or~ge ~s byt~6, ~nd finally gor decoding as 10-bit symbols. The requirement o tran~lating betwe~n bytes and 10-bit symbol~ at both the encoder ~nd th~ decodor adds the complexity of another step to the ECC coding proces5.

One technique which is u~d to prot~c~ ~n ent~r~ 512 or 576 byte S~ctor with a GF(2') ECC is to ~nterl~v~ th~ ~CC
GF~2) code several times. Int~rleavin~ c~-~t~vely ~plit6 th~
the str~ng of data symbol~ into several smaller segmen~, and U ~ - U ~ U Y: I ~ I'.IVI U I I ~ L; L t lq r~ L r~ r ~
~L3~ 2~53 ~3~378/D 653 treatfi each ~egment a~ a ~tream of da~a ~ymbols to be encodod, The benefits og ~nterleav~ng aee that ~t per~t~ ~ lar~r numb~r of d~ta ~ymbols to be encod~d ~y a glven eo~e, and that it e~fectiv~ly 6eparates bur~ts of ~rror~ by en~oding adjacent d~ta symbols ln differen~ code words. On the other hand, interleaving ~ypieally involves two steps to en~ode, ~ir~t dividin~ the data ~o ~e encoded ~nto sev~r~l segments and then separately encoding eaeh segment ~n~o ~ code word; ant two steps to decode, first separately decoding the d~ta and then combining the data symbols to recreate the orlgin~l string of data symbols. Al~o, ~nterl~aving re~ults ln ~ le~s ~fielent code. lnterleaved codes require more ECC symbol~ to protect the data from a given number of error~ than ~re requir~d by a non-int~rleaved code.

Summary o~ ~he Invent~on The invention enables one to generate a code word in GF(2~) to protect up to 1023 bytes (data plus ECC symbols) and yet use ~-bit symbols, or bytes, as the ECC ~ymbols.
First, one or more pretetermlned pseudo dat~ bytes ~re ~ppended to the da~a byt~s and the string comp~sed of the data bytes plus the pseudo d~ta bytes is en~od~d to prod~ce the dasir~d number of 10-b~t ECC symbols. Then, two 6~1Octod ~l~s ' :

~ ~3~2~
~3-37B/D 653 ln each of the 10-blt ~CC ~ymbol are comp~red to a ~nown 2-bit p~tern, e.g. "OO". ~f ~he selected ~wo bits in each of the 10-b~t ~CC ~ymbols ~re ~he ~ame afi ~he 2-bit p~ttarn, the selected bits of the ECC ~ymbols are ignor~d or truncated and th~ ~emaining ~ bits of e~ch of the ECC symbols ~re conc~ten~t~d with the d~t~ bytes and the appended paeudo data bytes to form th~ code word. The code word byt~s oan later b~
decoded, and any erro~ correction pe~ormed, by ~ppendlng th~
known 2-bit t~uncation pattern as necess~ry or Galols Field addition and/or multiplication.

~ f any of the selected bits in any of the ECC 10-blt symbols are not the same as the trunc~tion pattern, the appended pseudo data bytes are modi~ied such that eneodlng the data ~ytes plu~ the modified pseudo d~ta bytes produces iO-blt ECC ~ymbols with the selected bits the same ~5 the truncation pattern. Then the selected bits, which ar~ now the sam0 as the known truncation pattern, are igno~ed and the remain~ng 8 bits of each o~ the E~C symbols ~nd the modifled pseudo d~tA bytes are ~tored along wi~h the data bytes a6 th~ cod~ wo~d. ~g~in, the ~odi~ied pseudo data bytes and the s~m~ining 8-bits of ~he ECC symbols cont~in all the ln~ormation n~c~ary to ~llow the docod~ng ~nd error correction of the code word D~ byte~.

131~3 The modification of the pseudo data bytes and the det.ermination of the 8 blts o~ the ECC symbols whlch are not the preselected, or known, 2 bits are easlly made according to a pre-stored table.
To summarize, a broad aspect of the present invention provides a method for encoding data symbols into code words using a mod.ified Reed-Solomon error correction code ("ECC") over Galols Field ~pq) and a generator polynomial g(x) which has q-bit coefficients which are elements of the Galois Field such that a ma~imum of d errors can be corrected, said method comprising the steps of:
1. encoding K data symbols plus L predetermined pseudo data symbols to produce d q-bit ECC symbols 2. ascertaining whether n selected bits in each of said q-bit ECC symbols match a predetermined truncation pattern, and if any of sald selected bits do not match the corresponding bits in said truncation pattern, ascertaining the location of the non-matchln~ bits; and ~ . (a) in response to a determination that said 2~ selected n bits in each of said q-blt ECC symbols match said pattern, formlng a code word containing said K data symbols, said L psuedo data symbols and d ECC symbols, each of which is formed ~rom the q-n bits of a q-bit ECC symbol which are not said selected bits, (b) in response to a determination that said selected n bits in at least one of said q-bit ECC symbols do not match said pattern, A

.
- ` . ~ ~ . .

`. ~ .

~3~2~53 69904-.i29 1. mod~fyiny sald predetermined pseudo data symbols to provide L modifled pseudo data symbols such that encodiny a string consisting of the data symbols and the modified pseudo data symbols will produce q-bit replacement ECC ~ymbols in which said selected n bits of each o~ said replacement ECC symbols match said pattern, and 2. forming a code word containing said K data symbols, sald L modlfied pseudo data symbols and d ECC symbols, each of which is formed from the q-n bits o~ a q-bit replacement ECC
symbol whlch are not the selected bits.
Another broad aspect of the present invention provides all apparatus ~or encodlng data symbols lnto code words using a modified Reed-Solomon error correctlon code ('ECC') over Galois Fleld ~pq) and a generator polynomial g(~) which has q-bit coeffici.ents which are elements of the Galois Field, such that a maximum of d errors can be corrected, said apparatus comprising:
A. means ~or encoding K data symbols plus L
predetermined pseudo data symbols to produce d q-bit ~CC symbols;
B. means for ascertalning whether n selected bits in ~0 each of said q-bit ECC symbols match a truncation pattern, and if ~ny of sald selected bits do not match the correspondiny bits in ~aid truncatlon pattern, ascertaining the location of the non-m~echin~ bits~ and C. (1) in response to a determination that said s~lected n bits in each of said ~-bi~ ECC symbols match said p~ttern, means for forming a code word containing said K data symbols, sald L pseudo data symbols and d ~CC symbols, each of 7a ~ .' - .

~3129~3 which ls formed from the q-n bits of a q-bit ECC syMbol which are not sald selected bits, (2) means for modifying said q-~it ECC symbols in response to a de-termination that said selected n bits in at least one of said q-blt ECC symbols do not ma-tch said pattern, said means including:
1. modifying means for modifying said predetermined pseudo data symbols to provide L modified pseudo data symbols such that encoding a string consisting of the data symbols and the modlfied pseudo data symbols wlll produce q-blt replacement ECC
symbols in which said selected n bits of each of said replacement ECC symbols match said pattern, and 2. means for formlng a code word containing sai~ K data symbols, said L modified pseudo data symbols and d ECC symbols, each of whlch is formed from the q-n bits of a q-bit replacement ECC symbol which are not the selected bits.
Description of the Drawings This invention is polnted out with particularity ln the appended claims. The above and further advantages of this ~0 invention may be better understood by referrlng to the following description taken in con~unction with the accompanying drawlng, In Whlch:
Figure 1 is a functional block diagram of an encoder which provides error correction symbols in accordance with the preferred error correction code. The encoder operates to accept a number of 8-bit data bytes plus an appended 8~bit pseudo data byte and produce 10-blt ECC symbols.

7b ~2~3 6990~-129 Figure 2 is a functional block diagram of an encoding system constructed in accordance wlth the preferred embodiment of the invention. The system produces code words containing 8-bit ECC symbols using GF~210) encodiny.

U ~--C d U Y ~ U I I ~ L L t. r~ , r I ~

~ 3~2~3 ~3-37~/D-653 Fi~ur~ 3 i~ ~ 1OW chart o~ the steps involved in operation of the p~eerr~d embodimsnt.

~ igure 4 is a modifier t~ble gen~r~ted ln ~ccordanc~ with th~ preferred embodiment.

Detailed Deseription The Galois Field G~(2~) is ba5ed on the prlmlt~v~
polynomial p~x) - x~ ~ x~ ~ 1. Eaeh o~ the 2l element~ of GF~2l) i~ denot~d I where i 8 0,1,2,,,.,1023. The gen~rator polynomial for the ~eed-Solomon code over B~(2~) i6 0~ the form:
~ )m ) ~ ~ x + ~ a~ ) b ( X

where m and i are somewha~ ~rbitr~ry num~ers selected ac~ordlng to the number of ~CC symbols utillzed, w~h the limltation that ~c~nnot equal ZER0. She number of ~actors ln the gen~r~tor polynomial is determined by ~he number o~ erro~s wh~ch the code is de~gned~to corr~ct and the encoder used.

Th~ example set forth below ~ a ood~ whlch de~iqned to ~lther detoct three errorC or cor~eet one ~ror ~nd dot~ct two .

U ~ -- u ~--d ~ IJ Y ~ . I`il U I I ~ ~ 1'1, 1; L t. 11 Iq L 1'1 !~ '1 r;, ,~

~'~i'2~ B3-37~/D-653 errors, i.e. it has ~hree ~CC ~ymbols, Letting ~1 and m~1, the generator polynomial 91%) is g(x) ~ ~x ~ a~ x + ~ x ~ ~3~, (2) which, when expanded using G~2~) multiplicotion, i.e. modulo p(x), and G~2s~) addi~ion, i.e. modulo ~, provid~s 957 ) X~ 95~ ) X + el6 . (3) The number of pseudo data symbo~s required or the code ls determined by the numb~r of ECC ~ymbol~ us~d ln th~ code, the number o~ bits in the truncatlon pattern, 1.e, the n~mber of bits in the ECC symbol$ minus the n~mber of bit~ in t~e code word symbols, and the number of bit~ ~n the cod~ word pattern.
The ~ormul~ is (~ E~C symbols) ~ (# b~ts in the truncation pattern~ ~4) (~ bit~ ln ~od~ word ~ymboi~) ~here "#" is an abbreviation fo~ number, and ~he numb~r of pseudo d~ta symbol~ requir~d ls th~ ~nteg~r portlon of the quotient, rounded of~ to the next highest int0ger ~o~ any ~mainder. Thus ~ GF~21) code with thre2 ~CC ~y~bol~, oight-_ g _ U ~ A .~. U I I c rl Ir C L~ L ~ N r~ r ~ c / - -~1 3~2~3 83-3~/D-653 bit symbols ln the code ~ord and therefore a two-bit truncation pattern regulres one px~udo dat~ ~ymbol:
(3) ~ (2) ~8) With three ECC symbols, the eoef~icient~ o~ the gen2rator poly~omial (3) ~an be u~ed in the encoder 10 ~hown in ~igure 1 ~o encode up to a total o~ 1020 bytes, i.e. dat~ bytes plu~ the predetermined appended pseudo data bytes ~s~eps 38 ~nd 40, Figure 3). Sn this example, ~ data bytes ~r~ ~ncoded, ~nd on~
pseudo dat~ byte is ~pp~nded. She ~ dot~ byte6 pl~ th~
appended pseudo d~ta byte are hereinafte~ t~ferr~d to collectively as the "K~l d~ta bytes". ~he appended pseudo data byte used in this example is the all 2E~o byte (00000000~.

With re~erence to Figure 1, the enco~er 10 include~ ~ ~et o~ 10-blt cegisters 22, 24, and 26 th~t are ~le~red prioc to the encodinq operation. The contents o the registers are ~pplied to exclusiva OR circults (XOR's) 11, 13 a~d 15, respectively. ~h~ input to the en~odec is ~pplied to ~he XOR
11 in byte ~erlal, bit par311el ~ashion ov~ eight input linæs 1~ .

~ . ~

~ :

U ~ S U y: ~ 4 /~VI U I I t ~ L L ~ R N ~ t I '~11 . i ' ~ ~ `' During the input operation ~ swit~h 12 13 in th~ position 12~ SO tha~ the output of ~he XOR 11 ~s applied to Galois Field ~ultipliers 16, 1~ and 20. The outputs of multipller~ 16 ~nd la are ~ppl~ed to XOR~s 13 and lS, ro~pectiv~ly ~nd th~ ~utput o mulitplier 20 is applied to the re~ister 26. The ~lois Field multiplie~s 16-20 mu~tiply their inputs ~y the ~aetors ~9~, 959 and ~6 respectively.

Accordingly, as each input byte ls applled to the encoder 10, it is summed (modulo 2) with the contents o~ the re~istor 22, with two leading ZERO bit~ appended to th~ ~nput byte6 a~
necessary for modulo 2 ~ddition. The sum is then simultan~ously multiplied ~modulo p~x)) by Galois Fleld multipliers 16-20 which contain the coefficient~ o~ all but the highcst power o~ X in g(X). The respe~tive product~ of the byte ~nd the coef~cients ar~ then ~dde~ (modulo 2) to the conten~s of the regist~rs 22-26. Af ter all o the X+1 data bytes have been applied to the encoder 10 (th~ timing circ~itry to apply the p6eudo data byte to th~ encoder ~ter all data bytes have b~en applied is not shown), the encoder swi~ch 12 i5 pl~c~d ~n po~ition 12b ~nd the conten~s o r~giBter~ 22-26 ~re unloaded ~s the 10-bit ~CC symbols S2, Sl, and S0 by shifting th~ contents to the le~t ~Figure 1) to ~n outp-ut terminDl 28, ~1 ~ ~ J / ~ ~ d ~ ;/ U I I C li 1~1 L L t 1~
S.
13129~3 ~3-37~/D-653 The ECC ~ymbols are then stored ln register 29 ~Figur~ 2). It will be noted that during the shi~t~ng oper~tion. wlth the switch 1~ ~n the position 12b and with ~ zero input on the lin~s 14, the v~rtic~l lnputs o~ the XOR~ the~efor~ pass ~h~
contents o~ the registers 22-26 without modlfying them. ~t will be further noted that encoders o~ this type ~re well known in the art.

As a simple example, ~ssume ~ string o~ two d~te bytes, (00000001) and ~00000010). The following strlng of bytes is lo~ded intv the enc~der:

(00000001) (00000010) ~00000000) ~ data bytes-~ /--p eudo dat~ ~yte--/

After generation o~ the error correctlon code ~n the encoder 10, the contents of the registers 22-2fi are unloaded to provide the 10-bit ECC symbols S2, Sl, and S0:
S2 ~ a237 . ~1111000000) Sl ~ ~20- ~ (0110010010) S O , ~966 ~ ( 0 0 0 0 ~

., . - - , .

;

U '~--U '~ U ~ G A1/1 U I I t~ L L 1~ W ~1''1 ~ r I ~
~312~53 a3 37~ 653 .

Next, the fielec~d two bit o th~ 10-bit ~CC ~y~bols stored ~n the regi ter ~9 ~re lo~ded in paralled lnto ~
comparator 30 ~Figu~e 2) and compared wi~h a prcdetermln~d 2-b~t truneation pattern stored in a tegi~ter 39. In thl6 ~xample, the ~elect~d bits are the leading two bits, and ~he ptedetermined trunc~tion pattern is ~'00'`. ~f ~a~h ~ymbol had `'00" as the leading two bits, the comparator 30 ~oul~ p~ovide a "match" si~nal to ~ g~te 31. The gate 31 would then pa6s the rem~ining eight bits ~f each of the ECC ~ymbol6 to a cod~ word regist~r 36 which would append them, along with the pse~do data byte, to th~ data 6trin~ t~ ~orm the codo wo~d (~t~p~ 42, 54, 56, Figure 3). Howeve~, the le~dlng two ~t~ of Sl ~nd S2 a~
not both ZEROS. ~he pseudo dat~ byte mus~ thkre~or~ bs modified in a modifier 34 such that encoding t~a d~ta bytos and the modi~ied pseudo data ~yte will ~esult in lO-b~t ECC symbol6 which each have "00" as the leading two bit~. The la~t eight bits of each ECC symbol can then be used in 40rming the code word lSteps 42-56, Figure 3) in code word regl~tar 36.

The modification of the p~eudo data byte and thQ
determination of the resulting ECC 6ymbol~ are made ln ~ccordance with a modifier table 32 who~e eont~nts aro ~t orth ln Tablc l, Figure 4. (The generatlon of the ~able will U ~ 1 J ~ U I I ~ r~ rl . 1. L 1: r~ rl C rl ~ r ., ~ ~ ~

~312953 ~3-378/D-653 be ~e~cribed below). Comparator 30 provid~s ~ ~no match"
signal which enables a bit locator ~3. Bit locator 33 ~hen locates any of the leading two bits in S0, S1 ~nd S2 which ~re ONES. ~his in~ormaeion is used i~ the t~ble ~ntry logic 33a oontained in ~he bi~ locator 33 to ~nter th~ modif~er t~ble 32 and select rows from the table. The ~elected table row~ ~re then combined in a symbol modifier 34 as describ~d below and used to modify ~he pseudo dAta byte ~nd t~e ECC ~ymbols. For the generator polynomial (3), Table 1 i~ the modl~er t~ble.
Column Dl in Table 1 contains modifiers for the pseudo data byt~ and column~ S0, Sl and S2 contain the ~odi~i~r~ or ~0-S2, respectively.

In this example conditions 1, 2 and 4 o Table 1 have been met, and the ta~le i6 therefore entered in rows 1, 2 ~nd 4. ~he modjfiers o~ the symbols 50, Sl, 52, ~$ ~re fotmed in symbol modifier 34 by ~dting together ~modulo 2~ the corresponding entries in these rows (step ~0, Figur~ 3):

~ , ~
.

U~--U~--da UY: ~ d~l/l U I I tl~ ~ LL~ cr1 ~ r I ~11 r .
~29~3 83 37~ 653 91 ~2 ~1 sO
condit~ on l - ( 0010110001 ) ( lOOO100111 ) ( 001000~110 3 ~ 0000010011 cond~tlon 2 - (0000110010) (0100111100) (0011111001) ~0000100101~
cond~t~on ~ - (0011010001) (0001100111) ~0110011100) (0000100~01) _______________________________ ___________.___________~____________~
modifiers - (0001010010) (1101111100) ~0111101011) (0010101101) The ps~udo data byt~, which i~ s~ored ~n a r~g~ter 34b ln symbol modlfier 34, ~nd ~he sCC symbols, whlch aro loadæd into reglster 34a in 6ymbol modi~l~r 34 through gato 31 ln re~ponse to the "no match" sign~l ~rom ~omparats~ 30, ~re then modified i~ symbol modi~ier 34 by adding ~modulo 2) th~
modif~er~ to the original ~ymbols to form symbols SO', Sl~, S2'~nd Dl~ ~st~p 52, Figure 3). These repla~e the symbols 50~
S2 and the pseudo data byte ~i.e. Dl' ).

( 0000000000 ) ~ ( 000101~10 ) -~ 0001010010 ) ~ 9 S2r ~ (1111000000) + (~lO~ lOO~ ~~001011~100) ~ ~-6Z
Sl' ~ (011001~01~) + (0111l0~0ll) ~(0001111001) ~ 3~
SO' ~ ~000011~ t (0010101101) -(0010010010) ~ 5 :, ~
:
, ::
-~ .

u ~ u ~ u ~ u I I ~ n ~ ~ L L L 11 r~ , t I

~ 13~29~3 a3-37B/D-653 She first two bits o~ ~1', S2', Sl', SO~, which ~re all ~E~OS, are i~nored for t~ansmis~ion or storage ~step 5~, Flgure 3) an~
the ~sultlng code wo~d loaded into code word reglster 3~ is:

~00000001) ~00000010) (01010010~ (10111100) (01111001) (100100_0 CL~S2 t~133 ~1s -data~ pseudo data byte-J~ CC symbols The code word can thus be transmitted or ~tored a~
~rlng of ~ytes.

Decoding of the code word at the receiving end is ~impler than encoding because the modi~ier table is not needed. The residues of the transmitted code word, which are n~eded ~or error detection, are determined by encoding ~Figur~ 1) the X
data byees and the pseudo data byte of the rece~ved code word.
At this point, th~ pseudo data byte c~n be discarded. The generated ECC symbols and the ECC ~ymbols in th~ eode word can then be compared an~ if any errors are d~tect~d, ~n orror correct~on ~lgorithm c~n be employod~

, .' ", .
: ~ .

U ~ u ~: ~ u ~r/l u l l ~ n ~, ~ L ~ a ll r ~

13129~3 ~3-37~/D-653 ~ shall now describe ~wo methods that c~n be u~ed to generate Modifier ~able 1 and then take up the more qener~l case of ~odifles ta~les ~o~ eode with mult~pl~ p60u~0 data 6ymbols. The ~irst m~thod ~or generating Table 1 start~ wlth ~n arbitrary selection of potenti~l fl~st column ~D1) en~rl~s from all the poss~ble ~F(2~) symbols whic~ have Z~OS as the leading two bits li.e. ~ymbols containing the truncat~on pattern~ - there are 256 po6sible first column entries. Next, each of the potential first column entri~s i~ encoded using the encoder lO (Figure 1) to p~oduce corresponding pot~ntial table rOW5, i.e. ent~ies for SO-S2. Two t~ble rows p~r ECC ~ymbol, one corresponding to each of the sele~ted bl~s in the truncation pattern, are cho~en from the potenti~l table rows.
Thus, with three ECC symbols and two ~its in the truncation pattern in th~s example, six rows are seleceod.

Specific~lly, two table rows for the ECC symbol SO are chosen such that all the entries in the rows h~ve ZEROS as the leading two bits, i.e. the truncation bits egu~l to the truncation p~tern, except ~or the entries ~n the column correspond~n~ to the SO symbol. One of thes~ SO entr~e~ must have one of t~e truncat~on bits, E, equ~l to ONE and the other truncatlon bit, F, in the 6ame entry equal to ~RO, ~.e, _ 17 ~

~' ', .

u ~ d ~ I A~ r C L L C r~l 1'1 C l'i ~ I tl r ' i / - ~

trunc~tion bit E is the addi~ive inverse of the corre~ponding bit ln the trunoation pattern and the truncation bit r ~6 equ~l to the corre~pon~ing bit in the tr~ncat~on pattern. The othe~
row mu~t have an SO entry wi~h truncation blt F e~ual to ~he ~dditive inverse of t~e corresponding truncation pc~ern blt and truncation bit ~ equal to the corresponding blt ~n the truncation pattern. ~sing the ~orresponding row selection c~lteria, rows ~re al60 selected for ~he ECC symbol~ Sl and S2.

As an example, conside~ the rows ln Table 1 corresponding to Sl, namely rDws 3 and 4. The row 3 ent~l~s have ZEROS ~n the first two blt positions o~ each entry except for the entry in the Sl column, which has a ONE in the leadin~ blt po~ition and ~ ZERO in the second hit posi~ion. similarly, the row 4 entries have ZE~OS in the first two bit positions of e~ch entry except ~or the entry in the Sl column, wh~ch has ~ ZERO in the lead~ng bit position and a ONE ln the second bit posltlon.

S~ two tables rows satisfying the row seleet~on crlteria could not be found }or each ECC symbol, ~he gener~to~
polynoml~l select~d for thR code could not then be used.
Alternate valu~s for m and~or i in genesator polynomial (1) wo~ld then be chosen untll a gene~ator polynomlal were found .
. .

u ~ - U ~ U Y ~ u I I ~ c L; L t. ~ 11 r ~
~1 312~3 a3 37~/D-653 from which a ~odifi~r ~ble could be construct~. Thi~
generator polynomial would then be used ln encoder ~0.

~ he second method to g~ner~te T~le 1 utlll~es th~
generator polynomial t3). The le~ding two bits of the eoe~ficients in t3) are used as the first row o~ wh~t wil-l become ~ '`dc by c" matrax ~"M~trix ~"), where d is the number of pseudo dat~ symbols determined by egua~ion (4) and c 1~ the number of bits in the code word symbols. In thic example, Matrix A is an "8 by B" matrix. Next, the gen~r~tor polynomial ~3) is multlplied by ~ 1,2,..,7, and ~he le~d~ng two bits o the coelficients ~f each of the prDduct p~lynomi~ls, ~'lglx)~. are used ~s the elements of rows two through ~even o~
Matrix A. Then a "pseudo inverse", Matrix B, of Matrix A is generated, using tne method o~ row reduction, to put Matrix A
in a form that ls as close as poss~ble to ~he lde~tity matrlx.
~n this ~ay the rank R of Matrix A, i.e. the numb~r of rows of th~ matrix which can be manipulated to form row~ resem~ling the row6 of the identity matrix, can be determlned. Matrlx B, whlch is not unique ~nless Matrix A is a ~quare matrlx, ls determined such that ~or each row a~ of Ma~rlx A and eaeh row b~ of Matrix B, the inner product, a~bl, ~ lg --.
. . .

i U '~--U '~ U Y ~ IV~ U I I ~ L L t M ~I t r~ 11 r ' ~

~ ~3129~3 83-~7a/D-6s3 a~bi ~ 1, i ~;
a ~b ~ O, i ~ j I the rank X of Matrax A i~ equal ~o the numbs~ of rows required in the modafier ~able, ~hen ~he R rows o~ M~trix 3 are used as the l~st eiqht bits of e~eh of the ~ntries in ~he first, or Dl, column of the table ~he first two bits ~re ~lways ZE~OS, i.e. the truncation bits are equal to the trunc3tlon pattern)~ These first column ~nt~le~ ar~ thon separately encoded by encoder 10 ts create the table rows, If the rank R o~ Matrlx A does not equal the number of rows requir?d fot the modlfier tabl~, ~nother genera~or polynomial (1~ is chosen, i.e. the values o~ m ~nd/or 1 are vari~d, such that a modifier table can b~ cr~ed. U~ually it would be 6ufficient to vary i only.

The storage requirements of the modi~ier table m~y be reduced to ~ust the Dl column. The mDdafiers for SO, Sl, Jnd S2 can be found by encoding ~F~gu~e 1) the Dl modifier. The Dl modifier is ~ound by approprlately entering the Dl mod~fier ~olumn. After encoding the Dl modifier, the cont~nts of the reglsters 22-2S wlll be ~he modifier~ for S5, Sl and S2.

, .
' ' ' ' ' ~' ' , .....

IJ ~--U ~ U 1.1 y: ~ _ AM U I I t ~ 1`1 C L L ~ N 11~ t I ~ hl r ~

~ , k ~ 3 1 2 9 ~ 3 ~3-378/D-653 The two methods outlined ~bove c~n be used ~n ~xp~nded form to generate modi~ier tables for codes us~ng a dif~erent 6~ze Galo~s Field and/or using mor~ than one p~udo d~t~
symbol~ In th~ general c~se, there ~r~ (i) an ~rbitrary number 5 of ECC ~ymbol~ depending on the ~aximum number o~ errors the code ls designed to correct; (il) an arbltra~ily large G~lo~s Field GF ~P~, depending on the size o~ ~he data f~eld to be protected, wher~ P ls usually equal to 2 and elements o the field have q bits; ~iii) code word ~ymbols with c bits, where c is lc~s than q; and (iv) truncation patterns b bits long, wher~
b 1~ equal to q-c. The number d of pseudo data symbol~
requ~ced for ~ code is determined by equatlon t4) to be d ~ 5 b c ~herefore, to generate such a ~odi~ier table usin~ the irst method described above, elements of GF ~2q) having trunc~tlon ~its ldentical to the truncation pattern are arbitrarily ~elacted - there ~re 2~ ~uch element~, The 6elected elemont6 are then encoded by the generator polynomlal to ~enerate potent131 tab1e row en~r1~s for tb~ ~ ~C~ ~ymbo1~ Dnd the f1rst :, .

., U '~--U ~ U ~: J G A1`/1 U I I ~ L L ~ t r1 ~ r ~
L '3 1 2 gi~i 3 ~3-378/D-653 pseudo dat~ ~ymbol (Dl ) . Next all-zE~o entrl~ arQ in6erted in the potentlal ~able rows b2fore D1 for ~he ~econd (D2), third ~D3~, ~tc. p~eudo data symbols ~nd table rows s~tl~ying the table selection criteria are selected from these potenti~l table row~, ~ f th~ app~oriate numbe~ of table rows, b, sotis~ying the row selection criteri~ ~or each ECC symbol c~n be obtained, only one pseudo data symbol i5 required ~or the code. If the appropriate number of table rows cannot ~e obtained, ~ ~eries of iterations ~s perormed as describ~d b~low. S~ the appropriate number of table rows ~annot be obtained ~f~er t~e series o~ lter~tion, the gener~tor polynomial (l~ must be mod~fied.

In the ~i~st iteration a string t of two symbol6, namely (00000001) and ~00000000), is encoded by dividing it by the qenerator polynomial ~s in eneoder lO o~ Figure 1. This produces a polynomial ~(x~ which is of the form:

f ~ X ~ ~ x ~ Ox~ UX' ~ Q~VXd ~ ~`'X 1 o~Y ~ 5 .. . . . .

U :: --U ~ U ~: J ~ A IV~ U I I 1: ~1 ~ C L L ~: l`l rl l~ r I ~ n r ~ ~ ~
13~2~
~3-378/D-653 Next, potential first eolumn entrie~ ~re arbitr~rlly ~elected as set forth above and rorrespondinq po~ontlal ~able row entries are gene~ed by ~ncoding the~, th~t ls, m~ltiply~ng them, by f(x). Potential table rows are then formed us~ng thsse entri~s ~or the ECC symbols and the flr~t two pseudo data symbols (Dl and ~) and using ~ z~o symbols as entries or the remainlng pseudo data sy~bols. Next, ~dditional table rows satisfying the row selection criteria are selected ~rom these potential table ~ows.

If the appropriate number of table row5 ar~ ~tlll not found, ~ ~eoond iter~tlon is perfocmed, sn thls ~terat~on, stting t' of thr~e symbols i~ encoded, namely (00000001), (00000000) and ~00000000). ~hen the potential rows ~re generated and appropria~e table rows are selected a~ de6c~ibed ~bove. I~ the table still cannot be obt~ined, addit~on~l iterations can be performed by appending additional ~ zSRo symbols to the string of symbols t~ previously encoded and then follow~ng the potential row generation ~nd table row s~leG~ion st~ps d~scrib~d ~bove.

~ h~r2 i~ a limit, ~qual to d-l, on the number of ~ter~tions that can be performed. I~ th~ mod~ier t~ble cannot u ~ - u ~ a u Y a r ~ l u I I c rl ~ ~ L L C I'1 N t~ t 1 3 ~ 3 83-37B/~-653 be generated after d-1 iterations, the generator polynomial must be modified and the iterations performed with ~he modified generator polyno~al unkil the tabl~ c~n be ~n~rated.

Another method to g~n~rate ~ modifier tDble for codes with more ~han one pseudo d~ta symbol ~s ~n expanded ~atrix method. This method is performed as follows: The flr~t c rows of the Matrix A are generated as descri~ed in the matrix method for ~enerating, Table 1, using b bits o~ the polynomial coef~icients and using all-ZER0 entries ~or the second (D2), third (D3~, etc, pseudo dDt~ symbols. She next c rOWB ~re ~enerated ln the s~me mann~r uslng polynomial (51, ~.e. the l~ding b bits of the ~oeffie~ent~ of polynoml~l t5) are ~sed ~s the entries of row c~1 of the matrix, polynomial ~5) i6 then multiplied by ~ 1,2,...,c-1, and the leading b bits of the respective coefficients are used as the entri~ o~ rows c~2 through 2c of the matrix. This matrlx row gener~tion process ~s repeated by encodlng the various strings of symbols t, t', etc., until a "dc by c" matrix is obtained. Ag~in the ~'pseudo inverse" of the matrlx ls generated, the rank 1~ determined and, if the rank is equal ~o the number of row6 required ln the modifler table, the table ~s generated from this matrix as set ~orth above.

..

U ~ U ~--G G U ':~: J ~ u I I e n r~l c L L C l'l r~ C I'I ~: r I G 11 r ~ L ~
~ 3~L2~53 ~3-3~8/D-653 I~ the rank of the matrix A i~ not equal to the number of rows required ln the modi~er table, ~he gene~to~ polynomial ~1) must be modi~ied. Vsually the value o~ v~ried until a gènerator polynomlal ~rom w~,ich the modi~ler tsble can be ~ener~ted is determined.

'

Claims (14)

1. A method for encoding data symbols into code words using a modified Reed-Solomon error correction code ("ECC") over Galois Field (pq) and a generator polynomial g(x) which has q-bit coefficients which are elements of the Galois Field such that a maximum of d errors can be corrected, said method comprising the steps of:

1. encoding X data symbols plus L predetermined pseudo data symbols to produce d q-bit ECC symbols;
2. ascertaining whether n selected bits in each of said q-bit ECC symbols match a predetermined truncation pattern, and if any of said selected bits do not match the corresponding bits in said truncation pattern, ascertaining the location of the non-matching bits; and
3. (a) in response to a determination that said selected n bits in each of said q-bit ECC symbols match said pattern, forming a code word containing said K data symbols, said L
psuedo data symbols and d ECC symbols, each of which is formed from the q-n bits of a q-bit ECC symbol which are not said selected bits, (b) in response to a determination that said selected n bits in at least one of said q-bit ECC symbols do not match said pattern, 1. modifying said predetermined psuedo data symbols to provide L modified psuedo data symbols such that encoding a string consisting of the data symbols and the modified psuedo data symbols will produce q-bit replacement ECC
symbols in which said selected n bits of each of said replacement ECC symbols match said pattern, and 2. forming a code word containing said K data symbols, said L modified psuedo data symbols and d ECC symbols, each of which is formed from the q-n bits of a q-bit replace-ment ECC symbol which are not the selected bits.

2. The encoding method as recited in Claim 1 wherein said modifying step further comprises:

1. selecting one or more rows of entries in a modifier table for each q-bit ECC symbol in response to the location of each of said selected n bits of said d q-bit ECC symbols which does not match the corresponding bit in said predetermined n-bit pattern;

2. forming L pseudo data symbol modifiers and d q-bit ECC
symbol modifiers by adding, modulo p, said selected table rows, such that the column entries in each of said selected table rows are added to the corresponding entries of each of the other selected table rows; and 3. modifying said L pseudo data symbols and said q-bit ECC symbols by adding, modulo p, said psuedo data symbol modifiers and said ECC symbol modifiers to corresponding ones of said psuedo data symbols and said ECC symbols.

3. The method recited in Claim 2 wherein said modifier table consists of nd rows and d+L columns, with the first L columns being associated with respective ones of said L psuedo data symbols and one column being associated with each of said d ECC
symbols, said table being generated by:
i. selecting potential d+l column entries, where the d+l column is associated with the first psuedo data symbol, for said modifier table from the elements of GF(pq) such that the selected n bits of each potential d+l column entry match said truncation pattern, ii. separately encoding said potential d+l column entries by steps 1 - 3 of Claim 1, thereby to produce d code symbols corresponding to each of said potential d+l column entries such that each potential d+l column entry together with all ZERO
entries for the remaining L-1 psuedo data symbols and the d code symbols form potential table rows, and iii. selecting table rows from said potential table rows such that a. each ECC symbol has n rows associated with it, b. in each of said n rows, the code symbol in the column associated with the ECC symbol has one of said n selected bits which does not match said truncation pattern, and c. each of said n rows has a different one of said selected n bits which does not match said truncation pattern.
4. The method recited in Claim 2 wherein said modifier table consists of nd rows and d+L columns, with the first L
columns being associated with respective ones of said L pseudo data symbols and one column being associated with each of said d ECC symbols, said table being generated by:

i. selecting, from each of the q-bit coefficients of g(x), n element bits which have the same bit positions as said n selected bits of said q-bit ECC symbols, using the element bits as nd elements of the bottom row of an "(L)(q-n) by q-n"
matrix, and using all ZEROS for the remaining bottom row elements, ii. multiplying (modulo p(x)) each of said coefficient symbols by .alpha., the primitive element of Galois Field (pq), to provide modified coefficients, iii. using the element bits of said modified coefficients as the nd elements of the next row of said matrix and using all-ZEROS for the remaining row elements, iv. repeating steps ii and iii until said matrix contains q-n rows.
5. The method of Claim 1 wherein the Galois Field GF (pq) is selected such that a block of data consisting of 512 or 576 data symbols can be encoded.
6. The method of Claim 1 wherein the Galois Field is GF(210) and the predetermined truncation pattern is two bits long such that the data symbols and the code word ECC symbols are eight bits long.
7. The method of Claim 6 wherein the predetermined pattern consists of two ZEROS in the leading two symbol bit positions.
8. An apparatus for encoding data symbols into code words using a modified Reed-Solomon error correction code ("ECC") over Galois Field (pq) and a generator polynomial g(x) which has q-bit coefficients which are elements of the Galois Field, such that a maximum of d errors an be corrected, said apparatus comprising:
A. means for encoding X data symbols plus L predetermined pseudo data symbols to produce d q-bit ECC symbols;
B. means for ascertaining whether n selected bits in each of said q-bit ECC symbols match a truncation pattern, and if any of said selected bits do not match the corresponding bits in said truncation pattern, ascertaining the location of the non-matching bits; and C. (1) in response to a determination that said selected n bits in each of said q-bit ECC symbols match said pattern, means for forming a code word containing said K data symbols, said L psuedo data symbols and d ECC symbols, each of which is formed from the q-n bits of a q-bit ECC symbol which are not said selected bits, (2) means for modifying said q-bit ECC symbols in response to a determination that said selected n bits in at least one of said q-bit ECC symbols do not match said pattern, said means including:
1. modifying means for modifying said predetermined pseudo data symbols to provide L modified pseudo data symbols such that encoding a string consisting of the data symbols and the modified pseudo data symbols will produce q-bit replacement ECC symbols in which said selected n bits of each of said replacement ECC symbols match said pattern, and 2. means for forming a code word containing said K
data symbols, said L modified pseudo data symbols and d ECC
symbols, each of which is formed from the q-n bits of a q-bit replacement ECC symbol which are not the selected bits.
9. The encoding apparatus as recited in Claim 8 wherein said modifying means further comprises:
A. means for selecting one or more rows of entries in a modifier table for each q-bit ECC symbol in response to the location of each of said selected n bits of said d q-bit ECC

symbols which does not match the corresponding bit in said predetermined n-bit pattern;
B. means for forming L pseudo data symbol modifiers and d q-bit ECC symbol modifiers by adding, modulo p, said selected table rows, such that the column entries in each of said selected table rows are added to the corresponding entries in each of the other selected table rows; and C. means for modifying said L psuedo data symbols and said q-bit ECC symbols by adding, modulo p, said pseudo data symbol modifiers and said ECC symbol modifiers to corresponding ones of said pseudo data symbols and said ECC symbols.
10. The apparatus recited in Claim 9 wherein said modifier table consists of nd rows and d+L columns, with the first L columns being associated with respective ones of said L pseudo data symbols and one column associated with each of said d ECC
symbols, said table being generated by:
i. selecting potential d+1 column entries, where the d+l column is associated with the first pseudo data symbol, for said modifier table from the elements of the GF(pq) such that the selected n bits of each potential d+l column entry match said truncation pattern, ii. separately encoding said potential d+l column entries as in Claim 8, thereby to produce d code symbols corresponding to each of said potential d+l column entries such that each potential d+l column entry together with all-ZERO
entries for the remaining L-l pseudo data symbols and the d code symbols form potential table rows, iii. selecting table rows from said potential table rows such that a. each ECC symbol has n rows associated with it, b. in each of said n rows, the code symbol in the column associated with the ECC symbol has one of said n selected bits which does not match said truncation pattern, and c. each of said n rows has a different one of said selected n bits which does not match said truncation pattern, iv. if L is greater than one, encoding by the same algorithm used to encode in Claim 8 a symbol string S of two q-bit symbols with a first q-bit symbol consisting of q-l ZEROS
followed by a ONE and a second q-bit symbol consisting of all ZEROS, to produce a polynomial f(x), v. selecting potential d+2 column entries for said modifier table, where the d+2 column is associated with the second pseudo data symbol, as in step 1, vi. separately encoding said potential d+2 column entries by multiplying said potential entries by said polynomial f(x) to produce d+l code symbols corresponding to each of said potential d+2 column entries such that each potential d+2 column entry together with all zero entries for the remaining L-2 pseudo data symbols and the d+l code word symbols form potential table rows, vii. selecting table rows from said potential table rows as in step iii, viii. if L is greater than two, encoding as in Claim 8 a symbol string S' of three q-bit symbols with the first two symbols the same as the symbols in said symbol string S and the third symbol consisting of all ZEROS to produce a polynomial f'(x), ix. selecting potential d+3 column entries for said modifier table, where the d+3 column is associated with the third pseudo data symbol, as in step 1, x. repeating step vi, substituting f'(x) for f(x), to produce potential table rows for each of said d+3 potential column entries as in step vi, xi. selecting table rows from said potential table rows as in step iii, xii. repeating steps viii through xi, with said symbol string S' being lengthened by one all-ZERO symbol with each repetition, until nd table rows have been selected.
11. The apparatus recited in claim 9 wherein said modifier table consists of nd rows and d+L columns, with the first L columns being associated with respective ones of said L pseudo data symbols and one column being associated with each of said d ECC
symbols, said table being generated by:
i. selecting from each of the q-bit coefficients of g(x), n element bits which have the same bit positions as said n selected bits of said q-bit ECC symbols, using the element bits as nd elements of the bottom row of a matrix, and using all-ZEROS for the remaining bottom row elements, ii. multiplying (modulo p(x)) each of said coefficient symbols by .alpha., the primitive element of Galois Field (pq) to provide modified coefficients, iii. using the element bits of said modified coefficients as the nd elements of the next row of said matrix, and using all-ZEROS for the remaining row elements, iv. repeating steps ii and iii until said matrix contains q-n rows, v. if L is greater than one, encoding said symbol string S
in Claim 8 to produce a polynomial f(x), vi. repeating steps i through iv substituting f(x) for the generator polynomial until the matrix contains (2) (q-n) rows, vii. if L is greater than two, encoding said symbol string S' as in Claim 8 to produce a polynomial f'(x) and repeating steps i through iv, substituting f'(x) for f(x), until the matrix contains (3) (q-n) rows, viii. repeating step vii with said symbol string S' being lengthened by one all-ZERO symbol with each repetition until the matrix contains (L)(q-n) rows, ix. forming the pseudo inverse of said matrix by using row reduction to manipulate said matrix into a form as close as possible to the identity matrix, x. forming the d+1 column of said modifier table by using each of the first nd rows of said pseudo inverted matrix as the q-n bits of a resulting entry in the d+l column of the table, said q-n bits corresponding to the symbol bits which are not the n selected bits, xi. producing q-bit d+l column table entries by combining the q-n bits of said resulting entries and said selected n-bit truncation pattern, xii. encoding each said d+l column entry as in Claim 8, to produce d entries for the rows of said table where each row consists of said d+1 column entry, said d column entries, and all ZERO entries for the remaining L-l columns, xiii. forming the d+2 column of said modifier table by using each of the second nd rows of said pseudo inverted matrix and repeating steps x-xii, iv. repeating step xiii to form the remaining L-3 columns and associated rows of said modifier table.
12. The apparatus of Claim 8 wherein the Galois Field GF
(pq) is selected such that a block of data consisting of 512 or 576 data symbols can be encoded.
13. The apparatus of Claim 8 wherein the Galois Field is GF
(210) and the predetermined pattern is two bits long such that the data symbols and the ECC symbols are eight bits long.
14. The apparatus of Claim 13 wherein the predetermined pattern consists of two ZEROS in the leading two symbol bit positions.
CA000566127A 1987-05-07 1988-05-06 Reed solomon error correction code encoder Expired - Fee Related CA1312953C (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/047,627 US4856003A (en) 1987-05-07 1987-05-07 Error correction code encoder
US047,627 1987-05-07

Publications (1)

Publication Number Publication Date
CA1312953C true CA1312953C (en) 1993-01-19

Family

ID=21950022

Family Applications (1)

Application Number Title Priority Date Filing Date
CA000566127A Expired - Fee Related CA1312953C (en) 1987-05-07 1988-05-06 Reed solomon error correction code encoder

Country Status (8)

Country Link
US (1) US4856003A (en)
EP (1) EP0290349B1 (en)
JP (1) JPH02500318A (en)
KR (1) KR930008683B1 (en)
AU (1) AU602401B2 (en)
CA (1) CA1312953C (en)
DE (1) DE3852423T2 (en)
WO (1) WO1988009010A1 (en)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63316524A (en) * 1987-06-18 1988-12-23 Sony Corp Method for decoding reed-solomon code
US4989211A (en) * 1988-05-12 1991-01-29 Digital Equipment Corporation Sector mis-synchronization detection method
US5146560A (en) * 1988-05-31 1992-09-08 Digital Equipment Corporation Apparatus for processing bit streams
US5136592A (en) * 1989-06-28 1992-08-04 Digital Equipment Corporation Error detection and correction system for long burst errors
JPH03272224A (en) * 1990-03-20 1991-12-03 Canon Inc Information signal processing method
US5224106A (en) * 1990-05-09 1993-06-29 Digital Equipment Corporation Multi-level error correction system
US5280488A (en) * 1990-11-08 1994-01-18 Neal Glover Reed-Solomon code system employing k-bit serial techniques for encoding and burst error trapping
DE69233530T2 (en) * 1991-04-10 2006-05-11 Mitsubishi Denki K.K. Encoder and decoder
US5428630A (en) * 1993-07-01 1995-06-27 Quantum Corp. System and method for verifying the integrity of data written to a memory
US5784387A (en) * 1994-10-31 1998-07-21 International Business Machines Corporation Method for detecting start-of-frame, end of frame and idle words in a data stream
JP3234130B2 (en) 1995-05-30 2001-12-04 三菱電機株式会社 Error correction code decoding method and circuit using this method
US5778009A (en) * 1995-06-14 1998-07-07 Quantum Corporation Dedicated ALU architecture for 10-bit Reed-Solomon error correction module
US5822336A (en) * 1996-11-14 1998-10-13 Quantum Corporation Modified reed solomon code selection and encoding system
US5948117A (en) * 1997-01-23 1999-09-07 Quantum Corporation Modified Reed-Solomon error correction system using (W+i+1)-bit representations of symbols of GF(2w+i)
FR2767940A1 (en) * 1997-08-29 1999-02-26 Canon Kk CODING AND DECODING METHODS AND DEVICES AND APPARATUSES IMPLEMENTING THE SAME
US5889794A (en) * 1997-09-30 1999-03-30 Quantum Corporation Two-level error correction encoder
JP4126795B2 (en) * 1999-02-12 2008-07-30 ソニー株式会社 Pseudo product code decoding apparatus and method
US6772390B2 (en) 2000-11-30 2004-08-03 Quantum Corporation Erasure correction for ECC entities
US6609225B1 (en) * 2000-12-21 2003-08-19 Cisco Technology, Inc. Method and apparatus for generating and checking cyclic redundancy code (CRC) values using a multi-byte CRC generator on a variable number of bytes
US6766493B1 (en) 2000-12-21 2004-07-20 Cisco Technology, Inc. Method and apparatus for generating and checking cyclic redundancy code (CRC) values using a CRC generator and binary galois field multiplier
US20020199153A1 (en) * 2001-06-22 2002-12-26 Fall Thomas G. Sampling method for use with bursty communication channels
US7349691B2 (en) * 2001-07-03 2008-03-25 Microsoft Corporation System and apparatus for performing broadcast and localcast communications
US6895546B2 (en) * 2001-08-16 2005-05-17 Broad-Light Ltd. System and method for encoding and decoding data utilizing modified reed-solomon codes
EP1293978A1 (en) * 2001-09-10 2003-03-19 STMicroelectronics S.r.l. Coding/decoding process and device, for instance for disk drives
US7181677B1 (en) * 2003-02-10 2007-02-20 Maxtor Corporation System and method for producing data and ECC code words using a high rate restricted-symbol code
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
US8683296B2 (en) 2011-12-30 2014-03-25 Streamscale, Inc. Accelerated erasure coding system and method
US8914706B2 (en) 2011-12-30 2014-12-16 Streamscale, Inc. Using parity data for concurrent data authentication, correction, compression, and encryption

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57207960A (en) * 1981-06-17 1982-12-20 Toshiba Corp Method for adding error correcting code to variable length data
FR2533091A1 (en) * 1982-09-13 1984-03-16 Cii Honeywell Bull SYSTEM FOR DETECTING AND CORRECTING TRANSMISSION ERRORS OF A BINARY MESSAGE USING A CYCLIC CODE DETECTOR AND CORRECTING ERRORS OF THE REED-SOLOMON TYPE BETWEEN
US4494155A (en) * 1982-11-08 1985-01-15 Eastman Kodak Company Adaptive redundance in data recording
US4683571A (en) * 1984-05-30 1987-07-28 Victor Company Of Japan, Ltd. Digital signal decoding system
US4623999A (en) * 1984-06-04 1986-11-18 E-Systems, Inc. Look-up table encoder for linear block codes
US4706250A (en) * 1985-09-27 1987-11-10 International Business Machines Corporation Method and apparatus for correcting multibyte errors having improved two-level code structure
US4703485A (en) * 1986-02-10 1987-10-27 International Business Machines Corporation Method and apparatus for computing and implementing error detection check bytes
JPS63316524A (en) * 1987-06-18 1988-12-23 Sony Corp Method for decoding reed-solomon code
AU606694B2 (en) * 1987-06-22 1991-02-14 Sony Corporation Method and apparatus for decoding reed-solomon code

Also Published As

Publication number Publication date
DE3852423T2 (en) 1995-08-10
AU1567188A (en) 1988-11-10
AU602401B2 (en) 1990-10-11
EP0290349A2 (en) 1988-11-09
WO1988009010A1 (en) 1988-11-17
EP0290349A3 (en) 1991-04-24
DE3852423D1 (en) 1995-01-26
KR930008683B1 (en) 1993-09-11
KR880014463A (en) 1988-12-23
US4856003A (en) 1989-08-08
JPH02500318A (en) 1990-02-01
EP0290349B1 (en) 1994-12-14

Similar Documents

Publication Publication Date Title
CA1312953C (en) Reed solomon error correction code encoder
Wolf On codes derivable from the tensor product of check matrices
Wolf Efficient maximum likelihood decoding of linear block codes using a trellis
US5465260A (en) Dual purpose cyclic redundancy check
EP0157867B1 (en) Error correction for algebraic block codes
Salomon Variable-length codes for data compression
KR20060061261A (en) Techniques for applying modulation constraints to data using periodically changing symbol mappings
Bossen b-Adjacent error correction
US6504493B1 (en) Method and apparatus for encoding/decoding data
KR20000076757A (en) Method and apparatus for updating cyclic redundancy check information for data storage
GB2269034A (en) Selectable error correction capability
US5901158A (en) Error correction encoder/decoder
WO1982002103A1 (en) Bit serial encoder
US5257270A (en) Shift-correction code rate-enhancing parity encoding/decoding
US20040199847A1 (en) Method and apparatus for improving the performance of concatenated codes
KR20060125837A (en) Encoding and decoding of reed-solomon codes using look-up tables for galois field multiplications
Skachek et al. Constant weight codes: an approach based on Knuth's balancing method
WO1998021829A2 (en) Modified reed solomon code selection and encoding system
US5574448A (en) Method and apparatus for encoding data with variable block lengths
US5889794A (en) Two-level error correction encoder
US20040117711A1 (en) Method for improving the performance of 3-dimensional concatenated product codes
Mandelbaum On forward error correction with adaptive decoding (Corresp.)
Blaum et al. Error-correcting codes with bounded running digital sum
Titchener Construction and properties of the augmented and binary-depletion codes
Achari et al. Alphabet size matching techniques based on non-binary gilbert-varshamov bounded limits for synchronization finite state markov channel

Legal Events

Date Code Title Description
MKLA Lapsed