Erasures assisted block code decoder and related method

Information

  • Patent Application
  • 20070245208
  • Publication Number
    20070245208
  • Date Filed
    November 10, 2006
    18 years ago
  • Date Published
    October 18, 2007
    17 years ago
Abstract
An erasures assisted block code decoder and related method are provided. The erasures assisted block code decoder comprises a first block decoder, an erasures processor, and a second block code decoder. The first block decoder, for example, a Reed-Solomon decoder, is configured to decode blocks of data elements, e.g., bytes, that were previously affected by bursty errors. The first block decoder is also configured to identify those of such blocks it is unable to decode. The erasures processor is configured to identify, as erasures, data elements in the un-decodable blocks by utilizing, in the erasures identification process, data elements in the decoded blocks that were corrected by the first block decoder. The second block decoder, e.g., the same or different Reed-Solomon decoder, is configured to decode one or more of the un-decodable blocks by utilizing, in the decoding, the erasures identified by the erasures processor.
Description

BRIEF DESCRIPTION OF THE FIGURES

The invention can be better understood with reference to the following figures. The components in the figures are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the invention. Moreover, in the figures, like reference numerals designate corresponding parts throughout the different views.



FIG. 1 is a block diagram of an example of a forward error correction code encoder that applies a concatenated code having an outer code and an inner code, wherein the outer code is a block code, for example, a Reed-Solomon code, and the inner code is a convolutional code.



FIG. 2 is a block diagram of a decoder of coded data as produced by the encoder of FIG. 1.



FIG. 3 is a high level, input-output diagram of an erasures assisted block code decoder.



FIG. 4 is a block diagram of an embodiment of an erasures assisted block code decoder characterized by a first Reed-Solomon block code decoder, an erasures processor for identifying erasures, a second Reed-Solomon block code decoder, an interleaver interposed between the first Reed-Solomon block code decoder and the erasures processor, and a de-interleaver interposed between the erasures processor and the second Reed-Solomon decoder.



FIG. 5 illustrates an example of blocks of data output by the first Reed-Solomon decoder of FIG. 4.



FIG. 6 illustrates the blocks of data of FIG. 5 after passage through the interleaver of FIG. 4.



FIG. 7 is a more detailed rendering of the data of FIG. 6.



FIG. 8 is a diagram illustrating the structure and operation of an embodiment of the interleaver of FIG. 4.



FIG. 9 illustrates the data of FIG. 7 after erasures have been identified, and the data has been passed through the de-interleaver of FIG. 4.



FIG. 10 is a flowchart of an embodiment of a method of operating an erasures assisted block code decoder.





DETAILED DESCRIPTION

Referring to FIG. 3, an embodiment of the invention comprises an erasures assisted block code decoder 300 configured to decode encoded blocks of data elements, for example bytes, into decoded blocks. It is assumed that bursty errors have been introduced into the incoming blocks, and the decoder 300 takes advantage of the “burstiness” of these errors to identify erasures, i.e., data elements within un-decodable blocks that are likely erroneous because they have been affected by the same error burst as a corrected data elements. Since an error has both a position and a value, the identification of an erasure identifies the position (specific data element) of a likely error within an un-decodable block, which is advantageously used by the decoder 306 in the decoding process.


In one configuration, the erasures assisted block code decoder 306 replaces the block code decoder 208 in the concatenated code decoder 200 of FIG. 2, and the bursty errors are introduced by inner decoder 202. In another configuration, the erasures assisted block code decoder 306 is a stand-alone decoder, and the busty errors are introduced by another mechanism.



FIG. 4 illustrates an embodiment 400 of an erasures assisted block code decoder configured to decode blocks of data encoded by a (n, k) Reed-Solomon encoder, i.e., a encoder configured to append (n-k) bytes of parity information to each block of k bytes. In this embodiment, the erasures assisted block code decoder embodiment 400 comprises a first (n, k) Reed-Solomon decoder 402, a convolutional byte interleaver 404, an erasures processor 406, a de-interleaver 408, and a second (n, k) Reed-Solomon decoder 410. The first (n, k) Reed-Solomon decoder 402 is configured to decode blocks of data that have been encoded by a (n, k) Reed Solomon encoder and thereafter transmitted over the communications channel. The decoder 402 is configured to decode those of the encoded blocks where the number of errors is less than or equal to └dmin/2, where dmin=(n−k+1), and identify those blocks that are un-decodable because the number of errors exceeds the error detection and correction capability of the decoder, i.e., exceeds └dmin/2.


