Vous êtes sur la page 1sur 370

ÉLECTRONIQUE NUMÉRIQUE

Mamadou Lamine NDIAYE


École Supérieure Polytechnique de DAKAR

Première année 2015-2016

Dakar 2015

1
ELECTRONIQUE NUMERIQUE

OBJECTIF GENERAL

q Comprendre la représentation de l’information


numérique et son traitement par une machine
numérique.

q Comprendre le fonctionnement des composants de


traitement de l’information numérique.

q Machine numérique: Ordinateurs , Calculatrices, tous


circuits à microprocesseurs

2
ELECTRONIQUE NUMERIQUE

1ière Partie : L’INFORMATION NUMERIQUE

o ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

2ième Partie : LOGIQUE COMBINATOIRE

o LES SYSTEMES COMBINATOIRES


o LES CIRCUITS COMBINATOIRES SPECIALISES

3ième Partie : LOGIQUE SEQUENTIELLE

o LES BASCULES
o LES COMPTEURS
o LES REGISTRE
o LES MEMOIRES

4ième Partie: INTRODUCTION AU VHDL ET AUX CIRCUITS A


ARCHITECTURE PROGRAMMABLE

5ième Partie: ARCHITECTURE DES CALCULATEURS

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

NB ENTIERS POSITIFS NB FRACTIONNAIRES NB ENTIERS NEGATIFS

VIRGULE FIXE VIRGULE FLOTTANTE

Ces différentes informations sont traitées en binaire

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.

Exemple: N = (1100)2: Ecriture basique

8
L’ INFORMATION NUMERIQUE

EEcriture polynomiale du nombre N:

N = an bn + an-1 bn-1 + .....…………+ a1 b1+ a0 b0

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

EAUTRES SYSTEMES DE NUMERATION:

Numération base 10 : 10 chiffres (0,1,2,3,4,5,6,7,8,9)


Numération base 8 : 8 chiffres (0,1,2,3,4,5,6,7)

Lorsque la valeur est supérieure à 10, les digits de valeurs


supérieurs à 9 sont remplacés par des lettres de l’alphabet.

Numération base 16 : (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)

10
L’ INFORMATION NUMERIQUE

2.2. Conversion binaire:


EConversion base b vers base 10:
On procède au développement de la forme polynomiale
(1010)2 = 1.23 + 0.22 + 1.21 + 0.20
Convertir N1 = ( 10110)2
N2 = ( A12)16
E Conversion base 10 vers base b:

Pour la partie entière: Divisions successives du nombre par b autant


de fois que cela est nécessaire pour obtenir un quotient nul.
Les restes constituent l’équivalent dans la base b. Le dernier reste
est le bit de poids fort.

Pour la partie décimale ou fractionnaire: on procède par une


multiplication successive par b, jusqu’à obtenir une partie décimale
nulle ou arriver à la précision demandée. L’équivalent dans la base b
correspond aux parties entières . Le bit de rang -1 est la première
partie entière.
11
L’ INFORMATION NUMERIQUE

Exemple:

Conversion décimale/ base 2


- division successive du nombre par 2 pour la partie entière
20 2
0 10 2
Bit poids faible 0 5 2 2010 = 101002
1 2 2
0 1 2
1 0
- multiplications successives du nombre par 2 pour la partie fractionnaire

0,375 * 2 = 0, 75 0,37510 = 0.0112


0,75 * 2 = 1, 5
0,5 *2 = 1 20,37510 = 10100.0112

Remarques : la représentation en base 2 n'est pas forcément finie (exemple


0,210) limitation du nombre de bits => erreur de troncature

12
L’ INFORMATION NUMERIQUE

E Conversion base 2n vers base 2


Chaque chiffre est remplacé par son équivalent binaire codé sur n bits.
Ex: ( 3C5)16= 0011 1100 0101 ; Ex: ( 375)8 =?

E Conversion base 2 vers base 2n


Le nombre est décomposé en paquets de n bits en partant du pois faible.
Chaque paquet est remplacé par son équivalent dans la base b= 2n
Ex: ( 1111000101)2 = ( 3C5 ) 16

E Conversion base i vers base j


Si i et j sont des puissances de 2, on utilise la base 2 comme relais; sinon
on utilise la base 10 comme relais.
Ex: Base 8 vers base 16 on passe par la base 2
Convertir (567)8 en base 16 ; (1A56) 16 en base 8.
Ex: Base 5 vers base 8 on utilise la base 10
Convertir (432) 5 en base 10 .

13
L’ INFORMATION NUMERIQUE

2.3. Représentation des nombres binaires :

Les systèmes informatiques travaillent avec des mots (série de


bits). Le mot de base est appelé octet qui est au format de 8 bits.
Ainsi il est important de comprendre comment se représente les
nombres dans ces formats.

2.3.1. Les nombres entiers


La première représentation consiste à les coder de façon naturelle
sur les mots (8,16,32 bits…); la limitation étant la valeur maximale
qu’on peut stocker. On parle alors de représentation fixe.
Les nombres entiers sont les nombres naturels ou relatifs.

2.3.1.1. Représentation des entiers naturels

Le nombre décimal est codé en binaire nature. La limite reste la


taille du mot.
Exemple sur 16 bits on peut coder de 0 à 216-1

14
L’ INFORMATION NUMERIQUE

2.3.1.2. Représentation des nombres des entiers relatifs :

Trois forme de représentation:


E bit de signe et valeur absolue: poids fort(=signe) et val.absolue
E complément restreint (CR): bits de signe et nbres complémentés
E complément vrai : bit de signe et (CV)=CR+1

15
L’ INFORMATION NUMERIQUE

2.3.1.2.Représentation des nombres binaires fractionnaires

Si on veut représenter des nombres fractionnaires deux modes de


représentations sont utilisés

EReprésentation des nombres en virgule fixe

les nombre de bits pour partie entière et partie fractionnaire sont


fixes: la virgule est toujours au même endroit.

Avantage: Additions et soustractions sont très faciles à faire.


Inconvénient: taille réduite : le nombre à écrire a des limites.

16
L’ INFORMATION NUMERIQUE

Exemple en format 32 bits: 16 bits ( partie entière et le signe) et


16 pour la partie fractionnaire

Pour écrire 32,15:

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

0000 0000 0010 0000 0010 0110 0110 0110

17
L’ INFORMATION NUMERIQUE

EReprésentation des nombres binaires en virgule flottante

Elle a pour origine la notation scientifique : ± M .B C


M: mantisse
B: base
C: caractéristique ou exposant

Exemple: Codage en base 2 de 3,25


3,25 = (11,01)2 en virgule fixe
3,25 = 1,101.21
3,25 = 110,1.2-1

Pb: différentes manières de représenter M et c


d’où la normalisation

X=±1,M.2c donc 3,25=1,101.21

M=101 et C=1

Avantages: Des nombres entiers de très grandes valeurs


18
L’ INFORMATION NUMERIQUE

EReprésentation des nombres binaires en virgule flottante

Représentation standard IEEE 754 sous format normé

19
L’ INFORMATION NUMERIQUE

E Virgule flottante: En IEEE 754 le codage de la caractéristique est


relatif

Ecaractéristique:
q La caractéristique est codée en relatif : Le nombre c est
représenté par e=(2n-1-1)+c

Exemple en simple précision :


-1 sur 8 bits devient :27-1= 01111111-00000001=01111110

Attention : la valeur 11111111 indique que ce n'est pas un nombre


(on sort de la plage)

20
L’ INFORMATION NUMERIQUE

Exemple :

21
L’ INFORMATION NUMERIQUE

Exemple :

22
L’ INFORMATION NUMERIQUE

2.4. CALCUL BINAIRE :


1.Deux conditions sont indispensables pour une opération:
A Les nombres ont la même longueur ( format), en effet
les nombres sont stockés dans un certain format, par
exemple 8, 16, 32, 64 … bits sont des formats courants .
A Les circuits ne manipulent que deux nombres à la fois.

Dans les différentes opérations, on peut avoir :


A Une retenue ( addition : carry ),
A Une retenue ( soustraction : borrow ),
A Un dépassement de capacité ( overflow),
signalé par un drapeau ( flag)

Exemple: Addition Soustraction


carry borrow
0+0=0 0 0–0=0 0
0+1 =1 0 0–1=1 1
1+0=1 0 1 -0=1 0
1+1=0 1 1–1=0 0
23
L’ INFORMATION NUMERIQUE

3. CALCUL BINAIRE :

24
L’ INFORMATION NUMERIQUE

3. LES CODES BINAIRES:

Les machines numériques traitant des informations binaires leur


échange avec le monde extérieur n’est possible qu’en transformant
les informations externes en informations binaires ou vice versa.
Pour se faire il est utilisé des codes binaires.

codage décodage

Clavier ( décimal) Calcul binaire Affichage décimal

Selon l’origine des machines et leur méthode de fonctionnement ,


on distingue plusieurs types de codes binaires .

25
L’ INFORMATION NUMERIQUE

Parmi les codes binaires, on distingue :

E les codes pondérés,

E les codes non pondérés,

E les codes détecteurs d’erreur.

26
L’ INFORMATION NUMERIQUE

3.1. Les codes pondérés


Un code est dit pondéré lorsque, à chaque élément
binaire est associé un poids selon le rang de cet élément
binaire.

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

E Le code DCB ( Décimal Codé Binaire ):

Chaque chiffre décimal est codé séparément en


binaire sur 4 bits en commençant par le bit de
poids faible.

Exemple : 1 1
0001 0001

28
L’ INFORMATION NUMERIQUE

E Le code AIKEN :

C’est un code auto-complémenté à 9 par


inversion des 0 et des 1.

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

3.2. Les codes non pondérés :


E Le code de GRAY
Il n’y a pas de poids affecté aux éléments binaires. Parmi ces codes on note le code
Gray

Conversion binaire / Gray


, pour
N = (an −1...ai ...a0 ) 2 est équivalent à (g n−1...gi ...g 0 )CBR
g n−1 = a n−1
pour les rangs n−2 ≥i ≥ 0 g i = ai +1 ⊕ ai
Exemple: (24)10 = (?)CBR
(1010)2 = (?)CBR (1111)2 = (?)CBR g 4 = a4 = 1
g 3 = a3 = 1 g 3 = a 4 ⊕ a3 = 1 ⊕ 1 = 0
g 3 = a3 = 1
g 2 = a3 ⊕ a 2 = 1 ⊕ 1 = 0 g 2 = a3 ⊕ a 2 = 1 ⊕ 0 = 1
g 2 = a3 ⊕ a 2 = 1 ⊕ 0 = 1
g1 = a 2 ⊕ a1 = 1 ⊕ 1 = 0 g1 = a 2 ⊕ a1 = 0 ⊕ 0 = 0
g1 = a 2 ⊕ a1 = 0 ⊕ 1 = 1
g = a ⊕ a0 = 1 ⊕ 1 = 0 g = a ⊕ a0 = 0 ⊕ 0 = 0
$0 !!1!!# !!!! " $0 !!1!!# !!!! "
g = a ⊕ a0 = 1 ⊕ 0 = 1
$0 !!1!!# !!!! "
(1111)2 = (1000)CBR (24 )10 = (11000 )2 = (10100 )CBR
(1010)2 = (1111)CBR
30
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

