Abstract:
Briefly, in accordance with one or more embodiments, in response to receiving a wireless communication signal, a non-uniform codebook is generated based at least in part on one or more characteristics of the received wireless communication signal for quantization and communication back to a source of the received signal. The non-uniform codebook may be generated by selecting a suitable uniform codebook based at least in part on the one or more characteristics of the received wireless communication signal, and supplementing the uniform codebook with additional codewords to generate the non-uniform codebook.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a is a continuation of U.S. patent application Ser. No. 12/715,317, filed Mar. 1, 2010, which is a continuation of U.S. patent application Ser. No. 11/313,532, filed Dec. 20, 2005, now U.S. Pat. No. 7,672,387. U.S. patent application Ser. No. 11/313,532 is a continuation-in-part of U.S. patent application Ser. No. 11/294,823, filed Dec. 5, 2005, now abandoned. U.S. patent application Ser. Nos. 11/313,532, 11/294,823 and 12/715,317 are hereby incorporated herein by reference thereto in their entireties. 
    
    
     TECHNICAL FIELD 
     Embodiments of the invention are generally directed to communication systems and, more particularly, to multiple input, multiple output (MIMO) wireless communication system, associated methods and data structures. 
     BACKGROUND 
     The use of multiple signaling paths, e.g., through the use of multiple input multiple output (MIMO) technology can significantly increase the effective range of a wireless communication channel. Despite the significant advantages gained from the introduction of MIMO technology into a communications device, implementation problems persist which have limited the widespread adoption of such technologies. 
     Accordingly, practical MIMO implementations that enable the widespread adoption of such technologies have yet to be realized. A number of example MIMO implementations, methods and associated data structures are provided in the disclosure below that address one or more of these conventional limitations. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Embodiments of the present invention are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings in which like reference numerals refer to similar elements and in which: 
         FIG. 1  is a block diagram of an example communication system within which embodiments of the invention may be practiced; 
         FIG. 2  provides a graphical representation of an example beamforming process, according to one embodiment; 
         FIG. 3  is a flow chart of an example method for beamforming using a non-uniform codebook, according to one embodiment; 
         FIG. 4  is a graphical illustration of a uniform codebook; 
         FIG. 5  is a graphical illustration of a non-uniform codebook, according to one embodiment; 
         FIG. 6  is a flow chart of an example method of beamforming using a hierarchical codebook, according to one embodiment; 
         FIG. 7  is a graphical illustration of a hierarchical codebook, according to one embodiment; 
         FIG. 8  is a block diagram of an example communications device within which embodiments of the invention may be practiced, according to one embodiment; and 
         FIG. 9  is a block diagram of an example article of manufacture including content which, when executed by an accessing machine, causes the machine to implement one or more aspects of embodiment(s) of the invention. 
     
    
    
     DETAILED DESCRIPTION 
     Embodiments of a wireless communication system, associated methods and data structures are generally presented which implement one or more example MIMO embodiments. 
     In co-pending U.S. patent application Ser. No. 11/036,906 entitled Codebook Generation System and Associated Methods filed Jan. 13, 2005, by Lin, et al. (hereinafter, the Lin application), the disclosure of which is incorporated herein by reference for all purposes, a codebook generation agent (CGA) was introduced dynamically generated one or more matrix codebook(s) from, e.g., matrix codewords that are dynamically generated from, e.g., vector codebook(s) for 2-, 3-, 4-, . . . , N-unit vectors. Those skilled in the art will appreciate that such N-Dimension unit vectors are already disposed on such communication device(s) to support a number of other features such as, e.g., single data stream beamforming. As such, the co-pending Lin application represents a significant improvement in MIMO implementations. 
     With this application, the Lin reference is extended to introduce an innovative code management agent (CMA). According to one embodiment, described more fully below, a codebook management agent (CMA), which may be selectively invoked to dynamically generate and/or utilize one or more of uniform, non-uniform and/or a hierarchical codebook(s) in support of, e.g., a closed-loop MIMO (or, beamforming) implementation. The CMA disclosed herein may well include and/or be coupled to one or more CGAs, although the scope of the invention is not so limited. 
     Beamforming is a useful technique to increase the effective signal to noise ratio (SNR) perceived by receivers within MIMO systems. In an explicit feedback scheme, information associated with a beamforming matrix is sent back to the transmitter. To efficiently encode the beamforming matrix, a series of vector codebook(s) may be designed and/or dynamically generated, e.g., as provided for in the above-referenced co-pending application. In uncorrelated channels, the beamforming matrix is uniformly distributed in the Stiefel manifold (see, e.g.,  FIG. 4 ). In this regard, in traditional implementations a vector codebook is substantially optimized to cover the whole manifold with the following criteria: 
                     C   ⁡     (     m   ,   N     )       =         arg   ⁢           ⁢   max       c   i       ⁢     (       min   ⁡     (         d   c     ⁡     (       c   i     ,     c   j       )       ,     
     ⁢       i   &lt;   j     =   1     ,   …   ⁢           ,   N     )       ,         c   i     ∈       C   m     ⁢           ⁢   with   ⁢           ⁢          c   i              =   1       )               (   1   )               
