Chargement…
Chargement…
Au front où i_start='1' et le bloc est libre, mémorisez les quatre opérandes. Additionnez ensuite une opérande par cycle dans un accumulateur 18 bits. Après la quatrième addition, placez la somme sur o_sum, libérez o_busy et produisez une impulsion o_done d'un cycle. Ignorez i_start pendant un calcul.
i_a à i_d sont non signés sur 16 bits. o_sum fait 18 bits pour conserver la somme maximale 4 * 65535. i_rst est synchrone et actif à l'état haut. Il remet sorties, accumulateur et contrôle à zéro.
Le testbench couvre une petite somme, les quatre valeurs maximales, des zéros, le protocole busy/done et la largeur complète du résultat.