Abstract:
A method of decoding in a wireless receiver, a wireless transmission from a predefined user, the method comprising: receiving a wireless transmission signal (r(m)); determining a one or more interfering spreading codes (s i (m)) contributing to the received wireless transmission signal (r(m)); estimating a one or more interferer symbols ({circumflex over (b)} i (m)) from the received wireless transmission signal (r(m)) and the or each interfering spreading codes (s i (m)); calculating a one or more scaling factors (Pi(m)) at which the or each of the interferer symbols ({circumflex over (b)} i (m)) was originally transmitted; simulating an interference signal i(m) in the received wireless transmission signal (r(m)); removing the simulated interference signal i(m) from the received wireless transmission signal (r(m)) to produce a processed wireless signal (o(m)); and estimating a one or more symbols {circumflex over (b)}(m) transmitted by the predefined user in the processed wireless signal (o(m)).

Description:
FIELD OF THE INVENTION 
     The invention relates to a method and decoder for decoding a wireless transmission from a predefined user, the method and decoder being used particularly, but not exclusively in a wireless receiver. 
     BACKGROUND OF THE INVENTION 
     Code Division Multiple Access (CDMA) separates signals from different users with unique code sequences, so that the users can transmit simultaneously using the same frequency. On receipt of a signal, a wireless receiver multiplies the signal with a dispreading waveform to recover a transmitted data sequence. However, data recovery is only possible if the code sequence of the received signal is synchronised with the dispreading waveform. 
     Wideband Code Division Multiple Access (WCDMA) uses orthogonal spreading codes followed by non-orthogonal pseudo-random scrambling codes. Orthogonal Variable Spreading Factor (OVSF) codes are used in Universal Mobile Telecommunication System (UMTS) and High-Speed Downlink Packet Access (HSDPA) protocols. In the HSDPA mode of UMTS, a user is allocated more than one OVSF code. 
     In a single path propagation channel, simple dispreading can recover symbols transmitted by a user, since other OVSF codes are orthogonal thereto. However, in multi-path propagation channels, a signal received by a wireless receiver is a superposition of scaled and shifted copies of the originally transmitted signal. Thus, it is difficult to prevent the spreading codes assigned to different users from interfering with each other. More particularly, if a received signal only comprised the codes of a given user, the wireless receiver could use joint detection algorithms to estimate the transmitted symbols. However, when a signal comprises codes from multiple users, a wireless receiver must decipher a communication from a user, being aware only of the codes uniquely allocated to that user (i.e. unaware of the other codes). 
     International Patent Application WO2005/109708 describes a method for determining spreading codes. However, the spreading codes detected in WO2005/109708 are not the actual spreading codes. Instead, they are virtual codes and the interference reconstructed there from is not an exact interference but an approximation of the projection of the interference on the virtual codes. U.S. Pat. No. 6,956,893 describes a parallel interference cancellation technique. However, the technique does not provide for OVSF symbol detection, since it uses single length spreading parent codes instead of actual child codes. Furthermore, the technique does not use joint detection, since it is designed for single code CDMA. 
     SUMMARY OF THE INVENTION 
     According to the invention there is provided a method and decoder for decoding, in a wireless receiver, a transmission from a predefined user as claimed in the appended claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       An embodiment of the invention will now be described, by way of example only, with reference to the accompanying Figures in which: 
         FIG. 1  is a block diagram of a receiver of a preferred embodiment; 
         FIG. 2  is a flow chart of a method of the preferred embodiment; 
         FIG. 3  is a block diagram of the operations of a detection block in the receiver shown in  FIG. 1 ; 
         FIG. 4  is a flowchart of a forward phase of an algorithm performed by the detection block in the receiver shown in  FIG. 1 ; and 
         FIG. 5  is a flowchart of a backward phase of an algorithm performed by the detection block and an interferer estimation block in the receiver shown in  FIG. 1 . 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     A. Orthogonal Variable Spreading Factor (OVSF) Codes and the General Dispreadinq Problem 
     OVSF codes are formed from an OVSF tree, wherein all codes at a given spreading factor are orthogonal to each other. A first layer of an OVSF tree can be generated from a single parent code C1, by repeating and concatenating the parent code (i.e. to produce [C1 C1]). This process can be repeated (by concatenating and alternating the signs of the elements from the first layer code) to produce two second layer codes [C1 C1 C1 C1] and [C1 C1 −C1 −C1]. This process is essentially repeated for each successive layer of the code tree. For example, taking four OVSF codes C(1,4)=[1 1 1 1]; C(2,4)=[1 1 −1 −1]; C(3,4)=[1 −1 1 −1]; and C(4,4)=[1 −1 −1 1], a first code of length eight can be given by C(1,8)=[C(1,4) C(1,4)]=[1 1 1 1 1 1 1 1]. Similarly, a second code of length eight can be given by C(2,8)=[C(1,4)−C(1,4)]=[1 1 1 1 −1 −1 −1 −1]. A physical channel may use a certain code in the tree; if no other physical channel to be transmitted using the same code tree uses a code that is on an underlying branch (i.e. using a higher spreading factor code generated from the intended spreading code to be used). Neither can a smaller spreading factor code on the path to the root of the tree be used. 
     If a code C1 is present in an incoming signal, dispreading the incoming signal with child-codes [C1 C1] and [C1 C1] causes each of the child codes to be detected approximately half of the time. This occurs because the transmission of two consecutive identical symbols b1 (+1 or −1) corresponds to transmission of [b1 C1 b1 C1]=b1 [C1 C1]. This is equivalent to the transmission of a “virtual code” [C1 C1]. On the other hand, if two consecutive symbols b1 and −b1 are transmitted (wherein −b1 is the opposite of b1 (i.e. is −1 or +1)), it would correspond to the transmission of [b1 C1 −b1 C1]=b1 [C1 −C1]. This is equivalent to the transmission of a virtual code [C1 −C1]. Thus, if a code C1 is used by a transmitter to spread symbols, the two child codes deriving from it, namely [C1 C1] and [C1 −C1], are detected by a receiver around 50% of the time. 
     B. Overview of the Receiver of the Preferred Embodiment 
     Referring to  FIGS. 1 and 2 , a receiver  30  of the preferred embodiment comprises a Minimum Mean Squared Error (MMSE) equalizer  32 , an interferer estimation block  34 , a detection block  36 , a regeneration block  38 , an adder  40  and a joint detection block  42 . In use, an incoming signal r(m) to the receiver  30  at time m, is transmitted to the MMSE equalizer  32  which inverts  44  the effect of the propagation channel on the signal. More particularly, the MMSE equalizer  32  restores the orthogonality between spreading codes lost because of multipath propagation. The output of the MMSE equalizer  32  (i.e. equalized incoming signal r′(m)) is transmitted to the detection block  36 , which determines  46 ,  48  interfering spreading codes (s i (m), where I=1 to N; and N is the number of interferers) in the incoming signal. 
     The equalized received signal (r′(m)) and the interfering spreading codes (s i (m)) are also transmitted to the interferer estimation block  34 , which uses this information to estimate  50  a one or more interferer symbols {circumflex over (b)} i (m) and the powers P i (m) associated therewith. The interferer symbols {circumflex over (b)} i (m) are then spread and scrambled by the regeneration block  38  (using the powers P i (m)) to simulate (or regenerate)  52  an interference signal (i(m)). The interference signal (i(m), is then subtracted  54  (by the adder block  40 ) from the originally received signal (r(m)) to produce an interference-free signal (o(m)). The interference-free signal (o(m)) is transmitted to the joint detection algorithm  42 , where it is used to calculate  56  the symbols originally transmitted by the user of interest. 
     C. Detailed Description of the Method of the Preferred Embodiment 
     There are four categories of spreading codes, namely: 
     1. spreading codes used by the user of interest; 
     2. interfering spreading codes used by other users but known by the user of interest (e.g. spreading codes of control channels); 
     3. interfering spreading codes used by other users and not known by the user of interest; and 
     4. unused spreading codes. 
     The purpose of the detection block  36  is to detect interfering spreading codes used by other users but known by the user of interest; and unused spreading codes. In a simple dispreading approach, N multiplications are needed to dispread a signal using one spreading code of length N; and N 2  multiplications are required to dispread all possible N spreading codes of length N. In contrast, a Fast Walsh transform (FWT) of length N only requires N·log 2 N multiplication to provide dispread symbols for all possible N spreading codes. Thus, for example, if N=256, all the symbols can be dispread with an FWT using 256×log 2  256 (2048) multiplications instead of the 256×256 (65536) multiplication operations required in simple dispreading. Referring to  FIG. 3 , the detection block  36  in the preferred embodiment comprises a plurality of length N FWT calculating modules. Each length N FWT calculating module has N outputs (corresponding to dispreading using all N possible spreading codes of length N). The presence of codes at an output of a length N FWT calculating module, is detected by comparing the energy at the output with a threshold value. Statistical treatment blocks  62  (connected to the outputs of the FWT calculating modules) calculate the percentage of occurrence (at the FWT calculating module output) of each of the possible codes. 
     The detection block  36  and interferer estimation block  34  implements an algorithm comprising a forward and backward phase, wherein (referring to  FIG. 4 ), the forward phase comprises the steps of:
         discarding  64  codes used by the user of interest (since they do not represent interferer signals) from the list of all possible spreading codes;   discarding  66  all parent codes and child codes derived from codes used by users that are known to the user of interest; and   discarding  68  code trees whose percentage of occurrence is close to 0%.       

     Following these steps, the only remaining codes are those of unknown interferers whose occurrence is not negligible. However, because of the above-mentioned occurrence of virtual codes, each real code of length N will appear at the output of an FWT of length N, 2N, 4N etc., (i.e. a code and its child will appear). Thus, the goal of the backward phase of the algorithm, is to distinguish an “actual” code really used, from virtual (child) codes seen at the outputs of the FWT. Referring to  FIG. 5 , the first step of the backward phase, involves checking  70  the percentage of occurrence of high spreading factors for the codes remaining after the forward phase. An actual code is one whose percentage of occurrence is around 100%, wherein the percentage of occurrence of each of its child-codes is around 50%. Accordingly, the second step of the backward phase involves identifying  72  the parent spreading codes of the unknown interferers, wherein the identification is performed on the basis of the above-mentioned difference in the rate of occurrence of parent and child spreading codes. 
     Having identified the spreading codes s i (m) of the known and unknown interferers, the next step is to dispread the original equalised incoming signal r′(m) with the interfering spreading codes, so as to estimate the interferer symbols {circumflex over (b)} i (m). More particularly, the estimate {circumflex over (b)} i (m) of an interferer symbol at time m is given by {circumflex over (b)} i (m)=c′Q(m)′r′(m), wherein c′ is a hermitian conjugate of the spreading code used to transmit the interferer symbol b i (m); and Q(m)′ is a hermitian conjugate of a scrambling matrix. 
     The expectation of b i (m) 2  is equal to the power P i (m) used to scale the symbol before the symbol is transmitted by a base station. More particularly, the power is given by the expression 
                 P   i     ⁡     (   m   )       =       ∑     i   =   1     M     ⁢                  b   ^     i     ⁡     (   m   )            2     ·             
In other words, the power is estimated  76  by averaging the square of M estimated symbols. M can be chosen to be very high if a high degree of precision is required. However, this will entail a significant computational cost.
 
     In order to perform Parallel Interference Cancellation (PIC), it is necessary to simulate (or regenerate)  78  the interference signal i(m) (in the originally received incoming signal) using the estimated interferer symbols ({circumflex over (b)} i (m)), the known scrambling code, the interfering spreading codes (s i (m)) and the estimated interferer powers (P i (m)). The regeneration block  38  regenerates the interference using the expression H·Q·C i ·P i ·{circumflex over (b)} i  wherein H is the propagation channel matrix, Q is the scrambling code matrix, C i  is a matrix of the interfering spreading codes, P i  the estimated diagonal power matrix of interferers and {circumflex over (b)} i  is the estimated interferer symbol vector. As mentioned above, the reconstructed interference is subtracted from the received signal by the adder block (not shown). If the regenerated interference is subtracted from the received signal (by the adder block (not shown)), only the codes of the user of interest remain. These codes can be detected with a joint detection algorithm. For example, the Wiener receiver is a well-known optimum linear receiver, wherein a received signal (x) can be described by the expression, x=H·Q·C·b+noise+interference from other users. In this expression, C is the code matrix of the user of interest, b is the vector of symbols transmitted by the user of interest, the noise term relates to Additive White Gaussian noise (AWGN) and the interference term is that caused by other users. 
     On removing the interference term with the above-mentioned PIC approach, the signal at the output of the adder block  40  is given by: r(m)=H·Q·C·b+noise. Since all the parameters (H, Q, C and the noise variance) of this expression are known or can be estimated, the Wiener receiver model can be used to estimate the symbols transmitted by the user of interest. More particularly, the estimated symbols {circumflex over (b)}(m) are given by {circumflex over (b)}(m)=C′·Q′·H′·(H·Q·C·C′·Q′·H′+noise) −1 ·r(m). The inverted matrix in this expression is the covariance matrix of the incoming signal r(m). Furthermore, C′·Q′·H′ is a matrix containing cross correlation vectors between the incoming signal r(m) and the symbols of the user of interest. 
     Modifications and alterations may be made to the above without departing from the scope of the invention.