Logique (sciences de l'ingénieur)/Exercices/TD6
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.
Exercice 1
[modifier | modifier le wikicode]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.
Exercice 2
[modifier | modifier le wikicode]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]Code de Gray
[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;
Exercice 3
[modifier | modifier le wikicode]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é.
Exercice 4
[modifier | modifier le wikicode]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.
Exercice 5
[modifier | modifier le wikicode]Trouver la table de vérité d’un transcodeur BCD vers code GRAY (c'est-à-dire un code GRAY cyclique sur 10 valeurs).