# Blind Recognition of Forward Error Correction Codes Based on a Depth Distribution Algorithm
## 6 Depth Distribution Algorithm Based on Parallel Convolutional Turbo Codes
### Recognition Algorithm of Parallel Convolutional Turbo Coding  
The blind recognition of parallel cascaded convolutional Turbo codes is also based on coding reconstruction, which establishes the corresponding relationship with linear block codes through reconstruction, so that the recognition method of linear block codes can be used on the identification of Turbo coding types. This section mainly analyzes the parallel cascaded convolutional Turbo codes as shown in Figure 6 and gives the depth distribution characteristics of the code words of this type of Turbo code, and then realizes the recognition of classical PCCC coding types. First, we describe the classical PCCC. \(k\) is the number of information sequence bits; \((n_{1}-k)\) is the number of supervisory positions RSC1 and \((n_{2}-k)\) is the number of supervisory positions RSC2. The interleaving length is 1. Assuming that there is no deletion structure in the PCCC encoder, that RSC2 only outputs supervised check bits and that the transmission channel is error-free, the code word length of the encoder output is \((n_{1}+n_{2}-k)\). In this section, the convolutional code recognition method is used to identify and analyze the encoder RSC. According to the difference of interleaves, the ones in PCCC encoders can be divided into two categories: packet interleaves and convolution interleaves. In this paper, the interleaving mode of interleave is defined as \(F(x)\), and \(l\) is the weaving length. We define \(\theta\in Z^{*}\)\(i\in[0,l-1]\), which leads to Equation (35):  
\[F(\theta l+i)=\theta l+F(i) \tag{35}\]  
For the information bit sequence \(M\) input by the PCCC encoder is defined as:  
\[M=\left[ \begin{array}{cccc}m_{1}^{0}&m_{2}^{0}&\cdots&m_{k}^{0}\\ m_{1}^{1}&m_{2}^{1}&\cdots&m_{k}^{1}\\ \vdots&\vdots&\ddots&\vdots\end{array} \right] \tag{36}\]  
We construct an interleave with the length of \(k(D+1)\), and the sequence of raw information bits \(M\) passes through the interleave. A new matrix \(M^{*}\) is generated according to the mapping relation of \(F(x)\), \(M^{*}\) is shown as Equation (36). We assume \(i\in[0,k]\) exists, which makes the output code word equal to the original sequence of input information bits interwoven by the interleave, and then Equation (37) can be expressed as:  
\[C^{(i)}(n_{e},v_{e},D_{e},l_{e})=\left[ \begin{array}{cccc}m^{F^{-1}(Dk+i-1)} &m^{F^{-1}(D(k-1)+i-1)}&\cdots&m^{F^{-1}(i-1)}\\ m^{F^{-1}(i-1)+l}&m^{F^{-1}(Dk+i-1)}&\cdots&m^{F^{-1}(k+i-1)}\\ \vdots&\vdots&\ddots&\vdots\\ m^{F^{-1}(Dk+i-1)+l}&m^{F^{-1}(D(k-1)+i-1)+l}&\cdots&m^{F^{-1}(i-1)+l}\\ \vdots&\vdots&\vdots&\vdots\end{array} \right] \tag{37}\]  
Turbo codes are similar to the reconstruction of linear block codes and convolutional codes in that equivalent check vectors are obtained from the code word matrix. \[C_{i}(n_{e},v_{e},D_{e},l_{e})X\] \[=(C^{(1)}(n_{e},v_{e},D_{e},l_{e})\Big{|}C^{(2)}(n_{e},v_{e},D_{e },l_{e})\Big{|}\cdots\Big{|}C^{(k+i)}(n_{e},v_{e},D_{e},l_{e}))X \tag{38}\]For the code-word matrix group in Equation (38), the preceding \(k\) subcode matrix of the code-word matrix group contains consecutive \(l\) bits of an information sequence, so the following constraint relation can be obtained:  
\[ \begin{array}{l}C_{i}^{*}(n_{e},v_{e},D_{e},l_{e})X\\ =\left[\begin{array}{ccccc}m^{l-1}&\cdots&m^{0}&c_{k+i}^{D}&\cdots&c_{k+i}^{0} \\ m^{2l-1}&\cdots&m^{l}&c_{k+i}^{2D+1}&\cdots&c_{k+i}^{D+1}\\ \vdots&\ddots&\vdots&\vdots&\ddots&\vdots\end{array}\right]X\\ =0\end{array}  \tag{39}\]  
We selected a row vector from \(C^{(1)}(n_{e},v_{e},D_{e},l_{e})\Big{|}C^{(2)}(n_{e},v_{e},D_{e},l_{e})\Big{|} \cdots\Big{|}C^{(k+i)}(n_{e},v_{e},D_{e},l_{e})\Big{|}\cdots\Big{|}C^{(k+i)}(n_{ e},v_{e},D_{e},l_{e})\Big{|}\) whose row sequence number is \((vD+1)\), and \(v\) is the positive integer. The corresponding equivalent matrix \(M(n_{e},v_{e},D_{e},l_{e})\) can be obtained by interweaving the codes in each selected row vector.