For each decodable block, the decoder 402 is configured to mark each byte that was corrected by the decoder with a special code that can be represented for purposes of this disclosure as “Ced,” which is shorthand for “corrected.” The decoder 402 is configured to mark all other bytes in a decoded block with a code that can be represented for purposes of this disclosure as “C,” which indicates the byte was already correct, and was not corrected by the decoder. The decoder 402 is further configured to mark each byte of an un-decodable block with a special code that for purposes of this disclosure can be represented as “F,” indicating a decoding failure. The decodable and un-decodable blocks, together with the corresponding marks of the constituent bytes, are output from the decoder 402 and input to the interleaver 404.


The interleaver 404 is configured to permute the blocks (both decodable and un-decodable) output from the decoder 402, and thereby spread (disperse) the data elements in the un-decodable blocks identified by decoder 402. This spreading can be explained with reference to FIG. 5, which illustrates an example of the blocks of data elements output by the decoder 402. Numeral 500 identifies an un-decodable block of data elements, Y10, O11, and G12, etc., each of which is marked with an “F” as described previously. Numerals 502 and 504 identify successfully decoded blocks of data elements. Data elements that have potentially been effected by the same bursty error have the same letter prefix, e.g., the Y prefix designates one grouping of associated data elements, the O prefix designates a second such grouping of data elements, the G prefix designates a third such grouping of data elements, and the prefix B designates a fourth such grouping of data elements. Due to the action of the de-interleaver 206, these data elements have been separated into separate blocks.


The interleaver 404 rearranges this data as shown in FIG. 6 so that data elements from un-decodable blocks are separated into different blocks. Thus, as shown in FIG. 6, data elements Y10, O11 and G12, all from the same un-decodable block 500 in FIG. 5, are moved into different blocks through the permutations performed by interleaver 404.



FIG. 7 shows a detailed breakdown of the data elements O1, O2, O3, etc., in FIG. 6 in the case where each such data element is 17 bytes. As shown, it is assumed in FIG. 7 that the marking that is performed by decoder 402 occurs at the byte level, such that each byte is marked with either “C,” “Ced,” or “F.”


In one embodiment, the interleaver 404 is a convolutional byte interleaver of the type shown in FIG. 8. In the particular example shown in FIG. 8, the interleaver 800 comprises a plurality of FIFO shift registers 806a, 806b, 806c, 806d of differing lengths, x1, x2, x3, etc., as shown, and is configured to receive an input block 802 of 17×12 bytes, and produce an output block 804 of 193×12 bytes as shown. Convolutional byte interleavers are known in the art, and need not be described in detail for an appreciation of the subject invention.


Erasures processor 406 next operates on this data to identify erasures, i.e., those data elements from the un-decodable blocks that are likely erroneous. In one configuration, the processor 406 identifies as erasures any data element from an un-decodable block that is adjacent to a corrected data element from a decoded blocks, indicating these data elements were likely affected by the same bursty error. In FIG. 7, for example, where the data elements are bytes, the erasures processor 406 identifies bytes 702, 704, 706 and 708 as erasures because each is vertically adjacent to at least one corrected byte from a decoded block.


In one embodiment, the bytes in a block are numbered as shown in FIG. 7. For each byte marked “F” (indicating the byte originated from an un-decodable block), the erasures processor 406 is configured to form an “observation” from the previous byte, the current byte (the byte marked “F”), and the next byte. Denoting the “observation by (Xn−1−F−Xn+1), the erasures processor 406 identifies the byte marked “F” as an erasure if the observation containing the byte matches any of the following three patterns: (Ced−F−C), (C−F−Ced), or (Ced−F−Ced).