(1110)Gray = (?)2 (01000 )Gray = (?)2 (10001)Gray = (?)10

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

ELe code de GRAY

Observation sur le code Gray:


A partir des 2n premiers chiffres, on obtient les 2n+1 premiers
chiffres par reflexion.

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

Faire alt 78 pour


avoir N

33
L’ INFORMATION NUMERIQUE

3.3. Les codes détecteurs d’erreur

Ils ont utilisés dans l’échange d’information entre deux équipements.

On note:

ECode de parité : Il détecte une erreur mais ne la corrige pas. C’est


un code auto évaluateur

ECode Hamming : Il détecte et corrige les erreurs. Il est auto


correcteur

34
L’ INFORMATION NUMERIQUE

4. CARACTERISQUES DE L’INFORMATION NUMERIQUE

L’information traitée dans les machines numériques est un signal


électrique à deux niveaux

• le potentiel de référence du circuit (0 V), noté VSS ou GND


• un potentiel positif (+2 V à + 5V en MOS) noté VDD ou VCC

A chaque niveau de tension on affecte une valeur binaire ou logique.


Exemple à : GND ⇒ 0 et VCC ⇒ 1

Le signal est interprété comme une suite de symboles binaires.


Le traitement et l’exploitation de ces signaux binaires sont basés sur
l'algèbre de BOOLE.
35
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

1. Présentation Algèbre de BOOLE


C’est un outil mathématique qui permet de traiter des dispositifs ou
des phénomènes ne prenant que deux états distincts (Tout ou Rien)
dans leur fonctionnement et dont leurs combinaisons donnent un
phénomène à deux états ou assimilables.
Elle est conçue autour de l’ensemble binaire (logique) et
d’opérations logiques de base (addition, produit, complément et
leurs dérivées).
ELes variables d’entrée et de sorties sont notées variables logiques
E La relation entre variables d’entrée et de sortie est notée fonction
logique. On note des fonctions logiques de base.
EChaque fonction admet un table de vérité qui décrit le
comportement de la variable de sortie en fonction des variations
des entrées.
E Tout phénomène physique ou grandeur pouvant prendre deux
états distincts peut être considéré comme une variable binaire.

36
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES
Exemple de variable logique

Exemple de dispositifs ou grandeurs pouvant être considérés


comme des variables logiques:

- Une tension à deux états (0V , 5V ) -Interrupteur

Tension Niveau Interrupteur Niveau


logique logique

0V 0 Ouvert 0

5V 1 Fermé 1

- Lampe - Moteur

Lampe Niveau Moteur Niveau


logique logique

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

2. Les fonctions logiques (opération) de base


EAnalyse de signaux:
Exemple
Tracer
A X=A+B;
Y=A.B;
B
Z=A ⊕ B; W=X+Y

49
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

3. EXPRESSION GENERALE D’UNE FONCTION LOGIQUE

Soit la table de vérité suivante

Il existe 2 formes
d’expression de S

50
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

3. EXPRESSION GENERALE D’ UNE FONCTION LOGIQUE


? 1ere forme canonique (disjonctive)
S est une somme de produits des variables d’entrée qui
donnent S=1. Chaque produit est appelé minterme

? 2e forme canonique (conjonctive)


S est un produit de sommes. Chaque somme est appelé
maxterme

51
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

3. EXPRESSION GENERALE D’ UNE FONCTION LOGIQUE

52
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

3. EXPRESSION GENERALE D’ UNE FONCTION LOGIQUE

53
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

3. EXPRESSION GENERALE D’ UNE FONCTION LOGIQUE

54
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

4. Les propriétés de l’Algèbre de BOOLE


4.1. THEOREMES GENERAUX

55
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

4. Les propriétés de l’Algèbre de BOOLE


4.1. THEOREMES GENERAUX

56
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

4. Les propriétés de l’Algèbre de BOOLE


4.1. THEOREMES GENERAUX

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

4. Les propriétés de l’Algèbre de BOOLE


4.3. Application de DE MORGAN:
Réaliser les fonctions suivantes

A partir de NAND à 2 entrées : y=x


A partir de NOR à 2 entrées : y=x
A partir de NAND à 2 entrées :

A partir de NOR à 2 entrées :

A partir de NAND à 2 entrées : S = A.B + AB


58
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

5. SIMPLIFICATION D’UNE FONCTION LOGIQUE

On cherche ici à obtenir une expression logique


comportant un nombre minimal de termes, ainsi
qu’un nombre minimal de variables dans chaque
terme dans le but de simplifier la réalisation
matérielle.

59
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

5. SIMPLIFICATION D’UNE FONCTION LOGIQUE

5.1. Simplification algébrique

On fait appel aux théorèmes généraux et aux


identités remarquables (formules élémentaires).
Le principe consiste à
E Regroupement des termes ayant des variables
communes et mises en facteur

E Réplication de termes existants


E Suppression de termes superflus

60
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

5. SIMPLIFICATION D’UNE FONCTION LOGIQUE

5.1. Simplification algébrique

61
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

5. SIMPLIFICATION D’UNE FONCTION LOGIQUE

5.1. Simplification par le tableau KARNAUGH

Le tableau de Karnaugh est une forme particulière


de la table de vérité. Il comprend 2n cases, n étant
le nombre de variables d'entrées de la fonction
considérée. Dans chaque case est inscrite la valeur
de la sortie.
Les variables sont disposées selon le code GRAY ou
code binaire réfléchi.
Particularité du TK:
Lorsque l'on passe d'une case à la case adjacente,
une seule variable change.

62
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

5. SIMPLIFICATION D’UNE FONCTION LOGIQUE

5.1. Simplification par le tableau KARNAUGH

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

5. SIMPLIFICATION D’UNE FONCTION LOGIQUE

5.1. Simplification par le tableau KARNAUGH


Simplification : Pour exprimer la sortie S:
AEffectuer des groupements de cases adjacentes
successivement contenant des 1.
A La taille d’un groupe est une puissance de 2k (…
8,4,2,1...). On cherche toujours le groupement maximal.
A Le résultat d’un groupement est le produit des
variables constantes( qui ne changent pas).
A Le résultat final est la somme des résultats des
groupements.
A Une même case peut appartenir à deux groupements
différents.
64
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

5. SIMPLIFICATION D’UNE FONCTION LOGIQUE

5.1. Simplification par le tableau KARNAUGH


Exemples: Somme de produit

S = A.C + B.C

65
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

5. SIMPLIFICATION D’UNE FONCTION LOGIQUE

5.1. Simplification par le tableau KARNAUGH


Exemples: Produit de somme

(
S = ( A + C ). B + C )
66
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

5. SIMPLIFICATION D’UNE FONCTION LOGIQUE

5.1. Simplification par le tableau KARNAUGH


Exemples:

67
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

5. SIMPLIFICATION D’UNE FONCTION LOGIQUE

5.1. Simplification par le tableau KARNAUGH


Exemples:

68
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

5. SIMPLIFICATION D’UNE FONCTION LOGIQUE

5.1. Simplification par le tableau KARNAUGH


Exemples:

69
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

5. SIMPLIFICATION D’UNE FONCTION LOGIQUE

5.2. Diagramme temporel

70
Synthèse d’un décodeur 7 segments

Enseignes et afficheurs à LED ⏐ Synthèse de circuits


combinatoires
Synthèse d’un décodeur 7 segments

Enseignes et afficheurs à LED ⏐ Synthèse de circuits


combinatoires
Synthèse d’un décodeur 7 segments

Enseignes et afficheurs à LED ⏐ Synthèse de circuits


combinatoires
Synthèse d’un décodeur 7 segments

Enseignes et afficheurs à LED ⏐ Synthèse de circuits


combinatoires
Synthèse d’un décodeur 7 segments

Enseignes et afficheurs à LED ⏐ Synthèse de circuits


combinatoires
Synthèse d’un décodeur 7 segments

Enseignes et afficheurs à LED ⏐ Synthèse de circuits


combinatoires
Synthèse d’un décodeur 7 segments

Enseignes et afficheurs à LED ⏐ Synthèse de circuits


combinatoires
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

6. TECHNOLOGIE DES CIRCUITS LOGIQUES

Exemples de circuits logiques

PORTES OU PORTES NAND

SN 7432 SN 7400

78
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

6. TECHNOLOGIE DES CIRCUITS LOGIQUES

Les circuits intégrés Numériques (logiques) sont classés suivant


leur technologie de fabrication:

-Famille TTL (Transistor Transistor Logic) : fabriqués avec des


transistors bipolaires;

-- Les familles CMOS : Elles sont fabriquées à base de transistor


CMOS;

-Les familles BiCMOS : Ces familles combinent les avantages des


technologies Bipolaires et CMOS.

- Les familles Low Voltage : Ce sont des familles CMOS ou BiCMOS


fonctionnant avec une faible tension d'alimentation.

79
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

6. TECHNOLOGIE DES CIRCUITS LOGIQUES

E FAMILLE TTL (TRANSISTOR TRANSISTOR LOGIQUE)

80
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

6. TECHNOLOGIE DES CIRCUITS LOGIQUES

E FAMILLE CMOS (COMPLEMENTARY MOS)

81
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

6. TECHNOLOGIE DES CIRCUITS 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

6. TECHNOLOGIE DES CIRCUITS LOGIQUES

83
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

6. TECHNOLOGIE DES CIRCUITS LOGIQUES

Une famille logique est caractérisée aussi par ses paramètres


électriques :

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.

Courants : (par convention, les courant entrant sont comptés positifs,


et les sortant négatifs)
• I OH : Courant de sortie maximal à l’état haut.
• I OL : Courant de sortie maximal à l’état bas.
• I IH : Courant d’entrée maximal à l’état haut.
• I IL : Courant d’entrée maximal à l’état bas.
84
ALGEBRE DE BOOLE ET FONCTIONS LOGIQUES

6. TECHNOLOGIE DES CIRCUITS LOGIQUES

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

6. TECHNOLOGIE DES CIRCUITS LOGIQUES

Caractéristiques de quelques circuits

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.

? Pour une combinaison des variables d’entrée , l’état de


la sortie est unique.
88
LES SYSTEMES COMBINATOIRES

1.2. Synthèse d’un système combinatoire

Considérons un cahier de charge d’un système


combinatoire. La réalisation du système passe par la
maîtrise et la compréhension du problème posé et sa
traduction en circuit logique.

Une procédure est généralement définie pour mener


Correctement l’étude.

89
LES SYSTEMES COMBINATOIRES

1.2. Synthèse d’un système combinatoire

90
LES SYSTEMES COMBINATOIRES
1.3. Exemple

Soit une lampe L commandée par deux interrupteurs a

et b. Le fonctionnement est le suivant:

? a relâché et b relâché L est éteinte


? a appuyé et b relâché L s’allume
? a relâché et b appuyé L s’allume
? a appuyé et b appuyé L s’ éteint

