Vous êtes sur la page 1sur 15

Tutoriel : Simulation avec QUARTUS II

Version prliminaire

Tutoriel: Simulation de base avec QUARTUS II


Dans ce tutoriel, on va voir comment simuler un circuit conu avec le VHDL a laide de loutil QUARTUS II de la compagnie Altera. Il y a 2 grandes mthodes pour simuler : avec les fichiers de type Waveform Vector File (.WVF) qui est la faon de base et la faon plus avance qui est dutiliser les bancs dessais. Avec les bancs dessais, il faut crer dAUTRES fichiers VHDL qui vont tre utiliss pour stimuler le fichier VHDL initial. Cest une technique un peu plus avance et que vous devriez apprendre si vous voulez faire des circuits plus avancs. Dans ce tutoriel, on va se contenter des fichiers .WVF. Dans ce tutoriel, on va utiliser un compteur de 4 bits (inspir du code de M. RobergeBisaillon). Je vais inclure le code ici au cas o vous voudriez vous y rfrer : LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY horloge3 IS PORT ( clk :IN STD_LOGIC; rst_an :IN STD_LOGIC; s_counter_out :OUT STD_LOGIC_VECTOR (3 downto 0) ); END horloge3; ARCHITECTURE RTL OF horloge3 IS signal s_counter :STD_LOGIC_VECTOR (3 downto 0); BEGIN PROCESS (clk , rst_an) BEGIN IF rst_an ='0' THEN s_counter <= (OTHERS => '0'); ELSIF clk'EVENT AND clk = '1' THEN IF s_counter=15 THEN s_counter <= (OTHERS => '0'); ELSE s_counter<= s_counter + 1; END IF; END IF; END PROCESS; s_counter_out <= s_counter; END; Si on veut simuler, on devrait suivre les tapes suivantes : H. T. Bui DSA/UQAC

Tutoriel : Simulation avec QUARTUS II

Version prliminaire

1. 2. 3. 4. 5.

crire le code VHDL Faire la synthse (voir sil y a des warning ou des erreurs) Faire le placement/routage. Crer le fichier .WVF pour stimuler votre circuit Simuler

Description des tapes tape 1 : Ca devrait tre facile comprendre. Vous crivez le code. tape 2 : On veut maintenant convertir notre code en portes logiques. Pour ce faire, loutil QUARTUS va tre svre avec la faon que vous crivez votre code VHDL. Il va vous dire si le style de votre code VHDL nest pas comprhensible (ou ne correspond pas aux normes). Cest vous a modifier votre code pour quil soit heureux. tape 3 : Aprs la synthse, on a transforme notre code VHDL en une srie de portes logiques. Cependant, on ne sait pas ou se trouvent ces portes logiques dans le FPGA. Le placement/routage est ltape qui va dterminer ca. Pourquoi cest important? Ca va aider dterminer le dlai de faon plus prcise. tape 4 : On va ensuite commencer a crer le stimulus pour votre circuit. Vous savez, par exemple, que vous avez une horloge a lentre et un signal reset (rst_an). Comment se comporte votre horloge? Quelle frquence a-t-elle? Et le reset? Quand sera-t-il actif? Ce sont tous des choses spcifier dans le stimulus. tape 5 : On va ensuite faire rouler la simulation et regarder les rsultats. Manipulations 1. Commencez par ouvrir QUARTUS II. 2. Crez votre projet et entrez le code VHDL. 3. Faites la premire synthse et le placement/routage en une seule tape en entrant dans TOOLS -> Compiler Tool. Cliquez sur le bouton START pour amorcer le processus (Figure 1). Vous devriez, en thorie, dj connaitre toutes ces tapes.

H. T. Bui

DSA/UQAC

Tutoriel : Simulation avec QUARTUS II

Version prliminaire

Figure 1. Synthse et Placement/Routage 4. A ce point-ci, vous avez transforme votre VHDL en portes logiques, vous savez aussi ou ces portes sont places. La prochaine tape est de crer un fichier .WVF pour stimuler votre circuit. Entrez dans File->New. Choisissez OTHER -> WAVEFORM VECTOR FILE. Rfrez-vous la Figure 2.

H. T. Bui

DSA/UQAC

Tutoriel : Simulation avec QUARTUS II

Version prliminaire

Figure 2. Comment gnrer le fichier de stimulation 5. Le rsultat de ces commandes devrait nous donner une fentre comme a la Figure 3. Notre prochaine tape cest de dire Quartus quels signaux on aimerait stimuler et quels signaux on aimerait regarder. Loutil nous donne loption de regarder des signaux internes . Notre compteur est trs simple alors on na pas vraiment besoin de regarder autre chose que les entres et les sorties. Imaginez, cependant, la conception dun microprocesseur. Si on ne regardait que les entres et les sorties, on naurait pas beaucoup dinformations. Dans ce cas-la, on pourrait dcider de regarder les signaux internes : la sortie du Arithmetic Logic Unit (ALU) ou du dcodeur dinstructions en mmoire, par exemple. Revenons ce quon faisait : on veut spcifier les signaux a stimuler et a regarder. Dplacez votre souris dans la rgion sous lindicateur NAME, cliquez avec votre bouton de droite et choisissez Insert Node or Bus. Ceci est dmontr dans la Figure 3.

H. T. Bui

DSA/UQAC

Tutoriel : Simulation avec QUARTUS II

Version prliminaire

Cliquez dans cette rgion avec bouton de droite

Figure 3. Comment ajouter les signaux 6. Une petite fentre devrait apparaitre. Loutil nous demande le NOM des signaux auxquels on aimerait avoir accs. A la place de lentrer manuellement, on va demander loutil de nous fournir une liste et on choisira. Cliquez sur Node Finder comme le montre la Figure 4.

