US 7827472 B2 Abstract The invention relates to an encoding system and method for generating concatenated codes which utilize interleaving and data puncturing. The method includes selecting first and second puncture location sets defining desired puncture locations in non-interleaved and interleaved data sequences, respectively. A puncture-constrained interleaver is provided, which permutes the first puncture location set into the second puncture location set, so as to provide desired regular puncture patterns for all constituent codes. In a preferred embodiment, the puncture-constrained interleaving alters a symbol location relative to a puncture mask so as to satisfy a pre-defined spread or distance constraint.
Claims(17) 1. A method of encoding an information-bearing signal using symbol puncturing and interleaving, the method comprising the steps of:
a) receiving a sequence of K data symbols representing the information bearing signal, wherein K is at least 2;
b) selecting a first puncture mask of length D
_{0 }defining a puncture location set A of desired symbol puncture locations in the sequence of data symbols;c) selecting a second puncture mask of length D defining a puncture location set B of desired symbol puncture locations in a sequence of permuted data symbols;
d) performing a puncture-constrained interleaving of the sequence of K data symbols for forming the sequence of permuted data symbols;
e) encoding the sequence of permuted data symbols to obtain a first sequence of parity symbols;
f) puncturing one of: the sequence of K data symbols according to the puncture location set A, and the sequence of permuted data symbols according to the puncture location set B, for forming a punctured sequence of data symbols; and,
g) utilizing the punctured sequence of data symbols and the first sequence of parity symbols to obtain an encoded signal comprising error correction information;
wherein step (d) is performed so as to
permute the first puncture location set A into the second puncture location set B, and
alter a relative symbol position with respect to a puncture mask of length M, wherein M is the least common multiple of D
_{0 }and D, for at least one of the data symbols, so that (i modulo M) is not equal to (I modulo M) for at least one data symbol location i=i′ in the sequence of K data symbols and a corresponding data symbol location I=I(i′) in the sequence of permuted data symbols.2. A method of encoding according to
3. A method of encoding according to
from the second puncture location set B if the symbol location in the sequence of K data symbols belongs to the set A, and
from a complementary location set B' comprising previously not selected locations other than locations defined by the second puncture location set B, if the symbol location in the sequence of K data symbols is not from the first puncture location set A.
4. A method of encoding according to
5. A method of encoding according to
6. A method of encoding according to
7. A method of encoding according to
8. A method of encoding according to
_{0}.9. A method of encoding according to
_{0 }using a pre-defined interleaving rule.10. A method of encoding according to
_{0 }is obtained utilizing one of an S-random interleaving rule, a high spread random (HSR) interleaving rule, and a dithered relative prime (DRP) interleaving rule.11. A method of encoding according to
_{0 }is obtained utilizing an interleaving rule having a repeating structure.12. A method of encoding according to
13. A method of encoding according to
14. A method of encoding according to
_{0 }=M and contains m zeros at locations defined by a set a={a_{1}, a_{2}, . . . a_{m}}, and the second puncture mask has the length D=M and contains m zeros at locations defined by a set b={b_{1}, b_{2}, . . . b_{m}}, where M is at least two, m is at least one, and m is less than M, and wherein elements in each of the sets a and b are unique and are selected from the set {0, 1, . . . M−1}.15. A method of encoding according to
16. The method of encoding according to
17. The method of encoding according to
Description The present invention claims priority from U.S. Provisional Patent Application No. 60/803,299 filed May 26, 2006, entitled “Method and System of Interleaving for Turbo and Turbo-like Codes with Puncturing”, which is incorporated herein by reference. The present invention generally relates to digital communications, and more particularly to methods of data encoding utilizing data interleaving and puncturing, and to encoders implementing such methods. Turbo codes have received considerable attention since their introduction in 1993. This is due to their powerful error correcting capability, reasonable complexity, and flexibility in terms of accommodating different block lengths and code rates. The decoding process is typically performed in an iterative manner by exchanging soft information, often called extrinsic information, between two constituent RSC decoders corresponding to the RSC encoders Turbo code error rate performance is typically characterized by two important regions, namely the waterfall region and the error flare region in an error-rate vs. signal-to-noise ratio (SNR) curve. The waterfall region is associated with low to moderate SNR values. In this region, the slope of the error-rate curve drops rapidly as the SNR increases. The error flare region is associated with moderate to high SNR values. In this region, the error-rate curve suffers from flattening or flaring, making it difficult to further improve the error rate performance without a significant increase in the SNR. Interleaving is a practice well known in the art. It is a method of arranging or permuting elements within a block. In a turbo-code encoder the elements are typically data bits or data symbols. In a turbo-code decoder the data elements are typically soft data samples from the receiver. Interleaving is a key component of turbo codes, and interleaver strategy plays a critical role in determining code performance. This is true for both Turbo Code classes, i.e., Parallel Concatenated Convolutional Code (PCCC) disclosed in U.S. Pat. No. 5,446,747 and illustrated in Interleavers can be defined and implemented in a number of different ways. Two common interleaver types are the “random” interleaver and the so-called “S-random” or “spread” interleaver. The term “interleaver spread” refers to a spacing between symbols before and after interleaving in the data sequence. It is known in the art that good spreading properties of an interleaver are desirable for both fast convergence during iterative decoding and good distance properties between codewords generated by the encoder. A high codeword, e.g. Hamming, distance is desirable for both lowering the error flare and for making the flare region of the BER vs. SNR curve as steep as possible. Hamming distance is the minimum number of symbols that must be changed in a code word for a first codeword to become a second codeword. The further apart two codewords are, the more a signal can be corrupted while retaining the ability for the decoder to properly decode the message. It is also important to reduce the number of codewords at or near the minimum distance. Examples of known high-spread interleavers include dithered golden interleavers, and low extrinsic correlation interleavers. A high-spread random (HSR) interleaver which provides excellent performance results is disclosed in a paper entitled “New High-Spread High-Distance Interleavers for Turbo-codes” presented at 20th Biennial Symposium on Communications, Kingston Ontario, Canada, pp. 3-7, May 28-31, 2000 by S. Crozier, an inventor of the current invention, and in Canadian Patent Application No. 2,348,941 issued to S. Crozier, which are incorporated herein by reference. Efficient high-spread interleavers with reduced memory requirements are dithered relative prime (DRP) interleavers, which are disclosed in U.S. Pat. No. 6,857,087 issued to S. Crozier and assigned to the assignee of the instant application, which is incorporated herein by reference. The HSR and DRP approaches use a definition of spread which differs from that typically used to design S-random interleavers, and is more closely related to the distance properties of Turbo-codes; see e.g. U.S. Pat. No. 6,857,087 for more details. The term ‘data puncturing’ as used herein means that in the output of the turbo encoder some of the data symbols have been punctured, i.e. dropped, instead of puncturing just the parity symbols. This means that the turbo code is no longer a systematic code, but is only partially systematic. The most common puncturing method is to only puncture the parity symbols, but promising performance has also been obtained with limited puncturing of the data symbols. Data puncturing that provides an overall punctured code rate of 1/2 has been investigated in a paper by I. Land and P. Hoeher, entitled “Partially Systematic Rate 1/2 Turbo Codes”, presented at 2nd International Symposium on Turbo Codes, Brest, France, pp. 287-290, Sep. 4-7, 2000, which is incorporated herein by reference. The results disclosed by Land and Hoeher showed, however, only a modest improvement in performance with data puncturing. This was partly due to the fact that only random interleavers were investigated, with no other constraints placed on the interleavers to optimize the overall code performance. Results for 8 and 16-state RSC encoders for higher code rates with data puncturing are disclosed in U.S. Pat. No. 6,857,087 to S. Crozier and P. Guinand, and a paper by S. Crozier and P. Guinand, “Distance Upper Bounds and True Minimum Distance Results for Turbo-Codes Designed with DRP Interleavers”, 3rd International Symposium on Turbo Codes, Brest, France, pp. 169-172, Sep. 1-5, 2003, where it is shown that by improving the interleaver design, a more significant improvement can be achieved in error flare performance for encoders with data puncturing. The code rate of a turbo code with puncturing is given by
where R Typically, puncturing is performed using relatively short repeating puncture masks for each of the data and parity streams. Each mask contains a sequence of 0's and 1's where, by convention, a ‘1’ indicates a selected, or kept, bit and a ‘0’ indicates a punctured, or removed, bit. The denominators, D A small amount of data puncturing, in exchange for keeping more parity bits, can significantly improve the distance property of the resulting code and thus the flare performance. Intuitively, this is because most of the codeword distance, especially for the low input-weight codewords, tends to come from the parity bits. Therefore the better the interleaver design, i.e., the larger proportion of distance that comes from the parity symbols, the better data puncturing should work to improve the distance. It has also been found that the convergence, i.e. the waterfall region performance can also be improved with small amounts of data puncturing. However, puncturing too many data symbols can significantly degrade the convergence performance. Further, too much data puncturing can also cause catastrophic effects and worsen distance properties of the punctured codeword and thus degrade error flare performance. One problem with puncturing of data symbols in prior art turbo codes with conventional interleaver designs is an effective “scrambling” of the puncturing mask associated with the second code by the interleaver. That is, the interleaver Recently, I. A. Chatzigeorgiou, M. R. D. Rodrigues, I. J. Wassell and R. Carrasco in a paper entitled “Punctured Binary Turbo-Codes with Optimized Performance”, published in Proceedings of the 62nd IEEE Vehicular Technology Conference (VTC Fall 2005), Dallas, USA, Sep. 25-28, 2005, tried to address this problem by disclosing an l-bit periodic random interleaver that imposes a puncture mask related constraint on symbol positions in the interleaved sequence; namely, if l is the length of the data puncturing pattern P The encoding method disclosed by Chatzigeorgiou et al, although solving the problem of interleaver-induced catastrophic or near-catastrophic puncturing, has however significant drawbacks and undesirable limitations. First, the encoder of Chatzigeorgiou et al utilizes homogeneous puncturing patterns, wherein the puncturing bits are uniformly distributed among the systematic, i.e. data, and the parity streams of the turbo encoder. This limits the highest achievable code rate to 2/3, which is an undesirable limitation disadvantageously affecting the codes' information efficiency. Second, the encoding method of Chatzigeorgiou et al imposes unnecessarily strict limitations on the interleaver design, thereby severely limiting the choice of interleavers, and making it difficult to find an interleaver providing good spread and distance properties, and fast convergence of the decoding process. Accordingly, an object of this invention is to provide a method of encoding utilizing data puncturing and an improved puncture-constrained interleaving for providing enhanced error correction and decoding convergence performance, and an encoder utilizing said method. In accordance with the invention, a method is provided for encoding an information-bearing signal using symbol puncturing and interleaving for use in encoding systems for generating concatenated codes. The method comprises the following steps: a) receiving a sequence of K data symbols representing the information bearing signal, wherein K is at least 2; b) selecting a first puncture mask of length D c) selecting a second puncture mask of length D defining a puncture location set B of desired symbol puncture locations in a sequence of permuted data symbols; d) performing a puncture-constrained interleaving of the sequence of K data symbols for forming the sequence of permuted data symbols; e) encoding the sequence of permuted data symbols to obtain a first sequence of parity symbols; f) puncturing one of: the sequence of K data symbols according to the puncture location set A, and the sequence of permuted data symbols according to the puncture location set B, for forming a punctured sequence of data symbols; and, g) utilizing the punctured sequence of data symbols and the first sequence of parity symbols to obtain an encoded signal comprising error correction information; wherein step (d) is performed so as to permute the first puncture location set A into the second puncture location set B, and to alter a relative symbol position with respect to a puncture mask of length M, wherein M is the least common multiple of D Another aspect of the invention provides an encoding system utilizing symbol puncturing and the puncture-constrained symbol interleaving. The encoding system provided by the invention comprises an input port for receiving a sequence of K data symbols; a first memory for storing puncture location information defining one of: a first puncture mask of length M defining a puncture location set A of desired symbol puncture locations in the sequence of data symbols, and a second puncture mask defining a puncture location set B of desired symbol puncture locations in a sequence of permuted data symbols; a puncture-constrained interleaver operatively coupled to the input port for forming a sequence of permuted data symbols from the input sequence of K data symbols according to a pre-defined permutation rule. The pre-defined permutation rule according to the invention comprises: permuting the first puncture location set A into the second puncture location set B, and altering a relative symbol position with respect to the first puncture mask for at least one of the data symbols, so that for at least one data symbol location i=i′ in the sequence of K data symbols and a corresponding data symbol location I=I(i′) in the sequence of permuted data symbols, (i modulo M) is not equal to (I(i) modulo M). The encoding system further comprises a second memory for storing interleaver information defining permuted data symbol location I(i) for each data symbol location i=0, . . . , K−1 in the sequence of K data symbols; a first encoder coupled to the puncture-constrained interleaver for producing a first sequence of parity symbols from the sequence of permuted data symbols; a puncturing unit operatively coupled to the first memory for removing data symbols from one of the sequence of K data symbols and the sequence of permuted data symbols at locations defined by the puncture location information stored in the first memory; and, an output port operatively coupled to the puncturing unit for providing an encoded punctured output signal comprising error correction information. Another aspect of the invention provides a method for generating or decoding punctured concatenated codes. In this aspect of the invention, the method comprises the following steps: selecting puncture location sets A and B of desired data puncture locations in an input sequence of K data symbols and a sequence of permuted data symbols, respectively, wherein the puncture location sets A and B correspond to pre-defined puncture masks of length M; generating a set of K interleaver values I={I(i)}, wherein i=0, . . . , K−1, which relates symbol locations I(i) in the sequence of permuted data symbols to respective symbol locations i in the input sequence of K data symbols in dependence upon the puncture location sets A and B, so as to satisfy the following two conditions: I(i) is an element of the puncture location set B if i is an element of the puncture location set A, and (i modulo M) is not equal to (I(i) modulo M) for at least one data symbol location i=i′ in the input sequence of K data symbols; storing the set of K interleaver values I, or information defining thereof, in memory; and, permuting each received sequence of K data symbols according to the set of interleaver values I. The invention will be described in greater detail with reference to the accompanying drawings which represent preferred embodiments thereof and in which like numerals represent like elements, and wherein: The following general notations are used in this specification: the notation x(i) or x In addition, the following is a partial list of abbreviated terms and their definitions used in the specification: ASIC Application Specific Integrated Circuit BER Bit Error Rate PER Packet Error Rate SNR Signal to Noise Ratio DSP Digital Signal Processor FPGA Field Programmable Gate Array The instant invention provides method and system for encoding an information bearing signal with a punctured concatenated code utilizing puncture-constrained interleaving of data symbols. Another aspect of the current invention provides a method for puncture-constrained interleaving for generating punctured concatenated codes. The invention is applicable to methods and systems for generating both serially and parallel concatenated codes, and mixed-type concatenated codes having both serial and parallel components. Exemplary embodiments of the encoding system and method of the current invention will now be described primarily with reference to a turbo encoder Turning first to In operation, the turbo encoder For the purpose of illustration, the first and second constituent encoders The puncturing unit The puncture-constrained interleaver Some of the embodiments described hereinbelow utilize an interleaver spread constraint to generate the interleaver values I(i). The term “interleaver spread” used in this specification refers to a spacing between symbols in the sequences of data symbols d and d By way of example, in some of the embodiments described herein the interleaver spread S(i) associated with a read index i is computed according to the following formula:
where the minimum is taken over all indices j=0 . . . K−1 not equal to i. The overall interleaver spread S computed as
where the minimum is taken over all indices i=0 . . . K−1. In embodiments of the invention where the first encoder An exemplary embodiment of the encoding method of the present invention will now be described with reference to the flowchart of In the embodiment shown in In a next step Once the interleaver length and the puncture location sets are selected, a data encoding process starts in step In a next step wherein the notation I(A) denotes a set of all permuted locations I(i) with the read index i from the location set A. In a preferred embodiment, the puncture-constrained interleaving is performed so as to alter a symbol position relative to a respective puncture mask, as described hereinbelow in more detail. In a step Turning back to In the embodiment of the encoding method of the present invention that produces a parallel concatenated code, a second parity sequence par Advantageously, the puncture-constrained interleaving performed in step The following examples illustrate one aspect of the puncture-constrained interleaving of the present invention, according to which the interleaver is selected so as to permute the first set of puncture locations A into the second pre-determined set of desired puncture locations B. In the following examples the data symbols are assumed to be binary and referred to as data bits. In this example, 1-in-M data bits from both the non-interleaved and interleaved data sequences d and d each element of the first puncture location set A={0, M, 2M, . . . } after the interleaving becomes an element of the second puncture location set B={0, M, 2M, . . . } providing puncture locations for the interleaved data. Note that even though the constraint mod(I(i),M)=mod(i,M) holds for all read indices i from the first puncture location set A, this constraint is not imposed for other read indices that are not in A, i.e. which are not to be punctured. This is an important advantage of the current invention compared to the l-bit periodic interleaver of Chatzigeorgiou et al, which imposes a constraint equivalent to mod(I(i),M)=mod(i,M) for all values of the read index i, which may disadvantageously affect achievable interleaver spread and codeword distance properties. The two examples below illustrate further advantages of the current invention, which relate to a much higher degree of flexibility in selecting data puncturing patterns provided by the current invention than that afforded by the l-bit periodic interleaver of Chatzigeorgiou. In this exemplary embodiment, the puncturing of both the non-interleaved and interleaved data is performed using the same puncturing mask. This is however an unnecessary limitation, which as we found can lead to sub-optimal code performance, and in particular may result in a relatively slower convergence of the decoding process. Therefore, the following examples illustrate more preferred embodiments wherein puncture-constrained interleavers utilize differing puncture masks P In this second example, the desired puncture pattern is still 1-in-M data symbol puncturing, but starting at a location a<M for the non-interleaved data, and at a location b<M for the interleaved data, so that the first and second puncture location sets are A={a, a+M, a+2M, . . . } and B={b, b+M, b+2M, . . . }, respectively. In order to permute the first set A into the second set B, the interleaver values I(i) must satisfy the following constraint:
where a and b represent single elements from a set C={0, 1, . . . M−1}. In other words, if i is an element of the first set A={a, a+M, a+2M, . . . }, i.e. the punctured locations for the second code, then I(i) must be an element of the second set B={b, b+M, b+2M, . . . }, which effectively defines the punctured locations for the first code. Again, note that the constraint mod(I(i),M)=b is not imposed on read indices i, which are not in A. In this example, more general repeating data puncture patterns are described. Let the actual length of a repeating data puncture mask for the non-interleaved data be D where the notation xεz means that x is an element of the vector, or set z. When condition (7) is satisfied, I(i) is an element of the second puncture location set B if i is an element of the first puncture location set A, and the puncture-constrained interleaver permutes the first set A into the second set B. Arbitrary repeating data puncture masks of length M having m-in-M data puncturing can effectively be designed for both constituent codes of the turbo encoder by utilizing the constraint (7). Obviously, each of the conditions (5)-(7) corresponds to the first constraint (4) for a respective exemplary puncturing pattern described hereinabove. A specific data puncturing example will now be described with reference to The interleaver constraint (7) of the present invention becomes
In other words, in this exemplary embodiment the puncture-constrained interleaver of the present invention is such that if i is an element of set In addition to satisfying constraint (7) relating the first and second sets A and B of the desired puncture locations, the puncture-constrained interleaving of the present invention is preferably performed so as to alter a relative symbol position with respect to a puncture mask for at least one, and more preferably for several of the data symbols. The term “relative symbol position with respect to a puncture mask” means a position of a particular data symbol within a respective application of the puncture mask to the symbol sequence. Quantitatively, for a particular symbol having a location index j in a sequence of symbols to which a puncture mask of length M is repetitively applied, the relative symbol position within the puncture mask is defined by an integer parameter l(j)=mod(j,M). Therefore, the puncture constrained interleaving of the present invention is preferably performed so as to satisfy the following second constraint:
for at least one symbol location i=i′ from the set{0, . . . , (K−1)}. This is illustrated by way of example in Accordingly, another aspect of the present invention provides a method of puncture-constrained interleaving for generating or decoding punctured concatenated codes having the following general steps as illustrated in flowchart of In a step In a step In step Two particular implementations of step Turning first to Next, in a step This set is illustrated at Turning back to Once the second puncture location set B is determined, a complementary location set B′, which is illustrated by way of example with a set wherein the notation ‘x∉z’ means that x is not an element of vector z. In a next step By way of example, local and global spread parameters are computed on the basis of equations (2) and (3), but other interleaver spread definitions can also be used in other embodiments. Equation (2) gives the interleaver spread for a specific read index, i. If not all values of I(i) are defined, then it is understood that equation (2) is computed using the subset of defined values. Next, a loop The first step The next step In a step is satisfied, in step If in step The step If in the step The aforedescribed method of generating the interleaver values I(i) using random index selection from two different sets of indices provides a puncture-constrained pseudo-random interleaver that satisfies a pre-defined minimum interleaver spread requirement, in addition to satisfying the interleaver constraints corresponding to expressions (4) and (8). Turning now to First, the interleaver length K, the puncture masks P Next, in a step Within the index swapping loop Each iteration of the index swapping loop In a next step If in step Otherwise, in step The process described hereinabove and illustrated in The method described in Performance Results Results are shown for a typical random (RAN) interleaver with no data puncturing, a typical high spread random (HSR) interleaver with no data puncturing, the same HSR interleaver with regular 1-in-8 data puncturing for the second (non-interleaved) code, and a modified HSR interleaver, denoted as HSR(M=8), constrained so that the effective 1-in-8 data puncturing for the first (interleaved) code is also regular. With no data puncturing, only 1-in-16 parity bits are kept. With 1-in-8 data puncturing, 1-in-8 parity bits are kept, so that the overall code rate remains R=8/9. The encoding method and system of the present invention utilizing puncture-constrained interleaving provides therefore considerable performance advantages compared to prior art encoders with conventional, i.e. puncture mask independent, interleavers, without requiring more complex hardware or software. Moreover, the interleaving method of the present invention is free from the limitations of the l-bit periodic interleaver disclosed by Chatzigeorgiou et al in a paper “Punctured Binary Turbo-Codes with Optimized Performance”, Proceedings of the 62nd IEEE Vehicular Technology Conference (VTC Fall 2005), Dallas, USA, Sep. 25-28, 2005, and therefore will provide better error rate and convergence performance. Indeed, utilizing the l-bit periodic interleaver of Chatzigeorgiou requires the puncture pattern B for the interleaved stream to be identical to the puncture pattern A for the non-interleaved stream. However, asymmetric turbo codes having different puncture patterns for the interleaved and non-interleaved data are known to enable better convergence than symmetric turbo codes wherein A=B. Advantageously, the present invention enables to use the puncture location sets A and B that differ from each other, for example as illustrated in The description hereinabove has concentrated on classical turbo codes where the two constituent codes are concatenated in parallel. That is, the data symbols permuted by the interleaver are mainly just the information bits, possibly with a few other bits such as trellis termination bits for example. However, the method and apparatus of the present invention are generally applicable to other turbo-like codes that use interleaving and puncturing of the interleaved symbols. For example, it is also applicable to serial concatenated turbo codes. In this case the puncture-constrained interleaver of the present invention permutes both the information symbols and some or all of the parity symbols from the outer encoder, and then all these permuted symbols are encoded by the first, or inner constituent code. If the outer code is non-systematic then the puncture-constrained interleaver permutes only parity symbols from the outer encoding. In any case, with the data symbols being defined in the context of this specification as those symbols permuted by the puncture-constrained interleaver, the invention can be applied to any turbo-like code to obtain regular puncturing of both the non-interleaved and interleaved data symbols. For example, in some embodiments of the invention the number of constituent codes is more than 2, and the number of interleavers between these codes is more than one. The method of the present invention is easily extended to more than one interleaver so that regular repeating m-in-M data puncturing can be associated with two or more constituent code. While a spread constraint of some kind is usually important for good interleaver designs, it is not required in the context of the present invention and is thus optional. Other constraints could also be applied, instead of, or in addition to, the spread constraint. For example, codeword distance testing can also be used to improve the distance properties of the overall turbo code. This in turn should improve the error flare performance of the turbo code. The data symbols d(i) received by the encoder and permuted by the interleaver can be binary, e.g. bits, or non-binary symbols or multi-binary symbols. For example, they can be double-binary symbols used in the recent digital video broadcast—return channel satellite (DVB-RCS) standard. In one embodiment, the puncture-constrained interleaver of the present invention may include a symbol interleaver that operates on the double-binary symbols. A second level of interleaving operates on the bits within the symbols. In this case there is an equivalent overall bit interleaver, and thus the invention can be used as described hereinabove on the equivalent bit interleaver. Data puncturing can effectively be performed on the double-binary symbols or on the individual bits by specifying the appropriate puncture masks at the bit level. If two bits in the same symbol are punctured then the entire symbol is effectively punctured. For systems using non-binary symbols, the puncture-constrained interleaver would be a symbol interleaver and data puncturing would be performed on the symbols. The present invention has been fully described in conjunction with the exemplary embodiments thereof with reference to the accompanying drawings. It should be understood that each of the preceding embodiments of the present invention may utilize a portion of another embodiment, and should not be considered as limiting the general principals discussed herein. Of course numerous other embodiments may be envisioned without departing from the spirit and scope of the invention; it is to be understood that the various changes and modifications to the aforedescribed embodiments may be apparent to those skilled in the art. Such changes and modifications are to be understood as included within the scope of the present invention as defined by the appended claims, unless they depart therefrom. Patent Citations
Non-Patent Citations
Referenced by
Classifications
Legal Events
Rotate |