in which m is the dimension of the vector codebook and N is the number of codewords populating the codebook. The complex m-tuple space is denoted C m . The chordal distance is defined as:
 
 d   c ( c   i   ,c   j )=√{square root over (1 −∥c   i   H ∥ 2 )}  (2)
 
in which normal inner product is used.
 
     When the beamforming vector v i , is quantized, the codeword with the smallest chordal distance is selected: 
     
       
         
           
             
               
                 
                   
                     
                       v 
                       ^ 
                     
                     m 
                   
                   = 
                   
                     
                       
                         arg 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         min 
                       
                       
                         c 
                         i 
                       
                     
                     ⁢ 
                     
                       ( 
                       
                         
                           
                             d 
                             c 
                           
                           ⁡ 
                           
                             ( 
                             
                               
                                 c 
                                 i 
                               
                               , 
                               
                                 v 
                                 m 
                               
                             
                             ) 
                           
                         
                         , 
                         
                           
                             c 
                             i 
                           
                           ∈ 
                           
                             C 
                             ⁡ 
                             
                               ( 
                               
                                 m 
                                 , 
                                 N 
                               
                               ) 
                             
                           
                         
                       
                       ) 
                     
                   
                 
               
               
                 
                   ( 
                   3 
                   ) 
                 
               
             
           
         
       
     
     This class of “uniform” codebook may well be designed and implemented using one or more of the techniques disclosed in the above-referenced co-pending application. The codebooks described therein represent an improvement on the order of a factor of 2-4 in quantization efficiency with the same or better performance compared to other schemes. 
     In situations in which consecutive data packets are sent, the time between packets is short. In slowly fading or static channels, the channel characteristics will generally not change substantially during this period of time. Consequently, only a small beam-steering correction is required to correct the subsequent drift. In the embodiments below, this property of static or slowly fading channels is leveraged in the design and utilization of new codebooks effectively reducing quantization complexity (and, as such computational complexity) while improving beamforming accuracy. 
     Reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment” or “in an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures or characteristics may be combined in any suitable manner in one or more embodiments. 
     Technical detail regarding some of the operating characteristics of the mobile devices and/or the wireless communication network(s) in which the CMA may be implemented may be found in, e.g., the IEEE 802.11, 1999 Edition; Information Technology Telecommunications and Information Exchange Between Systems—Local and Metropolitan Area Networks—Specific Requirements, Part 11: WLAN Medium Access Control (MAC) and Physical (PHY) Layer Specifications, its progeny and supplements thereto (e.g., 802.11a, .11 g and .11n). See, also, the IEEE Std 802.16-2001 IEEE Std. 802.16-2001 IEEE Standard for Local and Metropolitan area networks Part 16: Air Interface for Fixed Broadband Wireless Access Systems, its progeny and supplements thereto (e.g., 802.16a, .16d, and .16e). 
     Example Communications Environment 
     In  FIG. 1 , a block diagram of an example wireless communication environment  100  is depicted within which embodiments of the invention may well be practiced. In accordance with the illustrated example embodiment of  FIG. 1 , an example communications environment  100  is depicted comprising one wireless communications device  102  in communication with another wireless communications device  106  through a wireless communication link  104 . As used herein, communication environment  100  is intended to represent any of a wide range of wireless communication networks including, but not limited to, a near-field communication (NFC) network, a wireless local area network (WLAN), a wireless metropolitan area network (WMAN), a wireless wide area network (WWAN), a cellular radiotelephony network, a personal communication system (PCS) network, and the like. 
     According to one embodiment, for purposes of illustration and not limitation, communication network  100  will be described in the context of an 802.11x (in which x is a, b, g, n and/or combinations and/or progeny thereof), although the scope of the invention is not limited in this regard. In accordance with this illustrative example, device  102  may be an access point (AP), while device  106  may be a remote station (STA), although the scope of the invention is not limited in this regard. 
     In a closed-loop MIMO system, a data signal is weighted by a beamforming matrix V, and then selectively transmitted by a plurality of antennae, as shown. According to one embodiment, the data signal may comprise a number of data streams (N 1  . . . N s ), although the invention is not limited in this regard. The number of data streams may represent the number of spatial channels, with appropriate bit-loading, power weighting and subcarrier assignments, although the invention is not limited in this regard. 
     According to one embodiment with four (4) transmit antennae and three (3) data streams (for ease of illustration), the transmitted signal (x) transmitted via the N t  (4) antennae may be represented as: 
                     x   =     V   ×   s       ⁢     
     ⁢         where   ⁢           ⁢   V     =     [           v   11           v   12           v   13               v   21           v   22           v   23               v   31           v   32           v   33               v   41           v   42           v   43           ]       ,       and   ⁢           ⁢   s     =     [           s   3               s   2               s   3           ]                 (   4   )               
