SUJET DU TP – C - Bertrand LE GAL

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