1 - Simulation d’un circuit sous...

19
TP Logique Séquentielle - PeiP2 Simulation d’un circuit sous QuartusII - 1 - 1 - Simulation d’un circuit sous QuartusII 1.1 Objectif Depuis de nombreuses années, la conception de circuits numériques est réalisée à l’aide d’outils de CAO (Conception Assistée par Ordinateur). L’objectif de ce premier TP est de vous initier à cette pratique indispensable dans le domaine de l’électronique numérique. Nous nous contenterons uniquement de simuler notre circuit numérique. 1.2 Apprentissage de l’outil de synthèse Nous utilisons QuartusII (version 12.0) qui est un produit de la société Altera, l’une des entreprises leader du marché des circuits programmables. Bien que nous n'utilisions pas les circuits programmables Altera dans ce TP, ce logiciel QuartusII comporte un certain nombre de fonctionnalités, en particulier liées à la production de schémas logiques ou structurels ainsi qu’à la simulation que nous souhaitons exploiter pour faciliter la conception et l'apprentissage du flot pour la conception de circuits numériques. Les principales étapes de la conception sous QuartusII (cf. Figure 1) sont les suivantes : La création d’un projet : cette étape consiste à créer un répertoire de projet et de choisir la technologie (circuit) souhaitée, Édition d’un schéma : Cette étape va permettre de saisir le schéma que vous aurez au préalable déterminé, Vérification du schéma et transformation : L’objectif de cette étape est de vérifier qu’il n’y ait pas d’erreur de connexions. Par exemple, la connexion d’une entrée sur une sortie sera détectée. L’outil vous indiquera alors les erreurs par des messages, [Option] Visualisation RTL, Technologique, Machine à état : A ce niveau, il est possible de visualiser ce que l’outil QuartusII a compris de votre schéma (RTL signifiant Register Tranfert Level). Il est capable de vous le redessiner d’une autre manière. Plus encore, il est possible d’obtenir le schéma qui sera utilisé dans le composant final. Enfin, il est également capable d’extraire et de dessiner la machine à état correspondant à votre schéma. Simulation du schéma : Cette dernière étape permet de simuler votre schéma. Si la simulation ne convient pas à cause d’erreurs de schéma, il est alors possible de modifier le schéma comme indiqué sur la Figure 1. Pour se familiariser avec cet outil, nous utilisons comme tutorial un compteur décimal utilisant un circuit programmable de la série Cyclone III (EP3C25F324-C8). Mise en garde importante : QuartusII est un logiciel dont les fonctionnalités sont aussi nombreuses que complexes. Nous n'utilisons ici qu'une infime partie du logiciel. Une utilisation non conventionnelle de QuartusII aura des conséquences parfois lourdes sur l'ordre des tâches à effectuer pour générer une description. Respectez les étapes indiquées de l'utilisation du logiciel et ne vous égarez pas dans des menus dont le rôle vous échappe !

Transcript of 1 - Simulation d’un circuit sous...

TP Logique Séquentielle - PeiP2 Simulation d’un circuit sous QuartusII

- 1 -

1 - Simulation d’un circuit sous QuartusII

1.1 Objectif

Depuis de nombreuses années, la conception de circuits numériques est réalisée à l’aide

d’outils de CAO (Conception Assistée par Ordinateur). L’objectif de ce premier TP est de

vous initier à cette pratique indispensable dans le domaine de l’électronique numérique. Nous

nous contenterons uniquement de simuler notre circuit numérique.

1.2 Apprentissage de l’outil de synthèse

Nous utilisons QuartusII (version 12.0) qui est un produit de la société Altera, l’une des

entreprises leader du marché des circuits programmables. Bien que nous n'utilisions pas les

circuits programmables Altera dans ce TP, ce logiciel QuartusII comporte un certain nombre

de fonctionnalités, en particulier liées à la production de schémas logiques ou structurels ainsi

qu’à la simulation que nous souhaitons exploiter pour faciliter la conception et l'apprentissage

du flot pour la conception de circuits numériques.

Les principales étapes de la conception sous QuartusII (cf. Figure 1) sont les suivantes :

