Patent Publication Number: US-10784899-B2

Title: Method and apparatus for determining scaling factors in fixed-point decoder

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
     This disclosure claims the benefit of copending, commonly-assigned U.S. Provisional Patent Applications Nos. 62/795,876, filed Jan. 23, 2019, and 62/854,844, filed May 30, 2019, each which is hereby incorporated by reference herein in its respective entirety. 
    
    
     FIELD OF USE 
     This disclosure relates to determination of scale factors in fixed-point decoder circuitry. More particularly, this disclosure relates to dynamic scaling of data representations in fixed-point error-correcting decoders used for data transmission. 
     BACKGROUND 
     The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the inventors hereof, to the extent the work is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted to be prior art against the subject matter of the present disclosure. 
     Many communication systems use some form of error correcting coding for data transmission. For example, a transmitter may use an error correcting encoding operation to add parity or other bits in addition to the actual data bits, and a receiver performs a reverse error correcting decoding operation to recognize the portion of the actual data bits from the received data bits. At the receiver, decisions regarding the received data bits are represented as log-likelihood ratios (LLRs), which are then sent to a decoder. A high LLR magnitude corresponds to high reliability of the respective data bit—i.e., the data bit is less affected by channel noise and is more likely to be accurately decoded. On the other hand, a low LLR magnitude (e.g., close to zero) corresponds to low reliability—i.e., the received data bit can be ambiguous for decoders. The LLR values corresponding to received data bits at a receiver may vary significantly, due to varying channel conditions, different modulation and coding schemes (MCSs), changing signal power level of the received signal, and/or the like. Thus, it remains challenging for a decoder to maintain decoding accuracy for certain data bits, especially when the magnitudes of the LLR values are relatively low (i.e., close to zero). 
     SUMMARY 
     According to implementations of the subject matter of this disclosure, a method of decoding data representations derived from a communications channel includes receiving data bits corresponding to encoded data in the communications channel, determining a set of data representations from the data bits, distributing the set of data representations into bins across a dynamic range to generate a distribution of the data representations, assigning a respective intermediate scale factor to each bin, deriving a set of moments from the intermediate scale factors, combining the moments into a scaling factor, scaling the data representations by the scaling factor, and sending the scaled data representations to a decoder. 
     In a first implementation of such a method, the determining a set of data representations from the data bits may include determining log-likelihood ratio (LLR) values from the data bits. 
     In a second implementation of such a method, the determining a set of data representations from the data bits may include determining values from the data bits based on channel estimates. 
     In a third implementation of such a method, the distributing the set of data representations may include generating a histogram. 
     In a fourth implementation of such a method, the distributing the set of data representations may include generating a cumulative distribution function. 
     A fifth implementation of such a method further includes, when the data bits are encoded with a low-density parity-check (LDPC) code, adjusting the distribution based on parameters of the data bits. 
     In a variant of the fifth implementation, the adjusting the distribution based on parameters of the data bits may include adjusting the distribution based on at least one of (a) a number of shortening bits per codeword, (b) a number of punctured bits per codeword, and (c) a number of repeated bits per codeword. 
     In a sixth implementation of such a method, the combining the moments may include combining the moments in a weighted summation. 
     In a seventh implementation of such a method, the combining the moments may include applying the moments to a machine learning model. 
     An eighth implementation of such a method, may further includes monitoring channel characteristics of different channels, where at least one of the assigning, the deriving and the combining is performed differently for different channels according to the channel characteristics, and at least one channel has a different scaling factor than other channels. 
     A ninth implementation of such a method may further include discarding data representations below a noise threshold, where the intermediate scale factors are based on noise variance. 
     In a tenth implementation of such a method, the combining the moments into a scaling factor may include grouping the bins into ranges, and deriving separate scaling factors for each range. 
     An eleventh implementation of such a method may be iterative and may include scaling down the data representations on later iterations to avoid saturation. 
     A twelfth implementation of such a method may further include applying a correction factor to update the scaling factor for later data bits in a packet. 
     According to implementations of the subject matter of this disclosure, apparatus for decoding data representations derived from a communications channel includes a receiver configured to receive data bits corresponding to encoded data in the communications channel, processing circuitry configured to determine a set of data representations from the data bits, distribute the set of data representations into bins across a dynamic range to generate a distribution of the data representations, assign a respective intermediate scale factor to each bin, derive a set of moments from the intermediate scale factors, combine the moments into a scaling factor, and scale the data representations by the scaling factor, and decoding circuitry configured to decode scaled data representations. 
     In a first implementation of such apparatus, the processing circuitry may be configured to determine a set of log-likelihood ratio (LLR) values from the data bits. 
     In a second implementation of such apparatus, the processing circuitry may be configured to determine a set of values from the data bits based on channel estimates. 
     In a third implementation of such apparatus, the processing circuitry may be configured to, when the data bits are encoded with a low-density parity-check (LDPC) code, adjust the distribution based on parameters of the data bits. 
     In a first variant of that third implementation, the processing circuitry may be configured to adjust the distribution based on at least one of (a) a number of shortening bits per codeword, (b) a number of punctured bits per codeword, and (c) a number of repeated bits per codeword. 
     In a second variant of that third implementation, the processing circuitry may be configured to combine the moments in a weighted summation. 
     In a third variant of that third implementation, the processing circuitry may be configured to apply the moments to a machine learning model. 
     In a fourth implementation of such apparatus, the processing circuitry may be further configured to monitor channel characteristics of different channels, where the processing circuitry may be configured to perform at least one of the assigning, the deriving and the combining is performed differently for different channels according to the channel characteristics, and the processing circuitry may be configured to assign a different scaling factor at least one channel as compared to other channels. 
     In a fifth implementation of such apparatus, the processing circuitry may be further configured to discard data representations below a noise threshold, and base the intermediate scale factors on noise variance. 
     In a sixth implementation of such apparatus, the processing circuitry may be further configured to combine the moments into a scaling factor by grouping the bins into ranges, and deriving separate scaling factors for each range. 
     In a seventh implementation of such apparatus, the processing circuitry may be further configured to operate iteratively, and to scale down the data representations on later iterations to avoid saturation. 
     In an eighth implementation of such apparatus, the processing circuitry may be further configured to apply a correction factor to update the scaling factor for later data bits in a packet. 
     According to implementations of the subject matter of this disclosure, a method of decoding data representations derived from a communications channel includes receiving data bits corresponding to encoded data in the communications channel, determining a set of data representations from the data bits, scaling the data representations by a scaling factor to fit a dynamic range, sending the scaled data representations to a decoder, iteratively performing the sending until a stop condition is met, and scaling down the data representations on later iterations to avoid saturation. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Further features of the disclosure, its nature and various advantages, will be apparent upon consideration of the following detailed description, taken in conjunction with the accompanying drawings, in which like reference characters refer to like parts throughout, and in which: 
         FIG. 1  is a block diagram illustrating an example circuit structure of a wireless receiver employing LLR-based dynamic scaling, according to some implementations of this disclosure; 
         FIG. 2  is a flow diagram of a method, in accordance with implementations of the subject matter of this disclosure, for dynamically finding a scaling factor; 
         FIG. 3  is a flow diagram of a further method, in accordance with implementations of the subject matter of this disclosure, for dynamically finding a scaling factor, accounting for additional coding parameters; and 
         FIG. 4  is a flow diagram of a further method, in accordance with implementations of the subject matter of this disclosure, for dynamically finding a scaling factor, based on noise variance in the received signal. 
     
    
    
     DETAILED DESCRIPTION 
     A decoder, such as a low-density parity-check (LDPC) decoder, a binary convolution code (BCC) decoder, or any other binary combinatory decoder, is configured to decode a code block containing a plurality of data bits. As part of the decoding of received data bits, an LLR value of each data bit is generated, based on which the decoder decides whether the data bit is ‘0’ or ‘1’. For example, for each received data bit, the LLR may be calculated as: 
             LLR   =     log   ⁡     (       Probability   ⁢           ⁢   of   ⁢           ⁢   the   ⁢           ⁢   data   ⁢           ⁢   bit   ⁢           ⁢   being   ⁢           ⁢   equal   ⁢           ⁢   to   ⁢           ⁢   0       Probability   ⁢           ⁢   of   ⁢           ⁢   the   ⁢           ⁢   data   ⁢           ⁢   bit   ⁢           ⁢   being   ⁢           ⁢   equal   ⁢           ⁢   to   ⁢           ⁢   1       )             
