MULTIPLE-FIELD BASED CODE GENERATOR AND DECODER FOR COMMUNICATIONS SYSTEMS

Abstract
A method of encoding data for transmission from a source to a destination over a communications channel is provided. The method operates on an ordered set of input symbols and includes generating a plurality of redundant symbols from the input symbols based on linear constraints. The method also includes generating a plurality of output symbols from a combined set of symbols including the input symbols and the redundant symbols based on linear combinations, wherein at least one of the linear constraints or combinations is over a first finite field and at least one other of the linear constraints or combinations is over a different second finite field, and such that the ordered set of input symbols can be regenerated to a desired degree of accuracy from any predetermined number of the output symbols.
Description

BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 is a block diagram of a communications system according to one embodiment of the present invention.



FIG. 2 is a block diagram an encoder according to one embodiment of the present invention.



FIG. 3 is a simplified block diagram of a method of generating redundant symbols according to one embodiment of the present invention.



FIG. 4 is a simplified block diagram of the basic operation of a static encoder according to one embodiment of the present invention.



FIG. 5 is a simplified block diagram of a dynamic encoder according to one embodiment of the present invention.



FIG. 6 is a simplified block diagram of a basic operation of a dynamic encoder according to one embodiment of the present invention.



FIG. 7 is a simplified block diagram of a static encoder according to one embodiment of the present invention.



FIG. 8 is a simplified block diagram of the basic operation a static encoder according to one embodiment of the present invention.



FIG. 9 is a simplified diagram of a method for calculating encoding parameters according to one specific embodiment of a static encoder.



FIG. 10 is a simplified flow diagram of a static encoder according to another embodiment of the present invention.



FIG. 11 is a simplified block diagram of a decoder according to one embodiment of the present invention.



FIG. 12 is a simplified flow diagram of an operation of a decoder according to one embodiment of the present invention.



FIG. 13 is a simplified flow diagram of an operation of a decoder according to another embodiment of the present invention.



FIG. 14 is a simplified flow diagram of an operation of a decoder according to yet another embodiment of the present invention.



FIG. 15 is a simplified block diagram of a dynamic decoder according to one embodiment of the present invention.



FIG. 16 is a simplified block diagram of a static decoder according to one embodiment of the present invention.



FIG. 17 illustrates source symbol from sub-symbol mappings.



FIG. 18 illustrates possible settings of file download parameters for various file sizes.



FIG. 19 illustrates possible settings of streaming parameters for various source block sizes.



FIG. 20 illustrates a form of a matrix that represents a relationship between source and intermediate symbols.



FIG. 21 illustrates a degree distribution for the degree generator.



FIG. 22 illustrates a form of the matrix A that can be used for decoding.



FIG. 23 illustrates a block decomposition of the matrix A that can be used for decoding.



FIG. 24
a illustrates a block decomposition of the matrix X that can be used for decoding.



FIG. 24
b illustrates a block decomposition of the matrix X after several steps of the first phase of the decoding process.



FIG. 25 illustrates a block decomposition of the matrix X after some elimination steps.



FIG. 26 illustrates a block decomposition of a sub-matrix of X after further elimination steps.



FIG. 27 illustrates a block decomposition of the matrix A after elimination and deletion steps.



FIG. 28 illustrates a block decomposition of the matrix A after further elimination and deletion steps.



FIG. 29 illustrates a block decomposition of the matrix A after further elimination steps.



FIG. 30 illustrates a block decomposition of the matrix A after yet further elimination steps.



FIG. 31 shows a table of code failure probabilities for a (120,100) code constructed according to one preferred embodiment of the invention.



FIG. 32 shows a table of code failure probabilities for a (110,100) code constructed according to one preferred embodiment of the invention.