91
LES SYSTEMES COMBINATOIRES

2. LES CIRCUITS COMBINATOIRES


Dans le cas d’un traitement d’informations binaires
plusieurs opérations sont nécessaires parmi celles-ci
on peut noter : le codage et le décodage
( transposition de données d’un code à un autre ), le
multiplexage ( aiguillage des données ) etc., A cet effet
il a été conçu pour ces opérations des circuits
combinatoires spécialisés.

92
LES SYSTEMES COMBINATOIRES
2.1. LE CODEUR :

Le codage ou l’encodage est une opération


transformant une information présente en entrée
sous code 1 en la même information en sortie en
code binaire.

Généralement, un codeur dispose de 2 n voies


d’entrées dont une seule est active à la fois et de n
sorties

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

G est une entrée de validation. Le décodeur est valide


si G=1.

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.

Exemple : transcodeur Décimal / Gray

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

Toute fonction logique de N variables est réalisable


avec un multiplexeur de 2N -1 vers 1 et un inverseur

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

Multiplexeur : réalisation de fonctions:


Toute fonction logique de N variables est réalisable avec
un multiplexeur de 2N vers 1

Principe:
Ø Rappeler l’équation du mux considéré,
Ø choisir les sélecteurs

Ø Ecrire l’équation du mux ou la table de vérité avec les


variables de la fonction.
Ø Par Identification avec la fonction donner les valeurs
des entrées.

105
LES SYSTEMES COMBINATOIRES
On peut aussi construire des multiplexeurs complexes avec
plusieurs multiplexeurs à 2 entrées (attention aux délais).

Multiplexeur à quatre entrées


conçu avec trois multiplexeurs à
deux entrées.

f = S1 (S 0ω0 + S0ω1 ) + S1 (S 0ω2 + S0ω3 )

On a besoin de 2n _ 1 multiplexeurs à 2 entrées pour faire un


multiplexeur à 2n entrées de données.
106
LES SYSTEMES COMBINATOIRES

Exemple de multiplexeur du commerce

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

Addition de mots de 4 bits

Rque: On peut réaliser aussi l’additionneur à partir de


portes logiques de base.

112
LES SYSTEMES COMBINATOIRES

2.6. Le Comparateur
2.6.1.Comparateur élémentaire

113
LES SYSTEMES COMBINATOIRES

2.6.2. Comparaison de nombre à n éléments binaires:

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:

Réalisation à partir de comparateurs à 2 bits et


logique d’interprétation.

b1 a1 b0 a0

COMP ARA TEUR COMP ARA TEUR


ELEMEN TAIRE ELEMEN TAIRE
DE RAN G 1 DE RAN G 0

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

Réalisation à partir d’un circuit intégré à 4 bits d’entrée

117
LES SYSTEMES COMBINATOIRES

Réalisation à partir d’un circuit intégré à 4 bits d’entrée

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

Les n entrées de sélection ou de commande


permettent de sélectionner une opération parmi 2n.

119
LES SYSTEMES COMBINATOIRES

120
LES SYSTEMES COMBINATOIRES

Fonctionnement UAL à 4 fonctions

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

1. Présentations des circuits séquentiels


2. Les Bascules
3. Les compteurs
4. Les registres
5. Les mémoires

123
Présentation des circuits séquentiels

? Les circuits séquentiels sont des systèmes qui pour


l’exécution du présent état, tiennent compte de leur état
antérieur. Ce sont des systèmes à mémoire. Ils font
intervenir les notions d’ordre et de durée.

? La sortie dépend des variables d’entrée et de l’état


antérieur

? Pour une même combinaison des entrées, la sortie peut


avoir deux états différents.

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

Une bascule est un circuit de mémorisation qui


pour une combinaison d'états logiques de ses
entrées présente sur sa sortie deux états
complémentaires stables.
On note des bascules asynchrones et des bascules
synchrones.

126
La bascule

1.La Bascule asynchrones R S

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:

Une bascule synchronisée peut être déclenchée sur


le front montant sur le front descendant ou sur état de
l'impulsion d'horloge.

129
La bascule
2. La bascule synchrones R S H

Mode de déclenchement d’une bascule synchrone:

130
La bascule
2. La bascule synchrones R S H
Schéma
Symbole

Table de vérité Chronogramme

131
La bascule

3. LA BASCULE D edge triggered

La sortie prend l'état de l'entrée D après l'impulsion


d'horloge. Ceci permet par exemple de synchroniser le
transfert de données en parallèle.

Table de vérité Chronogramme

132
La bascule
4. LA BASCULE D à VERROUILLAGE

Cette bascule ne possède pas de circuit détecteur de front


et la sortie Q prend donc l'état de l'entrée D tant que
l'horloge est à l'état haut.
Elle est commandée sur état

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

La bascule T a sa sortie qui change d'état à chaque front


descendant de l'horloge . Cette bascule est un diviseur par 2.
Exemple (en technologie TTL) : 74 AS 303.
La bascule T comprend deux bascules RSH avec un inverseur à
porte nand. L'inverseur a un temps d'accès plus rapide que le circuit
RSH Maître.
L’entrée T signifie que la bascule est active sur les fronts
descendants du signal d'entrée.

135
La bascule

7. Les entrées de forçage

Les bascules disposent aussi d’entrées ASYNCHRONES R


et S actives à l’état haut (ou bas), et prioritaires sur le
fonctionnement synchrone. Cela veut dire que si une action
asynchrone prioritaire est en cours les fronts d’horloge ne
sont plus pris en compte et la table de vérité n’est plus
valable et est remplacée par la suivante :

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

Un compteur est un système séquentiel qui permet de


dénombrer des impulsions appliquées sur son entrée
d' horloge (clk : clock ) .

E Il restitue donc sur ses sorties le nombre des


impulsions comptées sous forme binaire .

E Le nombre d’impulsions ou d’événements dénombré par


le compteur est appelé modulo m.

E On distingue les compteurs asynchrones et les


compteurs synchrones.

140
Comptage asynchrone binaire

q La base du compteur asynchrone est le mode


toggle des bascules .
q Les bascules sont en cascade. La sortie de la
première bascule i est l’horloge de la bascule i+1.

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

R = Q2Q1Q0 + Q2Q1Q0 = Q2Q1


146
Comptage asynchrone binaire

Compteur chiffre pair (0,2,4,6)

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

L’action sur une entrée de forçage (RAU) raccourcit le


cycle du compteur de la valeur du poids de cette
bascule.

148
Comptage asynchrone binaire

149
Comptage intégré asynchrone
Les compteurs intégrés:
-Le compteur intégré 7490: Technologie TTL

Ce circuit comporte deux sections. Une section diviseur par 2 et une


section diviseur par 5. Il est possible soit de les utiliser séparément, soit
de les réunir ensemble pour obtenir un compteur BCD modulo 10 ou bien
d'un diviseur par 10

Brochage Table de fonction

150
Comptage intégré asynchrone
Modulo 10

Modulo 100

151
Comptage synchrone binaire

Les bascules ont la même horloge


Avec n bascules, on réalise un compteur modulo
2n au maximum .
Plusieurs méthodes sont disponibles dont celle
de MARCUS.
Les entrées sont exprimées en fonction des
sorties souhaitées grâce aux tables de
transition des bascules.

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

t00 t01 t10 t11


D 0 1 0 1

153
SYNTHESE DES COMPTEURS
METHODE DE MARCUS

Technique de synthèse:

E Choix du nombre et du type de bascule :


Le nombre de bascule peut dépendre aussi du plus
grand événement à dénombrer

E Calcul des fonctions d’entrées (avec table de


transition)

E Vérification des états n’appartenant pas au cycle


(auto initialisation)

Exemple : comptage 0, 3, 2, 7, 4, 0 ...

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

Exemples d’utilisation du compteur synchrone 74162

Compteur modulo 5 Compteur modulo 100

162
Les registres

Un registre est une mémoire de 1 mot de N bits. Il


peut être constitué d'une association de N bascules
D ou JK.
On note deux types de registres:

ELes registres de mémorisation,


ELes registres de décalage

163
Les registres

Registre de mémorisation

Un registre permet la mémorisation de n bits. Il est


donc constitué de n bascules, mémorisant chacune
un bit. L'information est emmagasinée suite à un
signal de commande W ; puis elle est disponible en
lecture après l’activation de R.

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

Registre entrée série - sortie série


Décalage à droite

Décalage à gauche

166
Les registres

Registre entrée série– sortie parallèle

Ce type de registre permet de transformer un


codage temporel (succession des bits dans le
temps) en un codage spatial (information stockée
en mémoire statique).

167
Les registres

Registre (entrée série ou parallèle) – sortie série

Si X = 1 l'entrée parallèle est inhibée et l'entrée


série est validée.
Si X = 0 l'entrée série est bloquée par contre le
chargement par l'entrée parallèle est autorisé
168
Les registres
Registre entrée série ou parallèle – sortie parallèle

La commande permet de sélectionner le mode de chargement et


d'inhiber le signal d'horloge en cas de chargement parallèle. Si
X = 0 nous avons /Pr = /Cr = 1, ce qui garantit le fonctionnement
normal des bascules. Si X = 1 alors selon l'état de chacune des
entrées nous avons

169
Les registres

Registre universel

170
Les mémoires

Une mémoire est un dispositif capable d’emmagasiner


puis de restituer une information. L'unité d’information
(bit, octet, etc.) s’appelle «point mémoire » ou «cellule»

Schéma fonctionnel d’une mémoire

171
Les mémoires
Exemple de mémoire à bascule D

172
Les mémoires

1. Classification:

E Classification par mode opératoire

Mémoires à écriture et lecture : mémoires vives (volatiles)


• Mémoires statiques (SRAM)
• Mémoires dynamiques (DRAM)

Mémoires à lecture seule : mémoires mortes ou ROM (Read-


Only Memories) Mémoires permanentes)

• Procédé d'inscription inaccessible à l'utilisateur : ROM


• Procédé d'inscription accessible à l'utilisateur :
- PROM (Programmable ROM) : inscription irréversible
- REPROM (REprogrammable ROM) : inscription réversible

173
Les mémoires

E Performances des mémoires

- Capacité:
Nombre de bits ou de mots binaires mémorisés

- Temps d'accès / temps de cycle


• Temps d'accès : temps écoulé entre une demande de
lecture et la présence de l'information sur la sortie de la
mémoire: dépend du type d'accès
• Temps de cycle : durée minimale à respecter entre
deux accès à la mémoire

- Consommation

174
Les mémoires

2. Structure générale d’une mémoire

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.

Ex1: Réalisation d’une mémoire de 1Kx16bits à partir d'une mémoire


