Patent Description:
In communications networks, there may be different challenges. One such challenge is energy consumption. Research and development is ongoing for identifying techniques that enable the energy consumption to be reduced, without compromising quality or performance in terms of throughput, quality of service, etc..

On the other hand, new services require higher and higher data rates. There is thus a need for energy-efficient devices that are capable of processing high data rates. Physical-layer techniques such as Multiple Input Multiple Output (MIMO) systems and orthogonal frequency-division multiplexing (OFDM) as utilized as an air-interface in Long Term Evolution (LTE) telecommunication systems and advanced fourth generation (<NUM>) telecommunication systems will continue to play a role in fifth generation (<NUM>) telecommunication systems, such as new radio (NR).

The wireless channel of the air-interface fluctuates randomly with time, frequency and space, which limits the communication capacity and reliability. This poses a challenge for obtaining effective communication, especially if also taking aspects of energy consumption into consideration. In an environment of non-stationary wireless channels where transmitters and receivers are relatively mobile, knowledge of the radio propagation environment is crucial to the design of communication system as the non-stationarity of the wireless channels impairs the reception drastically. In this respect, symbol-level precoding (SLP) exploits the interference in the downlink of multiuser MISO systems.

SLP can be implemented by determining the output vectors symbol-by-symbol, which could lead to a better understanding of the interference nature and structure. In SLP, the output vector is designed to guarantee that each symbol should be received in the correct detection region without any phase rotation. In symbol-level unicast precoding the (radio) access network node communicates individual messages for each user. In SLP the interference can be classified into either constructive interference or destructive interference. This classification enables interference exploitation among multiple transmitted data streams. However, SLP is based on jointly optimizing the precoding and the constellation rotation. The constellation rotation has a higher impact at low modulation order and still has influential saving at higher modulation orders if the channel exhibits spatial correlation. This optimization procedure is as such computationally intensive.

<NPL>, discloses a symbol level precoder where the interference between spatial multiuser transmissions is exploited by jointly utilizing the data information and channel state information to create a constructive interference (see <FIG> on page <NUM>). <NPL>, XP080678651 shows another prior art symbol level precoding and hints towards reducing complexity of the algorithm for large system in which it might not be necessary to find the precoding for all the possible combinations of data symbols without indicating how this could be achieved. <NPL>, teaches a symbol level multigroup multicasting precoding with consideration of colinearity of users (see section III, B: "co-group users should be co-linear").

Hence, there is a need for a computationally efficient SLP scheme.

An object of embodiments herein is to provide symbol-level precoding that is less computationally intensive than existing SLP schemes.

According to a first aspect there is presented a method for downlink symbol-level precoding as part of multiuser MISO communication. The method is performed by a network node. The method comprises obtaining a data vector of a current time instant to be precoded. The data vector comprises data symbols for K > <NUM> users. The current time instant corresponds to a single symbol. The method comprises precoding the obtained data vector by determining an output vector for the data vector of the current time instant. Determining the output vector for the current time instant comprises searching for a data vector of a previous time instant that is co-linear with the data vector of the current time instant according to a co-linearity factor. When such a data vector of the previous time instant is found, the output vector is equal to an output vector of the previous time instant multiplied with the co-linearity factor.

According to a second aspect there is presented a network node for downlink symbol-level precoding as part of multiuser MISO communication. The network node comprises processing circuitry. The processing circuitry is configured to cause the network node to obtain a data vector of a current time instant to be precoded. The data vector comprises data symbols for K > <NUM> users. The current time instant corresponds to a single symbol. The processing circuitry is configured to cause the network node to precode the obtained data vector by determining an output vector for the data vector of the current time instant. Determining the output vector for the current time instant comprises searching for a data vector of a previous time instant that is co-linear with the data vector of the current time instant according to a co-linearity factor. When such a data vector of the previous time instant is found, the output vector is equal to an output vector of the previous time instant multiplied with the co-linearity factor.

According to a third aspect there is presented a computer program for downlink symbol-level precoding as part of multiuser MISO communication, the computer program comprising computer program code which, when run on a network node, causes the network node to perform a method according to the first aspect.

