Abstract:
A method of estimating signal-to-noise ratio in a Viterbi decoder comprising: setting a threshold SNR value; determining a dependence on SNR of the average decoding path length; filling branch metrics matrix, minimal path metrics matrix, path metrics matrix and paths matrix with initial values; receiving packets from a communication channel; calculating the matrices that contains paths stored during operation of Viterbi algorithm in its rows, and a minimal path metrics matrix, including calculating an estimate of a decoding path length, where all the paths converge, based on the paths matrix; calculating current SNR estimate using an estimate of a decoding path length, based on results of previous steps; setting a decoder control signal to an active state if the current estimated SNR does not exceed the threshold, and to an inactive state otherwise; if the decoder control signal is in active state, the branch metrics matrix, the minimal path metrics matrix, the paths metrics matrix and the paths matrix are filled with the initial values; generating a decoded symbol; and repeating the steps on a next packet if one is available.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application is a continuation in part of PCT Application No. PCT/RU2010/000420, filed on Jul. 28, 2010, which claims priority to RU 2010123460, filed on Jun. 9, 2010, which are all incorporated by reference herein in their entirety. 
         [0002]    This application claims priority to RU 2010146690, filed on Nov. 17, 2010, which is incorporated by reference herein in its entirety. 
     
    
     BACKGROUND OF THE INVENTION 
       [0003]    1. Field of the Invention 
         [0004]    The invention generally relates to measuring signal-to-noise ratio (SNR) at an input of a Viterbi decoder and to systems with adaptive decoding of convolutional codes where current SNR value is taken into account. 
         [0005]    2. Description of the Related Art 
         [0006]    Convolutional coding is widely used in satellite data transmission channels, for example, in data transmission channels of the radio navigation satellite systems (Global Navigation Satellite Systems (GNSS): GPS L5, GPS L2C, Galileo), as well as in other communications systems to transmit differential GNSS corrections from geosynchronous orbit satellites (WAAS, EGNOS). 
         [0007]    There are several decoders for convolutional codes that apply Viterbi decoding algorithm (see, for example, U.S. Pat. Nos. 4,802,174; 4,905,317; 5,432,803; 5,390,198; 3,872,432; 4,240,156; 4,493,082; 4,500,994). 
         [0008]    Several techniques concerned with decoding using the Viterbi algorithm are disclosed in the following U.S. patents. In particular, the synchronization technique in such a decoder is disclosed in detail in U.S. Pat. No. 3,872,432. The soft decision technique is described in U.S. Pat. Nos. 4,240,156 and 4,493,082. The multi-rate branch metric processor using the soft decision technique is also disclosed in U.S. Pat. No. 4,500,994. 
         [0009]    These devices lack the capability of generating current input SNR values. 
         [0010]    U.S. Pat. No. 4,802,174 describes an apparatus for decoding convolutional codes comprising serially-connected a branch metrics calculation unit, a path metrics and path memory unit, decoded symbol generation unit, and minimal path metrics memory, path metrics and path memory connected to the path metrics and path memory unit, the decoder input being the input of branch metrics calculation unit, and the output of decoded symbol generation unit is the output. 
         [0011]    In the known implementations of Viterbi decoders the following operations are performed. 
         [0012]    At the beginning of the decoding branch metrics matrix, minimal path metrics matrix, path metrics matrix and path matrix are filled with initial values for example, all zeros). 
         [0013]    Decoding itself is implemented by performing the following operations at each decoding step: 
         [0014]    (a) receiving a symbols packet from communication channel; 
         [0015]    (b) calculating branch metrics matrix; 
         [0016]    (c) calculating path metrics matrix; 
         [0017]    (d) calculating paths matrix which in its rows contains paths stored during the operation of Viterbi algorithm; 
         [0018]    (e) calculating a minimal path metrics matrix; 
         [0019]    (f) generating a decoded symbol; 
         [0020]    (g) receiving and processing next packet of the symbols from communication channel if packet is available, otherwise finish the decoding. 
         [0021]    Conventional Viterbi decoders can be implemented as the following units connected in series: 
         [0022]    (i) a branch metrics calculation unit, 
         [0023]    (ii) a path metrics and paths calculation unit, and 
         [0024]    (iii) a decoded symbol generation unit. 
         [0025]    The following units are connected to the path metrics and paths calculation unit: 
         [0026]    (i) a minimal path metrics memory, 
         [0027]    (ii) a path metrics memory, and 
         [0028]    (iii) a paths memory. 
         [0029]    The decoder input is the input of the branch metrics calculation unit and the output of the decoder is the output of decoded symbol generation unit. 
         [0030]    However, there is a need for a system and method that provide a possibility for estimating current SNR value at the input of the decoder. 
       BRIEF SUMMARY OF THE INVENTION 
       [0031]    Accordingly, the present invention provides a system and method for estimating signal to noise ratio (SNR) that substantially obviate one or several of the disadvantages of the related art. 
         [0032]    The purpose of the proposed invention is achieved by an additional circuitry that estimates current SNR value, which can be used for estimating and indicating the quality of the communication channel, for generating an automatic repeat request of data packet within automatic repeat request communication channels, for selecting a channel with better communication quality in multichannel communication systems, for decoder synchronization, for calculating branch metrics in case of considering conditional probability distribution density parameters, and for some other purposes. 
         [0033]    Proposed methods and systems are based on estimating decoding path length, where all the paths converge. Decoder path length is, for example, the graph length on a trellis diagram from the current time instant to the step at which all the alternate paths converge into single path. In addition, the proposed methods and systems are based on the existing dependence of the average number of symbols in each paths matrix column, which are mismatched with the maximum likelihood symbol, estimate on SNR at the decoder input. 
         [0034]    The proposed methods and systems provide independence from the input signal magnitude; and provide a wider range of estimated values both for high and low SNRs compared to devices with direct bit error rate estimation (BER monitor). 
         [0035]    Conventional Viterbi decoder implementations include filling a branch metrics matrix, a minimal path metrics matrix, a path metrics matrix, a paths matrix with initial values. The first proposed method is different from the conventional ones in that: 
         [0036]    (i) a threshold SNR value is set, 
         [0037]    (ii) a functional dependence of the average decoding path length, where all the paths converge on SNR, is determined; 
         [0038]    (iii) the decoding path length estimate, where all the paths converge, which is based on the paths matrix, is calculated. This length and determined functional dependence are used for current SNR calculation; 
         [0039]    (iv) the decoder control binary signal is set to an active state, if the current SNR does not exceed the threshold, and to an inactive state, if current SNR exceeds the threshold; and 
         [0040]    (v) if the decoder control binary signal is in an active state, branch metrics matrix, minimal path metrics matrix, paths metrics matrix and paths matrix are filled with initial values. 
         [0041]    The second proposed method of estimating SNR at the input of the Viterbi decoder includes: 
         [0042]    (i) a threshold SNR value is set; 
         [0043]    (ii) functional dependencies of average relative number of symbols in a column, that do not match the maximum likelihood symbol in the same column, on SNR are determined for selected columns of the paths matrix; 
         [0044]    (iii) average relative number of symbols in a column, that do not match the maximum likelihood symbol in the same column, are calculated for selected columns of the paths matrix. These relative numbers and the determined functional dependencies are used for current SNR calculation; 
         [0045]    (iv) the decoder control binary signal is set to active state if current SNR does not exceed the threshold, and to inactive state if current SNR exceeds the threshold; and 
         [0046]    (v) if the decoder control binary signal is in active state, branch metrics matrix, minimal path metrics matrix, paths metrics matrix and paths matrix are filled with initial values. 
         [0047]    A decoder implementing the first proposed method, unlike the conventional ones, includes connected in series a decoding path length estimation unit, where all the paths converge and an SNR estimation unit. 
         [0048]    The input of the decoding path length estimation unit, where all the paths converge, is connected to the second output of paths memory, while the first output of the SNR estimation unit is connected to the first control input of branch metrics calculation unit and to the control input of path metrics and paths calculation unit, the second output of the SNR estimation unit is connected to the second control input of branch metrics calculation unit and serves as the second decoder output, where a signal corresponding to the current SNR estimate during decoder operation is generated. 
         [0049]    In the decoder implementing the second proposed method the first input of SNR estimation unit is connected to the second output of said paths memory. The second input of SNR estimation unit is connected to the fifth output of path metrics and paths calculation unit. The first output of SNR estimation unit, on which a binary control signal is generated during operation, is connected to the first control input of branch metrics calculation unit and to the control input of the path metrics and paths calculation unit. The second output of SNR estimation unit is connected to the second control input of the branch metrics calculation unit and serves as the second decoder output on which the signal corresponding to the current SNR estimate is generated during the decoder operation. 
         [0050]    Additional features and advantages of the invention will be set forth in the description that follows. Yet further features and advantages will be apparent to a person skilled in the art based on the description set forth herein or may be learned by practice of the invention. The advantages of the invention will be realized and attained by the structure particularly pointed out in the written description and claims hereof as well as the appended drawings. 
         [0051]    It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are intended to provide further explanation of the invention as claimed. 
     
    
     
       BRIEF DESCRIPTION OF THE ATTACHED DRAWINGS 
         [0052]    The accompanying drawings, which are included to provide a further understanding of the invention and are incorporated in and constitute a part of this specification, illustrate embodiments of the invention and together with the description serve to explain the principles of the invention. In the drawings: 
           [0053]      FIG. 1  illustrates a block diagram of a first proposed decoder. 
           [0054]      FIG. 2  illustrates an embodiment of the estimator of the decoding path length, where all the paths converge. 
           [0055]      FIG. 3  illustrates an embodiment of combinational logic. 
           [0056]      FIG. 4  illustrates an embodiment of an SNR estimation unit. 
           [0057]      FIG. 5  illustrates the use of data from the decoding paths memory for the estimation of the decoding path length, where all the paths converge and connections of the combinational logic unit inputs to the decoding paths memory cells. 
           [0058]      FIG. 6  gives an example of a graph of dependence of input bit SNR (E b /N 0 ) on average decoding path length where all the paths converge L t . 
           [0059]      FIG. 7  illustrates a block diagram of the second proposed decoder. 
           [0060]      FIG. 8  illustrates an embodiment of an SNR estimation unit according to the second proposed decoder. 
           [0061]      FIG. 9  illustrates the use of data from the decoding paths memory for estimation of the number of mismatches in each column of decoding paths memory cells and connections of the combinational logic unit inputs to the decoding paths memory cells. 
           [0062]      FIG. 10  gives an example of a graph of dependence of input bit SNR (E b /N 0 ) on normalized average bit number m n /M that is not equal to the maximum likelihood value for different columns of the decoding paths memory cells (n=5 . . . 115). 
           [0063]      FIG. 11  gives an example of amplitude characteristics of the non-linear converters. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0064]    Reference will now be made in detail to the embodiments of the present invention, examples of which are illustrated in the accompanying drawings. 
         [0065]    The first proposed method uses the following steps: 
         [0066]    (a) setting a threshold SNR value; 
         [0067]    (b) determining a functional dependence of the average decoding path length, where all the paths converge, on SNR; 
         [0068]    (c) calculating the decoding path length, where all the paths converge, whose estimate is based on the paths matrix. This length and determined functional dependence are used for current SNR estimate calculation; 
         [0069]    (d) setting a decoder control binary signal in an active state, if current estimated SNR does not exceed the threshold, and in an inactive state, if current estimated SNR exceeds the threshold; 
         [0070]    (e) if the decoder control binary signal is in an active state, branch metrics matrix, minimal path metrics matrix, paths metrics matrix and paths matrix are filled with initial values. 
         [0071]    The first version of this method implementation is where the decoding path length where all the paths converge is calculated as a maximum difference between such paths matrix column positions that have at least one element different from the others. 
         [0072]    The second version of this method is where the decoding path length, for which all the paths converge, is calculated as a maximum number of the paths matrix column position that has at least one element different from the others, relative to the column position corresponding to the current time instant. 
         [0073]    The third version of this method is where the SNR estimate is calculated using the following steps: 
         [0074]    (i) assigning a time interval for averaging the decoding path length, where all the paths converge, estimate; 
         [0075]    (ii) finding an average estimate of the decoding path length, where all the paths converge, for the given interval; 
         [0076]    (iii) calculating an SNR estimate by using the found average estimate and using the functional dependence on SNR of average decoding path length, where all the paths converge. 
         [0077]    The fourth version of this method implementation is where the binary control signal is generated by comparing the current estimated SNR with the preset threshold value; if current estimated SNR exceeds the threshold, then control signal is set to an inactive state; otherwise, it is set to an active state. 
         [0078]    The second proposed method uses the following: 
         [0079]    (i) setting a threshold SNR value; 
         [0080]    (ii) Selected columns in the paths matrix are going to be analyzed. In each column there is a maximum likelihood symbol which corresponds to the maximum likelihood path. Other symbols in the column may or may not be equal to this maximum likelihood symbol. So, an average number of mismatched symbols in each column is determined over time. The averages for each column are fed through a non-linear transform block, and an effective SNR can be calculated. 
         [0081]    (iii) calculating the SNR estimate using path matrix data and symbols on the maximum likelihood path; 
         [0082]    (iv) setting a decoder control binary signal in an active state, if current estimated SNR does not exceed the threshold, and in an inactive state, if current estimated SNR exceeds the threshold; 
         [0083]    (v) if the decoder control binary signal is in an active state, branch metrics matrix, minimal path metrics matrix, paths metrics matrix and paths matrix are filled with initial values. 
         [0084]    The first version of this method is where the current SNR estimate is calculated as follows: 
         [0085]    (i) assigning a time interval for averaging the relative number of symbols in the columns of the paths matrix, that do not match the maximum likelihood symbols in the same columns; 
         [0086]    (ii) calculating a relative number of symbols mismatching the maximum likelihood value taken from path metrics and path metrics calculation unit for the selected paths matrix columns; 
         [0087]    (iii) calculating averages over the assigned time interval of the relative number of symbols mismatching the maximum likelihood value taken from path metrics and path metrics calculation unit for the selected paths matrix columns; 
         [0088]    (iv) calculating the SNR estimate for each selected paths matrix column using the averages of the relative number of symbols over the assigned time interval and functional dependence of average relative number of mismatched symbols on SNR; and 
         [0089]    (v) calculating average SNR over all selected paths matrix columns which is current SNR estimate. 
         [0090]    The second version of this method is where a binary control signal is generated by comparing the current SNR estimate and the threshold; if the current SNR estimate exceeds the threshold, control signal is set to an inactive state, otherwise the control signal is set to an active state; if the control signal is set to the active state then branch metrics matrix, minimal path metrics matrix, paths metrics matrix and paths matrix are filled with initial values and new averages over the assigned time interval of the relative number of symbols mismatching the maximum likelihood symbols for the selected paths matrix columns are calculated. 
         [0091]    As shown in the figures described below ( FIG. 1 ), the decoder that implements the first method includes a decoding path length, where all the paths converge, estimation unit ( 7 ) and an SNR estimation unit ( 8 ), connected in series. 
         [0092]    The input of the decoding path length, where all the paths converge, estimation unit ( 7 ) being connected to the second output ( 6 .B) of paths memory ( 6 ), while the first output ( 8 .A) of an SNR estimation unit ( 8 ) is connected to the first control input ( 1 .A) of branch metrics calculation unit ( 1 ) and to the control input of path metrics and paths calculation unit ( 2 ), the second output ( 8 .B) of the SNR estimation unit ( 8 ) is connected to the second control input ( 1 .B) of branch metrics calculation unit ( 1 ) and serves as the second decoder output, where a signal corresponding to the current SNR estimate during decoder operation is generated. For example it may be bit SNR estimation, i.e., h b   2 =E b /N 0 . 
         [0093]    An embodiment of this decoder includes an estimation unit ( 7 ) that estimates a decoding path length where all the paths converge, and includes the following elements (see  FIG. 2 ): 
         [0094]    (i) a group ( 7 . 1 ) of combinational logic units ( 7 . 1 . 1 - 7 . 1 .L), whose number of is equal to the decoding depth while the number of inputs of each logic unit is equal to the number of states of the convolutional coder M; and 
         [0095]    (ii) priority coder ( 7 . 2 ), whose number of inputs is equal to the number of combinational logic units L; 
         [0096]    The output of each combinational logic unit ( 7 . 1 . x ) is connected to the corresponding input of the priority coder ( 7 . 2 ); the input of the path length estimation unit ( 7 ) is all the inputs of combinational logic units ( 7 . 1 . x ), while the output of the unit is the output of the priority coder ( 7 . 2 ). 
         [0097]      FIG. 3  shows an implementation of the combinatory logic unit ( 7 . 1 . x ) using standard logic elements. 
         [0098]    Another embodiment of the proposed decoder is where the SNR estimation unit ( 8 ) is made of the units connected in series ( FIG. 4 ): 
         [0099]    (i) an averaging unit ( 8 . 1 ); 
         [0100]    (ii) a nonlinear transform unit ( 8 . 2 ); and 
         [0101]    (iii) a threshold unit ( 8 . 3 ). 
         [0102]    The output of the threshold unit ( 8 . 3 ) is connected to the control input of the averaging unit ( 8 . 1 ) and serves as the first output ( 8 .A) of the SNR estimation unit ( 8 ). An abnormal decoder operation state binary signal is generated at the output ( 8 .A). The second output ( 8 .B) of the SNR estimation unit ( 8 ) is the output of the nonlinear transform unit ( 8 . 2 ), where a signal corresponding to the current SNR estimate is generated. 
         [0103]    The first proposed method and corresponding decoder are implemented as follows (see  FIG. 1 ): 
         [0104]    A set of samples d i  corresponding to the received channel symbols packet comes to the input of branch metrics calculation unit ( 1 ), where branch metrics for all possible states on the trellis diagram are calculated according to the received samples and taking into account conditional probabilities distribution density, whose mean square value is determined from the estimated SNR value at the decoder input ( 1 .B). 
         [0105]    The calculated set of branch metrics is passed to the input of the path metrics and paths calculation unit ( 2 ), where the path metrics matrix, minimal path metrics matrix and paths matrix are calculated in accordance to Viterbi algorithm. The calculated result matrixes are written ( FIG. 1 ) to the minimal path metrics memory ( 4 ), path metrics memory ( 5 ) and paths memory ( 6 ) respectively. 
         [0106]    The decoded symbol generation unit ( 3 ) forms a decoded symbol b k  based on data from the paths memory ( 6 ) and the path metrics memory ( 5 ). The decoded symbol b k  is the decoded data output of the decoder. 
         [0107]    In addition, at each decoding step, a state of each cell of the paths matrix which is stored in the paths memory ( 6 ), is passed to the path length estimation unit ( 7 ). The diagram of the estimation unit ( 7 ) is shown on  FIG. 2 . It contains the group of combinatory logic units ( 7 . 1 ) and the priority coder ( 7 . 2 ). 
         [0108]    In the path length estimation unit ( 7 ) binary data from the cells of each paths matrix column is passed to the corresponding inputs of combinational logic units ( 7 . 1 . x ) where x=1 . . . L and L is the maximum depth of the decoder history (decoding window); the number of columns in paths matrix corresponds to this depth. 
         [0109]    Each cell of the paths matrix is assumed to contain a binary symbol corresponding to the decoded symbol estimate for that moment and which brings the decoder to the specific state on the trellis diagram. 
         [0110]    An exemplary embodiment of combinational logic units ( 7 . 1 . x ) using standard logic elements is illustrated on  FIG. 3 . 
         [0111]    Data from the each column of the paths matrix is passed to the inputs of corresponding combinational logic unit ( 7 . 1 . x ). The number of inputs of each combinational logic unit ( 7 . 1 . x ) is equal to the number of states on the trellis diagram M=2 K-1 , where K is the constraint length of the used code. 
         [0112]    An inactive state is generated at the output of each combinational logic unit ( 7 . 1 . x ) if all binary symbols in the corresponding paths matrix column are the same, and an active state is generated if at least one symbol in the corresponding paths matrix column is different from the others. This operation is illustrated on  FIG. 5 . 
         [0113]    The number L of combinational logic units ( 7 . 1 . 1 - 7 . 1 .L) is equal to the maximally-allowed depth of the decoder history (the number of paths matrix columns) L, and for the present description, consider combinational logic unit ( 7 . 1 . 1 ) corresponding to the minimal depth of the decoder history  1 , while combinational logic unit ( 7 . 1 .L) corresponding to the maximal depth of the decoder history L. 
         [0114]    From  FIG. 5 , the current decoding path length, where all the paths converge, can be estimated by determining the maximum position number of the combinational logic unit ( 7 . 1 . x ) (the left-most) which has an active state at its output. 
         [0115]    This operation is performed by the priority coder ( 7 . 2 ) that determines the left-most position of logic “1” in the parallel code generated by outputs of combinational logic units ( 7 . 1 . x ), and outputs a code corresponding to the position number corresponding to the current decoding path length, where all the paths converge L t . The active state equals a logic “1”, while the inactive state equals a logic “0” in the corresponding code position. 
         [0116]    A signal from the output of the priority coder, which also serves as output signal of the path length estimation unit is passed to the input of the SNR estimation unit ( 8 ) which includes serially-connected units: an averaging unit ( 8 . 1 ), a nonlinear transform unit ( 8 . 2 ) and a threshold unit ( 8 . 3 ). The output of the threshold unit ( 8 . 3 ) is connected to the control input of the averaging unit ( 8 . 1 ). The implementation variant for the SNR estimation unit ( 8 ) is shown in  FIG. 4 . 
         [0117]    Averaging unit ( 8 . 1 ) averages a value of the decoding path length, where all the paths converge, estimate over the given time interval. The averaging interval is normally chosen longer than maximum decoder history depth L. 
         [0118]    The nonlinear transform unit ( 8 . 2 ) transforms a value generated at the output of the averaging unit ( 8 . 1 ) into a value corresponding to the current SNR estimate. 
         [0119]    An example of the amplitude characteristic for nonlinear transform unit ( 8 . 2 ) is given in  FIG. 6 . This characteristic was computer-simulated for convolutional code with code rate R=½ and code constraint K=7. This characteristic allows determining the SNR at the decoder input based on the measured current decoding path length, where all the paths converge L t . Such a dependence can be obtained experimentally or by modeling for each decoder type. 
         [0120]    The threshold unit ( 8 . 3 ) outputs an active state if SNR estimate at its input is lower than the preset threshold, otherwise it outputs an inactive state. In such a manner, a critically long decoding path length, where all the paths converge, is determined. The excessive decoding path length, where all the paths converge, informs either about frequency of error occurrence that is higher than correcting capability of the code, or about incorrect synchronization with the channel symbol sequence at the decoder input. 
         [0121]    A signal from the output of the threshold unit ( 8 . 3 ) is passed to the control input of the averaging unit ( 8 . 1 ). If control input is set to an active state, then averaging unit ( 8 . 1 ) is reset, and its output is set to zero. 
         [0122]    At the same time the output signal from the threshold unit ( 8 . 3 ) serves as the first output ( 8 .A) of the SNR estimation unit ( 8 ) and is passed to the first control input ( 1 .A) of the branch metrics calculation unit ( 1 ) and to the control input of the path metrics and paths calculation unit ( 2 ). Branch metrics calculation unit ( 1 ) with an active state at its first control input ( 1 .A) skips one sample in the input stream to attempt to synchronize. Path metrics and paths calculation unit ( 2 ), with an active state at its control input, sets contents of the minimal path metrics memory ( 4 ), the path metrics memory ( 5 ) and the paths memory ( 6 ) to the initial state. After that, the decoding procedure restarts. 
         [0123]    External units may also use a signal from the first output ( 8 .A) of the SNR estimation unit ( 8 ), for example, to optimize receive procedure, in particular, to inform that the current and several of the subsequent bits from the decoder output are incorrect. 
         [0124]    The signal from the output of nonlinear transform unit ( 8 . 2 ) corresponds to the current SNR estimate at the decoder input and serves as the second output ( 8 .B) of SNR estimation unit ( 8 ) and is passed to the second control input ( 1 .B) of branch metrics calculation unit ( 1 ). Calculation of branch metrics is performed with taking into account conditional probabilities distribution densities, whose mean square value is determined based on the SNR estimate at the decoder input. Current SNR estimate can also be used by external units of the receiver system to optimize the receive procedure. 
         [0125]    In the decoder according to  FIG. 7 , the first input ( 9 .A) of the SNR estimation unit ( 9 ) is connected to the second output ( 6 .B) of the paths memory unit ( 6 ), the second input ( 9 .B) of the SNR estimation unit ( 9 ) is connected to fifth output ( 2 .E) of the path metrics and path calculation unit ( 2 ); the first output ( 9 .C) of the SNR estimation unit ( 9 ) is connected to the first control input ( 1 .A) of the branch metrics calculation unit ( 1 ) and to the control input of the path metrics and path calculation unit ( 2 ); the second output ( 9 .D) of the SNR estimation unit ( 9 ) is connected to the second control input ( 1 .B) of the branch metrics calculation unit ( 1 ) and serves as the second decoder output, where the signal corresponding to, for example, the current estimate of bit SNR h b   2 =E b /N 0 , is generated. 
         [0126]    An embodiment of the proposed decoder is where the SNR estimation unit ( 9 ) is made of the units connected in series (see  FIG. 8 ): 
         [0127]    (i) an N-channel unit ( 9 . 1 ) of difference counters ( 9 . 1 . x ). The first input of each difference counter ( 9 . 1 . x ) is multichannel, with the number of channels M equal to the number of convolutional coder states M=2 K-1 , where K is the constraint length of the used code, while the second input ( 9 .B) of each difference counter ( 9 . 1 . x ) is single-channel; all the second inputs of difference counters are connected together and serve as the second input ( 9 .B) of the SNR estimation unit ( 9 ), while the first input ( 9 .A) of the SNR estimation unit ( 9 ) is a set of N first M-channel inputs of difference counters; 
         [0128]    (ii) an N-channel unit ( 9 . 2 ) of averaging devices ( 9 . 2 . x ); 
         [0129]    (iii) an N-channel unit ( 9 . 3 ) of nonlinear transform devices ( 9 . 3 . x ); 
         [0130]    (iv) an adder ( 9 . 4 ); 
         [0131]    (v) a divider ( 9 . 6 ); 
         [0132]    (vi) a threshold unit ( 9 . 7 ); and 
         [0133]    (vii) a channel counter unit ( 9 . 5 ). 
         [0134]    The output of each nonlinear transform device ( 9 . 3 . x ) in the N-channel nonlinear transform unit ( 9 . 3 ) is connected to the corresponding input of said channel counter unit ( 9 . 5 ), while the output of channel counter unit ( 9 . 5 ) is connected to the second input of the divider ( 9 . 6 ). The output of the threshold unit ( 9 . 7 ) is connected to the control inputs of averaging devices ( 9 . 2 . x ) in the N-channel averaging unit ( 9 . 2 ) and serve as the first output ( 9 .C) of the SNR estimation unit ( 9 ) at which abnormal decoder operation state binary signal is generated. The second output ( 9 .D) of the SNR estimation unit ( 9 ) is the output of said divider ( 9 . 6 ) at which a signal corresponding to the current SNR estimate (e.g. input bit SNR estimate h b   2 =E b /N 0 ) is generated during decoder operation. 
         [0135]    The principle of operation of the proposed decoder is shown in  FIGS. 7-11 . Each cell of the paths matrix is assumed to contain a binary symbol corresponding to the decoded symbol estimate for that moment and which brings the decoder to the specific state on the trellis diagram. 
         [0136]    A set of samples d i  corresponding to the received channel symbols packet comes to the input of branch metrics calculation unit ( 1 ) ( FIG. 7 ) where branch metrics for all possible states on the trellis diagram are calculated according to the received samples and taking into account conditional probabilities distribution density, whose mean square value is determined from the estimated SNR value at the decoder input. 
         [0137]    The calculated set of branch metrics is passed to the input of the path metrics and paths calculation unit ( 2 ), where the minimal path metrics matrix, path metrics matrix and paths matrix are calculated based on the Viterbi algorithm. The calculated result matrixes are written to the minimal path metrics memory ( 4 ), path metrics memory ( 5 ) and paths memory ( 6 ) respectively. 
         [0138]    Decoded symbol generation unit ( 3 ) forms a decoded symbol b k  based on data from the paths memory ( 6 ) and path metrics memory ( 5 ). The decoded symbol b k  is the decoded data output of the decoder. 
         [0139]    SNR estimation unit ( 9 ) calculates an estimate of the current SNR at the decoder input based on the data from the paths memory ( 6 ) and the path metrics and paths calculation unit ( 2 ), and outputs this estimate to the second output ( 9 .D) of the SNR estimation unit ( 9 ), while a “low SNR” binary signal is generated on the first output ( 9 .C) of the SNR estimation unit ( 9 ), which indicates the abnormal decoder operation state. 
         [0140]    In the SNR estimation unit ( 9 ) binary data corresponding to the contents of the selected paths matrix columns ( FIG. 8  and  FIG. 9 ) is passed to the corresponding inputs of difference counters ( 9 . 1 . x ), where x=1 . . . N and N&lt;L, L is the maximal decoder history depth (decoding window), which is equal to the total number of the columns in the paths matrix. The number of the first information data inputs of each difference counter ( 9 . 1 . x ) equals to the number of convolutional coder states M=2 K-1 , where K is the constraint length of the used code. 
         [0141]    The quantity and positions of the paths matrix columns used for SNR estimation are selected considering the acceptable technical complexity level and required SNR estimation accuracy. The position of the first paths matrix column used for estimation should be greater than the minimally-possible decoding path length, where all the paths converge (i.e., the extremely high SNR condition). 
         [0142]    The number of the row in the paths matrix corresponding to the maximum likelihood path, i.e., the path with minimal path metric at the given time instant, is passed to the second input ( 9 .B) of all difference counters ( 9 . 1 . x ) from the path metrics and paths calculation unit ( 2 ). 
         [0143]    Each difference counter ( 9 . 1 . x ) takes the corresponding paths matrix column contents and calculates the number of cells of this column which have values different from the value from the cell with the row number of the path with maximum likelihood (Max LLH). An example of such calculation is given in  FIG. 9  at the bottom of the figure. 
         [0144]    Output of each difference counter ( 9 . 1 . x ) at each decoding step is averaged with, for example, moving average algorithm in the N-channel unit ( 9 . 2 ) of averaging devices ( 9 . 2 . x ). The control inputs of the averaging devices ( 9 . 2 . x ) are connected together and serve to apply reset signal for averaging elements when abnormal decoder operation is detected. The averaging interval is normally selected to be greater than the maximum decoder history depth L. 
         [0145]    The outputs of the averaging devices ( 9 . 2 . x ) are connected to the corresponding inputs of N-channel unit ( 9 . 3 ) of non-linear transform devices ( 9 . 3 . x ). Each non-linear transform device ( 9 . 3 . x ) converts the averaged value of the difference number, which was generated at the outputs of the averaging elements ( 9 . 2 . x ), into the SNR estimate at the decoder input. To perform such a conversion, dependencies of normalized average bit number m n /M not equal to the maximum likelihood value on SNR ( FIG. 10 ) can be applied for different columns (n=5 . . . 115) of the paths matrix. Column numbering in  FIG. 10  is from the most right column corresponds to the current time instant. 
         [0146]    An example of the amplitude characteristics for nonlinear transform devices ( 9 . 3 . x ) is given on  FIG. 11 . This characteristic was computer-simulated for convolutional code with code rate R=½ and code constraint K=7. Such dependencies can be obtained experimentally or by modeling for each decoder type and specific position numbers of the paths matrix columns. 
         [0147]    As shown in to  FIG. 11 , the output of each non-linear transform device ( 9 . 3 . x ) may have zero value if the input signal is out of the assigned working range or a non-zero value corresponding to the SNR estimate. To provide capability of measuring large SNR values, amplitude characteristic of the first non-linear transform device ( 9 . 3 . 1 ) in the area of small values of m n /M has a constant non-zero value that equals the SNR for the lower value of m n /M range for the given channel (see  FIG. 11 ). 
         [0148]    To average SNR estimates over different channels, signals from outputs of non-linear transform devices ( 9 . 3 . x ) are added in the adder ( 9 . 4 ) and are divided in the divider ( 9 . 6 ) by the number of channels with non-zero output. The number of channels with non-zero output is determined in the channel counter unit ( 9 . 5 ). 
         [0149]    The output of the divider serves as the second output ( 9 .D) of SNR estimation unit ( 9 ) and is connected to the second control input ( 1 .B) of the branch metrics calculation unit ( 1 ), at the same time it serves as the second decoder output with the current SNR estimate outputted during the operation. 
         [0150]    The threshold unit ( 9 . 7 ) outputs an active state if SNR estimate at its input is lower than the preset threshold, otherwise, it outputs an inactive state. In such a manner, a critically long decoding path length, where all the paths converge, is determined. The excessive decoding path length, where all the paths converge, informs either about frequency of error occurrence higher than correcting capability of the code, or about incorrect synchronization with the channel symbol sequence at the decoder input. 
         [0151]    A signal from the output of the threshold unit ( 9 . 7 ) is passed to the control inputs of the averaging devices ( 9 . 2 . x ). If control input is set to active state then averaging devices ( 9 . 2 . x ) are reset and their outputs are set to zero value. 
         [0152]    The output of the threshold unit ( 9 . 7 ) serves as the first output ( 9 .C) of the SNR estimation unit ( 9 ) and is passed to the first control input ( 1 .A) of the branch metrics calculation unit ( 1 ) and to the control input of the path metrics and paths calculation unit ( 2 ). 
         [0153]    The branch metrics calculation unit ( 1 ), with an active state at its first control input ( 1 .A), skips one input sample trying to establish synchronization to the input stream. 
         [0154]    The path metrics and paths calculation unit ( 2 ) with an active state at its control input sets the cells of the minimal path metrics memory ( 4 ), path metrics memory ( 5 ) and paths memory ( 6 ) to initial states. Then, the decoding procedure restarts. 
         [0155]    External units may also use a signal from the first output ( 9 .C) of the SNR estimation unit ( 9 ), for example, to optimize receive procedure, in particular, to inform that the current and several of the subsequent bits from the decoder output are incorrect. 
         [0156]    The proposed technical solutions enable current SNR estimates at the decoder input to be generated; this eliminates the drawbacks of the solutions known in the prior art and can be used for estimating and indicating the quality of the communication channel, for generating an automatic repeat request of data packet within automatic repeat request communication channels, for selecting a channel with better communication quality in multichannel communication systems, for decoder synchronization, and for calculating branch metrics in case of considering conditional probability distribution density parameters, and for some other needs. 
         [0157]    Having thus described a preferred embodiment, it should be apparent to those skilled in the art that certain advantages of the described method and apparatus have been achieved. It should also be appreciated that various modifications, adaptations, and alternative embodiments thereof may be made within the scope and spirit of the present invention. The invention is further defined by the following claims.