Aller au contenu

Logique (sciences de l'ingénieur)/Exercices/TD6

Leçons de niveau 11
Une page de Wikiversité, la communauté pédagogique libre.
Travaux dirigés n°6
Image logo représentative de la faculté
Exercices no6
Leçon : Logique (sciences de l'ingénieur)

Exercices de niveau 11.

Exo préc. :Travaux dirigés n°5
Exo suiv. :Travaux dirigés n°7
En raison de limitations techniques, la typographie souhaitable du titre, « Exercice : Travaux dirigés n°6
Logique (sciences de l'ingénieur)/Exercices/TD6
 », n'a pu être restituée correctement ci-dessus.




Les simplifications dans le cas des sorties multiples sont encore plus complexes. Nous n'allons pas aborder ce problème de front mais plutôt des problèmes périphériques.

Du demi-additionneur à l'additionneur 1 bit

[modifier | modifier le wikicode]

Ce problème est abordé en détail ici : additionneur.

Remarquons comme indiqué par la figure suivante que le schéma de l'additionneur est obtenu en n'utilisant pas les regroupements optimaux dans le tableau de Karnaugh. C’est une propriété des circuits à sorties multiples : la simplification ne consiste pas à simplifier chacune des sorties séparément. Mais nous ne traiterons pas ce problème dans le cas général ici.

Implanter l'additionneur avec des OU exclusifs et des ET-NON seulement. Écrire la table de vérité d’un soustracteur (3 entrées : A, B et Ci et deux sorties D et Co). Le soustracteur sort sur 2 bits en complément à deux (Co, D) = A - B - Ci. Implanter ce soustracteur avec des OU exclusifs et des ET-NON seulement. Implanter un circuit qui fait soit une addition soit une soustraction avec une entrée de sélection.

De l'addition à 1 bit à l'addition à n bits

[modifier | modifier le wikicode]

Ce problème est abordé en détail dans l’article déjà cité : Additionneur.

Quel est le temps de propagation de l'additionneur 3 bits si un additionneur a lui-même un temps de propagation tp=10 ns

Arithmétique et VHDL

[modifier | modifier le wikicode]

L'additionneur ci-dessus peut être facilement décrit en VHDL :

-- additionneur {{Unité|3|bits}} VHDL
ENTITY add3 IS
PORT (a,b :IN INTEGER RANGE 0 TO 7;
      s :OUT INTEGER RANGE 0 TO 15);
END add3;
ARCHITECTURE add OF add3 IS
BEGIN
  s<=a+b;
END add;

En écrivant cela, on n'a aucune indication sur la façon dont il sera implanté : cela dépendra du compilateur VHDL.

Codes et transcodage

[modifier | modifier le wikicode]

Le code Gray est une code ayant une propriété particulière intéressante : il n'y a qu'une variable qui change lorsque l’on passe d’une valeur à une valeur contiguë.

Remarque : Les entités en VHDL pour entrées et sorties multiples sont plutôt déclarées sous la forme :

-- Entrees et sorties multiples
ENTITY binGray IS
PORT (b :IN BIT_VECTOR(3 DOWNTO 0);
      g :OUT BIT_VECTOR(3 DOWNTO 0));
END binGray;

On a besoin d’un circuit combinatoire pour transcoder le code binaire en code Gray. Trouver les formes disjonctives simplifiées de G3, G2, G1, G0. Implanter avec des OU exclusifs. Écrire la partie architecture du programme VHDL correspondant.

Codes décimaux

[modifier | modifier le wikicode]

Un code décimal permet de représenter les dix valeurs 0 --> 9. On trouve le code DCB (Decimal Codé Binaire) ou BCD en anglais. Le code Exess 3 est aussi présenté ici même s'il est peu utilisé.

Un décodeur Excess 3 est un circuit qui entre le code 4 bits E3 E2 E1 E0 et valide une sortie parmi les 9. On évitera de confondre ce circuit avec un transcodeur BCD Excess 3. Étudier un tel circuit, l'implanter. Écrire le programme VHDL correspondant.

Trouver la table de vérité d’un transcodeur BCD vers code GRAY (c'est-à-dire un code GRAY cyclique sur 10 valeurs).