According to a fourth aspect there is presented a computer program product comprising a computer program according to the fourth aspect and a computer readable storage medium on which the computer program is stored. The computer readable storage medium could be a non-transitory computer readable storage medium.

Advantageously, these aspects provide symbol-level precoding that is less computationally intensive than existing SLP schemes.

Advantageously, these aspects provide symbol-level precoding with improved energy efficiency without affecting the symbol error rate or the detection process.

Advantageously, these aspects enable the symbol-level precoding to optimize the transmit precoding and the constellation rotation without additional processing at the receiver side. This exploits the constellation rotation for each user to improve the general symbols alignment. Therefore, more constructive interference is expected to be utilized in achieving higher energy efficiency.

Advantageously, these aspects enable a reduction in computational complexity by means of decreasing the number of the optimization problems to be solved or the number of constraints to consider in a single optimization problem.

<FIG> is a schematic diagram illustrating a communications network <NUM> where embodiments presented herein can be applied. The communications network <NUM> could be a third generation (<NUM>) telecommunications network, a fourth generation (<NUM>) telecommunications network, a fifth generation (<NUM>) telecommunications network, or any evolvement thereof, and support any 3GPP telecommunications standard, where applicable.

The communication networks <NUM> comprises a transmission and reception point (TRP) <NUM> configured to provide network access to users, as represented by users 160a, 160b, in a (radio) access network <NUM>. The (radio) access network <NUM> is operatively connected to a core network <NUM>. The core network <NUM> is in turn operatively connected to a service network <NUM>, such as the Internet. The users 160a, 160b are thereby enabled to, via the TRP <NUM>, access services of, and exchange data with, the service network <NUM>. The TRP <NUM> comprises, is collocated with, is integrated with, or is in operational communications with, a network node <NUM>. The network node <NUM> (via its TRP <NUM>) and the users 160a, 160b are configured to communicate with each other in beams, one of which is illustrated at reference numeral <NUM>. Which beam to use is determined through precoding. In some aspects the communications network <NUM> is a multiuser unicast MIMO system where the network node <NUM> (via its TRP <NUM>) transmits multiple independent data streams to multiple users 160a, 160b over the same set of time-frequency resources (or resource elements) by relying on channel state information to exploit the spatial dimension.

Examples of network nodes <NUM> are (radio) access network nodes, radio base stations, base transceiver stations, Node Bs, evolved Node Bs, g NBs, access points, access nodes, and backhaul nodes. Examples of users 160a, 160b are wireless devices, mobile stations, mobile phones, handsets, wireless local loop phones, user equipment (UE), smartphones, laptop computers, tablet computers, network equipped sensors, network equipped vehicles, and so-called Internet of Things devices.

As noted above there is a need for a computationally efficient SLP scheme.

In this respect, one bottleneck of employing SLP in current communication systems is the number of calculations needed. In general terms, the number of calculations is a function of channel state information and the number of possible data vectors per channel realization. The number of possible output vector calculations equals to <NUM>∑j mj for each channel realization or <NUM>∑j mj+<NUM> constraints in the single optimization problem interpretation, where mj is the modulation order for user j. This leads to huge computational complexity, especially for large number of users and/or high modulation orders. Assuming a low doppler channel model with relatively flat or frequency non-selective fading, the herein disclosed embodiments provide low complexity techniques to determine the beamforming weights for all the users in a scheduled user set based on uplink channel estimates.

The embodiments disclosed herein in particular relate to mechanisms for downlink symbol-level precoding as part of multiuser MISO communication. In order to obtain such mechanisms there is provided a network node <NUM>, a method performed by the network node <NUM>, a computer program product comprising code, for example in the form of a computer program, that when run on a network node <NUM>, causes the network node <NUM> to perform the method.

<FIG> is a flowchart illustrating embodiments of methods for downlink symbol-level precoding as part of multiuser MISO communication. The methods are performed by the network node <NUM>. The methods are advantageously provided as computer programs <NUM>.

