# A High Throughput Hardware Architecture for Parallel Recursive Systematic Convolutional Encoders
## 2 Materials and Methods  
### RSC Encoders Introduction  
RSC encoders are realized through linear feedback shift registers (LSFRs). The latter are devices described by a set of generator polynomials whose coefficients belong to Galois fields of two elements (GF(2)). In particular, in Equation (1) we define the feedback polynomial:  
\[g(x)=\sum_{i=0}^{N}g_{i}\cdot x^{i}. \tag{1}\]  
The unitary coefficients \(g_{i}\) in \(g(x)\) indicate which present states contribute to determinate the successive ones. The presence of a feedback polynomial makes the encoder recursive. Moreover, for each input bit the RSC produces \(N_{o}\) outputs, a set of \(N_{o}-1\) feedforward polynomials are also defined as in Equation (2):  
\[h_{k}(x)=\sum_{i=0}^{N}h_{k^{i}}\cdot x^{i},k\in\{1,2,...,N_{o}-1\}, \tag{2}\]  
where \(h_{k}(x)\) is the polynomial producing the \((k+1)^{th}\) RSC output, whose coefficients are indicated as \(h_{k^{i}}\). Moreover, the input bit is directly reproduced (systematic output) as output together with the other \(N_{o}-1\) redundant bits in the output code. For such reason, the encoder is defined as systematic. One of the merit parameters which describes the RSC encoder is the code rate, defined in Equation (3):  
\[R\triangleq\frac{K}{N_{o}}, \tag{3}\]where \(K\) is the number of information bits. The more \(R\) is closer to 1, the lower is the amount of redundant data introduced in the encoder output code. For such reason, values of \(R\) close to 1 guarantee lower performances in terms of BER. However, values of \(R\) much lower than 1 lead to a low efficiency of the telecommunication system, since many sources are dissipated to transmit redundant data. A trade-off between BER performances and efficiency is reached by discarding some bits of the output code depending on a fixed puncturing scheme [20; 21]. To better describe the architecture of a RSC encoder, we can consider a RSC encoder with \(R=\frac{1}{2}\) and no puncturing (\(N_{o}=2\)); the same considerations can be extended to RSC encoders with different values of \(R\). In this case, only one redundant output is generated by a single feedforward polynomial. Let us define the maximum degree between \(h(x)\) and \(g(x)\) as \(L\). In this condition, the RSC encoder is realized by using \(N=L-1\) flip-flops, linked in a shift-register configuration. A feedback network composed by the flip-flops outputs feed the shift-register input together with the network input. When a coefficient \(g_{i}=1\), the output of the \((i-1)^{th}\) flip flop is taken in the feedback network. Moreover, since we want \(g(x)\) to be a maximal length polynomial, \(g(0)\) and \(g(N)\) shall be unitary. In the same way, when \(h_{i}=1\), the output of the \((i-1)^{th}\) contributes to create the redundant output \(c_{1}\). If \(h_{0}=1\), the input \(u[n]\) is considered in the generation of the redundant output; otherwise, only the flip-flop states are used. Figure 1 shows the architecture of an RSC encoder with \(R=\frac{1}{2}\). The systematic output \(c_{0}[n]\) is generated through a direct connection with the input \(u[n]\). Equation (4) shows an alternative form to describe the generators of a RSC encoder with \(R=\frac{1}{2}\):  
\[G(x)=\left(1\quad;\quad\frac{h(x)}{g(x)}\right) \tag{4}\]  
where the terms 1 and \(\frac{h(x)}{g(x)}\) indicate respectively the unitary generator functions producing the outputs \(c_{0}[n]\) and \(c_{1}[n]\). To introduce the equivalent ABCD model, let us consider the the vector \(S[n]\) containing the information on the flip-flop states, shown in Equation (5). \[S[n]=(d_{0}[n]\,d_{1}[n]\,d_{n-1}[n])^{T}, \tag{5}\]  
where \(d_{i}[n]\) indicates the state of the flip-flop \(i\). Since the RSC encoder is composed by N flip-flops, \(S[n]\) can encode \(2^{N}\) possible combinations of states. In the same way, it is possible to use a vector \(Y[n]\) to describe the encoded outputs \(c_{0}[n]\) and \(c_{1}[n]\), as illustrated in (6).