# A High Throughput Hardware Architecture for Parallel Recursive Systematic Convolutional Encoders
## 2 Materials and Methods
### RSC Encoders Parallelization Approach  
Increasing the parallelism of RSC encoders means to make it able to process \(k\) inputs at time. This means that in absence of puncturing, the vector the RSC encoder produces \(k\) vectors \(Y[n]\) relative to the \(k\) inputs. In addition, it shall be considered that a \(k\)-dimensional input vector produces and update on the \(S[n]\) of \(k\) steps at time. For such reason, a \(k\) parallel RSC encoder can be described by using an equivalent \(A^{\prime}B^{\prime}C^{\prime}D^{\prime}\) model shown in Equation (12):  
\[\left\{\begin{aligned} S[n+k]=A^{\prime}\cdot S[n]+B^{ \prime}\cdot\begin{pmatrix}u[n]\\ \dots\\ u[n+k-1]\end{pmatrix}\\ \begin{pmatrix}Y[n]\\ \dots\\ Y[n+k-1]\end{pmatrix}=C^{\prime}\cdot S[n]+D^{\prime}\cdot\begin{pmatrix}u[n]\\ \dots\\ u[n+k-1]\end{pmatrix}\end{aligned}\right., \tag{12}\]  
where \(A^{\prime},B^{\prime},C^{\prime}\) and \(D^{\prime}\) are the parallel matrices. In particular, the latter can be generated starting from the original \(A\),\(B\),\(C\),\(D\) matrices by exploiting their proprieties and the information on the RSC encoder topology. For example, to calculate the \(Y[n+k-1]\) output as a function of the \(S[n]\) state and the \(k\) inputs \((u[n],...,u[n+k-1])\) it is sufficient to substitute the term \(S[n+k-1]\) in the standard ABCD model equation (Equation (7)) for the state \(S[n+k]\) with the same ABCD equation for the state \(S[n+k-1]\), and to proceed recursively.  
Equations (13)-(16) show the expressions of the matrices \(A^{\prime}\),\(B^{\prime}\),\(C^{\prime}\) and \(D^{\prime}\) as function of \(A\),\(B\),\(C\),\(D\).  
\[A^{\prime}=A^{k}, \tag{13}\]  
\[B^{\prime}=(A^{k-1}\cdot B\ A^{k-2}\cdot B\dots\ B), \tag{14}\]  
\[C^{\prime}=\begin{pmatrix}C\\ \dots\\ CA^{k-1}\end{pmatrix}, \tag{15}\]  
\[D^{\prime}=\begin{pmatrix}D&0&0&\cdots&0\\ C\cdot B&D&0&\cdots&0\\ &\ddots&&\\ C\cdot A^{k-1}\cdot B&C\cdot A^{k-2}\cdot B&\cdots&C\cdot B&D\end{pmatrix}. \tag{16}\]  
In particular, \(A^{\prime}\) shall be calculated by exploiting the A matrix properties. The latter can be derived directly from the LFSR theory and are described in Equations (17) and (18):  
Figure 2: Block diagram of the ABCD matrices model of an RSC encoder.  
\[A^{2^{N}-1}=I_{N\times N} \tag{17}\]  
\[A^{k}=A^{k}\mod(2^{N-1}) \tag{18}\]  
where \(I_{N\times N}\) is the \(N\times N\) identity matrix and the operator _mod_ indicates the module operation. Therefore, the sequence of \(A^{k}\) matrices are a finite set of the \(2^{N}-1\) matrices: \(A^{1}\), \(A^{2}\), \(A^{3}\),..., \(A^{2^{N}-2}\), \(I_{N\times N}\).  
Figure 3 shows the block diagram of a \(k\)-parallel RSC encoder.  
In Section 2.1 we underlined that it possible to increase the code rate to improve the efficiency of the telecommunication system by puncturing the output code. In particular, it is important to underline that for a parallel RSC encoder particular puncturing schemes exist whose implementation do not require any additive logics; on the contrary, they also allow to reduce the complexity of the system. Indeed, let us express the puncturing scheme through a binary vector, whose null elements represent the punctured outputs. In this way, the implementation of puncturing schemes whose representative vector has a length equal to the number of rows of the \(C^{\prime}\) and \(D^{\prime}\) matrices is trivial. Indeed, to realize the puncturing, it is sufficient not to implement logics relative to rows of the \(C^{\prime}\) and \(D^{\prime}\) matrices having indexes equal to ones of the null elements in the puncturing scheme.