Année 2013-2014 Semestre S9 CONCEPTION NUMERIQUE AVANCEE EN-325 BERTRAND LE GAL FILIERE ELECTRONIQUE OPTION : SE SUJET DU TP – COMPLEXITE MATERIELLE DES RESSOURCES USUELLES Pour l’ensemble du TP le circuit à spécifier pour les propriétés des projets est le : VIRTEX-4 XCL4VSX35-FF668-10 OBJECTIFS DU TP La comparaison de la complexité de mise en œuvre des opérateurs arithmétiques élémentaires sur une technologie FPGA et la comparaison des performances obtenues avec celles d’opérateurs flottants permettra une meilleure compréhension des besoins de codage en virgule fixe. COMPTE RENDU Aucun compte rendu ne doit être rendu à la fin des séances de TP. Toutefois, la rédaction d’un rapport d’expérimentation détaillant les aspects étudiés et les constatations est a envisager. En effet l’examen de EN325 porte en partie sur les observations et le travail effectués en TP. Remarque : Il est vivement conseillé de faire un projet ISE pour chaque circuit ! MULTIPLICATION D’UN NOMBRE PAR UNE CONSTANTE CODEE SUR 10 BITS Dans les exemples suivants la constante vaut le nombre décimal 100 (mais vous pouvez tester une autre constante) 1. Réalisez un premier multiplieur simple d’un mot codé sur N bits avec une constante codée sur 10 bits en utilisant une description comportementale (pensez à utiliser la librairie ieee.numeric_std.all), simulez le design avec ModelSim (en prenant N=8 par exemple). RECUPERER LE CODE VHDL SUR LE SITE INTERNET DE VOTRE ENSEIGNANT ! 2. Dans les options de synthèse décocher la case « Add IO buffers » afin de supprimer l’insertion des pattes d’E/S du calcul du chemin critique. Positionnez le paramètre « DSP48 usage » à la valeur « off ». Comment les multiplieurs vont-ils être synthétisés ? Vous le vérifierez en regardants les schémas RTL et technologique du circuit ainsi synthétisé. Pour N=8, 16, 24, 32 et 64, notez les résultats de synthèse obtenus : − ressources du composant utilisées (nombre de blocs DSP et/ou de slices), p. 1/3 − fréquence maximale (à partir de l’estimation du chemin critique), − Ces informations sont disponibles dans le rapport de synthèse fourni par ISE 3. Faire une synthèse de l’ensemble des résultats obtenus (entre autre en utilisant des courbes taille de la donnée en entrée/fréquence max, ressources utilisées). MULTIPLICATION ET ADDITION DE DEUX NOMBRES SIGNES 4. Maintenant vous vous focaliser sur l’implantation d’un multiplieur combinatoire manipulant des nombres signés codés en complément à 2. La description VHDL du multiplieur vous est fournie par votre enseignant. Faites varier la largeur des mots d’entrée avec les valeurs suivantes : 8 bits, 16 bits, 24 bits, 32 bits et 64 bits. Forcez le synthétiseur à utiliser seulement des éléments logiques ; puis des Xtreme DSP Slice (DSP48). 5. Notez dans un tableau les résultats de synthèse obtenus pour chaque largeur de mots et comparez les résultats dans les deux cas. Vous pouvez représenter les résultats sous forme de courbes. 6. Ecrivez un additionneur combinatoire manipulant des nombres signés. Faites varier la largeur des mots d’entrée avec les valeurs suivantes : 8 bits, 16 bits, 24 bits, 32 bits et 64 bits. Remarque : Dans cette expérience, l’utilisation de blocs DSP48 n’a aucune incidence sur l’implantation matérielle des additionneurs. 7. Superposez les résultats obtenus avec ceux des multiplieurs afin de comparer les performances. DIVISION DE 2 NOMBRES ENTIERS 8. Ecrivez un diviseur entier non signé sur 8 bits (pour les 2 entrées) en VHDL. Vérifiez sont fonctionnement sous ModelSim et synthétisez le à l’aide d’ISE pour évaluer ses performances. 9. Récupérez la description du diviseur 32b fourni par votre enseignant. Evaluez à ses performances. Modifiez la taille des données (16 bits) et recommenez. 10. Concluez sur le cout des opérations de division vis a vis des opérateurs d’addition et de multiplication MULTIPLICATION DE 2 NOMBRES FLOTTANTS (32 BITS) Nous allons tout d’abord observer la manière dont est réalisé une multiplication flottante entre deux nombres. Le format de codage des nombres flottants sur 32 bits est décrit dans la figure suivante : Votre travail sera de comprendre comment est réalisée la multiplication. Pour cela vous aurez à votre disposition le code VHDL décrivant l’opération. p. 2/3 11. Téléchargez le fichier VHDL décrivant la réalisation de la multiplication flottante de 2 nombres codés sur 32 bits (IEEE754_MUL). Analysez le code VHDL et dessinez l’architecture matérielle mise en œuvre. 12. Ecrivez un testbench afin de vérifier le bon fonctionnement de la multiplication flottante. Afin de générer les stimulis d’entrées de la multiplication vous utiliserez le programme développé par votre enseignant (IEEE754_TOOLS) ou bien ce lien internet. 13. Faire une synthèse du multiplieur flottant sous ISE afin d’estimer ses performances (slices, chemin critique, fréquence et débit). 14. Comparez les performances relevées avec celles des multiplieurs entiers. ADDITION DE DEUX NOMBRES FLOTTANTS 15. Téléchargez le fichier VHDL décrivant la réalisation de l’addition flottante de 2 nombres codés sur 32 bits (IEEE754_MUL). Analysez le code VHDL et dessinez l’architecture matérielle mise en œuvre. 16. Ecrivez un testbench afin de vérifier le bon fonctionnement de l’additionneur. 17. Faites une synthèse de l’additionneur flottant sous ISE afin d’estimer ses performances. 18. Comparez les performances relevées avec celles obtenues précédemment. AMELIORATION DES PERFORMANCES Les performances de opérateurs flottants peuvent être améliorées en ajoutant par exemple des tranches de pipeline dans le composant (réduction des chemins critiques). Nous ne réaliserons pas cette étape fastidieuse manuellement dans le cadre de ce TP. 19. Utilisez l’outil Core Generator, afin d’utiliser les composants matériel intégrés dans l’outil de chez Xilinx. Développez plusieurs solutions de multiplieurs et d’additionneurs afin de regarder les compromis surface & débits accessibles. 20. Ecrivez un testbench afin de vérifier le bon fonctionnement des composants que vous générez avec l’outil Core Generator. 21. Synthétisez les composants et notez les résultats obtenus 22. L’utilisation de Core Generator est elle intéressantes vis à vis des opérations décrites manuellement ? Dans quels cas ? Quel est son cout ? CONCLUSION ET SYNTHESE 23. Faire une synthèse de l’ensemble des résultats obtenus. p. 3/3
© Copyright 2025 ExpyDoc