throbber
United States Patent (19)
`Karim
`
`11
`45
`
`4,589,112
`Patent Number:
`Date of Patent: May 13, 1986
`
`54). SYSTEM FOR MULTIPLE ERROR
`DETECTION WITH SENGLE AND DOUBLE
`BET ERROR CORRECTION
`75) Inventor: Faraydon O. Karim, Vestal, N.Y.
`73 Assignee: International Business Machines
`Corporation, Armonk, N.Y.
`21) Appl. No.: 574,221
`22 Filed:
`Jan. 26, 1984
`51) Int. C. .............................................. G06F 11/10
`52 U.S. C. ......................................... 371/37; 371/39
`58) Field of Search .............................. 371/37, 39, 40
`56)
`References Cited
`U.S. PATENT DOCUMENTS
`3,622,982 11/1971 Clark, Jr. et al. ..................... 371/37
`3,685,014 8/1972 Hsiao et al. ........................... 371/37
`3,714,629 1/1973 Hong et al. ....................... 371/37 X
`4,030,067 6/1977 Howell et al. ........................ 371/37
`4,117,458 9/1978 Burghard et al...................... 371/37
`Primary Examiner-Charles E. Atkinson
`
`Attorney, Agent, or Firm-Mark Levy
`57
`ABSTRACT
`A system for detecting multiple errors that may occur
`during transfer of data and for correcting up to two of
`these errors simultaneously. The system has a compo
`nent for calculating a number of check bits associated
`with the data word. Also provided is a component for
`grouping all data bits into base groups and multiple
`groups, the sum of the number of base groups and multi
`ple groups being equal to the number of check bits. Up
`to two weights are assigned for each data bit. The sys
`tem distributes the data bits among the groups accord
`ing to the weights assigned thereto. Also provided is a
`component for generating a check bit for each of the
`groups and for padding the data word with the check
`bits to form an appended data word. A generator cre
`ates a predetermined number of syndrome bits, the num
`ber being the number of check bits. Finally, a decoder is
`provided for decoding the syndrome bits to identify the
`erroneous bits in the data word.
`
`5 Claims, 3 Drawing Figures
`
`N-BET DATA woRD
`
`SE TABLE TO
`m-Loc (N-b+1)
`COLUMNS
`
`EIGHTS Ol
`ASSIS
`TO REANINGBITS
`
`ARRANGE STS IN
`TABLEACCORDING
`TowcHS Qi
`
`ARRANGE STSN
`TABLE 8
`
`38
`
`40
`
`42
`
`CACULATE NO.
`OF SNORDEBITS
`
`44
`
`GENERATE CHECK -4s
`TS
`
`GENERATE
`SRDE BITS
`
`DECODESEROE-50
`BITS ODENTFY
`ERRORS
`
`
`
`CORRECTERRORS
`
`IPR2018-01474
`Apple Inc. EX1009 Page 1
`
`

`

`U.S. Patent May 13, 1986
`
`Sheet 1 of 3
`
`4,589,112
`
`DATA
`
`
`
`
`
`
`
`
`
`
`
`
`
`10
`
`S. B. GEN
`d S.B.
`DECODER
`
`
`
`6
`
`ND CATOR
`--------- -
`NO ERROR
`SINGLE ERROR
`DOUBLE ERROR
`MULTIPLE ERROR
`
`18
`
`
`
`20
`CORRECTION
`DEVICE
`
`CORRECTED
`DATA
`
`FIG. 1
`
`IPR2018-01474
`Apple Inc. EX1009 Page 2
`
`

`

`U.S. Patent May 13,1986
`
`Sheet 2 of3
`
`4,589,112
`
`N- BIT DATA woRDF30
`
`ARRANGE FIRST b|24
`BITS IN TABLE 8
`
`SET TABLE B TO
`b= LOG) N COLUMNS
`
`L-32
`
`SET TABLE M T0
`m*L0G) (N-b+1)
`COLUMNS
`
`ASSIGN WEIGHTS Qi
`TO REMAINING BITS
`
`ARRANGE BITS IN
`TABLE M ACCORDING
`TQ WEIGHTS Qi
`
`Oo
`
`[9
`
`cM ao
`
`> a
`
`
`
`- ARRANGE BITS IN|go:
`TABLE 8
`
`|
`
`.
`
`CALCULATE NO.
`OF SYNDROME BITS
`
`44
`
`GENERATE CHECK
`BITS
`
`GENERATE
`SYNDROME BITS
`
`:
`
`[-4¢
`
`48
`
`DECODE SYNDROME|_5,
`BITS TO IDENTIFY
`ERRORS
`
`CORRECT ERRORS
`
`}-52
`
`FIG. 2
`
`IPR2018-01474 -
`Apple Inc. EX1009 Page 3
`
`IPR2018-01474
`Apple Inc. EX1009 Page 3
`
`

`

