US6275964B1 - Software enhanced error correction mechanism in a data communication system - Google Patents

Software enhanced error correction mechanism in a data communication system Download PDF

Info

Publication number
US6275964B1
US6275964B1 US09/272,994 US27299499A US6275964B1 US 6275964 B1 US6275964 B1 US 6275964B1 US 27299499 A US27299499 A US 27299499A US 6275964 B1 US6275964 B1 US 6275964B1
Authority
US
United States
Prior art keywords
bytes
hardware
errors
software
decoder
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
US09/272,994
Inventor
Kenneth Nagin
Dafna Sheinwald
Julien Satran
Efri Zeidner
Benny Rochberger
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ROCHBERGER, BENNY, SHEINWALD, DAFNA, SATRAN, JULIAN, ZEIDNER, EFRI, NAGIN, KENNETH
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of US6275964B1 publication Critical patent/US6275964B1/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • 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/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics

Definitions

  • the invention relates to the detection and correction of errors occurring in data codewords which are transmitted over a communication channel and in particular a mechanism of software enhanced error correction in a data communication system.
  • Hardware components for error detection/correction are inexpensive and widely used. Different components offer different error detection and correction capabilities. Some of these components work on bits, and they can detect/correct up to a fixed number of bit errors that occur to the codeword while on transmission, and some work on bytes, and they are more suitable for channels which tend to corrupt the transmission in bursts.
  • the component computes, very fast, the redundancy bytes of the codeword, and on the receiver side it checks, very fast, whether the word received is a codeword. If so, the component truncates the redundancy bytes and forwards the information bytes on the application.
  • the application sees the channel and the hardware as one fast and reliable (to some extent) unit which transmits k-byte long segments of information.
  • the commonly used practice is to make that protection within the k-byte long segment: view them as blocks crossing the channel, use k′ ⁇ k bytes for information, and compute, in software, the k ⁇ k′ redundancy bytes.
  • the total number of redundancy bytes used usually exceeds what can be achieved by a code designed to work with blocks of length n, out of which only k′ are information bytes.
  • the main object of the invention is to provide an error detecting and encoding mechanism which increases the system perceived data reliability without raising hardware costs.
  • Another object of the invention is to provide an error detecting and correcting mechanism wherein the correcting capability is extended by software means only.
  • the invention relates to a data communication system for transmitting data codewords of n bytes length over a communication channel from a transmitter to a receiver, the transmitter comprising a hardware encoder capable of receiving as input an information sequence of n ⁇ 2t bytes and emitting in output a codeword of n bytes including n ⁇ 2t information bytes and 2t redundant bytes, and the receiver comprising a hardware decoder capable of detecting up to 2t byte-errors and correcting up to t byte errors.
  • the transmitter further comprises a software encoder transforming, in combination with the hardware encoder, an information sequence of n ⁇ 2s bytes with t ⁇ s ⁇ 2t into a modified sequence, the transmitter emitting encoded codewords including n ⁇ 2s information bytes and 2s redundant bytes, and the receiver further comprises a software decoder for correcting, in combination with the hardware decoder, up to s byte-errors when the hardware decoder has detected errors in the encoded codeword received from the communication channel.
  • the hardware decoder included in the receiver comprises a switch enabling an encoded codeword to be transferred to the software decoder for being corrected if there are less than s errors after the hardware decoder has detected errors in the encoded codeword.
  • the new mechanism according to the invention allows easy adaptation to the level of noise in the channel.
  • the total number of redundancy bytes used, by the hardware and by the software extension, is the minimal possible by any error correcting code having the extended capabilities.
  • the suggested mechanism benefits from the speed of hardware, and calls for software decoding only in cases that the hardware decoder detects errors.
  • FIG. 1 represents a block-diagram of a data communication system incorporating a mechanism of software enhanced error correction according to the invention.
  • FIG. 2 is a schematic time diagram representing the sequential steps of the encoding algorithm according to the invention.
  • FIG. 3 is a schematic time diagram representing the sequential steps of the decoding algorithm according to the invention.
  • RS Reed Solomon
  • Hardware encoder 12 is a classical encoder which normally transforms an information sequence of 255 ⁇ 2t bytes into a codeword of 255 bytes wherein the 2t supplementary bytes are redundant bytes enabling 2t-byte error detecting and t-byte error correcting.
  • Software encoder 14 which feeds into hardware encoder is used to transform, in combination with hardware encoder 12 , 255 ⁇ 2s information bytes with t ⁇ s ⁇ 2t, into a sequence of 255 bytes wherein 2s redundant bytes enable 2t-byte detecting and s-byte correcting.
  • the sequences I of information bytes are first fed into switching unit 16 which, under control received from a processor on line 18 , enables information bytes to be input either into software encoder 14 or into hardware encoder 12 , or simultaneously to be input into hardware encoder 12 and to bypass said hardware encoder as explained hereafter.
  • the encoded sequences F of 255 bytes are transmitted over communication channel 20 by the intermediary of transmitting interface unit 22 .
  • receiver 24 comprises receiving interface unit 26 which provides the encoded information bytes to hardware decoder 28 . If there is no error detected, switching unit 30 controlled by hardware decoder 28 on line 32 enables the 255 ⁇ 2s information bytes out of the 255 byte long encoded sequence F to be transmitted directly to the application. If errors have been detected, hardware decoder 28 controls switching unit 30 for it to transfer the bytes to software decoder 34 for correcting such errors if it is possible. Then, the corrected information bytes O are transmitted directly to the application by software decoder 34 .
  • hardware encoder 12 would receive an information sequence of 255 ⁇ 2t bytes
  • I i 254 ⁇ 2t , i 253 ⁇ 2t , . . . , i 1 , c 0
  • c c 254 , c 253 , . . . c 1 , c 0
  • the computation of the redundant bytes is done using a linear feedback switching circuit of 2t storage devices, wired so as to multiply its input by x 2t and divide it by g(x).
  • the degree of r(x) is less than 2t, and all the coefficients of degree less than 2t in the polynomial i(x).x 2t are 0.
  • c(x) is a multiplication of g(x), and thus a codeword in C.
  • I i 254 ⁇ 2s , i 253 ⁇ 2t , . . . , i 1 , i 0
  • the steps of the encoding process are the following:
  • a linear feedback switching circuit of 2t storage devices is wired so as to divide its input by g(x) (this device is slightly different from the one used by the transmitter's hardware encoder). If the circuit is fed by f 254 , f 253 , . . . f 0 , in this order, after the 255 feeding clock ticks, it contains the reminder r 1 (x) from the division of f(x) by g(x). The quotient polynomial is output by the circuit, but is of no use for the detecting/correcting algorithm.
  • Steps 5 and 6 are of complexity which depends on s (and therefore on t).
  • the correction of the codeword with respect to C 1 can benefit from computation it does, as it was done for the division of f(x) by g(x).
  • the hardware recognizes a code C, witch is a super set of the code, C 1 , used by the combined hardware and software decoders. Any two words of C 1 differ from one another by (the Hamming distance between them) at least 2s+1 bytes, and this is why correction of up to s byte-errors is possible. Any two words of C are of 2t+1 distance apart, and this is why the hardware can detect up to 2t (which is ⁇ s) byte-errors occurring on transmission. There are words in C ⁇ C 1 which are 2t+1 apart from words in C 1 . If the hardware decoder is allowed to do corrections, it can complete successfully.
  • the hardware decoder If, however, the hardware decoder is not tempted to correct the received erroneous word, and only announces that it has detected an error, the software decoder, which can correct any number ⁇ s of byte errors, will find the original word in C 1 , which is within distance t+1 ⁇ s from the received word.
  • the system according to the invention (1) can increase the correction capability up to twice the number of erroneous bytes that the hardware can correct, (2) uses the encoder and decoder hardware to speed up encoding and decoding, and (3) uses the minimum needed extra redundant bytes: namely, fixing the numbers 2t ⁇ s>t of byte errors, the number of redundancy bytes in the hardware code is the minimal possible for any t-error correcting code, and the total number of redundancy bytes, is the minimum possible in any s-error correcting code.
  • the CPU is efficiently utilized since the software enhanced error correction is only run when it is required, i.e. the software decoder only runs when the hardware decoder encounters an error.

Abstract

Data communication system for transmitting data codewords of n bytes length over a communication channel (20) from a transmitter (10) comprising a hardware encoder (12) capable of receiving as input an information sequence of n-2t bytes and emitting as output a codeword of n bytes including n-2t information bytes and 2t redundant bytes to a receiver (24) comprising a hardware decoder (28) capable of detecting up to 2t byte-errors and correcting up to t byte errors; the transmitter (10) further comprising a software encoder (14) transforming, in combination with the hardware encoder (12), an information sequence of n-2s bytes with t<s<=2t into a modified sequence, the transmitter (10) emitting encoded codewords including n-2s information bytes and 2s redundant bytes, and the receiver (24) further comprising a software decoder (34) for correcting up to s byte-errors when the hardware decoder (28) has detected errors in the encoded codeword received from the communication channel (20).

Description

TECHNICAL FIELD
The invention relates to the detection and correction of errors occurring in data codewords which are transmitted over a communication channel and in particular a mechanism of software enhanced error correction in a data communication system.
BACKGROUND
In a data communication system, reliability in transmission of sequences is achieved at the cost of redundancy, which decreases that rate of information transmission, and complexity, which is added to both sides—transmitter and receiver. In block codes, the sequence of information bytes is first broken up to k-byte long segments, and then each is augmented by n−k redundancy bytes, which depend on the k information bytes. The redundant bytes ensure minimum Hamming distance between the n-byte long codewords, a distance which allows error detection and correction.
Hardware components for error detection/correction (aka CRC—cyclic redundant code) are inexpensive and widely used. Different components offer different error detection and correction capabilities. Some of these components work on bits, and they can detect/correct up to a fixed number of bit errors that occur to the codeword while on transmission, and some work on bytes, and they are more suitable for channels which tend to corrupt the transmission in bursts. On the transmitter side, the component computes, very fast, the redundancy bytes of the codeword, and on the receiver side it checks, very fast, whether the word received is a codeword. If so, the component truncates the redundancy bytes and forwards the information bytes on the application. If not, either it just asks for a retransmission (in case that detection only is employed) or it tries to correct the errors, and then forwards the (corrected) information bytes on to the application. In any case, the application sees the channel and the hardware as one fast and reliable (to some extent) unit which transmits k-byte long segments of information.
When the application wishes to further protect itself against channel errors, the commonly used practice is to make that protection within the k-byte long segment: view them as blocks crossing the channel, use k′<k bytes for information, and compute, in software, the k−k′ redundancy bytes. In this practice, the total number of redundancy bytes used (by the hardware and by the software) usually exceeds what can be achieved by a code designed to work with blocks of length n, out of which only k′ are information bytes.
A commonly used hardware that detects up to 2t byte-errors and corrects up to t byte-errors is using Reed Solomon codes. These codes are over an alphabet size of 2m and use codewords of length n=2m−1 or a divisor of that number. For instance, in case of byte characters, the codewords are of length 255 bytes. For detecting up to t byte-errors, t redundant bytes must be used allowing 255-t information bytes. For correcting up to t corrupted bytes, 2t redundant bytes must be used, allowing 255−2t information bytes in each codeword. These numbers of redundant bytes are the minimum possible in any code.
Assuming that t does not suffice for the level of noise of the channel and it becomes necessary to enhance the perceived data reliability of the system by increasing the reliability of the channel such that it introduces fewer errors or by increasing the error correction capability of its detection/correction code. One solution would be to replace the whole hardware. Although hardware is not too expensive, it is rather cumbersome to stick it when the level of noise changes rather often. For instance, replacing a wireless connection in a mountainous region or even in a city with a coax cable would be very expensive. An alternative would be to upgrade the error detection and correction capabilities of the encoders and decoders. But, when the hardware encoders and decoders are used, this solution also may be too expensive, since hardware development costs are directly related to the complexity introduced by error detection and correction capability of the encoders and decoders. In addition, replacing existing hardware with enhanced hardware is also expensive and not always practical. For instance, replacing the network receiver card, e.g. modem, in thousands of home PCs with a new enhanced card is a very expensive proposal.
SUMMARY OF THE INVENTION
It is why the main object of the invention is to provide an error detecting and encoding mechanism which increases the system perceived data reliability without raising hardware costs.
Another object of the invention is to provide an error detecting and correcting mechanism wherein the correcting capability is extended by software means only.
Accordingly, the invention relates to a data communication system for transmitting data codewords of n bytes length over a communication channel from a transmitter to a receiver, the transmitter comprising a hardware encoder capable of receiving as input an information sequence of n−2t bytes and emitting in output a codeword of n bytes including n−2t information bytes and 2t redundant bytes, and the receiver comprising a hardware decoder capable of detecting up to 2t byte-errors and correcting up to t byte errors. The transmitter further comprises a software encoder transforming, in combination with the hardware encoder, an information sequence of n−2s bytes with t<s≦2t into a modified sequence, the transmitter emitting encoded codewords including n−2s information bytes and 2s redundant bytes, and the receiver further comprises a software decoder for correcting, in combination with the hardware decoder, up to s byte-errors when the hardware decoder has detected errors in the encoded codeword received from the communication channel.
An important feature of the invention is that the hardware decoder included in the receiver comprises a switch enabling an encoded codeword to be transferred to the software decoder for being corrected if there are less than s errors after the hardware decoder has detected errors in the encoded codeword.
The new mechanism according to the invention allows easy adaptation to the level of noise in the channel. The total number of redundancy bytes used, by the hardware and by the software extension, is the minimal possible by any error correcting code having the extended capabilities. The suggested mechanism benefits from the speed of hardware, and calls for software decoding only in cases that the hardware decoder detects errors.
BRIEF DESCRIPTION OF THE DRAWINGS
The objects, features and other characteristics of the invention will become more apparent from the following detailed description with reference to the accompanying drawings in which:
FIG. 1 represents a block-diagram of a data communication system incorporating a mechanism of software enhanced error correction according to the invention.
FIG. 2 is a schematic time diagram representing the sequential steps of the encoding algorithm according to the invention.
FIG. 3 is a schematic time diagram representing the sequential steps of the decoding algorithm according to the invention.
DETAILED DESCRIPTION OF THE INVENTION
According to the preferred embodiment of the invention, a Reed Solomon (RS) Code using codewords of length n=255 will be used in the following description. Note that a description of the circuits needed for encoding and decoding RS codes can be found in <<Error correcting codes>> by W. W. Peterson and E. J. Weldon in MIT Press, 1972.
The transmitter 10 contains two encoders. Hardware encoder 12 is a classical encoder which normally transforms an information sequence of 255−2t bytes into a codeword of 255 bytes wherein the 2t supplementary bytes are redundant bytes enabling 2t-byte error detecting and t-byte error correcting. Software encoder 14 which feeds into hardware encoder is used to transform, in combination with hardware encoder 12, 255−2s information bytes with t<s≦2t, into a sequence of 255 bytes wherein 2s redundant bytes enable 2t-byte detecting and s-byte correcting.
The sequences I of information bytes are first fed into switching unit 16 which, under control received from a processor on line 18, enables information bytes to be input either into software encoder 14 or into hardware encoder 12, or simultaneously to be input into hardware encoder 12 and to bypass said hardware encoder as explained hereafter. At the output of hardware encoder 12, the encoded sequences F of 255 bytes are transmitted over communication channel 20 by the intermediary of transmitting interface unit 22.
At the receiving side of communication channel 20, receiver 24 comprises receiving interface unit 26 which provides the encoded information bytes to hardware decoder 28. If there is no error detected, switching unit 30 controlled by hardware decoder 28 on line 32 enables the 255−2s information bytes out of the 255 byte long encoded sequence F to be transmitted directly to the application. If errors have been detected, hardware decoder 28 controls switching unit 30 for it to transfer the bytes to software decoder 34 for correcting such errors if it is possible. Then, the corrected information bytes O are transmitted directly to the application by software decoder 34.
Encoding Process
First of all, it must be reminded that, in the Reed Solomon (RS) 2t-byte error detecting and t-byte error correcting code C, the generator polynomial is
g(x)=(x−α)(x−α 2) . . . (x−α 2t)
with α being a primitive element in the finite field GF (256). This code is made from all the 255−byte long words (c254, c253, . . . c1, c0) such that the polynomial c ( x ) = j = 0 254 c j x i
Figure US06275964-20010814-M00001
is a multiplication of g(x) and some polynomial of degree<255−2t.
Accordingly,
g 1(x)=g(x).g′(x)=(x−α)(x−α 2) . . . (x−α 2s)
with s>t, is the generator polynomial of the RS code C1 that can correct up to s byte-errors. It must be noted that gi(x) is a multiplication of g(x).
Without the software encoder according to the invention, hardware encoder 12 would receive an information sequence of 255−2t bytes
I=i254−2t, i253−2t, . . . , i1, c0
and would emit a codeword of length 255
c=c254, c253, . . . c1, c0
where cj+2t=ij for 0≦j≦254−2t
and the last 2t bytes of c are the redundant bytes making the polynomial c(x) a multiple of g(x).
The computation of the redundant bytes is done using a linear feedback switching circuit of 2t storage devices, wired so as to multiply its input by x2t and divide it by g(x). When the circuit is fed by i254−2t, i253−2t, . . . , i0, in this order, after 255−2t feeding shifts, it contains the reminder r(x) from the division of i(x).x2t by g(x) where i ( x ) = j = 0 254 - 2 t i j x i
Figure US06275964-20010814-M00002
The degree of r(x) is less than 2t, and all the coefficients of degree less than 2t in the polynomial i(x).x2t are 0. Hence, in the polynomial c(x)=i(x).x2t+r(x) the leading 255−2t coefficients are the 255−2t of i(x), and the trailing 2t coefficients are the coefficients of r(x). Also, by its construction, and because in GF(256) subtracting is the same as addition, c(x) is a multiplication of g(x), and thus a codeword in C.
The hardware encoder alone would work as follows:
(1) for 255−2t clock ticks, i254−2t, i253−2t . . . , i0 are fed into the circuit and simultaneously also transmitted over the communication channel;
(2) the feedback of the circuit is disabled, and for 2t clock ticks the circuit's contents are shifted out and transmitted over the communication channel.
Now, with the incorporation of software encoder 14, the information sequence received at the input is:
I=i254−2s, i253−2t, . . . , i1, i0
of length 255−2s. Such a sequence will be transformed into a codeword in C1. Following the classical algorithm as described above, it is necessary to divide by g1(x) the polynomial i(x).x2s where i ( x ) = j = 0 254 - 2 s i j x i
Figure US06275964-20010814-M00003
As illustrated in the time diagram in FIG. 2, the steps of the encoding process are the following:
(1) In software, compute the quotient q2(x) (of degree≦254−2s) and the remainder r2(x) (of degree<2s−2t) of the division of i(x).x2s−2t by g′(x) (which is of degree 2s−2t). This costs 0((2s−2t)(n−2s)) software scalar operations.
(2) For 255−2s clock ticks, feed q2(x) to the hardware, and simultaneously transmit i252−2s, i253−2s, . . . , i1, i0 over the communication channel. At the end of this transmission, the hardware encoder contains r1(x) (of degree<2t), such that for some q1(x) of degree ≦254−2s, it holds that q2(x).x2t=q1(x)g(x)+r1(x).
(3) For 2t more clock ticks, shift r1(x) out of the circuit. Do not transmit it over the communication channel yet.
(4) In software, compute r(x)=r1(x).g′(x)+r2(x).x2t. This takes 0(t2) software scalar operations, and yields a polynomial of degree<2s.
(5) Then, in 2s clock ticks, transmit the polynomial computed over the communication channel.
The word transmitted ε C1 since altogether i(x).x2s=i(x).x2s−2t.x2t=q2(x)g′(x).x2t+r2(x).x2t=(q1(x)g(x)+r1(x)).g′(x)+r2(x).x2t=q1(x)g(x)g′(x)+r1(x).g′(x)+r2(x).x2t=q1(x)1(x)+r(x). The degree of r(x) is <2s, and the least significant 2s coefficients of j(x).x2s are all zero. Hence, by construction, the total of what is transmitted over the communication channel is c(x)=i(x).x2s+r(x) which is a multiplication of g1(x), and hence ε C1, and its most significant 255−2s coefficients are i254−2s, i253−2s, . . . i1, i0.
Note that the whole computation costs 255 clock ticks plus 0(2(s−t)n+t2) software operations; that is mainly, only the addition to fill the gap s−t.
Decoding Process
Without the software decoder according to the invention, hardware decoder 28 would receive a sequence of length n=255 bytes
F=f254, f253, . . . f1, f0
and would divide the corresponding polynomial f ( x ) = j = 0 254 f j x i
Figure US06275964-20010814-M00004
by g(x) and would check whether the remainder is zero. The computation of this division is done as follows.
A linear feedback switching circuit of 2t storage devices is wired so as to divide its input by g(x) (this device is slightly different from the one used by the transmitter's hardware encoder). If the circuit is fed by f254, f253, . . . f0, in this order, after the 255 feeding clock ticks, it contains the reminder r1(x) from the division of f(x) by g(x). The quotient polynomial is output by the circuit, but is of no use for the detecting/correcting algorithm.
Now if the remainder r1(x)=0, the decoder declares no errors, removes the 2t redundant bytes, f2t−1, f2t−2, . . . f1, f0, and forwards the information bytes f254, f253, . . . f2t+1, f2t, on to the application. If r1(x)≠0, the correcting process (of at most t byte errors) starts with computing the syndromes, which are the values of f(α1), f(α2), f(α2t) Because g(αj)=0 for j=1, 2, . . . , 2t, we have r1j)=f(αj) for these values of j. The computation of r1j) is many times easier than f(αj), because the degree <2t of r1(x) is much smaller than the degree 254 of f(x). Once the 2t syndromes have been determined, the decoding continues with time complexity that depends on t.
With the incorporation of software decoder 34, it is necessary to divide f(x) by g1(x). The steps illustrated by the time diagram of FIG. 3 are then the following:
(1) Feed f(x) into the hardware decoder which divides it by g(x). Keep both the quotient q1(x) and the remainder r1(x). That is: f(x)=q1(x)g(x)+r1(x), with the degree of f(x) being ≦254, the degree of g(x) is 2t, the degree of r1(x) is <2t, and the degree of q1(x) is ≦254−2t. In the classic decoding algorithm, q1(x) would be of no use, while it is useful for the invention;
(2) If r1(x)=0, declare no errors, transmit the information bytes O=f254, f253, . . . f2s+1, f2s to the application, and the decoding is complete. Otherwise, continue with error correction as follows;
(3) Using the software decoder, divide q1(x) by g′(x) (which is of degree 2s−2t), producing the quotient q2(x) of degree ≦254−2s, and the remainder r2(x) of degree <2s−2t, satisfying q1(x)=q2(x).g′(x)+r2(x). This takes 0((n−2t)(2s−2t)) scalar operations;
(4) Compute r(x)=g(x).r2(x)+r1(x). It is easy to see that the degree of r(x) is <2s, and that it satisfies f(x)=g(x).g′(x)q2(x)+r(x)=q2(x)g1(x)+r(x).
(5) Compute the 2s syndromes r(α), r(α2) . . . r(α2s);
(6) Then, the error location polynomial and the error value polynomial are computed from the syndromes, and their roots are found.
(7) Finally, the corrected information sequence O=f′254, f′253, . . . f′2s+1, f′2s is transmitted to the application.
Steps 5 and 6 are of complexity which depends on s (and therefore on t). Depending on the exact structure of the hardware decoder of C, the correction of the codeword with respect to C1 can benefit from computation it does, as it was done for the division of f(x) by g(x).
The Decoder Switch
An important feature is the presence of a switch in hardware decoder 28 which turns the decoder's correction efforts off and only lets it do detection. It is useful to explain this point in more details and the interest thereof.
As mentioned above, the hardware recognizes a code C, witch is a super set of the code, C1, used by the combined hardware and software decoders. Any two words of C1 differ from one another by (the Hamming distance between them) at least 2s+1 bytes, and this is why correction of up to s byte-errors is possible. Any two words of C are of 2t+1 distance apart, and this is why the hardware can detect up to 2t (which is ≧s) byte-errors occurring on transmission. There are words in C−C1 which are 2t+1 apart from words in C1. If the hardware decoder is allowed to do corrections, it can complete successfully. Namely, seeing codeword in C which is within distance t from the received word, it might mistakenly correct a word, yielded from a word in C1 by t+1 byte-errors (a number of errors which the combined system is supposed to correct successfully), to a closer word in C−C1, which is only t bytes away. The decoder then will declare the (mistakenly) corrected word it produces is an OK word, and thus will not invoke the software correction, and transfer on to the application an erroneous information subword. If, however, the hardware decoder is not tempted to correct the received erroneous word, and only announces that it has detected an error, the software decoder, which can correct any number ≦s of byte errors, will find the original word in C1, which is within distance t+1≦s from the received word.
The Benefits of the Invention
In summary, the system according to the invention (1) can increase the correction capability up to twice the number of erroneous bytes that the hardware can correct, (2) uses the encoder and decoder hardware to speed up encoding and decoding, and (3) uses the minimum needed extra redundant bytes: namely, fixing the numbers 2t≧s>t of byte errors, the number of redundancy bytes in the hardware code is the minimal possible for any t-error correcting code, and the total number of redundancy bytes, is the minimum possible in any s-error correcting code.
As consequence, the benefits resulting from such a system are:
(1) Increased network perceived data reliability without added hardware cost:
The addition of software enhanced error correction increases the perceived data reliability since the software decoder corrects more errors than the hardware decoder, and thus application software see fewer uncorrectable data errors. If the software's error correction capability is equivalent to the hardware's error detection capability then the receiver will always (within hardware's dectection capability) succeed in correcting data and the software application will never have to handle uncorrectable data errors. Extra hardware cost is avoided since the network's error correction capability is increased without changing the hardware encoder or decoder to handle more complex codes or by increasing the channel reliability.
(2) Easy adaptation to noisy channels:
The addition of software enhanced error correction makes it easier to adapt to noisy channels since increasing the error correction capability of software is simpler and cheaper than changing the hardware capability. Also, it is much easier to upgrade existing customer software than to install new hardware in the field.
(3) Efficient Bandwidth utilization:
The addition of software enhanced error correction decreases the probability that data recovery will consume bandwidth. The most common method for recovering from uncorrectable data checks is to retry the read operation. This means that, when the receiver cannot correct a data error, there is a high probability that the receiving software application will request to read the data again thus forcing the transmitter to send the data again over the channel. Obviously, in a noisy channel, the above scenario tends to repeat itself and more bandwidth is allocated to recovery. Since software enhanced error correction increases data correction capability, less bandwidth is allocated to data recovery.
(4) Efficient CPU utilization
The CPU is efficiently utilized since the software enhanced error correction is only run when it is required, i.e. the software decoder only runs when the hardware decoder encounters an error.
All data that is received must be checked for errors, but only a small proportion of the data actually has any data errors. The CPU is used more efficiently since the hardware decoders can check all the good data without using CPU cycles. In addition, the data is processed more quickly since the hardware is designed specifically to decode data.

Claims (8)

What is claimed is:
1. Data communication system for transmitting data codewords of n bytes length over a communication channel (20) from a transmitter (10) to a receiver (24), said transmitter comprising a hardware encoder (12) capable of receiving as input an information sequence of n−2t bytes and emitting as output a codeword of n bytes including n−2t information bytes and 2t redundant bytes, and said receiver comprising a hardware decoder (28) capable of detecting up to 2t byte-errors and correcting up to t byte errors;
Said data communication system being characterized in that:
said transmitter further comprises a software encoder (14) transforming, in combination with said hardware encoder, an information sequence of n−2s bytes with t<s≦2t into a modified sequence, said transmitter emitting encoded codewords including n−2s information bytes and 2s redundant bytes, and
said receiver further comprises a software decoder (34) for correcting up to s byte-errors when said hardware decoder has detected errors in the encoded codeword received from said communication channel.
2. Data communication system according to claim 1, wherein said hardware decoder (28) in said receiver (24) comprises a switch enabling a codeword to be transferred to said software decoder (34) for being corrected if there are less than s errors after said hardware decoder has detected errors in said codeword.
3. Data communication system according to claim 1 or 2, wherein the error detecting and correcting code being used for encoding said data codewords uses a generator polynomial
g 1(x)=(x−α)(x−α 2) . . . (x−α 2s)
that is
g 1(x)=g(x).g′(x)
where
g(x)=(x−α)(x−α) . . . (x−α 2t)
and
g′(x)=(x−α2t+1)(x−α 2s) . . . (x−α 2s)
with α being a primitive element in the finite field GF(256).
4. Data communication system according to claim 3, wherein said detecting and correcting code is a Reed Solomon code.
5. Data communication system according to claim 4, wherein length n of said codewords is 255 bytes or a divisor of 255 bytes.
6. Process of encoding data codewords (I) in a data communication system according to claim 5, characterized by the steps of:
a) computing by said software encoder (14), the quotient q2(x) and the remainder r2(x) of the division of i(x).x2s−2t by g′(x) in which i ( x ) = j = 0 254 - 2 s i j x i
Figure US06275964-20010814-M00005
 with ij being each byte of said information sequence input to said transmitter (10),