Using that definition, a positive LLR indicates a greater probability of the data bit being equal to 0, while a negative LLR indicates a greater probability of the data bit being equal to one. The magnitude of the LLR provides a reliability of the estimation—e.g., |LLR|=0 indicates the estimation is unreliable as the data bit has an equal chance of being ‘0’ or ‘1’; and |LLR| being a higher value indicates that a conclusion that the data bit value is ‘0’ or ‘1’ is more reliable.
 
     Fixed-point LLR processing circuitry at a receiver may include a certain number of bits to represent the LLR values. If all of the LLR values have relatively low magnitudes, the more significant bits of the LLR processing circuitry could go unused while the relatively low LLR magnitudes are represented by a smaller number of bits, providing lower resolution in the calculations. Therefore, it is known to configure the LLR processing circuitry to scale the LLR values corresponding to the received data bits such that the scaled LLR values occupy a maximum value range defined by the number of data bits available to represent the LLR values. For example, if 10 bits are available to represent LLR values (for a maximum magnitude of 512), but all LLR values in a particular received signal have a magnitude of 2 or less, scaling (i.e., multiplying) all LLR values by 256 would provide greater resolution without causing any single LLR value to overflow the available number of bits. 
     The distribution of LLR values even within the same data packet can vary with channel conditions, MCS, the received signal power level, or the like. Finding a particular scaling factor for all received data bits across all different scenarios can be difficult. 
     In some implementations, it may not be possible to determine actual LLR values. In such cases, other data representations may be used. For example, in U.S. Patent Publication 2019/0222225, which is hereby incorporated by reference herein in its entirety, channel estimates, which may be based on long training fields (LTFs), may be used in place of LLRs. 
     In accordance with implementations of the subject matter of this disclosure, scaling factors may be obtained that can be used across all data representations (whether those data representations are LLR values or other data representations) corresponding to data bits in a received packet. Alternatively, in a nonlinear approach, the LLR values may be broken into groups, with different scaling factors applied to different groups, based, e.g., on channel conditions, MCS, received signal power level, etc. 
     Implementations of the subject matter of this disclosure are dynamic, in that the scaling factor can be changed over time as channel conditions change. However, scaling factors should not change during decoding of a codeword. Therefore, in implementations of the subject matter of this disclosure, each codeword is decoded using a scaling factor derived during processing of a previous codeword. If, during processing of a codeword, it is determined that the scaling factor should change, then the change is applied at the beginning of the next codeword. Indeed, as additional packets of the current codeword are processed, the scaling factor may change more than once, but a scaling factor will take effect only at a codeword boundary; therefore, some scaling factors that are derived may never take effect. Although a scaling factor will not take effect when derived, but only at the next codeword boundary, the effect on decoding of the current codeword, using a previously-derived scaling factor, is not expected to be significant except in rare circumstances of an abrupt change in channel conditions. 
       FIG. 1  is a block diagram illustrating an example circuit structure of a wireless receiver employing LLR-based dynamic scaling, according to some implementations of this disclosure. A wireless receiver  100  is configured to be operated under a variety of wireless protocols, such as various versions of the IEEE 802.11 standard, or the like. The wireless receiver  100  includes a multiple-input multiple-output (MIMO) equalizer  101 , which is configured to quantize a received signal from a channel. For example, the received signal from the channel may include information such as, but not limited to, channel information  111 , a data signal  112 , information relating to the modulation scheme (e.g., the QAM size)  113 , the number of data streams  114  from the channel, or the like. 
     In such an implementation, the MIMO equalizer  101  may be configured to send quantized data bits to an LLR computation module  102 , which is in turn configured to calculate LLR values for each data bit, and to generate an LLR histogram based on the calculated LLR values 
     LLR computation module  102  is configured to send LLR values and/or LLR histogram information to a dynamic scaling module  103 , which is configured to determine a scaling factor based on the LLR histogram, as described in more detail below. The dynamic scaling module  103  may be configured to send the scaled LLR values to the decoder  104 . 
     An implementation, according to the subject matter of this disclosure, of a method  200  for dynamically finding the scaling factor in dynamic scaling module  103  is diagrammed in  FIG. 2 . First, at  201 , the entire dynamic range is divided into n+1 bins (b 0 , b 1 , b 2 , . . . , b n ). The value of n can be chosen based on various parameters of the system, including the accuracy required by the system—i.e., the more bins for are used, the greater the accuracy becomes. The bins can be distributed linearly or non-linearly (e.g., logarithmically). 
     At  202 , data is distributed into the aforementioned bins to create a histogram. The histogram can be created using known techniques such as distributing the least or most reliable bits of LLRs, or a combination of LLR bits of various reliabilities in various ratios, as set forth in copending U.S. patent application Ser. No. 15/792,348, filed Oct. 24, 2017, which is hereby incorporated by reference herein in its entirety. Alternatively, the histogram may be created from data representing channel-squared norms based on LLRs derived from long training fields, as set forth in above-incorporated U.S. Patent Publication 2019/0222225). Regardless of which of the foregoing techniques, or any other technique, is used, the LLRs from which the histogram is derived may be limited to LLRs corresponding to the codeword of interest—i.e., the codeword currently being decoded. The probability mass function (i.e., the fractional number of LLRs in each bin) may be represented as H i  (i=0, 1, 2, . . . , n). 
     At  203 , intermediate scale factors s i  (i=0, 1, 2, . . . , n) are assigned to each bin. The value of each of the scale factors s k  may be chosen as that number that would scale all LLRs over the desired range if all of the LLR values in the histogram were found in the bin b k . Optionally, an offset can be added to that value. If the bins are linearly spaced (see above), the intermediate scale factors s i  can be multiples of a scalar value. If the bins are logarithmically spaced (see above), the intermediate scale factors s i  can be powers of a scalar value. Alternatively, the intermediate scale factors s i  can be derived empirically based on the system setup. 
     After the intermediate scale factors s i  have been derived, at  204 , the central moments μ i  of the intermediate scale factors s i  are derived: 
               μ   i     =       (       ∑     k   =   0     n     ⁢         (       s   k     -     μ   1       )     i     *     H   k         )       1   i             