`U.S. Patent May 13, 1986
`
`Sheet 3 of 3
`
`4,589,112
`
`-
`
`ARRANGE m BITS WITH
`CORRESPONDING WEIGHTS - 60
`Dm, Dm2, --, Dmm
`
`K= O
`
`62
`
`ASSGN NEW WEIGHTS
`W , W2, ---, Wm.
`
`66
`
`S = K
`
`68
`
`
`
`PLACE THIS PAR IN
`CORRESPONDING ROW WITH
`SAME VALUE
`
`
`
`YES
`
`NO
`
`YES
`END
`
`FIG. 3
`
`IPR2018-01474
`Apple Inc. EX1009 Page 4
`
`

`

`1.
`
`SYSTEM FOR MULTIPLE ERROR DETECTION
`WITH SNGLE AND DOUBLE BETERROR
`CORRECTION
`
`4,589,112
`2
`occurred in a given row and column of the matrix.
`While these geometric codes were an improvement
`over parity check bits perse, they still could not be used
`to detect errors that were even in number and symmet
`rical in two dimensions.
`After parity check codes and geometric codes were
`devised, a code was invented by Hamming, after whom
`it is named. The Hamming code is a system of multiple
`parity checks that encodes data words in a logical man
`ner so that single errors can be not only detected but
`also identified for correction. A transmitted data word
`used in the Hamming code consists of the original data
`word and parity check digits appended thereto. Each of
`the required parity checks is performed upon specific
`bit positions of the transmitted word. The system ena
`bles the isolation of an erroneous digit, whether it is in
`one of the original data word bits or in one of the added
`parity check bits.
`If all the parity check operations are performed suc
`cessfully, the data word is assumed to be error free. If
`one or more of the check operations is unsuccessful,
`however, the single bit in error is uniquely determined
`by decoding so-called syndrome bits, which are derived
`from the parity check bits. It should be noted once again
`that only single bit errors are detected and corrected by
`use of the conventional Hamming code. Double bit
`errors, although detectable by the Hamming code, are
`not correctable.
`The Hamming code is only one of a number of codes,
`generically called error correcting codes (ECC's).
`Codes are usually described in mathematics as closed
`sets of values that comprise all the allowed number
`sequences in the code. In data communications, trans
`mitted numbers are essentially random data patterns
`which are not related to any predetermined code set.
`The sequence of data, then, is forced into compliance
`with the code set by adding to it at the transmitter, as
`hereinabove mentioned. A scheme has heretofore been
`developed to determine what precise extra string to
`append to the original data stream to make the concate
`nation of transmitted data a valid code. There is a con
`sistent way of extracting the original data from the code
`value at the receiver and to deliver the actual data to the
`location where it is ultimately used. For the code
`scheme to be effective, it must contain allowed values
`sufficiently different from one another so that expected
`errors do not alter an allowed value such that it be
`comes a different allowed value of the code.
`A cyclic redundancy code (CRC) consists of strings
`of binary data evenly divisible by a generator polyno
`mial, which is a selected number that results in a code
`set of values different enough from one another to
`achieve a low probability of an undetected error. To
`determine what to append to the string of original data,
`the original string is divided as it is being transmitted.
`When the last data bit is passed, the remainder from the
`division is the required string that is added since the
`string including the remainder is evenly divisible by the
`generator polynomial. Because the generator polyno
`mial is of a known length, the remainder added to the
`original string is also offixed length.
`At the receiver, the incoming string is divided by the
`generator polynomial. If the incoming string does not
`divide evenly, an error is assumed to have occurred. If
`the incoming string is divided by the generator polyno
`mial evenly, the data delivered to the ultimate destina
`
`BACKGROUND OF THE INVENTION
`1. Field of the Invention
`The present invention relates to a system for detect
`ing and correcting errors in data transfer and, more
`particularly, to a system for detecting single or multiple
`10
`bit errors and for correcting single or double bit errors.
`2. Description of the Prior Art
`In any digital system where data is transmitted, one
`or more of the data bits in each data word or message
`may be received in error. This has been a problem from
`15
`the time data processing systems were first invented.
`As more sophisticated data processing operations are
`performed, involving more complex equipment, there is
`a greater need for systems to detect and correct multiple
`errors in data transfers. For example, operations such as
`20
`merging of files, sorting of data within files, numerical/-
`statistical analyses, complex data handling procedures
`and word processing operations require increased reli
`ability in data transfer. In the field of telecommunica
`tions and telemetry, error rates tend to increase when
`25
`data is transmitted over analog lines at high baud rates.
`If data errors occur and are undetected, valuable infor
`mation and system operation itself may be affected.
`Thus, error detecting and correcting features are not
`only advantageous, they are required to improve system
`30
`integrity.
`In response to the problem of error generation during
`data transfers, systems have been developed to detect
`such errors. One of the earliest methods for detecting
`errors was the parity check code. A binary code word
`35
`has odd parity if an odd number of its digits are 1's. For
`example, the number 1011 has three 1 digits and there
`fore has odd parity. Similarly, the binary code word
`1100 has an even number of 1 digits and therefore has
`even parity.
`A single parity check code is characterized by an
`additional check bit that is added to each word to gener
`ate either odd or even parity. An error in a single digit
`or bit in a data word would be discernible since the
`parity check bit associated with that data word would
`45
`then be reversed from what is expected. Typically, a
`parity generator adds the parity check bit to each word
`before transmission. This technique is called padding
`the data word. At the receiver, the digits in the word
`are tested and if the parity is incorrect, one of the bits in
`50
`the data word is considered to be in error. When an
`error is detected at a receiver, a request for a repeat
`transmission can be given so that the error can be cor
`rected. It should be noted that only errors in an odd
`number of digits can be detected with a single parity
`55
`check, since an even number of errors results in the
`parity expected for a correct transmission. Moreover, it
`should be noted that the specific bit in error cannot be
`identified by the parity check procedure as hereinabove
`described.
`A more sophisticated error detection system was
`later devised. Data words of a fixed length of bits were
`grouped into blocks of a fixed number of data words
`each. Parity checks were then performed between dif
`ferent data words as well as for each individual data
`65
`word. The block parity code detected many patterns of
`errors and could be used not only for error detection,
`but also for error correction when an isolated error
`
`IPR2018-01474
`Apple Inc. EX1009 Page 5
`
`