b) for 255−2s clock ticks, feeding q2(x) to said hardware encoder (12) and simultaneously transmitting (ij) for j=254−2s to 0 over said communication channel (26)
c) for 2t clock ticks, shifting out r1(x) which is the remainder of the division of q2(x).x2t by generator polynomial g(x) of said hardware encoder,
d) computing by said software encoder, polynomial r(x)=r1(x).g′(x)+r2(x).x2t, and
e) for 2s clock ticks, transmitting the coefficients of said polynomial r(x) over said communication channel.
7. Process of decoding encoded data codewords F=f254, f253, . . . , f1, f0 in a data communication system according to claim 5, characterized by the steps of:
a) dividing in said hardware decoder (28), a polynomial f ( x ) = j = 0 254 f j x i
Figure US06275964-20010814-M00006
 with fj being each byte of said encoded codeword, by g(x) in order to obtain a quotient q1(x) and a remainder r1(x), and
b) transmitting the information bytes f254, f253, . . . , f2s directly to the application if r1(x)=0.
8. Process according to claim 7, further comprising the following steps carried out by said software decoder (34) if r1(x)≠0:
c) dividing q1(x) by g′(x) for obtaining a quotient q2(x) and a remainder r2(x)
d) computing r(x)=g(x).r2(x)+r1(x)
e) computing the 2s syndromes r(α), r(α2), . . . r(α2s)
f) computing an error location polynomial and an error value polynomial from the syndromes in order to recover the corrected codeword when there are less than s errors, and
g) transmitting the corrected bytes f′254, f′253, . . . f′2s to the application.
US09/272,994 1998-03-20 1999-03-20 Software enhanced error correction mechanism in a data communication system Expired - Fee Related US6275964B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP98480015 1998-03-20
EP98480015 1998-03-20