H. T. Bui

DSA/UQAC

Tutoriel : Simulation avec QUARTUS II

Version prliminaire

Figure 4. Comment obtenir la liste des signaux disponibles (partie #1) 7. Une autre fentre devrait apparaitre (Figure 5). Pour une slection facile vous pouvez simplement cliquer sur LIST. Une liste de signaux devrait apparaitre dans la colonne de gauche et vous pourriez slectionner en double-cliquant sur les signaux qui vous intressent. Pour notre tutoriel, on va utiliser clk, rst_an et s_count_out (Figure 6). Ces signaux devraient se retrouver dans la colonne de droite une fois slectionn. Cliquez sur OK.

H. T. Bui

DSA/UQAC

Tutoriel : Simulation avec QUARTUS II

Version prliminaire

Figure 5. Comment obtenir la liste des signaux disponibles (partie #2)

H. T. Bui

DSA/UQAC

Tutoriel : Simulation avec QUARTUS II

Version prliminaire

Figure 6. Signaux slectionner 8. Vous vous retrouverez de nouveau avec la petite fentre. Cliquez sur OK. 9. Vous devriez avoir une fentre comme celle de la Figure 7 devant vous. Remarquez que le nom des signaux que vous aviez slectionns est l. Mettezvous vis--vis le signal clk. Cliquez avec le bouton de droite et slectionnez Value->Clock comme lindique la Figure 8.

H. T. Bui

DSA/UQAC

Tutoriel : Simulation avec QUARTUS II

Version prliminaire

Figure 7. Signaux examins durant la simulation

H. T. Bui

DSA/UQAC

Tutoriel : Simulation avec QUARTUS II

Version prliminaire

Figure 8. Comment spcifier un signal dhorloge 10. On change la valeur de la priode 20ns comme la Figure 9. Cliquez sur OK. Le signal clk devrait changer une onde carre.

H. T. Bui

DSA/UQAC

Tutoriel : Simulation avec QUARTUS II

Version prliminaire

Figure 9. Paramtres du signal dhorloge 11. On va ensuite dfinir le signal rst_an. On va vouloir le mettre--zro (reset) au dbut pendant 25ns (chiffre invent). On va donc devoir mettre le signal a 0 pendant 25ns et ensuite quil devienne 1. La faon que je dcide de la faire, cest dappliquer un signal 1 pour toute la dure et ensuite, changer la valeur 0 pour les 25ns du dbut. On clique sur rst_an avec notre bouton de droite : Value>Forcing High(1). En faisant ceci, on devrait voir que la valeur de rst_an est monte 1. 12. On va ensuite slectionner les premires 25ns du signal rst_an avec le bouton de gauche. Une des faons de faire est de placer la souris au temps 0 ct du rst_an. On clique avec le bouton de gauche et on laisse le doigt dessus en lamenant vers 25ns. En faisant a, on slectionne cette rgion et la slection devrait devenir bleue pale. Il y a dautres faons de faire, comme par exemple, commencer la slection a 25ns et le ramener vers 0s. a marche aussi. 13. Une fois que cest slectionn, cliquez sur la slection (section bleue) avec votre bouton de droite : Value->Forcing Low (0). Le rsultat de tout ca devrait tre un signal rst_an qui est 0 de 0 25ns et ensuite monter 1. Ceci est illustr la Figure 10. 14. On a enfin fini. On sauvegarde et on lui donne un nom comme horloge3.wvf. On ne touche pas au signal s_counter_out puisque cest notre signal de sortie. Cest le circuit qui va ragir aux signaux clk et rst_an et va imposer ses propres valeurs.

H. T. Bui

DSA/UQAC

Tutoriel : Simulation avec QUARTUS II

Version prliminaire

Figure 10. Spcification du signal rst_an 15. Il est maintenant temps de simuler. Allez dans Tools->Simulator Tool. Une fentre devrait ouvrir (Figure 11). Assurez-vous que Simulation Mode est de type Timing et que Simulation Input est le nom du fichier .WVF que vous venez de crer.

H. T. Bui

DSA/UQAC

Tutoriel : Simulation avec QUARTUS II

Version prliminaire

Figure 11. Fentre pour faire la simulation 16. On clique sur START pour amorcer la simulation. 17. A la fin de la simulation, cliquez sur REPORT. Une erreur courante cest de cliquer sur OPEN en pensant que cest le rsultat. OPEN nous donne simplement le fichier .WVF. Cest REPORT qui va nous donner la sortie de la simulation (Figure 12). 18. Trois choses que jaimerais vous faire remarquer : a. Le compte augmente chaque coup dhorloge, cest le fun. b. Au premier coup dhorloge, le reset tait encore actif. Le compte na pas augmente : cest un bon signe. c. Avanons dans le temps pour voir si le compteur retourne bien 0 aprs le compte de 15. En regardant la Figure 13, on voit que le signal retourne bel et bien 0. 19. Ce serait bien de retourner relire les tapes rapidement pour voir que la procdure est en fait TRS simple : coder, synthtiser et placement/routage, dfinir .WVF, simuler et on a fini.

H. T. Bui

DSA/UQAC

Tutoriel : Simulation avec QUARTUS II

Version prliminaire

Figure 12. Rsultats de la simulation (Partie #1)

H. T. Bui

DSA/UQAC

Tutoriel : Simulation avec QUARTUS II

Version prliminaire

Figure 13. Rsultats de la simulation (Partie #2)

H. T. Bui

DSA/UQAC