Académique Documents
Professionnel Documents
Culture Documents
Dakar 2015
1
ELECTRONIQUE NUMERIQUE
OBJECTIF GENERAL
2
ELECTRONIQUE NUMERIQUE
o LES BASCULES
o LES COMPTEURS
o LES REGISTRE
o LES MEMOIRES
3
1ière Partie : L’INFORMATION
NUMERIQUE
4
L’ INFORMATION NUMERIQUE
INTRODUCTION:
Un des principes fondamentaux des systèmes numériques est que :
Toute information (instructions ou donnée) est représentée par des
nombres particulièrement des nombres binaires.
Ainsi les machines numériques traitent des informations numériques,
notamment binaires. Pour comprendre alors leur fonctionnement et
pour mieux mieux les exploiter, il est nécessaire de connaître la
structuration de l’information binaire, les techniques de codage de
l’information et son traitement par la machine.
5
L’ INFORMATION NUMERIQUE
1. PRESENTATION DE L’ INFORMATON:
Information externe
Formats multiples et variés
textes, images, sons ...
Analogiques : Systèmes d'acquisition des données (capteurs,
cartes d'acquisition)
Information interne
Binaire 0101111...
Nécessité d' unités d'échanges : transformation de l'information
en binaire
Deux types d’informations : données et instructions
6
L’ INFORMATION NUMERIQUE
INFORMATIONS
INSTRUCTIONS DONNÉES
FORMATS EN CODE MACHINE
NUMERIQUES NON-NUMERIQUE
BCD ASCII
7
L’ INFORMATION NUMERIQUE
2. LE SYSTEME BINAIRE:
2.1. Présentation:
Système de numération constitué de deux symboles : {0,1}
Système à base 2 ou binaire
Les symboles (0,1) sont appelés : binary digit (bit) ou élément
binaire (eb) ou chiffre binaire.
Toute information sera codée sous forme d’une suite de
0 et 1.
8
L’ INFORMATION NUMERIQUE
Poids fort
ai bi Rang de ai Poids faible
Poids de ai base
Exemple : Base 2
ai = 0 ou 1 => bit
1010 = 1.23 + 0.22 + 1.21 + 0.20
1010 = 10102
Indique la base
9
L’ INFORMATION NUMERIQUE
10
L’ INFORMATION NUMERIQUE
Exemple:
12
L’ INFORMATION NUMERIQUE
13
L’ INFORMATION NUMERIQUE
14
L’ INFORMATION NUMERIQUE
15
L’ INFORMATION NUMERIQUE
16
L’ INFORMATION NUMERIQUE
Méthode:
on calcule
- Partie décimale: Multiplication successive et représentation sur
16 bits,
- Partie entière: Division successive et représentation maximale
sur 16 bits
17
L’ INFORMATION NUMERIQUE
M=101 et C=1
19
L’ INFORMATION NUMERIQUE
Ecaractéristique:
q La caractéristique est codée en relatif : Le nombre c est
représenté par e=(2n-1-1)+c
20
L’ INFORMATION NUMERIQUE
Exemple :
21
L’ INFORMATION NUMERIQUE
Exemple :
22
L’ INFORMATION NUMERIQUE
3. CALCUL BINAIRE :
24
L’ INFORMATION NUMERIQUE
codage décodage
25
L’ INFORMATION NUMERIQUE
26
L’ INFORMATION NUMERIQUE
Décimal Binaire
0 000
1 001
le code binaire pur E 2 010
3 011
4 100
5 101
6 110
7 111
27
L’ INFORMATION NUMERIQUE
Exemple : 1 1
0001 0001
28
L’ INFORMATION NUMERIQUE
E Le code AIKEN :
Décimal AIKEN
2421
0 0000
1 0001
2 0010
3 0011
4 0100
5 1011
6 1100
7 1101
8 1110
9 1111
29
L’ INFORMATION NUMERIQUE
;
E Le code de GRAY
;
Conversion Gray/ Binaire
Ä
Pour un mot binaire de format n on prend
a n −1 = g n−1
ai = ai +1 ⊕ g i
pour les rangs n−2 ≥i ≥ 0
Exemple
a3 = g 3 = 1 a4 = g 4 = 1
a3 = g 3 = 0
a3 = a 4 ⊕ g 3 = 1 ⊕ 0 = 1
a 2 = a3 ⊕ g 2 = 1 ⊕ 1 = 0 a 2 = a3 ⊕ g 2 = 0 ⊕ 1 = 1 a 2 = a3 ⊕ g 2 = 1 ⊕ 0 = 1
a1 = a 2 ⊕ g1 = 0 ⊕ 1 = 1 a1 = a 2 ⊕ g1 = 1 ⊕ 1 = 0 a1 = a 2 ⊕ g1 = 1 ⊕ 0 = 1
a0 = a1 ⊕ g 0 = 1 ⊕ 0 = 1 a0 = a1 ⊕ g 0 = 0 ⊕ 0 = 0
$!!!!#!!!! " $!!!!#!!!! " a0 = a1 ⊕ g 0 = 1 ⊕ 1 = 0
$!!!!#!!!! "
(1110)Gray = (1011)2 (0110)Gray = (0100)2 (10001)Gray = (11110)2 = (30 )10
31
L’ INFORMATION NUMERIQUE
Décimal GRAY
0 000
1 0 0 1
2 011
3 010
4 110
5 111
6 101
7 100
32
L’ INFORMATION NUMERIQUE
ASCII
(American Standard Code for Information Interchange) représente le
code de norme américaine pour l'échange de l'information
N=(1001110)2= 78
33
L’ INFORMATION NUMERIQUE
On note:
34
L’ INFORMATION NUMERIQUE
36
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
Exemple de variable logique
0V 0 Ouvert 0
5V 1 Fermé 1
- Lampe - Moteur
Eteinte 0 Arrêt 0
allumée 1 Marche 1
37
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
2. Les fonctions logiques (opération) de base
LA PORTE NON
38
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
2. Les fonctions logiques (opération) de base
LA PORTE OU
39
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
2. Les fonctions logiques (opération) de base
LA PORTE OU
40
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
2. Les fonctions logiques (opération) de base
LA PORTE ET
41
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
2. Les fonctions logiques (opération) de base
LES PORTES DÉRIVÉES : LA PORTE NAND
42
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
2. Les fonctions logiques (opération) de base
LES PORTES DÉRIVÉES : LA PORTE NOR
43
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
2. Les fonctions logiques (opération) de base
LES PORTES DÉRIVÉES : LA PORTE XOR
44
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
2. Les fonctions logiques (opération) de base
RÉALISATION DE LA PORTE XOR À PARTIR DES PORTES DE BASE
45
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
2. Les fonctions logiques (opération) de base
AUTRES NOTATIONS
46
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
2. Les fonctions logiques (opération) de base
AUTRES NOTATIONS
47
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
2. Les fonctions logiques (opération) de base
AUTRES NOTATIONS
48
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
49
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
Il existe 2 formes
d’expression de S
50
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
51
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
52
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
53
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
54
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
55
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
56
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
Allègement
a + a.b = a + b
Absorption
a + ab = a
(a + b) b = ab
Involution
a=a
57
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
59
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
60
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
61
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
62
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
Entrées Sortie
C B A S
0 0 0 0 BA
C
00 01 11 10
0 0 1 0
0 1 0 1 0 0 0 1 1
0 1 1 1 0 1 3 2
1 0 0 0 1 0 1 0 1
1 0 1 1 4 5 7 6
1 1 0 1
1 1 1 0
63
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
S = A.C + B.C
65
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
(
S = ( A + C ). B + C )
66
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
67
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
68
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
69
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
70
Synthèse d’un décodeur 7 segments
SN 7432 SN 7400
78
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
79
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
80
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
81
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
Série et Marquage:
La série correspond à l’appellation commerciale du circuit,
notamment le brochage.
Exemple de marquage :
82
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
83
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
Tensions :
- VOH : Tension de sortie garantie à l’état haut (valeur minimale)
• VOL : Tension de sortie garantie à l’état bas (valeur maximale)
• VIH : Tension d’entrée minimale pour que l’entrée soit garantie à
l’état haut.
• VIL : Tension d’entrée maximale pour que l’entrée soit garantie à
l’état bas au niveau logique bas (Output Low).
• VCC ou VDD : Tension d’alimentation positive.
• VSS : Masse ou 0 V.
En TTL En CMOS
Vohmini = 2,4 V Volmaxi = 0,4 V Vohmini = 0,95.Vcc Volmaxi = 0,05.Vcc
Vihmini = 2 V Vilmaxi = 0,8 V Vihmini = 0,55.Vcc Vilmaxi = 0,45.Vcc
85
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
86
2ième Partie : LOGIQUE COMBINATOIRE
87
LES SYSTEMES COMBINATOIRES
1.GENERALITES
1.1.Définition :
? Un système est combinatoire quand ses sorties à
l’instant t ne dépendent que des combinaisons de ses
entrées à ce même instant.
89
LES SYSTEMES COMBINATOIRES
90
LES SYSTEMES COMBINATOIRES
1.3. Exemple
91
LES SYSTEMES COMBINATOIRES
92
LES SYSTEMES COMBINATOIRES
2.1. LE CODEUR :
93
LES SYSTEMES COMBINATOIRES
2.1. LE CODEUR :
Exemple: Encodeur DCB prioritaire au poids fort : Le codeur prioritaire
au poids fort donne la priorité à l’entrée de poids le plus élevé.
E3 E2 E1 E0
A1 A0
0 0 0 0 - -
0 0 0 1 0 0
0 0 1 0 0 1
0 0 1 1 0 1
0 1 0 0 1 0
0 1 0 1 1 0
0 1 1 0 1 0
0 1 1 1 1 0
1 0 0 0 1 1
1 0 0 1 1 1
1 0 1 0 1 1
1 0 1 1 1 1
1 1 0 0 1 1
1 1 0 1 1 1
1 1 1 0 1 1
1 1 1 1 1 1 94
LES SYSTEMES COMBINATOIRES
95
LES SYSTEMES COMBINATOIRES
2.2. LE DECODEUR :
Il effectue l’opération inverse du codeur : n entrées
donnent 2n sorties. Décodeur DCB : conversion binaire-
DCB.
A2 A1 A0 s
S: sortie
0 0 0 S0
activée
0 0 1 S1
0 1 0 S2
0 1 1 S3
1 0 0 S4
1 0 1 S5
1 1 0 S6
1 1 1 S7
96
LES SYSTEMES COMBINATOIRES
Remarque:
Avec le décodeur on peut réaliser aussi des fonctions
logiques.
97
LES SYSTEMES COMBINATOIRES
Décodeur 7 segments:
Il affiche sur 7 segments, les chiffres de 0 à 9 ainsi que les
lettres de A à F.
Il reçoit en entrée un code binaire sur 4 bits et fournit en sortie
7 signaux qui alimentent les segments de l’afficheur.
symbole afficheur
Disposition de la T.V
98
LES SYSTEMES COMBINATOIRES
Décodeur 7 segments:
99
LES SYSTEMES COMBINATOIRES
Décodeur 7 segments:
100
LES SYSTEMES COMBINATOIRES
Transcodeur:
Lorsque le système permet de passer d’un code A
quelconque vers un code B. Il est dit transcodeur.
E S1 S0
E0 0 0
E1 0 1
E2 1 1
E3 1 0
101
LES SYSTEMES COMBINATOIRES
2.3. Multiplexeur
Sélection d’une voie parmi 2N par N bits de commande.
Exemple multiplexeur 2 entrées de données, 1 sélection
S D0 D1 Q
0 0 0 0
0 0 1 0
S Q
0 1 0 1
0 1 1 1
0 I0
Q = S I 0 + SI1 1 0 0 0 1 I1
1 0 1 1
1 1 0 0
1 1 1 1
102
LES SYSTEMES COMBINATOIRES
2.3. Multiplexeur
Sélection d’une voie parmi 2N par N bits de commande
I0 S1 S0 Q
I1 0 0 I0
I2 Q
I3
0 1 I1
Mux 4 vers 1
1 0 I2
S1 S0 1 1 I3
Q = S 1 S 0 I 0 + S 1S0 I1 + S1 S 0 I 2 + S1S0 I 3
Application
- Convertisseur parallèle-série,
- Réalisation de fonctions logiques
103
LES SYSTEMES COMBINATOIRES
abc F
000 0
001 0
010 1 0 I0
011 1 1 I1 Mux
Q= F
100 0 c I2 4 vers 1
101 1 c I3 S S
110 1 1 0
111 0
a b
104
LES SYSTEMES COMBINATOIRES
Principe:
Ø Rappeler l’équation du mux considéré,
Ø choisir les sélecteurs
105
LES SYSTEMES COMBINATOIRES
On peut aussi construire des multiplexeurs complexes avec
plusieurs multiplexeurs à 2 entrées (attention aux délais).
107
LES SYSTEMES COMBINATOIRES
2.4. Le démultiplexeur
L’entrée est aiguillée vers plusieurs sorties.
Q0 S1 S0 Q0 Q1 Q2 Q3
E Q1 0 0 E 0 0 0
Q2
0 1 0 E 0 0
1 parmi 2N
Q3
1 0 0 0 E 0
S1 S0 1 1 0 0 0 E
108
LES SYSTEMES COMBINATOIRES
2.4. Le démultiplexeur
Equations logiques
Q0 = E S 1 S0 ; Q1 = E S 1S 0 Q2 = ES1S0 Q3 = ES1S0
Application:
- Convertisseur série-parallèe,
- Réalisation de fonctions logiques
109
LES SYSTEMES COMBINATOIRES
2.5. Additionneur
Addition de deux nombres binaires à un bit
A
C
½ add
B S
110
LES SYSTEMES COMBINATOIRES
Additionneur complet
111
LES SYSTEMES COMBINATOIRES
112
LES SYSTEMES COMBINATOIRES
2.6. Le Comparateur
2.6.1.Comparateur élémentaire
113
LES SYSTEMES COMBINATOIRES
Cas de nombres à 2 eb
1ère méthode:
Faire la Table de vérité
Sortir les équations
114
LES SYSTEMES COMBINATOIRES
A1 A0 B1 B0 S E I
0 0 0 0 0 1 0
0 0 0 1 0 0 1
0 0 1 0 0 0 1
0 0 1 1 0 0 1
0 1 0 0 1 0 0
0 1 0 1 0 1 0
0 1 1 0 0 0 1
0 1 1 1 0 0 1
1 0 0 0 1 0 0
1 0 0 1 1 0 0
1 0 1 0 0 1 0
1 0 1 1 0 0 1
1 1 0 0 1 0 0
1 1 0 1 1 0 0
1 1 1 0 1 0 0
1 1 1 1 0 1 0
115
LES SYSTEMES COMBINATOIRES
2ème méthode:
b1 a1 b0 a0
L O GI QU E D ' I N TE R PR E TA TI O N
A<B A=B A> B
116
LES SYSTEMES COMBINATOIRES
117
LES SYSTEMES COMBINATOIRES
118
LES SYSTEMES COMBINATOIRES
2.7. L’U.A.L:
Composants capables d’effectuer un ensemble
d’opérations arithmétiques et logiques. Nous pouvons
distinguer 4 types de fonction
E opérations logiques de base
E comparaison et décalage
E addition et soustraction
E multiplication et division
119
LES SYSTEMES COMBINATOIRES
120
LES SYSTEMES COMBINATOIRES
Opération
F1 F0
0 0 S = A ET B
0 1 S = A OU B
1 0 S = NON A
1 1 S = A + B + Cin
121
3ième Partie : LOGIQUE SEQUENTIELLE
122
LOGIQUE SEQUENTIELLE
123
Présentation des circuits séquentiels
124
Présentation des circuits séquentiels
Exemple : Soit un moteur M commandé par deux bouton
poussoirs: un bouton de marche « m » et un bouton d’arrêt « a » .
Mt-1 a m Mt
m a M
0 0 0 0 0 0 0
Sorties 0 0 1 1
1 0 1 1 0 0 1
0 0 1 différentes 1 1 0 0
0 1 0 0 1 0 0
0 1 1 0
1 1 0 1 1 1 0
1 0 1 1
A l ’étape 3, la sortie 2 est conservée quelques soient les entrées, on
appelle cela la mémorisation. Nous avons ici un système séquentiel.
La réalisation en logique nécessite des circuits de mémorisation :
les bascules.
125
La bascule
126
La bascule
Structure Symbole
Table de vérité
Schéma
127
La bascule
La bascule asynchrones R S
128
La bascule
2. La bascule synchrones R S H
C'est une bascule R S dont la prise en compte
de l'état des entrées est synchronisée par une
impulsion d'horloge. Ceci permet d'éviter
l'arrivée accidentelle de "zéro" sur R ou sur S.
Signal d'horloge:
129
La bascule
2. La bascule synchrones R S H
130
La bascule
2. La bascule synchrones R S H
Schéma
Symbole
131
La bascule
132
La bascule
4. LA BASCULE D à VERROUILLAGE
133
La bascule
5. Bascule JK
Schéma
Symbole
Chronogramme
Table de vérité
J K Q
0 0 inchangée
0 1 0
1 0 1
1 1 opposée
134
La bascule
6. La bascule T
135
La bascule
S S R Q
0 0 F.N
1 0 1
0 1 0
R 1 1 amb
136
La bascule
8. Fonctionnement « toggle ou commutation» des bascules
Les bascules D, RSH et JK déclenchées sur front peuvent être
configurées en mode toggle c’est-à-dire une sortie qui oscille entre 1
et O.
Ces modes de fonctionnement en font des diviseurs de fréquence par
2. Le mode toggle est aussi à la base du compteur asynchrone. On
peut le réaliser avec une bascule RSH, D ou JK.
137
La bascule
8. Fonctionnement « toggle ou commutation» des bascules
Les bascules D, RSH et JK déclenchées sur front peuvent être
configurées en mode toggle c’est-à-dire une sortie qui oscille entre 1
et O.
Ces modes de fonctionnement en font des diviseurs de fréquence par
2. Le mode toggle est aussi à la base du compteur asynchrone. On
peut le réaliser avec une bascule RSH, D ou JK.
138
La bascule
8. Fonctionnement « toggle ou commutation» des bascules
Les bascules D, RSH et JK déclenchées sur front peuvent être
configurées en mode toggle c’est-à-dire une sortie qui oscille entre 1
et O.
Ces modes de fonctionnement en font des diviseurs de fréquence par
2. Le mode toggle est aussi à la base du compteur asynchrone. On
peut le réaliser avec une bascule RSH, D ou JK.
139
Le Comptage binaire
140
Comptage asynchrone binaire
q On distingue :
E des compteurs modulo m= 2n . n est le nombre de
bascule.
E des compteurs modulo m < 2n . Ils sont obtenus
avec les premiers par modification ou interruption
de séquence.
141
Comptage asynchrone binaire
Compteur modulo 2:
Il est la base du compteur asynchrone. On peut le
réaliser avec une bascule RSH, D ou JK.
142
Comptage asynchrone binaire
1. Compteur modulo m= 2n :
Modulo 4: m= 4 donc on a besoin de 2 bascules
143
Comptage asynchrone binaire
Compteur modulo 8
144
Comptage asynchrone binaire
2. Interruption de séquences
Compteur modulo 3 (interruption de séquences)
On réalise une interruption de séquences sur le
modulo 4.
Après 3 événements ( 0,1,2) , il faut retourner à 0.
On procède alors à la remise à 0 des bascules.
Q1 Q0 Ri Si
0 0 0 0
0 1 0 0
Ri = Q1Q0
1 0 0 0
1 1 1 0
145
Comptage asynchrone binaire
Compteur modulo 6
Q2 Q1 Q0 R S
0 0 0 0 0
0 0 1 0 0
0 1 0 0 0
0 1 1 0 0
1 0 0 0 0
1 0 1 0 0
1 1 0 1 0
1 1 1 1 0
Q2 Q1 Q0 R0 Si
0 0 0 0 0
0 0 1 1 0
0 1 0 0 0
0 1 1 1 0
1 0 0 0 0
1 0 1 1 0
1 1 0 0 0
1 1 1 1 0
R 0 = Q0
147
Comptage asynchrone binaire
3. Modification de séquences
148
Comptage asynchrone binaire
149
Comptage intégré asynchrone
Les compteurs intégrés:
-Le compteur intégré 7490: Technologie TTL
150
Comptage intégré asynchrone
Modulo 10
Modulo 100
151
Comptage synchrone binaire
152
Table de transition : bascules RS,D et JK
T. Transition Bascule D
Qt Qt+1 D
O O O
O 1 1
1 O O
1 1 1
transition
153
SYNTHESE DES COMPTEURS
METHODE DE MARCUS
Technique de synthèse:
154
SYNTHESE DES COMPTEURS
METHODE DE MARCUS
Exemple: Réaliser un compteur synchrone modulo 8
Type de bascule : D
Nombre de bascules : 3
155
SYNTHESE DES COMPTEURS
METHODE DE MARCUS
Exemple: Réaliser un compteur synchrone modulo 8
Type de bascule : D
Nombre de bascules : 3
156
SYNTHESE DES COMPTEURS
METHODE DE MARCUS
Equation des entrées
157
SYNTHESE DES COMPTEURS
METHODE DE MARCUS
Logigramme
Généralisation
158
SYNTHESE DES COMPTEURS
METHODE DE MARCUS
Compteur modulo 5
D2 = Q1 ⊕ Q2
D1 = Q1 Q3 D2 = Q1 ⊕ Q2 D3 = Q1Q2
159
SYNTHESE DES COMPTEURS
METHODE DE MARCUS
Equation
Logigramme
160
Compteurs synchrones
On trouve sous forme de circuits intégrés, des compteurs
synchrones. Leur séquence peut être soit binaire soit BCD.
Certains offrent même des possibilités de prépositionnement à un
nombre quelconque (chargement).
Brochage Table de fonction
161
Compteurs synchrones
162
Les registres
163
Les registres
Registre de mémorisation
164
Les registres
Registre à décalage
Dans un registre à décalage les bascules sont
interconnectées de façon à ce que l'état logique de
la bascule de rang i puisse être transmis à la
bascule de rang i+1 quand un signal d'horloge est
appliqué à l'ensemble des bascules. L'information
peut être chargée de deux manières dans ce type de
registre: en série ou en parallèles
Entrée série
165
Les registres
Décalage à gauche
166
Les registres
167
Les registres
169
Les registres
Registre universel
170
Les mémoires
171
Les mémoires
Exemple de mémoire à bascule D
172
Les mémoires
1. Classification:
173
Les mémoires
- Capacité:
Nombre de bits ou de mots binaires mémorisés
- Consommation
174
Les mémoires
175
Les mémoires
3. Extension de capacité
On peut augmenter la capacité d’une mémoire par association de
mémoires.
Avec 4 boîtiers mémoires de 1Kx4bits, on peut réaliser les mémoires
suivantes : 1Kx16bits, 4Kx4bits, 2Kx8bits.
176
Les mémoires
177
4ième Partie : Introduction aux circuits
logiques à architecture programmable
178
Classification des familles des circuits numériques
179
Introduction aux circuits à architecture
programmable
q Circuits logiques à architecture programmables
o Ciruits intégrés logiques programmables au sens de sa
reconfiguration.
o Cellules logiques librement assemblagbles
o Possibilités de modification des connexions par progrmmation.
o Plusieurs sigles existent pour désigner ces circuits.
q Reprogrammables à volonté
181
Les circuits FPGA
q Densités d’intégration pouvant atteindre plus de 10 millions de portes
logiques.
182
Carte DE0 NANO
Specifications FPGA
• Altera MAX II EPM2210F324 FPGA device
I/O Devices
• Built-in USB Blaster for FPGA configuration
Prototyping Areas
• A 40-pin expansion port area compatible with Altera
DE2/DE1 expansion ports.
• Prototyping Area A with 68 GPIO, 6 3.3V, 2 5V and
8 GND pins
• Prototyping Area B with 20 GPIO, 2 3.3V, and 2
GND pins
183
CARTE DE2 POUR LES TP (ALTERA)
Specifications FPGA
• Cyclone II EP2C35F672C6 FPGA
I/O Devices
• Built-in USB Blaster for FPGA configuration
• 10/100 Ethernet, RS-232, Infrared port
• Video Out (VGA 10-bit DAC)
• Video In (NTSC/PAL/Multi-format)
• USB 2.0 (type A and type B)
• PS/2 mouse or keyboard port
• Line-in, Line-out, microphone-in
(24-bit audio CODEC)
• Expansion headers (76 signal pins)
Memory
• 8-MB SDRAM, 512-KB SRAM, 4-MB Flash
• SD memory card slot
Switches, LEDs, Displays, and Clocks
• 18 toggle switches
• 4 debounced pushbutton switches
• 18 red LEDs, 9 green LEDs
• Eight 7-segment displays
• 16 x 2 LCD display
• 27-MHz and 50-MHz oscillators, external SMA clock
input 184
CARTE DE2 POUR LES TP (ALTERA)
185
VHDL introduction
Niveaux de description
q Comportemental ou fonctionnel
o Le modèle est décrit par, sa fonction, son algorithme. Il s’agit de
décrire comment cela fonctionne.
q Structurel (RTL « Register Transfert Logic »)
o Le modèle est décrit sous forme d'éléments séquentiels
o Prend en compte la notion d’horloge, de cycle;
q Porte logique (Structurel)
o Le modèle est décrit par sa topologie (netlist) de portes logiques, de
registres, de composants
q Décomposition du cahier des charges en fonctions simples
o Fonctions combinatoires (instructions concurrentes)
o Fonctions séquentielles (process)
Introduction au VHDL
Introduction au VHDL
Nom du cours
Prof. Mamadou Lamine NDIAYE
Introduction au VHDL
● VHDL est un langage international défini par la norme IEEE qui permet
● Synthèse logique des circuits numériques
● Synthèse physique des circuits numériques
Entity Nom_entite is
-- déclarations de paramètres, ports..
Begin
End Nom_entite;
Exemple :
Multiplexeur 2 vers Library ieee;
Use ieee.std_logic_1164.all;
Déclaration des
bibliothèques
1 Use ieee.numeric_std.all;
sel
mux2 );
end mux2;
Déclaration de
-- Déclaration de l’architecture (commentaire) l’entité du
multiplexeur
architecture archi_mux2 of mux2 is
begin Déclaration de
with sel select l’architecture du
s <= e1 when ’1’, -- s recopie e1 lorsque selmultiplexeur
= ‘1’
e2 when others; -- recopie e2 dans tous les autres
cas
end archi_mux2;
Objets et types de base
Quatre objets « typés »
● Les constantes (CONSTANT), objet dont la valeur ne change pas
durant la simulation.
Time : comptage du temps sur 64 bits, en ps, ns, us, ms, sec, min, hr (non
synthétisable) ;
Opérateurs en VHDL
Les opérateurs arithmétiques et logiques
Nom du cours
Prof. Mamadou Lamine NDIAYE
VHDL : Les instructions concurrentes
Logique combinatoire : Instructions concurrentes
●Décomposition en fonction simple (concurrente), ensemble de
composants ou d’algorithmes travaillant en parallèle et agissant
les uns sur les autres.
●Chaque instruction effectue donc un traitement en parallèle avec
les autres instructions.
●L’ordre d’écriture des instructions est sans importance.
Affectation simple
signal <= signal1
Library ieee;
Use ieee.std_logic_1164.all; Architecture archi_simple of fonction_simple
Use ieee.numeric_std.all; is
Use ieee.std_logic_unsigned.all; Begin
Entity fonction_simple is
s1 <= e1 and e2; -- ordre d’écriture indiff
Port( e1, e2 : in std_logic;
s2 <= e1 or e2; -- ordre d’écriture indiff
s1, s2 : out std_logic
);
End fonction_simple; end archi_simple;
Affectation conditionnelle
signal <= signal1 when expresion1 else
………
signal2 when expresion2 else
signal3 ;
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.numeric_std.all; architecture archi_mux2 of
Use ieee.std_logic_unsigned.all; mux2 is
begin
Entity mux2 is
Port( e1, e2 , sel : in std_logic; s <= e1 when sel=’0’ else
s : out std_logic e2;
);
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.numeric_std.all;
Use ieee.std_logic_unsigned.all;
entity Bcd7Segment is
Port ( data : in STD_LOGIC_VECTOR (3
downto 0);
7Segment : out
STD_LOGIC_VECTOR (0 to 6));
end Bcd7Segment;
Affectation sélective with expression select
signal <= signal1 when valeur1,
signal2 when valeur2,
signal 3 when others ;
architecture comportement of
Bcd7Segment is
begin
with data select Library ieee;
Use ieee.std_logic_1164.all;
7Segment <=
Use ieee.numeric_std.all;
"0000001" when x"0" ,
Use ieee.std_logic_unsigned.all;
"1001111" when x"1" ,
"0010010" when x"2" , entity Bcd7Segment is
"0000110" when x"3" , Port ( data : in STD_LOGIC_VECTOR (3
"1001100" when x"4" , downto 0);
"0100100" when x"5" ,
7Segment : out
"0100000" when x"6" ,
STD_LOGIC_VECTOR (0 to 6));
"0001111" when x"7" ,
"0000000" when x"8" , end Bcd7Segment;
"0000100" when x"9" ,
"1111111" when others;
end comportement;
Component
Les Composants (component)
● Le mot COMPONENT permet de déclarer un prototype (modèle) de composant
● L’instanciation du composant se fait alors dans le corps de l’architecture
● <NOM_INSTANCE>:<NOM_COMPOSANT> port map (LISTE DES CONNEXIONS);
● Génération
end generate label;
label : for i in 0 to x generate
--librairie pour inclure type std_logic -- suite d’instruction concurr
conditionnelle :
Library ieee; -- declaration des signaux internes
Use ieee.std_logic_1164.all; pour le report des retenues ci End generate label ;
entity Additionneur4bit is signal C : std_logic_vector( 3
Port( ri : IN std_logic ; downto 0 );
A, B : IN Begin
GENERATE
C(0) <= ri ; Library ieee;
std_logic_vector(3 downto 0) ;
s : OUT -- Création des 4 aditionneurs Use ieee.std_logic_1164.all;
std_logic_vector(3 downto 0) ; A : for i IN 0 to 3 GENERATE ENTITY additionneur1bit IS
r : OUT std_logic LSB : if i = 0 GENERATE PORT ( ri, a, b : IN
o ); b0 : additionneur1bit port map
s’utilise avec for (itérative) ou if (conditionnelle) STD_LOGIC;
end Additionneur4bit; (C(i) , A(i) , B(i) , s(i) , C(i) ); So, r : OUT STD_LOGIC);
End GENERATE LSB END additionneur1bit;
architecture Structure of MSB : if i > 0 GENERATE
Additionneur4bit is b3 : additionneur1bit port map ARCHITECTURE Archi OF
-- declaration du composant (C(i-1) , A(i) , B(i) , s(i) , C(i) ); additionneur1bit IS
additionneur1bit End GENERATE MSB; BEGIN
component additionneur1bit is End GENERATE A; r <= (a AND b) OR (ri AND (a
port( ri : IN std_logic ; r <= C(3) ; XOR b));
a,b :IN std_logic ; end Structure; So <= a XOR b XOR ri;
So,r : OUT std_logic ) ; END Archi;
end component additionneur1bit ;
Concepts de base du VHDL : Instructions
séquentielles
Nom du cours
Prof. Mamadou Lamine NDIAYE
VHDL : Les concepts de base
o Un Process est activé lors d’un changement d’état d’un des signaux de la liste de
sensibilité
o Les instructions utilisables dans un Process sont spécifiques
-- conditions
wait on S1, S2 until
ck = ‘1’;
-- forme générale
wait on S1, S2 until ck = ‘1’
for 100ns;
Instructions de contrôle
if expression1 then
● Instruction IF elsif
action1 ;
expression2 then
action2 ;
….......
else
action3 ;
o If … then …; [ elsif …then] ; [ else …] ; end if; end if;
o Toute instruction if doit se terminer par un end if;
Instructions de contrôle
●Instruction CASE…IS
CASE selecteur IS
WHEN condition1 => inst
WHEN condition2 => inst
…............
WHEN OTHERS => inst
END CASE;
●Instructions de boucle
-- boucle for
etiquette: FOR i IN 1 TO 100 LOOP -- la variable de boucle
-- instruction répétitive
o Mot clé LOOP. …..........
o Possibilité d’utiliser Next END LOOP etiquette;
-- boocle générale
etiquette: LOOP – boucle infinie
-- instruction répétitive
…..........
END LOOP etiquette;
Synthèse des bascules
● Bascule RS
BEGIN
IF Ck'event and Ck = '1' then -- validation
Library ieee; du front montant
Use -- rising_edge(Ck) front montant
ieee.std_logic_1164.all;
-- falling_edge(Ck) descendant
BEGIN
ENTITY BasculeD IS
IF RISING_EDGE(Ck) then --
PORT (Ck, D : IN validation du front montant
STD_LOGIC;
Qa <= D;
Q : OUT ELSE Qa <=Qa ;
STD_LOGIC);
END IF;
END BasculeD; END PROCESS;
Q <= Qa;
END Structural;
Synthèse des bascules
● Bascule D avec entrées de forçage SET et RESET
J K Q
0 0 Inchangée
0 1 0
1 0 1
1 1 Opposée
Synthèse des bascules
● Bascule JK
ARCHITECTURE Structural OF
BasculeJK IS
SIGNAL Qa : std_logic;
BEGIN
PROCESS (Ck, J, K)
Library ieee; BEGIN
Use IF Ck'event and Ck='1’
ieee.std_logic_1164.all; then
IF J=‘0’ and K='0’
ENTITY BasculeJK IS
then Qa <= Qa;
Port ( Ck, J, K: in
ELSIF J=‘0’ and K=’1'
std_logic;
then Qa <= ‘0’ ;
Q : out
ELSIF J=‘1’ and K=’0'
std_logic);
then Qa <= ‘1’ ;
End BasculeJK;
ELSE
Qa <= (NOT) Qa ;
END IF;
END IF;
END PROCESS;
Q <= Qa;
END Strctural;
Synthèse des compteurs
● Compteur modulo 10
ARCHITECTURE Structural OF Compteur IS
SIGNAL Qa: STD_LOGIC_VECTOR (3 downto 0);
BEGIN
PROCESS(Ck, R) -- liste de sensibilité
BEGIN
Library ieee;
Use ieee.std_logic_1164.all; IF R = ‘0’ then
Qa <= "0000";
ENTITY Compteur IS ELSIF Ck'event and Ck = '1' then -- validation
PORT (Ck, R : IN STD_LOGIC; du front montant
Q: OUT STD_LOGIC_VECTOR (3
Qa <= STD_LOGIC_VECTOR (UNSIGNED(Qa)+ 1);
downto 0));
IF Qa=”1001" THEN Qa <= "0000";
END Compteur;
END IF;
END IF;
END PROCESS;
Q <= Qa;
END Structural;
Synthèse des compteurs
ARCHITECTURE Structural OF Compteur IS
● Compteur modulo 10 SIGNAL Qa: STD_LOGIC_VECTOR (3 downto 0) ;
SIGNAL Qha: STD_LOGIC_VECTOR (23 downto 0) ;
● Fréquence du BEGIN
PROCESS(Ck, R) -- liste de sensibilité
comptage BEGIN
IF R = ‘1’ THEN Qa <= "0000";
ELSIF (Ck'event and Ck = '1’) THEN
Qha <= STD_LOGIC_VECTOR (UNSIGNED(Qha)+ 1);
Library ieee; IF (Qha ="100110001001011010000000") THEN
Use ieee.std_logic_1164.all;
IF Qa=”1010" THEN
ENTITY Compteur IS Qa <= "0000";
PORT (Ck, R : IN STD_LOGIC; ELSE
Qa <= STD_LOGIC_VECTOR (UNSIGNED( Qa)
Qh: OUT STD_LOGIC_VECTOR (23 + 1);
downto 0);
END IF;
Q: OUT STD_LOGIC_VECTOR (3 ELSE Qa <= Qa;
downto 0)); END IF;
END Compteur; END IF;
END PROCESS;
Q <= Qa;
END Structural;
Synthèse des compteurs
ARCHITECTURE Structural OF Compteur IS
● Compteur modulo N SIGNAL Qa0, Qa1, Qa2: STD_LOGIC_VECTOR (3 downto
0) ;
BEGIN
PROCESS(Ck, R) -- liste de sensibilité
VARIABLE Qh : INTEGER RANGE 0 TO 50000000;
BEGIN
Library ieee;
IF R = ‘1’ THEN
Use ieee.std_logic_1164.all;
Qa0 <= "0000"; Qa1 <= "0000"; Qa2 <= "0000";
ENTITY Compteur IS ELSIF (Ck'event and Ck = '1’) THEN Qh := Qh + 1;
IF (Qh = 50000000) THEN Qa0 <= Qa0 + 1;
PORT (Ck, R : IN STD_LOGIC;
IF Qa0 =“1001” then Qa1 <= Qa1 + 1; Qa0
Q0: OUT STD_LOGIC_VECTOR <= “0000“;
(3 downto 0);
IF Qa1 =“1001” then Qa2 <= Qa2 + 1;
Q1: OUT STD_LOGIC_VECTOR Qa1 <= “0000“;
(3 downto 0); END IF;
Q2: OUT STD_LOGIC_VECTOR END IF;
(3 downto 0)); ELSE Qa0 <= Qa0; Qa1 <= Qa1; Qa2 <= Qa2;
END Compteur; END IF;
END IF;
END PROCESS;
Q0 <= Qa0; Q1 <= Qa1; Q2 <= Qa2;
END Structural;
Synthèse des regitres
● Registre à décalage série parallèle
Synthèse des regitres
● Registre à décalage série parallèle
Nom du cours
Prof. Mamadou Lamine NDIAYE
Matrice à LED RGB 16X32 de Adafruit
Matrice 16X32(Adafruit)
● 512 Led RGB rangées sous forme de matrice 16X32 (existe aussi en 32X32)
● Nécessite 12 pins (6 données et 6 contrôle) et une alimentation de 5V (2A
minimum suggérée)
● Contrôle par Arduino et carte FPGA
● Adafruit à developper des bibliothèses pour Aduino
Cette version de la matrice RGB 16x32 à
des LEDs placées tous les 6mm. La matrice
est composée de 512 LEDs RGB brillantes
arrangées en grille de 16x32 à l'avant.
L'arrière est équipé de deux connecteurs
IDC (un pour le signal d'entrée (input) et un
pour la sortie (output)). En théorie, ces
panneaux sont chainables et 12 latchs 16-
bit permettent de piloter l'afficheur avec un
taux de rafraîchissement de 1:8.
La matrice est divisée en 8 sections. La
première section est constitué de la 1ère
ligne et de la 9ième ligne, la 2ième section de
la 2ième ligne et de la 10ième , …..la dernière
section de la 8ième ligne et de la 16ième.
Ces af ficheur s sont techniquement
'chaînable' - connectez la sortie de l'un à
l'entrée de l'autre. Ces panneaux
nécessitent une bonne alimentation 5V.
Chaque panneau peut consommer jusque 2
Ampères. Nous vous recommandons une
alimentation (minimum) 5V intégrant un
régulateur.
Matrice à LED RGB 16X32 de Adafruit
Alimentation
● Existe en 2 types de connecteur pour l’alimentation
Input pins
Matrice à LED RGB 16X32 de Adafruit
Connecteur IDC
● Existe 2 connecteurs (input et output)
●
D pin ou Masse
Input pins
Matrice à LED RGB 16X32 de Adafruit
Spécifications des pins IDC
● Les pins R1, G1 and B1 délivrent les données de couleurs pour
la première moitiée des leds (1-8x32). Si nous utilisons Arduino
pour la commande: les connecter sur les pins 2, 3, 4 (UNO) ou
24,25,26 (MEGA)
●Les pins R2, G2 and B2 délivrent les données de couleurs pour
la deuxième moitiée des leds (9-16x32). Si nous utilisons Arnuino
pour la commande: les connecter sur les pins 5, 6, 7 (UNO) ou
27,28,29 (MEGA)
● Les pins A, B, C permettent de sélectionner les 8 sections de
leds à commander. Si vous utiliser un 16X32 D doit être à la
masse. A, B, C seront connectés sur les pins A0, A1 et A2 et D à
A3 ou à la masse
●LAT (latch) signale la fin de la ligne des données, il sera
connecté au pin A3
●CLK (clock) rythme le contrôle de chaque bit de données. il sera D pin ou Masse
connecté au pin 8 (UNO) ou 11(MEGA)
●OE (output enable) permet de commuter les LEDs pour aller
d’une ligne au suivant. il sera connecté au pin 9.
Matrice à LED RGB 16X32 de Adafruit
Assignation des pins IDC pour Ardiono
IDC pin R1 G1 B1 R2 G2 B2 A B C LAT CLK OE
UNO 2 3 4 5 6 7 A0 A1 A2 A3 8 9
MEGA 24 25 26 27 28 29 A0 A1 A2 A3 11 9
D pin ou Masse
Matrice à LED RGB 16X32 de Adafruit
Library Arduino
● Deux Librairies à télécharger :
o RGB Matrix Panel Library: https://github.com/adafruit/RGB-matrix-Panel
o Adafruit GFX Library : https://github.com/adafruit/Adafruit-GFX-Library
●Des exemples de codes disponibles en téléchargement :
https://learn.adafruit.com/arduino-tips-tricks-and-techniques/arduino-libraries
32x3
2
Présentation de la matrice à LED
Matrice 32x32 (fonctionnement)
16x3
2
32x3
2
16x3
2
Présentation de la matrice à LED
Matrice 32x32 (Chargement des données)
o Trois registres à décalages 32 bits
o 3 registres pour chaque moitié
o Synchronisés par la même horloge
o Chargement en série des données de couleurs
o 32 bits par couleur (Rouge, Vert, Bleu)
Présentation de la matrice à LED
Matrice 32x32 (Registre de chargement)
Présentation de la matrice à LED
Matrice 32x32 (Seléction des lignes )
Présentation de la matrice à LED
Matrice 32x32 (Seléction des lignesD ) C B A Ligne
0 0 0 0 0 et 16
0 0 0 1 1 et 17
0 0 1 0 2 et 18
0 0 1 1 3 et 19
0 1 0 0 4 et 20
0 1 0 1 5 et 21
0 1 1 0 6 et 22
0 1 1 1 7 et 23
1 0 0 0 8 et 24
1 0 0 1 9 et 25
1 0 1 0 10 et 26
1 0 1 1 11 et 27
1 1 0 0 12 et 28
1 1 0 1 13 et 29
1 1 1 0 14 et 30
1 1 1 1 15 et 31
Contrôle de la Matrice à LED RGB
32x32
Spécifications des pins IDC
● Les pins R1, G1 et B1 délivrent les données de couleurs pour la
première moitiée des leds (1-16x32).
● Les pins R2, G2 et B2 délivrent les données de couleurs pour la
deuxième moitiée des leds (17-32x32).
● Les pins A, B, C, D permettent de sélectionner les 16 sections
de leds à commander.
● CLK (clock) rythme le contrôle de chaque bit de données.
● LAT (latch) permet le transfère des données à la fin du
chargement.
● OE (output enable) permet d’activer ou de verrouiller l’affichage.
Contrôle de la Matrice à LED RGB
32x32
Assignation des pins IDC pour test sur DE0
ALTERA
MatrixFPGA Pin
Pin Pin Name
R1 PIN_E7 GPIO 18
G1 PIN_E10 GPIO 27
B1 PIN_E8 GPIO 20
R2 PIN_F9 GPIO 22
G2 PIN_D9 GPIO 24
B2 PIN_C9 GPIO 25
A PIN_E11 GPIO 26
B PIN_D11 GPIO 31
C PIN_C11 GPIO 28
D PIN_B11 GPIO 29
CLK PIN_A12 GPIO 30
OE PIN_D12 GPIO 32
Contrôle de la Matrice à LED RGB
32x32
Assignation des pins IDC pour test sur DE0
ALTERA
MatrixFPGA Pin
Pin Pin Name
R1 PIN_E7 GPIO 18
G1 PIN_E10 GPIO 27
B1 PIN_E8 GPIO 20
R2 PIN_F9 GPIO 22
G2 PIN_D9 GPIO 24
B2 PIN_C9 GPIO 25
A PIN_E11 GPIO 26
B PIN_D11 GPIO 31
C PIN_C11 GPIO 28
D PIN_B11 GPIO 29
CLK PIN_A12 GPIO 30
OE PIN_D12 GPIO 32
Contrôle de la Matrice à LED RGB
32x32du projet
Structure
● Matrix32x32rgb Matrix32x32rgb.vh
ohorloge d
oscan_matrice Horloge.vhd
scan_matrice.vhd
Contrôle de la Matrice à LED RGB
32x32
o Entité de Matrix32x32rgb.vhd.
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
entity Matrix32x32rgb is
port (
horloge_in : in std_logic;
rst_n : in std_logic;
r1 : out std_logic;
g1 : out std_logic;
b1 : out std_logic;
r2 : out std_logic;
g2 : out std_logic;
b2 : out std_logic;
ck_ser : out std_logic; -- clk
ck_par : out std_logic; -- lat
oe_n : out std_logic;
-- oe
ligne_sel : out std_logic_vector(3
downto 0) );
end Matrix32x32rgb ;
Contrôle de la Matrice à LED RGB -- Raffraichssement de la matrice
32x32
o Architecture de
SCAN_MATRICE : entity
work.scan_matrice
port map (
Matrix32x32rgb.vhd. rst =>
Architecture Behavioral of
Matrix32x32rgb is rst_p,
clk_in =>
signal rst_p : std_logic; horloge_bit,
signal horloge_bit : std_logic; matrice_r1
=> r1,
begin matrice_g1
-- Le bouton reset est => g1,
activé niveau bas matrice_b1
rst_p <= not rst_n; => b1,
matrice_r2
-- Horloge (diviseur de => r2,
frequence) matrice_g2
MON_HORLOGE : entity => g2,
work.horloge matrice_b2
port map ( => b2,
rst => rst_p, matrice_ck_ser =>
clk_in => ck_ser,
horloge_in, matrice_ck_par =>
clk_out => ck_par,
horloge_bit matrice_oe_n =>
); oe_n,
matrice_abcd
=> ligne_sel
);
Contrôle de la Matrice à LED RGB
32x32
o Entité de horloge.vhd.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity horloge is
port (
clk_in : in std_logic;
clk_out : out std_logic;
rst : in std_logic
);
end entity horloge;
end if;
end process;
end bhv;
Contrôle de la Matrice à LED RGB
32x32
o Entité de scan_matrice.vhd
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity scan_matrice is
port (
clk_in : In
std_logic;
rst :
In std_logic;
matrice_r1 : out
std_logic;
matrice_g1 :
out std_logic;
matrice_b1 :
out std_logic;
matrice_r2 : out std_logic;
matrice_g2 : out std_logic;
matrice_b2 : out std_logic;
matrice_ck_ser : out std_logic;
matrice_ck_par : out std_logic;
matrice_oe_n : out std_logic;
matrice_abcd : out
std_logic_vector (3 downto 0)
);
end entity scan_matrice;
Contrôle de la Matrice à LED RGB
32x32
o Entité de scan_matrice.vhd
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity scan_matrice is
port (
clk_in : In
std_logic;
rst :
In std_logic;
matrice_r1 : out
std_logic;
matrice_g1 :
out std_logic;
matrice_b1 :
out std_logic;
matrice_r2 : out std_logic;
matrice_g2 : out std_logic;
matrice_b2 : out std_logic;
matrice_ck_ser : out std_logic;
matrice_ck_par : out std_logic;
matrice_oe_n : out std_logic;
matrice_abcd : out
std_logic_vector (3 downto 0)
);
end entity scan_matrice;
Contrôle de la Matrice à LED RGB
32x32
o Architecture de scan_matrice.vhd
Begin
if (unsigned (count) < 32) then ck_ser <= '1'; else ck_ser <= '0';
end if;
if (unsigned (count) = 32) then ck_par <= '1'; else ck_par <= '0'; end
if;
if (unsigned (count) > 32) then oe <= '1'; else oe
<= '0'; end if;
end process;
end archi;
Contrôle de la Matrice à LED RGB
32x32
o Architecture de scan_matrice.vhd
suite
process( clk_in )
begin
Réalisation de
-- Chargement des données de couleurs
matrice_r1 <= count (0) and
motifs fixes avec
ligne (0) and (not oe); AND
matrice_g1 <= count (1) and
ligne (1) and (not oe);
matrice_b1 <= count (2) and
ligne (2) and (not oe);
matrice_r2 <= count (0) and
ligne (0) and (not oe);
matrice_g2 <= count (1) and
ligne (1) and (not oe);
matrice_b2 <= count (2) and
ligne (2) and (not oe);
end process;
Contrôle de la Matrice à LED RGB
32X32 de Adafruit
Contrôle de la Matrice à LED RGB
32X32 dedeAdafruit
Réalisation motifs fixes avec XOR
process( clk_in )
begin
-- chargement des données de couleurs
end process;
Simulation des signaux de Contrôle
Simulation des signaux de Contrôle
Test sur la matrice RGB 32x32
Contrôle de la Matrice à LED RGB
32x32
Ajout d’une mémoire
● Matrix32x32rgb Matrix32x32rgb.vhd
ohorloge
oscan_matrice horloge.vhd
omemoire_vive
scan_matrice.vhd
memoire_vive.vhd
Contrôle de la Matrice à LED RGB -- Raffraichssement de la matrice
SCAN_MATRICE : entity
32x32
o Architecture de
Architecture Behavioral of
work.scan_matrice
port map (
rst =>
Matrix32x32rgb is
Matrix32x32rgb.vhd.
rst_p,
signal rst_p : std_logic; clk_in =>
signal horloge_bit : std_logic; horloge_bit,
signal adresse : std_logic_vector(8 matrice_r1
downto 0); => r1,
signal donnee : std_logic_vector (5 matrice_g1
downto 0); => g1,
matrice_b1
begin => b1,
-- Le bouton reset est matrice_r2
activé niveau bas => r2,
rst_p <= not rst_n; matrice_g2
=> g2,
-- Memoire matrice_b2
MEMOIRE_VIVE : entity => b2,
work.memoire matrice_ck_ser =>
port map ( ck_ser,
rst => rst_p, matrice_ck_par =>
clk_rd => ck_par,
horloge_bit, matrice_oe_n =>
addr => oe_n,
adresse, matrice_abcd =>
output => ligne_sel ,
donnee addr =>
); adresse,
data
Contrôle de la Matrice à LED RGB
32x32
o Entité de scan_matrice.vhd
entity scan_matrice is
port (
clk_in : In std_logic;
rst : In std_logic;
matrice_r1 : out std_logic;
matrice_g1 : out std_logic;
matrice_b1 : out std_logic;
matrice_r2 : out std_logic;
matrice_g2 : out std_logic;
matrice_b2 : out std_logic;
matrice_ck_ser : out std_logic;
matrice_ck_par : out std_logic;
matrice_oe_n : out std_logic;
matrice_abcd : out std_logic_vector (3 downto
0) ;
addr : out
std_logic_vector (8 downto 0);
data : in
std_logic_vector (5 downto 0)
);
end entity scan_matrice;
Contrôle de la Matrice à LED RGB
32x32
o Architecture de scan_matrice.vhd
Begin
Process (clk_in, rst, count, ligne)
begin
if( rst = '1') then
count <= (others => '0');
ligne <= (others => '0');
Contrôle de la Matrice à LED RGB
32X32 de deAdafruit
o Architecture scan_matrice.vhd
(suite)
elsif ( rising_edge( clk_in )) then
end process;
Contrôle de la Matrice à LED RGB
32x32
o Entité de memoire.vhd
entity memoire is
port (
rst : In
std_logic;
clk_rd : In std_logic;
addr : in
std_logic_vector (8 downto 0);
output : out std_logic_vector (5
downto 0)
);
end entity memoire ;
Contrôle de la Matrice à LED RGB
32x32
o Architecture de memoire.vhd
architecture archi1 of memoire is
type ram is array (511 downto 0) of
std_logic_vector (5 downto 0);
signal mem : ram;
begin
process ( clk_rd, rst )
begin
if ( rst = '1') then
-- initialisation des données de la
memoire
elsif ( falling_edge ( clk_rd )) then
-- chargement des données de la
memoire
end if;
end process;
process( clk_rd )
begin
if( falling_edge( clk_rd )) then
output <= mem (conv_integer ( addr ));
end if;
end process;
end archi1;
Matrice à LED RGB 16X32 de Adafruit
Exemples : Testcolors
#include <Adafruit_GFX.h> // Core graphics
library void setup() {
#include <RGBmatrixPanel.h> // Hardware- matrix.begin();
specific library
uint8_t r=0, g=0, b=0; // Déssine la deuxième moitié
#define CLK 8 // si vous utilisez UNO for (uint8_t x=0; x < 32; x++) {
#define LAT A3 // Déssine la première moitié for (uint8_t y=8; y < 16; y++) {
#define OE 9 for (uint8_t x=0; x < 32; x++) { matrix.drawPixel(x, y,
#define A A0 for (uint8_t y=0; y < 8; y++) { matrix.Color333(r, g, b));
#define B A1 matrix.drawPixel(x, y, r++;
#define C A2 matrix.Color333(r, g, b)); if (r == 8) {
RGBmatrixPanel matrix(A, B, C, CLK, LAT, r++; r = 0;
OE, false);
if (r == 8) { g++;
void loop() { r = 0; if (g == 8) {
// Ne fait rien g++; g = 0;
} if (g == 8) { b++;
g = 0; }
b++; }
} }
} }
} }
}
5ième Partie : ARCHITECTURE DES
CALCULATEURS
274
Architecture des calculateurs
1. Architecture de base
2. Les mémoires
3. Le microprocesseur
4. Les échanges de données
5. Exemple du microcontrôleur 68HC11
275
Architecture des calculateurs
!
Les bus :
• Données: bidirectionnel pour le transfert des informations entre le
microprocesseur et son environnement
• Adresses: unidirectionnel qui permet la sélection des informations à traiter
dans un espace mémoire (ou espace adressable) qui peut avoir 2n
emplacements et
• Commande: constitué par quelques conducteurs qui assurent la synchronisation
des flux d'informations sur les bus des données et des adresses
276
Architecture des calculateurs
1. Architecture de Harvard
Les bus :
L’architecture Harvard est souvent utilisée dans :
277
Architecture des calculateurs
Mémoire de Mémoire de
programme donnée
(ROM) (RAM)
Unité de commande
microprocesseur
Périphériques
278
Architecture des calculateurs
Unité Centrale
• Composée essentiellement du microprocesseur
• Interpréter et exécuter les instructions d’un programme
• Lire et écrire à la mémoire
• Communiquer avec les entrées sorties.
Mémoire Principale
• Contenir les instructions du programme et les données associées
• Mémoires ROM et RAM
Entrées sorties
• Assurer la communication entre le microprocesseur et les périphériques
Bus
• Ensemble de fils qui assurent la transmission des informations.
• Bus : données, adresse et commande
279
Architecture des calculateurs
!
Chaque périphérique est associé à une zone d’adresse; une fonction de décodage
d’adresse est nécessaire pour la sélection de chaque composants.
280
Architecture des calculateurs
Espace
Périphérique Libre
$0000 1
$2000
$FFFF
ROM RAM
Espace
Libre $3FFF
$4FFF
281
Architecture des calculateurs
2. Les mémoires
Avec une adresse de n bits (nombre de fil du bus d’adresse) il est possible de référencer
2n cases mémoire. Chaque case est remplie par un mot de longueur m qui est toujours
une puissance de 2.
Le nombre de fils de données définit la taille des données que l’on peut sauvegarder
dans chaque case mémoire.
!
Caractéristique d’une mémoire
Capacité: Quantité de données max de la mémoire
Format des données: nombre de bits mémorisable par case mémoire
Temps d’accès : temps entre le lancement et la disponible sur bus de données.
Temps de cycle : intervalle minimum qui doit séparer deux opérations successives.
Débit : nombre maximum d'informations lues ou écrites par seconde.
Volatilité : permanence des informations dans la mémoire.
282
Architecture des calculateurs
283
Architecture des calculateurs
284
Architecture des calculateurs
!
285
Architecture des calculateurs
2. Les mémoires : Hiérarchie Mémoire
Les mémoires de grande capacité sont souvent très lentes et les mémoires rapides sont
très chères. Le temps d’accès conditionne dans une large mesure les performances.
!
Les registres sont interne au processeur et servent au stockage intermédiaires.
La mémoire cache destinée à accélérer l’accès à la mémoire centrale.
La mémoire principale est l’organe principal de rangement des informations.
La mémoire d’appui elle joue le même rôle que la mémoire cache.
La mémoire de masse est une mémoire périphérique de grande capacité utilisée pour
le stockage permanent magnétiques (disque dur, ZIP) ou optiques (CDROM, DVDROM).286
Architecture des calculateurs
3. Microprocesseur
Un microprocesseur est construit autour de
deux éléments principaux : unité de
commande et unité de traitement.
5-1 L’unité de commande assure la
recherche et le décodage de l'instruction.
ü Compteur de programme
ü Registre d'instruction et le décodeur
d'instruction :
ü Bloc logique de commande (ou
séquenceur) :
R0 Rn
A
R D C
E ’ C
G U
Registre d’instruction I I M
Registre auxiliaire SP PC
S N U
Code Op. Adresse D
T L
ALU R E A
E X T
Décodeur E
Registre d’état U
R
Bus interne d’adresses
Signaux internes
de commande
BLOC LOGIQUE DE COMMANDE (CU)
Registre d’adresses
Horloge Bus de commande
q Accumulateur :
Un accumulateur est un registre de travail de 8 ou 16 bits qui sert:
o à stocker une opérande au début d'une opération arithmétique et le
résultat à la fin de l'opération.
o à stocker temporairement des données en provenance de l'extérieur du
microprocesseur avant leur reprise pour être rangées en mémoire.
o à stocker des données provenant de la mémoire ou de l'UAL pour les
présenter vers l'extérieur du microprocesseur.
q Registre d’état : Chacun de ces bits est un indicateur dont l'état dépend du
résultat de la dernière opération effectuée. On les appelle indicateur d’état
ou flag ou drapeaux. Dans un programme le résultat du test de leur état
conditionne souvent le déroulement de la suite du programme. 290
Architecture des calculateurs
3. Microprocesseur : composants
291
Architecture des calculateurs
3. Microprocesseur
La puissance d’un microprocesseur est caractérisée par le nombre
d’instructions qu’il est capable de traiter par seconde. Elle est définie par :
FH
MIPS =
CPI
q Pour augmenter les performances d’un microprocesseur, on peut donc soit
augmenter la fréquence d'horloge (limitation matérielle), soit diminuer le CPI
(choix d'un jeu d'instruction adapté).
292
Architecture des calculateurs
293
!
Architecture des calculateurs
Chaque instruction est toujours codée sur un nombre entier d’octets afin de
faciliter son décodage par le processeur. Une instruction est composée de
deux champs :
ü le code instruction, qui indique au processeur quelle instruction réaliser
ü le champ opérande qui contient la donnée, ou la référence à une donnée en
mémoire (son adresse).
295
Architecture des calculateurs
296
Architecture des calculateurs
297
Architecture des calculateurs
3. Le microprocesseur : Langage de
programmation
Le langage machine est le langage compris par le
microprocesseur. La taille d’une instruction
(nombre de bits nécessaires pour la représenter
en mémoire) dépend du type d’instruction et aussi
du type d’opérande. L’assembleur est le langage
le plus proche de la machine.
300
Architecture des calculateurs
3. Le microprocesseur spéciaux : Le processeur de signal
301
Architecture des calculateurs
3. Le microprocesseur spéciaux : Le microcontrôleur
qUn microcontrôleur est un circuit intégré contenant sur une sele puce un
CPU, de la RAM, de la ROM et des ports d’Entrée/Sorties (parallèles, séries,
I2C, etc..).
qIl peut intègrer aussi des fonctions spécifiques comme des compteurs
programmables (mesures de durées), des CAN voir des CNA (chaînes
d’acquisition), des interfaces de communication
qLes domaines d’application des microcontrôleurs sont nombreux :
o applications embarquées
o appareil électroménagers,
o chaîne d’acquisition,
o lecteur carte à puce,
o multimédia (lecteur CD, MP3, etc..)
o l’instrumentation,
o l’électronique automobile,
o Etc.
302
Architecture des calculateurs
4. Les échanges de données
qle microprocesseur interroge l’interface pour savoir si des transferts sont prêts
qtant que des transferts ne sont pas prêts, le microprocesseur attend
q:
o Un registre de commande dans lequel le processeur décrit le travail à
effectuer (sens de transfert, mode de transfert).
o Un ou plusieurs registres de données qui contiennent les mots à
échanger entre le périphérique et la mémoire.
o Un registre d’état qui indique si l’unité d’échange est prête, si l’échange
s’est bien déroulé, etc…
304
Architecture des calculateurs
4. Les échanges de données : mode programmé
Par scrutation
q le microprocesseur interroge l’interface pour savoir si des transferts sont prêts
q tant que des transferts ne sont pas prêts, le microprocesseur attend
q Le microprocesseur est souvent occupé par les interfaces d’entrées sorties
q Echanges lents et dépend du programme, il faut que le microprocesseur se
trouve dans la boucle de scrutation
Par interruption
q Une interruption est un signal asynchrone au programme en cours
q Un microprocesseur dispose d’une ou de plusieurs entrées d’interruption
q Un signal sur l’une de ces entrées peut interrompre le travail du
microprocesseur et forcer l’exécution d’un programme prioritaire.
q Avant chaque exécution d’instructions, le microprocesseur examine si il y a eu
une requête sur sa ligne d’interruption
q On peut donc interdire ou autoriser certaines sources d’interruptions, on les
appelle les interruptions masquables
q Les interruptions sont classées par ordre de priorité. Si plusieurs interruptions
se présentent en même temps, le microprocesseur traite d’abord celle avec la
priorité la plus élevée
305
Architecture des calculateurs
4. Les échanges de données : mode programmé
306
Architecture des calculateurs
4. Les échanges de données : mode direct avec la mémoire
qun circuit appelé contrôleur de DMA (Direct Memory Access) prend en charge
les différentes opérations
qLe microprocesseur contribue dans ce transfert à :
o initialiser l’échange en donnant au DMA l’identification du périphérique
concerné
o donner le sens du transfert
o fournir l’adresse du premier et du dernier mot concernés par le transfert
Avantage
q Pendant toute la durée du transfert, le processeur est libre d'effectuer un
traitement quelconque.
Inconvénient
q Limitation des accès mémoire au processeur pendant toute la durée de
l'opération
!
308
Architecture des calculateurs
5. Exemple le 68HC11 : Présentation
309
Architecture des calculateurs
5. Exemple le 68HC11 : Structure interne
310
Architecture des calculateurs
5. Exemple le 68HC11 : Mode de fonctionnement
311
Architecture des calculateurs
5. Exemple le 68HC11 : Cartographie mémoire
312
Architecture des calculateurs
5. Exemple le 68HC11 : Les registres
313
Architecture des calculateurs
5. Exemple le 68HC11 : Registres d’état
C’est un registre 8 bits, chaque bit change d’état en fonction du dernier traitement
du microcontrôleur :
qC(0) Carry, retenue: Le résultat de la dernière opération a causé une retenue.
qV(1) Overflow, débordement: le résultat de la dernière opération a provoqué un
débordement.
qZ(2) Zéro: le résultat de la dernière opération est nulle
qN(3) Négatif : le résultat de la dernière opération est négatif
qI(4) masque d’interruption: Les interruptions sont ignorées quand ce bit est à 1.
qH(5) Half Carry, demi-retenue: Utilisé en représentation décima codé en binaire
qX(6) masque d’interruption: Les interruptions XIRQ sont ignorées quand ce bit
est à 1.
qS(7) Ignorer Stop : L’instruction STOP est ignorée lorsque ce bit est à 1.
314
Architecture des calculateurs
5. Exemple le 68HC11 : Les différents ports
315
Architecture des calculateurs
5. Exemple le 68HC11 : Les différents ports
316
Architecture des calculateurs
5. Exemple le 68HC11 : Les différents ports
317
Architecture des calculateurs
5. Exemple le 68HC11 : Le convertisseur Analogique numérique
318
Architecture des calculateurs
5. Exemple le 68HC11 : Le convertisseur Analogique numérique
319
Architecture des calculateurs
5. Exemple le 68HC11 : La liaison série SCI
320
Architecture des calculateurs
5. Exemple le 68HC11 : La liaison série SCI
qSSCR2 registre de contrôle de la liaison série asynchrone SCI dont les bits les
plus couramment utilisés sont:
o RE 1 Réception activé, 0 récepteur déconnecté
o TE 1 Emetteur activé, 0 emetteur déconnecté
o RIE 1 active interruption RDRF-OR, 0 les inhibe
o TIE 1 active interruption TDRE, 0 l’inhibe
qSCSR registre d’état de la liaison série, bits couramment utilisés:
o FE 1 Erreur de format de données.
o OR 1 Débordement, réception d’une donnée avant utilisation de la précédente.
o RDRF 1 Registre de réception plein
o TDRE 1 Registre d’émission vide 322
Architecture des calculateurs
5. Exemple le 68HC11 : Jeux d’instruction
Mode d’adressage
qInhérent: Il n’y a pas d’opérande. Exemple INCA, LSLA, RTI, RTS, etc.
qImmédiat : L’opérande suit immédiatement le code de l’instruction. Exemple LDAA
#20
qEtendu : 16 bits, l’adresse de l’opérande se trouve dans les deux octets qui suivent le
code de l’instruction. Exemple LDAA $1024
qDirect: 8 bits, l’adresse de l’opérande se trouve dans l’octet qui suit le code de
l’instruction. Exemple LDAA $0020
qRelatif : Adressage réservé aux instructions de branchement. Adresse de
branchement = adresse instruction diminuée jusqu’à -128 ou augmentée jusqu’ +127.
Exemple : BNE TEMPO
qIndexé : L’adresse est calculé par le contenu du registre d’index en ajoutant une
valeur comprise entre $00 à $FF qui se trouve dans l’octet qui suit le code de
l’instruction. Exemple LDAA $10, X
qManipulation de bit: BCLR PORTB, %00110001 Mise à 0 de PB5, PB4 et PB0
BSET $1C,%1110 0100 Mise à 1 de Bit7, 6, 5, 2 de la donnée à l’@
$001C
qBranchement sur test Bit d’1 variable: BRCLR ADCTL,%1000
0000 ,TEMPO Le programme fait un saut à l’étiquette TEMPO si le bit
7 du registre ADCTL vaut 0 323
Architecture des calculateurs
5. Exemple le 68HC11 : Jeux d’instruction
Directives d’assemblage
Elles n’ont aucune influence sur le programme proprement dit mais elles orientent le
processus d’assemblage. Processus d’assemblage : Passage du programme texte en
programme binaire compréhensible par le 68HC11
Directive ORG $@ Indique le début ( origine ) du programme
324
Architecture des calculateurs
5. Exemple le 68HC11 : Jeux d’instruction
Structure d’un programme
END
325
Architecture des calculateurs
5. Exemple le 68HC11 : Jeux d’instruction
Instructions de chargement
326
Architecture des calculateurs
5. Exemple le 68HC11 : Jeux d’instruction
Instructions Arithmétique et logique
327
Architecture des calculateurs
5. Exemple le 68HC11 : Jeux d’instruction
Instructions de décalage et de rotation
328
Architecture des calculateurs
5. Exemple le 68HC11 : Jeux d’instruction
Instructions opérations sur des bits
329
Architecture des calculateurs
5. Exemple le 68HC11 : Jeux d’instruction
Instructions de branchement et de contrôle
330
Architecture des calculateurs
5. Exemple le 68HC11 : Jeux d’instruction
Instructions de branchement et de contrôle
331
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
332
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
334
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
335
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
336
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
337
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
•
338
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
339
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
340
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
341
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
342
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
343
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
344
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
345
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
346
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
347
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
348
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
349
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
350
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
351
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
353
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
354
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
355
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
357
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
358
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
359
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
361
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
362
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
363
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
364
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
365
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
366
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
367
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
368
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
369
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :
370