Once the erasures have been identified, the data is input to the de-interleaver 408, which is configured to de-interleave the data and reverse the permutations introduced by the interleaver 404. The effect is to return the data to the form shown in FIG. 5, except that erasures are now identified, as shown in FIG. 9.


The data is then input to the (n, k) Reed-Solomon decoder 410, which may physically be the same or a distinct decoder from decoder 402. Armed with the erasures that have been identified, the decoder 410 is in a better position than the decoder 402 to decode the un-decodable blocks, such as block 500 in FIG. 5. That is because an error has a position and a value, and an erasure is a likely error whose position is known, and whose value only remains to be determined. Therefore, a (n, k) Reed Solomon decoder is able to correct twice as many erasures as errors. In other words, if |E| denotes the number of erasures and |X| the number of errors in a block, then the following relationship must hold: |E|+2|X|<dmin where dmin=(n+k−1). Therefore, by converting some of the errors into erasures, the intended result of the erasures identification process, a previously un-decodable block may now become decodable. Consider, for example, a Reed-Solomon decoder where dmin is 17. Assume a particular block is un-decodable by this decoder because the number of errors in the block is equal to nine. If one of these errors is now identified as an erasure, the block now becomes decodable. That is because |E|+2|X|=17, which is less than dmin as required.


It should be appreciated that, in the embodiment of the erasures assisted block decoder illustrated in FIG. 4, the interleaver 404 and de-interleaver 408 are optional as it is possible to identify erasures without such elements. In particular, referring to FIG. 5, and applying a decision rule whereby un-decodable byte (marked “F”) is identified as an erasure if it matches (Ced−F−X) or (X−F−Ced), where “X” indicates a wildcard byte that matches anything, bytes in Y10 may be identified as an erasure or not based solely on Y9 and Y11. Similarly, bytes in O11 may be identified as an erasure or not based solely on consideration of O10 and O12.


Additionally, it should be appreciated that embodiments are possible where the decoders 402 and 410 are block decoders other than Reed-Solomon decoders.


It should further be appreciated that erasures processor 406 may be embodied in a variety of forms, such as a microprocessor or microcontroller configured to access and execute software instructions stored in a memory, or a finite state machine configured to change state in response to one or more inputs applied to one or more state transition rules. Thus, this processor may be embodied as hardware, software, or a combination of hardware and software.


The erasures processor 406 may implement other decision rules than those previously discussed. For example, consider the case where the number of erasures identified in a block exceeds dmin. In that case, according to a first method of identification, (dmin−1) erasures could be randomly identified, and decoding attempted as before. Only after a predetermined number of attempts, would a decoding failure be declared. For example, in the case where dmin is 17, and more than 16 erasures have been identified, 16 such erasures could be randomly selected, and decoding then attempted. A decoding failure would be declared if a predetermined number, e.g., one, of such attempts fails.


An alternative method, assuming the number of erasures exceeds dmin, selects K out of |E| erasures, where K<dmin, and attempts decoding with all |E|!/(K!(|E|-K)!) combinations. In this example, failure would be declared only if none of the combinations were decodable.


Also, the erasures processor 406 may follow a variety of possible decision rules. For example, in addition to or in lieu of the previously discussed decision rule, the processor 406 may follow a decision rule according to which all the un-decodable bytes (marked “F”) that match the following pattern are identified as erasures: (Ced−F−F− . . . −F−X).


In another alternative configuration, the decoded bytes from Reed-Solomon decoder 402 are divided into three categories, Ced_right, Ced_left, and Ced-mid. A Ced_right byte is a Ced byte that has been corrected in the last 2 bits only: (c, c, c, c, c, ced, ced). A Ced_left byte is a Ced byte that has been corrected in the first 2 bits only: (ced, ced, c, c, c, c, c, c). A Ced_mid byte is a Ced byte that is neither Ced_right nor Ced_left. In this configuration, the processor 406 follows a decision rule according to which any un-decodable byte (marked “F”) that matches any of the following patterns is identified as an erasure: ((Ced or Ced_right)−F−C), (C−F−(Ced or Ced_left)), or ((Ced or Ced_right)−F−(Ced or Ced_left)).