• La création d’un projet : cette étape consiste à créer un répertoire de projet et de

choisir la technologie (circuit) souhaitée,

• Édition d’un schéma : Cette étape va permettre de saisir le schéma que vous aurez

au préalable déterminé,

• Vérification du schéma et transformation : L’objectif de cette étape est de

vérifier qu’il n’y ait pas d’erreur de connexions. Par exemple, la connexion d’une

entrée sur une sortie sera détectée. L’outil vous indiquera alors les erreurs par des

messages,

• [Option] Visualisation RTL, Technologique, Machine à état : A ce niveau, il est

possible de visualiser ce que l’outil QuartusII a compris de votre schéma (RTL

signifiant Register Tranfert Level). Il est capable de vous le redessiner d’une autre

manière. Plus encore, il est possible d’obtenir le schéma qui sera utilisé dans le

composant final. Enfin, il est également capable d’extraire et de dessiner la

machine à état correspondant à votre schéma.

• Simulation du schéma : Cette dernière étape permet de simuler votre schéma. Si la

simulation ne convient pas à cause d’erreurs de schéma, il est alors possible de

modifier le schéma comme indiqué sur la Figure 1.

Pour se familiariser avec cet outil, nous utilisons comme tutorial un compteur décimal

utilisant un circuit programmable de la série Cyclone III (EP3C25F324-C8).

Mise en garde importante : QuartusII est un logiciel dont les fonctionnalités sont aussi

nombreuses que complexes. Nous n'utilisons ici qu'une infime partie du logiciel. Une

utilisation non conventionnelle de QuartusII aura des conséquences parfois lourdes sur l'ordre

des tâches à effectuer pour générer une description. Respectez les étapes indiquées de

l'utilisation du logiciel et ne vous égarez pas dans des menus dont le rôle vous échappe !

TP Logique Séquentielle - PeiP2 Simulation d’un circuit sous QuartusII

- 2 -

Edition du schéma

Création du projet

Vérification du

schéma et

transformation

Simulation

Visualisation du

schéma RTL ou

technologique,

machine à état

Erreurs Fin

Figure 1 : Flot de vérification d’un schéma par simulation.

1.2.1 Création du projet de conception

La première étape est la création du projet sur votre bureau Windows.

1) Créer un dossier « tutorial » sur le bureau

2) Lancer QuartusII 12.0 (attention une version 9.0 existe !!). Sur le bureau, vous avez

un icône « QuartusII 12.0sp1 Web Edition »

3) Menu : File → New Project Wizard

4) Suivez les instructions de la Figure 2.

Vous êtes maintenant prêt à éditer le schéma du compteur décimal.

1

Chemin du projet

nom du projet

Nom du module

2

4

Cliquez next

Cliquez next

Sélectionner le

circuit (EP3C25F324-

C8 avec 216 I/O)

5

Cyclone III

Cliquez next

Cliquez next

6 7

Cliquez finish

3Cliquez Yes

Sélectionnez

FBGA, 324 et 8

Figure 2 : Création d’un projet sous QuartusII.

TP Logique Séquentielle - PeiP2 Simulation d’un circuit sous QuartusII

- 3 -

1.2.2 Edition du schéma

Nous allons réaliser un compteur décimal en bascules JK dont les fonctions sont données

ci-après :

K0 = 1 J0 = 1 K1 = Q0 J1 = /Q3.Q0

K2 = Q1.Q0 J2 = Q1.Q0 K3 = Q0 J3 = Q2.Q1

Tout d’abord, nous devons créer un fichier permettant de dessiner notre schéma.

1) Menu : File → New, puis sélectionner « Block Diagram/Schematic File » (Figure 3,

étape 1). Une feuille vierge de schéma apparait. Nous allons la sauvegarder sous le

nom du module.

