This invention relates generally to wireless communications and, more particularly, to a method and system for decoding block codes.
The wide spread use of wireless devices in a network environment has increased the demand for wireless local area networks (“WLANs”) to provide high data rates at low cost. Complementary Code Keying (CCK) is one communication technique that can be used to meet this demand. CCK uses complementary polyphase codes for modulating digital information, which has been adopted by IEEE 802.11b as the modulation scheme for WLANs operating at 5.5 Mbit/s and 11 Mbit/s data rates in a 2.4 GHz band. These types of codes provide complementary sequences (“symbols”) having phase parameters, and possess symmetry ideal for transmitting digital information. Typically, at a high data rate of 11 Mbit/s, the codes are grouped as “codewords” having 8-chips or a code length of 8. These codewords are a type of block code (“block codewords”). In this case, 256 possible combinations of codewords may be used. Communication systems can thus extract digital information from a received signal modulated with CCK codewords by decoding the CCK codewords.
One prior complementary code decoder is described in U.S. Pat. Nos. 5,841,813 to van Nee and 5,862,182 to Awater et al., which extracts information data of a CCK codeword by correlating different samples of the received signal. For such a decoder, the signal-to-noise ratios degrade significantly after the differential correlators. Additionally, the decoder is not applicable for transmission of CCK codes in multipath environments.
One possible decoding scheme for block codes is to match the received signal with all possible code patterns by correlators. A disadvantage of such a decoding scheme is that its complexity increases if the size of the block code is too large. Furthermore, this is an inefficient manner of decoding block codes such as CCK code. A low-complexity decoder for CCK was introduced by M. Webster and C. Andren, Harris/Lucent CCK description: additional cover code and fast transform detail, IEEE 802.11-98/331, September 1998, in which only a subset of CCK codewords are required to be correlated with the received signal by using a fast Walsh transform. However, this type of low-complexity decoder does not adequately address the problems caused by interference in multipath environments when decoding CCK codes.
For instance, in multipath environments such as inside an office building, the delay spread of a received signal can cause interference during decoding of CCK codes and symbols within each CCK codeword contained in the received signal. In particular, multipath distortion caused by signals being reflected off of walls within the building can result in propagation delay of the received signal. This type of distortion or interference regarding CCK codewords is referred to as inter-symbol interference (ISI). Two types of ISI can occur: inter-codeword interference and intra-codeword interference. Inter-codeword interference is signal interference between codewords. Intra-codeword interference is signal interference between symbols within a codeword.
One prior receiver is described in U.S. Pat. No. 6,233,273 to Webster et al. that deals with inter-codeword and intra-codeword interference. This receiver is a channel-matched correlation receiver (“RAKE”) that uses a decision feedback equalizer to mitigate the effects of multipath distortion. A disadvantage of this receiver is that it requires high signal-to-noise ratios, but a low-signal-to-noise ratios error propagation in the decision feedback equalizer causes chip errors to occur in bursts. This degrades the reliability of decoding CCK codewords. Thus, to handle low signal-to-noise ratios, the RAKE receiver is required to examine all received codeword chips prior to making a codeword decision, which is an inefficient manner of decoding CCK codewords.
One prior decoding technique has been introduced to decode and correct errors found in a signal encoded by a convolutional code. Convolutional code, unlike CCK codewords, is a continuous stream of data such as satellite data. This technique is commonly referred to as “Viterbi Decoding” that uses a trellis diagram to find a maximum-likelihood path recursively over the trellis diagram to decode convolutional data, as described in A. J. Viterbi, Error bounds for convolutional codes and an asymptotically optimum decoding algorithm, IEEE Transactions on Information Theory, vol. IT-13, pp. 260-269, April 1967.
Thus, what is needed is a block code decoder that can use Viterbi decoding techniques in order to reduce the computational complexity for decoding block codes and to handle multipath distortion in multipath environments or on multiple types of channels.
According to one aspect of the invention, a method is disclosed for processing a signal containing at least one block code. The block code is modulated using at least one of a plurality of modulation modes in the received signal. The block code contained in the signal is selectively decoded based on the modulation mode for the block code using a trellis diagram corresponding to the modulation mode for the block code.
According to another aspect of the invention, a communication system is disclosed comprising a receiver and a decoder. The receiver receives a signal containing at least one block code. The block code is modulated using at least one of a plurality of modulation modes. The decoder selectively decodes the block code contained in the signal based on the modulation mode for the block code using a trellis diagram corresponding to the modulation mode of the block code.
According to another aspect of the invention, a method for processing a signal is disclosed in which a signal is received. The signal includes at least one codeword modulated therein. The codeword is decoded by using a trellis diagram having a plurality of subtrellis diagrams, wherein the decoding includes deriving a codeword candidate for each of the subtrellis diagrams, and selecting one of the derived codeword candidates as the decoded codeword.
According to another aspect of the invention, a communication device is disclosed for processing a signal comprising a receiver and a decoder. The receiver receives the signal including at least one codeword modulated therein. The decoder decodes the codeword by using a trellis diagram having a plurality of subtrellis diagrams. The decoder includes a plurality of subdecoding units to derive a codeword candidate for each of the subtrellis diagrams and to select one of the derived codeword candidates as the decoded codeword.
According to another aspect of the invention, a method is disclosed for processing a signal in which a signal is received that includes at least one codeword modulated therein. A decoding mode is selected for the codeword. The decoding mode is based on a plurality of modulation modes for the codeword. The codeword is decoded based on the selected decoding mode using a trellis diagram based on the selected decoding mode.
According to another aspect of the invention, an apparatus is disclosed comprising a receiver and a decoder. The receiver codeword data. The decoder is selectively configurable to decode the codeword data in at least one of a low-rate CCK modulation mode, high-rate CCK modulation mode, differential quadrature phase shift (DQPSK) Barker sequence modulation mode, and differential binary phase shift keying (DBPSK) Barker sequence modulation mode.
According to another aspect of the invention, a receiver is disclosed for processing a signal in a CCK modulation mode comprising a plurality of processing structures for receiving codeword data contained in the signal and deriving from the codeword data a plurality of respective codewords from respective subtrellis diagrams within a single trellis diagram. The receiver also includes a selecting circuit for selecting one of the plurality of the respective codewords as a decoded codeword output.
According to another aspect of the invention, a method of processing data in a system employing a CCK modulation scheme is disclosed. For the method, a first plurality of codewords is produced in a high-rate CCK modulation mode. A second plurality of codewords is produced in a low-rate CCK modulation mode, and a codeword output is obtained from at least one of the first and the second plurality of codewords.
According to another aspect of the invention, an apparatus for processing data in a system employing a CCK modulation scheme is disclosed comprising a first circuit, second circuit, and a selector. The first circuit produces a first plurality of codewords in a high-rate CCK modulation mode. The second circuit produces a plurality of codewords in a low-rate CCK modulation mode. The selector obtains a desired codeword output in response to at least one of: 1) the first plurality of codewords and 2) the second plurality of codewords.
According to another aspect of the invention, a method of processing a signal in a selected CCK modulation mode is disclosed. For the method, a signal is received to be processed. The received signal is processed in the selected CCK modulation mode utilizing a CCK trellis diagram for representing a plurality of associated CCK codewords of the signal, and wherein a selected one of the plurality of associated CCK codewords is represented as a path in the CCK trellis.
Other features and advantages of the invention will be apparent from the accompanying drawings, and from the detailed description, which follows below.
The accompanying drawings, which are incorporated in, and constitute a part of, this specification illustrate exemplary implementations of the invention and, together with the detailed description, server to explain the principles of the invention. In the drawings,
Reference will now be made in detail to implementations of the invention, examples of which are illustrated in the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts.
The following implementations allow block codes contained in signal to be decoded using a single decoder and trellis diagram. The signal can include at least one block code, and the block code can be modulated using at least one of a plurality modulation modes. The block code contained in the signal can be selectively decoded based on the modulation mode for the block code using a trellis diagram corresponding to the modulation mode for the block code. For example, the modulation mode can be a low and high-rate CCK modulation mode or a DQPSK Barker sequence modulation mode and a DBPSK Barker sequence modulation mode. In this manner, multiple types of block codes can be decoded using a single decoder and trellis diagram.
In the following description, a “block code” can refer to any type of block code having a collection of codewords of a fixed length. For example, a CCK codeword can be one type of block code of length 8 thereby providing 256 possible combinations of codewords for high-rate CCK modulation. Other types of codewords are described below. Additionally, source information bits can be mapped to one codeword within a specific block code. For example, 8 bits of source information can be mapped to a high-rate CCK codeword, which can have up to 256 distinct codewords for high-rate CCK modulated codes.
The following implementations and examples are described for decoding block codes such as CCK codes and Barker sequence codes using a trellis diagram for each type of code. However, any type of block code can be decoded using a trellis diagram representing all possible combinations of codewords for that type of block code.
In the following description, a CCK codeword can be a block codeword having a code length of eight (8) at a chip rate of fchip, and can be denoted as c=(c1, c2, c3, c4, c5, c6, c7, c8) where cl represents the ith symbol of the CCK codeword c. Each symbol can represent a complex number. Nevertheless, the following implementations are not limited to a block codeword length of 8 and can be implemented for codewords having any block codeword length such that a trellis diagram is provided with a path for each possible combination of the codeword. The following formula can be used to derive the CCK codeword c at a 5.5 Mbit/s low-rate modulation and a 11 Mbit/s high-rate modulation:
c=(ej(φ1+φ2+φ3+φ4), ej(φ1+φ3+φ4), ej(φ1+φ2+φ4),−ej(φ1+φ4), ej(φ1+φ2+φ3), ej(φ1+φ3),−ej(φ1+φ2), ejφ1)
where φi for i=1,2,3,4 belong to quadrature phase-shift keying (QPSK) phases, i.e., φiε{0,π/2,π,3π/2} for i=1,2,3,4. Thus, there are two types of CCK modulation modes or types: high-rate CCK modulation and low-rate CCK modulation.
For high-rate CCK modulation, 8 information bits (d0 to d7) are carried by each transmitted codeword. In this manner, 256 possible codeword combinations can be modulated in a signal. The codewords can be generated by having φ1, φ2, φ3, and φ4 range over all possible QPSK phases, i.e.,φ1ε{0,π/2,π, 3π/2{, for i=1,2,3,4. The four phases φ1, φ2, φ3, and φ4 can be encoded by the 8 information bits d0 to d7. For example, φ1 may be encoded from (d0,d1) based on the DQPSK modulation scheme, and φ2, φ3, and φ4 may be encoded from (d2,d3), (d4,d5), and (d6,d7), respectively, based on the QPSK modulation scheme.
For the low-rate CCK modulation, 4 information bits (d0 to d3) can be carried by each transmitted codeword. In this manner, 16 codeword combinations can be provided for low-rate CCK modulation. The 16 possible codewords can be generated with φ1, φ2, φ3, and φ4 ranging the possible phases specified by the following phase values:
φ1 ε{0,π/2,π,3π/2}
φ2 ε{π/2,3π/2}
φ3 =0
φ4 ε{0,π}
The four phases φ1, φ2, φ3, and φ4 are encoded by the 4 information bits d0 to d3. For example, φ1 may be encoded from (d0,d1) based on DQPSK modulation, and φ2, φ3, and φ4 can be encoded from (d2,d3) based on the following equations:
φ2 =(d2×π)+π/2
φ3 =0
φ4 =d3×π
Thus, each CCK codeword can include 8 complex pulses (“chips”) to carry 8 bits of information at a high-rate of 11 Mbit/s for transmitting the source data. At a low-rate of 5.5 Mbit/s, 4 bits of information can be mapped to the CCK codeword for transmitting the source data.
The set of all possible phases Ω={0,π/2,π,3π/2} for a CCK codeword can be represented as a set of integers Z4={0,1,2,3}. The mapping from Z4 to Ω can then be defined as λ(u)=uπ/2, for u ε Z4. A phase addition is then equivalent to a modulo-4 addition in Z4. If the following is set for u1 to u4,
u1=2φ1/π
u2=2φ2/π
u3=2φ3/π
u4=2φ4/π
then u1,u2, u3, u4 ε Z4. In such a manner, a CCK codeword can be represented as:
c=(ejp1π/2, ejp2π/2, ejp3π/2, ejp4π/2, ejp5π/2, ejp6π/2, ejp7π/2, ejp8π/2)
where p=(p1,p2,p3,p4,p5,p6,p7,p8) is the phase representation of the codeword and can be determined by:
where all the additions are modulo-4 additions.
The following implementations can be used to modulate codes using a Direct Sequence Spread Spectrum (DS-SS) modulation technique in which user data can be represented by a sequence of pulses or “chips” at a much higher chip rate than the original data bits. For DS-SS, and 11-chip Barker sequence can be used according to DQPSK and DBPSK modulation techniques. The Barker sequence can be formed using the following sequence codes:
+1, −1, +1, +1, −1, +1, +1, +1, −1, −1, −1
The leftmost chip “+1” can be outputted first in time. For example, the first chip can be aligned at the start of a transmitted DQPSK or DBPSK signal in which the signal period is 11 chips. The modulated Barker sequence can represent a “Barker codeword.” For DQPSK modulation, there are four possible Barker codeword combinations, which are as follows:
(+1, −1, +1, +1, −1, +1, +1, +1, −1, −1, −1)
(+j, −j, +j, +j, −j, +j, +j, +j, −j, −j, −j)
(−1, +1, −1, −1, +1, −1, −1, −1, +1, +1, +1)
and for DBPSK modulation there are two possible Barker codeword combinations, which are the first and third codewords as shown above.
The above block codes for CCK codewords and Barker codewords can be represented in separate or combined trellis diagrams, which is described in further detail below. The decoder described herein can decode CCK codewords and Barker codewords contained or embedded in a received signal using one or more trellis diagrams.
Referring to FIG 1. the block code encoder 20 receives data bits from a message source 10 and can encode the data bits into a low or high-rate CCK codeword or a DQPSK or DBPSK Barker sequence codeword for modulation in a carrier signal. The encoder 20 can use, e.g., the above formulas to encode the data bits into a CCK codeword c having eighty symbols (i.e., complex numbers) represented as (c1, c2, c3, c4, c5, c6, c7, c8} for low and high-rate CCK codewords, or into one of the four Barker sequence codewords for DQPSK modulation or one of the two Barker sequence codewords for BBPSK modulation.
The encoder 20 can output two symbols (c2k−1 and c2k) of a codeword, which can by symbols for even and odd phases of the codeword. The encoder 20 is described in further detail regarding
Referring to
The A/D converter 102 converts the received signal into a discrete-time digital signal for processing by interpolator 103. The interpolator 103 can compensate for timing drifts between a local sampling clock and a transmitted clock, and can operate at a rate fsample. For example, if the timing difference between the two clocks is larger than a certain value, the interpolator 103 can adjust the sampling phase of the received signal so that the sampled point can be at proper positions. The resolution of the interpolator 103 can be configured for Tres=Tsample/μ, where μ is a positive interger and Tsample=1/fsample. The output from interpolator 103 can be expressed approximately as r(nTsample+mTres), where m is an integer which is controlled by the timing/phase tracking module 110.
The phase compensator 104 compensates for a phase error Δθ. The phase compensator 104 can operate at a rate fsample. The phase error Δη can be obtained from the timing/phase tracking 110, which is described in further detail below. In one example, a complex-number multiplier can be used to remove the phase error Δθ by multiplying the received signal e−jΔθ. The chip matched filter 105 operates as a finite-impulse response (FIR) filter for filtering the signal from the phase compensator 104, and can operate at rate fsample. The down sampler 106, which can operate at a rate fchip, down samples the signal from the chip matched filter 105 by a factor of R. This results in a signal with a sampling rate fchip.
The block code decoder 108 receives the down sampled signal from the down sampler 106 for decoding codewords contained in the down sampled signal or received signal. The decoder 108, which can operate at a rate of fchip, can decode CCK codewords and Barker codewords contained in the down sampled signal using a trellis diagram. As described in further detail below, a single trellis diagram can have embedded a plurality of trellis diagrams wherein each trellis diagram can be used for decoding a particular type of block code, e.g., low and high-rate CCK codes and DQPSK and DBPSK Barker codes. Accordingly, a single decoder 108 can be configured or a mode selected for decoding high-rate CCK codes, low-rate CCK codes, DQPSK Barker sequence codes, and DBPSK Barker sequence codes.
The timing/phase tracking module 110, which can operate at rate fsample, tracks variations of both timing and phase errors. That is, because a sampling clock frequency is determined from a free running clock (not shown), timing drifts can occur between remote and local clocks during decoding or detection of blocks codes. Furthermore, due to frequency offset and random phase error, a received signal can suffer from a phase rotation in both constant and random fashions. The timing/phase tracking module 110 outputs a decision of the timing error back to the interpolator 103, which can cause the sampling phase of the interpolator 103 to move forward the sampling point m (e.g., increase m by 1) or move backward the sampling point m (e.g., decrease m by 1) or stay at the current point (e.g., m remains unchanged) with the resolution of Tres. The timing/phase tracking module 110 outputs a decision of the phase error back to the phase compensator 104, which can cause the current compensating phase to increase Δ0, decrease Δθ, or remain the same. To make such decisions, the timing/phase tracking module 110 uses decoded codewords from the block codeword decoder 108 and the output of the channel estimator 109, which provides the estimate of the channel impulse response.
The following exemplary trellis diagrams represent trellis diagram for CCK codes and Barker sequence codes. Such exemplary trellis diagrams can be used to represent the set of all possible codeword combinations for a particular type of code. Data relating to the following trellis diagrams can be stored in one or more memory devices and used by decoder 108 to perform the decoding techniques described herein.
Each trellis diagram includes a plurality of paths traversing any number of branches between states in the trellis diagram. Each path from an initial state to a final state can represent a codeword combination. Thus, a trellis diagram can be provided for any number of paths to represent any number of codeword combinations. The trellis diagrams can also depict state transitions of a finite state machine with its state sk displayed at each time k. Each possible state transition from sk−1 to sk is represented by a branch in the trellis diagram. As a result, a trellis diagram can provide a one-to-one correspondence between a path in the trellis diagram and a possible codeword combination.
Referring to
The three intermediate states, s1, s2, and s3, (303, 305, and 307) can be represented as s1=(a1, a2), s2=(a3, a2), and s3=(a4, a2). The variables a1, a2, a3, and a4 can be functions of u1, u2, u3, and u4 and defined by:
a1=u1+u2+u3+u4
a2=u2
a3=u3
a4=u1
where all the additions are modulo-4 additions. There can be 16 possible values for each sk, k=1,2,3, as indicated in
As shown in
(p1,p2)=(a1,a1+3a2)
(p3,p4)=(a1+3a3,a1+3a2+3a3+2)
(p5,p6)=(a2+a3+a4,a3+a4)
where all the additions are modulo-4 additions.
a1=u1+u2+u3+u4
a2=u2
a4=u1
a5=(u1+u3+u4) mode 2
Referring to
(p1,p2)=(a1,a1+3a2)
(p3,p4)=(aa,a1+3a2+2)
(p5,p6)=(a2+a4,a4)
(p7,p8)=(a2+a4+2,a4).
As shown in
As described above, the 11-chip Barker sequence used for DQPSK and DBPSK modulation are: +1, −1, +1, +1, −1, +1, +1, +1, −1, −1, −1. The four possible Barker codewords for DQPSK modulation is: (+1, −1, +1, +1, −1, +1, +1, +1, −1, −1, −1); (+j, −j, +j, +j, −j, +j, +j, +j, −j, −j, −j); (−1, +1, −1, −1, +1, −1, −1, −1, +1, +1, +1) and (−j, +j, −j, −j, +j, −j, −j, −j, +j, +j, +j). The two possible Barker codewords for DBPSK modulation are the first and third codewords of the possible codeword combination noted above.
The DQPSK and DBPSK Barker sequence trellis diagrams contain six sections. Each section can have two symbols and the last section can have one symbol. These Barker sequence trellis diagrams can be embedded in a high-rate CCK trellis diagram. As will be described in further detail below, a single decoder can be used to decode the different types of block codes using a single trellis diagram having paths for high and low-rate CCK codewords and Barker sequence codewords.
For the Barker sequence trellis diagrams, there are four disjoint paths for DQPSK modulation (
The following exemplary decoding algorithms can be implemented by decoder 108 in
The set of all possible CCK codewords can be denoted as C in which
To decode C, the decoder 108 can find a codeword c′ in C that is “nearest” to the received signal yn based on a distance measurement such as, for example, the squared Euclidean distance of
In one example, the computation complexity for determining c′ is approximately equal to |C|, where |C| denotes the number of codewords in C. This, however, requires evaluating 256 possible CCK codewords for high-rate CCK modulation by computing, e.g., the squared Euclidean distance between each CCK codeword and the received signal.
Such a process can be avoided by using a trellis diagram, e.g., the trellis diagram as shown in
The minimization determination is taken over all the possible proceeding states {sk} that connect to state sk+1, and Bk(sk, sk+1) denotes the branch metric of the branch between state sk and state sk+1 and is formed by summing a square of a magnitude of a first term and a square of a magnitude of a second term. The first term is the summation of a first received signal and a minus value of the first element of the branch label on the branch between sk and sk+1. The second term is the summation of a second received signal and a minus value of the second element of the branch label on the branch between sk and sk+1. Such an algorithm or process outputs the decoded block codeword stored in the surviving path that terminates at the right zero state s4 in the CCK trellis diagram.
For flat fading channels,
yn=h*
where h is a complex-value fading gain for the flat fading channel and ηn is the additive white Gaussian noise, and “*” denotes a complex conjugate operator.
Referring to the trellis diagram of
The minimization determination can be taken over all the possible proceeding states {sk} that connect to state sk+1, and Bk(sk,sk+1) denotes the branch metric of the branch between state sk and state sk+1 and is formed by summing a square of a magnitude of a first term and a square of a magnitude of a second term. The first term is the summation of the following items: a first received signal and a minus product of the first element of the branch label on the branch between sk and sk+1 and an estimated fading gain. The second term is the summation of the following items: a second received signal and a minus product of the second element of the branch label on the branch between sk and sk+1 and an estimated fading gain. This algorithm or process can output the CCK codeword stored in the surviving path that terminates at the right zero state s4 in the CCK trellis diagram.
For ISI channels, which can have intersymbol interference, the channel impulse response of the ISI channel can be represented as h=(ho,h1, . . . , hk). The transmitted CCK code sequence can be represented as
where ηn represents the additive white Gaussian noise.
Since CCK codewords are transmitted consecutively, all possible super codewords x=(c1,c2, . . . ,cQ) can be determined from concatenated CCK trellis diagrams such as that shown in
Let ξ1,ξ1, . . . , ξ4Q be the state sequence of the concatenated trellis. It is obvious that ξk ε S(k mod 4). Then, for k=0,1, . . . ,4Q=1, the path metric at the (k+1)th step can be updated as:
The minimization determination can be taken over all the possible proceeding states {ξk} that connect to ξk+1, and Bk(ξk,ξk+1) denotes the branch metric of the branch between state ξk and state ξk+1 and is formed by summing a square of a magnitude of a first term and a square of a magnitude of a second term. The first term is the summation of the following items: a first received signal; a minus product of the first element of the branch label on the branch between ξk and ξk+1 and a most recent channel estimation from the channel estimator; a minus sum of the products of the labels stored in the surviving path for the state ξk and the channel estimation from the channel estimator. The second term is the summation of the following items: a second received signal and a minus product of the second element of the branch label on the branch between ξk and ξk+1 and a most recent channel estimation from the channel estimator; a minus sum of the products of the labels stored in the surviving path and the channel estimation from the channel estimator 109.
For alternative implementations, the path and branch metrics for the above decoding algorithms can be obtained using path and branch metric algorithms described in issued U.S. Patent Application No. 10/227093, entitled “METHOD AND SYSTEM FOR DECODING BLOCK CODES BY CALCULATING A PATH METRIC ACCORDING TO A DECISION FEEDBACK SEQUENCE ALGORITHM,” filed on Aug. 21, 2002.
The phase mapper 801 receives data bits d0, . . . , d7 and maps the data bits into four phase representations u1, u2, u3, and u4, based on values for φ1, φ2, φ3, and φ4. The phase representations u1, u2, u3, and u4 can be determined as described above. The phase mapper 801 outputs the phase representations u1, u2, u3, and u4 to converter 802. The converter 802 converts the phase representations u1, u2, u3, and u4 into variables a1, a2, a3, and a4, which are outputted to the data processor 803.
The data processor 803 receives the variables a1, a2, a3, and a4 and processes them to output the variables in a selective order. For example, the data processor 803 can output a first sequence of variables in the order (a1,a3,a4,0) to a first delay element 804 and first coefficient operator 806 and a second sequence of variables in the order (a2,a2,a2,0) to a second delay element 805 and second coefficient operator 807. As described above, these variables describe intermediate states of a trellis diagram and be functions of u1, u2, u3, and u4, which are used to determine odd-phase and even-phase representations p2k−1 and p2k, respectively, of an encoded codeword.
The first delay element 804 receives and delays the first sequence of variables (a1,a3,a4,0). Initially, the output of the first delay element 804 is set to zero. The second delay element 805 receives and delays the second sequence of variables (a2,a2,a2,0). Initially, the output of the second delay element 805 is set to zero. The first coefficient operator 806 receives the delayed first sequence of variables from the first delay element 804 and the first undelayed sequence of variables from the data processor 803. The first coefficient operator 806 performs a mapping function to transfer the first delayed sequence of variables and the first undelyaed sequence of variables into a first delayed coefficient sequence and a first undelayed coefficient sequence based on the timing order of elements in the first delayed sequence of variables and first undelayed sequence of variables.
The second coefficient operator 807 operates in the same manner as the first coefficient operator 806 except for processing the second delayed and undelayed sequence variables to perform a mapping function to transfer the second delayed sequence of variables and the second undelayed sequence of variables into a second delayed coefficient sequence and a second undelayed coefficient sequence based on the timing order of element sin the second delayed sequence of variables and the second undelayed sequence of variables.
The first adder 808 sequentially adds the first delayed coefficient sequence with the second delayed coefficient sequence to produce and output the odd-phase representations p2k−1 of an encoded codeword. The second adder 809 sequentially adds the first undelayed coefficient sequence with the second undelayed coefficient sequence to produce and output even-phase representations p2k of the encoded codeword. The phase representations (p2k+1,p2k) can be transformed to the signal format using the transformation of (c2k−1,c2k)=(ejpsk−1π/2,ejpskπ/2). The first exponential operator 810 receives the odd-phase representation p2k−1 from the first adder 808 and generates exponential values of each of the odd-phase representations as odd elements c2k−1 for the encoded codeword. The second exponential operator 811 receives even-phase representation p2k and generates exponential values of each of the even-phase representations as even elements c2k for the encoded codeword.
Referring back to
Referring to
As shown in
In the case of k=0 (mod 4), the decoder 1001 delivers the surviving path stored in the zero state as the decoded codeword 923 and outputs the corresponding branch metric 924 in the zero state. The metric calculator 920 outputs sixteen branch metrics 922, Bk(0,0), Bk(1,0), Bk(2,0), Bk(3,0), . . . , for the branches in the trellis section from k to k+1.
There are four submodules 925, 926, 927, and 928, and can be state processing units (“state processing units 925 to 928”). Each state processing unit includes four adders. For example, state processing unit 925 includes adders 912-1, 912-2912-3 and 912-4. Each adder (e.g., 912-n) receives a selected one of the sixteen branch metrics, and selected one of the four path metrics of the previous states. Each adder adds the selected branch metric and selected path metric for generating a sum value of the two input items and outputs a sum value. The minimum value selector (e.g., selector 913) receives the sum values from the four adders and determines a minimum value from the inputs as the path metric for the state in question. The selector 913 also determines a symbol index 929 indicating the branch label having the minimum value.
The delay element (e.g, 914) receives the path metric from the minimum value selector 913 and stores the path metric. The delay element 914 also outputs the delayed path metric. The symbol label table (e.g., 915) receives the symbol index from the minimum value selector 913 and determines the first element and second element of the branch label on the specified branch. The path selector (e.g., 930) receives a plurality of surviving paths from the plurality of register banks 901, 902, 903, and 904 and the symbol index 929 from the minimum value selector 913 for updating the surviving path for the state in question. The state-independent register bank 905 receives the decoded codewords for storing decoded codewords and outputs the decoded codewords.
Referring to
Referring to
As shown, the actuating table 1101 receives designating or selected decoding modes for determining states and branches with respect to the designated modes. The actuating table 1001 outputs actuating signals to actuate the states and branches for the designated mode. The branch label table 1102 receives the designated decoding modes and generates branch labels corresponding to different designated modes and outputs the appropriate branch labels. The decoders 1105 to 1120, selector 1125, and minimum value determining unit 1130 can operate as the same in
The metric tests requires ┌L/8┐ decoded CCK codewords or ┌L/11┐ decoded Barker codewords, where L is the length of the estimated channel impulse response. For purposes of explanation, the CCK modulation scheme is used, but the Barker sequence modulation scheme can also be used. If v=┌L/8┐ and at some k with k=0 (mod 4) and l=k/4, lth decoded CCK codeword is delivered from the decoder 108. The most recent v decoded codewords can be represented as b=(b1, b2, . . . , b8v)=(ĉ1−v+1, . . . , ĉ1), where biε{+1, −1, +j, −j} and ĉl is a decoded codeword. Let β=2Rk and R is an over sampling factor. The received samples can have a sampling rate Tsample, which can be observed from the chip matched filter 105 up to z1,z2, . . . , zβ,zα+1. The chip-rate sampled sequence up to β, denoted as zr,z2R, . . . , zβ−r,zβ, is the input of the decoder 108 when the lth decoded block codeword is delivered.
The input samples to the decoder 108 should be estimated if the sampled timing is shifted by +Tres and −Tres, respectively, where Tres=Tsample|μ is the resolution of timing tracking. Three 8-tuple test vectors y(+1), y(0), and y(−1) are formed by interpolating the received samples, with the qth elements as follows:
yq(+1)=W2·Zb−(8−q)R−1+w1·Zβ−(8−q)R
yq(0)=Zβ−(8−q)R
yq(−1)=W1·Z62 −(8−q)R−1+W2·Zβ−(8−q)R+1
for
q=1, . . . , 8,
and where w1 and w2 are the interpolation coefficients. The interpolated results
y(+1)
and
y(−1)
are simply the estimations of the input samples to the decoder 108 if the sampled timing are shifted by
+Tres and −Tres, respectively.
The estimated signals can be formed when the phases are shifted by +Δθ or −Δθ. Therefore, the nine vectors that are generated are:
y′(+1,+1)=y(+1)e+jΔθ
y′(0,+1)=y)0)e+jΔθ
y′(−1,+1)=y(−1)e+jΔθ
y′(+1,0)=y(+1)
y′(0,0)=y)0)
y′(−1,0)=y(−1)
y′(+1,−1)=y(+1)e−Δθ
y′(0,−1)=y(0)e−jΔθ
y′(−1,−1)=y)−1)e−jΔθ
The nine vectors represent the estimates of the received signal to the decoder 108 with all the possible cases of timing and phase shifts. The metrics of all the received estimates are then evaluated. The metric of a received 8-tuple vector is given by:
where ĥ is the estimated channel impulse response. Substituting all the nine test vectors into the above equation, nine metrics T(y′(m1,m2),b) for all m1, m2ε{−1,0+1} are generated.
The timing/phase tracking module 110 makes a decision on timing adjustment after observing J metrics and makes a decision on phase adjustment after observing P metrics by accumulating the metric consecutively J and P times, respectively. The updating of the accumulated metrics can be expressed as:
Λi(t) (m1, m2) ← Λi-1(t)(m1, m2)+T(y1(m1, m2),b) for i=1, . . . , J
Λi(p)(m1, m2) ← Λi-1(p)(m1, m2)+T(y1(m1, m2),b) for i=1, . . . , P
for all m1,m2 ε{−1,0+1}. The final accumulated results of metrics for timing tracking and phase tracking are represented by Λ(l)j(m1,m2) and Λ(p)p)m1,m2), respectively.
For timing tracking, the timing/phase tracking module 110 finds one of the minimum value among Λ(t)j(m1,m2) for all m1,m2ε{−1,0−1}. The result is then fed back to the interpolator 104 for adjusting the sample timing. For example, if Λ(t)j(−1,*) attains the minimum, the timing/phase tracking module 110 sends a signal to the interpolator 103 to move the sample point one step backward. Denoting the output of the timing decision as τ; the timing decision can be represented as:
For phase tracking, the timing/phase tracking module 110 finds the one of the minimum values among Λ(p)p(m1,m2) for all m1,m2 ε{−1,0−1}. The result is then fed back to the phase compensator 104 to remove the phase error. For example, if Λ(p)p(*, +1) attains the minimum, the timing/phase tracking module 110 sends a signal to the phase compensator 104 to increase the compensating phase by +Δθ. Denoting the output of the phase decision as ψ, the phase decision can be represented as:
It should be noted that all the values of Λ(l)j(m1,m2) should be reset to zero whenever a timing decision is made, and all the values of Λ(p)P(m1,m2) should be reset to zero whenever a phase decision is made.
The timing/phase tracking module 110 includes a buffer 1201 to account for the decoding delay of the decoder 108 for buffering data at the input of the received sample. Additionally, the buffer 1201 output is multiplied by e+jΔθ and e−jΔθ, forming the estimated received samples with phase shifts +Δθ and −Δθ, respectively. Generally, the three samples are fed into linear interpolators, forming the estimated samples of timing shift. At this stage, nine estimated samples are constructed as descried in further detail. The codeword is fed into a codeword buffer whenever the decoder 108 delivers a new decoded codeword. A reconstructed signal of the channel output is generated by passing the decoded codeword into FIR filter with coefficients ĥ. Finally, the reconstructed signal is subtracted from the nine estimated samples. The results are then squared and accumulated in the registers for final decisions of phase and timing adjustment.
Referring to
First linear interpolators 1207 receives the positive phase rotated samples for forming three positive phase rotated timing/drift samples by interpolating from three selected consecutive positive phase rotated samples of the plurality of positive phase rotated samples, and outputs the positive phase timing-drift samples. Second linear interpolators 1208 receives the plurality of received samples for forming three phase non-rotated timing-drift samples by interpolating from three selected consecutive samples of the plurality of received samples, and outputs the three phase non-rotated timing-drift samples. Third linear interpolators 1209 receives the negative phase rotated samples for forming three negative phase rotated timing-drift samples by interpolating from three selected consecutive negative phase rotated samples of the plurality of negative phase rotated samples, and outputs the negative phase rotated timing-drift samples.
The summing processor 120 receives the previously decoded codewords and an estimated channel impulse response for summing the products of the decoded codewords and the estimated channel impulse response, and outputs a reconstructed signal 1215. Nine adding and squaring processors 1211 subtract the reconstructed signal from predetermined test vectors of three positive phase rotated timing-drift samples, three phase non-rotated timing-drift samples, and three negative phase rotated timing-drift samples from the first, second and third interpolators 1207, 1208, and 1209, respectively, and then square the magnitude of the subtracting result as a squared magnitude value. An accumulation and decision processor 1212 receives the squared magnitude values from the adding and squaring processor 1211 for accumulating the squared magnitude values, determining a timing shift responsive to a minimum of said accumulation, outputting said timing shift 1213. The accumulation and decision processor 1212 further determines a phase shift responsive to a minimum of said accumulation, and outputs the phase shift 1214.
In the above examples, the components for the above decoders can be implemented in hardware such as, for example, an application specific integrated circuit (ASIC) or a field programmable gate array (FPGA) to perform the block code decoding techniques described herein. Alternatively, the above components can be implemented in software in which a digital signal processor (DSP) and one or more memory devices can be used to implement the block code decoding techniques described herein. Additionally, the above decoders can be configured or programmed using a combination of hardware and software to implement the block code decoding techniques described herein.
Thus, a method and system for decoding block codes have been described. In the foregoing specification, the invention has been described with reference to specific exemplary implementations. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
This application claims priority to U.S. Provisional Application No. 60/314,757, entitled “METHOD AND APPARATUS FOR A COMMUNICATION SYSTEM USING COMPLEMENTARY CODE KEYING AND BARKER SEQUENCE MODULATION,” filed on Aug. 24, 2001, and to U.S. Provisional Application No. 60/395,288, entitled “METHOD AND SYSTEM FOR DECODING CCK CODEWORDS BY CALCULATING A BRANCH METRIC ACCORDING TO A DECISION FEEDBACK SEQUENCE ESTIMATION ALGORITHM,” filed on Jul. 12, 2002, which are hereby expressly incorporated by reference. This application is also related to U.S. Patent Application Ser. No. 10/227,093, entitled “METHOD AND SYSTEM FOR DECODING BLOCK CODES BY CALCULATING A PATH METRIC ACCORDING TO A DECISION FEEDBACK SEQUENCE ALGORITHM,” filed on Aug. 21, 2002, which is hereby expressly incorporated herein by reference and commonly owned by the same assignee of this application.
Number | Name | Date | Kind |
---|---|---|---|
5014275 | Shimoda et al. | May 1991 | A |
5301209 | Wei | Apr 1994 | A |
5323424 | Fazel et al. | Jun 1994 | A |
5434886 | Kazawa et al. | Jul 1995 | A |
5497384 | Fredrickson et al. | Mar 1996 | A |
5717471 | Stewart | Feb 1998 | A |
5841813 | van Nee | Nov 1998 | A |
5862182 | Awater et al. | Jan 1999 | A |
5875001 | Kwak | Feb 1999 | A |
6005840 | Awater et al. | Dec 1999 | A |
6141384 | Wittig et al. | Oct 2000 | A |
6233273 | Webster et al. | May 2001 | B1 |
6233286 | Wei | May 2001 | B1 |
6269129 | Rhee et al. | Jul 2001 | B1 |
6301209 | Fujinami | Oct 2001 | B2 |
6324224 | Ikeda | Nov 2001 | B1 |
6327317 | Chennakeshu et al. | Dec 2001 | B1 |
6734920 | Ghosh et al. | May 2004 | B2 |
6907084 | Jeong | Jun 2005 | B2 |
20030231709 | Pare et al. | Dec 2003 | A1 |
Number | Date | Country |
---|---|---|
0413 505 | Feb 1991 | EP |
1148 677 | Oct 2001 | EP |
Number | Date | Country | |
---|---|---|---|
60395288 | Jul 2002 | US | |
60314757 | Aug 2001 | US |