# Patent

## Title
Method and system for decoding block codes by calculating a path metric according to a decision feedback sequence estimation algorithm

## Abstract

A method and system are disclosed that provide a more efficient decoder for decoding block codes such as a complementary code keying (CCK) code. A receiver receives a signal containing at least one block codeword. A decoder decodes the block codeword contained in the received signal by finding a path in a trellis diagram with a calculated path metric that accounts for intersymbol interference (ISI). The path metric can be based on a branch metric that is calculated according to a decision feedback sequence estimation algorithm.

## Background
RELATED APPLICATIONS
This application claims priority 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, and 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, which are hereby expressly incorporated herein by reference. This application is also related to U.S. patent application Ser. No. 10/227,080, entitled “METHOD AND SYSTEM FOR DECODING BLOCK CODES,” filed on Aug. 21, 2002, which is hereby expressly incorporated herein by reference and commonly owned by the same assignee of this application.


FIELD
This invention relates generally to wireless communications and, more particularly, to a method and system for decoding block codes by calculating a path metric according to a decision feedback sequence estimation algorithm.
BACKGROUND
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 type 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. No. 5,841,813 to van Nee and U.S. Pat. No. 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 at 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 decoder that can use Viterbi decoding techniques in order to reduce the computational complexity for decoding block codes such as, for example, CCK codewords and to handle multipath distortion such as inter-codeword and intra-codeword interference.
SUMMARY
According to one aspect of the invention, a communication method is disclosed that receives a signal including at least one block codeword. The block codeword is decoded in the received signal by finding a path in a trellis diagram with a calculated path metric that accounts for intersymbol interference (ISI).
Thus, what is needed is a estimator that can use Viterbi estimating techniques in order to reduce the computational complexity for estimating block codes such as, for example, CCK codewords and to handle multipath distortion such as inter-codeword and intra-codeword interference.
According to one aspect of the invention, a communication method is disclosed that receives a signal including at least one block codeword. The block codeword is estimated in the received signal by finding a path in a trellis diagram with a calculated path metric that accounts for intersymbol interference (ISI).
According to another aspect of the invention, a communication device is disclosed that includes a receiver and an estimator. The receiver is to receive a signal including at least one block codeword. The estimator is to estimate the block codeword contained in the received signal by finding a path in a trellis diagram with a calculated path metric that accounts for intersymbol interference (ISI).
According to another aspect of the invention, a digital processing system is disclosed comprising at least one memory device and a processing unit. The memory device is to store data related to a trellis diagram. The processing unit is to estimate a block codeword contained in a signal using the data related to the trellis diagram.
According to another aspect of the invention, a receiver is disclosed including an estimator to estimate block codewords contained in a signal using a trellis diagram representing a plurality of branches between states in a plurality of sections of the trellis diagram, each branch representing a symbol combination for a block codeword including at least one symbol. The estimator decoder includes a memory, equalizer and metric calculator, selecting unit, and a block codeword decision element. The memory is to store data relating to a surviving path between a state s0 and a state sk-1 in the trellis diagram, wherein s0 is the initial state in the trellis diagram and sk-1 is a previous state of a current state in question to determine a path in the trellis diagram. The equalizer and metric calculator is to equlize the received symbols and calculate a branch metric for possible branches emanating from state sk-1 in the trellis diagram using a received symbol within a block codeword, a channel impulse response value, the data relating to the surviving path, and previously estimated block codewords. The selecting unit is to add the calculated branch metric for the possible branches emanating from state sk-1 to state sk to a metric of the surviving path from state s0 to state sk-1 that generates path metrics for the possible paths emanating from state s0 to sk, compare the path metrics for the possible paths to determine a smallest path metric, and select the path in the trellis diagram associated with the smallest path metric. The block codeword decision element is to determine the block codeword using the selected path.
According to another aspect of the invention, an equalizer and metric calculator is disclosed in an estimater for estimating block codewords contained in a received signal. The equalizer and metric calculator is to calculate a branch metric for a branch emanating from a state in a trellis diagram, the metric calculator comprises a first, second, and third filter sets. The first filter set is to estimate intersymbol interference (ISIA) based on previously estimated codewords and a channel impulse response and to subtract the estimated ISIA from a received symbol in a block codeword. The second filter set is to estimate intersymbol interference (ISIB) based on a surviving path in the trellis diagram and the channel impulse response and subtract the estimated ISIB from the output of the first filter set. The third filter set is to estimate an intersymbol interference (ISIC) and a received symbol candidate based on symbols associated with a branch and the channel impulse response and subtract the estimated ISIC and received symbol candidate from the output of the second filter set, and calculate a distance measurement between the received symbol and received symbol candidate and the estimated overall ISI in order to provides the branch metric.
According to another aspect of the invention, an equalizer and metric calculator is disclosed in a estimator for estimating block codewords contained in a received signal. The equalizer and metric calculator is to calculate a branch metric for a branch emanating from a state in a trellis diagram. The equalizer and metric calculator comprises a demultiplexer, first, second, and third filter sets, a plurality of processing units, and an adder. The demultiplexer is to receive a plurality of symbols in a block codeword and to output a first set of symbols at a time first duration and a second set of symbols at a second time duration. The first filter set is to estimate intersymbol interference at the first and second time durations based on a previously estimated codeword and a channel impulse response (ISIA) and to subtract the estimated ISIA for the first and second durations from the output of the first filter set at the first and second times durations, respectively. The second filter set is to estimate intersymbol interference (ISIB) based on symbols of a surviving path in the trellis diagram and on a channel impulse response, and subtract the estimated ISIB of the first and second time durations from the output of the second filter set at the first and second time durations, respectively. The third filter set is to estimate a received symbol candidate and estimate intersymbol interference (ISIC) based on symbols of associated with a branch and channel impulse response, subtract the estimated ISIC and received symbol candidates of the first and second time durations from the estimated ISIB of the first and second time durations. The plurality of processing units are to calculate a distance measurement between real and imaginary parts of the received symbol and received symbol candidate and estimated overall ISI. The adder is to add the outputs of the processing units that provides the branch metric.
According to another aspect of the invention, a method is disclosed for estimating a block codeword contained in a received signal by finding a smallest path metric in a trellis diagram. According to another aspect of the invention, a multiplier for a block code estimator decoder is disclosed. The multipler comprises a selector circuit to perform a complex number multiplicpation by selecting a complex number from a predetermined set of complex numbers based on varying impulse response values and symbol values.
Other features and advantages of the invention will be apparent from the accompanying drawings, and from the detailed description, which follows below.



BRIEF DESCRIPTION OF THE DRAWINGS
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, serve to explain the principles of the invention. In the drawings,
FIG. 1 illustrates an exemplary block diagram of a CCK transmitter and receiver in which the invention can be implemented;
FIG. 2 illustrates one example detailed block diagram of the CCK receiver of FIG. 1;
FIG. 3 illustrates one example trellis diagram for estimating block code;
FIG. 4 illustrates one example detailed block diagram of the CCK estimator of FIG. 1;
FIG. 5 illustrates one example detailed block diagram of the equalizer and branch metric calculator in the CCK estimator of FIG. 4;
FIG. 6 illustrates one example detailed block diagram of an ISIA estimator in the equalizer and branch metric calculator of FIG. 5;
FIG. 7 illustrates another example detailed block diagram of and an ISIA estimator in the equalizer and branch metric calculator of FIG. 5;
FIG. 8 illustrates one example detailed block diagram of a multiplier in the ISIA estimators of FIGS. 6 and 7;
FIG. 9 illustrates one example detailed block diagram of an ISIB estimator in the equalizer and branch metric calculator of FIG. 5;
FIG. 10 illustrates another example detailed block diagram of an ISIB estimator in the equalizer and branch metric calculator of FIG. 5;
FIG. 11 illustrates one example detailed block diagram of an ISIC and received symbol candidate estimator in the equalizer and branch metric calculator of FIG. 5;
FIG. 12 illustrates another example detailed block diagram of and an ISIC and received symbol candidate estimator in the equalizer and branch metric calculator of FIG. 5;
FIG. 13 illustrates an alternative block diagram of an equalizer and branch metric calculator for the CCK estimator of FIG. 5;
FIGS. 14A and 14B illustrate one example of detailed block diagrams of ISIA estimators at time instances 2k−1 and 2k, respectively, in the equalizer and branch metric calculator of FIG. 13;
FIGS. 15A and 15B illustrate one example of detailed block diagrams of ISIB estimators at time instances 2k−1 and 2k, respectively, in the equalizer and branch metric calculator of FIG. 13; and
FIGS. 16A and 16B illustrate one example of detailed block diagrams of ISIC and received symbol candidate estimators at time instances 2k−1 and 2k, respectively, in the equalizer and branch metric calculator of FIG. 13.



