Vous êtes sur la page 1sur 16

ELEC-H-402

ELECTRONIQUE NUMÉRIQUE

Chapitre 13

Ports d'entrées-sorties parallèles

©
beams ELEC-H-402 / 13 : Ports d'entrées-sorties parallèles
uP_port_d14.shw
09-10-07 10 :38:03

Ports E/S parallèles


PLAN

< 13.1 Utilité


<






<

2
13.1 Ports E/S parallèles : utilité
un mode de communication fondamental
< communication par mot vers périphérique //
‚ autre :P proche
‚ imprimante, scanner, disque .....
< échange par bit avec le monde extérieur
‚ entrées tout-ou-rien
! bouton poussoir, clavier
! fin de course
! sortie d'un comparateur analogique (seuil d'alarme)
‚ sorties tout-ou-rien
! ordres type marche/arrêt via
# relais
# opto-coupleurs
! afficheurs
# lampe témoin
# LED
©
beams ELEC-H-402 / 13 : Ports d'entrées-sorties parallèles
uP_port_d14.shw
09-10-07 10 :38:03

Les ports d'entrée-sortie parallèle remplissent essentiellement deux fonctions :

1) la communication à courte distance et très haut débit avec échange de MOTS; le microprocesseur peut
communiquer avec un autre processeur ou avec des systèmes périphériques (disques, imprimantes,
scanners).
La tendance actuelle est de passer à des communications de type série pour faciliter le câblage et réduire la
taille des connecteurs. D’abord limitées aux communication vers des périphériques à vitesse faible ou
moyenne comme les imprimantes et scanners (USB 1.0), les liaisons séries ont conquis le marché des
périphériques rapides, comme les disques et les caméras numériques (USB2, FireWire) , voire ultra-rapides,
comme les cartes graphiques (PCI Express).

2) l'échange de BITS logiques avec un processus :

- en entrée, on trouve principalement