2) Menu : File → Save as (sans oublier de décocher la case « Add file to current

project », puis vérifier que le nom indiqué du fichier est le nom de votre module

(Figure 3, étape 2)

sélectionner

Cliquez OK

1 2

Vérifier !

Cliquez

Enregistrer

Décocher

Figure 3 : Création du fichier pour le schéma.

Nous allons maintenant saisir le schéma du compteur décimal. La Figure 4 indique les

icônes utiles pour notre saisie :

- L’icône « Sélection » (mode par défaut) permet de sélectionner un composant en

cliquant dessus et de le déplacer, de l’effacer ou même de le modifier.

- L’icône « Symboles » permet d’insérer les composants tels que les portes logiques, les

entrées/sorties et les bascules.

- L’icône « Fils » permet la connexion entre les entrées/sorties des composants.

- L’icône « Bus » permet de regrouper plusieurs fils comme par exemple nos sorties Q0 à

Q3.

Symboles

Fils

Bus (plusieurs fils)

Sélection

Portes logiques (AND, OR, …)

Entrées et Sorties

Bascules D, JK, RS

Autre (Vcc, Gnd, …)

Figure 4 : Edition d’un schéma.

TP Logique Séquentielle - PeiP2 Simulation d’un circuit sous QuartusII

- 4 -

Logic : NOT

Logic : AND2

Pin: Input

Pin: Output

Other: Vcc Storage: JKFF

Saisir le nom du

signal « reset »

Cliquez sur le

bouton droit de

la souris

OU

cliquez 2 fois

sur le nom

Laisser au moins 6 points

entre les bascules pour

passer les fils

Figure 5 : Placement des composants.

La première étape consiste à placer les composants comme indiqué sur la Figure 5 :

a) Placer les bascules (pour arrêter de coller les bascules, cliquez sur l’icône sélection)

b) Modifier le nom des 2 entrées (reset et clk) et de la sortie Q[3..0] qui est un vecteur de

4 fils.

c) Sauvegarder votre schéma (Menu : File → Save)

La seconde étape est la connexion des composants (Figure 6).

a) Cliquez sur l’icône « Fils », puis cliquez à l’endroit où vous voulez commencer la

connexion SANS RELACHER le bouton gauche de la souris jusqu’à la connexion de

fin ou un angle (changement de direction).

Remarque : Si vous voulez effacer le fil, cliquez sur l’icône « Sélection », sélectionner

le fil puis appuyer sur la touche « suppr » du clavier.

Attention : Vous devez bien vérifier que tout est bien connecté sinon vous aurez une

erreur lors de la génération du fichier de simulation.

b) Il est nécessaire d’ajouter un bus sur la sortie Q[3..0], ne pas l’oublier ! (voir Figure 6)

c) Nous devons modifier le nom des 4 fils de sortie des bascules pour qu’ils

correspondent à la sorties Q[3..0]. Sélectionnez le fil, cliquez sur « properties » (Figure

6), puis modifier le nom du fil comme indiqué sur la Figure.

d) Sauvegarder votre schéma (Menu : File → Save)

TP Logique Séquentielle - PeiP2 Simulation d’un circuit sous QuartusII

- 5 -

Modification du nom du

fil

Bus

Figure 6 : Schéma complet du compteur décimal.

1.2.3 Vérification du schéma et transformation

La dernière étape est la vérification de votre schéma et la génération des fichiers pour

préparer la simulation (Figure 7).

1) Menu : File → Create/Update → Create HDL Design File from Current File …

2) Cliquez sur le bouton OK

3) Si votre schéma est bien saisi, vous devez avoir aucune erreur.

4) Cliquez ensuite sur Analysis & Elaboration (Figure 8, étape 1). Aucune erreur ne doit

apparaitre. Obligatoire autrement une erreur apparait au lancement de la simulation.

OK

1Cliquez sur « Create HDL Design

File from Current File … »

Pas d’erreur !

2

3

Figure 7 : Vérification du schéma.

TP Logique Séquentielle - PeiP2 Simulation d’un circuit sous QuartusII

- 6 -

1.2.4 Visualisation du schéma

Il est possible de visualiser le schéma ainsi transformé comme l’indique la Figure 8. Il est

important de noter que l’outil QuartusII n’a pas changé les noms des entrées/sorties. Cette

étape de visualisation est facultative.

1

Cliquez sur le bouton droit de la

souris de RTL Viewer, puis « open »

Schéma généré par QuartusII

Entrées:

clk

reset

Sorties:

Q2