It is assumed that data for K > <NUM> users 160a, 160b is to be precoded for a current time instant, n. Hence, the network node <NUM> is configured to perform step S102:
S102: The network node <NUM> obtains a data vector, d[n], of a current time instant, n, to be precoded. The data vector comprises data symbols, d<NUM>[n],. , dK[n], for K > <NUM> users 160a, 160b. The current time instant corresponds to a single symbol. Thus, d[n] = [d<NUM>[n],. , dK[n]]T, where dj[n] is the data symbol for user j at time instant n, such that the vector d[n] is formed as a concatenation of the symbols from all users to be served simultaneously at time instant n.

The data vector d[n] is then precoded to an output vector x[n]. In particular, the network node <NUM> is configured to perform step S104:
S104: The network node <NUM> precodes the obtained data vector by determining an output vector, x[n], for the data vector of the current time instant n. Determining the output vector x[n] for the current time instant comprises searching for a data vector d[m] of a previous time instant, m, that is co-linear with the data vector d[n] of the current time instant according to a co-linearity factor. When such a data vector of the previous time instant is found, the output vector x[n] is equal to an output vector x[m] of the previous time instant m multiplied with the co-linearity factor.

Reference is here made to the block diagram of the network node <NUM> in <FIG>. Data to be precoded is represented by a data stream block <NUM>. The data is in a data vector block <NUM> mapped to data vectors, one data vector per time instant. The data vectors are fed to a precoding block <NUM> where, for a given data vector d[n] of the current time instant, a corresponding output vector x[n] is determined. The thus determined output vectors, one per each time instant, are represented by an output vector block <NUM>. Transmission of the output vectors is represented by a data transmission (Tx) block <NUM>. Description of the SNR target and modulation allocation block <NUM> and the CSI acquisition block <NUM> will be provided below.

Embodiments relating to further details of downlink symbol-level precoding as part of multiuser MISO communication as performed by the network node <NUM> will now be disclosed.

In some aspects, once the data vector d[n] has been precoded into the output vector x[n], the output vector x[n] is transmitted. The output vector x[n] might be transmitted by the network node <NUM>, or at least transmission of the output vector x[n] is initiated by the network node <NUM>. That is, in some embodiments, the network node <NUM> is configured to perform (optional) step S106:
S106: The network node <NUM> transmits the output vector x[n] of the current time instant n in the downlink.

There could be different ways to co-linearity factor, hereinafter denoted ζ. In some embodiments, the data vector d[m] of the previous time instant is co-linear with the data vector d[n] of the current time instant when the data vector d[n] of the current time instant is equal to the co-linearity factor ζ multiplied with the data vector d[m] of the previous time instant. That is, d[n] is co-linear with d[m] only when d[n] = ζ ·d[m].

There could be different examples of numerical values of the co-linearity factor ζ. In some examples the co-linearity factor takes a value in a set Z = {<NUM>, -<NUM>, i, -i}. That is ζ ∈ Z.

As disclosed above, determining the output vector x[n] for the current time instant comprises searching for a data vector d[m] of a previous time instant m. There could be different ways for the network node <NUM> to search for this data vector d[m]. In some embodiments, the data vector d[m] of the previous time instant is searched for among data vectors in a look-up table.

Aspects of the precoding will now be disclosed. Reference is here made to the block diagram of the network node <NUM> in <FIG>. In this respect, the data stream block <NUM>, the data vector block <NUM>, the output vector block <NUM>, and the data Tx block <NUM> have already been described with reference to <FIG> and a thus repeated description is therefore omitted.

In general terms, in the precoding block <NUM>, for a given data vector d[n] of the current time instant, a corresponding data vector d[m] of the previous time instant is searched for in a look-up table <NUM>.

