2009 / 2010 Projets IMA3 - Filière systèmes communicants Introduction au FPGA Spartan 3 Alexandre Boé, Nicolas Wichmann, Thomas Vantroys, Xavier Redon
Présentation de la carte Leds Port de FPGA programmation (field-programmable gate array) Port VGA Port d'extension Afficheurs 7 segments Liaison série Face avant Boutons-poussoir Mémoire RAM Horloge 50 MHz Face arrière Interrupteurs
Présentation de la carte Un FPGA est un composant numérique reconfigurable composé de différents circuits logiques que l'on peut interconnecter La sélection des circuits logiques utilisés ainsi que leur interconnexion est faite à l'aide d'un logiciel de conception, Xilinx ISE 8.2i (Integrated Software Environment) Après conception et simulation du système, le «programme» est implémenté dans le FPGA 3
Mini-projet : le but de ce mini-projet est de prendre en main le logiciel de conception puis d'implémenter la fonction réalisée. Le mini-projet consiste à : lire l'état de quatre des huit interrupteurs de la carte FPGA, de comparer les deux premiers bits avec les deux autres et d'allumer la led n 7 s'ils sont égaux, lire l'état des boutons-poussoir n 0 et 2 et afficher leur état sur les leds n 0 et 2, lire l'état des boutons-poussoir n 1 et 3 et afficher l'inverse de leur état sur les leds n 1 et 3, afficher l'horloge sur la led5 4
Démarrage du logiciel : Démarrer > Tous les programmes > Xilinx ISE 8.2i > Project Navigator Création du projet : File > New project Renseigner les nom et répertoire Choisir dans "Top Level Source Type", schematic Renseigner le type de FPGA, etc. (voir figure) puis : Next Next Finish Le projet est créé. 5
Création d'une feuille : Project > New Source Renseigner le nom de la feuille et son type ("schematic", voir figure) Puis Finish 6
Vous obtenez : Informations sur le symbole Symboles logiques disponibles Feuille crée Fichiers du projet Actions possibles sur les fichiers 7
Cliquez sur l'onglet de votre feuille (zone du milieu) Puis sur l'onglet "Symbols" Placer les symboles "comp2" (comparateur deux bits), "buf" (buffer d'isolation) et "inv" (porte non) : ce sont les portes logiques que nous allons utiliser dans ce mini-projet. Maintenant, placez les fils d'interconnexion (en premier!) et les ports d'entrées/sorties (barre d'outil en haut à gauche, cf. figure) Port d'entrées/sorties Fil d'interconnexion Assignation d'un nom à un fil 8
Sorties Entrées Entrées/Sorties : Permettent de relier le FPGA à l'extérieur Buffers : Permettent d'isoler deux fils Bus : Ensemble de fils (simplification du schéma) "Bus tap" : permet de sélectionner un fil d'un bus 9
Renommer les entrées/sorties afin de les rendre plus compréhensible : Double-cliquez sur le port d'entrée ou de sortie Changez le nom du port Pour le bus, le nom comprend, en plus, le nombre de bits le composant, ici : interrupteur(3:0) Bit de poids fort en 1er, de poids faible en dernier 10
Renommez les 4 fils issus du bus (cf. diapositive 8). Le nom des fils d'interconnexion issus du bus ont le même nom que le bus, ici : Interrupteur(0) pour le premier bit par exemple Entrez le nom dans le champ approprié Sélectionnez "Increase the name" Cliquez sur le premier fil à renommer, Puis sur le second, Le nom s'incrémente automatiquement. 11
Vous obtenez le schéma final suivant : Remarque : Le bus est plus épais 12
Cliquez sur l'onglet "Sources", sélectionnez le fichier, puis cliquez sur l'onglet "Processes" Vous pouvez vérifier les règles de dessin Vous allez : Donner la correspondance entre les ports et les pattes du FPGA Synthétiser le schéma Implémenter le schéma Générer le fichier permettant de programmer le FPGA 13
Direction de l'e/s Double cliquez sur "Assign Package Pins" Remplissez la colonne "Loc" avec le nom de la patte, notée sur le FPGA ou dans la notice Par exemple : K12 pour la led0 Patte du FPGA Enregistrez Sélectionnez XST default <> Nom des E/S Fermez le programme PACE Lancez la synthèse/implémentation/génération. Pour cela, cliquez droit puis "Rerun all" Double cliquez sur "Configure Device (impact)" 14
Choisissez l'option par JTAG Puis Finish Puis choisissez le fichier de programmation (.bit) FPGA (mémoire RAM) Mémoire Flash (non utilisé) Puis open Puis Bypass Si la programmation échoue, recommencez l'opération Testez votre programme! 15
Il est aussi possible de faire une simulation du système : Sélectionnez la feuille Créez une nouvelle source Choisissez "Test Bench Waveform" Entrez un nom Puis "Next", "Next" et "Finish" "Clock high time" = 20 "Clock low time" = 20 "Input setup time" = 10 "Output Valid delay" = 10 "Offset" = 0 "GSR (FPGA)" = coché 16
Vous pouvez changer les signaux (tant entrées que sortie) Dans "Process", "Generate Expected Simulation" permet de démarrer la simulation 17
La fenêtre de simulation permet de voir l'état des différents signaux, notamment l'horloge. L'état des boutons-poussoir, des interrupteurs (ou des entrées) peut être changé en cliquant sur les chronogrammes 18