In addition to or in lieu of this decision rule, the processor 406 could follow a decision rule according to which all un-decodable bytes (marked “F”) that match the following pattern are identified as erasures: ((Ced or Ced_right)−F−F− . . . −F−X).


In addition to or in lieu of the foregoing decision rules, the processor 406 could follow a decision rule according to which any un-decodable byte (marked “F”) that matches either of the following two patterns is identified as an erasure: ((Ced or Ced_right)−F−X), ((X−F−(Ced or Ced_left)).



FIG. 10 is a flowchart 1000 of an embodiment of a method of operating an erasures assisted block decoder, such as but not limited to the erasures assisted block decoder of FIG. 4.


In step 1002, incoming blocks of data elements are decoded using a Reed-Solomon decoder and un-decodable blocks are also identified.


In step 1004, which follows step 1002, the bytes in the un-decodable blocks are each marked with an “F,” indicating a decoding failure.


In step 1006, which may occur concurrently with step 1004, each byte in a decoded block is either marked “C,” indicating a byte that was already correct prior to decoding, or “Ced,” indicating a byte that was corrected during decoding.


In step 1008, which follows steps 1004 and 1006, the marked blocks from steps 1004 and 1006 are merged, and, in step 1010, the resulting data is interleaved, thereby separating the bytes marked as decoding failures.


Step 1012 follows step 1010. In step 1012, one or more of the previously described decision rules are followed to identify as erasures selected ones of the bytes marked as decoding failures.


Step 1014 follows step 1012. In step 1014, the blocks of data are de-interleaved, reversing the permutations introduced by the interleaving step 1010.


Step 1016 follows step 1014. In step 1016, the data from step 1014 is decoded using the same or a different Reed-Solomon decoder as that used in step 1002. In this step, the erasures that have been identified are utilized to decode one or more of the blocks that were deemed un-decodable in step 1002.


Other method embodiments are possible, including embodiments where steps 1002 and 1016 are performed by the same or different block decoders, where the decoder are block decoders other than Reed-Solomon block decoders, where the data elements are other than bytes, and whether the interleaving step 1010 and de-interleaving step 1014 are avoided.


While various embodiments of the invention have been described, it will be apparent to those of ordinary skill in the art that many more embodiments and implementations are possible that are within the scope of this invention. Accordingly, the invention is not to be restricted except in light of the attached claims and their equivalents.

Claims
  • 1. An erasures assisted block code decoder comprising: a first block decoder for decoding blocks of data elements, and for identifying any such blocks that are un-decodable by the first block decoder;an erasures processor for identifying, as erasures, data elements in the un-decodable blocks that are likely erroneous, the identification occurring by utilizing data in the decoded blocks that was corrected during decoding by said first block decoder; anda second block decoder for decoding one or more of the un-decodable blocks of data by utilizing in the decoding one or more of the erasures identified by the erasures processor.
  • 2. The erasures assisted decoder of claim 1 further comprising an interleaver interposed between the first block decoder and the erasures processor.
  • 3. The erasures assisted decoder of claim 2 further comprising a de-interleaver interposed between the erasures processor and the second block decoder.
  • 4. The erasures assisted decoder of claim 1 wherein the first and second block decoders are the same physical decoder utilized at different times.
  • 5. The erasures assisted decoder of claim 1 wherein the first and second block decoders are physically distinct decoders.
  • 6. The erasures assisted decoder of claim 1 wherein the first block decoder is a Reed-Solomon decoder.
  • 7. The erasures assisted decoder of claim 1 wherein the second block decoder is a Reed-Solomon decoder.
  • 8. A method of erasures assisted block code decoding comprising: decoding blocks of data elements;identifying blocks of data elements that are un-decodable;identifying, as erasures, data elements in the un-decodable blocks using at least one decision rule; anddecoding one or more of the un-decodable blocks of data by utilizing the identified erasures.
  • 9. The method of claim 8 further comprising interleaving the decoded blocks prior to the identifying erasures step.
  • 10. The method of claim 9 further comprising de-interleaving the decoded blocks after the identifying erasures step but prior to the second decoding step.
  • 11. The method of claim 8 wherein the decision rule calls for identifying as an erasure a data element in an un-decodable block that is adjacent a corrected data element.
  • 12. The method of claim 8 wherein the decision rule calls for identifying as an erasure a data element in an un-decodable block that is sandwiched between a corrected data element and a correct or corrected data element.
  • 13. The method of claim 8 wherein the decision rule calls for identifying as erasures a grouping of un-decodable data elements which grouping is adjacent a corrected data element.
  • 14. An erasures assisted block code decoder comprising: first block decoding means for decoding blocks of data elements, and for identifying blocks of data elements that are un-decodable by the first block decoding means;erasures identifying means for identifying, as erasures, data elements in the un-decodable blocks by utilizing data in the decoded blocks that was corrected during decoding by said first block decoding means; andsecond block decoding means for decoding one or more of the un-decodable blocks of data by utilizing in the decoding one or more of the erasures identified by the erasures identifying means.
  • 15. The system of claim 14 wherein said first and second block decoding means comprises the same physical decoding means utilized at different times.
  • 16. The system of claim 14 wherein said first and second block decoding means comprises physically distinct decoding means.
  • 17. A concatenated code decoder comprising: an inner decoder for decoding encoded bits and having a tendency to introduce bursty errors;a de-interleaver for de-interleaving the decoded bits output from the inner decoder to produce blocks of data; andan erasures assisted block code decoder for decoding the blocks of data output by the de-interleaver, the erasures assisted block code decoder comprising: a first block decoder for decoding blocks of data elements, and for identifying blocks that are un-decodable by the first block decoder;an interleaver for interleaving the blocks output by the first block decoder, thereby spreading any data elements in un-decodable blocks;an erasures processor for identifying, as erasures, data elements in the un-decodable blocks that are likely erroneous, the identification occurring by utilizing data in the decoded blocks that was corrected during decoding by said first block decoder;a de-interleaver for de-interleaving blocks of data output by the erasures processor; anda second block decoder for decoding one or more of the un-decodable blocks of data by utilizing in the decoding one or more of the erasures identified by the erasures processor.
  • 18. The concatenated code decoder of claim 17 wherein the first and second block decoders are the same physical decoder utilized at different times.
  • 19. The concatenated code decoder of claim 17 wherein the first and second block decoders are physically distinct decoders.
  • 20. A concatenated code decoder comprising: a Viterbi decoder for decoding convolutionally encoded bits and having a tendency to introduce bursty errors;a de-interleaver for de-interleaving the decoded bits output from the Viterbi decoder to produce blocks of data; andan erasures assisted block code decoder for decoding the blocks of data output by the de-interleaver, the erasures assisted block code decoder comprising: a first Reed-Solomon block decoder for decoding blocks of data elements, and for identifying blocks that are un-decodable by the first block decoder;an interleaver for interleaving the decoded blocks output by the first block decoder, thereby spreading data elements in any un-decodable blocks;an erasures processor for identifying, as erasures, data elements in the un-decodable blocks by utilizing data in the decoded blocks that was corrected during decoding by said first block decoder;a de-interleaver for de-interleaving blocks of data output by the erasures processor; anda second Reed-Solomon block decoder for decoding one or more of the un-decodable blocks of data by utilizing in the decoding one or more of the erasures identified by the erasures processor.
  • 21. The concatenated code decoder of claim 20 wherein the first and second Reed-Solomon block decoders are the same physical decoder utilized at different times.
  • 22. The concatenated code decoder of claim 20 wherein the first and second Reed-Solomon block decoders are physically distinct decoders.
BACKGROUND OF THE INVENTION

This application claims the benefit of U.S. Provisional Patent Application No. 60/792,129, Howrey Dkt. No. 01827.0072.PZUS01, filed Apr. 13, 2006, which is hereby fully incorporated by reference herein as though set forth in full.

Provisional Applications (1)
Number Date Country
60792129 Apr 2006 US