The technology relates to communications, and in particular, to receiving and detecting multiple symbols transmitted using spreading codes.
For code division multiple access (CDMA) systems where spreading codes or sequences are used to separate data symbols from each other, from control channels and from symbols to/from other users, advanced non-linear receivers using joint detection, such as sphere decoders, assisted maximum likelihood detection (AMLD), multi-stage group detection (MSGD) etc., or symbol-level interference cancellation (IC) require the computation of spreading code correlations to achieve better performance than linear receivers. However, for wideband CDMA (WCDMA) and similar systems, the spreading sequence correlations are symbol-dependent since the scrambling sequence is symbol-dependent. For example, two spreading sequences of spreading factor 16 have one set of correlation values for one symbol period, but another set of correlation values for the next symbol period. Because the correlations change from symbol to symbol, online correlation computation is very demanding. Moreover, the scrambling codes are often long, e.g., for a WCDMA system 10 milliseconds (or 38400 chips long), which also means that precomputed correlations of the spreading sequences require large amounts of memory to store such large number of correlations.
What is needed then is an efficient way to store and provide spreading sequence correlations.
Apparatus receives a signal containing a block of multiple symbols, each symbol containing information bits spread by a spreading sequence of chips. Each spreading sequence is determined by a channelization sequence and a first complex-valued scrambling sequence of chips or a second complex-valued scrambling sequence of chips. Correlation circuitry processes each block using a set of multiple spreading sequences using one or more correlations between one or more pairs of spreading sequences in the set. Spreading sequence correlation values between each pair of the multiple spreading sequences in the set are manipulated and stored in one or more lookup tables. An address generator addresses one of the lookup tables with an address determined using a first set of reduced basic scrambling bits to retrieve one or more correlation values from the addressed lookup table. The first set of reduced basic scrambling bits is based on manipulation of one set of the basic scrambling bits that reduces a number of bits included in the determined address to less than a number of binary values in the one set of basic scrambling bits. The one set of basic scrambling bits is used to construct one of the first and second complex-valued scrambling sequences. Symbol estimation circuitry uses the retrieved one or more correlation values in mitigating spreading sequence correlation interference between spreading sequences in the set in a process to detect symbol values for two or more information symbols in the received block. In one example embodiment, the one set of the basic scrambling bits is the one set of scrambling generation bits. In another example embodiment, the one set of the basic scrambling bits is expressed as the one scrambling sequence. Without loss of generality, the one scrambling sequence or the one set of the basic scrambling bits are used as examples.
In preferred example embodiments, manipulation of the one scrambling sequence includes exploiting one or more redundancies of the one scrambling sequence. In one example embodiment, the manipulation includes eliminating at least one bit in a row address for addressing the one lookup table based on a redundant bit value in the one scrambling sequence. In another example embodiment, the manipulation includes storing only one correlation value for two different correlations between each pair of the multiple spreading sequences. In yet another example embodiment, the manipulation includes storing rows in the lookup table only where a first bit in each of two of the first set of basic scrambling bits is equal to 0 in a 0/1 representation of binary bits.
In an example implementation, each complex-valued scrambling sequence is determined by a first binary-valued scrambling sequence that determines a real part of the complex-valued scrambling sequence and a second binary-valued scrambling sequence that determines an imaginary part of the complex-valued scrambling sequence. A code generator generates the first and second binary-valued scrambling sequences for the first complex-valued scrambling sequence. A scrambling bits processor determines the first set of the address bits based on the first and second binary-valued scrambling sequences for the first complex-valued scrambling sequence.
In one variation, the address includes a first set of address bits and a second set of address bits. The code generator generates the first and second binary-valued scrambling sequences for the second complex-valued scrambling sequence. The scrambling bits processor determines a second set of address bits based on the first and second binary-valued scrambling sequences for the second complex-valued scrambling sequence. The one lookup table is addressed with an address determined using the first set of address bits and the second set of the address bits to retrieve a first set of correlation values associated with the spreading sequences of the two or more information symbols.
In example embodiments, mapping circuitry maps the first set of correlation values to an actual correlation value.
In example embodiments, determining the first set of address bits includes using an anchor bit among the first set of the basic scrambling bits to obtain an exclusive-OR (XOR) product with each of the other bits among the first set of the basic scrambling bits and forming the first set of address bits based on the XOR products.
In example embodiments, the first set of address bits represents a number that is greater than or equal to the number represented by the second set of address bits.
In example embodiments, the one lookup table is addressed using the first set of the address bits to retrieve a second set of correlation values associated with the spreading sequences of the two or more information symbols. A detected symbol value for each of the two or more information symbols is based on the second set of correlation values.
In some example embodiments, the complex-valued scrambling sequence is defined by:
C
long,n(i)=clong,1,n(i)(1+j(−1)iclong,2,n(2└i/2┘))
wherein:
i is a chip index starting at 0,
the block is a 4-chip symbol block,
the binary values of the scrambling sequence are eight binary values based on the binary values clong,1,n(0), clong,2,n(0), clong,1,n(1), clong,2,n(1), clong,1,n(2), clong,2,n(2), clong,1,n(3), clong,2,n(3) and correspond in this example to the one set of basic scrambling bits, and
clong,1,n(0), clong,2,n(0), clong,1,n(1), clong,1,n(2), clong,2,n(2), clong,1,n(3) correspond in this example to the reduced basic scrambling bits.
The following description sets forth specific details, such as particular embodiments for purposes of explanation and not limitation. But it will be appreciated by one skilled in the art that other embodiments may be employed apart from these specific details. In some instances, detailed descriptions of well known methods, nodes, interfaces, circuits, and devices are omitted so as not to obscure the description with unnecessary detail. Those skilled in the art will appreciate that the functions described may be implemented in one or more nodes using hardware circuitry (e.g., analog and/or discrete logic gates interconnected to perform a specialized function, ASICs, PLAs, etc.) and/or using software programs and data in conjunction with one or more digital microprocessors or general purpose computers. Nodes that communicate using the air interface also have suitable radio communications circuitry. Moreover, the technology can additionally be embodied within any form of non-transitory, computer-readable memory, such as solid-state memory, magnetic disk, or optical disk containing an appropriate set of computer instructions that would cause one or more processors to carry out the techniques described herein.
Thus, for example, it will be appreciated by those skilled in the art that block diagrams herein can represent conceptual views of illustrative circuitry or other functional units embodying the principles of the technology. Similarly, it will be appreciated that any flow charts, state transition diagrams, pseudocode, and the like represent various processes which may be implemented by computer program instructions that may be stored in a non-transitory, computer-readable storage medium and which when executed by one or more computers or processors cause the processes to be performed, whether or not such computer(s) or processor(s) is(are) explicitly shown.
Hardware implementation may include or encompass, without limitation, digital signal processor (DSP) hardware, a reduced instruction set processor, hardware (e.g., digital or analog) circuitry including but not limited to application specific integrated circuit(s) (ASIC) and/or field programmable gate array(s) (FPGA(s)), and (where appropriate) state machines capable of performing such functions.
In terms of computer implementation, a computer is generally understood to comprise one or more processors or one or more controllers, and the terms computer, processor, and controller may be employed interchangeably. When provided by a computer, processor, or controller, the functions may be provided by a single dedicated computer or processor or controller, by a single shared computer or processor or controller, or by a plurality of individual computers or processors or controllers, some of which may be shared or distributed. Moreover, the term “processor” or “controller” also refers to other hardware capable of performing such functions and/or executing software, such as the example hardware recited above.
The functions of the various elements including functional blocks, including but not limited to those labeled or described as a computer, processor, or controller, may be provided through the use of hardware such as circuit hardware and/or hardware capable of executing software in the form of coded instructions stored on non-transitory, computer-readable medium. Thus, such functions and illustrated functional blocks are to be understood as being either hardware-implemented and/or computer-implemented, and thus machine-implemented.
The technology provides a structure associated with a set of scrambling sequences or sets of scrambling generation bits together with one or more pre-computed lookup tables to quickly obtain correlations (including auto-correlations and cross-correlations) between the spreading sequences. The technology is less computationally demanding than pre-computing and storing all possible correlations and requires only a relatively small memory. The one or more pre-computed lookup tables are stored in a memory accessible by a receiver. When the receiver receives and processes a received signal, certain basic scrambling bits (which are binary representations of the scrambling sequence or of the scrambling generation bits that generate the scrambling sequence) are used to generate an address to identify appropriate lookup table locations of the one or more lookup tables to access and retrieve desired pre-computed correlation values. Correlation values retrieved from a lookup table may be used either directly as the desired correlation, or as an index into one or more other lookup tables to obtain the desired correlation. The correlation values stored in the one or more lookup tables include cross-correlations of different time-lags between any pair of spreading sequences within a set of spreading sequences. The same table may be used to store cross-correlations of all the sequence pairs. Alternatively, a separate table may be used for each sequence pair. Ultimately, the receiver may use the obtained correlations for joint detection or other receiver processing. The following example description is in the example and non-limiting context of joint detection, but those skilled in the art understand that the technology is not limited thereto and has other applications.
Each RAKE receiver 12 comprises a plurality of RAKE fingers 16, a plurality of RAKE combiners 18, and a RAKE processor 20. Each RAKE finger 16 processes different time shifts or multi-path echoes of the received signal r(t). Typically, each RAKE finger 16 comprises a delay element 22 and a correlator or despreader 24. Delay elements 22 delay the received signal r(t) to time align the multi-path echoes processed by each RAKE finger 16. Correlators 24 correlate the delayed signals with a spreading sequence to extract the assigned multi-path echoes from the received signal r(t). Despread values from correlators 24 are combined in combiner 18. Combiner 18 typically includes weighting elements 26 and summer 28. Weighting elements 26 weight the multi-path echoes output from respective correlators 24. The weighted multi-path echoes are summed symbol-by-symbol by summer 28 to form a RAKE combined value during each symbol period. Those skilled in the art appreciate that the combining weights associated with weighting elements 26 may correspond to the conjugates of the multiplying coefficients of the multi-path echoes (RAKE) or conjugates of weights that depend on the coefficients and a noise and interference correlation matrix (G-RAKE). The combining weights are computed by the processor 20. Each RAKE combined value represents a symbol of interest or an interfering symbol. Importantly, symbols of interest also interfere with one another. In other words, when a given symbol of interest is considered, the other symbols of interest may be considered as interfering symbols. Further details of the example receiver 10 may be found in commonly-assigned, U.S. patent application publication US 2008/0267265, the contents of which are incorporated herein by reference.
So joint detection uses the correlations of the involved spreading sequences, but the correlations change with each joint detection block because the scrambling sequence for each spreading sequence changes. The following description explains how to precompute and efficiently store and access the sequence correlations needed for joint detection of 4-chip symbol blocks in a wideband code division multiple access (WCDMA) radio communication system context. But the technology is not limited to 4-chip symbol blocks or to WCDMA systems, but instead may be used in any system where sequence correlation values are stored and accessed.
For example, in WCDMA Enhanced Uplink (EUL), long scrambling codes are often used. Because they repeat only after 10 milliseconds (or 38400 chips), a large amount of memory is needed to store precomputed sequence correlations for every 4-chip block directly. To overcome this problem, the inventors identified certain scrambling sequence generation properties and exploited those properties to reduce the storage space needed to store spreading sequence correlations so that all spreading sequence correlations between any 4-chip symbol blocks can be stored in less than 10 kbytes of memory, if desired. Furthermore, if only the correlations of the spreading sequences within one 4-chip symbol block are needed, then only 512 bytes of memory or less is needed for the lookup table, if desired.
WCDMA spreading codes include orthogonal channelization sequences that are scrambled with a complex-valued scrambling sequence. For an EUL peak rate, the channelization sequences used are Cch,2,1 and Cch,4,1, and the control channels use sub-branches of the Cch,4,0 channelization code tree as shown in
However, the complex-valued long scrambling code used in WCDMA UL as specified in 3GPP TS 25.213, section 4.3.2 has the form:
C
long,l(i)=clong,1,l(i)(1+j(−1)iclong,2,l(2└i/2┘)) (1)
where l is the long scrambling code number, └ ┘ denotes rounding to the nearest lower integer, and where clong,1,l(i) and clong,2,l(i) are binary-valued scrambling sequences taking values {+1, −1}. Each individual scrambling chip is defined by two bits: the values of clong,1,l(i) and clong,2,l (2└i/2┘) (with an index i). However, the inventors observed that since the same clong,2,l(i) value is used for two consecutive scrambling chips, (indexes i=2k and i=2k+1, where k is an integer), the value of a pair of scrambling chips Clong,l(2*k) and Clong,l(2*k+1) is completely determined by only three bits, i.e., the values clong,1,l(2*k), clong,1,l(2*k+1), and clong,2,l(2*k). As a result, the scrambling sequence in a block of four chips is completely determined by 6 bits, in contrast to the 8 bits required to represent a general QPSK scrambling sequence lacking the special structure in equation (1). The real and imaginary parts of the chips of the scrambling code described by equation (1) can be separately expressed as:
real(Clong,l(i))=clong,1,l(i) (1a)
imag(Clong,l(i))=(−1)iclong,1,l(i)clong,2,l(2└i/2┘) (1b)
and, thus, clong,1,l(2*k), clong,1,l(2*k+1), and clong,2,l(2*k) can be expressed as functions of real(Clong,l (i)) and imag(Clong,l(i)):
c
long,1,l(2k)=real(Clong,l(2k)) (1c)
c
long,1,l(2k+1)=real(Clong,l(2k+1)) (1d)
c
long,2,l(2k)=imag(Clong,l(2k)/real(Clong,l(2k)) (1e)
This way, the value of a pair of scrambling chips Clong,l(2*k) and Clong,l(2*k+1) can also be described as completely determined by the real and imaginary part of Clong,l(2*k) and the real part of Clong,l(2*k+1). The imaginary part of Clong,l(2*k+1) is determined by the real and imaginary parts of Clong,l(2*k) and the real part of Clong,l(2*k+1) as:
imag(Clong,l(2k+1))=real(Clong,l(2k+1))imag(Clong,l(2k))/real(Clong,l(2k)) (1f).
So in a pair of scrambling chips, only the real and imaginary part of the first chip (2 bits) together with the real part of the second chip (1 bit) are required to completely determine the values of the chip pair. A benefit from this technique is that only 6 bits are required to determine the scrambling sequence in a block of 4 chips. Although UL short scrambling sequences are much shorter than the long sequences, i.e., only 256 chips, both long and short scrambling sequences benefit from the technology described in this application.
In WCDMA, symbols are spread with spreading sequences that are composed of channelization sequences and scrambling sequences. A spreading sequence may be expressed as:
S
SF,k(i)=Cch,SF,k(i)*Clong,l(i) (2)
where Cch,SF,k(i) is a channelization sequence k of spreading factor SF, and SSF,k(i) is the corresponding spreading sequence k of spreading factor SF, and i is the chip index.
The spreading sequences of spreading factor 2 and 4 used in a 4-chip block include: S4,1 and S2,1 for data, and S4,0 (which is the root for control channel spreading sequences of spreading factors higher than 4) for control information, where n here denotes the chip index of the first chip of the spreading sequence.
Expressed as row vectors, the data spreading sequences are:
S
2,1
n
=[S
2,1(n)S2,1(n+1)]
S
2,1
n+2
=[S
2,1(n+2)S2,1(n+3)]
S
4,1
n
=[S
4,1(n)S4,1(n+1)S4,1(n+2)S4,1(n+3)]
where n=4*k and k is an integer.
To make the calculations in 4-chip blocks easier to follow, the spreading sequences of spreading factor 2 may be expressed as being of spreading factor 4 but with zeros inserted:
S
2,1
n
=[S
2,1(n)S2,1(n+1)0 0]
S
2,1
n+2=[0 0S2,1(n+2)S2,1(n+3)]
The value of the SF4 data spreading sequence S4,1n is completely determined by channelization sequence Cch,4,1 and the 6 bits clong,1,l(n), clong,1,l(n+1), clong,1,l(n+2), clong,1,l(n+3), clong,2,l(n) and clong 2,l(n+2) of 8 basic scrambling bits. As will be described in more detail below, this structure is used to manipulate one or more of the scrambling sequences in a way that reduces a number of bits in constructing one of the example lookup tables that store spreading sequence correlation values and in an address used to address the lookup table. Significantly, the reduced number of bits included in the address is less than a number of binary values in the scrambling sequence.
Similarly, for the SF2 data spreading sequences, the values of the spreading sequence are determined by the channelization code Cch,2,1 and by 3 bits of 4 basic scrambling bits. S2,1n is determined by clong,1,l(n), clong,1,l(n+1), and clong,2,l(n), S2,12+2 is determined by clong,1,l(n+2), clong,1,l(n+3), and clong,2,l(n+2).
When multiple symbol blocks are included in joint detection, cross-correlations between spreading sequences from different symbol blocks are needed. The two symbol blocks are denoted by the superscripts m and n. Although the two symbol blocks may correspond to different scrambling sequences and different users, as well as different 4-chip symbol blocks of the signal from the same user, for notational simplicity, it is assumed they correspond to different 4-chip symbol blocks of the same user.
The spreading sequence correlations are:
and so on. The min and max functions are used to keep the correlation calculations within the spreading sequence length.
The spreading sequence correlations are stored in one or more lookup tables in one or more memories. Although it is understood that the correlations may be stored in a variety of ways in memory, for explanation and illustration purposes only, each row in a lookup table stores the correlation value of two spreading sequences. The number of bits needed for one row, i.e., the memory space needed in this example table configuration, is now examined using the correlation of two SF4 sequences. As shown above, the correlations are sums, and for the spreading sequences of length 4, the correlation values are:
(S4,1m*S4,1n)(3)=S4,1*(m)S4,1(n+3)
(S4,1m*S4,1n)(2)=S4,1*(m)S4,1(n+2)+S4,1(m+1)S4,1(n+3)
(S4,1m*S4,1n)(1)=S4,1*(m)S4,1(n+1)+S4,1*(m+1)S4,1(n+2)+S4,1*(m+2)S4,1(n+3)
(S4,1m*S4,1n)(0)=S4,1*(m)S4,1(n)+S4,1*(m+1)S4,1(n+1)+S4,1*(m+2)S4,1(n+2)+S4,1*(m+3)S4,1(n+3)
and so on.
Each complex-valued scrambling chip may be understood as a complex symbol with amplitude √{square root over (2)} and phase 45 degrees+90*n degrees, (where n is an integer). Since the channelization codes take the values {+1, −1}, a chip of a spreading code can be seen as such a complex symbol. The result of the multiplication of two such chips is a new complex symbol with amplitude 2 and phase 90*n degrees taking the values {+2, +2j, −2, −2j} where j2=−1. So each term in the sum in the correlation expressions can take one of these four values. For (S4,1m*S4,1n)(−3) and (S4,1m*S4,1n)(3), there is only one term in the sum, so these correlations can take four values and can thus be represented by 2 bits each.
A sum of two of these terms can take any of 9 unique values {0, +2+2j, +2−2j, −2+2j, −2−2j, +4, +4j, −4, −4j}, so the sum can be represented by 4 bits (4 bits can take 24=16 values). Thus, (S4,1m*S4,1n)(−2) and (S4,1m*S4,1n)(2) can be represented by 4 bits each. In the same way, a sum of three terms can take 16 unique values and can be represented by 4 bits, and a sum of four terms can take 25 unique values and can be represented by 5 bits. Thus, the number of bits required to store (S4,1m*S4,1n)(−3) and (S4,1m*S4,1n)(3) is 2 bits each, (S4,1m*S4,1n)(−2), (S4,1m*S4,1n)(2), (S4,1m*S4,1n)(−1) and (S4,1m*S4,1n)(1) is 4 bits each, and (S4,1m*S4,1n)(0) is 5 bits.
So to store the correlation values of two SF4 spreading codes, a total of 25 bits is required. If a typical lookup table is used, it is more advantageous to use 32 bits, because then each row in the table is 32 bits or 4 bytes offset to the next row to provide simple addressing into such a table. Take the row number (starting from 0) and multiply it by 32 which is readily done by bit-shifting it 5 steps to the left. It is preferred to represent the correlations using 4 bits, except (S4,1m*S4,1n)(0) which uses 8 bits.
For correlations of one SF4 code with one SF2 code, the correlation values take 4, 9, 9, 9, and 4 unique values for three different correlation lags. This can be represented by 2, 4, 4, 4, and 2 bits, respectively, and a table of these correlations would thus require 16 bits in each row. For correlations of two SF2 codes, the correlation values take 4, 9, and 4 unique values for the three different correlation lags. These values may be represented by 2, 4, and 2 bits so that each row holds 8 bits.
In terms of the number of rows in a lookup table, because 6 bits determine the scrambling of one SF4 spreading code as described above in conjunction with equation (1), a SF4×SF4 table of all correlations of two SF4 spreading codes includes 26+6=4096 rows. With 32 bits in each row, the table of size is 4096*32 bits=16 kbytes instead of 28+8=65536 rows×32 bits=256 kbytes. In other words, the storage requirements are reduced 16 times. This simplified table structure is referred to as example technique A. Example technique A is described further below in conjunction with
The following specific examples help illustrate some of the advantageous efficiencies of the technology for example technique A.
Another example technique B discovered by the inventors is to include rows only for those cases where the first bit in each of the two scrambling generation sequences is equal to 1 for ±1 representation. For 0/1 representation, the first rows with value 0 are kept. As described above, the 8 scrambling generation bits for the first symbol block of 4 chips in
For the correlation of two SF2 codes, only 3 of the 4 scrambling generation bits are needed for each code. In total, there will be 26=64 rows in such a SF2×SF2 table, and for the correlation of one SF4 code with one SF2 code, 6+3=9 scrambling generation bits determine that the number of rows in the table will be 29=512. For these correlations, there is less of a need to pack the table more compactly as there might be for the SF4×SF4 table above.
However, one or more of the techniques described above may be used to reduce the number of lookup table rows for the correlations between two SF2 codes or correlations between one SF4 code and one SF2 code.
The inventors further observed that the correlations for (S4,1n*S4,1m)(t)=(S4,1m*S4,1n)*(−t), where m≠n are stored twice in such a table according to example technique A. Accordingly, the amount of memory needed for correlation storage may be reduced by almost half. There are 26*(26−1)/2=2016 such rows. So all correlations where m>n can be removed from the table, and the resulting table has 26*(26+1)/2=2080 rows, and the size is 2080*32 bits=8320 bytes<8.2 kbytes (1 kbyte=1024 bytes). This table structure is referred to as example technique C and may be realized by storing the correlations as an upper-packed table/matrix where the upper triangular part, including the diagonal, is stored column by column. However, indexing or addressing such a table may be somewhat more complicated.
Example Addressing of a SF4×SF4 Table.
Recall that the value of the spreading code S4,1n is completely determined by channelization code Cch,4,1 and the 6 bits clong,1,l(n), clong,1,l(n+1), clong,1,l(n+2), clong,1,l(n+3), clong,2,l(n) and clong,2,l(n+2) of the 8 scrambling generation bits. To identify the correct row in a lookup table for a particular spreading code correlation, the following example may be used:
am=decimal value of the 6 of the 8 scrambling generation bits for S4,1m.
an=decimal value of the 6 of the 8 scrambling generation bits for S4,1n.
The address into the table of technique A would be
row=am±an26 (2)
The address into the table of technique C would be
row=am+an(an+1)/2 (3)
if an≧am. If an<am, the relation (S4,1n*S4,1m)(t)=(S4,1m*S4,1n)*(−t) would be utilized by exchanging am and an and using these exchanged values to compute the address and by using the time lag −t instead of t to find the correlation value. The complex conjugate of the value found using the look-up table would then be used as the correlation value.
The rows in the example technique C table correspond to the address bit values am and an as illustrated in Table 1 below.
For example technique B, the correct row in the lookup table may be located using the following example:
Furthermore, example technique B can be combined with example technique C to achieve further reduction in the number of rows. With such a combination, the number of rows needed is only 25*(25+1)/2=528.
In any of the example SF4×SF4 table realizations, each row takes 32 bits, so the variable “row” simply needs a left-shift of 5 bit positions to formulate the address to the 32 bits that contain the desired correlation.
Number of Tables.
By examining the correlation expressions and understanding that the 6 of the 8 scrambling generation bits completely determine the spreading code (together with the channelization code), the correlation of all two SF2 codes can be looked up in only one SF2×SF2 table. Similarly, only one SF4×SF2 table is needed to store all correlations of S4,1m with any of the SF2 codes and only one SF4×SF4 table is needed for the correlation of S4,1m with S4,1n.
Assuming technique C is used in combination with technique A, the total memory required for storage of the lookup tables is:
SF2×SF2: 64 rows of 8 bits: 64 bytes
SF4×SF2: 512 rows of 16 bits: 8192 bits=1 kbyte
SF4×SF4: 2080 rows of 32 bits=8320 bytes<8.2 kbytes
In a receiver that employs interference cancellation, the control channels can be cancelled before joint detection. However, if control channels are also handled by the joint detection algorithm and the code correlations for the control channel spreading codes are needed, two additional tables for SF4×SF4 are preferably employed: one for S4,0m correlated with S4,0n and one for S4,0m correlated with S4,1n. Also another SF4×SF2 table is preferably employed for correlations of S4,0m with the SF2 codes.
Only Intra-Block Code Correlations.
If only symbols within one symbol block are jointly detected, only the correlations between the three data spreading codes S4,1n, S2,1n and S2,1n+2 within one 4-chip symbol block are required, e.g., by a joint detection algorithm, a small lookup table can be used. Since S4,1n, S2,1n, and S2,1n+2 are orthogonal at zero lag correlation, those correlation values do not need storage. Furthermore, the autocorrelations are Hermitian functions, and as a result, only the autocorrelations for positive lags need to be stored because the autocorrelations at negative lags are simply the complex conjugates of the positive lag autocorrelation values. As in the more general case of inter-block correlations described above, separate tables may be used for the SF4×SF4, SF4×SF2 and SF2×SF2 cases. However, the final table in the intra-block correlation case may be so small that these optimizations, although they may be used, may not be justified. Instead, only one lookup table for all correlation values is described.
The realization of the three spreading codes S4,1n, S2,1n and S2,1n+2 in a 4-chip symbol block is determined by 6 of the 8 scrambling generation bits. So the final lookup table will have 26=64 rows. The autocorrelation (S4,1n*S4,1n)(t) needs storage of 3 correlations which take 4, 9, and 16 unique values. (S2,1n*S2,1n)(t) and (S2,1n+2*S2,1n+2)(t) each have only one correlation value to store, and that correlation can take 4 unique values. The cross-correlations (S4,1n*S2,1n)(t) and (S4,1n*S2,1n+2)(t) need storage of 4 correlations, which take 4, 9, 9, and 4 unique values. (S2,1n*S2,1n+2)(t) needs storage of 3 correlations, which take 4, 9, and 4 unique values.
Since the final table is quite small, 4 bits may be used to store each correlation value, even though fewer bits can be used to represent the unique values of the correlations at some lags. So each row in the table stores 16 correlations, with 4 bits each. If the table has 64 rows, then the final table size is 512 bytes.
Although the non-limiting examples above are given for a single peak rate user, the code correlations computed in the tables may also be used for joint detection of multiple users or for symbol-level IC of multiple users. The non-limiting examples use 4-chip blocks, but spreading code correlations for symbol blocks of larger size may be obtained by post-processing (summing) the correct values from the tables. The same lookup tables may be used in a variety of applications. One example is in maximum likelihood sequence estimation (MLSE) used as a last step in multi-stage group detection (MSGD), also known as assisted maximum likelihood detection, (AMLD).
The technology described above uses the structure of the scrambling code together with pre-computed lookup tables to quickly obtain correlations between the spreading codes. The technology is relatively computationally inexpensive and requires only a small memory compared to pre-computing and storing all possible correlations.
Although the description above contains many specifics, these should not be construed as limiting the scope of the claims but as merely providing illustrations of example embodiments. It will be appreciated that the technology claimed fully encompasses other embodiments which may become apparent to those skilled in the art, and that the scope of the claims is accordingly not to be limited. Reference to an element in the singular is not intended to mean “one and only one” unless explicitly so stated, but rather “one or more.” All structural and functional equivalents to the elements of the above-described embodiments that are known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed hereby. Moreover, it is not necessary for a device or method to address each and every problem sought to be solved for it to be encompassed hereby. No element, block, or instruction used in the present application should be construed as critical or essential to the implementations described herein unless explicitly described as such. Further, the phrase “based on” is intended to mean “based, at least in part, on” unless explicitly stated otherwise. Unclaimed subject matter is not dedicated to the public and Applicant reserves all rights in unclaimed subject matter including the right to claim such subject matter in this and other applications, e.g., continuations, continuations in part, divisions, etc.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/SE2012/051267 | 11/16/2012 | WO | 00 |