As shown, s is an N s -vector of data symbols, and V is the N t  by N s  beamforming matrix developed from information (e.g., matrix codebook(s) and or indices thereto) fed back from a remote receiver (e.g.,  102 ). According to one embodiment, the beamforming matrix V is typically unitary, and power/bit loading may be applied on vector s, as introduced above, although the invention is not limited in this regard.
 
     Device  106  is depicted comprising a codebook management agent (CMA)  108  to dynamically generate and or manage the utilization of one or more matrix codebook(s) from which channel state information may be characterized and fed back to a remote device, e.g.,  102 . According to one embodiment, described more fully in the co-pending application introduced above (and incorporated herein), rather than storing one or more matrix codebooks, CMA  108  may compile the matrix codebooks, or a portion thereof, necessary to characterize the channel-state information from matrix codeword(s) dynamically generated from one or more vector codebook(s) for 2-, 3-, 4-, . . . , N-unit vectors. 
     Example Beamforming Implementation 
     Turning to  FIG. 2 , a graphical representation of an example beamforming process, according to one embodiment. With reference to  FIG. 2 , the example process begins with the access point (AP) (e.g.,  106 ) issuing a request-to-send (CTS) (or, a sounding packet) message to a remote station along a communication channel (e.g.,  104 ). 
     The remote station (STA) (e.g.,  102 ) measures the channel and invokes an instance of the channel management agent (CMA)  108  to calculate a beam forming matrix, e.g., with singular value decomposition (SVD) as:
 
 H   1   =U   1 Σ 1   V   t   H   (5)
 
in which V 1  is N t  by N t ; U 1  is N r  by N r ; and Σ 1  is Nr by Nr.
 
     The STA then feeds back the quantized beamforming matrix {circumflex over (V)} 1 , which is N t  by N t , in a Clear To Send (CTS) packet or other feedback (or response) packet. 
     The AP multiplies the message s, which is N t  by 1 with N s  nonzero streams, by the beamforming matrix {circumflex over (V)} 1  as {circumflex over (V)} 1 s 1 . The AP sends the beamformed Data 1  packet, from which the STA measures the new equivalent channel H 2 {circumflex over (V)} 1 . 
     The STA computes the new beamforming matrix {tilde over (V)} 2  as: 
                       H   2     ⁢       V   ^     1       =         U   2     ⁢     Σ   2     ⁢           V   2   H     ⁢       V   ^     1       ︸         v   ~     2   H         =       U   2     ⁢     Σ   2     ⁢       V   ~     2   H                 (   6   )               
If the channel change between H 1  and H 2  is small and the quantization error in {circumflex over (V)} 1  is small, {tilde over (V)} 2  is closer to identity matrix. The STA quantizes {tilde over (V)} 2  to {circumflex over (V)} 2  and feeds {circumflex over (V)} 2  back. Because {circumflex over (V)} 2  is Nt by Nt, the AP can directly multiply the Nt by 1 message vector with the {circumflex over (V)} 2  as {circumflex over (V)} 2 {circumflex over (V)} 1 s 2 , and send the message to the STA. The STA computes the new beamforming matrix V 3  as:
 
     
       
         
           
             
               
                 
                   
                     
                       H 
                       3 
                     
                     ⁢ 
                     
                       
                         V 
                         ^ 
                       
                       2 
                     
                   
                   = 
                   
                     
                       
                         U 
                         3 
                       
                       ⁢ 
                       
                         Σ 
                         3 
                       
                       ⁢ 
                       
                         
                           
                             
                               V 
                               3 
                               H 
                             
                             ⁢ 
                             
                               
                                 V 
                                 ^ 
                               
                               2 
                             
                           
                           ︸ 
                         
                         
                           
                             v 
                             ~ 
                           
                           3 
                           H 
                         
                       
                     
                     = 
                     
                       
                         U 
                         3 
                       
                       ⁢ 
                       
                         Σ 
                         3 
                       
                       ⁢ 
                       
                         
                           V 
                           ~ 
                         
                         3 
                         H 
                       
                     
                   
                 
               
               
                 
                   ( 
                   7 
                   ) 
                 
               
             
           
         
       
     
     Since the STA may decide to receive signal from the strongest N s  beamformed channels, it only feeds back N s  columns of the computed N t  by N t  beamforming matrix, which correspond to the strongest N s  channels. For this case, the sounding is not straightforward. The AP needs to expand the fed back Nt by Ns beamforming matrix to Nt by Nt so that the sounding of all Nt channels can be done. The expansion adds Nt−Ns columns so that the expanded matrix is a unitary matrix as:
 
 {circumflex over (V)}=[b   1    . . . b   N     t   ] N     t     ×N     t     →  V =[b   1    . . . b   N     t     b   N     t     +1    . . . b   N     t   ] N     t     ×N     t     (8)
 
     The expansion can be computed by Householder reflection as below or other methods. 
                     V   _     =       F   1     ⁡     [         1                                               ⋱                                                   F       N   s     -   1       ⁡     [         1                                     F     N   s             ]             ]               (   9   )               
in which F i =I−2w i w i   H  is the Householder reflection matrix of feedback Householder vector in the co-pending Lin application;
 
               w   i     =           v   ^     i     -     e   1                  v   ^     i     -     e   1                    
