circuits logiques et registres - robot...

22
Circuits logiques et registres RESUME CIRCUITS LOGIQUES ET REGISTRES Donadio Jérémy | Robot-innovation.com | 25/08/2018

Upload: others

Post on 18-Jan-2020

5 views

Category:

Documents


0 download

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)