Chargement…
Chargement…
Utilisez un accumulateur signé A sur 9 bits, le multiplicande signé M sur 9 bits, le registre Q sur 8 bits et le bit Q-1. Pour chaque étape: Q0,Q-1=01 ajoute M à A; 10 soustrait M; 00 ou 11 ne change pas A. Effectuez ensuite un décalage arithmétique à droite du groupe A,Q,Q-1.
Chargez les registres quand i_start='1' et que le bloc est libre. Faites exactement huit étapes. Le produit signé 16 bits est la partie utile de A,Q après le dernier décalage. o_done dure un cycle et i_start est ignoré pendant o_busy.
Le testbench couvre les quatre combinaisons de signes, zéro et les extrêmes -128, 127.