Chargement…
Chargement…
Le bloc réalise une petite couche dense d'inférence avec quatre activations d'entrée et deux neurones de sortie.
Équations
sum0 = bias0 + x0*w00 + x1*w01 + x2*w02 + x3*w03sum1 = bias1 + x0*w10 + x1*w11 + x2*w12 + x3*w13y0 = ReLU_sat8(sum0)y1 = ReLU_sat8(sum1)Les entrées et poids sont signés sur 8 bits. Les biais sont signés sur 16 bits. Chaque somme est calculée sur 24 bits avant l'activation.
Le circuit est combinatoire. Il contient huit multiplications, quatre par neurone. Les deux neurones utilisent des ressources séparées et leurs sorties évoluent avec les entrées après le délai combinatoire.
ReLU_sat8 produit 0 pour une somme négative ou nulle, conserve une somme comprise entre 1 et 127, et produit 127 au-delà. Aucun rebouclage signé n'est accepté.
Cette architecture favorise le débit et consomme plus de ressources qu'un neurone séquentiel partagé. Dans un projet à fréquence élevée, les arbres d'addition et l'activation pourraient être pipelinés. Le pipeline ne fait pas partie de cet exercice.
| Signaux | Direction | Largeur | Description |
|---|---|---|---|
i_x0 à i_x3 | Entrée | 8 bits chacun | Activations signées |
i_w00 à i_w03 | Entrée | 8 bits chacun | Poids signés du neurone 0 |
i_w10 à i_w13 | Entrée | 8 bits chacun | Poids signés du neurone 1 |
i_bias0, i_bias1 | Entrée | 16 bits chacun | Biais signés |
o_y0, o_y1 | Sortie | 8 bits chacun | Sorties ReLU saturées, de 0 à 127 |