élémentaire de 1*4bits (extension de la longueur des mots).
on utilise 4 boîtiers pour avoir:
- 10 bits d’adresse ( A0 à A9) 1Kmot; (nbre de mots = 2 nbre de bits d’adresse
- 16 bits de données D0 à D15

176
Les mémoires

3. Extension de capacité : Ex2: Extension du nombre de mots.

Réalisons une mémoire de 4 Mo à l'aide de 4 boîtiers mémoires de 1 Mo


chacun. Une mémoire de 1Mo possède 20 entrées adresse, A0...A19.
Or, pour adresser 4 Mo il faut 22 entrées adresse, A0...A21.

Les 20 premiers bits d'adresse (A0...A19) servent d'adresser le même


octet au sein des 4 boîtiers. Les deux bits d'adresses restant (A20 et
A21) permettent à l'aide d'un décodeur 1 parmi 4 de sélectionner un
boîtier.

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 Quelques Circuits à architecture programmable


o Circuit PAL(Programmable Array Logic) où seules les fonctions
ET sont programmables
o Circuit FPLA (Field Programmable Logic Array) est un circuit PAL
dans lequel les fonctions ET et OU sont programmables
o Cirduit CPLD (Complex Progrmmable Logic Device) est un circuit
logique programmable complexe
o Cirduit EPLD (Erasabe Progrmmable Logic Device) est un circuit
logique programmable et effeçable
o Cirduit FPGA (Field Progrmmable Gate Array) est un réseau de
ciruits programmables à la demande
180
Les circuits FPGA
q Les circuits logiques programmables de type FPGA sont de plus en
plus utilisés dans la conception des circuits numériques.

q Matrices de fonctions logiques (cellules logiques SRAM)

q Programmation des interconnexions (reconfiguration de l’architecture)


in situ

q Reprogrammables à volonté

q Temps de développement très court.

q Grande souplesse pour des évolutions rapides à moindre coût

181
Les circuits FPGA
q Densités d’intégration pouvant atteindre plus de 10 millions de portes
logiques.

q Possibilités de traitement parallèle des données (augmentation de la


vitesse de calcul).

q Blocs logiques configurables constitués d’arbres de multiplexeurs


connectés à des points mémoires.

q Capacité limitée par le nombre de blocs logiques configurables (non la


complexité).

182
Carte DE0 NANO

Specifications FPGA
• Altera MAX II EPM2210F324 FPGA device

I/O Devices
• Built-in USB Blaster for FPGA configuration

Switches, LEDs, Displays, and Clocks


• 1 DIP switche
• 4 pushbutton switches
• 2 red user LEDs,
• 2 yellow user LEDs,
• 2 blue user LEDs,
• 2 green user LEDs
• 50-MHz oscillator for clock sources
• Powered by USB

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

q VHDL signifie VHSIC Hardware Description Language


q VHSIC = Very High Speed Integrated Circuit.

q VHDL est un langage international défini par la norme IEEE qui


permet de décrire de manière non ambiguë le comportement
d’un circuit ou d’un système numérique.

q Les objectifs du langage VHDL


o Conception de circuits intégrés reconfigurables ou non (ASIC, FPGA…) :
SYNTHESE
o Mise au point de modèle de simulations numériques (circuits virtuels) :
MODELISATION
VHDL introduction

q Ce langage à la différence des autres langages informatiques,


n’est pas destiné à être exécuté, l’aboutissement étant la
synthèse de circuits logiques
q La synthèse est le processus qui permet d’obtenir
automatiquement une organisation matérielle à partir du
codage des spécifications dans un langage de haut niveau
(VHDL, VERILOG, VHDL-AMS, VERILOG-AMS).

q Le langage est capable de DECRIRE


o des composants (ENTITY + ARCHITECTURE)
o des comportements CONCURRENTS ( // )
o des comportements séquentiels
Méthodologie de conception des FPGA (CPLD)
Méthodologie de conception des FPGA (CPLD)

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 signifie VHSIC Hardware Description Language

● VHSIC = Very High Speed Integrated Circuit

● 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

● Les objectifs du langage VHDL


● Conception de circuits intégrés reconfigurables ou non (ASIC, FPGA…) : SYNTHESE
● Mise au point de modèle de simulations numériques (circuits virtuels) : MODELISATION

Enseignes et afficheurs à LED ⏐ Synthèse de circuits


combinatoires
VHDL : Les concepts de base

Unités de conception : deux parties dépendantes (obligatoires)


● L’entité (Entity) qui représente la vue extérieure du composant
o Déclare les modes des ports en entrée et/ou sortie (in, out, inout, buffer)
o IN port à lecture seule
o OUT port à écriture seule
o INOUT port à lecture/écriture
o BUFFER écriture/lecture sur un port

● L’architecture (Architecture) qui décrit le fonctionnement du composant


o Représente la vue interne du composant
o Décrit le comportement de la fonction à synthétiser
o Décrit les signaux internes, les composants, les constantes, les types d’objets, les
déclarations de sous programmes dans la partie dite déclarative (début)
o A une entité peut correspondre plusieurs architectures

Enseignes et afficheurs à LED ⏐ Synthèse de circuits


combinatoires
Structure générale d’un programme VHDL

Entity Nom_entite is
-- déclarations de paramètres, ports..
Begin

End Nom_entite;

Architecture Nom_archi of Nom_entite is


-- Zone déclarative...
Begin
--instructions concurrentes...
P1: process
-- déclarations...
Begin
--instructions séquentielles...
end process P1;
-- instructions concurrentes...
P2: process
-- déclarations...
Begin
--instructions séquentielles...
end process P2;
-- instructions concurrentes...
End Nom_archi ;
Structure générale d’un programme VHDL

Exemple :
Multiplexeur 2 vers Library ieee;
Use ieee.std_logic_1164.all;
Déclaration des
bibliothèques
1 Use ieee.numeric_std.all;

-- multiplexeur 2 vers 1 (commentaire)

Entity mux2 is -- commentaire


Commentaires en VHDL
Port( e1, e2 : in std_logic;
e1 sel : std_logic; -- par défaut le mode in est pris
en compte
e2 s s : out std_logic -- mode out à préciser

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.

● Les variables (VARIABLE) objet dont la valeur peut changer par


affectation au cours de la simulation. Une variable n’existe que
dans un PROCESS.

● Les signaux (SIGNAL) désignent des signaux internes qui ne


sortent pas du composant.

● Les fichiers (FILE) permettent l'échange de données entre


l'extérieur et le simulateur VHDL.
Objets et types de base
Quelques exemples

CONSTANT cte : INTEGER :=10;

VARIABLE vari : BIT_VECTOR(3 DOWNTO 0):= "0000";

VARIABLE n : INTEGER range 0 to 65535;

SIGNAL sig : std_logic;

SIGNAL a : bit_vector (3 downto 0);

FILE fich : TEXT IS IN "entree.txt";


Objets et types de base
Quelques exemples

Bit : peut prendre les valeurs `0´ ou `1´.

Bit_vector : groupe de bits défini entre " "

Boolean: peut prendre les valeurs true ou false.

Integer : Valeur entière codée sur 32 bits (de - 2.147.483.648 à 2.147.483.647)

Std_logic, std_ulogic : Similaires au bit mais avec 9 états possibles.

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

VHDL manipule six opérateurs hiérarchisés

● 1 Opérateurs divers : **, abs, not


● 2 Opérateurs de multiplication : *, /, mod, rem
● 3 Opérateurs d’addition : +, -, &
● 4 Opérateurs relationnels : =, /=, < , <= , >, >=
● 5 Opérateurs de décalage : sll, srl , sla,sra,rol,ror
● 6 Opérateurs logiques : and , or, nand, nor, xor, xnor
Littéraux en VHDL
Les littéraux (valeurs explicites)

● Caractères : ‘1’, ‘c’,‘b’,‘#‘


● Chaînes : "10110100", "bonjour", "x@&"
● Chaînes de bits : B"0010_1101", X "2F", O "265"
● Décimaux : 27, -5, 4e3, 76_562, 4.25
● Basés : 2#1001#, 8#65_07, 16#C5#e2

● Une chaine de bit est représenté par un vecteur de bits


● std_logic_vector( 7 downto 0); -- bit poids fort => poids faible
● std_logic_vector( 0 to 7); -- bit faible poids => poids fort
Tableaux en VHDL
Les tableaux (ARRAY)
● Les tableaux sont des collections de données de même type
● Les données sont rangées suivant un index (entier) ou des
énumérés
type bus is array (0 to 31) of bit;
type COULEURS is (ROUGE, JAUNE, BLEU, VERT, ORANGE);
-- type énuméré
TYPE memoire IS ARRAY(0 TO 31) OF STD_LOGIC_VECTOR(7 DOWNTO 0);
-- déclaration du tableau mémoire
type TABLEAU1 is array(0 to 31) of bit_vector(7 downto 0);
type TABLEAU2 is array(0 to 31, 0 to 7) of bit;

SIGNAL Tab_Mem: memoire; -- création d’un tableau de type memoire


Signal S1 : TABLEAU1;
Signal S2 : TABLEAU2;
Begin
S1(0) <="01101011 »; -- Modification des bits de la première ligne
S1 (31)(5) <= '1'; -- Modification du bit la 32ieme ligne 6ime colonne de S1
S2(4,7) <= '0'; -- Modification du bit la 5ieme ligne 8ime colonne de S2
Concepts de base du VHDL : instructions
concurrentes

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

● Connexion de deux signaux


● Utilise l’opérateur <=

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 ;

● Affectation conditionnelle WHEN / ELSE


o C’est une instruction qui a une seule cible mais peut avoir plusieurs expressions.
o Les conditions sont évaluées séquentiellement, si une condition est vraie alors
l’expression correspondante est exécutée.
Affectation conditionnelle
signal <= signal1 when expresion1 else
………
signal2 when expresion2 else
signal3 ;

● Affectation conditionnelle WHEN / ELSE


o C’est une instruction qui a une seule cible mais peut avoir plusieurs expressions.
o Les conditions sont évaluées séquentiellement, si une condition est vraie alors
l’expression correspondante est exécutée.

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;
);

end mux2; end archi_mux2;


Affectation sélective with expression select
signal <= signal1 when valeur1,
signal2 when valeur2,
signal 3 when others ;

● Affectation sélective WITH ……SELECT


o C’est une affectation d’une valeur suivant l’état de l’expression testée.
o Exemple : Décodeur 7 segment

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);

ARCHITECTURE Structure OF Decodeur_7seg IS


COMPONENT Bcd7Segment
PORT (data : IN STD_LOGIC_VECTOR(3
DOWNTO 0); LIBRARY ieee;
HEX : OUT STD_LOGIC_VECTOR(0 TO 6)); USE ieee.std_logic_1164.all;
END COMPONENT;
ENTITY Decodeur_7seg IS
BEGIN
PORT (SW : IN STD_LOGIC_VECTOR(15
LEDR <= SW; DOWNTO 0);
digit3: Bcd7Segment PORT MAP (SW(15 DOWNTO 12), LEDR : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
HEX3);
-- red LEDs
digit2: Bcd7Segment PORT MAP (SW(11 DOWNTO 8),
HEX2); HEX3, HEX2, HEX1, HEX0 : OUT
STD_LOGIC_VECTOR(0 TO 6));
digit1: Bcd7Segment PORT MAP (SW(7 DOWNTO 4),
HEX1); -- 7-segs
digit0: Bcd7Segment PORT MAP (SW(3 DOWNTO 0), END Decodeur_7seg ;
HEX0);
END Structure;
Génération conditionnelle
● Génération conditionnelle : GENERATE
label : if (condition) generate
o Permet l’exécution conditionnelle d’instructions concurrentes
-- suite d’instructions concurrentes
o Permet l’exécution itérative d’instructions concurrentes
o Les instructions ne seront prises en compte que si la condition est vraie. end generate label;
label : for i in 0 to x generate
o s’utilise avec for (itérative) ou if (conditionnelle)
-- suite d’instruction concurrente
End generate label ;
Génération conditionnelle
label : if (condition) generat
-- suite d’instructions concur