There could be different ways to populate the look-up table with data vectors. In general terms, the output vectors are, together with their respective data vectors, added to the look-up table upon having been determined through an optimization procedure, as represented by an optimization block <NUM>. In this respect, there could be different alternatives as to when in time the look-up table is populated with data vectors. According to a first alternative, the look-up table is built on the fly as the data vectors are precoded into output vectors. That is, in some embodiments, the optimization procedure is performed as the data vectors are precoded. When any data vector of a previous time instant that is co-linear with the data vector of the current time instant cannot be found (represented by the arrow labelled output vector not available) when the data vector of the current time instant is to be precoded, the optimization procedure is performed for the data vector of the current time instant and the data vector of the current time instant is then added to the look-up table (represented by the arrow labelled store) via a mapping block <NUM>. Further, when any data vector of a previous time instant that is co-linear with the data vector of the current time instant cannot be found when the data vector of the current time instant is to be precoded, also the output vector of the current time instant is determined through the optimization procedure. According to a second alternative, the look-up table is predetermined. That is, in some embodiments, the optimization procedure is performed before any data vectors are precoded. A data vector of a previous time instant that is co-linear with the data vector of the current time instant can then always be found when the data vector of the current time instant is to be precoded. The arrow labelled output vector available represents the case where an output vector has been determined for the data vector of the current time instant (either by means of table look-up or by means of optimization).

To reduce the computational resources needed for performing the optimization procedure, the optimization procedure is in some examples performed only for a reduced subset of all possible data vectors. That is, in some embodiments, the optimization procedure is performed only for a reduced subset of all possible data vectors, yielding output vectors only for the reduced subset of all possible data vectors. In case the optimization procedure is performed only for a reduced subset of all possible data vectors, the output vectors for all possible data vectors can be found by being co-linear with the output vectors for the reduced subset of all possible data vectors. Further aspects of how to perform the optimization procedure only for a reduced subset of all possible data vectors will be disclosed below.

There could be different input parameters to the optimization procedure. In some non-limiting examples, the optimization procedure takes as input: the data vector of the current time instant, a set of candidate output vectors, channel state information per user 160a, 160b for the current time instant, a signal to noise ratio (SNR) target per user 160a, 160b for the current time instant, and a modulation allocation per user 160a, 160b for the current time instant. In the block diagrams of <FIG> and <FIG> the input parameters to the optimization procedure are represented by a SNR target and modulation allocation block and a CSI acquisition block.

In some aspects, the optimization procedure is constrained by in which constellation region the output vector is to be received. Below, the constraints on constellation regions will be referred to as constraints C<NUM> and C<NUM>.

In some aspects, the optimization procedure involves determining constellation rotation or phase, denoted θj, per user 160a, 160b for the current time instant. The rotation optimization needs to be performed once per coherence and, in contrast to the precoding, does not change from one symbol to the next.

An example embodiment where the look-up table is built on the fly as the data vectors are precoded into output vectors and where the optimization procedure does not involve determining constellation rotation will now be disclosed.

That is, in this example embodiment, the optimal constellation rotation for each user 160a, 160b is not found. One reason for this is that for each input data vector the optimal output vector can be found but the phase that is valid for all input data vectors is not found. The number of possible output vector calculations equals to <NUM>∑j mj for each channel realization. However, according to this example embodiment the number of calculations can, by means of exploiting co-linearity, be reduced to one quarter without jeopardizing any achieved power savings or performance. Exploiting the constellation symmetry, the output vectors (x[n], x[m]) can be found by utilizing the relation, i.e., the co-linearity, between two data vectors (d[n], d[m]).

If d[m] = ζ · d[n], where ζ ∈ {<NUM>, -<NUM>, i, -i}, the output vectors should have the following relation x[m] = ζ · x[n]. Or, in other terms, if a previously precoded data vector d[m] can be found for which d[m] = ζ · d[n], then the output vector of the current instant is determined as x[n] = ζ · x[m].

The optimization problem for finding the output vector x[n] can be formulated as: <MAT> such that
<MAT>.

Here, the symbol "
<MAT>
" is used to denote that a vector a is in a certain quadrant b in the constellation diagram, where thus b ∈ {<NUM>,<NUM>,<NUM>,<NUM>}.

As an example, assume that there are two users 160a, 160b and each one of the users is allocated constellation points using <NUM>-QAM. The total number of all possible data vectors thus is <NUM>, which results in solving either <NUM> optimization problems with <NUM> constraints or one optimization problem with <NUM> constraints. However, by means of exploiting co-linearity it is sufficient to consider four data vectors, as given by the set Freduced, where: <MAT>.

