The Scientific World Journal

Volume 2014, Article ID 798612, 9 pages

http://dx.doi.org/10.1155/2014/798612

## Blind Identification of Convolutional Encoder Parameters

School of Mechatronics Engineering and Automation, National University of Defense Technology, Deya Road, Changsha, Hunan 410073, China

Received 13 March 2014; Accepted 5 May 2014; Published 21 May 2014

Academic Editor: Lei Cao

Copyright © 2014 Shaojing Su et al. This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.

#### Abstract

This paper gives a solution to the blind parameter identification of a convolutional encoder. The problem can be addressed in the context of the noncooperative communications or adaptive coding and modulations (ACM) for cognitive radio networks. We consider an intelligent communication receiver which can blindly recognize the coding parameters of the received data stream. The only knowledge is that the stream is encoded using binary convolutional codes, while the coding parameters are unknown. Some previous literatures have significant contributions for the recognition of convolutional encoder parameters in hard-decision situations. However, soft-decision systems are applied more and more as the improvement of signal processing techniques. In this paper we propose a method to utilize the soft information to improve the recognition performances in soft-decision communication systems. Besides, we propose a new recognition method based on correlation attack to meet low signal-to-noise ratio situations. Finally we give the simulation results to show the efficiency of the proposed methods.

#### 1. Introduction

In digital communication systems, error-correction codes are widely used. To meet high quality of services, new coding schemes are being developed ceaselessly. Therefore, for a communication receiver, it is very difficult to remain compatible with all standards used. But if it is an intelligent receiver, which is able to blindly recognize the coding parameters of a specific transmission context, it can adapt itself to the perpetual evolution of digital communications. Furthermore, the blind recognition techniques are also applied in noncooperative communications. In noncooperative communication contexts, a receiver does not know the coding parameters, so it must blindly recover the encoder before decoding. In this paper we focus on the blind recognition of coding parameters of an encoder which uses convolutional codes as error-correction coding and propose a method to take advantage of the soft information in soft-decision situations.

Some previous literatures discussed the problem of blind recognition of convolutional codes. The authors of [1–3] developed recognition methods in noiseless context, including the rate and codes, where denotes the codeword length and the dimension. These methods are not suitable for noisy environment. For the case of noisy context, some algorithms were proposed in recent years [4–7]. The algorithm proposed in [7], which we call a Gauss-Jordan elimination through pivoting (GJETP) based algorithm in this paper, completely solved the blind parameter recognition of convolutional codes with low complexity and excellent recognition performances.

However, the previous works are all discussed in hard-decision situations. In modern communication systems, more and more soft-decision based algorithms are applied to improve the signal processing performances. For example, the soft-decision based decoding methods always have better performances than hard-decision situations [8–12]. Similarly, some soft-decision based blind recognition of block code parameters also outperforms the hard-decision one [13, 14].

In Section 2 of this paper, based on [6, 7] we propose a method to utilize the soft information to improve the recognition performances in soft-decision systems. And we give another two improvements about the recognition algorithm in Sections 3 and 4: (1) because the authors of [6, 7] did not give a normative algorithm to automatically identify the parameter for a computer program, we propose a formalized scheme to optimize the recognition of ; (2) the authors of [6, 7] did not consider the synchronization of codewords while the synchronization positions are usually unknown in a noncooperative communication context; we propose to modify the algorithm to identify the codeword synchronization.

Besides, in Section 5 we propose a correlation attack method to meet very low signal-to-noise ratio (SNR) situations, which also includes both hard- and soft-decision algorithms. This method might require more computational time, but it can push the SNR limits of the GJETP-based algorithm proposed in [7]. And we propose some strategies to reduce the searching space according to the structural analysis of the dual codes.

Finally we show the efficiency of the proposed algorithm by computer simulations in Section 6 and conclude the paper in Section 7.

#### 2. Utilizing the Soft Information

