Cyclone QuartusII design Cyclone Quartus base Quartus II - Schematic Objectif Moyens Préliminaire Théorie Matériel Durée Etre capable de réaliser et simuler avec Quartus II un compteur en mode schématique Logiciels QuartusII Logique de base, architecture de FPGA FPGA Quartus II 4 périodes Introduction Pour réaliser la configuration d une logique programmable complexe (FPGA), il est nécessaire de fournir un fichier contenant la description des logiques internes et des routages des signaux. Heureusement ce travail n est pas effectué «à la main» mais à l aide d outils de synthèse et placement/routage automatiques. Pour décrire le fonctionnement désiré, plusieurs approches sont possibles et disponibles, par exemples : Schéma logique (portes élémentaires (AND, NAND, OR, ), bascules (DFF, TFF, ) Schéma logique avec des éléments de librairies plus complexe (compteurs, registres, multiplexeurs, ) Langages de conceptions (VHDL, Verilog) Diagrammes temporelles Machines d états Assemblage de bloc fonctionnel avec bus interne (SOPC Builder et librairie de composants (interfaces programmables, processeurs, )) Langage de haut niveau (Esterel, SystemC, SystemVerilog, ) La première étape étant de concevoir ce que l on désire réaliser avec l une ou l autre, voire plusieurs des méthodologies ci-dessus. Dans ce laboratoire, un compteur sera développé et simulé pour une logique programmable Altera Cyclone et simulée, ceci avec les outils de développement Quartus II d Altera (http://www.altera.com). En premier lieu le compteur sera réalisé en schématique. Dans une étape prochaine, le design sera réalisé en VHDL et exécuté sur la carte FPGA Cyclone du robot du LSN. 2 Carte FPGA Cyclone Cette carte est la carte de traitement du robot Cyclone. Elle est basée sur une FPGA Cyclone EPC2Q240C8 d Altera. La FPGA possède 2'000 éléments logiques et 234 kbits de mémoire SRAM et 73 I/O pins. R.BeuchatW:\Labo\Documents\_Laboratoire_SysNum\Enonces_Labo-Cours\Labo_Quartus_Robot_Cyclone\Labo_FPGA_Schematic_Counter_0_.doc Créé le 24/09/08 Impression le 2/09/ Modifié le 2/09/ 3:09 Version [0.0]
Laboratoire de Systèmes Numériques 2 QuartusII-schematic Figure Carte FPGA Cyclone Il y a également : 64 Moctets de mémoire SDRAM externes une mémoire Flash série EPCS4 pour la configuration 2 switchs utilisateur 2 LEDs utilisateur Connecteur caméra Connecteur port parallèle (type PC) partagé avec bus Mubus Un connecteur extension 8 bits (PortA), un de 5 bits + 2 bits (Port B) 2 interfaces série, un SPI 2 switchs ON/OFF 3 Développement à réaliser L objectif est de revoir les notions de logique synchrone et de les appliquer sur la FPGA. Un compteur de 4 bits est à développer «à la main», par table de vérité Karnaugh schématique. Le schéma développé est à introduire sur un projet sous QuartusII et sera compilé puis simulé avec un outil graphique. Le résultat de la logique peut être visualisé sous forme «RTL» (Register Transfer Level), c est-à-dire sous forme de registres (bascule D) de mémorisation et synchronisation, et de logique entre ces bascules. Le résultat peut également être visualisé sous forme d implémentation en fonction de la logique programmable utilisée (ex. FPGA à look up table). L implémentation physique est visible sous forme de placement dans le circuit et visualisation possible des délais de transferts des signaux. La simulation peut être : Fonctionnelle et seules les fonctions logiques nous intéresse, c est-à-dire si la logique est correcte Temporelle, où nous désirons en plus vérifier les relations temporelle du design. 3. Compteur Un compteur de 4 bits est à concevoir. Il compte 0 2 3 4 5 6 7 8 9 0 Il a en entrée les signaux : Clk, horloge nreset, signal de remise à 0, actif au niveau bas ( 0 ). Et en sortie : Q[3]..Q[0], les 4 signaux du compteur R.BeuchatW:\Labo\Documents\_Laboratoire_SysNum\Enonces_Labo-Cours\Labo_Quartus_Robot_Cyclone\Labo_FPGA_Schematic_Counter_0_.doc
Laboratoire de Systèmes Numériques 3 QuartusII-schematic Question Compteur 4 bits. Etablissez la table de vérité du compteur (papier crayon).2 Faites les tables de Karnaugh.3 Trouvez les équations logiques de chaque bit Q[3]..Q[0].4 Dessinez la schématique avec des portes AND/OR/NOT et bascules D Répondez sur la feuille de réponse annexe. La conception est réalisée, il ne reste plus qu à l introduire sur l outil de développement Quartus II. 4 Quartus II La version utilisée pour cet exercice est Quartus II 7.2 SP2. Les sections suivantes présentent la méthodologie de base pour passer de la conception à la réalisation du système sur la FPGA. Quelques règles importantes avant de commencer : NE JAMAIS mettre d espace dans les noms de dossier et de fichiers NE PAS utiliser le dossier «Mes documents» NE PAS utiliser des adresses UNC (\\serveur\dossier...), associer une lettre au dossier de travail s il est sur un serveur (en général Z:) NE PAS mettre de caractères spéciaux dans les noms de fichiers, seulement : a..z, 0..9, _ Un dossier séparé pour chaque projet Exécutez QuartusII sur le PC. La fenêtre suivante apparaitra : 5 2 3 4 Figure 2 Logiciel QuartusII Les 5 fenêtres de base sont :. Navigateur de projet avec 3 onglets : Hierarchy, Files, Design Units 2. Statuts des divers outils utilisés, progression des compilations 3. Messages des divers outils exécutés 4. Console pour scripts tcl 5. Fenêtre de travail R.BeuchatW:\Labo\Documents\_Laboratoire_SysNum\Enonces_Labo-Cours\Labo_Quartus_Robot_Cyclone\Labo_FPGA_Schematic_Counter_0_.doc
Laboratoire de Systèmes Numériques 4 QuartusII-schematic 4. Organigramme général de conception La figure suivante présente les diverses étapes et outils utilisés de la conception à l exécution sur la carte du système à réaliser. Les 3 outils Quartus II (Design, compilation, simulation), SOPC Builder (système Avalon) et IDE (logiciel) sont utilisés. Dans ce laboratoire, seul Quartus II est utilisé. A noter que d autres fonctions sont à disposition dans ces 3 outils et que la présentation ici n en présente qu une petite partie de base. R.BeuchatW:\Labo\Documents\_Laboratoire_SysNum\Enonces_Labo-Cours\Labo_Quartus_Robot_Cyclone\Labo_FPGA_Schematic_Counter_0_.doc
Laboratoire de Systèmes Numériques 5 QuartusII-schematic Création du projet Dossier du projet Création d un schéma du design global Design.bdf Réalisation des modules interfaces spécifiques Avalon_IP Conception Edition Compilation Simulation Réalisation du module système «NIOSII- Avalon» mémoire et Int.Progr. SOPC Builder Generate du design Retour à Quartus : - Ajout du module système - PLL (ALTPLL à 50MHz) - Ajout des pins In, Out, Bidir - Ajout des composants supplémentaires Assignement des pins (script tcl) Pins non utilisées : Mettre Input Compilation Placement / routage Analyse des timings Vérification Développement logiciel en C Retour SOPC Builder Lancer NIOS - IDE Création librairie C Développement logiciel Compilation IDE Eclipse Compilateur gcc Programmation FPGA Debug/exécution logiciel Par câble JTAG R.BeuchatW:\Labo\Documents\_Laboratoire_SysNum\Enonces_Labo-Cours\Labo_Quartus_Robot_Cyclone\Labo_FPGA_Schematic_Counter_0_.doc
Laboratoire de Systèmes Numériques 6 QuartusII-schematic 4.2 Création du projet Pour cet exemple Z:\ représente le dossier des projets Le design réalisé ira dans Z:\Labo_Quartus\Quartus_Cnt_Sch Le projet est : Quartus_Cnt_Sch Le top design est Quartus_Cnt_Sch Le même nom a été choisit ici pour les trois éléments.!!!!!!warning: NO SPACE IN THE PATH NAME OF THE PROJECT!!!!!! Figure 3 Nouveau projet [] Figure 4 Nouveau projet [2] Choix de la famille et du composant : Cyclone EPC2Q240C8 R.BeuchatW:\Labo\Documents\_Laboratoire_SysNum\Enonces_Labo-Cours\Labo_Quartus_Robot_Cyclone\Labo_FPGA_Schematic_Counter_0_.doc
Laboratoire de Systèmes Numériques 7 QuartusII-schematic Choix de la famille et composant : Cyclone EPC2Q2409C8 Pas d outils supplémentaires : Figure 5 Nouveau projet [3] Figure 6 Rien à rajouter [4] R.BeuchatW:\Labo\Documents\_Laboratoire_SysNum\Enonces_Labo-Cours\Labo_Quartus_Robot_Cyclone\Labo_FPGA_Schematic_Counter_0_.doc
Laboratoire de Systèmes Numériques 8 QuartusII-schematic 4.3 Création du design principal Figure 7 Résumé du Project Wizard File New Block Diagram/Schematic File Figure 8 Création du Block Diagram/Schéma Figure 9 Fenêtre pour éditer le schéma R.BeuchatW:\Labo\Documents\_Laboratoire_SysNum\Enonces_Labo-Cours\Labo_Quartus_Robot_Cyclone\Labo_FPGA_Schematic_Counter_0_.doc
Laboratoire de Systèmes Numériques 9 QuartusII-schematic Sauver directement le fichier schéma. File Save as YourFileName.bdf Dans notre exemple : Quartus_Cnt_Sch.bdf En double cliquant dans la fenêtre, on peut appeler les éléments de librairie. Figure 0 Sélection des éléments de librairie Les éléments Input, Output représentent les entrées sorties du système. Entrez votre design. 5 Design compilation Le design peut maintenant être compilé pour générer la logique de la FPGA. Sélectionnez le schéma comme design à compiler : Project Set as Top-Level Entity Processing Compiler Tool Start 6 Schématique de compilation Avec les Netlist Viewers, observez le résultat de la compilation. Figure Netlist Viewers R.BeuchatW:\Labo\Documents\_Laboratoire_SysNum\Enonces_Labo-Cours\Labo_Quartus_Robot_Cyclone\Labo_FPGA_Schematic_Counter_0_.doc
Laboratoire de Systèmes Numériques 0 QuartusII-schematic Observez : RTL Viewer Technology Map Viewer Quelle différence principale observez-vous? Vous pouvez voir également l emplacement dans le circuit utilisé des éléments synthétisés. Tools Chip planner (Floorplan and Chip editor) Vous pouvez également observer les contenus des blocs logiques : clic bouton de droite sur un élément : locate locate in resource property editor. 7 Simulation Avec le waveform éditeur, entrez des signaux de stimulus pour simuler le design et appelez le simulateur. Processing Simulator Tools OPEN Manipulation Dans l éditeur de stimulis, sélectionnez les signaux à observer et générez une horloge (20MHz) Générez un signal pour le Reset nreset : pulse à 0 Exécutez la simulation en mode fonctionnel (Simulation mode, puis Generate Functional Simulation Netlist) Vérifiez le bon fonctionnement de votre compteur 0.. 9 0.. Refaite la simulation en mode timing, quelles différences observez-vous? Changez le signal d horloge et mettez une fréquence de 00 MHz, observez à nouveau le résultat, satisfait du résultat, y a t-il des problèmes? 8 Compteur 0..59 Modifiez votre design pour avoir une entrée Enable et une sortie Detect9. Le fonctionnement devient le suivant : Si Enable = lorsque le flan montant de l horloge est activé, le compteur compte, autrement il reste dans le même état. Si l état du compteur = 9, la sortie Detect9 est activée (à ), autrement elle est à 0. Simulez le fonctionnement à nouveau. Réalisez un 2 ème compteur qui compte de 0..5 avec les mêmes signaux de contrôle que le précédent, et connectez-les pour avoir un compteur par 60 : 0..59 en BCD. Créez pour chacun des 2 compteurs un symbole : Files Create/Update Create symbol Files for current file Assemblez-les dans un nouveau schéma et effectuez la simulation. N oubliez pas de redéfinir le nouveau schéma comme le Top-Level design. C est toujours celui-là qui est compilé/simulé. R.BeuchatW:\Labo\Documents\_Laboratoire_SysNum\Enonces_Labo-Cours\Labo_Quartus_Robot_Cyclone\Labo_FPGA_Schematic_Counter_0_.doc
Laboratoire de Systèmes Numériques QuartusII-schematic Réponse. Etablissez la table de vérité du compteur, complétez le tableau. nreset Q[3] Q[2] Q[] Q[0] Q[3]+ Q[2]+ Q[]+ Q[0]+ 0.2 Faites les tables de Karnaugh.3 Et indiquez les équations logiques de chaque bit Q[3]..Q[0] : Q Q0 Q3 Q2 00 0 0 0 0 0 0 Q0+ Q Q0 Q3 Q2 00 0 0 0 0 0 0 Q+ R.BeuchatW:\Labo\Documents\_Laboratoire_SysNum\Enonces_Labo-Cours\Labo_Quartus_Robot_Cyclone\Labo_FPGA_Schematic_Counter_0_.doc
Laboratoire de Systèmes Numériques 2 QuartusII-schematic Q Q0 Q3 Q2 00 0 0 0 0 0 0 Q2+ Q Q0 Q3 Q2 00 0 0 0 0 0 0 Q3+.4 Dessinez la schématique avec des portes AND/OR/NOT et bascules D R.BeuchatW:\Labo\Documents\_Laboratoire_SysNum\Enonces_Labo-Cours\Labo_Quartus_Robot_Cyclone\Labo_FPGA_Schematic_Counter_0_.doc