The rest of the data vectors can be generated from Freduced through multiplying by the co-linearity factor ζ ∈ {<NUM>, -<NUM>, i, -i} and this will generate the full space (i.e. all possible symbol combinations) in the Ffull as: <MAT> <MAT> <MAT> <MAT>.

This reduces the number of output vectors to be optimized, since it is sufficient to optimize with respect to Freduced rather than Ffull.

A graphical explanation is depicted in the inphase (I) and Quadrature (Q) diagrams of <FIG>. In this example, the input data vector is <MAT> as depicted in <FIG> and the corresponding output vector x[<NUM>] is shown in <FIG> where both output vector components <MAT> are located in the second quadrant. In <FIG> is depicted the input data vector <MAT>. Hence, d[<NUM>] = -d[<NUM>]. The corresponding output vector x[<NUM>] can thus be determined as x[<NUM>] = -x[<NUM>]. The output vector x[<NUM>] is shown in <FIG> located in the fourth quadrant as x[<NUM>] is a reflection of x[<NUM>]. Further, if d[<NUM>] = ±i d[<NUM>] this yields x[<NUM>] = ±i x[<NUM>].

An example embodiment where the look-up table is predetermined and where the optimization procedure involves determining constellation rotation will now be disclosed.

Reference is made to <FIG> which shows a block diagram for detailed look-up table generation in terms of a look-up table generation block <NUM>. Input is provided from a SNR target and modulation allocation block <NUM> and from a CSI acquisition block <NUM> as in <FIG> and <FIG>. Description of these blocks is therefore omitted.

Using the allocated modulation for each user, a data vector block <NUM> generates a reduced subset of possible data vectors. The reduced subset of possible data vectors, effective channel values, as generated by an effective channel generation block <NUM>, and a constellation rotation decision (yes or no) as provided by a rotation decision block <NUM> are provided to an optimization block <NUM>. The effective channel can be modelled as Gj = hj ⊗ IN, ∀j ∈ K, where IN is the identity matrix of size N, where N is the number of included data vector in the optimization problem. Depending the rotation decision (yes or no), the optimization problem to be solved needs to be decided. In case of no rotation, the optimization is a quadratic problem with <NUM>∑j mj-<NUM> affine constraints. This optimization problem is a second-order cone programming optimization problem. In case of rotation, the optimization problem is quadratic with bilinear and constant modulus constraints. This problem can be solved using branch and bound combined with semidefinite programming.

The energy efficiency can be improved by either just optimizing the output vectors or jointly optimizing the output vector and the constellation rotation for each user. This allows for optimization of the phase θj for each user j that can be valid for all possible input data vectors possibilities as all these possibilities are included in a single optimization problem. However, the optimization needs only to be performed for a reduced subset of possible data vectors, conditioned that output vectors for the full set of all possible data vectors still can be generated. To guarantee that, the minimal subset from which the full space of the data vectors and output vectors needs to be identified. One example is the following subset: <MAT>.

The importance of constellation rotation comes from aligning the interfering symbols to push the correct symbols deeper in their correct detection regions, which makes the interference as additional energy source. Having such a reduced subset F only a single optimization problem with NK/<NUM> rather than 2NK constraints needs to be solved (where N is the total number of available data vectors). The optimization problem for finding the output vector x[n] can thus be formulated as: <MAT> such that <MAT> <MAT>.

In order to solve this optimization problem, all vectors x[n] can stacked in one single vector, xv, as follows: <MAT>.

The optimization problem can then be expressed as: <MAT> such that <MAT> ∀d[n] ∈ F, ∀j ∈ K, Vn\N.

In turn, using semidefinite programming, the optimization problem can further be expressed as: <MAT> such that <MAT> <MAT> <MAT>.

Thus, X is a semi-definite matrix. This optimization problem can be solved by using iterative branch and bound algorithm when the rank of X equals to <NUM>. The solution will be the eigen vector of X with the maximum eigen value, and since it is rank one, there will be an eigen value which is not equal to zero. The matrix X can be decomposed as: <MAT>.