● 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

Logique séquentielle : Mot clè PROCESS


q Les instructions séquentielles du VHDL sont très évoluées à
l’image des langages de haut niveau.
o On les utilise souvent dans un process, les instructions s’exécutent suivant l’ordre
d’écriture.
o Plusieurs process peuvent s’exécuter en parallèle dans une même architecture;
o le déroulement est SEQUENTIELLE (ordre d’écriture des instructions).
o Un process peut contenir des parties combinatoires, des parties séquentielles.
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 SPECIFIQUE ( pas de when/
else par exemple)
o Les signaux sont mis à jour uniquement à la fin du process
Process Process Process(a,b)
begin begin begin
SYNTHAXE q <= d; c <= a and b; c <= a and b;
wait until Reloj = ‘1’; wait on a, b; end process;
end process; end process;
Les Process
Les instructions séquentielles du VHDL sont très évoluées à
l’image des langages de haut niveau :
o Utilisation d’un process ou un sous-programme

o Déroulement séquentiel (ordre d’écriture des instructions)

o Possibilité d’exécution de plusieurs Process en parallèle

o Un Process peut contenir des parties combinatoires et des parties séquentielles

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

o Les signaux sont mis à jour uniquement à la fin du Process


Les Process
Les règles de fonctionnement :
o Boucle infinie

o Synchronisation par des points d’arrêt

Process (S1, S2) Process


Begin Begin
…............
SYNTHAX …............ Wait …....;
E …............
end process; end process;
Les Process
L’instruction séquentielle wait peut prendre plusieurs formes :
o wait on signal
-- liste de
o wait for temps SYNTHAX sensibilité
E wait on S1, S2;
o wait until conditions -- délai
wait for 100ns;
o wait on signal until conditions for temps
-- conditions
wait until ck = ‘1’;

-- 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;

o Permet de sélectionner une séquence d’instructions en fonction de la valeur d’une


expression.
o Tous les cas doivent être traités, on utilisera ainsi la directive when others pour lister
les différents cas possibles.
o Souvent utilisée pour la description de machines d’état ou toute fonction de type
table de vérité.
Instructions de contrôle

●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;

o Possibilité d’utiliser Exit


-- boucle while
etiquette: WHILE conditions LOOP – boucle tant que
-- instruction répétitive
…..........
END LOOP etiquette;

-- boocle générale
etiquette: LOOP – boucle infinie
-- instruction répétitive
…..........
END LOOP etiquette;
Synthèse des bascules

● Bascule RS

Enseignes et afficheurs à LED ⏐ Synthèse de circuits


combinatoires
Synthèse des bascules
● Bascule RS ARCHITECTURE Archit OF BasculeRS IS
o Activé sur front montant de l'horloge SIGNAL Sr, Ss, Qa, Qb: STD_LOGIC ;
(Ck)
BEGIN
PROCESS(Ck, R, S) -- liste de sensibilité

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

ENTITY BasculeRS IS Sr <= R;


PORT (Ck, R, S : IN Ss <= S;
STD_LOGIC; Qa <= NOT ( Sr OR Qb);
Q : OUT Qb <= NOT ( Ss OR Qa);
STD_LOGIC); END IF;
END BasculeRS; END PROCESS;
Q <= Qa;
END Archit;
Synthèse des bascules
● Bascule D
o La sortie Q prend l'état de l'entrée D sur front montant de l'horloge (Ck)
Synthèse des bascules
● Bascule D
o La sortie Q prend l'état de l'entrée D sur front montant de l'horloge (Ck)

ARCHITECTURE Structural OF BasculeD IS


SIGNAL Qa: STD_LOGIC ;
Library ieee; BEGIN
Use PROCESS(Ck, D) -- liste de sensibilité
ieee.std_logic_1164.all;

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

ARCHITECTURE Structural OF BasculeD IS


SIGNAL Qa: STD_LOGIC ;
BEGIN
PROCESS(Ck, D, R, S) -- liste de
Library ieee;
Use ieee.std_logic_1164.all; sensibilité
BEGIN
ENTITY BasculeD IS IF R = ‘1’ THEN Qa <= ‘0’;
ELSIF S = ‘1’ THEN Qa <= ‘1’;
PORT (Ck, D, R, S : IN
STD_LOGIC; ELSIF Ck’EVENT AND Ck = '1’
THEN Qa <= D;
Q : OUT
-- validation du front montant
STD_LOGIC);
ELSE Qa <=Qa ;
END BasculeD;
END IF;
END PROCESS;
Q <= Qa;
END Structural;
Synthèse des bascules
● Bascule JK

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

ARCHITECTURE Structural OF BasculeD IS


SIGNAL Qa: STD_LOGIC ;
Library ieee; BEGIN
Use ieee.std_logic_1164.all; PROCESS(Ck, D) -- liste de sensibilité

ENTITY BasculeD IS BEGIN


PORT (Ck, D : IN IF Ck'event and Ck = '1' then -- validation
STD_LOGIC; du front montant
Qa <= D;
Q : OUT
STD_LOGIC); ELSE Qa <=Qa ;
END IF;
END BasculeD;
END PROCESS;
Q <= Qa;
END Structural;
Synthèse des regitres
● Registre à décalage série parallèle
ARCHITECTURE Structural OF RegistreSP
IS
COMPONENT BasculeD
PORT (Ck, D : IN STD_LOGIC;
Library ieee; Q : OUT STD_LOGIC);
Use ieee.std_logic_1164.all;
END COMPONENT ;
ENTITY RegistreSP IS
SIGNAL Qa, Qb, Qc, Qd: STD_LOGIC ;
PORT (Ck, ES : IN STD_LOGIC;
BEGIN
SS : OUT STD_LOGIC;
U1: BasculeD PORT MAP (Ck, ES, Qa);
SP : OUT U2: BasculeD PORT MAP (Ck, Qa, Qb);
STD_LOGIC_VECTOR (0 TO 3));
U3: BasculeD PORT MAP (Ck, Qb, Qc);
END RegistreSP; U4: BasculeD PORT MAP (Ck, Qc, Qd);
SP(0) <= Qa; SP(1) <= Qb; SP(2) <=
Qc; SP(3) <= Qd;
END Structural;
Application au contrôle d’une matrice à LED

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 Output pins

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

● La librairie offre plusieurs fonctions permettant de manipuler plus simplement la matrice.


Présentation de la matrice à LED
Présentation de la matrice à LED
Matrice 32x32
● 1024 Led RGB rangées sous forme de matrice 32X32
● Résolution : 32 x 32 pixels, 3 couleurs par pixel (rouge, vert, bleu)
● Distance entre deux pixels : 6mm
● Longueur d’onde :
o Rouge : 625±5nm
o Vert : 520±5nm
o Bleu : 470±5nm
● Tension d’alimentation : 5V DC (régulé)
● Consommation max : 4A
● Dimensions: 190.5mm x 190.5mm x 14mm
● Nécessite 13 pins (6 données et 7 contrôle) et une alimentation de 5V (4A
minimum suggérée)

● Contrôle par Microcontrôleur et carte FPGA


Présentation de la matrice à LED
Matrice 32X32(fonctionnement)

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;

architecture bhv of horloge is


constant clk_in_freq : integer := 50000000;
constant clk_out_freq : integer := 10000000;
constant OUT_PERIOD_COUNT : integer := (clk_in_freq /
clk_out_freq)-1;
begin
Contrôle de la Matrice à LED RGB
32x32
o Architecture de horloge.vhd
Process (clk_in , rst)
variable count : integer range 0 to OUT_PERIOD_COUNT;
begin
if( rst = '1') then
count := 0;
clk_out <= '0';

elsif(rising_edge( clk_in )) then

if( count = OUT_PERIOD_COUNT) then count := 0;


else count := count + 1;
end if;

if( count > OUT_PERIOD_COUNT / 2) then


clk_out <= '1';
else clk_out <= '0';
end if;

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

Architecture archi of scan_matrice is

signal ck_ser : std_logic;


signal ck_par : std_logic;
signal oe : std_logic;
signal count : std_logic_vector (9
downto 0);
signal ligne : std_logic_vector (3
downto 0);

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
o Architecture de scan_matrice.vhd
(suite)
elsif ( rising_edge( clk_in )) then

if( count = "1111111111") then


count <= (others => '0');
if ( ligne = "1111") then
ligne <= (others => '0');
else
ligne <= std_logic_vector( unsigned
( ligne ) + 1 );
end if;
else
count <= std_logic_vector( unsigned ( count ) +
1 );
end if;
end if;

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);

-- Génération des signaux de contrôle

matrice_ck_ser <= ck_ser and


clk_in;
matrice_ck_par <= ck_par and
clk_in;
matrice_oe_n <= not oe;
matrice_abcd <= ligne;

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

matrice_r1 <= ( count (0) xor


ligne (0)) and (not oe);
matrice_g1 <= ( count (1) xor
ligne (1)) and (not oe);
matrice_b1 <= ( count (2) xor
ligne (2)) and (not oe);
matrice_r2 <= ( count (0) xor
ligne (0)) and (not oe);
matrice_g2 <= ( count (1) xor
ligne (1)) and (not oe);
matrice_b2 <= ( count (2) xor
ligne (2)) and (not oe);

-- Génération des signaux de contrôle


matrice_ck_ser <= ck_ser and clk_in;
matrice_ck_par <= ck_par and clk_in;
matrice_oe_n <= not oe;
matrice_abcd <= ligne;

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

Architecture archi of scan_matrice is

signal ck_ser : std_logic;


signal ck_par : std_logic;
signal oe : std_logic;
signal count : std_logic_vector (10
downto 0);
signal ligne : std_logic_vector (3
downto 0);

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

if( count = "11111111111") then


count <= (others => '0');
if ( ligne = "1111") then
ligne <= (others => '0');
else
ligne <= std_logic_vector( unsigned
( ligne ) + 1 );
end if;
else
count <= std_logic_vector( unsigned ( count ) +
1 );
end if;
end if;

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
Chargement des données et génération des signaux de
contrôle
-- chargement des données de
couleurs
process( clk_in )
begin matrice_r1 <= data(0);
-- Gestion des adresses matrice_g1 <= data(1);
matrice_b1 <= data(2);
addr(0) <= count(0); matrice_r2 <= data(3);
addr(1) <= count(1); matrice_g2 <= data(4);
matrice_b2 <= data(5);
addr(2) <= count(2);
addr(3) <= count(3); -- Génération des signaux de
contrôle
addr(4) <= count(4);
addr(5) <= ligne(0); matrice_ck_ser <=
ck_ser and clk_in;
addr(6) <= ligne(1); matrice_ck_par <=
addr(7) <= ligne(2); ck_par and clk_in;
matrice_oe_n <= not
addr(8) <= ligne(3); oe;
matrice_abcd <= ligne;

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