Double click sur Analysis & Elaboration

(pour l’étape de transformation)

Figure 8 : Visualisation du schéma RTL.

1.2.5 Simulation

La simulation est effectuée par un second outil appelé ModelSim (leader mondial de

conception de circuits par simulation) de la société Mentor Graphic. Cet outil est

automatiquement appelé par l’outil QuartusII.

Les étapes permettant d’obtenir une simulation sont les suivantes :

a. Lancement de l’outil de simulation ModelSim,

b. Configuration pour la visualisation des signaux,

c. Ecriture d’un script pour exécuter un scénario de simulation. Ce scénario fait

évoluer le niveau logique des signaux d’entrée afin de vérifier le bon

fonctionnement de notre compteur.

1.2.5.a Lancement de l’outil de simulation ModelSim

La démarche est présentée à la Figure 9.

1) Sélectionnez le menu Tools → Run Simulation Tool → RTL Simulation.

2) Laisser le langage de simulation par défaut. Cliquez sur le bouton OK

3) Le simulateur ModelSim s’ouvre. Développez l’arbre de la librairie « work », effectuez

un clic-droit sur le nom du module « bdf_type », puis cliquez sur « simulate »

4) Dans la zone appelée « Transcript », des informations de chargement doivent

apparaitre. Il est à noter que c’est à partir de cette zone que nous allons pouvoir

exécuter notre simulation.

TP Logique Séquentielle - PeiP2 Simulation d’un circuit sous QuartusII

- 7 -

1

2) Sélectionnez

« simulate »

Chargement du

compteur

2

Cliquez OK3

4

Sélectionnez « RTL

Simulation »

Zone de saisie des

commandes (Transcript)

1) Détaillez la

librairie « work »

Figure 9 : Mise en place de la simulation ModelSim.

1.2.5.b Création du fichier de scénario de simulation

L’objectif est de visualiser les signaux afin de vérifier le bon fonctionnement du compteur.

Pour ce faire, nous devons créer un script qui définit les signaux à visualiser lors de la

simulation ainsi que l’évolution des valeurs des signaux d’entrées qui représentent un scénario

réel. Pour ce faire, il est nécessaire de faire trois différentes étapes :

1) Création du fichier de script : menu File → New → Source → Do, une fenêtre

s’ouvre dans l’outil modelsim et le nom par défaut est « Untitled-1.do » comme

indiqué en Figure 10.

Nom du fichier par défaut

Figure 10 : Fichier script du scénario.

2) Création du scénario : Dans cette fenêtre, tapez « # Scénario de Test », le

symbole # permet d’ajouter un commentaire. Nous verrons ci-après les commandes

permettant de réaliser le script.

3) Sauvegarder le fichier sous le nom « scenario.do » (menu File → Save)

1.2.5.c Réalisation du script du scénario

Nous rappelons que l’objectif est de vérifier notre compteur. Il est donc nécessaire de lui

préciser les valeurs des signaux d’entrées qui représenteront un scénario réel. Nous proposons

le scénario suivant :

- Le signal d’horloge « clk » aura une période 50 ns

- Le signal « reset » sera actif pendant 120 ns (reset = 0), puis passera à 1 (inactif).

Le script doit présenter différentes phases :

TP Logique Séquentielle - PeiP2 Simulation d’un circuit sous QuartusII

- 8 -

1. Remise à zéro de la simulation

2. Ajout des signaux à visualiser

3. Le scénario

Ces 3 phases, représentées par les commandes ci-après, devront être écrites à la suite dans

le fichier de script. Lorsque celui-ci sera écrit, n’oubliez pas de le sauvegarder. La Figure 11

(action N°1) représente le fichier complet détaillé ci-dessous.

1) Remise à zéro de la simulation

# Remise à zéro de la simulation

restart -force –nowave

2) Ajout des signaux à visualiser.

Syntaxe :

add wave <nom_du_signal>

Ajouter le code suivant

# Ajout des 3 signaux à visualiser

add wave reset

add wave clk

add wave Q

3) Evolution des valeurs des signaux (scénario)

Syntaxe :

Pour un signal ou bus

force <nom_du_signal> <valeur>