and e 1 =[1, 0, . . . , 0] T ; {circumflex over (ν)} i  is computed from the feedback index q i  in the co-pending Lin application. The only difference between equation (7) and the reconstruction step in the Lin application is that F N s in (8) is replaced by {circumflex over (ν)} Ns  in the Lin application. For adaptive bit or power loading, the beamforming vectors may be sorted according to their corresponding singular values before quantization and index feedback.
 
     It should be appreciated, however, that any unitary matrix G that transforms [1 0 . . . 0] T  into {circumflex over (ν)} i  (within a global phase) may well be substituted for the Householder reflection described above. For example, the Householder reflection may well be replaced with a series of Given&#39;s rotations, e.g., 
                       B   i     =       Ψ   ⁡     (       N   i     ,       φ     N   i       -     φ       N   i     -   1           )       ⁢     G   ⁡     (         N   i     -   1     ,     N   i     ,     θ       N   i     -   1         )       ⁢           ⁢   …   ⁢           ⁢     Ψ   ⁡     (     2   ,       φ   2     -     φ   1         )       ⁢     G   ⁡     (     1   ,   2   ,     θ   1       )           ⁢     
     ⁢           ⁢     in   ⁢           ⁢   which     ⁢     
     ⁢           ⁢       G   ⁡     (     m   ,   n   ,   θ     )       =     [           I     m   -   1                                                                             cos   ⁢           ⁢   θ                         -   sin     ⁢           ⁢   θ                                                   I     n   -   m   -   1                                                     sin   ⁢           ⁢   θ                       cos   ⁢           ⁢   θ                                                                           I       N   i     -   n             ]               (   10   )               
