Chargement…
Chargement…
Le bloc calcule ReLU(bias + somme(value_k * weight_k)) sur une suite de couples signés 8 bits. Le biais est signé sur 16 bits.
Datapath imposé
La sortie vaut 0 si la somme finale est négative ou nulle, la somme si elle est comprise entre 1 et 127, et 127 au-delà. L'exercice réalise uniquement l'inférence. Les poids sont fournis par le bloc amont et ne sont pas appris dans le FPGA.
Comportement
i_start est accepté lorsque o_ready='1'. Ce front charge i_bias et démarre une nouvelle somme.i_value et i_weight sont consommés uniquement lorsque i_valid='1'. Ils commencent au plus tôt au cycle suivant i_start.i_last='1' marque le dernier couple et n'est pris en compte qu'avec i_valid='1'.o_done pulse pendant un cycle avec o_value.i_valid='0' ne changent pas l'accumulateur.| Signal | Direction | Largeur | Description |
|---|---|---|---|
i_clk | Entrée | 1 bit | Horloge système |
i_reset | Entrée | 1 bit | Reset asynchrone actif haut |
i_start | Entrée | 1 bit | Initialise un nouveau neurone |
i_bias | Entrée | 16 bits | Biais signé |
i_valid | Entrée | 1 bit | Couple valeur/poids valide |
i_last | Entrée | 1 bit | Dernier couple de la somme |
i_value | Entrée | 8 bits | Activation signée |
i_weight | Entrée | 8 bits | Poids signé |
o_ready | Sortie | 1 bit | Le bloc peut accepter i_start |
o_done | Sortie | 1 bit | Résultat valide pendant un cycle |
o_value | Sortie | 8 bits | ReLU saturée, de 0 à 127 |