Pour l’horloge

force <nom_du_signal> 0,1 {<periode_a_zero>} –r {<periode>}

# ##################

# Le scénario

# Reset pendant 120 ns et période de l’horloge à 50 ns

force reset 0

force clk 0,1 {25 ns} -r {50 ns}

run 120 ns

# Reset inactif, on compte pendant 500 ns

force reset 1

run 500 ns

1.2.5.d Exécution du script

L’exécution du script va ouvrir la fenêtre de simulation et vous permettra de visualiser les

signaux reset, clk et Q.

Pour lancer le script, comme indiqué Figure 11 (action N°2), tapez dans la console

transcript :

do scenario.do

TP Logique Séquentielle - PeiP2 Simulation d’un circuit sous QuartusII

- 9 -

Une partie du résultat est en Figure 11 (action N°3). Pour obtenir une vue globale de

l’exécution de la simulation, vous avez les boutons de gestion du zoom comme l’indique la

Figure 11 (action N°3).

Question :

Que constatez-vous sur le comportement du compteur ?

1

2

3

Fichier du scénario

Exécution du script

Résultat de simulation

Fenêtre transcript

Zoom

Figure 11 : Script du scénario et exécution de la simulation.

1.2.6 Correction du compteur décimal

Le compteur décimal n’est pas correct d’après la simulation effectuée.

Travail demandé

a) Indiquez l’erreur et corriger le schéma en conséquence.

Attention : N’oubliez pas de fermer l’outil de simulation ModelSim !

b) Refaire le processus (flot QuartusII) pour effectuer la simulation

Astuce

Il est possible de modifier l’affichage d’un signal lors de son ajout. Par exemple, la sortie

du compteur est en binaire par défaut et nous voudrions l’afficher en décimal non signé.

Syntaxe :

add wave -radix unsigned <nom_du_signal>

L’option « -radix » permet de préciser le format d’affichage.

Décimal non signé : unsigned

Décimal signé (complément à 2) : decimal

Hexadécimal : hexadecimal

Octal : octal

TP Logique Séquentielle - PeiP2 Simulation d’un circuit sous QuartusII

- 10 -

1.3 Registre à décalage

On veut réaliser un registre dit « universel » que nous avons étudié en Travaux Dirigés.

Les entrées parallèles sont notées Epi (i=1,2,3,4), les entrées séries Esd, Esg et les sorties

parallèles Q1, Q2, Q3, Q4. On sélectionne le mode parallèle par M=1, et le mode série par

M=0. Le sens du décalage dépend de M et du signal de commande S (1 pour décaler à droite,

0 pour décaler à gauche). On réalisera ce registre à l’aide de 4 bascules D à fronts montants et

de portes logiques de votre choix. Le signal reset « rst » est actif sur niveau bas.

RegistreUniversel

Ep4-1

Q4-1

EsdEsg

M

S

H/rst

Figure 12 : Registre universel.

a) Recherchez les équations des signaux d’entrée des bascules Di pour i ϵ [2,3], puis D1 et

D4 qui sont des cas particuliers (poids faible et poids fort).

b) Créez un projet « reg_univ » et saisir le schéma du circuit sous QuartusII. Vous

appellerez le nom du module « reg_univ ».

Important : Les entrées Epi et sorties Qi seront mises sous forme d’un bus.

c) Ecrire un script correspondant à la Figure 13.

Astuce

Il est possible d’affecter à un bus une valeur autre que binaire. Par exemple, un bus B de 4

bits pour être affecté à la valeur 1100 en binaire, mais également 12 en décimal ou C en

hexadécimal.

force B 1100 (binaire)

force B 10#12 (décimal)

force B 16#C (hexadécimal)

d) Simuler le registre universel et vérifier son fonctionnement.

M

S

EP3-0

/rst

Période horloge = 50 ns

0 ns 70 ns 210 ns 410 ns 510 ns

0101 0111

Esg = 0 et Esd = 0

310 ns

Figure 13 : Scénario de test du registre universel.

TP Logique Séquentielle - PeiP2 Les compteurs

- 11 -

2 - Les compteurs