DETAILED DESCRIPTION
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 disclose a more efficient estimator that can estimate block codewords contained in a received signal by finding a path in a trellis diagram with a calculated path metric that accounts for intersymbol interference (ISI). The path metric can be based on calculated branch metrics according to a decision feedback sequence estimation algorithm. Each path in the trellis diagram can represent a possible block codeword and have an associated path metric. The path having the smallest path metric is used to determine the decoded block codeword. Thus, by finding a path in the trellis diagram using the smallest path metric, estimating the block code can be performed more efficiently.
In the following description, a “block code” can refer to any type of block codeword having a collection of codewords of a fixed length. For example, a CCK code can be one type of block codeword 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.
CCK Block Code
The following implementations and examples are described for estimating block codes such as complementary code keying (CCK) code. Nevertheless, the following implementations can be used to estimate other types of block codes such as a Barker sequence block code. For example, the following decoding techniques can be used with a trellis diagram having paths for all possible combinations of the Barker sequence code.
In the following description, a CCK codeword can be a block codeword having a code length of eight (8) having a chip rate of fchip, and can be denoted as c={c1, c2, c3, c4, c5, c6, c7, c8} where ci 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 code length of 8 and can be implemented for codewords having any block code length such that a trellis diagram is provided with a path for each possible combination of the block codewords. 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+φ3),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. There are two types of CCK modulation modes: high-rate CCK modulation and low-rate CCK modulation.

