METHODS AND SYSTEMS FOR DECODING A DATA SIGNAL BASED ON THE GENERATION OF A DECODING TREE
20170264392 · 2017-09-14
Assignee
Inventors
Cpc classification
H04L1/0052
ELECTRICITY
H04L2025/03426
ELECTRICITY
H04L1/0054
ELECTRICITY
International classification
Abstract
Methods, systems, and computer program products for decoding a received data signal in a communication system by iteratively constructing a decoding tree, each node of said decoding tree corresponding to a component of a symbol of said data signal, and being associated with a metric, the construction of the decoding tree implementing at least one iteration of the following steps, for a current node of the tree stored in the top of a stack: generating (102) a reference child node of said current node from said vector representing the received data signal, from the reference child node, generating (106) a first neighbor child node by subtracting a positive integer parameter from the value of the reference node, and a second neighbor child node by adding said positive integer parameter to the value of the reference child node; storing (108) in said stack three child nodes deriving from the reference child node and from said first and second neighbor child nodes, each child node being stored in the stack in association with node information comprising a predetermined metric, the nodes in the stack being ordered by increasing values of metrics; removing (109) the current node from said stack; selecting (111) the top node of said stack as the new current node;
wherein said method further comprises determining an estimation of said data signal from the node information stored in said stack.
Claims
1. A method of decoding a received data signal in a communication system, wherein said method comprises: iteratively constructing a decoding tree, each node of said decoding tree corresponding to a component of a symbol of said data signal, and being associated with a metric, wherein said step of constructing the decoding tree implements at least one iteration of the following steps, for a current node of the tree stored in the top of a stack: generating a reference child node (s.sub.i) of said current node from said vector representing the received data signal, from the reference child node (s.sub.i), generating a first neighbor child node by subtracting a positive integer parameter (p) from the value of the reference node (s.sub.i), and a second neighbor child node by adding said positive integer parameter (p) to the value of the reference child node (s.sub.i); storing in said stack at most three child nodes deriving from the reference child node and from said first and second neighbor child nodes, each child node being stored in the stack in association with node information comprising a predetermined metric, the nodes in the stack being ordered by increasing values of metrics; removing the current node from said stack; selecting the top node of said stack as the new current node; wherein said method further comprises determining an estimation of said data signal from the node information stored in said stack.
2. The method of claim 1, wherein said received data signal corresponds to a transmitted data signal transported by a transmission channel, said transmission channel being associated with a channel matrix (H) of a given dimension (n) and a QR decomposition being previously applied to said channel matrix where Q designates an orthogonal matrix and R an upper triangular matrix, wherein said step of generating the reference child node comprises projecting said vector representing the received signal on a layer of said upper triangular matrix.
3. The method of claim 2, wherein said reference child node is further generated from the values of the tree nodes comprised in the path from the root node to the current node.
4. The method as claimed in claim 3, wherein said step of generating said reference child node comprises determining the reference child node from the nearest integer of the quantity
5. The method as claimed in claim 4, comprises determining said metric (f.sup.i(s.sub.i)) associated with the reference child node (s.sub.i) from the weight metrics ((w(s.sub.j)) of the nodes in the tree comprised in the path from the root node to the current node.
6. The method as claimed in claim 5, wherein said metric associated with the reference child node (s.sub.i) is represented by the cumulated weight determined from the sum of the weight metrics ((s.sub.j)) of the nodes in the tree comprised in the path from the root node to the current node, the weight metric (
(s.sub.j)) of a node at a given level j of the tree being determined as the Euclidean distance between the j.sup.th component of the vector {tilde over (y)} representing the received signal and a vector ((s.sub.n . . . s.sub.j)) comprising the nodes of the tree from the root node to the node at level j.
7. The method as claimed in claim 5, wherein said metrics associated with the reference child node (s.sub.i) is represented by the cumulated weight determined from the sum of the weight metrics ((s.sub.j)) of the nodes in the tree comprised in the path from the root node to the current node, the weight metric (
(s.sub.j)) of a node at a level j of the tree being determined as the difference between: the Euclidean distance between the j.sup.th component of the vector {tilde over (y)} representing the received signal and a vector (s.sub.n . . . s.sub.j) comprising the values of the nodes of the tree from the root node to the node at level j, and the product of a predefined bias parameter b by the level j, the bias parameter being predefined as a real and positive value.
8. The method as claimed in claim 7, wherein said step of storing each reference child node in the stack further comprises storing auxiliary parameters in association with each node in the stack, said auxiliary parameters comprising the node path, and wherein said estimation of the data signal is determined from said node paths stored in the stack.
9. The method as claimed in claim 8, wherein said step of selecting the top node further comprises determining if the node selected in the stack is a leaf node and wherein the method comprises: performing the next iteration if the selected node is not a leaf node, and terminating the iterations if the selected node is a leaf node.
10. The method as claimed in claim 1, wherein said step of selecting the top node further comprises determining if the node selected in the stack is a leaf node and wherein the method comprises: performing the next iteration if the selected node is not a leaf node, and if the selected node is a leaf node: removing said leaf node from the stack, storing said leaf node in an auxiliary stack, said estimation of the data signal being further performed from said auxiliary stack.
11. The method as claimed in claim 10, wherein the value of each node in the tree corresponds to the component of a symbol belonging to a given constellation having a predefined range between a minimum threshold and a maximum threshold, and said step of generating a child node comprises determining if the generated nearest integer to the value of child node is comprised between said minimum threshold and said maximum threshold, the method further comprising for at least one of the three generated child nodes: if the generated nearest integer to the value of the child node is comprised between said minimum threshold and said maximum threshold, setting the child node to the nearest integer value within the constellation range.
12. The method as claimed in claim 11, wherein the method further comprises: if the generated nearest integer to the value of the child node is lower than the predefined minimum threshold, setting the child node value as equal to said minimum threshold; if the generated nearest integer to the value of child node is higher than said maximum threshold, setting the child node value as equal to the maximum threshold.
13. The method of claim 12, wherein said communication system is a multi-antenna system and said transmission channel is associated with a channel matrix H of a given dimension, said received data signal y.sub.c being equal to H.sub.cs.sub.c+w.sub.c, with H.sub.c, s.sub.c and w.sub.c corresponding respectively to the complex value of the channel matrix H, of the vector s representing the transmitted data signal and of a noise vector w, and wherein the received data signal is previously transformed into a real-valued representation, said representation being defined by the following formula: (.) and
(.) denote respectively the real and imaginary parts of the complex-valued vector specified as parameter.
14. A computer program product for decoding a received data signal, the computer program product comprising: a non-transitory computer readable storage medium; and instructions stored on the non-transitory computer readable storage medium that, when executed by a processor, cause the processor to: iteratively construct a decoding tree, each node of said decoding tree corresponding to a component of a symbol of said data signal, and being associated with a metric, wherein said step of constructing the decoding tree implements at least one iteration of the following steps, for a current node of the tree stored in the top of a stack: generating a reference child node (s.sub.i) of said current node from said vector representing the received data signal, from the reference child node (s.sub.i), generating a first neighbor child node by subtracting a positive integer parameter (p) from the value of the reference node (s.sub.i), and a second neighbor child node by adding said positive integer parameter (p) to the value of the reference child node (s.sub.i); storing in said stack at most three child nodes deriving from the reference child node and from said first and second neighbor child nodes, each child node being stored in the stack in association with node information comprising a predetermined metric, the nodes in the stack being ordered by increasing values of metrics; removing the current node from said stack; selecting the top node of said stack as the new current node; wherein said processor is further caused to determine an estimation of said data signal from the node information stored in said stack.
15. A device for decoding a received data signal, wherein the device comprises: at least one processor; and a memory coupled to the at least one processor and including instructions that, when executed by the at least one processor, cause the device to iteratively construct a decoding tree, each node of said decoding tree corresponding to a component of a symbol of said data signal, and being associated with a metric, wherein said step of constructing the decoding tree implements at least one iteration of the following steps, for a current node of the tree stored in the top of a stack: generating a reference child node (s.sub.i) of said current node from said vector representing the received data signal, from the reference child node (s.sub.i), generating a first neighbor child node by subtracting a positive integer parameter (p) from the value of the reference node (s.sub.i), and a second neighbor child node by adding said positive integer parameter (p) to the value of the reference child node (s.sub.i); storing in said stack at most three child nodes deriving from the reference child node and from said first and second neighbor child nodes, each child node being stored in the stack in association with node information comprising a predetermined metric, the nodes in the stack being ordered by increasing values of metrics; removing the current node from said stack; selecting the top node of said stack as the new current node; wherein said device is caused to determine an estimation of said data signal from the node information stored in said stack.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0076] The accompanying drawings, which are incorporated herein, constitute a part of this specification and illustrate various embodiments of the invention and, together with the description, serve to explain the embodiments of the invention.
[0077]
[0078]
[0079]
[0080]
[0081]
[0082]
[0083]
[0084]
DETAILED DESCRIPTION
[0085] According to the various embodiments of the invention, there is provided decoding tree generation methods and systems for generating a decoding tree from a received signal where each path from a root node to a leaf node represents a possible transmitted signal, according to a Best-First search strategy. Such a decoding tree may be used in a decoding device (also referred to hereinafter as a “zigzag stack decoder”) according to the Best-First tree search strategy to determine the closest vector to the received signal according to the Maximum Likelihood (ML) criterion.
[0086] The decoding tree generation method is based on generating at each level of the decoding tree (also referred to as a “search tree” hereinafter) a reduced set of nodes corresponding to the received signal. For an increasing constellation size and a high number of antennas, a traditional Stack decoder requires a high computational complexity (as described in “A fast sequential decoding algorithm using a stack” or “A unified framework for tree search decoding: rediscovering the sequential decoder”). The decoding tree generation method according to the various embodiments of the invention significantly reduces such computational complexity by reducing the number of child nodes generated for each current node to at most three nodes.
[0087] To obtain the decoding tree structure, the decoding tree construction method iteratively generates a set of at most three child nodes for each current node being processed, the current node being selected as the top node of the stack at each iteration, and stores the generated child nodes in the stack. For each generated child node, a metric may be further computed which represents the cost of the child node and is stored together with the child node in the stack.
[0088] More specifically, the decoding tree generation method may generate the set of three child nodes for each current node being processed by a first computed “reference” child node s.sub.n (corresponding to the ZF-DFE point designating the “Zero-Forcing-Decision Feedback Equalizer” point at level i=n) based on the Euclidean distance from the received vector to the hyperplanes defined by the channel generator matrix, and from this reference child node s.sub.n, determining at most two neighbor nodes by zigzagging around the reference point.
[0089] In the following description of the various embodiments of the invention, the child nodes of a node s.sub.i (level i) will be referred to as the components s.sub.i−1 (level i−1).
[0090] Instead of storing at each tree level i all the constellation points corresponding to the received vector (e.g. n constellation points in a 2.sup.n QAM (Quadrature Amplitude Modulation) as is done by conventional stack decoders, the decoding tree construction method according to the various embodiments only stores, at each level of the tree, a triple of nodes comprising the node corresponding to the projection of the received vector on the corresponding hyperplane (s.sub.i) and two neighbor nodes (s′.sub.i=s.sub.i−p and s″.sub.i=s.sub.i+p) determined by zigzagging around the reference node s.sub.i. Given the integer nature of the decoded symbols, the components s.sub.i take integer values and the zigzagging approach is based on selecting the two neighbors by subtracting and/or adding a positive parameter p from/to the value of the reference node S.
[0091] As used herein, a “node” refers to an element of a decoding tree data structure representing constellation points of the received signal corresponding to a constellation such as a 2.sup.q QAM. Specifically, a node comprises an integer value representing a component of a symbol of the received data signal (the received data signal may be represented according to a real-valued representation). In the following description, the term “node” or “node value” will be similarly used to designate a component of a symbol of the received data signal. The first node of the tree is referred to as the root node. According to the decoding tree generation method, each node of the decoding tree can have at most three child nodes which are located below it in the tree, while conventional approaches generate a plurality of branches for each node, or a number of child nodes selected in a predefined interval. A node that does not have any child node is referred to as a “leaf” node and corresponds to the lowest level in the tree. Each node has at most one parent node located above it in the tree. The root node being the highest node in the tree, it does not have any parent node. The depth (or dimension) of a given node designates the length of the path from this given node up to the root node of the decoding tree. All the nodes of the decoding tree can be reached from the root node. Each path from the root node to a leaf node thus represents a possible transmitted signal. Nodes in the decoding tree represent the different possible values of the symbols s.sub.i, where s.sub.i, with i representing an integer ranging from n to 1, represent the real and imaginary components of the transmitted information vector.
[0092] Referring to
[0093] The search tree (also referred to as “the decoding tree” hereinafter) may be generated through a QR decomposition of the channel matrix H (H=QR) in a pre-decoding phase, where Q.sup.t represents an orthogonal matrix and R represents the generator matrix in the decoding equivalent system, and through a multiplication of the received signal by Q.sup.t. Given the upper triangular structure of the matrix R, the ML optimization problem is solved by performing a tree-search based on the generation of the decoding tree.
[0094] The generation of the decoding tree implements at least one iteration of the following steps, for a current node of the tree stored in the stack. The method initially starts with the root node as the current node. The first current node is therefore the root node (step 101).
[0095] Steps 102 to 114 are iterated for each current node being selected from the top of the stack to generate the triple of child nodes for which the current node is the parent node. Each iteration is thus associated with a level i of the decoding tree (i=n to 1). The parameter i may be decremented for each new iteration, depending on the top node selected in the stack.
[0096] The first iteration of the decoding tree method is thus implemented to determine the child nodes {s.sub.n, s′.sub.n, s″.sub.n} of the root node s.sub.root at a first level i=n.
[0097] The subsequent iterations of the decoding tree method are implemented to determine at most three child nodes {s.sub.i, s′.sub.i, s″.sub.i} at a level i of a current node corresponding to the top node in the stack, where s.sub.i corresponds to the reference child node and s′.sub.i and s″.sub.i correspond to a first and second neighboring child nodes.
[0098] In step 102, the reference child node s.sub.i at level i is generated from the received vector {tilde over (y)} representing the received data signal (initially s.sub.i=s.sub.n for the first level i=n).
[0099] It should be noted that the reference child node obtained for the first level i=n corresponds to the n.sup.th component of the ZF-DFE point (ZF-DFE is the acronym for “Zero-Forcing-Decision Feedback Equalizer”).
[0100] In step 103, the Euclidean distance d.sub.i corresponding to the projection of the received vector {tilde over (y)} to the layer of the symbol s.sub.i is determined.
[0101] In step 104, the metric f.sup.i(s.sub.i) associated with the node s.sub.i is computed (the metric is also referred to as the “cost”) according to predefined criteria. In certain embodiments, the metric f.sup.i(s.sub.i) may be computed from the Euclidean distance d.sub.i. More particularly, the metrics f.sup.i(s.sub.i) may be computed from the weight metrics ((s.sub.i)) associated to branch (s.sub.i+1, s.sub.i) which may depend on the Euclidean distance d.sub.i.
[0102] In step 105, the node s.sub.i is stored in the stack in association with the metric f.sup.i(s.sub.i). Additional information related to the nodes may be stored in the stack in association with each node. Such node information may include for example auxiliary parameters related to the node such as the node path and/or the node depth in the decoding tree, and/or the Euclidean distance determined for the node.
[0103] The first and second neighbor child nodes s′.sub.i=s.sub.i−p and s″.sub.i=s.sub.i+p (p representing a predefined integer value) may be determined by zigzagging around the reference node s.sub.i in step 106.
[0104] In step 107, the metric f.sup.i(s′.sub.i) associated with the node s′.sub.i and the metric f.sup.i(s″.sub.i) associated with the neighbor node s″.sub.i are computed.
[0105] In step 108, the neighbor node s′.sub.i and the neighbor node s″.sub.i are stored in the stack, each in association with its respective metric f.sup.i(s′.sub.i) and f.sup.i(s″.sub.i), and possibly in association with additional node information (e.g. node path).
[0106] In step 109, the current node is removed from the stack.
[0107] In step 110, the stack is reordered by an increasing order of the metrics f.sup.k(s.sub.k) so that the node s.sub.i having the lowest metric f.sup.i(s.sub.i) is stored in the top of the stack.
[0108] In step 111, the top node of the stack is selected as the current node in order to generate its child nodes.
[0109] In step 112, it is determined if the selected node is a leaf node. If the selected node is a leaf node (i.e. not having any child node), the method is terminated in step 113.
[0110] Otherwise, in step 114, the selected node is set as the current node and steps 102 to 114 may be repeated for the newly selected node (which represents the node having the lowest metric in the stack) to generate the triple of child nodes including the reference child node s.sub.j, and the two neighbor child nodes s′.sub.j=s.sub.j−p and s″.sub.j=s.sub.j−p, at the next level j of the decoding tree with j being comprised between n-1 to 1. The next processed level j depends on the top node selected in the stack.
[0111] Each iteration of steps 102 to 114 thus provides a path between the root node and a new leaf node stored in the stack.
[0112] The data signal can then be estimated by taking into account the node information stored in the stack, and in particular the path(s) stored in the stack when such information. For example according to a binary estimation (hard decision), the construction of the tree implements a single iteration of steps 102 to 114 enabling a single path to be determined corresponding to a hard estimation of the transmitted data signal. In the case of a probabilistic estimation (soft decision), the decoding method may deliver soft-output information in the form of Log-Likelihood Ratio (LLR) values. In this case, several iterations of steps 102 to 114 may be performed. Each repetition delivers a different path from the root node to leaf nodes. These different paths may then be stored in an auxiliary stack together with their paths. A probabilistic estimation of the information signal can then be determined based on these paths.
[0113] The decoding tree method thus enables a zigzag construction of the decoding tree which significantly reduces the decoding complexity. The decoding tree is constructed so as to store the metrics of the nodes in the stack and possibly auxiliary parameters which obviates the need for recalculating the metrics related to a node each time the node is visited.
[0114] Accordingly, the search area and the number of nodes in the search tree are reduced.
[0115] Even if the invention is not limited to such an application, the invention has particular advantages when integrated in a receiver, for example for the decoding of data transmitted in a MIMO (Multiple Input Multiple Output) channel or for the detection of multiple users.
[0116]
[0117] In step 1020, the reference child node s.sub.i at level i may be generated by performing the projection of the received vector {tilde over (y)} on a given layer of the upper triangular matrix R used to perform the QR decomposition of the channel matrix H (H=QR) in a pre-decoding phase, where Q represents an orthogonal matrix.
[0118] In certain embodiments, the reference child node s.sub.i may be generated by performing the projection of the received vector {tilde over (y)} on the i.sup.th layer of the upper triangular matrix R.
[0119] In addition, the generation of the reference child node may take into account values of the tree nodes comprised in the path from the root node s.sub.n to the current node s.sub.i.
[0120] Specifically, for i=n (first iteration of steps 102 to 114 corresponding to the generation of the child nodes at the level n), the first component s.sub.n at level n may be determined according to equation (1):
[0121] In equation (1), R.sub.nn represents the n.sup.th layer of the upper triangular matrix R (hyperplane), {tilde over (y)}.sub.n represents the n.sup.th component of the received signal {tilde over (y)}, and the notation [x] designates the nearest integer to [x].
[0122] For the subsequent iterations of decoding tree generation method node at a level i=n-1, . . . , 1, the component s.sub.i may be generated such that:
[0123] The component s.sub.n-1 is accordingly computed from the value of the component s.sub.n, which corresponds to the parent node and to the current top node in the stack. It should be noted that, as the nodes are ordered according to their metrics, the selected top node may not correspond to the ZF-DFE point and as a result the generated symbol s.sub.n-1 may not necessarily correspond to the (n-1).sup.th component of the ZF-DFE point.
[0124] The decoding method may be applicable to decode finite or infinite lattices in .sup.n, the value of each node in the tree corresponding to the component of a symbol belonging to a constellation having a predefined range between a minimum threshold C.sub.min and a maximum threshold C.sub.max). In embodiments where finite lattices are decoded (finite constellations), such as with QAM modulation, information symbols s.sub.i are carved from a finite alphabet and their real and imaginary parts, which correspond to the detected symbols over the tree, belong to the finite interval I=[C.sub.min, C.sub.max]. For example, in embodiments using a q-QAM modulation, the symbols s.sub.i belong to the interval I.sub.c=[±1, ±2, ±3, ±√{square root over (q)}−1] and the nodes in the search tree corresponding to the used constellation symbols belong to the infinite set I=[0, 1, 2, 3, . . . , √{square root over (q)}−1] where C.sub.min=0 and C.sub.max=√{square root over (q)}−1.
[0125] In such embodiments, in order to guarantee that the estimated vector belongs to the considered constellation, a condition related to the nearest integer to the symbol s.sub.i ([s.sub.i]) as obtained in step 1020 and to the bound constraints C.sub.min and C.sub.max is checked each time a child node is generated (reference node s.sub.i or one of the two neighbor nodes s′.sub.i and s″.sub.i) in step 1021.
[0126] Specifically, in step 1021, it is determined if the symbol s.sub.i as determined in step 1020 belongs to the constellation. If the symbol s.sub.i belongs to the constellation (i.e. C.sub.min≦[s.sub.i]≦C.sub.max), then the reference child node s.sub.i is set to the nearest integer to the symbol s.sub.i (namely [s.sub.i]) in step 1022.
[0127] Otherwise, if the symbol s.sub.i does not belong to the constellation (step 1021), in step 1023 the nearest integer to the symbol [s.sub.i] is compared to the boundary values of the constellation interval [C.sub.min, C.sub.max] in step 1023:
[0128] If [s.sub.i]<C.sub.min, the reference child node s.sub.i is set to C.sub.min in step 1024;
[0129] If [s.sub.i]>C.sub.max, the reference child s.sub.i is set to C.sub.max in step 1025.
[0130]
[0131] In step 1060, the symbols s′.sub.i=s.sub.i−p and s″.sub.i=s.sub.i+p are determined from the symbol s.sub.i, where p designates a predefined integer parameter (also referred to as the “zigzag” parameter).
[0132] It should be noted that in certain applications, the “zigzag” parameter p may be allowed to vary in a predefined manner and may take different values depending on the level in the tree, and/or the iterative step, and/or dependent upon the different degrees of freedom exploited in the communication system, such as space, time or frequency.
[0133] In certain embodiments, the parameter p may be set to 1. This enables a reshaping of the received signal to be performed at the receiver side so as to be able to perform the lattice closest point search in . With such reshaping, the shaping constraints may limit the decoded symbols to an interval I=[C.sub.min, C.sub.max] where C.sub.min=0 and C.sub.max=1,3,5, etc, depending on the constellation. In such embodiments, when a tree-search algorithm is performed, the points may be tested in this boundary interval using a path of 1 (i.e. p=1). Accordingly, setting p as equal to 1 ensures that points are not skipped in the constellation that can correspond to the ML solution.
[0134] However, the invention is not limited to a parameter p equal to 1. Depending on the application of the invention, the parameter p may be set to other values. For example, if no reshaping is needed at the receiver side, the path p may be superior to 1 (hence neighboring nodes are visited).
[0135] In step 1061, for the symbol s.sub.i−p (respectively s.sub.i+p), it is determined if the symbol s.sub.i−p (respectively s.sub.i+p) belongs to the constellation, by determining if the nearest integer to the symbol [s.sub.i−p] (respectively [s.sub.i+p]) is comprised between C.sub.min and C.sub.max. If the symbol s.sub.i−p (respectively s.sub.i+p) belongs to the constellation (step 1062), then the child neighbor node s′.sub.i (respectively s″.sub.i) is set to the symbol s.sub.i−p (respectively s.sub.i+p) in step 1062.
[0136] Otherwise, if the symbol s.sub.i−p (respectively s.sub.i+p) does not belong to the constellation (step 1063), in step 1063, the symbol s.sub.i+p (respectively s.sub.i+p) is compared to the boundary values of the constellation interval [C.sub.min, C.sub.max] as follows:
[0137] If [s.sub.i−p]<C.sub.min (respectively [s.sub.i+p]<C.sub.min), the reference child node s.sub.i−p (respectively s.sub.i+p) is set to C.sub.min in step 1064;
[0138] If [s.sub.i−p]>C.sub.max (respectively [s.sub.i+p]>C.sub.max), the reference child node s.sub.i−p (respectively s.sub.i+p) is set to C.sub.max in step 1065.
[0139] In one application of the invention to a multi-antenna system to decode a signal received by the multi-antenna system (MIMO), with n.sub.t transmit and n.sub.r receive antennas using spatial multiplexing, the data signal y.sub.c received as a complex-valued vector is equal to H.sub.cs.sub.c+w.sub.c, with H.sub.c, s.sub.c and w.sub.c corresponding respectively to the complex value of the channel matrix H, the vector s representing the transmitted data signal and the noise vector w. The received signal y.sub.c may be then transformed into a real-valued representation, for example according to equation (3):
[0140] In equation (3), (.) and
(.) denote respectively the real and imaginary parts of a complex-valued vector. The equivalent channel output can then be written as:
y=Hs+w (4)
[0141] In embodiments where a length-T Space-Time code is used, the channel output can be written in the same form of equation (1) with the equivalent channel matrix H.sub.eq given by:
H.sub.eq=H.sub.cΦ (5)
[0142] In equation (5), Φ ∈.sup.n.sup.
[0143] According to the equivalent system obtained in (5), the received signal can be viewed as a point of the lattice generated by H and perturbed by the noise vector w. Optimal ML detection is solved for the closest vector in the n-dimensional lattice generated by H according to the minimization problem:
ŝ=argmin.sub.s.sub.
[0144] In such MIMO systems, a tree search may be performed based on the decoding tree generated according to the decoding tree generation method in a zigzag stack decoder. Before transmitting the signal to the zigzag stack decoder, a predecoding may be performed using a QR decomposition of the channel matrix such that H=QR where Q designates the orthogonal matrix and R designate the upper triangular matrix. Given the orthogonality of Q, equation (4) can be rewritten in the following form:
{tilde over (y)}=Q.sup.ty=Rs+Q.sup.tw (7)
[0145] The ML decoding problem then amounts to solving the equivalent system given by:
{tilde over (s)}=argmin.sub.s.sub.
[0146] It should be noted that the triangular structure of R, as such, reduces the search of the closest point to a sequential tree-search as illustrated in the example of
[0147] In the example of
[0148] In certain embodiments, the metrics f.sup.i(s.sub.i) associated with the reference child node (s.sub.i) may be computed from the weight metrics ((s.sub.j)) of the nodes in the tree comprised in the path from the root node s.sub.n to the current node s.sub.i, in step 104.
[0149] In particular, the metric associated with a reference child node (s.sub.i) at level i (i.sup.th decoded symbol) may be determined as the cumulated weight c(s.sub.i) determined from the sum of the weight metrics ω(s.sub.j) of the nodes in the tree comprised in the path s.sup.(i) from the root node s.sub.n to the current node s.sub.i (due to the triangular structure of matrix R, the search starts from the component s.sub.n, where n designates the dimension of the channel matrix).
[0150] As the cumulated weight c(s.sub.i) of a node s.sub.i is equal to the sum over all weights for different nodes forming the path s.sup.(i), it represents the metric of the path. A path of depth i in the tree designates the vector of length n-i+1 defined by s.sup.(i)=(s.sub.n, s.sub.n-1, . . . , s.sub.i). A node being in depth n is a leaf node.
[0151] The weight metric (s.sub.j) of a node at a level j of the tree can be determined as the Euclidean distance between the j.sup.th component of the vector {tilde over (y)} representing the received signal and the vector (s.sub.n . . . s.sub.j) comprising the node values of the tree from the root node s.sub.n to the node s.sub.j at level j according to equation (10):
(s.sub.j)=|{tilde over (y)}.sub.j−Σ.sub.k=j.sup.n R.sub.jks.sub.k|.sup.2 (10)
[0152] Accordingly, the cumulated weight cw(s.sub.i) for a node s.sub.i may be determined as:
cw(s.sub.i)=Σ.sub.j=i.sup.nw.sub.j(s.sub.j)=Σ.sub.j=i.sup.n|{tilde over (y)}.sub.j−Σ.sub.k=j.sup.n R.sub.jks.sub.k|.sup.2 (11),
[0153] For a leaf node, the cumulated weight cw(s.sub.1) corresponds to the Euclidean distance between the received signal {tilde over (y)} and s.sup.(1), which is equal to |{tilde over (y)}−R.sub.s.sup.(1)|.sup.2.
[0154] In such an embodiment, the ML metric minimization of (8) amounts to a search of the path in the tree having the least cumulated weight.
[0155] In an alternative embodiment, the cumulated weight function cw(s.sub.i) may be determined by taking into account a bias parameter b, where b has a real and positive value (b ∈.sup.+). Specifically, the bias parameter b may be deduced from the weight function, such that equation 10 is replaced by the following equation (parameterized weight
(s.sub.j) for a node s.sub.i at level i in the tree):
(s.sub.j)=|{tilde over (y)}.sub.j−Σ.sub.k=i.sup.n R.sub.iks.sub.k|.sup.2−b.j (12)
[0156] Accordingly, in this alternative parameterized approach, the cumulated weight cw(s.sub.i) for a node s.sub.i may be determined as:
cw(s.sub.i)=Σ.sub.j=i.sup.n w.sub.j(s.sub.j)=Σ.sub.j=i.sup.n(|{tilde over (y)}.sub.j−Σ.sub.k=j.sup.n R.sub.jks.sub.k|.sup.2−b.j (13)
[0157] In particular, the application of a bias b equal to zero (b=0) provides the ML solution.
[0158] The value of the bias parameter may be determined arbitrarily or depending on the channel variance σ.sup.2 according to equation (11) as described in “Lattice Sequential Decoder for Coded MIMO Channel: Performance and Complexity Analysis”. W. Abediseid and Mohamed Oussama Damen. CoRR abs/1101.0339 (2011):
[0159] Such parameterized embodiment of the decoding search tree makes it possible to obtain a wide range of decoding performance (thus complexity) by taking into account the bias parameter b in the weight function. Particularly, for a value of the bias parameter larger than 10, the decoder offers the same error performance of the ZF-DFE detector while requiring lower complexity.
[0160] The decoding tree generation method may be applied to perform soft detection, in soft-output decoders. For instance, soft-output decoding in MIMO systems depends on soft information delivered using A Posteriori Probability techniques in the form of Log-Likelihood Ratio (LLR) values. In order to adapt the decoding tree generation method to soft-output detection, in addition to the existing main stack, a second fixed-size stack may be further used. When a leaf node reaches the top of the original stack, the method may return the ML solution and continue its processing. Each time a leaf node reaches the top of the stack, this node may be stored in the second stack. The obtained near-ML solutions may then be used, together with the ML solution to generate the LLR values for soft-output detection.
[0161] Although not limited to such applications, the invention has particular advantages when applied to MIMO detection. Indeed, the zigzag stack decoder can be implemented joint to a parallelization of the channel output such that the steps of the decoding method according to the various embodiments of the invention can be performed simultaneously on two independent subsystems obtained by separating the real and imaginary parts of the channel output and the detected symbols. Additionally, in such MIMO applications, the zigzag decoder can be implemented joint to pre-processing techniques applied to the channel matrix such as ordering and lattice reduction.
[0162] A MIMO wireless network includes a plurality of stations, each station including a transmitter and a receiver including one or more antennas as illustrated in
[0163] The MIMO wireless network 1 may use space/time codes in transmission to distribute the symbols modulated over various degrees of freedom of the channel.
[0164] The transmitter 2 can transmit a signal to a receiver 3 by means of a noisy MIMO channel. The data transmitter 2 can in particular be integrated in the stations. The transmitter 2 may comprise for example:
[0165] a channel coder 20 for providing convolutional codes,
[0166] a QAM modulator 21 for delivering symbols;
[0167] a space/time coder 22 for delivering a code word;
[0168] Nt× transmission antennas 23, in which each transmission antenna may be associated with an OFDM modulator.
[0169] The transmitter 2 codes a binary signal received as input using a convolutional code provided by the channel coder 20. The signal is then modulated by the modulator 21 according to a modulation scheme (for example, a quadrature amplitude modulation nQAM). The modulator 21 can also implement a modulation scheme by phase shift, for example of the nPSK type, or any modulation. The modulation results in the generation of complex symbols belonging to a group of symbols s.sub.i. The modulated symbols thus obtained are then coded by the space-time coder 22 to form a code word STBC, such as the Golden Code (“The Golden Code: A 2×2 Full-Rate Space-Time Code with Non-Vanishing Determinants”, J.-C. Belfiore, G. Rekaya, E. Viterbo, IEEE Transactions on Information Theory, vol. 51, no. 4, pages 1432-1436, April 2005). The STBC code may be based on a complex matrix of dimension Nt×*T, in which Nt× is the number of transmission antennas and T is the time length of the STBC code, or on a spatial multiplexing (the modulated symbols are directly sent to the transmission antennas).
[0170] The code word thus generated is converted from the time domain to the frequency domain and distributed over the Nt× transmission antennas. Each dedicated signal is then modulated by a respective OFDM modulator, then transmitted over the corresponding transmission antenna 23, optionally after filtering, frequency transposition and amplification.
[0171] The receiver 3 can be also integrated in the stations. The receiver 3 may be configured to receive a signal y transmitted by the transmitter 2 in a wireless channel. The channel may be noisy (for example channel with additive white Gaussian noise (AWGN) subjected to fading). The signal transmitted by the transmitter 2 may be further affected by echoes due to the multiple paths and/or the Doppler effect.
[0172] In one exemplary embodiment, the receiver 3 may comprise:
[0173] Nr× receiving antennas 33 for receiving the signal y, each receiving antenna being associated with a respective OFDM demodulator; the OFDM demodulators (Nr× demodulators) are configured to demodulate the received signal observed at each receiving antenna and delivering demodulated signals. A frequency/time converter may be used to perform a reverse operation of the time/frequency conversion implemented in transmission, and to deliver a signal in the frequency domain;
[0174] a space/time decoder 30 configured to deliver a decoded signal;
[0175] a demodulator 31 configured to perform a demodulation associated with a decoding.
[0176] It should be noted that the receiver 3 implements a reverse processing of the processing implemented in transmission. Accordingly, if a single-carrier modulation is implemented in transmission instead of a multi-carrier modulation, the Nr× OFDM demodulators are replaced by corresponding single-carrier demodulators.
[0177] The skilled person will readily understand that the various embodiments of the invention are not limited to specific applications. Exemplary applications of this new decoder include, with no limitation, multi-user communication systems, MIMO decoding in configurations implementable in wireless standards such as the WiFi (IEEE 802.11n), the cellular WiMax (IEEE 802.16e), the cooperative WiMax (IEEE 802.16j), the Long Term Evolution (LTE), the LTE-advanced, the 5G ongoing standardization, and optical communications.
[0178]
[0179] a microprocessor 61 (or CPU), which is, for example, a digital signal processor (DSP);
[0180] a non-volatile memory 62 (or ROM, read-only memory);
[0181] a random access memory RAM 63;
[0182] an interface 65 for receiving input signals coming from the time/frequency converter;
[0183] an interface 66 for transmitting decoded data to the demodulator 31.
[0184] The non-volatile ROM memory 62 may include for example:
[0185] a register “Prog” 620;
[0186] a bias parameter “b” 621.
[0187] the zigzag parameter “p” 622.
[0188] The algorithms for implementing the method according to this embodiment of the invention can be stored in the program 620. The CPU processor 41 may be configured to download the program 620 to the RAM memory and runs the corresponding instructions.
[0189] The RAM memory 63 may include:
[0190] in a register Prog 630, the program run by the microprocessor 61 and downloaded in an active mode of the space/time decoder 30;
[0191] input data in a register 631;
[0192] data relating to the nodes in a register 632, corresponding to the stack;
[0193] likelihood probabilities or LLR in a register 634;
[0194] The data stored in the register 632 may include, for a node of the decoding tree, the metric and optionally auxiliary metrics associated with this node (path from the root to said node, and/or the depth in the tree).
[0195] According to another embodiment, the decoding technique can be implemented according to a hardware-only configuration (for example, in one or more FPGA, ASIC or VLSI integrated circuits with the corresponding memory) or according to a configuration using both VLSI and DSP.
[0196] It has been observed, through simulations, that a decoder (referred to as a “zigzag stack decoder”) based on a decoding tree generated by the decoding tree construction methods, according to the various embodiments of the invention, provides similar ML performance as the Sequential Decoder, the Stack decoder and the SB-Stack decoder. To assess the computational complexity of such decoder, the total number of multiplications for the pre-decoding and the search phases has been counted. A 16-QAM modulation and 2×2 and 4×4 MIMO schemes have been used in the simulations.
[0197]
[0198] While embodiments of the invention have been illustrated by a description of various examples, and while these embodiments have been described in considerable detail, it is not the intention of the applicant to restrict or in any way limit the scope of the appended claims to such detail. Additional advantages and modifications will readily appear to those skilled in the art. The invention in its broader aspects is therefore not limited to the specific details, representative methods, and illustrative examples shown and described. Accordingly, departures may be made from such details without departing from the spirit or scope of applicant's general inventive concept.
[0199] In particular, the various embodiments of the invention are not limited to particular types of detection, and apply both to hard and soft detection.
[0200] In addition, program code described herein may be identified based upon the application or software component within which the program code is implemented in a specific embodiment of the invention. It should be further appreciated that the various features, applications, and devices disclosed herein may also be used alone or in any combination.