2.1 Compteur asynchrone à arrêt automatique à module variable

Dans certains cas, on peut avoir besoin d'un compteur qui s'arrête après un nombre n

d'impulsions et attendre un signal extérieur de remise à zéro. Pour ce faire, il faut adjoindre au

compteur un circuit qui détectera le nombre n et qui provoquera alors l'arrêt du compteur.

Pour bloquer le compteur, il suffit de mettre au niveau 0 les entrées J0 et K0 de la première

bascule. Dès lors Q0 ne sera plus modifié lors des coups d'horloge suivants, et comme Q0

fournit le signal d'horloge H1 de la bascule suivante, cette dernière ne changera plus d'état non

plus, et ainsi de suite pour les bascules successives.

Le circuit utilisé est représenté à la Figure 14. Il s'agit (pour un compteur à 4 étages) d'un

NAND à 4 entrées, dont la sortie est reliée à J0 et K0. Il est clair que lorsque les 4 entrées de

ce NAND seront au niveau 1, J0 et K0 seront au niveau 0 et le compteur sera bloqué.

Si l'on veut, par exemple, que le compteur s'arrête au nombre 1100, il suffit modifier les

entrées I0, I1, I2 et I3.

Travail demandé a) Saisir le compteur représenté à la Figure 14 sous QuartusII.

b) Tester son fonctionnement à l’aide d’une simulation.

K

J

H

Q

Q

Horloge

NAND

XN

OR

I0

K

J

H

Q

Q

1

20 21

XN

OR

I1

K

J

H

Q

Q

1

22

XN

OR

I2

K

J

H

Q

Q

1

23

XN

OR

I3

Figure 14 : Compteur asynchrone à arrêt automatique à module variable.

2.2 Compteur synchrone à excédent 3

Un nombre à excédent 3 est formé en ajoutant 3 à la représentation binaire du nombre à

coder. La succession des états du compteur est représentée dans le Tableau 1.

Travail demandé a) Ecrire la table de transition de ce compteur qui sera réalisé en bascules D sur fronts

montants.

b) Déterminer les fonctions simplifiées.

c) Réaliser le schéma sous QuartusII.

TP Logique Séquentielle - PeiP2 Les compteurs

- 12 -

Tableau 1 : Etats du compteur synchrone à excédent 3.

Q3 Q2 Q1 Q0 état

0 0 1 1 3

0 1 0 0 4

0 1 0 1 5

0 1 1 0 6

0 1 1 1 7

1 0 0 0 8

1 0 0 1 9

1 0 1 0 10

1 0 1 1 11

1 1 0 0 12

2.3 Compteur synchrone à recyclage

On demande souvent à un compteur de compter jusqu'à un certain nombre puis de

retourner à zéro et de recommencer. Considérons par exemple un compteur à recyclage

modulo 6 dans le code 8421. La succession des états du compteur est représentée dans le

Tableau 2.

La synthèse des états du compteur peut s'effectuer par 2 méthodes: l'une utilise la table

d'excitation, l'autre est basée sur l'identification. Nous allons illustrer ici la méthode utilisant

la table d'excitation.

Tableau 2 : Etats du compteur synchrone à recyclage.

Q2 Q1 Q0 état

0 0 0 0

0 0 1 1

0 1 0 2

0 1 1 3

1 0 0 4

1 0 1 5

0 0 0 0

La succession des états de la bascule 20 conduit à la table de Karnaugh ci-dessous, où F0,

F1, M0 et M1 désignent respectivement le Forçage à 0, le Forçage à 1, le Maintien à 0 et le

Maintien à 1. De plus, on rappelle la table d'excitation d'une bascule JK.

étatJ

Bascule JK

K

F0X 1F11 XM00 XM1X 0

pour J0 :

pour K0 :

F1 F0 F0 F1

F1 F0 X XQ2

Q1

Q0

1 X X 11 X X XQ2

Q1

Q0

X 1 1 XX 1 X XQ2

Q1

Q0

Figure 15 : Tableaux de Karnaugh pour la bascule 20.

On en déduit bien sûr : J0 = K0 = 1 comme illustré en Figure 15.

TP Logique Séquentielle - PeiP2 Les compteurs

