Académique Documents
Professionnel Documents
Culture Documents
A. Nketsa
Logique séquentielle
Machine à états
Systèmes complexes
A A. B A A
A A A+B A A.B A AB AB
B B B
B B
Absorption 1 = A+ 1 0=A.0
Involution A= A A= A
Complémentarité A+ A = 1 A. A =0
Distributivité A + B .C = ( A + B ) . ( A + C ) A. (B + C) = A . B + A . C
Table de vérité simple Table de vérité sans priorité Table de vérité avec priorité
Définition Définition Définition
- Toutes les combinaisons sont - Toutes les combinaisons sont - Certaines combinaisons sont décrites avec
explicitement décrites. explicitement décrites. des * (correspondant au fait que la valeur 0
- A chaque combinaison, on associe - A chaque combinaison, on associe ou 1 des variables concernées ne change pas
une valeur de la fonction (0 ou 1). une valeur de la fonction (0 ou 1). la valeur de la fonction).
- A chaque combinaison, on associe une valeur
de la fonction (0 ou 1).
f(A,B,C) = A . B . C + A . B . C + A . B . C f(A,B,C) = A . B . C + B
+ A .B.C + A .B.C + A .B.C
Exemple
Exemple
Exemple sraz sload en Terme_produit id
A B C Terme_produit f
A B C Terme_produit f 1 * * sraz 0
0 0 0 A .B.C 0
0 0 0 A .B.C 0 0 1 * s raz . sload 1
0 0 1 A .B.C 1
0 0 1 A .B.C 1 0 0 1 sraz . sload . en 1
0 1 0 A .B.C 1
0 1 0 1 0 0 0 s raz . sload . en 0
0 1 1 1 A .B.C
A .B.C 0 1 1 1
1 0 0 0 A .B.C
A .B.C 1 0 0 0 Id = s raz . sload + sraz . sload . en
1 0 1 0 A .B.C
A .B.C 1 0 1 0
1 1 0 1 A .B.C
A .B.C 1 1 0 1
1 1 1 A .B.C 1 A .B.C
1 1 1 A .B.C 1
Définition
Une table de vérité à variables introduites est une table de vérité pour laquelle la valeur de la fonction peut être *, 0, 1 ou une expression.
Dans ce contexte, les variables de la fonction sont divisées en deux groupes :
- les variables dites principales qui apparaîtront comme entrées principales de la table
- les variables dites introduites qui apparaissent dans les expressions qui représentent la valeur de la fonction
Exemples de table de vérité à variables introduites
Exemple1 Exemple 2
L'intérêt de la table de vérité à variables introduites est d'obtenir une table compacte sans modifier
la définition (valeurs) de la fonction correspondante.
VHDL SYNTHETISABLE A. Nketsa 7 14/11/2022
Théorème d'expansion de Shannon
Ce théorème permet de décrire la même fonction sous différente forme en développant celle-ci selon des variables choisies.
Ce théorème permet aussi de construire la ou les tables de vérité à variables introduites de la dite fonction.
Soit la fonction f(xn..x0)
- développement suivant une variable
f(xn .. xi .. x0) = xi . f(xn .. 1 .. x0) + xi . f(xn .. 0 .. x0)
Ce développement permet d'obtenir une table de vérité sans priorité à variables introduites
Exemple
Soit la fonction f(A, B, C) = A . B . C + B
En déduire les tables de vérités à
variables introduites A B f A f
0 0 f(0,0,C) 0+C=C 0 f(0,B,C) B.C + B = B.C + B
0 1 f(0,1,C) 0+1 =1 1 f(1,B,C) 0 +B =B
1 0 f(1,0,C) 0+ 0 =0
1 1 f(1,1,C) 0+ 1 =1
Description Description
MUX Symbole
générale algébrique
Entrées
I0
Sortie
Sortie = Ii
d’information I1 Avec i = numéro formé par le nombre
(1 bit) Sortie = Ii.An-1..A0
2n vers 1 (2n bits)
S binaire naturel An-1..A0
Avec An-1..A0 = code binaire naturel de i
I2n-1
cas général
A0 An-1
Entrées de sélection (n bits)
Remarque :
Toute fonction logique de (n+1) variables peut être réalisée en utilisant un inverseur et un multiplexeur de 2n vers 1.
A2 A1 A0 S_mux
I7
0 0 0 I0
I6
MUX8V1
I5
0 0 1 I1
I4
0 1 0 I2
I3 S
0 1 1 I3
I2 1 0 0 I4
I1 1 0 1 I5
I0
A0 1 1 0 I6
A1
A2 1 1 1 I7
Remarque :
Si table de vérité simple alors il aurait fallu 211lignes = 2048 lignes
B.D + A. C . D I1 Y
I0
C1
Application directe du théorème d'expansion de Shannon
a) On commence par le C5 en choisissant une variable dont le
I1
développement permet d'obtenir les expressions à appliquer à I1 et I0 I0
Y
S S
I1 Y
b) On recommence le processus pour les deux autres mux de C5 I0 I1
Y
I1 I0
Y S S
I0
c) connaissant les expressions, on recommence en a) pour chaque S I1 Y
I0
cellule de base C2
I1 Y
I0
S
I1
C5
Y
I0
S S
I1 I1 Y
Y I0
I0
S S
I1
I1 Y I0
Y
I0 S
I1 C3
Y
I0
S
C1
I1
Y
I0
S S
I1 Y
I0
I1
Y
I0
S
C4
Vue externe A2 A1 A0 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
3- Encodage
Schéma de calcul
Addition Application aux nombres non signés (NS) Application aux nombres signés (SG)
n n
A B CF
soust_addb 4 OF
Indicateur ZF
Rbrut SF
n
A B CF
soust_addb 4 OF
Indicateur ZF
Rbrut SF
n
signé
signé signé
OF = 1
CF bn-1 b0
signé
Asynchrone Synchrone
Définition Définition
Bascule RS
asynchrone
Les entrées asynchrones sont actives à 0 0 1 * * 0 Mise à 0 asynchrone
1 0 * * 1 Mise à 1 asynchrone
Mode de fonctionnement
1 1 * Qn
1 1 0 * Qn Mémoire
1 1 1 * Qn
Arazb
CK
CK Arazb
Entrees
synchrones Bloc Q(..)
combinatoire D(..) Q(..)
iQ(..)
Bascules D
Conclusion
Tout système séquentiel synchrone simple peut se résumer à la connexion de deux composants:
- le bloc des bascules
- le bloc combinatoire (table de vérité)
Registre tampon
Vue externe Table de vérité
E[n-1..0] S[n-1..0] Table de commande asynchrone
entrée Sortie
ck
arazb
arazb clrn prn remarque
0 0 1 Mise à 0 asynchrone
sraz
en 1 1 1 mémoire
arazb
ck cptg
sraz
sload Q[]
en
ud finc
E[]
find
0 Iq 0 Iq -1
Iq = 0 Em
0 0 0 Iq
1 - Définition
Une machine à états finis est une représentation des systèmes séquentiels ayant au plus un seul état actif à la fois. Cette remarque montre
qu’il existe une notion de mémoire semblable à celle que nous avons décrite pour une bascule. Le mécanisme de mémorisation est le
même.
Le modèle de machine à états finis est très utilisé en électronique numérique et informatique industrielle et embarquée.
Notation ;
Dans ce cours, nous utiliserons :
mae ou MAE ou graphe d'états pour désigner une machine à états finis
Approche intuitive d’une machine à états
I- Deux exemples simples de machine à états que nous avons traités concernent :
- le compteur simple par exemple modulo 4 que l'on peut représenter de la façon suivante :
Q1Q0 Cet exemple montre que les ronds sont les états de comptage et représentent en même temps la
00 01
sortie du compteur.
On peut cependant remarquer que l'on ne peut pas utiliser cette représentation pour un compteur
11 10
modulo élevé.
- le générateur de séquence
Q1Q0
On peut faire aussi la représentation d'un générateur de séquence comme une mae avec le même
00 11 inconvénient que pour un compteur.
01
en
11 10
Remarques importantes :
Parfois dans la définition d’une MAE, on inclut les actions.
Nous considérons que les actions sont déduites de l’évolution des états et pas le contraire.
Nous verrons par la suite que cette remarque est très importante car elle va permettre d’obtenir des MAE simples.
Conclusion :
1- nous considérons que la MAE décrit l’évolution du système.
2- on superpose des actions sur la mae.
Cette approche qui découple l’évolution et la génération des actions montre qu’une même MAE peut être utilisée pour
commander plusieurs systèmes pourvu que ceux-ci aient la même évolution.
L’état est représenté par un rond nommé (souvent le nom est un numéro). n
Cas particulier : n
L'état initial : il est représenté par un double rond avec un nom
n
Un état actif sera agrémenté d’un jeton pour des besoins de visualisation.
La transition
La transition est représentée par un arc étiqueté par une condition booléenne.
Plusieurs représentations graphiques de la transition sont possibles. condition
Nous en avons choisi une pour laquelle la lecture nous semble aisée.
Règles de représentation
i j
Une transition relie toujours deux états.
condition
c3
c2
Un état peut recevoir plusieurs transitions. n
c1
Exemple
Si c1 et c2 ne sont pas exclusives, alors on peut les rendre exclusives en remplaçant c1 par c1. c2 ce
qui permet de rendre c2 plus prioritaire que c1. c2
El la condition d'exclusivité est respectée : c2 . (c1. c2 ) = 0
3- Règles d’évolution
Vocabulaire
- si l'état de départ (état amont d'une ou plusieurs transitions) est actif, on dit aussi que la (les) transition(s) associées à l'état est (sont)
sensibilisée(s)
- si la condition associée à la transition sensibilisée est vraie, on dit aussi que la transition est tirable.
Remarque importante :
Si l’état doit être désactivé et activé en même temps, il reste actif.
VHDL SYNTHETISABLE A. Nketsa 28 14/11/2022
En d'autres termes :
Le passage d’un état (état de départ) vers un autre état (état d’arrivée dans le sens des arcs des transitions) se fait si et seulement si : la
transition considérée est tirable et elle soit être tirée.
Exemples d’évolution
c0 c0
i
c0=1 i
i j
j i
c c=1 c
j cj
k
cj = 1
ci = *
cj
i j
ci
k
cj
j i ci
k
cj = *
ci = 1
i
ci
c1
c4
3
c5 c3
On peut donc considérer qu'une machine à états est un système de commande qui commande d'autres systèmes par
l'intermédiaire des actions.
Une littérature abondante traite des actions générées par les MAE.
Ces actions sont regroupées en 2 types :
- les actions de Moore : elles ne dépendent que des états
- les actions de Mealy : elles dépendent à la fois des états et des entrées.
Remarque :
Les mises à 0 sont implicites. Elles ne sont pas indiquées sur le graphe. Ceci permet de ne pas surcharger le graphe.
Notation des AMZIS : ces actions sont notées sur le graphe d’état comme une AMZI suivie d’une étoile. Chaque mise à 1 est donc
notée : Nom_action(*) = expression. Les mises à 0 sont implicites (comme pour les AMZI). Elles ne sont pas indiquées sur le graphe.
entrées.
Remarque importante :
En électronique numérique, nous démontrons que toutes les actions de commande peuvent se ramener à des actions binaires de
type commande synchrone.
Exemples :
Toutes les commandes synchrones d'un compteur, registres, etc.
Pour cela, on peut associer à la mae un graphe de donnée pour les calculs complexes.
R S1 = 1
S S2 = e4
e0
e1
et0 et1 et2 S0 = 1
e3.e2
Remarque importante :
Le type d'action AMZE (S1 et S2) a permis de simplifier le graphe car si on avait utilisé Moore et ou Mealy, il aurait fallu quadrupler
l'état et1 pour tenir compte de tous les cas possibles de S2 et S1 dans l'évolution.
1- Séquence de comptage
Décrire et réaliser une machine à états qui commande un compteur-décompteur programmable de 4 bits pour réaliser la séquence cyclique
suivante : (0 - 9) (13 - 2) ( 3 - 7)
Donner la vue externe du système.
Donner la vue interne du système pour identifier les commandes à générer.
1 Introduction
Nous avons traité 2 systèmes de base en électronique numérique :
- le système combinatoire :
pour lequel la même combinaison des entrées produit le même résultat en sortie au temps de propagation près.
Nous avons représenté ce type de système par le modèle, la table de vérité à variables introduites.
On peut dire que ce type de système ne dépend pas du temps et ne possède pas de mémoire.
- le système séquentiel :
pour lequel la même combinaison des entrées ne produit pas obligatoirement le même résultat en sortie.
Pour ce type de système, il y a une notion de temps et du passé qui est pri en compte.
Cette prise en compte se traduit pas la notion de mémoire.
Nous avons représenté ce type de système par le modèle, la machine à états finis.
Par ailleurs, nous avons limité la mise en œuvre de ce type de système à sa version synchrone. Pour des raisons pédagogiques, nous
avons présenté ce type de système en 2 étapes :
les systèmes séquentiels synchrones simples dont la modélisation et la mise en œuvre sont directes,
la machine à états avec une mise œuvre synchrone
Remarque : il existe d'autres représentations des systèmes séquentiels que nous n'aborderons pas dans ce cours.
Pour étudier les systèmes séquentiels, nous avons considéré 2 blocs :
le bloc des bascules qui constitue la mémorisation
le bloc combinatoire qui calcule l'évolution du système
Conclusion: Nous avons travaillé sur la base des modèles.
3 Structure et Modélisation
Tout système en électronique Système complexe
numérique peut être décomposé en 2
parties : arazb
Partie commande Partie opérative
- une partie opérative ck entrees #1
Contrôle #1
Composant #1
- une partie commande que nous sorties #1
Commande #1
Contrôle #n
entrees #n
Commande #n Composant #n
sorties #n
Conséquence importante :
Toutes les tables permettront de générer les signaux pour la commande des entrées synchrones des systèmes de la partie opérative.
sraz
Q[3..0]
sload
en
ud
E[3..0]
Cptg_4bits
4-3 Structure
Le système est composé : Cpt_cplexe
- d'une partie opérative (cptg_4bits) arazb
- d'un bloc de commande (Bcmd) ck
arazb
ck
Bcmd
csraz
csraz sraz
Q[3..0]
csload
csload sload
M[1..0] cen
cen en
cud
cud ud
Iq[3..0]
cE[3..0]
Iq[3..0] cE[3..0] E[3..0]
Cptg_4bits
Exemple1
On veut réaliser un système de comptage en BCD modulo 60.
Ce système dispose par ailleurs d'une entrée de mis à 0 asynchrone, arazb (active à 0), d'une entrée de mise à zéro synchrone,
sraz_bcd_60 (active à 1) et d'une entrée d'autorisation de comptage, en_bcd_60 (active à 1)
Donner la vue externe et interne de ce système en faisant apparaître le bloc de commande et la partie opérative.
9 Détection de 9 pour faire avancer les Avancement des dizaines et mise à zéro des secondes
dizaines de 1
0
5
9 Détection de 59 pour passer à 0 Mise à zéro des dizaines et mise à zéro des secondes
0
0
arazb arazb
Bcmd_bcd_60 arazb
ck
ck ck
Cptg_4bits
csrazd
sraz
iqd[3..0] qd[3..0]
cend
en Q[3..0]
0 sload
Sraz_bcd_60 0 ud
0000 E[3..0]
En_bcd_60
arazb
arazb
ck
ck Cptg_4bits
csrazu
sraz
cenu iqu[3..0] qu[3..0]
en Q[3..0]
iqd[3..0]
0 sload
iqu[3..0] 0 ud
0000 E[3..0]
U0_cpt_diz
arazb arazb
Bcmd_bcd_60 arazb
ck Cptgn
ck ck
csrazd
sraz
iqd[3..0] qd[3..0]
cend Q[n-1..0]
en
0 sload finc
Sraz_bcd_60 0 ud open
0000 E[n-1..0] find open
En_bcd_60
4 gen(n:=3)
U0_cpt_unite
arazb
arazb
iqd[3..0] ck
ck Cptgn
iqu[3..0] csrazu
sraz
cenu iqu[3..0] qu[3..0]
en Q[n-1..0]
0 sload
finc
0 ud open
0000 E[n-1..0] find open
4 gen(n:=3)
Detecte_59
c) On veut maintenant utiliser les deux compteurs BCD pour réaliser le comptage HH:MN
c-1) Donner le schéma de ce nouveau compteur
c-2) Décrire en VHDL et simuler ce compteur.
c-3) Tester sur site
U0_cpt_bcd_24
arazb Bcmd_bcd_horloge arazb
arazb
ck
ck ck Cpt_bcd_24
csrazh
sraz
cenh Qd_h[3..0]
en qd[3..0]
En_horloge Detecte_23
Detecte_23
U0_cpt_bcd_60
arazb
arazb
ck
ck Cpt_bcd_60
csrazmn
sraz Qd_mn[3..0]
cenmn qd[3..0]
en
qu[3..0] Qu_mn[3..0]
Detecte_59
Detecte_59
idetecte_59
Table de commande
comparateur periode
Periode-1
+ -
srazc
-
horloge
prediviseur
Fin_prediv
sraz
+ Freq_pwm
en
pred
Compteur libre
+
Freq_cpt
Freq_syst
TON TON
Freq_cpt = freq_syst/pred pred est le modulo du prédiviseur mais on charge pred-1 dans le prédiviseur
Freq_pwm = freq_cpt/(periode) periode est le modulo du compteur libre.
Donc on détectera periode-1 pour mettre le compteur libre à 0 avec une précaution de maintenir la bonne
durée de l'état période-1.
U0_prediv
arazb arazb
ck ck
0 sraz Q_prediv(15..0)
sloa d
Q
en
1 ud finc open
E_prediv(15..0) E find
16 gen(n:=4)
cptgn
sloa d_prediv
gen(n:=4) Q
q_mperiode
En_d_pwm
en_prediv
fin_prediv
reggn en
sraz_cpt
en_TON
iQ_libre
en_cpt
q_TON
D_pwm
D
basculeD_en
U0_bcmde_pwm
en_cpt
q_mperiode
sraz_cpt
en_d_pwm
sload_prediv
en_prediv
fin_prediv
q_TON
en_TON
en_mperiode
D_pwm
Q_libre
En_pwm
Bcmde_pwm
periode
PWM TON
CK
Q_prediv 2 2 1 0 2 1 0 2 1 0 2 1 0 2 1 0 2 1 0
fin_prediv
Q_cpt_libre 0 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 0 0
sinon
Initialiser les composants de la partie opérative
Prediviseur charger le prédiviseur
compteur_libre mettre le compteur libre à 0
bascule_pwm mettre bascule_pwm à 0
charger les registres r_ton par E_ton et r_periode par E_mperiode
fsi
Compléter la table de fonctionnement à partir de cette description algorithmique du bloc de commande,
On utilise :
- comme entrée principale : en_pwm
- comme entrées secondaires (variables introduites) : fin_prediv, e_TON, e_periode et q_libre
Remarque :
Pour la commande sraz_cpt , il faut tenir compte du fait que la durée du dernier état doit être la même que celle les autres états.
Pour des raisons pédagogiques; nous avons sorti les signaux à observer et analyser pendant la simulation :
- vq_prediv(13..0) pour visualiser l'évolution du prediviseur
- vsload_prediv
- vfin_prediv
- vsraz_cpt pour la synchronisation du pwm
- vq_libre(10..0),
I1 n_mux2v1
I0
S E_prediv(13..0) Sortie_pwm
A
gen(n=1)
vQ_prediv open
E_mperiode(10..0)
vfin_prediv open
I1 n_mux2v1 vsraz_cpt open
I0
S E_TON(10..0) vsraz_cpt open
A
gen(n=1) vQ_libre open
en_pwm
PWM