The details of the GJETP-based recognition of rate convolutional encoder parameters are introduced in [7]. The algorithm includes three major sections:(1)identification of code length ;(2)identification of a dual code basis;(3)identification of the generator matrix.

In the first procedure, the authors of [7] propose to recognize parameter using the following steps.

*Step 1. *Set the minimum and maximum value of , that is, and . Initialize to be .

*Step 2. *According to and a sequence of received symbols, we generate an observed data matrix as shown in Figure 1, the numbers in which denote the arriving order of the bits in the received data stream.

*Step 3. *Transform the matrix to a lower triangular matrix by GJETP (see [15] for details):

*Step 4. *Obtain the set as follows:
where is the number of “1” in the lower part of the th column in the matrix , is an optimal threshold [6, 7], and Card denotes the cardinal of . An smaller than indicates that the th column of has a high probability to be dependent on the other columns.

*Step 5. *If , execute Step 6. If , let and go back to Step 2.

*Step 6. *Output the gap between two consecutive nonzero cardinals, , as the estimated codeword size . The principle of this estimation is that when and is larger than a parameter (see [7] for details), some columns of can be determined by other columns, where and is the error pattern corresponding to .

According to the GJETP algorithm, the reliability of upper part of has larger influence on the successful detection of dependent columns in . So if we can make the upper part of have lower errors, the algorithm can be improved. In hard-decision situations, we cannot determine which rows in have lower probabilities to have error decision bits. But in soft-decision situations, we can examine the reliabilities of the rows in according to the soft-decisions bits. Therefore, here we propose the following processing procedure inserted into the steps (between Step 2 and Step 3) mentioned above.(1)Fill the observed matrix with the soft-decision bits. For each row in we find the decision bit that has the lowest reliability and record its reliability value as the reliability of the row.(2)Arrange the rows of according to each row’s lowest reliability value to make the first row of have the highest reliability, the second row have the second highest reliability, and so on.(3)Obtain the hard decisions of the bits in the rearranged and continue Step 3 mentioned above.

After this processing, the upper rows of the rearranged have higher reliabilities and therefore have lower probabilities to include error decision bits. So the probability of successful detection of dependent columns can be improved. And as the value of rises, the improvement of the reliabilities of the upper part of becomes more effective, so the recognition performance can be improved more obviously than the previous algorithm in [7]. After the estimation of , we use Algorithms 1 and 2 in [7] to identify other coding parameters. Note that the parity check vector recognition procedure uses the GJETP algorithm too, so the proposed rearranged steps are also applied before each GJETP processing when recognizing the parity check vectors.

#### 3. Formalizing the Estimation Algorithm of

Note that, in Step 6 shown in the previous section, the authors of [7] only give the idea of the estimation of . When the noise level is high, there exists a problem that the number of error decision bits is high and some cardinals corresponding to the values of that equals are blank. So not all the gaps between two consecutive nonzero cardinals, , equal . In this case, we need a formalized algorithm to estimate the value of more exactly. This can be done by simply searching all the gaps between two consecutive nonzero cardinals and find out which gap value appears mostly. The detailed algorithm steps are listed below.(1)Let be the vector that consists of the values of corresponding to the detected nonzero cardinals in Step 6.(2)Calculate the vector , the elements of which are calculated by (3)Initialize a vector with length to be overall zeros and for each value of from 1 to , we let (4)Finally we find the maximum element in and output the corresponding gap value to be the estimated codeword size .

After taking the previously mentioned searching method we can find the most probable gap between two consecutive nonzero cardinals, that is, the estimation of the code length. An example as follows further describes the searching procedure.

Figure 2 shows the recorded vector when recognizing a convolutional code based on correct synchronization positions with a low SNR dB). From the figure we can see that not all the gaps between two consecutive nonzero elements in equal the code length, 3. If we estimate the code length by the gap between the first and the second nonzero elements in , the estimation is not correct. Implementing the searching steps mentioned above, we can firstly obtain the vector as follows:

Then we can calculate the vector according to as follows:

Furthermore, we can calculate the vector by (4). In the vector , we have , , and other elements in equal to zero. is the maximum element in the vector , so, according to Step 4 mentioned above, we can estimate the code length:.

This example shows an implementation of the formalized algorithm proposed in this section to estimate the code length more exactly in a low SNR situation.

#### 4. Recognition of Synchronization Positions

The GJETP-based dual code method proposed in [7] has good performances on convolutional encoder identifications. But unfortunately, the authors did not consider the codeword synchronization problem. In noncooperative context, the synchronization cannot usually be reached before the coding parameters are correctly estimated. The algorithm is discussed based on correct synchronization. In the case that the codeword synchronization position is unknown, we can but randomly choose a position in the received data stream to be the beginning of a codeword. The randomly chosen synchronization positions have low influence on the recognition of code length, but the recognition of key parameter (the minimal length of the rows of matrix so that includes dependent columns; see [7] for details) and parity check vectors are not correct.

Figure 3 shows the recorded vector when recognizing a convolutional code based on correct synchronization positions. From the figure we can estimate the key parameter , which is accordant to the convolutional code. But if we choose an incorrect synchronization position, as shown in Figure 4, the first nonzero element in vector appears at the position , so the key parameter is estimated to be 24, which is a fault estimation. In order to obtain correct parity check vectors, we must firstly locate the correct synchronization positions.

We assume that when recognizing the code length we fill the matrix from the th position from the received bit stream and the estimated code length and key parameter are and , respectively, and then we propose the following steps to find the correct codeword synchronization.

*Step 1. *Let , , and .

*Step 2. *Let .

*Step 3. *Fill the matrix with row length from the th bit in the received data stream.

*Step 4. *Do the GJETP processing for and calculate , the number of dependent columns.

*Step 5. *If and , let , , and , and go back to Step 3; otherwise, execute Step 6.

*Step 6. *If , let and go back to Step 2.

*Step 7. *Let and be the newly estimations of and synchronization position.

The previous steps corrected the codeword synchronization. For the following procedure of parity check matrix recognition, we use to be the synchronization position to fill the matrix and replace by in the algorithms.

#### 5. Correlation Attack Method

##### 5.1. Hard-Decision Situations

If the polynomial-based generator matrices of a convolutional code and the dual code are and , respectively, we have [16]

According to the analysis of [7], has the following style: where is a polynomial, coefficients of which are all in GF: Parameter in (7) is the memory of the dual code [6, 7].

is also a polynomial on GF as follows: And according to [7], for a realizable convolutional encoder, we have

Based on (8)–(10), we can define the binary form of as follows: where

It is shown in (12) that each row of the matrix is a shift of the following matrix , which we call the basic check matrix of convolutional codes in this paper:

So the recognition problem of a convolutional encoder is equivalent to the recognition of . We call the vectors in the basic parity check vectors. According to the dual code principles, we can consider to be a parity check matrix for consecutive codewords. That is to say, if a row vector includes consecutive codewords, we have

Furthermore, for a matrix consisting of a number of such vectors, we have

In this paper we say two vectors and are correlated if they have the same length and where the sum operator is defined in GF and

One solution to the recognition of is enumerating all possible length values and listing all vectors with length to see which vectors have likelihood to be the basic parity check vectors. This can be implemented by enumerating all possible length values , creating the observed data matrix with row length (as shown in Figure 1), and trying to find the vectors which are correlated with most rows of . If we can find such vectors, the corresponding can be considered to be a possible estimation of , which is defined to be the row length of the basic check matrix : Furthermore, we can estimate the code length and dual code memory length by investigating the factors of the estimated .

This scheme takes a very long elapsed time. Here we propose some principles to reduce the searching space.(1)Reduce the candidates of .

According to (19), the parameteris a product of two integers which are all larger than 1. Therefore, we can drop the prime values while searching. So we just need to enumerate the values of from composite numbers.(1)Reduce the candidates of basic parity check vectors.