`

`4,589,112
`
`3
`tion is the incoming data with the fixed length remain-
`der field removed.
`A longitudinal redundancy code (LRC)is a special
`case of CRC wherethe particular generator polynomial
`chosen results in the same CRC code as would be ob-
`tained by performing an EXCLUSIVE ORoperation
`once for every bit in the data word. If the data stream
`were represented as a succession of multi-bit words, for
`example, the LRC code added to the end of the stream
`would equal the first word EXCLUSIVE ORed with
`the second, EXCLUSIVE ORedwith the third, and so
`on. Whenthe check is madeat the receiver, the result is
`zero if no errors occurred. This is simply because the
`EXCLUSIVEORofany value with itself is zero. A
`multiple memory error correction technique is shown in
`J. Datres, et al, “Multiple Memory Error Correction”,
`IBM Technical Disclosure Bulletin, Vol. 24, No. 6,
`November 1981. This system first detects an error and
`then stores the erroneous double word back in memory
`in its complemented form. The double word is then
`fetched from memory again. The newly fetched double
`word is then complemented and the ECC check syn-
`dromeis examined. Finally, the recomplemented data is
`then stored back into memory.
`U.S. Pat. No. 4,163,147, issued to Scheuneman,et al
`also discloses a double bit error correction system using
`double bit complementing.
`Both of the references hereinabove cited have disad-
`vantages. One disadvantage is that memory time, nor-
`mally slower than CPUtime, is required for these com-
`plementing and storage/restorage operations. Another
`disadvantage for both of the above-mentioned systems
`is that the error correction technique is reliable only
`when twoerrors occur, one being a so-called hard er-
`ror, induced by media defects, mechanical nonlineari-
`ties and the like, and the other being a soft error, in-
`duced by random noise, correlated noise and the like.
`Thatis, these systemsarereliable if, and only if, one of
`the twobits is erroneous due to memory failure. If both
`data bits detected are in error due to hard causesorif
`both errors are due to soft causes, these detection/cor-
`rection systemsfail. Other errors not related to memory
`devices can occur during the transfer of data over elec-
`trical lines. Thus, another disadvantage of the above-
`mentioned references is that during the course oftrans-
`ferring data and the complemented form of the data
`back and forth to memory, more errors may be gener-
`ated.
`U.S. Pat. No. 4,397,022, issued to Weng, et al dis-
`closes a weighted erasure codec for a Golay code. This
`system uses a pair of read only memories (ROM’s)
`which are used to store the most likely 12-bit error
`patterns corresponding to each syndrome. This system
`is inherently expensive due to the very large number of
`patterns that may occur, requiring correspondingly
`great memory capacity for look-up tables.
`U.S. Pat. No. 4,330,860, issued to Wada, et al dis-
`closes an error correction scheme requiring two types
`of check codes, P and Q. These two check codes result
`in the accumulation of a great numberof checkbits that
`must be stored and processed in the course of data oper-
`ations. The large numberoferror correction checkbits,
`requiring relatively large memorysize, forces the sys-
`tem with which it is used to become morecostly as
`larger data words are handled.
`It would be advantageous for a system not only to
`detect single and multiple errors during data transfer,
`but also to correct single and double bit errors.
`
`-— 0
`
`20
`
`25
`
`35
`
`40
`
`45
`
`50
`
`35
`
`60
`
`65
`
`4
`It would also be advantageousfor an error correcting
`system to minimize the amount of time required for
`memory operations.
`It would also be advantageous to detect and correct
`one or two errors in a data message that may have
`occurred due to hardware malfunction alone, extrane-
`ous causes other than hardware malfunction, or a com-
`bination of both hard and soft causes.
`It would also be advantageous to minimize data trans-
`fer operations during error detection and/or correction
`in order to reduce the probability of extraneous data
`errors occurring.
`It would also be advantageous to minimize the num-
`ber and size of error patterns required as look-up tables
`during the course of error detection/correction opera-
`tions, thus reducing memorycapacity required therefor.
`Finally, it would be advantageous to use an error
`correction system requiring a minimum number of
`checkbits in order to reduce memorycapacity, process-
`ing time and probability of further error during data
`manipulation.
`
`SUMMARYOF THE INVENTION
`
`In accordance with the present invention, there is
`provided a system for detecting multiple errors that
`may occur during transfer of data and for correcting up
`to two of these errors simultaneously. The system has a
`componentfor calculating a number of checkbits asso-_
`ciated with the data word. Also provided is a compo-
`nent for grouping all data bits into base groups and
`multiple groups, the sum of the number of base groups
`and multiple groups being equal to the number of check
`bits. Up to two weights are assigned for each data bit.
`The system distributes the data bits among the groups
`according to the weights assigned thereto. Also pro-
`vided isa componentfor generating a checkbit for each
`of the groups and for padding the data word with check
`bits to form an appended data word. A generatorcre-
`ates a predetermined numberof syndromebits, the num-
`ber being the numberof checkbits. Finally, a decoderis
`provided for decoding the syndromebits to identify the
`erroneousbits in the data word.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`A complete understanding of the present invention
`may be obtained by reference to the accompanying
`drawings, when taken in conjunction with the detailed
`description thereof and in which:
`FIG.1 is a schematic diagram of the system in accor-
`dance with the present invention;
`FIG. 2 is a flow chart representing a preferred
`method of detecting and correcting multi-bit errors for
`use in the instant system; and
`FIG.3 is a flow chart representing a method of gen-
`erating a base grouptable.
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENT
`
`It should be understood that any readily available
`programmable computer, properly programmed, may
`form the structure on which the present invention can
`operate. The nature of this invention, however, allows
`any one of a plurality of computers produced by any
`one of a number of manufacturers to be used with this
`invention.
`Referring now to FIG. 1, there is shown a system
`memory device 10, which receives and stores a data
`stream consisting of separate data words or messages.
`
`IPR2018-01474
`Apple Inc. EX1009 Page 6
`
`IPR2018-01474
`Apple Inc. EX1009 Page 6
`
`

`

