La représentation naturelle que nous utilisons pour représenter des nombres est une représentation pondérée. Les systèmes Décimal de base B=10, Octal de base B=8, Hexadécimal de base B=16 et Binaire de base B=2 sont des systèmes pondérés
un système pondéré de base B est caractérisé par :
Le système binaire revêt une importance fondamentale en électronique et en informatique, principalement parce qu'il est aisément transposable en signaux électriques. En effet, les deux états possibles du système binaire, représentés par les chiffres 0 et 1, peuvent être matérialisés de diverses manières techniques, permettant ainsi de simplifier la conception et la fabrication des circuits électroniques. Parmi ces méthodes, on peut citer :
Ces représentations permettent une mise en œuvre robuste et efficace des systèmes numériques, qui forment la base des technologies modernes, des ordinateurs aux systèmes embarqués en passant par les télécommunications.
La conversion entre les systèmes dont la base est une puissance de v2 est très facile. Le conversion de ou vers la base 10 demande un peu plus de travail
chaque chiffre Hexadécimal est écrit sur 4 bits :
8E97A16 = 1000 1110 1001 0111 10102
chaque chiffre octal est est écrit sur 3 bits :
6578 = 110 101 1112
Le nombre binaire est découpé en blocs de 4 bits en commençant de la droite (LSB), ensuite chaque bloc de 4 bits est représenté en hexadécimal
111101111100110112 = 1 1110 1111 1001 10112 = 1EF9B16
La méthode la plus automatique et la division/multiplication en échelle.
Pour la partie entière, on effectue une division successive par 2. On arrête quand on a un quotient nul. Le résultat en binaire est constitué par les restes successifs des divisions.
Pour la partie décimale, on procède à des multiplications successives par 2. Le processus s'arrête dès qu'un produit entier est obtenu. Toutefois, il peut arriver que l'on n'obtienne jamais de produit entier, dans ce cas, la multiplication peut théoriquement se poursuivre indéfiniment. Dans une telle situation, on peut choisir de s'arrêter dès que l'on estime que le nombre de chiffres après la virgule est suffisant.
On va convertir le nombre 947,6407 en binaire
Pour la partie entière on obtient :
Pour la partie décimale :
le résultat final est : 947,6407=1110110011.101001
Le calcul dans le système binaire se fait de la même façon que nous avons appris à le faire en décimal dans la petite école.
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0 et on retient 1
On remarque dans l'exemple qu'à cause de la retenue du rang précédent, on est amené à ajouter 3 bits. On en déduit qu'un additionneur élémentaire doit additionner 3 bits et produire une somme et une retenue. Nous reviendrons plus en détail sur cet aspect dans la section consacrée aux circuits numériques.
0 - 0 = 0
0 - 1 = 1 après avoir emprunté 1 à la rangée de gauche
1 - 0 = 1
1 - 1 = 0
Avec la soustraction, même s'il arrive qu'on parle de retenue, en fait c'est un emprunt (Borrow en anglais). On constate sur l'exemple qu'à chaque colone, on effectue une soustraction de 3 bites \((X - Y - B_{in})\) et on produit un résultat \(S\) et un Borrow \(B_{out}\). Le tableau ci-dessous répertorie toutes les possibilités
Nous reviendrons plus en détail sur cet aspect dans la section consacrée aux circuits numériques.
Là aussi, on procède comme on le fait en base 10
Il existe plusieurs façons de représenter les nombres négatifs en binaire. La plus utilisée en informatique est la méthode du complément à deux. Cette technique repose sur une propriété fondamentale : le complément (-N) d'un nombre N est défini de manière à vérifier l'égalité suivante : \(N+(-N)=0\)
Cependant, en binaire, cette méthode n'a de sens que si l'on travaille avec un nombre fixe de bits, ce qui correspond à la taille des registres ou des données manipulées par une machine. Prenons l'exemple d'une machine qui utilise 4 bits pour représenter les nombres. Cette machine peut représenter uniquement les nombres compris entre 0000 (0 en base 10) et 1111 (15 en base 10). Examinons quelques opérations :
Ce comportement implique qu'une machine 4 bits effectue ses calculs modulo \(2^4=16\). Dans ce système, le nombre 16 est équivalent à 0. Par conséquent, la méthode du complément à deux repose sur la relation : $$N+(-N)=16$$ Le complément du nombre N est donc : $$(-N)=16-N$$ D'une façon générale, dans une machine n bits, le complément d'un nombre N est donné par : $$(-N)=2^n-N$$
Cette définition garantit que l'addition de N et de son complément donne toujours zéro
Le complément à 2 d'un nombre peut être déterminé directement en binaire sans passer par les relations ci-dessus.
En effet :
$$(-N)=16-N=(15+1)-N=(15-N)+1$$L'opération \(15-N\) s'appelle le complément à 1 du nombre N. Elle revient à complémenter un par un tous les bits du nombre N. Ensuite, il suffit d'ajouter 1 pour obtenir Le Le complément à 2
Cherchons la représentation du nombre (-7) :
En définitif, notre machine 4 bits peut représenter \(2^4=16\) nombres différents :
Le binaire naturel n'est pas la seule représentation des nombres utilisée en informatique. Bien que le système binaire naturel (ou positionnel) soit largement employé pour représenter les nombres en raison de sa simplicité et de son adéquation avec le fonctionnement des circuits électroniques, d'autres systèmes de codage peuvent être mieux adaptés à certains contextes spécifiques. Parmi ces systèmes, on trouve :
Ces systèmes de codage, bien que moins universels que le binaire naturel, répondent à des besoins spécifiques en optimisant certains aspects comme la lisibilité humaine (BCD), la robustesse contre les erreurs (code de Gray) ou la gestion de plages numériques particulières (excès-N). Ainsi, le choix d'un système dépend largement des contraintes et des exigences de l'application envisagée
Le tableau ci-dessous présente l'exemple de quelques codes :
Le code de Gray est le code binaire réfléchi, c'est un cas très important des codes continus.
Un code est continu au sens large si dans la table de vérité qui le définit, les états successifs sont adjacents, c'est à dire que quand on passe de l'un à l'autre, il y a un seul chiffre qui change. Un code est continu au sens strict si en plus le premier et le dernier état sont adjacents.
Un code réfléchi est un code naturel dont on a renversé le sens de variation par endroits afin de le rendre continu. On renverse une période sur deux en commençant par la deuxième. Le tableau ci-dessous illustre le code ternaire (base 3) réfléchi.
Le tableau ci-dessous illustre le code Gray
Le code de Gray est très fréquemment utilisé notamment sur les tables de Karnaugh pour simplifier les fonctions logiques. Remarquons que le code de Gray est continu au sens stricte, 0 est adjacent avec 15
Comme on le voit sur la figure, la table de Karnaugh est une table de vérité représentée d'une façon particulière. Les adresses des cases sont représentées en code de Gray de sorte à ce que toutes les cases qui ont un coté commun soient adjacentes. Les cases sur les extrémités opposées sont aussi adjacentes, on peut vérifier les adjacentes suivantes : 0-3, 7-4, 8-11, 15-12, 0-15, 1-14, 2-13, 3-12
Si on considère la table comme une feuille de papier, on peut vérifier les adjacence en enroulant la feuille verticalement et horizontalement
L'algèbre de Boole est une branche des mathématiques qui traite des variables logiques et des opérations logiques. Elle a été développée par George Boole au XIXe siècle et constitue la base des systèmes numériques et de l'informatique moderne. C'est l'algèbre des variables qui ne peuvent prendre que deux valeurs généralement notées 0 et 1, représentant le faux et le vrai. Les opérations fondamentales de l'algèbre de Boole incluent le ET (AND), le OU (OR), et le NON (NOT), qui permettent de manipuler les valeurs logiques pour résoudre des problèmes de logique et de conception de circuits numériques. Cette discipline est essentielle pour comprendre le fonctionnement des ordinateurs et des systèmes électroniques
L'algèbre de Boole repose sur :
C'est une grandeur qui ne peut prendre que deux valeurs 0 ou 1
C'est une fonction de une ou plusieurs variables booléennes, ne pouvant prendre elle-même qu'une des deux valeurs 0 ou 1. Pour la définir, il faut préciser sa valeur pour toutes les combinaisons possibles des variables.
Il arrive que l'état de la fonction ne soit déterminé pour certaines combinaison des entrées. Dans ce cas on met un 'x' dans la table de vérité pour indiquer que l'état de la fonction dans ces cas n'a pas d'importance et il peut être considéré comme un '1' ou un '0'. Cela arrive quand certaines combinaisons des entrées ne peuvent pas exister dans la pratique. Rien de mieux qu'un petit exemple pour illustrer ce genre de situation :
On désire maintenir la température d'une salle de travail entre 17°C et 20°C. Nous nous procurons deux capteurs de température ayant chacun une sortie logique que nous appellerons C17 et C20 . Chaque capteur fonctionne de la manière suivante
On va essayer de construire un système logique qui délivre une alarme S chaque fois que la température sort de l'intervalle [17°,20°]. Ce qui revient à chercher la fonction S des deux variables C17 et C20 , S = f(C17 ,C20 )
La figure illustre les trois situations possibles de la température, les état des capteurs et la valeur de la fonction S.
Quand on dresse la table de vérité, avec deux variables, on a quatre combinaison possibles :
On s'aperçoit qu'il manque l'état (C17=0, C20=1), normal, cet état ne peu pas exister car il correspond à une température en même temps inférieure à 17 et supérieure à 20. Dans la table vérité on met un x comme valeur de S ce qui signifie qu'on s'en fout de sa valeur puisque cet état est impossible. Lors de la recherche de l'expression de S, on peut considérer le 'x' comme un 0 ou comme un 1 selon la convenience
On peut montrer que toute fonction booléenne peut se synthétiser à partir d'un nombre très réduit de fonctions (élémentaires) de deux variables ou l'extension à plusieurs variables de ces mêmes fonctions. Ces fonctions sont souvent appelées Opérateurs.
(A . B) est vrai si et seulement si A est vraie et B est vraie
(A + B) est vrai si et seulement si A est vraie ou B est vraie
Inverse la valeur de l'entrée
Les trois opérateurs de base, AND, OR et NOT, suffisent à construire n'importe quelle fonction logique. Cependant, dans certaines situations, l'utilisation d'opérateurs combinés comme XOR, NAND et NOR peut être avantageuse pour simplifier l'écriture des fonctions et faciliter la conception de systèmes électroniques.
(A ⊕ B) est vrai si et seulement si A est vraie ou B est vraie mais pas les deux à la fois
XOR est un opérateur combiné car il peut être construit à l'aide des opérateurs de base :
\( \rm A \oplus B = A\overline{B}+\overline{A}B \)
C'est le complément de l'opérateur ET. C'est l'opérateur le plus couramment utilisé dans la pratique, on verra pourquoi quand on aura vu la règle de Morgan
C'est le complément de l'opérateur OU.
\( \boxed{ \begin{matrix} \rm{A} &+ &0 &= &\rm{A} \\ \rm{A} &+ &1 &= &1 \\ \rm{A} &+ &\bar{\rm{A}} &= &1 \end{matrix}} \) \( \boxed{ \begin{matrix} \rm{A} &. &0 &= &0 \\ \rm{A} &. &1 &= &\rm{A} \\ \rm{A} &. &\bar{\rm{A}} &= &0 \end{matrix} } \)
• est distributive par rapport à +
+ est distributive par rapport à •
Verification :
\(
\begin{aligned}
\rm{(A+B).(A+C)}&=\rm{A.(A+C)+B.(A+C)}\\
&=\rm{A+BA+BC}\\
&=\rm{A.(1+B)+BC}\\
&=\rm{A+BC}
\end{aligned}
\)
Vérification:
\( \rm{A.B+A.\bar{B}=A.(B+\bar{B})=A.1=A} \)
\( \mathrm{(A+B).(A+\bar{B})=A+(B.\bar{B})=A+0=A} \)
En effet :
\( \rm{A+\bar{A}B=(A+\bar{A}).(A+B)=1.(A+B)=A+B} \)
Rappelons la table de vérité des opérateurs ET et OU :
On peut lire ces tables d'une façon différente de ce que nous avons l'habitude de faire :
Ces deux phrases peuvent se traduire algébriquement par :
$$ \boxed{ \overline{\rm{A+B}}=\overline{\rm{A}} . \overline{\rm{B}}} $$ $$ \boxed{ \overline{\rm{A.B}}=\overline{\rm{A}} + \overline{\rm{B}}} $$On coupe la barre et on change l'opérateur
Soit la fonction S définie par la table de vérité :
Cette table de vérité peut s'écrire de la façon algébrique suivante :
$$ \rm{S(A, B, C)=A B \bar{C}+\bar{A} \bar{B} C+A \bar{B} C+\bar{A} B C+A B C} $$A droite du signe =, on a une expression logique, c'est un peut l'équivalent d'un polynôme
Cependant, Il y a d'autre expression différentes mais équivalentes pour représenter la fonction S. On peut vérifier sur la table qu'on a aussi \(S=B C+A B+A C+\bar{A} C\)
La première expression de S est particulière. Dans chaque monôme, figurent toutes les variables. Cette expression est appelée forme canonique somme. C'est l'expression qui traduit fidèlement la table de vérité. Ce n'est pas l'expression la plus simple. Nous apprendrons plus tard à la simplifier à l'aide de la méthode de Karnaugh
La forme canonique produit revient à écrire l'expression de \(\bar{S}\) :
\(\bar{S}(A, B, C)=\bar{A} \bar{B} \bar{C}+A \bar{B} \bar{C}+\bar{A} B \bar{C}\)
On inverse tout :
\( S(A,B,C)=\overline{ \bar{A}\bar{B}\bar{C}+A\bar{B}\bar{C}+\bar{A}B\bar{C} } \)
On utilise le théorème de Morgan (deux fois) :
\( S(A,B,C)=\overline{ \bar{A}\bar{B}\bar{C}} . \overline{A\bar{B}\bar{C}} . \overline{\bar{A}B\bar{C} } \)
\(S(A,B,C)=(A+B+C).(\bar{A}+B+C).(A+\bar{B}+C)\)
D'après la forme canonique, Nous pouvons exprimer toute fonction à l'aide de 3 opérateurs, AND, OR et NOR. Voyons comment on peut faire pour n'utiliser que l'opérateur NAND pour exprimer ces fonctions
Prenons un exemple simple : S = AB + CD, le schéma est le suivant :
Si on inverse deux fois l'expression le résultat ne change pas :
\( S = \overline{\overline{AB+CD}} \)
On utilise le théorème de Morgan :
\( S = \overline{\overline{AB}.\overline{CD}} \)
Le schéma correspondant est le suivant :
On s'aperçoit que ce résultat peut être obtenu en travaillant directement sur le schéma en remplaçant systématiquement les opérateur AND et OR par des NAND
Cette règle ne s'applique que si la condition suivante est vérifiée :
En suivant n'importe quel chemin entre une entrée et une sortie, on rencontre
alternativement un AND et un OR. Le premier étant obligatoirement un AND et le dernier
obligatoirement un OR.
Si cette condition n'est pas vérifiée, on peut y remédier en intercalant
des opérateurs A.A ou A+A aux endroits adéquats. Ceux ci ne changent
rien au fonctionnement d'origine. On les appelle les opérateurs fantômes
Les fantômes deviennent des NAND à une entrée qui ne sont rien d'autre que des inverseurs
Exemple : Pour être le plus général possible, on va prendre une expression qui n'est pas sous forme canonique :
La règle n'est pas vérifiée, on ajoute les fantômes
On remplace tout par des NAND
Il s'agit de chercher l'expression la plus simple d'une fonction booléenne. Ceci bien sur dans le but d'avoir une réalisation avec un nombre minimum d'opérateurs. Plusieurs méthodes existent, Nous allons parler de la méthode de Karnaugh (1953)
La table de Karnaugh est une table de vérité représentée d'une façon particulière. Chaque case correspond à une ligne de la table de vérité. Les adresses des cases sont représentées en code de Gray de sorte à ce que toutes les cases qui ont un coté commun soient adjacentes. Les cases sur les extrémités opposées sont aussi adjacentes car deux cases sont adjacentes quand leurs adresses le sont.
Voici un exemple pour 2, 3 puis 4 variables:
Sur la table ci-dessous, on peut vérifier les adjacentes suivantes : 0-3, 7-4, 8-11, 15-12, 0-15, 1-14, 2-13, 3-12. Si on considère la table comme une feuille de papier, on peut vérifier les adjacence d'extrémité en enroulant la feuille verticalement et horizontalement
Il faut faire attention quand on remplit la table de Karnaugh à partir de la table de vérité. La correspondance entre les lignes de la table de vérité et les cases de la table de Karnaugh dépend de la disposition des variables ABCD dans les cases adresses.
Voici un exemple de table de vérité :
Voici des disposition possible de la table de Karnaugh
On obtient les tables suivantes pour la fonction de la table de vérité
Moi, j'utilise toujours la 2ème disposition. Avec le temps, on acquiert un automatisme de remplissage. 😊 Enfin, c'était il y a très longtemps. Ça fait des décennies que je n'ai pas touché à ça😊
Maintenant on regroupe les '1' Adjacents en faisant des groupe de 1, 2, 4, 8 ...Ne pas oublier les adjacences sur les extrémité de la table.
Voici les règles pour obtenir l'expression la plus simple :
Voici quelques exemples :
Voir les exemples de la figure ci-dessus :
Il y a quatre sortie, on cherche 4 fonctions : \( G_o, \; G_1,\; G_2 \;et\; G_3\)
Pour G3, on n'a pas besoin de table Karnaugh. On peut voir sur la table de vérité que :
\(G_3=D\)
Pour transporter le sable d'une position A vers une position B, on utilise le système suivant :
Un chariot peut se déplacer sur un rail sous l'action d'un moteur électrique M :
M=0 → moteur à l'arrêt, M=1 → moteur en marche
Le déplacement du chariot se fait toujours dans le même sens. Deux capteurs A et B permettent de déterminer la position du chariot :
A=1 → chariot en position A, A=0 → le chariot n'est pas en position A. Le capteur B fonctionne de la même façon que A.
Un capteur P placé sur le chariot permet de savoir si le chariot est plein ou vide :
P=1 → chariot plain, P=0 → chariot vide.
Le chariot peut être remplit à l'aide d'une trappe de remplissage Tr :
Tr=1 → trappe ouverte, Tr=0 → trappe fermée.
Le chariot peut être vidé à l'aide d'une trappe de vidange Tv :
Tv = 1 → trappe ouverte, Tv = 0 → trappe fermée
Le fonctionnement se fait de la manière suivante :
Le chariot vide arrive en A (A=1, P=0), le moteur M s'arrête, la trappe de remplissage Tr s'ouvre, Un fois le chariot plein, Tr se ferme et le chariot démarre. Quand le chariot arrive en B, il sarrette et la trappe Tv s'ouvre. Quand le chariot est vide, la trappe Tv se ferme et le chariot démarre. Quand il arrive en A le cycle recommence identique à lui même.
Normalement, ce genre de système est étudié à l'aide de méthode séquentielles. Vu sa simplicité nous allons le faire avec un système combinatoire simple.
Nous allons chercher les fonctions qui commandent les actionneurs M, Tr et Tv à partir des entrée A, B et P
Les circuits numériques forment la base des systèmes utilisés dans une variété d'applications, allant des ordinateurs aux appareils électroniques embarqués.
Contrairement aux circuits séquentiels qui dépendent de l'état précédent pour produire une sortie, les circuits combinatoires génèrent une sortie exclusivement en fonction de leurs entrées actuelles.
Dans ce chapitre, nous allons explorer plusieurs types de circuits combinatoires couramment utilisés dans les systèmes numériques :
La table de vérité est :
D'où l'expression logique de S
$$S=E_0\bar{A_0}\bar{A_1}+E_1\bar{A_0}A_1+E_2A_0\bar{A_1}+E_3A_0A_1$$Ce qui donne le schéma :
Pour réaliser des multiplexeurs avec un grand nombre d'entrées, on peut utiliser de petits multiplexeurs montés en pyramide
Par exemple, pour réaliser un multiplexeur 16:1, on peut utiliser 4 multiplexeurs 4:1
Un multiplexeur peut être utilisé pour réaliser une fonction logique décrite par sa table de vérité. Cette technique est très utilisé dans les circuits logiques programmables (PLD) sous le nom de LUT (Look Up Table)
Ce n'est pas la méthode la plus économique, mais c'est la plus simple et la plus systématique
Moyennant un petit développement supplémentaire, on peut réaliser la même fonction logique avec un multiplexeur plus petit que la méthode directe.
On désire réaliser un générateur de parité caractérisé par la fonction logique \(F=\overline{A\oplus B\oplus C}\)
On établit la table de vérité à partir de la fonction logique et on procède comme indiqué précédemment.
Il s'agit d'un multiplexeur plus élaboré qu'on appelle sélecteur de donné, (Data Selector ) qui permet de choisir un mot de n bits parmi N mots tous de la même taille. Là aussi on va utiliser des multiplexeurs classiques montés de façon adéquate. La figure ci-dessous montre un sélecteur qui permet de choisir un mot parmi 4 mots de 8 bits
La figure ci-dessous montre un sélecteur qui permet de choisir un mot parmi 8 mots de 4 bits
Cette architecture est assez lourde et ne sera utilisée que si on n'a pas les moyen d'utiliser un circuit PLD
On trouve dans le commerce beaucoup de multiplexeur différent. Nous en citeront deux à titre d'exemple
Le 74 LS 151 est un multiplexeur en technologie bipolaire. Il permet de choisir une entrés parmi 8. Il a deux sorties, une sortie normale plus une sortie inversée. Il dispose aussi d'une entrée de Validation E : E=0 → multiplexeur normal, E=1 → sortie = 0 ∀ l'état des entrées et des adresses
L'entrée de validation peut être utilisée pour former un multiplexeur 16:1 sans l'utilisation de la structure en pyramide classique en utilisant une simple porte NAND à la place d'un multiplexeur 1/2
Le 74LS153 contient deux multiplexeurs 4:1 dans un seul boîtier. Chacun a sa propre entrée de validation. Malheureusement, ils se partage les entrées de sélection, ils ne sont donc pas tout à fait indépendants.
Voilà comment on peut l'utiliser pour réaliser un multiplexeur 8:1
Dans la famille TTL, on peut citer :
74LS151 : Multiplexeur 8 vers 1 (avec entrée d'activation).
74LS153 : Double multiplexeur 4 vers 1 (deux MUX indépendants).
74LS157 : Multiplexeur quadruple 2 vers 1 (quatre MUX indépendants de 2:1).
74LS158 : Multiplexeur quadruple 2 vers 1 avec sorties actives bas.
74LS150 : Multiplexeur 16 vers 1 (moins courant, utilisé pour des systèmes complexes).
74LS148 : Priorité encodée pour applications avancées de multiplexage.
Dans la famille CMOS, on peut citer :
CD4051 : Multiplexeur analogique 8 vers 1 (également utilisé comme démultiplexeur).
CD4052 : Multiplexeur analogique double 4 vers 1 (ou démultiplexeur).
CD4053 : Multiplexeur analogique triple 2 vers 1.
74HC151 : Multiplexeur 8 vers 1, CMOS rapide, équivalent au 74LS151.
74HC153 : Double multiplexeur 4 vers 1, CMOS rapide, équivalent au 74LS153.
74HC157 : Multiplexeur quadruple 2 vers 1, CMOS rapide, équivalent au 74LS157.
74HC158 : Multiplexeur quadruple 2 vers 1 avec sorties actives bas.
74HC4051 : Multiplexeur 8 vers 1 (signaux analogiques ou numériques).
74HC4052 : Multiplexeur double 4 vers 1 (signaux analogiques ou numériques).
CD4016/CD4066 : Commutateurs analogiques pouvant être configurés pour du multiplexage.
Le démultiplexeur est le circuit complémentaire du multiplexeur. Il a une entrée et plusieurs sorties ainsi qu'un certain nombre d'entrées de sélection (d'adresse).
La sortie "pointée" par l'adresse est connectée à l'entrée. Les autres sorties peuvent être soit tous à l'état bas soit tous à l'état haut.
On se propose de réaliser un démultiplexeur à 4 sorties S3, S2, S1, S0 , une entre E et deux bits d'adresse A0, A1
On a quatre sorties, il faut l'expression logique de chaque sortie :
\(\rm{S_0=E \; \overline{A_1} \; \overline{A_0}} \)
\(\rm{S_1 = E \; \overline{A_1} \; A_0 } \)
\(\rm{S_2 = E \; A_1 \; \overline{A_0}} \)
\(\rm{S_3 = E \; A_1 \; A_0 } \)
Il suffit d'inverser toutes les sorties. La sortie sélectionnée sera aussi inversée se qui donnera \(\bar{E}\) au lieu de \(E\). On inverse aussi l'entrée et le tour est joué.
Le décodeur est un démultiplexeur particulier. Il n'a pas d'entrée, la sortie sélectionné aura le niveau logique inverse des autres sorties. Dès lors on peut distinguer deux types:
Type 1 :
Type 2 :
Vue leur très grande similarité, un démultiplexeur peut très bien être utilisé en décodeur
Contient deux décodeurs/démultiplexeurs 1:4 type 2
C'est un décodeurs/démultiplexeurs 1:16 type 2
Les modes de fonctionnement sont résumé dans le tableau ci-dessous
Dans la famille TTL, on peut citer :
74LS138 : Décodeur 3 vers 8 avec une entrée d'activation.
74LS139 : Double décodeur 2 vers 4 avec sorties actives bas.
74LS154 : Décodeur 4 vers 16, utilisé pour le décodage d'adresses.
74LS156 : Double décodeur 2 vers 4 avec sorties à collecteur ouvert.
74LS155 : Double décodeur/démultiplexeur 2 vers 4 avec sorties actives bas.
74LS151 : Démultiplexeur 1 vers 8 (multiplexeur 8 vers 1 en configuration inverse).
74LS137 : Décodeur/démultiplexeur 3 vers 8 avec latch intégré pour les entrées.
74LS145 : Décodeur BCD vers décimal, très utile pour les affichages numériques.
Dans la famille CMOS on peut citer :
CD4028 : Décodeur BCD vers décimal (4 vers 10).
CD4514 : Décodeur 4 vers 16 avec latch intégré.
CD4515 : Décodeur 4 vers 16 avec latch intégré et sorties actives bas.
74HC138 : Décodeur 3 vers 8, CMOS rapide, similaire au 74LS138.
74HC139 : Double décodeur 2 vers 4, CMOS rapide, similaire au 74LS139.
74HC154 : Décodeur 4 vers 16, CMOS rapide, similaire au 74LS154.
74HC145 : Décodeur BCD vers décimal avec sorties actives bas.
74HC4051 : Démultiplexeur 1 vers 8 (également utilisé comme multiplexeur).
CD4051 : Démultiplexeur/multiplexeur analogique 1 vers 8 (signal analogique ou numérique).
CD4052 : Démultiplexeur/multiplexeur 2 vers 4 (signal analogique ou numérique).
Un comparateur Logique dit aussi circuit d'identification permet de tester l'égalité de deux nombres.
Deux nombres \( A=a_n...a_1a_o \) et \( B=b_n...b_1b_o \) sont égaux si tous les bits du même poids sont égaux : \( a_o=b_o\; et \; a_1=b_1\; et \; a_2=b_2 \; ... \)
Étudions un circuit de comparaison entre deux bits :
\( S_i = \overline{a_i}~\overline{b_i}+a_i~b_i~=~\overline{a_i \oplus b_i} \)
On en déduit le schéma du comparateur de deux mots de n bits
Le plus populaire et le 74LS85
C'est un comparateur de deux mots de 4 bits
Les entrées de mise en cascade \(I_{sup}, I_{eq} ~ et ~ I_{inf} \) servent à chaîner plusieurs 74LS85 et comparer des nombres plus grands.
Voici l'essentiel du mode de fonctionnement. Voir la datasheet du circuit pour découvrir toutes ses possibilités
Utilisation d'un comparateur seul :
Utilisation de plusieurs comparateurs en cascade :
Les sortie \(O_{sup}, O_{eq} ~ et ~ O_{inf} \) du comparateur seul ou du dernier se positionnent comme suit :
Quand on additionne "manuellement" deux mots de \(n\) bits, on réalise \(n\) fois l'addition de trois bits. Chaque addition génère une somme et une retenue. Ainsi, la conception d'un additionneur pour deux mots de \(n\) bits revient à assembler en cascade \(n\) additionneurs élémentaires de trois bits.
Pour faire l'étude d'un additionneur élémentaire 3 bits, on peut procéder de deux façons :
On s'aperçoit qu'on obtient le même résultat que l'étude avec les Half-adders
Pour additionner deux nombres de \(n\) bits, On utilise \(n\) additionneurs Full-adder chaînés en cascade. On obtient ce qu'on appelle un Additionneur à propagation de la retenue
Ce genre d'additionneur a l'avantage d'être facile à réaliser mais il manque de rapidité de calcul. En effet :
La réalisation d'un additionneur ne pose pas de problème particulier. Par contre, son utilisation demande quelques précautions pour éviter une mauvaise interprétation des résultats. On peut distinguer plusieurs cas d'utilisations possibles. Dans ce tuto, nous allons considérer seulement le cas où les opérandes et le résultat ont le même nombre de bits. On va voir comment utiliser un additionneur 4 bits avec des nombres signés et des nombres non signés
Si on réalise l'additionneurs à partir de Full-adders élémentaires, C2 sera accessible et on peut utiliser le schéma suivant :
Si on réalise l'additionneurs à partir d'un circuit intégré (type 74LS283), C2 ne sera pas accessible, on peut utiliser le schéma suivant :
Si on utilise plusieurs additionneurs en cascade, l'Overflow est fabriqué au niveau du dernier étage.
Pour réaliser des soustraction, on peut faire l'étude d'un soustracteur exactement comme on l'a fait avec l'additionneur. On trouve d'ailleurs des structure assez similaire pour le Half-Substractor et le Full_Substractor
Au lieu de ça, on va exploiter une idée qui va nou permettre de nous permettre d'utiliser un additionneur comme soustracteur. En effet :
Le circuit précédent peut facilement être adapté pour fonctionner soit en additionneur soit en soustracteur. Il suffit remarquer que \( X \oplus 0 = X \)
Pour utiliser correctement ce circuit, il faut adapter la sortie \(C_{out}\) pour indiquer correctement les débordement en mode non signé et en mode signé
Sur 4 bits, on peut représenter les nombres allant de 0 à 15
La sortie \(CB\) indique si le résultat est correct ou non
Sur 4 bits, on peut représenter les nombres allant de -8 à +7
Un afficheur 7 segments est constitué de 7 segments lumineux disposés pour former un "8" lorsqu'ils sont tous activés. Le plus souvent, les segments sont réalisés par des LEDs. Chaque segment est identifié par une lettre (de a à g) et peut être allumé ou éteint individuellement pour créer différentes figures, principalement des chiffres. En plus des 7 segments, certains modèles incluent un point décimal pour afficher des valeurs non entières
Pour minimiser le nombre de broches, les sept segment sont organisés soit en Anode commune, soit en Cathode commune.
Les afficheurs 7 segments sont principalement utilisés pour afficher des nombres. Les chiffres de 0 à 9 sont généralement représentés en binaire sur 4 bits, ce qui correspond au code DCB (Décimal Codé en Binaire), plus couramment désigné sous le terme BCD (Binary Coded Decimal). Cependant, comme un afficheur 7 segments possède 7 broches pour contrôler les segments, un décodeur est nécessaire pour convertir l'information codée en BCD (4 bits) en signaux compatibles avec l'afficheur (7 bits), afin d'activer les segments appropriés.
L'utilisation d'un décodeur avec sorties Open Collector peut se faire comme le montre la figure ci-dessous. Je ne conseille pas cette structure car le montage consomme du courant que les LEDs soit allumées ou pas
Normalement, les données sons codées en binaire dans les systèmes numériques. Si on désire les afficher sur des afficheurs 7 segments, il faut les convertir en BCD comme cela est indiqué sur la figure ci dessous
La conversion binaire vers BCD est difficile à réaliser à l'aide de circuits MSI (TTL, CMOS…). Il ya le circuit 74185 mais il se limite au nombre binaires 6 bits (0 à 63). On peut en associer plusieurs pour traiter des nombres plus grand mais ça devient très vite très encombrant.
Le plus simple est de la programmer sur un microcontrôleur ou l'implanter sur un FPGA à l'aide de l'algorithme ci dessous :
Voici l'exemple de conversion du nombre 471 (9 bits : 9 itérations) :
Les décodeurs 7446, 7447, et 7448 sont des circuits intégrés de la famille TTL utilisés pour piloter des afficheurs à sept segments
Voici un exemple de branchement pour un afficheur à quatre digits :
C'est un décodeur BCD 7 segments de la famille CMOS
Les circuits séquentiels constituent une classe importante des systèmes numériques. Leurs sorties dépendent non seulement des entrées actuelles, mais aussi de l'état précédent du circuit. Cette dépendance aux états permet à ces circuits de mémoriser des informations, ce qui les distingue des circuits combinatoires.
Dans cette section, je vais introduire l'élément essentiel des circuit séquentiels, à savoir La bascule. Ensuite je parlerai des registres, des registres à décalages et des compteurs
Le circuit de base des circuits séquentiels est constitué de deux portes NAND qui se mordent la queue
Bien que ce circuit soit communément appelé bascule RS, je préfère donner ce nom au circuit ci-dessous
La bascule RS (ou bascule SR, pour "Set-Reset") est une bascule bistable. Dès lors qu'elle est placée dans un état, elle va le maintenir grace à ces contre réactions.
l'ajout de l'entrée H transforme la bascule RS en une bascule synchrone. Les entrées ne sont prises en compte que lors de l'activation de l'horloge.
L'entré H (Horloge) fonctionne comme une entrée de validation :
La bascule JK lève l'indétermination du cas : entrées = 11. Chaque fois qu'on arrive dans cet état, la sortie de la bascule change de niveau.
l'ajout de l'entrée H transforme la bascule JK en une bascule synchrone. Les entrées ne sont prises en compte que lors de l'activation de l'horloge.
L'entré H (Horloge) fonctionne comme une entrée de validation :
Dans certaines situations, les changements multiples des entrées d'une bascule lorsque H = 1 (niveau actif) peuvent mener à des problèmes indésirables. On a alors conçu des bascules qui réagissent uniquement sur le front de l'horloge (front montant ou descendant).
Deux méthodes sont couramment utilisées pour réaliser ce type de bascules :
La bascule D (ou bascule "data") est une bascule disposant d'une seule entrée de données, notée D, et d'une sortie Q. Elle est conçue pour simplifier le stockage d'une valeur binaire. Elle peut être sensible au niveau de l'horloge (niveau haut ou bas) ou déclenchée par un front d'horloge (montant ou descendant). Lorsqu'elle est activée par l'horloge (au niveau ou au front), l'état présent sur l'entrée D est directement transféré à la sortie Q, où il est conservé jusqu'à la prochaine activation
On peut constater sur les table de vérité que si J ≠ K alors la sortie suit J. De même si R ≠ S alors la sortie suit S. Il suffit donc d'ajouter un inverseur pour obtenir une bascule D
Les entrées de forçage sont prioritaires sur les autres entrées. Pae exemple, pour une bascule JK :
Pour que le chargement soit synchronisé sur le front d'horloge, il faut que les données entrent dans les bascule par l'entré D. Pour ce faire, on place un petit multiplexeur 2:1 devant chaque bascule pour connecter l'entrée D soit vers la donnée à charger soit vers la sortie de la bascule précédente. Tous les multiplexeurs sont contrôlées par l'entrée PL
Pour que le chargement soit indépendant de l'horloge, on va passer par les entrées Clear et Preset
Les bascules utilisées on un Clear et Preset actif au niveau bas,
On remarque que l'entrée \(PL\) est active au niveau bas. il aurait été plus juste de l'appeler \(\overline{PL}\)
On a rajouté un petit multiplexeur 2:1 devant chaque entrée D pour connecter soit la bascule de gauche soit la bascule de droite
On obtient un compteur Asynchrone en connectant en cascade des bascules JK de la façon suivante :
Les compteur asynchrones ont l'avantage de la simplicité mais l'inconvénient de la propagation. En effet, chaque bascule change un temps de propagation après la bascule précédente ce qui engendre un lenteur de fonctionnement et la génération d'états transitoires indésirables
Chaque état transitoire dure le temps de propagation de technologie utilisée. Par exemple, pour la famille TTL, le temps de propagation est de 10 ns
Pour obtenir un décompteur asynchrone, on peut procéder de deux façons :
un compteur \(n\) bits est un compteur modulo \(2^n\). Par exemple un compteur 4 bits est un compteur modulo 16, il compte de 0 à 15 et revient à 0
Avec un compteur asynchrone, la façon la plus simple de réaliser un compteur modulo \(N\) où \(N \lt 2^n\) consiste à détecter la valeur \(N\) sur les sorties et de déclencher un signal de "remise à zéro" pour réinitialiser les sorties à 0. Cette méthode n'est pas parfaite à cause de la latence due au temps de propagation des portes logiques utilisées pour détecter la valeur \(N\). Pendant ce temp de latence, la valeur \(N\) qui ne doit pas faire partie du cycle comptage va exister pendant une durée serte très courte mais qui n'est pas nulle.
Une seule bascule peut être utilisée pour diviser la fréquence par 2
Un compteur modulo N peut être utilisé pour diviser la fréquence par N. Le signal de sortie doit être pris sur le MSB du compteur
Pour le diviseur par 5, j'ai fait exprès d'utiliser un compteur 4 bits. Normalement 3 bits auraient suffit. Mais c'est dans le cas où on utilise un compteur intégré. Avec cette situation, il faut faire attention, le MSB c'est C et non D
La mise en cascade de compteurs asynchrones permet d'augmenter le nombre de bits du comptage en connectant plusieurs compteurs en série
On obtient un compteur BCD en cascadant des compteurs modulo 10
Le 74LS93 est un compteur asynchrone populaire de la famille TTL. Il a une conception intelligente :
Le 74LS90 est une décade asynchrone populaire de la famille TTL. Il a une architecture similaire au 93 avec des entrées de remise à 9 en plus
Voici l'exemple d'un compteur BCD modulo 60 avec affichage. Convient pour compter les secondes ou les minutes.
Voici l'exemple d'un compteur BCD modulo 24 avec affichage. Convient pour compter les heures.
Les compteurs synchrones peuvent aussi être réalisés à l'aide de bascule JK. A la différence des compteurs asynchrones, toutes les bascules reçoivent la même horloge. Dès lors, à chaque coup d'horloge toutes les sorties changent en même temps, il n'y aura pas de latence ni états transitoires.
Que doit on mettre sur les J et les K pour que ça compte ?
On connaît la séquence de comptage. Au coup d'horloge, on sait pour chaque bascule si elle doit changer d'état ou non, On en déduit le J et le K qu'il faut lui appliquer. Pour nous faciliter le travail, on va établir la table de transition de la bascule JK
On commence par dresser une Table avec la séquences de comptage des sorties A, B, C et D et les valeurs adéquates des entrées J et K
Au départ on est dans l'état DCBA = 0000. Au prochain coup d'horloge on doit aller à l'état DCBA = 0001.
Pour la bascule A, on a une transition 0→1, on consulte la table de transition, on trouve JK=1x
Pour les autres bascules, il faut rester à 0, la table de transition donne JK=0x
On continue comme ça pour compléter la table.
Maintenant, il faut trouver les expression des J et K en fonction de A, B, C et D. il y a du boulot 😊
Pour la bascule A, c'est vite fait, on constate qu'elle change à chaque coup d'horloge ⇒ J=1, K= 1
Voici les tables de Karnaugh pour tous les J et les K
On remarque qu'on a une relation de récurrence 1, A, AB, ABC, ABCD ... facile à généraliser pour construire des compteurs plus grands
Le comptage est synchrone, le chargement est Asynchrone
Avec une étude similaire, on obtient :
On va encore utiliser l'opérateur XOR (que j'adore😊) pour choisir entre \( A \) et \(\bar{A}\) , \( B \) et \(\bar{B}\) ...
$$ 0 \oplus X = X \quad,\quad 1 \oplus X = \bar{X}$$Voici une version avec chargement parallèle
La technique qui consiste à detecter le 10 et le replacer par 0 est une technique Asynchrone donc inadéquate pour réaliser une décade synchrone. On va donc refaire l'étude de A à Z
La mise en cascade doit être synchrone. Tous les compteurs doivent recevoir la même Horloge
Dans ces conditions, tous les compteurs fonctionneront simultanément et on n'aura pas le comptage désiré. La règle de comptage doit être la suivante :
Prenons le cas d'un comptage BCD (tous les compteur sont des décades, la valeur max de chaque compteur est 9) :
Pour réaliser cet objectif, on va rajouter à chaque compteur une entrée de validation V et une sortie de retenue R, et on va les connecter en cascade comme suit :
On procède de la même façon qu'avec les bascules JK
l'étude de Karnaugh permet d'obtenir les résultats :
On peut combiner les deux pour réaliser un compteur/décompteur :
Nous vivons dans un monde analogique, et non numérique, où les tensions, les courants et autres
grandeurs physiques varient de manière continue dans les circuits réels.
La logique numérique simplifie ces complexités en réduisant l'infinité des valeurs réelles d'une
grandeur physique à deux états logiques : 0 et 1. Cette simplification permet d'analyser et de
concevoir des circuits numériques de manière fonctionnelle, en s'appuyant à la fois sur des outils
mathématiques, comme l'algèbre de Boole adaptée à l'ensemble {0, 1}, et sur l'utilisation de
composants électroniques en commutation capables de représenter physiquement ces deux états.
L'élément essentiel de l'électronique digitale est le commutateur. C'est un dispositif qui permet d'établir ou d'interrompre une connexion électrique entre deux points d'un circuit.
L'information présence ou absence de courant peut être transformé en une information tension faible ou tension forte à l'aide du circuit suivant :
Dans les circuits numériques, on utilise essentiellement des diodes, des transistors bipolaire et des transistors MOS comme commutateurs. Ces derniers n'ont ni une résistance infinie à l'état ouvert, ni une résistance nulle à l'état fermé
Les caractéristiques dynamiques d'un commutateur Traduisent le comportement transitoire lors du passage d'un état à un autre.
Ces paramètres indiquent la rapidité avec laquelle le commutateur change d'état. Ils jouent un rôle essentiel dans les applications à haute fréquence nécessitant des transitions rapides. Ils dépendent principalement de la capacité structurelle du commutateur, de ses résistances internes, ainsi que des résistances du circuit de commande. L'un des principaux enjeux de l'industrie électronique actuelle est de concevoir des composants ayant les temps de commutation les plus réduits possibles
Pour réduire les capacités structurelles des commutateurs, les composants électroniques sont conçus
avec des dimensions de plus en plus petites. Cette miniaturisation permet de diminuer la quantité de
charge stockée, améliorant ainsi les performances dynamiques. Cependant, elle atteint ses limites en
raison de phénomènes physiques tels que l'effet tunnel quantique, la fiabilité des matériaux à
l'échelle nanométrique, et les difficultés de fabrication.
En parallèle, pour réduire les temps de charge et de décharge des capacités structurelles, on
cherche à diminuer les résistances internes et celles des circuits de commande. Bien que cela
améliore les vitesses de commutation, cela entraîne une augmentation des courants ce qui provoque
des problèmes de surchauffe à cause de la dissipation thermique, nécessitant des systèmes de
refroidissement de plus en plus volumineux.
Ainsi, l'optimisation des temps de commutation est un équilibre délicat entre performance, fiabilité
et gestion thermique
La diode est un composant qui n'a que deux bornes. Elle n'a pas une entrée qui peut servir de
contrôle. De ce fait, elle sera commandée par le sens de la tension qui lui est appliquée. Il n'y a
pas de séparation entre le circuit de commande est le circuit commandé. Nous en avons parlé dans la
section Electronique de base
Lors du passage de l'état ON à l'état OFF, la diode présente un comportement dynamique particulier : elle conduit dans le sens inverse pendant un très court instant. Un courant inverse, de même intensité que le courant direct, circule temporairement. Ce courant est dû aux porteurs de charge non recombinés, rappelés par la tension inverse. La durée de ce phénomène est appelée temps de recouvrement inverse (\(t_{rr}\) , reverse recovery time)
Voici quelques caractéristiques de la diode 1N4148 :
On remarque que Le courant inverse d'une diode dépend fortement de la température, car l'élévation de
température accroît la génération de porteurs de charge (paire électron trou) dans la jonction en
cassant des liaisons de valence.
Il est donc important de prendre en compte ce phénomène dans les circuits : à très haute
température, le courant de fuite inverse peut devenir significatif, et la diode ne peut plus être
considérée comme complètement bloquée.
Toutefois, il arrive que cette propriété soit mise à profit en utilisant la diode polarisée en
inverse comme capteur de
température dans certaines applications.
n'hésitez pas consulter les exemples dans la section 'Electronique de Base'
Le collecteur et l'émetteur constituent les extrémités du commutateur. La base constitue la borne de commande
Nous allons nous baser sur le circuit ci-dessous pour voir ce qui se passe :
Pour saturer un transistor, il faut lui appliquer un courant \(I_B\) qui vérifie : $$ I_B \gt I_{Bsat} $$ avec : $$ I_{Bsat}=\frac{I_{Cmax}}{\beta} \quad,\quad I_{Cmax}=\frac{V_{cc}-0.2}{R_c} $$
Calculer Rb pour que le transistor soit saturé avec un facteur de saturation Fs = Ib / Ibsat = 2
Ibsat = Icmax / 130 = 0.037 mA ⇒ Ib = 2 × Ibsat = 0.074mA
Rb = (5 - 0.7) / 0.074 kΩ = 58 kΩ
Analyser le montage et donner la valeur de Vs dans les cas suivants :
On commence par remplacer R1 et R2 par leur équivalent Thévenin pour obtenir un montage plus familier :
Req = R1 // R2 = 1.43 kΩ , Veq = ( R2 / (R1 + R2) ) Ve
Analyser le montage, Compléter le tableau, Donner la fonction logique du montage
Pour établir une table logique à partir de cette table électrique, on va adopter le barème suivants :
on obtient la table ci-dessous qui correspond à une porte NAND :
Analyser le montage, Compléter le tableau, Donner la fonction logique du montage
En utilisant les mêmes niveaux logiques que l'exemple précédent, on obtient la table ci-dessous qui correspond à une porte NOR :
Un transistor MOS ou MOSFET est un type de transistor à effet de champ (MOSFET - Metal-Oxide-Semiconductor Field-Effect Transistor) qui utilise un champ électrique pour contrôler la conductance entre deux de ses terminaux. Il comporte trois principales électrodes :
Il est constitué de :
Les MOSFETs se classent en deux Catégories :
Si on applique une tension Vdd entre le drain est la source, il ne se passe rien, car il n'y a pas de canal de conduction être les deux. Les frontières entre les zones N et le substrat P constituent des jonction PN, quelque soit le sens de la tension Vdd, une des deux jonctions sera polarisée en inverse
Si on en plus, on applique une tension Vgb entre la grille et le substrat, el va générer un champ dans le substrat qui attire les électrons minoritaires et les accumule contre l'oxyde de silicium. cette accumulation d'électrons crée un canal de conduction entre le drain et la source. La largeur du canal (donc sa résistance) dépend de la valeur de Vgb. Dès lors, le courant Id qui va circuler entre le drain et la source dépend des deux tensions Vds et Vgb
J'ai essayé de résumer cela sur l'animation ci dessous, ça vaut ce que ça vaut😊
Les caractéristiques ci-dessous montrent la variation du courant Id en fonction de Vgb pour une Tension Vdd constante
Commençons par rappeler les condition de conduction :
a) Ve = 0V :
b) Ve = 5V :
Fonction logique :
C'est une porte NAND :
C'est une porte NOR :
Une famille logique regroupe des circuits intégrés aux caractéristiques similaires (entrées, sorties, circuits internes), mais réalisant des fonctions logiques variées. Ces circuits peuvent être interconnectés entre eux, mais leur compatibilité avec d'autres familles peut être impossible ou limitée en raison de différences de tensions d'alimentation ou de conditions d'entrée/sortie.
La logique bipolaire la plus réussie est le TTL (Transistor-Transistor Logic), introduite dans les années 1960. Cette famille regroupe plusieurs sous-familles compatibles entre elles, mais différant en vitesse, consommation d'énergie et coût.
Le transistor MOS (MOSFET), inventé avant le transistor bipolaire, n'a été utilisable dans des circuits logiques qu'à partir des années 1960. Malgré une vitesse inférieure, il était prisé pour sa faible consommation d'énergie et son haut niveau d'intégration.
Dès les années 1980, les circuits CMOS (Complementary MOS) ont surpassé les performances des circuits bipolaires, devenant majoritaires pour les circuits intégrés, notamment les microprocesseurs et mémoires. Aujourd'hui, le CMOS domine le marché grâce à sa rapidité, sa faible consommation et son adaptabilité. Malgré cette avance, le TTL reste courant dans les laboratoires académiques.
La nomenclature commerciale doit permettre (facilement) d'identifier le circuit ainsi que sa famille et sous famille. Les constructeurs de circuit logiques ont finalement adopté une nomenclature standard unifiée.
Le standard spécifie plusieurs champs constituant la reference d'un circuit intégré. Toutefois, les constructeurs ne gravent sur le circuit que les champs les plus importants. Par exemple les champs 1, 2, 3, 7 et 8
La famille TTL (Transistor-Transistor Logic) est une technologie de circuits numériques basée sur des transistors bipolaires. Elle a été introduite dans les années 1960 et a rapidement dominé le marché des circuits numériques grâce à sa fiabilité, sa vitesse et sa facilité d'utilisation. Cependant, à partir des années 1980, elle a commencé à décliner face à la famille CMOS, qui offre des performances supérieures, une consommation énergétique réduite et une meilleure intégration.
Le 7400 est l'un des circuits intégrés les plus célèbres et emblématiques de la famille TTL. Il est souvent considéré comme le point de départ pour l'apprentissage des circuits logiques en raison de sa simplicité et de son importance historique. Il contient quatre portes logiques NAND à deux entrées dans un boîtier standard DIP (Dual Inline Package).
le schéma interne des portes NAND est le suivant :
Pour tracer la caractéristique de transfert on fait varier les deux entrées (reliées) entre 0V et 5V et on relève les valeurs de la tension de sortie. On peut aussi connecter une des entrée au niveau haut et faire varier l'autre entrée. Dans les deux cas, ça revient à tracer la caractéristique d'un inverseur. On obtient une caractéristique similaire à :
Si l'on trace la caractéristique de transfert de différentes portes NAND 7400 provenant de constructeurs différents, fonctionnant à des températures variées ou avec des charges TTL différentes, on n'obtient pas exactement la même courbe. On observe une dispersion dans les valeurs des niveaux logiques haut et bas, ainsi que dans la tension de transition. Cette dispersion est due aux variations inhérentes aux procédés de fabrication, aux tolérances des composants internes, et aux conditions de fonctionnement, telles que la température ou la charge connectée à la sortie. Malgré ces variations, les circuits TTL sont conçus pour garantir une compatibilité entre les composants en définissant des plages de tensions qui font que les niveaux logique en sortie soient compatibles avec les niveaux logiques en entrée
Si on considère la figure ci-dessous qui montre une dispersion (un peu exagérée) de la caractéristique de transfert
Si on considère la figure ci-dessous qui montre une dispersion (un peu exagérée) de la caractéristique de transfert
Les niveaux logiques à la sortie sont définis de manière à garantir la compatibilité avec les niveaux d'entrée tout en maintenant une marge de sécurité suffisante pour éviter les erreurs de fonctionnement :
L'immunité au bruit, également appelée marge de bruit (noise margin), est une caractéristique importante de la famille TTL (Transistor-Transistor Logic) et des circuits numériques en général. Elle représente la capacité d'un circuit logique à tolérer des perturbations (bruit électrique) sans altérer les niveaux logiques corrects. Voici une explication détaillée :
La marge de bruit est définie comme la différence entre Les niveaux garantis à la sortie Les niveaux requis à l'entrée.
En conclusion, la marge de bruit de la famille TTL standard est typiquement 0.4V pour les deux niveaux logiques (haut et bas). Cela signifie que si une perturbation ou un bruit électronique introduit une variation de tension de ±0.4V autour des niveaux de sortie garantis, le circuit continuera à fonctionner correctement.
Quand on applique une tension basse ou une tension haute à l'entrée d'une porte, La datasheet précise les valeur max des courants qui vont circuler dans l'entrée
Le courant de sortie d'une porte dépend de la charge connectée. Or, Le niveaux de la tension de sortie dépend de la valeur du courant de sortie. Lorsque le courant de sortie augmente, le niveaux de la tension de sortie se dégrade et peut sortir des intervalles normalisés. Il est donc recommandé de ne pas connecter des charges nécessitant un courant trop élevé afin de préserver la stabilité des niveaux logiques.
Les courbes ci-dessous illustrent la variation de la tension de sortie en fonction du courant de sortie,
La Sortance (fan-out en anglais) représente le nombre maximum de portes logiques que l'on peut connecter à la sortie d'une porte logique sans altérer significativement les niveaux logiques standardisés. Elle dépend directement des caractéristiques électriques des circuits, en particulier, les courants Iilmax, IiHmax, Iolmax, Iohmax.
Lorsque la sortance est dépassée, cela peut entraîner une dégradation des niveaux logiques, une diminution de la marge de bruit, et un fonctionnement erratique du circuit.
Donc pour la famille TTL standard, la sortance est la même pour ls niveaux haut et bas :
$$ Sortance = 10 $$
Une porte logique ne consomme pas le même courant quand sa sortie est au niveau haut et au niveau bas. Pour donner une valeur typique de la consommation, on prend la moyenne
\( I_{CCHtyp}=1mA \) , \( I_{CCLtyp}=3mA \) ⇒ \( I_{CCtyp}=\frac{1mA+3mA}{2}=2mA \)
La puissance typique consommée est :
$$ P_{typ} = V_{cc} \times I_{cctyp} = 5V \times 2mA = 10 mW $$
La consommation augmente légèrement avec la fréquence. On peut considérer la valeur de 10 mW valable jusqu'à une fréquence de 1 MHz
Le temps de propagation correspond au délai entre l'application dun changement d'état sur l'entrée d'une porte logique et l'apparition de la réponse correspondante sur sa sortie.
Pour la famille TTL standard :
\( T_{PHLtyp}= 8ns ~~~\) , \( T_{PLHtyp}= 12ns \)
$$ T_{Ptyp}= 10ns $$
Pour garantir un bon fonction d'un système basé sur des circuits TTL standard, il est conseillé de se limiter à :
$$ f_{max}= 40 Mhz $$
Dans une porte avec sortie collecteur ouvert (Open Collector), le commutateur qui permet de placer la sortie au niveau haut a été supprimé. La sortie est connecté au collecteur du transistor restant (Q4 dans notre exemple) d'où le nom de collecteur ouvert
La méthode la plus courante pour fixer le niveau haut de la sortie est d'utiliser une résistance de pull_up externe. Cette résistance peut être reliée à une tension différente de Vcc ce qui va permettre une grande souplesse d'utilisation
Les portes collecteur Ouvert ont différentes applications utiles comme :
Les sorties trois états, également appelées sorties "Tri-State" ou sorties à haute impédance, sont des sorties numériques capables de se trouver dans l'un des trois états suivants :
Cette fonctionnalité est particulièrement utile dans les systèmes où plusieurs dispositifs partagent une même ligne de communication, comme un bus de données. Les sorties trois états permettent à plusieurs circuits de se connecter à une même ligne sans interférer les uns avec les autres, à condition qu'une seule sortie soit active (en état haut ou bas) à la fois, tandis que les autres sont en état haute impédance. Cela évite les conflits de bus et permet une communication bidirectionnelle
Par exemple, dans un système informatique, les mémoires et les périphériques peuvent partager le même bus de données. Grâce aux sorties trois états, chaque dispositif peut prendre le contrôle du bus lorsqu'il est sélectionné, tandis que les autres se mettent en état haute impédance, évitant ainsi les courts-circuits et les interférences.
En général,les circuit tristate on une entrée de contrôle qui permet de place la sortie en mode haute impédance :
La figures ci dessous montre plusieurs circuit connectés à un bus. Seul le circuit qui est sélectionné pour écrire dans le bus doit être en basse impédance, tous les autres doivent être en haute impédance
Les circuit tri-state sont aussi très utiles pour réaliser des buffer bidirectionnel qui permettent d'utiliser une ligne dans un sens ou dans l'autre. Par exemple dans une mémoire, on utilise le même bus pour lire et pour écrire,
Certains circuit logiques sont conçus avec un circuit d'entrée particulier qui fait que la caractéristique de transfert comporte un hystérésis qui définit deux seuils de tension distincts pour les transitions montantes et descendantes
Voici la caractéristique de transfert d'un inverseur avec entré trigger de Schmitt
Cette famille tient son nom (Complementary) du fait que chaque étage d'un circuit numérique est constitué de deux transistors MOS complémentaires : un canal N et un canal P
Les caractéristiques principales de cette famille sont :
La famille CMOS est constituée de plusieurs sous-familles :
La série 4000 est la première famille CMOS. Elle a été introduite dans les années 1970 pour fournir des alternatives plus flexibles et économes en énergie par rapport à la famille TTL. Bien que largement dépassée par les circuits modernes, la série 4000 est encore utilisée dans des applications basse fréquence (< 1MHz) nécessitant une faible consommation d'énergie et une compatibilité avec différentes plages de tensions
Les circuits de la famille 4000 ne sont pas obligatoirement alimentés entre une tension positive fixe
et la masse comme c'est le cas de la famille TTL. Ils peuvent être alimentés entre une tension Vdd
et une tension Vss quelconques en respectant les limites \( 3V \lt (V_{DD}-V_{SS}) \lt 18V \). Les
niveaux logiques haut et bas seront définis ultérieurement avec plus de précision mais on peut déjà
dire que \( V_{OH} \approx V_{DD} \) , \( V_{OL} \approx V_{SS} \).
Le plus souvent, les circuits sont alimentés par rapport à la masse (Vss=0), ave Vdd = 5V, 10V ou
15V
Si on fait varier Vi entre 0 et Vdd, on obtient la caractéristique de transfert ci-dessous. Comme le circuit est symétrique, on constate que la tension de transition est égale à Vdd/2
Les niveaux logiques en entrées dépendent de la tension d'alimentation. Les intervalles correspondant au niveau logiques bas et haut sont symétriques et ont la même largeur. L'approximation \( \Delta V_i \approx 30 \% V_{dd} \) colle assez bien aux spécifications des datasheets.
Le niveau de la tension de sortie dépend très fortement du courant de sortie. Cette variation est due à la chute de tension dans la résistance \(R_{DSon}\) du transistor passant.
Dans des conditions idéales, une porte CMOS devrait être connectée à l'entrée d'une autre porte CMOS. À cause de l'impédance d'entrée très élevée des circuits CMOS, le courant de sortie de la première porte sera pratiquement nul. Cela permet d'obtenir des niveaux logiques de sortie parfaits :
La marge de bruit est de l'ordre de \( \Delta V_i \approx 30 \% V_{dd} \), ce qui offre des tolérances très importantes pour les tensions d'alimentation élevées. Cela constitue un des avantages majeurs de cette famille, la rendant quasi incontournable pour des applications dans des environnements fortement parasités, comme au sein d'unités industrielles.
Cela signifie qu'avec Vdd=15V, on peut avoir des parasites de plus de 4Volts qui se superposent au signaux sans altérer le fonctionnement normal
La Sortance (fan-out en anglais) représente le nombre maximum de portes logiques que l'on peut connecter à la sortie d'une porte logique sans altérer significativement les niveaux logiques standardisés.
Le temps de propagation dépend fortement du circuit RC constitué de la résistance \(R_{DS}\) et de la capacité de charge \(C_L\). A chaque basculement, il faut charger ou décharger \(C_L\) à travers la résistance \(R_{DS}\), Le retard est voisin de la constante de temps \(\tau = R_{DS} C_L\).
La valeur de \(R_{DS}\) dépend de la tension Vgs (donc de Vdd) d'où l'influence de cette dernière sur le temp de propagation
On constate que le temps de propagation est bien meilleur avec Vdd=15V. C'était aussi le cas avec la marge de bruit, il semble donc qu'on a toujours intérêt à suralimenter les circuits CMOS
Les circuits de la famille 74C sont les même que les circuits de la série 4000 avec la nomenclature normalisée. Ils ont le même brochage que la famille TTL.
Par exemple, le circuit 74C00 contient quatre portes NAND similaires à ceux du 4011, mais il n'ont pas le même brochage.
Nous en avons déjà parlé dans la section Transistor MOS en commutation
Nous en avons déjà parlé dans la section Transistor MOS en commutation
Les circuits logiques programmables (PLD: Programmable Logic Devices) sont des composants électroniques permettant de créer des circuits logiques personnalisés. Contrairement aux circuits logiques fixes (comme les circuits intégrés TTL ou CMOS), les PLD peuvent être programmés pour répondre à des besoins spécifiques.
Le terme programmable peut prêter à confusion. Les PLD ne sont pas programmés au sens informatique qui consiste à implanter le code d'une application dans un microcontrôleur ou un microprocesseur. Le terme reconfigurable est plus adapté. En effet, un PLD est un circuit intégré qui contient un réseau d'opérateurs logiques de base qui ne sont pas interconnectés lors de la fabrication. L'utilisateur reconfigure le circuit en définissant les connexions entre les les éléments logiques nécessaires pour réaliser une fonction particulière.
Beaucoup d'acronymes sont utilisés dans le domaine des PLD. Certains désignent des technologies, d'autre des génération de technologies, etc...
Un système combinatoire est le plus souvent représenté par des fonctions sous la forme canonique somme. C'est une somme (OR) de produits (AND) des entrées et leurs compléments (NOT)
On constate que nous avons besoins d'inverseurs, de portes ET, de porte OU et d'un ensemble d'interconnexions
Le circuit PLD sera donc constitué de :
Les deux matrices (ET et OU) sont programmables :
Pour alléger le dessin, on a adopté la convention ci-dessous :
Voici la représentation d'un PLA 4 entrées et 3 sortie
Un PAL (Programmable Array Logic) est un PLA dont seule la matrice ET est programmables. La matrice OU est fixe.
Les PAL sont plus économiques mais moins souples. Par exemple, avec le circuit de la figure ci dessous, on ne peut pas synthétiser une fonction constitué de la somme de plus de 4 monômes
Contrairement à un fusible, un anti-fusible est initialement isolant. Lors de la programmation, l'application d'une tension ou d'un courant élevé provoque un court-circuit permanent. Cela établit une connexion électrique là où il n'y en avait pas initialement.
La figure ci-dessous illustre une des technologies utilisées. Deux conducteurs sont séparés par une couche très mince de matériau isolant (par exemple, du silicium amorphe). Lors de la programmation, l'application d'une tension élevée (environ 20 volts) transforme d'une manière permanente le matériau isolant en conducteur, établissant ainsi une liaison entre les deux conducteurs.
La grille de contrôle intervient à la fois pendant la phase d'utilisation, la phase de programmation, et la phase d'effacement du circuit.
Pendant la phase d'utilisation du circuit, les grilles de contrôles de tous les transistors sont portées à 5 Volts. L'état de chaque transistor dépend de l'état de sa grille flottante :
Une tension élevée (≈ 20 V) est appliquée sur la grille de contrôle du transistor à programmer. Ce fort champ électrique provoque un effet tunnel ou injection par effet Fowler-Nordheim, qui transfère des électrons vers la grille flottante. Les électrons restent piégés sur la grille flottante après la suppression de la tension de contrôle, modifiant définitivement l'état du transistor.
Pendant cette phase, le circuit est placé sous une lampe à UV pendant une vingtaine de minutes. Les rayons ultraviolets fournissent l'énergie nécessaire pour libérer les charges et rétablir l'état initial du transistor. Pendant cette phase, le fait de porter la grille de contrôle à un potentiel inférieur à celui du substrat peut faciliter le retour des charges piégées à leur état initial. Une fois les charges éliminées, les transistors retrouvent leur état initial et peuvent être reprogrammés.
Un point de connexion EEPLD utilise un transistor à grille isolée qui a bénéficié d'un certain nombre d'améliorations technologiques afin qu'il puisse être reprogrammé électriquement sans nécessité d'un effacement par ultra-violets.
Les principales améliorations pour rendre les transistors à grille isolée effaçables électriquement incluent :
Lors de la phase d'utilisation, le point de connexion EEPLD s'utilise comme le point de connexion EPLD. les grilles de contrôles de tous les transistors sont portées à 5 Volts. L'état de chaque transistor dépend de l'état de sa grille flottante :
Les blocs d'entrée/sortie (E/S) des circuits PLD sont des interfaces configurables qui permettent de connecter le circuit à des périphériques externes. Ils peuvent inclure des fonctionnalités telles que des tampons tri-état, des registres de capture, ou des options de polarité, offrant ainsi une grande flexibilité pour s'adapter aux exigences spécifiques des systèmes numériques.
Les sorties sont souvent de type 3 états, ce qui permet de les déconnecter au besoin
Une entrée-sortie est une broche qui peut être utilisée soit comme entrée soit comme sortie. Elle sert aussi à réinjecter la sortie avec les entrées ce qui permet l'étude des systèmes séquentiels
Un sortie combinatoire peut être active au niveau haut, au niveau bas ou au choix :
E/S très souple qui peut être configurée dans différents modes en programmant les fusibles S0 et S1
C'est un circuit à sorties combinatoires (active Low). La référence est un peu trompeuse car elle précise 16 entrées et 8 sorties. En réalité, les sorties sont des E/S et sont comptées avec les entrée. Pour être précis, le circuit dispose de 10 entrées pures, 2 sorties pures et 6 Entrée-sorties.
Le circuit GAL22V10 était populaire à son époque. Il est reprogrammable grace à ses point de connexion de type EEPLD. Il dispose de 12 Entrée et de 10 E/S Versatiles
Les CPLD (circuits logiques programmables complexes ) constituent une évolution des circuits logiques programmables simples (comme les PAL et GAL) en offrant une capacité de logique plus importante et une flexibilité accrue. Voici quelques propriétés :
Un CPLD est constitué de trois ensembles principaux :
Chaque LAB est constitué de plusieurs macrocellules de type SPLD (16 en général).
Les macrocellules constituants les LAB CPLD sont plus élaborées que celles des SPLD.
Dans un PAL classique, chaque somme (OU) est connectée à un à un nombre fixe de produits (ET). Cependant, toutes ces produits ne sont pas toujours nécessaires pour synthétiser une fonction logique. Si tous les produits ne sont pas utilisés, ces ressources restent gaspillées.
Dans les macrocellules d'un LAB CPLD, on a ajouté une matrice de sélection de Produits (PTC - Product-Term Select Matrix), qui permet de rediriger les produits (ET) non utilisés vers d'autres macrocellules, ou si nécessaire, d'injecter des produits venant d'autre macrocellules. Ceci permet d' obtenir un meilleur taux d'utilisations des ressources.
La technologie FPGA : Field-Programmable Gate Array est la catégorie de PLD la plus développée et la plus utilisée de nos jours. Sa capacité et ses performances sont bien supérieures à celles de la technologie CPLD. Les circuit FPGA sont plus flexibles et peuvent être configurés plusieurs fois, même après leur mise en service. Ils sont largement utilisés pour des applications complexes telles que le traitement du signal, les systèmes embarqués, en phase de prototypage et en produit final.
Parmi les caractéristiques principales des circuits FPGA on peut citer :
La cellule SRAM est réalisé à l'aide de transistors MOS. Elle est constituée de deux inverseurs monté tête-bêche
Dans un FPGA, le bloc combinatoire n'est pas réalisé par une matrice de portes ET et OU, comme c'est
le cas des PLD classiques. Au lieu de cela, on utilise un LUT (Look-Up Table) pour accomplir cette
tâche.
Un LUT est un multiplexeur conçu pour implémenter une fonction logique. Les entrées du multiplexeur
sont connectées à une mémoire SRAM préprogrammée avec la table de vérité de la fonction logique à
réaliser. Les variables de la fonction servent à commander les lignes de sélection du multiplexeur,
permettant ainsi de produire la sortie logique correspondante.
La réalisation des multiplexeurs se fait entièrement à l'aide de transistor MOS. On commence par réaliser un multiplexeur 2:1 à l'aide de quatre transistor MOS (inverseur = deux transistors)
L'association en pyramide des multiplexeurs 2:1 permet d'obtenir des multiplexeurs plus grads
C'est exemple montre un LE du constructeur Altera. Il est conçu pour offrir une grande souplesse d'utilisation