is a Given&#39;s rotation between row m and n with angle θ; Ψ(m, φ) is an identity matrix with the m-th diagonal element replaced by e jφ ; and N l  is the complex dimension of v i . The angles θ and φ are Given&#39;s angle representation of unit norm vector. For example, a unit norm 4-vector may be represented by
 
     
       
         
           
             
               [ 
               
                 
                   
                     
                       cos 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         θ 
                         1 
                       
                       ⁢ 
                       
                         ⅇ 
                         
                           jφ 
                           1 
                         
                       
                     
                   
                 
                 
                   
                     
                       sin 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         θ 
                         1 
                       
                       ⁢ 
                       cos 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         θ 
                         2 
                       
                       ⁢ 
                       
                         ⅇ 
                         
                           jφ 
                           2 
                         
                       
                     
                   
                 
                 
                   
                     
                       sin 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         θ 
                         1 
                       
                       ⁢ 
                       sin 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         θ 
                         2 
                       
                       ⁢ 
                       cos 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         θ 
                         3 
                       
                       ⁢ 
                       
                         ⅇ 
                         
                           jφ 
                           3 
                         
                       
                     
                   
                 
                 
                   
                     
                       sin 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         θ 
                         1 
                       
                       ⁢ 
                       sin 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         θ 
                         2 
                       
                       ⁢ 
                       sin 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         θ 
                         3 
                       
                       ⁢ 
                       
                         ⅇ 
                         
                           jφ 
                           4 
                         
                       
                     
                   
                 
               
               ] 
             
               
           
         
       
     
     Similarly, the Household reflection may be replaced with a 180-degree rotation around the vector [1 0 . . . 0] T +v i . In this regard, the coarse vector codebook may be stored in form of Givens angles and θ j  and φ k . 
     It should be noticed that the Householder reflection matrix F i  in the co-pending Lin application for quantization (not reconstruction) can be replaced by any unitary matrix Ai that has {circumflex over (ν)} i  or v i  as the first column, in which {circumflex over (ν)} i  and v i  are the quantized vector and the vector for quantization respectively. For one example, the matrix A i  that converts v i  to [e jφ  0.0 . . . 0.0] T  with quantization error can be E i , in which E i =B i   H  and B i  can convert [1 0 . . . 0] T  to e jφ v i  with quantization error. 
     Example Codebook Data Structure(s) 
     Having introduced an example operational implementation, above, a number of improvements to the conventional uniform codebook will now be introduced. According to one embodiment developed more fully below, CMA  108  may be invoked to selectively re-order the elements of a uniform codebook, e.g., such as one generated above, to effectively reduce the computational complexity of the quantization process. According to one embodiment, the codewords of the codebook are arranged such that those codewords with the largest real-component on the first element appear earlier in the codebook than those codewords with smaller real-components. Accordingly, there is no need to search the full codebook. Feeding back the best of the first few codewords is good enough for convergence. This particular ordering of the codewords reduces the quantization complexity in the tracking mode. 
     According to another aspect of embodiments of the invention, CMA  108  may selectively add another en-elements to an otherwise uniform codebook to generate a non-uniform codebook, wherein m is two to thirty-two. That is, according to one embodiment, developed more fully below, CMA  108  selectively adds one to m-codewords to the codebook to generate a non-uniform codebook, e.g., when a stationary (or, slowly changing) channel is detected. According to one embodiment, the additional m codewords of the non-uniform codebook are tightly centered around the codeword [1, 0, . . . , 0] T , as depicted in  FIG. 5 . Alternatively, CMA  108  may dynamically select a pre-configured non-uniform codebook. 
     According to another aspect of embodiments of the invention, CMA  108  may employ two sets of codebooks for quantization. The first set is for coarse quantization while the second is for fine quantization around a selected center. According to one embodiment, CMA  108  may concatenate the codebooks. The concatenation of one coarse codebook and one (or multiple) fine codebooks (with decreasing radiuses) effectively forms a hierarchy codebook as shown in  FIG. 7 . 
     While the concatenated codebook may not provide the optimal computational performance for a given feedback overhead, it enables low-complexity quantization and scalable feedback resolution. In addition, since the beamforming matrix approaches the identity matrix after several feedback iterations, the station may only use fine codebooks without coarse codebooks for the quantization of some vectors in slow fading. This reduces the feedback overhead for tracking the beamforming matrix. 
     It will be appreciated that but for the introduction of the CMA  108 , device  106  is intended to represent any of a wide variety of electronic device(s) with wireless communication capability. In some embodiments, CMA  108  may well be implemented within a receiver element of a device. In other embodiments, CMA  108  is responsive to a communicatively coupled receiver to perform the functions described herein. According to some embodiments, CMA  108  may well be implemented in hardware, software, firmware and/or any combination thereof. 
     Example CMA Operation 
     Turning to  FIG. 3 , a flow chart of an example method for utilizing the non-uniform codebook(s) introduced above is generally presented, according to one embodiment. The example method of  FIG. 3  begins with block  302  wherein the code management agent (CMA)  108  selects one or more codebook(s). According to one embodiment, the codebook may be selected from a pre-populated plurality of codebooks, or dynamically generated in accordance with the teachings of the Lin application (incorporated herein). 
     In block  304 , CMA  108  may selectively re-order the uniform codebook, introduced above. According to one embodiment, CMA  108  may arrange the codebook as follows: take any codeword c 0 , perform a unitary rotation or reflection G, such that G·c 0 =[1, 0, . . . , 0] T . An equivalent codebook may be formed by the global operation of G on every codeword of
 
 C ( m,N ) C ′( m,N )= G·C ( m,N )
 
     According to one embodiment, CMA  108  may order the codewords according to the magnitude of the first element |c i (1)|. An example of C(2,12) is provided in the following table (Table 1): 
     
       
         
               
               
               
               
             
           
               
                   
               
             
             
               
                 1.0000 + 0.0000i 
                  0.8507 + 0.0000i 
                 0.8507 − 0.0000i 
                 0.8507 − 0.0000i 
               
               
                    0 − 0.0000i 
                 −0.3599 − 0.3832i 
                 0.0659 + 0.5216i 
                 0.5164 + 0.0985i 
               
               
                 0.8507 + 0.0000i 
                  0.8507 + 0.0000i 
                 0.5257 − 0.0000i 
                 0.5257 − 0.0000i 
               
               
                 0.2532 − 0.4607i 
                 −0.4757 + 0.2239i 
                 0.5824 + 0.6200i 
                 −0.1067 − 0.8439i  
               
               
                 0.5257 + 0.0000i 
                  0.5257 − 0.0000i 
                 0.5257 − 0.0000i 
                 0.0000 + 0.0000i 
               
               
                 −0.8356 − 0.1593i  
                 −0.4097 + 0.7455i 
                 0.7697 − 0.3623i 
                 −0.9967 − 0.0818i  
               
               
                   
               
             
          
         
       
     
     A graphic display of these codewords is shown in  FIG. 4 . In accordance with the graphical representation of  FIG. 4 , the x, y, z coordinates are real(c i (2)), imag(c i (2)) and abs(c i (1)), respectively. It is worth pointing out that the Stiefel manifold of complex 2-D space is not the same as the real 3-D unit sphere surface. Therefore, the codewords may not populate the sphere surface uniformly. 
     The vector along the positive y-axis depicts the first codeword. The next five codewords form a “polar cap” near the first codeword. In the tracking mode mentioned above, the beamforming matrix can be quantized by the codewords in the “polar cap,” thus reducing the need to search the full codebook. This particular ordering of the codewords reduces the quantization complexity in the tracking mode. Furthermore, the ordering of the codebook also enables a flexible micro-architecture implementation of the quantization process. In this illustrated example, the circuit only needs to search the first six codewords to guarantee beamforming convergence when channel changes slowly, while a higher-performance device can implement full searching complexity for faster convergence. 
     As introduced above, in a stationary channel condition, the final accuracy of the beamforming only depends on the codewords density near the polar cap. Accordingly, CMA  108  selectively improves the codebook by introducing a denser “polar cap” for tracking purpose, block  306 . Just such an example is provided in Table 2, below, in which the codebook C NU (2,12+4) is introduced in which an extra m codewords (e.g., in which m is 4 in this example) near the “north pole” is added: 
     
       
         
               
               
               
               
             
           
               
                   
               
             
             
               
                 1.0000 + 0.0000i 
                 0.9962 
                  0.9962 
                 0.9962 
               
               
                    0 − 0.0000i 
                     0 + 0.0872i 
                 −0.0872 
                    0 − 0.0872i 
               
               
                 0.9962 
                  0.8507 + 0.0000i 
                 0.8507 − 0.0000i 
                 0.8507 − 0.0000i 
               
               
                 0.0872 
                 −0.3599 − 0.3832i 
                 0.0659 + 0.5216i 
                 0.5164 + 0.0985i 
               
               
                 0.8507 + 0.0000i 
                  0.8507 + 0.0000i 
                 0.5257 − 0.0000i 
                 0.5257 − 0.0000i 
               
               
                 0.2532 − 0.4607i 
                 −0.4757 + 0.2239i 
                 0.5824 + 0.6200i 
                 −0.1067 − 0.8439i  
               
               
                 0.5257 + 0.0000i 
                  0.5257 − 0.0000i 
                 0.5257 − 0.0000i 
                 0.0000 + 0.0000i 
               
               
                 −0.8356 − 0.1593i  
                 −0.4097 + 0.7455i 
                 0.7697 − 0.3623i 
                 −0.9967 − 0.0818i  
               
               
                   
               
             
          
         
       
     
     A graphical representation of such a non-uniform codebook is presented with reference to  FIG. 5 . In accordance with the illustrated example of  FIG. 5 , the graphical representation of the codebook shows the additional m-codewords (4) codewords (in black) clustered near the first codewords. 
     Having generated the non-uniform codebook, CMA  108  may selectively quantize the non-uniform codebook for feedback to a remote communications device (e.g.,  102 ), block  308 , as the explicit feedback, closed-loop MIMO process continues. 
     Turning to  FIG. 6 , a flow chart of an example method for generating a hierarchical codebook is presented, according to one embodiment. In block  602 , CMA  108  selects a first codebook. According to one embodiment, the first codebook is selected for coarse quantization. According to one embodiment, the coarse codebook has N c  vectors and the vectors have a dimension M. If the entries of channel matrix are independently and identically distributed, it may be desirable that the vectors are uniformly distributed as much as possible on a M-dimensional complex Stiefel manifold (similar to unit sphere). Otherwise, the vectors may not be uniformly distributed. 
     In block  604 , CMA  108  selects a second and/or subsequent codebook(s). According to one embodiment, the second codebook is selected for fine quantization around, e.g., a selected center. 
     In block  606 , CMA  108  may concatenate at least subsets of each of the selected first and second (and/or subsequent) codebooks to form a hierarchy codebook. Although the concatenated codebook does not provide the best performance for a given feedback overhead, it enables low-complexity quantization and scalable feedback resolution. In addition, since the beamforming matrix approaches to identity matrix after several feedbacks, the station may only use ring codebooks without vector codebooks for the quantization of some vectors in slow fading. This reduces the feedback overhead for tracking the beamforming matrix. 
     A graphical representation of an example hierarchy codebook is presented with reference to  FIG. 7 . As shown, for each vector of the coarse codebook, a fine codebook is defined. The vectors of the fine codebook (denoted as r j s) surround select vector(s) of the coarse codebook (denoted as v i ). The fine codebook may be dynamically generated according to v i  of the co-pending Lin application to reduce storage complexity. The fine vector r j s may populate a cap, or a ring, or other shape on the manifold. The profile size of the fine codebook can be dynamically adjusted during the tracking in order to reduce quantization error. For example, the initial feedback may employ a large profile size because the quantization error due to coarse codebook is large and the latter tracking feedback may use a small one because the beamforming matrix is close to identity matrix. 
     An example of a fine codebook is as follows. The fine vectors r j s of the coarse vector v i  are located on a M−1 (complex) dimensional ring (or circle) having a center that is the M—(complex) dimensional v 1  and the plane holding the ring is perpendicular to the vector v i  as shown in  FIG. 7 . As used herein, the vector v i  may have M—complex dimensions or 2M real dimensions. The radius of the ring can be dynamically adjusted to reduce quantization error. The fine vectors can be computed as: 
                       r   j     =       F   i     ⁡     [           cos   ⁢           ⁢   θ               sin   ⁢           ⁢   θ   ⁢           ⁢     f   j             ]         ,           (   11   )               
