Électronique numérique : logique/Sorties multiples, addition, codes
Un livre de Wikibooks.
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.
Sections |
[modifier] Introduction
Il est bon pour comprendre ce chapitre de lire :
- Le système binaire
- Le code BCD
- Nombre négatif
- Complément à 1
- Complément à 2
- Code de Gray
- Code Excess 3
- L'afficheur sept segments
Pour votre culture lisez aussi :
[modifier] Du demi-additionneur à l'additionneur 1 bit
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.
[modifier] Exercice 1
Implanter l'additionneur avec des OU exclisifs et des ET-NON seulement. Ecrire 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 exclisifs et des ET-NON seulement. Implanter un circuit qui fait soit une addition soit une soustraction avec une entrée de sélection.
[modifier] De l'addition à 1 bit à l'addition à n bits
Ce problème est abordé en détail dans l'article déjà cité : Additionneur
[modifier] Exercice 2
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.
[modifier] Arithmétique et VHDL
L'additionneur ci-dessus peut être facilement décrit en VHDL :
-- additionneur 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.
[modifier] Codes et transcodage
[modifier] Code de Gray
Code de 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ées 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;
[modifier] Exercice 3
On a besoin d'un circuit combinatoire pour transcoder le code binaire en Code de 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.
[modifier] Codes décimaux
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 Excess 3 est aussi présenté ici même s'il est peu utilisé.
[modifier] Exercice 4
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.
[modifier] Exercice 5
Trouver la table de vérité d'un transcodeur BCD vers Code de Gray (c'est à dire un code GRAY cyclique sur 10 valeurs).
[modifier] Les nombres à virgule
La norme IEEE 754 correspondant aux nombres à virgule flottante est décrite ici.