Publications (1)

Publication Number Publication Date
US6275964B1 true US6275964B1 (en) 2001-08-14

Family

ID=8235747

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/272,994 Expired - Fee Related US6275964B1 (en) 1998-03-20 1999-03-20 Software enhanced error correction mechanism in a data communication system

Country Status (1)

Country Link
US (1) US6275964B1 (en)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6505034B1 (en) * 1999-12-20 2003-01-07 Nokia Ip Inc. Adaptive ARQ feedback bandwidth allocation
US20070104225A1 (en) * 2005-11-10 2007-05-10 Mitsubishi Denki Kabushiki Kaisha Communication apparatus, transmitter, receiver, and error correction optical communication system
CN100462689C (en) * 2006-06-02 2009-02-18 中国科学院长春光学精密机械与物理研究所 Device for detecting code error of photoelectric shaft-position encoder
US7590923B1 (en) * 2004-10-27 2009-09-15 Marvell International Ltd. Architecture and control of Reed-Solomon error identification and evaluation
US20100128778A1 (en) * 2008-11-25 2010-05-27 Microsoft Corporation Adjusting hardware acceleration for video playback based on error detection
US9264658B2 (en) 2009-07-17 2016-02-16 Microsoft Technology Licensing, Llc Implementing channel start and file seek for decoder
US9788018B2 (en) 2008-06-30 2017-10-10 Microsoft Technology Licensing, Llc Error concealment techniques in video decoding
US9848209B2 (en) 2008-04-02 2017-12-19 Microsoft Technology Licensing, Llc Adaptive error detection for MPEG-2 error concealment

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5659557A (en) * 1990-11-08 1997-08-19 Cirrus Logic, Inc. Reed-Solomon code system employing k-bit serial techniques for encoding and burst error trapping
US5742599A (en) * 1996-02-26 1998-04-21 Apple Computer, Inc. Method and system for supporting constant bit rate encoded MPEG-2 transport over local ATM networks

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5659557A (en) * 1990-11-08 1997-08-19 Cirrus Logic, Inc. Reed-Solomon code system employing k-bit serial techniques for encoding and burst error trapping
US5875200A (en) * 1990-11-08 1999-02-23 Cirrus Logic, Inc. Reed-Solomon code system employing k-bit serial techniques for encoding and burst error trapping
US5742599A (en) * 1996-02-26 1998-04-21 Apple Computer, Inc. Method and system for supporting constant bit rate encoded MPEG-2 transport over local ATM networks

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6505034B1 (en) * 1999-12-20 2003-01-07 Nokia Ip Inc. Adaptive ARQ feedback bandwidth allocation
US7590923B1 (en) * 2004-10-27 2009-09-15 Marvell International Ltd. Architecture and control of Reed-Solomon error identification and evaluation
US20090292976A1 (en) * 2004-10-27 2009-11-26 Marvell International Ltd. Architecture and control of reed-solomon error identification and evaluation
US8245118B2 (en) 2004-10-27 2012-08-14 Marvell International Ltd. Architecture and control of reed-solomon error identification and evaluation
US8527850B1 (en) 2004-10-27 2013-09-03 Marvell International Ltd. Architecture and control of reed-solomon error identification and evaluation
US20070104225A1 (en) * 2005-11-10 2007-05-10 Mitsubishi Denki Kabushiki Kaisha Communication apparatus, transmitter, receiver, and error correction optical communication system
CN100462689C (en) * 2006-06-02 2009-02-18 中国科学院长春光学精密机械与物理研究所 Device for detecting code error of photoelectric shaft-position encoder
US9848209B2 (en) 2008-04-02 2017-12-19 Microsoft Technology Licensing, Llc Adaptive error detection for MPEG-2 error concealment
US9788018B2 (en) 2008-06-30 2017-10-10 Microsoft Technology Licensing, Llc Error concealment techniques in video decoding
US20100128778A1 (en) * 2008-11-25 2010-05-27 Microsoft Corporation Adjusting hardware acceleration for video playback based on error detection
US9131241B2 (en) * 2008-11-25 2015-09-08 Microsoft Technology Licensing, Llc Adjusting hardware acceleration for video playback based on error detection
US9264658B2 (en) 2009-07-17 2016-02-16 Microsoft Technology Licensing, Llc Implementing channel start and file seek for decoder