1. Architecture de Von Neumann

Architecture de base des systèmes à microprocesseurs

!
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

Architecture de base des systèmes à


microprocesseurs

Les bus :
L’architecture Harvard est souvent utilisée dans :

• les processeurs numériques de signal (DSP) ;


• les microcontrôleurs, notamment les PIC de Microchip et les AVR d'Atmel.

277
Architecture des calculateurs

1. Architecture de Von Neumann

Architecture de base des systèmes à microprocesseurs

Mémoire de Mémoire de
programme donnée
(ROM) (RAM)

Unité de commande

microprocesseur

Unité Arithmétique et Logique

Coupleurs d’E/ Etc..


S
Horloge

Périphériques

278
Architecture des calculateurs

1. Architecture de base : Von Neumann

Architecture de base des systèmes à microprocesseurs

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

1. Architecture de base : Décodage d’adresse


La multiplicité des périphériques autour du microprocesseur oblige la présence d’un
décodeur d’adresse pour éviter les conflits (bus, sélection, ).

!
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

1. Architecture de base : Décodage d’adresse


La multiplicité des périphériques autour du microprocesseur oblige la présence d’un
décodeur d’adresse pour éviter les conflits (bus, sélection, ).
Exemple de cartographie mémoire
Espace adressable
$0003 du µP (65536@)

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

2. Les mémoires : différents types

q Mémoires Vives : RAM


o Volatile
o Stockage temporaire des données
o Temps de cycle court

q Mémoires mortes: ROM


o Non volatile
o Stockage permanente des données
o Mémoire à lecture seule.
o Type : ROM, PROM, EPROM, EEPROM FLASH EPROM

283
Architecture des calculateurs

2. Les mémoires : Mémoire cache


Une mémoire cache est motivée par l’écart de performance entre la vitesse du microprocesseur et
celle de la mémoire.
qProblèmes d’accès à la mémoire
o décodage des adresses et la lecture/écriture d’une donnée sont des étapes
difficiles à accélérer
o Le temps de cycle processeur décroît plus vite que le temps d’accès mémoire
o La mémoire n’est pas en mesure de délivrer des informations aussi rapidement
que le processeur est capable de les traiter

qSolutions : mémoire cache


o disposer une mémoire très rapide entre le microprocesseur et la mémoire
o SRAM de taille réduite (à cause du coût)
o stocker les informations les plus récentes ou les plus souvent utilisées par le
microprocesseur

284
Architecture des calculateurs

2. Les mémoires : Mémoire cache


le microprocesseur n’a pas conscience de sa présence et lui envoie toutes ses requêtes comme s’il
agissait de la mémoire principale

!
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) :

5-2 L’unité de traitement est le cœur du microprocesseur


üL’Unité Arithmétique et Logique (UAL)
!
üLe registre d'état est généralement composé de 8 bits à considérer
individuellement.On les appelle indicateur d’état ou flag ou drapeaux.
On peut citer par exemple les indicateurs de :
• retenue (carry : C)
• retenue intermédiaire (Auxiliary-Carry : AC)
• signe (Sign : S)
• débordement (overflow : OV ou V)
• zéro (Z)
• parité (Parity : P) 287
Architecture des calculateurs
BUS DE DONNEES
3. Microprocesseur : Architecture
Registre de données
Bus interne de données

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

BUS D’ADRESSES 288


Architecture des calculateurs
3. Microprocesseur : composants

q ALU : C'est un circuit complexe qui assure les fonctions:


o arithmétiques: addition et soustraction
o logiques: ET, OU, OU exclusif
o comparaison, décalage à droite ou à gauche, incrémentation,
décrémentation, mise à 1 ou à 0 d'un bit, test de bit.

q Bloc logique de de commande: Il organise l'exécution des instructions au


rythme d’une horloge. Il élabore tous les signaux de synchronisation
internes ou externes (bus des commandes) du microprocesseur

q Registre et décodeur d’instructions: Chacune des instructions à exécuter


est rangée dans le registre instruction dont le format est 24 bits. Le premier
octet ( 8 bits) est toujours le code de l'opération que le décodeur d'instruction
doit identifier.

q Pointeur de pile ou stack pointeur: C'est un registre compteur de 16 bits


qui contient l'adresse du sommet de la pile. La pile est externe au
microprocesseur. C'est une certaine partie de la mémoire RAM. Elle est
utilisée pour sauvegarder les contenus des différents registres, lors de l'appel
à un sous-programme ou lors de la gestion d'une interruption, par exemple.
289
Architecture des calculateurs
3. Microprocesseur : composants

q Registre de données: Ce registre de 8 bits est un registre tampon qui


assure l'interfaçage entre le microprocesseur et son environnement ou
inversement. Il conditionne le bus externe ou le bus interne des données.

q Registre d’adresses : Ce registre de 16 bits est un registre tampon qui


assure l' interfaçage entre le microprocesseur et son environnement. Il
conditionne le bus externe des adresses.

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

q Registre d’indexe : Le contenu de ce registre de 16 bits est une adresse. Il


est utilisé dans le mode d'adressage indexé
q Registres auxiliaires : Ils permettent de stocker le résultat des instructions
exécuter par l’ALU

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 :

q le CPI (Cycle Par Instruction) qui représente le nombre moyen de cycles


d’horloge nécessaire pour l’exécution d’une instruction pour un
microprocesseur donné.

