# Trade-Off Analysis of Hardware Architectures for Channel-Quality Classification Models
## 4 Methods
### Multi-Layer Perceptron  
The MLP comprises three dense layers using the SMOTE-tomek technique [50] with the following hyperparameters: five neurons for the first two layers and one neuron at the output layer since the problem is binary. An ReLU was the activation function for the first two layers, and a sigmoid function was used at the output layer. The RMSprop optimizer, with a batch size of five, demonstrated that the algorithm achieved good results with a small number of samples before updating the parameters: a learning rate of 0.01, a glorot normal weight initialization, and a zero dropout. The MLP architecture contains three layers, input, hidden, and output layers, and is formed mainly by adders and multipliers. The architecture of the MLP architecture is shown in Figure 8.  
Adder and multiplier modules have two data inputs added or multiplied to obtain their corresponding output. The ReLU module was used at the first and second layers of the MLP design. Every neuron is represented as a single module with 15 inputs and 1 output; five neurons in parallel form the first layer. Every neuron of the second layer is represented as a single module with five inputs and one output; five neurons in parallel formed the second layer. A sigmoid activation function was used at the third layer, which contains one neuron, represented as a single module with five inputs and two outputs, called _CLASS0_ and _CLASS1_, which indicate high or low quality, respectively.  
Figure 7: Decision Tree with a Depth of Five.  
Every neuron of the second and third layers contains the same components except the activation function. In total, there are five multiplicative modules, represented by an \(X\), and five addition modules, represented by \"+\", as shown in Figure 9a. The five multipliers and the five adders are represented by a single module called _Multiplier - Adder 2_ (Figure 9b), which has five inputs (_IN_); three control signals, (EN), (CLK), and READY; a CLK input; and one output (OUT).  
The _ReLU_ function was used for the second layer, and the _Sigmoid_ function was used for the third layer. The output of the _ReLU_ function is the maximum value between zero and the input value \(X\); the output is zero when \(X\) is negative, and the output is equal to \(X\) when \(X\) is positive, such that \(relu(X)=max(0,X)\). Every neuron of the first layer (Figure 10a) is composed by a Multiplier-Adder 1 and a ReLU activation function; every neuron of the second layer (Figure 10b) is formed by a Multiplier-Adder 2 and an ReLU activation function; and the neuron of the third layer (Figure 10c) contains a Multiplier-Adder 2 and a _Sigmoid_ activation function.  
Figure 8: Neural Network Hardware Architecture.  
Figure 9: Multiplier Adder Module 1 and its Components: (**a**) Components of the Neurons of the Second and Third Layer; (**b**) Multiplier-Adder 2.  
The _ReLU_ activation function was formed by a comparator, which has a stored value of zero. Then, the input is compared, and if it is greater than zero, the output will take the value of the input; if not, the output will take a value of zero. Five neurons formed the first layer (input layer), which receives 15 inputs that correspond to channel quality information. The outputs of the first layer are connected to the inputs of the second layer (hidden layer), which also has five neurons. The outputs of the second layer are connected to the inputs of the third layer (output layer). The last layer determines which class will be activated, CLASS0 (high CQI) or CLASS1 (low CQI).