METHOD AND SYSTEM FOR ERROR CORRECTION IN TRANSMITTING DATA USING LOW COMPLEXITY SYSTEMATIC ENCODER
20190165887 ยท 2019-05-30
Inventors
Cpc classification
H03M13/6522
ELECTRICITY
H03M13/05
ELECTRICITY
H03M13/1148
ELECTRICITY
International classification
H04L1/00
ELECTRICITY
Abstract
A systematic polar encoder with data checks includes a data mapper receiving input data containing information to be polar coded for transmission and generating modified data, and a nonsystematic polar encoder implementing a transform matrix encoding the modified data to produce a codeword x such that, for some sub-sequence of coordinates S, x.sub.S=d. For nonsystematic encoding, a transform input u includes first and second parts for words independent of the data, the second part for an inverse puncture word, a third part carrying the modified data, and a non-null part carrying a check word derived from the modified data. A transform output includes a punctured part for a puncture word, a part carrying the data, and a part serving as redundant symbols, with the codeword x related to the transform output by x=z.sub.Q where Q is the complement of the punctured part P.
Claims
1. A systematic polar encoder with data checks, comprising: an input configured to receive an input data word d containing information to be transmitted; an encoder circuit configured to produce a codeword x such that an encoding operation by the encoder circuit utilizes a transform matrix G, and a transform input u that includes a part u.sub.F satisfying u.sub.F=b for a fixed word b that is independent of the data word d, a part u.sub.T satisfying u.sub.T=t for an inverse puncture word t that is a fixed word independent of the data word d, a part u.sub.I satisfying u.sub.I=d for a modified data word d that is derived from the data d, and a part u.sub.C satisfying u.sub.C=f(d) where f is a check generator function that operates on the modified data word d and generates a non-void check word, the transform input u having associated with it a transform output z, wherein the transform output z is related to the transform input u by z=uG, the transform output z including a punctured part z.sub.P satisfying z.sub.P=p for a puncture word p that is one of a void fixed word and a non-void fixed word, a part z.sub.J satisfying z.sub.J=d, and a part z.sub.R serving as redundant symbols, wherein systematic encoding of the data word d is achieved by combining the part z.sub.J=d and the part z.sub.R of the transform output z in a predetermined order to form the codeword x; and an output for transmission of the codeword x.
2. The systematic polar encoder with data checks according to claim 1, wherein the encoding operation comprises forming a vector w with w.sub.T, =t, w.sub.J=d and w.sub.R=e for some arbitrary word e, computing v=wG.sup.1, and obtaining the modified data word d by setting d=v.sub.I.
3. The systematic polar encoder with data checks according to claim 1, wherein the transform matrix G has a form A(F.sub.1.Math.G.sub.1)B.sup.T, wherein A is a permutation matrix, F.sub.1 is a first kernel transform, G.sub.1 is a first-tier transform, B is a permutation matrix, the first kernel transform F.sub.1 has a size greater than one, the first-tier transform has a size smaller than a size of the transform G, and the computation of v is simplified by taking advantage of the special structure of G.
4. The systematic polar encoder with data checks according to claim 3, wherein the first-tier transform G.sub.1 is the Kronecker product of a plurality of kernel transforms: G.sub.1=F.sub.2.Math. . . . .Math.F.sub.n, wherein each of the plurality of kernel transforms has a size greater than one.
5. The systematic polar encoder with data checks according to claim 4, wherein F.sub.i=F.sub.1, for all 2in.
6. The systematic polar encoder with data checks according to claim 5, wherein
7. The systematic polar encoder with data checks according to claim 6, wherein A or B is the identity matrix.
8. A systematic polar encoder with data checks, comprising: a data mapper configured to receive an input data word d containing information to be polar coded for transmission and generate a modified data word d; a nonsystematic polar encoder configured to receive the modified data word d and generate a transform output z for a codeword x, the nonsystematic polar encoder implementing a transform matrix G that encodes the modified data word d to produce the transform output z for the codeword x such that, for some sub-sequence of coordinates S, x.sub.S=d, wherein the transform matrix G is constrained by an input partition (F,C,I,T), where |C|>0, and an output partition (P,J,R) so that G.sub.I,P=0, G.sub.C,P=0, G.sub.F,P=0, and G.sub.T,P is invertible; and a transceiver configured to transmit the codeword x.
9. The systematic polar encoder with data checks according to claim 8, further comprising: a polar transform configured to implement a transform matrix G to produce a transform output z, wherein the systematic polar encoder is configured to determine the codeword x at least in part from the transform output z of the transform matrix G, wherein the transform output z comprises a punctured part z.sub.P satisfying z.sub.P=p for a puncture word p, the puncture word p being independent of the data word d and one of a void fixed word and a non-void fixed word, a part z.sub.J serving to carry data corresponding to the input data word d, and a part z.sub.R serving as redundant symbols to protect the carried data, the part z.sub.J and the part z.sub.R combined in a predetermined order to form the codeword x.
10. The systematic polar encoder with data checks according to claim 9, wherein a transform input u for the transform matrix G, related to the transform output z by u=zG.sup.1, has a part u.sub.F satisfying u.sub.F=b for a frozen word b that is a fixed word independent of the data word d, a part u.sub.C comprising a data check c comprising an output of a check generator function f operating on the modified data word d and having at least one element that depends on the modified data word d, a part u.sub.I comprising the modified data word d, and a part u.sub.T satisfying u.sub.T=p(G.sub.T,P).sup.1.
11. The systematic polar encoder with data checks according to claim 10, wherein the transform matrix G, the input partition (F,C,I,T), and the output partition (P,J,R) are selected such that the check generator function f is an affine function.
12. The systematic polar encoder with data checks according to claim 10, wherein the transform matrix G, the input partition (F,C,I,T), and the output partition (P,J,R) are selected such that G.sub.I,J is invertible, G.sub.C,J=0, and G.sub.F,J=0.
13. The systematic polar encoder with data checks according to claim 12, wherein the generator matrix G has a form A(F.sub.1.Math.G.sub.1)B.sup.T, wherein A is a permutation matrix, F.sub.1 is a first kernel transform, G.sub.1 is a first-tier transform, B is a permutation matrix, the first kernel transform F.sub.1 has a size greater than one, the first-tier transform has a size smaller than a size of the transform G, and the computation of the transform output z is simplified by taking advantage of the special structure of G.
14. The systematic polar encoder with data checks according to claim 13, wherein the first-tier transform G.sub.1 is the Kronecker product of a plurality of kernel transforms: G.sub.1=F.sub.2.Math. . . . .Math.F.sub.n, wherein each of the plurality of kernel transforms has a size greater than one.
15. The systematic polar encoder with data checks according to claim 14, wherein F.sub.i=F.sub.1, for all 2in.
16. The systematic polar encoder with data checks according to claim 15, wherein
17. The systematic polar encoder with data checks according to claim 16, wherein A or B is the identity matrix.
18. A method, comprising: receiving an input data word d containing information to be polar coded for transmission at a data mapper; generating a modified data word d using the data mapper; receiving the modified data word d at a nonsystematic polar encoder; generating, using the nonsystematic polar encoder, a transform output z for a codeword x by a transform matrix G that encodes the modified data word d to produce the transform output z for the codeword x such that, for some sub-sequence of coordinates S, x.sub.S=d, wherein the transform matrix G is constrained by an input partition (F,C,I,T), where |C|>0, and an output partition (P,J,R) so that G.sub.I,P=0, G.sub.C,P=0, G.sub.F,P=0, and G.sub.T,P is invertible; and transmitting the codeword x using a transceiver.
19. The method according to claim 18, further comprising: employing a polar transform implementing the transform matrix G to produce a transform output z, wherein the codeword x is determined at least in part from the transform output z, wherein the transform output z comprises a punctured part z.sub.P satisfying z.sub.P=p for a puncture word p, the puncture word p being independent of the data word d and one of a void fixed word and a non-void fixed word, a part z.sub.J serving to carry data corresponding to the input data word d, and a part z.sub.R serving as redundant symbols to protect the carried data, the part z.sub.1 and the part z.sub.R combined in a predetermined order to form the codeword x.
20. The method according to claim 19, wherein a transform input u for the transform matrix G, related to the transform output z by u=zG.sup.1, has a part u.sub.F satisfying u.sub.F=b for a frozen word b that is a fixed word independent of the data word d, a part u.sub.C comprising a data check c comprising an output of a check generator function f operating on the modified data word d, and having at least one element that depends on the modified data word d, a part u.sub.I comprising the modified data word d, and a part u.sub.T satisfying u.sub.T=p(G.sub.T,P).sup.1.
21. The method according to claim 20, wherein the transform matrix G, the input partition (F,C,I,T), and the output partition (P,J,R) are selected such that the check generator function f is an affine function.
22. The method according to claim 20, wherein the transform matrix G, the input partition (F,C,I,T), and the output partition (P,J,R) are selected such that G.sub.I,J is invertible, G.sub.C,J=0, and G.sub.F,J=0.
23. The method according to claim 22, wherein the transform matrix G has a form A(F.sub.1.Math.G.sub.1)B.sup.T, wherein A is a permutation matrix, F.sub.1 is a first kernel transform, G.sub.1 is a first-tier transform, B is a permutation matrix, the first kernel transform F.sub.1 has a size greater than one, the first-tier transform has a size smaller than a size of the transform G, and the computation of the transform output z is simplified by taking advantage of the special structure of G.
24. The method according to claim 23, wherein the first-tier transform G.sub.1 is the Kronecker product of a plurality of kernel transforms: G.sub.1=F.sub.2.Math. . . . .Math.F.sub.n, wherein each of the plurality of kernel transforms has a size greater than one.
25. The method according to claim 24, wherein F.sub.i=F.sub.1, for all 2in.
26. The method according to claim 25, wherein
27. The method according to claim 26, wherein A or B is the identity matrix.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0030] For a more complete understanding of the present disclosure and its advantages, reference is now made to the following description taken in conjunction with the accompanying drawings, in which like reference numerals represent like parts:
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
DETAILED DESCRIPTION
[0041]
[0042] In accordance with established conventions in coding theory, data words, parity words, and codewords in the system are represented herein as vectors over a finite field F.sub.q where q denotes the number of elements in the field. Field elements (scalars) are denoted by plain lower case letters, such as aF.sub.q. Vectors over a field are denoted by lower-case boldface letters, such as aF.sub.q.sup.N, where N denotes the length of the vector. The notation a.sub.i denotes the ith coordinate of a vector a. The convention that the elements of a vector of length N are indexed with integers 0, 1, . . . , N1 is used. Thus, a vector aF.sub.q.sup.N is denoted in terms of its elements as (a.sub.0, . . . , a.sub.N1) or alternatively as (a.sub.i: 0iN1). Matrices over a field are denoted by upper-case boldface letters, such as AF.sub.q.sup.MN, where M denotes the number of rows and N denotes the number of columns of A. The notation a.sub.i,j denotes the element in the ith row and jth column of A. The elements of a matrix with M rows and N columns are indexed with a pair of integers (i,j), 0iM1, 0jN1. Accordingly, a matrix AF.sub.q.sup.MN is denoted in terms of its elements as (a.sub.i,j: 0iM1, 0jN1). The size of a matrix A is defined as the number of elements in A; thus, the size of a matrix with M rows and N columns is MN. All-zero vectors and all-zero matrices are denoted by 0.
[0043] Often sub-vectors of a given vector or sub-matrices of a given matrix are considered. To specify such sub-vectors or sub-matrices, tuples (ordered lists of distinct indices over a given index set) are used, and denoted by italic upper-case letters such as I, J. The number of elements in a tuple I is denoted by |I|.
[0044] For example, if a=(a.sub.0, a.sub.1, a.sub.2, a.sub.3) and I=(1,3), then a.sub.I=(a.sub.1,a.sub.3); whereas, if I=(3,1), then a.sub.I=(a.sub.3,a.sub.1). A similar notation applies to matrices and their sub-matrices. For example, if
I=(1,3), and J=(2,0,3), then
In general, for a vector a=(a.sub.0, a.sub.1, a.sub.2, . . . , a.sub.N1) and a k-tuple I=i.sub.1, i.sub.2, . . . i.sub.k) of indices over {0, 1, . . . , N1}, a.sub.I denotes the sub-vector (a.sub.i.sub.
with M rows and N columns, an m-tuple I=(i.sub.1, i.sub.2, . . . , i.sub.m) over {0, 1, . . . , M1}, and an n-tuple J=(j.sub.1, j.sub.2, . . . , j.sub.n) over {0, 1, . . . , N1}, the notation A.sub.I,J denotes the sub-matrix
[0045] A tuple of tuples (I.sub.1, I.sub.2, . . . , I.sub.n) is called a partition of the index set {0, 1, . . . , N1} if each index 0iN1 belongs to one and only one of the tuples I.sub.j, and each element of each tuple I.sub.j belongs to the index set {0, 1, . . . , N1}. Every partition (I.sub.1, I.sub.2, . . . , I.sub.n) of {0, 1, . . . , N1} partitions each vector a=(a.sub.0, a.sub.1, a.sub.2, . . . , a.sub.N1) into n (disjoint) sub-vectors a.sub.I.sub.
[0046] The product of a row vector aF.sub.q.sup.M and a matrix AF.sub.q.sup.MN is denoted as aA. The Kronecker product of two matrices AF.sub.q.sup.mr and BF.sub.q.sup.kl is defined as:
which is an mk-by-rl matrix. A matrix C is said to factorize into a Kronecker product of a matrix A and B if C=A.Math.B. The nth Kronecker power of a matrix A is defined recursively as A.sup..Math.n=A.Math.A.sup..Math.(n1) for n2, with A.sup..Math.1=A.
[0047] Encoding operations comprise various transformations of vector representations of data words, parity words, and codewords. The term transform is used below to refer to linear vector space transformations. Transforms are represented by matrices. Transforms are usually cited below together with a specific matrix representation; for example, transform G refers to a transform that is represented by the matrix G in a specific basis.
[0048] For an integer i in the range 0i2.sup.n1, b.sub.n1b.sub.n2 . . . b.sub.0 is the binary expansion of i if b.sub.m is 0 or 1 for each 0mn1 and
For any two integers i,j in the range 0i, j2.sup.n1, the notation ij is used to indicate that the binary expansion b.sub.n1b.sub.n2 . . . b.sub.0 of i dominates the binary expansion b.sub.n1b.sub.n2 . . . b.sub.0 of j in the sense that b.sub.mb.sub.m for all 0mn1. The notation i
j and the phrase i dominates j are used synonymously. The relation
on the set of integers in the range 0 to 2.sup.n1 defines a partial order. It is reflexive: i
i for every i; antisymmetric: if i
j for distinct i and j, then the converse j
i cannot be true; and transitive: if i
j and j
k, then i
k. The relation
is a partial order (as opposed to a total order) in the sense that there are integers i and j for which neither i
j nor j
i is true. For example, neither 14 (which is 1110 in binary) nor 7 (which is 0111 in binary) dominates the other.
[0049] A special type of transform that is important for polar coding is the transform F.sup..Math.n where
and F.sup..Math.n is the nth Kronecker power of F. A well-known [Arik1] property links F.sup..Math.n with the domination relation between binary expansions: we have (F.sup..Math.n).sub.i,j=1 if and only if ij, where the rows and columns are indexed starting with 0 and the indices take values in the range 0i, j2.sup.n1. For example, with n=3, we have
and (F.sup..Math.3).sub.6,5=0 since 65 is false, while (F.sup..Math.3).sub.7,j=1 since 7
j for all 0j7.
[0050] A key property of the transform F.sup..Math.n that is important for present principles is that for any tuple of k (distinct) coordinates, such as A=(a.sub.1, a.sub.2, . . . , a.sub.k), the submatrix (F.sup..Math.n).sub.A,A is invertible. This can be seen by observing that if the elements of A are in ascending order, a.sub.1<a.sub.2< . . . <a.sub.k, then A is lower triangular with 1s on the diagonal. If A is not in ascending order, one may consider the tuple that has the coordinates in A in the ascending order. Since (F.sup..Math.n).sub.A,A and (F.sup..Math.n).sub., differ only by a permutation of rows and columns, one is invertible if and only if the other is invertible.
[0051] A second key property of the transform F.sup..Math.n is that, for any two tuples A=(a.sub.1, a.sub.2, . . . , a.sub.k) and B=(b.sub.1, b.sub.2, . . . , b.sub.m) the submatrix (F.sup..Math.n).sub.A,B equals the all-zero matrix if and only if no element a.sub.i of A dominates any element b.sub.j of B; that is, (F.sup..Math.n).sub.A,B=0 if and only if a.sub.i.Math.b.sub.j is false for every 1ik and 1jm.
[0052] With the above in mind, initially referring to
[0053] It is to be understood that present principles apply to various transmission systems and media. For example, in a wireless communication system, the transmission medium 30 typically is space or the atmosphere, in which case the communication system 10 is a wireless communication system. In such embodiments, the transmission system 20 and reception system 40 each include antenna(s) coupled respectively to the transmitter 150 and receiver 160. However, other embodiments of the present disclosure may be implemented in wired communications systems, in which case the transmission medium 30 may be a cable or a wire that connects the transmission system 20 to the reception system 40. Embodiments of the present disclosure may also be implemented for storage systems, in which case the transmission medium 30 may be a magnetic tape, a hard disk drive, an optical disk drive, a solid state memory, or another storage medium.
[0054] As will be apparent to those of skill in the art, input data 110 is ordinarily input into the transmission system 20 for eventual transmission to the reception system 40. A source encoder 120 compresses input data 110 so that the amount of data that must be transmitted is reduced. Data output from the source encoder 120 is then encoded by a channel encoder 130, which is configured as described in further detail below. Such encoding renders the data to be transmitted more robust against errors that may be introduced during transmission across the transmission medium 30. In accordance with present principles, the channel encoder 130 implements a systematic encoder. After such encoding, the data is modulated by a modulator 140 and provided to a transmitter 150 for transmission through the transmission medium 30 to the reception system 40. The transmitter 150 has the task of converting information into signals capable of being transmitted across the transmission medium 30. For example, the transmitter 150 may be a radio frequency (RF) radio transmitter with an antenna when the transmission medium 30 is airwaves or the transmitter 150 may be a laser device sending light into a fiber-optic cable.
[0055] The reception system 40 generally receives signals from the transmission medium 30 and demodulates and decodes them to extract the output data 195. With more specificity, a receiver 160 of the reception system 40 receives signals from the transmission system 20 and passes the signals to a demodulator 170, which demodulates the received signals. The demodulated signals are then sent to a channel decoder 180, which produces a decoded data as an estimate of the transmitted data, and then the decoded data is sent to a source decoder 190 to decompress (and optionally verify) the data. It will readily be appreciated that the demodulator 170, channel decoder 180, and source decoder 190 perform the inverse of the operations performed by the modulator 140, channel encoder 130, and source encoder 120, respectively, subject to limitations imposed by noise effects and other non-idealities in the system. In any case, if the communication system 10 is properly designed and operated within its design parameters, extracted output data 195 should match the input data 110 with high reliability.
[0056] According to present principles, each component 120, 130, 140, and 150 of the transmission system 20 and each component 160, 170, 180, and 190 of the reception system 40 comprises electrical circuits and may be implemented on its own respective semiconductor chip, with the various chips communicating with each other according to the system of
[0057] Turning to
[0058] Turning to
[0059] One problem addressed by the present disclosure is the construction of a data mapper that turns a non-systematic encoder with data checks into a systematic encoder with data checks. It is to be noted that a direct implementation of such a data mapper may be prohibitively complex due to the inclusion of redundancy as part of the encoding process. Present principles described herein address the development of a low-complexity method for implementing such a data mapper for the case of polar codes, which is the primary application domain for subject matter of the present disclosure.
[0060]
[0061] The non-systematic polar encoder 400 includes as processing blocks a check generator 410, a transform input assembler 420, a polar transform G 430, and a puncturer 440. Those processing blocks operate on a number of sequences of symbols (signals), including a data d 401, a codeword x 402, a fixed word b 403, a check word c 404, and an inverse puncture word t 405.
[0062] The non-systematic polar encoder 400 receives, as input, a data d 401 and produces, as output, a codeword x 402.
[0063] The fixed word b 403 is a fixed pattern of symbols independent of the data d 401.
[0064] The check generator 410 computes a check word c 404 from the data d 401 by computing c=f(d), where f is a function independent of the data d 401.
[0065] The inverse puncture word t 405 is a fixed pattern of symbols independent of the data d 401.
[0066] The transform input assembler 420 receives the data d 401, the fixed word b 403, the check word c 404, and the inverse puncture word t 405, and produces the transform input u 406. The multiplexing operation by the transform input assembler 420 is characterized by an input partition (F,C,I,T), which is a partition of the index set {0, 1, . . . , N1} of the input vectors of the polar transform G 430. The transform input assembler 420 assembles the transform input u 406 in accordance with the partition (F,C,I,T) so that u.sub.F=b, u.sub.C=c, u.sub.I=d, and u.sub.T=t.
[0067] The polar transform G 430 implements a transform operation represented by a polar transform matrix G, where in the most general form of the present principles G is an arbitrary invertible matrix with N rows and N columns, for some positive integer N. However, present principles are applicable at low complexity only if G has a special structure, as described below.
[0068] It is to be noted that the present disclosure uses the convention of labeling the rows and columns of the transform matrix G by the integers {0, 1, . . . , N1} solely for convenience of notation in the presentation of present principles. It will be clear that alternative labeling conventions may be used in actual embodiments of present principles.
[0069] In preferred embodiments of present disclosure, the polar transform matrix G 430 is given by the Kronecker product of a plurality of matrices, each of which has a size smaller than a size of G, so as to render computation of the transform at low-complexity possible by using recursive computational methods.
[0070] Preferred embodiments are applicable with advantage whenever the transform matrix has the form G=A(F.sub.1.Math.G.sub.1)B.sup.T, wherein A is a permutation matrix, F.sub.1 is a first kernel transform, G.sub.1 is a first-tier transform, B is a permutation matrix, the first kernel transform F.sub.1 has a size greater than one, and the first-tier transform G.sub.1 has a size smaller than a size of the transform G. A common choice for the preferred embodiments of present principles is to take A and B as the identity permutation.
[0071] In a first type of a most preferred embodiment of present principles, the transform matrix has the form G=F.sup..Math.n, where
and all transform operations are carried out in the binary field F.sub.2. In this case, the number of rows and columns is constrained to be a power of two, N=2.sup.n. (The need for puncturing arises in order to set the length of the codewords to integer values other than powers of two. The present disclosure describes how to carry out specific methods of puncturing in combination with systematic encoding of data.)
[0072] In a second type of most preferred embodiment of present principles, the transform matrix has the form G=AF.sup..Math.nB.sup.T, where A or B is a bit reversal permutation, as defined in [Arik1].
[0073] The polar transform G 430 takes as input the transform input u 406 and produces a transform output z 407, the transform output z 407 being related to the transform input u 406 by the functional relationship z=uG. The transform output z 407 is processed by a puncturer 440, the puncturer 440 being characterized by an output partition (P,Q), the output partition (P,Q) being a partition of the index set {0, 1, . . . , N1} of vectors in the range space of the polar transform G 430.
[0074] The codeword x 402 is obtained from the transform output z 407 by setting x=z.sub.Q, which corresponds to puncturing the part z.sub.P.
[0075] In some forms of puncturing, such as in [Wang, Huaw3], and in preferred embodiments of present principles, the puncturing operation includes a constraint of the form z.sub.P=p, where p is a fixed word independent of the data d 401. The non-systematic encoder 400 accommodates such a constraint by computing the inverse puncture word t 405 as a function of p and substituting the constraint u.sub.T=t in place of z.sub.P=p.
[0076] Turning to
[0077] The systematic polar encoder 500 includes a data mapper 510 and a non-systematic polar encoder with data checks and puncturing 520. The non-systematic polar encoder 520 is a non-systematic polar encoder such as the non-systematic polar encoder with data checks and puncturing 400 in
[0078] The data mapper 510 receives a data d 501 and converts it into a modified data d 503, which in turn is received as input by the non-systematic polar encoder 520 and encoded into a codeword x 502. The systematic polar encoder 500 is systematic in the sense that there is a fixed tuple S such that x.sub.S=d.
[0079] Embodiments of present principles described below aim to turn a given non-systematic polar encoder 520 into a systematic polar encoder as in
[0080] Before presenting specific embodiments of present rules, the underlying principles will be explained by carrying out a mathematical analysis of the relationship between the data mapper 510 and the non-systematic encoder 520. This analysis will reveal sufficient conditions to render practical implementations of the systematic polar encoder 500 possible.
[0081] In the analysis of the systematic polar encoder 500 that follows, it will be assumed that the non-systematic polar encoder 520 is a non-systematic polar encoder 400 of the type shown in
[0082] Turning to the analysis, note that the encoding operation is carried out under the following constraints. First, there is the transform relationship:
z=uG(1)
Second, the transform input is assembled from its various parts as
u.sub.T=t(2)
u.sub.I=d(3)
u.sub.C=c=f(d)(4)
u.sub.F=b(5)
Third, there is the systematic encoding constraint that the data appear as part of the transform output:
z.sub.J=d(6)
Finally, preferred embodiments of present principles impose a constraint of the form
z.sub.P=p(7)
on the puncturing operation, where p is a fixed pattern independent of the data d. The system of Eq. (1) through (7) constitute an overdetermined system in the sense that there are more equations than the number of degrees of freedom, which is equal to N. However, in preferred embodiments of present principles, Eq. (2) and (7) actually stand for the same constraint by allowing t to be a function of p. Hence, it is possible to satisfy Eq. (1) through (7) simultaneously, provided that the partitions (F,C,I,T) and (P,J,R) are selected properly. The present disclosure describes methods of selecting the partitions that render systematic encoding under the constraints of Eq. (1) through (7) feasible.
[0083] To discuss present principles more thoroughly, it is useful to rewrite the transform relation Eq. (1) in the following form:
z.sub.P=u.sub.TG.sub.T,P+u.sub.IG.sub.I,P+u.sub.CG.sub.C,P+u.sub.FG.sub.F,P(8)
z.sub.J=u.sub.TG.sub.T,J+u.sub.IG.sub.I,J+u.sub.CG.sub.C,J+u.sub.FG.sub.F,J(9)
z.sub.R=u.sub.TG.sub.T,R+u.sub.IG.sub.I,R+u.sub.CG.sub.C,R+u.sub.FG.sub.F,R(10)
Eq (8)-(10) reveal the effect of each part of the transform input on each part of the transform output under the input and output partitions (F,C,I,T) and (P,J,R). A number of design rules emerge by inspecting Eq. (2) through (10), as stated below. These design rules form the mathematical basis of present principles.
[0084] Design Rule 0:
[0085] Choose the transform matrix G and the input partition (F,C,I,T) and the output partition (P,J,R) so that G.sub.I,P=0, G.sub.C,P=0, G.sub.F,P=0, and G.sub.T,P is invertible.
[0086] Remark:
[0087] Design Rule 0 ensures that p and t stand in one-to-one relationship to each other by the relations p=tG.sub.T,P and t=p(G.sub.T,P).sup.1, as can be seen readily from Eq. (2), (7), and (8).
[0088] Design Rule 1:
[0089] Choose the transform matrix G, the input partition (F,C,I,T), and the output partition (P,J,R) so that, in addition to Design Rule 0 being satisfied, the check generator Eq. (4) is an affine function of the form
u.sub.C=u.sub.IE+e,(11)
and (G.sub.I,J+EG.sub.C,J) is an invertible matrix.
[0090] Remark:
[0091] Under Design Rule 1, it follows from Eq. (2) through (7) and Eq. (9) that
d=(dtG.sub.T,JeG.sub.C,JbG.sub.F,J)(G.sub.I,J+EG.sub.C,J).sup.1(12)
Eq. (12) defines a data mapper that can be used in the role of the data mapper 510 in
A First Embodiment of the Systematic Polar Encoder 500
[0092] The first embodiment assumes that Design Rule 1 is satisfied. The data mapper 510 in this embodiment is based on Eq. (12), which can be written in a simpler form as
d=dD+a(13)
where D=(G.sub.I,J+EG.sub.C,J).sup.1 and a=(tG.sub.T,JeG.sub.C,JbG.sub.F,J)(G.sub.I,J+EG.sub.C,J).sup.1. The matrix D and the vector a are independent of the data d, so they can be precomputed and the data mapping operation Eq. (13) consists of computing an affine transform of the data d.
[0093] In this embodiment, after obtaining the modified data d 503 by Eq. (13), systematic polar encoding can be completed by employing any available non-systematic encoder in place of the non-systematic encoder 520. If a non-systematic encoder is not available, or as an alternative to an existing non-systematic encoder, the non-systematic encoder 520 can be realized by assembling the transform input u 406 in accordance with Eq. (2) through (5), and computing the transform output z 407 in accordance with Eq. (1). Once the transform output z 407 is available, the codeword x 402 is obtained by setting x=z.sub.Q where Q=(J,R) is the complement of the punctured indices P.
[0094] The first embodiment mainly serves a proof-of-concept purpose by showing that a data mapper can be implemented by computing Eq. (13). For practical applications, the first embodiment may be too complex since the matrix D that appears in Eq. (13) may not have any structure that can be exploited for reducing complexity of computations. A direct computation of dD has a computational complexity on the order of the size of matrices involved, which for a code of length N may run into order N.sup.2. In refinements of the first embodiment, further structure is imposed on the transform matrix G to bring down computational complexity to practical levels.
[0095] Design Rule 2:
[0096] The transform matrix G, the input partition (F,C,I,T), and the output partition (P,J,R) are chosen so that, in addition to Design Rule 0 being satisfied, G.sub.I,J is invertible, G.sub.C,J=0, and G.sub.F,J=0.
[0097] Remark:
[0098] Under Design Rule 2, Eq. (13) simplifies to
d=d(G.sub.I,J).sup.1tG.sub.T,J(G.sub.I,J).sup.1.(14)
Eq. (14) defines an alternative data mapper that will be explored in a second embodiment of present principles.
A Second Embodiment of Systematic Polar Encoder 500
[0099] The second embodiment assumes that the system under discussion conforms to Design Rule 2. This embodiment uses a data mapper based on Eq. (14). The rest of the systematic encoding operation can be completed in the same manner as in the first embodiment.
[0100] A direct computation of Eq. (14) may still be too complex for practical purposes. A third embodiment of present principles below organizes the computations in the second embodiment in a different manner with the goal of taking advantage of a structure that may exist in the transform G, which proves useful when working directly with the matrix (G.sub.I,J).sup.1 as in Eq. (14) does not allow taking advantage of such structure readily.
A Third Embodiment of Systematic Polar Encoder 500
[0101] The third embodiment refines the computational method of the second embodiment and constitutes a most preferred embodiment of present principles.
[0102] Consider the matrix
The matrix {tilde over (G)} is obtained by permuting the rows and columns of G:
{tilde over (G)}=AGB.sup.T(16)
where A and B are permutation matrices. Assuming that G is invertible, {tilde over (G)} is also invertible and
({tilde over (G)}).sup.1=BG.sup.1A.sup.T,(17)
as can be verified by direct computation and noting that the inverse of a permutation matrix equals its transpose.
[0103] Under Design Rule 2, the matrix {tilde over (G)} has an upper triangular form
It is well known that an invertible upper-triangular matrix has an inverse which is also upper-triangular. Thus, the inverse of {tilde over (G)} has the form
where * denotes a generic submatrix whose particular form does not have any significance for present purposes. Note that Eq. (19) assumes that the inverses of G.sub.T,P and G.sub.I,J exist, which is guaranteed to be true by Design Rule 2.
[0104] A third embodiment comprises the following data mapper.
A preferred embodiment of the data mapper 510 will:
[0105] 1) Receive as input the data d 501;
[0106] 2) Prepare a transform word w such that w.sub.P=p, w.sub.J=d, and w.sub.R=0;
[0107] 3) Compute v=wG.sup.1; and
[0108] 4) Output v.sub.I as the modified data d 503.
[0109] Proposition.
[0110] The data mapper in the preceding paragraph implements the data mapping operation as specified by Eq. (14); in other words, the output at step 4) satisfies v.sub.I=dD+a with D=(G.sub.I,J).sup.1 and a=tG.sub.T,J(G.sub.I,J).sup.1.
[0111] Proof.
[0112] The equation v=wG.sup.1 can be written as
This shows that
v.sub.I=w.sub.P(G.sub.T,P).sup.1G.sub.T,J(G.sub.I,J).sup.1+w.sub.J(G.sub.I,J).sup.1(21)
Recalling that w.sub.P=p, w.sub.J=d, and tG.sub.T,P=p, Eq. (21) is equivalent to
v.sub.I=p(G.sub.T,P).sup.1G.sub.T,J(G.sub.I,J).sup.1+d(G.sub.I,J).sup.1=tG.sub.T,J(G.sub.I,J).sup.1+d(G.sub.I,J).sup.1.(22)
The proof is complete.
[0113] Remark:
[0114] The above proof makes it evident that the submatrices in Eq. (19) denoted by * play no role in this context.
[0115] The question that arises is whether there is any advantage to computing d as part of a larger transform operation as in Eq. (20) instead of directly as in Eq. (14). It may appear that the calculation by Eq. (20) is more involved than Eq. (14) since it involves operations on larger matrices. However, if G.sup.1 has a structure that can be exploited to simplify the calculations, then Eq. (20) can readily take advantage of this, while in Eq. (14) the derived matrix D may have no structure left that can readily be exploited. Present principles recognize that embedding the data mapping operation into a larger matrix operation may simplify the calculations significantly.
[0116] In this third embodiment, once the modified data d 503 is computed by a data mapper, it is provided as input to the non-systematic polar encoder 520, which may be any given encoder or implemented directly as discussed in connection with the first embodiment above. The exact nature of how the non-systematic polar encoder 520 is implemented is a side issue for present purposes. Present principles are directed primarily at providing an implementation of the data mapper 510 at low-complexity.
[0117] A class of codes that can benefit readily from present principles is the class of polar codes [Arik1]. In the case of polar codes, the transform matrix is of the form G=F.sup..Math.n where
is called the kernel of the construction. The following properties of the polar transform are well known [Arik1]. The transform matrix has elements G.sub.i,j such that G.sub.i,j=1 if ij and G.sub.i,j=0 otherwise. The inverse transform G.sup.1 equals G, and for any given u, the forward transform uG and its inverse uG.sup.1 can be computed using order N log N logic operations.
[0118] Turning to
[0119] The polar transform 600 receives a transform input u 601 and outputs a transform output z 602. The transform input u 601 and the transform output z 602 are signals consisting of 16 Boolean variables which may be implemented using standard logic gates. The polar transform 600 operates using standard digital logic circuitry and comprises exclusive-or gates as the main data processing elements. The computation carried out by the polar transform is equivalent to the matrix operation z=uG in the binary field F.sub.2.
[0120] While still looking at
Example
[0121] Consider a systematic polar encoder as in
[0122] Suppose that the input partition (F,C,I,T) and the output partition (P,J,R) are specified as follows:
T=P=(7,11,15)=(0111,1011,1111)
I=J=(3,12,13,14)=(0011,1100,1101,1110)
C=(6,9,10)=(0110,1001,1010)
F=(0,1,2,4,5,8)=(0000,0001,0010,0100,0101,1000)
R=(F,C)=(0,1,2,4,5,8,6,9,10)=(0000,0001,0010,0100,0101,1000,0110,1001,1010)
In writing the partition elements, the binary representations of the indices have also been given in order to facilitate checking if G.sub.i,j=1. (Recall that G.sub.i,j=1 if and only if ij holds.)
[0123] Some submatrices of G that are of interest for the present example are
[0124] Note that G.sub.T,P and G.sub.I,J are invertible, as required by Design Rule 2.
[0125] Note also that G.sub.I,P=0, G.sub.C,P=0, G.sub.F,P=0, G.sub.C,J=0, and G.sub.F,J=0.
[0126] Thus, the design choices in this example satisfy all requirements of Design Rule 2.
[0127] Conformance to Design Rule 2 is facilitated by some general properties of the transform G=F.sup..Math.n. Specifically, the invertibility of the submatrices G.sub.T,P=T and G.sub.I,J=I is due to the general property that G.sub.A,A is invertible for any non-empty A. The fact that G.sub.I,P=0 is due to the fact that no element in I dominates any element in P. The same explanation holds for G.sub.C,P=0, G.sub.F,P=0, G.sub.C,J=0, and G.sub.F,J=0.
[0128] It should be clear from the preceding discussion how to select the input partition (F,C,I,T) and the output partition (P,J,R) so that Design Rule 2 will be valid in general with G=F.sup..Math.n for any integer n1.
[0129] Continuing with the example, let b=(0,1,1,0,1,0), p=(1,1,0), and u.sub.C be given by the linear function
[0130] The inverse puncture word t is computed as
[0131] In the second embodiment, the data mapper takes the form
For example, if d=(1,0,1,1), then d=(1,0,1,1).
[0132] In the third embodiment, the data mapper first assembles a w such that w.sub.P=p, w.sub.J=d, w.sub.R=0, then computes v=wG.sup.1, and finally outputs v.sub.1 as d. For example, if d=(1,0,1,1), then
w=(0,0,0,1,0,0,0,1,0,0,0,1,0,1,1,0),
v=wG.sup.1=(1,0,0,1,1,0,0,1,1,0,0,1,0,1,1,0), and
d=v.sub.I=(1,0,1,1).
[0133] Turning to
[0134]
[0135] The third embodiment above can utilize the recursive divide-and-conquer strategy of
[0136]
[0137] Depending on the network type, other well-known terms may be used instead of eNodeB or eNB, such as base station or access point. For the sake of convenience, the terms eNodeB and eNB are used in this patent document to refer to network infrastructure components that provide wireless access to remote terminals. Also, depending on the network type, other well-known terms may be used instead of user equipment or UE, such as mobile station (or MS), subscriber station (or SS), remote terminal, wireless terminal, or user device. For the sake of convenience, the terms user equipment and UE are used in this patent document to refer to remote wireless equipment that wirelessly accesses an eNB, whether the UE is a mobile device (such as a mobile telephone or smartphone) or is normally considered a stationary device (such as a desktop computer or vending machine).
[0138] The eNB 802 provides wireless broadband access to the network 830 for a first plurality of user equipments (UEs) within a coverage area 820 of the eNB 802. The first plurality of UEs includes a UE 811, which may be located in a small business (SB); a UE 812, which may be located in an enterprise (E); a UE 813, which may be located in a WiFi hotspot (HS); a UE 814, which may be located in a first residence (R); a UE 815, which may be located in a second residence (R); and a UE 816, which may be a mobile device (M) like a cell phone, a wireless laptop, a wireless personal digital assistant (PDA), or the like. The eNB 803 provides wireless broadband access to the network 830 for a second plurality of UEs within a coverage area 825 of the eNB 803. The second plurality of UEs includes the UE 815 and the UE 816. In some embodiments, one or more of the eNBs 801-803 may communicate with each other and with the UEs 811-816 using 3G, 4G or 5G, long-term evolution (LTE), LTE-A, WiMAX, or other advanced wireless communication techniques.
[0139] Dotted lines show the approximate extents of the coverage areas 820 and 825, which are shown as approximately circular for the purposes of illustration and explanation only. It should be clearly understood that the coverage areas associated with eNBs, such as the coverage areas 820 and 825, may have other shapes, including irregular shapes, depending upon the configuration of the eNBs and variations in the radio environment associated with natural and man-made obstructions.
[0140] As described in more detail below, one or more of BS 801, BS 802 and BS 803 include 2D antenna arrays as described in embodiments of the present disclosure. In some embodiments, one or more of BS 801, BS 802 and BS 803 support the codebook design and structure for systems having 2D antenna arrays.
[0141] Although
[0142] The example wireless transmit path 20 and receive path 40 depicted in
[0143]
[0144] The UE 816 includes an antenna 905, a radio frequency (RF) transceiver 910, transmit (TX) processing circuitry 915 (which may be the transmit system 20 in
[0145] The RF transceiver 910 receives, from the antenna 905, an incoming RF signal transmitted by an eNB of the network 800. The RF transceiver 910 may down-convert (e.g., within or in connection with demodulator 170) the incoming RF signal to generate an intermediate frequency (IF) or baseband signal which would be sent to the receive (Rx) processing circuitry 925 implementing channel decoder 180 and source decoder 190, which generates a processed signal by filtering, decoding, and/or digitizing the baseband or IF signal. The Rx processing circuitry 925 transmits the processed signal (including output data 195) to the speaker 930 (such as for voice data) or to the main processor 940 for further processing (such as for web browsing data).
[0146] The transmit (Tx) processing circuitry 915 receives, as at least some input data 110, analog or digital voice data from the microphone 920 or other outgoing baseband data (such as web data, e-mail, or interactive video game data) from the main processor 940. The Tx processing circuitry 915 implements source encoder 120 and channel encoder 130 to encode, multiplex, and/or digitize the outgoing data to generate a processed baseband or IF signal. The RF transceiver 910 receives the outgoing processed baseband or IF signal from the Tx processing circuitry 915 and up-converts (e.g., within or in connection with modulator 140) the baseband or IF signal to an RF signal that is transmitted via the antenna 905.
[0147] The main processor 940 can include one or more processors or other processing devices and execute the basic OS program 961 stored in the memory 960 in order to control the overall operation of the UE 816. For example, the main processor 940 could control the reception of forward channel signals and the transmission of reverse channel signals by the RF transceiver 910, the Rx processing circuitry 925, and the Tx processing circuitry 915 in accordance with well-known principles. In some embodiments, the main processor 940 includes at least one programmable microprocessor or microcontroller, while in other embodiments the main processor includes dedicated circuitry (e.g., for systemic and/or non-systematic encoding or decoding processes, puncturing processes, data mapping, etc.) as well as (optionally) programmable logic or processing circuits.
[0148] The main processor 940 is also capable of executing other processes and programs resident in the memory 960, such as operations for channel quality measurement and reporting for systems having 2D antenna arrays as described in embodiments of the present disclosure. The main processor 940 can move data and/or instructions into or out of the memory 960 as required by an executing process. In some embodiments, the main processor 940 is configured to execute the applications 962 based on the OS program 961 or in response to signals received from eNBs or an operator. The main processor 940 is also coupled to the I/O interface 945, which provides the UE 816 with the ability to connect to other devices such as laptop computers and handheld computers. The I/O interface 945 is the communication path between these accessories and the main controller 940.
[0149] The main processor 940 is also coupled to the keypad 950 (which may simply be a single button or may be an array or other set of buttons) and the display unit 955. The operator of the UE 816 can use the keypad 950 to enter data into the UE 816. The display 955 may be a touch screen display or other display capable of rendering text and/or at least limited graphics, such as from web sites, and receiving touch inputs by a user in accordance with known practices. The memory 960 is coupled to the main processor 940, and at least a part of the memory 960 could include a random access memory (RAM), and another part of the memory 960 could include a Flash memory or other read-only memory (ROM).
[0150] Although
[0151]
[0152] As shown in
[0153] The RF transceivers 972a-972n receive, from the antennas 970a-970n, incoming RF signals, such as signals transmitted by UEs or other eNBs. The RF transceivers 972a-972n down-convert (e.g., within or in connection with demodulator 170) the incoming RF signals to generate IF or baseband signals. The IF or baseband signals are sent to the Rx processing circuitry 976 implementing channel decoder 180 and source decoder 190, which generates processed signals by filtering, decoding, and/or digitizing the baseband or IF signals. The Rx processing circuitry 976 transmits the processed signals (including output data 195) to the controller/processor 978 for further processing.
[0154] The Tx processing circuitry 974 receives, as at least some input data 110, analog or digital data (such as voice data, web data, e-mail, or interactive video game data) from the controller/processor 978. The Tx processing circuitry 974 implements source encoder 120 and channel encoder 130 to encode, multiplex, and/or digitize the outgoing baseband data to generate processed signals. The RF transceivers 972a-972n receive the outgoing processed signals from the Tx processing circuitry 974 and up-converts (e.g., within or in connection with modulator 140) the baseband or IF signals to RF signals that are transmitted via the antennas 970a-970n.
[0155] The controller/processor 978 can include one or more processors or other processing devices that control the overall operation of the eNB 802. For example, the controller/processor 978 could control the reception of forward channel signals and the transmission of reverse channel signals by the RF transceivers 972a-972n, the Rx processing circuitry 976, and the Tx processing circuitry 974 in accordance with well-known principles. The controller/processor 978 could support additional functions as well, such as more advanced wireless communication functions. Any of a wide variety of other functions could be supported in the eNB 802 by the controller/processor 978. In some embodiments, the controller/processor 378 includes at least one microprocessor or microcontroller, while in other embodiments the main processor includes dedicated circuitry (e.g., for systemic and/or non-systematic encoding processes, puncturing processes, data mapping, etc.) as well as (optionally) programmable logic or processing circuits.
[0156] The controller/processor 978 is also capable of executing programs and other processes resident in the memory 980, such as a basic OS. The controller/processor 978 is also capable of supporting channel quality measurement and reporting for systems having 2D antenna arrays as described in embodiments of the present disclosure. In some embodiments, the controller/processor 978 supports communications between entities. The controller/processor 878 can move data and/or instructions into or out of the memory 980 as required by an executing process.
[0157] The controller/processor 978 is also coupled to the backhaul or network interface 982. The backhaul or network interface 982 allows the eNB 802 to communicate with other devices or systems over a backhaul connection or over a network. The interface 982 could support communications over any suitable wired or wireless connection(s). For example, when the eNB 802 is implemented as part of a cellular communication system (such as one supporting 3G, 4G, 5G, LTE, or LTE-A), the interface 982 could allow the eNB 802 to communicate with other eNBs over a wired or wireless backhaul connection. When the eNB 802 is implemented as an access point, the interface 982 could allow the eNB 802 to communicate over a wired or wireless local area network or over a wired or wireless connection to a larger network (such as the Internet). The interface 982 includes any suitable structure supporting communications over a wired or wireless connection, such as an Ethernet or RF transceiver.
[0158] The memory 980 is coupled to the controller/processor 978. Part of the memory 980 could include a RAM, and another part of the memory 980 could include a Flash memory or other ROM. In certain embodiments, a plurality of instructions is stored in memory. The plurality of instructions are configured to cause the controller/processor 978 to perform the systemic and/or non-systematic encoding or decoding processes, puncturing processes, data mapping, etc.
[0159] Although
[0160] While the particular METHOD AND SYSTEM FOR ERROR CORRECTION IN TRANSMITTING DATA USING LOW COMPLEXITY SYSTEMATIC ENCODER is herein described in detail and is depicted in the drawings, it is to be understood that the subject matter which is encompassed by the present disclosure is limited only by the claims. Although the present disclosure has been described with exemplary embodiments, various changes and modifications may be suggested to one skilled in the art. It is intended that the present disclosure encompass such changes and modifications that fall within the scope of the appended claims. The description in the present application should not be read as implying that any particular element, step, or function is an essential or critical element which must be included in the claim scope: the scope of patented subject matter is defined only by the allowed claims. Moreover, none of these claims are intended to invoke 35 USC 112(f) with respect to any of the appended claims or claim elements unless the exact words means for or step for are explicitly used in the particular claim, followed by a participle phrase identifying a function. Use of terms such as (but not limited to) mechanism, module, device, unit, component, element, member, apparatus, machine, system, processor, or controller within a claim is understood and intended to refer to structures known to those skilled in the relevant art, as further modified or enhanced by the features of the claims themselves, and is not intended to invoke 35 U.S.C. 112(f).