- 13 -

Pour la bascule 21, on a

une succession d'états qui

conduit à la table de

Karnaugh de la Figure 16.

On obtient le résultat

suivant:

201 .QQJ =

201 .QQK =

pour J1 :

pour K1 :

M0 F1 F0 M1

M0 M0 X XQ2

Q1

Q0

0 1 X X0 0 X XQ2

Q1

Q0

X X 1 0X X X XQ2

Q1

Q0

Figure 16 : Tableaux de Karnaugh pour la bascule 21.

Travail demandé a) On montrera de même que J2=Q0.Q1 et K2=Q0.

b) Dessiner le schéma de ce compteur.

c) Le saisir sous QuartusII et tester son fonctionnement par simulation.

Logique Séquentielle - PeiP2 Registres à décalage & Machine à états finis

- 14 -

3 - Registres à décalage & Machine à états finis

3.1 Objectifs

Nous voulons réaliser un système complet permettant de commander un moteur pas à pas,

en ayant la possibilité de faire varier la vitesse et le sens de rotation du moteur. La variation

de la vitesse se fera à l’aide d’un diviseur de fréquence qui sera réalisé à l’aide d’un registre à

décalage et de quelques portes logiques. Dans un registre à décalage, lorsque n cellules sont

câblées en cascade, la fonction de décalage est celle qui permet, à chaque impulsion

d'horloge, le glissement de l'information d'une cellule à la suivante.

En général, on dispose (ou éventuellement on construit) de(s) registres dans lesquels on

peut effectuer des décalages de la gauche vers la droite ou de la droite vers la gauche, et dans

lesquels on peut, de plus, charger des données en parallèle dans les différentes cellules.

Travail demandé Etudier le circuit IC74195 et expliquer leur fonctionnement en vous aidant de la

documentation en section 3.5.

3.2 Diviseur de fréquence

Soit un compteur synchrone dont la succession des états est donnée dans le Tableau 3. Il

est possible de réaliser ce compteur à partir du circuit IC74195, pourvu que l'on remarque que

ce registre est construit de telle façon que pour la bascule de rang n on ait nn KJ = . De plus

1−= nn QJ sauf pour la première bascule.

Travail demandé a) Faire la synthèse de ce compteur de 2 façons:

− d'une part, en utilisant la table d'excitation de la bascule,

− d'autre part, en effectuant une identification (ne pas faire pour aJ et aK )

Un exemple de chaque type de synthèse est donné dans la manipulation des compteurs

synchrones.

Remarque: pour N=16, il faut effectuer un chargement parallèle.

Tableau 3 : Table de transition du diviseur.

N états

N états

A B C D A B C D

16 1 1 1 1 8 1 0 1 0

15 0 1 1 1 7 0 1 0 1

14 1 0 1 1 6 0 0 1 0

13 1 1 0 1 5 0 0 0 1

12 0 1 1 0 4 0 0 0 0

11 0 0 1 1 3 1 0 0 0

10 1 0 0 1 2 1 1 0 0

9 0 1 0 0 1 1 1 1 0

Logique Séquentielle - PeiP2 Registres à décalage & Machine à états finis

- 15 -

Montrer alors que l'une des solutions à la synthèse de ce compteur est:

dcbadcaa QQQQQQKJ ...+⊕== ; abb QKJ == , bcc QKJ == , cdd QKJ ==

Cette solution a l'avantage d’utiliser le circuit IC7195.

b) La Figure 17 montre la réalisation d'un tel compteur utilisé en diviseur de fréquence.

C'est à dire que si l'on applique sur l'entrée des données (DATA) un nombre de 4 bits,

la fréquence du signal de sortie est égale à la fréquence de l'horloge divisée par N, N

étant la valeur qui correspond au nombre de 4 bits introduit.

Expliquer comment fonctionne ce diviseur de fréquence.

c) Réaliser ce diviseur de fréquence sous QuartusII. Pour insérer le symbole IC74195,

aller dans symbole, sélectionner « others → maxplus2 → IC74195 ». Ajouter des noms

aux connexions Q0, Q1, Q2, Q3 et shift_load_n comme indiqué Figure 17.