As is known, the first central moment μ 1  is the mean:
 
               μ   1     =       ∑     k   =   0     n     ⁢       s   k     *     H   k               
The second central moment μ 2  is the variance σ 2 , where σ is the standard deviation. The third and fourth central moments μ 3  and μ 4  define skewness and kurtosis, respectively.
 
     For linearly spaced bins [M(n−1), Mn]: 
     
       
         
           
             
               μ 
               i 
             
             = 
             
               
                 ( 
                 
                   
                     ∑ 
                     
                       k 
                       = 
                       0 
                     
                     n 
                   
                   ⁢ 
                   
                     
                       
                         ( 
                         
                           
                             
                               s 
                               k 
                             
                             M 
                           
                           - 
                           
                             μ 
                             1 
                           
                         
                         ) 
                       
                       i 
                     
                     * 
                     
                       H 
                       k 
                     
                   
                 
                 ) 
               
               
                 1 
                 i 
               
             
           
         
       
     
     For logarithmically spaced bins [M (n−1) , M n ]: 
     
       
         
           
             
               μ 
               i 
             
             = 
             
               
                 ( 
                 
                   
                     ∑ 
                     
                       k 
                       = 
                       0 
                     
                     n 
                   
                   ⁢ 
                   
                     
                       
                         ( 
                         
                           
                             
                               log 
                               M 
                             
                             ⁢ 
                             
                               s 
                               k 
                             
                           
                           - 
                           
                             μ 
                             1 
                           
                         
                         ) 
                       
                       i 
                     
                     * 
                     
                       H 
                       k 
                     
                   
                 
                 ) 
               
               
                 1 
                 i 
               
             
           
         
       
     
     After the central moments μ i  of the intermediate scale factors s i  have been derived, at  205  the scaling factor may be determined as a weighted sum of the central moments μ i : 
             α   +       ∑     i   =   1     N     ⁢       β   i     ⁢     μ   i               
