Réponse leçon 9 Fizzim

Question 1 : il suffit de changer dans prog.coe le code ADD c.a.d. x1100 par le code de l’instruction que vous voulez tester. Replacez le code résultant prog.coe dans la mémoire de programme insmem, regénérez l'IP_core et mettez à jour les niveaux supérieurs. Enfin après synthèse , exécutez sur la carte.

Question 2 : Voici le fichier S3asm.bat qui contient l'assembleur de toutes les instructions utiles pour cette 9ième leçon.

s/\(.*\)/\U\1/

s/BEGIN/memory_initialization_radix=16; \n memory_initialization_vector= \n 0000/

/--/d

s/NOP/0000/

s/MOV/00/

s/SUBC/1000/

s/SUB/1200/

s/ADDC/1300/

s/ADD/1100/

s/INV/1400/

s/AND/1500/

s/OR/1600/

s/INC/1700/

s/CPL2/1800/

s/CONCAT/1900/

s/ID/1A00/

s/ZERO/0/

s/R1/1/

s/R2/2/

s/R3/3/

s/R4/4/

s/R5/5/

s/RLED/6/

s/RSW/7/

s/R7SEG/8/

s/RSRC1/9/

s/RSRC2/A/

s/RDEST/B/

s/RAM/C/

s/RDM/D/

s/CO/E/

s/RI/F/

s/ //g

s/END/;/

Question 3 :

Il vous suffit de reprendre le schéma de l'incrément INC mais cette fois , il faut faire une addition de -1 sans retenue, la constante en complément à deux est égale à xFFFF et la retenue CI à x0 ou Gnd. Voici le circuit que vous pouvez simuler puis insérer dans votre ALU une fois le symbole généré. Ajoutez alors DEC dans votre assembleur avec le bon code suivant la position de DEC dans votre arbre de mux2x16.

Questions 4 :

La multiplication de deux nombres non signés sur 8 bits, de x00 à x FF, produit un nombre signé de 16 bits de x0000 à xFE01.

Pour réaliser ce multiplieur, vous pouvez utiliser ISE et son générateur d'IP. créez une nouvelle source Mul8 de type Math Functions>Multipliers>Multiplier.

Avec Next et Finish vous lancez le générateur d'IP. Vous pouvez dans le premier écran spécifier les deux entrées sur 8 bits et de mode unsigned.

Sur le 3ième écran, il vous faut spécifier le mode pipeline à 0 afin de générer un circuit combinatoire, sans clock. Finissez par Generate.

Vous pouvez maintenant placer une instance de ce nouveau composant dans votre ALU en utilisant 2 Bus Tap sur a(7:0) et b(7:0) . Ensuite ajouter dans votre assembleur le code correspondant en fonction de la position dans l'arbre de mux2x16. Ici les codes choisis sont :

s/DEC/1B00/

s/MUL8/1C00/