Where λ is the maximum eigen value and e is the eigen vector. The optimal value xv can be found as <MAT>. The optimal phase θj for each user j can be solved using αj = eHxj, and then determining the phase as θj = ∠(αj). After output vectors x[n] are found for the reduced subset of possible data vectors, each data vector d[n] in the reduced subset of possible data vectors is reshaped in a reshape block <NUM>. The reshape block <NUM> is configured to reassign each data vector to the corresponding output vector. In this respect, the solution xv represents the stacked concatenated version of the solution, and thus x[n] needs to be mapped to its respective data vector d[n]The thus reshaped subset of possible data vectors are then mapped, in a mapping block <NUM>, to its corresponding output vector, and then output vectors for the rest of the data vectors (i.e., the data vectors excluded from the reduced subset) are determined, in a complete look-up table block <NUM>, based on co-linearity. That is, if d[m] = ζ · d[n], where ζ ∈ {<NUM>, -<NUM>, I, -I} , the output vectors should be: x[n] = ζ · x[m].

Simulation results are shown in <FIG> for perfect channel state information fed back to the transmitter by the users. The number of antennas at the (radio) access network node is two and the number of users is two. A spatial correlation |a| = <NUM> among the antennas at the (radio) access network node is assumed. In <FIG> is shown the transmit power required to achieve a certain signal to interference plus noise ratio (SINR) target at the receiver sides. A comparison of power saving that can achieved is made between optimal conventional beamforming, denoted OB, and symbol-level precoding according to the herein disclosed embodiments, denoted SLP and SLPRo. SLP denotes symbol-level precoding without rotation optimization and SLPRo denotes joint optimization of the output vectors and the phase rotation. It can be seen that the herein disclosed and symbol-level precoding outperforms conventional precoding. The power saving of SLP is around <NUM> dB in comparison with OB, and SLPRo has power saving around <NUM> dB and <NUM> dB in comparison with OB and SLP respectively. SLPRo optimizes the phases by which each user receives its data and the output vectors, which increases the chances of having constructive interference.

In summary, the problem of power consumption in the downlink of multiuser MISO system and the issue of complexity resulted from high number of constraints or number of optimization problems have been addressed.

Firstly, the herein disclosed embodiments enable a reduction of the required computations through either reducing the number of constraints or the number of optimization problem to be solved. By exploiting the constellations symmetry, the number of the input data vectors for which the respective output vectors need to be optimized can be cut to one quarter. This can reduce the algorithm complexity to a quarter, and therefore, less execution time and computational power are needed without losing any achieved transmit power saving in comparison to traditional SLP schemes.

Secondly, the herein disclosed embodiments enable the energy efficiency to be increased by enabling constellation rotation optimization for each user. This improves the interference exploitation at the users by aligning the interfering symbols more efficiently to push the signal deeper in the correct detection. In order to exploit multiuser interference and transforming it into useful power at the receiver side, symbol-level precoding is utilized through a joint exploitation of data information and the channel state information.

According to herein disclosed embodiments a joint optimization of the transmit symbol-level precoding and the constellation rotation of the data information for each user is enabled. One purpose of the constellation rotation is to increase the probability of having constructive interference, and thus better energy efficiency performance. Optimized phase rotation changes with CSI, but the output vector changes with input data vector. Each user can be informed of, or estimate, this phase rotation for its constellation to guarantee the correct detection of the delivered data. Therefore, no additional processing at the receiver side is required.

<FIG> schematically illustrates, in terms of a number of functional units, the components of a network node <NUM> according to an embodiment. Processing circuitry <NUM> is provided using any combination of one or more of a suitable central processing unit (CPU), multiprocessor, microcontroller, digital signal processor (DSP), etc., capable of executing software instructions stored in a computer program product <NUM> (as in <FIG>), e.g. in the form of a storage medium <NUM>. The processing circuitry <NUM> may further be provided as at least one application specific integrated circuit (ASIC), or field programmable gate array (FPGA).

Particularly, the processing circuitry <NUM> is configured to cause the network node <NUM> to perform a set of operations, or steps, as disclosed above. For example, the storage medium <NUM> may store the set of operations, and the processing circuitry <NUM> may be configured to retrieve the set of operations from the storage medium <NUM> to cause the network node <NUM> to perform the set of operations.