where α is the mean error deviation, and the values β i  are weights, which can be determined for each system based on empirical analysis.
 
     As noted above, this method may be used for any binary combinatory decoder including a binary convolution code (BCC) decoder, as well as a low-density parity-check (LDPC) decoder. For example, for one sample WLAN configuration using LDPC coding, α=−1.6, N=2, β 1 =1, and β 2 =0.6, so that the scaling factor is:
 
−1.6+μ 1 +0.6 μ 2  
 
However, this is just an example for one particular LDPC WLAN configuration.
 
     In addition, in the case of LDPC codes in particular, there may be additional parameters that affect the LLR values and therefore the formation of the histogram. Specifically, the following LDPC coding parameters: 
     Number of shortening bits per codeword; 
     Number of punctured bits per codeword; and 
     Number of repeated bits per codeword may influence the LLR histogram and therefore the LLR scaling factors. 
       FIG. 3  is a diagram showing one method  300  in accordance with implementations of the subject matter of this disclosure to account for the listed LDPC coding parameters. At  301 , the histogram is scaled so that the total number of entries in the scaled histogram is equal to the number of transmitted bits per codeword, which is equal to the codeword length in bits, minus the number of shortening bits per codeword, minus the number of punctured bits per codeword, plus the number of repeated bits per codeword. This reflects the number of bits actually transmitted over the air. Specifically, if the number of entries in the histogram is greater than the number of transmitted bits per codeword, then the count in each bin of the histogram is multiplied by the ratio of the number of transmitted bits per codeword to the number of entries in the histogram; if the number of entries in the histogram is less than the number of transmitted bits per codeword, then the count in each bin of the histogram is multiplied by the ratio of the number of entries in the histogram to the number of transmitted bits per codeword. 
     After the scaling operation at  301 , at  302 , the number of shortened bits per codeword is added to the LLR count in the bin representing the highest LLR magnitude (because shortened bits are considered to have very high—essentially infinite—LLR magnitudes). At  303 , the number of punctured bits per codeword is added the LLR count in the bin that represents the lowest LLR magnitude (because punctured bits are considered to have very low—essentially zero—LLR magnitudes). 
     The number of repeated bits per codeword may be accounted for in one of at least two ways, shown as alternatives at  304  and at  314 - 316 , depending on whether the LLRs in question are data LLRs or long-training-field-derived LLRs. At  304 , for data LLRs, the LLRs of repeated bits are combined (e.g., added together) before the histogram is computed, and then the combined LLRs are used to compute the histogram. 
     At  314 , for long-training-field-derived LLRs, the histogram is computed initially and then n LLRs, where n is equal to two times the number of repeated bits per codeword, are drawn from the histogram. n bins are selected probabilistically, with the probability of selection of any particular bin being proportional to its LLR count. For each bin that is selected, an LLR value is drawn uniformly randomly from the range of values found in that bin—i.e., a random value from that bin will be selected, with each value in the bin having an equal probability of selection. At  315 , the n LLRs are paired and combined, yielding n/2 combined LLRs. Pairing can be performed randomly or, because the process of the drawing the n LLRs is itself random, neighboring LLRs can be paired and combined without further selection. At  316 , the n/2 combined LLRs are added to their respective bins, resulting in a revised histogram. 
     From  304  or  316 , flow returns, for example, to  203 . 
     In a variation in accordance with implementations of the subject matter of this disclosure to account for the LDPC coding parameters listed above, the coding parameters themselves may be considered as additional input parameters of the scaling factor computation at, e.g.,  205 . For example, the three parameters—number of shortening bits per codeword, number of punctured bits per codeword, and number of repeated bits per codeword—may be designated as δ 1 , δ 2 , δ 3 . And the scaling factor can be determined as 
             α   =     α   +       ∑     i   =   1     N     ⁢       β   i     ⁢     μ   i         +       ∑     k   =   1     3     ⁢       γ   k     ⁢     δ   k                 