q le MIPS (Millions d'Instructions Par Seconde) qui représente la puissance de


traitement du microprocesseur.

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

3. Microprocesseur : les accumulateurs

293
!
Architecture des calculateurs

3. Le microprocesseur : Cycle d’exécution d’une instruction


Le traitement d’une instruction se fait en 3 phases :
q Phase 1: Recherche de l'instruction
o Le PC contient l'adresse de l'instruction suivante
o Au bout d'un certain temps, le contenu de la case mémoire sélectionnée
est disponible sur le bus des données.
o L'instruction est stockée dans le registre instruction du processeur.

q Phase 2: Décodage de l'instruction et recherche de l’opérande


o L'unité de commande transforme l'instruction en une suite de commandes
élémentaires nécessaires au traitement de l'instruction.
o Si l'instruction nécessite une donnée en provenance de la mémoire,
l'unité de commande récupère sa valeur sur le bus de données.
o L’opérande est stockée dans un registre.

q Phase 3: Exécution de l'instruction


o Le micro-programme réalisant l'instruction est exécuté.
o Les drapeaux sont positionnés (registre d'état).
o L'unité de commande positionne le PC pour l'instruction suivante.
294
Architecture des calculateurs

3. Le microprocesseur : Le jeu d’instruction


Ensemble des opérations élémentaires que le microprocesseur pourra
exécuter. Il détermine architecture
Type d’instructions
Les instructions peuvent être classées en 4 groupes :
ü Transfert de données pour charger ou sauver en mémoire, effectuer des
transferts de registre à registre, etc…
ü Opérations arithmétiques : addition, soustraction, division, multiplication
ü Opérations logiques : ET, OU, NON, NAND, comparaison, test, etc…
ü Contrôle de séquence : branchement, test, etc…

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

3. Le microprocesseur : Le mode d’adressage


Un mode d'adressage définit la manière dont le microprocesseur va accéder
à l’opérande. Les différents modes d'adressage dépendent des
microprocesseurs mais on retrouve en général :

q l'adressage immédiat où l’opérande est située immédiatement après


l’instruction
q l'adressage direct où la donnée est située à l’adresse dont la partie basse
est indiquée après l’instruction, la partie haute étant égale à $00.
q l'adressage indexé de registre où la donnée est située à l’adresse
correspondant à la somme du registre utilisée et de la valeur numérique
qui suit l’instruction
q l'adressage étendu où la donnée est située à l’adresse indiquée après
l’instruction
q l’adressage inhérent ou implicite où l’instruction se suffit à elle même
q L’adressage relatif où la donnée est située à l’adresse correspondant à
l’étiquette donnée

296
Architecture des calculateurs

3. Le microprocesseur : Langage de programmation

Niveau 1 : Le langage machine : Langage de plus bas niveau. C’est le seul


langage que comprend la machine car toutes les instructions et données sont
codées en binaire. C’est le rôle des compilateurs de générer ce code. C’est ce code
là qui est transférer dans la machine.

Niveau 2 : Langage assembleur : Les instructions ne sont pas représentés par


des nombres mais par des mnémoniques. Un mnémonique est une abréviation du
langage parlé afin de décrire une exécution exécutable par le µP
(ex : movlw 7 veut dire mettre la valeur litéralle « 7 » dans le registre W)
Ce langage est propre à chaque µProcesseur.

Niveau 3 : Langage évolué : Afin de facilité la programmation on a mis au point


des langages de haut niveau proche de celui de l’homme : FORTRAN, PASCAL, C,
BASIC, COBOL dont la principale caractéristique est d’être indépendant du
microprocesseur utilisé.

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.

q Chaque instruction est codée en une séquence


de bits sur un nombre entier d’octets afin de
faciliter son décodage par le processeur,
chaque instruction représente un code machine
différent. !
q Chaque microprocesseur peut posséder un
assembleur différent
q Forte dépendance avec la machine.
q Langage de Haut niveau : nécessité d’un
compilateur
298
Architecture des calculateurs
3. Le microprocesseur : Architecture CISC et RISC
Le sigle CISC signifie Complex Instruction Set Computer.
L’architecture CISC est caractérisée par :
q Grand nombre d’instructions et tâches complexes par une instruction unique
q Instructions complexes pour mieux gérer le temps d’accès mémoire très lent
q Problèmes de compilation pour les langages de haut niveau
q Décodeur d’instruction complexe.

Le sigle RISC signifie Reduce Instruction Set Computer.


L’architecture RISC est motivé par :
q Plus de 80% des traitements des langages de haut niveau faisaient appel à
moins de 20% des instructions du microprocesseur.
q les compilateurs se contentaient le plus souvent d'affectations, d'additions et
de multiplications par des constantes

L’architecture RISC est caractérisée par :


q Instructions simples et en nombre très réduit
q Simplicité du séquenceur libérant ainsi de l’espace permet d’augmenter les
registres.
q Instructions complexes seront réalisées à partir d’instruction élémentaires.
299
Architecture des calculateurs
3. Le microprocesseur : Architecture CISC et RISC

Architecture RISC Architecture CISC

instructions simples ne prenant qu’un instructions complexes prenant plusieurs


seul cycle cycles
instructions au format fixe instructions au format variable
décodeur simple (câblé) décodeur complexe (microcode)
beaucoup de registres peu de registres
seules les instructions LOAD et STORE toutes les instructions sont susceptibles
ont accès à la mémoire d’accéder à la mémoire
peu de modes d’adressage beaucoup de modes d’adressage
compilateur complexe compilateur simple

300
Architecture des calculateurs
3. Le microprocesseur spéciaux : Le processeur de signal

qLe processeur de signal conçu pour une application spécifique


qLe processeur DSP (Digital Signal Processor) est optimisé pour effectuer du
traitement numérique du signal (calcul de FFT, convolution, filtrage numérique,
etc...).
qLes domaines d’application des D.S.P sont :
o les télécommunications
o le secteur militaire
o Le multimédia (lecteur CD, MP3, etc..)
o l’électronique grand public (télévision numérique, téléphone portable,
etc…),
o l’automatique,
o l’instrumentation,
o l’électronique automobile,

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

qUn calculateur est équipé d’une ou plusieurs interfaces d’entrées/sorties pour


communiquer avec le monde extérieur.
qChaque périphérique sera relié au système par l’intermédiaire d’une interface
(ou contrôleur) pour connecter et gérer les échanges
qL’interface est constituée par :
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…

qIl existe 2 modes d’échange d’information :


o Le mode programmé par scrutation ou interruption où le
microprocesseur sert d’intermédiaire entre la mémoire et le
périphérique
o Le mode en accès direct à la mémoire (DMA) où le microprocesseur ne
se charge pas de l’échange de données.
303
Architecture des calculateurs
4. Les échanges de données : mode programmé scrutation ou
interruption

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

Ce mode permet le transfert de blocs de données entre la mémoire et un


périphérique sans passer par le microprocesseur

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

qUn contrôleur de DMA dispose


o d’un registre d’adresse, d’un registre de donnée, d’un compteur et d’un
dispositif de commande (logique câblée).
o Pour chaque mot échange, le DMA demande le contrôle du bus, effectue
la lecture ou l'écriture mémoire dans son registre et libère le bus.
o Il incrémente le registre d’adresse et décrémente son compteur. Lorsque
le compteur atteint zéro, le dispositif informe le processeur de la fin du
transfert par une ligne d'interruption
307
Architecture des calculateurs
4. Les échanges de données : mode direct avec la mémoire

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

Le 68HC11 série E est un microcontrôleur développé par Motorola construit


autour d’une unité centrale 8 bits. Il possède:
qun espace adressable de 64 Ko (bus d’adresses de 16 bits).
qun convertisseur analogique/numérique 8 bits multiplexé sur 8 canaux.
qune interface de communication série asynchrone(RS232)
qune interface de communication série synchrone
qDes timers très complets
qChien de garde
qGénérations d’interruptions (internes et externes)
qPorts paralèlles.
qJusqu’à 12 Ko de ROM ou d’EPROM
qJusqu’à 1 Ko de RAM
qJusqu’à 8 Ko d’EEPROM
qLe 68 HC11 est disponible en plusieurs versions

309
Architecture des calculateurs
5. Exemple le 68HC11 : Structure interne

310
Architecture des calculateurs
5. Exemple le 68HC11 : Mode de fonctionnement

Durant la phase reset, deux broche MODA et MODB définissent le mode de


fonctionnement:
qUC seul : fonctionnement autonome, tous les ports du microcontrôleurs sont
disponibles mais la mémoire est limitée à la capacité interne.
qEtendu : Extension de la capacité mémoire ainsi que les périphériques par
ajout de boitiers externes. L’ensemble devient plus puissant mais on perd deux
ports.
qBootstrap : Lors du reset un programme BOOTLOADER télécharge en RAM un
programme provenant SCI (liaison série asynchrone
qSpecial Test: Mode destiné pour des tests, le développement en particulier
l’émulateur.

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

Le 68HC11 ayant de multiples versions la composition des entrées-sorties est


variable. La série 68HC11A1 ou E1 comporte 38 lignes entrées-sorties réparties
en 5 Ports ( PORTA....PORTE ), Certains sont bidirectionnels et d’autres
unidirectionnels :
q PORT A : Le port A est un port à usage général qui peut être partagé avec le «
Timer » et l’accumulateur d’impulsions.

q PORT B : Le port B est un port à usage général orienté uniquement en sortie.


le tableau ci-dessous montre le registre intervenant sur l’utilisation du Port B.

315
Architecture des calculateurs
5. Exemple le 68HC11 : Les différents ports

q PORT C : Le port C est un port à usage général. DDRC est le registre de


contrôle de direction du Port C. PORTCL n’est utile que lorsque le port C est
en entrée, dans ce cas les états logiques présents sur les broches du port C
sont mémorisés dans ce registre à l’instant d’un front actif sur la broche STRA.

316
Architecture des calculateurs
5. Exemple le 68HC11 : Les différents ports

q PORT D : Le port D est un port à usage général de 6 bits partagé avec la


communication Série. DDRD est le registre de contrôle de direction du Port D,
il permet de configurer le sens de transfert des données sur les lignes PDO à
PD5 : 0 pour une entrée, 1 pour une sortie.

q PORT E : Le port E est un port à usage général orienté uniquement en entrée,


partagé avec le Convertisseur Analogique Numérique,

317
Architecture des calculateurs
5. Exemple le 68HC11 : Le convertisseur Analogique numérique

q PORT D : Le 68HC11 est équipé́ d’un Convertisseur Analogique Numérique à


8 entrées multiplexées. Le multiplexage des 8 entrées se fait en 2 temps c’est-
à-dire 2*4entrées. Il peut également ne faire la conversion que d’une seule
voie par action sur le registre de contrôle du convertisseur ADCTL.

q Les registres qui interviennent dans le fonctionnement du convertisseur


analogique numérique.

318
Architecture des calculateurs
5. Exemple le 68HC11 : Le convertisseur Analogique numérique

q ADCTL est le registre de contrôle du convertisseur numérique analogique :

o MUX : 1 le convertisseur réalise les 4 conversions suivant le bit 0 le


convertisseur réalise une conversion suivant les bits CA,CB,CC.
o SCAN: 0 le convertisseur ne réalise qu’une salve de conversion. 1 le
convertisseur réalise les conversions en continu.
o CCF : 1 Indicateur de fin conversion, il est remis à 0 par écriture dans
ADCTL, ce qui provoque une nouvelle conversion quand SCAN = 0

319
Architecture des calculateurs
5. Exemple le 68HC11 : La liaison série SCI

q Cette interface permet la communication avec un autre équipement, terminal


ou ordinateur. Les données sont transmises et reçues sous forme série. La
norme RS232 impose des niveaux qui ne sont pas ceux de la logique TTL, il
faut faire appel à un circuit spécialisé́ qui réalise la mise à niveau (MAX232).
Les deux lignes TXD et RXD sont les lignes PD0 et PD1 du 68HC11.

q La mise en service de la SCI va ignorer les valeurs des bits de DDRD0 et


DDRD1 qui fixent le rôle (entrée ou sortie) des lignes PD0 et PD1 et imposer
une sortie pour TXD (PD1) et une entrée pour RXD (PD0). Dès que la SCI ne
sera plus utilisée, les deux lignes reprendront le rôle correspondant DDRD
($1009).

q Les registres qui interviennent dans le fonctionnement de la liaison série


asynchrone.

320
Architecture des calculateurs
5. Exemple le 68HC11 : La liaison série SCI

q Les registres qui interviennent dans le fonctionnement de la liaison série


asynchrone.

q SCDR: registre de données


q BAUD: permet de choisir la vitesse de transmission
q SCCR1: configuration de format des données dont les bits les plus
couramment utilisés sont: M = l 9 bits de données. 0 donne 8 bits de données.
q T8 Ecriture du 9ème bit de données. R8 Lecture du 9ème bit de données.
321
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

q Directive EQU Equivalence : Associe un nom à une donnée ou une adresse.


Ex :
REGBAS EQU $1000
PORTC EQU $03
q Directive FDB, FDD, FCC Form Constant Byte, Double Byte, Character.
Allocation et mise en place d’octets dans une zone précise en mémoire.
Exemple :CHAINE FCC « VIVE » ici CHAINE correspond à une chaîne de
caractères qui est situé en mémoire.

q Directive RMB Reserve Memory Byte : Réserver un Octet en Mémoire. Exemple


CAPT RMB 2 2 Octets alloués pour une variable appelée CAPT dont on ne
connaît pas la valeur.

324
Architecture des calculateurs
5. Exemple le 68HC11 : Jeux d’instruction
Structure d’un programme

Définition des étiquettes « symboles » utilisées

**** EQU **** Optionnel

ORG $@ Origine RAM si l’on veut affecter des variables de traitement

**** RMB $**** Optionnel

**** FDB $**** Optionnel Emplacement des variables de travail

ORG $@ Origine RAM du programme

**** 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

Instructions sur les registres d’index

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 :

q Présentation du PIC (pages 3,4,8,9,17,20-22)

332
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q Présentation du PIC (pages 3,4,8,9,17,20-22)


• Les éléments essentiels du PIC 16F887 sont :
• Une mémoire programme de type EEPROM flash de 8K mots de 14 bits,
• Une RAM donnée de 368 octets,
• Une mémoire EEPROM de 256 octets,
• Cinq ports d'entrée sortie, A (8 bits), B (8 bits), C (8 bits), D (8 bits), E(4bits)
• Convertisseur Analogiques numériques 10 bits à 14 canaux,
• USART, Port série universel, mode asynchrone (RS232) et mode synchrone
• SSP, Port série synchrone supportant I2C
• Trois TIMERS avec leurs Prescalers, TMR0, TMR1, TMR2
• Deux modules de comparaison et Capture CCP1 et CCP2
• Un chien de garde,
• 13 sources d'interruption,
• Générateur d'horloge, à quartz (jusqu’ à 20 MHz) ou à Oscillateur RC
• Protection de code,
• Fonctionnement en mode sleep pour réduction de la consommation,
• Programmation par mode ICSP (In Circuit Serial Programming) 12V ou 5V,
• Possibilité aux applications utilisateur d’accéder à la mémoire programme,
• Tension de fonctionnement de 2 à 5V,
• Jeux de 35 instructions
333
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q Présentation du PIC (pages 3,4,8,9,17,20-22)

334
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q Présentation du PIC (pages 3,4,8,9,17,20-22)

335
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q Cartographie mémoire (pages 23-24,26, 28-30)

336
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q Cartographie mémoire (pages 23-24,26, 28-30)

337
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q Mode d’adressage (pages 39-40)


o Mode d’adressage direct
• on précise dans l’instruction la valeur de l’adresse à laquelle on
veut accéder. Exemple MOVWF 20h.

o Mode d’adressage indirect


• Pour accéder à une position de la RAM en utilisant l’adressage
indirect, on passe toujours par une position fictive appelée INDF
(Indirect File).
• INDF est la case mémoire pointée par le pointeur IRP/FSR.
• IRP est un bit qui se trouve dans STATUS et FSR est un registre
accessible dans tous les bancs.


338
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q Mode d’adressage (pages 39-40)

339
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q Quelques registres de configuration

340
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q Ports I/O (page 41-71)


• Le PIC 16F887 dispose de 36 broches d’entrée sortie regroupés dans
5 ports PORTA(8 bits), PORTB(8 bits), PORTC(8 bits), PORTD(8 bits)
et PORTE(4 bits). Chaque broche d’un port peut être configurée soit en
entrée soit en sortie à l’aide des registres de direction TRISA, TRISB,
TRISC et TRISD et TRISE:
• Bit k de TRISx = 0 broche k de PORTx = SORTIE
• Bit k de TRISx = 1 broche k de PORTx = ENTRÉE

• ANSEL: ANALOG SELECT REGISTER pour configurer les


entrées analogiques

341
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q Résumé des registres associés au portA

342
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q Jeu d’instructions (pages 227-228, 229-235)


o {W,F?d} signifie résultat dans W si d=0 ou w, dans F si d=1 ou f

343
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q Jeu d’instructions (pages 227-228, 229-235)

344
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q Jeu d’instructions (pages 227-228, 229-235)

345
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q Jeu d’instructions (pages 227-228, 229-235)

346
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q ADC (pages 101-111)

347
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q ADC (pages 101-111)


o Ce module est constitué d'un convertisseur Analogique
Numérique 10 bits dont l'entrée analogique peut être
connectée sur l'une des 14 entrées analogiques
externes.
o Les entrées analogiques doivent être configurées en
entrée à l'aide des registres TRISX et/ou ANSEL.
o Les tensions de références permettant de fixer la
dynamique du convertisseur. Elles peuvent être choisies
parmi Vdd, Vss, Vref+ ou Vref-
o Le control du module se fait par les deux registres
ADCON0 et ADCON1

348
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q ADC (pages 101-111)

349
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q ADC (pages 101-111)

350
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q ADC (pages 101-111) Programmation


o 1) Configurer les E/S en Analogique/Numérique/Référence
(ADCON1)
o 2) Configurer les entrées analogiques en entrées
(ANSEL, TRISX)
o 3) Définir l'horloge de conversion à l'aide du diviseur
dans ADCON0
o 4) Choisir le canal à conver tir et valider le
module(ADCON0)
o 5) Attendre le temps d’acquisition(12µs)
o 6) Lancer la conversion, GO=1(ADCON0)
o 7) Attendre fin de conversion,GO=0 ou drapeau ADIF=1
o 8) Traiter le résultat
o 9) Si l'on désire prendre d'autres mesures, recommencer
au point 7 en faisant attention aux timings

