L'électronique numérique
L'électronique numérique est une branche de l'électronique dans laquelle les informations sont représentées et traitées sous forme de valeurs discrètes. La représentation la plus courante utilise deux états, notés 0 et 1, qui correspondent physiquement à des niveaux électriques définis par le circuit.
Cette manière de représenter l'information permet de manipuler des nombres, des textes, des images, des sons, des mesures et des instructions sous une forme adaptée au traitement électronique. Une information complexe est transformée en une succession de valeurs binaires que les circuits peuvent stocker, déplacer, comparer et modifier.
Du signal électrique à l'information numérique
Dans un circuit électronique réel, un 0 et un 1 ne sont pas des valeurs abstraites. Ils sont représentés par des niveaux de tension ou, dans certaines technologies, par des niveaux de courant ou des états électriques particuliers.
Un circuit numérique définit des plages dans lesquelles une tension est reconnue comme un état logique. Cette distinction permet au système de tolérer de petites perturbations sans modifier immédiatement l'information.
Une information provenant du monde réel est souvent analogique. Un microphone produit par exemple une tension qui varie continuellement avec le son. Pour être traitée numériquement, cette information doit être échantillonnée puis représentée par des valeurs numériques.
À l'inverse, lorsqu'un système numérique doit commander un phénomène physique, les données numériques peuvent être reconverties en un signal électrique adapté au dispositif commandé.
La représentation de l'information
La plus petite unité d'information numérique est le bit. Il peut prendre deux états : 0 ou 1.
En regroupant plusieurs bits, le nombre de valeurs représentables augmente rapidement. Huit bits forment un octet et permettent de représenter 256 valeurs différentes. Avec 16 bits, 65 536 valeurs peuvent être représentées, et avec 32 bits, plus de quatre milliards de combinaisons sont possibles.
Ces combinaisons peuvent représenter des nombres, mais aussi des caractères, des couleurs, des adresses mémoire, des instructions ou toute autre information définie par le système.
Le traitement logique
Les circuits numériques manipulent les bits grâce à des opérations logiques. Ces opérations permettent de déterminer une nouvelle valeur à partir d'une ou plusieurs valeurs d'entrée.
Une condition peut ainsi être vérifiée, plusieurs informations peuvent être combinées, une valeur peut être inversée ou plusieurs possibilités peuvent être sélectionnées.
Les opérations élémentaires sont ensuite associées pour réaliser des fonctions beaucoup plus complexes. Un circuit capable d'effectuer une addition, de comparer deux nombres ou de sélectionner une donnée est finalement constitué d'un très grand nombre d'opérations logiques organisées entre elles.
La logique et les circuits
La théorie logique fournit les règles permettant de décrire le comportement d'un circuit numérique. Elle permet de passer d'une expression représentant une condition à une organisation concrète de composants électroniques.
Les relations entre les entrées et les sorties peuvent être décrites mathématiquement, représentées sous forme de tableaux ou directement traduites en circuits électroniques.
Cette séparation entre la fonction recherchée et sa réalisation physique facilite considérablement la conception de systèmes numériques complexes.
Les circuits combinatoires
Dans un circuit combinatoire, la sortie dépend des valeurs présentes sur les entrées au moment considéré.
Une modification d'une entrée se propage donc à travers le circuit et finit par modifier les sorties correspondantes. Le circuit ne conserve pas l'état précédent de ses entrées.
Les circuits réalisant des additions, des comparaisons, des sélections ou des conversions de codes appartiennent notamment à cette catégorie.
La mémoire et les circuits séquentiels
Un système numérique doit souvent conserver une information afin de poursuivre une opération. Il utilise alors des circuits séquentiels, capables de conserver un état.
Le résultat produit par un circuit séquentiel dépend donc non seulement des entrées actuelles, mais également de l'état dans lequel se trouvait précédemment le circuit.
Cette propriété permet de construire des compteurs, des registres, des mémoires, des séquences de commande et des systèmes capables d'exécuter des opérations dans un ordre déterminé.
Le temps dans les systèmes numériques
Les circuits numériques complexes doivent coordonner leurs opérations. Une horloge fournit souvent une référence temporelle commune à de nombreux blocs.
Elle produit un signal périodique dont les transitions servent de repères pour enregistrer des données ou déclencher certaines opérations. La fréquence de cette horloge indique le nombre de cycles effectués chaque seconde.
Tous les circuits numériques ne fonctionnent cependant pas obligatoirement avec une horloge. Certains circuits réagissent directement aux changements de leurs entrées et d'autres utilisent des mécanismes de synchronisation particuliers.
Les fonctions numériques
En combinant les opérations élémentaires, il devient possible de construire des fonctions numériques de plus en plus élaborées.
Un système peut par exemple effectuer des calculs arithmétiques, stocker temporairement une donnée, compter des événements, comparer des valeurs, choisir une source parmi plusieurs ou commander une succession d'opérations.
Ces fonctions constituent les briques à partir desquelles sont construits les circuits numériques complexes. Leur organisation détermine l'architecture générale du système.
Les différentes architectures
La manière dont les fonctions numériques sont regroupées et reliées définit l'architecture du circuit.
Un circuit simple peut être conçu pour réaliser une fonction fixe. Un système plus complexe peut comporter plusieurs unités de calcul, des blocs de mémoire, des circuits de contrôle et des interfaces permettant d'échanger des données avec l'extérieur.
L'architecture dépend de la fonction recherchée, de la quantité de données à traiter, de la vitesse nécessaire, de la consommation électrique et de la possibilité ou non de modifier le comportement du circuit après sa fabrication.
La conception des circuits numériques
La conception commence généralement par la définition de la fonction que doit réaliser le système. Les ingénieurs décrivent ensuite les opérations nécessaires et organisent les différents blocs logiques.
Pour les circuits simples, cette organisation peut être représentée directement sous forme de schéma. Pour les systèmes comportant des milliers ou des millions de fonctions, des méthodes de conception spécialisées deviennent indispensables.
Des outils informatiques permettent de simuler le fonctionnement du circuit avant sa fabrication. Ils vérifient les relations logiques, les temps de propagation et le comportement dans différentes conditions.
La description matérielle
Lorsque les circuits deviennent très complexes, leur fonctionnement peut être décrit à l'aide de langages de description matérielle. Ces langages permettent de représenter le comportement et la structure d'un système numérique sous une forme exploitable par les outils de conception.
Le concepteur peut ainsi décrire une opération, un registre, une machine à états ou l'organisation de plusieurs blocs sans dessiner individuellement chaque porte logique.
Les outils de synthèse transforment ensuite cette description en une réalisation matérielle constituée de fonctions logiques et de connexions adaptées à la technologie utilisée.
La réalisation physique
Une fois la conception validée, le circuit peut être transformé en une réalisation physique. Dans un circuit intégré, les fonctions logiques sont finalement construites à partir de transistors et de leurs interconnexions sur une puce de silicium.
Dans d'autres systèmes, les fonctions numériques peuvent être réalisées à l'aide de plusieurs composants reliés sur une carte électronique.
Le même raisonnement logique peut donc conduire à des réalisations physiques très différentes selon les contraintes de coût, de volume, de puissance, de vitesse et de quantité produite.
Les avantages du traitement numérique
La représentation binaire permet de reproduire et de transmettre une information avec une grande fiabilité. Tant que les niveaux électriques restent suffisamment éloignés des seuils de décision, de petites perturbations ne modifient pas la valeur logique reconnue.
Les données numériques peuvent également être copiées sans perte liée à la copie elle-même, stockées dans de grandes quantités de mémoire et traitées par des circuits programmables ou spécialisés.
Cette robustesse explique le développement de l'électronique numérique dans les systèmes informatiques, les télécommunications, l'automobile, l'industrie, les appareils multimédias et les équipements scientifiques.
De la logique élémentaire aux systèmes numériques
L'électronique numérique forme ainsi une chaîne de conception progressive. Les informations sont d'abord représentées sous forme binaire, puis manipulées par des règles logiques. Ces règles permettent de construire des fonctions combinatoires et séquentielles, qui sont ensuite regroupées en architectures de plus en plus complexes.
La conception moderne permet finalement de transformer une description logique en un ensemble physique de millions ou de milliards de transistors capables de traiter automatiquement des informations à très grande vitesse.
- Le système binaire
- L'algèbre de Boole
- Les tableaux de Karnaugh
- Les portes logiques
- Les fonctions standards et les circuits de calcul
- Les circuits séquentiels
- Les architectures de circuits
- La pratique et les langages de description (VHDL/Verilog)
Les fonctions standards et les circuits de calcul
Les circuits logiques combinatoires permettent de construire des fonctions numériques complètes à partir de portes logiques. Certaines de ces fonctions sont tellement courantes qu'elles sont devenues des fonctions standards de l'électronique numérique.
Ces circuits permettent notamment de calculer, de comparer, de sélectionner ou de transformer des informations binaires.
Le demi-additionneur
Le demi-additionneur est le circuit combinatoire le plus simple permettant d'additionner deux bits.
Lorsque l'on additionne deux bits A et B, il faut produire deux résultats : le bit de somme et le report, noté C (carry).
| A | B | Somme S | Report C |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
La somme est obtenue avec une porte XOR :
S = A ⊕ B
Le report est obtenu avec une porte AND :
C = A · B
Lorsque 1 + 1 est effectué, le résultat binaire est 10. Le 0 constitue la somme du bit actuel et le 1 est envoyé vers la position binaire suivante sous forme de report.
Le circuit du demi-additionneur
Un demi-additionneur peut donc être réalisé avec seulement deux portes principales : une porte XOR pour la somme et une porte AND pour le report.
Les deux portes reçoivent les mêmes entrées A et B, mais produisent deux résultats différents.
Le demi-additionneur permet ainsi de transformer :
A + B
en deux sorties :
S + C
où S est la somme et C le report (carry).
Le demi-additionneur présente cependant une limitation : il ne possède pas d'entrée permettant de recevoir le report provenant du bit précédent.
L'additionneur complet
L'additionneur complet permet d'additionner des nombres comportant plusieurs bits. Il possède trois entrées :
- A : premier bit à additionner ;
- B : deuxième bit à additionner ;
- Cin : report provenant de la position précédente.
Il possède également deux sorties :
- S : bit de somme ;
- Cout : report transmis à la position suivante.
La table de vérité est :
| A | B | Cin | S | Cout |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
La somme peut être exprimée par :
S = A ⊕ B ⊕ Cin
Le report (carry) est obtenu par :
Cout = A · B + Cin · (A ⊕ B)
Construire un additionneur complet
Un additionneur complet peut être construit à partir de deux demi-additionneurs et d'une porte OR.
Le premier demi-additionneur additionne A et B. Il produit une somme intermédiaire et un premier report.
Le deuxième demi-additionneur additionne cette somme intermédiaire avec Cin.
Les deux reports sont ensuite combinés avec une porte OR pour produire Cout.
L'additionneur binaire à plusieurs bits
Pour additionner deux nombres binaires comportant plusieurs bits, on associe plusieurs additionneurs complets.
Chaque additionneur traite une position binaire et transmet son report à l'additionneur situé à la position suivante.
Pour une addition sur quatre bits, quatre additionneurs peuvent ainsi être reliés en chaîne.
Le report produit par le premier étage devient l'entrée de report du deuxième, puis celui du deuxième devient l'entrée du troisième, et ainsi de suite.
Le circuit effectue donc l'addition bit par bit, en commençant par le bit de poids faible.
Par exemple :
0111
\+ 0011
──────
1010
L'additionneur traite successivement les différentes positions et transmet les reports nécessaires vers la gauche.
Le temps de propagation dans un additionneur
Dans un additionneur où les reports traversent successivement plusieurs étages, le résultat final ne peut être stabilisé qu'après la propagation du report à travers les différents additionneurs.
Cette organisation est appelée additionneur à propagation de retenue.
Plus le nombre de bits est important, plus le report peut devoir traverser d'étages avant d'atteindre le résultat final. La vitesse du calcul est donc limitée par cette propagation.
Le soustracteur
Les circuits numériques doivent également pouvoir effectuer des soustractions binaires.
On peut construire un soustracteur à partir de portes logiques en utilisant les mêmes principes que pour l'addition.
Un demi-soustracteur reçoit deux bits A et B et produit une différence ainsi qu'un emprunt.
| A | B | Différence D | Emprunt E |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
La différence est obtenue avec une porte XOR :
D = A ⊕ B
L'emprunt vaut :
E = A · B
Le soustracteur complet
Pour effectuer une soustraction sur plusieurs bits, il faut également pouvoir recevoir un emprunt provenant de la position précédente.
On utilise alors un soustracteur complet possédant trois entrées :
- A : premier bit ;
- B : deuxième bit ;
- Ein : emprunt entrant.
Ses sorties sont :
- D : différence ;
- Eout : emprunt sortant.
Plusieurs soustracteurs complets peuvent être associés pour effectuer une soustraction sur plusieurs bits.
La soustraction par complément à deux
Dans de nombreux systèmes numériques, la soustraction n'est pas réalisée avec un circuit totalement séparé de l'additionneur. Elle peut être transformée en addition grâce au complément à deux.
Pour calculer :
A − B
on peut effectuer :
A + complément à deux de B
Le complément à deux d'un nombre s'obtient en inversant tous ses bits puis en ajoutant 1.
Cette méthode permet à un même circuit arithmétique de réaliser aussi bien des additions que des soustractions.
Le comparateur
Un comparateur logique permet de déterminer la relation entre deux valeurs binaires.
Selon le circuit, il peut indiquer si :
- A = B ;
- A > B ;
- A < B.
Pour comparer deux bits, une porte XNOR peut déterminer s'ils sont identiques.
Pour des nombres comportant plusieurs bits, les différentes positions sont comparées et les résultats sont combinés afin de déterminer la relation entre les deux nombres.
Le multiplexeur
Un multiplexeur, souvent abrégé MUX, permet de sélectionner une entrée parmi plusieurs et de transmettre cette entrée vers une sortie.
Il possède des entrées de données et une ou plusieurs entrées de commande.
Avec deux entrées de données D0 et D1 et une entrée de commandeS :
| C | Sortie S |
|---|---|
| 0 | D0 |
| 1 | D1 |
La fonction peut être écrite :
S = C · D0 + C · D1
Le multiplexeur agit donc comme un commutateur électronique commandé par des signaux logiques.
Les multiplexeurs à plusieurs entrées
Avec deux bits de sélection, un multiplexeur peut choisir entre quatre entrées. Avec trois bits de sélection, il peut en choisir huit.
Plus généralement, n bits de sélection permettent de sélectionner une entrée parmi :
2n
entrées possibles.
Les multiplexeurs sont utilisés pour choisir quelle donnée doit être transmise dans une partie d'un circuit numérique.
Le démultiplexeur
Le démultiplexeur, ou DEMUX, réalise la fonction inverse du multiplexeur.
Il reçoit une donnée en entrée et utilise les lignes de sélection pour déterminer vers laquelle de plusieurs sorties cette donnée doit être envoyée.
Avec une entrée de données et deux sorties, une ligne de sélection permet de choisir la sortie active.
Le démultiplexeur peut donc être utilisé pour distribuer une information vers une destination choisie.
L'encodeur
Un encodeur transforme une information représentée par plusieurs lignes d'entrée en un code binaire plus compact.
Par exemple, un encodeur possédant huit entrées peut produire trois bits de sortie, car trois bits permettent de représenter huit possibilités :
23 = 8
Lorsqu'une entrée est activée, l'encodeur produit sur ses sorties le code binaire correspondant à cette entrée.
Les encodeurs sont notamment utilisés lorsqu'il faut transformer une sélection physique ou logique en une représentation binaire.
L'encodeur prioritaire
Dans un encodeur classique, on suppose généralement qu'une seule entrée est active à la fois. Dans certaines applications, plusieurs entrées peuvent cependant être activées simultanément.
Un encodeur prioritaire attribue alors une priorité aux différentes entrées.
Si plusieurs entrées sont actives, le circuit encode celle qui possède la priorité la plus élevée.
Le décodeur
Un décodeur réalise l'opération inverse de l'encodage. Il reçoit un code binaire en entrée et active une sortie correspondant à ce code.
Avec deux bits d'entrée, quatre sorties peuvent être sélectionnées :
| A | B | Sortie active |
|---|---|---|
| 0 | 0 | S0 |
| 0 | 1 | Y1 |
| 1 | 0 | S2 |
| 1 | 1 | S3 |
Un décodeur possédant n entrées peut théoriquement sélectionner jusqu'à 2n sorties.
Les décodeurs pour afficheurs
Un décodeur peut également transformer un code binaire en plusieurs signaux permettant de commander un afficheur.
Par exemple, un décodeur peut recevoir un nombre codé en binaire et produire les signaux nécessaires pour allumer les différents segments d'un afficheur numérique.
Pour afficher les chiffres de 0 à 9 sur un afficheur à sept segments, le circuit détermine quels segments doivent être allumés pour chaque valeur reçue.
Le démultiplexage et le décodage
Le démultiplexeur et le décodeur peuvent sembler proches car ils utilisent tous deux des lignes de sélection pour déterminer une sortie.
La différence principale est que le démultiplexeur transmet une donnée vers la sortie sélectionnée, tandis que le décodeur active une sortie correspondant au code reçu.
Les circuits arithmétiques
Les additionneurs et les soustracteurs constituent des circuits arithmétiques. Ils permettent de réaliser les opérations nécessaires aux calculs numériques.
En combinant plusieurs circuits élémentaires, on peut réaliser des unités capables d'effectuer différentes opérations sur des nombres binaires.
Ces circuits constituent notamment les bases des unités arithmétiques et logiques, ou ALU (Arithmetic Logic Unit), utilisées dans les processeurs.
L'unité arithmétique et logique
Une ALU est un circuit capable d'effectuer différentes opérations arithmétiques et logiques sur des données binaires.
Selon les signaux de commande reçus, elle peut par exemple effectuer une addition, une soustraction ou une opération logique.
Elle reçoit généralement :
- des données binaires à traiter ;
- des signaux indiquant l'opération à effectuer ;
- éventuellement des informations provenant d'une opération précédente.
Elle produit le résultat de l'opération ainsi que différents signaux indiquant certaines propriétés du résultat, selon son architecture.
Les signaux de commande
Les circuits standards ne réalisent pas nécessairement une seule fonction. Certains possèdent des entrées de commande permettant de choisir leur fonctionnement.
Par exemple, un circuit peut recevoir deux nombres binaires et plusieurs bits de commande. La combinaison de ces bits détermine l'opération que le circuit doit effectuer.
Les signaux de commande permettent ainsi de transformer plusieurs fonctions élémentaires en un circuit multifonction.
Assembler les fonctions standards
Les fonctions standards peuvent être associées entre elles pour construire des circuits plus complexes.
Un multiplexeur peut sélectionner une donnée, un additionneur peut effectuer un calcul sur cette donnée, puis un comparateur peut vérifier le résultat. Chaque bloc réalise une fonction précise et les sorties d'un bloc peuvent alimenter les entrées d'un autre.
Cette organisation par blocs permet de construire progressivement des systèmes numériques complexes tout en conservant une structure compréhensible.
Des circuits standards aux processeurs
Les processeurs utilisent un très grand nombre de circuits combinatoires associés à des circuits capables de mémoriser des informations.
Les additionneurs, comparateurs, multiplexeurs, décodeurs et autres fonctions logiques sont utilisés à différents endroits du processeur pour traiter, sélectionner et transformer les données binaires.
Les circuits combinatoires assurent ainsi une grande partie des opérations instantanées effectuées sur les données, tandis que les circuits séquentiels permettent de conserver les états et d'organiser les opérations dans le temps.