Thus the processing circuitry <NUM> is thereby arranged to execute methods as herein disclosed. The network node <NUM> may further comprise a communications interface <NUM> at least configured for communications with other entities, functions, nodes, and devices of the communications network <NUM>. As such the communications interface <NUM> may comprise one or more transmitters and receivers, comprising analogue and digital components. The processing circuitry <NUM> controls the general operation of the network node <NUM> e.g. by sending data and control signals to the communications interface <NUM> and the storage medium <NUM>, by receiving data and reports from the communications interface <NUM>, and by retrieving data and instructions from the storage medium <NUM>. Other components, as well as the related functionality, of the network node <NUM> are omitted in order not to obscure the concepts presented herein.

<FIG> schematically illustrates, in terms of a number of functional modules, the components of a network node <NUM> according to an embodiment. The network node <NUM> of <FIG> comprises a number of functional modules; an obtain module 210a configured to perform step S102 and a precode module 210b configured to perform step S104. The network node <NUM> of <FIG> may further comprise a number of optional functional modules, such as a transmit module 210c configured to perform step S106. In general terms, each functional module 210a-210c may in one embodiment be implemented only in hardware and in another embodiment with the help of software, i.e., the latter embodiment having computer program instructions stored on the storage medium <NUM> which when run on the processing circuitry makes the network node <NUM> perform the corresponding steps mentioned above in conjunction with <FIG>. It should also be mentioned that even though the modules correspond to parts of a computer program, they do not need to be separate modules therein, but the way in which they are implemented in software is dependent on the programming language used. Preferably, one or more or all functional modules 210a-210c may be implemented by the processing circuitry <NUM>, possibly in cooperation with the communications interface <NUM> and/or the storage medium <NUM>. The processing circuitry <NUM> may thus be configured to from the storage medium <NUM> fetch instructions as provided by a functional module 210a-210c and to execute these instructions, thereby performing any steps as disclosed herein.

The network node <NUM> may be provided as a standalone device or as a part of at least one further device. For example, the network node <NUM> may be provided in a node of the radio access network or in a node of the core network. Alternatively, functionality of the network node <NUM> may be distributed between at least two devices, or nodes. These at least two nodes, or devices, may either be part of the same network part (such as the radio access network or the core network) or may be spread between at least two such network parts. In general terms, instructions that are required to be performed in real time may be performed in a device, or node, operatively closer to the cell than instructions that are not required to be performed in real time.

Thus, a first portion of the instructions performed by the network node <NUM> may be executed in a first device, and a second portion of the of the instructions performed by the network node <NUM> may be executed in a second device; the herein disclosed embodiments are not limited to any particular number of devices on which the instructions performed by the network node <NUM> may be executed. Hence, the methods according to the herein disclosed embodiments are suitable to be performed by a network node <NUM> residing in a cloud computational environment. Therefore, although a single processing circuitry <NUM> is illustrated in <FIG> the processing circuitry <NUM> may be distributed among a plurality of devices, or nodes. The same applies to the functional modules 210a-210c of <FIG> and the computer program <NUM> of <FIG>.

<FIG> is a schematic diagram illustrating a telecommunication network connected via an intermediate network <NUM> to a host computer <NUM> in accordance with some embodiments. In accordance with an embodiment, a communication system includes telecommunication network <NUM>, such as a 3GPP-type cellular network, which comprises access network <NUM>, such as (radio) access network <NUM> in <FIG>, and core network <NUM>, such as core network <NUM> in <FIG>. Access network <NUM> comprises a plurality of radio access network nodes 1112a, 1112b, 1112c, such as NBs, eNBs, gNBs (each corresponding to the network node <NUM> of <FIG>) or other types of wireless access points, each defining a corresponding coverage area, or cell, 1113a, 1113b, 1113c. Each radio access network nodes 1112a, 1112b, 1112c is connectable to core network <NUM> over a wired or wireless connection <NUM>. A first UE <NUM> located in coverage area 1113c is configured to wirelessly connect to, or be paged by, the corresponding network node 1112c. A second UE <NUM> in coverage area 1113a is wirelessly connectable to the corresponding network node 1112a. While a plurality of UE <NUM>, <NUM> are illustrated in this example, the disclosed embodiments are equally applicable to a situation where a sole UE is in the coverage area or where a sole terminal device is connecting to the corresponding network node <NUM>. The UEs <NUM>, <NUM> correspond to the users 160a, 160b of <FIG>.