`For a 15-bit data word, for example, the number of
`columns m is:
`
`m= |Log2 (15-4+1) = Log2 12 = 3.584=4
`A check bit is generated from each group of bits.
`Thus, the length of the code (i.e., the total number of
`check bits required for a data word) is the sum of the
`base bits b and the multiple layer bits m. For a 15-bit
`data word, the total number of check bits is therefore:
`b --In
`
`4-4-8
`
`Weights Qi, each consisting of m bits, are assigned to
`the multiple layer bits, block 38. These bits are arranged
`in Table M according to the weights Qi assigned
`thereto, block 40.
`
`4,589,112
`5
`6
`Each data word has a number of individual data bits,
`where D represents a data bit and the subscript indicates
`depending on the data processing system with which
`the ordinal number thereof. Each column of bits is
`the present invention is intended to operate. Each bit is
`called a base group.
`set to a value of 0 or 1. The data stream signal is also fed
`The bits of the data word that remain after the base
`into a check bit generator 12 that generates a number of 5
`bits b are subtracted are called multiple layer bits. These
`check bits which can be predetermined, as hereinbelow
`multiple layer bits are distributed among base groups
`described, depending upon the length of the data words.
`and multiple layer groups as hereinbelow described.
`A multiple layer table, Table M is generated, block
`These check bits are transferred from the check bit
`generator 12 to memory 10.
`36, having a number of columns which is calculated by
`the equation:
`Once the data words and the check bits are stored in
`10
`memory 10, they are accessed and retrieved from mem
`ory 10 by a syndrome bit generator 14. The same data
`stream signal transferred from memory 10 to the syn
`drome bit generator 14 is also applied to a correction
`15
`device hereinafter described.
`Connected to the syndrome bit generator 14 is a de
`coder 16. The decoder 16 receives syndrome bits from
`the syndrome bit generator 14 and decodes this infor
`mation, generating a signal that represents a particular
`20
`type of error. The signal generated by the decoder 16
`indicates which of the bits in the data word are in error.
`The decoder 16 is adapted to provide a signal to identify
`whether an error occurred, whether the error was a
`single bit error, a double bit error or a multiple bit error.
`25
`This signal is applied to a suitable indicator 18, such as
`a display, indicator LED's, a printout device or the like.
`Once the decoder 16 has identified the errors, if any,
`it sends a signal to a correction device 20. The correc
`tion device 20 also accepts data words directly from
`30
`memory 10. Thus, the correction device 20 receives
`both the data word and the syndrome bits which have
`been decoded by the decoder 16. The single bit or dou
`ble bit errors are corrected, as appropriate.
`Referring now also to FIG. 2, there is shown a flow
`35
`chart of the operations that occur during a data transfer
`operation. The first data word consists of N bits, block
`30. The minimum number of check bits required to
`detect and identify any single bit error or double bit
`error in an N-bit data word must be capable of repre
`senting the following number of possibilities:
`
`TABLE M
`data Bits
`Db--1
`Db--2
`Db-i-3
`Db--4
`Db-5
`Db-i-6
`
`Qi
`0001
`0010
`0.011
`0100
`01.01
`010
`
`N
`
`2.
`N + 2 x
`45
`A base table, Table B, is generated, block 32. The
`number of columns in Table B is equal to:
`b= Log2 N
`
`50
`The symbols are used in equations herein to denote a
`quantity raised to the next highest integer.
`For example, for a data word of 15 bits (D15----
`D2 D1), the number of columns in Table B is calculated
`as follows:
`
`55
`
`That is, a 15-bit data word requires four columns in
`Table B.
`The first b bits of the data word are arranged in se
`quence in Table B according to the distribution shown
`below, block 34:
`
`Bb
`Db
`
`TABLE B
`B4
`B3
`D4
`D3
`
`B2
`D2
`
`B1
`D1
`
`65
`
`The weights Qi have sequential binary values from 0
`through (N-b), one weight for each multiple layer bit.
`The distribution of the multiple layer bits on the base
`groups is accomplished by arranging these multiple
`layer bits with their weights Qi according to the follow
`ing distribution, block 40.
`
`(- - - )
`(Db--2Db-i-3) (- - - )
`0---01 F Db-i-1
`0--- 10 = Db--2 (Db+1Db+3) (---) (---)
`0- - - 11 = Pb--3
`(Pb--1Db+2) (---) (- - -)
`
`-------DN ---- (--- (--)
`
`Multiple layer bit distribution Table M shown herein
`above is generated by EXCLUSIVE ORing each bit
`Db with each other bit Db-1, Db-2, ..., DN sequen
`tially starting from the first entry in the table. Each
`EXCLUSIVE ORed pair is then placed in the row
`corresponding to the assigned weight with the same
`value, if it exists.
`For example, bit Db-1, whose binary value is 0 --
`-01, EXCLUSIVE ORed with bit D-2, whose binary
`value is 0 - - - 10, results in:
`
`IPR2018-01474
`Apple Inc. EX1009 Page 7
`
`

`

`7
`
`0---016D0 - - - 10=0--- 11
`
`Note that the value of this EXCLUSIVE OR operation
`is equal to the weight assigned to Db-3. Thus, the pair 5
`Db-1 Dh-2 is placed in the first column of row Dh3.
`This procedure continues until all pairs of bits are
`EXCLUSIVE ORed with one another and the results
`indicate their appropriate placement in Table M.
`This distribution can be further explained in greater 10
`detail with reference to FIG. 3, which is a flow chart of
`the method by which the base group table, Table B, is
`generated.
`As hereinabove described, the multiple layer bits are
`arranged in Table B with their corresponding weights, 15
`block 60. A counter K is initialized to 0, block 62. The
`counter K is then incremented, block 64.
`A new weight Wi is then assigned to each multiple
`layer bit, block 66. Each new weight Wi has b digits.
`The weight Wi may be any binary number from 0 -- 20
`- 00 to 1 - - - 11 and is empirically and iteratively
`derived as herein described. The only restriction on
`new weights Wiis that, for a given Dith row in multiple
`layer bit distribution Table M shown hereinabove (the
`new weight having the form WoW ---W), none of 25
`the pairs of bits placed in the Dith row, when EXCLU
`SIVE ORed with their new weights Wii, can equal each
`other. Similarly, the result of the EXCLUSIVE OR
`operation cannot equal the new weight Wi with any one
`bit inverted. That is, the result of the EXCLUSIVE OR 30
`operation may not equal WoW1. --W, or WoW -
`-- Wh, and so on to WOW --- Wh.
`The above-mentioned new weight generation can
`also be described in flow chart form with reference to
`35
`FIG. 3.
`Another variable S is set equal to the value of K,
`block 68. The variable S is then incremented, block 70.
`The Kth weight is then EXCLUSIVE ORed with the
`Sth weight, block 72. The data bit and newly assigned 40
`weight pair is then placed in the corresponding row
`with the same value in Table B, block 74. The system
`then tests for whether the result of EXCLUSIVE
`ORing the new weight of the pair is equal to the weight
`of variable bik; or whether the result of EXCLUSIVE 45
`ORing any other pair's weight is equal to the weight of
`bK, block 76. If the new pair's EXCLUSIVE ORed
`weight or any other pair's EXCLUSIVE ORed weight
`is equal to the bk weight, yet another set of new weights
`is then assigned and tested empirically, block 66.
`50
`If, however, the new EXCLUSIVE ORed weight or
`any other EXCLUSIVE ORed weight does not equal
`the bk weight, the system then tests whether all data bits
`have been processed on the current row (for the current
`value of K), block 78. If all data bits have not yet been 55
`processed, the variable S is again incremented, block 70,
`and processing continues from that point.
`If, however, all data bits have been processed for the
`current value of K, the system then tests whether all
`data bits have been processed for all values of K (i.e., all 60
`of the rows), block 80. That is, have all data bits in the
`matrix been processed?
`If certain data bits have not yet been processed, the
`system returns to block 64, incrementing the value of
`variable K and continuing processing. If, however, all 65
`data bits have been processed, the system terminates
`processing, block 82, indicating that all of the new
`weights are valid.
`
`4,589, 112
`8
`It should be noted, in the ongoing example of a 15-bit
`data word, that the number of multiple layer bits is
`equal to:
`
`In this example, each of the 11 bits is assigned the
`following bit locations.
`TABLE M
`
`D5=0001
`D6=0.010
`D=0.011
`D8= 0100
`D9s:0101
`D10=0110
`D1 =0111
`D12=1000
`D13 = 100
`D14=1010
`D15=1011
`Weights are assigned to the multiple layer bits to be
`distributed on the multiple layer groups according to
`the following arrangement.
`
`Multiple Layer Groups
`M3
`M2
`M1
`ds
`D6
`D5
`
`M4
`D12
`
`Base Groups
`B3
`B2
`B4
`D4 D3
`D2
`
`B1
`D1
`
`D15
`
`D11
`
`D1
`D14
`D15
`
`D
`D13
`D5
`
`The multiple layer bits are then distributed onto the
`base groups as shown below.
`TABLE 1.
`0001 D5 (D6D) (D8Ds) (DoD) (D12D13) (D4D15)
`0010 D6 (D5D) (Dg)10) (D9D11) (D12D 14) (D3D15)
`001 D7 (D5D6) (Dgd1) (Dgd10) (D12D15) (D13D 14)
`01.00 D8 (D5D9)
`(D6D10) (D7D11)
`01.01 Dg (DSD8)
`(D6D11) (D7D10)
`O110 D10 (D5D11) (D6D8)
`(D7D9)
`011
`D11 (D5D10) (D6Ds) (DD8)
`1000 D12 (DSD13) (D6D4) (DD15)
`1001 D13 (D5D12) (D6D15) (DD4)
`1010 D4 (D5D15) (D6D12) (DD13)
`011 D15 (D5D 14) (D6D3) (DD17)
`
`New weights are assigned to the bits Ds through D15
`as shown below.
`
`Bit
`D5
`D6
`D7
`Dg
`D9
`D10
`D
`D2
`D13
`D4
`D5
`
`New Weight
`0000
`1000
`110
`O011
`1100
`000
`1000
`010
`010
`O001
`010
`
`These new weights are then checked for validity by
`EXCLUSIVE ORing each of the bits with its pair, as
`follows.
`
`IPR2018-01474
`Apple Inc. EX1009 Page 8
`
`

`

`4,589,112
`
`9
`D569Dg=000069001 = 0011
`
`D669D=1000691000=0000
`
`D7GD10=1110690001 =1111
`
`Note that none of the EXCLUSIVE ORed results
`equal one another in the same row. Nor does any EX
`CLUSIVE OR result equal the multilayer bit in the
`10
`same row. None of the pairs for D9 in the Table equals
`the D9 original weight (01.01) or the D9 original weight
`with any one bit inverted (i.e., 0100, 0111,0001 or 1101).
`In the same way, all of the rows in Table 1 can be veri
`fied.
`Referring now again to FIG. 2, once the validity of 15
`the new weights is proven for all bits in all rows, the bits
`are distributed on base groups according to their new
`weights in the same manner as was performed on multi
`ple layer groups, block 42.
`20
`In the ongoing 15-bit data word example, the above
`mentioned distribution appears as follows:
`
`M4 M3
`D12 D8
`
`D4 D10
`D15 D11
`
`M2
`D6
`
`D10
`D11
`D14
`D15
`
`M1
`D5
`
`B4
`D4
`
`D7
`D9
`D9
`D
`D13 D
`D15
`
`B3
`D3
`
`Dg
`D12
`d13
`D15
`
`B2
`D2
`
`B1
`D1
`
`D8 D10
`D12 D13
`D15 D14
`
`25
`
`30
`
`In order to decode the syndrome bits, block 50, an
`error code list must be generated. The preferred
`method of generating such an error code list is again,
`empirically, to exercise arbitrary single code errors and
`record the resultant syndrome codes. Then double bit
`error combinations should be exercised for the same
`purpose.
`In the ongoing 15-bit data word example, a partial
`error code list is shown below.
`
`Type of Error
`No Error
`D
`D1 and D2
`D1 and D3
`D1 and D4
`D1 and D5
`D and D6
`D and D7
`D1 and D8
`D1 and D9
`
`So S. S2 S3 S4 S5 S6 S7
`0 0 0 0 0 0 0 0
`0 0
`0 0 0 0 0
`1
`0 0 0 0 0 0 1
`1
`0 0 O 0 0 1
`0 1
`0 0 0 0
`1
`0 0
`1
`0 0 0 1
`0 0
`0
`1
`0 0
`1
`0
`0
`0 0 1
`0 0
`1
`1
`1
`1
`1
`1
`0 1
`0 0 0
`0
`1
`0
`0 1
`0
`1
`1
`1
`0
`1
`
`The number of syndrome bits can be generated, block
`44, as the result of EXCLUSIVE ORing the check bits
`with the corresponding group of data bits for each data
`word.
`35
`Check bits are generated, block 46, by EXCLUSIVE
`ORing all of the data bits of each group (base group or
`multiple layer group), much as odd parity is normally
`generated, in the manner shown below.
`
`45
`
`50
`
`The check bits shown above are appended to and
`55
`stored with the data word for furture transmission.
`Syndrome bits are then generated, block 48, as here
`inabove mentioned, by EXCLUSIVE ORing the previ
`ously generated check bits with their corresponding
`data bits. For the ongoing 15-bit data word example, the
`syndrome bits are derived as shown below.
`
`65
`
`Once the syndrome bit code list or pattern has been
`arranged, errors can be corrected, block 52.
`Referring again also to FIG. 1, the indicator 18 is
`adapted to indicate any one of the following four condi
`tions:
`(a) No error.
`(b) Single error.
`(c) Double error.
`(d) Multiple error.
`A syndrome code of all 0's indicates no error; one or
`more 1's in the syndrome code indicates that at least one
`error has occurred during data transmission.
`The list of error codes that identifies single bit errors
`can be used to generate a single indicative of that condi
`tion. Similarly, the list of error codes that identifies
`double bit errors can be used to generate a single indica
`tive of double bit errors. Finally, the list of all remaining
`error codes, excluding the code of all 0's, can be used to
`generate a signal indicative of multiple errors.
`Correction of single bit or double bit errors in a data
`word is accomplished merely by EXCLUSIVE ORing
`the list of single bit or double bit error codes with the
`corresponding data bits.
`Since other modifications and changes varied to fit
`particular operating requirements and environments
`will be apparent to those skilled in the art, the invention
`is not considered limited to the example chosen for
`purposes of disclosure, and covers all changes and mod
`ifications which do not constitute departures from the
`true spirit and scope of this invention.
`What is claimed is:
`1. A method for detecting multiple errors that occur
`during transfer of a data message having a plurality of
`
`IPR2018-01474
`Apple Inc. EX1009 Page 9
`
`

`

`4,589, 112
`11
`12
`(h) decoding said syndrome bits to identify the erro
`data bits and for correcting up to two of said errors, the
`steps comprising:
`neous bits in said data message.
`2. The method in accordance with claim 1 wherein
`(a) calculating a number of check bits associated with
`the number of bits bin one of said base groups is derived
`said data message;
`from the equation:
`(b) grouping all data bits in a data message into base
`groups and multiple layer groups, the sum of the
`b= Log2 (N)
`number of base groups and the number of multiple
`ps where N is the number of bits in said data message.
`layer groups of data bits being equal to said number
`3. The method in accordance with claim 2 wherein
`the number of bits m in one of said multiple layer groups
`of check bits;
`(c) assigning up to two weights for each data bit;
`is derived from the equation:
`(d) distributing data bits among said groups accord
`m = Log2 (N-b--).
`ing to weights assigned thereto;
`(e) generating a check bit for each of said groups the
`total number of generated check bits being equal to 15
`the number calculated in step (a);
`(f) padding said data message with said total number
`of generated check bits to form an appended data
`message;
`20
`(g) generating a predetermined number of syndrome
`bits, said predetermined number being equal to said
`number of check bits; and
`
`4. The method in accordance with claim 1 wherein
`said check bit is generated by performing an EXCLU
`SIVE OR operation on all of the data bits o

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket