Aller au contenu principal

Fondamentaux de l'électronique · L1 · Section 6/7

Annales corrigées

Progression

Points d’expérience : XPSérie de jours consécutifs : · —Progression du module : — / —compris

#Annales corrigées

Les exercices qui suivent sont tirés des documents réellement distribués dans l'UE SPUE100 « Électronique numérique : bases », première année de Licence à l'Université Côte d'Azur, campus Valrose. Trois sources :

  • les feuilles de travaux dirigés du semestre 1, numérotées TD 1 à TD 12 ;
  • la fiche de révisions de l'UE, qui rassemble des exercices d'annales de 2002 à 2023 ;
  • le sujet d'examen de la session 1 de 2024-2025.

Les énoncés sont reproduits fidèlement, y compris leurs notations. Chaque correction est détaillée : méthode, calcul intermédiaire, vérification. Les tables de vérité et les expressions booléennes sont écrites en notation mathématique ; le TD utilise la notation ET, OU, NON et le point pour le produit.

#Exercice 1 — Codage des entiers : conversions, DCBN et binaire signé

TD 1, exercices 1 à 4.

  1. Convertissez en binaire naturel les entiers 26510265_{10} et 16410164_{10}.
  2. Convertissez en décimal codé binaire naturel (DCBN) 56210562_{10} et 94710947_{10}.
  3. Donnez, quand cela est possible, la représentation en binaire signé sur huit bits de : +12+12, 12-12, 67-67, +164+164, +127+127, 128-128, 1-1.
  4. À l'inverse, donnez la valeur décimale des mots binaires signés 00000101 et 10000101.
  5. Convertissez en décimal : 1101110 en binaire naturel ; 1101110 en binaire signé sur 7 bits ; 01101110 en binaire signé sur 8 bits ; 01101110 et 01010011 en DCBN.
Correction détaillée

1. Binaire naturel. On soustrait récursivement la plus grande puissance de 2 possible (ou l'on divise par 2 en lisant les restes à l'envers) :

265=256+8+1=28+23+20    1 0000 1001265 = 256 + 8 + 1 = 2^8 + 2^3 + 2^0 \;\Rightarrow\; \texttt{1 0000 1001}

164=128+32+4=27+25+22    1010 0100164 = 128 + 32 + 4 = 2^7 + 2^5 + 2^2 \;\Rightarrow\; \texttt{1010 0100}

2. DCBN. Chaque chiffre décimal est codé séparément sur quatre bits :

  • 562562 \rightarrow 0101 0110 0010 (5, puis 6, puis 2) ;
  • 947947 \rightarrow 1001 0100 0111 (9, puis 4, puis 7).

3. Binaire signé sur 8 bits. Sur 8 bits, l'intervalle représentable en binaire signé va de 128-128 à +127+127 :

NombreReprésentationCommentaire
+12+120000 1100signe 0, magnitude 000 1100
12-121111 0100signe 1, magnitude 000 1100
67-671011 11016767 = 0100 0011, inversé 1011 1100, plus 1
+164+164impossible164>127164 > 127 : hors de l'intervalle du format
+127+1270111 1111valeur maximale positive
128-1281000 0000valeur minimale, sans équivalent positif
1-11111 1111tous les bits à 1

4. Lecture inverse. 0000 0101 vaut +5+5. Pour 1000 0101, la réponse dépend de la convention, et c'est le piège de l'exercice :

  • en binaire signé au sens du cours — un bit de signe suivi de la valeur absolue — on lit signe 1 et magnitude 000 0101 =5= 5, donc 5-5 ;
  • en complément à deux, le même mot vaut 128+4+1=123-128 + 4 + 1 = -123.

Le cours présente la première convention comme une idée simple mais insuffisante, et retient le complément à deux pour toute l'arithmétique, parce qu'il permet d'additionner signés et non signés avec le même circuit. Devant une copie ou un sujet, il faut donc toujours préciser la convention employée.

5. Conversions mixtes.

  • 1101110 en binaire naturel : 64+32+8+4+2=11064 + 32 + 8 + 4 + 2 = \mathbf{110}.
  • 1101110 en binaire signé sur 7 bits : le bit de gauche vaut 1, donc le nombre est négatif ; la magnitude 101110 vaut 32+8+4+2=4632 + 8 + 4 + 2 = 46, d'où 46\mathbf{-46}.
  • 01101110 en binaire signé sur 8 bits : signe 0, magnitude 1101110 =110= 110, d'où +110\mathbf{+110}.
  • 01101110 en DCBN : les deux quartets valent 0110 = 6 et 1110 = 14, qui n'est pas un chiffre décimal. Ce mot n'est donc pas un code DCBN valide — illustration utile qu'un mot de 8 bits quelconque n'est pas nécessairement un mot de code légal.
  • 01010011 en DCBN : 0101 = 5 et 0011 = 3, d'où 53\mathbf{53}.

#Exercice 2 — Étendue de l'échelle de numérotation et capacité d'une mémoire image

TD 1, exercices 5 et 6.

  1. Quelle est l'étendue de l'échelle de numérotation pour des codes binaires naturels, DCBN et binaires signés comportant un demi-octet, un octet, 2 octets, 4 octets ?
  2. Un écran dont la mémoire image a une capacité de 1 Mo peut être configuré en 640 par 480, 800 par 600 ou 1024 par 768. Quel est le nombre de couleurs disponible pour ces trois configurations ?
Correction détaillée

1. Étendue de l'échelle. Sur nn bits il existe 2n2^n combinaisons, donc 2n2^n valeurs distinctes. Le codage détermine comment elles se répartissent :

FormatBinaire naturelDCBNBinaire signé
demi-octet (4 bits)0 à 150 à 98-8 à +7+7
octet (8 bits)0 à 2550 à 99128-128 à +127+127
2 octets (16 bits)0 à 65 5350 à 9 99932768-32\,768 à +32767+32\,767
4 octets (32 bits)0 à 4 294 967 2950 à 99 999 9992147483648-2\,147\,483\,648 à +2147483647+2\,147\,483\,647

Trois raisonnements à savoir refaire :

  • binaire naturel : la combinaison « tout à zéro » occupe une place, d'où 2n12^n - 1 comme maximum ;
  • binaire signé : le bit de poids fort est pris par le signe, il reste n1n-1 bits pour la valeur, et le zéro consomme une des combinaisons positives — d'où l'intervalle [2n1,2n11][-2^{n-1}, 2^{n-1}-1], dissymétrique ;
  • DCBN : chaque groupe de 4 bits porte un chiffre décimal, donc n/4n/4 groupes portent 10n/410^{n/4} valeurs, de 0 à 10n/4110^{n/4}-1.

L'écart final est spectaculaire : sur 4 octets, le DCBN ne code que 10810^8 valeurs contre plus de 4 milliards en binaire naturel. C'est le prix de la lisibilité, et la raison pour laquelle le DCBN ne sert qu'aux interfaces.

2. Nombre de couleurs. Une mémoire image de 1 Mo contient 220=10485762^{20} = 1\,048\,576 octets. Le nombre de bits disponibles par pixel est le rapport entre la capacité et le nombre de pixels ; on en prend la partie entière, car un octet incomplet ne code pas de couleur supplémentaire.

RésolutionPixelsOctets par pixelBits par pixelCouleurs
640 × 480307 2003,41323=82^3 = 8
800 × 600480 0002,18222=42^2 = 4
1024 × 768786 4321,33121=22^1 = 2

Le résultat est identique si l'on prend 1 Mo = 10610^6 octets : les rapports restent dans les mêmes intervalles. Retenez la méthode — capacité divisée par nombre de pixels, puis arrondi à l'entier inférieur — plutôt que les trois nombres.

#Exercice 3 — Code auto-correcteur de Hamming

TD 2, exercice 2.

On souhaite transmettre des données codées sur 4 bits D3D2D1D0D_3D_2D_1D_0. Afin de s'affranchir des erreurs de transmission, on rallonge ce code de 3 bits P2P1P0P_2P_1P_0, calculés et émis dans l'ordre D3D2D1P2D0P1P0D_3D_2D_1P_2D_0P_1P_0, avec

P2=Fip(D1,D2,D3),P1=Fip(D0,D2,D3),P0=Fip(D0,D1,D3),P_2 = \text{Fip}(D_1, D_2, D_3), \qquad P_1 = \text{Fip}(D_0, D_2, D_3), \qquad P_0 = \text{Fip}(D_0, D_1, D_3),

où « Fip » est la fonction d'imparité : elle vaut 1 lorsque le nombre d'entrées égales à 1 est impair.

  1. Si les codes d'entrée sont 0000, 0011, 0101 et 1001, calculez les codes émis.
  2. Les codes reçus sont 0000010, 0011110, 1101101 et 1001000. En notant leurs bits D3D2D1P2D0P1P0D_3'D_2'D_1'P_2'D_0'P_1'P_0', on calcule R2=Fip(P2,D1,D2,D3)R_2 = \text{Fip}(P_2', D_1', D_2', D_3'), R1=Fip(P1,D0,D2,D3)R_1 = \text{Fip}(P_1', D_0', D_2', D_3') et R0=Fip(P0,D0,D1,D3)R_0 = \text{Fip}(P_0', D_0', D_1', D_3'). Déterminez ces fonctions. Que remarquez-vous ?
Correction détaillée

1. Codage. Pour chaque donnée, on évalue les trois fonctions d'imparité :

Donnée D3D2D1D0D_3D_2D_1D_0P2P_2P1P_1P0P_0Mot émis
00000000000000
00111100011110
01011010101101
10011001001100

Détail du calcul pour la donnée 0101, soit D3=0D_3 = 0, D2=1D_2 = 1, D1=0D_1 = 0, D0=1D_0 = 1 :

  • P2=Fip(D1,D2,D3)=Fip(0,1,0)P_2 = \text{Fip}(D_1, D_2, D_3) = \text{Fip}(0, 1, 0) : un seul 1, impair, donc P2=1P_2 = 1 ;
  • P1=Fip(D0,D2,D3)=Fip(1,1,0)P_1 = \text{Fip}(D_0, D_2, D_3) = \text{Fip}(1, 1, 0) : deux 1, pair, donc P1=0P_1 = 0 ;
  • P0=Fip(D0,D1,D3)=Fip(1,0,0)P_0 = \text{Fip}(D_0, D_1, D_3) = \text{Fip}(1, 0, 0) : un seul 1, donc P0=1P_0 = 1.

Le mot émis est donc 0 1 0 1 1 0 1, conformément à l'ordre D3D2D1P2D0P1P0D_3D_2D_1P_2D_0P_1P_0.

2. Décodage. On recalcule les trois fonctions en y incluant les bits de contrôle reçus :

Mot reçuR2R_2R1R_1R0R_0Syndrome (R2R1R0)(R_2R_1R_0)Bit erronéMot corrigéDonnée
000001001022ᵉ en partant de la droite (P1)00000000000
00111100000aucun00111100011
110110111177ᵉ en partant de la droite (D3)01011010101
100100001133ᵉ en partant de la droite (D0)10011001001

Détail du premier mot reçu, 0000010 : R2=Fip(P2,D1,D2,D3)=Fip(0,0,0,0)=0R_2 = \text{Fip}(P_2', D_1', D_2', D_3') = \text{Fip}(0,0,0,0) = 0 ; R1=Fip(P1,D0,D2,D3)=Fip(1,0,0,0)=1R_1 = \text{Fip}(P_1', D_0', D_2', D_3') = \text{Fip}(1,0,0,0) = 1 ; R0=Fip(P0,D0,D1,D3)=Fip(0,0,0,0)=0R_0 = \text{Fip}(P_0', D_0', D_1', D_3') = \text{Fip}(0,0,0,0) = 0.

Ce que l'on remarque — et c'est tout l'intérêt de l'exercice. Le syndrome n'est pas un simple indicateur « erreur / pas d'erreur » : c'est un numéro de position. Lu en binaire, (R2R1R0)(R_2R_1R_0) donne directement le rang du bit fautif compté depuis la droite, le bit le plus à droite (P0) portant le rang 1. Un syndrome nul signifie qu'aucune erreur n'a été détectée ; un syndrome non nul désigne le bit à inverser, sans ambiguïté et sans retransmission.

Pourquoi cela fonctionne. Regardons quels contrôles mettent en jeu chaque bit :

BitContrôles où il intervientColonne (R2R1R0)(R_2R_1R_0)
P0R0R_0001 = 1
P1R1R_1010 = 2
D0R1R_1, R0R_0011 = 3
P2R2R_2100 = 4
D1R2R_2, R0R_0101 = 5
D2R2R_2, R1R_1110 = 6
D3R2R_2, R1R_1, R0R_0111 = 7

Les sept colonnes sont distinctes et non nulles, et chacune vaut exactement le rang du bit correspondant : c'est précisément ce qui fait du syndrome une position. La distance de Hamming du code vaut 3 : il corrige une erreur simple et détecte (sans les corriger) deux erreurs simultanées. Le prix est la redondance — 4 bits utiles pour 7 transmis, soit 75 % de surcoût — largement accepté quand une retransmission coûte plus cher qu'un bit de contrôle.

#Exercice 4 — Vote automatique des quatre actionnaires

TD 4, exercice 1.

Une société a quatre actionnaires : A détient 60 actions, B en détient 100, C en détient 160 et D en détient 180. Chaque actionnaire appuie sur un bouton portant son nom ; si un actionnaire vote oui, sa variable vaut 1, sinon 0. Une résolution est votée (V=1V = 1) si la somme des actions correspondant aux votes oui représente au moins la moitié des actions plus une.

  1. Concevez ce système en simplifiant au mieux les équations par algèbre de Boole. Que remarquez-vous ?
  2. Reprenez cet exercice en simplifiant cette fois directement par table de Karnaugh.
Correction détaillée

Le seuil. Le total des actions vaut 60+100+160+180=50060 + 100 + 160 + 180 = 500 ; la majorité absolue est donc 251.

Table de vérité. On énumère les 16 combinaisons et on somme les actions correspondantes :

A (60)B (100)C (160)D (180)SommeV
000000
00011800
00101600
00113401
01001000
01012801
01102601
01114401
1000600
10012400
10102200
10114001
11001600
11013401
11103201
11115001

La fonction vaut 1 pour les mintermes 3, 5, 6, 7, 11, 13, 14 et 15.

Simplification algébrique. On développe la forme canonique en huit mintermes, puis on regroupe les termes qui ne diffèrent que par une variable :

V=(AˉBˉCD+AˉBCD+ABˉCD+ABCD)+(AˉBCDˉ+AˉBCD+ABCDˉ+ABCD)+(AˉBCˉD+AˉBCD+ABCˉD+ABCD)V = (\bar{A}\bar{B}CD + \bar{A}BCD + A\bar{B}CD + ABCD) + (\bar{A}BC\bar{D} + \bar{A}BCD + ABC\bar{D} + ABCD) + (\bar{A}B\bar{C}D + \bar{A}BCD + AB\bar{C}D + ABCD)

Chaque parenthèse se factorise alors en une somme complète, égale à 1 :

  • CD(AˉBˉ+AˉB+ABˉ+AB)=CD1=CDCD\,(\bar{A}\bar{B} + \bar{A}B + A\bar{B} + AB) = CD \cdot 1 = CD ;
  • BC(AˉDˉ+AˉD+ADˉ+AD)=BC1=BCBC\,(\bar{A}\bar{D} + \bar{A}D + A\bar{D} + AD) = BC \cdot 1 = BC ;
  • BD(AˉCˉ+AˉC+ACˉ+AC)=BD1=BDBD\,(\bar{A}\bar{C} + \bar{A}C + A\bar{C} + AC) = BD \cdot 1 = BD.

D'où

V=BC+BD+CD.V = BC + BD + CD .

Ce que l'on remarque. La variable AA n'apparaît pas dans le résultat : l'actionnaire qui détient 60 actions n'est jamais décisif. Vérifions-le par le raisonnement plutôt que par la table :

  • s'il manque plus d'une voix parmi B, C, D, la majorité n'est pas atteinte même avec A : AA seul avec B donne 160, avec C donne 220, avec D donne 240 — tous sous 251 ;
  • s'il y a déjà deux voix parmi B, C, D, la majorité est acquise sans A : BC=260BC = 260, BD=280BD = 280, CD=340CD = 340 — tous au-dessus de 251.

Le vote de A ne fait donc jamais basculer la décision : VV est la fonction majorité de B, C et D, soit BC+BD+CDBC + BD + CD. Le résultat est aussi celui que donne la simplification de la fonction majorité à trois variables vue en cours.

Simplification par Karnaugh. En portant les huit 1 sur une grille à quatre variables, on voit immédiatement trois rectangles de quatre cases :

  • CDCD : les quatre cases où C=1C = 1 et D=1D = 1, quelles que soient AA et BB ;
  • BCBC : les quatre cases où B=1B = 1 et C=1C = 1 ;
  • BDBD : les quatre cases où B=1B = 1 et D=1D = 1.

Chaque regroupement traverse toute la dimension AA : c'est la traduction graphique du fait que AA est une variable indifférente, et la confirmation visuelle du résultat algébrique. Trois termes de deux lettres au lieu de huit mintermes de quatre lettres — l'économie est considérable, en portes comme en chemin critique.

#Exercice 5 — Loi du Consensus

TD 4, exercice 2.

Démontrez la loi du Consensus, (a,b,c)\forall(a,b,c), ab+aˉc+bc=ab+aˉcab + \bar{a}c + bc = ab + \bar{a}c, par trois méthodes :

  1. application des règles algébriques de base ;
  2. théorème des couvertures ;
  3. table de Karnaugh.
Correction détaillée

1. Par l'algèbre de Boole. L'idée est de dédoubler le terme bcbc par idempotence, puis de le répartir sur les deux autres par distributivité :

bc=bc(a+aˉ)=abc+aˉbcbc = bc(a + \bar{a}) = abc + \bar{a}bc

d'où

ab+aˉc+bc=ab+aˉc+abc+aˉbc=ab(1+c)+aˉc(1+b)=ab1+aˉc1=ab+aˉc.ab + \bar{a}c + bc = ab + \bar{a}c + abc + \bar{a}bc = ab(1 + c) + \bar{a}c(1 + b) = ab \cdot 1 + \bar{a}c \cdot 1 = ab + \bar{a}c .

Le terme bcbc a bien disparu : c'est lui, le consensus de abab et aˉc\bar{a}c, c'est-à-dire le terme engendré par la variable qui change de signe entre les deux autres. Retenez la forme : dans ab+aˉc+bcab + \bar{a}c + bc, le terme consensus est toujours le produit des deux variables qui ne changent pas de signe (bb et cc).

2. Par les couvertures. On compare les ensembles de mintermes :

ab={abc,abcˉ},aˉc={aˉbc,aˉbˉc},bc={abc,aˉbc}.\complement_{ab} = \{abc, ab\bar{c}\}, \qquad \complement_{\bar{a}c} = \{\bar{a}bc, \bar{a}\bar{b}c\}, \qquad \complement_{bc} = \{abc, \bar{a}bc\}.

Chaque minterme de bcbc appartient déjà à l'un des deux autres : abcababc \in \complement_{ab} et aˉbcaˉc\bar{a}bc \in \complement_{\bar{a}c}. Autrement dit

bcabaˉc,\complement_{bc} \subset \complement_{ab} \cup \complement_{\bar{a}c},

ce qui est exactement la condition d'absorption généralisée, et donc bcbc peut être supprimé sans changer la fonction. C'est la formulation la plus élégante : le consensus est « à moitié absorbé » par chacun des deux autres termes.

3. Par Karnaugh. Sur une grille à trois variables (aa en lignes, bcbc en colonnes dans l'ordre de Gray 00, 01, 11, 10), la fonction ab+aˉcab + \bar{a}c occupe les cases abc=110abc = 110, 111111 (le groupe abab) et 001001, 011011 (le groupe aˉc\bar{a}c), soit les mintermes 1, 3, 6, 7. Le terme bcbc correspond aux cases 011 et 111 — c'est-à-dire aux mintermes 3 et 7, déjà couverts respectivement par aˉc\bar{a}c et par abab. Le regroupement supplémentaire bcbc n'apporte donc aucune case nouvelle : il est entièrement contenu dans l'union des deux autres, et on le raye. La table de Karnaugh donne ainsi une lecture graphique immédiate de la loi du Consensus : tout regroupement entièrement recouvert par d'autres regroupements est superflu.

#Exercice 6 — Impliquants essentiels et expressions minimales

TD 4, exercice 3.

Considérons la fonction f(a,b,c,d)f(a,b,c,d) définie par

f=aˉbˉcˉd+aˉbˉcdˉ+bcdˉ+abcd+bcˉd.f = \bar{a}\bar{b}\bar{c}d + \bar{a}\bar{b}c\bar{d} + bc\bar{d} + abcd + b\bar{c}d .

  1. À l'aide d'une table de Karnaugh, identifiez tous les impliquants essentiels de ff.
  2. À partir du résultat précédent, trouvez toutes les expressions équivalentes simplifiées de ff.
Correction détaillée

Mintermes. Chaque produit couvre une ou deux cases selon le nombre de variables libres :

ProduitMintermes couverts
aˉbˉcˉd\bar{a}\bar{b}\bar{c}dm1m_1 (0001)
aˉbˉcdˉ\bar{a}\bar{b}c\bar{d}m2m_2 (0010)
bcdˉbc\bar{d} (aa libre)m6m_6 (0110), m14m_{14} (1110)
abcdabcdm15m_{15} (1111)
bcˉdb\bar{c}d (aa libre)m5m_5 (0101), m13m_{13} (1101)

Donc f=m(1,2,5,6,13,14,15)f = \sum m(1, 2, 5, 6, 13, 14, 15).

Table de Karnaugh (lignes abab en Gray 00, 01, 11, 10 ; colonnes cdcd en Gray 00, 01, 11, 10) :

abab \ cdcd00011110
000101
010101
110111
100000

Aucun regroupement de quatre n'est possible. Les colonnes 01 et 10 ne sont pas adjacentes — l'ordre de Gray est 00, 01, 11, 10, et la colonne 10 n'est voisine que de 00 — et chaque ligne ou colonne candidate contient un 0. Tous les impliquants premiers sont donc des paires :

Impliquant premierCellulesMintermes couverts
aˉcˉd\bar{a}\bar{c}d(00, 01) et (01, 01)m1m_1, m5m_5
aˉcdˉ\bar{a}c\bar{d}(00, 10) et (01, 10)m2m_2, m6m_6
bcˉdb\bar{c}d(01, 01) et (11, 01)m5m_5, m13m_{13}
bcdˉbc\bar{d}(01, 10) et (11, 10)m6m_6, m14m_{14}
abcabc(11, 01) et (11, 11)m13m_{13}, m15m_{15}
abdabd(11, 11) et (11, 10)m14m_{14}, m15m_{15}

1. Impliquants essentiels. Un impliquant premier est essentiel s'il couvre au moins un minterme qu'aucun autre impliquant premier ne couvre. Ici :

  • m1m_1 n'est couvert que par aˉcˉd\bar{a}\bar{c}d ;
  • m2m_2 n'est couvert que par aˉcdˉ\bar{a}c\bar{d} ;

ces deux impliquants sont donc essentiels. Aucun autre ne l'est : m5m_5 est couvert par aˉcˉd\bar{a}\bar{c}d et par bcˉdb\bar{c}d, m6m_6 par aˉcdˉ\bar{a}c\bar{d} et par bcdˉbc\bar{d}, m13m_{13} par bcˉdb\bar{c}d et par abcabc, m14m_{14} par bcdˉbc\bar{d} et par abdabd, m15m_{15} par abcabc et par abdabd. Réponse : les impliquants essentiels sont aˉcˉd\bar{a}\bar{c}d et aˉcdˉ\bar{a}c\bar{d}, et eux seuls.

2. Toutes les expressions minimales. Les deux essentiels couvrent m1m_1, m5m_5, m2m_2, m6m_6. Restent m13m_{13}, m14m_{14}, m15m_{15}, à couvrir par les quatre impliquants premiers non essentiels bcˉdb\bar{c}d (m13m_{13}), bcdˉbc\bar{d} (m14m_{14}), abcabc (m13,m15m_{13}, m_{15}) et abdabd (m14,m15m_{14}, m_{15}). Deux termes supplémentaires suffisent, et il y a exactement trois façons de les choisir :

f=aˉcˉd+aˉcdˉ+abc+abdf = \bar{a}\bar{c}d + \bar{a}c\bar{d} + abc + abd

f=aˉcˉd+aˉcdˉ+bcdˉ+abcf = \bar{a}\bar{c}d + \bar{a}c\bar{d} + bc\bar{d} + abc

f=aˉcˉd+aˉcdˉ+bcˉd+abdf = \bar{a}\bar{c}d + \bar{a}c\bar{d} + b\bar{c}d + abd

Ces trois expressions sont équivalentes et de même coût : quatre produits de trois lettres chacune. Le choix entre elles se fait sur d'autres critères — portes disponibles dans le boîtier, chemin critique, fan-out — jamais sur la « beauté » de l'écriture.

Ce que l'exercice enseigne. Une fonction peut n'avoir que des impliquants premiers dont certains seulement sont essentiels, et la couverture des mintermes restants peut ne pas être unique. La méthode reste la même : couvrir d'abord tout ce qui est couvert par les essentiels, puis compléter, en acceptant que la solution minimale ne soit pas unique.

#Exercice 7 — Monte-charge : la notion d'indifférent

TD 5, exercice 1.

Un monte-charge doit permettre le levage de masses comprises entre 10 kg et 60 kg. Il comporte une plate-forme reposant sur des ressorts ; suivant l'importance de la charge, trois contacts réglables C1, C2, C3 sont mis en circuit :

  • à vide, aucun des trois contacts n'est actionné, et le monte-charge peut fonctionner ;
  • pour des charges comprises entre 5 et 10 kg, le contact C1 seul est actionné, et le monte-charge ne peut pas fonctionner ;
  • pour des charges comprises entre 10 et 60 kg, les contacts C1 et C2 sont actionnés, et le monte-charge doit fonctionner ;
  • pour des charges supérieures à 60 kg, les contacts C1, C2 et C3 sont actionnés, et le monte-charge ne peut pas fonctionner.

En représentant C1, C2 et C3 par des variables booléennes, établissez la table d'évolution du monte-charge, puis déduisez-en l'équation logique.

Correction détaillée

Table d'évolution. L'énoncé ne décrit que quatre situations ; toutes les autres combinaisons de contacts sont physiquement impossibles (C2 ne peut pas être actionné sans C1, C3 ne peut pas l'être sans C2, la plate-forme s'enfonce progressivement). Ce sont des indifférents, notés X :

C1C2C3SituationF
000à vide1
001impossibleX
010impossibleX
011impossibleX
1005 à 10 kg0
101impossibleX
11010 à 60 kg1
111plus de 60 kg0

Sans utiliser les indifférents, on ne peut couvrir que les deux 1 explicites :

F=C1ˉC2ˉC3ˉ+C1C2C3ˉ=C3ˉ(C1ˉC2ˉ+C1C2),F = \bar{C_1}\bar{C_2}\bar{C_3} + C_1C_2\bar{C_3} = \bar{C_3}\,(\bar{C_1}\bar{C_2} + C_1C_2),

expression qui exige un OU exclusif et deux termes de trois lettres.

Avec les indifférents, deux regroupements s'agrandissent :

  • l'indifférent 001 rejoint le 000 : C1=0C_1 = 0, C2=0C_2 = 0, C3C_3 libre, soit C1ˉC2ˉ\bar{C_1}\bar{C_2} ;
  • l'indifférent 010 rejoint le 110 : C2=1C_2 = 1, C3=0C_3 = 0, C1C_1 libre, soit C2C3ˉC_2\bar{C_3}.

D'où l'équation nettement plus simple :

F=C1ˉC2ˉ+C2C3ˉ.F = \bar{C_1}\bar{C_2} + C_2\bar{C_3} .

Vérification sur les seules lignes spécifiées : 000 1\rightarrow 1 ; 100 0\rightarrow 0 (les deux termes sont nuls) ; 110 C2C3ˉ=1\rightarrow C_2\bar{C_3} = 1 ; 111 0\rightarrow 0. Aucune ligne spécifiée n'est contredite.

La règle illustrée. Les indifférents 011 et 101 n'ont pas été utilisés : les intégrer demanderait de créer un regroupement nouveau, ce qui compliquerait l'expression au lieu de la simplifier. Un indifférent ne sert que s'il permet d'agrandir un regroupement déjà existant — c'est la règle stricte énoncée dans le cours, et l'erreur la plus fréquente en TD consiste à l'oublier.

#Exercice 8 — Générateur de mintermes : trois réalisations

TD 6, exercice 3.

Soit la table de vérité suivante :

E2 E1 E0S2S1
00010
00101
01001
01110
10001
10110
11000
11100

Proposez trois types de réalisation — (1) portes ET, OU, NON ; (2) deux multiplexeurs 8 vers 1 ; (3) un démultiplexeur 1 vers 8 et des portes OU — puis comparez le coût en nombre de circuits.

Correction détaillée

Équations. En relevant les lignes où chaque sortie vaut 1 :

S2=E2ˉE1ˉE0ˉ+E2ˉE1E0+E2E1ˉE0(m0,m3,m5)S_2 = \bar{E_2}\bar{E_1}\bar{E_0} + \bar{E_2}E_1E_0 + E_2\bar{E_1}E_0 \quad (m_0, m_3, m_5)

S1=E2ˉE1ˉE0+E2ˉE1E0ˉ+E2E1ˉE0ˉ(m1,m2,m4)S_1 = \bar{E_2}\bar{E_1}E_0 + \bar{E_2}E_1\bar{E_0} + E_2\bar{E_1}\bar{E_0} \quad (m_1, m_2, m_4)

Aucune simplification n'est possible. Sur la grille de Karnaugh à trois variables, aucun des mintermes de S2S_2 n'est adjacent à un autre minterme de S2S_2 : les trois cases sont isolées, entourées de 0. Il en va de même pour S1S_1. Ces deux fonctions sont donc des damiers partiels, et leur forme canonique est déjà minimale en nombre de littéraux. On peut seulement factoriser le OU exclusif, qui traduit le fait que E2E_2 et E1E_1 diffèrent :

S2=E0(E2E1)+E2ˉE1ˉE0ˉ,S1=E0ˉ(E2E1)+E2ˉE1ˉE0.S_2 = E_0\,(E_2 \oplus E_1) + \bar{E_2}\bar{E_1}\bar{E_0}, \qquad S_1 = \bar{E_0}\,(E_2 \oplus E_1) + \bar{E_2}\bar{E_1}E_0 .

Réalisation 1 — portes ET, OU, NON. C'est la transcription directe de la forme canonique : six produits de trois lettres, donc six portes ET à trois entrées (ou douze ET à deux entrées), deux portes OU à trois entrées, et les inverseurs nécessaires pour E2ˉ\bar{E_2}, E1ˉ\bar{E_1}, E0ˉ\bar{E_0}. C'est la solution la plus coûteuse en boîtiers.

Réalisation 2 — deux multiplexeurs 8 vers 1. Les entrées de sélection reçoivent E2 E1 E0, et les entrées de données recopient la colonne correspondante de la table de vérité :

  • pour S2S_2 : (E0,E1,,E7)=(1,0,0,1,0,1,0,0)(E_0, E_1, \ldots, E_7) = (1, 0, 0, 1, 0, 1, 0, 0) ;
  • pour S1S_1 : (E0,E1,,E7)=(0,1,1,0,1,0,0,0)(E_0, E_1, \ldots, E_7) = (0, 1, 1, 0, 1, 0, 0, 0).

Aucun calcul booléen, aucune porte : l'équation d'un multiplexeur, Y=EimiY = \sum E_i m_i, est la forme canonique disjonctive de la fonction. Deux boîtiers suffisent.

Réalisation 3 — un démultiplexeur 1 vers 8 et des portes OU. Alimenté par un 1 constant et commandé par E2 E1 E0, le démultiplexeur active une seule sortie à la fois : sa sortie ii vaut 1 exactement pour la combinaison ii. C'est un générateur de mintermes. Il reste à sommer les sorties voulues : un OU à trois entrées pour S2S_2 (sorties 0, 3 et 5) et un pour S1S_1 (sorties 1, 2 et 4). Un démultiplexeur plus deux OU.

Comparaison des coûts. La solution 1 paie six ET, deux OU et les inverseurs, répartis sur plusieurs boîtiers ; les solutions 2 et 3 tiennent en trois boîtiers, la solution 3 étant la plus économe en portes. C'est le compromis classique du TD 3 : le coût se compte en boîtiers, pas en portes — un boîtier de multiplexeur ou de démultiplexeur est souvent moins cher que six boîtiers de portes, même s'il « gaspille » la majeure partie de ses entrées.

#Exercice 9 — Additionneur complet et circuit 74LS83

TD 7, exercices 1 et 4.

  1. Définissez une cellule élémentaire d'additionneur 1 bit (additionneur complet) : expliquez le rôle de chacune des entrées AiA_i, BiB_i, Ri1R_{i-1} et des sorties SiS_i, RiR_i, puis déterminez les équations logiques de RiR_i et SiS_i.
  2. Rappelez la définition des indicateurs de validité et illustrez votre réponse par des exemples.
  3. À l'aide d'un additionneur 4 bits 74LS83 et de portes NON, réalisez un soustracteur quatre bits.
  4. À l'aide de ce même circuit et de portes OU et NON, réalisez un détecteur d'égalité.
Correction détaillée

1. Rôle des entrées et sorties. AiA_i et BiB_i sont les bits de même rang ii des deux opérandes ; Ri1R_{i-1} est la retenue entrante, produite par le rang i1i-1 ; SiS_i est le bit de somme du rang ii, résultat de l'addition modulo 2 des trois bits ; RiR_i est la retenue sortante, reportée au rang i+1i+1. La cellule doit être duplicable nn fois pour additionner deux mots de nn bits — c'est tout l'intérêt de l'approche : on conçoit un rang, on le recopie.

Table de vérité et équations.

AiA_iBiB_iRi1R_{i-1}Ai+Bi+Ri1A_i+B_i+R_{i-1}RiR_iSiS_i
000000
001101
010101
011210
100101
101210
110210
111311

SiS_i est un damier sur trois variables : il ne se simplifie pas en produits, seulement en OU exclusif,

Si=AiBiRi1,S_i = A_i \oplus B_i \oplus R_{i-1},

et la retenue s'écrit

Ri=AiBi+Ri1(AiBi)=AiBi+Ri1(Ai+Bi).R_i = A_iB_i + R_{i-1}(A_i \oplus B_i) = A_iB_i + R_{i-1}(A_i + B_i).

On nomme Gi=AiBiG_i = A_iB_i le terme de génération — sa valuation à 1 force la retenue — et Pi=Ai+BiP_i = A_i + B_i le terme de propagation — il propage ou non la retenue entrante. Cette écriture n'est pas cosmétique : c'est elle qui permet de dérouler la récursion et de construire un additionneur à retenues anticipées, dont le temps de calcul ne dépend plus du nombre de bits.

2. Indicateurs de validité.

  • CARRY (retenue) : la dernière retenue a été levée.
  • OVERFLOW (dépassement) : le résultat ne tient pas dans le format attribué.

Sur des nombres non signés de nn bits, carry et overflow désignent la même chose, car la retenue la plus à gauche sort du format : carry=overflow=Rn1\text{carry} = \text{overflow} = R_{n-1}. Sur des nombres signés, le carry reste Rn1R_{n-1}, mais l'overflow se produit quand la somme de deux positifs devient négative ou celle de deux négatifs devient positive :

overflow=Aˉn1Bˉn1Sn1+An1Bn1Sˉn1.\text{overflow} = \bar{A}_{n-1}\bar{B}_{n-1}S_{n-1} + A_{n-1}B_{n-1}\bar{S}_{n-1} .

Exemples sur 4 bits.

  • Non signés : 1111 (15) + 0001 (1) = 1 0000, donc S = 0000 et carry = 1 : le résultat 16 ne tient pas sur 4 bits.
  • Signés, débordement : 0111 (+7) + 0001 (+1) = 1000, donc carry = 0 mais overflow = 1 : deux positifs ont donné un négatif.
  • Signés, sans débordement : 0011 (+3) + 1110 (−2) = 0001 (+1) : ni carry ni overflow. Les signes des opérandes étaient opposés, aucun débordement n'est possible.

3. Soustracteur 4 bits. La soustraction ABA - B s'effectue comme A+(B)A + (-B), et le complément à deux de BB s'obtient en inversant BB puis en ajoutant 1. Le « plus 1 » ne coûte aucun circuit : il suffit de porter l'entrée de retenue C0C_0 du 74LS83 à 1 au lieu de 0. On place donc quatre inverseurs sur B1B_1 à B4B_4, on fixe C0=1C_0 = 1, et le même boîtier fait la soustraction. C'est exactement l'économie qui justifie le complément à deux dans les unités arithmétiques réelles.

4. Détecteur d'égalité. A=BA = B si et seulement si AB=0A - B = 0. On utilise le montage soustracteur (entrées BB inversées, C0=1C_0 = 1) et on teste si les quatre bits de somme sont tous nuls. Un OU des quatre bits vaut 0 dans ce cas et 1 sinon ; un inverseur en sortie fournit donc le signal d'égalité :

EˊGAL=S1+S2+S3+S4.\text{ÉGAL} = \overline{S_1 + S_2 + S_3 + S_4} .

Une variante utile : si l'on souhaite aussi savoir qui est le plus grand, le bit de retenue C4C_4 du soustracteur indique si ABA \geq B — c'est le principe de tous les comparateurs intégrés.

#Exercice 10 — Bascules : SR en NAND, JK en D, diviseur par deux

TD 8, exercices 1 à 3.

  1. Remplacez les portes NON-OU de la bascule SR par des portes NON-ET et réétudiez le système : nouvelle table de vérité, nouvel état interdit, équation caractéristique.
  2. Expliquez comment on peut modifier une bascule JK en bascule D.
  3. Réalisez un diviseur de fréquence par deux à l'aide d'une bascule JK, puis d'une bascule D sur front.
Correction détaillée

1. Bascule SR en NON-ET. En croisant deux portes NON-ET, on obtient une bascule dont les entrées sont actives au niveau bas :

Sˉ\bar{S}Rˉ\bar{R}Q+Q^+
00interdit : Q=Qˉ=1Q = \bar{Q} = 1
011 (mise à 1)
100 (mise à 0)
11QQ (mémoire)

L'état interdit devient Sˉ=Rˉ=0\bar{S} = \bar{R} = 0 : les deux sorties sont forcées à 1 et cessent d'être complémentaires ; quand les deux entrées reviennent à 1, l'état final dépend de l'ordre des retours, donc il est imprévisible. Avec SS et RR désignant les signaux actifs au niveau haut correspondants, l'équation caractéristique s'écrit

Q+=S+RˉQ=Rˉ(S+Q)sous la contrainte RS=0.Q^+ = S + \bar{R}Q = \bar{R}(S + Q) \quad \text{sous la contrainte } R \cdot S = 0 .

Lecture d'un chronogramme. La méthode est toujours la même et vaut pour toutes les bascules : (a) relever les instants où l'une des entrées prend sa valeur active ; (b) appliquer la table ligne par ligne ; (c) entre deux événements, recopier l'état précédent. En NON-ET, l'événement est un 0 bref sur Sˉ\bar{S} ou Rˉ\bar{R} — un front descendant, ce qui est souvent plus simple à câbler qu'un niveau haut stable. Si un chronogramme présente simultanément Sˉ=Rˉ=0\bar{S} = \bar{R} = 0, l'exercice est mal posé : la réponse n'est pas définie, et il faut le dire.

2. JK modifiée en D. Il suffit de relier JJ à l'entrée DD et KK à son complément : J=DJ = D, K=DˉK = \bar{D}. Alors

Q+=JQˉ+KˉQ=DQˉ+DQ=D.Q^+ = J\bar{Q} + \bar{K}Q = D\bar{Q} + DQ = D .

Vérification sur les deux cas : D=0D = 0 donne J=0J = 0 et K=1K = 1, soit une mise à 0 ; D=1D = 1 donne J=1J = 1 et K=0K = 0, soit une mise à 1. Un seul inverseur suffit, et la bascule n'a plus qu'une entrée de donnée — sans état interdit, contrairement à la bascule SR.

3. Diviseur de fréquence par deux.

  • Avec une bascule JK : on relie JJ et KK à 1. À chaque front d'horloge, la bascule se trouve dans le mode « basculement » et QQ change d'état. Il faut donc deux fronts — une période complète d'horloge — pour que QQ revienne à sa valeur initiale : la fréquence de sortie vaut f/2f/2.
  • Avec une bascule D sur front : on relie la sortie complémentée Qˉ\bar{Q} à l'entrée DD. À chaque front, QQ recopie Qˉ\bar{Q}, donc s'inverse. Même division par deux, avec aucun composant externe : c'est le montage le plus économique.

En cascadant kk bascules ainsi configurées, on divise par 2k2^k : cinq bascules divisent une horloge de 1 MHz par 32, soit 31,25 kHz en sortie. C'est le principe des compteurs-diviseurs et des prescalers de microcontrôleur.

#Exercice 11 — Temps de réaction d'un montage combinatoire

TD 3, exercice 3.

On note TfT_f, TgT_g, ThT_h les temps de réaction des fonctions ff, gg et hh, et TETT_{ET}, TOUT_{OU}, TNONT_{NON} les temps de réaction des portes ET à deux entrées, OU à deux entrées et NON. En supposant qu'aucune simplification n'est faite, quel est le temps de réaction de : 1) ff ; 2) f+gf + g ; 3) fhf \cdot h ; 4) fh+ghf \cdot h + g \cdot h ?

Correction détaillée
  1. ff seule : Tf\boxed{T_f}.
  2. f+gf + g : les deux termes sont calculés en parallèle ; le temps total est celui du plus lent, augmenté du OU de sortie : max(Tf,Tg)+TOU\boxed{\max(T_f, T_g) + T_{OU}}.
  3. fhf \cdot h : max(Tf,Th)+TET\boxed{\max(T_f, T_h) + T_{ET}}.
  4. fh+ghf \cdot h + g \cdot h : les deux produits se calculent en parallèle, puis on les somme. Le temps total est le chemin critique, c'est-à-dire le plus lent des deux produits, plus le OU final :

max(max(Tf,Th)+TET, max(Tg,Th)+TET)+TOU\boxed{\max\big(\max(T_f, T_h) + T_{ET},\ \max(T_g, T_h) + T_{ET}\big) + T_{OU}}

Ce qu'il faut retenir. Les branches parallèles sont évaluées simultanément : c'est la plus lente qui commande, jamais la somme. Additionner les temps de deux branches parallèles est l'erreur classique de cet exercice. Remarquez aussi que hh est utilisé deux fois : son temps n'est payé qu'une fois, à condition que sa sortie soit disponible pour les deux portes — ce qui est le cas dans un schéma combinatoire. Enfin, le temps de réaction ne dépend que du nombre de couches traversées, pas du nombre de portes : c'est le critère du TD 3, et la raison pour laquelle une réalisation plus économe en portes peut être plus lente.

#Exercice 12 — Chenillard : l'erreur de synthèse et les cycles parasites

TD 11, exercice 3.

Un chenillard sur 4 bits a le cycle suivant :

ÉtatSorties
01001
10101
21010
30100
  1. Établissez et simplifiez les équations du compteur par synthèse directe (bascules D).
  2. Dessinez l'automate de Moore associé. Qu'en déduisez-vous ? Proposez et synthétisez une solution beaucoup moins coûteuse en nombre de bascules, et établissez les équations des sorties.
  3. Modifiez votre solution pour intégrer un démultiplexeur 1 vers 4 de gestion des sorties.
Correction détaillée

1. La mauvaise façon d'aborder le problème. On prend les quatre sorties S3S2S1S0S_3S_2S_1S_0 comme variables d'état — donc quatre bascules D — et on remplit une table d'évolutions sur 16 lignes, dont 12 correspondent à des états inutilisés traités comme indifférents. Après simplification par les indifférents, on obtient par exemple

Q3+=Q2,Q2+=Q3,Q1+=Q2Q0,Q0+=Q0ˉQ1+Q3Q1,Q_3^+ = Q_2, \qquad Q_2^+ = Q_3, \qquad Q_1^+ = Q_2Q_0, \qquad Q_0^+ = \bar{Q_0}Q_1 + Q_3Q_1,

soit quatre bascules D, trois portes ET et un OU. Il reste à vérifier l'absence de cycles parasites — et c'est là que l'affaire se gâte : en déroulant la table d'évolution complète sur les 16 états, on découvre deux cycles parasites qui n'appartiennent pas au cahier des charges, dont un qui passe par l'état 0000. Une machine qui démarre dans un état non prévu — après une mise sous tension, un aléa ou une impulsion parasite — peut donc s'y enfermer définitivement et ne jamais rejoindre le cycle utile. Il suffit parfois de choisir l'autre équation possible d'une variable pour que tous les états convergent vers le cycle utile, mais c'est une « rustine » posée sur un choix de conception déjà mauvais.

2. La bonne méthode : quatre états, donc deux bascules. La solution précédente est naïve parce que le système ne comporte en réalité que quatre états. L'état d'un système est indépendant de la vision qu'en a l'extérieur : entre état interne et sortie il y a une relation de cause à effet, rarement une bijection. Il faut donc synthétiser d'abord la machine séquentielle interne — ici un simple compteur de 0 à 3 — puis associer les sorties aux états.

L'automate de Moore associé comporte quatre états A, B, C, D formant un cycle A → B → C → D → A, chaque état portant le motif de LED 1001, 0101, 1010, 0100. La méthode générale de synthèse s'applique alors dans l'ordre : modélisation par l'automate, table d'évolutions, codage des états (ici quatre états, donc deux variables d'état), table de vérité des variables d'état, simplification par Karnaugh, recherche de cycles parasites, schéma final.

Codage : A = 00, B = 01, C = 10, D = 11.

Q1Q_1Q0Q_0TransitionQ1+Q_1^+Q0+Q_0^+
00A → B01
01B → C10
10C → D11
11D → A00

Après simplification :

Q0+=Q0ˉ,Q1+=Q0Q1.Q_0^+ = \bar{Q_0}, \qquad Q_1^+ = Q_0 \oplus Q_1 .

Table des sorties (les sorties dépendent de l'état, donc des deux variables d'état) :

Q1Q_1Q0Q_0ÉtatS3S_3S2S_2S1S_1S0S_0
00A1001
01B0101
10C1010
11D0100

d'où

S3=Q0ˉ,S2=Q0,S1=Q1Q0ˉ,S0=Q1ˉ.S_3 = \bar{Q_0}, \qquad S_2 = Q_0, \qquad S_1 = Q_1\bar{Q_0}, \qquad S_0 = \bar{Q_1} .

Bilan. Deux bascules D, un OU exclusif et un ET — contre quatre bascules, trois ET et un OU dans la version naïve. Et surtout : plus aucun état inutilisé, donc plus aucun risque de cycle parasite. Les quatre états codés sont exactement les quatre états du cycle, la démonstration est immédiate, et le circuit est plus petit et plus sûr. C'est le genre de leçon qui vaut tous les calculs.

3. Ajout d'un démultiplexeur 1 vers 4. Les sorties ne dépendent que des deux bits d'état. On peut donc remplacer la logique de sortie par un démultiplexeur 1 vers 4, alimenté par un 1 constant et commandé par Q1Q0Q_1Q_0 : chaque sortie du démultiplexeur est active pour un état et un seul. Il suffit alors de câbler le motif de LED correspondant — 1001 pour A, 0101 pour B, 1010 pour C, 0100 pour D. La logique de sortie se réduit à du câblage, et le schéma devient trivialement vérifiable.

#Exercice 13 — Moore contre Mealy : pourquoi deux automates équivalents ne se comportent pas pareil

TD 11, exercice 7.

Deux automates décrivent le même système, l'un de Moore, l'autre de Mealy. La partie séquentielle est identique : les états 1, 2, 3, 4 se codent 00, 01, 10, 11 et la table d'évolutions est

Étata=0a = 0a=1a = 1
132
244
332
431
  1. Établissez et simplifiez les équations des variables d'état (bascules D, synthèse directe).
  2. Établissez et simplifiez les équations des sorties pour les deux automates.
  3. Pourquoi les automates associés n'ont-ils pas le même comportement ?
Correction détaillée

1. Variables d'état. Avec le codage 1 = 00, 2 = 01, 3 = 10, 4 = 11, la table de vérité des variables d'état est :

Q1Q_1Q0Q_0aaQ1+Q_1^+Q0+Q_0^+
00010
00101
01011
01111
10010
10101
11010
11100

Après simplification par Karnaugh :

Q1+=aˉ+Q1ˉQ0,Q0+=aQ0ˉ+Q1ˉQ0.Q_1^+ = \bar{a} + \bar{Q_1}Q_0, \qquad Q_0^+ = a\bar{Q_0} + \bar{Q_1}Q_0 .

Le terme aˉ\bar{a} dans Q1+Q_1^+ se lit directement sur la table : toutes les lignes où a=0a = 0 donnent Q1+=1Q_1^+ = 1, quelle que soit la valeur de l'état.

2. Sorties. Pour l'automate de Moore, les sorties ne dépendent que de l'état. Avec les motifs 1 → AB=00AB = 00, 2 → 0101, 3 → 1010, 4 → 1111, on lit directement A=Q1A = Q_1 et B=Q0B = Q_0. C'est un pur hasard dû au choix du codage : un autre codage des états aurait donné des équations plus complexes, sans que le comportement change.

Pour l'automate de Mealy, les sorties dépendent aussi de l'entrée aa :

Q1Q_1Q0Q_0aaAABB
00010
00101
01011
01111
10010
10101
11010
11100

d'où, après simplification,

A=aˉ+Q1ˉQ0=Q1+,B=aQ0ˉ+Q1ˉQ0=Q0+.A = \bar{a} + \bar{Q_1}Q_0 = Q_1^+, \qquad B = a\bar{Q_0} + \bar{Q_1}Q_0 = Q_0^+ .

Autrement dit, les sorties de l'automate de Mealy sont exactement les variables d'état suivantes de l'automate de Moore. Les deux systèmes calculent donc la même chose, avec un décalage d'un coup d'horloge.

3. Pourquoi les comportements diffèrent. Les équations d'état sont les mêmes et les sorties de Mealy correspondent aux Q+Q^+ de Moore : a priori les deux automates ont le même comportement. La différence est temporelle, pas fonctionnelle.

Les sorties de Mealy font intervenir l'entrée aa directement : elles peuvent donc changer avant le front d'horloge, dès que aa change — c'est un comportement asynchrone. L'automate de Moore, lui, ne prend en compte aa qu'au front suivant, pour mettre à jour son état puis ses sorties. Mealy est donc chronologiquement en avance sur Moore, mais sensible à l'instabilité des entrées : une impulsion parasite sur aa se retrouve immédiatement en sortie, alors que Moore la filtre jusqu'au prochain front. Le choix entre les deux structures est donc un compromis entre latence (Mealy plus rapide) et immunité au bruit (Moore plus robuste). C'est un critère de conception à part entière, pas une question de goût.

#Exercice 14 — Le code de Gray

Sujet d'examen 2024-2025, session 1, exercice 1.

Parmi cinq tables de 16 lignes de 4 bits, laquelle représente un code de Gray (code réfléchi) sur 4 bits ? Sur la bonne réponse, si la première ligne est déplacée en dernière ligne, la nouvelle table obtenue représente-t-elle toujours un code de Gray (OUI, NON, ou ON NE PEUT PAS SAVOIR) ?

Correction détaillée

Reconnaître un code de Gray : trois conditions. Les deux premières sont bien connues, la troisième s'oublie souvent.

  1. chaque ligne ne diffère de la suivante que d'un seul bit ;
  2. le code est cyclique : la dernière ligne ne diffère de la première que d'un seul bit également ;
  3. les 16 lignes sont distinctes — une table contenant un doublon n'est pas un code, même si toutes ses transitions sont propres.

La table correcte est le code binaire réfléchi standard :

LigneCode
10000
20001
30011
40010
50110
60111
70101
80100
91100
101101
111111
121110
131010
141011
151001
161000

Vérification. Chaque transition ne change qu'un seul bit — y compris 0100 → 1100 au passage du huitième au neuvième rang, et 1000 → 0000 pour le retour cyclique. Sont éliminées : les tables qui reproduisent le binaire naturel (0000, 0001, 0010, 0011…), qui sautent de 0001 à 0010 ou de 0011 à 0100 — deux bits changent alors simultanément — et celles qui contiennent un doublon, ce qui exclut d'office une table de 16 lignes prétendant coder 16 valeurs.

La rotation : OUI. Déplacer la première ligne en dernière position revient à faire tourner la séquence, qui devient 0001, 0011, 0010, …, 1000, 0000. Toutes les transitions internes sont inchangées, et la seule transition nouvelle est 1000 → 0000, qui était déjà la transition cyclique de la table d'origine. Or une rotation d'un cycle reste un cycle : la propriété est conservée. C'est précisément la cyclicité du code réfléchi qui rend la réponse positive — sur une table qui serait un code de Gray non cyclique, la réponse aurait été NON.

Pourquoi le code de Gray compte. Sa propriété — un seul bit change à la fois — le destine aux capteurs de position : si deux pistes changeaient simultanément, une lecture pendant la transition pourrait donner une valeur arbitraire ; avec le code de Gray, la lecture transitoire est au pire l'une des deux valeurs voisines, jamais une valeur aberrante. On le retrouve aussi dans les tables de Karnaugh, où l'ordre de Gray des lignes et des colonnes est ce qui rend adjacentes les cases qui se simplifient ensemble.

#Exercice 15 — Écho numérique : une ligne à retard rebouclée

Sujet d'examen 2024-2025, session 1, exercice 3.

Deux signaux sonores X et Y sont codés chacun sur 8 bits non signés. Y est obtenu par un montage composé d'additionneurs et de bascules D sur front, toutes synchronisées sur la même horloge H. Pour chaque bit, l'additionneur reçoit d'un côté le bit XiX_i du signal d'entrée et de l'autre la sortie du même rang après passage dans une chaîne de cinq bascules D ; la sortie de l'additionneur alimente la chaîne, et le signal YiY_i est pris en bout de chaîne.

  1. Que fait ce montage sur le signal X ? Justifiez votre réponse.
  2. Si la fréquence de l'horloge est de 22 kHz et qu'il n'y a plus 5 colonnes de bascules D mais 22 000 colonnes, à quelle période se produit le phénomène ?
Correction détaillée

1. Un écho. Chaque rang ii effectue

Yi=Xi+Yiretardeˊ de 5 coups,Y_i = X_i + Y_i^{\text{retardé de } 5 \text{ coups}} ,

c'est-à-dire que la sortie est la somme du signal d'entrée et de sa propre copie retardée de cinq périodes d'horloge. Une chaîne de bascules D cadencées par la même horloge est une ligne à retard : elle reproduit en sortie ce qui entre, décalé d'un coup par étage. En rebouclant cette sortie sur l'additionneur, on ajoute au signal sa copie décalée — exactement ce que fait un écho : on entend le son, puis on le réentend un peu plus tard, un peu plus faible (l'atténuation venant du débordement des additions sur 8 bits, qui perd les retenues). Le montage réalise donc une réverbération numérique, chaque tour de boucle réinjectant une répétition supplémentaire.

C'est l'application « ligne à retard » du registre à décalage, listée dans le cours avec la conversion série-parallèle, la multiplication et la division par une puissance de 2, et la génération de séquences.

2. La période du phénomène. Le retard vaut le nombre d'étages multiplié par la période d'horloge :

tretard=N×1fH=22000×122000 Hz=1 s.t_{\text{retard}} = N \times \frac{1}{f_H} = 22\,000 \times \frac{1}{22\,000\ \text{Hz}} = \mathbf{1\ \text{s}} .

Le phénomène — la répétition du signal — se produit donc toutes les secondes. La relation générale t=N/fHt = N / f_H vaut la peine d'être retenue : c'est elle qui dimensionne une ligne à retard, et elle explique aussi la fréquence de répétition fH/Nf_H / N, ici 1 Hz — bien en dessous de la bande audible, ce qui donne un écho plutôt qu'une coloration timbrale. Avec 5 étages seulement, la même horloge aurait produit une répétition à 4,4 kHz, c'est-à-dire un effet de filtre en peigne dans le spectre audible.

Un code de Gray de 16 lignes est utilisé par un capteur de position. Pourquoi cette propriété est-elle utile ?
Un code de Gray de 16 lignes est utilisé par un capteur de position. Pourquoi cette propriété est-elle utile ?
Dans le code auto-correcteur du TD 2, le mot reçu 1101101 donne le syndrome (R2R1R0) = 111. Que faut-il en conclure ?
Dans le code auto-correcteur du TD 2, le mot reçu 1101101 donne le syndrome (R2R1R0) = 111. Que faut-il en conclure ?
Dans l'exercice du vote automatique (60, 100, 160 et 180 actions, seuil 251), pourquoi la variable A disparaît-elle du résultat ?
Dans l'exercice du vote automatique (60, 100, 160 et 180 actions, seuil 251), pourquoi la variable A disparaît-elle du résultat ?