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 tableaux de Karnaugh
L'algèbre de Boole permet de décrire le fonctionnement d'un circuit logique sous la forme d'une expression composée de 0, de 1 et d'opérations logiques. Lorsque le nombre de variables augmente, ces expressions peuvent cependant devenir longues et difficiles à simplifier.
Le tableau de Karnaugh est une méthode graphique qui permet de représenter une fonction logique et de repérer facilement les simplifications possibles.
Son objectif est de trouver une expression logique plus simple qui produit exactement les mêmes résultats que l'expression d'origine, mais avec moins d'opérations logiques et donc, généralement, moins de portes dans le circuit.
Principe d'un tableau de Karnaugh
Un tableau de Karnaugh contient une case pour chaque combinaison possible des variables d'entrée. Dans chaque case, on inscrit la valeur de la sortie correspondant à cette combinaison : 0 ou 1.
Le nombre de cases dépend du nombre de variables :
- 2 variables → 4 cases ;
- 3 variables → 8 cases ;
- 4 variables → 16 cases ;
- 5 variables → 32 cases ;
- 6 variables → 64 cases.
En pratique, les tableaux de Karnaugh sont surtout utilisés pour des fonctions comportant un nombre limité de variables. Lorsque le nombre de variables devient important, des méthodes algorithmiques sont généralement plus adaptées.
Pourquoi les cases ne suivent-elles pas l'ordre binaire habituel ?
L'organisation des cases est particulière. Les lignes et les colonnes sont ordonnées selon le code Gray, et non selon l'ordre binaire classique.
Dans un code Gray, deux valeurs voisines ne diffèrent que par un seul bit.
Pour deux variables, l'ordre est :
00 → 01 → 11 → 10
Entre deux cases voisines, une seule variable change. Cette propriété est essentielle pour pouvoir regrouper les cases et simplifier les expressions.
Tableau de Karnaugh à deux variables
Avec deux variables A et B, le tableau contient quatre cases.
| A \ B | 0 | 1 |
|---|---|---|
| 0 | F(00) | F(01) |
| 1 | F(10) | F(11) |
Chaque case correspond donc à une combinaison précise des deux variables.
Si l'on veut représenter la fonction :
F = A · B
la sortie vaut 1 uniquement lorsque A = 1 et B = 1. Une seule case du tableau contient donc un 1.
Tableau de Karnaugh à trois variables
Avec trois variables A, B et C, on utilise généralement une variable pour les lignes et deux variables pour les colonnes.
| A \ BC | 00 | 01 | 11 | 10 |
|---|---|---|---|---|
| 0 | F(000) | F(001) | F(011) | F(010) |
| 1 | F(100) | F(101) | F(111) | F(110) |
L'ordre 00, 01, 11, 10 permet de conserver la propriété du code Gray entre les cases voisines.
Tableau de Karnaugh à quatre variables
Avec quatre variables A, B, C et D, on utilise généralement deux variables pour les lignes et deux pour les colonnes.
| AB \ CD | 00 | 01 | 11 | 10 |
|---|---|---|---|---|
| 00 | F(0000) | F(0001) | F(0011) | F(0010) |
| 01 | F(0100) | F(0101) | F(0111) | F(0110) |
| 11 | F(1100) | F(1101) | F(1111) | F(1110) |
| 10 | F(1000) | F(1001) | F(1011) | F(1010) |
Là encore, les étiquettes suivent le code Gray. Une particularité importante apparaît : les bords du tableau sont considérés comme adjacents. La première colonne est donc voisine de la dernière, et la première ligne est voisine de la dernière.
Remplir un tableau de Karnaugh
Pour construire un tableau de Karnaugh, on commence par établir la table de vérité de la fonction.
Chaque combinaison d'entrée correspond à une case du tableau. On inscrit ensuite dans cette case la valeur de sortie correspondante.
Une fonction possédant quatre variables possède donc seize combinaisons possibles et nécessite seize cases dans son tableau.
Regrouper les 1
Pour simplifier une fonction exprimée sous la forme d'une somme de produits, on recherche des groupes de cases contenant des 1.
Les groupes doivent toujours contenir un nombre de cases correspondant à une puissance de 2 :
- 1 case ;
- 2 cases ;
- 4 cases ;
- 8 cases ;
- 16 cases ; etc.
Un groupe doit être constitué de cases adjacentes. Les cases situées en diagonale ne sont pas adjacentes.
Il faut rechercher les groupes les plus grands possibles, car plus un groupe contient de cases, plus l'expression obtenue est simple.
Pourquoi un groupe simplifie-t-il l'expression ?
Deux cases adjacentes ne diffèrent que par une seule variable. Lorsque cette variable prend successivement les valeurs 0 et 1 dans le groupe, elle peut disparaître de l'expression grâce aux lois de l'algèbre de Boole.
Par exemple :
A · B + A · B = A
La variable B disparaît car elle prend les deux valeurs possibles dans le groupe.
Regrouper deux cases
Supposons qu'un groupe de deux cases contienne :
A · B + A · B
On peut appliquer la factorisation :
A · (B + B)
Or :
B + B = 1
Il reste donc :
A
Le regroupement des deux cases permet ainsi de supprimer une variable.
Regrouper quatre cases
Un groupe de quatre cases permet de supprimer davantage de variables.
Dans un tableau à quatre variables, si quatre cases adjacentes ont la valeur 1 et que seules deux variables restent constantes dans tout le groupe, les deux autres variables disparaissent de l'expression.
Plus généralement, pour un groupe de 2n cases, n variables peuvent disparaître lorsque le groupe permet de les faire varier.
Les groupes doivent être les plus grands possibles
Il est préférable de former un groupe de quatre cases plutôt que deux groupes de deux lorsqu'un tel regroupement est possible.
De même, un groupe de huit cases est préférable à plusieurs groupes plus petits s'il permet de couvrir les mêmes 1.
Le but est d'obtenir le moins grand nombre de variables possible dans chaque terme.
Une case peut appartenir à plusieurs groupes
Une même case contenant un 1 peut appartenir à plusieurs groupes si cela permet d'obtenir une expression plus simple.
Il n'est donc pas nécessaire de chercher à répartir chaque case dans un seul groupe. Un chevauchement peut au contraire être utile pour réaliser les regroupements les plus grands possibles.
Toutes les cases contenant 1 doivent être couvertes
Lorsqu'on simplifie une fonction, chaque 1 du tableau doit être couvert par au moins un groupe.
On cherche cependant à éviter les regroupements inutiles. Un groupe qui n'ajoute aucune nouvelle combinaison de la fonction simplifiée n'est pas nécessaire.
L'adjacence sur les bords
Les bords d'un tableau de Karnaugh sont reliés entre eux. La première colonne est donc adjacente à la dernière colonne. De même, la première ligne est adjacente à la dernière ligne.
Cela permet de former des groupes qui semblent traverser le bord du tableau.
Par exemple, dans un tableau à quatre variables, les quatre cases situées dans les coins peuvent former un groupe de quatre si elles contiennent toutes un 1. Les coins sont considérés comme voisins grâce à l'adjacence des bords.
Les zéros et les fonctions POS
On peut également utiliser un tableau de Karnaugh en regroupant les 0 plutôt que les 1.
Cette méthode est particulièrement adaptée lorsque l'on souhaite obtenir une expression sous forme de produit de sommes, appelée forme POS (Product of Sums).
Le principe reste identique : on forme des groupes de 0 aussi grands que possible, toujours par groupes de 1, 2, 4, 8, etc.
Les conditions indifférentes
Certaines combinaisons d'entrée peuvent ne jamais se produire dans le fonctionnement réel d'un circuit. Leur sortie n'a alors pas besoin d'être définie.
Ces situations sont représentées dans un tableau de Karnaugh par un symbole X, appelé condition indifférente ou don't care.
Une case contenant un X peut être considérée comme un 0 ou comme un 1, selon ce qui permet d'obtenir la simplification la plus importante.
Une condition indifférente ne doit donc pas obligatoirement être utilisée dans un groupe.
Exemple de simplification
Considérons une fonction à trois variables A, B et C dont la sortie vaut 1 pour les combinaisons suivantes :
001, 011, 101, 111
On remarque que, dans toutes ces combinaisons, la variable C vaut 1. Les variables A et B peuvent prendre indifféremment les valeurs 0 ou 1.
Le tableau de Karnaugh permet donc de regrouper les quatre cases correspondantes en un seul groupe.
La fonction se simplifie en :
F = C
Le circuit n'a alors plus besoin de portes AND ou OR : la sortie peut être directement reliée à C.
Construire un circuit à partir d'un tableau de Karnaugh
Une fois les groupes déterminés, chaque groupe donne un terme de l'expression logique simplifiée.
Les différents termes sont ensuite reliés par une opération OU lorsqu'on utilise un regroupement des 1.
On obtient ainsi une expression logique simplifiée qui peut être transformée directement en circuit avec des portes NOT, AND et OR.
Le tableau de Karnaugh constitue donc une étape intermédiaire entre la table de vérité et le circuit logique.
Optimiser un circuit logique
La simplification par tableau de Karnaugh peut réduire le nombre de portes logiques nécessaires. Elle peut également réduire le nombre d'entrées utilisées par ces portes et le nombre d'étages logiques traversés par le signal.
Un circuit simplifié peut ainsi être plus petit, consommer moins de ressources et présenter un temps de propagation plus faible.
Dans un circuit numérique réel, cette optimisation peut donc avoir des conséquences importantes sur la complexité, la consommation et la vitesse du système.