Chargement…
Chargement…
À l'acceptation de i_start, mémorisez le signe du résultat et convertissez les deux entrées en valeurs absolues. Pendant huit cycles, ajoutez le multiplicande décalé lorsque le bit de poids faible du multiplieur vaut 1, décalez le multiplicande à gauche et le multiplieur à droite. Appliquez le signe après la dernière addition.
Les deux entrées sont des compléments à deux sur 8 bits. Le produit est un complément à deux sur 16 bits. o_busy reste actif pendant le calcul et o_done forme une impulsion d'un cycle. Le reset est synchrone et actif à l'état haut.
Le testbench couvre les combinaisons de signes, zéro, -128 * 127 et -128 * -128. La valeur absolue de -128 doit être conservée sans débordement intermédiaire.