This github repository consists in a VHDL serial implementation architecture of a reconfigurable fully-connected feed forward deep neural network. This architecture as well as reconfiguration capabilities are inspired to ZyNet package developed by Vipin Kizhepatt.
The DNN consists in layers connected in cascade where every layer triggers the next one when output is computed. Every layer fetches sequentially the inputs from the previous layer. When output is ready the neurons' outputs are fed one by one in a serial way to the next layer.
Internally the layer contains a FSM that implements the control logic of the layer. A layer_CNTR is used to fetch the neurons' weights and previous layer's outputs, to compute the neurons' output layer_CNTR
and is used to serially fetch the layer's output (neurons' output).
The neuron's cumulative sum is progressively computed at every clock cycle. At every clock cycle the weighted product SUM_REG
. When BIAS
is added to the cumulative sum register, the activation function is applied by sending SUM_REG
content to ACT_LOG
entity. At the last step, the ACT_LOG
output is loaded into the OUT_REG
.
The DNN model is trained offline starting from the DNN parameters(number of layer, neurons per layer, activation function type) and training hyperparameters and the VHDL architecture is automatically generated and loaded into the ModelSim project.
The aim of the development of such architecture is the integration with NORM to enable the reconfiguration and evaluation of performance of an hardware-based intermittent inference under uncertain energy environment obtaining I-DNN.
This github repository contains the VHDL architecture developed under two different EDA tools (Vivado and ModelSim).
The Vivado project folder is deprecated. ModelSim is the project to refer to.