Partez d'un version HoMade clean!
Les 11 bits de IPcodes de rdm et fibo pourront être utilisés par la suite ….
On cherche le plus grand diviseur commun de deux nombres.
Or, si un nombre divise deux nombres, alors il divise leur différence.
On calcule donc la différence des deux nombres.
Le PGCD divise le plus petit des deux nombres et leur différence.
On recommence, jusqu'à ce que la différence soit 0.
Le PGCD est alors la dernière différence non nulle obtenue.
A la main en décimal :
Le PGCD de 2648 et 3456 est 8.
Le nombre d'itération est 16
Partie 1 un IP short sur 3 points
1. Définissez un code VHDL utilisant un seul soustracteur et qui à partir de 2 nombres entiers non signés de 32 bits A, B produit 2 sorties sur 32 bits [A - B et B] si A > B et [A et B – A] sinon. Testez-le par simulation avec A = xF et B = x14 et inversement , gardez la fenêtre ouverte. Vérifiez avec le schematic produit par Vivado qu'il n'y a qu'un seul soustracteur.
2. Intégrez ce code dans un IP PGDC_step en lui affectant une valeur d’IP short libre ; sur la pile on trouve B (NIN) puis A (TIN) en sommet ; les résultats étant placés en sommet de pile TOUT et NOUT. Testez-le par simulation, gardez la fenêtre ouverte. ( pgcd (a,b) = pgcd (b,a) )
3. Placez cet IP dans HoMade et exécutez sur la carte en ayant au préalable écrit un programme fsh qui
Vous pouvez essayer avec les valeurs de l'exemple.
Faire valider les 3 questions pendant la séance ou celles que vous avez faites en fin de séances.
Partie 2 un IP long sur 2 points
1. Proposez un IPlong PGCD qui fait la même chose : le calcul de PGCD des deux sommets de pile et produit les deux résultats en sommet de pile PGCD et nombre d'itérations. Cette fois la boucle est dans l’IP . Construire une FSM avec 3 process. Ouvrez le schematic View, l’idéal serait de n’avoir là aussi qu’un seul soustracteur d’implanter et surtout aucun latch!
2. Réécrire le programme fsh avec ce nouvel IP et testez-le sur la carte à nouveau.
Faire valider ces 2 questions avant de sortir.