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
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
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
Ce problème est abordé en détail dans l’article déjà cité : Additionneur.
Exercice 2 modifier
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
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
Code de Gray modifier
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
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
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
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
Trouver la table de vérité d’un transcodeur BCD vers code GRAY (c'est-à-dire un code GRAY cyclique sur 10 valeurs).