We can set the first and the last bit of each candidate vector to be 1. Hence, we just need to enumerate the combinations of the middle bits for each* l*-length vector.

In the noisy environment, not all the rows in are correlated with the basic parity check vectors. can be written as follows: where is the error pattern corresponding to the elements in and the elements in are the original encoded (noiseless) bits of the received bits in . If and no error exists in the received stream, that is, , according to (16), we have

In most noisy environments, because of the existence of error bits, (21) is not always true even if equals . So we cannot determine whether a vector is correlated with row vectors of by checking the equation . Instead, we need to compute the likelihood of a vector to be correlated with and an appropriate threshold to determine whether the vector can be considered to be a basic check vector. We now deduce the threshold below.

For a given data matrix and vector , we denote by a vector calculated by as follows: Equation (22) is defined in GF, so the elements in vector are from the set . And we denote by the Hamming weight of the vector . In noisy environment, the expectation of can be calculated as follows: where is the number of rows of the observed data matrix and is any possible form of the rows of . is the probability of . If the matrix is filled with correct parameters, that is, , the first bit filled into is the beginning of a codeword, and the vector is a valid check vector, equals the probability that the vector has even error bits. So we can calculate the probability as follows: where is the Hamming weight of and is the channel transition probability. According to (23) and (24), we have According to binomial-distribution theories, we can calculate the variance of as follows:

If the data matrix is based on incorrect parameters or is not a valid check vector, the probability is Therefore, the expectation and variance of are

So we propose the threshold based on -standard deviation principle as follows: Experimentally, we suggest choosing the parameter between 6 and 8 to get a good recognition result.

In (29), we must ensure that

So the number of rows of the observed data matrix should meet the following condition:

The threshold and corresponding condition of are based on the prior information about the noise level, that is, the channel transition probability . If such prior information is unknown, the calculation of (29) and (31) cannot be done. In this situation, we propose to set the threshold to be /10 and let Therefore, should meet the following condition:

The threshold is just an experimental value. If no parity check vector can be found based on such a threshold, we can increase the value of and redo the searching procedure. If , we must choose such that that is,

To implement the algorithm automatically by a computer program, we propose the following procedure to recognize the parameterdefined by (19) and the codeword synchronization position as follows.

*Step 1. *Set the searching range of ; that is, set and .

*Step 2. *List all the composite numbers between and to form a set
where ,is the number of composite numbers between and .

*Step 3. *Let.

*Step 4. *Let.

*Step 5. *Let ; fill the data matrix with the received data. The first bit filled into is the th bit in the received stream.

*Step 6. *Let .

*Step 7. *Create a vector:
where and is the binary form of with length .

*Step 8. *Calculate the vector by (22) and denote by the Hamming weight of . If , stop the searching and output and to be the estimation of and ; that is, let and . Besides, record as .

*Step 9. *If , let and go back to Step 7. Otherwise, execute Step 10.

*Step 10. *If , let and go back to Step 6. Otherwise, execute Step 9. is the maximum of possible codeword length. can be set to the maximum factor of* l* (except itself).

*Step 11. *If , go back to Step 4. Otherwise, execute Step 12.

*Step 12. *End the searching.

If we can stop the searching from Step 8, we can recognize the codeword length based on , , and . According to (19), the code length is a factor of . So we propose to estimate by the following steps.

*Step 1. *List all the factors of (expect 1 and itself) to form a set
where , is the number of the factors of (expect 1 and itself); let.

*Step 2. *Let .

*Step 3. *Let .

*Step 4. *Fill the data matrix as follows:
wherewhere is the th bit in the received data stream and .

*Step 5. *Calculate the vector by and get , the Hamming weight of .

*Step 6. *If , stop the searching and output the current to be the estimated codeword length:. Otherwise, execute Step 7.

*Step 7. *If , let and go back to Step 3. Otherwise, execute Step 8.

*Step 8. *End the searching.

After the estimation of , we can simply get the estimation of by