Similar Documents

Publication Publication Date Title
US6958678B2 (en) Electronic identification system with forward error correction system
EP0855108B1 (en) A coding system and method providing unequal error protection by puncturing less significant symbols
KR100292309B1 (en) Data transmitting method, data transmitting system transmiter, and receiver
US8856609B2 (en) Accelerated cyclical redundancy check
WO1997014225A9 (en) A coding system and method providing unequal error protection by puncturing less significant symbols
JP2001511963A (en) Method and apparatus for transmitting and receiving concatenated code data
CA3193957C (en) Forward error correction with compression coding
US8386894B2 (en) Parallel forward error correction with syndrome recalculation
US5936978A (en) Shortened fire code error-trapping decoding method and apparatus
US6275964B1 (en) Software enhanced error correction mechanism in a data communication system
JPH05110539A (en) Digital transmission system
WO2011000176A1 (en) Coding and decoding method and codec of error correction code
US5359610A (en) Error detection encoding system
US5809042A (en) Interleave type error correction method and apparatus
US6081920A (en) Method and apparatus for fast decoding of a Reed-Solomon code
EP1742404B1 (en) Method and apparatus for adapting data to a transport unit of a predefined size prior to transmission
KR0149298B1 (en) Reed-solomon decoder
JP3517829B2 (en) PN code generation circuit
JPH08330978A (en) Error correction system
KR19980015800A (en) Bit error rate measuring device of Reed Solomon decoder
KR0128847B1 (en) Aa-type 5-service system
KR100212829B1 (en) Syndrome calculating apparatus of reed solomon decoder
Miller et al. Synchronization of Reed-Solomon Codes
JPH10262034A (en) Coding and decoding device
JP2985173B2 (en) Digital information receiver

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:NAGIN, KENNETH;SHEINWALD, DAFNA;SATRAN, JULIAN;AND OTHERS;REEL/FRAME:009863/0772;SIGNING DATES FROM 19981104 TO 19981112

FPAY Fee payment

Year of fee payment: 4

REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees
STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20090814