IUT La Rochelle - Dépt R&T Info 1ème année – Module I2 2009-2010 Laurent Demay T. Dumartin, P. Coulaud Circuits séquentiels T.P. n°3 : Circuits séquentiels Nous allons réaliser aujourd’hui des circuits séquentiels. La sortie d’un circuit séquentiel ne sera pas uniquement fonction des entrées en instantané, mais également des états précédents d’entrées ou de sorties. Nous avons besoin de réaliser des fonctions de mémorisation de certaines données, et ceci se fera à l’aide de bascules. 1. Diviseur de fréquence Nous allons utiliser le modèle de bascule D disponible dans le logiciel Quartus pour réaliser un diviseur de fréquence vu au TD n°3 Créez dans un nouveau dossier TP3 un projet appelé circuits_seq composé du schéma div_freq.bdf suivant Pour pivoter horizontalement ou verticalement un symbole, cliquez dessus avec le bouton droit de la souris et choisissez « Flip Horizontal » ou « Flip Vertical ». La bascule D correspond au symbole dff de la librairie « C:/altera/91/quartus/librairies/primitives/storage » . Mettez un niveau logique haut « ../primitives/others/vcc » sur les entrées PRN et CLRN, car les fonctions Preset (mise de la sortie à ‘1’) et Clear (mise de la sortie à ‘0’) sont actives à l’état bas. Sélectionnez comme en entité principale, compiler puis simulez le circuit en mettant en entrée un signal d’horloge de 50 MHz. Mesurez le temps de propagation de la bascule (délai entre le front actif du signal d'horloge et le changement sur les sorties) La carte DE2 dispose de deux horloges à 27 MHz et à 50 MHz. Nous voudrions pouvoir disposer d’une horloge de très basse fréquence (de l’ordre de 1 Hz) pour avoir le temps d’examiner l’évolution de nos circuits séquentiels. Combien faut-il de circuits « diviseurs par 2 de fréquence » en série pour obtenir en sortie un signal d’horloge d’environ 1,49 Hz à partir d’un signal d’horloge en entrée de 50 MHz ? Modifiez div_freq.bdf en dupliquant le diviseur par 2 de fréquence par copier/coller pour créer le circuit voulu. Affectez les broches pour utiliser l’horloge à 50 Mhz CLOCK_50 en entrée et la diode rouge LEDR[0] en sortie. Compilez le schéma, et programmez-le sur la carte DE2 et testez. Quelle est la période de clignotement de la diode ? Créez un Symbol File que vous appellerez div_freq.bsf à partir de ce schéma. 1 2. Circuit « Shift Register » Ajoutez un nouveau « Bloc Diagram/Schematic File » nommé shift_reg.bdf au projet circuits_seq Réaliser le circuit suivant, où H est l’horloge qui cadence l’évolution des bascules D, E la donnée à l’entrée du circuit, et S[2..0] la sortie (sur 3 bits) du circuit. S0 S1 S2 E D Q D /Q H Q D Q /Q /Q Faites de ce schéma l’entité principale du projet en sélectionnant « Project / Set As Top-Level Entity… » Simuler le circuit avec des signaux semblables à ceux ci-dessous, et en déduire la fonction logique réalisée par ce montage. H t E Donnez des exemples d'utilisation de ce type de circuit (recherchez sur Internet). 3. Circuit « compteur binaire modulo 4 synchrone » Un compteur synchrone est un compteur dont tous les étages (bascules) sont commandés par le même signal d'horloge. Ce mode de fonctionnement permet de limiter la durée des périodes d'instabilité et par conséquent autorise des vitesses plus élevées qu'en mode asynchrone. Un compteur modulo 4 fait évoluer sa sortie Q1Q0 à chaque front montant (ou descendant) d’horloge de la façon suivante : Etat présent H 0 1 2 3 0 1 …, soit en binaire : 00 01 10 11 00 01 … Un compteur modulo 4 voit sa sortie (codée donc sur 2 bits) évoluer selon la table de vérité ci-contre : Pour mémoriser l’état du compteur (codé sur 2 bits), nous allons utiliser 2 bascules D pour jouer le rôle de case mémoire. Etat suivant Q1n Q0n Q1n+1 0 0 1 1 0 1 0 1 0 1 1 0 Circuit combinatoire (génération des états suivants à partir des états présents) Cases mémoire (basc. D) Les données correspondant à l’état suivant sont en fait les niveaux à placer en entrée des bascules D, afin que ces niveaux soient transmis en sortie lors du front d’horloge suivant, selon le principe représenté ci-contre. D Q Q0n nommé compteur.bdf au projet circuits_seq D Q1n+1 Q1n H Ajoutez un nouveau « Bloc Diagram/Schematic File » Q0n+1 1 0 1 0 Q ? Q0n+1 A partir de la table de vérité, donnez les expressions des signaux Q1n+1 et Q0n+1 à générer à partir de Q1n et Q0n . Réalisez le circuit en utilisant deux bascules D, une entrée pour l’horloge et le module div_freq, deux sorties pour les bits du compteur et les portes logiques nécessaires. Affectez les broches pour utiliser l’horloge à 50 Mhz et deux leds en sortie pour le compteur. Sélectionnez le schéma comme en entité principale, puis compilez. Programmez-le sur la carte DE2 et vérifiez le fonctionnement. 2