Finally, we search all the basic check vectors to recover the basic check matrix . According to (13) and (14), we can estimate the encoder parameter and theparity check vectors by the following steps.

*Step 1. *Let .

*Step 2. *Let .

*Step 3. *Create a vector as follows:
where the definition ofis the same as (40).

*Step 4. *Let and fill the elements in into the matrix with row length .

*Step 5. *Enumerate all vectors with length , where the last element of is 1, and calculate , where . If any vector can make , record and execute Step 6. Otherwise, execute Step 8.

*Step 6. *If , let and go back to Step 3. Otherwise, execute Step 7.

*Step 7. *Stop the searching, and output and the recorded vectors .

*Step 8. *If , let and go back to Step 2. Otherwise, execute Step 9.

*Step 9. *End the searching.

If such recognition procedure can successfully outputvectors, we can finally recover the basic parity check matrix . We write the vectors as follows:and then the parity check matrix can be estimated as follows:

##### 5.2. Soft-Decision Situations

In hard-decision situations, we calculate by evaluating how many vectors in are correlated with a candidate parity check vector . In soft decisions, we can utilize the soft output from the receiver to evaluate the reliability of each decision bit. Therefore, we can calculate the probability of each row in to be correlated with . For example, if a communication system uses BPSK demodulation in an additive-white-Gaussian-noise (AWGN) channel, according to the analysis in [14, 15], we can calculate the probability of and for given vectors and as follows:
where is the noise variance, is the Hamming weight of , is the th nonzero position in , and is theth element in vector** c**. Based on this, is calculated as follows:
where denotes theth row in .

#### 6. Simulation Results

In this section we show the simulation results of the blind recognition of the convolutional coding parameters by utilizing the method introduced in this paper. The simulations include three parts corresponding to our proposed recognition algorithm on different noise level and different observed matrix size . In the simulations we assume that the signal is transmitted on a binary symmetry channel (BSC) which is corrupted by AWGN.

For the GJETP-based recognition method, we show the false recognition ratios (FRR) in Figure 5 for several convolutional codes in different channel conditions when the observed window size . We compare the proposed soft-decision based method with the hard-decision based algorithm proposed in [7]. We can see from the simulation results that when the soft information is introduced into the recognition algorithm, the recognition performances can be improved obviously. And as the SNR rises, the FRR curves descend more rapidly on soft-decision algorithm.

Figure 6 shows the recognition performance of two convolutional codes for different observed matrix size, when the SNR dB. It shows that the soft information can help to make the FRR descend more rapidly when is rising. That is to say, in soft-decision situations, we can improve the recognition performance by increasing the number of rows in the data matrix of , while the hard-decision based algorithm cannot.

In Figure 7, we compare the performances of convolutional encoder recognition by GJETP method and correlation attack while recognizing the coding parameters of . GJETP method is based on Gauss elimination on , so the influences of error bits are easily diffused during Gauss eliminating. Therefore, the fault-tolerance of GJETP method is limited. Correlation attack method can avoid this problem, so the recognition performance can be improved in low SNR situations.

#### 7. Conclusions

This paper proposes the methods of utilizing soft information to improve the recognition performance of convolutional encoder parameters. And we propose a formalized estimation of the parameter and synchronization positions. When introducing the soft information the recognition performance can be obviously improved and the simulations show the efficiency of the proposed methods. Besides, we propose a new algorithm to recover the basic parity check matrix by correlation attack. Although this method takes longer elapsed time, it can push the SNR limits of the GJETP method, and some principles are proposed to reduce the searching space. If the channel quality is well, the GJETP method has advantages on short computational delay. For a worse channel quality such that the GJETP does not work, correlation attack method has a significant advantage on its higher fault-tolerance.

#### Conflict of Interests

The authors declare that there is no conflict of interests regarding the publication of this paper.

#### References