where the coefficients γ k  (as well as the coefficients a and β i ) may be dependent on the MCS (modulation and coding scheme) being used. For example, α, β i  and γ k , may be dependent on the modulation scheme in use (e.g., BPSK, QPSK, 16 QAM, 256 QAM, etc.) Similarly, α, β i  and γ k , may be dependent on the coding rate in use (e.g., ½, ⅔, ⅚, etc.).
 
     In at least one implementation, a machine learning approach is used to select a “best” scaling factor out of a number of possible scaling factors that all may be valid based on the various parameters. Because decoders such as LDPC decoders operate iteratively until a stopping condition is met, the “best” scaling factor may be defined as the scaling factor that results in the smallest number of LDPC iterations. If there is more than one scaling factor that meets that criterion, a rule may be used to select from among those scaling factors that meet the criterion. For example, the rule may be that of all scaling factors that result in the smallest number of LDPC iterations, the scaling factor whose value is intermediate the values of the other scaling factors that meet the criterion. The best scaling factor can be computed offline for certain cases, and can then be used as training data for a machine learning approach. 
     In some implementations, the feature set for a machine learning approach may include a histogram of the LLRs, the moments of the histogram, and the coding parameters. Support vector machines (SVMs) and neural networks are among the types of machine learning environments that can be used. The machine learning techniques can include linear regression or other cost functions to quantify the quality of curve fitting. For example, mean square error (MSE) can be used to obtain a least-squares solution. As noted above, training can be done offline and a best fit curve can be obtained for each given system. 
     Different machine learning models can be trained for different classes of channels. For example, channels may differ according to their channel quality and frequency selectivity, which can be derived from histogram parameters. For example, an adaptive white Gaussian noise (AWGN) type channel has LLRs concentrated in the higher value bins and has a low spread. On the other hand, a frequency selective channel may have more of a spread across the histogram, generally occupying the entire range. Therefore, different scaling models can be applied to different types of channels, as identified according to these or other classification techniques. Such a differential approach to different channel types may be applied for both LDPC decoding and BCC decoding. 
     Although the discussion so far has assumed that a single scaling factor is to be determined for, and applied to, the entire range of LLRs, a non-linear approach may be applied, where different scaling factors are applied to different ranges of LLRs. For example, if there is a wide variation in LLR values, the scaling factor used for the lower LLR values may cause saturation in the higher LLR values. But if a lower scaling factor is applied to prevent saturation in the higher LLR values, there may be a loss of available resolution in processing the lower LLR values. 
     As an example, suppose that the full range of LLR values may be partitioned into three subranges by values R 1  and R 2 . Three different scaling factors can be applied: 
     1. For 0≤|Data LLRs|&lt;R 1 , apply 
     
       
         
           
             Scaling 
             ⁢ 
             
                 
             
             ⁢ 
             
               factor 
               
                 [ 
                 1 
                 ] 
               
             
             ⁢ 
             
               = 
               
                 
                   α 
                   
                     [ 
                     1 
                     ] 
                   
                 
                 + 
                 
                   
                     ∑ 
                     
                       i 
                       = 
                       1 
                     
                     N 
                   
                   ⁢ 
                   
                     
                       β 
                       i 
                       
                         [ 
                         1 
                         ] 
                       
                     
                     ⁢ 
                     
                       μ 
                       i 
                     
                   
                 
                 + 
                 
                   
                     ∑ 
                     
                       k 
                       = 
                       1 
                     
                     3 
                   
                   ⁢ 
                   
                     
                       γ 
                       k 
                       
                         [ 
                         1 
                         ] 
                       
                     
                     ⁢ 
                     
                       δ 
                       k 
                     
                   
                 
               
             
           
         
       
     
     2. For R 1 ≤|Data LLRs|&lt;R 2 , apply 
     
       
         
           
             Scaling 
             ⁢ 
             
                 
             
             ⁢ 
             
               factor 
               
                 [ 
                 2 
                 ] 
               
             
             ⁢ 
             
               = 
               
                 
                   α 
                   
                     [ 
                     2 
                     ] 
                   
                 
                 + 
                 
                   
                     ∑ 
                     
                       i 
                       = 
                       1 
                     
                     N 
                   
                   ⁢ 
                   
                     
                       β 
                       i 
                       
                         [ 
                         2 
                         ] 
                       
                     
                     ⁢ 
                     
                       μ 
                       i 
                     
                   
                 
                 + 
                 
                   
                     ∑ 
                     
                       k 
                       = 
                       1 
                     
                     3 
                   
                   ⁢ 
                   
                     
                       γ 
                       k 
                       
                         [ 
                         2 
                         ] 
                       
                     
                     ⁢ 
                     
                       δ 
                       k 
                     
                   
                 
               
             
           
         
       
     
     3. For |Data LLRs|≥R 2 , apply 
               Scaling   ⁢           ⁢     factor     [   3   ]         =       α     [   3   ]       +       ∑     i   =   1     N     ⁢       β   i     [   3   ]       ⁢     μ   i         +       ∑     k   =   1     3     ⁢       γ   k     [   3   ]       ⁢     δ   k                 
