Chargement…
Chargement…
Le circuit applique une division binaire restauratrice. Il traite un bit du dividende par cycle au lieu d'utiliser un grand diviseur combinatoire.
Comportement
i_start est acceptée uniquement lorsque o_ready='1'.i_dividend et i_divisor sont mémorisés au démarrage.o_done pulse pendant un cycle lorsque o_quotient et o_remainder sont prêts.o_divide_by_zero et o_done pulsent sans lancer les huit itérations. Le quotient vaut 0 et le reste reprend le dividende.À chaque itération :
1. décaler le reste partiel et y faire entrer le bit de poids fort du dividende ;
2. comparer ce reste étendu au diviseur ;
3. soustraire le diviseur si la comparaison est positive ;
4. décaler le quotient et y insérer le bit obtenu ;
5. décaler le dividende vers le bit suivant.
Après huit itérations, le quotient et le reste doivent respecter dividend = quotient * divisor + remainder, avec remainder < divisor.
| 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 | Démarre une opération lorsque le bloc est prêt |
i_dividend | Entrée | 8 bits | Dividende non signé |
i_divisor | Entrée | 8 bits | Diviseur non signé |
o_ready | Sortie | 1 bit | Le bloc peut accepter une nouvelle opération |
o_done | Sortie | 1 bit | Résultat valide pendant un cycle |
o_divide_by_zero | Sortie | 1 bit | Erreur de division par zéro pendant un cycle |
o_quotient | Sortie | 8 bits | Quotient entier |
o_remainder | Sortie | 8 bits | Reste entier |