circuits logiques et registres - robot...
TRANSCRIPT
Circuits logiques et registres RESUME CIRCUITS LOGIQUES ET REGISTRES
Donadio Jeacutereacutemy | Robot-innovationcom | 25082018
DONADIO JEREMY ROBOT-INNOVATIONCOM
Sommaire
1 Introduction
2 Algegravebre de Boole
3 Portes logiques basiques
minus AND
minus OR
minus XOR
minus NOT
minus NAND
minus NOR
minus XNOR
4 Tableaux de Karnaugh
5 Les bascules
minus Bascule RS (asynchrone)
minus Bascule RSH (synchrone)
minus Bascule D (asynchrone)
minus Bascule D (synchrone)
minus Bascule JK (asynchrone)
minus Bascule JKH (synchrone)
minus Bascule T
6 Les registres
minus Registre entreacutee parallegravele sortie parallegravele (meacutemoire)
minus Registre entreacutee seacuterie sortie seacuterie (deacutecalage)
minus Registre entreacutee parallegravele sortie seacuterie (transformation parallegravele-seacuterie)
minus Registre entreacutee seacuterie sortie parallegravele (transformation seacuterie-parallegravele)
minus Deacutecalage
minus Rotation
7 Cas concret Les registres Arduino Uno
8 Reacutefeacuterences
DONADIO JEREMY ROBOT-INNOVATIONCOM
1 Introduction
Le transistor est la brique avec laquelle sont construits tous les circuits
eacutelectroniques drsquoaujourdrsquohui Crsquoest avec ccedila que lrsquoon arrive agrave construire des
architectures aussi complexes que celles des MCU Mais comment est-ce possible
Aujourdrsquohui nous allons nous pencher sur les architectures de bases permettant de
reacutealiser des circuits eacutelectriques simples pour mieux comprendre comment
fonctionnerai une architecture plus complexe tel qursquoun MCU
Un prochain cours arrivera surement ougrave nous parlerons plus en deacutetail des transistors
et autres composants eacutelectroniques
Nous ne nous inteacuteresserons ici qursquoagrave lrsquoaspect matheacutematique Logique qui se cache
derriegravere ces merveilleuses architectures eacutelectroniques Nous finirons tout de mecircme
avec un cas concret
Mais avant de commencer parlons un peu des deux types de logiques qui existent
minus La logique seacutequentielle
minus La logique combinatoire
En logique combinatoire lrsquoeacutetat des sorties agrave un instant donneacute ne deacutepend que du
circuit et de la valeur des entreacutees agrave cet instant tandis qursquoen logique seacutequentielle
lrsquoeacutetat de sortie du circuit agrave un instant donneacute deacutepend non seulement de la valeur des
entreacutees agrave cet instant mais aussi de la valeur des sorties aux instants anteacuterieurs
La grande diffeacuterence entre la logique seacutequentielle et combinatoire est donc le fait que
la logique seacutequentielle fait intervenir la notion de meacutemoire
Il suffit en geacuteneacuterale drsquoavoir un systegraveme boucleacute pour passer en logique seacutequentielle
(car la sortie deviendra une entreacutee ce qui entrainera la deacutependance non seulement des
valeurs drsquoentreacutees mais aussi par conseacutequent des valeurs de sorties)
Il existe deux types de systegravemes seacutequentiels ceux synchrones et ceux
asynchrones
Dans un circuit seacutequentiel synchrone le changement de leacutetat logique de la sortie
est commandeacute par une horloge (nous verrons ccedila en deacutetail bientocirct)
Si le changement de leacutetat logique de sa sortie nest pas commandeacute par une horloge le
circuit est donc asynchrone
DONADIO JEREMY ROBOT-INNOVATIONCOM
Pour finir une derniegravere information nous sera utile pour comprendre les notions qui
vont suivre Le transistor ne peut creacuteer que deux valeurs logiques le 0 si
aucune tension passe et le 1 si une tension suffisamment eacuteleveacute le traverse
Algegravebre de Boole
Lrsquoalgegravebre de Boole est une algegravebre permettant de manipuler les propositions
logiques au moyen drsquoeacutequations matheacutematiques ougrave les reacutesultats seront les valeurs
VRAI et FAUX Ici Nous remplacerons la valeur VRAI par 1 et FAUX par 0
Etant donneacute que tous nos circuits eacutelectroniques sont baseacutes dessus il est important de
bien en comprendre les principes Voici donc les axiomes et postulats de lrsquoalgegravebre de
Boole
Une algegravebre de Boole est constitueacutee de
minus Drsquoun ensemble E
minus De deux eacuteleacutements particuliers de E 0 et 1
minus De deux opeacuterations binaires sur E + et (nous verrons bientocirct agrave quelles
fonctions logiques correspondent ces opeacuterations)
minus Et drsquoune opeacuteration unaire sur E macr (il srsquoagit du compleacutementaire de notre valeur)
Les postulats sont donc les suivant
1+1=1 (non ce nrsquoest ni une blague ni une erreur)
00=0
0+0=0
11=1
10=01=0
1+0=0+1=1
Compleacutementaire de 0 = 1 (donc non(0)=1)
Compleacutementaire de 1=0 (donc non(1)=0)
A noter aussi que non(AB)= non(A)non(B) et que non(A+B)= non(A)+non(B)
Ensuite Anon(A)=0 et A+non(A)=1
Pour finir A+(B+C)=(A+B)+C= (A+C)+B=A+B+C
Cette regravegle marche aussi pour la distributiviteacute A+(BC)=(A+B)(A+C)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les portes logiques
Fiegravere de toutes ces connaissances nous pouvons enfin rentrer dans le vif du sujet voici
donc une liste non exhaustive des portes logiques
AND
Soit deux entreacutees A et B X notre sortie
Pour A=B=0 X=0
Pour A=0 et B=1 X=0
Pour A=1 et B=0 X=1
Et pour A=B=1 X=1
La porte logique AND correspond agrave lrsquoopeacuteration
On a ici F(AB)=AB
OR
Ici la porte logique OR correspond agrave lrsquoopeacuteration +
Nous avons F(AB)=A+B
DONADIO JEREMY ROBOT-INNOVATIONCOM
NOT
La porte logique NOT est en fait le compleacutementaire de la valeur rentreacutee
Donc F(A)=non(A)
XOR
ici on a
F(AB)=AoplusB=AB+non(A)non(B)
NAND
On a la une porte AND+NOT ce qui nous donne F(AB)=non(AB)
DONADIO JEREMY ROBOT-INNOVATIONCOM
NOR
Est repreacutesenteacute ici une porte OR+NOT donc
F(AB)=non(A+B)
XNOR
Il srsquoagit du compleacutementaire du XOR (porte XOR + port NOT) Donc F(AB)=
non(AoplusB)
Tableaux de Karnaugh
Le tableau de karnaugh est une repreacutesentation graphique visant agrave simplifier les
fonctions logiques (Je preacutecise que dans cet exemple nous sommes en laquo binaire
reacutefleacutechi raquo )
Voici comment reacutealiser une table de karnaugh
On commence par eacutecrire (en colonne) la table de veacuteriteacute (voir photo qui suit)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Maintenant que cela est fait nous traccedilons le tableau de karnaugh (voir tableau plus
bas) que nous remplissons par les valeurs de S (agrave lrsquoaide de la table de veacuteriteacute)
Une fois rempli nous devons essayer de regrouper les 1 ensembles par groupes de 2^n
cases (les plus grandes possible)
Dans cet exemple les cases eacutetaient deacutejagrave regroupeacutees
par deux paquets de quatre et un paquet de deux
Nous devons maintenant trouver des portes logiques pour simplifier cette fonction
Nous voyons dans le premier groupe rouge que peu importe la valeur de A ou de C (0
ou 1) le reacutesultat est toujours le mecircme (ici eacutegal agrave un) et que pour B=D=0 le reacutesultat est 1
On sait que non(0)=1
On en deacuteduit qursquoon peut simplifier ce groupe avec F(ABCD)=non(B)non(D)
Avec le mecircme raisonnement pour le groupe vert que A ou D vaillent 0 ou 1 le reacutesultat
ne change pas Pour B=C=1 le reacutesultat est 1 On a donc ici pour ce groupe-ci
F(ABCD)=BC
DONADIO JEREMY ROBOT-INNOVATIONCOM
Pour le dernier groupe seul la valeur de C nrsquoa pas drsquoimportance (car peu importe sa
valeur le reacutesultat reste inchangeacute)
Nous avons D=1=B et A=0 donc pour que le reacutesultat tend vers 0 nous aurons
F(ABCD)=non(A)BD
Finalement nous avons F(ABCD)=non(B)non(D)+ BC+ non(A)BD
Conclusion porte logique
Maintenant que vous avez compris les principales fonctionsportes logiques qui
existent et comment les simplifier (table de karnaugh) vous devez par conseacutequent
mieux comprendre agrave quoi ressemblerait un circuit logique
Un circuit logique nrsquoest que la somme de ces fonctions combinaisons de
fonctions
Les prochains circuits que nous verrons ne seront que des combinaisons de fonctions
logiques il est donc important de comprendre les chapitres preacutecegravedent pour assimiler
la suite du cours
Nous ne parlerons pas de logique combinatoire ici mais si vous ecirctes inteacuteresseacutes pour
avoir plus drsquoinformations sur ce cours et sur la logique combinatoire je vous proposerai
en commentaire le lien drsquoun cours de Monsieur Benoit Decoux qui srsquointitule laquo Circuits
logiques et eacutelectronique numeacuterique raquo Ce livre entrera plus dans les deacutetails techniques
que moi il est tregraves inteacuteressant agrave lire et je vous mets un lien dans le chapitre reacutefeacuterence
pour ceux qui sont inteacuteresseacutes
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les bascules
Nous rentrons enfin dans le monde merveilleux de la logique seacutequentielle Je vous
preacutesenterai ici les bascules les plus connusutiliseacutees
Rappel des portes logiques
BASCULE RS
La bascule la plus simple agrave reacutealiser est la bascule RS Il srsquoagit drsquoune bascule asynchrone
(qui ne fonctionne pas en accord avec lrsquohorloge)
Ou alors
Sa particulariteacute est que les sorties sont connecteacutes aux entreacutees (faisant de ce circuit
un circuit laquo seacutequentiel raquo car le reacutesultat Q(n+1) est influenceacute par le reacutesultat Q(n)
Cette bascule est composeacutee de portes NAND ou de portes NOR
Le premier scheacutema correspond agrave la bascule RS avec les NAND (et NOR aussi car les
valeurs drsquoentreacutees sont non(R) et non(S))
La deuxiegraveme photo est celle faite avec la bascule NOR
DONADIO JEREMY ROBOT-INNOVATIONCOM
Voici sa table de veacuteriteacute
Lrsquointeacuterecirct de cette bascule est la mise en meacutemoire drsquoun BIT
En effet si R=S=0 la valeur Q(n)=Q(n+1)
La bascule permet donc de retenir une valeur binaire
Le R vient du mot Reset ce qui implique quand sa valeur est eacutegale agrave 1 (lorsqursquoil est
laquo activeacute raquo) la valeur de Q devienne 0
Le S vient du mot laquo Set raquo ce qui explique aussi que quand le Set est agrave 1 (qursquoil est
laquo activeacute raquo) la valeur de Q se met agrave 1
La combinaison R=S=1 est ce que lrsquoon appelle une combinaison interdite
Je vous encourage agrave tracer des bascules RS et drsquoessayer de retomber sur la bonne table
de veacuteriteacute
BASCULE RSH
Jrsquoai dit que la bascule RS eacutetait une bascule asynchrone Voyons donc agrave quoi
ressemblerait une bascule RS synchroniseacutee par une horloge H (SRH)
Il srsquoagit donc drsquoune bascule RS auquel on a ajouteacute une troisiegraveme entreacute H (qui
symbolise lrsquohorloge)
Cette Horloge (entreacutee H) envoi des impulsions agrave intervalles reacuteguliers On peut voir sur
le graphique ci-dessous les impulsions laquo reacuteguliegraveres raquo envoyeacutees par lrsquohorloge
DONADIO JEREMY ROBOT-INNOVATIONCOM
Sur ce graphique nous voyons que si H=0 le circuit meacutemorise lrsquoeacutetat preacutecegravedent (donc
Q(n)=Q(n+1) ) Les valeurs de Q sont actualiseacutees tous les fronts montant (sur ce
scheacutemas) Cela signifie que pour H=1 La bascule RSH fonctionne comme une bascule
RS
Voici donc sa table de veacuteriteacute
BASCULE D (ASYNCHRONE)
Lrsquointeacuterecirct de cette bascule est de faire en sorte que notre sortie D soit eacutegale au R drsquoune
bascule RS et que non(D) soit eacutegale au S
De cette maniegravere la premiegravere et la derniegravere ligne de la table de veacuteriteacute de RS (lagrave ou R=S)
disparait pour creacuteer une bascule ou D=Q(n)
Ou plutocirct
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE D(SYNCHRONE)
Une bascule D asynchrone nrsquoa guegravere drsquointeacuterecirct vu qursquoelle recopie uniquement lrsquoentreacute D
sur la sortie Q
Si on rajoute une horloge H (ou plutocirct V si on regarde le scheacutema ci-dessous) on
pourra synchroniser la derniegravere valeur eacutetablie
Pour V=0 la valeur Q(n) est en meacutemoire et pour V=1 le circuit fonctionne comme une
bascule D classique
BASCULE JK
La bascule JK est une bascule RS modifieacute (avec R=Jnon(Q) et S= KQ )
Lrsquointeacuterecirct de cette bascule (par rapport agrave la bascule RS) est que lrsquoeacutetat R=S=1 inutilisable
est maintenant utiliseacute Et il vaut non(Q)
Voici sa table de veacuteriteacute
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE JKH
Une bascule JKH est une bascule JK avec une troisiegraveme entreacutee pour lrsquohorloge Il srsquoagit
donc juste drsquoune bascule JK synchrone Son fonctionnement est le mecircme que pour
les bascule synchrone preacutesenteacutees preacuteceacutedemment
BASCULE JK MAITRE-ESCLAVE
Il srsquoagit de deux bascules JK brancheacutes en cascade comme ceci
Dans une bascule JK pour H=J=K=1 on a la sortie Q qui oscille entre 0 et 1 pendant
toute la dureacutee de lrsquoeacutetat haut du signal drsquohorloge La bascule JK maitre-esclave remeacutedie
agrave ce problegraveme
BASCULE T
Une bascule T nrsquoest en fait que la liaison des deux entreacutees drsquoune bascule JK Cela
nous permet de simplifier la table de veacuteriteacute drsquoune bascule JK pour ne garder que
les lignes ou J=K (il srsquoagit du mecircme type de laquo simplification raquo qursquoune bascule D avec
une RS)
Ainsi si T=0 rarr Q=(n+1)=Q(n) et si T=1 rarr Q(n+1)=non(Q(n))
Il existe aussi une bascule T synchrone mais je nrsquoen parlerai pas car le principe est
toujours le mecircme et je crois que vous avez compris le principe
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les registres
Ccedila y est On rentre enfin dans le vif du sujet et accessoirement la partie la plus
importante et inteacuteressante Commenccedilons par deacutefinir ce qursquoest un registre
Un registre est un ensemble de bascules synchroniseacutees par la mecircme horloge
Crsquoest gracircce agrave eux qursquoun ordinateur peut retenir des valeurs (mise en meacutemoire de n
BIT agrave lrsquoaide n bascules) et faires des opeacuterations basiques (deacutecalage rotation
translation etc)
Concregravetement un registre permet de meacutemoriser de faccedilon temporaire un mot de N bits
en attendant son traitement ulteacuterieur
Ils sont utiliseacutes dans les microprocesseurs
Un registre permet aussi de transfeacuterer une information et de faire des traitements
simples sur les eacuteleacutements binaires comme des deacutecalages ou des rotations
Il existe deux cateacutegories de registres les registres de meacutemoire et les registres agrave
deacutecalage ce qui fait quatre types de registres qui sont
minus Registre entreacutee parallegravele sortie parallegravele (meacutemoire)
minus Registre entreacutee seacuterie sortie seacuterie (deacutecalage)
minus Registre entreacutee parallegravele sortie seacuterie (transformation parallegravele-seacuterie)
minus Registre entreacutee seacuterie sortie parallegravele (transformation seacuterie-parallegravele)
Les registres sont geacuteneacuteralement faits avec des bascules D ou JK
REGISTRE ENTREE PARALLELE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus N sorties de donneacutee
minus N bascules
Crsquoest ce type de registre qui est utiliseacute pour meacutemoriser des donneacutees car toutes les
sorties sont disponible en mecircme temps
DONADIO JEREMY ROBOT-INNOVATIONCOM
REGISTRE ENTREE SERIE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus 1 sortie de donneacutee
minus N bascules
minus Une entreacutee de commande du deacutecalage (horloge)
Crsquoest le type de registre utiliseacute pour effectuer des deacutecalages
REGISTRE ENTREE PARALLELE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus 1 sortie de donneacutee
minus N bascules
DONADIO JEREMY ROBOT-INNOVATIONCOM
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation parallegravele- seacuterie des
donneacutees
REGISTRE ENTREE SERIE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus N sorties de donneacutee
minus N bascules
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation seacuterie-parallegravele des
donneacutees
LE DECALAGE
Un deacutecalage correspond agrave deacutecaler la valeur de chaque BIT vers la gauche ou
vers la droite
Deacutecalage agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Deacutecalage agrave gauche
LA ROTATION
Une rotation est un deacutecalage circulaire Il existe la aussi une rotation par la droite
et par la gauche
Rotation agrave gauche
Rotation agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Cas concret Les registres Arduino
Nous allons finir avec un cas concret Nous nous inteacuteresserons ici aux registres de
lrsquoArduino Uno
Voici les trois ports pour les microcontrocircleurs utiliseacutes pour les cartes Arduino
(lATmega8 et lATmega 168 328)
Port B (broches numeacuteriques de 8 to 13)
Port C (broches analogiquesnumeacuteriques)
Port D (broches numeacuteriques 0 to 7)
Chacun de ses ports est composeacute drsquoun registre
Opeacuterateurs BIT agrave BIT
Faisons une petite halte sur certains opeacuterateurs binaire Crsquoest important drsquoen reparler
une derniegravere fois pour bien comprendre leurs utilisations pratiques
OPERATEUR BIT A BIT ET (amp)
Un Opeacuterateur AND fonctionne de cette maniegravere si les 2 bits dentreacutee sont agrave 1 le
reacutesultat de sortie est 1 sinon le reacutesultat de sortie est 0
Cas pratique
int a = 92 en binaire 0000000001011100
int b = 101 en binaire 0000000001100101
int c = a amp b reacutesultat 0000000001000100 ou 68 en deacutecimal
OPERATEUR BIT A BIT OU (|)
Ici lrsquoopeacuterateur OU donne 1 si lun des deux ou les deux bits dentreacutee est 1 sinon il
renvoie 0
Cas pratique
int a = 92 in binary 0000000001011100
int b = 101 in binary 0000000001100101
int c = a | b result 0000000001111101 ou 125 in deacutecimal
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Sommaire
1 Introduction
2 Algegravebre de Boole
3 Portes logiques basiques
minus AND
minus OR
minus XOR
minus NOT
minus NAND
minus NOR
minus XNOR
4 Tableaux de Karnaugh
5 Les bascules
minus Bascule RS (asynchrone)
minus Bascule RSH (synchrone)
minus Bascule D (asynchrone)
minus Bascule D (synchrone)
minus Bascule JK (asynchrone)
minus Bascule JKH (synchrone)
minus Bascule T
6 Les registres
minus Registre entreacutee parallegravele sortie parallegravele (meacutemoire)
minus Registre entreacutee seacuterie sortie seacuterie (deacutecalage)
minus Registre entreacutee parallegravele sortie seacuterie (transformation parallegravele-seacuterie)
minus Registre entreacutee seacuterie sortie parallegravele (transformation seacuterie-parallegravele)
minus Deacutecalage
minus Rotation
7 Cas concret Les registres Arduino Uno
8 Reacutefeacuterences
DONADIO JEREMY ROBOT-INNOVATIONCOM
1 Introduction
Le transistor est la brique avec laquelle sont construits tous les circuits
eacutelectroniques drsquoaujourdrsquohui Crsquoest avec ccedila que lrsquoon arrive agrave construire des
architectures aussi complexes que celles des MCU Mais comment est-ce possible
Aujourdrsquohui nous allons nous pencher sur les architectures de bases permettant de
reacutealiser des circuits eacutelectriques simples pour mieux comprendre comment
fonctionnerai une architecture plus complexe tel qursquoun MCU
Un prochain cours arrivera surement ougrave nous parlerons plus en deacutetail des transistors
et autres composants eacutelectroniques
Nous ne nous inteacuteresserons ici qursquoagrave lrsquoaspect matheacutematique Logique qui se cache
derriegravere ces merveilleuses architectures eacutelectroniques Nous finirons tout de mecircme
avec un cas concret
Mais avant de commencer parlons un peu des deux types de logiques qui existent
minus La logique seacutequentielle
minus La logique combinatoire
En logique combinatoire lrsquoeacutetat des sorties agrave un instant donneacute ne deacutepend que du
circuit et de la valeur des entreacutees agrave cet instant tandis qursquoen logique seacutequentielle
lrsquoeacutetat de sortie du circuit agrave un instant donneacute deacutepend non seulement de la valeur des
entreacutees agrave cet instant mais aussi de la valeur des sorties aux instants anteacuterieurs
La grande diffeacuterence entre la logique seacutequentielle et combinatoire est donc le fait que
la logique seacutequentielle fait intervenir la notion de meacutemoire
Il suffit en geacuteneacuterale drsquoavoir un systegraveme boucleacute pour passer en logique seacutequentielle
(car la sortie deviendra une entreacutee ce qui entrainera la deacutependance non seulement des
valeurs drsquoentreacutees mais aussi par conseacutequent des valeurs de sorties)
Il existe deux types de systegravemes seacutequentiels ceux synchrones et ceux
asynchrones
Dans un circuit seacutequentiel synchrone le changement de leacutetat logique de la sortie
est commandeacute par une horloge (nous verrons ccedila en deacutetail bientocirct)
Si le changement de leacutetat logique de sa sortie nest pas commandeacute par une horloge le
circuit est donc asynchrone
DONADIO JEREMY ROBOT-INNOVATIONCOM
Pour finir une derniegravere information nous sera utile pour comprendre les notions qui
vont suivre Le transistor ne peut creacuteer que deux valeurs logiques le 0 si
aucune tension passe et le 1 si une tension suffisamment eacuteleveacute le traverse
Algegravebre de Boole
Lrsquoalgegravebre de Boole est une algegravebre permettant de manipuler les propositions
logiques au moyen drsquoeacutequations matheacutematiques ougrave les reacutesultats seront les valeurs
VRAI et FAUX Ici Nous remplacerons la valeur VRAI par 1 et FAUX par 0
Etant donneacute que tous nos circuits eacutelectroniques sont baseacutes dessus il est important de
bien en comprendre les principes Voici donc les axiomes et postulats de lrsquoalgegravebre de
Boole
Une algegravebre de Boole est constitueacutee de
minus Drsquoun ensemble E
minus De deux eacuteleacutements particuliers de E 0 et 1
minus De deux opeacuterations binaires sur E + et (nous verrons bientocirct agrave quelles
fonctions logiques correspondent ces opeacuterations)
minus Et drsquoune opeacuteration unaire sur E macr (il srsquoagit du compleacutementaire de notre valeur)
Les postulats sont donc les suivant
1+1=1 (non ce nrsquoest ni une blague ni une erreur)
00=0
0+0=0
11=1
10=01=0
1+0=0+1=1
Compleacutementaire de 0 = 1 (donc non(0)=1)
Compleacutementaire de 1=0 (donc non(1)=0)
A noter aussi que non(AB)= non(A)non(B) et que non(A+B)= non(A)+non(B)
Ensuite Anon(A)=0 et A+non(A)=1
Pour finir A+(B+C)=(A+B)+C= (A+C)+B=A+B+C
Cette regravegle marche aussi pour la distributiviteacute A+(BC)=(A+B)(A+C)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les portes logiques
Fiegravere de toutes ces connaissances nous pouvons enfin rentrer dans le vif du sujet voici
donc une liste non exhaustive des portes logiques
AND
Soit deux entreacutees A et B X notre sortie
Pour A=B=0 X=0
Pour A=0 et B=1 X=0
Pour A=1 et B=0 X=1
Et pour A=B=1 X=1
La porte logique AND correspond agrave lrsquoopeacuteration
On a ici F(AB)=AB
OR
Ici la porte logique OR correspond agrave lrsquoopeacuteration +
Nous avons F(AB)=A+B
DONADIO JEREMY ROBOT-INNOVATIONCOM
NOT
La porte logique NOT est en fait le compleacutementaire de la valeur rentreacutee
Donc F(A)=non(A)
XOR
ici on a
F(AB)=AoplusB=AB+non(A)non(B)
NAND
On a la une porte AND+NOT ce qui nous donne F(AB)=non(AB)
DONADIO JEREMY ROBOT-INNOVATIONCOM
NOR
Est repreacutesenteacute ici une porte OR+NOT donc
F(AB)=non(A+B)
XNOR
Il srsquoagit du compleacutementaire du XOR (porte XOR + port NOT) Donc F(AB)=
non(AoplusB)
Tableaux de Karnaugh
Le tableau de karnaugh est une repreacutesentation graphique visant agrave simplifier les
fonctions logiques (Je preacutecise que dans cet exemple nous sommes en laquo binaire
reacutefleacutechi raquo )
Voici comment reacutealiser une table de karnaugh
On commence par eacutecrire (en colonne) la table de veacuteriteacute (voir photo qui suit)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Maintenant que cela est fait nous traccedilons le tableau de karnaugh (voir tableau plus
bas) que nous remplissons par les valeurs de S (agrave lrsquoaide de la table de veacuteriteacute)
Une fois rempli nous devons essayer de regrouper les 1 ensembles par groupes de 2^n
cases (les plus grandes possible)
Dans cet exemple les cases eacutetaient deacutejagrave regroupeacutees
par deux paquets de quatre et un paquet de deux
Nous devons maintenant trouver des portes logiques pour simplifier cette fonction
Nous voyons dans le premier groupe rouge que peu importe la valeur de A ou de C (0
ou 1) le reacutesultat est toujours le mecircme (ici eacutegal agrave un) et que pour B=D=0 le reacutesultat est 1
On sait que non(0)=1
On en deacuteduit qursquoon peut simplifier ce groupe avec F(ABCD)=non(B)non(D)
Avec le mecircme raisonnement pour le groupe vert que A ou D vaillent 0 ou 1 le reacutesultat
ne change pas Pour B=C=1 le reacutesultat est 1 On a donc ici pour ce groupe-ci
F(ABCD)=BC
DONADIO JEREMY ROBOT-INNOVATIONCOM
Pour le dernier groupe seul la valeur de C nrsquoa pas drsquoimportance (car peu importe sa
valeur le reacutesultat reste inchangeacute)
Nous avons D=1=B et A=0 donc pour que le reacutesultat tend vers 0 nous aurons
F(ABCD)=non(A)BD
Finalement nous avons F(ABCD)=non(B)non(D)+ BC+ non(A)BD
Conclusion porte logique
Maintenant que vous avez compris les principales fonctionsportes logiques qui
existent et comment les simplifier (table de karnaugh) vous devez par conseacutequent
mieux comprendre agrave quoi ressemblerait un circuit logique
Un circuit logique nrsquoest que la somme de ces fonctions combinaisons de
fonctions
Les prochains circuits que nous verrons ne seront que des combinaisons de fonctions
logiques il est donc important de comprendre les chapitres preacutecegravedent pour assimiler
la suite du cours
Nous ne parlerons pas de logique combinatoire ici mais si vous ecirctes inteacuteresseacutes pour
avoir plus drsquoinformations sur ce cours et sur la logique combinatoire je vous proposerai
en commentaire le lien drsquoun cours de Monsieur Benoit Decoux qui srsquointitule laquo Circuits
logiques et eacutelectronique numeacuterique raquo Ce livre entrera plus dans les deacutetails techniques
que moi il est tregraves inteacuteressant agrave lire et je vous mets un lien dans le chapitre reacutefeacuterence
pour ceux qui sont inteacuteresseacutes
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les bascules
Nous rentrons enfin dans le monde merveilleux de la logique seacutequentielle Je vous
preacutesenterai ici les bascules les plus connusutiliseacutees
Rappel des portes logiques
BASCULE RS
La bascule la plus simple agrave reacutealiser est la bascule RS Il srsquoagit drsquoune bascule asynchrone
(qui ne fonctionne pas en accord avec lrsquohorloge)
Ou alors
Sa particulariteacute est que les sorties sont connecteacutes aux entreacutees (faisant de ce circuit
un circuit laquo seacutequentiel raquo car le reacutesultat Q(n+1) est influenceacute par le reacutesultat Q(n)
Cette bascule est composeacutee de portes NAND ou de portes NOR
Le premier scheacutema correspond agrave la bascule RS avec les NAND (et NOR aussi car les
valeurs drsquoentreacutees sont non(R) et non(S))
La deuxiegraveme photo est celle faite avec la bascule NOR
DONADIO JEREMY ROBOT-INNOVATIONCOM
Voici sa table de veacuteriteacute
Lrsquointeacuterecirct de cette bascule est la mise en meacutemoire drsquoun BIT
En effet si R=S=0 la valeur Q(n)=Q(n+1)
La bascule permet donc de retenir une valeur binaire
Le R vient du mot Reset ce qui implique quand sa valeur est eacutegale agrave 1 (lorsqursquoil est
laquo activeacute raquo) la valeur de Q devienne 0
Le S vient du mot laquo Set raquo ce qui explique aussi que quand le Set est agrave 1 (qursquoil est
laquo activeacute raquo) la valeur de Q se met agrave 1
La combinaison R=S=1 est ce que lrsquoon appelle une combinaison interdite
Je vous encourage agrave tracer des bascules RS et drsquoessayer de retomber sur la bonne table
de veacuteriteacute
BASCULE RSH
Jrsquoai dit que la bascule RS eacutetait une bascule asynchrone Voyons donc agrave quoi
ressemblerait une bascule RS synchroniseacutee par une horloge H (SRH)
Il srsquoagit donc drsquoune bascule RS auquel on a ajouteacute une troisiegraveme entreacute H (qui
symbolise lrsquohorloge)
Cette Horloge (entreacutee H) envoi des impulsions agrave intervalles reacuteguliers On peut voir sur
le graphique ci-dessous les impulsions laquo reacuteguliegraveres raquo envoyeacutees par lrsquohorloge
DONADIO JEREMY ROBOT-INNOVATIONCOM
Sur ce graphique nous voyons que si H=0 le circuit meacutemorise lrsquoeacutetat preacutecegravedent (donc
Q(n)=Q(n+1) ) Les valeurs de Q sont actualiseacutees tous les fronts montant (sur ce
scheacutemas) Cela signifie que pour H=1 La bascule RSH fonctionne comme une bascule
RS
Voici donc sa table de veacuteriteacute
BASCULE D (ASYNCHRONE)
Lrsquointeacuterecirct de cette bascule est de faire en sorte que notre sortie D soit eacutegale au R drsquoune
bascule RS et que non(D) soit eacutegale au S
De cette maniegravere la premiegravere et la derniegravere ligne de la table de veacuteriteacute de RS (lagrave ou R=S)
disparait pour creacuteer une bascule ou D=Q(n)
Ou plutocirct
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE D(SYNCHRONE)
Une bascule D asynchrone nrsquoa guegravere drsquointeacuterecirct vu qursquoelle recopie uniquement lrsquoentreacute D
sur la sortie Q
Si on rajoute une horloge H (ou plutocirct V si on regarde le scheacutema ci-dessous) on
pourra synchroniser la derniegravere valeur eacutetablie
Pour V=0 la valeur Q(n) est en meacutemoire et pour V=1 le circuit fonctionne comme une
bascule D classique
BASCULE JK
La bascule JK est une bascule RS modifieacute (avec R=Jnon(Q) et S= KQ )
Lrsquointeacuterecirct de cette bascule (par rapport agrave la bascule RS) est que lrsquoeacutetat R=S=1 inutilisable
est maintenant utiliseacute Et il vaut non(Q)
Voici sa table de veacuteriteacute
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE JKH
Une bascule JKH est une bascule JK avec une troisiegraveme entreacutee pour lrsquohorloge Il srsquoagit
donc juste drsquoune bascule JK synchrone Son fonctionnement est le mecircme que pour
les bascule synchrone preacutesenteacutees preacuteceacutedemment
BASCULE JK MAITRE-ESCLAVE
Il srsquoagit de deux bascules JK brancheacutes en cascade comme ceci
Dans une bascule JK pour H=J=K=1 on a la sortie Q qui oscille entre 0 et 1 pendant
toute la dureacutee de lrsquoeacutetat haut du signal drsquohorloge La bascule JK maitre-esclave remeacutedie
agrave ce problegraveme
BASCULE T
Une bascule T nrsquoest en fait que la liaison des deux entreacutees drsquoune bascule JK Cela
nous permet de simplifier la table de veacuteriteacute drsquoune bascule JK pour ne garder que
les lignes ou J=K (il srsquoagit du mecircme type de laquo simplification raquo qursquoune bascule D avec
une RS)
Ainsi si T=0 rarr Q=(n+1)=Q(n) et si T=1 rarr Q(n+1)=non(Q(n))
Il existe aussi une bascule T synchrone mais je nrsquoen parlerai pas car le principe est
toujours le mecircme et je crois que vous avez compris le principe
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les registres
Ccedila y est On rentre enfin dans le vif du sujet et accessoirement la partie la plus
importante et inteacuteressante Commenccedilons par deacutefinir ce qursquoest un registre
Un registre est un ensemble de bascules synchroniseacutees par la mecircme horloge
Crsquoest gracircce agrave eux qursquoun ordinateur peut retenir des valeurs (mise en meacutemoire de n
BIT agrave lrsquoaide n bascules) et faires des opeacuterations basiques (deacutecalage rotation
translation etc)
Concregravetement un registre permet de meacutemoriser de faccedilon temporaire un mot de N bits
en attendant son traitement ulteacuterieur
Ils sont utiliseacutes dans les microprocesseurs
Un registre permet aussi de transfeacuterer une information et de faire des traitements
simples sur les eacuteleacutements binaires comme des deacutecalages ou des rotations
Il existe deux cateacutegories de registres les registres de meacutemoire et les registres agrave
deacutecalage ce qui fait quatre types de registres qui sont
minus Registre entreacutee parallegravele sortie parallegravele (meacutemoire)
minus Registre entreacutee seacuterie sortie seacuterie (deacutecalage)
minus Registre entreacutee parallegravele sortie seacuterie (transformation parallegravele-seacuterie)
minus Registre entreacutee seacuterie sortie parallegravele (transformation seacuterie-parallegravele)
Les registres sont geacuteneacuteralement faits avec des bascules D ou JK
REGISTRE ENTREE PARALLELE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus N sorties de donneacutee
minus N bascules
Crsquoest ce type de registre qui est utiliseacute pour meacutemoriser des donneacutees car toutes les
sorties sont disponible en mecircme temps
DONADIO JEREMY ROBOT-INNOVATIONCOM
REGISTRE ENTREE SERIE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus 1 sortie de donneacutee
minus N bascules
minus Une entreacutee de commande du deacutecalage (horloge)
Crsquoest le type de registre utiliseacute pour effectuer des deacutecalages
REGISTRE ENTREE PARALLELE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus 1 sortie de donneacutee
minus N bascules
DONADIO JEREMY ROBOT-INNOVATIONCOM
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation parallegravele- seacuterie des
donneacutees
REGISTRE ENTREE SERIE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus N sorties de donneacutee
minus N bascules
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation seacuterie-parallegravele des
donneacutees
LE DECALAGE
Un deacutecalage correspond agrave deacutecaler la valeur de chaque BIT vers la gauche ou
vers la droite
Deacutecalage agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Deacutecalage agrave gauche
LA ROTATION
Une rotation est un deacutecalage circulaire Il existe la aussi une rotation par la droite
et par la gauche
Rotation agrave gauche
Rotation agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Cas concret Les registres Arduino
Nous allons finir avec un cas concret Nous nous inteacuteresserons ici aux registres de
lrsquoArduino Uno
Voici les trois ports pour les microcontrocircleurs utiliseacutes pour les cartes Arduino
(lATmega8 et lATmega 168 328)
Port B (broches numeacuteriques de 8 to 13)
Port C (broches analogiquesnumeacuteriques)
Port D (broches numeacuteriques 0 to 7)
Chacun de ses ports est composeacute drsquoun registre
Opeacuterateurs BIT agrave BIT
Faisons une petite halte sur certains opeacuterateurs binaire Crsquoest important drsquoen reparler
une derniegravere fois pour bien comprendre leurs utilisations pratiques
OPERATEUR BIT A BIT ET (amp)
Un Opeacuterateur AND fonctionne de cette maniegravere si les 2 bits dentreacutee sont agrave 1 le
reacutesultat de sortie est 1 sinon le reacutesultat de sortie est 0
Cas pratique
int a = 92 en binaire 0000000001011100
int b = 101 en binaire 0000000001100101
int c = a amp b reacutesultat 0000000001000100 ou 68 en deacutecimal
OPERATEUR BIT A BIT OU (|)
Ici lrsquoopeacuterateur OU donne 1 si lun des deux ou les deux bits dentreacutee est 1 sinon il
renvoie 0
Cas pratique
int a = 92 in binary 0000000001011100
int b = 101 in binary 0000000001100101
int c = a | b result 0000000001111101 ou 125 in deacutecimal
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
1 Introduction
Le transistor est la brique avec laquelle sont construits tous les circuits
eacutelectroniques drsquoaujourdrsquohui Crsquoest avec ccedila que lrsquoon arrive agrave construire des
architectures aussi complexes que celles des MCU Mais comment est-ce possible
Aujourdrsquohui nous allons nous pencher sur les architectures de bases permettant de
reacutealiser des circuits eacutelectriques simples pour mieux comprendre comment
fonctionnerai une architecture plus complexe tel qursquoun MCU
Un prochain cours arrivera surement ougrave nous parlerons plus en deacutetail des transistors
et autres composants eacutelectroniques
Nous ne nous inteacuteresserons ici qursquoagrave lrsquoaspect matheacutematique Logique qui se cache
derriegravere ces merveilleuses architectures eacutelectroniques Nous finirons tout de mecircme
avec un cas concret
Mais avant de commencer parlons un peu des deux types de logiques qui existent
minus La logique seacutequentielle
minus La logique combinatoire
En logique combinatoire lrsquoeacutetat des sorties agrave un instant donneacute ne deacutepend que du
circuit et de la valeur des entreacutees agrave cet instant tandis qursquoen logique seacutequentielle
lrsquoeacutetat de sortie du circuit agrave un instant donneacute deacutepend non seulement de la valeur des
entreacutees agrave cet instant mais aussi de la valeur des sorties aux instants anteacuterieurs
La grande diffeacuterence entre la logique seacutequentielle et combinatoire est donc le fait que
la logique seacutequentielle fait intervenir la notion de meacutemoire
Il suffit en geacuteneacuterale drsquoavoir un systegraveme boucleacute pour passer en logique seacutequentielle
(car la sortie deviendra une entreacutee ce qui entrainera la deacutependance non seulement des
valeurs drsquoentreacutees mais aussi par conseacutequent des valeurs de sorties)
Il existe deux types de systegravemes seacutequentiels ceux synchrones et ceux
asynchrones
Dans un circuit seacutequentiel synchrone le changement de leacutetat logique de la sortie
est commandeacute par une horloge (nous verrons ccedila en deacutetail bientocirct)
Si le changement de leacutetat logique de sa sortie nest pas commandeacute par une horloge le
circuit est donc asynchrone
DONADIO JEREMY ROBOT-INNOVATIONCOM
Pour finir une derniegravere information nous sera utile pour comprendre les notions qui
vont suivre Le transistor ne peut creacuteer que deux valeurs logiques le 0 si
aucune tension passe et le 1 si une tension suffisamment eacuteleveacute le traverse
Algegravebre de Boole
Lrsquoalgegravebre de Boole est une algegravebre permettant de manipuler les propositions
logiques au moyen drsquoeacutequations matheacutematiques ougrave les reacutesultats seront les valeurs
VRAI et FAUX Ici Nous remplacerons la valeur VRAI par 1 et FAUX par 0
Etant donneacute que tous nos circuits eacutelectroniques sont baseacutes dessus il est important de
bien en comprendre les principes Voici donc les axiomes et postulats de lrsquoalgegravebre de
Boole
Une algegravebre de Boole est constitueacutee de
minus Drsquoun ensemble E
minus De deux eacuteleacutements particuliers de E 0 et 1
minus De deux opeacuterations binaires sur E + et (nous verrons bientocirct agrave quelles
fonctions logiques correspondent ces opeacuterations)
minus Et drsquoune opeacuteration unaire sur E macr (il srsquoagit du compleacutementaire de notre valeur)
Les postulats sont donc les suivant
1+1=1 (non ce nrsquoest ni une blague ni une erreur)
00=0
0+0=0
11=1
10=01=0
1+0=0+1=1
Compleacutementaire de 0 = 1 (donc non(0)=1)
Compleacutementaire de 1=0 (donc non(1)=0)
A noter aussi que non(AB)= non(A)non(B) et que non(A+B)= non(A)+non(B)
Ensuite Anon(A)=0 et A+non(A)=1
Pour finir A+(B+C)=(A+B)+C= (A+C)+B=A+B+C
Cette regravegle marche aussi pour la distributiviteacute A+(BC)=(A+B)(A+C)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les portes logiques
Fiegravere de toutes ces connaissances nous pouvons enfin rentrer dans le vif du sujet voici
donc une liste non exhaustive des portes logiques
AND
Soit deux entreacutees A et B X notre sortie
Pour A=B=0 X=0
Pour A=0 et B=1 X=0
Pour A=1 et B=0 X=1
Et pour A=B=1 X=1
La porte logique AND correspond agrave lrsquoopeacuteration
On a ici F(AB)=AB
OR
Ici la porte logique OR correspond agrave lrsquoopeacuteration +
Nous avons F(AB)=A+B
DONADIO JEREMY ROBOT-INNOVATIONCOM
NOT
La porte logique NOT est en fait le compleacutementaire de la valeur rentreacutee
Donc F(A)=non(A)
XOR
ici on a
F(AB)=AoplusB=AB+non(A)non(B)
NAND
On a la une porte AND+NOT ce qui nous donne F(AB)=non(AB)
DONADIO JEREMY ROBOT-INNOVATIONCOM
NOR
Est repreacutesenteacute ici une porte OR+NOT donc
F(AB)=non(A+B)
XNOR
Il srsquoagit du compleacutementaire du XOR (porte XOR + port NOT) Donc F(AB)=
non(AoplusB)
Tableaux de Karnaugh
Le tableau de karnaugh est une repreacutesentation graphique visant agrave simplifier les
fonctions logiques (Je preacutecise que dans cet exemple nous sommes en laquo binaire
reacutefleacutechi raquo )
Voici comment reacutealiser une table de karnaugh
On commence par eacutecrire (en colonne) la table de veacuteriteacute (voir photo qui suit)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Maintenant que cela est fait nous traccedilons le tableau de karnaugh (voir tableau plus
bas) que nous remplissons par les valeurs de S (agrave lrsquoaide de la table de veacuteriteacute)
Une fois rempli nous devons essayer de regrouper les 1 ensembles par groupes de 2^n
cases (les plus grandes possible)
Dans cet exemple les cases eacutetaient deacutejagrave regroupeacutees
par deux paquets de quatre et un paquet de deux
Nous devons maintenant trouver des portes logiques pour simplifier cette fonction
Nous voyons dans le premier groupe rouge que peu importe la valeur de A ou de C (0
ou 1) le reacutesultat est toujours le mecircme (ici eacutegal agrave un) et que pour B=D=0 le reacutesultat est 1
On sait que non(0)=1
On en deacuteduit qursquoon peut simplifier ce groupe avec F(ABCD)=non(B)non(D)
Avec le mecircme raisonnement pour le groupe vert que A ou D vaillent 0 ou 1 le reacutesultat
ne change pas Pour B=C=1 le reacutesultat est 1 On a donc ici pour ce groupe-ci
F(ABCD)=BC
DONADIO JEREMY ROBOT-INNOVATIONCOM
Pour le dernier groupe seul la valeur de C nrsquoa pas drsquoimportance (car peu importe sa
valeur le reacutesultat reste inchangeacute)
Nous avons D=1=B et A=0 donc pour que le reacutesultat tend vers 0 nous aurons
F(ABCD)=non(A)BD
Finalement nous avons F(ABCD)=non(B)non(D)+ BC+ non(A)BD
Conclusion porte logique
Maintenant que vous avez compris les principales fonctionsportes logiques qui
existent et comment les simplifier (table de karnaugh) vous devez par conseacutequent
mieux comprendre agrave quoi ressemblerait un circuit logique
Un circuit logique nrsquoest que la somme de ces fonctions combinaisons de
fonctions
Les prochains circuits que nous verrons ne seront que des combinaisons de fonctions
logiques il est donc important de comprendre les chapitres preacutecegravedent pour assimiler
la suite du cours
Nous ne parlerons pas de logique combinatoire ici mais si vous ecirctes inteacuteresseacutes pour
avoir plus drsquoinformations sur ce cours et sur la logique combinatoire je vous proposerai
en commentaire le lien drsquoun cours de Monsieur Benoit Decoux qui srsquointitule laquo Circuits
logiques et eacutelectronique numeacuterique raquo Ce livre entrera plus dans les deacutetails techniques
que moi il est tregraves inteacuteressant agrave lire et je vous mets un lien dans le chapitre reacutefeacuterence
pour ceux qui sont inteacuteresseacutes
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les bascules
Nous rentrons enfin dans le monde merveilleux de la logique seacutequentielle Je vous
preacutesenterai ici les bascules les plus connusutiliseacutees
Rappel des portes logiques
BASCULE RS
La bascule la plus simple agrave reacutealiser est la bascule RS Il srsquoagit drsquoune bascule asynchrone
(qui ne fonctionne pas en accord avec lrsquohorloge)
Ou alors
Sa particulariteacute est que les sorties sont connecteacutes aux entreacutees (faisant de ce circuit
un circuit laquo seacutequentiel raquo car le reacutesultat Q(n+1) est influenceacute par le reacutesultat Q(n)
Cette bascule est composeacutee de portes NAND ou de portes NOR
Le premier scheacutema correspond agrave la bascule RS avec les NAND (et NOR aussi car les
valeurs drsquoentreacutees sont non(R) et non(S))
La deuxiegraveme photo est celle faite avec la bascule NOR
DONADIO JEREMY ROBOT-INNOVATIONCOM
Voici sa table de veacuteriteacute
Lrsquointeacuterecirct de cette bascule est la mise en meacutemoire drsquoun BIT
En effet si R=S=0 la valeur Q(n)=Q(n+1)
La bascule permet donc de retenir une valeur binaire
Le R vient du mot Reset ce qui implique quand sa valeur est eacutegale agrave 1 (lorsqursquoil est
laquo activeacute raquo) la valeur de Q devienne 0
Le S vient du mot laquo Set raquo ce qui explique aussi que quand le Set est agrave 1 (qursquoil est
laquo activeacute raquo) la valeur de Q se met agrave 1
La combinaison R=S=1 est ce que lrsquoon appelle une combinaison interdite
Je vous encourage agrave tracer des bascules RS et drsquoessayer de retomber sur la bonne table
de veacuteriteacute
BASCULE RSH
Jrsquoai dit que la bascule RS eacutetait une bascule asynchrone Voyons donc agrave quoi
ressemblerait une bascule RS synchroniseacutee par une horloge H (SRH)
Il srsquoagit donc drsquoune bascule RS auquel on a ajouteacute une troisiegraveme entreacute H (qui
symbolise lrsquohorloge)
Cette Horloge (entreacutee H) envoi des impulsions agrave intervalles reacuteguliers On peut voir sur
le graphique ci-dessous les impulsions laquo reacuteguliegraveres raquo envoyeacutees par lrsquohorloge
DONADIO JEREMY ROBOT-INNOVATIONCOM
Sur ce graphique nous voyons que si H=0 le circuit meacutemorise lrsquoeacutetat preacutecegravedent (donc
Q(n)=Q(n+1) ) Les valeurs de Q sont actualiseacutees tous les fronts montant (sur ce
scheacutemas) Cela signifie que pour H=1 La bascule RSH fonctionne comme une bascule
RS
Voici donc sa table de veacuteriteacute
BASCULE D (ASYNCHRONE)
Lrsquointeacuterecirct de cette bascule est de faire en sorte que notre sortie D soit eacutegale au R drsquoune
bascule RS et que non(D) soit eacutegale au S
De cette maniegravere la premiegravere et la derniegravere ligne de la table de veacuteriteacute de RS (lagrave ou R=S)
disparait pour creacuteer une bascule ou D=Q(n)
Ou plutocirct
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE D(SYNCHRONE)
Une bascule D asynchrone nrsquoa guegravere drsquointeacuterecirct vu qursquoelle recopie uniquement lrsquoentreacute D
sur la sortie Q
Si on rajoute une horloge H (ou plutocirct V si on regarde le scheacutema ci-dessous) on
pourra synchroniser la derniegravere valeur eacutetablie
Pour V=0 la valeur Q(n) est en meacutemoire et pour V=1 le circuit fonctionne comme une
bascule D classique
BASCULE JK
La bascule JK est une bascule RS modifieacute (avec R=Jnon(Q) et S= KQ )
Lrsquointeacuterecirct de cette bascule (par rapport agrave la bascule RS) est que lrsquoeacutetat R=S=1 inutilisable
est maintenant utiliseacute Et il vaut non(Q)
Voici sa table de veacuteriteacute
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE JKH
Une bascule JKH est une bascule JK avec une troisiegraveme entreacutee pour lrsquohorloge Il srsquoagit
donc juste drsquoune bascule JK synchrone Son fonctionnement est le mecircme que pour
les bascule synchrone preacutesenteacutees preacuteceacutedemment
BASCULE JK MAITRE-ESCLAVE
Il srsquoagit de deux bascules JK brancheacutes en cascade comme ceci
Dans une bascule JK pour H=J=K=1 on a la sortie Q qui oscille entre 0 et 1 pendant
toute la dureacutee de lrsquoeacutetat haut du signal drsquohorloge La bascule JK maitre-esclave remeacutedie
agrave ce problegraveme
BASCULE T
Une bascule T nrsquoest en fait que la liaison des deux entreacutees drsquoune bascule JK Cela
nous permet de simplifier la table de veacuteriteacute drsquoune bascule JK pour ne garder que
les lignes ou J=K (il srsquoagit du mecircme type de laquo simplification raquo qursquoune bascule D avec
une RS)
Ainsi si T=0 rarr Q=(n+1)=Q(n) et si T=1 rarr Q(n+1)=non(Q(n))
Il existe aussi une bascule T synchrone mais je nrsquoen parlerai pas car le principe est
toujours le mecircme et je crois que vous avez compris le principe
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les registres
Ccedila y est On rentre enfin dans le vif du sujet et accessoirement la partie la plus
importante et inteacuteressante Commenccedilons par deacutefinir ce qursquoest un registre
Un registre est un ensemble de bascules synchroniseacutees par la mecircme horloge
Crsquoest gracircce agrave eux qursquoun ordinateur peut retenir des valeurs (mise en meacutemoire de n
BIT agrave lrsquoaide n bascules) et faires des opeacuterations basiques (deacutecalage rotation
translation etc)
Concregravetement un registre permet de meacutemoriser de faccedilon temporaire un mot de N bits
en attendant son traitement ulteacuterieur
Ils sont utiliseacutes dans les microprocesseurs
Un registre permet aussi de transfeacuterer une information et de faire des traitements
simples sur les eacuteleacutements binaires comme des deacutecalages ou des rotations
Il existe deux cateacutegories de registres les registres de meacutemoire et les registres agrave
deacutecalage ce qui fait quatre types de registres qui sont
minus Registre entreacutee parallegravele sortie parallegravele (meacutemoire)
minus Registre entreacutee seacuterie sortie seacuterie (deacutecalage)
minus Registre entreacutee parallegravele sortie seacuterie (transformation parallegravele-seacuterie)
minus Registre entreacutee seacuterie sortie parallegravele (transformation seacuterie-parallegravele)
Les registres sont geacuteneacuteralement faits avec des bascules D ou JK
REGISTRE ENTREE PARALLELE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus N sorties de donneacutee
minus N bascules
Crsquoest ce type de registre qui est utiliseacute pour meacutemoriser des donneacutees car toutes les
sorties sont disponible en mecircme temps
DONADIO JEREMY ROBOT-INNOVATIONCOM
REGISTRE ENTREE SERIE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus 1 sortie de donneacutee
minus N bascules
minus Une entreacutee de commande du deacutecalage (horloge)
Crsquoest le type de registre utiliseacute pour effectuer des deacutecalages
REGISTRE ENTREE PARALLELE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus 1 sortie de donneacutee
minus N bascules
DONADIO JEREMY ROBOT-INNOVATIONCOM
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation parallegravele- seacuterie des
donneacutees
REGISTRE ENTREE SERIE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus N sorties de donneacutee
minus N bascules
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation seacuterie-parallegravele des
donneacutees
LE DECALAGE
Un deacutecalage correspond agrave deacutecaler la valeur de chaque BIT vers la gauche ou
vers la droite
Deacutecalage agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Deacutecalage agrave gauche
LA ROTATION
Une rotation est un deacutecalage circulaire Il existe la aussi une rotation par la droite
et par la gauche
Rotation agrave gauche
Rotation agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Cas concret Les registres Arduino
Nous allons finir avec un cas concret Nous nous inteacuteresserons ici aux registres de
lrsquoArduino Uno
Voici les trois ports pour les microcontrocircleurs utiliseacutes pour les cartes Arduino
(lATmega8 et lATmega 168 328)
Port B (broches numeacuteriques de 8 to 13)
Port C (broches analogiquesnumeacuteriques)
Port D (broches numeacuteriques 0 to 7)
Chacun de ses ports est composeacute drsquoun registre
Opeacuterateurs BIT agrave BIT
Faisons une petite halte sur certains opeacuterateurs binaire Crsquoest important drsquoen reparler
une derniegravere fois pour bien comprendre leurs utilisations pratiques
OPERATEUR BIT A BIT ET (amp)
Un Opeacuterateur AND fonctionne de cette maniegravere si les 2 bits dentreacutee sont agrave 1 le
reacutesultat de sortie est 1 sinon le reacutesultat de sortie est 0
Cas pratique
int a = 92 en binaire 0000000001011100
int b = 101 en binaire 0000000001100101
int c = a amp b reacutesultat 0000000001000100 ou 68 en deacutecimal
OPERATEUR BIT A BIT OU (|)
Ici lrsquoopeacuterateur OU donne 1 si lun des deux ou les deux bits dentreacutee est 1 sinon il
renvoie 0
Cas pratique
int a = 92 in binary 0000000001011100
int b = 101 in binary 0000000001100101
int c = a | b result 0000000001111101 ou 125 in deacutecimal
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Pour finir une derniegravere information nous sera utile pour comprendre les notions qui
vont suivre Le transistor ne peut creacuteer que deux valeurs logiques le 0 si
aucune tension passe et le 1 si une tension suffisamment eacuteleveacute le traverse
Algegravebre de Boole
Lrsquoalgegravebre de Boole est une algegravebre permettant de manipuler les propositions
logiques au moyen drsquoeacutequations matheacutematiques ougrave les reacutesultats seront les valeurs
VRAI et FAUX Ici Nous remplacerons la valeur VRAI par 1 et FAUX par 0
Etant donneacute que tous nos circuits eacutelectroniques sont baseacutes dessus il est important de
bien en comprendre les principes Voici donc les axiomes et postulats de lrsquoalgegravebre de
Boole
Une algegravebre de Boole est constitueacutee de
minus Drsquoun ensemble E
minus De deux eacuteleacutements particuliers de E 0 et 1
minus De deux opeacuterations binaires sur E + et (nous verrons bientocirct agrave quelles
fonctions logiques correspondent ces opeacuterations)
minus Et drsquoune opeacuteration unaire sur E macr (il srsquoagit du compleacutementaire de notre valeur)
Les postulats sont donc les suivant
1+1=1 (non ce nrsquoest ni une blague ni une erreur)
00=0
0+0=0
11=1
10=01=0
1+0=0+1=1
Compleacutementaire de 0 = 1 (donc non(0)=1)
Compleacutementaire de 1=0 (donc non(1)=0)
A noter aussi que non(AB)= non(A)non(B) et que non(A+B)= non(A)+non(B)
Ensuite Anon(A)=0 et A+non(A)=1
Pour finir A+(B+C)=(A+B)+C= (A+C)+B=A+B+C
Cette regravegle marche aussi pour la distributiviteacute A+(BC)=(A+B)(A+C)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les portes logiques
Fiegravere de toutes ces connaissances nous pouvons enfin rentrer dans le vif du sujet voici
donc une liste non exhaustive des portes logiques
AND
Soit deux entreacutees A et B X notre sortie
Pour A=B=0 X=0
Pour A=0 et B=1 X=0
Pour A=1 et B=0 X=1
Et pour A=B=1 X=1
La porte logique AND correspond agrave lrsquoopeacuteration
On a ici F(AB)=AB
OR
Ici la porte logique OR correspond agrave lrsquoopeacuteration +
Nous avons F(AB)=A+B
DONADIO JEREMY ROBOT-INNOVATIONCOM
NOT
La porte logique NOT est en fait le compleacutementaire de la valeur rentreacutee
Donc F(A)=non(A)
XOR
ici on a
F(AB)=AoplusB=AB+non(A)non(B)
NAND
On a la une porte AND+NOT ce qui nous donne F(AB)=non(AB)
DONADIO JEREMY ROBOT-INNOVATIONCOM
NOR
Est repreacutesenteacute ici une porte OR+NOT donc
F(AB)=non(A+B)
XNOR
Il srsquoagit du compleacutementaire du XOR (porte XOR + port NOT) Donc F(AB)=
non(AoplusB)
Tableaux de Karnaugh
Le tableau de karnaugh est une repreacutesentation graphique visant agrave simplifier les
fonctions logiques (Je preacutecise que dans cet exemple nous sommes en laquo binaire
reacutefleacutechi raquo )
Voici comment reacutealiser une table de karnaugh
On commence par eacutecrire (en colonne) la table de veacuteriteacute (voir photo qui suit)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Maintenant que cela est fait nous traccedilons le tableau de karnaugh (voir tableau plus
bas) que nous remplissons par les valeurs de S (agrave lrsquoaide de la table de veacuteriteacute)
Une fois rempli nous devons essayer de regrouper les 1 ensembles par groupes de 2^n
cases (les plus grandes possible)
Dans cet exemple les cases eacutetaient deacutejagrave regroupeacutees
par deux paquets de quatre et un paquet de deux
Nous devons maintenant trouver des portes logiques pour simplifier cette fonction
Nous voyons dans le premier groupe rouge que peu importe la valeur de A ou de C (0
ou 1) le reacutesultat est toujours le mecircme (ici eacutegal agrave un) et que pour B=D=0 le reacutesultat est 1
On sait que non(0)=1
On en deacuteduit qursquoon peut simplifier ce groupe avec F(ABCD)=non(B)non(D)
Avec le mecircme raisonnement pour le groupe vert que A ou D vaillent 0 ou 1 le reacutesultat
ne change pas Pour B=C=1 le reacutesultat est 1 On a donc ici pour ce groupe-ci
F(ABCD)=BC
DONADIO JEREMY ROBOT-INNOVATIONCOM
Pour le dernier groupe seul la valeur de C nrsquoa pas drsquoimportance (car peu importe sa
valeur le reacutesultat reste inchangeacute)
Nous avons D=1=B et A=0 donc pour que le reacutesultat tend vers 0 nous aurons
F(ABCD)=non(A)BD
Finalement nous avons F(ABCD)=non(B)non(D)+ BC+ non(A)BD
Conclusion porte logique
Maintenant que vous avez compris les principales fonctionsportes logiques qui
existent et comment les simplifier (table de karnaugh) vous devez par conseacutequent
mieux comprendre agrave quoi ressemblerait un circuit logique
Un circuit logique nrsquoest que la somme de ces fonctions combinaisons de
fonctions
Les prochains circuits que nous verrons ne seront que des combinaisons de fonctions
logiques il est donc important de comprendre les chapitres preacutecegravedent pour assimiler
la suite du cours
Nous ne parlerons pas de logique combinatoire ici mais si vous ecirctes inteacuteresseacutes pour
avoir plus drsquoinformations sur ce cours et sur la logique combinatoire je vous proposerai
en commentaire le lien drsquoun cours de Monsieur Benoit Decoux qui srsquointitule laquo Circuits
logiques et eacutelectronique numeacuterique raquo Ce livre entrera plus dans les deacutetails techniques
que moi il est tregraves inteacuteressant agrave lire et je vous mets un lien dans le chapitre reacutefeacuterence
pour ceux qui sont inteacuteresseacutes
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les bascules
Nous rentrons enfin dans le monde merveilleux de la logique seacutequentielle Je vous
preacutesenterai ici les bascules les plus connusutiliseacutees
Rappel des portes logiques
BASCULE RS
La bascule la plus simple agrave reacutealiser est la bascule RS Il srsquoagit drsquoune bascule asynchrone
(qui ne fonctionne pas en accord avec lrsquohorloge)
Ou alors
Sa particulariteacute est que les sorties sont connecteacutes aux entreacutees (faisant de ce circuit
un circuit laquo seacutequentiel raquo car le reacutesultat Q(n+1) est influenceacute par le reacutesultat Q(n)
Cette bascule est composeacutee de portes NAND ou de portes NOR
Le premier scheacutema correspond agrave la bascule RS avec les NAND (et NOR aussi car les
valeurs drsquoentreacutees sont non(R) et non(S))
La deuxiegraveme photo est celle faite avec la bascule NOR
DONADIO JEREMY ROBOT-INNOVATIONCOM
Voici sa table de veacuteriteacute
Lrsquointeacuterecirct de cette bascule est la mise en meacutemoire drsquoun BIT
En effet si R=S=0 la valeur Q(n)=Q(n+1)
La bascule permet donc de retenir une valeur binaire
Le R vient du mot Reset ce qui implique quand sa valeur est eacutegale agrave 1 (lorsqursquoil est
laquo activeacute raquo) la valeur de Q devienne 0
Le S vient du mot laquo Set raquo ce qui explique aussi que quand le Set est agrave 1 (qursquoil est
laquo activeacute raquo) la valeur de Q se met agrave 1
La combinaison R=S=1 est ce que lrsquoon appelle une combinaison interdite
Je vous encourage agrave tracer des bascules RS et drsquoessayer de retomber sur la bonne table
de veacuteriteacute
BASCULE RSH
Jrsquoai dit que la bascule RS eacutetait une bascule asynchrone Voyons donc agrave quoi
ressemblerait une bascule RS synchroniseacutee par une horloge H (SRH)
Il srsquoagit donc drsquoune bascule RS auquel on a ajouteacute une troisiegraveme entreacute H (qui
symbolise lrsquohorloge)
Cette Horloge (entreacutee H) envoi des impulsions agrave intervalles reacuteguliers On peut voir sur
le graphique ci-dessous les impulsions laquo reacuteguliegraveres raquo envoyeacutees par lrsquohorloge
DONADIO JEREMY ROBOT-INNOVATIONCOM
Sur ce graphique nous voyons que si H=0 le circuit meacutemorise lrsquoeacutetat preacutecegravedent (donc
Q(n)=Q(n+1) ) Les valeurs de Q sont actualiseacutees tous les fronts montant (sur ce
scheacutemas) Cela signifie que pour H=1 La bascule RSH fonctionne comme une bascule
RS
Voici donc sa table de veacuteriteacute
BASCULE D (ASYNCHRONE)
Lrsquointeacuterecirct de cette bascule est de faire en sorte que notre sortie D soit eacutegale au R drsquoune
bascule RS et que non(D) soit eacutegale au S
De cette maniegravere la premiegravere et la derniegravere ligne de la table de veacuteriteacute de RS (lagrave ou R=S)
disparait pour creacuteer une bascule ou D=Q(n)
Ou plutocirct
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE D(SYNCHRONE)
Une bascule D asynchrone nrsquoa guegravere drsquointeacuterecirct vu qursquoelle recopie uniquement lrsquoentreacute D
sur la sortie Q
Si on rajoute une horloge H (ou plutocirct V si on regarde le scheacutema ci-dessous) on
pourra synchroniser la derniegravere valeur eacutetablie
Pour V=0 la valeur Q(n) est en meacutemoire et pour V=1 le circuit fonctionne comme une
bascule D classique
BASCULE JK
La bascule JK est une bascule RS modifieacute (avec R=Jnon(Q) et S= KQ )
Lrsquointeacuterecirct de cette bascule (par rapport agrave la bascule RS) est que lrsquoeacutetat R=S=1 inutilisable
est maintenant utiliseacute Et il vaut non(Q)
Voici sa table de veacuteriteacute
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE JKH
Une bascule JKH est une bascule JK avec une troisiegraveme entreacutee pour lrsquohorloge Il srsquoagit
donc juste drsquoune bascule JK synchrone Son fonctionnement est le mecircme que pour
les bascule synchrone preacutesenteacutees preacuteceacutedemment
BASCULE JK MAITRE-ESCLAVE
Il srsquoagit de deux bascules JK brancheacutes en cascade comme ceci
Dans une bascule JK pour H=J=K=1 on a la sortie Q qui oscille entre 0 et 1 pendant
toute la dureacutee de lrsquoeacutetat haut du signal drsquohorloge La bascule JK maitre-esclave remeacutedie
agrave ce problegraveme
BASCULE T
Une bascule T nrsquoest en fait que la liaison des deux entreacutees drsquoune bascule JK Cela
nous permet de simplifier la table de veacuteriteacute drsquoune bascule JK pour ne garder que
les lignes ou J=K (il srsquoagit du mecircme type de laquo simplification raquo qursquoune bascule D avec
une RS)
Ainsi si T=0 rarr Q=(n+1)=Q(n) et si T=1 rarr Q(n+1)=non(Q(n))
Il existe aussi une bascule T synchrone mais je nrsquoen parlerai pas car le principe est
toujours le mecircme et je crois que vous avez compris le principe
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les registres
Ccedila y est On rentre enfin dans le vif du sujet et accessoirement la partie la plus
importante et inteacuteressante Commenccedilons par deacutefinir ce qursquoest un registre
Un registre est un ensemble de bascules synchroniseacutees par la mecircme horloge
Crsquoest gracircce agrave eux qursquoun ordinateur peut retenir des valeurs (mise en meacutemoire de n
BIT agrave lrsquoaide n bascules) et faires des opeacuterations basiques (deacutecalage rotation
translation etc)
Concregravetement un registre permet de meacutemoriser de faccedilon temporaire un mot de N bits
en attendant son traitement ulteacuterieur
Ils sont utiliseacutes dans les microprocesseurs
Un registre permet aussi de transfeacuterer une information et de faire des traitements
simples sur les eacuteleacutements binaires comme des deacutecalages ou des rotations
Il existe deux cateacutegories de registres les registres de meacutemoire et les registres agrave
deacutecalage ce qui fait quatre types de registres qui sont
minus Registre entreacutee parallegravele sortie parallegravele (meacutemoire)
minus Registre entreacutee seacuterie sortie seacuterie (deacutecalage)
minus Registre entreacutee parallegravele sortie seacuterie (transformation parallegravele-seacuterie)
minus Registre entreacutee seacuterie sortie parallegravele (transformation seacuterie-parallegravele)
Les registres sont geacuteneacuteralement faits avec des bascules D ou JK
REGISTRE ENTREE PARALLELE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus N sorties de donneacutee
minus N bascules
Crsquoest ce type de registre qui est utiliseacute pour meacutemoriser des donneacutees car toutes les
sorties sont disponible en mecircme temps
DONADIO JEREMY ROBOT-INNOVATIONCOM
REGISTRE ENTREE SERIE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus 1 sortie de donneacutee
minus N bascules
minus Une entreacutee de commande du deacutecalage (horloge)
Crsquoest le type de registre utiliseacute pour effectuer des deacutecalages
REGISTRE ENTREE PARALLELE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus 1 sortie de donneacutee
minus N bascules
DONADIO JEREMY ROBOT-INNOVATIONCOM
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation parallegravele- seacuterie des
donneacutees
REGISTRE ENTREE SERIE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus N sorties de donneacutee
minus N bascules
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation seacuterie-parallegravele des
donneacutees
LE DECALAGE
Un deacutecalage correspond agrave deacutecaler la valeur de chaque BIT vers la gauche ou
vers la droite
Deacutecalage agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Deacutecalage agrave gauche
LA ROTATION
Une rotation est un deacutecalage circulaire Il existe la aussi une rotation par la droite
et par la gauche
Rotation agrave gauche
Rotation agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Cas concret Les registres Arduino
Nous allons finir avec un cas concret Nous nous inteacuteresserons ici aux registres de
lrsquoArduino Uno
Voici les trois ports pour les microcontrocircleurs utiliseacutes pour les cartes Arduino
(lATmega8 et lATmega 168 328)
Port B (broches numeacuteriques de 8 to 13)
Port C (broches analogiquesnumeacuteriques)
Port D (broches numeacuteriques 0 to 7)
Chacun de ses ports est composeacute drsquoun registre
Opeacuterateurs BIT agrave BIT
Faisons une petite halte sur certains opeacuterateurs binaire Crsquoest important drsquoen reparler
une derniegravere fois pour bien comprendre leurs utilisations pratiques
OPERATEUR BIT A BIT ET (amp)
Un Opeacuterateur AND fonctionne de cette maniegravere si les 2 bits dentreacutee sont agrave 1 le
reacutesultat de sortie est 1 sinon le reacutesultat de sortie est 0
Cas pratique
int a = 92 en binaire 0000000001011100
int b = 101 en binaire 0000000001100101
int c = a amp b reacutesultat 0000000001000100 ou 68 en deacutecimal
OPERATEUR BIT A BIT OU (|)
Ici lrsquoopeacuterateur OU donne 1 si lun des deux ou les deux bits dentreacutee est 1 sinon il
renvoie 0
Cas pratique
int a = 92 in binary 0000000001011100
int b = 101 in binary 0000000001100101
int c = a | b result 0000000001111101 ou 125 in deacutecimal
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les portes logiques
Fiegravere de toutes ces connaissances nous pouvons enfin rentrer dans le vif du sujet voici
donc une liste non exhaustive des portes logiques
AND
Soit deux entreacutees A et B X notre sortie
Pour A=B=0 X=0
Pour A=0 et B=1 X=0
Pour A=1 et B=0 X=1
Et pour A=B=1 X=1
La porte logique AND correspond agrave lrsquoopeacuteration
On a ici F(AB)=AB
OR
Ici la porte logique OR correspond agrave lrsquoopeacuteration +
Nous avons F(AB)=A+B
DONADIO JEREMY ROBOT-INNOVATIONCOM
NOT
La porte logique NOT est en fait le compleacutementaire de la valeur rentreacutee
Donc F(A)=non(A)
XOR
ici on a
F(AB)=AoplusB=AB+non(A)non(B)
NAND
On a la une porte AND+NOT ce qui nous donne F(AB)=non(AB)
DONADIO JEREMY ROBOT-INNOVATIONCOM
NOR
Est repreacutesenteacute ici une porte OR+NOT donc
F(AB)=non(A+B)
XNOR
Il srsquoagit du compleacutementaire du XOR (porte XOR + port NOT) Donc F(AB)=
non(AoplusB)
Tableaux de Karnaugh
Le tableau de karnaugh est une repreacutesentation graphique visant agrave simplifier les
fonctions logiques (Je preacutecise que dans cet exemple nous sommes en laquo binaire
reacutefleacutechi raquo )
Voici comment reacutealiser une table de karnaugh
On commence par eacutecrire (en colonne) la table de veacuteriteacute (voir photo qui suit)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Maintenant que cela est fait nous traccedilons le tableau de karnaugh (voir tableau plus
bas) que nous remplissons par les valeurs de S (agrave lrsquoaide de la table de veacuteriteacute)
Une fois rempli nous devons essayer de regrouper les 1 ensembles par groupes de 2^n
cases (les plus grandes possible)
Dans cet exemple les cases eacutetaient deacutejagrave regroupeacutees
par deux paquets de quatre et un paquet de deux
Nous devons maintenant trouver des portes logiques pour simplifier cette fonction
Nous voyons dans le premier groupe rouge que peu importe la valeur de A ou de C (0
ou 1) le reacutesultat est toujours le mecircme (ici eacutegal agrave un) et que pour B=D=0 le reacutesultat est 1
On sait que non(0)=1
On en deacuteduit qursquoon peut simplifier ce groupe avec F(ABCD)=non(B)non(D)
Avec le mecircme raisonnement pour le groupe vert que A ou D vaillent 0 ou 1 le reacutesultat
ne change pas Pour B=C=1 le reacutesultat est 1 On a donc ici pour ce groupe-ci
F(ABCD)=BC
DONADIO JEREMY ROBOT-INNOVATIONCOM
Pour le dernier groupe seul la valeur de C nrsquoa pas drsquoimportance (car peu importe sa
valeur le reacutesultat reste inchangeacute)
Nous avons D=1=B et A=0 donc pour que le reacutesultat tend vers 0 nous aurons
F(ABCD)=non(A)BD
Finalement nous avons F(ABCD)=non(B)non(D)+ BC+ non(A)BD
Conclusion porte logique
Maintenant que vous avez compris les principales fonctionsportes logiques qui
existent et comment les simplifier (table de karnaugh) vous devez par conseacutequent
mieux comprendre agrave quoi ressemblerait un circuit logique
Un circuit logique nrsquoest que la somme de ces fonctions combinaisons de
fonctions
Les prochains circuits que nous verrons ne seront que des combinaisons de fonctions
logiques il est donc important de comprendre les chapitres preacutecegravedent pour assimiler
la suite du cours
Nous ne parlerons pas de logique combinatoire ici mais si vous ecirctes inteacuteresseacutes pour
avoir plus drsquoinformations sur ce cours et sur la logique combinatoire je vous proposerai
en commentaire le lien drsquoun cours de Monsieur Benoit Decoux qui srsquointitule laquo Circuits
logiques et eacutelectronique numeacuterique raquo Ce livre entrera plus dans les deacutetails techniques
que moi il est tregraves inteacuteressant agrave lire et je vous mets un lien dans le chapitre reacutefeacuterence
pour ceux qui sont inteacuteresseacutes
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les bascules
Nous rentrons enfin dans le monde merveilleux de la logique seacutequentielle Je vous
preacutesenterai ici les bascules les plus connusutiliseacutees
Rappel des portes logiques
BASCULE RS
La bascule la plus simple agrave reacutealiser est la bascule RS Il srsquoagit drsquoune bascule asynchrone
(qui ne fonctionne pas en accord avec lrsquohorloge)
Ou alors
Sa particulariteacute est que les sorties sont connecteacutes aux entreacutees (faisant de ce circuit
un circuit laquo seacutequentiel raquo car le reacutesultat Q(n+1) est influenceacute par le reacutesultat Q(n)
Cette bascule est composeacutee de portes NAND ou de portes NOR
Le premier scheacutema correspond agrave la bascule RS avec les NAND (et NOR aussi car les
valeurs drsquoentreacutees sont non(R) et non(S))
La deuxiegraveme photo est celle faite avec la bascule NOR
DONADIO JEREMY ROBOT-INNOVATIONCOM
Voici sa table de veacuteriteacute
Lrsquointeacuterecirct de cette bascule est la mise en meacutemoire drsquoun BIT
En effet si R=S=0 la valeur Q(n)=Q(n+1)
La bascule permet donc de retenir une valeur binaire
Le R vient du mot Reset ce qui implique quand sa valeur est eacutegale agrave 1 (lorsqursquoil est
laquo activeacute raquo) la valeur de Q devienne 0
Le S vient du mot laquo Set raquo ce qui explique aussi que quand le Set est agrave 1 (qursquoil est
laquo activeacute raquo) la valeur de Q se met agrave 1
La combinaison R=S=1 est ce que lrsquoon appelle une combinaison interdite
Je vous encourage agrave tracer des bascules RS et drsquoessayer de retomber sur la bonne table
de veacuteriteacute
BASCULE RSH
Jrsquoai dit que la bascule RS eacutetait une bascule asynchrone Voyons donc agrave quoi
ressemblerait une bascule RS synchroniseacutee par une horloge H (SRH)
Il srsquoagit donc drsquoune bascule RS auquel on a ajouteacute une troisiegraveme entreacute H (qui
symbolise lrsquohorloge)
Cette Horloge (entreacutee H) envoi des impulsions agrave intervalles reacuteguliers On peut voir sur
le graphique ci-dessous les impulsions laquo reacuteguliegraveres raquo envoyeacutees par lrsquohorloge
DONADIO JEREMY ROBOT-INNOVATIONCOM
Sur ce graphique nous voyons que si H=0 le circuit meacutemorise lrsquoeacutetat preacutecegravedent (donc
Q(n)=Q(n+1) ) Les valeurs de Q sont actualiseacutees tous les fronts montant (sur ce
scheacutemas) Cela signifie que pour H=1 La bascule RSH fonctionne comme une bascule
RS
Voici donc sa table de veacuteriteacute
BASCULE D (ASYNCHRONE)
Lrsquointeacuterecirct de cette bascule est de faire en sorte que notre sortie D soit eacutegale au R drsquoune
bascule RS et que non(D) soit eacutegale au S
De cette maniegravere la premiegravere et la derniegravere ligne de la table de veacuteriteacute de RS (lagrave ou R=S)
disparait pour creacuteer une bascule ou D=Q(n)
Ou plutocirct
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE D(SYNCHRONE)
Une bascule D asynchrone nrsquoa guegravere drsquointeacuterecirct vu qursquoelle recopie uniquement lrsquoentreacute D
sur la sortie Q
Si on rajoute une horloge H (ou plutocirct V si on regarde le scheacutema ci-dessous) on
pourra synchroniser la derniegravere valeur eacutetablie
Pour V=0 la valeur Q(n) est en meacutemoire et pour V=1 le circuit fonctionne comme une
bascule D classique
BASCULE JK
La bascule JK est une bascule RS modifieacute (avec R=Jnon(Q) et S= KQ )
Lrsquointeacuterecirct de cette bascule (par rapport agrave la bascule RS) est que lrsquoeacutetat R=S=1 inutilisable
est maintenant utiliseacute Et il vaut non(Q)
Voici sa table de veacuteriteacute
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE JKH
Une bascule JKH est une bascule JK avec une troisiegraveme entreacutee pour lrsquohorloge Il srsquoagit
donc juste drsquoune bascule JK synchrone Son fonctionnement est le mecircme que pour
les bascule synchrone preacutesenteacutees preacuteceacutedemment
BASCULE JK MAITRE-ESCLAVE
Il srsquoagit de deux bascules JK brancheacutes en cascade comme ceci
Dans une bascule JK pour H=J=K=1 on a la sortie Q qui oscille entre 0 et 1 pendant
toute la dureacutee de lrsquoeacutetat haut du signal drsquohorloge La bascule JK maitre-esclave remeacutedie
agrave ce problegraveme
BASCULE T
Une bascule T nrsquoest en fait que la liaison des deux entreacutees drsquoune bascule JK Cela
nous permet de simplifier la table de veacuteriteacute drsquoune bascule JK pour ne garder que
les lignes ou J=K (il srsquoagit du mecircme type de laquo simplification raquo qursquoune bascule D avec
une RS)
Ainsi si T=0 rarr Q=(n+1)=Q(n) et si T=1 rarr Q(n+1)=non(Q(n))
Il existe aussi une bascule T synchrone mais je nrsquoen parlerai pas car le principe est
toujours le mecircme et je crois que vous avez compris le principe
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les registres
Ccedila y est On rentre enfin dans le vif du sujet et accessoirement la partie la plus
importante et inteacuteressante Commenccedilons par deacutefinir ce qursquoest un registre
Un registre est un ensemble de bascules synchroniseacutees par la mecircme horloge
Crsquoest gracircce agrave eux qursquoun ordinateur peut retenir des valeurs (mise en meacutemoire de n
BIT agrave lrsquoaide n bascules) et faires des opeacuterations basiques (deacutecalage rotation
translation etc)
Concregravetement un registre permet de meacutemoriser de faccedilon temporaire un mot de N bits
en attendant son traitement ulteacuterieur
Ils sont utiliseacutes dans les microprocesseurs
Un registre permet aussi de transfeacuterer une information et de faire des traitements
simples sur les eacuteleacutements binaires comme des deacutecalages ou des rotations
Il existe deux cateacutegories de registres les registres de meacutemoire et les registres agrave
deacutecalage ce qui fait quatre types de registres qui sont
minus Registre entreacutee parallegravele sortie parallegravele (meacutemoire)
minus Registre entreacutee seacuterie sortie seacuterie (deacutecalage)
minus Registre entreacutee parallegravele sortie seacuterie (transformation parallegravele-seacuterie)
minus Registre entreacutee seacuterie sortie parallegravele (transformation seacuterie-parallegravele)
Les registres sont geacuteneacuteralement faits avec des bascules D ou JK
REGISTRE ENTREE PARALLELE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus N sorties de donneacutee
minus N bascules
Crsquoest ce type de registre qui est utiliseacute pour meacutemoriser des donneacutees car toutes les
sorties sont disponible en mecircme temps
DONADIO JEREMY ROBOT-INNOVATIONCOM
REGISTRE ENTREE SERIE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus 1 sortie de donneacutee
minus N bascules
minus Une entreacutee de commande du deacutecalage (horloge)
Crsquoest le type de registre utiliseacute pour effectuer des deacutecalages
REGISTRE ENTREE PARALLELE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus 1 sortie de donneacutee
minus N bascules
DONADIO JEREMY ROBOT-INNOVATIONCOM
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation parallegravele- seacuterie des
donneacutees
REGISTRE ENTREE SERIE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus N sorties de donneacutee
minus N bascules
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation seacuterie-parallegravele des
donneacutees
LE DECALAGE
Un deacutecalage correspond agrave deacutecaler la valeur de chaque BIT vers la gauche ou
vers la droite
Deacutecalage agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Deacutecalage agrave gauche
LA ROTATION
Une rotation est un deacutecalage circulaire Il existe la aussi une rotation par la droite
et par la gauche
Rotation agrave gauche
Rotation agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Cas concret Les registres Arduino
Nous allons finir avec un cas concret Nous nous inteacuteresserons ici aux registres de
lrsquoArduino Uno
Voici les trois ports pour les microcontrocircleurs utiliseacutes pour les cartes Arduino
(lATmega8 et lATmega 168 328)
Port B (broches numeacuteriques de 8 to 13)
Port C (broches analogiquesnumeacuteriques)
Port D (broches numeacuteriques 0 to 7)
Chacun de ses ports est composeacute drsquoun registre
Opeacuterateurs BIT agrave BIT
Faisons une petite halte sur certains opeacuterateurs binaire Crsquoest important drsquoen reparler
une derniegravere fois pour bien comprendre leurs utilisations pratiques
OPERATEUR BIT A BIT ET (amp)
Un Opeacuterateur AND fonctionne de cette maniegravere si les 2 bits dentreacutee sont agrave 1 le
reacutesultat de sortie est 1 sinon le reacutesultat de sortie est 0
Cas pratique
int a = 92 en binaire 0000000001011100
int b = 101 en binaire 0000000001100101
int c = a amp b reacutesultat 0000000001000100 ou 68 en deacutecimal
OPERATEUR BIT A BIT OU (|)
Ici lrsquoopeacuterateur OU donne 1 si lun des deux ou les deux bits dentreacutee est 1 sinon il
renvoie 0
Cas pratique
int a = 92 in binary 0000000001011100
int b = 101 in binary 0000000001100101
int c = a | b result 0000000001111101 ou 125 in deacutecimal
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
NOT
La porte logique NOT est en fait le compleacutementaire de la valeur rentreacutee
Donc F(A)=non(A)
XOR
ici on a
F(AB)=AoplusB=AB+non(A)non(B)
NAND
On a la une porte AND+NOT ce qui nous donne F(AB)=non(AB)
DONADIO JEREMY ROBOT-INNOVATIONCOM
NOR
Est repreacutesenteacute ici une porte OR+NOT donc
F(AB)=non(A+B)
XNOR
Il srsquoagit du compleacutementaire du XOR (porte XOR + port NOT) Donc F(AB)=
non(AoplusB)
Tableaux de Karnaugh
Le tableau de karnaugh est une repreacutesentation graphique visant agrave simplifier les
fonctions logiques (Je preacutecise que dans cet exemple nous sommes en laquo binaire
reacutefleacutechi raquo )
Voici comment reacutealiser une table de karnaugh
On commence par eacutecrire (en colonne) la table de veacuteriteacute (voir photo qui suit)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Maintenant que cela est fait nous traccedilons le tableau de karnaugh (voir tableau plus
bas) que nous remplissons par les valeurs de S (agrave lrsquoaide de la table de veacuteriteacute)
Une fois rempli nous devons essayer de regrouper les 1 ensembles par groupes de 2^n
cases (les plus grandes possible)
Dans cet exemple les cases eacutetaient deacutejagrave regroupeacutees
par deux paquets de quatre et un paquet de deux
Nous devons maintenant trouver des portes logiques pour simplifier cette fonction
Nous voyons dans le premier groupe rouge que peu importe la valeur de A ou de C (0
ou 1) le reacutesultat est toujours le mecircme (ici eacutegal agrave un) et que pour B=D=0 le reacutesultat est 1
On sait que non(0)=1
On en deacuteduit qursquoon peut simplifier ce groupe avec F(ABCD)=non(B)non(D)
Avec le mecircme raisonnement pour le groupe vert que A ou D vaillent 0 ou 1 le reacutesultat
ne change pas Pour B=C=1 le reacutesultat est 1 On a donc ici pour ce groupe-ci
F(ABCD)=BC
DONADIO JEREMY ROBOT-INNOVATIONCOM
Pour le dernier groupe seul la valeur de C nrsquoa pas drsquoimportance (car peu importe sa
valeur le reacutesultat reste inchangeacute)
Nous avons D=1=B et A=0 donc pour que le reacutesultat tend vers 0 nous aurons
F(ABCD)=non(A)BD
Finalement nous avons F(ABCD)=non(B)non(D)+ BC+ non(A)BD
Conclusion porte logique
Maintenant que vous avez compris les principales fonctionsportes logiques qui
existent et comment les simplifier (table de karnaugh) vous devez par conseacutequent
mieux comprendre agrave quoi ressemblerait un circuit logique
Un circuit logique nrsquoest que la somme de ces fonctions combinaisons de
fonctions
Les prochains circuits que nous verrons ne seront que des combinaisons de fonctions
logiques il est donc important de comprendre les chapitres preacutecegravedent pour assimiler
la suite du cours
Nous ne parlerons pas de logique combinatoire ici mais si vous ecirctes inteacuteresseacutes pour
avoir plus drsquoinformations sur ce cours et sur la logique combinatoire je vous proposerai
en commentaire le lien drsquoun cours de Monsieur Benoit Decoux qui srsquointitule laquo Circuits
logiques et eacutelectronique numeacuterique raquo Ce livre entrera plus dans les deacutetails techniques
que moi il est tregraves inteacuteressant agrave lire et je vous mets un lien dans le chapitre reacutefeacuterence
pour ceux qui sont inteacuteresseacutes
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les bascules
Nous rentrons enfin dans le monde merveilleux de la logique seacutequentielle Je vous
preacutesenterai ici les bascules les plus connusutiliseacutees
Rappel des portes logiques
BASCULE RS
La bascule la plus simple agrave reacutealiser est la bascule RS Il srsquoagit drsquoune bascule asynchrone
(qui ne fonctionne pas en accord avec lrsquohorloge)
Ou alors
Sa particulariteacute est que les sorties sont connecteacutes aux entreacutees (faisant de ce circuit
un circuit laquo seacutequentiel raquo car le reacutesultat Q(n+1) est influenceacute par le reacutesultat Q(n)
Cette bascule est composeacutee de portes NAND ou de portes NOR
Le premier scheacutema correspond agrave la bascule RS avec les NAND (et NOR aussi car les
valeurs drsquoentreacutees sont non(R) et non(S))
La deuxiegraveme photo est celle faite avec la bascule NOR
DONADIO JEREMY ROBOT-INNOVATIONCOM
Voici sa table de veacuteriteacute
Lrsquointeacuterecirct de cette bascule est la mise en meacutemoire drsquoun BIT
En effet si R=S=0 la valeur Q(n)=Q(n+1)
La bascule permet donc de retenir une valeur binaire
Le R vient du mot Reset ce qui implique quand sa valeur est eacutegale agrave 1 (lorsqursquoil est
laquo activeacute raquo) la valeur de Q devienne 0
Le S vient du mot laquo Set raquo ce qui explique aussi que quand le Set est agrave 1 (qursquoil est
laquo activeacute raquo) la valeur de Q se met agrave 1
La combinaison R=S=1 est ce que lrsquoon appelle une combinaison interdite
Je vous encourage agrave tracer des bascules RS et drsquoessayer de retomber sur la bonne table
de veacuteriteacute
BASCULE RSH
Jrsquoai dit que la bascule RS eacutetait une bascule asynchrone Voyons donc agrave quoi
ressemblerait une bascule RS synchroniseacutee par une horloge H (SRH)
Il srsquoagit donc drsquoune bascule RS auquel on a ajouteacute une troisiegraveme entreacute H (qui
symbolise lrsquohorloge)
Cette Horloge (entreacutee H) envoi des impulsions agrave intervalles reacuteguliers On peut voir sur
le graphique ci-dessous les impulsions laquo reacuteguliegraveres raquo envoyeacutees par lrsquohorloge
DONADIO JEREMY ROBOT-INNOVATIONCOM
Sur ce graphique nous voyons que si H=0 le circuit meacutemorise lrsquoeacutetat preacutecegravedent (donc
Q(n)=Q(n+1) ) Les valeurs de Q sont actualiseacutees tous les fronts montant (sur ce
scheacutemas) Cela signifie que pour H=1 La bascule RSH fonctionne comme une bascule
RS
Voici donc sa table de veacuteriteacute
BASCULE D (ASYNCHRONE)
Lrsquointeacuterecirct de cette bascule est de faire en sorte que notre sortie D soit eacutegale au R drsquoune
bascule RS et que non(D) soit eacutegale au S
De cette maniegravere la premiegravere et la derniegravere ligne de la table de veacuteriteacute de RS (lagrave ou R=S)
disparait pour creacuteer une bascule ou D=Q(n)
Ou plutocirct
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE D(SYNCHRONE)
Une bascule D asynchrone nrsquoa guegravere drsquointeacuterecirct vu qursquoelle recopie uniquement lrsquoentreacute D
sur la sortie Q
Si on rajoute une horloge H (ou plutocirct V si on regarde le scheacutema ci-dessous) on
pourra synchroniser la derniegravere valeur eacutetablie
Pour V=0 la valeur Q(n) est en meacutemoire et pour V=1 le circuit fonctionne comme une
bascule D classique
BASCULE JK
La bascule JK est une bascule RS modifieacute (avec R=Jnon(Q) et S= KQ )
Lrsquointeacuterecirct de cette bascule (par rapport agrave la bascule RS) est que lrsquoeacutetat R=S=1 inutilisable
est maintenant utiliseacute Et il vaut non(Q)
Voici sa table de veacuteriteacute
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE JKH
Une bascule JKH est une bascule JK avec une troisiegraveme entreacutee pour lrsquohorloge Il srsquoagit
donc juste drsquoune bascule JK synchrone Son fonctionnement est le mecircme que pour
les bascule synchrone preacutesenteacutees preacuteceacutedemment
BASCULE JK MAITRE-ESCLAVE
Il srsquoagit de deux bascules JK brancheacutes en cascade comme ceci
Dans une bascule JK pour H=J=K=1 on a la sortie Q qui oscille entre 0 et 1 pendant
toute la dureacutee de lrsquoeacutetat haut du signal drsquohorloge La bascule JK maitre-esclave remeacutedie
agrave ce problegraveme
BASCULE T
Une bascule T nrsquoest en fait que la liaison des deux entreacutees drsquoune bascule JK Cela
nous permet de simplifier la table de veacuteriteacute drsquoune bascule JK pour ne garder que
les lignes ou J=K (il srsquoagit du mecircme type de laquo simplification raquo qursquoune bascule D avec
une RS)
Ainsi si T=0 rarr Q=(n+1)=Q(n) et si T=1 rarr Q(n+1)=non(Q(n))
Il existe aussi une bascule T synchrone mais je nrsquoen parlerai pas car le principe est
toujours le mecircme et je crois que vous avez compris le principe
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les registres
Ccedila y est On rentre enfin dans le vif du sujet et accessoirement la partie la plus
importante et inteacuteressante Commenccedilons par deacutefinir ce qursquoest un registre
Un registre est un ensemble de bascules synchroniseacutees par la mecircme horloge
Crsquoest gracircce agrave eux qursquoun ordinateur peut retenir des valeurs (mise en meacutemoire de n
BIT agrave lrsquoaide n bascules) et faires des opeacuterations basiques (deacutecalage rotation
translation etc)
Concregravetement un registre permet de meacutemoriser de faccedilon temporaire un mot de N bits
en attendant son traitement ulteacuterieur
Ils sont utiliseacutes dans les microprocesseurs
Un registre permet aussi de transfeacuterer une information et de faire des traitements
simples sur les eacuteleacutements binaires comme des deacutecalages ou des rotations
Il existe deux cateacutegories de registres les registres de meacutemoire et les registres agrave
deacutecalage ce qui fait quatre types de registres qui sont
minus Registre entreacutee parallegravele sortie parallegravele (meacutemoire)
minus Registre entreacutee seacuterie sortie seacuterie (deacutecalage)
minus Registre entreacutee parallegravele sortie seacuterie (transformation parallegravele-seacuterie)
minus Registre entreacutee seacuterie sortie parallegravele (transformation seacuterie-parallegravele)
Les registres sont geacuteneacuteralement faits avec des bascules D ou JK
REGISTRE ENTREE PARALLELE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus N sorties de donneacutee
minus N bascules
Crsquoest ce type de registre qui est utiliseacute pour meacutemoriser des donneacutees car toutes les
sorties sont disponible en mecircme temps
DONADIO JEREMY ROBOT-INNOVATIONCOM
REGISTRE ENTREE SERIE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus 1 sortie de donneacutee
minus N bascules
minus Une entreacutee de commande du deacutecalage (horloge)
Crsquoest le type de registre utiliseacute pour effectuer des deacutecalages
REGISTRE ENTREE PARALLELE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus 1 sortie de donneacutee
minus N bascules
DONADIO JEREMY ROBOT-INNOVATIONCOM
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation parallegravele- seacuterie des
donneacutees
REGISTRE ENTREE SERIE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus N sorties de donneacutee
minus N bascules
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation seacuterie-parallegravele des
donneacutees
LE DECALAGE
Un deacutecalage correspond agrave deacutecaler la valeur de chaque BIT vers la gauche ou
vers la droite
Deacutecalage agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Deacutecalage agrave gauche
LA ROTATION
Une rotation est un deacutecalage circulaire Il existe la aussi une rotation par la droite
et par la gauche
Rotation agrave gauche
Rotation agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Cas concret Les registres Arduino
Nous allons finir avec un cas concret Nous nous inteacuteresserons ici aux registres de
lrsquoArduino Uno
Voici les trois ports pour les microcontrocircleurs utiliseacutes pour les cartes Arduino
(lATmega8 et lATmega 168 328)
Port B (broches numeacuteriques de 8 to 13)
Port C (broches analogiquesnumeacuteriques)
Port D (broches numeacuteriques 0 to 7)
Chacun de ses ports est composeacute drsquoun registre
Opeacuterateurs BIT agrave BIT
Faisons une petite halte sur certains opeacuterateurs binaire Crsquoest important drsquoen reparler
une derniegravere fois pour bien comprendre leurs utilisations pratiques
OPERATEUR BIT A BIT ET (amp)
Un Opeacuterateur AND fonctionne de cette maniegravere si les 2 bits dentreacutee sont agrave 1 le
reacutesultat de sortie est 1 sinon le reacutesultat de sortie est 0
Cas pratique
int a = 92 en binaire 0000000001011100
int b = 101 en binaire 0000000001100101
int c = a amp b reacutesultat 0000000001000100 ou 68 en deacutecimal
OPERATEUR BIT A BIT OU (|)
Ici lrsquoopeacuterateur OU donne 1 si lun des deux ou les deux bits dentreacutee est 1 sinon il
renvoie 0
Cas pratique
int a = 92 in binary 0000000001011100
int b = 101 in binary 0000000001100101
int c = a | b result 0000000001111101 ou 125 in deacutecimal
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
NOR
Est repreacutesenteacute ici une porte OR+NOT donc
F(AB)=non(A+B)
XNOR
Il srsquoagit du compleacutementaire du XOR (porte XOR + port NOT) Donc F(AB)=
non(AoplusB)
Tableaux de Karnaugh
Le tableau de karnaugh est une repreacutesentation graphique visant agrave simplifier les
fonctions logiques (Je preacutecise que dans cet exemple nous sommes en laquo binaire
reacutefleacutechi raquo )
Voici comment reacutealiser une table de karnaugh
On commence par eacutecrire (en colonne) la table de veacuteriteacute (voir photo qui suit)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Maintenant que cela est fait nous traccedilons le tableau de karnaugh (voir tableau plus
bas) que nous remplissons par les valeurs de S (agrave lrsquoaide de la table de veacuteriteacute)
Une fois rempli nous devons essayer de regrouper les 1 ensembles par groupes de 2^n
cases (les plus grandes possible)
Dans cet exemple les cases eacutetaient deacutejagrave regroupeacutees
par deux paquets de quatre et un paquet de deux
Nous devons maintenant trouver des portes logiques pour simplifier cette fonction
Nous voyons dans le premier groupe rouge que peu importe la valeur de A ou de C (0
ou 1) le reacutesultat est toujours le mecircme (ici eacutegal agrave un) et que pour B=D=0 le reacutesultat est 1
On sait que non(0)=1
On en deacuteduit qursquoon peut simplifier ce groupe avec F(ABCD)=non(B)non(D)
Avec le mecircme raisonnement pour le groupe vert que A ou D vaillent 0 ou 1 le reacutesultat
ne change pas Pour B=C=1 le reacutesultat est 1 On a donc ici pour ce groupe-ci
F(ABCD)=BC
DONADIO JEREMY ROBOT-INNOVATIONCOM
Pour le dernier groupe seul la valeur de C nrsquoa pas drsquoimportance (car peu importe sa
valeur le reacutesultat reste inchangeacute)
Nous avons D=1=B et A=0 donc pour que le reacutesultat tend vers 0 nous aurons
F(ABCD)=non(A)BD
Finalement nous avons F(ABCD)=non(B)non(D)+ BC+ non(A)BD
Conclusion porte logique
Maintenant que vous avez compris les principales fonctionsportes logiques qui
existent et comment les simplifier (table de karnaugh) vous devez par conseacutequent
mieux comprendre agrave quoi ressemblerait un circuit logique
Un circuit logique nrsquoest que la somme de ces fonctions combinaisons de
fonctions
Les prochains circuits que nous verrons ne seront que des combinaisons de fonctions
logiques il est donc important de comprendre les chapitres preacutecegravedent pour assimiler
la suite du cours
Nous ne parlerons pas de logique combinatoire ici mais si vous ecirctes inteacuteresseacutes pour
avoir plus drsquoinformations sur ce cours et sur la logique combinatoire je vous proposerai
en commentaire le lien drsquoun cours de Monsieur Benoit Decoux qui srsquointitule laquo Circuits
logiques et eacutelectronique numeacuterique raquo Ce livre entrera plus dans les deacutetails techniques
que moi il est tregraves inteacuteressant agrave lire et je vous mets un lien dans le chapitre reacutefeacuterence
pour ceux qui sont inteacuteresseacutes
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les bascules
Nous rentrons enfin dans le monde merveilleux de la logique seacutequentielle Je vous
preacutesenterai ici les bascules les plus connusutiliseacutees
Rappel des portes logiques
BASCULE RS
La bascule la plus simple agrave reacutealiser est la bascule RS Il srsquoagit drsquoune bascule asynchrone
(qui ne fonctionne pas en accord avec lrsquohorloge)
Ou alors
Sa particulariteacute est que les sorties sont connecteacutes aux entreacutees (faisant de ce circuit
un circuit laquo seacutequentiel raquo car le reacutesultat Q(n+1) est influenceacute par le reacutesultat Q(n)
Cette bascule est composeacutee de portes NAND ou de portes NOR
Le premier scheacutema correspond agrave la bascule RS avec les NAND (et NOR aussi car les
valeurs drsquoentreacutees sont non(R) et non(S))
La deuxiegraveme photo est celle faite avec la bascule NOR
DONADIO JEREMY ROBOT-INNOVATIONCOM
Voici sa table de veacuteriteacute
Lrsquointeacuterecirct de cette bascule est la mise en meacutemoire drsquoun BIT
En effet si R=S=0 la valeur Q(n)=Q(n+1)
La bascule permet donc de retenir une valeur binaire
Le R vient du mot Reset ce qui implique quand sa valeur est eacutegale agrave 1 (lorsqursquoil est
laquo activeacute raquo) la valeur de Q devienne 0
Le S vient du mot laquo Set raquo ce qui explique aussi que quand le Set est agrave 1 (qursquoil est
laquo activeacute raquo) la valeur de Q se met agrave 1
La combinaison R=S=1 est ce que lrsquoon appelle une combinaison interdite
Je vous encourage agrave tracer des bascules RS et drsquoessayer de retomber sur la bonne table
de veacuteriteacute
BASCULE RSH
Jrsquoai dit que la bascule RS eacutetait une bascule asynchrone Voyons donc agrave quoi
ressemblerait une bascule RS synchroniseacutee par une horloge H (SRH)
Il srsquoagit donc drsquoune bascule RS auquel on a ajouteacute une troisiegraveme entreacute H (qui
symbolise lrsquohorloge)
Cette Horloge (entreacutee H) envoi des impulsions agrave intervalles reacuteguliers On peut voir sur
le graphique ci-dessous les impulsions laquo reacuteguliegraveres raquo envoyeacutees par lrsquohorloge
DONADIO JEREMY ROBOT-INNOVATIONCOM
Sur ce graphique nous voyons que si H=0 le circuit meacutemorise lrsquoeacutetat preacutecegravedent (donc
Q(n)=Q(n+1) ) Les valeurs de Q sont actualiseacutees tous les fronts montant (sur ce
scheacutemas) Cela signifie que pour H=1 La bascule RSH fonctionne comme une bascule
RS
Voici donc sa table de veacuteriteacute
BASCULE D (ASYNCHRONE)
Lrsquointeacuterecirct de cette bascule est de faire en sorte que notre sortie D soit eacutegale au R drsquoune
bascule RS et que non(D) soit eacutegale au S
De cette maniegravere la premiegravere et la derniegravere ligne de la table de veacuteriteacute de RS (lagrave ou R=S)
disparait pour creacuteer une bascule ou D=Q(n)
Ou plutocirct
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE D(SYNCHRONE)
Une bascule D asynchrone nrsquoa guegravere drsquointeacuterecirct vu qursquoelle recopie uniquement lrsquoentreacute D
sur la sortie Q
Si on rajoute une horloge H (ou plutocirct V si on regarde le scheacutema ci-dessous) on
pourra synchroniser la derniegravere valeur eacutetablie
Pour V=0 la valeur Q(n) est en meacutemoire et pour V=1 le circuit fonctionne comme une
bascule D classique
BASCULE JK
La bascule JK est une bascule RS modifieacute (avec R=Jnon(Q) et S= KQ )
Lrsquointeacuterecirct de cette bascule (par rapport agrave la bascule RS) est que lrsquoeacutetat R=S=1 inutilisable
est maintenant utiliseacute Et il vaut non(Q)
Voici sa table de veacuteriteacute
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE JKH
Une bascule JKH est une bascule JK avec une troisiegraveme entreacutee pour lrsquohorloge Il srsquoagit
donc juste drsquoune bascule JK synchrone Son fonctionnement est le mecircme que pour
les bascule synchrone preacutesenteacutees preacuteceacutedemment
BASCULE JK MAITRE-ESCLAVE
Il srsquoagit de deux bascules JK brancheacutes en cascade comme ceci
Dans une bascule JK pour H=J=K=1 on a la sortie Q qui oscille entre 0 et 1 pendant
toute la dureacutee de lrsquoeacutetat haut du signal drsquohorloge La bascule JK maitre-esclave remeacutedie
agrave ce problegraveme
BASCULE T
Une bascule T nrsquoest en fait que la liaison des deux entreacutees drsquoune bascule JK Cela
nous permet de simplifier la table de veacuteriteacute drsquoune bascule JK pour ne garder que
les lignes ou J=K (il srsquoagit du mecircme type de laquo simplification raquo qursquoune bascule D avec
une RS)
Ainsi si T=0 rarr Q=(n+1)=Q(n) et si T=1 rarr Q(n+1)=non(Q(n))
Il existe aussi une bascule T synchrone mais je nrsquoen parlerai pas car le principe est
toujours le mecircme et je crois que vous avez compris le principe
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les registres
Ccedila y est On rentre enfin dans le vif du sujet et accessoirement la partie la plus
importante et inteacuteressante Commenccedilons par deacutefinir ce qursquoest un registre
Un registre est un ensemble de bascules synchroniseacutees par la mecircme horloge
Crsquoest gracircce agrave eux qursquoun ordinateur peut retenir des valeurs (mise en meacutemoire de n
BIT agrave lrsquoaide n bascules) et faires des opeacuterations basiques (deacutecalage rotation
translation etc)
Concregravetement un registre permet de meacutemoriser de faccedilon temporaire un mot de N bits
en attendant son traitement ulteacuterieur
Ils sont utiliseacutes dans les microprocesseurs
Un registre permet aussi de transfeacuterer une information et de faire des traitements
simples sur les eacuteleacutements binaires comme des deacutecalages ou des rotations
Il existe deux cateacutegories de registres les registres de meacutemoire et les registres agrave
deacutecalage ce qui fait quatre types de registres qui sont
minus Registre entreacutee parallegravele sortie parallegravele (meacutemoire)
minus Registre entreacutee seacuterie sortie seacuterie (deacutecalage)
minus Registre entreacutee parallegravele sortie seacuterie (transformation parallegravele-seacuterie)
minus Registre entreacutee seacuterie sortie parallegravele (transformation seacuterie-parallegravele)
Les registres sont geacuteneacuteralement faits avec des bascules D ou JK
REGISTRE ENTREE PARALLELE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus N sorties de donneacutee
minus N bascules
Crsquoest ce type de registre qui est utiliseacute pour meacutemoriser des donneacutees car toutes les
sorties sont disponible en mecircme temps
DONADIO JEREMY ROBOT-INNOVATIONCOM
REGISTRE ENTREE SERIE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus 1 sortie de donneacutee
minus N bascules
minus Une entreacutee de commande du deacutecalage (horloge)
Crsquoest le type de registre utiliseacute pour effectuer des deacutecalages
REGISTRE ENTREE PARALLELE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus 1 sortie de donneacutee
minus N bascules
DONADIO JEREMY ROBOT-INNOVATIONCOM
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation parallegravele- seacuterie des
donneacutees
REGISTRE ENTREE SERIE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus N sorties de donneacutee
minus N bascules
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation seacuterie-parallegravele des
donneacutees
LE DECALAGE
Un deacutecalage correspond agrave deacutecaler la valeur de chaque BIT vers la gauche ou
vers la droite
Deacutecalage agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Deacutecalage agrave gauche
LA ROTATION
Une rotation est un deacutecalage circulaire Il existe la aussi une rotation par la droite
et par la gauche
Rotation agrave gauche
Rotation agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Cas concret Les registres Arduino
Nous allons finir avec un cas concret Nous nous inteacuteresserons ici aux registres de
lrsquoArduino Uno
Voici les trois ports pour les microcontrocircleurs utiliseacutes pour les cartes Arduino
(lATmega8 et lATmega 168 328)
Port B (broches numeacuteriques de 8 to 13)
Port C (broches analogiquesnumeacuteriques)
Port D (broches numeacuteriques 0 to 7)
Chacun de ses ports est composeacute drsquoun registre
Opeacuterateurs BIT agrave BIT
Faisons une petite halte sur certains opeacuterateurs binaire Crsquoest important drsquoen reparler
une derniegravere fois pour bien comprendre leurs utilisations pratiques
OPERATEUR BIT A BIT ET (amp)
Un Opeacuterateur AND fonctionne de cette maniegravere si les 2 bits dentreacutee sont agrave 1 le
reacutesultat de sortie est 1 sinon le reacutesultat de sortie est 0
Cas pratique
int a = 92 en binaire 0000000001011100
int b = 101 en binaire 0000000001100101
int c = a amp b reacutesultat 0000000001000100 ou 68 en deacutecimal
OPERATEUR BIT A BIT OU (|)
Ici lrsquoopeacuterateur OU donne 1 si lun des deux ou les deux bits dentreacutee est 1 sinon il
renvoie 0
Cas pratique
int a = 92 in binary 0000000001011100
int b = 101 in binary 0000000001100101
int c = a | b result 0000000001111101 ou 125 in deacutecimal
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Maintenant que cela est fait nous traccedilons le tableau de karnaugh (voir tableau plus
bas) que nous remplissons par les valeurs de S (agrave lrsquoaide de la table de veacuteriteacute)
Une fois rempli nous devons essayer de regrouper les 1 ensembles par groupes de 2^n
cases (les plus grandes possible)
Dans cet exemple les cases eacutetaient deacutejagrave regroupeacutees
par deux paquets de quatre et un paquet de deux
Nous devons maintenant trouver des portes logiques pour simplifier cette fonction
Nous voyons dans le premier groupe rouge que peu importe la valeur de A ou de C (0
ou 1) le reacutesultat est toujours le mecircme (ici eacutegal agrave un) et que pour B=D=0 le reacutesultat est 1
On sait que non(0)=1
On en deacuteduit qursquoon peut simplifier ce groupe avec F(ABCD)=non(B)non(D)
Avec le mecircme raisonnement pour le groupe vert que A ou D vaillent 0 ou 1 le reacutesultat
ne change pas Pour B=C=1 le reacutesultat est 1 On a donc ici pour ce groupe-ci
F(ABCD)=BC
DONADIO JEREMY ROBOT-INNOVATIONCOM
Pour le dernier groupe seul la valeur de C nrsquoa pas drsquoimportance (car peu importe sa
valeur le reacutesultat reste inchangeacute)
Nous avons D=1=B et A=0 donc pour que le reacutesultat tend vers 0 nous aurons
F(ABCD)=non(A)BD
Finalement nous avons F(ABCD)=non(B)non(D)+ BC+ non(A)BD
Conclusion porte logique
Maintenant que vous avez compris les principales fonctionsportes logiques qui
existent et comment les simplifier (table de karnaugh) vous devez par conseacutequent
mieux comprendre agrave quoi ressemblerait un circuit logique
Un circuit logique nrsquoest que la somme de ces fonctions combinaisons de
fonctions
Les prochains circuits que nous verrons ne seront que des combinaisons de fonctions
logiques il est donc important de comprendre les chapitres preacutecegravedent pour assimiler
la suite du cours
Nous ne parlerons pas de logique combinatoire ici mais si vous ecirctes inteacuteresseacutes pour
avoir plus drsquoinformations sur ce cours et sur la logique combinatoire je vous proposerai
en commentaire le lien drsquoun cours de Monsieur Benoit Decoux qui srsquointitule laquo Circuits
logiques et eacutelectronique numeacuterique raquo Ce livre entrera plus dans les deacutetails techniques
que moi il est tregraves inteacuteressant agrave lire et je vous mets un lien dans le chapitre reacutefeacuterence
pour ceux qui sont inteacuteresseacutes
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les bascules
Nous rentrons enfin dans le monde merveilleux de la logique seacutequentielle Je vous
preacutesenterai ici les bascules les plus connusutiliseacutees
Rappel des portes logiques
BASCULE RS
La bascule la plus simple agrave reacutealiser est la bascule RS Il srsquoagit drsquoune bascule asynchrone
(qui ne fonctionne pas en accord avec lrsquohorloge)
Ou alors
Sa particulariteacute est que les sorties sont connecteacutes aux entreacutees (faisant de ce circuit
un circuit laquo seacutequentiel raquo car le reacutesultat Q(n+1) est influenceacute par le reacutesultat Q(n)
Cette bascule est composeacutee de portes NAND ou de portes NOR
Le premier scheacutema correspond agrave la bascule RS avec les NAND (et NOR aussi car les
valeurs drsquoentreacutees sont non(R) et non(S))
La deuxiegraveme photo est celle faite avec la bascule NOR
DONADIO JEREMY ROBOT-INNOVATIONCOM
Voici sa table de veacuteriteacute
Lrsquointeacuterecirct de cette bascule est la mise en meacutemoire drsquoun BIT
En effet si R=S=0 la valeur Q(n)=Q(n+1)
La bascule permet donc de retenir une valeur binaire
Le R vient du mot Reset ce qui implique quand sa valeur est eacutegale agrave 1 (lorsqursquoil est
laquo activeacute raquo) la valeur de Q devienne 0
Le S vient du mot laquo Set raquo ce qui explique aussi que quand le Set est agrave 1 (qursquoil est
laquo activeacute raquo) la valeur de Q se met agrave 1
La combinaison R=S=1 est ce que lrsquoon appelle une combinaison interdite
Je vous encourage agrave tracer des bascules RS et drsquoessayer de retomber sur la bonne table
de veacuteriteacute
BASCULE RSH
Jrsquoai dit que la bascule RS eacutetait une bascule asynchrone Voyons donc agrave quoi
ressemblerait une bascule RS synchroniseacutee par une horloge H (SRH)
Il srsquoagit donc drsquoune bascule RS auquel on a ajouteacute une troisiegraveme entreacute H (qui
symbolise lrsquohorloge)
Cette Horloge (entreacutee H) envoi des impulsions agrave intervalles reacuteguliers On peut voir sur
le graphique ci-dessous les impulsions laquo reacuteguliegraveres raquo envoyeacutees par lrsquohorloge
DONADIO JEREMY ROBOT-INNOVATIONCOM
Sur ce graphique nous voyons que si H=0 le circuit meacutemorise lrsquoeacutetat preacutecegravedent (donc
Q(n)=Q(n+1) ) Les valeurs de Q sont actualiseacutees tous les fronts montant (sur ce
scheacutemas) Cela signifie que pour H=1 La bascule RSH fonctionne comme une bascule
RS
Voici donc sa table de veacuteriteacute
BASCULE D (ASYNCHRONE)
Lrsquointeacuterecirct de cette bascule est de faire en sorte que notre sortie D soit eacutegale au R drsquoune
bascule RS et que non(D) soit eacutegale au S
De cette maniegravere la premiegravere et la derniegravere ligne de la table de veacuteriteacute de RS (lagrave ou R=S)
disparait pour creacuteer une bascule ou D=Q(n)
Ou plutocirct
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE D(SYNCHRONE)
Une bascule D asynchrone nrsquoa guegravere drsquointeacuterecirct vu qursquoelle recopie uniquement lrsquoentreacute D
sur la sortie Q
Si on rajoute une horloge H (ou plutocirct V si on regarde le scheacutema ci-dessous) on
pourra synchroniser la derniegravere valeur eacutetablie
Pour V=0 la valeur Q(n) est en meacutemoire et pour V=1 le circuit fonctionne comme une
bascule D classique
BASCULE JK
La bascule JK est une bascule RS modifieacute (avec R=Jnon(Q) et S= KQ )
Lrsquointeacuterecirct de cette bascule (par rapport agrave la bascule RS) est que lrsquoeacutetat R=S=1 inutilisable
est maintenant utiliseacute Et il vaut non(Q)
Voici sa table de veacuteriteacute
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE JKH
Une bascule JKH est une bascule JK avec une troisiegraveme entreacutee pour lrsquohorloge Il srsquoagit
donc juste drsquoune bascule JK synchrone Son fonctionnement est le mecircme que pour
les bascule synchrone preacutesenteacutees preacuteceacutedemment
BASCULE JK MAITRE-ESCLAVE
Il srsquoagit de deux bascules JK brancheacutes en cascade comme ceci
Dans une bascule JK pour H=J=K=1 on a la sortie Q qui oscille entre 0 et 1 pendant
toute la dureacutee de lrsquoeacutetat haut du signal drsquohorloge La bascule JK maitre-esclave remeacutedie
agrave ce problegraveme
BASCULE T
Une bascule T nrsquoest en fait que la liaison des deux entreacutees drsquoune bascule JK Cela
nous permet de simplifier la table de veacuteriteacute drsquoune bascule JK pour ne garder que
les lignes ou J=K (il srsquoagit du mecircme type de laquo simplification raquo qursquoune bascule D avec
une RS)
Ainsi si T=0 rarr Q=(n+1)=Q(n) et si T=1 rarr Q(n+1)=non(Q(n))
Il existe aussi une bascule T synchrone mais je nrsquoen parlerai pas car le principe est
toujours le mecircme et je crois que vous avez compris le principe
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les registres
Ccedila y est On rentre enfin dans le vif du sujet et accessoirement la partie la plus
importante et inteacuteressante Commenccedilons par deacutefinir ce qursquoest un registre
Un registre est un ensemble de bascules synchroniseacutees par la mecircme horloge
Crsquoest gracircce agrave eux qursquoun ordinateur peut retenir des valeurs (mise en meacutemoire de n
BIT agrave lrsquoaide n bascules) et faires des opeacuterations basiques (deacutecalage rotation
translation etc)
Concregravetement un registre permet de meacutemoriser de faccedilon temporaire un mot de N bits
en attendant son traitement ulteacuterieur
Ils sont utiliseacutes dans les microprocesseurs
Un registre permet aussi de transfeacuterer une information et de faire des traitements
simples sur les eacuteleacutements binaires comme des deacutecalages ou des rotations
Il existe deux cateacutegories de registres les registres de meacutemoire et les registres agrave
deacutecalage ce qui fait quatre types de registres qui sont
minus Registre entreacutee parallegravele sortie parallegravele (meacutemoire)
minus Registre entreacutee seacuterie sortie seacuterie (deacutecalage)
minus Registre entreacutee parallegravele sortie seacuterie (transformation parallegravele-seacuterie)
minus Registre entreacutee seacuterie sortie parallegravele (transformation seacuterie-parallegravele)
Les registres sont geacuteneacuteralement faits avec des bascules D ou JK
REGISTRE ENTREE PARALLELE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus N sorties de donneacutee
minus N bascules
Crsquoest ce type de registre qui est utiliseacute pour meacutemoriser des donneacutees car toutes les
sorties sont disponible en mecircme temps
DONADIO JEREMY ROBOT-INNOVATIONCOM
REGISTRE ENTREE SERIE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus 1 sortie de donneacutee
minus N bascules
minus Une entreacutee de commande du deacutecalage (horloge)
Crsquoest le type de registre utiliseacute pour effectuer des deacutecalages
REGISTRE ENTREE PARALLELE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus 1 sortie de donneacutee
minus N bascules
DONADIO JEREMY ROBOT-INNOVATIONCOM
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation parallegravele- seacuterie des
donneacutees
REGISTRE ENTREE SERIE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus N sorties de donneacutee
minus N bascules
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation seacuterie-parallegravele des
donneacutees
LE DECALAGE
Un deacutecalage correspond agrave deacutecaler la valeur de chaque BIT vers la gauche ou
vers la droite
Deacutecalage agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Deacutecalage agrave gauche
LA ROTATION
Une rotation est un deacutecalage circulaire Il existe la aussi une rotation par la droite
et par la gauche
Rotation agrave gauche
Rotation agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Cas concret Les registres Arduino
Nous allons finir avec un cas concret Nous nous inteacuteresserons ici aux registres de
lrsquoArduino Uno
Voici les trois ports pour les microcontrocircleurs utiliseacutes pour les cartes Arduino
(lATmega8 et lATmega 168 328)
Port B (broches numeacuteriques de 8 to 13)
Port C (broches analogiquesnumeacuteriques)
Port D (broches numeacuteriques 0 to 7)
Chacun de ses ports est composeacute drsquoun registre
Opeacuterateurs BIT agrave BIT
Faisons une petite halte sur certains opeacuterateurs binaire Crsquoest important drsquoen reparler
une derniegravere fois pour bien comprendre leurs utilisations pratiques
OPERATEUR BIT A BIT ET (amp)
Un Opeacuterateur AND fonctionne de cette maniegravere si les 2 bits dentreacutee sont agrave 1 le
reacutesultat de sortie est 1 sinon le reacutesultat de sortie est 0
Cas pratique
int a = 92 en binaire 0000000001011100
int b = 101 en binaire 0000000001100101
int c = a amp b reacutesultat 0000000001000100 ou 68 en deacutecimal
OPERATEUR BIT A BIT OU (|)
Ici lrsquoopeacuterateur OU donne 1 si lun des deux ou les deux bits dentreacutee est 1 sinon il
renvoie 0
Cas pratique
int a = 92 in binary 0000000001011100
int b = 101 in binary 0000000001100101
int c = a | b result 0000000001111101 ou 125 in deacutecimal
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Pour le dernier groupe seul la valeur de C nrsquoa pas drsquoimportance (car peu importe sa
valeur le reacutesultat reste inchangeacute)
Nous avons D=1=B et A=0 donc pour que le reacutesultat tend vers 0 nous aurons
F(ABCD)=non(A)BD
Finalement nous avons F(ABCD)=non(B)non(D)+ BC+ non(A)BD
Conclusion porte logique
Maintenant que vous avez compris les principales fonctionsportes logiques qui
existent et comment les simplifier (table de karnaugh) vous devez par conseacutequent
mieux comprendre agrave quoi ressemblerait un circuit logique
Un circuit logique nrsquoest que la somme de ces fonctions combinaisons de
fonctions
Les prochains circuits que nous verrons ne seront que des combinaisons de fonctions
logiques il est donc important de comprendre les chapitres preacutecegravedent pour assimiler
la suite du cours
Nous ne parlerons pas de logique combinatoire ici mais si vous ecirctes inteacuteresseacutes pour
avoir plus drsquoinformations sur ce cours et sur la logique combinatoire je vous proposerai
en commentaire le lien drsquoun cours de Monsieur Benoit Decoux qui srsquointitule laquo Circuits
logiques et eacutelectronique numeacuterique raquo Ce livre entrera plus dans les deacutetails techniques
que moi il est tregraves inteacuteressant agrave lire et je vous mets un lien dans le chapitre reacutefeacuterence
pour ceux qui sont inteacuteresseacutes
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les bascules
Nous rentrons enfin dans le monde merveilleux de la logique seacutequentielle Je vous
preacutesenterai ici les bascules les plus connusutiliseacutees
Rappel des portes logiques
BASCULE RS
La bascule la plus simple agrave reacutealiser est la bascule RS Il srsquoagit drsquoune bascule asynchrone
(qui ne fonctionne pas en accord avec lrsquohorloge)
Ou alors
Sa particulariteacute est que les sorties sont connecteacutes aux entreacutees (faisant de ce circuit
un circuit laquo seacutequentiel raquo car le reacutesultat Q(n+1) est influenceacute par le reacutesultat Q(n)
Cette bascule est composeacutee de portes NAND ou de portes NOR
Le premier scheacutema correspond agrave la bascule RS avec les NAND (et NOR aussi car les
valeurs drsquoentreacutees sont non(R) et non(S))
La deuxiegraveme photo est celle faite avec la bascule NOR
DONADIO JEREMY ROBOT-INNOVATIONCOM
Voici sa table de veacuteriteacute
Lrsquointeacuterecirct de cette bascule est la mise en meacutemoire drsquoun BIT
En effet si R=S=0 la valeur Q(n)=Q(n+1)
La bascule permet donc de retenir une valeur binaire
Le R vient du mot Reset ce qui implique quand sa valeur est eacutegale agrave 1 (lorsqursquoil est
laquo activeacute raquo) la valeur de Q devienne 0
Le S vient du mot laquo Set raquo ce qui explique aussi que quand le Set est agrave 1 (qursquoil est
laquo activeacute raquo) la valeur de Q se met agrave 1
La combinaison R=S=1 est ce que lrsquoon appelle une combinaison interdite
Je vous encourage agrave tracer des bascules RS et drsquoessayer de retomber sur la bonne table
de veacuteriteacute
BASCULE RSH
Jrsquoai dit que la bascule RS eacutetait une bascule asynchrone Voyons donc agrave quoi
ressemblerait une bascule RS synchroniseacutee par une horloge H (SRH)
Il srsquoagit donc drsquoune bascule RS auquel on a ajouteacute une troisiegraveme entreacute H (qui
symbolise lrsquohorloge)
Cette Horloge (entreacutee H) envoi des impulsions agrave intervalles reacuteguliers On peut voir sur
le graphique ci-dessous les impulsions laquo reacuteguliegraveres raquo envoyeacutees par lrsquohorloge
DONADIO JEREMY ROBOT-INNOVATIONCOM
Sur ce graphique nous voyons que si H=0 le circuit meacutemorise lrsquoeacutetat preacutecegravedent (donc
Q(n)=Q(n+1) ) Les valeurs de Q sont actualiseacutees tous les fronts montant (sur ce
scheacutemas) Cela signifie que pour H=1 La bascule RSH fonctionne comme une bascule
RS
Voici donc sa table de veacuteriteacute
BASCULE D (ASYNCHRONE)
Lrsquointeacuterecirct de cette bascule est de faire en sorte que notre sortie D soit eacutegale au R drsquoune
bascule RS et que non(D) soit eacutegale au S
De cette maniegravere la premiegravere et la derniegravere ligne de la table de veacuteriteacute de RS (lagrave ou R=S)
disparait pour creacuteer une bascule ou D=Q(n)
Ou plutocirct
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE D(SYNCHRONE)
Une bascule D asynchrone nrsquoa guegravere drsquointeacuterecirct vu qursquoelle recopie uniquement lrsquoentreacute D
sur la sortie Q
Si on rajoute une horloge H (ou plutocirct V si on regarde le scheacutema ci-dessous) on
pourra synchroniser la derniegravere valeur eacutetablie
Pour V=0 la valeur Q(n) est en meacutemoire et pour V=1 le circuit fonctionne comme une
bascule D classique
BASCULE JK
La bascule JK est une bascule RS modifieacute (avec R=Jnon(Q) et S= KQ )
Lrsquointeacuterecirct de cette bascule (par rapport agrave la bascule RS) est que lrsquoeacutetat R=S=1 inutilisable
est maintenant utiliseacute Et il vaut non(Q)
Voici sa table de veacuteriteacute
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE JKH
Une bascule JKH est une bascule JK avec une troisiegraveme entreacutee pour lrsquohorloge Il srsquoagit
donc juste drsquoune bascule JK synchrone Son fonctionnement est le mecircme que pour
les bascule synchrone preacutesenteacutees preacuteceacutedemment
BASCULE JK MAITRE-ESCLAVE
Il srsquoagit de deux bascules JK brancheacutes en cascade comme ceci
Dans une bascule JK pour H=J=K=1 on a la sortie Q qui oscille entre 0 et 1 pendant
toute la dureacutee de lrsquoeacutetat haut du signal drsquohorloge La bascule JK maitre-esclave remeacutedie
agrave ce problegraveme
BASCULE T
Une bascule T nrsquoest en fait que la liaison des deux entreacutees drsquoune bascule JK Cela
nous permet de simplifier la table de veacuteriteacute drsquoune bascule JK pour ne garder que
les lignes ou J=K (il srsquoagit du mecircme type de laquo simplification raquo qursquoune bascule D avec
une RS)
Ainsi si T=0 rarr Q=(n+1)=Q(n) et si T=1 rarr Q(n+1)=non(Q(n))
Il existe aussi une bascule T synchrone mais je nrsquoen parlerai pas car le principe est
toujours le mecircme et je crois que vous avez compris le principe
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les registres
Ccedila y est On rentre enfin dans le vif du sujet et accessoirement la partie la plus
importante et inteacuteressante Commenccedilons par deacutefinir ce qursquoest un registre
Un registre est un ensemble de bascules synchroniseacutees par la mecircme horloge
Crsquoest gracircce agrave eux qursquoun ordinateur peut retenir des valeurs (mise en meacutemoire de n
BIT agrave lrsquoaide n bascules) et faires des opeacuterations basiques (deacutecalage rotation
translation etc)
Concregravetement un registre permet de meacutemoriser de faccedilon temporaire un mot de N bits
en attendant son traitement ulteacuterieur
Ils sont utiliseacutes dans les microprocesseurs
Un registre permet aussi de transfeacuterer une information et de faire des traitements
simples sur les eacuteleacutements binaires comme des deacutecalages ou des rotations
Il existe deux cateacutegories de registres les registres de meacutemoire et les registres agrave
deacutecalage ce qui fait quatre types de registres qui sont
minus Registre entreacutee parallegravele sortie parallegravele (meacutemoire)
minus Registre entreacutee seacuterie sortie seacuterie (deacutecalage)
minus Registre entreacutee parallegravele sortie seacuterie (transformation parallegravele-seacuterie)
minus Registre entreacutee seacuterie sortie parallegravele (transformation seacuterie-parallegravele)
Les registres sont geacuteneacuteralement faits avec des bascules D ou JK
REGISTRE ENTREE PARALLELE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus N sorties de donneacutee
minus N bascules
Crsquoest ce type de registre qui est utiliseacute pour meacutemoriser des donneacutees car toutes les
sorties sont disponible en mecircme temps
DONADIO JEREMY ROBOT-INNOVATIONCOM
REGISTRE ENTREE SERIE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus 1 sortie de donneacutee
minus N bascules
minus Une entreacutee de commande du deacutecalage (horloge)
Crsquoest le type de registre utiliseacute pour effectuer des deacutecalages
REGISTRE ENTREE PARALLELE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus 1 sortie de donneacutee
minus N bascules
DONADIO JEREMY ROBOT-INNOVATIONCOM
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation parallegravele- seacuterie des
donneacutees
REGISTRE ENTREE SERIE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus N sorties de donneacutee
minus N bascules
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation seacuterie-parallegravele des
donneacutees
LE DECALAGE
Un deacutecalage correspond agrave deacutecaler la valeur de chaque BIT vers la gauche ou
vers la droite
Deacutecalage agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Deacutecalage agrave gauche
LA ROTATION
Une rotation est un deacutecalage circulaire Il existe la aussi une rotation par la droite
et par la gauche
Rotation agrave gauche
Rotation agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Cas concret Les registres Arduino
Nous allons finir avec un cas concret Nous nous inteacuteresserons ici aux registres de
lrsquoArduino Uno
Voici les trois ports pour les microcontrocircleurs utiliseacutes pour les cartes Arduino
(lATmega8 et lATmega 168 328)
Port B (broches numeacuteriques de 8 to 13)
Port C (broches analogiquesnumeacuteriques)
Port D (broches numeacuteriques 0 to 7)
Chacun de ses ports est composeacute drsquoun registre
Opeacuterateurs BIT agrave BIT
Faisons une petite halte sur certains opeacuterateurs binaire Crsquoest important drsquoen reparler
une derniegravere fois pour bien comprendre leurs utilisations pratiques
OPERATEUR BIT A BIT ET (amp)
Un Opeacuterateur AND fonctionne de cette maniegravere si les 2 bits dentreacutee sont agrave 1 le
reacutesultat de sortie est 1 sinon le reacutesultat de sortie est 0
Cas pratique
int a = 92 en binaire 0000000001011100
int b = 101 en binaire 0000000001100101
int c = a amp b reacutesultat 0000000001000100 ou 68 en deacutecimal
OPERATEUR BIT A BIT OU (|)
Ici lrsquoopeacuterateur OU donne 1 si lun des deux ou les deux bits dentreacutee est 1 sinon il
renvoie 0
Cas pratique
int a = 92 in binary 0000000001011100
int b = 101 in binary 0000000001100101
int c = a | b result 0000000001111101 ou 125 in deacutecimal
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les bascules
Nous rentrons enfin dans le monde merveilleux de la logique seacutequentielle Je vous
preacutesenterai ici les bascules les plus connusutiliseacutees
Rappel des portes logiques
BASCULE RS
La bascule la plus simple agrave reacutealiser est la bascule RS Il srsquoagit drsquoune bascule asynchrone
(qui ne fonctionne pas en accord avec lrsquohorloge)
Ou alors
Sa particulariteacute est que les sorties sont connecteacutes aux entreacutees (faisant de ce circuit
un circuit laquo seacutequentiel raquo car le reacutesultat Q(n+1) est influenceacute par le reacutesultat Q(n)
Cette bascule est composeacutee de portes NAND ou de portes NOR
Le premier scheacutema correspond agrave la bascule RS avec les NAND (et NOR aussi car les
valeurs drsquoentreacutees sont non(R) et non(S))
La deuxiegraveme photo est celle faite avec la bascule NOR
DONADIO JEREMY ROBOT-INNOVATIONCOM
Voici sa table de veacuteriteacute
Lrsquointeacuterecirct de cette bascule est la mise en meacutemoire drsquoun BIT
En effet si R=S=0 la valeur Q(n)=Q(n+1)
La bascule permet donc de retenir une valeur binaire
Le R vient du mot Reset ce qui implique quand sa valeur est eacutegale agrave 1 (lorsqursquoil est
laquo activeacute raquo) la valeur de Q devienne 0
Le S vient du mot laquo Set raquo ce qui explique aussi que quand le Set est agrave 1 (qursquoil est
laquo activeacute raquo) la valeur de Q se met agrave 1
La combinaison R=S=1 est ce que lrsquoon appelle une combinaison interdite
Je vous encourage agrave tracer des bascules RS et drsquoessayer de retomber sur la bonne table
de veacuteriteacute
BASCULE RSH
Jrsquoai dit que la bascule RS eacutetait une bascule asynchrone Voyons donc agrave quoi
ressemblerait une bascule RS synchroniseacutee par une horloge H (SRH)
Il srsquoagit donc drsquoune bascule RS auquel on a ajouteacute une troisiegraveme entreacute H (qui
symbolise lrsquohorloge)
Cette Horloge (entreacutee H) envoi des impulsions agrave intervalles reacuteguliers On peut voir sur
le graphique ci-dessous les impulsions laquo reacuteguliegraveres raquo envoyeacutees par lrsquohorloge
DONADIO JEREMY ROBOT-INNOVATIONCOM
Sur ce graphique nous voyons que si H=0 le circuit meacutemorise lrsquoeacutetat preacutecegravedent (donc
Q(n)=Q(n+1) ) Les valeurs de Q sont actualiseacutees tous les fronts montant (sur ce
scheacutemas) Cela signifie que pour H=1 La bascule RSH fonctionne comme une bascule
RS
Voici donc sa table de veacuteriteacute
BASCULE D (ASYNCHRONE)
Lrsquointeacuterecirct de cette bascule est de faire en sorte que notre sortie D soit eacutegale au R drsquoune
bascule RS et que non(D) soit eacutegale au S
De cette maniegravere la premiegravere et la derniegravere ligne de la table de veacuteriteacute de RS (lagrave ou R=S)
disparait pour creacuteer une bascule ou D=Q(n)
Ou plutocirct
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE D(SYNCHRONE)
Une bascule D asynchrone nrsquoa guegravere drsquointeacuterecirct vu qursquoelle recopie uniquement lrsquoentreacute D
sur la sortie Q
Si on rajoute une horloge H (ou plutocirct V si on regarde le scheacutema ci-dessous) on
pourra synchroniser la derniegravere valeur eacutetablie
Pour V=0 la valeur Q(n) est en meacutemoire et pour V=1 le circuit fonctionne comme une
bascule D classique
BASCULE JK
La bascule JK est une bascule RS modifieacute (avec R=Jnon(Q) et S= KQ )
Lrsquointeacuterecirct de cette bascule (par rapport agrave la bascule RS) est que lrsquoeacutetat R=S=1 inutilisable
est maintenant utiliseacute Et il vaut non(Q)
Voici sa table de veacuteriteacute
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE JKH
Une bascule JKH est une bascule JK avec une troisiegraveme entreacutee pour lrsquohorloge Il srsquoagit
donc juste drsquoune bascule JK synchrone Son fonctionnement est le mecircme que pour
les bascule synchrone preacutesenteacutees preacuteceacutedemment
BASCULE JK MAITRE-ESCLAVE
Il srsquoagit de deux bascules JK brancheacutes en cascade comme ceci
Dans une bascule JK pour H=J=K=1 on a la sortie Q qui oscille entre 0 et 1 pendant
toute la dureacutee de lrsquoeacutetat haut du signal drsquohorloge La bascule JK maitre-esclave remeacutedie
agrave ce problegraveme
BASCULE T
Une bascule T nrsquoest en fait que la liaison des deux entreacutees drsquoune bascule JK Cela
nous permet de simplifier la table de veacuteriteacute drsquoune bascule JK pour ne garder que
les lignes ou J=K (il srsquoagit du mecircme type de laquo simplification raquo qursquoune bascule D avec
une RS)
Ainsi si T=0 rarr Q=(n+1)=Q(n) et si T=1 rarr Q(n+1)=non(Q(n))
Il existe aussi une bascule T synchrone mais je nrsquoen parlerai pas car le principe est
toujours le mecircme et je crois que vous avez compris le principe
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les registres
Ccedila y est On rentre enfin dans le vif du sujet et accessoirement la partie la plus
importante et inteacuteressante Commenccedilons par deacutefinir ce qursquoest un registre
Un registre est un ensemble de bascules synchroniseacutees par la mecircme horloge
Crsquoest gracircce agrave eux qursquoun ordinateur peut retenir des valeurs (mise en meacutemoire de n
BIT agrave lrsquoaide n bascules) et faires des opeacuterations basiques (deacutecalage rotation
translation etc)
Concregravetement un registre permet de meacutemoriser de faccedilon temporaire un mot de N bits
en attendant son traitement ulteacuterieur
Ils sont utiliseacutes dans les microprocesseurs
Un registre permet aussi de transfeacuterer une information et de faire des traitements
simples sur les eacuteleacutements binaires comme des deacutecalages ou des rotations
Il existe deux cateacutegories de registres les registres de meacutemoire et les registres agrave
deacutecalage ce qui fait quatre types de registres qui sont
minus Registre entreacutee parallegravele sortie parallegravele (meacutemoire)
minus Registre entreacutee seacuterie sortie seacuterie (deacutecalage)
minus Registre entreacutee parallegravele sortie seacuterie (transformation parallegravele-seacuterie)
minus Registre entreacutee seacuterie sortie parallegravele (transformation seacuterie-parallegravele)
Les registres sont geacuteneacuteralement faits avec des bascules D ou JK
REGISTRE ENTREE PARALLELE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus N sorties de donneacutee
minus N bascules
Crsquoest ce type de registre qui est utiliseacute pour meacutemoriser des donneacutees car toutes les
sorties sont disponible en mecircme temps
DONADIO JEREMY ROBOT-INNOVATIONCOM
REGISTRE ENTREE SERIE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus 1 sortie de donneacutee
minus N bascules
minus Une entreacutee de commande du deacutecalage (horloge)
Crsquoest le type de registre utiliseacute pour effectuer des deacutecalages
REGISTRE ENTREE PARALLELE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus 1 sortie de donneacutee
minus N bascules
DONADIO JEREMY ROBOT-INNOVATIONCOM
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation parallegravele- seacuterie des
donneacutees
REGISTRE ENTREE SERIE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus N sorties de donneacutee
minus N bascules
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation seacuterie-parallegravele des
donneacutees
LE DECALAGE
Un deacutecalage correspond agrave deacutecaler la valeur de chaque BIT vers la gauche ou
vers la droite
Deacutecalage agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Deacutecalage agrave gauche
LA ROTATION
Une rotation est un deacutecalage circulaire Il existe la aussi une rotation par la droite
et par la gauche
Rotation agrave gauche
Rotation agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Cas concret Les registres Arduino
Nous allons finir avec un cas concret Nous nous inteacuteresserons ici aux registres de
lrsquoArduino Uno
Voici les trois ports pour les microcontrocircleurs utiliseacutes pour les cartes Arduino
(lATmega8 et lATmega 168 328)
Port B (broches numeacuteriques de 8 to 13)
Port C (broches analogiquesnumeacuteriques)
Port D (broches numeacuteriques 0 to 7)
Chacun de ses ports est composeacute drsquoun registre
Opeacuterateurs BIT agrave BIT
Faisons une petite halte sur certains opeacuterateurs binaire Crsquoest important drsquoen reparler
une derniegravere fois pour bien comprendre leurs utilisations pratiques
OPERATEUR BIT A BIT ET (amp)
Un Opeacuterateur AND fonctionne de cette maniegravere si les 2 bits dentreacutee sont agrave 1 le
reacutesultat de sortie est 1 sinon le reacutesultat de sortie est 0
Cas pratique
int a = 92 en binaire 0000000001011100
int b = 101 en binaire 0000000001100101
int c = a amp b reacutesultat 0000000001000100 ou 68 en deacutecimal
OPERATEUR BIT A BIT OU (|)
Ici lrsquoopeacuterateur OU donne 1 si lun des deux ou les deux bits dentreacutee est 1 sinon il
renvoie 0
Cas pratique
int a = 92 in binary 0000000001011100
int b = 101 in binary 0000000001100101
int c = a | b result 0000000001111101 ou 125 in deacutecimal
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Voici sa table de veacuteriteacute
Lrsquointeacuterecirct de cette bascule est la mise en meacutemoire drsquoun BIT
En effet si R=S=0 la valeur Q(n)=Q(n+1)
La bascule permet donc de retenir une valeur binaire
Le R vient du mot Reset ce qui implique quand sa valeur est eacutegale agrave 1 (lorsqursquoil est
laquo activeacute raquo) la valeur de Q devienne 0
Le S vient du mot laquo Set raquo ce qui explique aussi que quand le Set est agrave 1 (qursquoil est
laquo activeacute raquo) la valeur de Q se met agrave 1
La combinaison R=S=1 est ce que lrsquoon appelle une combinaison interdite
Je vous encourage agrave tracer des bascules RS et drsquoessayer de retomber sur la bonne table
de veacuteriteacute
BASCULE RSH
Jrsquoai dit que la bascule RS eacutetait une bascule asynchrone Voyons donc agrave quoi
ressemblerait une bascule RS synchroniseacutee par une horloge H (SRH)
Il srsquoagit donc drsquoune bascule RS auquel on a ajouteacute une troisiegraveme entreacute H (qui
symbolise lrsquohorloge)
Cette Horloge (entreacutee H) envoi des impulsions agrave intervalles reacuteguliers On peut voir sur
le graphique ci-dessous les impulsions laquo reacuteguliegraveres raquo envoyeacutees par lrsquohorloge
DONADIO JEREMY ROBOT-INNOVATIONCOM
Sur ce graphique nous voyons que si H=0 le circuit meacutemorise lrsquoeacutetat preacutecegravedent (donc
Q(n)=Q(n+1) ) Les valeurs de Q sont actualiseacutees tous les fronts montant (sur ce
scheacutemas) Cela signifie que pour H=1 La bascule RSH fonctionne comme une bascule
RS
Voici donc sa table de veacuteriteacute
BASCULE D (ASYNCHRONE)
Lrsquointeacuterecirct de cette bascule est de faire en sorte que notre sortie D soit eacutegale au R drsquoune
bascule RS et que non(D) soit eacutegale au S
De cette maniegravere la premiegravere et la derniegravere ligne de la table de veacuteriteacute de RS (lagrave ou R=S)
disparait pour creacuteer une bascule ou D=Q(n)
Ou plutocirct
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE D(SYNCHRONE)
Une bascule D asynchrone nrsquoa guegravere drsquointeacuterecirct vu qursquoelle recopie uniquement lrsquoentreacute D
sur la sortie Q
Si on rajoute une horloge H (ou plutocirct V si on regarde le scheacutema ci-dessous) on
pourra synchroniser la derniegravere valeur eacutetablie
Pour V=0 la valeur Q(n) est en meacutemoire et pour V=1 le circuit fonctionne comme une
bascule D classique
BASCULE JK
La bascule JK est une bascule RS modifieacute (avec R=Jnon(Q) et S= KQ )
Lrsquointeacuterecirct de cette bascule (par rapport agrave la bascule RS) est que lrsquoeacutetat R=S=1 inutilisable
est maintenant utiliseacute Et il vaut non(Q)
Voici sa table de veacuteriteacute
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE JKH
Une bascule JKH est une bascule JK avec une troisiegraveme entreacutee pour lrsquohorloge Il srsquoagit
donc juste drsquoune bascule JK synchrone Son fonctionnement est le mecircme que pour
les bascule synchrone preacutesenteacutees preacuteceacutedemment
BASCULE JK MAITRE-ESCLAVE
Il srsquoagit de deux bascules JK brancheacutes en cascade comme ceci
Dans une bascule JK pour H=J=K=1 on a la sortie Q qui oscille entre 0 et 1 pendant
toute la dureacutee de lrsquoeacutetat haut du signal drsquohorloge La bascule JK maitre-esclave remeacutedie
agrave ce problegraveme
BASCULE T
Une bascule T nrsquoest en fait que la liaison des deux entreacutees drsquoune bascule JK Cela
nous permet de simplifier la table de veacuteriteacute drsquoune bascule JK pour ne garder que
les lignes ou J=K (il srsquoagit du mecircme type de laquo simplification raquo qursquoune bascule D avec
une RS)
Ainsi si T=0 rarr Q=(n+1)=Q(n) et si T=1 rarr Q(n+1)=non(Q(n))
Il existe aussi une bascule T synchrone mais je nrsquoen parlerai pas car le principe est
toujours le mecircme et je crois que vous avez compris le principe
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les registres
Ccedila y est On rentre enfin dans le vif du sujet et accessoirement la partie la plus
importante et inteacuteressante Commenccedilons par deacutefinir ce qursquoest un registre
Un registre est un ensemble de bascules synchroniseacutees par la mecircme horloge
Crsquoest gracircce agrave eux qursquoun ordinateur peut retenir des valeurs (mise en meacutemoire de n
BIT agrave lrsquoaide n bascules) et faires des opeacuterations basiques (deacutecalage rotation
translation etc)
Concregravetement un registre permet de meacutemoriser de faccedilon temporaire un mot de N bits
en attendant son traitement ulteacuterieur
Ils sont utiliseacutes dans les microprocesseurs
Un registre permet aussi de transfeacuterer une information et de faire des traitements
simples sur les eacuteleacutements binaires comme des deacutecalages ou des rotations
Il existe deux cateacutegories de registres les registres de meacutemoire et les registres agrave
deacutecalage ce qui fait quatre types de registres qui sont
minus Registre entreacutee parallegravele sortie parallegravele (meacutemoire)
minus Registre entreacutee seacuterie sortie seacuterie (deacutecalage)
minus Registre entreacutee parallegravele sortie seacuterie (transformation parallegravele-seacuterie)
minus Registre entreacutee seacuterie sortie parallegravele (transformation seacuterie-parallegravele)
Les registres sont geacuteneacuteralement faits avec des bascules D ou JK
REGISTRE ENTREE PARALLELE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus N sorties de donneacutee
minus N bascules
Crsquoest ce type de registre qui est utiliseacute pour meacutemoriser des donneacutees car toutes les
sorties sont disponible en mecircme temps
DONADIO JEREMY ROBOT-INNOVATIONCOM
REGISTRE ENTREE SERIE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus 1 sortie de donneacutee
minus N bascules
minus Une entreacutee de commande du deacutecalage (horloge)
Crsquoest le type de registre utiliseacute pour effectuer des deacutecalages
REGISTRE ENTREE PARALLELE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus 1 sortie de donneacutee
minus N bascules
DONADIO JEREMY ROBOT-INNOVATIONCOM
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation parallegravele- seacuterie des
donneacutees
REGISTRE ENTREE SERIE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus N sorties de donneacutee
minus N bascules
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation seacuterie-parallegravele des
donneacutees
LE DECALAGE
Un deacutecalage correspond agrave deacutecaler la valeur de chaque BIT vers la gauche ou
vers la droite
Deacutecalage agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Deacutecalage agrave gauche
LA ROTATION
Une rotation est un deacutecalage circulaire Il existe la aussi une rotation par la droite
et par la gauche
Rotation agrave gauche
Rotation agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Cas concret Les registres Arduino
Nous allons finir avec un cas concret Nous nous inteacuteresserons ici aux registres de
lrsquoArduino Uno
Voici les trois ports pour les microcontrocircleurs utiliseacutes pour les cartes Arduino
(lATmega8 et lATmega 168 328)
Port B (broches numeacuteriques de 8 to 13)
Port C (broches analogiquesnumeacuteriques)
Port D (broches numeacuteriques 0 to 7)
Chacun de ses ports est composeacute drsquoun registre
Opeacuterateurs BIT agrave BIT
Faisons une petite halte sur certains opeacuterateurs binaire Crsquoest important drsquoen reparler
une derniegravere fois pour bien comprendre leurs utilisations pratiques
OPERATEUR BIT A BIT ET (amp)
Un Opeacuterateur AND fonctionne de cette maniegravere si les 2 bits dentreacutee sont agrave 1 le
reacutesultat de sortie est 1 sinon le reacutesultat de sortie est 0
Cas pratique
int a = 92 en binaire 0000000001011100
int b = 101 en binaire 0000000001100101
int c = a amp b reacutesultat 0000000001000100 ou 68 en deacutecimal
OPERATEUR BIT A BIT OU (|)
Ici lrsquoopeacuterateur OU donne 1 si lun des deux ou les deux bits dentreacutee est 1 sinon il
renvoie 0
Cas pratique
int a = 92 in binary 0000000001011100
int b = 101 in binary 0000000001100101
int c = a | b result 0000000001111101 ou 125 in deacutecimal
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Sur ce graphique nous voyons que si H=0 le circuit meacutemorise lrsquoeacutetat preacutecegravedent (donc
Q(n)=Q(n+1) ) Les valeurs de Q sont actualiseacutees tous les fronts montant (sur ce
scheacutemas) Cela signifie que pour H=1 La bascule RSH fonctionne comme une bascule
RS
Voici donc sa table de veacuteriteacute
BASCULE D (ASYNCHRONE)
Lrsquointeacuterecirct de cette bascule est de faire en sorte que notre sortie D soit eacutegale au R drsquoune
bascule RS et que non(D) soit eacutegale au S
De cette maniegravere la premiegravere et la derniegravere ligne de la table de veacuteriteacute de RS (lagrave ou R=S)
disparait pour creacuteer une bascule ou D=Q(n)
Ou plutocirct
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE D(SYNCHRONE)
Une bascule D asynchrone nrsquoa guegravere drsquointeacuterecirct vu qursquoelle recopie uniquement lrsquoentreacute D
sur la sortie Q
Si on rajoute une horloge H (ou plutocirct V si on regarde le scheacutema ci-dessous) on
pourra synchroniser la derniegravere valeur eacutetablie
Pour V=0 la valeur Q(n) est en meacutemoire et pour V=1 le circuit fonctionne comme une
bascule D classique
BASCULE JK
La bascule JK est une bascule RS modifieacute (avec R=Jnon(Q) et S= KQ )
Lrsquointeacuterecirct de cette bascule (par rapport agrave la bascule RS) est que lrsquoeacutetat R=S=1 inutilisable
est maintenant utiliseacute Et il vaut non(Q)
Voici sa table de veacuteriteacute
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE JKH
Une bascule JKH est une bascule JK avec une troisiegraveme entreacutee pour lrsquohorloge Il srsquoagit
donc juste drsquoune bascule JK synchrone Son fonctionnement est le mecircme que pour
les bascule synchrone preacutesenteacutees preacuteceacutedemment
BASCULE JK MAITRE-ESCLAVE
Il srsquoagit de deux bascules JK brancheacutes en cascade comme ceci
Dans une bascule JK pour H=J=K=1 on a la sortie Q qui oscille entre 0 et 1 pendant
toute la dureacutee de lrsquoeacutetat haut du signal drsquohorloge La bascule JK maitre-esclave remeacutedie
agrave ce problegraveme
BASCULE T
Une bascule T nrsquoest en fait que la liaison des deux entreacutees drsquoune bascule JK Cela
nous permet de simplifier la table de veacuteriteacute drsquoune bascule JK pour ne garder que
les lignes ou J=K (il srsquoagit du mecircme type de laquo simplification raquo qursquoune bascule D avec
une RS)
Ainsi si T=0 rarr Q=(n+1)=Q(n) et si T=1 rarr Q(n+1)=non(Q(n))
Il existe aussi une bascule T synchrone mais je nrsquoen parlerai pas car le principe est
toujours le mecircme et je crois que vous avez compris le principe
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les registres
Ccedila y est On rentre enfin dans le vif du sujet et accessoirement la partie la plus
importante et inteacuteressante Commenccedilons par deacutefinir ce qursquoest un registre
Un registre est un ensemble de bascules synchroniseacutees par la mecircme horloge
Crsquoest gracircce agrave eux qursquoun ordinateur peut retenir des valeurs (mise en meacutemoire de n
BIT agrave lrsquoaide n bascules) et faires des opeacuterations basiques (deacutecalage rotation
translation etc)
Concregravetement un registre permet de meacutemoriser de faccedilon temporaire un mot de N bits
en attendant son traitement ulteacuterieur
Ils sont utiliseacutes dans les microprocesseurs
Un registre permet aussi de transfeacuterer une information et de faire des traitements
simples sur les eacuteleacutements binaires comme des deacutecalages ou des rotations
Il existe deux cateacutegories de registres les registres de meacutemoire et les registres agrave
deacutecalage ce qui fait quatre types de registres qui sont
minus Registre entreacutee parallegravele sortie parallegravele (meacutemoire)
minus Registre entreacutee seacuterie sortie seacuterie (deacutecalage)
minus Registre entreacutee parallegravele sortie seacuterie (transformation parallegravele-seacuterie)
minus Registre entreacutee seacuterie sortie parallegravele (transformation seacuterie-parallegravele)
Les registres sont geacuteneacuteralement faits avec des bascules D ou JK
REGISTRE ENTREE PARALLELE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus N sorties de donneacutee
minus N bascules
Crsquoest ce type de registre qui est utiliseacute pour meacutemoriser des donneacutees car toutes les
sorties sont disponible en mecircme temps
DONADIO JEREMY ROBOT-INNOVATIONCOM
REGISTRE ENTREE SERIE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus 1 sortie de donneacutee
minus N bascules
minus Une entreacutee de commande du deacutecalage (horloge)
Crsquoest le type de registre utiliseacute pour effectuer des deacutecalages
REGISTRE ENTREE PARALLELE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus 1 sortie de donneacutee
minus N bascules
DONADIO JEREMY ROBOT-INNOVATIONCOM
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation parallegravele- seacuterie des
donneacutees
REGISTRE ENTREE SERIE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus N sorties de donneacutee
minus N bascules
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation seacuterie-parallegravele des
donneacutees
LE DECALAGE
Un deacutecalage correspond agrave deacutecaler la valeur de chaque BIT vers la gauche ou
vers la droite
Deacutecalage agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Deacutecalage agrave gauche
LA ROTATION
Une rotation est un deacutecalage circulaire Il existe la aussi une rotation par la droite
et par la gauche
Rotation agrave gauche
Rotation agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Cas concret Les registres Arduino
Nous allons finir avec un cas concret Nous nous inteacuteresserons ici aux registres de
lrsquoArduino Uno
Voici les trois ports pour les microcontrocircleurs utiliseacutes pour les cartes Arduino
(lATmega8 et lATmega 168 328)
Port B (broches numeacuteriques de 8 to 13)
Port C (broches analogiquesnumeacuteriques)
Port D (broches numeacuteriques 0 to 7)
Chacun de ses ports est composeacute drsquoun registre
Opeacuterateurs BIT agrave BIT
Faisons une petite halte sur certains opeacuterateurs binaire Crsquoest important drsquoen reparler
une derniegravere fois pour bien comprendre leurs utilisations pratiques
OPERATEUR BIT A BIT ET (amp)
Un Opeacuterateur AND fonctionne de cette maniegravere si les 2 bits dentreacutee sont agrave 1 le
reacutesultat de sortie est 1 sinon le reacutesultat de sortie est 0
Cas pratique
int a = 92 en binaire 0000000001011100
int b = 101 en binaire 0000000001100101
int c = a amp b reacutesultat 0000000001000100 ou 68 en deacutecimal
OPERATEUR BIT A BIT OU (|)
Ici lrsquoopeacuterateur OU donne 1 si lun des deux ou les deux bits dentreacutee est 1 sinon il
renvoie 0
Cas pratique
int a = 92 in binary 0000000001011100
int b = 101 in binary 0000000001100101
int c = a | b result 0000000001111101 ou 125 in deacutecimal
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE D(SYNCHRONE)
Une bascule D asynchrone nrsquoa guegravere drsquointeacuterecirct vu qursquoelle recopie uniquement lrsquoentreacute D
sur la sortie Q
Si on rajoute une horloge H (ou plutocirct V si on regarde le scheacutema ci-dessous) on
pourra synchroniser la derniegravere valeur eacutetablie
Pour V=0 la valeur Q(n) est en meacutemoire et pour V=1 le circuit fonctionne comme une
bascule D classique
BASCULE JK
La bascule JK est une bascule RS modifieacute (avec R=Jnon(Q) et S= KQ )
Lrsquointeacuterecirct de cette bascule (par rapport agrave la bascule RS) est que lrsquoeacutetat R=S=1 inutilisable
est maintenant utiliseacute Et il vaut non(Q)
Voici sa table de veacuteriteacute
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE JKH
Une bascule JKH est une bascule JK avec une troisiegraveme entreacutee pour lrsquohorloge Il srsquoagit
donc juste drsquoune bascule JK synchrone Son fonctionnement est le mecircme que pour
les bascule synchrone preacutesenteacutees preacuteceacutedemment
BASCULE JK MAITRE-ESCLAVE
Il srsquoagit de deux bascules JK brancheacutes en cascade comme ceci
Dans une bascule JK pour H=J=K=1 on a la sortie Q qui oscille entre 0 et 1 pendant
toute la dureacutee de lrsquoeacutetat haut du signal drsquohorloge La bascule JK maitre-esclave remeacutedie
agrave ce problegraveme
BASCULE T
Une bascule T nrsquoest en fait que la liaison des deux entreacutees drsquoune bascule JK Cela
nous permet de simplifier la table de veacuteriteacute drsquoune bascule JK pour ne garder que
les lignes ou J=K (il srsquoagit du mecircme type de laquo simplification raquo qursquoune bascule D avec
une RS)
Ainsi si T=0 rarr Q=(n+1)=Q(n) et si T=1 rarr Q(n+1)=non(Q(n))
Il existe aussi une bascule T synchrone mais je nrsquoen parlerai pas car le principe est
toujours le mecircme et je crois que vous avez compris le principe
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les registres
Ccedila y est On rentre enfin dans le vif du sujet et accessoirement la partie la plus
importante et inteacuteressante Commenccedilons par deacutefinir ce qursquoest un registre
Un registre est un ensemble de bascules synchroniseacutees par la mecircme horloge
Crsquoest gracircce agrave eux qursquoun ordinateur peut retenir des valeurs (mise en meacutemoire de n
BIT agrave lrsquoaide n bascules) et faires des opeacuterations basiques (deacutecalage rotation
translation etc)
Concregravetement un registre permet de meacutemoriser de faccedilon temporaire un mot de N bits
en attendant son traitement ulteacuterieur
Ils sont utiliseacutes dans les microprocesseurs
Un registre permet aussi de transfeacuterer une information et de faire des traitements
simples sur les eacuteleacutements binaires comme des deacutecalages ou des rotations
Il existe deux cateacutegories de registres les registres de meacutemoire et les registres agrave
deacutecalage ce qui fait quatre types de registres qui sont
minus Registre entreacutee parallegravele sortie parallegravele (meacutemoire)
minus Registre entreacutee seacuterie sortie seacuterie (deacutecalage)
minus Registre entreacutee parallegravele sortie seacuterie (transformation parallegravele-seacuterie)
minus Registre entreacutee seacuterie sortie parallegravele (transformation seacuterie-parallegravele)
Les registres sont geacuteneacuteralement faits avec des bascules D ou JK
REGISTRE ENTREE PARALLELE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus N sorties de donneacutee
minus N bascules
Crsquoest ce type de registre qui est utiliseacute pour meacutemoriser des donneacutees car toutes les
sorties sont disponible en mecircme temps
DONADIO JEREMY ROBOT-INNOVATIONCOM
REGISTRE ENTREE SERIE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus 1 sortie de donneacutee
minus N bascules
minus Une entreacutee de commande du deacutecalage (horloge)
Crsquoest le type de registre utiliseacute pour effectuer des deacutecalages
REGISTRE ENTREE PARALLELE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus 1 sortie de donneacutee
minus N bascules
DONADIO JEREMY ROBOT-INNOVATIONCOM
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation parallegravele- seacuterie des
donneacutees
REGISTRE ENTREE SERIE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus N sorties de donneacutee
minus N bascules
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation seacuterie-parallegravele des
donneacutees
LE DECALAGE
Un deacutecalage correspond agrave deacutecaler la valeur de chaque BIT vers la gauche ou
vers la droite
Deacutecalage agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Deacutecalage agrave gauche
LA ROTATION
Une rotation est un deacutecalage circulaire Il existe la aussi une rotation par la droite
et par la gauche
Rotation agrave gauche
Rotation agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Cas concret Les registres Arduino
Nous allons finir avec un cas concret Nous nous inteacuteresserons ici aux registres de
lrsquoArduino Uno
Voici les trois ports pour les microcontrocircleurs utiliseacutes pour les cartes Arduino
(lATmega8 et lATmega 168 328)
Port B (broches numeacuteriques de 8 to 13)
Port C (broches analogiquesnumeacuteriques)
Port D (broches numeacuteriques 0 to 7)
Chacun de ses ports est composeacute drsquoun registre
Opeacuterateurs BIT agrave BIT
Faisons une petite halte sur certains opeacuterateurs binaire Crsquoest important drsquoen reparler
une derniegravere fois pour bien comprendre leurs utilisations pratiques
OPERATEUR BIT A BIT ET (amp)
Un Opeacuterateur AND fonctionne de cette maniegravere si les 2 bits dentreacutee sont agrave 1 le
reacutesultat de sortie est 1 sinon le reacutesultat de sortie est 0
Cas pratique
int a = 92 en binaire 0000000001011100
int b = 101 en binaire 0000000001100101
int c = a amp b reacutesultat 0000000001000100 ou 68 en deacutecimal
OPERATEUR BIT A BIT OU (|)
Ici lrsquoopeacuterateur OU donne 1 si lun des deux ou les deux bits dentreacutee est 1 sinon il
renvoie 0
Cas pratique
int a = 92 in binary 0000000001011100
int b = 101 in binary 0000000001100101
int c = a | b result 0000000001111101 ou 125 in deacutecimal
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
BASCULE JKH
Une bascule JKH est une bascule JK avec une troisiegraveme entreacutee pour lrsquohorloge Il srsquoagit
donc juste drsquoune bascule JK synchrone Son fonctionnement est le mecircme que pour
les bascule synchrone preacutesenteacutees preacuteceacutedemment
BASCULE JK MAITRE-ESCLAVE
Il srsquoagit de deux bascules JK brancheacutes en cascade comme ceci
Dans une bascule JK pour H=J=K=1 on a la sortie Q qui oscille entre 0 et 1 pendant
toute la dureacutee de lrsquoeacutetat haut du signal drsquohorloge La bascule JK maitre-esclave remeacutedie
agrave ce problegraveme
BASCULE T
Une bascule T nrsquoest en fait que la liaison des deux entreacutees drsquoune bascule JK Cela
nous permet de simplifier la table de veacuteriteacute drsquoune bascule JK pour ne garder que
les lignes ou J=K (il srsquoagit du mecircme type de laquo simplification raquo qursquoune bascule D avec
une RS)
Ainsi si T=0 rarr Q=(n+1)=Q(n) et si T=1 rarr Q(n+1)=non(Q(n))
Il existe aussi une bascule T synchrone mais je nrsquoen parlerai pas car le principe est
toujours le mecircme et je crois que vous avez compris le principe
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les registres
Ccedila y est On rentre enfin dans le vif du sujet et accessoirement la partie la plus
importante et inteacuteressante Commenccedilons par deacutefinir ce qursquoest un registre
Un registre est un ensemble de bascules synchroniseacutees par la mecircme horloge
Crsquoest gracircce agrave eux qursquoun ordinateur peut retenir des valeurs (mise en meacutemoire de n
BIT agrave lrsquoaide n bascules) et faires des opeacuterations basiques (deacutecalage rotation
translation etc)
Concregravetement un registre permet de meacutemoriser de faccedilon temporaire un mot de N bits
en attendant son traitement ulteacuterieur
Ils sont utiliseacutes dans les microprocesseurs
Un registre permet aussi de transfeacuterer une information et de faire des traitements
simples sur les eacuteleacutements binaires comme des deacutecalages ou des rotations
Il existe deux cateacutegories de registres les registres de meacutemoire et les registres agrave
deacutecalage ce qui fait quatre types de registres qui sont
minus Registre entreacutee parallegravele sortie parallegravele (meacutemoire)
minus Registre entreacutee seacuterie sortie seacuterie (deacutecalage)
minus Registre entreacutee parallegravele sortie seacuterie (transformation parallegravele-seacuterie)
minus Registre entreacutee seacuterie sortie parallegravele (transformation seacuterie-parallegravele)
Les registres sont geacuteneacuteralement faits avec des bascules D ou JK
REGISTRE ENTREE PARALLELE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus N sorties de donneacutee
minus N bascules
Crsquoest ce type de registre qui est utiliseacute pour meacutemoriser des donneacutees car toutes les
sorties sont disponible en mecircme temps
DONADIO JEREMY ROBOT-INNOVATIONCOM
REGISTRE ENTREE SERIE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus 1 sortie de donneacutee
minus N bascules
minus Une entreacutee de commande du deacutecalage (horloge)
Crsquoest le type de registre utiliseacute pour effectuer des deacutecalages
REGISTRE ENTREE PARALLELE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus 1 sortie de donneacutee
minus N bascules
DONADIO JEREMY ROBOT-INNOVATIONCOM
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation parallegravele- seacuterie des
donneacutees
REGISTRE ENTREE SERIE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus N sorties de donneacutee
minus N bascules
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation seacuterie-parallegravele des
donneacutees
LE DECALAGE
Un deacutecalage correspond agrave deacutecaler la valeur de chaque BIT vers la gauche ou
vers la droite
Deacutecalage agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Deacutecalage agrave gauche
LA ROTATION
Une rotation est un deacutecalage circulaire Il existe la aussi une rotation par la droite
et par la gauche
Rotation agrave gauche
Rotation agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Cas concret Les registres Arduino
Nous allons finir avec un cas concret Nous nous inteacuteresserons ici aux registres de
lrsquoArduino Uno
Voici les trois ports pour les microcontrocircleurs utiliseacutes pour les cartes Arduino
(lATmega8 et lATmega 168 328)
Port B (broches numeacuteriques de 8 to 13)
Port C (broches analogiquesnumeacuteriques)
Port D (broches numeacuteriques 0 to 7)
Chacun de ses ports est composeacute drsquoun registre
Opeacuterateurs BIT agrave BIT
Faisons une petite halte sur certains opeacuterateurs binaire Crsquoest important drsquoen reparler
une derniegravere fois pour bien comprendre leurs utilisations pratiques
OPERATEUR BIT A BIT ET (amp)
Un Opeacuterateur AND fonctionne de cette maniegravere si les 2 bits dentreacutee sont agrave 1 le
reacutesultat de sortie est 1 sinon le reacutesultat de sortie est 0
Cas pratique
int a = 92 en binaire 0000000001011100
int b = 101 en binaire 0000000001100101
int c = a amp b reacutesultat 0000000001000100 ou 68 en deacutecimal
OPERATEUR BIT A BIT OU (|)
Ici lrsquoopeacuterateur OU donne 1 si lun des deux ou les deux bits dentreacutee est 1 sinon il
renvoie 0
Cas pratique
int a = 92 in binary 0000000001011100
int b = 101 in binary 0000000001100101
int c = a | b result 0000000001111101 ou 125 in deacutecimal
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Les registres
Ccedila y est On rentre enfin dans le vif du sujet et accessoirement la partie la plus
importante et inteacuteressante Commenccedilons par deacutefinir ce qursquoest un registre
Un registre est un ensemble de bascules synchroniseacutees par la mecircme horloge
Crsquoest gracircce agrave eux qursquoun ordinateur peut retenir des valeurs (mise en meacutemoire de n
BIT agrave lrsquoaide n bascules) et faires des opeacuterations basiques (deacutecalage rotation
translation etc)
Concregravetement un registre permet de meacutemoriser de faccedilon temporaire un mot de N bits
en attendant son traitement ulteacuterieur
Ils sont utiliseacutes dans les microprocesseurs
Un registre permet aussi de transfeacuterer une information et de faire des traitements
simples sur les eacuteleacutements binaires comme des deacutecalages ou des rotations
Il existe deux cateacutegories de registres les registres de meacutemoire et les registres agrave
deacutecalage ce qui fait quatre types de registres qui sont
minus Registre entreacutee parallegravele sortie parallegravele (meacutemoire)
minus Registre entreacutee seacuterie sortie seacuterie (deacutecalage)
minus Registre entreacutee parallegravele sortie seacuterie (transformation parallegravele-seacuterie)
minus Registre entreacutee seacuterie sortie parallegravele (transformation seacuterie-parallegravele)
Les registres sont geacuteneacuteralement faits avec des bascules D ou JK
REGISTRE ENTREE PARALLELE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus N sorties de donneacutee
minus N bascules
Crsquoest ce type de registre qui est utiliseacute pour meacutemoriser des donneacutees car toutes les
sorties sont disponible en mecircme temps
DONADIO JEREMY ROBOT-INNOVATIONCOM
REGISTRE ENTREE SERIE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus 1 sortie de donneacutee
minus N bascules
minus Une entreacutee de commande du deacutecalage (horloge)
Crsquoest le type de registre utiliseacute pour effectuer des deacutecalages
REGISTRE ENTREE PARALLELE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus 1 sortie de donneacutee
minus N bascules
DONADIO JEREMY ROBOT-INNOVATIONCOM
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation parallegravele- seacuterie des
donneacutees
REGISTRE ENTREE SERIE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus N sorties de donneacutee
minus N bascules
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation seacuterie-parallegravele des
donneacutees
LE DECALAGE
Un deacutecalage correspond agrave deacutecaler la valeur de chaque BIT vers la gauche ou
vers la droite
Deacutecalage agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Deacutecalage agrave gauche
LA ROTATION
Une rotation est un deacutecalage circulaire Il existe la aussi une rotation par la droite
et par la gauche
Rotation agrave gauche
Rotation agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Cas concret Les registres Arduino
Nous allons finir avec un cas concret Nous nous inteacuteresserons ici aux registres de
lrsquoArduino Uno
Voici les trois ports pour les microcontrocircleurs utiliseacutes pour les cartes Arduino
(lATmega8 et lATmega 168 328)
Port B (broches numeacuteriques de 8 to 13)
Port C (broches analogiquesnumeacuteriques)
Port D (broches numeacuteriques 0 to 7)
Chacun de ses ports est composeacute drsquoun registre
Opeacuterateurs BIT agrave BIT
Faisons une petite halte sur certains opeacuterateurs binaire Crsquoest important drsquoen reparler
une derniegravere fois pour bien comprendre leurs utilisations pratiques
OPERATEUR BIT A BIT ET (amp)
Un Opeacuterateur AND fonctionne de cette maniegravere si les 2 bits dentreacutee sont agrave 1 le
reacutesultat de sortie est 1 sinon le reacutesultat de sortie est 0
Cas pratique
int a = 92 en binaire 0000000001011100
int b = 101 en binaire 0000000001100101
int c = a amp b reacutesultat 0000000001000100 ou 68 en deacutecimal
OPERATEUR BIT A BIT OU (|)
Ici lrsquoopeacuterateur OU donne 1 si lun des deux ou les deux bits dentreacutee est 1 sinon il
renvoie 0
Cas pratique
int a = 92 in binary 0000000001011100
int b = 101 in binary 0000000001100101
int c = a | b result 0000000001111101 ou 125 in deacutecimal
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
REGISTRE ENTREE SERIE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus 1 sortie de donneacutee
minus N bascules
minus Une entreacutee de commande du deacutecalage (horloge)
Crsquoest le type de registre utiliseacute pour effectuer des deacutecalages
REGISTRE ENTREE PARALLELE SORTIE SERIE
Ces registres sont caracteacuteriseacutes par
minus N entreacutees de donneacutee
minus 1 sortie de donneacutee
minus N bascules
DONADIO JEREMY ROBOT-INNOVATIONCOM
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation parallegravele- seacuterie des
donneacutees
REGISTRE ENTREE SERIE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus N sorties de donneacutee
minus N bascules
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation seacuterie-parallegravele des
donneacutees
LE DECALAGE
Un deacutecalage correspond agrave deacutecaler la valeur de chaque BIT vers la gauche ou
vers la droite
Deacutecalage agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Deacutecalage agrave gauche
LA ROTATION
Une rotation est un deacutecalage circulaire Il existe la aussi une rotation par la droite
et par la gauche
Rotation agrave gauche
Rotation agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Cas concret Les registres Arduino
Nous allons finir avec un cas concret Nous nous inteacuteresserons ici aux registres de
lrsquoArduino Uno
Voici les trois ports pour les microcontrocircleurs utiliseacutes pour les cartes Arduino
(lATmega8 et lATmega 168 328)
Port B (broches numeacuteriques de 8 to 13)
Port C (broches analogiquesnumeacuteriques)
Port D (broches numeacuteriques 0 to 7)
Chacun de ses ports est composeacute drsquoun registre
Opeacuterateurs BIT agrave BIT
Faisons une petite halte sur certains opeacuterateurs binaire Crsquoest important drsquoen reparler
une derniegravere fois pour bien comprendre leurs utilisations pratiques
OPERATEUR BIT A BIT ET (amp)
Un Opeacuterateur AND fonctionne de cette maniegravere si les 2 bits dentreacutee sont agrave 1 le
reacutesultat de sortie est 1 sinon le reacutesultat de sortie est 0
Cas pratique
int a = 92 en binaire 0000000001011100
int b = 101 en binaire 0000000001100101
int c = a amp b reacutesultat 0000000001000100 ou 68 en deacutecimal
OPERATEUR BIT A BIT OU (|)
Ici lrsquoopeacuterateur OU donne 1 si lun des deux ou les deux bits dentreacutee est 1 sinon il
renvoie 0
Cas pratique
int a = 92 in binary 0000000001011100
int b = 101 in binary 0000000001100101
int c = a | b result 0000000001111101 ou 125 in deacutecimal
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation parallegravele- seacuterie des
donneacutees
REGISTRE ENTREE SERIE SORTIE PARALLELE
Ces registres sont caracteacuteriseacutes par
minus 1 entreacutee de donneacutee
minus N sorties de donneacutee
minus N bascules
Ces registres peuvent ecirctre utiliseacutes pour faire une transformation seacuterie-parallegravele des
donneacutees
LE DECALAGE
Un deacutecalage correspond agrave deacutecaler la valeur de chaque BIT vers la gauche ou
vers la droite
Deacutecalage agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Deacutecalage agrave gauche
LA ROTATION
Une rotation est un deacutecalage circulaire Il existe la aussi une rotation par la droite
et par la gauche
Rotation agrave gauche
Rotation agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Cas concret Les registres Arduino
Nous allons finir avec un cas concret Nous nous inteacuteresserons ici aux registres de
lrsquoArduino Uno
Voici les trois ports pour les microcontrocircleurs utiliseacutes pour les cartes Arduino
(lATmega8 et lATmega 168 328)
Port B (broches numeacuteriques de 8 to 13)
Port C (broches analogiquesnumeacuteriques)
Port D (broches numeacuteriques 0 to 7)
Chacun de ses ports est composeacute drsquoun registre
Opeacuterateurs BIT agrave BIT
Faisons une petite halte sur certains opeacuterateurs binaire Crsquoest important drsquoen reparler
une derniegravere fois pour bien comprendre leurs utilisations pratiques
OPERATEUR BIT A BIT ET (amp)
Un Opeacuterateur AND fonctionne de cette maniegravere si les 2 bits dentreacutee sont agrave 1 le
reacutesultat de sortie est 1 sinon le reacutesultat de sortie est 0
Cas pratique
int a = 92 en binaire 0000000001011100
int b = 101 en binaire 0000000001100101
int c = a amp b reacutesultat 0000000001000100 ou 68 en deacutecimal
OPERATEUR BIT A BIT OU (|)
Ici lrsquoopeacuterateur OU donne 1 si lun des deux ou les deux bits dentreacutee est 1 sinon il
renvoie 0
Cas pratique
int a = 92 in binary 0000000001011100
int b = 101 in binary 0000000001100101
int c = a | b result 0000000001111101 ou 125 in deacutecimal
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Deacutecalage agrave gauche
LA ROTATION
Une rotation est un deacutecalage circulaire Il existe la aussi une rotation par la droite
et par la gauche
Rotation agrave gauche
Rotation agrave droite
DONADIO JEREMY ROBOT-INNOVATIONCOM
Cas concret Les registres Arduino
Nous allons finir avec un cas concret Nous nous inteacuteresserons ici aux registres de
lrsquoArduino Uno
Voici les trois ports pour les microcontrocircleurs utiliseacutes pour les cartes Arduino
(lATmega8 et lATmega 168 328)
Port B (broches numeacuteriques de 8 to 13)
Port C (broches analogiquesnumeacuteriques)
Port D (broches numeacuteriques 0 to 7)
Chacun de ses ports est composeacute drsquoun registre
Opeacuterateurs BIT agrave BIT
Faisons une petite halte sur certains opeacuterateurs binaire Crsquoest important drsquoen reparler
une derniegravere fois pour bien comprendre leurs utilisations pratiques
OPERATEUR BIT A BIT ET (amp)
Un Opeacuterateur AND fonctionne de cette maniegravere si les 2 bits dentreacutee sont agrave 1 le
reacutesultat de sortie est 1 sinon le reacutesultat de sortie est 0
Cas pratique
int a = 92 en binaire 0000000001011100
int b = 101 en binaire 0000000001100101
int c = a amp b reacutesultat 0000000001000100 ou 68 en deacutecimal
OPERATEUR BIT A BIT OU (|)
Ici lrsquoopeacuterateur OU donne 1 si lun des deux ou les deux bits dentreacutee est 1 sinon il
renvoie 0
Cas pratique
int a = 92 in binary 0000000001011100
int b = 101 in binary 0000000001100101
int c = a | b result 0000000001111101 ou 125 in deacutecimal
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Cas concret Les registres Arduino
Nous allons finir avec un cas concret Nous nous inteacuteresserons ici aux registres de
lrsquoArduino Uno
Voici les trois ports pour les microcontrocircleurs utiliseacutes pour les cartes Arduino
(lATmega8 et lATmega 168 328)
Port B (broches numeacuteriques de 8 to 13)
Port C (broches analogiquesnumeacuteriques)
Port D (broches numeacuteriques 0 to 7)
Chacun de ses ports est composeacute drsquoun registre
Opeacuterateurs BIT agrave BIT
Faisons une petite halte sur certains opeacuterateurs binaire Crsquoest important drsquoen reparler
une derniegravere fois pour bien comprendre leurs utilisations pratiques
OPERATEUR BIT A BIT ET (amp)
Un Opeacuterateur AND fonctionne de cette maniegravere si les 2 bits dentreacutee sont agrave 1 le
reacutesultat de sortie est 1 sinon le reacutesultat de sortie est 0
Cas pratique
int a = 92 en binaire 0000000001011100
int b = 101 en binaire 0000000001100101
int c = a amp b reacutesultat 0000000001000100 ou 68 en deacutecimal
OPERATEUR BIT A BIT OU (|)
Ici lrsquoopeacuterateur OU donne 1 si lun des deux ou les deux bits dentreacutee est 1 sinon il
renvoie 0
Cas pratique
int a = 92 in binary 0000000001011100
int b = 101 in binary 0000000001100101
int c = a | b result 0000000001111101 ou 125 in deacutecimal
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
OPERATEUR BIT A BIT OU EXCLUSIF (^)
Lagrave aussi lrsquoopeacuterateur OUX est le mecircme que celui eacutetudieacute preacuteceacutedemment dans la partie
laquo porte logique raquo
Cas pratique
int x = 12 binaire 1100
int y = 10 binaire 1010
int z = x ^ y binaire0110 ou 6 en deacutecimal
OPERATEUR BIT A BIT NON (~)
Ici nous avons sans grande surprise NON(1) =0 et NON(0)=1
Cas pratique
int a = 103 binaire 0000000001100111
int b = ~a binaire 1111111110011000 = -104
Les principaux registres drsquoentreacutees et sorties
LE REGISTRE DDRB
Il srsquoagit du registre laquo direction raquo du port B
DDR signifie direction et la derniegravere lettre correspond au nom du port (on peut donc
avoir DDRA ou DDRB ou DDRC etc)
Ce registre indique les directions laquo entreacutee raquo ou laquo sortie raquo de chaque broche Voici la
syntaxe agrave avoir DDRB = (1ltltDDB0)
La valeur 1 correspond agrave une utilisation en sortie de la broche la valeur 0 agrave une
entreacutee
Ici on dit au MCU laquo jrsquoinitialise le pin 0 du port B et son sens drsquoutilisation sera SORTIE raquo
Ccedila remplace notre laquo PinMode raquo
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
LE REGISTRE PORTB
Le registre PORT controcircle le niveau HAUT ou BAS des broches numeacuteriques en
SORTIE (et lactivation du PULLUP pour les broches en ENTREE)
Ccedila correspondrait agrave notre HIGH ou LOW qursquoon pourrait trouver dans
laquo digitalWrite(HIGH) raquo
Sa syntaxe est PORTB |= B00000100 ici on a le pin 2 du port B agrave lrsquoeacutetat HIGH
Je ne lrsquoai pas preacuteciseacute mais chaque valeur binaire 10 correspond agrave lrsquoeacutetat drsquoun pin Ici le
pin 0 est agrave 0 donc il est activeacute en bas pareil pour le pin 1 qui est agrave 0 mais le pin 2 (donc
la troisiegraveme valeur) est agrave 1 on lrsquoinitialise donc agrave HAUT
A noter aussi qursquoon utilise lrsquoeacutetat OU crsquoest-agrave-dire le symbole | pour actionner
uniquement les sorties qui nous inteacuteresse tout en ignorant les autres
On dit ici que OU est une opeacuteration de masquage
Si on voulait mettre en eacutetat bas la sortie preacuteceacutedente on aurait eacutecrit
PORTB amp= B11111011
LE REGISTRE PINB
Ce registre permet de lire les valeurs que vos broches reccediloivent Il remplace votre
digitalRead
Sa syntaxe est char variable = PINB amp B00000100 Ici on ne lit que les donneacutees du pin
2 du port B
Si vous eacutecrivez char variable = PINB vous lirez les donneacutees de toutes les broches
Pour conclure sur les registres
Il existe encore beaucoup drsquoautres registres (registres drsquointerruptions etc) et chaque
MCU agrave ses propres registres
Je vous ai mis en dernier lien un reacutesumeacute des registres des MCU ATtiny25V
ATtiny45V ATtiny85V
Crsquoest tregraves inteacuteressant agrave regarder pour comprendre en profondeur les diffeacuterents types de
registres les commandes possibles etc je vous encourage donc agrave aller y jeter un coup
drsquoœil
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)
DONADIO JEREMY ROBOT-INNOVATIONCOM
Reacutefeacuterences
httpbenoitdecouxfreefrENSEIGNEMENTELEC_NUMelnum_courspdf
httpswwwyoutubecomwatchv=BCAOXUnPvUE
httpsfrwikipediaorgwikiBascule_(circuit_logique)Verrou_RSH_-_RST
httpwwwest-usmbaacmaAUTOMATISMEcomodule_khatory_cours_123html
httprobertcireddufreefrSICours20sur20les20basculespdf
httpressourceelectronfreefrcourscours_bascule_prof_V14pdf
httpdidiervillersfreefr2SEcourscours200620la20bascule20JKcours200
620la20bascule20JKpdf
httpwwwpaturagebeelectroinforautoportesbasculehtml
httpwwwcomposeleccombasculephp
httpkarlaouifreefrSite20EpmiElectronique_numC3A9riqueCours4Logiqu
e_sC3A9quentiellepdf
httpelectronique-et-informatiquefrDigitDigit_5TShtml
httpsfrwikiversityorgwikiBascules_C3A9lectroniquesT
httppersotelecom-bretagneeucatherinedouillarddataELP304Cours6pdf
httpsebastienbernardfreefrcours-tp-td-exoCours-E-Logique-sequentielle-
Fonction-Registre-a-Decalagepdf
httpsrmdiscaladeveloppezcomcoursLesChapitreshtmlCours1Chap15htm
httpwwwmon-club-
elecfrpmwiki_reference_arduinopmwikiphpn=MainPortManipulation
httpswwwarduinoccenReferencePortManipulation
httpperso-larisuniv-angersfr~cottenceauArduinoCottenceau2016pdf
httpblogcicatriceeu119
httpseskimonfrtuto-arduino-904-les-ports
httpplaygroundarduinoccCodeBitMath
httpww1microchipcomdownloadsenDeviceDocAtmel-2586-AVR-8-bit-
Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summarypdf (SUPER
IMPORTANT A REGARDER ABSOLUMENT)