where:
         α [j]  is the mean error deviation; and   β i   [j]  is the scale applied for μ i  for the range |Data LLRs|∈[R j−1 , R j ].       

     As discussed above, generally, larger scaling factors will be needed for lower LLR values while smaller scaling factors will be needed for higher LLR values. Thus, the general trend will be
 
Scale factor [k] ≥Scale factor [k+1] 
 
     The previous discussion of a linear approach, having one scaling factor for all LLR values, may be considered a special case of this non-linear approach in which the boundary value R 1  is infinite or has a maximum possible value. 
     In the non-linear approach, the scaling factors may be found using machine learning approaches similar to those used in the linear approach as described above. The parameters to be trained are {α [j] , β i   [j] , γ k   [j] } for each region, as well as the boundary values {R 1 , R 2 , . . . } with (R 1 &lt;R 2 &lt; . . . ). 
     In other implementations, as a variation of the foregoing methods of determining the scaling factor, the scaling factor could be determined based on noise variance in the received signal. One such implementation  400  is diagrammed in  FIG. 4 . 
     At  401 , an intermediate scale factor, similar to the intermediate scale factor discussed above, is determined based on noise variance in the received signal, with the scale factor being selected so that the noise level is approximately ‘1’. The scale factor may be a function f of the noise variance an. In one implementation f(σ n   2 )=√{square root over (σ n   2 )} (i.e., the standard deviation). More generally, the scale factor may be determined using a polynomial function of the noise variance: 
             scale_factor   =       γ   0     +       ∑     k   =   1     K     ⁢         γ   k     ⁡     (       σ   n   2       )       k       +       ∑     k   =   1     K     ⁢         γ     -   k       ⁡     (       σ   n   2       )         -   k                 