For example, network node <NUM> may not or need not be informed about the past routing of an incoming downlink communication with data originating from host computer <NUM> to be forwarded (e.g., handed over) to a connected UE <NUM>. Similarly, network node <NUM> need not be aware of the future routing of an outgoing uplink communication originating from the UE <NUM> towards the host computer <NUM>.

<FIG> is a schematic diagram illustrating host computer communicating via a radio access network node with a UE over a partially wireless connection in accordance with some embodiments. Example implementations, in accordance with an embodiment, of the UE, radio access network node and host computer discussed in the preceding paragraphs will now be described with reference to <FIG>. The UE <NUM> corresponds to the users 160a, 160b of <FIG>.

Communication system <NUM> further includes radio access network node <NUM> provided in a telecommunication system and comprising hardware <NUM> enabling it to communicate with host computer <NUM> and with UE <NUM>. The radio access network node <NUM> corresponds to the network node <NUM> of <FIG>. Hardware <NUM> may include communication interface <NUM> for setting up and maintaining a wired or wireless connection with an interface of a different communication device of communication system <NUM>, as well as radio interface <NUM> for setting up and maintaining at least wireless connection <NUM> with UE <NUM> located in a coverage area (not shown in <FIG>) served by radio access network node <NUM>. In the embodiment shown, hardware <NUM> of radio access network node <NUM> further includes processing circuitry <NUM>, which may comprise one or more programmable processors, application-specific integrated circuits, field programmable gate arrays or combinations of these (not shown) adapted to execute instructions. Radio access network node <NUM> further has software <NUM> stored internally or accessible via an external connection.

Its hardware <NUM> may include radio interface <NUM> configured to set up and maintain wireless connection <NUM> with a radio access network node serving a coverage area in which UE <NUM> is currently located.

It is noted that host computer <NUM>, radio access network node <NUM> and UE <NUM> illustrated in <FIG> may be similar or identical to host computer <NUM>, one of network nodes 412a, 412b, 412c and one of UEs <NUM>, <NUM> of <FIG>, respectively.

In <FIG>, OTT connection <NUM> has been drawn abstractly to illustrate the communication between host computer <NUM> and UE <NUM> via network node <NUM>, without explicit reference to any intermediary devices and the precise routing of messages via these devices.

Wireless connection <NUM> between UE <NUM> and radio access network node <NUM> is in accordance with the teachings of the embodiments described throughout this disclosure. One or more of the various embodiments improve the performance of OTT services provided to UE <NUM> using OTT connection <NUM>, in which wireless connection <NUM> forms the last segment. More precisely, the teachings of these embodiments may reduce interference, due to improved classification ability of airborne UEs which can generate significant interference.

The reconfiguring of OTT connection <NUM> may include message format, retransmission settings, preferred routing etc.; the reconfiguring need not affect network node <NUM>, and it may be unknown or imperceptible to radio access network node <NUM>. In certain embodiments, measurements may involve proprietary UE signaling facilitating host computer's <NUM> measurements of throughput, propagation times, latency and the like.

Claim 1:
A method for downlink symbol-level precoding as part of multiuser MISO communication, the method being performed by a network node (<NUM>), the method comprising:
obtaining (S102) a data vector, d[n], of a current time instant, n, to be precoded, wherein the data vector comprises data symbols, d<NUM>[n], ..., dK[n], for K > <NUM> users (160a, 160b), and wherein the current time instant corresponds to a single symbol; and
precoding (S104) the obtained data vector by determining an output vector, x[n], for the data vector of the current time instant n, wherein, determining the output vector for the current time instant comprises searching for a data vector d[m] of a previous time instant, m, that is co-linear with the data vector of the current time instant according to a co-linearity factor, and when such a data vector of the previous time instant is found, the output vector is equal to an output vector x[m] of the previous time instant multiplied with the co-linearity factor.