High-Rate CCK Modulation
For the high-rate CCK modulation, 8 information bits (d0 to d7) are carried by each transmitted block codeword. In this manner, 256 possible block codeword combinations can be modulated in a signal. The block codewords can be generated by having φ1, φ2, φ3, and φ4 range over all possible QPSK phases, i.e., φiε{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 differential quadrature phase-shift keying (DQPSK), and φ2, φ3, and φ4 may be encoded from (d2, d3), (d4, d5), and (d6, d7), respectively, based on QPSK.
Low-Rate CCK Modulation
For the low-rate CCK modulation, 4 information bits (d0 to d3) can be carried by each transmitted codeword. Therefore, there can be 16 codeword combinations for the low-rate CCK. The 16 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, and φ2, φ3, and φ4 may 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 8 bit CCK codeword for transmitting the source data.
Phase Representation
The set of all possible phases Ω={0,π/2,π,3π/2} for a CCK block 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 block codeword can hence 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 



  p
  =
  
    
      
        (
        
          
            u
            1
          
          ,
          
            u
            2
          
          ,
          
            u
            3
          
          ,
          
            u
            4
          
        
        )
      
      ⁡
      
        [
        
          
            
              11111111
            
          
          
            
              10101010
            
          
          
            
              11001100
            
          
          
            
              11110000
            
          
        
        ]
      
    
    +
    
      (
      
        0
        ,
        0
        ,
        0
        ,
        2
        ,
        0
        ,
        0
        ,
        2
        ,
        0
      
      )
    
  




where all the additives are modulo-4.

Exemplary CCK Communication System
FIG. 1 illustrates an exemplary block diagram of a CCK transmitter 100 and receiver 200 in which the invention can be implemented. The CCK transmitter 100 includes a CCK encoder 120, digital-to-analog (D/A) converter 130, modulator 140, and radio frequency (RF) transmitter 150. The CCK encoder 120 receives data bits from a message source 110 and encodes the data bits into a CCK codeword. The CCK encoder 120 can use, e.g., the above formulas to encode the data bits into a CCK codeword c having eight symbols (i.e., complex numbers) represented as {c1, c2, c3, c4, c5, c6, c7, c8} for low and high-rate CCK codewords. In another example, CCK encoder 120 can be an encoder as described in U.S. patent application Ser. No. 10/227,080, entitled “METHOD AND SYSTEM FOR DECODING BLOCK CODES,” filed on Aug. 21, 2002, which is commonly owned by the same assignee of this application (hereafter “the '080 co-pending application”). Thus, CCK encoder 120 can be configured to encode Barker sequence block codewords. For purposes of explanation, in this example, the encoder 120 encodes CCK codewords.
The D/A converter 130 converts the individual symbols into an analog component. The modulator 140 generates a carrier signal for modulating the CCK codeword having signal properties derived from the analog components of the individual CCK codeword symbols. The RF transmitter 150 amplifies the carrier signal for transmitting the signal to the CCK receiver 200. The carrier signal can be modulated and transmitted, e.g., at a high-rate of 11 Mbit/s or a low-rate of 5 Mbit/s in accordance with the requirements of IEEE 802.11b for WLANs.
FIG. 2 illustrates a detailed block diagram of the CCK receiver 200 of FIG. 1. The CCK receiver 200 includes a RF receiver 250, demodulator 240, analog-to-digital (A/D) converter 230, CCK estimator 220, channel estimator 260, and message sink 210. The RF receiver 250 receives the modulated carrier signal from the RF transmitter 150 of the CCK transmitter 100. The demodulator 240 extracts the individual symbols of the CCK codeword contained or embedded in the received carrier signal from RF receiver 250. The A/D converter 230 converts the extracted symbols of the CCK codeword from demodulator 240 into digital data to sent a received CCK codeword symbol having a symbol represented as “yk.” The CCK estimator 220 estimates CCK codewords using received CCK codeword symbols. In another example, the CCK receiver 200 can be configured with an interpolator, phase compensator, chap matched filter, down sampler, and timing/phase tracking as described in the '080 co-pending application.
To decode CCK codewords, the CCK estimator 220 uses the received CCK codeword symbol yk and a channel estimator value “h” from channel estimator 260 to equlize the received symbols and calculate a branch metric using an example trellis diagram shown in FIG. 3. This trellis diagram represents an example trellis diagram for block code of any size. For example, the trellis diagram of FIG. 3 can represent a trellis diagram for decoding high-rate CCK modulated codewords. In other examples, the trellis diagram of FIG. 3 can recent the trellis and subtrellis diagrams described in the '080 co-pending application. For purposes explanation, the trellis diagram of FIG. 3 is a trellis diagram for a CCK codeword having a block size of 8 (“CCK diagram”). The branch metric is a measure of the distance between received symbols and symbols associated with the possible branch in the CCK diagram in which each branch represents symbol combinations for the CCK codeword including at least one symbol. Each branch begins at a first state and ends at a second state. As described in further detail below, a path metric for possible paths from branch to branch can be determined using the branch metric. The channel estimator value h indicates a channel impulse response and can be determined by the channel estimator 260, as described below.
The CCK estimator 220 uses the calculated branch metric to determine a path metric for a path in the CCK diagram. A path can be made between an initial state and a final state in the CCK diagram. The surviving path between the initial state and final state associated with the smallest path metric is used to determine the CCK codeword contained or embedded in a received signal. Referring to the CCK diagram of FIG. 3 for example, the path from the initial state s0 to the final state s4 having the smallest path metric is used for estimating a CCK codeword. As described in further detail below, the CCK estimator 220 can perform the metric calculation according to a decision feedback sequence estimation algorithm to account for inter-codeword and intra-codeword interference.
CCK Trellis Diagram
FIG. 3 illustrates one example CCK trellis diagram for estimating CCK codewords. As described in further detail below, by using a CCK diagram, a CCK estimator can estimate CCK codewords without having to find a match between a received CCK codeword with all possible combinations of CCK codewords. Thus, the CCK estimator disclosed herein improves efficiency for decoding CCK codewords.
The diagram represents a plurality branches between states for finding a path in the diagram. Each path between an initial state and a final state can represent a CCK codeword. Each branch can represent a symbol combination representing one or more symbols. For example, the path from the state s0 to s1 to s2 to s3 to s4 represents one CCK codeword. In this manner, there can be a one-to-one mapping of a path in the trellis diagram to a possible CCK codeword. The equalization and branch metric calculation as described below can be used to determine a path metric to find a path in the CCK diagram.
Referring to FIG. 3, the diagram can contain (8/N) sections and each section can contain N symbols of the CCK codeword. As shown, the trellis diagram has four sections (section 1 to section 4) where N=2. In this example, each branch represents two CCK symbols between states. For example, the branch from state s0 to state s1 can be represented by two CCK symbols such as (1, 1), or (−1, −1). The branches and symbols can take any variations such that all possible CCK codewords can be represented by a path in the diagram.
The CCK symbols associated with each branch is referred to as a branch label and denoted by (p2k-1, p2k), k=1, 2, 3, 4 where p2k-1 is transmitted first in time. The initial state s0 is the left most state in the diagram. The final state s4 is the right most state in the diagram. The set of all possible states sk for a given k is denoted by Sk. The size of a set A is denoted by |A|. Thus, the size for sets S0 and S4, |S0| and |S4|, are both equal to one since there is only one initial state and final state. In the example diagram shown, the size of the sets for S1, S2, and S3, |S1|, |S2|, and |S3|, equal four. However, these sets can have varying sizes depending on the design of the CCK diagram used.
Branch Metric Calculation and Feedback Sequence Estimation Algorithm
The CCK estimator 220 can perform the following equation to calculate a branch metric μ of the bth branch emanating from the state sk-1εSk-1 in the kth section in the CCK diagram as shown, e.g., in FIG. 3. The following equation can also use a feedback sequence estimation algorithm to handle inter-codeword and intra-codeword interference: 


  
    μ
    =
    
      
        ∑
        
          n
          -
          1
        
        N
      
      ⁢
      
        μ
        n
      
    
  




  
    
      μ
      n
    
    =
    
      
        
        
          
            y
            
              
                
                  (
                  
                    k
                    -
                    1
                  
                  )
                
                ⁢
                N
              
              +
              n
            
          
          -
          
            (
            
              
                
                  ∑
                  
                    m
                    =
                    
                      
                        
                          (
                          
                            k
                            -
                            1
                          
                          )
                        
                        ⁢
                        N
                      
                      +
                      n
                    
                  
                  L
                
                ⁢
                
                  
                    h
                    m
                    *
                  
                  ·
                  
                    α
                    m
                  
                
              
              +
              
                
                  ∑
                  
                    m
                    =
                    n
                  
                  
                    
                      
                        (
                        
                          k
                          -
                          1
                        
                        )
                      
                      ⁢
                      N
                    
                    +
                    n
                    -
                    1
                  
                
                ⁢
                
                  
                    h
                    m
                    *
                  
                  ·
                  
                    β
                    m
                  
                
              
              +
              
                
                  ∑
                  
                    m
                    =
                    1
                  
                  
                    n
                    -
                    1
                  
                
                ⁢
                
                  
                    h
                    m
                    *
                  
                  ·
                  
                    γ
                    m
                  
                
              
              +
              
                
                  h
                  0
                  *
                
                ·
                
                  p
                  
                    
                      
                        (
                        
                          k
                          -
                          1
                        
                        )
                      
                      ⁢
                      N
                    
                    +
                    n
                  
                
              
            
            )
          
        
        
      
      2
    
  



where:

    
    
        N: represents the number of CCK symbols associated with each branch in the CCK trellis diagram (i.e., the number of symbols in a branch label);
        μn: represents the metric of the bth branch emanating from the state sk-1εSk-1 in the kth section at the nth calculation cycle (nε{1, . . . , N}) in which μn will have different values for different values of b and sk-1;
        yt: represents the received complex-value symbol at time instant t, and, for one implementation, the time instant at the initial state of decoding a new codeword is denoted by 1 such that during decoding of each codeword the received symbol y1 is at time instance 1, the received symbol y2 is at time instance 2, and etc. until the received symbol y8 is received at time instance 8;
        γm: {γ1, . . . , γn-1} represents the past complex-value symbols of the branch label of the bth branch emanating from the state sk-1 at the nth calculation cycle in which μn will have a different value for different values of b and sk-1, and γm has a null value during the first calculation cycle of each section, since at that time instance, there is no past symbol that comes from the current branch label;
        βm: represents the complex-value CCK symbols corresponding to the surviving path for the state sk-1—this surviving path for state sk-1 is a path with a minimum path metric that starts from state s0 and ends at state sk-1 in which βm will have a different value for different values of sk-1;
        αm: represents the complex-value symbols of the CCK codewords estimated by the CCK estimator;
        L+1: represents the length of coefficients of the estimated channel impulse response;
        h: represents the estimated discrete-time, complex-valued channel impulse response where h=(h0, h1, . . . , hL), hm=hm,r+j·hm,i that can be calculated by the channel estimator 260; and

wherein the above formula is implemented within a feedback sequence estimation algorithm as described in further detail below.

    
    


CCK Estimator
FIG. 4 illustrates one example detailed block diagram of the CCK estimator 220 of FIG. 1. The CCK estimator 220 can use a CCK trellis diagram and an equalizatin and branch metric calculation according to a decision feedback sequence estimation algorithm, as described above, to estimate CCK codewords from a received signal. The CCK estimator 220 includes an equalizatin and branch metric calculation 270, add, compare, select unit 275, surviving path memory 280, and a codeword decision element 290.
Referring to FIG. 4, the equalizer and branch metric calculator 270 uses a number of reconstruction filters, which are ISIA, ISIB, and ISIC and received candidate estimators as described in further detail below regarding FIG. 5. These filters estimate the intersymbol interference (ISI) including inter-codeword and intra-codeword interference in a received signal. The filters assist in determining the branch metric for each section in the CCK trellis diagram that accounts for the ISI. The filters can estimate the ISI using a decision feedback estimation algorithm as described herein. Calculator 270 uses the channel impulse response h from channel estimator 260, received symbol yk from converter 230, the surviving path stored in the surviving path memory 280, and the previously decoded CCK codewords from codeword decision element 290 to calculate the path and branch metrics. For each calculation cycle with a symbol period of T, the CCK estimator 220 receives one received symbol yk and the codeword decision element 290 outputs one decoded CCK codeword, which can be a combination of 8 complex-value numbers at every 8 calculation cycles, i.e., at every 8 T.
In each kth section of the diagram, the add, compare, select unit 275 determines a path metric of each newly-formed path from state s0 to state sk by adding the path metric of the surviving path for state sk-1 and the branch metric from calculator 270 for the branch from state sk-1 to state sk. The unit 275 then compares the path metric for the newly-formed paths leading to the same state sk, and selects the path with the smallest path metric as the surviving path for the state sk. The surviving paths for each state skεSk in the kth section are stored in surviving path memory 280 for computation in the next section. After the calculation of the last section, e.g., section 4 in the diagram of FIG. 3, the codeword decision element 290 identifies the surviving path left from state s0 to state s4. The codeword decision element 290 then chooses the symbols of the surviving path as the estimated CCK codeword. The estimated CCK codeword from the codeword decision element 290 can be fed into the branch metric calculator 270. Referring back to FIG. 2, the estimated CCK codeword can feed into the message sink 210.
The above components of CCK estimator 220 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 CCK codeword estimating 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 CCK codeword estimating techniques described herein. Additionally, the CCK receiver 200 can be configured or programmed using a combination of hardware and software to implement the CCK estimating techniques described herein.
Equalizer and Branch Metric Calculator
FIG. 5 illustrates one example detailed block diagram of the equalizer and branch metric calculator 270 of FIG. 4. Equalizer and branch metric calculator 270 can calculate the metric of each branch in a given kth section of the diagram using the above metric calculation formula. The branch metric can provide a distance measurement, which can indicate how close symbols are associated with each other. In one example, the squared Euclidean distance between a received symbol and received symbol candidate plus the assumed ISI, which is derived according to a decision feedback estimation algorithm, can be used to derive the distance measurement. In another example, a MIN-MAX approximation can be used in place of the squared Euclidean distance measurement to determine a distance between a received symbol and received symbol candidate. In the MIN-MAX approximation, the following formula can be used:

|a+bj|2≅max {a, b}+0.5 min {a, b}, where a and b are real numbers and j≡√{square root over (−1)}.

This algorithm uses a number of filters or ISI estimators to estimate the intersymbol interference (ISI). The overall ISI estimators can be divided into three blocks. The first block (block A) is the ISI caused by the previously decoded codewords and is denoted by ISIA. The second block (block B) is the tentative ISI caused by the symbols of a surviving path and is denoted by ISIB. The third block (block C) is the tentative ISI caused by the symbols of a branch and is denoted by ISIC.
Block A includes an ISIA estimator 302 that uses the previously estimated CCK codewords and the channel impulse response h to estimate ISIA. Subtractor 303 subtracts the ISIA from the received symbol yk. In this example, only a single block A is required. Block B includes an ISIB estimator 304 that uses the surviving path for each state 312 represented by sk-1εSk-1 in a given kth section of the CCK diagram and the channel impulse response h to estimate ISIB. Subtractor 305 further subtracts the ISIB from the output of the subtractor 303 in block A. A plurality of blocks for block B can be used as a result of the surviving paths being generally different for different states of sk-1. In such a case, the number of blocks for block B can equal the number of |Sk-1| in each section of the CCK diagram.
Block C includes an ISIC and received symbol candidate x estimator 306 that uses the symbols associated with the branch 314 for each branch from state sk-1 to state sk in a given kth section and the channel impulse response h to estimate the ISIC and the received symbol candidate x. Subtractor 308 subtracts the ISIC and received symbol candidate x from the output of subtractor 305 of block B. The sum of the ISIA, ISIB, and ISIC are the overall ISI affecting the current received symbol yk. In one example, processing block 310 calculates the squared Euclidean distance between the received symbol and the received symbol candidate x plus the overall ISI. The result of this calculation provides the branch metric of the branch in question. In other examples, a MIN-MAX calculated as described above can be used to calculate the branch metric. A plurality of blocks for block C can be used as a result the ISIC and the received symbol candidate x being generally different for different branches. In such a case, the number of blocks for block C can equal the number of branches in each section of the CCK diagram.
ISIA Estimator
FIG. 6 illustrates one example detailed block diagram of an ISIA estimator 302 of FIG. 5. ISIA estimator 302 can act as a complex-numbered FIR filter with L delayed elements α1, . . . , αL and L filter coefficients h1, . . . , hL where L+1 is the length of the discrete-time channel impulse response h. ISIA estimator 302 includes a plurality of real part delay elements DT 3301 through 330L and imaginary part delay elements DT 3321 through 332L. These delay elements have a delay T that is the symbol duration. The following equation can be used to determine the ISIA in each calculation cycle: 



  
    
      ISI
      A
    
    =
    
      
        ∑
        
          m
          =
          1
        
        L
      
      ⁢
      
        
          h
          m
          *
        
        ·
        
          α
          m
        
      
    
  
  ,
  
    
      α
      m
    
    ∈
    
      
        {
        
          0
          ,
          
            ±
            1
          
          ,
          
            ±
            j
          
        
        }
      
      .
    
  




The α1, L, αL, h1, L, hL are complex values having real and imaginary parts. The filter coefficients h1, L, hL are extracted from the channel impulse response h=(h0, h1, L, hL), which is supplied from the channel estimator 260. Initially, at time instance 1 when beginning to estimate a new CCK codeword, the previously estimated CCK codewords are loaded as {αm}. For example, the delay elements, at time instance 1, denoted by (α1, L, αL)1, are set as follows:

(α1,L,αL)1=(s1,L,sL)

where (s1, L, s8) is the most recently estimated codeword and s8 is first in time. In addition, (s9, L, s16) is the second most recently estimated codeword and s16 is first in time, and so on.

The delayed elements delay {αm} such that they are shifted for each calculation cycle and updated as follows:

(α1,α2,L,αL)p=(0,α1,L,αL-1)p-1, p=2, . . . , 8

where the subscript p denotes the pth calculation cycle during decoding a codeword, or equivalently:

(α1,r,α2,r,L,αL,r)p=(0,α1,r,L,αL-1,r)p-1 

(α1,i,α2,i,L,αL,i)p=(0,α1,i,L,αL-1,i)p-1 

and the subscripts r and i denote the real and imaginary parts of the quantity, respectively.

The multipliers 3161 to 316L perform the multiplication hm*·αm. These multipliers are described in further detail below regarding FIG. 8. The real and imaginary parts of the output of these multipliers are summed by adders 318 and 320, respectively. The outputs of adders 318 and 320 are then subtracted from the real and imaginary parts of the received symbol yk by subtractors 324 and 328, respectively, that provides the estimated ISIA.
FIG. 7 illustrates another example detailed block diagram of an ISIA estimator 302 in the equalizer and branch metric calculator of FIG. 5. In this example, the amount of circuitry for implementing the ISIA estimator can be reduced. Referring to FIG. 7, a switch 346 can be used to selectively receive the real and imaginary parts of the received symbol yk having a switching duration T/2, where T is the symbol duration. A switch 344 is used to selectively receive the real and imaginary parts of the outputs from multipliers 3161 to 316L. A switch 348 is also used at the output of the ISIA estimator 302 to selectively output the real and imaginary parts of the estimated ISIA output. The above switches can be synchronized to switch to the real or imaginary parts. Furthermore, by using the above switches, in this example only one adder 340 and subtractor 342 are needed to derive the estimated ISIA output thereby reducing the amount of circuitry needed.
FIG. 8 illustrates one example detailed block diagram of a multiplier 316 in the ISIA estimators of FIGS. 6 and 7. In addition, this type of multiplier can be used in the following implementations for the ISIB and ISIC estimators. This multiplier can perform a complex number multiplication such as z=h*·α, where z=zr+jzi, α=αr+jαi and h*=hr−jhi. Each symbol α in a CCK codeword can have the following values {+1, −1, +j, −j}. Thus, as shown in FIG. 8, the multiplication z=h*·α can be simplified as a simple selector circuit that outputs Zr and Zi according to the following rules in the Table 1 below.













TABLE 1







αr = 1
αr = −1
αr = 0
αr = 0
αr = 0



αi = 0
αi = 0
αi = 1
αi = −1
αi = 0





















zr
+hr
−hr
+hi
−hi
0


zi
−hi
+hi
+hr
−hr
0









ISIB Estimator
FIG. 9 illustrates one example detailed block diagram of an ISIB estimator 304 in the equalizer and branch metric calculator of FIG. 5. ISIB estimator 304 can act as a complex-numbered FIR filter with 7 delayed elements β1, L, β7 and 7 filter coefficients h1, L, h7. ISIB estimator 304 includes a plurality of real part delay elements DT 4301 to 4307 and imaginary part delay elements DT 4321 to 4327. These delay elements have a delay T, which is the symbol duration. The following equation can be used to determine the ISIB in each calculation cycle: 



  
    
      ISI
      B
    
    =
    
      
        ∑
        
          m
          =
          1
        
        7
      
      ⁢
      
        
          h
          m
          *
        
        ·
        
          β
          m
        
      
    
  
  ,
  
    
      β
      m
    
    ∈
    
      
        {
        
          0
          ,
          
            ±
            1
          
          ,
          
            ±
            j
          
        
        }
      
      .
    
  




The β1, . . . , β7,h1, . . . , h7 are all complex values having real and imaginary parts. The filter coefficients h1, . . . , h7 are extracted from the channel impulse response h=(h0, h1, . . . , hL), which is supplied from the channel estimator 260. The {βm} represent the surviving path for the state in question.
Initially, at the beginning of a new CCK codeword, the {βm} are all set to zero because the surviving path is null for the state s0. For a given kth section of the diagram being used, the delay elements {βm} at the first calculation cycle during the section in question and are denoted as (β1, . . . , β7)1, and are set as follows:

(β1, . . . ,β7)1=(d(k-1)N,d(k-1)N−1, . . . ,d1,0, . . . ,0).

The (d1, d2, . . . ,d(k-1)N) denote the symbols on the surviving path for the state sk-1 and d1 is first in time, and N denotes the number of symbols associated with each section of the trellis diagram. For pth calculation cycle during the kth section, the delay elements delay {βm} and are denoted as (β1, . . . , β7)p, and are shifted and updated as follows:

(β1,β2, . . . ,β7)p=(0,β1, . . . ,β6)p-1,p=2, . . . ,N

or equivalently

(β1,r,β2,r, . . . ,β7,r)p=(0,β1,r, . . . ,β6,r)p-1 

(β1,t,β2,i, . . . ,β7,t)p=(0,β1,i, . . . ,β6,i)p-1 

where the subscripts r and i are used to denote the real and imaginary parts of the quantity, respectively. The multipliers 4161 to 4167 perform the multiplication hm*·βm. The real and imaginary parts of each multiplier are summed by adders 418 and 420, respectively. The outputs of these two adders are then subtracted from the real and imaginary parts of the input to the ISIB estimator 304 by subtractors 424 and 428, respectively, to provide the estimated ISIB output.

FIG. 10 illustrates another example detailed block diagram of an ISIB estimator 304 in the equalizer and branch metric calculator of FIG. 5. In this example, the amount of circuitry for implementing the ISIB estimator can be reduced. Referring to FIG. 10, a switch 446 is used to selectively receive the real and imaginary part of the estimated ISIA output having a switching duration T/2. A switch 444 is used to selectively receive the real and imaginary parts of the output from each of the multipliers 4161 to 4167. A switch 448 is also used at the output of the ISIB estimator 404 to selectively output the real and imaginary parts of the estimated ISIB output. The above switches can be synchronized to switch to the real and imaginary parts. Furthermore, by using the above switches, in this example only one adder 440 and subtractor 442 are needed to calculate the output value thereby reducing the amount of circuitry needed.
ISIC and Received Symbol Candidate Estimator
FIG. 11 illustrates one example detailed block diagram of an ISIC and received symbol candidate x estimator 306 in the branch metric calculator of FIG. 5. ISIC and received symbol candidate x estimator 306 can act as a complex-number FIR filter with N delay elements γ0, . . . , γN−1 and N filter coefficients h0, . . . , hN−1, where N is the number of symbols in the branch label. ISIC and received symbol candidate x estimator 306 includes a plurality of real part delay elements DT 5301 to 530N and imaginary part delay elements DT 5321 to 532N. These delay elements have a delay T. The following equation can be used to determine the ISIC in each calculation cycle: 



  
    
      ISI
      C
    
    =
    
      
        ∑
        
          m
          =
          1
        
        
          N
          -
          1
        
      
      ⁢
      
        
          h
          m
          *
        
        ·
        
          γ
          m
        
      
    
  
  ,
  
    
      γ
      m
    
    ∈
    
      {
      
        0
        ,
        
          ±
          1
        
        ,
        
          ±
          j
        
      
      }
    
  




and the received symbol candidate x is estimated as follows:

x=h0*·γ0 

and the result is as follows: 



  
    
      
        ISI
        C
      
      +
      x
    
    =
    
      
        ∑
        
          m
          =
          0
        
        
          N
          -
          1
        
      
      ⁢
      
        
          h
          m
          *
        
        ·
        
          γ
          m
        
      
    
  
  ,
  
    
      γ
      m
    
    ∈
    
      {
      
        0
        ,
        
          ±
          1
        
        ,
        
          ±
          j
        
      
      }
    
  




The γ0, . . . , γN−1, h0, . . . , hN−1 are complex values. The filter coefficients h0, . . . , hN−1 are extracted from the channel impulse response h=(h0, h1, . . . , hL), which is supplied from the channel estimator 260. The (pkN−N+1, . . . , pkN−1, pkN) can denote the branch label of the branch from state sk-1 to state sk in a given kth section, and pkn−N+1 is first in time. The {γm} for the first calculation cycle during a given kth section of the trellis diagram is denoted by (γ0, γ1, . . . , γN−1)1, and are set as follows:

(γ0,γ1, . . . ,γN−1)1=(pkN−N+1,0, . . . ,0)

For the pth calculation cycle during the kth section, the delay elements {γm} are shifted and updated as follows:

(γ0,γ1, . . . ,γN−1)p=(pkN−N+p,γ0, . . . ,γN−1)p-1, p=2, . . . , N−1

or equivalently

(γ0,r,γ1,r, . . . ,γN−1,r)p=(pkN−N+p,r,γ0,r, . . . ,γN−1,r)p-1 

(γ0,i,γ1,i, . . . ,γN−1,i)p=(pkN−N+p,i,γ0,i, . . . ,γN−1,i)p-1 

where the subscripts r and i are used to denote the real and imaginary parts of the quantity, respectively.

The multipliers 5161 to 516N−1 perform the multiplication hm*·γm. The real and imaginary parts of these multipliers are summed by adders 518 and 520, respectively. Subtractors 524 and 504 subtract the output of these multipliers from the real part and imaginary part, respectively, of the input to block C. Processing blocks 505 and 506 square the output from the subtractors 524 and 504, respectively. Adder 507 adds the previous output from adder 507 through a delay element DT 508 to the summed outputs of the processing blocks 505 and 506. Adder 507 is initially set to zero for each section. Thus, block C can output the metrics of each branch every N·T, where N is the number symbols in a branch label and T is the symbol duration.
FIG. 12 illustrates another example detailed block diagram of and an ISIC and received symbol candidate x estimator 306 in the equalizer and branch metric calculator of FIG. 5. In this example, the amount of circuitry for implementing the ISIC and received symbol candidate x estimator can be reduced. A switch 546 is used to selectively receive the real and imaginary parts 522 and 526 of the input having a switching duration T/2. A switch 544 is used to selectively receive the real and imaginary parts of the output from multipliers 5161 to 516N−1. These switches can be synchronized to obtain the real and imaginary parts. The adder 540 adds the outputs from the multipliers 5161 to 516N−1. Subtractor 542 subtracts the output from adder 540 from the real or imaginary parts of the input. Processing block 552 squares the output from subtractor 542. Adder 556 adds the previous output from adder 556 through a delay element DT/2 554 to the output of processing block 552. A switch 558 can selectively output the metrics of each branch every N·T. Furthermore, by using the above switches, in this example only two adders 540 and 556 and one subtractor 542 are needed to calculate the output thereby reducing the amount of circuitry needed.
Alternative Equalizer and Metric Calculator
FIGS. 13, 14A–14B, 15A–15B, and 16A–16B illustrate an alternative example of an equalizer and metric calculator for the CCK estimator of FIG. 5. This example is also for the case of N=2 regarding the diagram of FIG. 3. This example can also be applied to the general case of N greater than and equal to 2. In contrast to the above examples, the alternative example handles a received signal yt in parallel whereas the above examples handles a received signal sequentially. Although the amount of circuitry is increased in the alternative example, the calculation time decreases thereby providing a faster CCK estimator. In the case of N=2, the alternative example handles two received signals simultaneously to calculate the branch metrics.
Referring to FIG. 13, equalizer and metric calculator 270 includes a demultiplexer (“demux”) 601 that receives a received symbol and outputs two symbols every two symbol durations at time instant 2k−1 and 2k. For example, for the received symbols y1, y2, y3, y4, . . . , where the subscript denotes the discrete-time instant, the demux 601 outputs {y1, y2} at time instant 2, {y3, y4} at time instant 4, and in general {y2k-1, y2k} at time instant 2k. The {y1, y2} is then used to calculate the metric of each branch in the first section of the CCK diagram. Furthermore, the {y2k-1, y2k} is then used to calculate the metric of each branch from state sk-1 to state sk in the kth section of the CCK diagram.
Equalizer and metric calculator 270 also includes blocks A, B, and C to handle ISI including ISIA, ISIB and ISIC, as well as the received symbol candidate x, which are subtracted from the received sumbols. Block A includes ISIA estimators 602A and 602B. Based on the received symbols {y2k-1, y2k} and the estimated channel impulse response h (represented in FIG. 13 by a “1” in a circle) from the channel estimator 260 and decoded codewords (represented in FIG. 13 by a “2” in a circle), ISIA estimators 602A and 602B estimate the ISIA at time instances 2k−1 and 2k, respectively, in the same manner as the ISIA estimators described above. Subtractors 603A and 603B subtract the output from ISIA estimators 602A and 602B, respectively, from the received symbol at time instant y2k-1 and at time instant y2k, respectively. The output of subtractors 603A and 603B are fed into block B.
Block B includes ISIB estimators 604A and 604B. At block B, based on the surviving path for the state sk-1 (represented in FIG. 13 by a “3” in a circle) and the estimated channel impulse response h, ISIB estimators 604A and 604B estimate the ISIB at time instances 2k−1 and 2k, respectively, in the same manner as the ISIB estimator described above. Subtractors 605A and 605B subtract these ISIB values from the output of the subtractors 603A and 603B from block A. The output of subtractors 605A and 605B are fed into block C.
Block C includes ISIC and received symbol candidate x estimators 606A and 606B. At block C, based on the branch label of the branch in question (represented in FIG. 13 by a “4” in a circle) and the estimated channel impulse response h, the ISIC and received symbol candidate x estimator 606B estimates the ISIC and received symbol candidate x at time instance 2k. Based on the branch label of the branch in question, the ISIC and received symbol candidate x estimator 606A estimates the ISIC and the received symbol candidate x at time instance 2k−1. The received symbol candidates for time instant 2k−1 and 2k are just the first symbol and the second symbol of the branch label, respectively. Subtractors 607A and 607B subtract the ISIC and the received symbol candidates from respective ISIC and received symbol candidate x estimators 606A and 606B from the output of the subtractors 605A and 605B in block B. The output of subtractors 607A and 607B are fed into processing blocks 608A and 608B and 609A and 609B, respectively, that square the real and imaginary parts of the output values. The adder 610 sums the outputs of these processing blocks and its output provides the metric of the branch in question.
In the alternative example equalizer and metric calculator of FIG. 13, block A is independent of the branch in question. In this case, only one block A is needed. Block B requires the information of the surviving path for the state sk-1εSk-1 for k=2, 3, 4. In such a case, the number of block B equals the number of |Sk-1|. In addition, block C needs the information of the branch label of the branch in question. Thus, in the case of 4 branches leading to state sk, 4*|Sk| block C should be used.
FIGS. 14A and 14B illustrate one example of detailed block diagrams of ISIA estimators 602A and 602B for time instances at 2k−1 and 2k, respectively, equalizer and metric calculator of FIG. 13.
Referring to FIG. 14A, ISIA estimator 602A can be a complex-number FIR filter with L elements α1, L, αL and L filter coefficients h1, L, hL, where L+1 is the length of the discrete-time channel impulse response. The following equation can be used to determine the ISIA occurring at time instant 2k−1 (denoted by ISIA,2k-1): 



  
    
      ISI
      
        A
        ,
        
          
            2
            ⁢
            k
          
          -
          1
        
      
    
    =
    
      
        ∑
        
          m
          =
          1
        
        L
      
      ⁢
      
        
          h
          m
          *
        
        ·
        
          α
          m
        
      
    
  
  ,
  
    
      α
      m
    
    ∈
    
      {
      
        0
        ,
        
          ±
          1
        
        ,
        
          ±
          j
        
      
      }
    
  




The α1, L, αL, h1, L, hL are all complex values having real and imaginary parts. The filter coefficients h1, L, hL are extracted from the channel impulse response h=(h0, h1, L, hL), which is supplied from the channel estimator 260. Initially, at section 1 of the CCK diagram, the previously estimated CCK codewords are loaded as {αm}. For example, the delay elements denoted by (α1, L, αL)1, are set as follows:

(α1,L,αL)1=(s1,L,sL)

where (s1, L, s8) is the most recently estimated codeword and s8 is first in time, (s9, L, s16) is the second most recently estimated codeword and s16 is first in time, and so on.

The elements {αm} for the kth section are set to be, denoted by (α1, . . . , αL)k, are shifted and updated by

(α1,α2, . . . ,αL)k=(0,0,α1, . . . ,αL-2)k-1, k=2,3,4

or equivalently

(α1,r,α2,r, . . . ,αL,r)k=(0,0,α1,r, . . . ,αL-2,r)k-1 

(α1,i,α2,i, . . . ,αL,i)k=(0,0,α1,i, . . . ,αL-2,i)k-1 

where the subscripts r and i are used to denote the real part and imaginary part of the quantity, respectively.

The multipliers 6201 to 620L perform the multiplication hm*·αm. These multipliers can be same described in FIG. 8. The real and imaginary parts of the output of these multipliers are summed by adders 624 and 626, respectively. The outputs of adders 624 and 626 are then subtracted from the real and imaginary parts 628 and 632 of the received symbol y2k-1 by subtractors 630 and 634, respectively. The output of subtractors 630 and 634 are fed into block B.
Referring to FIG. 14B, the ISIA estimator 602B at the time instance 2k can also be a complex-number FIR filter with L−1 elements α1, . . . , αL-1 and L−1 filter coefficients h2, . . . , hL. The following equation can be used to determine ISIA at time instance 2k(denoted by ISIA,2k): 



  
    
      ISI
      
        A
        ,
        
          2
          ⁢
          k
        
      
    
    =
    
      
        ∑
        
          m
          =
          1
        
        
          L
          -
          1
        
      
      ⁢
      
        
          h
          
            m
            +
            1
          
          *
        
        ·
        
          α
          m
        
      
    
  
  ,
  
    
      α
      m
    
    ∈
    
      {
      
        0
        ,
        
          ±
          1
        
        ,
        
          ±
          j
        
      
      }
    
  




where (α1, . . . , αL-1) are the same as those in FIG. 14A. The multipliers 6201 to 620L-1, adders 624 and 626, and subtractors 630 and 634 operate in the same manner as in FIG. 14A.

FIGS. 15A and 15B illustrate one example of detailed block diagrams of ISIB estimators 604A and 604B for time instances at 2k−1 and 2k, respectively, in the metric calculator of FIG. 13.
Referring to FIG. 15A, ISIB estimator 604A can be a complex-number FIR filter with 6 elements β1, . . . , β6 and 6 filter coefficients h1, . . . , h6. The following equation can be used to determine the ISIB for time instant 2k−1 (denoted by ISIB,2k-1): 



  
    
      ISI
      
        B
        ,
        
          
            2
            ⁢
            k
          
          -
          1
        
      
    
    =
    
      
        ∑
        
          m
          =
          1
        
        6
      
      ⁢
      
        
          h
          m
          *
        
        ·
        
          β
          m
        
      
    
  
  ,
  
    
      β
      m
    
    ∈
    
      {
      
        0
        ,
        
          ±
          1
        
        ,
        
          ±
          j
        
      
      }
    
  




The β1, . . . , β6, h1, . . . , h6 are all complex values having real and imaginary parts. The filter coefficients h1, . . . , h6 are extracted from the channel impulse response h=(h0, h1, . . . , hL), which is supplied from the channel estimator 260. The {βm} stores CCK symbols on the surviving path for state sk-1. Initially, when decoding a new CCK codeword, the {βm} for the calculation in section 1 of the CCK diagram are denoted by (β1, . . . , β6)1, and are all set to zero because the surviving path for state s0 is null. That is,

(β1, . . . , β6)1=(0,0,0,0,0,0).

For a given kth section of the trellis diagram, the elements {βm} for the calculation in the kth section, denoted by (β1, . . . , β7)k, are set to:

(β1, . . . ,β6)k=(d(k-1)N, d(k-1)N−1, . . . , d1,0, . . . ,0)

where (d1, d2, . . . , d(k-1)N) denote the symbols on the surviving path for the state sk-1 and d1 is first in time.

The subscripts r and i are used to denote the real part and imaginary part of the quantity, respectively. The multipliers 7201 to 7206 perform the multiplication hm*·βm. These multipliers can be implemented using the same multiplier described in FIG. 8. The real and imaginary part of each multiplier are summed by adders 724 and 726, respectively. The outputs of these two adders are then subtracted from the real part and imaginary part of the input by subtractors 730 and 734, respectively.
Referring to FIG. 15B, ISIB estimator 604B can be a complex-number FIR filter with 6 elements β1, . . . , β6 and 6 filter coefficients h2, . . . , h7. The following equation can be used to determine the ISIB for time instant 2k(denoted by ISIB,2k): 



  
    
      ISI
      
        B
        ,
        
          2
          ⁢
          k
        
      
    
    =
    
      
        ∑
        
          m
          =
          1
        
        6
      
      ⁢
      
        
          h
          
            m
            +
            1
          
          *
        
        ·
        
          β
          m
        
      
    
  
  ,
  
    
      β
      m
    
    ∈
    
      {
      
        0
        ,
        
          ±
          1
        
        ,
        
          ±
          j
        
      
      }
    
  




    
    
        where β1, . . . , β6 are the same as those in FIG. 15A. The multipliers 7201 to 7206, adders 724 and 726, and subtractors 730 and 734 operate in the same manner as in FIG. 15A.
    
    


Referring to FIG. 16A, the ISIC and received symbol candidate estimator 606A includes a multiplier 8200, real and imaginary parts 828 and 832 of an input signal, respectively, and subtractors 830 and 834. For the branch between state sk-1 and state sk in kth section of the CCK diagram and the branch label is (p2k-1, p2k), the p2k-1 is first in time. In the case of time instant 2k−1, the first metric branch is encountered, thus, there will be no past symbol of the branch label at time instant 2k−1. In this case, the ISIC for time instant 2k−1 equals to zero. Additionally, the received symbol candidate x for time instant 2k−1, denoted by x2k-1, can be estimated as follows:

x2k-1=h0*·p2k-1.

where the filter coefficients h0 are extracted from the channel impulse response h=(h0, h1, . . . , hL), which is supplied from the channel estimator 260.

The real and imaginary output parts of multiplier 8200 are subtracted from the real part 828 and imaginary part 832 of the input by subtractors 830 and 834, respectively.
Referring to FIG. 16B, the ISIC and received symbol candidate estimator 606B includes multipliers 8200 and 8201, adders 824 and 826, real and imaginary parts 828 and 832 of an input signal, respectively, and subtractors 830 and 834. For time instant 2k, the first symbol p2k-1 of the branch label can cause ISI to the symbol received at time instant 2k. The ISIC for time instant 2k, denoted by ISIC,2k, can be estimated as follows:

ISIC,2k=h1*·p2k-1.

The received symbol candidate x for time instant 2k, denoted by x2k, can be estimated as follows:

x2k=h0*·p2k 

where the filter coefficients h0, h1 are extracted from the channel impulse response h=(h0, h1, . . . , hL).

The subscripts r and i are used to denote the real part and imaginary part of the quantity, respectively. The multipliers 8200 and 8201 perform the above multiplication. The real and imaginary parts of each multiplier are summed by adders 824 and 826, respectively. The outputs of these two adders are then subtracted from the real part 828 and imaginary part 832 of the input by subtractors 830 and 834, respectively.
Thus, a method and system for estimating block codes by calculating a path metric according to a decision feedback sequence estimation algorithm 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.

## Claims

1. In a detector for detecting block codewords contained in a received signal, the detector including a metric calculator to calculate a branch metric for a branch emanating from a state in a trellis diagram, the metric calculator comprising:
a first filter set to estimate intersymbol interference (ISIA) based on previously block codewords and a channel impulse response and to subtract the estimated ISIA from a received symbol in a block codeword;
a second filter set to estimate intersymbol interference (ISIB) based on a surviving path in the trellis diagram and the channel impulse response and subtract the estimated ISIB from output of the first filter set; and
a third filter set to estimate an intersymbol interference (ISIC) and a received symbol candidate based on symbols associated with a branch and the channel impulse response and to subtract the estimated ISIC and the received symbol candidate from the output of the second filter set, and calculate a distance measurement between the received symbol and received symbol candidate and an estimated overall ISI in order to provide the branch metric.

2. The metric calculator of claim 1, wherein block codewords are complementary code keying (CCK) codes.

3. The metric calculator of claim 1, wherein the first filter set includes a single ISIA estimator block to estimate the ISIA.

4. The metric calculator of claim 3, wherein the single ISIA estimator block includes:
a plurality of delay elements to provide symbols of previously detected block codewords;
a plurality of multipliers to multiply channel impulse response values with the output of the delay elements, the output of each multiplier having a real part and an imaginary part;
a first adder to add the real parts of the outputs of the multipliers;
a second adder to add the imaginary parts of the outputs of the multipliers;
a first subtractor to subtract the output of the first adder from a real part of a received symbol; and
a second subtractor to subtract the output of the second adder from an imaginary part of the received symbol.

5. The metric calculator of claim 3, wherein the single ISIA estimator includes:
a plurality of delay elements to provide symbols of previously detected block codewords;
a plurality of multipliers to multiply channel impulse response values with the output of the delay elements, the output of each multiplier having a real part and an imaginary part;
a plurality of switches to selectively receive the real parts and imaginary parts of the output of the multipliers;
an adder to add the outputs of the switches;
an input side switch to selectively receive a real part and imaginary part of a received symbol;
a subtractor to subtract the output of the adder from the output of the input side switch; and
an output side switch to selectively output a real part and an imaginary part of the output of the subtractor.

6. The metric calculator of claim 1, wherein the second filter set includes a plurality of ISIB estimator blocks equal to a number of states in a section of the trellis diagram.

7. The metric calculator of claim 6, wherein each ISIB estimator block includes:
a plurality of delay elements to provide symbols of a surviving path in the trellis diagram;
a plurality of multipliers to multiply channel impulse response values with the output of the delay elements, the output of each multiplier having a real part and an imaginary part;
a first adder to add the real parts of the outputs of the multipliers;
a second adder to add the imaginary parts of the outputs of the multipliers;
a first subtractor to subtract the output of the first adder from a real part of an input to the ISIB estimator block; and
a second subtractor to subtract the output of the second adder from an imaginary part of the input of the ISIB estimator block.

8. The metric calculator of claim 6, wherein each ISIB estimator block includes:
a plurality of delay elements to provide symbols of a surviving path in the trellis diagram;
a plurality of multipliers to multiply channel impulse response values with the output of the delay elements, the output of each multiplier having a real part and an imaginary part;
a plurality of switches to selectively receive the real parts and imaginary parts of the output of the multipliers;
an adder to add the outputs of the switches;
an input side switch to selectively receive a real part and imaginary part of an input to the ISIB estimator block;
a subtractor to subtract the output of the adder from the output of the input side switch; and
an output side switch to selectively output a real part and imaginary part of the output of the subtractor.

9. The metric calculator of claim 1, wherein the third filter set includes a plurality of ISIC and received symbol candidate estimator blocks equal to a number of branches in a section of the trellis diagram.

10. The metric calculator of claim 9, wherein each ISIC and received symbol candidate estimator block includes:
a plurality of delay elements to provide branch labels of a branch within a section of the trellis diagram;
a plurality of multipliers to multiply channel impulse response values with the output of the delay elements, the output of each multiplier having a real part and an imaginary part;
a first adder to add the real parts of the outputs of the multipliers;
a second adder to add the imaginary parts of the outputs of the multipliers;
a first subtractor to subtract the output of the first adder from a real part of an input to the ISIC and received symbol candidate estimator block;
a first processing unit to square the output of the first subtractor to provide a distance measurement between a real part of a received symbol and a real part of a received symbol candidate and to calculate an overall ISI;
a second subtractor to subtract the output of the second adder from an imaginary part of the input of the ISIC and received symbol candidate estimator block;
a second processing unit to square the output of the second subtractor to provide a distance measurement between an imaginary part of the received symbol and an imaginary part of the received symbol candidate and to calculate an overall ISI;
a third adder to add a previous output of the third adder to the sum of the real and imaginary distance measurements output from the first and second processing units; and
a switch to selectively output the branch metric from the third adder.

11. The metric calculator of claim 10, wherein the switch outputs the branch metric periodically with a period N·T where N is a number of symbols in the branch label and T is a symbol duration.

12. The metric calculator of claim 9, wherein each ISIC and received symbol candidate estimator block includes:
a plurality of delay elements to provide branch labels of a branch within a section of the trellis diagram;
a plurality of multipliers to multiply channel impulse response values with the output of the delay elements, the output of each multiplier having a real part and an imaginary part;
a plurality of switches to selectively receive real and imaginary parts of the output of the multipliers;
a first adder to add the outputs of the switches;
an input side switch to selectively receive a real part and imaginary part of an input to the ISIC and received symbol candidate estimator block;
a subtractor to subtract the output of the adder from the output of the input side switch;
a processing unit to square the output of the first subtractor to provide a distance measurement between a real part or imaginary part of a received symbol and a received symbol candidate and to calculate an overall ISI;
a second adder to add a previous output of the second adder with the distance measurement output from the processing unit; and
an output side switch to selectively output the branch metric from the second adder.

13. The metric calculator of claim 12, wherein the output side switch outputs the received symbol candidate periodically within a period N·T where N is a number of symbols in the branch label and T is a symbol duration.

14. In a detector for detecting block codewords contained in a received signal, the detector including a metric calculator to calculate a branch metric for a branch emanating from a state in a trellis diagram, the metric calculator comprising:
a demultiplexer to receive a plurality of received symbols contained in a block codeword and to output a first set of symbols at a time first and a second set of symbols at a second time;
a first filter set to estimate intersymbol interference (ISIA) at the first and second times based on previously detected codewords and a channel impulse response and to subtract the estimated ISIA at the first and second times from the first and second set of symbols, respectively;
a second filter set to estimate intersymbol interference (ISIB) based on symbols of a surviving path in the trellis diagram and on a channel impulse response, and subtract the estimated ISIB at the first and second times from the output of the first filter set at the first and second times, respectively; and
a third filter set to estimate an intersymbol interference (ISIC) and a received symbol candidate at the first and second times based on symbols associated with a branch and a channel impulse response, subtract the estimated ISIC and received symbol candidates at the first and second time from the output of the second filter set at the first and second times, respectively;
a plurality of processing units to calculate a distance measurement between real and imaginary parts of the received symbol and received symbol candidate and to calculate an overall ISI; and
an adder to add the outputs of the processing units in order to provide the branch metric.

15. The metric calculator of claim 14, wherein the type of block codewords includes a complementary code keying (CCK) code.

16. The metric calculator of claim 14, wherein the first filter set includes a first ISIA estimator block to estimate the ISIA at the first time and a second ISIA estimator to estimate the ISIA at the second time.

17. The metric calculator of claim 16, wherein the first ISIA estimator block includes:
a plurality of delay elements to provide symbols of previously detected block codewords;
a plurality of multipliers to multiply channel impulse response values with the output of the delay elements, the output of each multiplier having a real part and an imaginary part;
a first adder to add the real parts of the outputs of the multipliers;
a second adder to add the imaginary parts of the outputs of the multipliers;
a first subtractor to subtract the output of the first adder from a real part of a received symbol at the first time; and
a second subtractor to subtract the output of the second adder from an imaginary part of the received symbol at the first time.

18. The metric calculator of claim 16, wherein the second ISIA estimator includes:
a plurality of delay elements to provide symbols of previously detected block codewords;
a plurality of multipliers to multiply channel impulse response values with the output of the delay elements, the output of each multiplier having a real part and an imaginary part;
a first adder to add the real parts of the outputs of the multipliers;
a second adder to add the imaginary parts of the outputs of the multipliers;
a first subtractor to subtract the output of the first adder from a real part of a received symbol at the second time; and
a second subtractor to subtract the output of the second adder from an imaginary part of the received symbol at the second time.

19. The metric calculator of claim 14, wherein the second filter set includes a first ISIB estimator block to estimate the ISIB at the first time and a second ISIB estimator to estimate the ISIB at the second time.

20. The metric calculator of claim 19, wherein the first ISIB estimator block includes:
a plurality of delay elements to provide symbols of a surviving path in a trellis diagram at the first time;
a plurality of multipliers to multiply channel impulse response values with the output of the delay elements, the output of each multiplier having a real part and an imaginary part;
a first adder to add the real parts of the outputs of the multipliers;
a second adder to add the imaginary parts of the outputs of the multipliers;
a first subtractor to subtract the output of the first adder from a real part of an input to the first ISIB estimator block at the first time; and
a second subtractor to subtract the output of the second adder from an imaginary part of the input to the ISIB estimator block at the first time.

21. The metric calculator of claim 19, wherein the second ISIB estimator includes:
a plurality of delay elements to provide symbols of a surviving path in a trellis diagram at the second time;
a plurality of multipliers to multiply channel impulse response values with the output of the delay elements, the output of each multiplier having a real part and an imaginary part;
a first adder to add the real parts of the outputs of the multipliers;
a second adder to add the imaginary parts of the outputs of the multipliers;
a first subtractor to subtract the output of the first adder from a real part of an input to the second ISIB estimator block at the second time; and
a second subtractor to subtract the output of the second adder from an imaginary part of the input to the second ISIB estimator block at the second time.

22. The metric calculator of claim 14, wherein the third filter set includes a first ISIC and received symbol candidate estimator block to estimate the ISIC and the received symbol candidate at the first time and a second ISIC and received symbol candidate estimator block to estimate the ISIC and received symbol candidate at the second time.

23. The metric calculator of claim 22, wherein the first ISIC and received symbol candidate estimator block includes:
a multiplier to multiply symbols in a branch label with channel impulse response values, the output of the multiplier having a real part and an imaginary part;
a first subtractor to subtract the real part of the output of the multiplier from an input to the first ISIC and received symbol candidate estimator block at the first time; and
a second subtractor to subtract the imaginary part of the output of the multiplier from an imaginary part of the input to the first ISIC and received symbol candidate estimator block at the first time.

24. The metric calculator of claim 22, wherein the second ISIC and received symbol candidate estimator block includes:
a plurality of multipliers to multiply symbols in a branch label with channel impulse response values, the output of each of the multipliers having a real part and an imaginary part;
a first adder to add the real parts of the outputs of the multipliers;
a second adder to add the imaginary parts of the outputs of the multipliers;
a first subtractor to subtract the output of the first adder from a real part of an input to the second ISIC and received symbol candidate estimator block at the second time; and
a second subtractor to subtract the output of the second adder from an imaginary part of the input to the second ISIC received symbol candidate estimator block at the second time.