! les ordres à 1 bit (pression sur un poussoir)
! les statuts (fin de course, cuve pleine,.....)
! les alarmes (dépassement d'un seuil,....)

- en sortie, on a :
! tous les ordres de marche/arrêt (généralement isolés galvaniquement via des relais et des opto-
coupleurs)
! tous les afficheurs (lampes témoin, diodes électroluminescentes, cristaux liquides....)

4
Ports E/S parallèles
PLAN

<
< 13.2 En pratique ..
‚ 13.2.1 Variantes
‚ 13.2.2 Latch asynchrone
‚ 13.2.3 Latch + synchronisation
‚ 13.2.4 Coupleurs parallèles
‚ 13.2.5 FIFO
‚ 13.2.6 DPRAM à double accès
<

©
beams ELEC-H-402 / 13 : Ports d'entrées-sorties parallèles
uP_port_d14.shw
09-10-07 10 :38:03

6
13.2.1 Port E/S parallèles : Variantes

< interne - externe


‚ :P+ périphérique séparé dit "coupleur //"
‚ :C avec port // interne; souvent multiples fonctions par
borne (choisies via registre de configuration)
< classification directionnelle
‚ unidirectionnel (latch)
‚ bidirectionnel
! sens programmable via registre de configuration souvent
par bit, parfois par groupe de 4 ou 8 bits
‚ quasi-bidirectionnel
! pas de registre de configuration

©
beams ELEC-H-402 / 13 : Ports d'entrées-sorties parallèles
uP_port_d14.shw
09-10-07 10 :38:03

Dans le cas de microprocesseurs, les entrées-sorties parallèles se font à travers des circuits périphériques
simples (latch) ou plus complexes (coupleurs parallèles) dont nous verrons quelques exemples dans les
dias suivantes.

Les micro-contrôleurs possèdent leurs propres latches internes. La complexité des micro-contrôleurs vient
souvent des multiples fonctions affectées aux diverses bornes d'entrée-sortie, fonctions dont la sélection est
assurée par une batterie de registres de configuration.

Les ports peuvent être unidirectionnels ou à sens de transfert programmable, par bit ou par groupe de bits.
La programmation du sens est en général accomplie par un registre de configuration, mais il existe des
conceptions dites "quasi-bidirectionnelles" sans registres de configuration, notamment dans la famille 8051.

8
13.2.2 Latch de sortie asynchrone
sortie vers processus ou vers bus
Q0
data bus D0..7 Q1
Q2
Q3 processus
:P Q4 commandé en
Q5 permanence
adr Yi Q6
Q7
LE OE# LO
WR#

Q0
data bus D0..7 Q1
Q2
Q3 bus de
:P Q4 données
Q5
adr Yi Q6
Q7
impulsion de ! course
LE OE#
WR# lecture
asynchrone
OE#/WR#
©
beams ELEC-H-402 / 13 : Ports d'entrées-sorties parallèles
uP_port_d14.shw
09-10-07 10 :38:03

Le périphérique de sortie parallèle le plus simple est constitué d'un latch. Il est utilisé soit à l'intérieur d'un
micro-contrôleur, soit à l'extérieur d'un micro-processeur, comme illustré sur cette figure.

Les entrées du latch sont raccordées au bus des données et une courte impulsion est fournie à l'entrée
d'activation LE (Latch Enable) pour mémoriser les données. Cette impulsion est dérivée de la borne
d'écriture WR#du processeur et d'une des sorties du décodeur d'adresse, activée à l'adresse attribuée au
latch.

Deux modes sont possibles :

- le mode permanent : la borne OE# (Output Enable) des buffers de sortie du latch est activée en
permanence (ou bien les buffers de sortie ne possèdent pas l'état HiZ, ce qui revient au même). Dans ce
cas, toute écriture dans le latch est reflétée automatiquement à l'extérieur. C'est le mode utilisé par les
commandes de processus

- le mode 3-state, où le dispositif en aval du latch commande lui-même la borne OE# lorsqu'il veut fait une
lecture. Ce mode doit être utilisé si la sortie du latch est connectée à un bus de données. On peut ainsi
réaliser une communication parallèle entre deux processeurs. On parle de sortie asynchrone parce qu'il
n'y a à priori aucune synchronisation entre l'écriture et la lecture; il peut arriver sporadiquement que l'on
lise la sortie du latch pendant qu'elle change; la lecture risque donc d'être fausse, à cause de légères
différences de temps de propagation entre les bits. Il y a donc une condition de course entre l'impulsion
d'écriture WR# et l'impulsion de lecture sur OE# et on ne dispose d'aucun moyen de l'éviter dans ce
schéma.
C'est au niveau du logiciel qu'il faut résoudre le problème (voir plus loin la description du côté "lecture")

10
13.2.3 Latch de sortie synchronisé
ajout de signaux d'acquittement handshake

Q0
data bus D0..7 Q1
Q2
Q3 Q7..Q0
:P1 Q4 :P2
Q5
adr Yi Q6
Q7
LE OE# lecture
WR#
IRQ#

synchro vers IRQ

©
beams ELEC-H-402 / 13 : Ports d'entrées-sorties parallèles
uP_port_d14.shw
09-10-07 10 :38:03

11

Pour synchroniser la lecture, c'est-à-dire faire en sorte qu'elle se produise suffisamment longtemps après
l'écriture pour que les données soient stabilisées, le processeur 1 doit indiquer au processeur 2 que l'écriture
vient de se produire. L'impulsion d'écriture peut être utilisée à cet effet, pour autant que le processeur 2 soit
sensible à une courte impulsion (c'est le cas s'il possède une entrée d'interruption commandée par flanc). Si
ce n'est pas le cas, on doit ajouter un bistable pour mémoriser l'événement d'écriture.

Il se pourrait toutefois que le processeur 1 écrive une nouvelle donnée dans le latch avant que le
processeur 2 ne l'ait lue, ce qui occasionne une perte de données. Pour l'éviter, on peut rajouter un
mécanisme d'acquittement (handshaking), par lequel la lecture de la sortie du latch par le processeur
2 est répercutée vers le processeur 1 (en utilisant également une requête d'interruption, par exemple).
Le processeur 1 attendra alors ce signal d’acquittement avant d'écrire une nouvelle donnée.

La communication parallèle avec acquittement peut être facilitée par des périphériques coupleurs, plus
puissants qu'un simple latch (voir plus loin).

12
13.2.4 Latch d'entrée asynchrone

D0
< données toujours D1 Q0..7 données
D2
présentes D3
D4 :P
< ! états transitoires D5
‚ glitches D6 Yi adr
‚ plusieurs bits qui changent D7
HI LE OE# RD

D0
D1 Q0..7 données
D2
D3
D4 :P
D5
D6 Yi adr
D7
CLK ou WR LE OE# RD

©
beams ELEC-H-402 / 13 : Ports d'entrées-sorties parallèles
uP_port_d14.shw
09-10-07 10 :38:03

13

Le latch fonctionne très bien en entrée. Les sorties du latch sont connectées au bus des données et la
commande d'activation OE# des buffers de sortie du latch doit évidemment dépendre à la fois de l'ordre de
lecture RD# et du décodeur d'adresse.

Dans la figure du haut, l'échantillonnage des données est asynchrone et se produit au moment où une
instruction de lecture à l'adresse du latch est exécutée. Le latch est transparent (LE fixé à l'état actif), les
données présentées au latch sont donc supposées valides en permanence. Plusieurs problèmes peuvent
provoquer une lecture erronée :

- le processeur lit à un moment où un ou plusieurs bits de données sont en train de changer (par exemple
le débordement d'un compteur). Un léger décalage temporel entre ces bits risque alors de provoquer la
lecture d'une donnée sans signification
- le système logique en amont est combinatoire et produit une impulsion parasite (glitch).

Ces problèmes sont souvent résolus par un filtrage dans le programme: on effectue 2 lectures
successives (ou plus) et on ne retient que les états stables pendant un temps minimum.
REM : ceci suppose que
- l'émetteur des données écrive moins souvent que le temps nécessaire pour faire 2 lectures
- les lectures successives sont très proches; attention notamment aux interruptions éventuelles qui
viendraient dissocier ces deux lectures. Cette double lecture peut constituer une section critique (voir
chapitre sur les interruptions)

Si le système extérieur est synchrone, on utilisera son horloge pour activer la mémorisation des données par
le latch.

Si les données extérieures viennent d'un bus, l'impulsion d'écriture sur ce bus doit être connectée à l'entrée
LE.

On peut évidemment utiliser les mécanismes de synchronisation et d'acquittement que l'on vient de voir.

14
13.2.5 Communications par coupleurs //
périphériques avec IRQ et acquittements

coupleur C1 coupleur C2
è å
IRQ# O0 I0 IRQ# IRQ#
ã données D0..7 O1 I1 D0..7 data bus
O2 I2
O3 I3
:P1 adr Yi# â CS O4 I4 CS Yj# adr :P2
O5 I5
A1 O6 I6 A1
A0 O7 I7 A0
ã WR# ä WR# WR#
Lo Li
RD# ACKi ç ACKo RD# æ RD#

©
beams ELEC-H-402 / 13 : Ports d'entrées-sorties parallèles
uP_port_d14.shw
09-10-07 10 :38:03

15

Le recours à des périphériques spéciaux appelés coupleurs parallèles programmables (suivant les
constructeurs on parle souvent de PIA Parallel Interface Adapter"ou PIO Parallel Input Output facilite la
communication entre processeurs.

Une logique interne au coupleur génère automatiquement les signaux de synchronisation et


d'acquittement.

Supposons que le processeur :P1 veuille envoyer une donnée au processeur :P2. On place un coupleur
dans l'espace d'adresse de chacun des processeurs. A l'aide de leurs registres de configuration respectifs,
le coupleur du :P1 est programmé en sortie et celui du :P2 en entrée.

L'écriture de la donnée par :P1 à l'adresse du coupleur C1 engendre automatiquement l'activation du signal
de synchronisation L o, qui active l'entrée L i du coupleur C2, lui indiquant ainsi qu'il doit mémoriser une
nouvelle donnée. Le coupleur C2 active alors l'entrée d'interruption du :P2 pour lui signaler la présence
d'une donnée à lire.
La lecture par le :P2 engendre automatiquement l'activation du signal d'acquittement ACKo du coupleur C2,
raccordée à l'entrée d'acquittement ACKi du coupleur C1. Celui-ci signale alors au :P1 qu'il peut écrire la
donnée suivante.

Ces coupleurs sont souvent très souples, afin de permettre la connexion de processeurs de marques
différentes. Leurs registres de configuration permettent de fixer
- le sens des données
- la polarité et le genre des signaux d'acquittement et d'interruption (niveau HI, niveau LO, flanc montant
flanc descendant)
- le travail par interruption ou non

Si on ne travaille pas par interruptions, un bit du registre de statut (interrupt flag) du coupleur est activé lors
d'une requête, mais la sortie d'interruption reste inactive. C'est au processeur qu'il incombe de tester
régulièrement ce bit de statut (mécanisme de polling).

On peut obtenir une communication bidirectionnelle en installant une nouvelle paire de coupleurs.

16
13.2.5 Communication par FIFO
absorption d'un débit de pointe
< communication unidirectionnelle
< tampon =>débit de pointe élevé
< nécessité d'un handshake

FIFO
IRQ# FULL# EMPTY# IRQ#
data bus D0..7 D0..7 data bus

:P1 adr Yi# CSi# CSo# Yj#


adr :P2
WR# WR# RD# RD#

©
beams ELEC-H-402 / 13 : Ports d'entrées-sorties parallèles
uP_port_d14.shw
09-10-07 10 :38:03

17

Le défaut d'une communication par latches ou coupleurs est la nécessité, pour l'émetteur des données,
d'attendre que le récepteur ait lu chaque mot avant de pouvoir envoyer le suivant.
On peut pallier cela en plaçant un tampon de mémoire de type FIFO (First-In-First-Out) entre les deux
processeurs.
Nous connaissons déjà une structure de type FIFO : le registre à décalage. Toutefois, celui-ci ne résout pas
notre problème car les données doivent être lues en sortie au rythme où elles sont écrites en entrée.
On réservera donc le terme FIFO à une structure autorisant l'écriture et la lecture simultanées à des vitesses
différentes.
On retirera l'avantage maximum d'une FIFO en émettant un paquet de données inférieur à la taille de la
FIFO sans attendre que le récepteur soit prêt. La FIFO augmente donc le débit de pointe, sans améliorer
le débit moyen, qui reste fixé par le plus lent des deux processeurs.

Des signaux de handshake sont nécessaires pour régler le débit et éviter ainsi l'engorgement :

- le signal FULL# pour indiquer à l'émetteur que la FIFO est pleine et qu'il doit donc cesser de l'alimenter
- le signal EMPTY# pour indiquer au récepteur qu'il vient de retirer la dernière donnée

Ces signaux sont connectés à un bit d'entrée que le processeur peut surveiller (via un bit d'un port d'entrée-
sortie) ou à une ligne d'interruption.

La structure présentée ici est une FIFO asynchrone :


- le signal FULL# est échantillonné par l'émetteur, mais sa désactivation est causée par une lecture du
récepteur
- le signal EMPTY# est échantillonné par le récepteur, mais sa désactivation est causée par une écriture de
l'émetteur
Les deux processeurs n'ayant pas la même horloge, il n'est donc pas exclu que les transitions des signaux
d'acquittement violent le temps d'activation (setup-time) ou de maintien (hold time) du bistable interne
responsable de leur échantillonnage.

La solution à ce problème est soit logicielle (double lecture à intervalle suffisant) soit le recours à une FIFO
synchrone, que nous ne détaillerons pas ici.

18
13.2.6 Communication par DPRAM
DPRAM = Dual Ported RAM
< double accès complet avec gestion de conflits
< quelques octets unidirectionnels pour handshake
Dual Port RAM
IRQ# IRQ# IRQ# IRQ#
data bus D0..7 D0..7 data bus

:P1 adr Yi# CS# CS# Yi#


adr :P2
A7 A7
A0 A0
WR# WR# WR# WR#
RD# RD# RD# RD#
RDY RDY RDY RDY
©
beams ELEC-H-402 / 13 : Ports d'entrées-sorties parallèles
uP_port_d14.shw
09-10-07 10 :38:03

19

Un mécanisme plus souple de communication entre processeurs est la mémoire vive à double accès ou
DPRAM (Dual Port RAM), dont le boîtier comporte deux bus d'adresses, de données et de contrôle, chaque
ensemble de bus étant dédié à un processeur.

On organise en général le logiciel pour attribuer :

- une zone accessible en lecture par le :P1 et en écriture par le :P2


- une zone accessible en lecture par le :P2 et en écriture par le :P1

D'autres mécanismes sont possibles, où la même zone est écrite et lue alternativement par les deux
processeurs.

Un mécanisme de verrouillage hardware interne évite que les deux processeurs accèdent en même
temps au même mot en mémoire. Si c'est le cas, un wait state est généré sur le processeur qui arrive en
second, via les lignes RDY.

La génération d'interruptions est possible, ainsi qu'un mécanisme d'acquittement à travers un certain
nombre de mots mémoires réservés comme registres de statut.

20
Ports E/S parallèles
PLAN

<
<
< 13.3 Ports du 8051
‚ 13.3.1 Port P1
‚ 13.3.2 Pull-up actif
‚ 13.3.3 Port P0
‚ 13.3.4 Port P2
‚ 13.3.5 Port P3

©
beams ELEC-H-402 / 13 : Ports d'entrées-sorties parallèles
uP_port_d14.shw
09-10-07 10 :38:03

21

22
13.3.1 8051 : Port P1
quasi-bidirectionnel
< plus simple que tri-state
< pas de registre de direction : écrire 1 pour pouvoir lire
< sortance dissymétrique (4 LS TTL)
VDD
read-modify-write Lire
lire l'état même si Latch pull-up
P1.x abîmé par la actif P1.X
sortance
ex ANL P1,#EF
bus interne : bitX D Q
P1.X
Latch
commande d'écriture LE
Q

commande de lecture
©
(écrire HI au préalable)
beams ELEC-H-402 / 13 : Ports d'entrées-sorties parallèles
uP_port_d14.shw
09-10-07 10 :38:03

23

Cette figure nous ramène au 8051 et représente le bit x du Port P1, composé d'un latch et d'un jeu de
buffers. P1 est du type "quasi-bidirectionnel" c'est-à-dire :
- permettant un transfert bidirectionnel
- sans registre de configuration du sens des données.

1) si P1.x fonctionne comme sortie, le bit provenant du bus de données interne est connecté à l'entrée D
du latch. Le signal d'écriture, issu de l'unité de commande, provoque la mémorisation du bit via l'entrée LE.
Le bit de sortie Q# attaque la grille du transistor pull-down monté en inverseur et pilotant la borne de sortie.
Le drain du transistor est relié à l'alimentation par un circuit représenté comme une résistance et jouant le
rôle de pull-up (en réalité c'est un circuit actif présenté à la dia suivante).
Le processeur peut relire l'état du port pour exécuter les instructions de type Read-Modify-Write
(manipulation de bits et opérations logiques bit-à-bit, comme AND, OR, ou XOR). Remarquons qu’on lit la
sortie Q du latch et non l'état de la borne de sortie. Ce dernier pourrait en effet être incorrect, par exemple si
la sortie délivre un courant supérieur à IOL ou IOH, ou s’il y a conflit avec une autre sortie.

2) si P1.x fonctionne comme entrée, le programmeur doit préalablement écrire un HI dans le latch pour
couper le transistor pull-down. L'entrée est alors par défaut à l'état HI (grâce au pull-up) et son niveau
logique peut être modifié par un circuit extérieur possédant un pull-down actif. La résistance équivalente du
pull-up est suffisamment élevée (quelques dizaines de kS) pour ne pas engendrer une consommation
excessive à l'état LO.
L'état de la borne P1.x est recopié sur le bus de données interne par un signal de lecture issu de l'unité de
commande et qui sort le buffer de lecture de l'état HiZ.

L'avantage de cette configuration est que les entrées inutilisées, ou provisoirement déconnectées, ne
doivent pas nécessairement être munies de pull-up externes. L'inconvénient est que la sortance est
dissymétrique.

La configuration quasi-bidirectionnelle se retrouve dans d'autres processeurs que le 8051.

24
13.3.2 8051 : Ports 1,2,3 : pull-up actif
allumage temporaire d'un transistor pull-up

augmentation transitoire
de sortance (x100) pour
améliorer le temps de
montée VDD VDD VDD

2Txtal P1 P2 P3
P1.X

N1
latch P1 Q
bus données donnée en entrée
interne

unité de ordre de lecture


commande
©
beams ELEC-H-402 / 13 : Ports d'entrées-sorties parallèles
uP_port_d14.shw
09-10-07 10 :38:03

25

Cette figure montre un détail du pull-up actif en sortie.

Supposons que la borne soit en sortie et que l'on écrive Q=HI. Le transistor pull-down N1 se coupe et les
trois transistors P1,P2 et P3 deviennent conducteurs. P2 et P3 ont une impédance de quelques dizaines de
kS à l'état passant et constituent le pull-up actif. Ils sont donc incapables de fournir un courant suffisant
pour charger rapidement la capacité parasite vue de la borne P1.X.
P1, par contre, possède une résistance 100 fois moindre et sera allumé temporairement pour assurer un
bon temps de montée LO-HI.

Dès que l'on a écrit un HI, la borne peut servir d'entrée (ce qui est son état par défaut au RESET). Si un
circuit extérieur impose un état LO, P3 se coupe pour réduire la consommation de l'entrée.

26
13.3.3 8051 : Port P0
entrée-sortie ou bus adresse-données AD7..AD0
< mode bus externe : totem-pole (8 LS TTL)
< mode I/O Addr / Data bit
‚ sortie drain ouvert
VDD
‚ entrée HiZ Lire
BUS/IO#
Latch p
P0.X

bus interne D Q
P0.X n
Latch
commande d'écriture CK
Q MUX

commande de lecture
©
beams ELEC-H-402 / 13 : Ports d'entrées-sorties parallèles
uP_port_d14.shw
09-10-07 10 :38:03

27

Le port P0 est plus complexe, car il doit pouvoir servir ou bien d'entrée/sortie, ou bien de bus multiplexé
adresses-données, en cas de recours à une mémoire externe.
Remarquons qu'il n'y a pas de registre de configuration du processeur; le port P0 commute vers le
comportement de type "bus" lors de l'exécution d'une instruction de type MOVX, où d'une lecture en
mémoire programme externe.

- dans le cas où P0 est utilisé comme port d'entrée-sortie banal, le bit de configuration BUS/IO# est placé
en LO ce qui
- connecte la grille du transistor pull-down (n) à la sortie Q# du latch
- coupe le transistor pull-up (p)
Les bits de sortie du port P0 sont donc à drain ouvert et doivent être munis de résistances de pull-up
externes. Pour configurer un bit en entrée, on y écrit un HI, ce qui coupe le transistor pull-down et met la
borne en haute impédance.

- dans le cas où P0 sert de bus, le signal BUS/ IO# est mis en HI, ce qui permet d'appliquer le bit
d'adresse, puis de données, sur la grille du transistor (p), via la porte OR qui est transparente et sur la
grille du transistor (n), via le multiplexeur.
La paire de sortie est donc commandée comme une paire CMOS normale, avec une sortance symétrique
de 8 LS-TTL.
Si l'on doit faire une lecture sur le bus de données, l'unité de commande met la borne en haute
impédance, comme si c'était un port configuré en entrée.

28
13.3.4 8051 : Port P2
entrée-sortie ou bus d'adresses A15..A8
< mode bus = quasi totem-pole
< mode I/O = pull-up actif bit adr
VDD
BUS/IO#
Lire
Latch
P2.X

bus interne D Q
P2.X
Latch
commande d'écriture CK MUX
Q

commande de lecture
©
beams ELEC-H-402 / 13 : Ports d'entrées-sorties parallèles
uP_port_d14.shw
09-10-07 10 :38:03

29

Le port P2 est un hybride entre P1 et P0. Comme il ne sert pas de bus de données, la configuration en
haute impédance n'est pas nécessaire, et le transistor supérieur du port P0 est remplacé par un pull-up actif.

Le fonctionnement est identique à celui de P0, mais il n'y a pas besoin de résistance de pull-up externe pour
les bits configurés en entrée.

30
13.3.5 8051 : Port P3
entrée-sortie ou contrôle (RD#, WR#, .....)

Alternate VDD
Lire output
Latch function pull-up
actif P3.X

bus interne D Q
P3.X
Latch
commande CK
d'écriture

commande
de lecture

©
beams ELEC-H-402 / 13 : Ports d'entrées-sorties parallèles
uP_port_d14.shw
09-10-07 10 :38:03

31

Le port P3 est du même type que P1, sauf que ses bornes peuvent remplir des "fonctions alternatives" ou
"alternate output functions" (RD#, WR#, TxD,...).

Dans ce cas, la sortie Q du latch est mise en HI, pour ouvrir la porte NAND qui appliquera la fonction
alternative sur la grille du pull-down.
Inversement, la fonction alternative non utilisée sera placée en HI, pour laisser passer la sortie Q du latch.

32

Vous aimerez peut-être aussi