d) Tester son fonctionnement (période de Fin = 1ms) :

- Reset pendant 5 ms

- ABCD = 0000 pendant 100 ms

- ABCD = 0100 pendant 100 ms

Pensez à visualiser les signaux internes Q0, Q1, Q2, Q3 et shift_load_n.

NOT

NOT

NOT

NAND

NA

ND

NOT

NAND

NA

ND

XOR

B

D1

C

D2

D

D3

A

D0

Clock

J

Q1 Q2 Q3Q0

Entrées Parallèles

Shift/Load

Sortie

Fin

N

IC74195

Entrée

Sorties ParallèlesK

NO

T

Reset_n

F_in F_in_N

CLRN

shift_load_nQ0 Q1 Q2 Q3

Figure 17 : Diviseur de fréquence.

3.3 La commande du moteur pas à pas

Nous allons maintenant étudier la commande du moteur pas à pas (cf. Figure 18). Nous

supposerons que le rotor a 4 positions stables I, II, III, IV, selon l’état des interrupteurs

alimentant les 4 enroulements de stator, le rotor étant un aimant à 2 pôles : le moteur avance

d’un pas à chaque étape en avant (I, II, III, IV), en arrière (IV, III, II, I).

Logique Séquentielle - PeiP2 Registres à décalage & Machine à états finis

- 16 -

arrière

avant

A

B

CD

Figure 18 : Description du moteur pas à pas.

Travail demandé a) Recopier et remplir le tableau suivant :

Marche avant Marche arrière

étape Rotor I1 I2 I3 I4 Rotor I1 I2 I3 I4

1 I … … … … IV … … … …

… … … … … … … … … … …

b) Déterminer les fonctions (méthode des φ) le compteur synchrone qui permet de

commander les quatre interrupteurs I1, I2, I3, I4 dans le sens de la marche avant (on

utilisera des bascules JK).

c) Déterminer les fonctions (méthode des φ) le compteur synchrone qui permet de

commander les quatre interrupteurs I1, I2, I3, I4 dans le sens de la marche arrière (on

utilisera des bascules JK).

d) Réaliser le schéma global sous QuartusII (marche avant (question b) et arrière

(question c)) en ajoutant un signal supplémentaire : E=1 pour la marche avant, E = 0

pour la marche arrière.

e) Tester la sortie de la commande du moteur à l’aide d’une simulation.

f) Réaliser le montage complet (cf. Figure 19) en utilisant le diviseur de fréquence de

l’exercice précédent dont la fréquence d’entrée sera réglée à Fin = 1000Hz. Pour cela,

- Créer un nouveau projet

- faite un copier/coller du schéma de l’exercice du diviseur et de même pour le

schéma du moteur pas à pas.

g) Tester le montage complet

Logique Séquentielle - PeiP2 Registres à décalage & Machine à états finis

- 17 -

Diviseurde fréquence

Fin = 10 Hz

D C B A

N (vitesse de rotation du moteur)

Fin/NCommande

moteur pas à pas

I1

I2

I3

I4

E (marche avant/arrière)

Figure 19 : Description fonctionnelle du montage pour la commande du moteur pas à pas.

3.4 Machine à état : Allumage d’un téléphone portable

Un bouton B sert à allumer un téléphone portable ayant une sortie S commandant

l’alimentation du téléphone. Le comportement est le suivant :

1. le téléphone est éteint. Si B est appuyé, le téléphone s’allume (S=1)

2. Il reste allumé tant que B est appuyé

3. Il reste allumé si B est relâché.

4. Si B est appuyé de nouveau, le téléphone s’éteint (S=0)

5. Il reste éteint tant que B est appuyé

6. Il reste éteint si B est relâché.

Travail demandé a) Représenter la machine à état,

b) Déterminer les équations simplifiées

c) Réaliser le schéma sous QuartusII et tester le à l’aide d’un scénario.

Logique Séquentielle - PeiP2 Registres à décalage & Machine à états finis

- 18 -

3.5 Annexe - Circuit 74195

Logique Séquentielle - PeiP2 Registres à décalage & Machine à états finis

- 19 -