Claims
  • 1. A method of encoding data for transmission from a source to a destination over a communications channel that is expected to perform as an erasure channel at least partially, the method comprising: obtaining an ordered set of input symbols representing the data to be encoded;selecting a plurality of field arrays of values, wherein each field array is derived from a finite field array and at least two different finite field arrays are represented;generating a data structure that represents a coefficient matrix that represents at least two of the plurality of field arrays, wherein at least two of those field arrays are derived from finite field arrays different from each other;generating output symbols as linear combinations of input symbols, wherein the particular combinations are according to the data structure that represents the coefficient matrix; andusing the generated output symbols and an encoding for the data.
  • 2. The method of claim 1, wherein the data structure that represents a coefficient matrix is a two-dimensional array of cell values, each cell value representing a coefficient of one input symbol in the generation of one output symbol such that when a coefficient is not zero or zero modulo some base, the value of the corresponding output symbol depends on the value of the corresponding input symbol.
  • 3. The method of claim 1, wherein the data structure that represents a coefficient matrix is a set of rules that specify coefficient values, and further wherein a rule indicates that a coefficient is not zero or zero modulo some base, the value of the corresponding output symbol depends on the value of the corresponding input symbol.
  • 4. The method of claim 1, wherein the number of unique output symbols that can be generated from the set of input symbols, for any set of fixed values for the input symbols, is independent of the field array sizes.
  • 5. The method of claim 1, wherein the generation of a data structure that represents a coefficient matrix that represents at least two of the plurality of field arrays, wherein at least two of those field arrays are derived from finite field arrays different from each other is a generation that uses a first field array derived from a first finite field array and a second field array derived from a second finite field array, wherein the first finite field array and the second finite field array are different, and further wherein the first finite field and the second finite field are each selected from the field set consisting of GF(2), GF(4), GF(16), GF(256).
  • 6. The method of claim 5, wherein the first finite field array is GF(2) and the second finite field array is GF(256).
  • 7. The method of claim 5, wherein the first finite field array is GF(2) and the second finite field array is GF(4).
  • 8. The method of claim 5, wherein the first finite field array is GF(4) and the second finite field array is GF(16).
  • 9. The method of claim 5, wherein the first finite field array is GF(16) and the second finite field array is GF(256).
  • 10. The method of claim 5, wherein the first finite field array is smaller than the second finite field array.
  • 11. The method of claim 5, wherein the first finite field array is larger than the second finite field array.
  • 12. A method of decoding data from a transmission received at a destination from a source over a communications channel that is expected to perform as an erasure channel at least partially, the method comprising: receiving at least some of a plurality of output symbols generated from an ordered set of input symbols that were encoded into the plurality of output symbols wherein each output symbol was generated as a linear combination of one or more of the input symbols with coefficients chosen from finite fields, wherein at least one coefficient is a member of a first finite field and at least one other coefficient is a member of a second finite field and is not a member of the first finite field; andregenerating the ordered set of input symbols to a desired degree of accuracy from reception of any predetermined number of the output symbols.
  • 13. The method of claim 12, wherein the number of unique output symbols that could have been generated from the set of input symbols, for any set of fixed values for the input symbols, was independent of the field array sizes.
  • 14. The method of claim 12, wherein the finite fields are such that a first finite field array and a second finite field array are different and the first finite field and the second finite field are each selected from the field set consisting of GF(2), GF(4), GF(16), GF(256).
  • 15. The method of claim 14, wherein the first finite field array is GF(2) and the second finite field array is GF(256).
  • 16. The method of claim 14, wherein the first finite field array is GF(2) and the second finite field array is GF(4).
  • 17. The method of claim 14, wherein the first finite field array is GF(4) and the second finite field array is GF(16).
  • 18. The method of claim 14, wherein the first finite field array is GF(16) and the second finite field array is GF(256).
  • 19. The method of claim 14, wherein the first finite field array is smaller than the second finite field array.
  • 20. The method of claim 14, wherein the first finite field array is larger than the second finite field array.
  • 21. A method of encoding data for transmission from a source to a destination over a communications channel that is expected to perform as an erasure channel at least partially, the method comprising: obtaining an ordered set of input symbols representing the data to be encoded;selecting a plurality of field arrays of values, wherein each field array is derived from a finite field array and at least two different finite field arrays are represented;generating a data structure that represents a coefficient matrix that represents at least two of the plurality of field arrays, wherein at least two of those field arrays are derived from finite field arrays different from each other;generating a plurality of redundant symbols from the ordered set of input symbols, wherein each redundant symbol is generated based on a set of linear constraints over one or more of the input symbols and other redundant symbols with coefficients over finite fields;generating output symbols as linear combinations of input symbols, wherein the particular combinations are according to the data structure that represents the coefficient matrix;generating a plurality of output symbols from the combined set of input and redundant symbols, wherein each output symbol is generated as a linear combination of one or more of the combined set of input and redundant symbols with coefficients chosen from finite fields;using the generated output symbols and an encoding for the data.
  • 22. The method of claim 21, wherein the number of redundant symbols that can be generated from the set of input symbols, for any set of fixed values for the input symbols, is independent of the field array sizes.
  • 23. The method of claim 21, wherein the finite fields are such that a first finite field array and a second finite field array are different and the first finite field and the second finite field are each selected from the field set consisting of GF(2), GF(4), GF(16), GF(256).
  • 24. A method of decoding data from a transmission received at a destination from a source over a communications channel that is expected to perform as an erasure channel at least partially, the method comprising: receiving at least some of the plurality of output symbols generated from a combined set of input and redundant symbols, wherein each output symbol is generated as a linear combination of one or more of a combined set of input and redundant symbols with coefficients chosen from finite fields,wherein the plurality of redundant symbols is generated from the ordered set of input symbols, wherein each redundant symbol is generated based on a set of linear constraints over one or more of the input symbols and other redundant symbols with coefficients over finite fields,wherein at least one coefficient is a member of a first finite field and at least one other coefficient is a member of a second finite field and is not a member of the first finite field; andregenerating the ordered set of input symbols to a desired degree of accuracy from reception of any predetermined number of the output symbols.
  • 25. The method of claim 24, wherein the number of unique output symbols that could have been generated from the set of input symbols, for any set of fixed values for the input symbols, was independent of the field array sizes.
  • 26. The method of claim 24, wherein the first finite field is GF(2).
  • 27. The method of claim 24, wherein the second finite field is GF(256).
  • 28. The method of claim 24, wherein the second finite field is GF(4).
  • 29. The method of claim 24, wherein the first finite field is GF(4).
  • 30. The method of claim 24, wherein the first finite field is GF(16).
  • 31. The method of claim 24, wherein the second finite field is GF(16).
Provisional Applications (1)
Number Date Country
60775528 Feb 2006 US