This also accounts for the coding parameters discussed above, with the polynomial coefficients determined by machine learning as discussed.
 
     At  402 , the intermediate scale factor is applied to the LLRs, and the scaled values are converted to integers using round/ceil/floor functions. Conversion to integer values further reduces the effect of noise on the values. Therefore, the LLRs should be able to be scaled without losing information content; non-zero LLRs should not be forced to zero, and higher LLRs should be less likely to become saturated. 
     At  403 , a range   is determined from a histogram or cumulative distribution function of the LLRs, based on the highest bin index which crosses a threshold that has been determined, e.g., through numerical analysis or machine-learning techniques. At  404 , one or more scaling factors are determined for the LLRs in this range, to meet the conditions set forth above—i.e., non-zero LLRs should not be forced to zero, and higher LLRs should be less likely to become saturated. This may be accomplished using a non-linear approach, with the region partitions and resultant scaling factors determined as described above. Alternatively, the region partitions and scaling factors may be based on a function of   and σ n   2 . 
     Regardless of the method used to determine the scaling factor or factors, various adaptations, shown as options at  206  or  405 , may be applied over time, as follows. 
     First, LLR magnitudes can be expected to increase after every iteration. Without correction, the higher LLRs will eventually saturate at a maximum value, reducing the effectiveness of higher LLRs in correcting weaker LLRs. Therefore, according to some implementations the LLRs are scaled downward after every iteration of the decoding process. This adaptive scaling could be based simply on the iteration count, or alternatively, the actual LLR values after each iteration can be examined, and scaled down to fit a desired range. 
     Second, a channel may vary over time. This may not matter for shorter packets, but if the channel variation is large enough, it may matter for longer packets. A scaling factor correction factor may be applied. The correction factor should be a function of the length of the packet. For example, the scaling factor determined as described above may be multiplied by a correction factor Γ(n), where n is the number of the symbol in the packet. As a simple example,
 
Γ( n )=α×n
 
where α is a fixed scalar value. However, the scaling factor should not be changed in the middle of a codeword. Thus, if a new scaling factor is derived based on the correction factor, the new scaling factor should not be applied until a codeword boundary is reached.
 
     Thus it is seen that fixed-point LLR processing circuitry for a receiver, with LLR scaling to maximize resolution without overflow, has been provided. 
     As used herein and in the claims which follow, the construction “one of A and B” shall mean “A or B.” 
     It is noted that the foregoing is only illustrative of the principles of the invention, and that the invention can be practiced by other than the described embodiments, which are presented for purposes of illustration and not of limitation, and the present invention is limited only by the claims which follow.