- B. Rice, “Determining the parameters of a rate 1/n convolutional encoder,” in
*Proceedings of the International Conference on Finite Fields and Applications*, Glasgow, UK, 1995. - E. Filiol, “Recognition of convolutional encoders over GF(p),” in
*Proceedings of the 6th IMA Conference on Cryptogrophy and Coding*, Cirencester, UK, December 1997. - M. Marazin, R. Gautier, and G. Burel, “Blind recovery of the second convolutional encoder of a turbo-code when its systematic outputs are punctured,”
*Military Technical Academy Review XIX*, vol. 2, pp. 213–232, 2009. View at Google Scholar - F. Wang, Z. Huang, and Y. Zhou, “A method for blind recognition of convolution code based on euclidean algorithm,” in
*Proceedings of the IEEE International Conference on Wireless Communications, Networking and Mobile Computing (WiCOM '07)*, pp. 1414–1417, Shanghai, China, September 2007. View at Publisher · View at Google Scholar · View at Scopus - J. Dingel and J. Hagenauer, “Parameter estimation of a convolutional encoder from noisy observations,” in
*Proceedings of the IEEE International Symposium on Information Theory (ISIT '07)*, pp. 1776–1780, Nice, France, June 2007. View at Publisher · View at Google Scholar · View at Scopus - M. Marazin, R. Gautier, and G. Burel, “Dual code method for blind identification of convolutional encoder for cognitive radio receiver design,” in
*Proceedings of the IEEE Globecom Workshops (GLOBECOM '09)*, Honolulu, Hawaii, USA, November-December 2009. View at Publisher · View at Google Scholar · View at Scopus - M. Marazin, R. Gautier, and G. Burel, “Blind recovery of k/n rate convolutional encoders in a noisy environment,”
*EURASIP Journal on Wireless Communications and Networking*, vol. 2011, article 168, pp. 1–9, 2011. View at Google Scholar - S. Lin and D. J. Costello, “Reliability-based soft-decision decoding algorithms for linear block codes,” in
*Error Control Coding*, J. M. Horton and D. W. Riccardi, Eds., pp. 395–452, Pearson Prentice Hall, Upper Saddle River, NJ, USA, 2nd edition, 2004. View at Google Scholar - L. Ni, F. Yao, and L. Zhang, “A rotated quasi-othogonal space-time block code for asynchronous cooperative discovery,”
*Entropy*, vol. 14, pp. 654–664, 2012. View at Google Scholar - X. Liu and X. Geng, “A convolutional code-based sequence analysis model and its application,”
*International Journal of Molecular Sciences*, vol. 14, pp. 8393–8405, 2013. View at Google Scholar - J. Hagenauer and L. Papke, “Iterative decoding of binary block and convolutional codes,”
*IEEE Transactions on Information Theory*, vol. 42, pp. 429–445, 1996. View at Google Scholar - Z. Huang, M. Chen, and C. Diao, “Low compexity weighted reliability-based iterative decoding of LDPC codes,”
*IEICE Transactions on Communications*, vol. 95, pp. 3572–3575, 2012. View at Google Scholar - J. Jiang and K. R. Narayanan, “Iterative soft-input soft-output decoding of reed-solomon codes by adapting the parity-check matrix,”
*IEEE Transactions on Information Theory*, vol. 52, no. 8, pp. 3746–3756, 2006. View at Publisher · View at Google Scholar · View at Scopus - J. Zhou, Z. Huang, C. Liu, S. Su, and Y. Zhang, “Information-dispersion-entropy-based blind recognition of binary BCH codes in soft decision situations,”
*Entropy*, vol. 15, pp. 1705–1725, 2013. View at Google Scholar - J. Zhou, Z. Huang, S. Su, and S. Yang, “Blind recognition of binary cyclic codes,”
*EURASIP Journal on Wireless Communications and Networking*, vol. 2013, article 218, pp. 1–17, 2013. View at Google Scholar - G. D. Forney Jr., “Structural analysis of convolutional codes via dual codes,”
*IEEE Transactions on Information Theory*, vol. 19, no. 4, pp. 512–518, 1973. View at Google Scholar · View at Scopus