in which θ is the angle between r j  and v i ; F l =I−2 w i w i   H  is the Householder reflection matrix of
 
               v   i     ;       w   i     =         v   i     -     e   1                v   i     -     e   1                      
and e 1 =[1, 0, . . . , 0] T ; f j  is a unit M−1 dimensional vector for the j-th vector on the ring. Since F i  is unitary and its first column is v i , all the columns except the first form the plane orthogonal to v i , which holds the ring. Since the Householder matrix is easy to compute, this scheme is computationally efficient.
 
     In general, the matrix F i  can be substituted by any other unitary matrix that the first column is v i . For an example, F i  can be replaced by Bi in (10). This may enable an implementation using CORDIC algorithms. The vectors f j s are obtained from search as: 
                       {     f   j     }       j   =   1       N   f       =         arg   ⁢           ⁢   max             {       f   ~     j     }       j   =   1       N   f       ·            f   ~     j            =   1       ⁢       (       min     k   ,     l   =   1     ,   …   ⁢           ,     N   I     ,     k   ≠   l         ⁢              cos   2     ⁢     θ   0       +       sin   2     ⁢     θ   0     ⁢       f   ⋒     k   H     ⁢       f   ⋒     i                )     .               (   11   )               
According to one embodiment, the search increases (e.g., substantially maximizes) the distance between the nearest two vectors that has the general form
 
               [           cos   ⁢           ⁢     θ   0                 sin   ⁢           ⁢     θ   0     ⁢       f   ⋒     j             ]     .         