351
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q TIMER 0 (pages 75-77) est un compteur 8 bits


q Il est incrémenté́ en permanence soit par l’horloge interne Fosc/4 (mode
timer) soit par une horloge externe appliquée à la broche RA4 du port A
(mode compteur). Le choix de l'horloge se fait à l'aide du bit T0CS du
registre OPTION_REG
o T0CS=0horloge interne
o T0CS=1horloge externe appliquée à RA4
q Dans le cas de l'horloge externe, Le bit T0SE du registre OPTION_REG
permet de choisir le front sur lequel le TIMER s'incrémente.
o T0SE=0incrémentation sur fronts montants
o T0SE=1incrémentation sur fronts descendants
q Quelque soit l'horloge choisie, on peut la passer dans un diviseur de
fréquence programmable (prescaler) dont le rapport est fixé par les bits
PS0, PS1 et PS2 du registre OPTION_REG. L'affectation ou non du
prédiviseur se fait à l'aide du bit PSA du registre OPTION_REG
o PSA=0onutiliseleprédiviseur
o PSA=1pas de prédiviseur(affecté au chien de garde)
q Le contenu du timer TMR0 est accessible par le registre qui porte le
même nom.
352
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q TIMER 0 (pages 75-77)

353
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q TIMER 0 (pages 75-77)

354
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q USART (pages 153-166)


q L'USART (Universal Synchronous Asynchronous Receiver Transmitter) est
l'un des deux modules de communication série dont dispose le PIC.

q La communication se fait sur les deux broches RC6/TX et RC7/RX qui


doivent être configurés toutes les deux en ENTREE par TRISC.

q Les registres de configuration


• Transmit Status and Control(TXSTA)
• Receive Status and Control(RCSTA)
• Baud Rate Control(BAUDCTL)
q

355
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q USART (pages 153-166)


q Si on place le bit SYNC du registre TXSTA à 0, l'USART fonctionne dans le
mode asynchrone standard, 10 (ou 11) bits sont transmis ou reçus dans
l'ordre ci-dessous :
- 1 bit de START (toujours 0)
- 8 ou 9 bits de donnée (LSB d'abord)
- 1 bits de STOP (toujours 1)
q La transmission se fait sur RC6/TX et la réception sur RC7/RX
q La configuration et le control du port par les registres TXSTA et RCSTA
q La vitesse de communication par le registre SPBRG et le bit TXSTA.BRGH
q L'accès au port en lecture ou écriture se fait par les registres tampon
RCREG et TXREG. La transmission et la réception se font par deux
registres à décalage, un pour la transmission (TSR) et un pour la réception
(RSR). L'accès au registres tampon peut se faire alors que les registre à
décalage sont en train de transmettre/recevoir une donnée.
q Les drapeaux PIR1.RCIF et PIR1.TXIF sont très utiles pour gérer la lecture/
écriture dans le port. RCIF est positionné quand le port a terminé une
réception et TXIF est positionné quand le buffer de transmission TXREG est
"vide". 356
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q USART (pages 153-166)

357
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q USART (pages 153-166)

358
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q USART (pages 153-166)


q Les étapes de transmission (sans interruption, mode 8 bits)
• 1) S’assurer que l’interruption TXI n’est pas validée
• 2) Configurer la broche TX/RC6 en entrée
• 3)Configurer le registre TXSTA (mode 8bits, valider transmission,
asynchrone, BRGH)
• 4) Initialiser le registre SPBRG pour définir la vitesse de transmission
• 5) Valider le port avec le bit RCSTA.SPEN
• 6) Vérifier que le drape au PIR1.TXIF=1 c.à.d TXREG est vide
• 7) Placer la donnée à transmettre dans le registre TXREG
• 8) recommencer au point 6) tant qu’on a des données à transmettre

359
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q USART (pages 153-166)


q La réception est validée par le bit CREN
q La réception d'un octet démarre à la réception du bit START
q A la réception du bit stop le contenu du registre à décalage RSR est recopié
dans le registre tampon de réception RCREG. Le drapeau RCIF (PIR1.5)
est positionné, l'interruption associée est déclenchée si elle est validée. Le
drapeau RCIF est remis à zéro automatiquement à la lecture dans RCREG.
q Le registre RCREG est un registre double (FIFO à 2 positions). On peut
donc avoir 2 octets en attente dans ce registre et être en train de recevoir
un 3ème dans le registre RSR. A la fin de la réception du 3ème octet, si RCREG
est toujours plein, alors le dernier octet reçu est perdu et le bit OERR
(Overrun ERRor bit) est positionné ce qui provoque l'arrêt des transfert du
registre RSR vers le buffer RCREG. Pour reprendre la réception il faut
réinitialiser le module de réception en mettant à 0 puis à 1 le bit CREN.
q Le drapeau PIR1.RCIF ne passe à 0 que quand la pile RCREG est vide
q Si on reçoit un 0 à la position du bit STOP qui doit être toujours à 1, alors le
bit FERR (Framing ERRor) est positionné. Ce bit ainsi que le 9ème bit (si
utilisé) sont bufferisés, Il doivent être lu dans le registre RCSTA avant la
lecture du registre RCREG. 360
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q USART (pages 153-166)

361
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q USART (pages 153-166)

362
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q USART (pages 153-166)


q Les étapes de réception (sans interruption, mode 8 bits)

• 1) S’assurer que l’interruption RCI n’est pas validée


• 2) Configurer la broche RX/RC7 en entrée
• 3) Initialiser le registre SPBRG pour définir la vitesse de
communication
• 4)Configurer le registre TXSTA (asynchrone, BRGH)
• 5)Configurer le registre RCSTA (validation port, mode 8bits, valider
réception continue)
• 6) Attendre que drapeau RCIFpasse à 1 ce qui annonce la fin de
réception d'un octet
7) Lire l’octet reçu dans le registre RCREG
8) recommencer au point 6) tant qu’on a des données à recevoir

363
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q USART (pages 153-166)


q La gestion de la vitesse de communication

• 1) La vitesse de communication est déterminée par le générateur de


rythme BRG (Baud Rate Generator) qui est dédié au port série. La
vitesse de communication est définie à l'aide du registre de control
SPBRG et du bit BRGH (TXSTA.2) qui quadruple la vitesse quand il est
positionné. Il préférable d'utiliser le mode haute vitesse (BRGH=1) car
permet d'obtenir une meilleur précision sur la fréquence.

364
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q USART (pages 153-166)


q La gestion de la vitesse de communication

365
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q Interruption (pages 218-221)


q Une interruption provoque l’arrêt du programme principal pour aller
exécuter une procédure d'interruption. A la fin de cette procédure, le
microcontrôleur reprend le programme principal à l’endroit où il l’a laissé. A
chaque interruption sont associés deux bits, un bit de validation et un
drapeau. Le premier permet d'autoriser ou non l'interruption, le second
permet au programmeur de savoir de quelle interruption il s'agit.
q Sur le 16F887, l'es interruptions sont classées en deux catégories, les
interruptions primaires et les interruptions périphériques. Elles sont gérées
par les registres :

366
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q Interruption (pages 218-221)

367
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q Interruption (pages 218-221)


q Déroulement d'une interruption
q Lorsque l'événement déclencheur d'une interruption intervient, alors son
drapeau est positionné à 1 (levé). Si l'interruption a été validée (bits de
validations = 1), elle est alors déclenchée : le programme arrête ce qu'il est
en train de faire et va exécuter la procédure d'interruption qui se trouve à
l'adresse 4 en exécutant les étapes suivantes :
o l'adresse contenue dans le PC (Program Counter) est sauvegardée
dans la pile, puis remplacée par la valeur 0004 (adresse de la routine
d'interruption)
o Le bit GIE est placé "0" pour inhiber toutes les interruptions (afin que le
PIC ne soit pas dérangé́ pendant l'exécution de la procédure
d'interruption).
q A la fin de la procédure d'interruption :
o le bit GIE est remis à 1 (autorisant ainsi un autre événement)
o le contenu du PC est rechargé à partir de la pile ce qui permet au
programme de reprendre là où il s'est arrêté

368
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q Interruption (pages 218-221)


q Déroulement d'une interruption
q Deux remarques importantes sont à faire :

o Le drapeau reste à l’état haut même après le traitement de


l’interruption. Par conséquent, il faut toujours le remettre à "0" à la fin
de la routine d'interruption sinon l'interruption sera déclenchée de
nouveau juste après la routine d’interruption.

o Seul le PC est empilé automatiquement. Si cela est nécessaire, les


registres W et STATUS doivent être sauvegardés en RAM puis
restaurés à la fin de la routine pour que le microcontrôleur puisse
reprendre le programme principal dans les mêmes conditions où il l'a
laissé.

369
Architecture des calculateurs
5.2 Exemple d’architecture RISC le PIC 16F887 :

q Interruption (pages 218-221)


q Déroulement d'une interruption
q Les sources d'interruption :

370

Vous aimerez peut-être aussi