Chapitre 1 - ESIEE...
Transcript of Chapitre 1 - ESIEE...
Chapitre 1Introduction et codageIGE-1001 : fonctions numériqueshttp://www.esiee.fr/~nouryl/IGE-1001, 22 septembre 2013
Ludovic Noury, ESIEE Paris([email protected], bureau 3453)
1.1
Objectifs
Table des matières1 Introduction 1
1.1 Organisation du cours . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Objectifs du chapitre 1 . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Analogique vs. Numérique . . . . . . . . . . . . . . . . . . . . . . . 21.4 Quizz 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Système numérique 72.1 Signaux binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.2 Opérations élémentaires . . . . . . . . . . . . . . . . . . . . . . . . 82.3 Réalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.4 Quizz 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3 Représentations binaires 113.1 Entiers naturels (N) . . . . . . . . . . . . . . . . . . . . . . . . . . 113.2 Entiers relatifs (Z) . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2.1 Représentation en code complément à 2 (CC2) . . . . . . . 143.2.2 CC2 : addition . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3 BCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.4 Autres codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.5 Quizz 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.2
1 Introduction1.1 Organisation du cours
Planning1. Introduction et codage (TD1)2. Logique combinatoire (TD1-2, TP1-TP2)3. Logique séquentielle (TD3-4, TP3)4. Machines à états (TD4-5, TP4)
1
5. Principes d’un FPGA? (si temps)
Évaluation– TPs 30% (en binôme, le rapport compte beaucoup)– Contrôle final 70% (samedi 16/11/2013 8h-10h)
1.3
Équipe pédagogique– Responsable : L. Noury (3453)– Autres intervenants : A. Exertier (3455), G. Amendola (3452), L. Babad-jian (3354), L. Sevely (3405), M. Abi Hussein (2351), A. D’Hermies (3454),C. Sencio, B. Achard, K. Abdellatif
À l’aide !– Post-assistance– Site du cours (documents, guides, forum, etc) : http://www.esiee.fr/
~nouryl/IGE-1001– Installer Quartus 2 chez vous (version gratuite à télécharger depuis le sitedu cours)
– Livre : T. Floyd, systèmes numériques (bibli. ESIEE)1.4
1.2 Objectifs du chapitre 1
Savoirs– Définitions système analogique et numérique– Représentation et transport de l’information dans un circuit numérique
(code binaire, transmission série et parallèle)– Opérations logiques de base (AND, OR, etc.)– Technologies de réalisation d’un circuit numérique– Codes usuels (CBN, CC2, BCD)
Capacités– Déterminer si un système est numérique/analogique/mixte– Convertir des nombres entres les bases 2, 10 et 16– Représenter des nombres relatifs, code complément à 2– Add., soustraire et comparer des nombres en CBN et CC2
1.5
1.3 Analogique vs. NumériqueQuantité analogiqueDéfinition : quantité analogiqueUne quantité analogique est une quantité ayant des valeurs continues
Exemple : thermomètre à alcoolLa température est définie à chaque instant (une température est définie pourchaque valeur de t ∈ R+)
−10
20
10
0Temps continu, t
Temperature c(t)
1.6
2
Quantité numériqueDéfinition : quantité numériqueUne quantité numérique est une quantité ayant un ensemble discret de valeurs
Exemple : thermomètre digitalLa température approximée est définie seulement à certains instants (unetempérature est définie pour chaque valeur de t ∈ N)
−10
20
10
0
Temperature (n)
Index temps discret, n
−10
20
10
0
Temperature (n)
Index temps discret, n
1.7
Réalisation d’un système électroniqueOn minimise l’usage d’électronique analogique
– Circuit analogique généralement beaucoup plus complexe à concevoir quele circuit numérique équivalent
– De nombreuses fonctions ne peuvent être faites qu’en analogique– Le monde est analogique ⇒ besoin systèmes analogiques pour faire l’inter-face entre :– Domaine numérique, discret (exemple : représentation binaire interne àl’ordinateur)
– Domaine analogique, continu (exemples : phénomènes naturels, externesà l’ordinateur : mesure de température, d’onde sonore, etc)
Forme classique d’un système1. Conversion de la grandeur analogique à traiter en numérique2. Traitement numérique des données3. Conversion des résultats en analogique
1.8
Exemples de systèmes numériques et analogiques
(source : Digital Fundamentals, Floyd)
3
(source : Digital Fundamentals, Floyd)
1.9
Réalisation du traitement numérique
– Processeur généraliste : coût de développement +, performances + .Ex : Intel Core i7, ARM Cortex M2, utilisé en IGI-1001
– Processeur spécialisé : coût de dév. ++, performances ++ uniquementpour application spécifique au processeur (audio, vidéo, etc.). Ex : DSPTexas Instruments C6000 , GPGPU (General-purpose processing on gra-phics processing units)
– Circuit configurable : coût de dév. +++, performances +++. Ex : FPGAAltera Cyclone II, utilisé en TP
– Circuit dédié (ASIC) : coût de dév. +++++, performances +++++.Ex : Apple A6, Qualcomm Snapdragon
On cherche le meilleur compromis entre temps de conception et coût, en utilisantéventuellement plusieurs technologies simultanément
1.10
Les FPGAs sont partout !
Quelques exemples– Les premières Freebox (jusqu’à v3) pourquoi ?– Les banques accelèrent le traitement des flux des réseaux boursiers à l’aide
de FPGAs (ex : BNP)– Les routeurs Cisco, Alcatel, Motorola. . .– Autres exemples : voir altera.com et xilinx.com
Conclusions– Tous les ingénieurs n’auront pas à savoir concevoir un système sur FPGA. . .
– . . .mais il doivent tous être capables de :– Réaliser le cahier des charges d’accélérateur/interface FPGA,– Programmer un processeur sur FPGA et/ou interfacer avec un FPGA,– Mettre à jour la configuration d’un FPGA, etc,– Faire l’interface (démonstration bugs) avec un sous traitant FPGA, etc.
1.11
1.4 Quizz 11. Donner des exemples de : systèmes purement numériques, systèmes pure-
ment analogiques, systèmes mixtes2. Les premières radios étaient complètement analogiques, aujourd’hui on ne
parle que de numérique. Pourquoi la partie analogique diminue t’elle ? Pour-quoi ne disparaîtra t’elle jamais complètement ?
4
3. Comparer et expliquer les différences entre les coûts de conception et de fa-brication de systèmes basés sur : processeurs généralistes, DSPs et FPGAs,ASIC
4. Comment déterminer la performance d’un circuit numérique (quels sont lescritères) ?
1.12
5
6
2 Système numérique2.1 Signaux binairesBits, niveaux logiques et signaux
Chiffre binaire– Un chiffre binaire est appelé un bit (Binary digIT)– 2 chiffres possibles : 0 et 1
– État électrique bas (L) ⇒ 0 Exemple : L=0V– État électrique haut (H) ⇒ 1 Exemple : H=3.3V
Signal– Un fil transportant un signal numérique a donc uniquement 2 tensions pos-sibles : état haut et état bas
– Exemple : LHHHLLHLLLHHL soit 0111001000110
VL(min)
VL(max)
VH(min)
VH(max)
(0 binaire)
Etat haut (H)
(1 binaire)
Interdit
Etat bas (L)
t0
t1
t0
t1
HAUT
HAUT
BAS
BAS
descendant
front
front
descendant
front montant
front montant
1.13
Signal périodique et horloge
Définitions
T1
T3
T2
– Signal périodique (à gauche) :– Se répète à un intervalle T fixe appelé période Unité : secondes (s)– Sa fréquence f indique le nombre de fois où le signal se répète par unitéde temps. Unité : Hertz (Hz)
– f = 1/T– Signal apériodique (à droite) :– Ne se repète pas identique à lui même au cours du temps
Exercice– Quelle information transporte le signal apériodique ?
1.14
7
1.15
Transfert de données : parallèle et série
t1
t0
t0
t1
t2
t3
t4
t5
t6
t7
t8
0
0
0
0
1 0 1 1 0 0 1 0
1
1
1
1
So
urc
e(e
xe
mp
le :
ord
ina
teu
r)
De
sti
na
tio
n(e
xe
mp
le :
im
pri
ma
nte
)
So
urc
e(e
xe
mp
le :
ord
ina
teu
r)
De
sti
na
tio
n(e
xe
mp
le :
mo
de
m)1.16
2.2 Opérations élémentairesOpérations logiques de baseOpérations de base :
– NOT (inversion)– AND (et)– OR (ou)– XOR (ou exclusif)
AND
NOT
XOR
OR
Remarques :– D’autres symboles existent (rectangles) mais pour être cohérent avec le
logiciel utilisé en TP on utilisera uniquement les symboles présentés ci-dessus.
– Une table de vérité définit la valeur des sorties (colonnes à droite de ladouble barre verticale) d’un système combinatoire (sans mémorisation) enfonction de la valeur de ses entrées (colonnes à gauche de la double barreverticale).
8
Table de vérité :
A B NOT(A) AND(A,B) OR(A,B) XOR(A,B)0 0 1 0 0 00 1 1 0 1 11 0 0 0 1 11 1 0 1 1 0
1.17
Autres fonctions :– Sélection de données : multiplexeur, demultiplexeur– Fonctions de stockage : bascules, registres, mémoires
1.18
2.3 RéalisationCarte de prototypage FPGA (Terasic DE2)
(source : Altera, 2006)
– Carte utilisée pour les TPs, basée sur un FPGA Altera Cyclone II– Ce FPGA peut être configuré pour réaliser des circuits utilisant jusqu’à
environ 1 million de portes logiques 1.19
2.4 Quizz 21. Quelle est la différence entre un byte et un bit ?2. Combien de temps faut t-il pour transférer la donnée 01001011 en parallèle
(sur 8 bits) ? en série ? Quelle est l’unité de votre résultat ?3. Si la période du signal d’horloge d’un circuit est de 20 ns quelle est sa
fréquence ?4. Que vaut l’expression (NOT(A XOR B)) AND (C OR B) si A=1,B=0 et
C=1 ?5. Quelle sont les principales méthodes pour réaliser un circuit numérique ?
Pourquoi ne peut on pas utiliser un processeur ou un DSP?1.20
9
10
3 Représentations binaires3.1 Entiers naturels (N)Même principe que pour le décimal (base B=10)
– 10 chiffres : 0,1,2,3,4,5,6,7,8,9– Exemple : 138 en base 10, noté (138)10– À chaque chiffre xi on associe un poids :
– Le poids de x0 = 8 est 0 (poids faible)– Le poids de x1 = 3 est 1– Le poids de x2 = 1 est 2 (poids fort)
– À chaque poids correspond un facteur fi :– Poids 0 : f0 = B0 = 100 = 1– Poids 1 : f1 = B1 = 101 = 10– Poids 2 : f2 = B2 = 102 = 100
– La valeur du nombre est donc : v = (x2 × f2) + (x1 × f1) + (x0 × f0) =(1×100)+(3×10)+(8×1) = 138 1.21
Code naturel : cas général– v = (x(N−1)×B(N−1))+ . . . · · ·+(x1×B1)+(x0×B0)– B=base, N=nb. de chiffres du nombre 1.22
Conversion code binaire naturel (B=2) vers décimalDans ce cours, comme en décimal, les bits de poids fort seront
toujours à gauche et ceux de poids faible à droite1. d = (10001010)2
2. d = (1× 27) +(0× 26) +(0× 25) +(0× 24) +(1× 23) +(0× 22) +(1× 21)+(0×20)
3. d = 27 +23 +21
4. d = 128+8+2 = (138)10 1.23
Nombres hexadécimaux (B=16)– 16 chiffres : 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F– A=10,B=11,C=12,D=13,E=14,F=15– Conversion en décimal :
1. d = (8A)16
2. d = (8×161)+(A×160)3. d = (8×16)+10 = (138)10 1.24
11
Compter en binaire et intérêt de l’hexadécimal
Décimal Binaire Hexadécimal0 0 0 0 0 01 0 0 0 1 12 0 0 1 0 23 0 0 1 1 34 0 1 0 0 45 0 1 0 1 56 0 1 1 0 67 0 1 1 1 78 1 0 0 0 89 1 0 0 1 910 1 0 1 0 A11 1 0 1 1 B12 1 1 0 0 C13 1 1 0 1 D14 1 1 1 0 E15 1 1 1 1 F
Conversion hexa⇔decimal– 1 nombre hexadécimal représente 4 bits– D’où conversion immédiate hexadécimal⇔ binaire– Exemple : (1CE6)16= (0001 1100 1110 0110)2
1.25
Conversion décimal ⇒ binaire– Méthode utilisée :– Somme des poids– But : décomposer en somme de puissances de 2– Astuce : au début faire le tableau suivant au brouillon pour s’aider
20 21 22 23 24 25 26 27 28 29 210
1 2 4 8 16 32 64 128 256 512 1024– Exemple :– Conversion de (42)10– On soustrait itérativement les puissances de 2 immédiatement inférieuresou égale1. 32 < 42 < 64 on sélectionne 32 soit 25. On soustrait : 42−25 = 42−
32 = 102. 8 < 10 < 16 on sélectionne 8 soit 23. On soustrait : 10−23 = 10−8 = 23. 2 est une puissance de 2, on sélectionne 2 soit 21. On soustrait :
2−21 = 0– On en déduit le résultat : 25 +23 +21 soit (42)10 = (101010)2
RemarqueIl existe d’autres méthodes, mais je vous demande d’utiliser celle là !
1.26
Arithmétique en code binaire naturel (non signé)
Rappel : code binaire naturel (CBN)– v = (x(N−1)×B(N−1))+ . . . · · ·+(x1×B1)+(x0×B0)– C’est le cas où B = 1 B = 2
12
Dépassement de capacité– Un dépassement de capacité (overflow) se produit lorsque le résultat d’uneopération sur N bits à une valeur supérieure à celle représentable sur N bits
– En CBN, on détecte le dépassement de capacité à la présenced’une retenue sortante
1.27
Addition
1 10 1 1 3
+ 0 0 1 + 11 0 0 4
Soustraction
-11 0 1 5
- 0 1 1 - 30 1 0 2
1.28
CBN : taille en bit et intervalle représentable– Il y a un nombre infini d’entiers naturels– Mais en binaire, un entier naturel est représenté en CBN sur un nombre
fini de bits– Comment déterminer les nombres représentables sur N bits ?– 1 bit : max(CBN 1 bit) = 20 = 1, 2 nombres représentables : {0,1}– 2 bits : max(CBN 2 bits) = 21 +20 = 3, 4 nombres représentables : {0,1,2,3}– 3 bits : max(CBN 3 bits) = 22 + 21 + 20 = 7, 8 nombres représentables :{0,1,2,3,4,5,6,7}
– On en déduit le cas général sur N bits : max(CBN N bits) = 2N−1 + . . .22 +21 +20 = 2N −1, 2N nombres représentables : {0,1,2, . . . ,2N −1} 1.29
– Comment déterminer le nombre minimal de bits pour représenter un nombre ?– C’est l’exposant de la puissance de 2 strictement immédiatement supé-rieure :
20 21 22 23 24 25 26 27 28 29 210
1 2 4 8 16 32 64 128 256 512 1024– Exemples :
– 302 sera représenté sur au moins 9 bits– et 4 ? . . . sur 3 bits :(0)10 = (0)2; (1)10 = (1)2; (2)10 = (10)2; (3)10 =
(11)2; (4)10 = (100)2– Pour les grands nombres, vous pouvez utiliser le log en base 2 :
– Rappel : y = logb v dététermine y tel que by = v– On en déduit que l’exposant de la puissance de 2 immédiatement stric-
tement supérieure est : N = arrondi_supérieur(log2 v)
N ={
arrondi_supérieur(log2 v) si log2 v n’est pas un entier(log2 v)+1 si log2 v est un entier
– Exemple : 65234 : log2 65234 = 15,993 d’où N = 16 bits 1.30
CBN : conversion n bits vers m bits (avec m>n)– Comment convertir un nombre en CBN représenté sur n bits en un nombre
sur m bits (avec m > n) ?
13
– On ajoute simplement le nombre de zéros nécessaires pour arriver à m bits,du côté des poids forts
– Exemple : (12)10 = (1100)CBN = (01100)CBN = (00001100)CBN 1.31
3.2 Entiers relatifs (Z)Représentation des entiers relatifs (Z)
Principe– Rappel : représentation des entiers naturels (N) à l’aide du code binairenaturel (CBN). Exemple : (178)10 =128 + 32 + 16 + 2 =27 + 25 + 24 + 21=(10110010)2
– Pour pouvoir représenter les entiers relatifs (nombres signés) on ajoute unbit de signe S placé en poids fort– S = 0 : le nombre est positif– S = 1 : le nombre est négatif
– Plusieurs codages : signe-magnitude, complément à 1, complément à 2, etc.– On utilisera uniquement le code complément à 2 (CC2)
1.32
3.2.1 Représentation en code complément à 2 (CC2)Rappel :À chaque bit xi est associé :
– Un poids i selon la position du bit dans le nombre– Un facteur fi dont la valeur dépend du codage et du poids du bit
Principe– Le facteur associé au bit de signe est −2i
– Le facteur associé aux autres bits est 2i, comme en CBN– Si seul le bit de signe vaut 1 on aura le plus petit nombre négatif représen-table– Exemple sur 4 bits : (1000)CC2 =−23 =−8
– Mettre les autres bits à 1 rapproche le nombre de 0– Exemples :– (1000)CC2 =−23 =−8– (1001)CC2 =−23 +20 =−8+1 =−7– (1101)CC2 =−23 +22 +20 =−8+4+1 =−3– (1111)CC2 =−23 +22 +21 +20 =−8+4+2+1 =−1
– Question : quelles sont les valeurs représentées par les CC2 suivants : 10,110, 1110 ? (pas sur poly)
1.33– Nombre positif :
– On ajoute un bit de signe S = 0 en poids fort de sa représentation enCBN
– Exemple : (178)10 = (0 10110010)CC2 1.34– Nombre négatif : Exemple : (−178)10
1. Recherche puissance de 2 inférieure la plus proche−20 −21 −22 −23 −24 −25 −26 −27 −28 −29
-1 -2 -4 -8 -16 -32 -64 -128 -256 -512−256 =−28⇒ poids du bit de signe : 8 et codage sur au minimum 9bits
2. Addition de puissances de 2 jusqu’à arriver au nombre– On part de la puissance la plus haute et à chaque fois on la sélec-
tionne si elle ne fait pas dépasser la valeur cible
14
– −256+64 =−192– −192+8 =−184– −184+4 =−180– −180+2 =−178(−178)10 =−28 +26 +23 +22 +21 = (1 01001110)CC2 1.35
CC2 : décodage (nombre sur N bits)– Version en matheux :
– v =−2(N−1)x(N−1) +∑(N−2)
i=0 (2i ·xi)– Version en français (un peu matheux) :– Le bit de signe x(N−1) a pour facteur : −2(N−1)
– Les autres bits xi ont pour facteur : 2i
– La valeur est obtenue en additionnant tous les facteurs dont le bit associévaut 1
– Exemples :– (00010111)CC2 =24+22+21+20 =16+4+2+1 =(+23)10– (11101001)CC2 =−27+26 +25 +23 +20 =−128+64+32+8+1 =(−23)10
Binaire CC200000000 000000001 1
... ...01111110 12601111111 12710000000 -12810000001 -12710000010 -126
... ...11111110 -211111111 -1
1.36
3.2.2 CC2 : addition
En CC2 on ignore TOUJOURS la retenue sortante, 3 cas possibles :
– 2 nombres positifs :00000111 7
+ 00000100 + 400001011 11
– Nombre positif > abs(nombre négatif) :00001111 15
+ 11111010 + -61 00001001 9
– 2 nombres négatifs :11111011 -5
+ 11110111 + -91 11110010 -14 1.37
CC2 : dépassement de capacité (overflow)– Comment déterminer si il y a overflow si on ne peut pas utiliser la retenuesortante ?
– Il y a overflow si la somme de deux nombres de même signe n’a pas le mêmesigne
15
– Exemple :01111101 125
+ 00111010 + 5810110111 -73 ! ! 1.38
CC2 : extension de signe– Comment éviter l’overflow ?– Comment additionner deux nombres représentés sur nombre de bits diffé-
rents ?– ⇒ extension (duplication) du bit de signe– Si le bit de signe vaut 0 on ajoute des 0 en poids fort (à gauche)– Si le bit de signe vaut 1 on ajoute des 1 en poids fort (à gauche)
– Exemple 1 (pour éviter un overflow) :01111101 001111101 125
+00111010 +000111010 +58010110111 183
– Exemple 2 (2 nombres de tailles différentes) :10110 1110110 -10
+0111001 + 0111001 +5710101111 47 1.39
3.3 BCDDécimal codé en binaire (BCD)Principe
– BCD : Binary Coded Decimal– Le BCD permet une conversion simple entre décimal et binaire– 4 bits ⇒ 16 combinaisons
– 10 utilisés pour coder les chiffres de 0 à 9– 6 interdites (1010 1011 1100 1101 1110 1111)Chiffre Décimal 0 1 2 3 4 5 6 7 8 9BCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
Exemples– 35 ⇒ 0011 0101– 1000 0110 0001 ⇒ 861 1.40
3.4 Autres codesCode de Gray
– Un seul bit change lors du passage d’un code au code suivant– Exemples d’utilisation : codeurs rotatifs, tables de Karnaugh– Comment compter en code de Gray ?
– On commence avec tous les bits à 0– Pour passer au nombre suivant on inverse le bit le plus à droite permet-tant d’obtenir une nouvelle combinaison
Decimal Binaire Gray Décimal Binaire Gray0 0000 0000 8 1000 11001 0001 0001 9 1001 11012 0010 0011 10 1010 11113 0011 0010 11 1011 11104 0100 0110 12 1100 10105 0101 0111 13 1101 10116 0110 0101 14 1110 10017 0111 0100 15 1111 1000
1.41
16
Codage des caractères– Code ASCII : American Standard Code for Information Interchange, codeutilisant 7 bits
– ASCII étendu (le plus courant aujourd’hui), utilise 8 bits (ajoute carac-tères non américains, quelques symboles mathématiques, etc)
– Unicode : environ 100 000 caractères (codage à taille variable de 8 pourles caractères les plus répandus à 32 bits pour les plus rares), de plus enplus utilisé.
0 1 2 3 4 5 6 7 8 9 A B C D E F0
1
2
3
4
5
6
7
NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
! " # $ % & ' ( ) * + , - . /
0 1 2 3 4 5 6 7 8 9 : ; < = > ?@ A B C D E F G H I J K L M N O
P Q R S T U V W X Y Z [ \ ] ^ _
` a b c d e f g h i j k l m n op q r s t u v w x y z { | } ~ DEL
b6b5b4
000
001
010
011
100
101
110
111
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
b3b2b1b0
(source : wikipedia)
1.42
3.5 Quizz 31. Soit A = 011110101 Quel est le bit de poids fort ? Quel est le bit de poids
faible ? Que vaut A ?2. Quelles sont les valeurs décimales de (AE23)16 et (110101)2 ?3. Quelles sont les valeurs binaires et hexadécimales de 130 et 44579 ?4. Si (FF )16 représente un nombre codé en complément à 2 quelle est sa
valeur ?5. Ajouter -3 et 32 en CC2 sur un nombre suffisant de bits6. Quelle est la valeur en code BCD de 10 ?
1.43
17
18
19
Chapitre 2Logique combinatoireIGE-1001 : fonctions numériqueshttp://www.esiee.fr/~nouryl/IGE-1001, sep. 2013
Ludovic Noury, ESIEE Paris([email protected], bureau 3453)
2.1
Objectifs du chapitre 2
Savoirs– Fonctionnement des principales portes logiques– Méthodologie de conception d’un circuit combinatoire
Capacités– Savoir concevoir un circuit combinatoire simple à partir de sa description
fonctionnelle sous forme d’un cahier des charges– C’est-à-dire être de capable de :
1. Déterminer la table de vérité à partir du cahier des charges2. Extraire et simplifier les équations correspondances3. Faire la schématique du circuit électronique associé4. Utiliser un logiciel de conception pour implanter le circuit sur un
FPGA5. Tester le circuit sur le FPGA
2.2
Table des matières1 Portes logiques 2
2 Algèbre booléenne 32.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2 Lois et règles principales . . . . . . . . . . . . . . . . . . . . . . . . 4
3 Conception d’un circuit combinatoire 53.1 Spécification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53.2 Simplification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4 Réalisation 84.1 Schématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84.2 Implantation sur FPGA . . . . . . . . . . . . . . . . . . . . . . . . 9
5 Composants usuels 10
1
6 Compléments 126.1 Logique booléenne . . . . . . . . . . . . . . . . . . . . . . . . . . . 126.2 Préparation LAB1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
7 Exercices 16 2.3
1 Portes logiquesOpérations logiques élémentaires (rappel)
– NOT (inversion)– AND (et)– OR (ou)– XOR (ou exclusif)
AND
NOT
XOR
OR
A B NOT(A) AND(A,B) OR(A,B) XOR(A,B)0 0 1 0 0 00 1 1 0 1 11 0 0 0 1 11 1 0 1 1 0
2.4
Exercice : compléter les chronogrammes
I Q
1
0
0
1
Q
I
A
B
Q
Q
B
A A
B
Q
B
AQ
B
AQ
B
AQ
2.5
2
InversionsPortes à sortie inversées
– NAND : NAND(A,B) = NOT(AND(A,B))– NOR : NOR(A,B) = NOT(OR(A,B))– XNOR : XNOR(A,B) = NOT(XOR(A,B))– Symboles : ajout d’un rond sur la sortie (comme pour le NOT) pour indiquer
que la sortie est inversée2.6
Symbole d’inversion (rond)– Sur une entrée : indique que l’entrée est active à l’état bas– Sur une sortie : la sortie est inversée
– Exercice : déterminer la table de vérité des deux portes AND de droite
2.7
2 Algèbre booléenne2.1 PrincipeDéfinitionsAlgèbre de Boole
– Basée sur les travaux de George Boole (1854)– Permet d’exprimer et d’analyser le fonctionnement des circuits logiques sous
une forme mathématique– Très utile pour concevoir des circuits électroniques numériques
Variable– Symbole utilisé pour représenter une action, une condition ou une donnée– Une variable peut avoir seulement deux valeurs : 0 ou 1
2.8
3
Opérations booléennes
Complément– Équivalent à l’opération NOT– C’est l’inverse d’une variable– Le complément de la variable A est noté A– Si A = 1, alors A = 0
Addition booléenne– Équivalente à l’opération OR (vaut 1 si au moins un des termes vaut 1,sinon vaut 0)
– 0+0 = 0 0+1 = 1 1+0 = 1 1+1 = 1– Exemples : A+B A+B +C +D A+1
2.9
Multiplication booléenne– Équivalente à l’opération AND (vaut 1 si tous les termes valent 1, sinon
vaut 0)– 0 ·0 = 0 0 ·1 = 0 1 ·0 = 0 1 ·1 = 1– Exemples : A ·B AB AB AB (A+BC)D A ·1
Ou exclusif (XOR)– Pas d’équivalence avec les 4 opérations usuelles, on ajoute un opérateurequivalent au XOR ayant pour symbole ⊕
– 0⊕0 = 0 0⊕1 = 1 1⊕0 = 1 1⊕1 = 02.10
2.2 Lois et règles principales
Lois– Commutativité : A+B =B +A– Associativité : A+(B +C) =(A+B)+C– Distributivité : A(B +C) =AB +AC
Règles de base1. A+0 =A
2. A+1 =13. A ·0 =04. A ·1 =A
5. A+A =A
6. A+A =17. A.A =A
8. A.A =09. A =A
10. A+AB =A
11. A+AB =A+B
12. (A+B)(A+C) =A+BC2.11
Lois de DeMorgan :1. XY =X +Y
2. X +Y =X ·Y
4
Exercice :Simplifiez A+BC +D(E +F ) de façon à ne plus avoir de doubles négations
2.12
3 Conception d’un circuit combinatoire3 Étapes
1. Spécification : entrées/sorties, table de vérité2. Simplification : simplification des équations, décomposition en sous-blocs
moins complexes, réutilisation de composants3. Réalisation :enumerate mise sur carte et test 2.13
3.1 SpécificationConstruction de la table de vérité
SpécificationÀ partir du cahier des charges :
1. Définir les entrées et les sorties2. Formaliser le fonctionnement
– Définir précisément les valeurs des sorties en fonction des entrées– Si le circuit est suffisamment simple : construire la table de vérité– Si le circuit est trop complexe (additionneur 32 bits, processeur complet)
le décomposer en sous-composants plus simples
5
2.14
Exemple : multiplexeur 2 entrées (trivial mais montre la méthode)Cahier des charges : construire un composant permettant de sélectionner unede ses deux entrées A et B comme sortie
2.15
Mise en équation des fonctions à réaliser
À partir de la table de vérité on peut extraire la fonction à réaliserPour chaque sortie :
1. On exprime chacune des conditions pour laquelle la sortie vaut 12. On regroupe ces conditions dans une seule équation
Exemple : multiplexeur 2 entrées (suite)
2.16
Définition
Somme de produits (SOP)L’expression extraite de la table de vérité est appelée « somme de produits »(SOP, sum of products) ou forme normale disjonctive
6
Remarques– L’expression obtenue n’est pas la forme la plus simple mais on peut la
simplifier– Cette méthode peut être appliquée de manière mécanique et efficace à n’im-porte quel système, même très complexe, à condition d’avoir la table devérité
– Toute la difficulté est donc d’exprimer le cahier des charges sous formed’une table de vérité, la suite étant « automatique » (Et donc décomposeren sous-blocs plus simples si la table de vérité est trop complexe/longue)
2.17
Astuce– Une table de vérité à n entrées a 2n lignes– Donc pour n = 5 on aura 32 lignes et donc au pire l’équation SOP de S
aura 32 termes !– L’astuce est s’il y a moins de lignes à 0 que de lignes à 1 de donner lerésultat sous la forme : S = SOP des lignes à 0
– Lors de la simplification, il est souvent plus simple (et suffisant), de laisserla négation et de simplifier seulement la « SOP des lignes à 0 »
2.18
3.2 SimplificationBesoin de simplification
Implantation directe– En théorie on peut maintenant directement implanter la fonction, mais en
pratique on ne le fait généralement pas. Pourquoi ? Car le résultat est trèssous-optimal
– Dans l’exemple Q = selAB +selAB +selAB +selAB il faudrait : 8 portesAND à 2 entrées, 3 portes OR à 2 entrées et 4 inverseurs !
Simplification– L’étape suivante est donc la simplification des fonctions booléennes à réa-liser
– 2 méthodes usuelles :1. Algèbre booléenne2. Tables de Karnaugh (supprimé du programme, ne servait qu’en E1)
2.19
Principe– On simplifie en utilisant les lois et 12 règles de base– Demande une bonne connaissance de l’algèbre booléenne, de la pratique,
beaucoup de rigueur et un peu d’astuce ...
Simplification de l’exemple du multiplexeur1. Q = selAB +selAB +selAB +selAB
2. Q = sel(AB +AB)+sel(AB +AB)3. Q = sel(A��B +A��B)+sel(��AB +��AB)4. Q = selA+selB
2.20
7
Exercice
ÉnoncéSimplifiez l’équation booléenne suivante : S1 = [AB(C +BD)+A ·B]C
2.21
4 Réalisation4.1 Schématique
Une fois les équations obtenues, on réalise le schéma du circuit
8
Exemple du multiplexeur (fin)
– Composants utilisés :– 3 connecteurs d’entrées. Nom du composant Quartus : input– 1 connecteur de sortie. Nom du composant Quartus : output– 1 inverseur. Nom du composant Quartus : not– 2 portes AND. Nom du composant Quartus : and2– 1 porte OR. Nom du composant Quartus : or2
2.22– On peut utiliser plusieurs fois le même composant– Pour les différentier on leur donne à chacun un nom différent– En pratique, on dit que l’on instancie un composant et chaque instance ason propre nom
– Exemple : inst1 et inst2 sont deux instances du composant AND2– Vous n’avez pas à indiquer de noms d’instance sur vos schémas papier,par contre il faut comprendre ce principe pour résoudre les problèmes enTP (le logiciel nomme automatiquement les instances mais après quelquescopier/coller il y a noms en double à corriger manuellement) 2.23
Utilisation de composants– En plus des portes logiques élémentaires, vous pouvez utiliser d’autres com-
posants :– Soit fournis par une source extérieure (fabriquant du FPGA, enseignants,etc.)
– Soit vos propres composants– Aussi ne faites pas 10 fois le même schéma en changeant un seul détail ...mais créez un composant et utilisez le par la suite
– Bien sûr tout composant doit être parfaitement défini. Donner seulementl’interface (E/S) du circuit demandé ne sera pas considéré comme répondantà la question ! 2.24
Que faire des entrées ou sorties non utilisées ?– Si vous n’avez pas besoin d’utiliser la sortie d’un composant vous pouvez
la laisser déconnectée– Par contre, toutes les entrées doivent être connectées.– Donc si vous n’avez pas besoin d’une entrée, connectez là à 0 (composantgnd Quartus) ou à 1 (composant vcc Quartus) 2.25
4.2 Implantation sur FPGA1. Création projet : on crée un projet dans le logiciel de conception pour FPGA
(en TP : Altera Quartus II 13.0SP1) et on sélectionne le FPGA qui serautilisé : Cyclone II EP2C35F672C6
2. Saisie de la schématique du composant à réaliser3. Synthèse de la schématique (Analysis & Synthesis) . Lors de cette étape, le
logiciel analyse la structure de votre schématique, vérifie que tous les com-
9
posants sont utilisés et correctement connectés puis détermine les ressourcesdu FPGA à utiliser pour réaliser le circuit.
4. Affectation des connecteurs– À chaque entrée (A, B, sel, . . .) on associe une broche du FPGA qui est
connectée à un interrupteur, un bouton poussoir, etc.– À chaque sortie (Q, . . .) on associe une broche du FPGA qui est connectée
à une LED, un afficheur 7 segments, etc.– Pour éviter les cours circuits on configure toutes les connecteurs non
utilisés du FPGA en haute impédance (as input tri-stated).Explications : les connecteurs du FPGA peuvent être programmés commedes entrées ou des sorties, cependant la carte de développement (DE2) fixele sens des connecteurs. D’où le problème suivant : certains connecteursdu FPGA sont connectés à des sorties d’autres composants (mémoires,générateur d’horloge, etc.) et par défaut le logiciel met en sortie tous lesconnecteurs non utilisés, avec comme conséquence des court-circuits quirisquent de griller carte !
5. Placement/routage (Fitter) : sélectionne les blocs du FPGA à utiliser pourréaliser le circuit et définit leurs connexions
6. Assemblage (Assembler) : crée un fichier binaire contenant la configurationdu FPGA permettant de réaliser le circuit
7. Programmation : envoi du fichier de configuration au FPGA . Après cetteétape le FPGA se comporte exactement comme le circuit de votre schéma-tique.
2.26
5 Composants usuelsMultiplexeur
Un multiplexeur (multiplexer, mux) 2 vers 1 a 2 bits de données A et B, 1 bitde sélection SEL et un bit de sortie Q défini par Q = S ·A+S ·B .
Un multiplexeur 2N vers 1 permet de sélectionner via N bits de sélection unedes 2N entrées de données.
Les deux symboles (parallélogramme et rectangle, pas l’interrupteur) sontcouramment utilisés pour représenter le multiplexeur.
(source : wikipedia)
sel I0 I1 out
0
0 0 00 1 01 0 11 1 1
1
0 0 00 1 11 0 01 1 1
0
10
1
a
bq
a
bcd
q2
3
sel sel
1
1
1
1
1
1
1
1
2
2.27
10
DemultiplexeurUn démultiplexeur (demultiplexer, decoder) dispose de N bits de sélection et
de 2N sorties. La sortie sélectionnée est mise à 1 ou à 0 en fonction de l’entrée inalors que toutes les autres sorties (non sélectionnées) sont à mises à 0.
sel in Q0 Q1
0 0 0 01 1 0
1 0 0 01 0 1
(source : wikipedia) 2.28
Afficheur 7 segmentsUn afficheur 7 segments (7-segment display) dispose de 7 segments indépendants(a à g) et parfois d’un point (dp, dot point)
(source : wikipedia)
Un décodeur 7 segments (7-segment decoder) traduit un code hexadécimal (4bits) en un mot de 7 bits qui correspondent aux segments.
Par exemple, si l’entrée est 0111, on souhaite afficher 7, on doit donc allumerles segments a, b et c
2.29
11
6 Compléments6.1 Logique booléenne
– AND est plus prioritaire que OR– P1 = A+B ·C +D ·E +F ·G ·H– Est équivalent à P1 = A+(B ·C)+(D ·E)+(F ·G ·H)– Pour le XOR toujours mettre les parenthèses 2.30
XOR (ou-exclusif)– Quand utiliser un XOR?
– X = A⊕B =
A
BX
A B X0 0 00 1 11 0 11 1 0
A
B
X
2.31
X-NOR (non ou-exclusif)– Exercice : simplifier X2 = A⊕B
2.32
Portes logiques à plus de 2 entrées
AND – S1 = x1×x2×·· ·×xn est vrai uniquement si tous les xi sont vrais– S1 peut être réalisé à l’aide d’une porte AND à n entrées. La sortie vaut
1 uniquement lorsque toutes les entrées valent 1OR – S2 = x1 +x2 + · · ·+xn est vrai si au moins l’un des xi est vrai
– S2 peut être réalisé à l’aide d’une porte OR à n entrées. La sortie vaut1 tant que au moins une entrées vaut 1
XOR – La définition du XOR ne fait pas sens avec plus de 2 entrées– Il existe des portes dîtes XOR à plus de 2 entrées elle calculent en fait
une succession de XOR à 2 entrées– S3 = x1⊕x2⊕x3⊕x4– Calcule en fait S3 = (((x1⊕x2)⊕x3)⊕x4)
– Une porte AND (resp. OR, XOR) à n entrées peut être réalisée en chaînanten série ou en arbre plusieurs portes AND (resp. OR, XOR) 2.33
12
Lois de De Morgan : exercices– Simplifier : S4 = FEA+EB +ECF +ED +F S4 = FEA + EB + ECF +
ED +F
– Simplifier : S5 = A+B +A ·D
– Les lois de De Morgan :– S’appliquent dans les deux sens– Ne sont pas limitées à 2 termes– Ne s’appliquent qu’à des variables connectées uniquement par des ANDou uniquement par des OR mais pas par des AND et des OR 2.34
Simplifications– Pourquoi simplifier ?
– Pour limiter la complexité du schéma– Plus il y a de composants plus le risque d’erreur et élevé et plus la re-cherche de la source de l’erreur est compliquée
– Quand s’arrêter ?– Quand on pense avoir l’équation la plus simple, ou en TP quand on aune équation suffisamment simple 2.35
Équation ⇒ schématique– Faire le schéma du circuit correspondant aux équations suivantes
X = (A ·B)+A+A ·CY = A⊕B +A ·C
13
2.36
6.2 Préparation LAB1– Le TP est intégralement et uniquement en anglais !– Venir avec un casque audio 2.37
Générateur de parité impaire
Détection d’erreurs de transmission par bit de parité– On veut transmettre une donnée de N bits– Pour détecter les erreurs de transmission on ajoute un bit de parité P définit
de façon à ce que les N+1 bits à transmettre aient un nombre pair de 1 (lecontraire existe aussi)
– À la réception des N+1 bits si le nombre de bits reçus n’a pas un nombrepair de bits à 1 alors on détecte une erreur de transmission
Exercice– En IGE-1001 (par convention), on appelle générateur de parité impaireun composant à N entrées dont la sortie vaut 1 uniquement si ses entréesreçoivent un nombre impair de bits à 1
– Concevoir le circuit en respectant la méthode du cours pour N=2, N=3,N=4
– Pour toute valeur de N : donner l’équation (faire la démonstration)
14
2.38
15
7 Exercices
Alarme automobileConcevoir un circuit automobile déclenchant une alarme quand :
– Les phares sont allumés et l’allumage est coupé– La porte est ouverte et le contact d’allumage est mis
Contrôleur de réservoir à caramel pour usine à bonbons– Concevoir le circuit de contrôle des vannes du réservoir– La vanne de remplissage est ouverte quand le caramel est sous le niveau
minimum. La vanne n’est refermée qu’au niveau maximum. Un capteur deflot permet de détecter un remplissage en cours
– La vanne d’évacuation est ouverte si la température est suffisante sauf si lereservoir est en cours de remplissage ou sous le niveau minimum
Convertisseur ASCII 7 bits vers 7-segmentsConcevoir un circuit convertissant une valeur ASCII (seuls les caractères E, S etI sont gérés) en la valeur correspondante permettant d’afficher la lettre sur unafficheur 7 segments (segments actifs à l’état bas)
2.39
16
Chapitre 3Logique séquentielle (support 1)IGE-1001 : fonctions numériqueshttp://www.esiee.fr/~nouryl/IGE-1001, oct. 2013
Ludovic Noury, ESIEE Paris([email protected], bureau 3453)
3.1
Objectifs du chapitre 3
Savoirs– Éléments mémorisants : bascule D (DFF), registre– Registres (PISO, PIPO, SIPO, etc.)– Compteurs usuels– Méthodologie de conception d’un circuit séquentiel
Capacités– Concevoir un circuit séquentiel simple à partir de sa description fonction-
nelle (exemples : compteurs, registres PISO, PIPO, SIPO, ...)– C’est à dire être capable de :
1. Déterminer la table de vérité2. Extraire et simplifier les équations3. Saisir la schématique du circuit électronique associé4. Réaliser et tester le circuit sur FPGA
3.2
Table des matières1 Fonction mémorisation 1
1.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 DFF, paramètres temporels, signaux multibits et registre . . . . . 2
2 Système synchrone 92.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.3
1 Fonction mémorisation1.1 PrésentationCircuit séquentiel vs. combinatoire
– Circuit combinatoire :– Les sorties dépendent uniquement des entrées– sorties = fcombi(entrées)
1
– Circuit séquentiel :– Possède des éléments mémorisants 1
– Les valeurs mémorisées définissent l’état interne du circuit– Les sorties dépendent des entrées et de l’état interne– sorties = fseq(entrées,état) 3.4
Méthode de conception synchrone– Tous les éléments mémorisants sont contrôlés (synchronisés) par un signal
d’horloge global– La lecture des données et leur stockage (écriture) sont initiés au front mon-tant du signal d’horloge. Dans ce cours on utilisera uniquement le frontmontant du signal d’horloge, mais certains systèmes utilisent le front des-cendant, voir les deux en même temps.
– La méthode :– On considère les valeurs mémorisées (les sorties des bascules et des re-gistres) comme des entrées
– On considère les valeurs à mémoriser (les valeurs que l’on veut écrire dansles bascules et les registres) comme des sorties
– On peut alors réutiliser la même méthode de conception que pour lescircuits combinatoires (table de vérité, puis équations, puis circuit) 3.5
Mémoires électroniques
Deux catégories– Mémoires volatiles : bascules, registres, bancs de registres, SRAM, DRAM
. . . ne conservent pas leur valeur sans alimentation– Mémoires non volatiles : ROM, flash, FRAM . . . conservent leur valeursans alimentation
Bascules– flip-flop en anglais (abréviation courante : FF)– Il existe plusieurs type de bascules (SR, JK, T, D) seules les bascules Drestent couramment utilisées aujourd’hui
– Nous utiliserons uniquement des bascules D pour les TP et TD3.6
1.2 DFF, paramètres temporels, signaux multibits et registreBascule D (DFF)
– L’élément mémorisant de base est la bascule de type D (aussi appeléebascule D, D-type flip-flop ou DFF)
– Une bascule permet de mémoriser un bit– La valeur mémorisée détermine la sortie Q de la bascule– Q est un signal de 1 bit dont l’état représente la valeur mémorisée : Q=1pour valeur 1 mémorisée, et Q=0 pour valeur 0 mémorisée
– La valeur du signal D est lue puis stockée dans la bascule lors du frontmontant du signal CLK
1. Exemples d’éléments mémorisants : bascules D, registre, SRAM.
2
– Symbole et tables de vérité (à gauche table de vérité détaillée, à droite tablede vérité compacte équivalente) :
D Q
CLK Qt D Q(t+1)0 0 - 00 1 - 11 0 - 01 1 - 1
- 0 0- 1 1
CLK Q(t+1)0 Qt
1 Qt
D
3.7
Définitions– Signal synchrone : pris en compte (et/ou modifié) uniquement lors des
fronts montants du signal d’horloge– Signal asynchrone : pris en compte (et/ou modifié) indépendamment dela valeur du signal d’horloge
– Actif à l’état bas : L’action associée (mise à 0, allumage du segment,etc.) est activée lorsque le signal est à l’état bas (0). Souvent dénoté par unn à la fin du nom du signal (resetn par exemple) et une « bulle » devantl’entrée correspondante du schéma du composant
– Actif à l’état haut : l’action associée au signal est activée lorsque le signalest à l’état haut (1)
– Signal externe d’initialisation globale asynchrone (resetn) : utiliséune seule fois au démarrage et actif à l’état bas. Il permet de mettre lecircuit dans un état initial connu en forçant à une valeur prédéterminée(pas forcement que des 0) les éléments mémorisants du système 3.8
Bascule D avec initialisation asynchrone– Rappel : au démarrage du système, l’état des DFFs est inconnu
– Il est nécessaire d’initialiser le système à un état interne connu– Un signal d’initialisation asynchrone (reset asynchrone), généralementactif à l’état bas, est envoyé à chaque DFF
– Chaque DFF sera alors initialisée à une valeur adaptée à l’initialisationdu système (pas nécessairement 0)
– Un signal asynchrone agit indépendamment du signal d’horloge– Généralement une DFF possède 2 signaux d’initialisation asynchrones clrn(clear, actif à l’état bas) et prn (preset, actif à l’état bas) permettant deforcer la valeur stockée à ’0’ ou ’1’
D Q
CLRN
PRN
PRN CLRN CLK Q(t+1)1 1 0 Qt
1 1 1 Qt
1 1 D0 1 - 11 0 - 00 0 - interdit 3.9
Bascule D avec autorisation d’écriture synchrone (DFFE)– Pour de nombreuses applications, il est nécessaire de pouvoir activer/dé-
sactiver le gel de l’écriture dans la DFF depuis un signal externe– ⇒ ajout d’une entrée ENA, active à l’état haut– PRN et CLRN sont prioritaires sur ENA– La valeur de la bascule ne peut être modifiée que si ENA vaut 1 (sauf si
PRN ou CLRN sont actifs)
3
D Q
CLRN
PRN
ENA
PRN CLRN CLK ENA Q(t+1)0 1 - - 11 0 - - 00 0 - - interdit1 1 0 - Qt
1 1 1 - Qt
1 1 0 Qt
1 1 1 D
3.10
Exercice 1 : complétez la table de vérité de la DFFE
Qt CLRN PRN ENA D CLK Q(t+1)1 0 1 0 0 10 1 0 1 1 11 0 0 1 1 10 1 1 0 0 01 1 1 1 00 1 1 1 10 1 1 0 0 01 1 1 0 0 0
3.11
Exercice 2 : complétez le chronogramme
CLK
PRN
CLRN
ENA
D
Q3.12
Règles d’utilisation des bascules
1. Toujours utiliser des bascules avec initialisation asynchrone (CLRN et PRN)et relier l’entrée non utilisée à « 1 » (VCC) pour la désactiver
2. Ne pas utiliser de logique combinatoire sur le signal d’initialisation asyn-chrone (reset global du système)
3. Ne pas utiliser de signal interne comme signal d’initialisation asynchrone4. Toutes les bascules partagent le même signal d’initialisation asynchrone qui
est un signal externe (nommé RAZA, RAZAN, RESET, RESETN )
4
5. Pas de logique combinatoire sur le signal d’horloge6. Ne pas utiliser de signal interne comme signal d’horloge7. Toutes les bascules partagent le même signal d’horloge
Important !Le non respect de ces règles est fortement pénalisé
En résumé– Toutes les entrées horloge des bascules sont reliées au même signal quiest l’entrée du FPGA reliée au générateur d’horloge (bouton poussoir sihorloge manuelle, ou générateur à d’horloge à 50 Mhz intégré sur la cartede développement)
– Chaque composant séquentiel doit être initialisé au démarrage pour que sonétat soit connu car à la mise sous tension il n’est pas déterminé. Tous lescomposants séquentiels auront donc leur signal d’initialisation asynchrone(resetn) connectée au même signal qui sera l’entrée du FPGA reliée aubouton poussoir sélectionné pour activer l’initialisation du circuit.
Exceptions : signal d’horloge (pas avant la E4)Cependant pour les experts, certaines règles peuvent être assouplies. C’est le caspar exemple de la technique des gated clocks qui permet de limiter la consomma-tion.
De plus, dans les systèmes numériques avancés, il y a plusieurs horloges dans lesystème. Il faut alors gérer les problèmes de synchronisation et de communicationentre les différents domaines d’horloge.
Exceptions : signal d’initialisation global (dès la E1)Pour vous la seule exception sera d’éventuellement ajouter un inverseur sur lereset asynchrone pour pouvoir initialiser des composants n’ayant pas tous desreset actifs sur le même niveau.
Exemple : pour initialiser un composant avec un reset actif à l’état bas et unavec un reset actif à l’état haut. Il faut inverser le signal de reset envoyé à l’undes composants pour pouvoir les initialiser en même temps.
3.13
Signaux multibits : chronogramme et représentation– Exemple : chronogramme d’un compteur 4 bits
– Valeur après initialisation asynchrone : 0– À chaque cycle la valeur de la sortie en CBN est incrémentée de 1. Arrivéà la valeur maximale, le compteur revient à 0
– La représentation directe de la valeur de sortie est peu lisible– On peut représenter un signal sur plusieurs bits en une seule ligne, lesdiscontinuités (les X) indiquent un changement de valeur
– 4 bits ⇔ 1 chiffre hexa– On peut aussi choisir un codage et décoder
5
CLKRESETN
Q3
Q2
Q1
Q0
Q 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0000
Q 0 1 2 3 4 5 6 7 8 9 A B C D E F 0
QCBN 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 03.14
Signaux multibits : schématique– Exemple : additionneur 4 bits
– Version avec 9 entrées de 1 bit : A3,A2,A1,A0,B3,B2,B1,B0,CIN et 5 sortiesde 1 bit : COUT,S3,S2,S1,S0
– Version avec 2 entrées de 1 bit A, B, 1 entrée de 1 bit CIN, une sortiede 4 bits S et une de 1 bit COUT. Les 3 schémas suivants sont équiva-lents(en pratique on préférera la seconde forme, plus lisible et avec moinsde risques d’erreurs)
6
– En schéma papier, on indique la largeur des signaux de plus de 1 bit avecla notation suivante :
4A
4BCIN ADD4
4 S
CIN 3.15
7
Paramètres temporels
D
Q
CLK
tSETUP
tCQ
tHOLD
D0 D1 D2
Q0 Q1
– 3 principaux paramètres– tCQ (clock-to-q delay) : temps requis pour enregistrer et la valeur de D
vers Q lors du front montant du signal d’horloge– tSETUP (setup time) : durée pendant laquelle D doit être stable avant le
front d’horloge– tHOLD (hold time) : durée pendant laquelle D doit être maintenu aprèsle front d’horloge
– Si les temps de setup et de hold ne sont pas respectés la bascule risqued’entrer dans un état métastable (valeur ni 0, ni 1 pendant un temps indé-terminé avant de se stabiliser à 0/1) 3.16
Chronogramme et instantanéité– Dans le «vrai» monde, la traversé des portes logiques n’est pas instantanée
et les signaux mettent du temps à se propager dans les fils– On pourrait représenter ces délais sur les chronogrammes :
CLKRESETN
Q2Q1Q0
– Mais la période de l’horloge devant toujours être suffisamment élevée pourlaisser le temps aux valeurs de se stabiliser ...
– ... on peut donc représenter les chronogrammes comme si les transitionsétaient instantanées
CLKRESETN
Q2Q1Q0 3.17
– Question : si on vous demande compléter un chronogramme et que lerésultat dépend d’une valeur changeant juste au moment du front d’horloge– Prend ont la valeur juste avant le front d’horloge ...– ... où celle juste après ?
– Réponse : ne pas oublier qu’en pratique les valeurs mettent du temps àse propager et que la valeur au moment du front d’horloge sera forcementcelle juste avant ... et pas celle dans le futur 3.18
8
Registre– Une DFF permet de stocker 1 bit– n DFFs regroupées pour stocker n bits forment un registre– Elles sont toutes connectés à la même horloge et au même signal d’initiali-
sation asynchrone
3.19
Exercice 3 : chronogramme registre 4 bits
Complétez le chronogramme
CLK
RAZAN
ENA
D
Q ?
A B 9 1 3 82
3.20
2 Système synchrone2.1 PrésentationSchéma de principe
d q
clk
circuitcombinatoire :calcul sortie
sortie
circuit combinatoire :calcul prochainétat
prochain_etatregistre_etat
entréeexterne
clk
– Registre d’état : ensemble de DFFs contrôlées par le même signal d’hor-loge
– Calcul du prochain état : circuit combinatoire dépend de l’état actuelet des entrées
– Calcul de la sortie : circuit combinatoire dépend de l’état actuel et desentrées 3.21
9
Mise à jour des bascules– Notation :
– Si Q la sortie d’une bascule, c’est à dire un signal de 1 bit dont l’étatreprésente la valeur mémorisée (Q=1 pour 1, et Q=0 pour 0)
– Alors on note Q la valeur actuelle de la bascule– et Q+ la valeur qui sera écrite et remplacera Q lors du prochain frontmontant du signal d’horloge
– Cycle de mise à jour :1. On calcule EN MÊME TEMPS les prochaines valeurs (Q+
i ) deTOUTES les bascules à partir des entrées (Ei) et des valeurs actuellesdes bascules (Qi)
2. PUIS lors du front montant d’horloge on met à jour les valeurs deTOUTES les bascules EN MÊME TEMPS
– Résumé :1. Calcul de toutes les prochaines valeurs Q+
i = f(Q0,Q1, . . . ,Qn,E0,E1, . . . ,En)2. Mise à jour de toutes les bascules Qi ⇐ Q+
i 3.22
Exercice 4 : compléter le chronogramme
d q
clk
clrn
prnd q
clk
clrn
prnd q
clk
clrn
prnd q
clk
clrn
prn
1 1
1 1
resetn
resetn resetn
CK CK CKCK
Q3 Q2 Q1 Q0
CLK
RESETN
Q3
Q2
Q1
Q0 3.23
10
Chapitre 3Logique séquentielle (support 2)IGE-1001 : fonctions numériqueshttp://www.esiee.fr/~nouryl/IGE-1001, oct. 2013
Ludovic Noury, ESIEE Paris([email protected], bureau 3453)
3.1
Table des matières1 Système synchrone 1
1.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Méthode de conception 1 : synthèse de la table de vérité . . . . . . 31.3 Méthode de conception 2 : synthèse « one-hot » . . . . . . . . . . 6
2 Comment gérer une fréquence d’horloge trop élevée ? 8
3 Composants séquentiels usuels 93.1 Compteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.2 Registres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2
1 Système synchrone1.1 PrésentationSchéma de principe
d q
clk
circuitcombinatoire :calcul sortie
sortie
circuit combinatoire :calcul prochainétat
prochain_etatregistre_etat
entréeexterne
clk
– Registre d’état : ensemble de DFFs contrôlées par le même signal d’hor-loge
– Calcul du prochain état : circuit combinatoire dépend de l’état actuelet des entrées
– Calcul de la sortie : circuit combinatoire dépend de l’état actuel et desentrées 3.3
Mise à jour des bascules– Notation :
– Si Q la sortie d’une bascule, c’est à dire un signal de 1 bit dont l’étatreprésente la valeur mémorisée (Q=1 pour 1, et Q=0 pour 0)
1
– Alors on note Q la valeur actuelle de la bascule– et Q+ la valeur qui sera écrite et remplacera Q lors du prochain front
montant du signal d’horloge– Cycle de mise à jour :
1. On calcule EN MÊME TEMPS les prochaines valeurs (Q+i ) de
TOUTES les bascules à partir des entrées (Ei) et des valeurs actuellesdes bascules (Qi)
2. PUIS lors du front montant d’horloge on met à jour les valeurs deTOUTES les bascules EN MÊME TEMPS
– Résumé :1. Calcul de toutes les prochaines valeurs Q+
i = f(Q0,Q1, . . . ,Qn,E0,E1, . . . ,En)2. Mise à jour de toutes les bascules Qi⇐Q+
i 3.4
Exercice 4 : compléter le chronogramme
d q
clk
clrn
prnd q
clk
clrn
prnd q
clk
clrn
prnd q
clk
clrn
prn
1 1
1 1
resetn
resetn resetn
CK CK CKCK
Q3 Q2 Q1 Q0
CLKRESETN
Q3
Q2
Q1
Q0 3.5
Catégories de circuits séquentiels– Circuits séquentiels réguliers
– La transition d’état du circuit suit un motif régulier– Exemples : compteur, registres à décalage.– La logique de calcul du prochain état est construite principalement àpartir de composants prédéfinis usuels ( incrémenteurs, décaleurs, etc)
– Machines à états (FSM finite state machine)– La transition d’état du circuit ne suit pas de motif régulier– La logique de contrôle du prochain état est construite par un circuit nonrégulier (uniquement à partir de portes logiques)
– FSMD (FSM with datapath)– FSMD = circuit composé :– d’un chemin de données (circuit séquentiel régulier ou combinatoire)– et d’une partie contrôle (machine à états)
– Ce type de circuit permet de réaliser des fonctions complexes (processeur,etc.) 3.6
2
1.2 Méthode de conception 1 : synthèse de la table de véritéExemple : compteur/décompteur CBN
– Concevoir un compteur respectant les contraintes suivantes :– Le compteur compte en CBN avec des valeurs dans l’intervalle [0;5]– La valeur initiale du compteur est 5– À chaque cycle, si l’entrée u_nd vaut 1 le compteur incrémente sinon il
décrémente– Si le compteur dépasse la valeur minimum ou maximum il reboucle 3.7
Étape 1 : définir les bascules– Valeurs possibles du compteur : 0,1,2,3,4,5– Valeurs maximale 5 soit 3 bascules car 5 = (101)CBN
– On nomme les bascules : Q2,Q1,Q0
D Q
CLRN
PRN Q2
Q1
Q0
CLK
CLK
CLK
D Q
CLRN
PRN
D Q
CLRN
PRN
3.8
Étape 2 : définition de l’état initial– Lors de l’activation du signal d’initialisation asynchrone actif à l’état bas
(resetn) Q = 101 (soit Q2 = 1,Q1 = 0,Q0 = 1)
D Q
CLRN
PRN Q2
Q1
Q0
CLK
CLK
CLK
RESETN
11
1
D Q
CLRN
PRN
D Q
CLRN
PRN
3.9
Étape 3 : définition des entrées/sorties– Entrées : CLK, RESETN, U_ND– Sorties : Q (3 bits) 3.10
3
Étape 4 : définition des tables de vérité– Un circuit séquentiel est réalisé en définissant deux fonctions combinatoires
1. Une fonction de transition : calcule le prochain état à partir desentrées et de l’état actuel
2. Une fonction de génération : calcule les valeurs des sorties à partirde l’état actuel et des entrées
d q
clk
circuitcombinatoire :calcul sortie
sortie
circuit combinatoire :calcul prochainétat
prochain_etatregistre_etat
entréeexterne
clk
– Pour notre exemple, les valeurs des sorties étant celles des bascules nousn’avons pas à définir de fonction de génération
– En général, si les sorties ne sont pas égales aux valeurs des bascules ilfaudra faire une seconde table de vérité et ajouter le circuit correspondant 3.11
– Les sorties des bascules (Q2,Q1,Q0) sont des entrées de la table de vérité– Les prochaines valeurs des bascules (les entrées des DFFs lors du prochain
de l’horloge) sont des sorties de la table de vérité (Q+2 ,Q+
1 ,Q+0 )
– Les entrées du circuit déterminant le prochain état (les prochaines valeursdes bascules) sont des entrées de la table de vérité (U_ND)
D Q
CLRN
PRN
Q2
Q1
Q0
CLK
CLK
CLK
RESETN
11
1
U_ND
Q2+
Q1+
Q0+
D Q
CLRN
PRN
D Q
CLRN
PRN
État actuel u_nd Q2 Q1 Q0 Prochain état Q+2 Q+
1 Q+0
0 0 0 0 0 5 1 0 11 0 0 0 1 0 0 0 02 0 0 1 0 1 0 0 13 0 0 1 1 2 0 1 04 0 1 0 0 3 0 1 15 0 1 0 1 4 1 0 00 1 0 0 0 1 0 0 11 1 0 0 1 2 0 1 02 1 0 1 0 3 0 1 13 1 0 1 1 4 1 0 04 1 1 0 0 5 1 0 15 1 1 0 1 0 0 0 0Interdit - 1 1 - Non défini X X X 3.12
4
Étape 5 : équations non simplifiées (ou directes)
Q+2 = UQ2Q1Q0 +UQ2Q1Q0 +UQ2Q1Q0 +UQ2Q1Q0
Q+1 = UQ2Q1Q0 +UQ2Q1Q0 +UQ2Q1Q0 +UQ2Q1Q0
Q+0 = Q0 (on remarque sur la table que Q+
0 = Q0)
3.13
Étape 6 : simplificationQ+
2 = UQ2Q1Q0 +UQ2Q1Q0 +UQ2Q1Q0 +UQ2Q1Q0
= UQ1(Q2Q0 +Q2Q0)+U(Q2Q1Q0 +Q2Q1Q0)= UQ1(Q2⊕Q0)+U(Q2⊕ (Q1⊕Q0))= U +Q1 +(Q2⊕Q0)+U(Q2⊕ (Q1⊕Q0))
Q+1 = UQ2Q1Q0 +UQ2Q1Q0 +UQ2Q1Q0 +UQ2Q1Q0
= UQ2Q1Q0 +Q2(UQ1Q0 +UQ1Q0 +UQ1Q0)= UQ2Q1Q0 +Q2(UQ1Q0 +U(Q1⊕Q0))
Q+0 = Q0
3.14
– Que faire si les équations se simplifient mal ? (comme dans cet exemple)– Au choix :
– On réalise les équations simplifiées (même si elle restent complexes)– On décide de garder les formes sans xor et non factorisées pour avoirun schéma plus lisible et minimiser les risques d’erreurs (on choisit cetteoption) 3.15
Étape 7 : schématique
D Q
CLRN
PRN Q2
Q1
Q0
CLK
CLK
CLK
RESETN
1
1
1
Q2+
Q1+
Q0+
RESETN
RESETN
Q0
UQ2Q1Q0UQ2Q1Q0UQ2Q1Q0UQ2Q1Q0
UQ2Q1Q0UQ2Q1Q0UQ2Q1Q0UQ2Q1Q0
D Q
CLRN
PRN
D Q
CLRN
PRN
3.16
5
1.3 Méthode de conception 2 : synthèse « one-hot »Diagramme d’état
– Rappel : concevoir un circuit séquentiel nécessite de créer deux circuitscombinatoires– La fonction de transition : détermine le prochain état– La fonction de génération : détermine les sorties
d q
clk
circuitcombinatoire :calcul sortie
sortie
circuit combinatoire :calcul prochainétat
prochain_etatregistre_etat
entréeexterne
clk
– Nous avons vu comment ces deux fonctions peuvent être définies par 2tables de vérité
– Nous allons maintenant voir :– Une autre représentation, le diagramme d’état permettant aussi de
définir le comportement d’un circuit séquentiel– Une méthode permettant de synthétiser le diagramme d’état en circuit 3.17
– On utilise aussi le compteur/décompteur défini précédemment comme exemple
Étape 1 : construction du diagramme d’état– Chaque état est représenté par un cercle (une bulle)– On commence par définir et nommer l’état initial, représenté par un double
cercle– Il est important de donner un nom significatif (i.e. correspondant à l’état)– Pour chaque état on définit les valeurs des sorties pendant cet état ;– Soit directement dans la partie basse des bulles d’état– Soit dans à côté du diagramme d’état (ex : tableau)
CinqS=101
QuatreS=100
TroisS=011
DeuxS=010
UnS=001
ZéroS=000
3.18– La transition d’un état à un autre dépend des entrées et de l’état actuel– On représente donc les transitions entre deux états par des flèches partant
d’un état vers un autre sur lesquelles on note les conditions correspondantes– Attention, il ne faut pas oublier les transitions implicites, celles où l’onne change pas d’état. Représentées par une flèche par d’un état et allantjusqu’au même état avec sur la flèche les conditions correspondant au nonchangement d’état.
CinqS=101
QuatreS=100
TroisS=011
DeuxS=010
UnS=001
ZéroS=000
U
U
U
U
U
U U
U
U
U
U
U
3.19
6
Étape 2 : codage des états (méthode « one-hot »)– On choisit pour chaque état un codage :– On associe à chaque état une unique valeur des bascules
– Il existe de nombreuses possibilités– Nous allons utiliser le codage « one-hot » :
– Il permet d’obtenir directement les équations de la fonction de transition(calcul du prochain état) sans passer par une table de vérité
– Il simplifie fortement la table de vérité de la fonction de génération (calculdes sorties en fonction de l’état)
– En codage one-hot une seule bascule vaut un à la fois et à chaque étaton associe une bascule
– Inconvénient : ce codage impose d’utiliser un circuit de décodage (fonc-tion de génération) pour à partir de l’état obtenir la valeur des sorties. Onne pourra donc pas utiliser cette technique pour synthétiser des comp-teurs car leur sorties doivent être égales aux valeurs des bascules.
– Autres codages : dans ce cas là on choisit un autre codage pour l’état,on rejoint la méthode précédente en réalisant la table de vérité corres-pondante après avoir définit le codage.
État Qcinq Qquatre Qtrois Qdeux Qun Qzero
Cinq 1 0 0 0 0 0Quatre 0 1 0 0 0 0Trois 0 0 1 0 0 0Deux 0 0 0 1 0 0Un 0 0 0 0 1 0Zéro 0 0 0 0 0 1
3.20
Étape 3 : équations de la fonction de transition (méthode « one-hot »)– Qcinq vaudra 1 au prochain cycle si :– On est dans l’état Quatre et U vaut 1– On est dans l’état Zéro et U vaut 0– Soit Q+
cinq = QzeroU +QquatreU– De même on a :
Q+quatre = QcinqU +QtroisU
Q+trois = QquatreU +QdeuxU
Q+deux = QtroisU +QunU
Q+un = QdeuxU +QzeroU
Q+zero = QunU +QcinqU 3.21
Étape 4 : équations de la fonction de génération (méthode « one-hot »)– Les valeurs des sorties ne sont pas celles des bascules, il faut donc faire uncircuit pour les générer
Qcinq Qquatre Qtrois Qdeux Qun Qzéro S2 S1 S01 0 0 0 0 0 1 0 10 1 0 0 0 0 1 0 00 0 1 0 0 0 0 1 10 0 0 1 0 0 0 1 00 0 0 0 1 0 0 0 10 0 0 0 0 1 0 0 0
– Comme une seule bascule peut valoir un à la fois, les équations sont sim-plifiées
– On obtient :– S2 = Qcinq +Qquatre– S1 = Qtrois +Qdeux– S0 = Qcinq +Qtrois +Qun 3.22
7
Étape 5 : schématique
3.23
2 Comment gérer une fréquence d’horloge trop élevée ?Comment gérer une fréquence d’horloge trop élevée ?
– En TP : horloge externe à 50 MHz– Comment faire si l’on ne veut pas mettre à jour les bascules 50 millions de
fois par seconde mais seulement : 12,5 millions de fois par seconde ? Unefois par seconde ?
– Logique sur le signal d’horloge interdite ⇒ on ne peut pas modifier cettehorloge ! 3.24
8
3 Composants séquentiels usuels3.1 CompteursMéthode de conception
– Les sorties d’un compteur correspondent aux valeurs des bascules– La méthode «one-hot» n’est donc pas adaptée– Pour concevoir le compteur on :
1. Détermine sa séquence (vous pouvez aussi faire son graphe d’état)2. Utilise la méthode de conception par synthèse de la table de vérité 3.25
Compteur binaire naturel– C’est un compteur qui compte en code binaire naturel 3.26
Compteur en anneau– C’est un registre à rotation avec une valeur d’initialisation asynchrone dif-
férente de 0 . . .0 et 1 . . .1
3.27
Compteur de Johnson– C’est un registre à rotation dont le bit Q0 est inversé lors du rebouclage
3.28
3.2 RegistresRegistre tampon ou PIPO (entrée parallèle, sortie parallèle)
3.29
9
Registre SIPO (entrée série, sortie parallèle)Les registres série⇒parallèle ou SIPO (serial-input parallel-output) ont une entréesérie (sur 1 bit) et une sortie parallèle sur N bits.Exemple d’un registre série/parallèle 4 bits avec décalage à droite :
– Application : ce type de registre permet de desérialiser des données c’est-à-dire mettre en parallèle des données qui sont reçues en série sur 1 bit.Dans le cas d’un décalage à droite, le LSB est reçu en premier, pour undécalage à gauche c’est le MSB. 3.30
Registre PISO (entrée parallèle, sortie série)– Comme l’entrée et la sortie ne peuvent se faire en même temps, ce type de
registre contient au moins deux fonctions :– Chargement parallèle– Sortie série (décalage)
– Exemple registre PISO 4 bits avec décalage à droite
3.31
Registre à rotation (rotation à droite)– Ce type de registre contient au moins deux fonctions :
– Chargement parallèle– Rotation
3.32
10
Chapitre 4Machines à étatsIGE-1001 : fonctions numériqueshttp://www.esiee.fr/~nouryl/IGE-1001, oct. 2013
Ludovic Noury, ESIEE Paris([email protected], bureau 3453)
4.1
ObjectifsObjectifsSavoirs
– Machine à états de Moore et de Mealy– Diagramme (graphe) d’états– Méthodologie de conception d’une machine à états– Codage one-hot
Capacités– Être capable de concevoir le circuit d’une machine à états à partir de la
description du système qu’il devra contrôler (synthèse+simu+test)4.2
Table des matières1 Problème de la conception de circuits de contrôle 1
2 Machines à états 22.1 De l’énoncé au diagramme d’état . . . . . . . . . . . . . . . . . . . 32.2 Réalisation (rappel) . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 Exemple complet : robot suiveur de murs 5 4.3
1 Problème de la conception de circuits de contrôleÉtude de cas : laser médicalLaser médical
– Bouton enfoncé ⇒ laser actif pendant 30 ns– Soit pour fCLK = 100 MHz et donc période p = 1/(100×106) = 0.01×
10−6 = 10×10−9 = 10 ns : 3 cycles d’horloge
laser
b
clk
x
Controleur
4.4
1
Une première (mauvaise) solutionProblèmeMauvaise solution ! Pourquoi ?
X
CLK
B
1. Problème si on appuie sur le bouton une seconde fois pendant le cycle2. Pas de méthode !
– Comment vérifier qu’il n’y a pas d’autres erreurs ?– Comment résoudre des problèmes plus complexes ?
Solution1. Représentation du système par un diagramme d’états2. Méthode de synthèse d’un diagramme d’état en système électronique
4.5
2 Machines à étatsMéthodes de conception
– Circuit combinatoire (rappel) :– Fonction simple : représentation formelle par définition de la table de
vérité et des équations booléennes, puis synthèse du circuit. Exemple :full-adder
– Fonction trop complexe : décomposition en sous-composants plussimples. Exemple : additionneur 32 bits
– Circuit séquentiel régulier (rappel) :1. Déterminer la séquence et éventuellement faire le diagramme d’état2. Selon la séquence :
– Il n’y a pas deux états avec les même sorties : on recom-mande un codage où la valeur des bascules correspond aux valeursdes sorties (pas besoin de fonction de génération). Exemple : comp-teur CBN
– Il y a plusieurs états avec les mêmes sorties : choisir uncodage (CBN, one-hot, etc.) puis réaliser les fonction de transitionet de génération. Exemple : compteur {0,1,2,3,2,1,0,1,2,3,2,. . .}
– Comment réaliser la fonction de transition ? Selon codage del’état méthode 1 ou méthode 2 du cours précédant
– Comment réaliser la fonction de génération ? C’est un simplecircuit combinatoire ⇒ table vérité puis synthèse 4.6
– Circuit séquentiel de contrôle :– On appelle ce type de circuit séquentiel au comportement non régulier(pas opposition aux compteurs) une machine à états (aussi appeléFSM, finite state machine, automate, machine à états finis, . . .)
– Pour spécifier le comportement, il faut une représentation centrée surl’état : le diagramme d’état
– Une fois le diagramme d’état obtenu vous pouvez le synthétiser avec laméthode « one-hot » vue précédemment 4.7
2
2.1 De l’énoncé au diagramme d’étatExemple 1 : clignotement
Définir le diagramme d’état du système suivant :Système avec sortie x faisant 1,0,1,0, etc.
Solution1. Déterminer et nommer les états : 2 états, ON et OFF2. Définir les sorties en fonction de l’état : ON :x = 1, OFF :x = 03. Définir les transitions entre les états (+ l’état initial)
off on
x=0
clk
clk
x=1
X
RESETN
CLK
off offon onETAT
sortie : x
4.8
Exemple 2 : retour du laser
clk
clk clk clk
X
RESETN
CLK
off on1 on2 on3 off on1ETAToff on1 on2 on3
x=0 x=1 x=1 x=1
sortie : x
– Quel est le problème ?– Il manque le bouton ! 4.9
clk clk
clk
X
off
CLK
RESETN
off off on1 on2 on3 offETAT
b
on1 on2 on3
x=1 x=1 x=1
off
x=0
b.clk
b.clk
entrees : b ; sorties : x
4.10
3
Machine à étatsDéfinitionUne Machine à états est formalisée à partir des éléments suivants :
1. Un ensemble d’états2. Un ensemble d’entrées et un ensemble de sorties3. Un état initial4. Une description du prochain état en fonction de l’état courant et des valeurs
des entrées5. La définition de la sortie à générer pour chaque état
Exemple du laser1. 4 états {on1, on2, on3, off}2. Une entrée {b} et une sortie {x}3. État initial : off4. Conditions associées aux flèches du schéma, ces conditions sont appelées
transitions5. Définition d’une valeur de x pour chaque état
4.11
Diagramme d’état– Définition
– On utilise une représentation graphique du comportement de la machineà états appelée diagramme d’états (state diagram, graphe d’état)
– Exemple du laser
clk clk
clk
on1 on2 on3
x=1 x=1 x=1
off
x=0
b.clk
b.clk
entrees : b ; sorties : x
4.12– Remarques
– L’état initial (double cercle) est l’état après initialisation asynchrone (re-setn)
– Comme on n’utilise que des machines à états synchrones on supprimela condition CLK ↑ 1
– Exemple du laser
on1 on2 on3
x=1 x=1 x=1
off
x=0
b
b
entrees : b ; sorties : x
4.13
1. En effet, les bascules ne peuvent changer de valeur que lors d’un front montant du signald’horloge, donc l’état (définit par les valeurs de bascules) ne peut changer que lors d’un frontmontant d’horloge et chaque transition se produit donc forcement sur un front d’horloge.
4
2.2 Réalisation (rappel)Architectures usuellesProblèmeNous avons décrit le comportement à l’aide d’une machine à états, comment leconvertir en circuit séquentiel ?
4.14
tat
é
CLK
sortiesT G
Mealy
entrées
Deux fonctions sont à définir– Fonction de transition (T) : détermine le prochain état (Q+) à par-
tir de l’état courant (Q) et des entrées prochain_état = T(entrées, état)Q+ = T (entrées,Q)
– Fonction de génération (G) : détermine les valeurs des sorties en fonc-tion de l’état, 2 possibilités :– machine à états de Moore : G(état) ⇒ sorties– machine à états de Mealy : G(état,entrées) ⇒ sorties– Utiliser Mealy uniquement si Moore ne suffit pas (pas de Mealy en E1sauf, éventuellement, en question bonus.)
– T et G sont des fonctions combinatoires 4.15
3 Exemple complet : robot suiveur de mursRéaliser un robot suiveur de mur
– Le robot se déplace sur une grille, une case de la grille est :– Soit occupée par le robot– Soit vide– Soit occupée par un mur
– Le châssis du robot est fourni :– Activer MA (moteur avance) pendant un cycle fait avancer le robotd’une case, activer MT (moteur tourne) pendant un cycle fait tournerle robot de 90◦ à droite
– CA (capteur avant) et CG (capteur gauche) permettent de détecterla présence d’un mur devant (CA) ou à gauche (CG) du robot
– Capteurs et moteurs sont actifs à l’état haut– Au démarrage, le robot avance jusqu’à détecter un mur– Une fois qu’il a trouvé un mur, si le mur n’est pas à droite, le robot tournejusqu’à que le mur soit à droite 4.16
– Une fois fois qu’il a trouvé un mur sur sa droite, le robot suit le bord dumur selon l’algorithme suivant :– Il avance tant qu’il y a un mur à sa droite et pas de mur devant lui– S’il est bloqué avec un mur devant et un mur à droite il tourne sur luimême pour positionner le mur devant lui sur sa droite et recommence àsuivre le mur
– S’il rencontre un mur devant mais pas à sa droite alors il tourne à droitede 90◦ et avance d’une case avant de reprendre le suivi du mur 4.17
5
Questions– Réaliser le circuit de la machine à états permettant de contrôler le châssis
pour obtenir un robot suiveur de murs1. Définir les entrées sorties de la machine à états2. Établir le diagramme d’état de la machine à états3. Faire la synthèse en utilisant le codage « one-hot »
6
7
4.188