Since the search result is not sensitive to θ 0 , which determines the ring radius, fine codebooks with different radius can be dynamically generated by keeping f j  the same and changing θ in (10). In the search of (11), θ 0  can be determined from the statistics of the quantization error. For the quantization of 4.times.1 unit, complex vector, θ 0  is about 15 degrees and θ is about 20 degrees for the initial feedback. The radius θ can usually be reduced for the subsequent tracking feedbacks. For OFDM system, θ can remain constant for all subcarriers for one feedback.
 
     According to one embodiment, the fine codebook is formed by the center vector, v i  and the ring vectors, r j , for j=1, . . . , N f . The total number of fine codebook vectors is N f +1, which can be a power of 2. 
     For another example, the fine codebook may not only have codeword vectors on the ring. Instead, the fine codeword vectors may spread out the polar cap that has the coarse codebook vector as center and ring as boundary. The fine vectors may be uniformly distributed in the cap or may have a higher density as get closer to the center. The distribution can be obtained by optimizing the quantization accuracy (i.e., reducing quantization error) for a given feedback overhead. 
     As introduced above, CMA  108  may concatenate the first (coarse) codebook with one or more subsequent (fine) codebook(s), block  606 , prior to quantization and feedback to a remote communications device, block  608 . It should be appreciated that the concatenation of a coarse codebook with a fine codebook reduces quantization error of the coarse codebook at the cost of additional feedback overhead for the fine codebook. If the resolution of the concatenated codebook is not enough, it can further concatenate another fine codebook, in which the vector of the first concatenated codebook is the center of the second concatenated codebook. 
     In the tracking mode introduced above, the cumulated beamforming matrix is close to identity, the quantization is only needed to be around [1 0, . . . , 0] T  for each Householder vector. Therefore, CMA  108  may rotate the whole coarse codebook so that one codeword vector is [1 0, . . . , 0] T . This rotation reduces quantization error for tracking mode. The rotation is not, however, desirable from peak-power viewpoint because it may put all transmission power on one antenna. When the beamforming matrix observed at the receiver, {circumflex over (V)} 3  in the copending Lin application, approaches identity matrix, the center can be fixed at [1 0, . . . , 0] T  and the coarse quantization may be skipped. Only fine quantization and the corresponding feedback need be employed, thereby reducing computational complexity and feedback overhead. This simplification is referred to as localization. Because the statistic of quantization error is different for different Householder vectors and different feedbacks, concatenation, localization, and radius adjustment are employed for each Householder vector for each feedback. 
     To illustrate, assume for example that a transmitter has 4 antennas and a receiver has 3 antennas. For the initial feedback, the 6, 5, and 4 quantization bits are employed for the coarse quantization of 4-, 3-, and 2-(Householder) vectors respectively, and 3 and 4 bits are employed for the fine quantization for 4- and 3-vectors to enhance resolution respectively having a radius θ that is 20 degrees for both. For the second feedback, the coarse quantization of 4-vector is skipped. The radius is reduced to 15 degrees for 4- and 3-vectors&#39; fine codebooks. 
     Example Communication Device Architecture 
     Having introduced the communication environment and operating characteristics of CMA  108  with respect to  FIGS. 1 through 7 , above, reference is now directed to  FIG. 8  which provides an example electronic-device architecture within which the CMA  108  may be practiced. 
       FIG. 8  illustrates a block diagram of an example architecture of an electronic device within which the teachings of the present invention may be practiced, according to one embodiment. Electronic device  800  is depicted comprising one or more antennae, an radio frequency (RF) front end (RFE)  802 , a baseband processor  804 , one or more network interface(s)  406 , one or more processor(s)  808  (e.g., application and/or general-purpose processors), and memory  810 . According to embodiments of the invention, device  800  may well implement one or more aspects of the code management agent (CMA)  108  and/or the data structures themselves introduced above. 
     In some embodiments, electronic device  800  may represent a system that includes one or more of an access point, a mobile station, a base station, and/or a subscriber unit, and may include other circuits. For example, in some embodiments, electronic device  800  may be a computer, such as a personal computer, a workstation, or the like, that includes an access point or mobile station as an integral and/or peripheral element. Further, electronic device  800  may include a series of devices that are coupled together in a network. 
     In operation, device  800  may send and receive signals using one or more of the antennas, wherein the signals are processed by the various depicted elements. As used herein, the antennae may be an antenna array or any type of antenna structure that supports MIMO processing. According to one embodiment, such antennae are substantially omnidirectional antennae, but the scope of the invention is not limited in this regard. Device  800  may operate in partial or complete compliance with a wireless-network standard such as, e.g., the 802.11 or 802.16 standards introduced above. 
     According to one embodiment, the RF front end  802  may be selectively coupled to one or more of the antennae to interact with a wireless network. RF front end  802  may include circuitry to support the transmission and reception of radio frequency (RF) signals. For example, in some embodiments, RF front end  802  may include an RF receiver to receive signals and perform one or more processing tasks, such as low-noise amplification (LNA), filtering, frequency conversion or the like. Further, in some embodiments, RFE  802  may include transform mechanisms and beamforming circuitry to support MIMO signal processing. Also, for example, in some embodiments, RFE  802  may include circuits to support frequency up-conversion, and an RF transmitter. 
     Baseband processor(s)  804  may be a processor with hardware, software and/or firmware (or, combinations thereof) to perform baseband processing. Baseband processor may well be combined with or implemented by processor  808 . 
     Processor  808  may, read instructions and data from memory  810  and perform actions in response thereto. For example, processor  808  may access instructions from memory  810  and perform method embodiments of the present invention, such as, e.g., method  300  ( FIG. 2 ), method  600  ( FIG. 6 ) and/or other methods described herein. In this regard, processor  808  is intended to represent any type of processor, including but not limited to, a microprocessor, a digital signal processor, a microcontroller, or the like. 
     Memory  810  represents an article that includes a machine-readable medium. For example, memory  810  represents a random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), read only memory (ROM), flash memory, or any other type of article that includes a medium readable by processor  808 . Memory  810  may store instructions for to dynamically generate and/or utilize the non-uniform and/or hierarchical codebooks introduced above. Alternatively, such instructions may well be integrated within and/or provided to baseband processor  804 . 
     Network interface  806  may provide communications between electronic device  800  and other systems. For example, in some embodiments, electronic device  800  may be an access point that utilizes network interface  806  to communicate with a wired network or to communicate with other access points. In some embodiments, electronic device  800  may be a network interface card (NIC) that communicates with a computer or network using a bus or other type of port. 
     As used herein, embodiments of CMA  108  may well be implemented in one or more of RFE  802 , baseband processor  804 , processor(s)  808 , and/or combinations thereof. As introduced above, CMA  108  may well be implemented in hardware, software, firmware or combinations thereof. 
     Although the various elements of device  800  are depicted as disparate elements in  FIG. 8 , embodiments are envisioned that may combine one or more elements, or that may contain more elements. For example, the circuitry of processor  808 , memory  810 , network interface  806 , and baseband processor  804  may well be integrated into a single integrated circuit. Alternatively, memory  810  may be an internal memory within baseband processor  804  or processor  808 , or may be a microprogram control store within processor  810 . In some embodiments, the various elements of device  400  may be separately packaged and mounted on a common circuit board. In other embodiments, the various elements are separate integrated circuit dice packaged together, such as in a multi-chip module, and in still further embodiments, various elements are on the same integrated circuit die. 
     Alternate Embodiment(s) 
       FIG. 9  illustrates a block diagram of an example storage medium comprising content which, when invoked, may cause an accessing machine to implement one or more aspects of the codebook management agent  108  and/or associated methods  300  and/or  600 , and/or associated data structures (e.g., codebooks). In this regard, storage medium  900  may include content  902  (e.g., instructions, data, or any combination thereof) which, when executed, causes an accessing appliance to implement one or more aspects of the codebook management agent  108  described above. 
     The machine-readable (storage) medium  900  may include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, magnet or optical cards, flash memory, or other type of media/machine-readable medium suitable for storing electronic instructions. Moreover, the present invention may also be downloaded as a computer-program product, wherein the program may be transferred from a remote computer to a requesting computer by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem, radio or network connection). As used herein, all of such media is broadly considered storage media. 
     It should be understood that embodiments of the present invention may be used in a variety of applications. Although the present invention is not limited in this respect, the circuits disclosed herein may be used in many apparatuses such as in the transmitters and receivers of a radio system. Radio systems intended to be included within the scope of the present invention include, by way of example only, wireless local area networks (WLAN) devices and wireless wide area network (WWAN) devices including wireless network interface devices and network interface cards (NICs), base stations, access points (APs), gateways, bridges, hubs, cellular radiotelephone communication systems, satellite communication systems, two-way radio communication systems, one-way pagers, two-way pagers, personal communication systems (PCS), personal computers (PCs), personal digital assistants (PDAs), sensor networks, personal area networks (PANs) and the like, although the scope of the invention is not limited in this respect. Such devices may well be employed within any of a variety of embodiments disclosed herein. 
     Embodiments of the present invention may also be included in integrated circuit blocks referred to as core memory, cache memory, or other types of memory that store electronic instructions to be executed by the microprocessor or store data that may be used in arithmetic operations. In general, an embodiment using multistage domino logic in accordance with the claimed subject matter may provide a benefit to microprocessors, and in particular, may be incorporated into an address decoder for a memory device. Note that the embodiments may be integrated into radio systems or hand-held portable devices, especially when devices depend on reduced power consumption. Thus, laptop computers, cellular radiotelephone communication systems, two-way radio communication systems, one-way pagers, two-way pagers, personal communication systems (PCS), personal digital assistants (PDA&#39;s), cameras and other products are intended to be included within the scope of the present invention. 
     The present invention includes various operations. The operations of the present invention may be performed by hardware components, or may be embodied in machine-executable content (e.g., instructions), which may be used to cause a general-purpose or special-purpose processor or logic circuits programmed with the instructions to perform the operations. Alternatively, the operations may be performed by a combination of hardware and software. Moreover, although the invention has been described in the context of a computing appliance, those skilled in the art will appreciate that such functionality may well be embodied in any of number of alternate embodiments such as, for example, integrated within a communication appliance (e.g., a cellular telephone). 
     In the description above, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without some of these specific details. In other instances, well-known structures and devices are shown in block diagram form. Any number of variations of the inventive concept is anticipated within the scope and spirit of the present invention. In this regard, the particular illustrated example embodiments are not provided to limit the invention but merely to illustrate it. Thus, the scope of the present invention is not to be determined by the specific examples provided above but only by the plain language of the following claims.