Latch, Bascule & Compteurs 1 Introduction Ce laboratoire a pour but de vos familiariser avec les systèmes séquentiels, celui-ci sera séparé en trois parties : 1. Latch vs Bascule D 2. Compteur 4bits 3. Horloge du type hh : mm : ss Chaque étape pourra être testé séparément avec les logiciels de simulation (fourni dans les documents du laboratoire : lab04.zip) ou à l aide de ModelSim. 2 Latch vs Bascule D Afin de bien comprendre la différence entre un latch et une bascule D, cette partie est consacrée à l implémentation de ces deux composants. 2.1 Latch Comme décrit durant le cours, un latch permet de charger une nouvelle valeur quand on active celui-ci ou de conserver cette valeur quand celui-ci n est pas activé. La table?? décrit le comportement. en Q + 0 Q 1 D FIGURE 1 Table d un Latch 2.2 Bascule D Contrairement au latch, une bascule permet de changer d état uniquement lors d un flanc montant, ce qui permet de garder son état durant une période définit par l horloge (clk). clk Q + 0 Q 1 Q D FIGURE 2 Table & schéma d une bascule D Une manière d implémenter une bascule D, est d utiliser des latchs, pour ce faire il faut utiliser deux latch : l un dit esclave et l autre maître. La figure?? schématise cette implémentation. EPFL - IC - Version 1.3 1 sur??
2.3 Laboratoire 1. Ouvrez le projet latch_bascule/latch_flipflop.qpf avec Quartus. 2. Dans FlipFlop.bdf : Implémentez une bascule D comme décrit à la section??, pour ce faire utiliser le composant DLATCH de la librairie Quartus. 3. Compilez le projet et testez-le à l aide de ModelSim et du script ci-dessous 1 force e 0 0, 1 4 -repeat 8 2 force d 0 0, 1 3 -repeat 6 3 run 24 Listing 1 Simulation latch vs bascule D 4. Comparez les signaux de sortis qlatch et qflipflop. Quels sont les différences? Pourquoi y a-t-il ces différences? 3 Compteur avec incrément et décrément Le système représente un compteur comportant deux entrées et une sortie : a permet d activer le compteur b permet d incrémenter (= 1) ou décrémenter (= 0) le compteur o qui indique si le compteur a effectué un overflow (dépassement de capacité, 0 3 dans notre cas). On représente ce système à l aide de la machine et table des états de la figure??. Les deux signaux e et f sont les variables des bascules. Quant aux signaux e + et f +, ceux-ci sont respectivement e et f après le prochain coup d horloge. 11,1 10,1 11 00 10 01 a b 00 01 11 10 00 00,0 00,0 01,0 11,1 01 01,0 01,0 00,0 11 00,1 10 01,0 e f e + f +,o FIGURE 3 Machine et table des états 3.1 Synthèse Après synthèse du système à l aide de tables de Karnaugh, on trouve les équations suivante : e + = abe f + abe f + be f + be f + ae f + = a f o = abe f + abe f EPFL - IC - Version 1.3 2 sur??
3.2 Laboratoire 1. Ouvrez le projet counter/counter.qpf avec Quartus. 2. Dans Counter.bdf : Implémentez le système séquentiel, pour ce faire utiliser le composant DFF de la librairie Quartus, celui-ci représente une bascule D. Faites également les signaux sgn_e, sgn_ f et sgn_o. Aidez-vous du schéma général de la figure?? FIGURE 4 Schéma général d une machine de Moore 3. Générez tous les documents hdl à l aide de File Create / Update Create HDL Design File from Current File... et ceci pour chacun des documents bdf 4. Testez-le à l aide du simulateur lab04.jar, onglet Counter (ou de ModelSim avec le script ci-dessous) 1 force clk 0 0, 1 1 -repeat 2 # Clock 2 3 force a 1 # Activate 4 force b 1 # Incremente 5 run 4 # 2 clk -> Counter at 2 6 7 force a 0 # Deactivate le compteur 8 run 4 # 2 clk -> Counter still at 2 9 10 force a 1 # Activate 11 force b 0 # Decremente 12 run 6 # 3 clk -> Counter at 3 and overflow should be at 1 Listing 2 Simulation compteur EPFL - IC - Version 1.3 3 sur??
4 Horloge FIGURE 5 Simulator Dans cette dernière partie, nous allons créer une horloge digitale. FIGURE 6 Horloge digitale Nous remarquons qu il va donc falloir utiliser un compteur 4bits (0 à 15, réellement nous avons besoin que de 0 à 9). A la place de créer celui-ci en utilisant une machine d états, nous allons le faire en utilisant l additionneur complet. L idée est que lorsque le compteur est actionné, on ajoute 1 au compteur. Et lorsqu il atteins la valeur maximum, on effectue un reset sur celui-ci. Voici le schéma du compteur 1 bit, qui sera ensuite connecté en série pour avoir notre compteur 4 bits. FIGURE 7 Compteur 1bit 4.1 Laboratoire 1. Ouvrez le projet clock/clock.qpf avec Quartus. EPFL - IC - Version 1.3 4 sur??
2. Analysez les différents schémas afin d expliquer l utilité des parties encadrée en vert? Ainsi que le schéma de la figure??. 3. Dans Counter1bit.bdf : Implémentez le système séquentiel, comme sur le schéma??. Utilisez les composants gnd pour le 0 et dffe pour la bascule D avec enable. 4. Générez tous les documents hdl à l aide de File Create / Update Create HDL Design File from Current File... et ceci pour chacun des documents bdf 5. Compilez le projet et testez-le à l aide du simulateur lab04.jar, onglet Clock FIGURE 8 Simulator EPFL - IC - Version 1.3 5 sur??