Upload
vuongnguyet
View
214
Download
0
Embed Size (px)
Citation preview
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